算法介紹
SIFT由David Lowe在1999年提出,在2004年加以完善 。SIFT在數字圖像的特徵描述方面當之無愧可稱之為最紅最火的一種,許多人對SIFT進行了改進,誕生了SIFT的一系列變種。SIFT已經申請了專利。
SIFT特徵是基於物體上的一些局部外觀的興趣點而與影像的大小和鏇轉無關。對於光線、噪聲、微視角改變的容忍度也相當高。基於這些特性,它們是高度顯著而且相對容易擷取,在母數龐大的特徵資料庫中,很容易辨識物體而且鮮有誤認。使用SIFT特徵描述對於部分物體遮蔽的偵測率也相當高,甚至只需要3個以上的SIFT物體特徵就足以計算出位置與方位。在現今的電腦硬體速度下和小型的特徵資料庫條件下,辨識速度可接近即時運算。SIFT特徵的信息量大,適合在海量資料庫中快速準確匹配。
算法的特點
SIFT算法具有如下一些特點:
1.SIFT特徵是圖像的局部特徵,其對鏇轉、尺度縮放、亮度變化保持不變性,對視角變化、仿射變換、噪聲也保持一定程度的穩定性;
2. 區分性(Distinctiveness)好,信息量豐富,適用於在海量特徵資料庫中進行快速、準確的匹配;
3. 多量性,即使少數的幾個物體也可以產生大量的SIFT特徵向量;
4.高速性,經最佳化的SIFT匹配算法甚至可以達到實時的要求;
5.可擴展性,可以很方便的與其他形式的特徵向量進行聯合。
特徵檢測
SIFT特徵檢測主要包括以下4個基本步驟:
尺度空間極值檢測:
搜尋所有尺度上的圖像位置。通過高斯微分函式來識別潛在的對於尺度和鏇轉不變的興趣點。
1.尺度空間極值檢測:
搜尋所有尺度上的圖像位置。通過高斯微分函式來識別潛在的對於尺度和鏇轉不變的興趣點。
2. 關鍵點定位
在每個候選的位置上,通過一個擬合精細的模型來確定位置和尺度。關鍵點的選擇依據於它們的穩定程度。
3. 方向確定
基於圖像局部的梯度方向,分配給每個關鍵點位置一個或多個方向。所有後面的對圖像數據的操作都相對於關鍵點的方向、尺度和位置進行變換,從而提供對於這些變換的不變性。
4. 關鍵點描述
在每個關鍵點周圍的鄰域內,在選定的尺度上測量圖像局部的梯度。這些梯度被變換成一種表示,這種表示允許比較大的局部形狀的變形和光照變化。
特徵匹配
SIFT特徵匹配主要包括2個階段:
第一階段:SIFT特徵的生成,即從多幅圖像中提取對尺度縮放、鏇轉、亮度變化無關的特徵向量。
第二階段:SIFT特徵向量的匹配。
SIFT特徵的生成一般包括以下幾個步驟:
1. 構建尺度空間,檢測極值點,獲得尺度不變性。
2. 特徵點過濾並進行精確定位。
3. 為特徵點分配方向值。
4. 生成特徵描述子。
以特徵點為中心取16×16的鄰域作為採樣視窗,將採樣點與特徵點的相對方向通過高斯加權後歸入包含8個bin的方向直方圖,最後獲得4×4×8的128維特徵描述子。示意圖如下:
當兩幅圖像的SIFT特徵向量生成以後,下一步就可以採用關鍵點特徵向量的歐式距離來作為兩幅圖像中關鍵點的相似性判定度量。取圖1的某個關鍵點,通過遍歷找到圖像2中的距離最近的兩個關鍵點。在這兩個關鍵點中,如果最近距離除以次近距離小於某個閾值,則判定為一對匹配點。
SIFT特徵匹配的例子: