代玉強,楊絮,熊昊,陳小遠,莫蘇新
(長春理工大學電子信息工程學院,長春 130022)
目標識別是計算機視覺以及數字圖像處理中的重要組成部分,被廣泛應用于視頻監控、攝影測量、資源分析等眾多領域。但是圖像的質量很容易受外界因素干擾,因拍攝的時間、角度、距離的不同導致圖像的位置平移、大小縮放、角度旋轉、部分遮擋等問題,這都會嚴重影響目標識別的結果。哥倫比亞大學的Lowe教授提出了SIFT算法[1],它屬于一種穩定的局部特征匹配算法,在各方面都有良好的性質。但是SIFT算法還存在很多不足。首先是SIFT算法只能處理灰度圖像,對于人眼來說,顏色也是重要的視覺信息,對于目標的識別有很重要的作用,顏色特征在SIFT算法中沒有體現出來。其次SIFT算法的計算量很大,每一個特征點都包含有128的特征描述向量,計算復雜,對于目標跟蹤的實時性,SIFT算法沒有優勢[2-3]。
經典SIFT算法基于圖像的特征尺度選擇的思想,首先建立圖像高斯差分空間,在整個尺度空間上檢測極值點,濾除質量不好的極值點之后可精確到亞像素級的位置,同時也取得尺度值,提高特征點對于尺度變化的抗性,最后提取特征描述子。
尺度空間理論目的是模擬圖像數據的多尺度特征,高斯卷積核實現尺度變換的唯一線性核,尺度空間的定義為:

其中,G(x,y,σ)是尺度可變高斯函數,是空間坐標,σ是尺度坐標。
使用式(2)構造高斯差分尺度空間:

將相鄰尺度的高斯圖像相減得到高斯差分圖像金字塔。
在尺度空間中,一個點在本層和上下兩層中相鄰尺度的共8+9×2=26個點進行比較,如果該點是最大值或者最小值,則該點就是圖像上的一個極值點,作為待選特征點。在提取到全部的待選特征點之后進行進一步的篩選工作,包括去除噪聲和邊緣相應。對待選點的集合擬合一個三維二次函數以去除低對比度的點,然后根據待選點主曲率值得大小確定是否具有邊緣相應。
計算特征點鄰域的像素點的梯度方向,以它們的分布特征作為特征點的方向,使特征點具有旋轉不變性。在(x,y)處的梯度大小和方向分別為:

首先以特征點為中心,將圖像坐標旋轉到特征點的方向,如圖1所示,確保其旋轉不變性;然后取8×8的窗口。圓形中心為特征點所在的位置,每個方格代表特征點鄰域的像素點,箭頭方向為像素點的梯度方向,長度代表梯度值大小,圓圈為高斯加權的范圍。然后,在4×4的圖像塊上計算8個方向的梯度方向直方圖以及每一個方向的累加值,形成一個種子。最終每一個特征點都是由16個種子點組成,每個種子有8個方向的信息,這樣一共產生了128個數據,形成了128維的SIFT特征向量。

圖1 特征描述區域
此時,每一個SIFT特征點都包含有了位置、所在尺度、方向、128特征向量等信息,去除了圖像尺度變化、角度旋轉等因素帶來的影響。使用K-D樹匹配算法和RANSAC精匹配之后,便可實現目標的識別。
顏色不變量模型是基于Kubelka-Munk的理論[4],用于描述物體的光譜輻射特性:

其中λ表示波長,為二維矢量,即觀測點位置,表示光譜強度,是在x處的Fresnel反射系數,是材料的反射率表示觀測者視角方向的光譜反射。對于一切非透明的材料物體都可以用次模型來描述。
對于大多數情況下,物體收到的光照是均勻的,此時的波長λ為常數,則可以用 來表示波長分量,式(5)可轉換為:

對上式兩邊求λ的微分,得:

二次微分得:

兩式相除,得:

經典的的SIFT算法是將彩色圖像直接轉化成灰度圖像,本文先求出彩色圖像的顏色不變系數H(x,y),用它代替灰度值。在符合人眼視覺系統的CIE-1964-XYZ標準下[5],可以得到像素點RGB與( )E,Eλ,Eλλ之間的近似關系式為:

E通道表示了圖像的強度信息,Eλ表示藍-黃通道,Eλλ表示綠-紅通道信息。
將彩色圖像原圖像RBG三個通道的數據代入式(10)中,得到顏色不變系數H,代替灰度圖像作為輸入圖像。由于顏色不變系數可能為負數,因此經過上式的線性變換之后的圖像是一張虛擬圖像,然后需要將每個通道的值歸一化到0至255之間。由此產生一張帶有顏色信息的灰度圖片。所得到的結果如圖2所示,左側為原圖,右側為顏色不變量結果圖。

圖2 顏色不變量效果
經典SIFT算法給每一個特征點分配了一個主方向,目的是確保描述子的旋轉不變性[6]。而如果描述符本身就有抗旋轉能力,那么就可以省略對整個描述區域的旋轉。圓形本身就具有很好的旋轉不變性,相對于原本的正方形區域來說有很多優勢[7],因此本文利用圓環來構造SIFT特征點的描述子。新的描述子具體構造方式如下:
以特征點為中心,選擇一個半徑為8的圓形區域,如圖2所示,將圓形分為半徑不同的同心圓,用不同顏色表示。同一圓環內的像素在圖像旋轉之后改變的只有像素的位置,而相對于其他像素的相對位置信息不發生變換。與之前的SIFT算法相似,先計算每一個特征點的梯度的模和方向,在每一個圓環內計算并且統計出8個方向的梯度累加值。最后對計算出的梯度值進行從大到小排序。

圖3 特征描述區域圖
并且對整個圓形區域的進行高斯加權處理,用以減少遠離特征點的像素對特征點梯度信息的影響。像素點fi(x,y)距離中心特征點fi越遠,對描述子貢獻的信息量越小,其加權系數為:

式中,(xi,yi)為中心特征點的位置,a為取定的常數值。
第一個圓環8個梯度累加之后作為特征向量的前8個元素,第二個圓環作為特征向量的之后的8個元素,以此類推,特征描述區域一共有8×8個元素,一共就有64個累加值來確定特征點的描述子。這樣產生的新的描述子本身就具了有抗旋轉能力,不需要再旋轉描述區域。而且將特征描述子原有的128維的向量減少到64位,進一步減少了計算量,同時也為后面特征點的匹配節省了時間。
本文實驗硬件環境為CPU:Intel Core i3-2350M,2.3GHz;內存:4GB:顯存:1GB。操作系統 Windows 7,界面編程軟件為Microsoft Visual Studio 2010。
本實驗選取顏色復雜度不同的彩色圖片,用改進前后的SIFT算法分別提取特征點,比較特征點的數量。其中的一組圖片的對比如下:

圖4 特征點數量比較結果圖
圖4中紅色的點為提取到的SIFT特征點,可以看出改進之后的算法明顯多于經典SIFT算法。

表1 特征點提取數量比較
實驗選取了三種類型的彩色圖片,(a)類為顏色較為單一的圖片,這類圖片中特征點數量的提升效果在8%左右。顏色不變量對于圖像中色塊的分界線比較敏感,顏色變化較少時體現不了這方面的作用,有些圖片提取到的特征點數甚至與原有的SIFT算法差別不大。在(b)類顏色較為復雜的圖片中,特征點數量平均會有10%以上的提高。相較于原本的灰度圖像,加入顏色不變量之后圖像色塊邊界被體現出來,在這些區域可以提取到更多的特征。在(c)類圖片中,顏色和場景都相當復雜,特征點數量平均也可以提高10%以上。隨著顏色復雜度的提高,特征點數量也隨之提高,但是由于圖像色塊面積的越來越小,場景越來越混亂,計算出的邊界反而開始變得模糊,這就導致特征點數量不能無限制的增加。總體來說,通過對彩色圖像加入顏色不變量的預處理之后,改進后的SIFT算法能提取到的特征點數量都比經典算法有了明顯的提高。
運用經典SIFT算法與改進的SIFT算法對相同的圖像對進行匹配。匹配算法使用的是K-D樹算法,匹配完成之后再使用RANSAC算法去除誤匹配。RANSAC精匹配之后的結果如圖5所示,上邊的圖像為經典SIFT算法的匹配結果,下邊為改進之后的SIFT算法匹配結果。

圖5 匹配結果對比
之后再選用三組不同的圖像進行測試,對匹配后的數據進行統計整理、分析,得出表2:

表2 匹配結果數據對比
從表中可以看出,改進后算法的正確比配率都不如原有的算法,這是由于簡化了特征描述子,從128維的特征向量減少到64維,導致了匹配的錯誤率的提高。但是因為加入顏色不變量之后的特征點總個數增加了很多,粗匹配之后的匹配點對數比原有的算法要多,所以最終正確匹配的對數并沒有減少,這樣也不會影響到識別的結果。在耗時方面,改進后的算法由于特征描述子的簡化運行速度大幅提高。64維的特征向量在使用K-D樹匹配過程中,相比原有的維度二叉樹的深度減少了一半,不僅是在生成階段,由于K-D樹本身回溯的特點,回溯路徑也會大大縮短,因此在耗時上有了明顯的改善。
本文針對經典的SIFT算法存在的兩個問題,顏色信息的丟失和算法計算復雜,使用了加入顏色不變量以及改進特征描述方式的解決方案。顏色不變量的使用提高了SIFT算法對于顏色變化的敏感度,對于原有灰度圖像中不明顯的差異在新的圖上中很好地體現出來,從而提升了特征點數量。改進后的特征子描述方式不僅是簡化了提取過程減少了時間消耗,而且提高了SIFT算法的抗旋轉能力。在匹配過程中也因為特征向量維度的降低匹配時長也縮短。通過這兩方面的改進,相比經典的SIFT算法有了更好的實用性。