SIFT特征提取
本文主要參考:
Richard Szeliski 《Computer Vision: Algorithms and Applications》
-牧野-《 Sift算子特征點提取、描述及比對全流程解析》-- 位址:https://blog.csdn.net/dcrmg/article/details/52577555
本人在學習虹膜識别技術的過程中,需要使用SIFT算子提取虹膜圖像的特征,而SIFT作為經典、有效的圖像特征提取方法,其中的思想和方法十分值得借鑒。是以希望通過本文分享學習過程中,總結的SIFT算法主要步驟和思路。
1. SIFT簡介
我們人類可以快速地從不同地角度、距離拍攝的圖像中分辨出圖中物體是否相同。而這個能力源于我們的大腦能夠分辨圖像中物體的特征,能夠基于物體的形狀、顔色、紋理等特征是否比對迅速作出判斷。當我們使用算法對圖像對進行比對時,思路也是通過描述圖像的特征資訊以及比對這些特征資訊完成的,而SIFT算法就是一個特征檢測和特征描述的過程。
SIFT算法,由David G.Lowe教授在1999年提出,全稱是Scale Invariant Feature Transform,是以該算法最突出的特點就是能夠在不同尺度空間上查找關鍵點,并計算其大小、方向和尺度等資訊。除此,SIFT算法還具備以下特點:
- 提取的特征對旋轉、尺度、亮度變化具有不變形,以及對視角和噪聲變化具有穩定性。(在虹膜識别中,由于人眼圖像采集過程中,存在光線、拍攝角度等環境因素的變化導緻同一人的人眼圖像也會出現旋轉、尺度和亮度等變化,是以要求算法對這些變化應該具有魯棒性。)
- 提取的特征資訊豐富,能夠快速用于圖像比對
- 能夠對少量物體提取大量特征向量(虹膜識别中,由于我們僅使用虹膜的紋理特征進行識别,是以需要對虹膜提取更多的特征用于比對提高準确率。)
- 具備可拓展性,例如與其他形式特征向量聯合使用(虹膜識别中,将SIFT算法提取的特征向量進行了序編碼後再進行特征比對。)
2. SIFT主要思路和步驟
SIFT算法提取特征主要包括兩個步驟:特征點檢測和特征點描述。首先提取圖像中關于尺度、旋轉和亮度等保持不變的特征點,然後對這些特征點資訊進行描述,生成可以描述特征點方向資訊和紋理資訊的特征向量。對于不同的物體使用SIFT算法生成的特征向量應當具有較大的差異,是以隻要計算圖像對的特征向量之間的距離,便可以判斷兩圖像是否拍攝同一物體。
2.1 特征點檢測
“點特征可以用來尋找一個不同圖像中的對應位置的稀疏集合,這通常是計算錄影機姿态的一個前期步驟,而錄影機姿态計算又是使用立體視覺比對計算稠密對應集合的一個前提…關鍵點的一個重要優點是,它們甚至能夠在出現擁擠(遮擋)、大的尺度和方向變化的情況下很好地做比對。”
SIFT提取特征點的方法是主要使用高斯金字塔和高斯差分金字塔,希望了解具體方法的讀者可以參考以下博文:
《Sift中尺度空間、高斯金字塔、差分金字塔(DOG金字塔)、圖像金字塔》
位址:https://blog.csdn.net/dcrmg/article/details/52561656
這裡僅記錄下個人了解的相應方法的作用。
對于高斯金字塔,同一組不同層的圖像,采用了成比例的平滑因子參數σ,這些圖像是為了模拟由遠到近得到的不同模糊程度下的圖像。而不同組的圖像是對上一組圖像降采樣得到的,具有不同的尺寸,是以這些圖像是利用一張圖像資訊模拟不同尺度空間下的圖像。
對于高斯差分金字塔,是通過同組下一層圖像減去上一層圖像像素的方法得到不同模糊程度以及不同尺度下的特征(對圖像進行歸一化後可以明顯觀察到),其中某些特征在所有圖像中都存在,即具有不變性。
高斯差分金字塔處理後的圖像由于處理過程中進行了降采樣處理,是以不同尺寸的圖像所具備的特征點存在坐标不對應的問題,需要對特征點針對不同尺度在原尺寸上進行精确定位,具體方法參考如下博文:
《特征點比對——SIFT算法詳解》
位址:https://blog.csdn.net/lhanchao/article/details/52345845
2.2 特征點描述
特征點描述是希望通過一種統一的資料方式,例如特征向量或者特征矩陣等,對圖像中特征點方向、紋理等資訊進行描述,便于後續不同圖像間進行比對和比較。SIFT算法采用的特征點描述方法可以參考以上提到的參考文章。
由于SIFT算法的特征點描述方法考慮的是關鍵點領域内的梯度資訊,既包含了梯度方向資訊也包含了這些梯度方向的幾何分布關系資訊,這相當于對圖像關鍵點處紋理資訊進行了描述。由于關鍵點的提取考慮了尺度變化以及模糊程度變化,是以在這些關鍵點的資訊同樣具備不變性。
生成了包含關鍵點資訊的128維特征向量後,既可以直接計算不同圖像關鍵點的特征向量之間的距離進行比對,也可以将該特征向量用于後續其他特征提取和特征比對方法,例如虹膜識别中将該向量進行了後續的序特征提取,進一步提高了特征的描述能力,這展現了SIFT算法的可拓展性。
本文僅作為學習筆記交流分享用。由于本人水準有限,文章可能出現纰漏,歡迎大家進行交流指正。謝謝閱讀!