前言
圖像拼接在實際的應用場景很廣,比如無人機航拍,遙感圖像等等,圖像拼接是進一步做圖像理解基礎步驟,拼接效果的好壞直接影響接下來的工作,所以一個好的圖像拼接算法非常重要。
再舉一個身邊的例子吧,你用你的手機對某一場景拍照,但是你沒有辦法一次將所有你要拍的景物全部拍下來,所以你對該場景從左往右依次拍了好幾張圖,來把你要拍的所有景物記錄下來。那么我們能不能把這些圖像拼接成一個大圖呢?
這是一個較為新穎的競賽課題方向,學長非常推薦!
?? 更多資料, 項目分享:文章來源:http://www.zghlxwxcb.cn/news/detail-643744.html
https://gitee.com/dancheng-senior/postgraduate文章來源地址http://www.zghlxwxcb.cn/news/detail-643744.html
一、拼接效果
依照慣例, 廢話不多說,先上拼接效果
拼接左圖:
拼接右圖:
拼接效果:
拼接前:
拼接后:
二、算法介紹
1.拼接算法簡介
圖像拼接技術就是將數(shù)張有重疊部分的圖像(可能是不同時間、不同視角或者不同傳感器獲得的)拼成一幅無縫的全景圖或高分辨率圖像的技術。在醫(yī)學成像、計算機視覺、衛(wèi)星數(shù)據(jù)、軍事目標自動識別等領域具有重要意義。
圖像拼接目前有很多算法,圖像拼接的質(zhì)量,主要依賴于圖像的配準程度,因此通過不同的圖像匹配方式將算法分為以下兩種:
1.1 基于區(qū)域相關拼接算法
該算法比較傳統(tǒng)和普遍,從待拼接圖像的灰度值出發(fā),對待配準圖像中一塊區(qū)域與參考圖像中的相同尺寸的區(qū)域使用最小二乘法或者其它數(shù)學方法計算其灰度值的差異(1.通過累加各點灰度的差值,2.計算兩塊區(qū)域的對應像素點灰度值的相關系數(shù),相關系數(shù)越大,則兩塊圖像的匹配程度越高,3.兩者中計算相關系數(shù)的效果更好)。對此差異比較后來判斷待拼接圖像重疊區(qū)域的相似程度,由此得到待拼接圖像重疊區(qū)域的范圍和位置,從而實現(xiàn)圖像拼接。
也可以通過FFT 變換將圖像由時域變換到頻域,然后再進行配準。對位移量比較大的圖像,可以先校正圖像的旋轉,然后建立兩幅圖像之間的映射關系。
1.2 基于特征相關拼接算法
于特征的配準方法不是直接利用圖像的像素值,而是通過像素導出圖像的特征,然后以圖像特征為標準,對圖像重疊部分的對應特征區(qū)域進行搜索匹配,該類拼接算法有比較高的健壯性和魯棒性。
在兩幅圖像對應的特征集中利用特征匹配算法盡可能地將存在對應關系的特征對選擇出來。一系列的圖像分割技術都被用到特征的抽取和邊界檢測上。
1.3 拼接算法的基本流程
- 根據(jù)給定圖像/集,實現(xiàn)特征匹配
- 通過匹配特征計算圖像之間的變換結構
- 利用圖像變換結構,實現(xiàn)圖像映射
- 針對疊加后的圖像,采用APAP之類的算法, 對齊特征點
- 通過圖割方法,自動選取拼接縫
- 根據(jù)multi-band bleing策略實現(xiàn)融合
2. 拼接算法原理
2.1 第一種:特征匹配
特征是要匹配的兩個輸入圖像中的元素,為了給圖像提供更好的特征匹配,采用角點匹配,進行定量測量。在視點變化時,角點特征是穩(wěn)定的。角點檢測算法有Harris角點檢測算法、SIFT特征點檢測算法、FAST角點檢測算法、SURF特征點檢測算法。
本次實驗使用的Opencv stitch源碼中默認第一選擇是SURF特征點檢測,第二是ORB特征點檢測。
SURF(Speeded Up Robust
Features)改進了特征的提取和描述方式,用一種更為高效的方式完成特征的提取和描述。它是SIFT的高效變種,也是提取尺度不變特征,算法步驟與SIFT算法大致相同,但采用的方法不一樣,SURF算法要比SIFT算法更高效。
2. 2 第二種:計算圖像之間的變換結構
- 2.1.SURF使用Hessian矩陣來檢測特征點,該矩陣是x,y方向的二階導數(shù)矩陣,可測量一個函數(shù)的局部曲率,其行列式值代表像素點周圍的變化量,特征點需取行列式值的極值點。
- 2.2特征點定位:通過特征點鄰近信息插補來定位特征點。
- 2.3方向定位:通過計算特征點周圍像素點x,y方向的哈爾小波變換,并將x,y方向的變換值在xy平面某一角度區(qū)間內(nèi)相加組成一個向量,在所有的向量當中最長的(即x、y分量最大的)即為此特征點的方向。
- 2.4特征描述子:選定了特征點的方向后,其周圍相素點需要以此方向為基準來建立描述子。此時以5 ? 5 5 55?5個像素點為一個子區(qū)域,取特征點周圍 20 ? 20 20 2020?20個像素點的范圍共16個子區(qū)域,計算子區(qū)域內(nèi)的x、y方向(此時以平行特征點方向為x、垂直特征點方向為y的哈爾小波轉換總和Σdx、ΣdyΣdx、Σdy與其向量長度總和Σ|dx|、Σ|dy|Σ|dx|、Σ|dy|共四個量值,共可產(chǎn)生一個64維的描
- 2.5如果兩個特征點的矩陣跡正負號相同,代表這兩個特征具有相同方向上的對比度變化,如果不同,說明這兩個特征點的對比度變化方向是相反的,即使歐氏距離為0,也直接予以排除。
- 2.6用方型濾波器取代SIFT中的高斯濾波器,利用積分圖(計算位于濾波器方型的四個角落值)大幅提高運算速度。
2. 3 第三種:通過graph cut尋找拼接縫
上圖中,我們把兩個Patch拼合到一起,它們首先被放置為有一定重合區(qū)域。為了讓兩者之間的縫隙盡可能的不明顯,我們需要知道一個分割線(cut),在這個分割線的左邊,圖像像素由A貢獻,相反在其右邊,圖像像素則由B貢獻。
這里我們將輸出的圖像看做是由”圖(Graph)“所表示,并且給這個Graph兩個端點,一個是A,一個是B:
上圖中,標有數(shù)字的節(jié)點實際上是重合區(qū)域的像素,節(jié)點之間的連接都是有代價的。我們需要拿起剪刀從某個連接上剪掉某些連接,并且要使得被剪掉的連接的代價之和最小化,這就是最典型的圖算法中的最小割問題(min
cut),它也對應著所謂的最大流問題(max flow)。
那么,如何定義連接之間的代價呢?這里假設在重合區(qū)域兩個相鄰的輸出像素分別是s和t。我們知道輸出的像素既可能來自于A,也可能來自于B,于是我們用A(s),B(s)來表示s點在A圖和B圖的顏色,
用A(t),B(t)來表示t點在A圖和B圖的顏色。
于是,s點和t點的連接的代價被定義為:
我們要做的就是尋找一個切割縫,最小化M ( s , t , A , B )
M(s,t,A,B)M(s,t,A,B)當找到這條縫之后,左邊的像素從A中拷貝而來,而右邊的像素則從B中拷貝而來即可。
接下來就可以不斷的拼合更多的Patch,目標是用越來越多次的覆蓋輸出圖片中的縫隙,使得圖像重合部分越來越多,直到代價值收斂。
最后
?? 更多資料, 項目分享:
https://gitee.com/dancheng-senior/postgraduate
到了這里,關于計算機競賽 - 基于機器視覺的圖像拼接算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!