Mahotas 简明教程

Mahotas - Speeded-Up Robust Features

加速稳健特征 (SURF) 是一种算法,用于检测图像中的识别特征 (关键点)。SURF 通过分析不同比例的图像中的强度变化来标识关键点。

它为这些点分配方向并生成描述它们的独特特征的描述符。

描述符是在以关键点为中心的局部区域内以某种模式计算的。这些描述符随后可用于各种应用程序。

SURF 使用两种主要技术 - surf dense 和 surf integral。将在后面的章节中详细讨论这两种技术。

SURF Surf

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

Syntax

以下是 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)

其中,

  1. f − 这是输入图像。

  2. nr_octaves (optional) - 它定义 SURF 算法中要使用的倍频程数。倍频程表示不同分辨率级别的图像(默认值为 4)。

  3. nr_scales (optional) - 它确定每个倍频程的比例数量。比例用于检测不同细节级别的特征(默认值为 6)。

  4. initial_step_size (optional) - 它确定连续比例之间的初始步长。较小的步长允许检测详细特征(默认值为 1)。

  5. threshold (optional) - 它是用于过滤掉弱 SURF 特征的阈值(默认值为 0.1)。

  6. max_points (optional) - 它定义将要返回的最大 SURF 点数(默认值为 1024)。

  7. descriptor_only (optional) - 该标志确定是否仅返回描述符或描述符和关键点。当设置为 True 时,将仅返回检测到的特征的描述符。如果设置为 False,将返回关键点和描述符(默认值为 False)。

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

surf

SURF Dense

SURF 稠密是 SURF 算法使用的一种技术。SURF 稠密在图像中对关键点进行稠密采样。

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

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

surf dense

SURF Integral

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

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

结果,SURF 算法非常适合于实时应用程序和处理大规模数据集。

以下为 SURF 积分图像 −

surf integral technique

Example

在下面的示例中,我们对图像执行了上面讨论的不同 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 dense
surf_dense = surf.dense(image, 100)
mtplt.imshow(surf_dense)
mtplt.title('SURF Dense Image')
mtplt.axis('off')
mtplt.show()
# SURF integral
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 Image:

surf dense1

SURF Integral Image:

surf integral image

SURF Surf Image:

surf image1

我们将在后面的章节中详细讨论 SURF 稠密和 SURF 积分技术。