OpenCV SIFT检测关键点
生活随笔
收集整理的这篇文章主要介绍了
OpenCV SIFT检测关键点
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
SIFT原理:
-
尺度空间极值检测:构建高斯金字塔,高斯差分金字塔,检测极值点。
-
关键点定位:去除对比度较小和边缘对极值点的影响。
-
关键点方向确定:利用梯度直方图确定关键点的方向。
-
关键点描述:对关键点周围图像区域分块,计算块内的梯度直方图,生成具有特征向量,对关键点信息进行描述。
在OpenCV中利用SIFT检测关键点的流程如下所示:
1.实例化sift
sift = cv.xfeatures2d.SIFT_create()2.利用sift.detectAndCompute()检测关键点并计算
kp,des = sift.detectAndCompute(gray,None)参数:
- gray: 进行关键点检测的图像,注意是灰度图像
返回:
- kp: 关键点信息,包括位置,尺度,方向信息
- des: 关键点描述符,每个关键点对应128个梯度信息的特征向量
3.将关键点检测结果绘制在图像上
cv.drawKeypoints(image, keypoints, outputimage, color, flags)参数:
- image: 原始图像
- keypoints:关键点信息,将其绘制在图像上
- outputimage:输出图片,可以是原始图像
- color:颜色设置,通过修改(b,g,r)的值,更改画笔的颜色,b=蓝色,g=绿色,r=红色。
- flags:绘图功能的标识设置
1.cv2.DRAW_MATCHES_FLAGS_DEFAULT:创建输出图像矩阵,使用现存的输出图像绘制匹配对和特征点,对每一个关键点只绘制中间。
2.cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG:不创建输出图像矩阵,而是在输出图像上绘制匹配对。
3.cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS:对每一个特征点绘制带大小和方向的关键点图形。
4.cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS:单点的特征点不被绘制。
总结
以上是生活随笔为你收集整理的OpenCV SIFT检测关键点的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: OpenCV Shi-Tomasi角点检
- 下一篇: OpenCV Fast角点检测