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