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