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 使用两种主要技术:surf density 和 surf integration。这两种技术都将在接下来的章节中详细讨论。

SURF Surf

SURF surf 是一种结合图像关键点检测和描述的技术。它生成对这些关键点的属性进行编码的描述符。该函数以图像作为输入并返回一组 SURF 描述符。

语法

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

mahotas.features.surf.surf(f, nr_octaves=4, nr_scales=6, initial_step_size=1,
threshold=0.1, max_points=1024, descriptor_only=False)

其中,

  • f − 它是输入图像。

  • nr_octaves(可选) −它定义了 SURF 算法中要使用的八度数。一个八度表示不同分辨率级别的图像(默认值为 4)。

  • nr_scales(可选) − 它确定每个八度的尺度数。尺度用于检测不同细节级别的特征(默认值为 6)。

  • initial_step_size(可选) − 它确定连续尺度之间的初始步长。较小的步长允许检测详细特征(默认值为 1)。

  • threshold(可选) − 它是用于过滤掉弱 SURF 特征的阈值(默认值为 0.1)。

  • max_points(可选) −它定义了将返回的最大 SURF 点数(默认值为 1024)。

  • descriptor_only(可选) − 它是一个标志,用于确定是否仅返回描述符或描述符和关键点。设置为 True 时,将仅返回检测到的特征的描述符。

    如果设置为 False,则将同时返回关键点和描述符(默认值为 False)。

我们可以在下面看到冲浪图像 −

Surf

SURF Dense

SURF Dense 是 SURF 算法使用的一种技术。在 SURF Dense 中,关键点在图像上密集采样。

换句话说,SURF Dense 不是搜索特定的有趣点,而是计算图像中像素网格的描述符。这有助于捕获有关整个图像的信息。

在下图中,我们可以看到 SURF 密集图像 −

Surf Dense

SURF 积分

SURF 积分技术通过利用积分图像提高了 SURF 算法的计算效率。积分图像预先计算图像特定区域像素强度的累积和。

这种预先计算消除了冗余计算,从而实现了更快、更高效的特征检测和描述。

因此,SURF 算法非常适合实时应用和处理大规模数据集。

以下是 SURF 积分的图像

Surf Integral Technique

示例

在下面的示例中,我们将对图像执行如上所述的不同 SURF 函数 −

import mahotas as mh
from mahotas.features import surf
import numpy as np
import matplotlib.pyplot as mtplt
image = mh.imread('tree.tiff', as_grey=True)
# SURF density
surf_dense = surf.dense(image, 100)
mtplt.imshow(surf_dense)
mtplt.title('SURF Dense Image')
mtplt.axis('off')
mtplt.show()
# SURF integration
surf_integral = surf.integral(image)
mtplt.imshow(surf_integral)
mtplt.title('SURF Integral Image')
mtplt.axis('off')
mtplt.show()
# SURF surf
surf_surf = surf.surf(image)
mtplt.imshow(surf_surf)
mtplt.title('SURF Surf Image')
mtplt.axis('off')
mtplt.show()

输出

得到的输出如下所示 −

SURF Dense 图像:

Surf Dense1

SURF 积分图像:

Surf 积分图像

SURF 冲浪图像:

Surf 图像1

我们将在后续章节中详细讨论 SURF Dense 和 SURF 积分技术。