Skip to content

Commit 2fa29b1

Browse files
committed
Sort components according to their size
1 parent 1ceafb8 commit 2fa29b1

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

flamingo_tools/segmentation/postprocessing.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)