Skip to content

Commit ebcd861

Browse files
converting np.bincount to fastremap.unique
1 parent 5a89b44 commit ebcd861

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

cellpose/utils.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -642,20 +642,24 @@ def fill_holes_and_remove_small_masks(masks, min_size=15):
642642
masks.ndim)
643643

644644
# Filter small masks
645+
counts = fastremap.unique(masks, return_counts=True)[1][1:]
645646
if min_size > 0:
646-
counts = np.bincount(masks.ravel())
647-
filter = np.isin(masks, np.where(counts < min_size)[0])
648-
masks[filter] = 0
649-
647+
masks = fastremap.mask(masks, np.nonzero(counts < min_size)[0] + 1)
648+
fastremap.renumber(masks, in_place=True)
649+
650650
slices = find_objects(masks)
651651
j = 0
652-
for i, slc in enumerate(slices):
652+
for i in np.arange(0, len(slices)):
653+
slc = slices[i]
653654
if slc is not None:
654655
msk = masks[slc] == (i + 1)
655-
if msk.ndim == 3:
656-
msk = np.array([fill_voids.fill(msk[k]) for k in range(msk.shape[0])])
657-
else:
658-
msk = fill_voids.fill(msk)
656+
msk = fill_voids.fill(msk)
659657
masks[slc][msk] = (j + 1)
660658
j += 1
659+
660+
if min_size > 0:
661+
counts = fastremap.unique(masks, return_counts=True)[1][1:]
662+
masks = fastremap.mask(masks, np.nonzero(counts < min_size)[0] + 1)
663+
fastremap.renumber(masks, in_place=True)
664+
661665
return masks

0 commit comments

Comments
 (0)