图像重建(腐蚀和膨胀)都将黑色图像作为输出

2024-06-24 13:32:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用腐蚀法去除this image表面的黑点

我已实施:

img = skimage.io.imread('blemish.jpeg')
img = skimage.color.rgb2gray(img)
img_inten = skimage.exposure.rescale_intensity(img,in_range=(50,100))

diliation_seed = img_inten.copy()
diliation_seed[1:-1,1:-1] = img_inten.min()
mask = img_inten

eroded_img = skimage.morphology.reconstruction(diliation_seed,mask,method='dilation')
matplotlib.pyplot.imshow(eroded_img,cmap='gray')

在这两种情况下,我的输出始终是黑色图像。这里出了什么问题


Tags: ioimageimgmaskthis表面seedimread
1条回答
网友
1楼 · 发布于 2024-06-24 13:32:08

rgb2gray以浮点矩阵的形式输出图像,值在[0;1]中

因此,重缩放强度只是输出一个0的矩阵,因为您要求的值介于50和100之间,而灰色img中没有值

您可以这样修复它:

import skimage
from skimage import data, exposure, img_as_float
from skimage.morphology import reconstruction
import matplotlib.pyplot as plt

img = skimage.io.imread('blemish.jpeg')
gray_img = 255*skimage.color.rgb2gray(img) # multiply by 255 to get back in the [0;255] range
img_inten = exposure.rescale_intensity(gray_img,in_range=(50,100))

diliation_seed = img_inten.copy()
diliation_seed[1:-1,1:-1] = img_inten.min()
mask = img_inten

eroded_img = reconstruction(diliation_seed,mask,method='dilation')
plt.imshow(eroded_img,cmap='gray')
plt.show()

相关问题 更多 >