@@ -413,15 +413,21 @@ def get_components(table: pd.DataFrame,
413413 List of component labels.
414414 """
415415 unique_labels = list (np .unique (labeled ))
416+
417+ # sort non-background labels according to size, descending
418+ unique_labels = [i for i in unique_labels if i != 0 ]
419+ sizes = [(labeled == i ).sum () for i in unique_labels ]
420+ sizes , unique_labels = zip (* sorted (zip (sizes , unique_labels ), reverse = True ))
421+
416422 component_labels = [0 for _ in range (len (table ))]
417423 for label_index , l in enumerate (unique_labels ):
418- if l != 0 :
419- label_arr = ( labeled == l ). astype ( np . uint8 )
420- centroids_binary = coordinates_in_downscaled_blocks ( table , label_arr ,
421- scale_factor , distance_component = distance_component )
422- for num , c in enumerate ( centroids_binary ) :
423- if c != 0 :
424- component_labels [ num ] = label_index
424+ label_arr = ( labeled == l ). astype ( np . uint8 )
425+ centroids_binary = coordinates_in_downscaled_blocks ( table , label_arr ,
426+ scale_factor , distance_component = distance_component )
427+ for num , c in enumerate ( centroids_binary ):
428+ if c != 0 :
429+ component_labels [ num ] = label_index + 1
430+
425431 return component_labels
426432
427433
0 commit comments