【问题标题】:Clean up unlabeled pixels in image segmentation清理图像分割中未标记的像素
【发布时间】:2019-12-04 22:47:26
【问题描述】:

我的图像分割结果如下所示:

如您所见,分割图中存在小间隙。这些间隙像素已被赋值为 0;所有其他非间隙像素都被分配了一个非 0 类值。

有没有一种方法,可能在skimage 的某个地方,它可以仅对空像素执行 k-最近插值,以便为它们分配与其邻域一致的值?我尝试自己编写这个函数,但它对我的口味来说太慢了。

【问题讨论】:

  • 能否请您提供图像本身,而不是图像情节的屏幕截图,这有点像影印本的影印......
  • 您可以在 Python Wand(使用 Imagemagick)中进行连接组件处理,以将小区域合并到其周围区域。请参阅docs.wand-py.org/en/0.5.7/wand/image.html 连接组件下的区域阈值
  • 道歉。我最近开始使用 JupyterLab,他们下载输出图像 (github.com/jupyterlab/jupyterlab/issues/2685) 的方式相当不直观。

标签: python opencv scikit-learn image-segmentation scikit-image


【解决方案1】:

可以使用opencv的形态闭合操作。(参考:Link

我尝试对您的图像执行相同的操作:

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = plt.imread('image path')
plt.imshow(img)

kernel = np.ones((5,5),dtype='uint8')
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel,iterations=1)
plt.imshow(closing)

您可以使用内核大小和迭代次数。对于小图像,可以找到 3 或 5 的内核大小。您可以增加迭代次数以关闭更大的孔。

【讨论】:

    【解决方案2】:

    形态闭合非常好,但可以修改对象的形状,它在边缘添加了一些人工制品。 对于您的问题,我认为您应该使用 findContour 然后使用 fillpoly 来去除孔洞。

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 2019-04-24
      • 2018-02-16
      • 2022-10-17
      • 2013-09-29
      • 2023-03-30
      • 1970-01-01
      • 2014-01-16
      相关资源
      最近更新 更多