SIFT算子是计算机视觉领域最强大的特征点检测和表达的方法之一。即使是深度学习时代,SIIFT算子依然被广泛运用于计算机视觉领域的各个方面。SIFT算子包括特征点检测和特征点表达两个部分。
一、特征点检测:
(1)构建高斯差分金字塔
如上图所示,所谓高斯差分金字塔就是先用不同尺度的高斯函数构建高斯金字塔,之后在同层之间进行不同尺度高斯图像的差分。值得一提的是,在构建金字塔的过程中,会对上一层的图像进行下采样,下一层的第一张图像由上一层的倒数第三张图像间隔采样而来。
(2)极值点检测
做完高斯差分金字塔,我们获得不同尺度的差分图像,这里的差分其实就是梯度的一种近似表达。在这些图像中,我们如何寻找特征点呢?一个区域内,导数最大的极值点就是我们要找的特征点。所以对于这些差分图像,我们认为如果一个点在上下两张图象和它所在图像的(8+9+9)领域内取得极值,那么,我们认为这个点就是极值点。这里的(8+9+9)包括上下两张图像的9领域和它本身的8领域。
(3)关键点精确定位
上文我们找到了极值点,但是这些极值点未必是真正的关键点,所以我们需要对这些关键点进行精确定位。这里我们采用插值方法。在这里,我们采用泰勒展开的方式进行插值:
(4)去除不稳定的关键点