8000 Address unintended reorering by np.unique · scikit-image/scikit-image@76d8c11 · GitHub
[go: up one dir, main page]

Ski 8000 p to content

Commit 76d8c11

8000 Browse files
committed
Address unintended reorering by np.unique
1 parent c22d7c8 commit 76d8c11

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

skimage/morphology/_util.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,18 @@ def _offsets_to_raveled_neighbors(image_shape, selem, center, order='C'):
101101
raveled_offsets = (offsets * ravel_factors).sum(axis=1)
102102

103103
# Sort by distance
104-
squared_distances = np.abs(offsets).sum(axis=1)
105-
raveled_offsets = raveled_offsets[np.argsort(squared_distances)]
106-
107-
# Remove zeros (e.g. center) and duplicates which may occur if a dimension
108-
# in `image_shape` is smaller than in `selem`
109-
raveled_offsets = raveled_offsets[raveled_offsets.astype(bool)]
110-
raveled_offsets = np.unique(raveled_offsets)
104+
distances = np.abs(offsets).sum(axis=1)
105+
raveled_offsets = raveled_offsets[np.argsort(distances)]
106+
107+
# In case any dimension in image_shape is smaller than selem.shape
108+
# duplicates might occur, remove them
109+
if any(x < y for x, y in zip(image_shape, selem.shape)):
110+
# np.unique reorders, which we don't want
111+
_, indices = np.unique(raveled_offsets, return_index=True)
112+
raveled_offsets = raveled_offsets[np.sort(indices)]
113+
114+
# Remove "offset to center"
115+
raveled_offsets = raveled_offsets[1:]
111116

112117
return raveled_offsets
113118

0 commit comments

Comments
 (0)
0