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 转棕褐色 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 局部二元模式 Mahotas 阈值邻接统计 Mahotas Haralic 特征 Mahotas 标记区域的权重 Mahotas Zernike 特征 Mahotas Zernike 矩 Mahotas 等级过滤器 Mahotas 2D 拉普拉斯过滤器 Mahotas 多数过滤器 Mahotas 均值滤波器 Mahotas 中值滤波器 Mahotas Otsu 方法 Mahotas 高斯滤波 Mahotas 命中与未命中变换 Mahotas 标记最大值数组 Mahotas 图像平均值 Mahotas SURF 密集点 Mahotas SURF 积分 Mahotas Haar 变换 Mahotas 突出显示图像最大值 Mahotas 计算线性二进制模式 Mahotas 获取标签边框 Mahotas 逆 Haar 变换 Mahotas Riddler-Calvard 方法 Mahotas 标记区域的大小 Mahotas 模板匹配 Mahotas 加速稳健特征 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)
# 创建带有子图的图形
fig, axis = plt.subplots(1, 2, figsize=(7,5 ))
# 显示原始图像
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].axis('off')
# 显示封闭孔图像
axes[1].imshow(closed_holes_image, cmap='gray')
axes[1].set_title('Closed Holes Image')
axes[1].axis('off')
# 调整布局并显示图
plt.tight_layout()
plt.show()

输出

执行上述代码后,我们得到以下输出 −

Closing Holes Image

使用随机二进制图像

我们还可以通过创建随机二进制图像来执行图像中的闭孔过程。

为此,我们首先使用 NumPy 创建一个随机二进制图像,其中像素为 0(背景)或 1(前景)。

一旦我们有了二进制图像,我们就可以继续使用结构元素执行形态学闭合。

它将定义膨胀和腐蚀操作的邻域的形状和大小。最后,我们得到图像中的结果闭合孔。

示例

在这里,我们尝试通过创建随机二进制图像 − 来执行图像中的闭孔过程

import mahotas as mh
import numpy as np
from pylab import imshow, show
# 创建随机二进制图像
image = np.random.randint(0, 2, size=(100, 50), dtype=np.bool_)
Bc=np.ones((3,3))
# 使用 3x3 交叉结构元素执行形态学闭合孔洞
result = mh.close_holes(image, Bc)
# 显示结果
imshow(result)
show()

输出

生成的输出如下所示 −

Closing Holes Image

使用多次迭代来关闭孔洞

对于使用多次迭代来关闭孔洞,我们的目标是逐渐填补较小的孔洞并反复优化结果。

我们首先创建原始二进制图像的副本。此副本将作为每次孔洞关闭过程迭代的起点。然后,使用 for 循环,我们迭代指定的次数。

在每次迭代期间,mahotas.close_holes() 函数都会应用于图像的当前版本。该函数识别图像中的孔洞并进行填充,逐步改善前景区域的连通性和连续性。

示例

现在,我们通过多次迭代 − 来关闭图像中的孔洞

import mahotas
import numpy as np
import matplotlib.pyplot as plt
image = mahotas.imread('pic.jpg', as_grey = True)
# 通过多次迭代来关闭二值图像中的孔洞
closed_image = image.copy()
for i in range(3):
   closed_image = mahotas.close_holes(closed_image)
# 显示原始图像和闭合图像
fig, axis = 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()

输出

以下是上述代码的输出 −

Closing Holes Multiple Images