SURF算法与SIFT算法的性能比较——图像特征点检测与提取算法分析
圖像特征點提取算法的算法研究(SURF和SIFT算法)
?
1. 摘要
?
? ? 計算機視覺中,很大一部分研究集中在圖像特征提取和特征生成算法上。對圖像的優化,不同于一般數學問題的優化方法,圖像的優化是對像素點,在某一個小的鄰域內,進行特征的提取或者圖像的分析,該優化主要是進行局部區域的優化,要尋找局部極值,而不像傳統的優化算法那樣進行全局的優化求解。
?
由于相同物體在不同狀態下所產生的圖像不同,使得不同圖像具有不同亮度,不同旋轉方向和不同尺度的差異。想要提取出具有代表性且性質魯棒的特征點,一直是學術研究的焦點之一。為了引入尺度不變的特征,將檢測到的每個特征點都計算其對應的尺寸因子,方便特征點匹配和圖像拼接等后續圖像應用,Bay于2006年提出了SURF(Speeded Up Robust Features)特征檢測算法。該算法具有較好的尺度不變性和旋轉不變性,并且具有快速的計算能力,一直是圖像拼接、圖像檢測和恢復等應用采用的主流算法之一。
本文主要敘述SURF特征點提取的優化步驟,將其與SIFT特征點提取算法,進行分析和比較,最后給出了關于圖像亮度,圖像的旋轉和圖像的尺度等三個方面的性能比較,驗證了SURF特征點檢測算法優化性能。
SIFT(Scale invariant feature Transform)算法是由David Lowe提出的尺度不變特征轉換算法,其目標是解決低層次特征提取及其圖像匹配中的實際問題。該算法是一種基于尺度空間,對圖像縮放變換保持不變性的圖像局部特征描述子。其主要分為三部分進行圖像的特征點提取和描述。
SIFT算法的優點是特征穩定,對旋轉、尺度變換、亮度保持不變性,對視角變換、噪聲也有一定程度的穩定性;缺點是實時性不高,并且對于邊緣光滑目標的特征點提取能力較弱,不夠優化。因此,更加魯棒的快速特征提取算法SURF應運而生,由于SURF運算簡單,效率高,特征計算時間短,到今天都還受歡迎。
SURF算法是對SIFT算法的加強版本,同時能夠加速提取更加魯棒的特征,是SIFT算子的速度的三倍以上,并且提取出的特征點更有代表性。同時也對描述子的生成以及特征點的匹配進行了優化。其主要采用了Harr特征以及積分圖像,加快了程序搜索和運行的時間,優化了特征點提取的理論算法。
?
?
?
2. 優化過程
SURF算法的特征點檢測優化過程如下:
2.1 構建積分圖像,在圖像每個像素點上,生成積分圖像。
? ? ?其中,在一個特征點x=(x,y)的鄰域上,計算其積分圖像I(x,y):
?
?
在圖像上,積分圖像的意義如下圖1所示。
?
? ? ? ? ? ? ? ? ??
2.2 對當前的積分圖像I,構建Hessian矩陣,進行逼近,提取特征點。
構建Hessian矩陣的目的是為了生成圖像穩定的邊緣點,描述圖像的局部變化。給定點積分圖像中一點,則關于X點在尺度因子?下的Hessian矩陣定義為:
其中,Lxx(x,sigma)表示在積分圖像I的點X處的高斯二階微分的卷積,同理,Lxy(x,sigma)表示對圖像的卷積。
?
當Hessian矩陣的判別式取得局部極大值時,判定當前點是比周圍鄰域內其他點更亮或更暗的點,由此來定位關鍵點的位置。在離散數字圖像中,x方向的一階導數是相鄰像素的灰度差:
????????????????? ??????????????????
x方向的二階導數為:
? ? ? ? ??
由于在連續函數中,可以通過判斷Hessian矩陣的特征值的符號來判斷當前點是否為極值點,Hessian矩陣的判別式為:
???????????????? ????????????????
在圖像的處理中,由于要特征點的尺度不變性,就需要利用高斯濾波,讓特征點與尺度無關,隨后在進行Hessian 矩陣的構造。高斯濾波公式如下:
????????????????? ???????????
為了加速處理,采用Box濾波器對高斯二階微分模板進行近似處理。
?
圖2:從左到右依次為y方向的二階高斯微分模板;xy方向的二階高斯微分模板;
對y方向近似的Box濾波器;對xy方向進行的Box濾波器。
通過近似后,我們可以得到圖像的Hessian矩陣判別式:
??????????????? ??????????????
為了平衡使用Box濾波器帶來的近似誤差,我們在Dxy方向上乘以一個加權系數來抵消誤差。因為我們使用的是9*9的高斯模板,標準差為1.2。所以有:
?????????????????????
按照上述的誤差因子,在構建的矩陣中,通常不會改變,因此在接下來的特征點判斷中,不改變w的值。最后有了判別式:
????????????? ?????????????
通過計算的det(Happrox)值來得到像素點在尺度的響應圖像。
2.3 構造尺度空間
由于SURF需要圖像在不同的尺度空間下,具有尺度不變性,因此內部需要對圖像進行處理,構建出不同尺度的圖像,得到更加魯棒的特征點。具體方法是:構造尺度空間傳統的方法即構造一個高斯金字塔,原始圖像作為最底層,然后對圖像進行高斯模糊再降采樣(2倍)作為下一層圖像,循環迭代下去。高斯金字塔是對原圖像的尺寸是在不斷變化的,高斯模板尺寸不變。每一層的建立必須等到上一層構造完畢后才能進行處理,依賴性很強,這樣造成速度上很慢。SURF構建尺度金字塔的方法采用原圖像大小不變,變化的是模板大小,即采用變化的模板盒子尺寸對原圖像進行濾波,構造出尺度空間。同時,SURF可以采用并行運算,對金字塔中的每層圖像同時進行處理。通過逐漸增大的盒子尺寸濾波模板與積分圖像卷積產生的Hessian矩陣行列式的響應圖像,構造出金字塔。
?
圖3:左圖為高斯金字塔的構建方法;右圖為SURF的尺度空間構建方法。
2.4 非極大值抑制
對每層圖像上的每個像素與空間鄰域內和尺度鄰域內的響應值比較,同層上有8個鄰域像元,向量尺度空間共有2×9=18個,共計26個像元的值進行比較,如果是極大值則保留下來,作為候選特征點。同時如果特征點的響應值小于Hessian行列式的閾值,也被排除。
2.5 特征點定位于提取
由于是離散空間的極值點,通過擬合方法,準確定位到特征點的位置,每個特征點包含三個參數H(x,y,sigma),即位置與尺度。
??????????????????????????
對x求導,并令其為0,可以得到:
?????????????????????? ??????????????????
其中,兩個因子的計算式為:
???????????,????????????
求得的x_hat=(x,y,sigma),即獲得在三個方向的偏移量,其中sigma表示特征點所在的尺度空間。
2.6 選取特征點主方向確定
為了保證旋轉不變性,在SURF中,不統計其梯度直方圖,而是統計特征點領域內的Harr小波特征。即以特征點為中心,計算半徑為6s(s為特征點所在的尺度值)的鄰域內,統計60°扇形內所有點在x(水平)和y(垂直)方向的Haar小波響應總和(Haar小波邊長取4s),并給這些響應值賦高斯權重系數,使得靠近特征點的響應貢獻大,而遠離特征點的響應貢獻小,然后60°范圍內的響應相加以形成新的矢量,遍歷整個圓形區域,選擇最長矢量的方向為該特征點的主方向。這樣,通過特征點逐個進行計算,得到每一個特征點的主方向。該過程的示意圖如下:
?
圖4:對選取的特征點選取主方向,最右邊的圖為最終主方向。
2.7 生成特征點描述子
在SIFT中,是取特征點周圍4×4個區域塊,統計每小塊內8個梯度方向,用著4×4×8=128維向量作為SIFT特征的描述子。
SURF算法中,也是在特征點周圍取一個4×4的矩形區域塊,但是所取得矩形區域方向是沿著特征點的主方向。每個子區域統計25個像素的水平方向和垂直方向的Haar小波特征,這里的水平和垂直方向都是相對主方向而言的。該Haar小波特征為水平方向值之和、垂直方向值之和、水平方向絕對值之和以及垂直方向絕對值之和4個方向。該過程示意圖如下:
?
圖5:特征點描述子的生成示意圖。
把這4個值作為每個子塊區域的特征向量,所以一共有4×4×4=64維向量作為SURF特征的描述子,比SIFT特征的描述子減少了2倍。
2.8 特征點匹配
與SIFT特征點匹配類似,SURF也是通過計算兩個特征點間的歐式距離來確定匹配度,歐氏距離越短,代表兩個特征點的匹配度越好。不同的是SURF還加入了Hessian矩陣跡的判斷,如果兩個特征點的矩陣跡正負號相同,代表這兩個特征具有相同方向上的對比度變化,如果不同,說明這兩個特征點的對比度變化方向是相反的,即使歐氏距離為0,直接予以排除。
3. 特征點檢測算法實現效果比較
通過在Windows 7,64位操作系統,Intel Core i7-4790K 4GHz CPU,8GB運存進行實現。采用紅色標出特征點,效果如下:
?
圖6 :SURF算法特征點提取效果圖
通過選取一副參考圖像,再選取另外三種分別具有尺度,旋轉和明暗改變的圖像,對兩種特征點檢測算法進行測試。改變其中的參數,對其檢測出的特征點個數,檢測和匹配時間以及準確程度,進行仿真和評估。
3.1 強度變化下的匹配性能評估
本組圖像對相同的物體,選取一張相對參考圖像較陰暗的匹配圖像。其中主要變量是像素的強度,圖像的旋轉和尺度保持不變。圖像匹配的結果和性能參數比較展示在圖7和表1中。
圖7:圖像強度變化的匹配效果圖
其中,執行時間指的是特征點檢測和匹配時間。從表1的實驗結果可以看出,在圖像強度變化的情況下, SIFT的匹配率較高,為59.0%。但從執行時間來看, SURF的速度是SIFT的4倍,說明SURF的檢測和匹配速度較快。
表1 不同強度下的圖像匹配結果
| 算法 | 執行時間 | 圖1特點 個數 | 圖2特征點 個數 | 匹配對數 | 匹配率(%) |
| SURF | 0.3640s | 304 | 286 | 153 | 53.5 |
| SIFT | 1.3213s | 200 | 200 | 118 | 59.0 |
?
3.2 尺度變化的匹配性能評估
在本組實驗中,對參考圖像,選取目標相同但具有尺度變化的匹配圖像,進行兩種算法的評估。圖像匹配的結果和性能參數比較展示在圖8和表2中。
?
圖8:圖像尺度變化的匹配結果
從實驗的執行時間可以看出,SURF的速度在尺度變換下,依然比SIFT快4倍左右。雖然SIFT的匹配率為41.0%,在不同尺度下的匹配率最高,但結合實驗的效果圖,可以看出SIFT存在較多的誤匹配。相反,雖然SURF的匹配率為30.0%,但其實際匹配效果較SIFT算法好,特征點匹配的精確度高于SIFT算法。在尺度變化下,SIFT的性能已經開始大降。
表2 不同尺度下的圖像匹配結果
| 算法 | 執行時間 | 圖1特征點 個數 | 圖2特征點 個數 | 匹配對數 | 匹配率(%) | ||
| SURF | 0.3769s | 200 | 200 | 60 | 30.0 | ||
| SIFT | 1.3000s | 200 | 200 | 82 | 41.0 | ||
3..33 旋轉變化的匹配性能評估
本組實驗,對目標進行旋轉,再進行匹配,可以檢測出算法的旋轉不變性。圖像匹配的結果和性能參數比較展示在圖9和表3中,其中目標旋轉約為45°。
圖9:圖像尺度變化的匹配效果圖
從表3可以看出,SURF算法相對于SIFT算法,匹配率在91.0%,說明對于旋轉的目標,該算法具有較強的旋轉不變性。而SIFT的匹配率最低,為51.0%。從圖9的匹配結果可以看出,SIFT算法的匹配結果較差。不能準確的對旋轉后的圖像進行特征點匹配,且算法執行時間較長。
表3 不同角度下的圖像匹配結果
| 算法 | 執行時間 | 圖1特征點 個數 | 圖2特征點 個數 | 匹配對數 | 匹配率(%) | ||
| SURF | 0.1268s | 200 | 200 | 182 | 91.0 | ||
| SIFT | 1.3386s | 200 | 200 | 102 | 51.0 | ||
3.4 結論
通過對圖像的特征點提取算法進行優化,引入了Hessian矩陣,在特征點的判斷中,計算積分圖像的2階偏導數,組成Hessian矩陣。然后通過Hessian矩陣的行列式大小來進行判斷。隨后對Hessian矩陣求導,通過相關計算可以獲得特征點的位置和尺度,這是優化的核心。
4. 參考文獻
[1] H. Bay, T. Tuytelaars, and L.Van Gool. Surf: Speeded up robust features. InEuropean Conference onComputer Vision, May 2006. 1, 2
[2] E. Rosten and T. Drummond.Machine learning for highspeed corner detection. In European Conference onComputer Vision, volume 1, 2006. 1
[3] D. G. Lowe. Distinctive imagefeatures from scale-invarian keypoints. International Journal of ComputerVision, 60(2):91–110, 2004. 1, 2
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的SURF算法与SIFT算法的性能比较——图像特征点检测与提取算法分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有亲在纽约吗?请教纽约资深IT工程师年薪
- 下一篇: 基于CNN目标检测方法(RCNN,Fas