圖像匹配算法研究之surf算法今天碰巧和朋友討論這個(gè),才想起來好久沒碰,都生疏了,趁著暑假還有點(diǎn)閑時(shí),先寫寫再說。有錯(cuò)誤的地方希望大家指正。
上面這段文字的大體意思就是說: SURF意指 加速的具有魯棒性的特征,由Bay在2006年首次提出,這項(xiàng)技術(shù)可以應(yīng)用于計(jì)算機(jī)視覺的物體識(shí)別以及3D重構(gòu)中。SURF算子由SIFT算子改進(jìn)而來,一般來說,標(biāo)準(zhǔn)的SURF算子比SIFT算子快好幾倍,并且在多幅圖片下具有更好的魯棒性。SURF最大的特征在于采用了harr特征以及積分圖像integral image的概念,這大大加快了程序的運(yùn)行時(shí)間。
surf提出算法參見http://www.vision.ee./~surf/papers.html 有paper下載地址。
1、提取特征點(diǎn) 2、提取特征描述符
1)利用Hessian矩陣,計(jì)算特征值α 其中Lxx(x, σ)是高斯濾波后圖像g(σ)的在x方向的二階導(dǎo)數(shù),其他的Lyy(x, σ)、Lxy(x, σ)都是g(σ)的二階導(dǎo)數(shù)。 為了減小計(jì)算量,原文使用了一個(gè)簡(jiǎn)單的方法,并利用了積分圖像的優(yōu)勢(shì)(大大的減少計(jì)算量),方法其實(shí)很簡(jiǎn)單就是在模糊的基礎(chǔ)上將原本的模塊近似下。 總所周知,一般計(jì)算圖像的二階導(dǎo)時(shí),利用下面的公式d2f(x)/dx2=(f(x+1)-f(x))-(f(x)-f(x-1))=-2*f(x)+f(x+1)+f(x-1)。但是f(x)=g(h(x))【h(x)為圖像的灰度值,f(x) 是將h(x)高斯濾波處理的灰度函數(shù) 】 圖一 模板近似 以9X9濾波器為例,如上圖所示,左邊兩幅圖分別為灰度圖像在中心點(diǎn)(黑色點(diǎn))處的二階導(dǎo)數(shù)d2f(x)/dx2和d2f(x)/dxdy的模板對(duì)應(yīng)的值, 近似后變成右邊的兩幅圖,圖中灰色部分像素值為0??墒沁@樣計(jì)算特征值不是也很復(fù)雜么?當(dāng)然,所以作者提供了一種新思路--使用積分圖像。
積分圖像,顧名思義,即指當(dāng)前像素點(diǎn)所在位置距原點(diǎn)(0,0)所包圍面的所有灰度之和。 綠色的部分為當(dāng)前像素點(diǎn),紅色為積分區(qū)域。 這樣計(jì)算圖像中任意一塊矩形區(qū)域的灰度之和Sx只需要利用矩形4個(gè)頂點(diǎn)(Xi,Yi)(i=1,2,3,4 順序?yàn)閺纳现?,先左后?的積分值S(x,y)即可。
至此,大家應(yīng)該知道近似二階導(dǎo)數(shù)的高斯模板并引入積分圖像的好處了吧,只需要在函數(shù)定義之前計(jì)算各個(gè)坐標(biāo)點(diǎn)的積分圖像,然后就能方便的求出hessian的特征值。 不過由于函數(shù)模板的近似,這里需要修正下特征值α的求解公式:
這里Dxx和Dxy就是根據(jù)圖一得到的,而Dyy和Dxx類似,只需要導(dǎo)致一下模板即可。
2)根據(jù)是否為領(lǐng)域極大值判斷特征點(diǎn) 這里要引入圖像堆的概念,說簡(jiǎn)單點(diǎn),就是一組大小相同的圖像,這些圖像都是根據(jù)不同大小高斯濾波二階導(dǎo)模板,如圖一所示 得到的平滑后圖像Pi 。 按照模板大小從小到大將Pi沿z軸方向排布,這樣中間層的每個(gè)像素點(diǎn)的領(lǐng)域就為3X3X3(包括上下兩層)。若該點(diǎn)的特征值α為這27個(gè)點(diǎn)中的最大值,那么可以認(rèn)為該點(diǎn)為Feature points--特征點(diǎn)(圖像依據(jù)這些特征點(diǎn)的匹配進(jìn)行更多的操作,比如拼接,比較相似性等等)。
欲進(jìn)行特征點(diǎn)的匹配,必須提取出特征點(diǎn)的特征向量再利用兩個(gè)向量的相似程度認(rèn)為兩個(gè)點(diǎn)是否為兩幅圖像相互對(duì)應(yīng)的點(diǎn)。 第一步.計(jì)算特征點(diǎn)的主方向 以特征點(diǎn)為圓心半徑為6像素建立圓領(lǐng)域,計(jì)算得出里面有109個(gè)像素點(diǎn)。計(jì)算這些點(diǎn)的harr特征harrx和harry. 那么該怎樣計(jì)算任意一點(diǎn)的harr特征值? 圖二 harr-like特征
選取edge features前兩個(gè)作為harrx和harry值,這個(gè)方向有些類似與梯度方向,不過這里的領(lǐng)域顯然更廣。至于計(jì)算么,依舊是利用積分圖像。 對(duì)這109個(gè)像素點(diǎn)分別求出各自的向量的方向angle=acrtan(harry/harrx) ,根據(jù)最近鄰原則將這些 angle劃分到60,120,...,300,360等6個(gè)值上。劃分在同一范圍上的像素點(diǎn)分別將他們的harrx和harry相加即可。不過為了體現(xiàn)相鄰像素點(diǎn)的更大影響,還需要考慮高斯權(quán)重系數(shù)。這樣得到最大的harrx和最大的harry,組成了主方向向量。
第二步.提取特征描述符
圖中紅色箭頭為上面計(jì)算出來的主方向,按上圖所示選取該紅色特征點(diǎn)的8X8鄰域(紫色邊框內(nèi)部) 計(jì)算得到4X4個(gè)像素塊的梯度大小和方向(可以利用上面已經(jīng)計(jì)算的harrx和harry),將8X8區(qū)域分割為2X2個(gè)區(qū)域T1,2,3,4,這樣每個(gè)區(qū)域就包括了4個(gè)更小的由4個(gè)像素點(diǎn)組成的區(qū)域,
harrx和harry就是利用白色部分像素灰度值減去黑色部分像素灰度值即可得到(harrx,harry)方向向量。這樣的向量一共有16個(gè),將這些方向向量的方向角歸并到上下左右斜上下8個(gè)方向上,并在T1,2,3,4中計(jì)算這8個(gè)方向的值。 那么這個(gè)4X8=32維向量即為所求的特征描述符。
3)特征點(diǎn)的匹配 至此,surf算法結(jié)束。
轉(zhuǎn)載請(qǐng)注明:blue_lg 博客園http://www.cnblogs.com/blue-lg/archive/2012/07/17/2385755.html |
|