图像拼接技术
圖像拼接技術(shù)
簡介
圖像拼接是將同一場景的多個重疊圖像拼接成較大的圖像的一種方法,在醫(yī)學成像、計算機視覺、衛(wèi)星數(shù)據(jù)、軍事目標自動識別等領(lǐng)域具有重要意義。圖像拼接的輸出是兩個輸入圖像的并集。所謂圖像拼接就是將兩張有共同拍攝區(qū)域的圖像無縫拼接在一起。這種應(yīng)用可應(yīng)用于車站的動態(tài)檢測、商城的人流檢測、十字路口的交通檢測等,給人以全景圖像,告別目前的監(jiān)控墻或視頻區(qū)域顯示的時代,減輕工作人員“眼”的壓力。
基本思想:圖像拼接并非簡單的將兩張有共同區(qū)域的圖像把相同的區(qū)域重合起來,由于兩張圖像拍攝的角度與位置不同,雖然有共同的區(qū)域,但拍攝時相機的內(nèi)參與外參均不相同,所以簡單的覆蓋拼接是不合理的。因此,對于圖像拼接需要以一張圖像為基準對另外一張圖像進行相應(yīng)的變換(透視變換),然后將透視變換后的圖像進行簡單的平移后與基準圖像的共同區(qū)域進行重合。
說明:
1、圖像預(yù)處理是為了增強圖像的特征,預(yù)處理可以包含:灰度化、去燥、畸變校正等。
2、特征點提取可用的方法有:sift、surf、fast、Harris等,sift具有旋轉(zhuǎn)與縮放不變性,surf為sift的加速,檢測效果都不錯,在此先用sift進行實現(xiàn)。
3、單應(yīng)性矩陣求取時要清楚映射關(guān)系,是第一張圖像空間到第二張圖像空間的映射,還是第二張圖像到第一張圖像的映射,這個在變換的時候很重要。
4、判斷左右 (上下)圖像是為了明確拼接關(guān)系,建議將左右圖像的判斷放在求取單應(yīng)性矩陣之前,這樣映射關(guān)系不至于顛倒。否則將會出現(xiàn)拼接成的圖像有一半是空的。
通常用到五個步驟:
特征提取 Feature Extraction:在所有輸入圖像中檢測特征點圖像配準 Image Registration:建立了圖像之間的幾何對應(yīng)關(guān)系,使它們可以在一個共同的參照系中進行變換、比較和分析。大致可以分為以下幾個類
-
直接使用圖像的像素值的算法,例如,correlation methods
-
在頻域處理的算法,例如,基于快速傅里葉變換(FFT-based)方法;
-
低水平特征的算法low level features,通常用到邊緣和角點,例如,基于特征的方法,
-
高水平特征的算法high-level features,通常用到圖像物體重疊部分,特征關(guān)系,例如,圖論方法(Graph-theoretic methods)
圖像變形 Warping:圖像變形是指將其中一幅圖像的圖像重投影,并將圖像放置在更大的畫布上。
圖像融合 Blending:圖像融合是通過改變邊界附近的圖像灰度級,去除這些縫隙,創(chuàng)建混合圖像,從而在圖像之間實現(xiàn)平滑過渡。混合模式(Blend modes)用于將兩層融合到一起。
特征點提取
特征是要匹配的兩個輸入圖像中的元素,它們是在圖像塊的內(nèi)部。這些圖像塊是圖像中的像素組。對輸入圖像進行Patch匹配。具體解釋如下: 如下圖所示,fig1和fig2給出了一個很好的patch匹配,因為fig2中有一個patch看起來和fig1中的patch非常相似。當考慮到fig3和fig4時,這里的patch并不匹配,因為fig4中有很多類似的patch,它們看起來與fig3中的patch很相似。由于像素強度很相近,所以無法進行精確的特征匹配,
為了給圖像對提供更好的特征匹配,采用角點匹配,進行定量測量。角點是很好的匹配特性。在視點變化時,角點特征是穩(wěn)定的。此外,角點的鄰域具有強度突變。利用角點檢測算法對圖像進行角點檢測。角點檢測算法有Harris角點檢測算法、SIFT特征點檢測算法((Scale Invariant Feature Transform),FAST算法角點檢測算法,SURF特征點檢測算法(Speeded-up robust feature)
Harris角點檢測算法
Harris算法是一種基于Moravec算法的點特征提取算法。1988年C. Harris 和 M.J
Stephens設(shè)計了一種圖像局部檢測窗口。通過在不同的方向上移動少量窗口,可以確定強度的平均變化。可以通過觀察小窗口內(nèi)的強度值很容易地識別角點。在移動窗口時,平坦區(qū)域在所有方向上均不會顯示強度的變化。邊緣區(qū)域在沿邊緣方向強度不會發(fā)生變化。對于角點,則在各個方向上產(chǎn)生顯著強度變化。Harris角點探測器給出了一種檢測平坦區(qū)域、邊緣和角點的數(shù)學方法。Harris檢測的特征較多,具有旋轉(zhuǎn)不變性和尺度變異性。位移下的強度變化:其中,是窗口函數(shù),是移動后的強度,是單個像素位置的強度。
Harris角點檢測算法如下:
- 對圖像中的每個像素點(x,y)計算自相關(guān)矩陣M(autocorrelation matrix M):
其中是的偏導數(shù)。
-
對圖像中的每個像素點做高斯濾波,獲得新的矩陣M,離散二維零均值高斯函數(shù)為
-
計算每個像素點(x,y)的角點度量,得到,k 的范圍是。
-
選擇局部最大值點。Harris方法認為特征點與局部最大興趣點的像素值對應(yīng)。
-
設(shè)置閾值T,檢測角點。如果 R 的局部最大值高于閾值T,那么此點為角點。
SIFT角點檢測算法
SIFT算法是尺度不變的特征點檢測算法,可用于識別其他圖像中的相似目標。SIFT的圖像特征表示為關(guān)鍵點描述符(key-point-descriptors)。在檢查圖像匹配時,將兩組關(guān)鍵點描述符作為輸入提供給最近鄰搜索(Nearest Neighbor Search,NNS),并生成一個緊密匹配的關(guān)鍵點描述符(matching
key-point-descriptors)。SIFT的計算分為四個階段:
-
尺度空間構(gòu)造(Scale-space construction)
-
尺度空間極值檢測(Scale-space extrema detection)
-
關(guān)鍵點定位(key-point localization)
-
方向分配(orientation assignment)和關(guān)鍵點描述符定義(defining
key-point descriptors)
第一階段確定潛在的興趣點。它利用高斯函數(shù)的差分(difference of Gaussian function,DOG)搜索所有尺度和圖像位置。第一階段中發(fā)現(xiàn)的所有興趣點的location和scale是確定的。根據(jù)關(guān)鍵點的穩(wěn)定性來選擇關(guān)鍵點。一個穩(wěn)定的關(guān)鍵點能夠抵抗圖像失真。在方向分配環(huán)節(jié),SIFT算法計算穩(wěn)定關(guān)鍵點周圍梯度的方向。根據(jù)局部圖像梯度方向,為每個關(guān)鍵點分配一個或多個方向。對于一組輸入幀,SIFT提取特征。圖像匹配使用Best Bin First(BBF)算法來估計輸入幀之間的初始匹配點。為了去除不屬于重疊區(qū)域的不需要的角,使用RANSAC算法。它刪除圖像對中的錯誤匹配。通過定義幀的大小、長度和寬度來實現(xiàn)幀的重投影。最后進行拼接,得到最終的輸出拼接圖像。在拼接時,檢查場景每幀中的每個像素是否屬于扭曲的第二幀。如果是,則為該像素分配來自第一幀的對應(yīng)像素的值。SIFT算法既具有旋轉(zhuǎn)不變性,又具有尺度不變性。SIFT非常適合于高分辨率圖像中的目標檢測。它是一種魯棒的圖像比較算法,雖然速度較慢。SIFT算法的運行時間很大,因為比較兩幅圖像需要更多的時間。
FAST 算法
FAST是Trajkovic和Hedley在1998年創(chuàng)建的角點檢測算法。對于FAST,角點的檢測優(yōu)于邊緣檢測,因為角點有二維強度變化,容易從鄰近點中區(qū)分出來。適用于實時圖像處理應(yīng)用程序。
FAST角點探測器應(yīng)該滿足以下要求:
-
檢測到的位置要一致,對噪聲變化不敏感,對同一場景的多幅圖像不能移動。
-
準確;檢測到的角點應(yīng)該盡可能接近正確的位置。
-
速度;角落探測器應(yīng)該足夠快。
原理:首先圍繞一個候選角點選擇16個像素點。如果其中有n(n一般為12)個連續(xù)的像素都比候選角點加上一個閾值要高,或者比候選角點減去一個閾值要低,那么此點即為角點(如圖4所示)
為了加快FAST算法的速度,通常會使用角點響應(yīng)函數(shù)( corner response
function, CRF)。該函數(shù)根據(jù)局部鄰域的圖像強度給出角點強度的數(shù)值。對圖像進行CRF計算,并將CRF的局部最大值作為角點,采用多網(wǎng)格(multi-grid)技術(shù)提高了算法的計算速度,并對檢測到的假角點進行了抑制。FAST是一種精確、快速的算法,具有良好的定位(位置精度)和較高的點可靠性。FAST的角點檢測的算法難點在于最佳閾值的選擇。
SURF算法
Speed-up Robust Feature(SURF)角點探測器采用三個特征檢測步驟;檢測(Detection)、描述(Description)、匹配(Matching),SURF通過考慮被檢測點的質(zhì)量,加快了位移的檢測過程。它更注重加快匹配步驟。使用Hessian矩陣和低維描述符來顯著提高匹配速度。SURF在計算機視覺社區(qū)中得到了廣泛的應(yīng)用。SURF在不變特征定位上十分有效和魯棒
圖像配準
在特征點被檢測出來之后,需要以某種方式將它們關(guān)聯(lián)起來,可以通過NCC或者SDD(Sum of Squared Difference)方法來確定其對應(yīng)關(guān)系。
歸一化互相關(guān)(normalized cross correlation,NCC)
互相關(guān)的工作原理是分析第一幅圖像中每個點周圍的像素窗口,并將它們與第二幅圖像中每個點周圍的像素窗口關(guān)聯(lián)起來。將雙向相關(guān)性最大的點作為對應(yīng)的對。
基于圖像強度值計算在兩個圖像中的每個位移(shifts)的“窗口”之間的相似性
其中,是窗口的平均值圖像是窗口的像素坐標,是通過NCC系數(shù)計算出的位移或偏移。NCC系數(shù)的范圍為。NCC峰值相對應(yīng)的位移參數(shù)表示兩個圖像之間的幾何變換。此方法的優(yōu)點是計算簡單,但是速度特別慢。此外,此類算法要求源圖像之間必須有顯著的重疊。
互信息(Mutual Information, MI)
互信息測量基于兩個圖像之間共享信息數(shù)量的相似性。
兩個圖像與之間的MI以熵表示:
其中, 和分別是和的熵。表示兩個圖像之間的聯(lián)合熵。
g是可能的灰度值,是g的概率分布函數(shù)
然而,從圖中可以看到,許多點被錯誤地關(guān)聯(lián)在一起。’
計算單應(yīng)矩陣
單應(yīng)矩陣估計是圖像拼接的第三步。在單應(yīng)矩陣估計中,不屬于重疊區(qū)域的不需要的角被刪除。采用RANSAC算法進行單應(yīng)。
隨機樣本一致算法RANSAC(random sample
consensus)
RANSAC算法從可能含有異常值的觀測數(shù)據(jù)集中擬合數(shù)學模型,是一種魯棒參數(shù)估計的迭代方法。該算法是不確定性的,因為它只在一定的概率下產(chǎn)生一個合理的結(jié)果,隨著執(zhí)行更多的迭代,這個概率會增加。RANSAC算法用于在存在大量可用數(shù)據(jù)外行的情況下以魯棒的方式擬合模型。RANSAC算法在計算機視覺中有許多應(yīng)用。
RANSAC原理
從數(shù)據(jù)集中隨機選取一組數(shù)據(jù)并認為是有效數(shù)據(jù)(內(nèi)點)來確定待定參數(shù)模型,以此模型測試數(shù)據(jù)集中的所有數(shù)據(jù),滿足該模型的數(shù)據(jù)成為內(nèi)點,反之為外點(通常為噪聲、錯誤測量或不正確數(shù)據(jù)的點),迭代執(zhí)行,直到某一個參數(shù)模型得到的內(nèi)點數(shù)最大,則該模型為最優(yōu)模型。考慮如下假設(shè):
-
參數(shù)可以從N個數(shù)據(jù)項中估計。
-
可用的數(shù)據(jù)項總共是M。
-
隨機選擇的數(shù)據(jù)項成為好模型的一部分的概率為
-
如果存在一個很好的擬合,那么算法在沒有找到一個很好的擬合的情況下退出的概率是。
RANSAC步驟
-
隨機選取N個數(shù)據(jù)(3個點對)
-
估計參數(shù)x(計算變換矩陣H)
-
根于使用者設(shè)定的閾值,找到M中合適該模型向量x的的數(shù)據(jù)對總數(shù)量K(計算每個匹配點經(jīng)過變換矩陣后到對應(yīng)匹配點的距離,根據(jù)預(yù)先設(shè)定的閾值將匹配點集合分為內(nèi)點和外點,如果內(nèi)點足夠多,則H足夠合理,用所有內(nèi)點重新估計H)。
-
如果符合的數(shù)量K足夠大,則接受該模型并退出
-
重復1-4步驟 L次
-
到這一步退出
K有多大取決于認為屬于合適結(jié)構(gòu)的數(shù)據(jù)的百分比以及圖像中有多少結(jié)構(gòu)。如果存在多個結(jié)構(gòu),則在成功擬合后,刪除擬合數(shù)據(jù)并重做RANSAC。
迭代次數(shù)L可以用如下公式計算:
優(yōu)點:可以robust地估計模型參數(shù) 缺點:迭代次數(shù)無上限,設(shè)置的迭代次數(shù)會影響算法時間復雜度和精確程度,并且需要預(yù)設(shè)閾值
在執(zhí)行RANSAC之后,只能在圖像中看到正確的匹配,因為RANSAC找到了一個與大多數(shù)點相關(guān)的單應(yīng)矩陣,并將不正確的匹配作為異常值丟棄
單應(yīng)矩陣(Homography)
有了兩組相關(guān)點,接下來就需要建立兩組點的轉(zhuǎn)換關(guān)系,也就是圖像變換關(guān)系。單應(yīng)性是兩個空間之間的映射,常用于表示同一場景的兩個圖像之間的對應(yīng)關(guān)系,可以匹配大部分相關(guān)的特征點,并且能實現(xiàn)圖像投影,使一張圖通過投影和另一張圖實現(xiàn)大面積的重合。
設(shè)2個圖像的匹配點分別是,,則必須滿足公式:
且由于兩向量共線,所以其中,H 為8參數(shù)的變換矩陣,可知四點確定一個H
令
則有Bh=0,N個點對給出2N個線性約束。
用RANSAC方法估算H:
-
首先檢測兩邊圖像的角點
-
在角點之間應(yīng)用方差歸一化相關(guān),收集相關(guān)性足夠高的對,形成一組候選匹配。
-
選擇四個點,計算H
-
選擇與單應(yīng)性一致的配對。如果對于某些閾值:Dist(Hp、q) <ε,則點對(p, q)被認為與單應(yīng)性H一致
-
重復34步,直到足夠多的點對滿足H
-
使用所有滿足條件的點對,通過公式重新計算H
圖像變形和融合
最后一步是將所有輸入圖像變形并融合到一個符合的輸出圖像中。基本上,可以簡單地將所有輸入的圖像變形到一個平面上,這個平面名為復合全景平面。
圖像變形步驟
-
首先計算每個輸入圖像的變形圖像坐標范圍,得到輸出圖像大小,可以很容易地通過映射每個源圖像的四個角并且計算坐標(x,y)的最小值和最大值確定輸出圖像的大小。最后,需要計算指定參考圖像原點相對于輸出全景圖的偏移量的偏移量xoffset和偏移量yoffset。
-
下一步是使用上面所述的反向變形,將每個輸入圖像的像素映射到參考圖像定義的平面上,分別執(zhí)行點的正向變形和反向變形。
平滑過渡(transition smoothing)圖像融合方法包括 羽化(feathering),
金字塔(pyramid), 梯度(gradient)
圖形融合
最后一步是在重疊區(qū)域融合像素顏色,以避免接縫。最簡單的可用形式是使用羽化(feathering),它使用加權(quán)平均顏色值融合重疊的像素。通常使用alpha因子,通常稱為alpha通道,它在中心像素處的值為1,在與邊界像素線性遞減后變?yōu)?。當輸出拼接圖像中至少有兩幅重疊圖像時,將使用如下的alpha值來計算其中一個像素處的顏色:假設(shè)兩個圖像 ,在輸出圖像中重疊;每個像素點(x,y)在圖像,其中(R,G,B)是像素的顏色值,將在縫合后的輸出圖像中計算(x, y)的像素值:
小結(jié)
上述內(nèi)容對一些常用的算法進行了簡單的概述。Harris角點檢測方法具有魯棒性和旋轉(zhuǎn)不變性。然而,它是尺度變化的。FAST算法具有旋轉(zhuǎn)不變性和尺度不變性,且具有較好的執(zhí)行時間。但是當有噪聲存在時,它的性能很差。SIFT算法具有旋轉(zhuǎn)不變性和尺度不變性,并且在有噪聲情況下更有效。它具有非常明顯的特征。然而,它受到光照變化的影響。該算法在執(zhí)行時間和光照不變性方面具有較好的性能。
參考
-
OpenCV探索之路(二十四)圖像拼接和圖像融合技術(shù)
-
Debabrata Ghosh,Naima Kaabouch. A survey on image
mosaicing techniques[J]. Journal of Visual Communication and Image
Representation,2016,34.地址 -
圖像拼接綜述
總結(jié)
- 上一篇: SLAM的通用框架:GSLAM
- 下一篇: 匹配算法:局部结构保留