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]