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

Haralick 特征描述图像的纹理。纹理是指图像中赋予其特定外观的图案,例如表面的平滑度或物体的排列。

为了处理 Haralick 特征,我们使用一种称为灰度共生矩阵 (GLCM) 的特殊矩阵。它是一个表示图像中像素强度对之间关系的矩阵。

它提供有关不同像素强度值组合在图像内特定距离出现频率的信息。

Mahotas 中的 Haralic 特征

要使用 Mahotas 计算 Haralick 特征,请通过指定像素对的距离和方向来创建 GLCM。接下来,使用 GLCM 计算形成 Haralick 特征的各种统计度量。

这些测量包括对比度、相关性、能量、熵、同质性等。最后,检索计算出的 Haralick 特征。

例如,Haralick 纹理分析中的对比度特征告诉我们图像中相邻像素的亮度或暗度变化程度。为了计算此特征,我们分析了 GLCM 矩阵。

此矩阵显示具有不同亮度级别的像素对一起出现的频率以及它们在图像中的位置。

我们可以使用 mahotas.features.haralick() 函数来计算 mahotas 中的 haralick 特征。

mahotas.features.haralick() 函数

haralick() 函数以灰度图像作为输入并返回计算出的 Haralick 特征。 Haralick 特征是根据灰度图像计算的。

Mahotas 允许我们通过分析图像的 GLCM 来计算 Haralick 特征。这样,我们可以提取有关图像中存在的纹理模式的信息。

语法

以下是 mahotas − 中 haralick() 函数的基本语法

mahotas.features.haralick(f, ignore_zeros=False, retain_haralick_bug=False,
compute_14th_feature=False, return_mean=False, return_mean_ptp=False,
use_x_minus_y_variance=False, distance=1)

参数

以下是 mahotas − 中 haralick() 函数接受的参数

  • f − 它是输入图像。

  • ignore_zeros(可选) − 它计算在计算 Haralick 特征时是否应忽略(True)或考虑(False)输入矩阵中的零值。

  • preserve_haralick_bug(可选) − 它确定是否在方程式中复制 Haralick 的拼写错误

  • compute_14th_feature(可选) − 它指示是否计算第 14 个 Haralick 特征(不相似性)。默认情况下,它设置为 False。

  • use_x_minus_y_variance(可选) −默认情况下,mahotas 使用 VAR[P(|x−y|)],但如果此参数为 True,则使用 VAR[|x−y|]。

  • distance(可选) − 它表示计算 GLCM 时使用的像素距离。它确定分析像素之间的空间关系时考虑的邻域大小。默认情况下,它设置为 1。

  • return_mean − 设置为 True 时,该函数返回所有方向的平均值。

  • return_mean_ptp −当设置为 True 时,该函数将返回所有方向上的平均值和点到点 (ptp) 值(max() 和 min() 之间的差值)。

示例

以下是计算 mahotas 中的 haralic 特征的基本示例 −

import mahotas
import numpy as np
import matplotlib.pyplot as mtplt
# 加载灰度图像
image = mahotas.imread('nature.jpeg', as_grey=True).astype(np.uint8)
# 计算 Haralick 纹理特征
features = mahotas.features.haralick(image)
print(features)
# 显示原始图像
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')
# 显示 haralick 特色图像
axes[1].imshow(features, cmap='gray')
axes[1].set_title('Haralick Feature')
axes[1].axis('off')
mtplt.show()
输出

执行上述代码后,我们得到如下所示的输出 −

[[ 2.77611344e-03  2.12394600e+02  9.75234595e-01  4.28813094e+03
   4.35886838e-01  2.69140151e+02  1.69401291e+04  8.31764345e+00
   1.14305862e+01  6.40277627e-04  4.00793348e+00 -4.61407168e-01
   9.99473205e-01]
 [ 1.61617121e-03  3.54272691e+02  9.58677001e-01  4.28662846e+03
   3.50998369e-01  2.69132899e+02  1.67922411e+04  8.38274113e+00
   1.20062562e+01  4.34549344e-04  4.47398649e+00 -3.83903098e-01
   9.98332575e-01]
 [ 1.92630414e-03  2.30755916e+02  9.73079650e-01  4.28590105e+03
   3.83777866e-01  2.69170823e+02  1.69128483e+04  8.37735303e+00
   1.17467122e+01  5.06580792e-04  4.20197981e+00 -4.18866103e-01
   9.99008620e-01]
 [ 1.61214638e-03  3.78211585e+02  9.55884630e-01  4.28661922e+03
   3.49497239e-01  2.69133049e+02  1.67682653e+04  8.38060403e+00
   1.20309899e+01  4.30756183e-04  4.49912123e+00 -3.80573424e-01
   9.98247930e-01]]

显示的图像如下图所示 −

Haralic 特征

忽略零的 Haralick 特征

在某些图像分析场景中,需要在计算 Haralick 纹理特征时忽略特定的像素值。

一种常见的情况是零值代表应从分析中排除的特定背景或噪声。

在 Mahotas 中,我们可以通过将 ignore_zeros 参数设置为 True

来忽略零值。

这将忽略零值。

示例

在这里,我们尝试通过忽略图像的零值 − 来计算图像的 haralicks 特征

import mahotas
import numpy as np
import matplotlib.pyplot as mtplt
# 加载灰度图像
image = mahotas.imread('sun.png', as_grey=True).astype(np.uint8)
# 忽略零计算 Haralick 纹理特征像素
g = ignore_zeros=True
features = mahotas.features.haralick(image,g)
print(features)
# 显示原始图像
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')
# 显示 haralick 特色图像
axes[1].imshow(features, cmap='gray')
axes[1].set_title('Haralick Feature')
axes[1].axis('off')
mtplt.show()

输出

以下是上述代码的输出 −

[[ 2.67939014e-03   5.27444410e+01 9.94759846e-01  5.03271870e+03
   5.82786178e-01   2.18400839e+02 2.00781303e+04  8.26680366e+00
   1.06263358e+01   1.01107651e-03 2.91875064e+00 -5.66759616e-01
   9.99888025e-01]
 [ 2.00109668e-03   1.00750583e+02 9.89991374e-01  5.03318740e+03
   4.90503673e-01   2.18387049e+02 2.00319990e+04  8.32862989e+00
   1.12183182e+01   7.15118996e-04 3.43564495e+00 -4.86983515e-01
   9.99634586e-01]
 [ 2.29690324e-03   6.34944689e+01 9.93691944e-01  5.03280779e+03
   5.33850851e-01   2.18354256e+02 2.00677367e+04  8.30278737e+00
   1.09228656e+01   8.42614942e-04 3.16166477e+00 -5.26842246e-01
   9.99797686e-01]
 [ 2.00666032e-03   1.07074413e+02 9.89363195e-01  5.03320370e+03
   4.91882840e-01   2.18386605e+02 2.00257404e+04  8.32829316e+00
   1.12259184e+01   7.18459598e-04 3.44609033e+00 -4.85960134e-01
   9.99629000e-01]]

得到的图像如下 −

Haralick 特征忽略零

使用第 14 个特征计算 Haralick 特征

第 14 个特征,方差平方和,计算为 GLCM 元素的方差,乘以它们距离的平方。它提供有关纹理平滑度的信息。

高值表示像素对在强度和距离方面的分布更加多样化,表示纹理粗糙。而较低的值表示更均匀或更平滑的纹理。

在 Mahotas 中,我们可以通过将 compute_14th_feature 参数设置为 True 来计算 Haralicks 第 14 个特征。

示例

现在,我们正在计算图像的第 14 个 haralick 特征 −

import mahotas
import numpy as np
import matplotlib.pyplot as mtplt
# 加载灰度图像
image = mahotas.imread('tree.tiff', as_grey=True).astype(np.uint8)
# 计算 Haralick 纹理特征并包含第 14 个特征
features = mahotas.features.haralick(image, compute_14th_feature=True)
print(features)
# 显示原始图像
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')
# 显示 haralick 特色图像
axes[1].imshow(features, cmap='gray')
axes[1].set_title('Haralick Feature')
axes[1].axis('off')
mtplt.show()

输出

生成的输出如下所示 −

[[ 9.21802518e-04  9.60973236e+02  9.37166491e-01  7.64698044e+03
   2.80301553e-01  2.25538844e+02  2.96269485e+04  8.67755638e+00
   1.32391345e+01  2.45576289e-04  5.30868095e+00 -2.86604804e-01
   9.94019510e-01  6.66066209e+00]
 [ 7.16875904e-04  1.64001329e+03  8.92817748e-01  7.65058234e+03
   2.39157134e-01  2.25628036e+02  2.89623161e+04  8.72580856e+00
   1.36201726e+01  1.80965000e-04  5.70631449e+00 -2.37235244e-01
   9.87128410e-01  6.52870916e+00]
 [ 8.28978095e-04  9.93880455e+02  9.35041963e-01  7.65017308e+03
   2.64905787e-01  2.25647417e+02  2.96068119e+04  8.69690646e+00
   1.33344285e+01  2.21103895e-04  5.38241896e+00 -2.74238405e-01
   9.92754897e-01  7.00379254e+00]
 [ 7.11697171e-04  1.51531034e+03  9.00967635e-01  7.65058141e+03
   2.38821560e-01  2.25628110e+02  2.90870153e+04  8.72404507e+00
   1.35861240e+01  1.82002747e-04  5.66026317e+00 -2.41641969e-01
   9.87980919e-01  6.65491250e+00]]

我们得到如下图像 −

Haralick Features