SURF

 

SURF 是一種尺度,旋轉不變的detectordescriptor.最大的特點是快!在快的基礎上保證性能(repeatability,distinctiveness robustness)。

SURF採用有效策略的主要有:1積分圖(用於對圖像卷積)2detector是基於Hessian矩陣,descriptor是基於分佈的

下面是SURF算法的具體實現:

1.興趣點檢測

SURF 對於興趣點的檢測是基於最基本的Hessian近似矩陣。

1.1積分圖像

(由於不會在這裏編輯公式,直接截圖了)

 PS:這裏加一點自己的一點個人理解:關於矩形區域內像素點的求和應該是一種簡單重複性運算,採用這種思路總體上提高了效率。爲什麼這麼說呢?假設一幅圖片共有n個像素點,則計算n個位置的積分圖總共的加法運算有n-1次(注意:可不是 次哦,要充分利用遞推思想),將這些結果保存在一個跟原圖對應的矩陣M中。當需要計算圖像中某個矩形區域內的所有像素之和是直接像查表一樣,調出A,B,C,D四點的積分圖值,簡單的加減法(注意只需要三次哦)即可得到結果。反之,如果採用naive的方式直接在原圖像中的某個矩形區域內求和,你想想,總共可能的矩形組合有多少? !!且對於一幅圖像n那是相當大啊,所以2^n

 那可是天文數字,而且這裏面絕大部分的矩形有重疊,重疊意味着什麼?在算求和的時候有重複性的工作,其實我們是可以有效的利用已經計算過的信息的。這就是積分圖法的內在思想:它實際上是先計算n個互不重疊(專業點說是不相交)的矩形區域內的像素點求和,充分利用這些值(已有值)計算未知值,有點類似遞推的味道...這就完全避免了重複求和運算。

1.2 用於檢測興趣點的Hessian矩陣

作者Herbert Bay利用Hessian矩陣來檢測興趣點,具體是用Hessian矩陣行列式的最大值標記斑狀結構(blob-like structure)的位置。同時,行列式值也作爲尺度選擇的依據,這裏,作者是參考了Lindeberg的做法('Feature detection with automatic scale selection'我還沒有拜讀原文!!)。

說一下Hessian矩陣的定義:

  

 中得到啓發,採用了盒子型濾波器(box filter)對上面的濾波器進行近似。盒子型濾波器見圖1.3.

 

 補充一點filter的響應還要根據filter的大小做一個歸一化。這樣做就可以保證對於任意大小的filterF範數是統一的(這對於尺度不變性是有必要的)。

有了前面的着一些準備工作,就可以對一幅圖像I計算每個點的近似Hessian矩陣的行列式值,將這些值存儲,備用!

1.3尺度空間表示

算法的尺度不變性主要靠不同尺度下尋找感興趣點。談到不同尺度就不得不說‘金字塔’。Lowe在其SIFT大作中是這樣構造尺度空間的:對原圖像不斷地進行Gauss平滑+降採樣。得到金字塔圖像後,有進一步得到了DoG圖,邊和斑狀結構就是通過DoG圖得到其在原圖的位置。

SURF中的做法與SIFT是有所不同的。SIFT算法在構造金字塔圖層時Gauss濾波器大小不變,改變的是圖像的大小;而SURF則恰恰相反:圖像大小保持不變,改變的是濾波器的大小。

 PS:之所以這麼做的目的考慮的主要目的還是效率問題(這樣可以利用積分圖有關的快速計算,用不同sizeMask進行卷積運算,複雜度是一樣的,僅僅是三個加減法而已)。而且,由於沒有對圖像進行降採樣,所以不存在混疊現象。

SIFT類似,SURF的尺度空間也是按組(Octaves)劃分的。每一個Octave裏是對輸入圖像用size不斷增加的filter進行濾波後得到的一系列響應。總的來說,一組包含了一個縮放因子2()。每一組內的層數是一個常量。由於積分圖像的離散特性(不懂),兩個連續尺度間的最小尺度差分取決於二階偏導在導數方向(xy)上正的或負的波瓣(即不同的顏色塊,見Fig.1.5)長度L0,實際中,L0設爲filter邊長的1/3。例如,對於9*9filterL0值爲3.對於連續的level,採用的filtersize大小增加的最小量是2,以保證filter的邊長始終是奇數,(奇數可以保證filter有中心點)。這樣使得Mask6個像素爲單位進行擴充。

 以圖1.51.6爲例對上面的敘述做一解釋:圖1.5左邊是9*9大小y方向的二階偏導計算模板。Y方向共有3個波瓣(兩正(白的),一負(黑的)),則 的值即任意一個波瓣的寬度。右邊是對每個波瓣各擴充2個像素後的filter,注意先是對波瓣擴充,即先擴寬,擴完後置於長怎麼辦,還沒有搞懂.....貌似整體上最外的邊(灰色的)是擴兩個像素。

 Fig.1.6

對於Fig.1.6左邊是x-y方向的大小爲9*9filter,每個對角方向各有兩個波瓣(2個黑的,2個白的),對波瓣擴兩個像素,得到右邊的filter

尺度空間的構造具體對於第一組(Octave)而言開始所用的是大小爲9*9filter(最小的scale),接下來的filter大小依次爲15*1521*2127*27,採用這些模板可以達到多於兩個像素的尺度變化。作者說這麼做是有必要的,原因是要對空域和相鄰的尺度附近進行一個三維的非極大值抑制。(什麼是非極大值抑制呢?字面意思:不是極大值就抑制。非極大值抑制通常用於邊緣檢測中邊的進一步精簡。舉個簡單例子,如果要從一些邊緣中進一步提出水平邊緣,那麼就這麼做:逐個檢測邊緣圖中在水平方向的梯度值,如果不是局部極大值(非極大值),則就把該梯度值置0抑制)。

由於要採用三維的非極大值抑制,那麼Hessian響應圖的首尾兩個實際上是不包含極值信息的(這裏跟SIFT算法裏每一Octave裏儘管有層,實際上只能利用中間的7層是一個道理)。因此,經過內插後(後面會講到),可能的最小的尺度應該是

 

 由於組之間較大尺度的變化(從915變化倍數是1.7)會帶來較爲粗糙的尺度採樣,所以作者主張對尺度進行更爲精細的採樣來構造尺度空間。具體做法是:先用內插將圖像大小加倍,然後用一個size15filter對加倍的圖像進行濾波得到第一個Octave中的第一個響應圖,隨後用到的filtersize依次是21,27,3339.第二組類似,只不過此時相鄰的兩個filtersize差爲12個像素,是第一組的兩倍。第三組...類似。這樣,兩個filter之間的尺度變化就會相對變小了(1521變化倍數降爲1.421/15)。

由於對任何sizefilterF範數模值是一個常量(????)已經做了尺度上的歸一化,所以對濾波器的響應不需要在加權了。

1.4 興趣點的定位

作者採用的是在3*3*3的鄰域內進行非極大值抑制。具體是採用了文章'Efficient Non- maxmum Supprerssion '中的做法(需要再進一步參考)。檢測到的Hessian 矩陣的行列式極大值還要在尺度和圖像空間內做個內插,採用的方法可參見文章'Invatiant Features from Interest Point Groups'.之所以要做內插,是因爲每一組(Octave)的第一層(layer)的尺度(scale)差分是很大的。

2 興趣點描述和匹配

原文采用的descriptorSIFT類似也是基於興趣點的鄰域分佈。具體是計算了xy方向上的Harr小波值分佈(具體的Harr小波也要研究一下),而不是梯度值分佈。這樣做同樣是因爲可以藉助積分圖加速運算,同時只用了64維信息。同時,根據Laplacian的符號,作者想出了一個新的indexing方法,既提高了魯棒性,同時也加快了匹配過程。

2.1方向分配

爲了具有方向不變性,作者爲每個感興趣點指定了一個可再複製(reproducible)的方向。做法如下:

① 再以6s爲半徑的圓形鄰域計算在x,y方向的Harr小波響應,這裏s指的是所要檢測的興趣點所處的尺度。

② 採樣步長設爲s,小波的size設爲4s,(這樣又可以利用積分圖進行快速濾波了)

 2.1分別是用來計算x,y方向上響應的Haar小波濾波器。

 

2.2基於Haar小波響應的Descriptor

對於Descriptor的提取,第一步是構造一箇中心點在興趣點附近,帶方向(方向即前面所估計的方向)的方框。方框的大小設爲20s。方框具體形式課參考圖2.3.

Fig.2.3 不同scale下的方框

這一步具體是怎樣實現的呢?先把區域分成16個(4*4)子域。對每個子域我們計算255*5)個空間歸一化的採樣點的Haar小波響應。假定我們用dx表示水平方向上的Haar小波響應,dy表示垂直方向上的(濾波器的size2s),這裏可參考2.1.注意,這裏的“水平”和“垂直”是相對於興趣點的方向而言的(參見圖2.4)。.爲了增加魯棒性,可對dx,dy進行高斯濾波(sigma=3.3s),濾波器中心爲興趣點。

Fig. 2.4

PS:通過圖2.4進一步解釋:左邊大的方框即圖2.3中的方框,將該大方框分成16塊,每一小塊如右圖,又分爲4個小快,這裏的小塊就是實際中descriptor的基本元,2.1節所提到的加法求和就是對這些元進行的,形式如圖2.4右上角。

 Fig.2.5的例子只是說採用四個量描述區域更加的具有區分度(more distinctive),置於有沒有更好的表示形式呢?可以好好考慮一下(不過要結合算法的速度,複雜性綜合考慮)。作者在這方面也是做了很多的實驗,包括更多的和更少的小波特徵,二階偏導,高階小波,PCA,中值,均值等等。總的來考慮上面的矢量表示形式得到的結果最好。同時,將大塊區域分成16塊也是最好的選擇。分成9塊的話結果差一些,但是在匹配時速度會更快,而且跟其它的descriptor也是有可比性的。

2.3 快速建立索引用於匹配

前面說過,爲了加速匹配過程,作者借Laplacian(比如Hessian矩陣的跡)的符號使匹配過程索引加快。這樣可以將下面的情況區分開(Fig.2.6):

Fig.2.6

左右兩幅圖儘管contrast值是相同的,但符號不同,所以採用帶符號的匹配,兩者匹配不成功。

引用:http://bingloveu.blog.163.com/blog/static/184441194201132474932654/

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章