填补触及图像边界的物体孔洞

13 投票
1 回答
6739 浏览
提问于 2025-04-17 21:42

我正在尝试填补下面这张图片中的空洞。

待填补的图片

我使用SciPy的binary_fill_holes()函数时,通常能成功填补空洞,但有一个例外,就是那些与图片边缘接触的物体。

在这里输入图片描述

有没有现成的Python函数可以填补与边缘接触的物体的空洞?我试着在图片周围加了一个白色边框,但结果是整个图片都被填满了。

1 个回答

8

这段话的意思是,假设图片中背景部分比其他部分要多。它实际上是在对图片进行一种叫做“连通区域分析”的处理。这个过程会找出最大的区域(我们假设这个区域是背景),然后把其他的部分都变成白色。

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

撰写回答