圖像拼接
0 簡介
圖像拼接是將同一場景的多個重疊圖像拼接成較大的圖像的一種方法,在醫學成像、計算機視覺、衛星數據、軍事目標自動識別等領域具有重要意義。圖像拼接的輸出是兩個輸入圖像的並集。通常用到五個步驟:
特徵提取 Feature Extraction:在所有輸入圖像中檢測特徵點
圖像配準 Image Registration:建立了圖像之間的幾何對應關係,使它們可以在一個共同的參照系中進行變換、比較和分析。
大致可以分爲以下幾個類
- 直接使用圖像的像素值的算法,例如,correlation methods
- 在頻域處理的算法,例如,基於快速傅里葉變換(FFT-based)方法;
- 低水平特徵的算法low level features,通常用到邊緣和角點,例如,基於特徵的方法,
- 高水平特徵的算法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角點檢測算法如下:
- 對圖像中的每個像素點計算自相關矩陣(autocorrelation matrix M):
其中是的偏導數 - 對圖像中的每個像素點做高斯濾波,獲得新的矩陣,離散二維零均值高斯函數爲
- 計算每個像素點(x,y)的角點度量,得到, 的範圍是。
- 選擇局部最大值點。Harris方法認爲特徵點與局部最大興趣點的像素值對應。
- 設置閾值T,檢測角點。如果 的局部最大值高於閾值,那麼此點爲角點。
SIFT角點檢測算法
SIFT算法是尺度不變的特徵點檢測算法,可用於識別其他圖像中的相似目標。SIFT的圖像特徵表示爲關鍵點描述符(key-point-descriptors)。在檢查圖像匹配時,將兩組關鍵點描述符作爲輸入提供給最近鄰搜索(Nearest Neighbor Search,NNS),並生成一個緊密匹配的關鍵點描述符(matching key-point-descriptors)。
SIFT的計算分爲四個階段:
- 尺度空間構造(Scale-space construction)
- 尺度空間極值檢測(Scale-space extrema detection)
- 關鍵點定位(key-point localization)
- 方向分配(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角點探測器應該滿足以下要求:
- 檢測到的位置要一致,對噪聲變化不敏感,對同一場景的多幅圖像不能移動。
- 準確;檢測到的角點應該儘可能接近正確的位置。
- 速度;角落探測器應該足夠快。
原理:首先圍繞一個候選角點選擇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以熵表示:
其中, 和分別是和的熵。表示兩個圖像之間的聯合熵。
是可能的灰度值,是的概率分佈函數
然而,從圖中我們可以看到,許多點被錯誤地關聯在一起。
計算單應矩陣
單應矩陣估計是圖像拼接的第三步。在單應矩陣估計中,不屬於重疊區域的不需要的角被刪除。採用RANSAC算法進行單應。
隨機樣本一致算法RANSAC(random sample consensus)
RANSAC算法從可能含有異常值的觀測數據集中擬合數學模型,是一種魯棒參數估計的迭代方法。該算法是不確定性的,因爲它只在一定的概率下產生一個合理的結果,隨着執行更多的迭代,這個概率會增加。RANSAC算法用於在存在大量可用數據外行的情況下以魯棒的方式擬合模型。RANSAC算法在計算機視覺中有許多應用。
RANSAC原理
從數據集中隨機選取一組數據並認爲是有效數據(內點)來確定待定參數模型,以此模型測試數據集中的所有數據,滿足該模型的數據成爲內點,反之爲外點(通常爲噪聲、錯誤測量或不正確數據的點),迭代執行,直到某一個參數模型得到的內點數最大,則該模型爲最優模型。
考慮如下假設:
- 參數可以從N個數據項中估計。
- 可用的數據項總共是M。
- 隨機選擇的數據項成爲好模型的一部分的概率爲。
- 如果存在一個很好的擬合,那麼算法在沒有找到一個很好的擬合的情況下退出的概率是。
RANSAC步驟
- 隨機選取N個數據(3個點對)
- 估計參數x(計算變換矩陣H)
- 根於使用者設定的閾值,找到M中合適該模型向量x的的數據對總數量K( 計算每個匹配點經過變換矩陣後到對應匹配點的距離,根據預先設定的閾值將匹配點集合分爲內點和外點,如果內點足夠多,則H足夠合理,用所有內點重新估計H)。
- 如果符合的數量K足夠大,則接受該模型並退出
- 重複1-4步驟 L次
- 到這一步退出
K有多大取決於我們認爲屬於合適結構的數據的百分比以及圖像中有多少結構。如果存在多個結構,則在成功擬合後,刪除擬合數據並重做RANSAC。
迭代次數L可以用如下公式計算:
優點:可以robust地估計模型參數
缺點:迭代次數無上限,設置的迭代次數會影響算法時間複雜度和精確程度,並且需要預設閾值
在執行RANSAC之後,我們只能在圖像中看到正確的匹配,因爲RANSAC找到了一個與大多數點相關的單應矩陣,並將不正確的匹配作爲異常值丟棄
單應矩陣(Homography)
有了兩組相關點,接下來就需要建立兩組點的轉換關係,也就是圖像變換關係。單應性是兩個空間之間的映射,常用於表示同一場景的兩個圖像之間的對應關係,可以匹配大部分相關的特徵點,並且能實現圖像投影,使一張圖通過投影和另一張圖實現大面積的重合。
設2個圖像的匹配點分別是,,則必須滿足公式:
且由於兩向量共線,所以其中, 爲8參數的變換矩陣,可知四點確定一個H
令 則有
N個點對給出2N個線性約束。
用RANSAC方法估算H:
- 首先檢測兩邊圖像的角點
- 在角點之間應用方差歸一化相關,收集相關性足夠高的對,形成一組候選匹配。
- 選擇四個點,計算H
- 選擇與單應性一致的配對。如果對於某些閾值:Dist(Hp、q) <ε,則點對(p, q)被認爲與單應性H一致
- 重複34步,直到足夠多的點對滿足H
- 使用所有滿足條件的點對,通過公式重新計算H
圖像變形和融合
最後一步是將所有輸入圖像變形並融合到一個符合的輸出圖像中。基本上,我們可以簡單地將所有輸入的圖像變形到一個平面上,這個平面名爲複合全景平面。
圖像變形步驟
- 首先計算每個輸入圖像的變形圖像座標範圍,得到輸出圖像大小,可以很容易地通過映射每個源圖像的四個角並且計算座標(x,y)的最小值和最大值確定輸出圖像的大小。最後,需要計算指定參考圖像原點相對於輸出全景圖的偏移量的偏移量x_offset和偏移量y_offset。
- 下一步是使用上面所述的反向變形,將每個輸入圖像的像素映射到參考圖像定義的平面上,分別執行點的正向變形和反向變形。
平滑過渡(transition smoothing)圖像融合方法包括 羽化(feathering), 金字塔(pyramid), 梯度(gradient)
圖形融合
最後一步是在重疊區域融合像素顏色,以避免接縫。最簡單的可用形式是使用羽化(feathering),它使用加權平均顏色值融合重疊的像素。我們通常使用alpha因子,通常稱爲alpha通道,它在中心像素處的值爲1,在與邊界像素線性遞減後變爲0。當輸出拼接圖像中至少有兩幅重疊圖像時,我們將使用如下的alpha值來計算其中一個像素處的顏色:
假設兩個圖像 ,在輸出圖像中重疊;每個像素點在圖像,其中(R,G,B)是像素的顏色值,我們將在縫合後的輸出圖像中計算(x, y)的像素值:
.
參考
-
Debabrata Ghosh,Naima Kaabouch. A survey on image mosaicing techniques[J]. Journal of Visual Communication and Image Representation,2016,34.地址