Morphological opening with asymetrical structuring element isn't idempotent

Hello,
I noticed that the opening operator isn’t idempotent with asymmetrical structuring elements.
For example, try the following code :slight_smile:

import skimage
from skimage.data import camera
from skimage.morphology import opening, disk
import numpy as np
from matplotlib import pyplot as plt

print('Skimage version:', skimage.__version__)

im = camera()

# symmetric SE
se = disk(1) # 4-connexity cross

imOp = opening(im,se)
imOp2 = opening(imOp,se)

print('Difference after opening twice (sym. SE):', np.abs(imOp-imOp2).max())

# non-symmetric SE
se = np.zeros((3,3))
se[0, 2] = 1
se[1, 1] = 1
se[2, 2] = 1

imOp = opening(im,se)
imOp2 = opening(imOp,se)

print('Difference after opening twice (non-sym. SE):', np.abs(imOp-imOp2).max())

plt.figure()
plt.imshow(im, cmap = 'gray')
plt.figure()
plt.imshow(np.abs(imOp2-imOp), cmap = 'gray')

plt.show()

Best regards,
José-Marcio

1 Like

Sorry,
A colleague of mine already posted this problem at github scikit-image forum, with more informative information.

Please feel free to close one of this messages.

Thanks, we can handle this on the GitHub issue. It seems to be related to Fix bugs and clean up grayscale morphology operators by crisluengo · Pull Request #6695 · scikit-image/scikit-image · GitHub.