大唯機電安裝工程(蘇州)有限公司 張 博
隨著計算機技術(shù)的發(fā)展,圖像處理在許多行業(yè)得到了廣泛的應(yīng)用,圖像拼接技術(shù)可以方便快速的獲得寬視域的圖像。本文基于OpenCV計算機視覺庫和SIFT圖像匹配算法,采用C++開發(fā)語言,實現(xiàn)了圖像的快速拼接。實驗結(jié)果表明:采用SIFT算法進行圖像拼接,通過加權(quán)融合消除了拼接的裂縫現(xiàn)象,達到了預(yù)期的拼接效果。
圖像拼接技術(shù)在圖像處理領(lǐng)域占有重要的地位,它在無人機影像處理、醫(yī)學(xué)圖像處理以及安防監(jiān)控有著廣泛的應(yīng)用,具有良好的研究前景。圖像拼接的任務(wù)是將一幅或者多幅具有部分相同特征點的圖像組合在一起,形成一幅新的圖像。所形成的新的圖像具有更寬的視域,具有一定的研究價值。
尺度不變特征變換(Scale Invariant Feature Transform,SIFT)利用128維的特征向量來表示圖像中檢測到的特征點。因此,經(jīng)過SIFT算法,圖像被表示為128維的特征向量集。這個特征向量集既能夠使圖像經(jīng)過旋轉(zhuǎn)、縮放以及平移仍然保持不變,又能夠在光照和投影變換下具有較高的魯棒性。其實質(zhì)是在圖像的不同尺度空間中尋找關(guān)鍵點,并得到關(guān)鍵點的方向。其步驟可以大致分為以下五步。
(1)建立高斯差分金字塔,對不同分組中的圖像采用降采樣,使用不同尺度的高斯核對原始圖像在不同圖像層上進行卷積,進而生成高斯金字塔。然后在高斯金字塔中將相鄰的兩幅圖像相減生成高斯差分金字塔(DOG)。
(2)關(guān)鍵點的初步確定,關(guān)鍵點是由DOG空間中的局部極大、極小值點組成,通過在高斯金字塔中某一層圖像的領(lǐng)域中比較同組的相鄰兩幅圖像完成關(guān)鍵點的初始定位。
(3)為了準(zhǔn)確確定關(guān)鍵點的位置和尺度,采用三維二次函數(shù)在檢測到的初步極值點附近對三個變量進行二階泰勒展開,以獲得精確點。
(4)為關(guān)鍵點賦予主方向,為了使特征描述子具備旋轉(zhuǎn)不變性,需要利用圖像的局部特征為每個關(guān)鍵點給定一個參考方向。通過采用對圖像求取梯度的方式來計算出圖像的局部穩(wěn)定方向。計算在DOG空間中所確定的關(guān)鍵點對應(yīng)在高斯金字塔中3σ鄰域窗口中像素的梯度和方向分布。
(5)在對于在高斯差分金字塔中檢測到的關(guān)鍵點,計算高斯金字塔圖像構(gòu)建關(guān)鍵點描述符,通過以上步驟,我們找到了一張圖片中的關(guān)鍵點,擁有三個信息:位置x,y、尺度以及主方向。為了將兩張圖片中的同一關(guān)鍵點匹配起來,需要構(gòu)建一個描述符,這個描述符就是一個128維的向量。
SIFT缺點:
(1)速度慢,實時性不高。
(2)對模糊圖像和平滑邊緣圖像無效。
SIFT算法的優(yōu)點有:
(1)SIFT算法找到的圖像特征是局部的,對于旋轉(zhuǎn)、縮小放大和對比度變化具有較高的適應(yīng)性,對拍攝角度的改變、錯切變換以及附加噪聲也有較好的效果。
(2)精確性性好,特征點豐富,達到精確匹配。
(3)多量性,即使是少數(shù)目標(biāo)也能產(chǎn)生豐富的特征向量。
SIFT算法是古老而經(jīng)典的算法,時至今日,其研究價值還有很大。其應(yīng)用場景有很多,以下列舉幾種SIFT算法應(yīng)用典型場合:
物體識別
機器人定位與導(dǎo)航
圖像拼接
三維建模
手勢識別
視頻跟蹤
筆記鑒定
指紋與人臉識別
圖像拼接廣泛應(yīng)用于實際場景中,如無人機影像處理、遙感圖像等。非常貼近于我們?nèi)粘I畹囊粋€例子就是,當(dāng)你用你的手機對某一場景拍照,但你不可能一次拍下所有你想拍的東西,所以你要從左到右拍幾張照片來記錄所有你想拍的東西。這時,我們利用圖像拼接技術(shù)將圖片拼接成一幅寬視域的圖片。
利用SIFT算法實現(xiàn)圖像拼接是一種非常常用的方法,采用SIFT進行圖像拼接可以達到較高的精確度和穩(wěn)定性。下面詳細描述拼接的主要步驟。
特征點提取和匹配:
對于不同的圖像,由于圖像的元素都不同,每幅圖像都有自己獨特的特征。因此找出圖像的特征點是圖像拼接的首要任務(wù)。
圖像拼接中有很多特征檢測算法可以使用,如sift、surf、Harris角點和ORB等。本文將利用SIFT算法來進行圖像拼接,采用SIFT進行圖像拼接雖然速度比較慢,但是可以找到精確的特征點,可以達到較高的精確度和穩(wěn)定性。如圖1、圖2所示。
圖1 拼接左圖
圖2 拼接右圖
首先我們使用SIFT算法進行特征點的提取和描述,如圖3所示。
圖3 特征點檢測匹配
在不同的條件下,如光照、對比度、拍攝角度等,用同一相機或不同相機拍攝某一地點,所得到的圖像,其角度、尺度、變形等大都不同。為了順利完成圖像拼接,需要對兩幅圖像進行配準(zhǔn),盡可能的縮小要拼接圖像的差異,如圖4所示。
圖4 圖像配準(zhǔn)
接下來進行圖像拷貝,拷貝即將要匹配的左邊圖片直接拷貝在已經(jīng)獲得的匹配標(biāo)準(zhǔn)圖中,結(jié)果如圖5所示。
圖5 圖像拷貝
可以看出拼接好的圖像存在明顯的裂縫,原因是所用的拼接圖像是在不同的時間拍攝,光照存在著明顯的差異。這里我們采用前面所述的加權(quán)融合進行處理,結(jié)果如圖6所示。
圖6 圖像融合
可以看到,經(jīng)過融合處理的圖像看不到拼接的痕跡,兩圖過渡自然,達到了預(yù)期的拼接效果。
基于OpenCV利用傳統(tǒng)的經(jīng)典SIFT算法完成特征檢測,進而進行圖像配準(zhǔn)、融合。實驗結(jié)果表明:采用SIFT算法進行圖像拼接,通過加權(quán)融合消除了拼接的裂縫現(xiàn)象,達到了預(yù)期的拼接效果。