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.open() 函数。此方法允许顺序应用腐蚀和扩张操作。

腐蚀通过考虑每个像素的邻域并将其替换为最小值来降低噪声并消除小结构。

随后,扩张通过将每个像素替换为其邻域中的最大值来扩展剩余结构,同时保留其关键特征。

mahotas.open() 函数

Mahotas 中的 open() 函数采用两个主要参数 − 二值图像和结构元素(内核)。该函数首先对输入的二值图像应用腐蚀操作。然后对腐蚀后的图像应用膨胀操作。

open() 函数返回执行腐蚀和膨胀操作后得到的打开图像。

语法

以下是 mahotas − 中 open() 函数的基本语法

mahotas.open(f, Bc={3x3 cross}, out={np.empty_like(f)})

其中,

  • f − 它是以 NumPy 数组形式表示的输入二值图像。

  • Bc −它是用于腐蚀和膨胀操作的结构元素。默认为 3x3 十字形结构元素。

  • out − 它是输出数组。结果将存储在与输入图像 f 具有相同形状和数据类型的新数组中。

示例

在下面的示例中,我们正在对图像执行打开过程 −

import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
image = mh.imread('sun.png')
opened_image = mh.open(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(opened_image, cmap='gray')
axes[1].set_title('Opened Image')
axes[1].axis('off')
# 调整布局并显示图
plt.tight_layout()
plt.show()

输出

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

Opening Process 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.open(image, Bc, out=np.empty_like(image))
# 显示结果
imshow(result)
show()

输出

生成的输出如下所示 −

随机二值图像

使用灰度图像

我们还可以在 mahotas 中对灰度图像执行开运算。为了实现这一点,我们只需在读取图像时传递 as_grey=True 参数,确保图像以灰度图像的形式加载。接下来,我们将对灰度图像执行形态学开运算。

示例

现在,我们在 mahotas − 中对灰度图像执行开运算;

import mahotas as mh
import numpy as np
from pylab import imshow, show
# 创建灰度图像
image = mh.imread('nature.jpeg', as_grey = True).astype(np.uint8)
Bc=np.ones((20,15))
# 使用 3x3 交叉结构元素执行形态学打开
result = mh.open(image, Bc, out=np.empty_like(image))
# 显示结果
imshow(result)
show()

输出

以下是上述代码的输出 −

使用灰度图像