Harris角点检测与SIFT算法:旋转不变性与尺度不变性特征提取详解
Harris 角点检测具备旋转不变特性,图片即便发生旋转,我们依然能够找到相同的角点。很显然,图像发生旋转之后,角点依旧是角点。倘若我们对图像进行缩放操作呢?此时角点或许就不再是角点了。以下图作为示例,在一幅小图中,使用一个小窗口能够检测到一个角点,然而若图像被放大,再使用相同的窗口就无法检测到角点了。

2004 年,D.Lowe 提出了一个新算法,即尺度不变特征变换(SIFT)。此算法能够帮助我们提取图像中的关键点,同时还能计算这些关键点的描述符。
SIFT 算法主要由四步构成:
(1)空间尺度极值检测
(2)关键点定位
(3)为关键点指定方向参数
(4)关键点描述符
现在让我们来看看 OpenCV 中关于 SIFT 的函数。
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('jiheti.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#创建sift检测器
sift =cv2.xfeatures2d.SIFT_create()
kp,res = sift.detectAndCompute(gray,None)
img = cv2.drawKeypoints(img,outImage=img,keypoints=kp, flags=cv2.绘制比赛标志并绘制丰富的关键点)
plt.imshow(img)
plt.show()