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 − 中执行的几个形态运算

扩张

扩张是一种形态运算,可扩大图像中对象边界上的像素。它涉及使用结构元素扫描图像,并用结构元素定义的相应邻域内的最大值替换每个像素。

让我们看看下面的扩张图像和原始图像 −

扩张图像

腐蚀

腐蚀是一种基本的形态学运算符,它可以收缩或腐蚀图像中对象边界上的像素。

以下是腐蚀图像及其原始图像 −

腐蚀图像

开运算

开运算是腐蚀和扩张的组合。它会移除小物体并填充前景中的小孔,同时保留较大物体的整体形状和连通性。

让我们看看 mahotas − 中的打开图像

Opening Image

关闭

关闭是打开的逆操作,包括膨胀和腐蚀。它填充前景中的小间隙和孔,确保物体的连通性。

现在,让我们看看 mahotas − 中的闭合图像

Closing Image

条件侵蚀

条件侵蚀是一种形态学操作,它根据用户定义的条件保留图像中的结构。它根据第二个图像(称为标记图像)指定的条件选择性地侵蚀图像区域。

该操作仅在标记图像具有非零值时侵蚀图像。

下图显示条件侵蚀 −

条件侵蚀图像

条件扩张

条件扩张类似于条件侵蚀,但操作方式相反。它根据标记图像指定的条件选择性地扩大图像的区域。

该操作仅在标记图像具有非零值时扩大图像。

下图显示了条件扩张 −

条件扩张图像

区域最大值

区域最大值是图像中其邻域内强度最高的点。它们表示图像中的局部峰值或显著特征。

Mahotas 中的区域最大值运算符可识别这些局部最大值并将其标记为前景像素。

下图表示区域最大值 −

区域最大值图像

区域最小值

区域最小值是图像中其邻域内强度最低的点。它们表示图像中的局部盆地或凹陷。

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)
# 膨胀
dilated_image = mh.dilate(image, Bc=mh.disk(8))
plt.title("Dilated Image")
plt.imshow(dilated_image)
plt.show()
# 侵蚀
plt.title("Eroded Image")
eroded_image = mh.erode(image, Bc=mh.disk(8))
plt.imshow(eroded_image)
plt.show()
# 打开
plt.title("Opened Image")
opened_image = mh.open(image)
plt.imshow(opened_image)
plt.show()
# 关闭
plt.title("Closed Image")
closed_image = mh.close(image)
plt.imshow(closed_image)
plt.show()
# 条件扩张
plt.title("Conditional Dilation")
g = image * 6
cdilated_image = mh.cdilate(image, g)
plt.imshow(cdilated_image)
plt.show()
# 条件侵蚀
plt.title("Conditional Erosion")
scaled_image = image * 0.5
scaled_image = scaled_image.astype(np.uint8)
ceroded_image = mh.cerode(image, scaled_image)
plt.imshow(ceroded_image)
plt.show()
# 区域最大值
plt.title("Regional Maxima")
regional_maxima = mh.regmax(image)
plt.imshow(regional_maxima)
plt.show()
# 区域最小值
plt.title("Regional Minima")
regional_minima = mh.regmin(image)
plt.imshow(regional_minima)
plt.show()

输出

得到的输出如下所示 −

扩张:

扩张图像 1

侵蚀:

侵蚀图像 1

打开的图像:

打开的图像

关闭的图像:

关闭的图像

条件扩张:

条件扩张Image1

条件侵蚀:

条件侵蚀 Image1

区域最大值:

区域最大值 Image1

区域最小值:

区域最小值 Image1

我们将在本节的其余章节中详细讨论所有形态算子。