期刊VIP學術指導 符合學術規范和道德
保障品質 保證專業,沒有后顧之憂
摘要:目前主流的影像匹配算法大致可以分成兩種類型:第一類是在以待定點為中心的窗口(或稱區域)內,以影像的灰度分布為影像匹配的基礎,故稱此種類型的算法為灰度匹配(Area Based Image Matching);第二類是基于影像特征的匹配,主要用于配準特征點、線或面,這一類算法稱為特征匹配(Feature Based Matching)[1-2]。
關鍵詞:攝影測量與遙感;SIFT 算法;影像匹配;灰度模板;精度評價
0、引言
SIFT(The Scale InvariantFeature Transform)算法,全名是尺度不變特征轉換算法。SIFT 特征匹配算法屬于基于特征的匹配算法中的一種。SIFT 算法在特征提取、特征描述和特征匹配這三個方面都有自己獨特的特點,因此SIFT 算法是目前影像匹配領域的研究熱點之一。
本文在實現 SIFT 算法進行影像匹配的基礎之上,對SIFT 算法的定位精度進行分析,提出了一種評價SIFT 算法定位精度的可行方案。
1、基于 SIFT 算法的影像匹配
SIFT 特征匹配算法最初由加拿大的英屬哥倫比亞大學(British Columbia)的David G.Lowe 教授提出。該教授在1999 年9 月召開的計算機視覺國際會議(International Conferenceon Computer Vision)上發表了名為《Object Recognition from Local Scale-Invariant Features》的一篇論文。在該論文里,作者第一次提出了尺度不變特征的概念,并將其應用于影像匹配領域。2004 年1 月,該教授發表了名為《Distinctive Image Features from Scale-InvariantKeypoints》的文章,在原來提出的算法的基礎之上進行了一定的改進工作,這些改進主要包括SIFT 特征點的精確定位和特征點描述子的改進等工作,從而使SIFT 算法得到完善[3]。
使用 SIFT 算法進行影像匹配,大體上可以分為四個步驟。
1.1 在多尺度空間上生成高斯影像和高斯差分影像在不同的尺度空間上生成高斯影像和高斯差分影像是進行SIFT 特征點檢測的第一步,也是SIFT 特征點檢測算法的一個重要特點。生成高斯影像使用的函數為:
實際操作中我們使用這個函數生成一個高斯平滑掩膜,然后使用這個掩膜對影像進行處理。
按照逐步平滑處理的方法,一共可以生成3 組高斯影像。在3 組高斯影像的基礎之上,進行差分運算,又可以得到3 組高斯差分影像。
1.2 進行極值檢測、極值點精確定位和去除低對比度點、邊緣響應點由于 SIFT 算法的原理較為模式化,相關文獻以給出詳細描述,本文不再贅述。值得注意的是,極值點的檢測工作在同尺度的高斯差分金字塔影像之間進行,檢測工作發生在相鄰的連續三張影像之間。檢測的結果顯示在中間一層影像上。據此可知,每組高斯差分影像上,特征點的檢測的結果顯示在第二層和第三層之間。在這兩層影像上,分別進行特征點的搜索工作,但是對每層搜索影像而言,又有相鄰的兩層影像參與其中。這樣做的目的是確保在尺度空間和二維圖像空間都檢測到極值點。
1.3 為特征點分配方向和 SIFT 特征點描述子的生成分配方向的目的就是:利用關鍵點鄰域像素的梯度方向分布特性為每個特征點指定方向參數,使算子具備旋轉不變性。該步驟主要利用關鍵點相鄰區域內一定像素的梯度值和模來完成主方向的分配工作。
以 SIFT 特征點為中心取一個16×16 的一個窗口,在每4×4 的小塊上計算8 個方向的梯度方向直方圖,繪制每個梯度方向的累加值,即可形成一個128 維的向量,將這個向量作為SIFT 特征點的描述子。
1.4 使用特征向量進行影像匹配工作當兩幅圖像的 SIFT 特征向量生成后,采用特征點特征向量之間的歐式距離作為兩幅圖像之間特征點的相似性判定度量。
向量之間的歐式計算類似于兩點之間進行距離運算,也就是將向量中的相應的元素兩兩求差后再進行平方和運算。算例如下:A 圖像中的向量a 與B 圖像中的所有的向量b 進行歐式距離的計算:
求出最小的距離minL 和次小的距離cminL,然后計算兩個距離的比值minL/cminL,如果該比值小于0.8 就接受這一對匹配點。否則舍棄該點進行下一個特征點的計算工作。在操作過程中應該使用KDTree 數據結構進行運算。
2、匹配點評價的基本方法與匹配精確定位方法
匹配點評價的基本方法有若干種,本文選擇使用在粗匹配的基礎之上進行精確匹配來確定匹配點的精度的方法。
2.1 匹配點評價的基本方法目前評價點位的精度主要從三個方面入手:
(1)SIFT 算法的模型精度。在原文的文獻中,作者只是介紹其精度可以達到亞像素級,但是并沒有說明具體是多少,因為精度不僅與模型有關系,也和進行匹配的圖像的特點(如:
噪聲大小,視角等)有關系。查閱目前幾乎所有的文獻,基本沒有從SIFT 模型出發去評價該算法的精度的文章,也沒有找到相關的關于SIFT 模型的精度。
(2)利用匹配出的點位計算物方坐標值,然后與該點的真實值相比較,從而得到該點位的物方精度。這是最常用的一種方法,但是該方法需要一定的控制點參與,限制其在實驗室條件下的應用。
(3)計算匹配點的精確值與SIFT 匹配出的點位相比較,從而得到SIFT 匹配點的偏差值。這就帶來一個問題:如何計算出匹配點的精確位置,如果目標是一個角點或圓形標志點,可以使用已有的定位算子來完成精確定位工作。但是,遙感影像上都是無規則形狀的特征點,因此可以考慮使用二次多項式擬合的方法來求得該特征點的精確位置。
2.2 在初始位置基礎上的影像精匹配在得到的 SIFT 特征點的像素級坐標的基礎之上,在左右片上做如下處理:左片上,以該像素為中心取3╳3 的模板鄰域;右片以相應的像素為中心取5╳5 的搜索區域。在搜索區域內,采用模板區域計算相關像素的相關系數,計算公式如下這樣就可以在右片上得到匹配點周圍的9 個點的相關系數值,通過這9 個點可以采用最小二乘法擬合出一個二元二次曲面方程:
P(x, y) = ay2 + bx2 + cxy + dy + ex + f利用 Matlab 數學軟件采用最小二乘法可以得到上式的各個系數[4]:
這樣我們就可以得到匹配點的精確位置,其中X和Y是匹配點的像素級的坐標值,擬和出的精確位置的理論精度在1/20 個像素以內[5]。
但是,這樣做有一定的缺陷:該方法只有對適合進行模板匹配的的區域才有效,因為影像的精確匹配算法就是建立在影像相關系數計算并進行插值得基礎之上的。
3、實驗過程與結果
首先使用 SIFT 算法對影像進行匹配。匹配影像選擇使用512×36360 的航天遙感三線陣CCD 影像的前后和后視影像進行實驗[6],截取其中一個匹配點的實驗效果如下:
根據第三節中提出的影像精確匹配方法,采用VS2008.NET 編譯平臺和C#編程語言編寫相關程序[7]。測試其中的8 個匹配點,測試結果如下表所示:
由此可以看出各SIFT 匹配點與真實位置的最大偏差值0.323±0.05 也在0.4 個像素以內,完全符合SIFT 特征點可以得到亞像素級的精度要求。
4、結論本
文在實現 SIFT 算法進行影像匹配的基礎之上,利用在影像上的特定區域可以進行灰度模板匹配的情況,對SIFT 算法的定位精度進行分析,提出了一種評價SIFT 算法定位精度的可行方案。通過表1 中的數據可以得出結論:SIFT 匹配點與真實位置的最大偏差值也在0.4 個像素以內,完全符合SIFT 特征點可以得到亞像素級的精度要求。
[參考文獻] (References)
[1] 張劍清等著.攝影測量學[M].武漢:武漢大學出版社,2004.
[2] 李德仁等著.攝影測量與遙感概論[M].北京:測繪出版社,2003.
[3] Lowe D G. Distinctive image features f rom scale-invariant keypoint s[J]. I nternational J ournal of ComputerV ision .2004 , 60(2) :91 - 110.
[4] 蘇金明等編著.MATLAB 實用教程[M].北京:電子工業出版社,2002.
[5] 韓峰等.數字圖像匹配算法的改進及研究[J].內蒙古工業大學學報.2003,22(4):273-277[6] 王任享著.三線陣CCD 影像衛星攝影測量原理[M].北京:測繪出版社,2006.
[7] 周禮著.C#和.NET3.0 第一步[M].北京:清華大學出版社,2008.