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角点检测