【问题标题】:Image Reconstruction (Erosion and Dilation) both gives black image as output图像重建(侵蚀和膨胀)都将黑色图像作为输出
【发布时间】:2020-09-03 23:25:05
【问题描述】:

我正在尝试使用侵蚀方法从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')

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

【问题讨论】:

  • 请分享整个代码。
  • 这不应该是整个代码吗?
  • @Deshwal 好吧,公平地说,它缺少进口
  • 缺少导入!什么是 gray_img?!
  • 我已经编辑了代码。这是一个错字

标签: python machine-learning image-processing computer-vision scikit-image


【解决方案1】:

rgb2gray 将图像输出为浮点矩阵,其值在 [0;1] 中

所以 rescale_intensity 只是输出 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多