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 矩仍将准确捕捉其形状。

  • 旋转不变性 − 如果您旋转图像中的物体,Zernike 矩将保持不变。

  • 缩放不变性 −如果您调整图像中对象的大小,Zernike 矩将保持不变。

Zernike 矩使用称为 Zernike 多项式的特殊数学函数将形状分解为更小的部分。

这些多项式就像构建块一样。通过组合不同的 Zernike 多项式,我们可以重新创建并表示对象形状的独特特征。

Mahotas 中的 Zernike 矩

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

在 Mahotas 中,Zernike 矩是通过生成一组 Zernike 多项式来计算的,这些多项式是代表各种形状和轮廓的特殊数学函数。

这些多项式是分析物体形状的基石。

之后,通过将物体的形状投影到 Zernike 多项式上来计算 Zernike 矩。这些矩可以捕捉重要的形状特征。

mahotas.features.zernike_moments() 函数

mahotas.features.zernike_moments() 函数有两个参数:图像对象和 Zernike 多项式的最大半径。该函数返回图像的 Zernike 矩的 1−D 数组。

语法

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

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

其中,

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

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

  • degree(可选) − 它指定要计算的 Zernike 矩的最大数量。默认情况下,度值为 8。

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

示例

以下是使用默认度值计算图像的 Zernike 矩的基本示例 −

import mahotas as mh
# 加载形状图像
image = mh.imread('sun.png', as_grey=True)
# 计算 Zernike 矩
moments = mh.features.zernike_moments(image, radius=10)
# 比较矩以进行形状识别
print(moments)
输出

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

[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_moments() 函数。

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_moments = mahotas.features.zernike_moments(image, radius = 5,
cm=center_of_mass)
# 打印 Zernike 矩
print(zernike_moments)

输出

以下是上述代码的输出 −

[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
 1.94379185e-01 1.32093249e-04 8.54616882e-02 1.83274207e-04
 1.86728282e-04 3.08004108e-04 4.79437809e-04 1.97726337e-04
 3.61630733e-01 5.27467687e-04 8.25534856e-02 7.75593823e-06
 1.99419391e-01]

使用特定顺序

Zernike 矩的顺序是其可以表示的形状复杂度的度量。阶数越高,矩可以表示的形状越复杂。

要计算 mahotas 中具有特定阶数的图像的 Zernike 矩,我们需要将 degree 参数传递给 mahotas.features.zernike_moments() 函数。

示例

在下面的例子中,我们尝试计算具有指定阶数的图像的 Zernike 矩。

import mahotas
import numpy as np
# 加载图像
image = mahotas.imread('nature.jpeg', as_grey = True)
# 使用特定阶数计算图像的 Zernike 矩
zernike_moments = mahotas.features.zernike_moments(image,1, 4)
# 打印 Zernike moment
print(zernike_moments)

输出

上述代码的输出如下所示 −

[0.31830989 0.17086131 0.03146824 0.1549947 0.30067136 0.5376049 0.30532715 0.33032683 0.47908119]