SIFT(Scale-invariant feature transform, 尺度不變特徵轉換)特徵_SIFT

來源:互聯網
上載者:User

SIFT演算法的全稱是Scale-invariant feature transform,尺度不變特徵轉換,是一種不隨映像尺度旋轉變化而變化的特徵,因此SIFT特徵不會隨著映像的放大縮小,或者旋轉而改變,同時由於在提取特徵時做的一些特殊處理,使得SIFT特徵對於光照變化也有比較強的適應性。以下是演算法流程: 1 構建尺度空間

將原始映像執行多次上下採樣得到多幅尺度不同的映像如圖1所示,每幅映像的內容相同但是長寬均為上一尺度的一半。將這些圖片按照由大到小的順序自底向上疊在一起形成一種類似金字塔的結構。Tips:金字塔的層數可以根據實際情況自定,由於上採樣會加大記憶體的消耗和計算量,因此對於較大的圖片通常不要做上採樣處理。

圖1 對原始圖片執行多次降採樣後形成的尺度空間

對每個尺度空間的圖片執行5次高斯變換(這裡的層數可以自定),將其變成6層(從-1到4),-1層為該尺度空間的原始映像,按照公式1計算每個尺度空間中的映像的高斯變換參數。

σ(o,s)=σ02o+s/S                     公式1

公式1中 σ0 為1.6(這應該是一個經驗值),o為當前的尺度,s為映像在當前尺度中的層,S為每個尺度空間的層數。假設在處理每一個尺度空間時,輸入的映像都是經過高斯平滑處理過的,其值 σn=0.5 。在David G. Lowe的論文中,由於金字塔最底部的尺度是通過插值(上採樣)得到的,因此對於這一層的處理 σn=1.0 。因此在經過調整之後,實際得到的 σ(o,s) 如公式2所示。

σ(o,s)=(σ02o+s/S)2−σ2n−−−−−−−−−−−−−√                      公式2

通過上述計算我們可以得到圖2所示的尺度空間中的多層映像。

圖2 對一個特定尺度的映像執行多次 σ 不同的高斯模糊得到的結果

到這一步,基本上算是建立起了尺度空間,SIFT演算法之所以對映像的尺度變化具有不變性,原因也就在於這個尺度空間,但是尺度空間也並非萬能的,因為在SIFT演算法的執行過程中,建立起來的尺度空間範圍有限,只能包含大部分映像的尺度,但是對於那些尺度遠超過範圍的的映像特徵,SIFT也不能夠保證其尺度不變性。 2 尋找極值點

2002年Mikolajczyk在詳細的實驗比較中發現尺度歸一化的高斯拉普拉斯函數的極值同其他方法相比能夠產生最穩定的映像特徵,而高斯差分函數與尺度歸一化的高斯拉普拉斯函數十分接近。在上一步中已經對所有圖片執行了高斯變換,在這裡只需要對同尺度內相鄰的兩幅高斯圖片求差,就可以得到差分高斯圖片,為了更加形象的表述,將差分操作按照圖3來表示:

圖3 計算高斯差分映像的示意圖

對每一個尺度空間執行相同的操作,最後可以得到一個與之前的高斯金字塔類似的差分高斯金字塔。在得到了差分高斯金字塔之後,就可以搜尋極值點,搜尋極值點的方式很簡單,將每一個尺度空間中的高斯差分映像堆疊到一起形成一個三維的資料集合,不算邊緣的像素點,每個像素點都會有26個像素與之相鄰,若該像素點在這一共27點中最大或者最小就記錄該點的資訊將其作為極值點,計算步驟可以用圖4的形式來描述,若黑點在所有灰點中像素值最大或者最小,則將黑點暫訂為極值點。

圖4 在差分高斯尺度空間中搜尋和定位極值點

3 篩選極值點 3.1 刪除位移較大和響應值較小的極值點

通過比較27個像素點得到的極值點並非真正意義上的極值點,這些點是在離散的空間中選取的。但是真正的極值點可能並不是選取出來的這些,圖5描述了在二維的空間中離散極值點和連續極值點之間的關係。

圖5 二維的空間中離散極值點和連續極值點之間的關係

由於現在處理的是一個三維的離散資料集合,需要對其求二階Taylor展開,並令展開式倒數為0,得到公式3。

D(x^)=D+∂DT∂x+12x^∂2D∂x2=D+12∂2D∂x2x                     公式3

因為處於一個三維的資料集合中, (x,y,s) 是三維向量。當倒數為0時,如果插值得到的中心 (x,y,s) 與之前的離散中心的位移在某個分量上超過0.5,說明插值中心已經位移到了它鄰近的中心點上,這樣的點要刪除,同時如果 |D(x)|<0.03 時,說明這樣的點響應較低,不穩定也要刪除。 3.2 刪除邊緣效應點

由於差分高斯取出的極值點在映像的邊緣處往往會有比較大的響應,這些點很容易受到雜訊的幹擾而變得不穩定,通過步驟3.1得到的點存在著許多幹擾需要進一步篩選,因此還要使用Hessian矩陣刪除邊緣點。使用Hessian矩陣來檢測我們之前找到的極值點的原理是,雖然高斯差分響應在橫跨邊緣的地方會有很大的主曲率,但是在垂直邊緣的方向的主曲率卻較小,由於Hessian矩陣的特徵值和差分高斯方程的主曲率成正比,所以可以通過Hessian矩陣來求解主曲率。Hessian矩陣的表示如公式4所示。

H(x,y)=[Dxx(x,y)Dxy(x,y)Dxy(x,y)Dyy(x,y)]                     公式4

在計算過程中可以不求Hessian矩陣的特徵值,因為這裡只關注特徵值的比例,對於邊緣點來說由於在兩個方向上的主曲率差別較大,因此也會有較大的比值。令 α=λmax , β=λmin ,有公式5、6所示的結果。

Tr(H)=DXX+DYY=α+β                     公式5 Det(H)=DxxDyy−(Dxy)2=αβ                     公式6

因此令 γ 為 α/β ,可以用公式7來計算:

Tr(H)2Det(H)=(α+β)2αβ=(γ+1)2γ=γ+1γ+2                     公式7

當兩個方向的主曲率相同時 Tr(H)2/Det(H)  最小,隨著主曲率大小的差距的變大,( Tr(H)2/Det(H) 會逐漸層大。在Lowe的論文中,選擇的 γ 的閾值為10。當對所有的極值點進行篩選之後,檢測通過的這些點就是最終的關鍵點。 4 計算特徵點的主方向

這一步將會依次處理每個特徵點提取其主方向。提取主方向的目的主要在於實現映像的旋轉不變性。由於知道了每個特徵點所在的尺度空間,很容易就可以得到這一尺度所在的高斯映像,使用 L(x,y) 表示尺度為 σ 的高斯映像。在高斯映像上,以特徵點為中心,對半徑為 3×1.5σ 的地區求取映像的梯度和幅值,計算公式如公式8、9所示:

m(x,y)=(L(x+1,y)−L(x−1,y))2+(L(x,y+1)−L(x,y−1))2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−√           公式8 θ(x,y)=tan−1(L(x+1,y)−L(x−1,y)L(x,y+1)−L(x,y−1))                     公式9

在計算時將梯度方向的0~360度的範圍分成36份執行計算,得到一個包含36個柱的長條圖,為了便於顯示圖6隻顯示了其中的8個柱:

圖6 在高斯圖片上求半徑為 3×1.5σ 的地區求取映像的梯度和幅值,並計算長條圖

主方向不一定只有一個,在選擇主方向時,只要幅值達到了最高值的80%,並且大於與之相鄰的兩個方向的幅值就可以將其確定為主方向。Tips:對於一些比較大的映像會提取出數以千計的特徵,這些特徵包含的地區會有很多覆蓋,因此,在計算主方向之前,可以提取出所有的尺度的所有高斯映像的每個像素點的梯度,這樣可以大大地降低運算量,不過這麼做的缺點是會佔用更多的記憶體。 5 將特徵點變成一個128維的向量

這一步將會把所有的特徵點的各個主方向轉換成一個128維的向量,已經知道了所有特徵點的座標以及當前的尺度空間和當前高斯變換的參數 σ ,選定與特徵點相鄰的 Bp×Bp 個子領域,每個子領域的尺寸為 mσ ,取 m=3 、 Bp=4 (應該也是經驗值),考慮到使用雙線性插值和旋轉,計算時的選取的地區為 (mσ(Bp+1)2√)2 。與求取特徵點的主方向類似,求每個子領域裡的方向,不過這一次將360度範圍劃分成了8組,每組的中心間隔是45度。在求解時需要注意,由於是針對主方向來求解,還要將角度旋轉到主方向上去,以增強運算元的旋轉不變性。採用高斯加權的方式給不同位置的子領域設定權值。最終會得到一個類似圖7的向量集合,剛好是 4×4×8=128 維的向量。

圖7 在高斯映像上對 (mσBp)2 的地區求取方向和幅值得到128維的向量

在計算後還需要對得到的向量進行歸一化處理,在歸一化處理後對於值大於0.2的分量進行截斷(大於0.2的值,取0.2),這麼做的目的是為防止光照的影響。在截斷之後還要再做一次歸一化,最後為了方便儲存和計算,將浮點型的分量轉換成0~255之間的一個8位的無符號類型變數來儲存。最終可以得到圖8所示的實驗結果。

圖8 對原始映像執行SIFT得到的結果(只顯示了50個特徵點)
圖片來源: Oxford Building 5k Database
:

[1] David G. Lowe. Object recognition from local scale-invariant features. Computer vision, September 1999, vol.2, pp. 1050-1157
[2] David G. Lowe. Distinctive Image Features from Scale-Invariant Keypoints. International Journal of Computer Vision, November 2004, Volume 60 Issue 2, pp. 91-110


from: http://www.duzhongxiang.com/sift_algorithm/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.