特征点及其性质

特征点定义

图像中具有独特局部性质的点。

特征点性质

  • 局部性:特征是局部的,对遮挡和混乱场景鲁棒
  • 数量:一幅图像中可以产生足够数量的特征点,比如成百上
  • 独特性:可以和其他图像中大多数点相区分
  • 高效性:能够进行实时的检测和比较
  • 可重复性:对图像进行旋转平移等操作后,仍能被检测到

特征点检测

角点定义

在一个以角点为中心的局部窗口内沿着 任意方向移动都会给亮度带来显著变化。

局部窗口内的亮度变化

某个以$(x,y)$为中心的局部窗口$𝑊$经过$(𝑢,𝑣)$的微小偏移后,窗口 内部亮度发生的变化量,可以用梯度近似$SSD$表示为

对图像 $I$ 进行一阶泰勒展开,

其中,$I_x,I_y$ 分别是图像在 $x,y$ 方向的梯度,可以用Sobel算子等来计算,将其代入上式,可以得到

如果将上式中的二阶矩矩阵的元素表示为:

那么,亮度变化可以近似为:

对该二阶矩矩阵的理解

水平方向的边缘

image-20241016185533481

竖直方向的边缘

image-20241016185613607

与特征值的关系

我们知道,二次型对应一个椭圆。

当 $A$ 和 $C$ 都非 $0$ 时,对曲面 $E$ 进行横切,形成一个椭圆如下:

椭圆的长短轴长度由二阶矩矩阵的特征值来决定,椭圆的角度由二阶矩矩阵的特征向量来决定:

image-20241016190132885 image-20241016190849937

特征值与角点检测

image-20241016191337583

概括来说,就是:

  • $\lambda_1$ 和 $\lambda_2$ 都很大,且相差不大,$\rightarrow$ 角点
  • $\lambda_1$ 远远大于 $\lambda_2$ $\rightarrow$ 水平方向的边
  • $\lambda_2$ 远远大于 $\lambda_1$ $\rightarrow$ 竖直方向的边
  • $\lambda_1$ 和 $\lambda_2$ 都很小,且相差不大,$\rightarrow$ 平坦区域
image-20241016191034434

Harris角点检测器

Harris角点响应函数

定义如下:

其中,$k$ 一般取 $[0.04,0.06]$

实际计算 $H$ 时还可以根据与中心的距离进行加权

用Harris角点响应函数检测

判据

  • $R>0$ ,角点
  • $R<0$ ,边
  • $|R|$ 很小,平坦区域

角点检测流程

  • 计算图像梯度,比如Sobel算子
  • 根据图像梯度为每个点计算二阶矩矩阵特征值或者Harris角点 响应函数
  • 寻找具有较大响应的点($\lambda_\min$ 或 $R$ 大于阈值)
  • 选择那些 $\lambda_\min$ 或 $R$ 是局部最大值的点作为关键点(非最大值抑 制)

角点检测性质

旋转不变性 (Rotation Invariance)

性质:Harris角点检测器对图像旋转具有不变性。这是因为角点的检测依赖于局部梯度的变化,而旋转不会改变局部结构的梯度大小或方向分布。因此,即使图像发生旋转,角点仍会被准确检测。

举例:如果图像旋转了90度,角点的位置仍然能准确检测。

平移不变性 (Translation Invariance)

  • 性质:Harris角点检测器对图像的平移有很好的不变性。如果图像整体平移,局部的梯度信息和结构不会发生改变,因此角点的位置相对于图像区域会保持不变。
  • 举例:图像中某个局部区域的角点不会因为图像平移而丢失。

局部抗噪性 (Local Robustness to Noise)

  • 性质:通过高斯滤波平滑图像,Harris角点检测器在一定程度上能够减少噪声的影响,但并不完全对噪声不变。局部抗噪性是基于图像平滑处理的效果。

但是,不具备下列性质

  1. 尺度不变性 (Scale Invariance)
    • 不足:Harris角点检测器不具备尺度不变性。当图像的尺度发生变化时,角点的检测结果会发生改变。原因在于其检测依赖于固定窗口的局部结构,而窗口大小不随尺度变化调整。因此,图像缩放会导致原来的角点被漏检或新角点被误检。
    • 举例:如果将图像缩小或放大,原本的角点可能会消失,或在不同位置检测到新的角点。
  2. 仿射不变性 (Affine Invariance)
    • 不足:Harris角点检测器不具备对仿射变换(如旋转加缩放、剪切等复杂变换)的不变性。仿射变换会改变图像中的几何结构,从而影响角点检测的结果。
    • 举例:在拍摄角度发生改变或者图像进行了仿射变换后,角点的检测结果可能不一致。
  3. 光照不变性 (Illumination Invariance)
    • 不足:Harris角点检测器对光照变化较为敏感。如果图像的光照条件发生明显变化(如亮度增加或减少、对比度变化等),角点的检测效果可能会受到影响。
    • 举例:在光照较暗或较亮的场景中,相同位置的角点可能会因为光照变化而检测不到

尺度不变特征变换 (Scale-Invariant Feature Transform, SIFT)

公式基础

在图像处理和信号处理领域,unit impulseGaussianLaplacian of Gaussian (LoG) 以及高斯差分 (DoG) 这些函数之间有紧密的联系。它们都涉及对图像的边缘、特征等信息的提取。以下是它们之间的联系和公式总结:

1. Unit Impulse 函数 (δ函数)

  • 定义:单位脉冲函数,记作 (\delta(x)),在数学上是一个理想化的函数,具有无限高的尖峰,并且在 (x = 0) 处为1,其积分为1。它的作用是挑出函数中特定点的值。
  • 公式
    [
    \delta(x) =
    \begin{cases}
    0, & x \neq 0 \
    \infty, & x = 0
    \end{cases}, \quad \int_{-\infty}^{\infty} \delta(x) dx = 1
    ]
  • 与其他函数的联系:可以看作是信号或图像在某点上的“瞬间激发”。Gaussian 函数和 LoG、DoG 都可以看作是对信号的平滑或差分,能够从信号中提取出更丰富的信息,而脉冲函数是这些操作的基础。

2. Gaussian 函数

  • 定义:高斯函数是一种平滑函数,广泛应用于图像模糊、降噪等操作。它通过卷积来平滑图像,并压制噪声,使得边缘更加明显。
  • 公式(一维高斯函数):
    [
    G(x) = \frac{1}{\sqrt{2\pi}\sigma} \exp\left(-\frac{x^2}{2\sigma^2}\right)
    ]
    二维高斯函数:
    [
    G(x, y) = \frac{1}{2\pi\sigma^2} \exp\left(-\frac{x^2 + y^2}{2\sigma^2}\right)
    ]
  • 与Unit Impulse的联系:高斯函数可以看作是单位脉冲函数在空间域中进行平滑处理的结果,通过调节参数 (\sigma) 来控制平滑程度。
  • 与LoG和DoG的联系:Gaussian 是构建 LoG 和 DoG 的基础。它通过卷积核的形式应用于图像平滑,之后可以用于提取边缘信息。

3. Laplacian of Gaussian (LoG)

  • 定义:Laplacian of Gaussian 是先对图像应用高斯平滑,然后计算其拉普拉斯算子,用于检测图像的边缘。Laplacian 是二阶微分算子,敏感于亮度快速变化的位置(即边缘)。
  • 公式
    结合高斯函数和拉普拉斯算子,二维 LoG 可以写作:
    [
    \text{LoG}(x, y) = \nabla^2 G(x, y) = \left(\frac{x^2 + y^2 - 2\sigma^2}{\sigma^4}\right) \exp\left(-\frac{x^2 + y^2}{2\sigma^2}\right)
    ]
    其中,(\nabla^2) 表示拉普拉斯算子,它是二阶导数的和:
    [
    \nabla^2 f(x, y) = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2}
    ]
  • 与Gaussian的联系:LoG 是对高斯函数先平滑图像,再用拉普拉斯算子来检测图像中的变化(如边缘)。通过高斯平滑抑制噪声,再使用拉普拉斯算子找到边缘位置。

4. 高斯差分 (Difference of Gaussian, DoG)

  • 定义:DoG 是通过对图像分别应用两个不同尺度的高斯模糊(不同 (\sigma) 值),然后计算它们的差分。DoG 是一种近似LoG的边缘检测方法,但计算更高效。
  • 公式
    给定两个不同尺度的高斯函数 (G(x, y, \sigma_1)) 和 (G(x, y, \sigma_2)),高斯差分为:
    [
    \text{DoG}(x, y) = G(x, y, \sigma_1) - G(x, y, \sigma_2)
    ]
    在频域上,可以近似为:
    [
    \text{DoG}(x, y) \approx k \cdot \nabla^2 G(x, y)
    ]
    其中 (k) 是常数。
  • 与Gaussian的联系:DoG 是两个不同尺度的高斯函数之差。它通过高效的差分操作,近似计算 LoG,从而实现快速边缘检测。

几个函数之间的联系总结:

  • Unit Impulse (δ函数) 是理想的“点”操作基础,在信号处理中常用于理论分析。
  • Gaussian (高斯函数) 是平滑滤波函数,通过模糊处理减小噪声,常作为卷积核进行信号平滑。
  • Laplacian of Gaussian (LoG) 是对高斯平滑后的图像进行二阶导数,找到图像中快速变化的区域(即边缘),可以更准确地检测边缘。
  • Difference of Gaussian (DoG) 是通过两个不同尺度的高斯函数求差,近似实现了 LoG 的边缘检测,但计算效率更高。

因此,Gaussian 是构建 LoG 和 DoG 的基础函数,而 LoG 和 DoG 都可以用来进行边缘检测,不同之处在于 LoG 是通过二阶导数直接计算边缘,而 DoG 是通过不同尺度的高斯函数相减来近似这种效果。

SIFT流程

SIFT(尺度不变特征变换,Scale-Invariant Feature Transform)是一种经典的计算机视觉算法,能够检测图像中的关键点,并生成不受尺度、旋转等影响的特征描述子。SIFT描述子的流程分为几个主要步骤,详细说明如下:

SIFT描述子的完整流程

1. 构建尺度空间 (Scale-Space Construction)

  • 目的:为了检测图像在不同尺度下的关键点,SIFT通过在图像的不同尺度下检测极值点,确保关键点对尺度变化具有不变性。
  • 步骤
    • 通过高斯核对原始图像进行不同程度的模糊处理,生成一系列具有不同模糊程度的图像,称为“高斯金字塔”。
    • 在每个尺度上,用差分高斯(Difference of Gaussian, DoG)图像来近似Laplacian算子,以此找到图像中的关键点。这些差分高斯图像是通过在不同模糊图像之间相减得到的。

2. 关键点检测 (Keypoint Detection)

  • 目的:通过在尺度空间中寻找局部极值点来检测关键点,确保这些点是图像中的显著特征。
  • 步骤
    • 在DoG图像的每一个像素,SIFT会在其相邻的尺度层次和空间上搜索局部极值点。
    • 如果一个像素点在它的8个邻域(同一尺度)以及上下两个尺度的相邻区域内都是最大或最小值,那么该像素点就被标记为潜在的关键点。

3. 关键点精确定位 (Keypoint Localization)

  • 目的:对初步检测出的关键点进行精确定位和过滤,排除那些低对比度的点和边缘响应较强的点(这些点通常不稳定)。
  • 步骤
    • 使用泰勒展开式对检测到的局部极值点进行精确拟合,以确定其亚像素级别的精确位置。
    • 计算该点的对比度值,如果低于设定的阈值,则将其去除。
    • 同时,通过主曲率的比值来判断该点是否是边缘点,若边缘响应较强也将其去除。

4. 关键点方向分配 (Orientation Assignment)

  • 目的:为每个关键点分配一个主方向,确保关键点描述子对图像的旋转具有不变性。
  • 步骤
    • 对每个关键点周围区域的图像梯度进行计算,包括梯度的幅度和方向。
    • 统计梯度方向的直方图,并在360度范围内划分36个方向区间,找到具有最多数量的方向区域(主方向),并将其分配给该关键点。若有多个方向的响应接近主方向,则该关键点可以拥有多个方向。

5. 关键点描述子生成 (Keypoint Descriptor Generation)

  • 目的:生成具有旋转、尺度不变性的特征描述子,用于后续的图像匹配和识别。
  • 步骤
    • 在每个关键点周围的区域内,取16x16的像素块作为窗口,计算每个窗口内的梯度信息,并将其划分为4x4的子块,每个子块为4x4像素。
    • 对每个子块计算梯度方向直方图,通常将360度分成8个方向区间,每个子块生成一个8维的方向直方图。
    • 对所有的4x4子块生成的8维直方图组合成128维的特征向量,称为SIFT描述子。

6. 特征向量归一化 (Descriptor Normalization)

  • 目的:对特征向量进行归一化处理,增强其对光照变化和对比度变化的鲁棒性。
  • 步骤
    • 将每个描述子的128维向量进行归一化,使其总长度为1(通常使用L2范数)。
    • 通过归一化,SIFT描述子对光照变化具有更好的不变性。对于梯度幅度较大的值会进行截断(通常将最大值截断到0.2),然后再进行一次归一化。

总结

SIFT描述子生成的主要流程包括:

  1. 构建尺度空间:使用高斯模糊和差分高斯图像检测图像的多尺度特征。
  2. 关键点检测:找到图像中的局部极值点作为初步的关键点。
  3. 关键点精确定位:精确确定关键点的位置并过滤掉不稳定点。
  4. 方向分配:为每个关键点分配一个或多个主方向,确保旋转不变性。
  5. 描述子生成:通过关键点周围的梯度方向信息生成128维的特征描述子。
  6. 归一化处理:对特征向量进行归一化,以提升其对光照和对比度变化的鲁棒性。

SIFT描述子生成的整个过程旨在确保关键点和描述子具有尺度、旋转、平移等不变性,广泛应用于图像匹配、物体识别等领域。