Skip to content

Commit 4136634

Browse files
Make overlap checks in commit more efficient
1 parent 809c1fd commit 4136634

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

micro_sam/sam_annotator/_widgets.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -528,13 +528,14 @@ def _commit_impl(viewer, layer, preserve_mode, preservation_threshold):
528528
if preserve_mode != "none":
529529
prev_seg = viewer.layers["committed_objects"].data[bb]
530530
# The mode 'pixels' corresponds to a naive implementation where only committed pixels are preserved.
531-
if preserve_mode == "pixels":
532-
preserve_mask = prev_seg != 0
533-
# In the other mode 'objects' we preserve committed objects instead, by comparing the overlaps
534-
# of already committed and newly committed objects.
535-
else:
536-
preserve_mask = _mask_matched_objects(seg, prev_seg, preservation_threshold)
537-
mask[preserve_mask] = 0
531+
preserve_mask = prev_seg != 0
532+
# If the preserve mask is empty we don't need to do anything else here, because we don't have prev objects.
533+
if preserve_mask.sum() != 0:
534+
# In the mode 'objects' we preserve committed objects instead, by comparing the overlaps
535+
# of already committed and newly committed objects.
536+
if preserve_mode == "objects":
537+
preserve_mask = _mask_matched_objects(seg, prev_seg, preservation_threshold)
538+
mask[preserve_mask] = 0
538539

539540
# Write the current object to committed objects.
540541
seg[mask] += id_offset

0 commit comments

Comments
 (0)