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 - SURF 密集点

SURF(加速稳健特征)是一种用于检测和描述图像中兴趣点的算法。这些点被称为"密集点"或"关键点",因为它们密集地存在于整个图像中,而不像稀疏点只存在于特定区域。

SURF 算法以各种比例分析整个图像,并识别强度发生显著变化的区域。

这些区域被视为潜在关键点。它们是包含独特和独特模式的兴趣区域。

Mahotas 中的 SURF 密集点

在 Mahotas 中,我们使用 mahotas.features.surf.dense() 函数来计算 SURF 密集点处的描述符。描述符本质上是描述图像中像素局部特征的特征向量,例如其强度梯度和方向。

为了生成这些描述符,该函数在图像上创建一个点网格,每个点之间相隔特定距离。在网格中的每个点,都会确定一个"兴趣点"。

这些兴趣点是捕获有关图像的详细信息的位置。一旦确定了兴趣点,就会计算密集的 SURF 描述符。

mahotas.features.surf.dense() 函数

mahotas.features.surf.dense() 函数将灰度图像作为输入,并返回包含描述符的数组。

此数组通常具有这样的结构:每行对应不同的兴趣点,列表示该点的描述符特征的值。

语法

以下是 mahotas − 中 surf.dense() 函数的基本语法

mahotas.features.surf.dense(f, Spacing, scale={np.sqrt(spacing)},
is_integral=False, include_interest_point=False)

其中,

  • f − 是输入的灰度图像。

  • spacing − 确定相邻关键点之间的距离。

  • scale (可选) − 指定计算描述符时使用的间距(默认为间距的平方根)。

  • is_integral (可选) −它是一个标志,指示输入图像是否为整数(默认为"False")。

  • include_interest_point(可选) − 它也是一个标志,指示是否返回带有 SURF 点的兴趣点(默认为"False")。

示例

在下面的例子中,我们使用 mh.features.surf.dense() 函数计算图像的 SURF 密集点。

import mahotas as mh
from mahotas.features import surf
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('sun.png')
# 将其转换为灰度
image = mh.colors.rgb2gray(image)
# 获取 SURF 密集点
surf_dense = surf.dense(image, 120)
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示原始图像
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].set_axis_off()
# 显示 surf 密集点
axes[1].imshow(surf_dense)
axes[1].set_title('SURF Dense Point')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图
mtplt.show()
输出

以下是上述代码的输出 −

SURF Dense Points

通过调整比例

我们可以调整比例来计算不同空间中 SURF 密集点的描述符。比例决定了兴趣点周围检查区域的大小。

较小的比例适合捕捉局部细节,而较大的比例适合捕捉全局细节。

在 mahotas 中,surf.dense() 函数的 scale 参数决定了计算 SURF 密集点描述符时使用的缩放比例。

我们可以将任意值传递给此参数,以检查缩放对 SURF 密集点的影响。

示例

在下面提到的示例中,我们正在调整比例来计算 SURF 密集点的描述符 −

import mahotas as mh
from mahotas.features import surf
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('nature.jpeg')
# 将其转换为灰度
image = mh.colors.rgb2gray(image)
# 获取 SURF 密集点
surf_dense = surf.dense(image, 100, np.sqrt(25))
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示原始图像
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].set_axis_off()
# 显示 surf 密集点
axes[1].imshow(surf_dense)
axes[1].set_title('SURF Dense Point')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图
mtplt.show()

输出

上述代码的输出如下 −

 Scale Adjusting

通过包含兴趣点

我们还可以在计算 SURF 密集点的描述符时包含图像的兴趣点。兴趣点是像素强度值发生显著变化的区域。

在 mahotas 中,要包含图像的兴趣点,我们可以在计算 SURF 密集点的描述符时将 include_interest_point 参数设置为布尔值"True"。

示例

在这里,我们在计算图像的 SURF 密集点的描述符时包含兴趣点。

import mahotas as mh
from mahotas.features import surf
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('tree.tiff')
# 将其转换为灰度
image = mh.colors.rgb2gray(image)
# 获取 SURF 密集点
surf_dense = surf.dense(image, 100, include_interest_point=True)
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示原始图像
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].set_axis_off()
# 显示 surf 密集点
axes[1].imshow(surf_dense)
axes[1].set_title('SURF Dense Point')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图
mtplt.show()

输出

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

Include Interest Points