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 中的多数滤波器,我们可以使用 major_filter() 函数。

Mahotas 中的多数滤波器使用结构元素来检查邻域中的像素。

结构元素计算邻域内的像素值,并用最常见的值替换每个像素的值以减少噪音。

结构元素的大小决定了平滑的程度。邻域越大,平滑效果越强,同时会减少一些更精细的细节,而邻域越小,平滑效果越差,但会保留更多细节。

mahotas.majority_filter() 函数

mahotas.majority_filter() 函数使用指定的邻域大小将多数滤波器应用于输入图像。

它将每个像素值替换为其邻居中的多数值。过滤后的图像存储在输出数组中。

语法

以下是 mahotas − 中多数过滤器的基本语法

mahotas.majority_filter(img, N=3, out={np.empty(img.shape, bool)})

其中,

  • img − 它是输入图像。

  • N − 它是过滤器的大小。它必须是一个奇数整数。默认值为 3。

  • Out(可选) − 它指定将存储过滤后的图像的输出数组。它必须是一个与输入图像大小相同的空布尔数组。

示例

以下是使用 major_filter() 函数过滤图像的基本示例 −

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
image=mh.imread('picture.jpg', as_grey = True)
filtered_image = mh.majority_filter(image)
# 显示原始图像
fig, axis = mtplt.subplots(1, 2, figsize=(9, 4))
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].axis('off')
# 显示多数滤波后的图像
axes[1].imshow(filtered_image, cmap='gray')
axes[1].set_title('Majority Filtered')
axes[1].axis('off')
mtplt.show()
输出

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

多数过滤器

通过指定窗口大小

要在 Mahotas 中指定窗口大小,我们需要将其作为参数传递给 major_filter() 函数。

窗口大小是用于确定图像中每个像素的多数值的像素数。

窗口大小必须是奇数整数。这是因为多数过滤器通过查找像素邻域中最常见的值来工作。

如果窗口大小为偶数,则窗口中心将有两个像素具有相同的值,多​​数过滤器将无法确定哪个值是最常见的。

示例

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
image=mh.imread('picture.jpg', as_grey = True)
# 指定过滤器大小
filter_size = 19
# 应用具有指定过滤器大小的多数过滤器
filtered_image = mh.majority_filter(image, N=filter_size)
# 显示原始图像
fig,axes = mtplt.subplots(1, 2, figsize=(9, 4))
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].axis('off')
# 显示大多数过滤后的图像
axes[1].imshow(filtered_image, cmap='gray')
axes[1].set_title('Majority Filtered')
axes[1].axis('off')
mtplt.show()

输出

以下是上述代码的输出 −

指定窗口大小

通过将结果存储在输出数组中

我们也可以使用 Mahotas 将多数过滤器的结果存储在输出数组中。为此,我们首先需要使用 NumPy 库创建一个空数组。

此数组使用与输入图像相同的形状初始化,以存储生成的过滤图像。数组的数据类型指定为 bool,假设为布尔图像。

最后,我们将过滤后的图像作为参数传递给 major_filter() 函数,将其存储在输出数组中。

示例

在这里,我们尝试将多数滤波器应用于灰度图像,并将结果存储在特定的输出数组 − 中。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
image=mh.imread('pic.jpg', as_grey = True)
# 为过滤后的图像创建输出数组
output = np.empty(image.shape, dtype=bool)
# 应用 3x3 邻域的多数过滤器
# 将结果存储在输出数组中
mh.majority_filter(image, N=3, out=output)
# 显示原始图像
fig, axis = mtplt.subplots(1, 2, figsize=(9, 4))
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].axis('off')
# 显示多数过滤后的图像图像
axes[1].imshow(output, cmap='gray')
axes[1].set_title('Majority Filtered')
axes[1].axis('off')
mtplt.show()

输出

上述代码的输出如下 −

Storing Result Output Array