图像处理理论(五)——SIFT
SIFT
概述
SIFT算法是CV領域在DL進入之前的20年中,最重要的成果。
尺度不變特征轉換(Scale-invariant feature transform或SIFT)是一種電腦視覺的算法用來偵測與描述影像中的局部性特征,它在尺度空間中尋找極值點,并提取出其位置、尺度、旋轉不變量,此算法由David Lowe在1999年所發表,2004年完善總結。
注:David G. Lowe,英屬不列顛哥倫比亞大學(UBC)本科+斯坦福博士(1985)。UBC教授,Google資深科學家。
個人主頁:
http://www.cs.ubc.ca/~lowe/
他在個人主頁中提供了一份CV界知名的公司或研究機構的名單:
http://www.cs.ubc.ca/~lowe/vision.html
尺度空間
尺度空間(scale space)思想最早是由Iijima于1962年提出的,后經witkin和Koenderink等人的推廣逐漸得到關注,在計算機視覺領域使用廣泛。
尺度空間理論的基本思想是:在圖像信息處理模型中引入一個被視為尺度的參數,通過連續變化尺度參數獲得多尺度下的尺度空間表示序列,對這些序列進行尺度空間主輪廓的提取,并以該主輪廓作為一種特征向量,實現邊緣、角點檢測和不同分辨率上的特征提取等。
尺度空間方法將傳統的單尺度圖像信息處理技術納入尺度不斷變化的動態分析框架中,更容易獲取圖像的本質特征。尺度空間中各尺度圖像的模糊程度逐漸變大,能夠模擬人在距離目標由近到遠時目標在視網膜上的形成過程。
尺度空間的應用實例就是圖像金字塔。
尺度空間的視覺不變性
視覺不變性是對尺度空間算子提出的一種要求:
1.對圖像的分析不受圖像的灰度水平和對比度變化的影響,即滿足灰度不變性和對比度不變性。這主要體現了物體的光照變化。
2.對圖像的分析和圖像的位置、大小、角度以及仿射變換無關,即滿足平移不變性、尺度不變性、歐幾里德不變性以及仿射不變性。這主要體現了物體的空間位置變化。
DOG & LOG
DOG(Difference of Gaussians)和LOG(Laplacian of Gaussian)是尺度空間常用的兩種算子。
DOG的定義如下:
Γσ1,σ2(x)=I?1σ12π ̄ ̄ ̄√e?(x2)/(2σ21)?I?1σ22π ̄ ̄ ̄√e?(x2)/(2σ22)Γσ1,σ2(x)=I?1σ12πe?(x2)/(2σ12)?I?1σ22πe?(x2)/(2σ22)
DOG實際上就是兩個不同方差的Gaussian核做差。它最典型的用法就是《圖像處理理論(二)》中提到的高斯差分金字塔。
LOG的計算分2步:
1.計算Gaussian核和圖像的卷積G(x,y)?f(x,y)G(x,y)?f(x,y)。
其中:
G(x,y)=12πσ2exp(?x2+y22σ2)G(x,y)=12πσ2exp?(?x2+y22σ2)
2.對第1步的結果應用Laplace算子。
Laplace算子的定義為:
Δf=?2f=???fΔf=?2f=???f
其中:
?=(??x1,…,??xn)?=(??x1,…,??xn)
因為:
Δ[G(x,y)?f(x,y)]=[ΔG(x,y)]?f(x,y)Δ[G(x,y)?f(x,y)]=[ΔG(x,y)]?f(x,y)
一般將[ΔG(x,y)][ΔG(x,y)],稱為LOG算子。
從上圖可以看出兩者的函數圖像是非常相似的。
參見:
http://blog.csdn.net/kezunhai/article/details/11579785
高斯拉普拉斯算子(Laplace of Gaussian)
構建DOG金字塔
《圖像處理理論(二)》中提到的DOG金字塔只用了一個5*5的Gaussian核。如果使用多種Gaussian核,就可得到如下所示的DOG金字塔。
上圖中,尺度相同,Gaussian核不同的圖片被分為一組(Octave)。
空間極值點檢測
關鍵點是由DOG空間的局部極值點組成的,關鍵點的初步探查是通過同一組內各DoG相鄰兩層圖像之間比較完成的。
為了尋找DoG函數的極值點,每一個像素點要和它所有的相鄰點比較,看其是否比它的圖像域和尺度域的相鄰點大或者小。
如上圖所示,中間的檢測點要與同尺度的8個相鄰點和上下相鄰尺度對應的9×2個點共26個點比較,以確保在尺度空間和二維圖像空間都檢測到極值點。
當然這樣產生的極值點并不全都是穩定的特征點,因為某些極值點響應較弱,而且DOG算子會產生較強的邊緣響應,因此需要剔除不穩定的邊緣響應點。
關鍵點
離散空間的極值點并不是真正的極值點,上圖顯示了二維函數離散空間得到的極值點與連續空間極值點的差別。利用已知的離散空間點插值得到的連續空間極值點的方法叫做子像素插值(Sub-pixel Interpolation)。
為了使描述符具有旋轉不變性,需要利用圖像的局部特征為給每一個關鍵點分配一個基準方向。使用圖像梯度的方法求取局部結構的穩定方向。對于在DOG金字塔中檢測出的關鍵點,采集其所在高斯金字塔圖像3σ3σ鄰域窗口內像素的梯度和方向分布特征。
在完成關鍵點的梯度計算后,使用直方圖統計鄰域內像素的梯度和方向:
方向直方圖的峰值則代表了該特征點處鄰域梯度的方向,以直方圖中最大值作為該關鍵點的主方向。為了增強匹配的魯棒性,只保留峰值大于主方向峰值80%的方向作為該關鍵點的輔方向。
因此,對于有多個峰值的關鍵點位置,在相同位置和尺度將會有多個關鍵點被創建。這些關鍵點梯度相同,但方向不同。僅有15%的關鍵點被賦予多個方向,但可以明顯的提高關鍵點匹配的穩定性。
實際編程實現中,就是把該關鍵點復制成多份關鍵點,并將方向值分別賦給這些復制后的關鍵點,并且離散的梯度方向直方圖要進行插值擬合處理,來求得更精確的方向角度值,檢測結果如下圖所示:
通過以上步驟,對于每一個關鍵點,擁有三個信息:位置、尺度以及方向。
關鍵點特征描述
接下來就是為每個關鍵點建立一個描述符,用一組向量將這個關鍵點描述出來,使其不隨各種變化而改變,比如光照變化、視角變化等等。這個描述子不但包括關鍵點,也包含關鍵點周圍對其有貢獻的像素點,并且描述符應該有較高的獨特性,以便于提高特征點正確匹配的概率。
Lowe建議描述子使用在關鍵點尺度空間內4*4的窗口中計算的8個方向的梯度信息,共4x4x8=128維向量表征。
表示步驟如下:
1.確定計算描述子所需的圖像區域。
特征描述子與特征點所在的尺度有關,因此,對梯度的求取應在特征點對應的高斯圖像上進行。將關鍵點附近的鄰域劃分為d * d(Lowe建議d=4)個子區域,每個子區域做為一個種子點,每個種子點有8個方向。
2.將坐標軸旋轉為關鍵點的方向,以確保旋轉不變性。
3.將鄰域內的采樣點分配到對應的子區域內,將子區域內的梯度值分配到8個方向上,計算其權值。
4.插值計算每個種子點八個方向的梯度。
5.如上統計的4x4x8=128個梯度信息即為該關鍵點的特征向量。特征向量形成后,為了去除光照變化的影響,需要對它們進行歸一化處理,對于圖像灰度值整體漂移,圖像各點的梯度是鄰域像素相減得到,所以也能去除。
6.描述子向量門限。非線性光照,相機飽和度變化對造成某些方向的梯度值過大,而對方向的影響微弱。因此設置門限值(向量歸一化后,一般取0.2)截斷較大的梯度值。然后,再進行一次歸一化處理,提高特征的鑒別性。
7.按特征點的尺度對特征描述向量進行排序。
總結
SIFT大概算是最復雜的算子了,上文僅是概括描述,省略了大量公式及其推導,但仍然花了很大篇幅才講完。可以想見,設計一個比SIFT還好的算子會有多么困難,人工設計特征走到這里,差不多也就到頭了,后面的天下是屬于DL的。
參考
http://blog.csdn.net/zddblog/article/details/7521424
SIFT算法詳解
https://mp.weixin.qq.com/s/wYiwuBt8VVYOheJ_jgCHgA
一文讀懂圖像局部特征點檢測算法!
https://mp.weixin.qq.com/s/sM78DCOK3fuG2JrP2QaSZA
SIFT與CNN的碰撞:萬字長文回顧圖像檢索任務十年探索歷程(上)
https://mp.weixin.qq.com/s/yzVMDEpwbXVS0y-CwWSBEA
SIFT與CNN的碰撞:萬字長文回顧圖像檢索任務十年探索歷程(下)
YUV & YCbCr & RGB
在RGB顏色空間中,紅,綠,藍是基本元素。RGB格式是顯示器通常使用的格式。
然而,人類視覺系統(HVS)相比亮度來說對于顏色不是那么敏感的。通過把亮度與顏色信息分離,并對亮度值取更高的分辨率可以更有效地表示一個顏色圖像。這就是所謂的YUV顏色空間。Y表示亮度,B-Y(即U)、R-Y(即V)是色差信息。
實際使用中,為了更有效率,又定義了YCbCr格式。兩個Y、Cb和U、Cr和V的含義相同,但是表示方法不同。YCbCr在YUV的基礎上,進行了比例和偏置變換。
相關的定義及轉換標準是:ITU-R Recommendation BT.601(標清)和ITU-R Recommendation BT.709(高清)。
總結
以上是生活随笔為你收集整理的图像处理理论(五)——SIFT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学狂想曲(七)——莱洛三角形
- 下一篇: 图像处理理论(六)——Harris, E