SIFT的关键点检测和描述,但它相对较慢,人们需要更加快速的版本,所以2006年引入了一种名为SURF的新算法, 顾名思义,它是SIFT的加速版本.
作为尺度不变特征变换(SIFT)算法的加速版,SURF算法在适中的条件下完成两幅图像中物体的匹配基本实现了实时处理,其快速的基础实际上只有一个——积分图像haar求导.
SURF算法原理: 1.构建Hessian矩阵构造高斯金字塔尺度空间 2.利用非极大值抑制初步确定特征点 3.精确定位极值点 4.选取特征点的主方向 5.构造surf特征点描述算子
import cv2 import numpy as np img = cv2.imread("img/mycat.png") gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 阈值越高,能识别的特征就越少,因此可以用试探法来得到最优检测 surf = cv2.xfeatures2d.SURF_create(8000) keypoints, descriptor = surf.detectAndCompute(gray, None) # SURF采用快速Hessian算法检测关键点,SURF提取特征。 img = cv2.drawKeypoints(image=img, outImage=img, keypoints=keypoints, flags=4, color=(51, 163, 236)) print(surf.descriptorSize()) cv2.imshow('keypoints', img) cv2.waitKey(0) cv2.destroyAllWindows()https://segmentfault.com/a/1190000015712532
