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 中,腐蚀图像是指去除图像中对象或区域边界的像素数。此操作通常用于修改图像中的形状和结构。

我们可以使用 erode() 函数在 mahotas 中腐蚀图像。它用于通过使用结构元素 B 来缩小元素 A。

结构元素是一个定义每个像素周围邻域的小矩阵或形状。它用于确定在侵蚀过程中应考虑哪些像素。

mahotas.erode() 函数

mahotas.erode() 函数将输入图像和结构元素作为参数,并返回一个新的 Numpy 数组。

输出像素的值确定为邻域中所有像素的最小值。如果任何邻域像素的值为 0,则将像素设置为 0。

erode() 函数逐个像素扫描图像,并检查结构元素定义的邻域。

如果任何相邻像素是对象的一部分,则侵蚀操作会将这些像素移除到对象的边界,使其变小。

语法

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

mahotas.erode(A, Bc={3x3 cross}, out={np.empty_as(A)})

其中,

  • A − 它是将执行侵蚀的输入图像。它应该是一个表示灰度图像的 NumPy 数组。

  • Bc(可选) − 它是用于侵蚀的结构元素。默认情况下,它设置为 3x3 十字形结构元素。

  • out(可选) −它指定用于存储结果的输出数组。

示例

以下是使用 erode() 函数腐蚀 mahotas 中图像的基本示例 −

import mahotas as mh
import matplotlib.pyplot as plt
import numpy as np
image = mh.imread('nature.jpeg', as_grey=True).astype(np.uint8)
# 使用大小为 3x3 的方形核进行侵蚀
eroded_image = mh.erode(image, Bc=mh.disk(3))
# 创建带有子图的图形
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(eroded_image, cmap='gray')
axes[1].set_title('Eroded Image')
axes[1].axis('off')
# 调整布局并显示图
plt.tight_layout()
plt.show()

输出

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

腐蚀图像

使用不同结构元素大小进行腐蚀

我们还可以使用不同的结构元素大小腐蚀图像,以修改图像的不同方面。这些元素是使用 Mahotas disk() 函数以不同大小创建的。

通过为结构元素选择不同的半径或大小,我们可以实现不同的效果。首先,我们使用最大的结构元素进行腐蚀。然后,我们继续使用较小的结构元素进行额外的扩张。

每个腐蚀操作都会通过从边界移除像素来进一步缩小图像中的对象。

示例

在这里,我们尝试使用不同的结构元素大小腐蚀图像 −

import mahotas as mh
import numpy as np
from pylab import imshow, show
image = mh.imread('nature.jpeg', as_grey=True).astype(np.uint8)
# 使用最大的结构元素进行侵蚀
largest_se = mh.disk(8)
eroded_image = mh.erode(image, Bc=largest_se)
# 使用较小的结构元素进行额外的侵蚀
smaller_se_1 = mh.disk(2)
smaller_se_2 = mh.disk(5)
eroded_image = mh.erode(eroded_image, Bc=smaller_se_1)
eroded_image = mh.erode(eroded_image, Bc=smaller_se_2)
# 显示侵蚀图像
imshow(eroded_image)
show()

输出

获得的输出如下所示 −

侵蚀结构元素

使用圆形内核进行侵蚀

要创建圆形− 形内核,我们可以使用 Mahotas 中的 disk() 函数。通过指定所需的半径,此函数会生成一个表示圆形内核的 NumPy 数组。

一旦我们准备好图像和圆形内核,我们就可以继续执行侵蚀。此操作将圆形内核应用于图像的每个像素,从而相应地缩小前景像素。

简单来说,它根据圆形内核定义的连接性缩小区域。

示例

现在,我们正在使用圆形形内核来扩大图像 −

import mahotas as mh
import numpy as np
from pylab import imshow, show
# 加载图像
image = mh.imread('sun.png', as_grey=True).astype(np.uint8)
# 半径为 10 的圆形内核
radius = 10
kernel = mh.disk(radius)
eroded_image = mh.erode(image, kernel)
# 显示侵蚀图像
imshow(eroded_image)
show()

输出

以下是上述代码的输出 −

Erosion round-shaped kernel