行列式的值-4×4行列式计算基本公式


SIFT算法:图像特征提取的经典之作

SIFT(Scale-invariant feature transform),即尺度不变特征变换,是一种传统的图像特征提取算法。这一算法由David G. Lowe于1999年首次提出并持续完善,最终于2004年在IJCV期刊上发表。

论文背景及算法特点

论文名为《Distinctive Image Features from Scale-Invariant Keypoints》。SIFT算法基于局部兴趣点进行特征提取,其最大的特点就是对于图像的尺度和旋转具有不变性,同时对于光照、噪声等因素也展现出良好的鲁棒性。

专利历程与开源发展

SIFT算法的专利申请始于2000年,经过20年的时光,于2020年3月专利权到期,随后opencv等开源平台重新集成了这一算法。

近两年虽然深度学习研究火热,但仍有研究者重新审视并学习经典算法,SIFT便是其中之一。

SIFT算法的四个主要步骤

  1. 尺度空间极值检测:利用高斯差分函数在所有尺度上搜索图像位置,识别出尺度和方向不变的潜在兴趣点。这一步骤旨在确定哪些区域在各种尺度下都是极值点。
  2. 关键点定位:在每个候选位置上,通过一个精细的模型确定关键点的具置和尺度。这一步骤的目的是选择那些稳定程度较高的点作为关键点。
  3. 方向分配:基于局部图像的梯度方向,为每个关键点赋予一个或多个方向。这使得后续的图像操作都基于关键点的方向、尺度和位置进行,从而实现了对图像的方向和尺度的不变性。
  4. 关键点描述符生成:在每个关键点的邻域内,根据选定的尺度计算局部图像梯度。这些梯度被转换成一个表示形式,允许图像发生一定的形状变形和光照变化。

下面将详细介绍这四个步骤的实现过程及原理。

构建高斯金字塔并利用高斯核进行尺度空间的构建。每个尺度层都包含一组经过不同尺度处理后的图像。不同组的特征金字塔通过隔点取样的方式获得。

在每个组内,通过两两做差构建高斯差分金字塔。这个差分金字塔将用于检测极值点。

在高斯差分金字塔中,我们通过比较每个3x3x3立方体中心点与其他26个点的大小关系来确定极值点。如果中心点在比较中表现出最大或最小特性,则该点被视为极值点。

所检测到的极值点是“离散空间的极值点”,它们的位置和尺度需要进一步精确确定。通过泰勒展开近似的方法可以找到连续空间的极值点并去除低对比度和不稳定的边缘点。

边缘效应的去除通过Hassian矩阵的特征值实现。Hassian矩阵是二阶偏导数矩阵。当某点的边缘特征明显时,其垂直于边缘的方向上值变化较大(对应于Hassian矩阵中较大的特征值),而沿边缘方向上值变化较小(对应于较小的特征值)。通过比较Hassian矩阵中较大和较小特征值的比例,可以去除边缘效应。

对于每个确定的极值点,统计其所在的高斯图像尺度的圆内所有像素的梯度方向和梯度幅值。这些信息被用来生成直方图,其中峰值方向代表主方向,任何大于峰值80%的方向被视为辅方向。

最后一步是计算特征点的描述符。在特征点所在的局部区域内,将其邻域划分为4x4个子区域,并统计每个子区域内的梯度信息。每个子区域的梯度信息包含8个方向的统计数据,因此每个特征点最终生成一个128维的特征描述符。

通过以上步骤,我们得到了SIFT算法的核心流程和关键技术细节。这一算法为图像处理领域带来了性的变化,至今仍在许多应用中发挥着重要作用。