袁榮慶,謝勁松
(長(zhǎng)春理工大學(xué) 機(jī)電工程學(xué)院,長(zhǎng)春 130022)
尺度不變特征變換(Scale Invariant Feature Transform)-簡(jiǎn)稱SIFT算法是由就職于英屬哥倫比亞大學(xué)主攻機(jī)器視覺方向的David Lowe提出的,該算法首先要尋找尺度空間中的極值點(diǎn),通過提取局部特征來提取算法。我們研究的SIFT算法主要由以下四步組成。
其中G(x,y,σ)是尺度可變高斯函數(shù),(x,y)表示圖像像素點(diǎn)位置,σ表示空間因子,由上式得到的值越小表示圖像的尺度越小。
SIFT算法第一步就是要獲得尺度空間的極值點(diǎn),為了能有效的檢測(cè)到關(guān)鍵點(diǎn),我們提出了高斯差分尺度空間這一概念。下式是高斯差分函數(shù)。
高斯差分函數(shù)相比于其他的函數(shù)在極值點(diǎn)檢測(cè)中有著較高的計(jì)算效率,并且和尺度歸一化的拉普拉斯高斯函數(shù)σ2?2G有近似的關(guān)系,另外計(jì)算相比其他算子也較為簡(jiǎn)單。
圖像金字塔的構(gòu)建:理論上圖像金字塔共有O組,每組的圖像層數(shù)有S層。圖1表示了兩組圖像金字塔,它們都是通過高斯差分尺度空間建立起來了,如圖1中箭頭所示,第二組最底層圖像由第一組第一幅到最后一幅圖像降采樣得到。圖2為DOG算子的構(gòu)建示意圖,兩個(gè)相鄰區(qū)間的差異在高斯金字塔創(chuàng)建一個(gè)間隔difference-of-Gaussian金字塔所示。
在構(gòu)造圖像金字塔的過程中,首要是建立圖像金字塔的第一層。金字塔的第一層都是由被檢測(cè)圖像進(jìn)行高斯卷積之后得到的該圖像的不同尺度空間。對(duì)第一層第一幅圖像進(jìn)行兩倍尺度兩倍像素距離下采樣得到圖像金子塔中第二層的第一幅圖像,并以該圖像為基準(zhǔn)做高斯卷積,得到第二層的全部圖像。同樣的道理,第三層的第一幅圖像也是由第二層第一幅圖像以兩倍尺度兩倍像素距離降采樣得到的,之后通過對(duì)第三層第一幅圖像進(jìn)行高斯卷積得到該層的全部圖像。以此類推,可以得到用高斯差分函數(shù)處理過得全部圖像,并呈現(xiàn)出金字塔形狀。其過程用圖3表示。
尺度空間的理論目的是模擬圖像的多尺度特征。采集到的特征點(diǎn)的圖像特征必須保持尺度不變性,并且在多尺度空間內(nèi)完成,其中較為典型的是高斯卷積。高斯卷積能很好的實(shí)現(xiàn)尺度變換,也能很好的進(jìn)行線性變換。我們用下式定義一幅二維圖像的尺度空間:
圖1 圖像金字塔構(gòu)建
圖2 DOG算子構(gòu)建示意圖
圖3 獲取DOG尺度空間圖像示意圖
圖4 DOG尺度空間局部極值檢測(cè)
在DOG尺度空間中,為了尋找到極值點(diǎn),需要將每一個(gè)待檢測(cè)點(diǎn)和周圍相鄰圖像域、尺度域的點(diǎn)進(jìn)行大小比較,確保檢測(cè)準(zhǔn)確性。如圖4所示,中間尺度域中叉號(hào)表示待檢測(cè)點(diǎn),為了保持檢測(cè)準(zhǔn)確性,它需要和圍繞在周圍的同尺度域的8個(gè)點(diǎn)進(jìn)行比較,還要和相鄰兩個(gè)尺度域中同樣位置的上下各9個(gè)點(diǎn)進(jìn)行比較,確保在DOG尺度空間極值檢測(cè)中檢測(cè)到合適的極值點(diǎn)。
在通過建立高斯圖像和高斯差分圖像找到極值點(diǎn)之后,我們下面需要精確極值點(diǎn)的位置。由于DOG算子本身就有提高圖像抗噪聲的能力,圖像會(huì)有較強(qiáng)的邊緣響應(yīng),為去除這些不穩(wěn)定的極值點(diǎn)和邊緣響應(yīng)點(diǎn),我們用擬合二次函數(shù)來去除不穩(wěn)定的極值點(diǎn)和邊緣響應(yīng)點(diǎn)。用泰勒公式將該函數(shù)在極值點(diǎn)處展開,
X=(x,y,σ)T表示極值點(diǎn)在圖像中的偏移量,D表示DOG(X)極值點(diǎn)處的值。
在使用高斯圖像局部極值檢測(cè)確定了極值點(diǎn)之后,我們需要找到局部結(jié)構(gòu)的穩(wěn)定方向,這是為了實(shí)現(xiàn)圖像在旋轉(zhuǎn)時(shí)不變性。由前面求得的極值點(diǎn)的尺度值,我們可以據(jù)此得到和該尺度值接近的高斯圖像。
每個(gè)檢測(cè)到的極值點(diǎn)我們所在的尺度空間我們用H來表示。確定極值點(diǎn)處的梯度大小和方向公式之后,下面是確定極值點(diǎn)方向的方法,這里我們常用的是直方圖統(tǒng)計(jì)法。
(5)式中,m(x,y)和θ(x,y)分別為高斯金字塔(x,y)處梯度的大小和方向,H所用到的尺度為每個(gè)關(guān)鍵點(diǎn)所在的尺度。確定關(guān)鍵點(diǎn)的方向采用梯度直方圖統(tǒng)計(jì)法,建立如圖5所示的梯度直方圖,檢測(cè)到的極值點(diǎn)作為原點(diǎn),極值點(diǎn)相鄰區(qū)域內(nèi)的像素點(diǎn)通過比較結(jié)合梯度方向的大小,確定極值點(diǎn)的主方向。所選區(qū)域?yàn)橐詷O值點(diǎn)為原點(diǎn)的0-360°的圓形區(qū)域內(nèi),理論上要以每10°作為一個(gè)節(jié)點(diǎn)建立36個(gè)直方圖,在直方圖中具有最大峰值的代表了極值點(diǎn)的主方向。
就此,我們極值點(diǎn)檢測(cè)完畢,得到了圖像中極值點(diǎn)的尺度空間大小、極值點(diǎn)主方向和極值點(diǎn)的位置信息。
圖5 由梯度方向直方圖確定主梯度方向
在確定了關(guān)鍵點(diǎn)之后,為了計(jì)算上的方便,我們需要用向量的形式將關(guān)鍵點(diǎn)表征出來,描述的信息不僅要包括關(guān)鍵點(diǎn)的信息也要包括關(guān)鍵點(diǎn)周圍的其他像素點(diǎn)信息,該向量具有唯一性,我們稱之為SIFT描述子。具體方法是首先將關(guān)鍵點(diǎn)周圍的圖像分塊,然后和我們?cè)诖_定關(guān)鍵點(diǎn)主梯度方向時(shí)一樣,在分塊的區(qū)域內(nèi)建立梯度直方圖,從而確定該區(qū)域內(nèi)的獨(dú)特向量。
圖6表示一個(gè)SIFT描述子實(shí)例。圖中中心點(diǎn)表示的是確定的關(guān)鍵點(diǎn),左圖中的每一個(gè)小方格表示關(guān)鍵點(diǎn)周圍的鄰域尺度空間內(nèi)的一個(gè)像素,方格內(nèi)箭頭的長(zhǎng)短和方向分別表示了該像素點(diǎn)的梯度值大小和方向。以關(guān)鍵點(diǎn)為原點(diǎn)的360°方向內(nèi)尋找鄰域內(nèi)的像素點(diǎn)并將每8×8方格內(nèi)的像素點(diǎn)建立如右圖所示的特征向量圖。我們可以看到,每8×8的方格內(nèi)像素點(diǎn)能夠累加成為一個(gè)種子點(diǎn),而一個(gè)關(guān)鍵點(diǎn)要包括4個(gè)這樣的種子點(diǎn)信息。這種方法雖然復(fù)雜,但是能很好的結(jié)合關(guān)鍵點(diǎn)鄰域內(nèi)的像素點(diǎn)信息,提高了算法的抗噪能力,有利于匹配精度的提高。
圖6 關(guān)鍵點(diǎn)領(lǐng)域信息產(chǎn)生特征向量
SIFT算法目前在軍事、工業(yè)和民用方面都得到了不同程度的應(yīng)用,其應(yīng)用已經(jīng)滲透了很多領(lǐng)域,比如物體識(shí)別、犯罪現(xiàn)場(chǎng)特征提取、三維建模和指紋與人臉識(shí)別等。圖像中包含的不變特征用SIFT算法可以得到有效的提取,但是如果在圖像中可利用的特征點(diǎn)較少、由圖像成像質(zhì)量造成的圖像邊緣模糊的情況下,都不能很好的確定特征點(diǎn)。目前基于SIFT算法發(fā)展出來的立體匹配技術(shù)都是以上述四個(gè)方面內(nèi)容為基礎(chǔ)的。
[1]張廣軍.機(jī)器視覺[M].北京:科學(xué)出版社,2005:24-27.
[2]徐德,譚民,李原.機(jī)器人視覺測(cè)量與控制[M].2版.北京:國(guó)防工業(yè)出版社,2011:121-122.
[3]Linda G.Shapiro,George C.Stockman.計(jì)算機(jī)視覺[M].北京:機(jī)械工業(yè)出版社,2005:1-8.
[4]鐘玉琢,喬秉新,李樹青.機(jī)器人視覺技術(shù)[M].北京:國(guó)防出版社,1994:132-133.
[5]DavidA.Forsyth,Jean Ponce.計(jì)算機(jī)視覺[M].北京:電子工業(yè)出版社,2004:3-12.
[6]Makoto Sato.An Active Stereo Vision System Based on Neural Pathways of Human Binocular Motor System[J].Journal of Bionic Engineering,2007(4):185-192.