本文简单概括各种算法的提出背景及opencv实现,对具体原理不做讨论
一般而言,一个物体的角点最能够代表物体的特征,所以所谓的特征检测又叫角点(Corner)检测
harris是最早提出的特征提取算法:
opencv实现如下:
dst=cv2.cornerHarris(gray,blockSize=2,ksize=5,k=0.04)
# blockSize -检测的临点数
# •ksize - sobel边缘检测的核
# •k - 目标函数的一个参数(一般取值较小)
sift:harris Corner算法能够解决旋转不变性问题,但不能解决尺度变化问题,由此背景提出了sift算法
opencv实现如下:
sift=cv2.xfeatures2d.SIFT_create()
kp,des=sift.detectAndCompute(gray,None) #计算描述子
其中kp指关键点 des指关键点的特征描述
surf:尽管sift的计算效果较好,但是计算速度较慢 surf(speed up robust features)算法是一个加速算法
速度是sift算法的3倍。
opencv实现如下:
# 400 是Hessian矩阵的阈值,阈值越大能检测的特征就越少
surf=cv2.xfeatures2d.SURF_create(400)
# None为mask参数
kp,des=surf.dete
一般而言,一个物体的角点最能够代表物体的特征,所以所谓的特征检测又叫角点(Corner)检测
harris是最早提出的特征提取算法:
opencv实现如下:
dst=cv2.cornerHarris(gray,blockSize=2,ksize=5,k=0.04)
# blockSize -检测的临点数
# •ksize - sobel边缘检测的核
# •k - 目标函数的一个参数(一般取值较小)
sift:harris Corner算法能够解决旋转不变性问题,但不能解决尺度变化问题,由此背景提出了sift算法
opencv实现如下:
sift=cv2.xfeatures2d.SIFT_create()
kp,des=sift.detectAndCompute(gray,None) #计算描述子
其中kp指关键点 des指关键点的特征描述
surf:尽管sift的计算效果较好,但是计算速度较慢 surf(speed up robust features)算法是一个加速算法
速度是sift算法的3倍。
opencv实现如下:
# 400 是Hessian矩阵的阈值,阈值越大能检测的特征就越少
surf=cv2.xfeatures2d.SURF_create(400)
# None为mask参数
kp,des=surf.dete