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 - 设置阈值

设置阈值是指为图像定义一个阈值,以执行图像阈值处理。图像阈值处理是将灰度图像转换为二值图像,其中像素被分为两类之一 −前景或背景。

强度值高于阈值的像素被分配给前景,而低于阈值的像素被分配给背景类。

阈值范围从 0 到 255,其中值 0 产生只有前景(白色)的图像,值 255 产生只有背景(黑色)的图像。

在 Mahotas 中设置阈值

在 Mahotas 中,我们可以使用 numpy.mean() 函数设置图像的阈值。

此函数以灰度图像作为输入并计算其像素的平均强度值。

然后将平均值设置为阈值。强度超过阈值的任何像素都被归类为前景,而强度低于阈值的像素被归类为背景。

注意 − Mahotas 没有提供直接设置阈值的方法,但是可以通过将 mahotas 与 numpy 结合使用来实现。

语法

以下是 numpy 中 mean() 函数的基本语法 −

numpy.mean(image)

其中,

  • image − 它是输入的灰度图像。

示例

在下面的示例中,我们使用 np.mean() 函数设置灰度图像的阈值。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('sun.png')
# 将其转换为灰度
image = mh.colors.rgb2gray(image)
# 计算平均强度值
mean_value = np.mean(image)
# 创建阈值图像
threshold_image = image > mean_value
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示原始图像
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].set_axis_off()
# 显示阈值图像
axes[1].imshow(threshold_image, cmap='gray')
axes[1].set_title('Threshold Image')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()

输出

以下是上述代码的输出 −

设置阈值

设置逆阈值

我们还可以为图像设置逆阈值。在逆阈值中,强度大于阈值的像素被归类为背景,而强度小于阈值的像素被归类为前景。

在 mahotas 中,逆阈值可以分两步完成。第一步是使用 numpy.mean() 函数计算图像的阈值。

第二步是使用小于运算符 (<) 而不是正常阈值中使用的大于运算符 (>) 将图像的像素强度与平均阈值进行比较。

示例

以下示例显示了从灰度图像创建逆阈值图像。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('sun.png')
# 将其转换为灰度
image = mh.colors.rgb2gray(image)
# 计算平均强度值
mean_value = np.mean(image)
# 创建逆阈值图像
threshold_image = image < mean_value
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示原始图像
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].set_axis_off()
# 显示阈值图像
axes[1].imshow(threshold_image, cmap='gray')
axes[1].set_title('Threshold Image')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()

输出

上述代码的输出如下 −

逆阈值

设置自定义阈值

设置阈值的另一种方法是为图像设置自定义阈值。这是一个完全基于图像决定的随机数。

自定义阈值是一个任意数,不是使用任何数学公式计算的。这就是为什么不应将自定义值用作阈值的原因。

另一个原因是自定义值可能会产生噪声明显更多的图像。

在 mahotas 中,我们可以分配一个任意数来设置自定义阈值。然后我们可以使用该值并比较图像的像素以生成阈值图像。

注意 −将阈值设置为 0 或 255 将导致最终图像仅由前景像素或背景像素组成。

示例

在这里,我们设置了一个任意数字作为阈值。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('sun.png')
# 将其转换为灰度
image = mh.colors.rgb2gray(image)
# 设置阈值
threshold_value = 200
# 创建阈值图像
threshold_image = image >阈值值
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示原始图像
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].set_axis_off()
# 显示阈值图像
axes[1].imshow(threshold_image, cmap='gray')
axes[1].set_title('Threshold Image')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()

输出

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

自定义阈值