- Mahotas 教程
- Mahotas - 首页
- Mahotas - 简介
- Mahotas - 计算机视觉
- Mahotas - 历史
- Mahotas - 特性
- Mahotas - 安装
- Mahotas 图像处理
- Mahotas - 图像处理
- Mahotas - 加载图像
- Mahotas - 加载灰度图像
- Mahotas - 显示图像
- Mahotas - 显示图像形状
- Mahotas - 保存图像
- Mahotas - 图像的质心
- Mahotas - 图像卷积
- Mahotas - 创建 RGB 图像
- Mahotas - 图像的欧拉数
- Mahotas - 图像中零值的比例
- Mahotas - 获取图像矩
- Mahotas - 图像中的局部最大值
- Mahotas - 图像椭圆轴
- Mahotas - 图像拉伸 RGB
- Mahotas 颜色空间转换
- Mahotas - 颜色空间转换
- Mahotas - RGB 到灰度转换
- Mahotas - RGB 到 LAB 转换
- Mahotas - RGB 到 Sepia 转换
- Mahotas - RGB 到 XYZ 转换
- Mahotas - XYZ 到 LAB 转换
- Mahotas - XYZ 到 RGB 转换
- Mahotas - 增加伽马校正
- Mahotas - 拉伸伽马校正
- Mahotas 标记图像函数
- Mahotas - 标记图像函数
- Mahotas - 标记图像
- Mahotas - 过滤区域
- Mahotas - 边界像素
- Mahotas - 形态学操作
- Mahotas - 形态学算子
- Mahotas - 查找图像平均值
- Mahotas - 裁剪图像
- Mahotas - 图像的偏心率
- Mahotas - 图像叠加
- Mahotas - 图像的圆度
- Mahotas - 调整图像大小
- Mahotas - 图像直方图
- Mahotas - 膨胀图像
- Mahotas - 腐蚀图像
- Mahotas - 分水岭算法
- Mahotas - 图像开运算
- Mahotas - 图像闭运算
- Mahotas - 填充图像中的孔洞
- Mahotas - 条件膨胀图像
- Mahotas - 条件腐蚀图像
- Mahotas - 图像条件分水岭算法
- Mahotas - 图像中的局部最小值
- Mahotas - 图像的区域最大值
- Mahotas - 图像的区域最小值
- Mahotas - 高级概念
- Mahotas - 图像阈值化
- Mahotas - 设置阈值
- Mahotas - 软阈值
- Mahotas - Bernsen 局部阈值化
- Mahotas - 小波变换
- 创建图像小波中心
- Mahotas - 距离变换
- Mahotas - 多边形工具
- Mahotas - 局部二值模式
- 阈值邻域统计
- Mahotas - Haralick 特征
- 标记区域的权重
- Mahotas - Zernike 特征
- Mahotas - Zernike 矩
- Mahotas - 排序滤波器
- Mahotas - 2D 拉普拉斯滤波器
- Mahotas - 多数滤波器
- Mahotas - 均值滤波器
- Mahotas - 中值滤波器
- Mahotas - Otsu 方法
- Mahotas - 高斯滤波
- Mahotas - 击中或错过变换
- Mahotas - 标记最大数组
- Mahotas - 图像的平均值
- Mahotas - SURF 密集点
- Mahotas - SURF 积分
- Mahotas - Haar 变换
- 突出显示图像最大值
- 计算线性二值模式
- 获取标签的边界
- 反转 Haar 变换
- Riddler-Calvard 方法
- 标记区域的大小
- Mahotas - 模板匹配
- 加速鲁棒特征
- 移除带边框的标记
- Mahotas - Daubechies 小波
- Mahotas - Sobel 边缘检测
Mahotas - 填充图像中的孔洞
填充图像中的孔洞是指去除图像前景区域中的小间隙或孔洞。在闭运算过程中,首先执行膨胀操作,然后执行腐蚀操作。
膨胀扩展前景区域的边界。对于每个像素,膨胀操作根据结构元素检查其邻域。
如果任何邻域像素为白色,则中心像素也变为白色。此过程有助于填充前景区域内的间隙或孔洞。
膨胀后,腐蚀收缩前景区域的边界。同样,使用结构元素,腐蚀检查每个像素及其邻域。如果任何邻域像素为黑色,则中心像素变为黑色。
此步骤有助于细化和平滑前景区域的轮廓,同时保留主要结构。
在 Mahotas 中填充图像中的孔洞
要在 Mahotas 中执行填充孔洞的过程,我们使用 mahotas.close_holes() 函数。此方法允许顺序应用膨胀和腐蚀操作。
通过首先应用膨胀操作(扩展区域),然后应用腐蚀操作(细化边界),闭运算有效地关闭了二值图像前景区域中的小孔洞或间隙。
mahotas.close_holes() 函数
Mahotas 中的 close_holes() 函数将二值图像作为输入,并返回具有已填充孔洞的结果图像。
close_holes() 函数会自动检测并填充孔洞,而无需显式定义结构元素。
语法
以下是 mahotas 中 close_holes() 函数的基本语法:
mahotas.close_holes(ref, Bc=None)
其中,
ref − 输入的二值图像。
Bc − 指定用于闭运算的结构元素或内核。如果未提供(设置为 None),则将使用默认结构元素。
示例
在以下示例中,我们正在填充图像中的孔洞:
import mahotas as mh import numpy as np import matplotlib.pyplot as plt image = mh.imread('pic.jpg',as_grey = True) closed_holes_image = mh.close_holes(image) # Create a figure with subplots fig, axes = plt.subplots(1, 2, figsize=(7,5 )) # Display the original image axes[0].imshow(image) axes[0].set_title('Original Image') axes[0].axis('off') # Display the closed holes image axes[1].imshow(closed_holes_image, cmap='gray') axes[1].set_title('Closed Holes Image') axes[1].axis('off') # Adjust the layout and display the plot plt.tight_layout() plt.show()
输出
执行上述代码后,我们将获得以下输出:
使用随机二值图像
我们还可以通过创建随机二值图像来执行填充图像孔洞的过程。
为此,我们首先使用 NumPy 创建一个随机二值图像,其中像素为 0(背景)或 1(前景)。
获得二值图像后,我们可以通过使用结构元素执行形态学闭运算。
它将定义膨胀和腐蚀操作的邻域的形状和大小。最后,我们得到图像中已填充的孔洞的结果。
示例
在这里,我们尝试通过创建随机二值图像来执行填充图像孔洞的过程:
import mahotas as mh import numpy as np from pylab import imshow, show # Create a random binary image image = np.random.randint(0, 2, size=(100, 50), dtype=np.bool_) Bc=np.ones((3,3)) # Perform morphological closing holes with a 3x3 cross structuring element result = mh.close_holes(image, Bc) # Show the result imshow(result) show()
输出
产生的输出如下所示:
多次迭代填充孔洞
对于多次迭代填充孔洞,我们的目标是逐渐填充较小的孔洞并反复细化结果。
我们首先创建原始二值图像的副本。此副本将作为孔洞填充过程每次迭代的起点。然后,使用 for 循环,我们迭代指定的次数。
在每次迭代中,mahotas.close_holes() 函数应用于图像的当前版本。该函数识别图像中的孔洞并填充它们,逐渐改善前景区域的连通性和连续性。
示例
现在,我们正在多次迭代填充图像中的孔洞:
import mahotas import numpy as np import matplotlib.pyplot as plt image = mahotas.imread('pic.jpg', as_grey = True) # Close the holes in the binary image with multiple iterations closed_image = image.copy() for i in range(3): closed_image = mahotas.close_holes(closed_image) # Display the original and closed images fig, axes = plt.subplots(1, 2, figsize=(10, 5)) axes[0].imshow(image, cmap='gray') axes[0].set_title('Original Image') axes[1].imshow(closed_image, cmap='gray') axes[1].set_title('Closed Image') plt.tight_layout() plt.show()
输出
以下是上述代码的输出: