這是一個很好的圖象匹配算法(SIFT)_第1頁
這是一個很好的圖象匹配算法(SIFT)_第2頁
這是一個很好的圖象匹配算法(SIFT)_第3頁
這是一個很好的圖象匹配算法(SIFT)_第4頁
這是一個很好的圖象匹配算法(SIFT)_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Distinctive Image Features from Scale-Invariant KeypointsDavid G. Lowe這是一個很好的圖象匹配算法(SIFT),同時能處理亮度、平移、旋轉、尺度的變化,利用特征點來提取特征描述符,最后在特征描述符之間尋找匹配。該算法主要包括5個步驟:一、建立尺度空間,尋找特征點(Keypoint)(也許該叫關鍵點)二、剔除不穩(wěn)定(暫且這么叫吧)的特征點三、在特征點處提取特征描述符(Keypoint Descriptor)四、利用特征描述符尋找匹配點。五、計算變換參數(shù)。下面分別進行介紹。一、 建立尺度空間,尋找特征點假設待匹配的兩副圖象分別為f

2、1(x,y)和f2(x,y),下面我只講f1(x,y)的算法操作,因為對f2(x,y)的操作完全相同。首先要建立尺度空間(Scale Space),這里用f1(x,y)與不同的高斯核卷積來產(chǎn)生尺度空間。由于f1(x,y)與高斯核卷積之后會丟失掉f1(x,y)的一部分信息,因此這里先將f1(x,y)利用線性插值的方法放大一倍,計為F1(x,y),即F1的大小是f1的兩倍。(為什么要放大,下面會有解釋)下面我用MATLAB寫一下他建立尺度空間的代碼,這樣更簡潔明了.F1 = imresize(f1,2,nearest);這個就是將原圖象放大2倍,用bilinear也可以g0 = fspecial(

3、gaussian,3 3,1.5);用來對放大的原圖象卷積的一個高斯核。F1 = conv2(F1,g0,same);卷積然后利用5個不同的高斯核對F1進行卷積。g1 = fspecial(gaussian,3 3,1.23);g2 = fspecial(gaussian,3 3,1.55);g3 = fspecial(gaussian,3 3,1.95);g4 = fspecial(gaussian,3 3,2.45);g5 = fspecial(gaussian,3 3,3.09);這是5個高斯核函數(shù),相鄰兩個的標準差正好是1.26倍,也就是。具體怎么得出來這些方差值,我也不知道啦.拉拉拉

4、拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉拉G1 = F1;G2 = conv2(G1,g1,same);G3 = conv2(G2,g2,same);這里是否每次都應該和G1卷積?有點糊涂。G4 = conv2(G3,g3,same);G5 = conv2(G4,g4,same);G6 = conv2(G5,g5,same);由此得到6個和F1大小一樣的高斯卷積圖象,也就是一個Octave.我不知道為什么文獻上只畫了5副,也許是漏畫,也許是他沒把G1 = F1畫進去。然后相鄰兩個G相減得到D1 = G2 G1;D2 = G3 G2;D3 = G4 G3;D4 = G5 G4;D5

5、= G6 G5;總共5個Difference of Gaussian圖象。得到了D之后就可以尋找特征點。首先在D1,D2,D3中尋找,遍歷圖象D2,如果D2(X0,Y0)是D2(X,Y)在(X0,Y0)的3*3局部極大值(或極小值),而且也是D1(X0,Y0)、D3(X0,Y0)3*3領域的極大值(或極小值),而且D2(X0,Y0)的絕對值必須大于一閾值,作者給出的是0.0075,(圖象都先歸一化過了)那么該點(X0,Y0)就是特征點。也就是D2(X0,Y0)要大于(或小于)D2(X0-1,Y0-1)、D2(X0-1,Y0)、D2(X0-1,Y0+1)、D2(X0,Y0-1)、D2(X0,Y0

6、+1)、D2(X0+1,Y0-1)、D2(X0+1,Y0)、D2(X0+1,Y0+1),而且同時要大于(或小于)D1(X0-1,Y0-1)、D1(X0-1,Y0)、D1(X0-1,Y0+1)、D1(X0,Y0-1)、D1(X0,Y0)、D1(X0,Y0+1)、D1(X0+1,Y0-1)、D1(X0+1,Y0)、D1(X0+1,Y0+1)以及D3(X0-1,Y0-1)、D3(X0-1,Y0)、D3(X0-1,Y0+1)、D3(X0,Y0-1)、D3(X0,Y0)、D3(X0,Y0+1)、D3(X0+1,Y0-1)、D3(X0+1,Y0)、D3(X0+1,Y0+1),這里的大于(或小于)就是要么D

7、2(X0,Y0)是這26領域的極大值,或者是這26領域的極小值。假設(X0,Y0)是這么一個特征點(并且這個點是穩(wěn)定的),那么就要在G2的(X0,Y0)位置處提取特征描述符(特征描述符的提取在下面講)。如果這個點是不穩(wěn)定的,那么就舍去這個特征點(穩(wěn)定不穩(wěn)定也將在接下來的內容里講)。找出在D2中的所有特征點,在G2上提取出所有的特征描述符。其次,在D2,D3,D4中,以及D3,D4,D5中按上面的方法尋找特征點,并分別在G3,G4中提取特征描述符。因為首先我們是在G2中提取,而G2是先經(jīng)過模糊了的,所以丟失了原圖象的一部分信息,因此這里我們先放大一倍,為的就是彌補一些丟失了的信息。(東岳:將原圖

8、像A,B(大小256*256)放大兩倍的原因,我認為可能是這樣:一: 卷積后對原圖像會有信息丟失,放大兩倍,可以減少丟失。二: A,B到底哪個大,不一定,所以除了縮小,還要放大一定的倍數(shù)。三:如果不放大,我們得到的第一個Octave里,就只有256*256,203*203。大小的圖像, 只能從相當于203*203大小的那張圖像中開始搜索,從而露掉了256*256那張圖像。)最后將F1縮小2倍,再從“拉拉拉拉拉拉”那里開始重復同樣的動作,直到圖象大小小于32為止。這樣就具有尺度不變性。二、 剔除不穩(wěn)定點個人感覺這個剔除不穩(wěn)定點對結果的影響并不是很大,不做這一步也不是不是以,但既然有了,也是很大的

9、一個改進。那就講一下。1, 在特征點處計算如果這個值的絕對值小于等于一閾值那么將被舍棄,這一閾值應該比上面的0.0075稍大,取為0.008,(而不是那個0.03,因為0.03太大了),這樣就是去掉對比度比較低的一些點。2,取r = 10,滿足上面條件的特征點將被保留。不滿足上述的點表示:他有一個很大的主曲率,和一個很小和他垂直的曲率 Dxx = Dx + 1, y + Dx - 1, y - 2.0 * Dx, y;Dyy = Dx, y + 1 + Dx, y - 1 - 2.0 * Dx, y;Dxy = 0.25 * (Dx + 1, y + 1 - Dx + 1, y - 1) -(

10、Dx - 1, y + 1 - Dx - 1, y - 1); 3,如果這個向量(dx,dy)的任何一個大于0。5,那么說明該點不穩(wěn)定,利用插值法進行矯正,再將該向量加到(x,y)中。如果小于0。5,那么不做任何變動。三、 提取特征描述符上面提到過要在G1,G2,G3的特征點處提取特征描述符。這里就以某一個特征點(X0,Y0)為例,其他所有的都按同樣的方法處理。計算G在(X0,Y0)處的方向大小。按照剃度的方向來計算。這里的L、x、y改為G、X0、Y0,(比較懶,就直接從文章里貼了),按照這個方向,選取(X0,Y0)周圍16*16的一個正方形塊,這樣就具有旋轉不變性。16*16的矩形塊分成16

11、個4*4的子塊。如下圖所示,(下圖只給出8*8的矩形塊和4個4*4的小塊,不好意思呵呵)看到了吧,左圖有4個4*4的子塊(真正的應該是16個4*4的子塊),然后我們對每個子塊處理。每個子塊有4*4=16個點,計算每個點的方向和幅度,方向公式在上面,幅度公式如下:嘿嘿,這樣得到16個方向和幅度值。然后把這16個方向投影到0,45,90,135,180,225,270,315這8個方向上,利用幅度作為權值。這樣一個4*4的子塊可以得到8個方向描述符,如上右圖所示,16個4*4的子塊可以得到128個方向描述符,這個1*128的向量就定義為特征描述符。最后將這個1*128的特征描述符歸一化,以使其對亮

12、度變化不敏感。假設圖象有N個特征點,那么就有N*128的特征描述符。四、 匹配我們對f1利用上面的方法進行處理之后得到loc1和des1兩個矩陣,假設f1總共有N1個特征點(即f1在所有的尺度空間上,那么多不同尺度的圖象中共找到了N1個特征點),那么loc1大小為N1*4,des1大小為N1*128,loc1每一維的4個表示該特征點的坐標(x,y)、在尺度空間上的尺度大小、方向,des1每一維的128個分量表示該特征點的特征描述符,loc1和des1一個個都對應著。同樣的,對f2進行同樣的處理,假設它總共有特征點數(shù)為N2,那么loc2和des2大小分別為N2*4和N2*128。下面來匹配。取d

13、es1中的一個1*128的特征描述符,去和des2中的N2個特征描述符分別計算誤差。每一個誤差的計算如下:error = 0;for i = 1 : 128error += sum(des1 des2).2);end這樣就得到了N2個誤差,計算這N2個誤差的最小值和次小值,分別為min和secmin,如果min < 0.75 * secmin,那么des1中的該點和des2中的產(chǎn)生min這個誤差的點相匹配,利用loc1和loc2中的坐標,在這兩點直接連線,表示這兩點匹配。這里min < 0.75 * secmin表示的意思是:如果f1中有一個和f2中的一個很可靠的匹配,那么該誤差應

14、該比較小,而且f1中的這個特征描述符和f2中其他特征描述符的匹配誤差就應該比較大。比如:我們要從一堆人中找一個人,已知是要找一個女人,如果這堆人中只有一個女人,其他都是男人,那么我們可以很肯定的知道這個女的就是要找的(因為女人的誤差較小,男人的誤差都比較大);但是如果這堆人中有好幾個女的,那么我們隨便找一個女的就不敢肯定這個人是不是要找的那個,于是可靠性就得到懷疑。(因為好幾個女人,有好幾個誤差都比較?。ê俸?,這個例子是不是很土?)上面的方法就和這個例子很相似。遍歷des1中的所有特征描述符,按同樣的方法和des2中的特征描述符去匹配,這樣我們就找到了所有的匹配點。具體的貼圖就不貼了,各位自己下程序下來運行。五、 計算兩副圖象的變換參數(shù)。找到了很多的匹配點,但是其中肯定有一些是誤配點存在。如果兩副圖象存在平移、旋轉、尺度的變化,那么就需要計算一個變換矩陣,而計算這個矩陣只需要3對匹配點(是夠了吧?)就可以了,但是這3對匹配點必須足夠精確,否則計算出來的變換參數(shù)可能會有較大的誤差。于是作者使用Hough變換的方法來對上面得到的初始匹配點進行聚類,以找出最佳的3對匹配點,計算參數(shù)。總結:寫的亂七八糟的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論