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 中,我们可以使用 labeled.filter_labeled() 函数转换标记图像的过滤区域。此函数将过滤器应用于图像的选定区域,同时保持其他区域不变。

使用 mahotas.labeled.filter_labeled() 函数

mahotas.labeled.filter_labeled() 函数将标记图像作为输入,并根据某些属性删除不需要的区域。它根据图像的标签识别区域。

生成的图像仅包含符合过滤条件的区域。

语法

以下是 mahotas &minus 中 filter_labeled() 函数的基本语法;

mahotas.labeled.filter_labeled(labeled, remove_bordering=False, min_size=None,
max_size=None)

其中,

  • labeled − 是数组。

  • remove_bordering (可选) − 定义是否删除接触边界的区域。

  • min_size (可选) − 是需要保留的区域的最小大小(默认为无最小值)。

  • max_size (可选) −这是需要保留的区域的最大大小(默认为无最大值)。

示例

在下面的示例中,我们正在过滤带标签的图像以删除边框像素。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image_rgb = mh.imread('tree.tiff')
image = image_rgb[:,:,0]
# 应用高斯滤波
image = mh.gaussian_filter(image, 4)
image = (image > image.mean())
# 将其转换为带标签的图像
labeled, num_objects = mh.label(image)
# 应用过滤器
filtered_image, num_objects = mh.labeled.filter_labeled(labeled,
remove_bordering=True)
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示原始 RGB 图像
axes[0].imshow(image_rgb)
axes[0].set_title('RGB Image')
axes[0].set_axis_off()
# 显示过滤后的图像
axes[1].imshow(filtered_image)
axes[1].set_title('Filtered Image')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()
输出

以下是上述代码的输出 −

Filter Regions Image

对特定大小的区域进行过滤

我们还可以过滤图像中特定大小的区域。通过这种方式,我们可以从标记图像中删除不属于特定尺寸限制的区域(太小或太大的区域)。

在 mahatos 中,我们可以通过在 labeled.filter_label() 函数中为可选参数 min_size 和 max_size 指定值来实现这一点。

示例

以下示例显示过滤标记图像以删除特定大小的区域。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image_rgb = mh.imread('tree.tiff')
image = image_rgb[:,:,0]
# 应用高斯滤波
image = mh.gaussian_filter(image, 4)
image = (image > image.mean())
# 转换为带标签的图像
labeled, num_objects = mh.label(image)
# 应用过滤器
filtered_image, num_objects = mh.labeled.filter_labeled(labeled, min_size=10,
max_size=50000)
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示原始 RGB 图像
axes[0].imshow(image_rgb)
axes[0].set_title('RGB Image')
axes[0].set_axis_off()
# 显示过滤后的图像
axes[1].imshow(filtered_image)
axes[1].set_title('Filtered Image')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()

输出

上述代码的输出如下 −

Filter Regions Image1

过滤边界区域和特定大小的区域

我们可以过滤图像中的边界区域以及特定大小的区域。在此,我们删除了接触边界的区域和不在特定大小限制内的区域。

在 mahotas 中,我们可以通过在 labeled.filter_label() 函数中为可选参数 min_size 和 max_size 指定值并将可选参数 remove_bordering 设置为 True 来实现此目的。

示例

在此示例中,应用过滤器来删除标记图像的边界区域和特定大小的区域。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image_rgb = mh.imread('tree.tiff')
image = image_rgb[:,:,0]
# 应用高斯滤波
image = mh.gaussian_filter(image, 4)
image = (image > image.mean())
# 将其转换为带标签的图像
labeled, num_objects = mh.label(image)
# 应用过滤器
filtered_image, num_objects = mh.labeled.filter_labeled(labeled,
remove_bordering=True, min_size=1000, max_size=50000)
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示原始 RGB 图像
axes[0].imshow(image_rgb)
axes[0].set_title('RGB Image')
axes[0].set_axis_off()
# 显示过滤后的图像
axes[1].imshow(filtered_image)
axes[1].set_title('Filtered Image')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()

输出

生成的输出如下所示 −

Filter Regions Image2