1. 程式人生 > >【立體匹配】Stereo Processing by Semiglobal Matching and Mutual Information(SGM)

【立體匹配】Stereo Processing by Semiglobal Matching and Mutual Information(SGM)

Stereo Processing by Semiglobal Matching and Mutual Information

基於半全域性匹配和互資訊的立體處理

摘要

本文描述了半全域性匹配的立體演算法。該演算法採用逐畫素的基於互資訊的匹配代價補償不同亮度的輸入影象。逐畫素匹配通過一個平滑約束支援,平滑約束通常表示為全域性代價函式。SGM通過從各個方向進行逐畫素優化來執行快速近似。討論還這幾到遮擋檢測、亞畫素求精和多基線匹配。此外,還提出了去除離群值、從結構化環境的特殊問題中恢復以及提出了間隙插值方法。最後,提出了幾乎任意大小影象的處理策略和通過正交投影進行視差影象融合的策略。對標準立體影象的比較表明,SGM演算法是目前在排名最靠前的演算法之中,並且在考慮亞畫素的情況下是最好的一個。演算法複雜度與畫素的數量和視差範圍成線性關係,這使得在典型測試影象上的運算時間只有1-2秒。基於MI的匹配代價的深度評估證明了對廣泛的亮度變化有較好的容忍度。最後,通過對大型航拍和推掃影象的重建例項驗證了本文提出的方法在實際問題中的有效性

1 介紹

2 半全域性匹配

半全域性匹配方法是基於互資訊的逐畫素匹配的思想和近似全域性,通過結合多個一維約束條件得到的二維平滑約束。該演算法採用不同的處理步驟進行描述。其中一些步驟是可選的,這取決於應用情況。

2.1 逐畫素匹配代價計算

輸入影象被假定已知其中的對極幾何模型,但是並不需要是被校正過的,因為有些情況是難以被校正的。例如推掃式影象中。由於平行投影在運動方向上,透視投影與運動方向正交,線性運動使極線變成雙曲線[21]非線性運動在航空影像中是不可避免的,導致極線成為一般的曲線和影象不能夠被校正[22]
要計算參考影象中某一畫素點 p

\mathbf{p} 的匹配代價,需要用到其灰度 I b p I_{b\mathbf{p}} ,及在待匹配影象的疑似匹配點 q
\mathbf{q}
的灰度 I m q I_{m\mathbf{q}} ,通過 q = e b m ( p , d ) \mathbf{q}=e_{bm}(\mathbf{p},d) 。函式 e b m ( p , d ) e_{bm}(\mathbf{p},d) 代表參考影象中畫素 p \mathbf{p} 和極線引數 d d 下匹配影象中的極線。對於校正後的影象,且匹配影象在參考影象的右側,則 e b m ( p , d ) = [ p x d , p y ] e_{bm}(\mathbf{p},d)=[p_{x}-d,p_{y}] ,且 d d 代表視差。
一個重要的方面是考慮匹配區域的大小和形狀。匹配的魯棒性隨面積的增大而增強。然而,面積增大後會出現不連續的位置,在不連續位置上違反了視差在區域內恆定的假設,這將導致模糊了物體邊界和精細結構。某些形狀和技術能夠用於減少模糊,但是模糊不能避免[8]。因此,這裡不使用在 p \mathbf{p} 鄰域內視差恆定的假設。也就是說只有 I b p I_{b\mathbf{p}} I m q I_{m\mathbf{q}} 這兩個灰度值被用於計算匹配代價。
逐畫素代價計算的一個選擇是 Brichfield 和 Tomasi 提出的取樣不敏感測量[2](簡稱BT )。代價 C B T ( p , d ) C_{BT}(\mathbf{p},d) 通過極線中在每一個方向上的半個畫素範圍內的畫素 p \mathbf{p} 和畫素 q = e b m ( p , d ) \mathbf{q}=e_{bm}(\mathbf{p},d) 的最小灰度差的絕對值進行計算。
另一種匹配代價計算是基於互資訊(MI,Mutual Information)[4],它對記錄和光照變化不明顯。互資訊由兩個影象各自的熵 H H 以及他們的聯合熵來定義:

M I I 1 , I 2 = H I 1 + H I 2 H I 1 , I 2 MI_{I_{1},I_{2}}=H_{I_{1}}+H_{I_{2}}-H_{I_{1},I_{2}}

熵是通過計算相關影象的概率分佈 P P 得到:

H I = 0 1 P I ( i ) log P I ( i ) d i H_{I}=-\int_{0}^{1}P_{I}(i)\log{P_{I}(i)di}

H I 1 , I 2 = 0 1 0 1 P I 1 , I 2 ( i 1 , i 2 ) log P I 1 , I 2 ( i 1 , i 2 ) d i 1 d i 2 H_{I_{1},I_{2}}=-\int_{0}^{1}\int_{0}^{1}P_{I_{1},I_{2}}(i_{1},i_{2})\log{P_{I_{1},I_{2}}(i_{1},i_{2})di_{1}di_{2}}

對於配準良好的影象,聯合熵 H I 1 , I 2 H_{I_{1},I_{2}} 較低因為一個影象能夠被另一幅影象預測,這與低資訊相對應。這增加了他們的互資訊。在立體匹配的情況下,一幅影象需根據視差影象 D D 來進行修正,為了匹配另一幅影象,使得兩幅影象中對應的畫素處於相同的位置,也就是 I 1 = I b I_{1}=I_{b} 而且 I 2 = f D ( I m ) I_{2}=f_{D}(I_{m})

相關推薦

立體匹配Stereo Processing by Semiglobal Matching and Mutual InformationSGM

Stereo Processing by Semiglobal Matching and Mutual Information 基於半全域性匹配和互資訊的立體處理 Stereo Processing by Semiglobal Matching and Mu

SpringMVC架構SpringMVC入門實例,解析工作原理

rip 業務邏輯層 popu 輸入 implement override article hide -i 上篇博文,我們簡單的介紹了什麽是SpringMVC。這篇博文。我們搭建一個簡單SpringMVC的環境,使用非註解形式實現一個HelloWorld實

問底夏俊:深入站點服務端技術——站點並發的問題

而是 思路 臨時 系統負載 表現 json article 不能 情況 摘要:本文來自擁有十年IT從業經驗、擅長站點架構設計、Web前端技術以及Java企業級開發的夏俊,此文也是《關於大型站點技術演進的思考》系列文章的最新出爐內容。首發於CSDN,各位技術人員不

python-excelSelenium+python自動化之讀取Excel數據xlrd

logs title .html selenium2 ref target targe pos 數據 Selenium2+python自動化之讀取Excel數據(xlrd) 轉載地址:http://www.cnblogs.com/lingzeng86/p/6793398.h

原始碼剖析tornado-memcached-sessions —— Tornado session 支援的實現

新地址:https://github.com/AngryHacker/articles/issues/5#issue-372211594      童鞋,我就知道你是個好學滴好孩子~來吧,讓我們進行最後的探(zuo)索(si)!    

原始碼剖析tornado-memcached-sessions —— Tornado session 支援的實現

     客官您終於回頭了!讓我們本著探(zuo)索(si)精神把 session.py 看完吧...       首先看看需要的庫:       pickle 一個用於序列化反序列化的庫(聽

重大更新DevExpress v18.1新版亮點——Analytics Dashboard篇

使用者介面套包DevExpress v18.1日前正式釋出,本站將以連載的形式為大家介紹各版本新增內容。本文將介紹了DevExpress Analytics Dashboard v18.1 的新功能,快來下載試用新版本!點選下載>> WPF Dashboard Viewer

機器學習Windows +Anaconda3(python3.5)+opencv3.4.1 安裝2

                 Windows +Anaconda3(python3.5)+opencv3.4.1 安裝(2)   原文參考:https://www.cnblogs.com/

機器學習Windows +Anaconda3(python3.5)+opencv3.4.1 安裝1

              Windows +Anaconda3(python3.5)+opencv3.4.1 安裝(1)   1. Anacond的介紹    Anaconda指的是一個

機器學習Windows +Anaconda3(python3.5)+opencv3.4.1 安裝4

           Windows +Anaconda3(python3.5)+opencv3.4.1 安裝(4)    想解決import cv2問題 ,於是在網上找了一些方法,但是許多是不可行的,後來發現一

機器學習使用Python中的區域性敏感雜湊LSH構建推薦引擎

學習如何使用LSH在Python中構建推薦引擎; 一種可以處理數十億行的演算法 你會學到: 在本教程結束時,讀者可以學習如何: 通過建立帶狀皰疹來檢查和準備LSH的資料 選擇LSH的引數 為LSH建立Minhash 使用LSH Query推薦會議論文 使用LSH

C++筆記Windows通過命令列編譯執行c程式 轉載

1.準備 一臺具備c開發環境的Windows。 驗證方式,命令列輸入gcc -v,檢視是否輸出版本資訊。 gcc -v 1 2.寫程式 在E盤建一個資料夾C,在裡面建立一個Hello.c檔案,副檔名是c,內容如下: #include <stdio.h>

Highcharts教程如何將一個圖表拆分成圖表網格

下載Highcharts最新版本 有時,當圖表具有高密度的資料點(例如具有多個系列的折線圖)時,視覺化可能最終變得混亂並且可能模糊不清。 通過一些仔細的規劃,可以使用多種方法避免資料密度問題。我將在這裡討論的一種方法是小資料或網格圖。此解決方案將資料系列分成單獨的圖表,這些圖表以網格排列,具有相同的

JAVA面試JAVA常考點之資料結構與演算法1

                            JAVA常考點之資料結構與演算法(1) JAVA常考點之資料結構與演算法 目錄

Visual C++遊戲開發筆記之十 基礎動畫顯示 透明動畫的實現

                作者:毛星雲    郵箱: [email protected]    歡迎郵件交流程式設計心得"透明動畫”是遊戲中一定會用到的基本技巧,它通過圖案的連續顯示及圖案本身背景的透明化處理,在背景圖上產生出栩栩如生的動畫效果。看過之前筆記的朋友們應該知道,在筆記六裡我們介紹

演算法筆記第六章:C++標準模板庫STL介紹

【演算法筆記】第六章:C++標準模板庫(STL)介紹 標籤(空格分隔):【演算法筆記】 第六章:C++標準模板庫(STL)介紹 第六章:C++標準模板庫(STL)介紹 6.1 vector的常見用法詳解

論文閱讀Aggregated Residual Transformations for Deep Neural Networks SainingResNext

這篇文章是kaiming大神的組的工作,在resnet上繼續改進。一作謝賽寧,2013年從上海交大本科畢業後去UCSD讀博士,現在他引1400+了(不知道我畢業時能不能有這個的一半QAQ),導師是Zhuowen Tu。 Introduction 現代的網路設計中通常會次堆疊

學習筆記使用python批量讀取並修改xml檔案3

在大老闆的安排下最近在某公司實習,實習期間要求實現一個影象識別模組的封裝。無奈基礎太薄弱,只能將任務細分,單獨學習來實現。以此為背景…… 經過公司師姐的指點,突然毛瑟頓開,編寫了V3.0的程式碼,可以實現的功能:使用者輸入欲改變的圖片尺寸後計算新的xml中bnb box的值、將圖片尺寸改變後

學習筆記使用python批量讀取並修改xml檔案2

在大老闆的安排下最近在某公司實習,實習期間要求實現一個影象識別模組的封裝。無奈基礎太薄弱,只能將任務細分,單獨學習來實現。以此為背景…… 這一篇記錄一些在實際使用中踩到的坑。在實際使用中,我在A資料夾下對圖片進行了標註,隨後將圖片移動到B資料夾下。那麼相應的,標註後的xml檔案中,<p

學習筆記使用python批量讀取並修改xml檔案4

在大老闆的安排下最近在某公司實習,實習期間要求實現一個影象識別模組的封裝。無奈基礎太薄弱,只能將任務細分,單獨學習來實現。以此為背景…… 程式碼更新V4.0版本,通過openCV實現xml中bounding box在原始影象和尺寸調整後的圖片中的視覺化(part three部分)。方便對比尺