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 - Zernike 特征

Zernike 特征是一组数学值,用于描述图像中物体的形状。这些值反映了形状的具体细节,例如其圆度、对称性或某些图案的存在。

Zernike 特征具有一些特殊属性,使其可用于形状分析。例如,它们可以描述形状而不管其大小如何,这意味着即使形状旋转或缩放,特征仍保持不变。

此属性有助于识别不同条件下的物体。

Zernike 特征通过使用称为 Zernike 多项式的数学函数将形状分解为更小的部分来工作。这些多项式就像积木一样,通过组合它们,我们可以重新创建和表示物体的形状。

Mahotas 中的 Zernike 特征

要计算 mahotas 中的 Zernike 特征,我们可以使用 mahotas.features.zernike() 函数。

在 Mahotas 中,Zernike 特征通过执行以下步骤计算 −

步骤 1 − 生成一组 Zernike 多项式,它们是表示各种形状和轮廓的特殊数学函数。这些多项式充当分析物体形状的构建块。

步骤 2 − 通过将物体的形状投影到 Zernike 多项式上来计算 Zernike 矩。这些矩捕获了重要的形状特征。

步骤 3 −从计算出的矩中提取 Zernike 特征,这些特征代表了基本的形状信息。

mahotas.features.zernike() 函数

mahotas.features.zernike() 函数有三个参数:图像对象、Zernike 多项式的最大半径以及要计算的特征数量(度)。该函数返回图像的 Zernike 特征的 1−D 数组。

Zernike 矩的度是矩复杂度的度量。度越高,矩越复杂。

语法

以下是 mahotas.features.zernike() 函数的基本语法 −

mahotas.features.zernike(im, degree, radius, cm={center_of_mass(im)})

其中,

  • im − 它是将在其上计算 Zernike 矩的输入图像。

  • degree − 它指定要计算的 Zernike 矩的最大数量。

  • radius − 它定义将在其上计算 Zernike 矩的圆形区域的半径(以像素为单位)。以质心为中心的此半径定义的圆外的区域将被忽略。

  • cm(可选) −它指定图像的质心。默认情况下,使用图像的质心。

示例

以下是计算用于图像形状识别的 Zernike 特征的基本示例 −

import mahotas as mh
# 加载形状图像
image1 = mh.imread('sun.png', as_grey=True)
# 计算 Zernike 特征
features = mh.features.zernike(image1, degree=8, radius=10)
# 打印用于形状识别的特征
print(features)
输出

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

[0.31830989 0.00534998 0.00281258 0.0057374  0.01057919 0.00429721
 0.00178094 0.00918145 0.02209622 0.01597089 0.00729495 0.00831211
 0.00364554 0.01171028 0.02789188 0.01186194 0.02081316 0.01146935
 0.01319499 0.03367388 0.01580632 0.01314671 0.02947629 0.01304526
 0.00600012]

使用自定义质心

图像的质心是图像中质量均匀分布的点。自定义质心是图像中的一个点,不一定是图像的质心。

当您想使用不同的质心进行计算时,这可能很有用。

例如,您可能希望使用图像中对象的自定义质心来计算该对象的 Zernike 矩。

要在 mahotas 中使用自定义质心计算图像的 Zernike 矩,我们需要将 cm 参数传递给 mahotas.features.zernike() 函数。

cm 参数采用两个数字的元组,表示自定义质心的坐标。

示例

在这里,我们尝试使用自定义质心 − 来计算图像的 Zernike 特征;

import mahotas
import numpy as np
# 加载图像
image = mahotas.imread('nature.jpeg', as_grey = True)
# 计算图像的质心
center_of_mass = np.array([100, 100])
# 使用自定义质心计算图像的 Zernike 特征
zernike_features = mahotas.features.zernike(image, degree= 5, radius = 5,
cm=center_of_mass)
# 打印 Zernike 特征
print(zernike_features)

输出

以下是上述代码的输出 −

[3.18309886e-01 3.55572603e-04 3.73132619e-02 5.98944983e-04
3.23622041e-04  1.72293481e-04 9.16757235e-02 3.35704966e-04
7.09426259e-02  1.17847972e-04 2.12625026e-04 3.06537827e-04]

计算多幅图像的 Zernike 特征

我们还可以计算不同格式的多幅图像的 Zernike 特征。以下是实现此目的的方法 −

  • 创建一个空列表。

  • 使用 for 循环遍历图像列表。

  • 计算每幅图像的 Zernike 特征。

features.zernike() 函数返回 Zernike 矩向量,然后将其附加到 Zernike 特征列表中。

示例

现在,我们尝试计算不同格式的多幅图像的 Zernike 特征 −

import mahotas
import numpy as np
# 加载图像
images = [mahotas.imread('sun.png', as_grey = True),
mahotas.imread('nature.jpeg', as_grey = True), mahotas.imread('tree.tiff',
as_grey = True)]
# 计算图像的 Zernike 特征
zernike_features = []
for image in images:
   zernike_features.append(mahotas.features.zernike(image, degree=2, radius =
2))
# 打印 Zernike 特征
print(zernike_features)

输出

上述代码的输出如下 −

[array([0.31830989, 0.05692079, 0.10311168, 0.01087613]), array([0.31830989, 0.02542476, 0.11556386, 0.01648607]), array([0.31830989, 0.12487805, 0.07212079, 0.03351757])]