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

eag*_*e34 10 python opencv image-processing scipy image-segmentation

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

要填写的图像

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

在此输入图像描述

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

M4r*_*ini 6

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

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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述