第一步:构造原始图像尺度空间
利用高斯滤波,通过改变方差来得到不同尺度的图像。
,一般取模板中心坐标为(0,0)构造滤波矩阵。方差越大越模糊,一般来说距离为的权重为0。
第二步:构造高斯差图像
将相邻尺度的图像相减,构造高斯差图像。得到的结果提取出了边界信息。
这里构建的应该是高斯-差分金字塔模型,也就是不断隔行隔列下采样,先构造出金字塔模型,再进行作差,得到DOG金字塔。
第三步:搜索极值点
对于金字塔某一层,在高斯差尺度空间中,对于某个像素点,在其邻域空间(26个临接点)中搜索极大(小)值。(这里的邻域空间是由相邻的尺度图像叠加构成的)
第四步:去噪
去除对比度小的点和边缘的点(DOG边缘效应较强)。其中极值点的精确定位涉及到了比较复杂的插值法,边缘效应消除的方法也比较麻烦。应该不会做考试要求。
第五步:方向表示
计算每个极值点的方向和梯度,把极值点方向规整到8个bin的方向中,也就是得到左、右、上、下、左上、左下、右上、右下8个方向的直方图,反正切函数的值域为[-pi/2,pi/2],将其规整到[0,2pi]
得到的结果是很多个箭头,箭头的方向是极值点的方向,长度是极值点的梯度。
第六步:sift特征向量
对于每个极值点,取以它为中心16*16的窗口,再把窗口划分为16个4x4的子块,在每个子块中,先计算每个像素点的梯度方向,把它们放入对应的bin中,每个bin的值为这些像素点的梯度模的和,再将和乘以当前极值点的,乘以1.5,每个bin就得到一个大小,每个子块得到8个值。
一共得到了16X8 = 128个值,它们组成了极值点的sift特征向量。