Python中利用scipy.ndimagebinary_fill_holes()函数填充二进制图像的空洞
发布时间:2023-12-28 07:59:01
在Python中,使用scipy.ndimage.binary_fill_holes()函数可以填充二进制图像中的空洞。这个函数可以将图像中的孔隙区域填充为连通区域,使得图像中的每个目标物体都是一个完整的闭合区域。
首先,我们需要导入所需的库和模块:
import numpy as np from scipy import ndimage import matplotlib.pyplot as plt
接下来,我们可以创建一个测试图像来演示如何使用binary_fill_holes()函数填充空洞。我们将创建一个简单的二进制图像,其中包含一个圆以及一个在圆内的圆形空洞。
# 创建一个空白图像 image = np.zeros((200, 200), dtype=np.uint8) # 在图像中绘制一个大圆 rr, cc = np.ogrid[:200, :200] circle = (rr - 100) ** 2 + (cc - 100) ** 2 image[circle < 5000] = 1 # 在图像中绘制一个小圆形的空洞 hole = (rr - 100) ** 2 + (cc - 100) ** 2 image[hole < 200] = 0
现在,我们可以使用binary_fill_holes()函数来填充图像中的空洞。该函数需要一个二进制图像作为输入,并返回一个填充了空洞的新图像。
# 填充图像中的空洞 filled_image = ndimage.binary_fill_holes(image)
最后,我们可以使用matplotlib库将原始图像和填充后的图像进行可视化展示。
# 展示原始图像和填充后的图像
fig, axs = plt.subplots(1, 2, figsize=(10, 5))
axs[0].imshow(image, cmap='gray')
axs[0].set_title('Original Image')
axs[1].imshow(filled_image, cmap='gray')
axs[1].set_title('Filled Image')
plt.show()
运行这段代码后,我们将得到一个包含原始图像和填充后图像的可视化结果。在填充后的图像中,原来的空洞已被填充为与周围区域相连的闭合区域。
这就是利用scipy.ndimage.binary_fill_holes()函数填充二进制图像中的空洞的使用例子。希望对你有所帮助!
