opencv中SiftDescriptorExtractor所做的SIFT特征向量提取工作簡單分析


SiftDescriptorExtractor對應於SIFT算法中特征向量提取的工作,通過他對關鍵點周圍鄰域內的像素分塊進行梯度運算,得到128維的特征向量。具體有如下幾個操作:

0、首先,我們假設在之前關鍵點提取的步驟中,我們對一個三角形提取關鍵點,檢測到其中一個關鍵點的坐標為三角形的一個角(如下面用紅圈圈出的),如下圖

image_thumb12

放大看,假設檢測到該關鍵點的方向如下圖:

image_thumb4

1、將關鍵點周圍的像素旋轉到一個統一的方向,以保證方向不變性。如下圖

image_thumb11

2、將這些像素分成4X4的小塊

image_thumb9

對每個格子進行分析,將格子中的像素計算梯度,映射到8個方向上,對於每一個格子,可以得到一個8維的向量,對於一個關鍵點周圍16個格子,則得到了16X8=128維的向量,這就是一個關鍵點特征向量。

image_thumb10

使用舉一個實際的例子分析:

用opencv對一個三角形進行特征點檢測,得到如下結果:

image_thumb18

提取特征向量,得到如下結果:

image_thumb19

這幅圖的每一行就是一個128維的特征向量,維度用0-255表示。黑一些就是小,白就是大。

粗略可以看出,這些特征點排布較為相似,因為都是角

再來一個:

image_thumb20

image_thumb23


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM