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 中,条件扩张是传统扩张操作的扩展,它包含基于第二幅图像的条件,通常称为"标记图像"。

它允许您控制扩张过程,使得扩张仅发生在标记图像具有特定像素值的位置。

我们可以使用 cdilate() 函数在 mahotas 中对图像执行条件扩张。此函数根据标记图像的像素值将扩张过程限制在特定区域。

mahotas.cdilate() 函数

Mahotas 中的 cdilate() 函数接受两个输入:输入图像和掩码(条件)数组。它根据提供的条件对输入图像执行条件扩张,并返回扩张后的图像。

蒙版用于识别图像内的特定区域。它们充当过滤器,突出显示某些区域而忽略其他区域。

语法

以下是 cdilate() 函数的基本语法 −

mahotas.cdilate(f, g, Bc={3x3 cross}, n=1)

其中,

  • f − 它是要对其执行条件扩张的输入图像。

  • g −它是条件扩张期间要应用的蒙版。

  • Bc = {3×3 cross}(可选) − 它是用于扩张的结构元素。默认值为 {3×3 cross}。

  • n − 它是扩张操作的迭代次数。默认情况下,它设置为 1,表示单次迭代。

示例

在下面的示例中,我们通过放大图像的像素强度来对图像执行条件扩张 −

import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
image= mh.imread('nature.jpeg')
g = image * 2
conditional_dilated_image = mh.cdilate(image, g)
# 创建带有子图的图形
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(conditional_dilated_image, cmap='gray')
axes[1].set_title('Conditional Dilated Image')
axes[1].axis('off')
# 调整布局并显示图
plt.tight_layout()
plt.show()

输出

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

Dilating Image Mahotas

使用结构元素

要在 Mahotas 中使用结构元素执行条件扩张,首先,我们需要定义将应用扩张的条件。例如,您可以根据像素强度指定条件或提供二​​进制掩码。

接下来,选择一个定义扩张邻域的结构元素。Mahotas 提供了几个预定义的结构元素,例如圆盘和正方形,您可以根据所需的形状和大小进行选择。

最后,检索结果图像,该图像将仅包含满足条件的扩张效果。

示例

在这里,我们尝试使用结构元素对图像执行条件扩张 −

import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
image= mh.imread('nature.jpeg', as_grey = True).astype(np.uint8)
# 根据像素强度定义条件
condition = image > 100
# 定义用于扩张的结构元素
structuring_element = mh.disk(5)
conditional_dilated_image = mh.cdilate(image, condition, structuring_element)
# 创建带有子图的图形
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(conditional_dilated_image, cmap='gray')
axes[1].set_title('Conditional Dilated Image')
axes[1].axis('off')
# 调整布局并显示图
plt.tight_layout()
plt.show()

输出

获得的输出如下所示 −

使用结构元素

使用自定义条件函数

我们还可以使用自定义条件函数对图像执行条件扩张。

为此,我们首先定义一个自定义条件函数来确定哪些像素应该进行扩张。

接下来,选择一个结构元素来定义扩张操作的形状和大小。

最后,执行条件扩张并检索扩张后的图像。

示例

现在,我们使用自定义条件函数扩张图像 −

import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
# 加载图像
image = mh.imread('sea.bmp', as_grey=True).astype(np.uint8)
# 定义自定义条件函数
def custom_condition(pixel_value):
    return pixel_value > 100
# 定义结构元素
structuring_element = mh.disk(5)
# 根据自定义条件函数创建二进制掩码
condition = custom_condition(image)
# 执行条件扩张
conditional_dilated_image = mh.cdilate(image, condition, structuring_element)
# 创建带有子图的图形
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(conditional_dilated_image, cmap='gray')
axes[1].set_title('Conditional Dilated Image')
axes[1].axis('off')
# 调整布局并显示plot
plt.tight_layout()
plt.show()

输出

以下是上述代码的输出 −

Custom Condition Function