填充触摸图像边框的对象中的孔

时间:2014-03-10 20:21:31

标签: python opencv image-processing scipy image-segmentation

我正试图填写下图中的漏洞。

image to be filled

当我使用SciPy的binary_fill_holes()时,我通常会成功,除了触摸图像边框的对象。

enter image description here

是否有任何现有的Python函数可以填充触摸边框的对象中的漏洞?我尝试在图像周围添加白色边框,但这只会导致整个图像被填充。

1 个答案:

答案 0 :(得分:5)

这假设背景比其他东西多。它基本上对图像进行连通分量分析。提取最大的组件(假设为背景),并将其他所有组件设置为白色。

import numpy as np
import matplotlib.pyplot as plt
import skimage.morphology, skimage.data

img = skimage.data.imread('j1ESv.png', 1)
labels = skimage.morphology.label(img)
labelCount = np.bincount(labels.ravel())
background = np.argmax(labelCount)
img[labels != background] = 255
plt.imshow(img, cmap=plt.cm.gray)
plt.show()

enter image description here