SIFT(Scale-invariant feature transform), Lowe, 2004 PCA-SIFT(Principle Component Analysis), Y.ke, 2004 SURF(Speeded Up Robust Features), Bay, 2006
這三位先后登場(chǎng)各有千秋,,算是圖像特征點(diǎn)檢測(cè)領(lǐng)域的宋氏三姐妹了!SIFT鼻祖先宗大佬,,PCA-SIFT將SIFT中直方圖方法換作主元分析法,,SURF取出integral/Hessian兩樣法寶實(shí)現(xiàn)加速,也更易于并行,。
下面,,先整理SIFT思路: 1. 輸入圖像,建議做double(width*=2, height*=2, size*=4), 并高斯過(guò)濾進(jìn)行平滑,。 2. 由圖片size決定建幾個(gè)塔,,每塔幾層圖像(一般3-5層)。0塔的第0層是原始圖像(或你double后的圖像),往上每一層是對(duì)其下一層進(jìn)行Laplacian變換(高斯卷積,,其中sigma值漸大,,例如可以是sigma, k*sigma, k*k*sigma…),直觀上看來(lái)越往上圖片越模糊,。塔間的圖片是降采樣關(guān)系,,例如1塔的第0層可以由0塔的第3層down sample得到,然后進(jìn)行與0塔類似的高斯卷積操作,。 3. 構(gòu)建DoG金字塔,。DoG金字塔由上一步生成的Gauss金字塔計(jì)算得到,塔數(shù)相同,,每塔層數(shù)少1,,因?yàn)?/SPAN>DoG的每一層由Gauss的相鄰兩層相減得到。 4. 在DoG塔里進(jìn)行極值點(diǎn)檢測(cè),,并根據(jù)用戶預(yù)設(shè)的對(duì)比度閾值,、主曲率閾值去除不合法特征點(diǎn)。極值點(diǎn)檢測(cè)用的Non-Maximal Suppression,,即在3*3*3個(gè)點(diǎn)中進(jìn)行灰度值比較,,最小或最大才過(guò)關(guān)。 5. 計(jì)算每個(gè)特征點(diǎn)的尺度,。注意塔間尺度關(guān)系,,sigma*2.0^(octvs+intvl/intvls) 6. 計(jì)算每個(gè)特征點(diǎn)的梯度模值和方向。用特征點(diǎn)周圍一個(gè)矩陣區(qū)域(patch)內(nèi)的點(diǎn)來(lái)描述該特征點(diǎn),,用的直方圖進(jìn)行模值統(tǒng)計(jì)并尋找主方向,,主方向可以不止一個(gè)。 7. 最后要生成64D或128D的特征描述符了,。對(duì)齊主方向,,計(jì)算方向直方圖2D數(shù)組,假如每個(gè)直方圖有8bin,,那么64D(2*2*8bin)或128D(4*4*8bin),。
大面兒上說(shuō),SURF vs. SIFT:
SURF基于integral image,,利用determination of Hessian matrix來(lái)描述極值點(diǎn),也就是可能的特征點(diǎn),。那么什么是積分圖像,?在這里Hessian矩陣又是什么?怎么求得這個(gè)det(H),?它怎么樣了就是極值點(diǎn)了,?box filter是怎么來(lái)地,什么樣兒,?這里有相關(guān)文檔和源碼下載,,很詳細(xì)很清晰,這里我就不八了,,您佬哪里不明白,,跟帖交流。我比較好奇的是,,Bay是如何發(fā)現(xiàn)integral image * box filter與高斯卷積這層近似關(guān)系的,?為什么他會(huì)想到這么做?此外,,基于integral image * Haar wavelet filter進(jìn)行主方向的判定及描述符的生成,,這樣的卷積結(jié)果是什么?又說(shuō)明了什么,?是一種與鄰接點(diǎn)差異或變化率的反映,?Integral image is so fabulous。有興趣的朋友一起討論一下,?
Luo Juan對(duì)這三種算法進(jìn)行了實(shí)驗(yàn)比較,,衡量參數(shù)有Processing time/ scale / changes/ rotation/ blur/ illumination/ affine,衡量指標(biāo)有重復(fù)度或RANSAC內(nèi)點(diǎn)概率,,圖片庫(kù)來(lái)自
另外,SIFT,、SURF也分別有了GPU實(shí)現(xiàn),,歡迎一起探討學(xué)習(xí)! SIFT on GPU, S.Heymann, 2005 SIFT on GPU(2), Sudipta N.Sinha, 2006 SURF on GPU, Nico Cornelis, 2008
|
|