關于立體匹配,我之前寫了很多博客,重復去寫就沒有必要,學習的朋友請閱讀如下鏈接,
本文我們隨便聊聊立體匹配的方法論和弱紋理恢復問題,
文章目錄
- 立體匹配系列
- 0
- 1 SGM系列
- 2 PatchMatch系列
- 3 AD-Census系列
- 關于方法論
- 關于弱紋理恢復問題
立體匹配系列
0
雙目立體匹配步驟詳解
1 SGM系列
理論恒叨系列
【理論恒叨】【立體匹配系列】經典SGM:(1)匹配代價計算之互資訊(MI)
【理論恒叨】【立體匹配系列】經典SGM:(2)匹配代價計算之Census變換
【理論恒叨】【立體匹配系列】經典SGM:(3)代價聚合(Cost Aggregation)
【理論恒叨】【立體匹配系列】經典SGM:(4)視差計算、視差優化
碼上實戰系列
【碼上實戰】【立體匹配系列】經典SGM:(1)框架與類設計
【碼上實戰】【立體匹配系列】經典SGM:(2)代價計算
【碼上實戰】【立體匹配系列】經典SGM:(3)代價聚合
【碼上實戰】【立體匹配系列】經典SGM:(4)代價聚合2
【碼上實戰】【立體匹配系列】經典SGM:(5)視差優化
【碼上實戰】【立體匹配系列】經典SGM:(6)視差填充
【碼上實戰】【立體匹配系列】經典SGM:(7)弱紋理優化
2 PatchMatch系列
理論恒叨系列
【理論恒叨】【立體匹配系列】經典PatchMatch: (1)Slanted support windows傾斜支持窗模型
【理論恒叨】【立體匹配系列】經典PatchMatch: (2)基于PatchMatch的視差估計
【理論恒叨】【立體匹配系列】經典PatchMatch: (3)后處理(一致性檢查與視差填充)
碼上實戰系列
【碼上實戰】【立體匹配系列】經典PatchMatch: (1)框架
【碼上實戰】【立體匹配系列】經典PatchMatch: (2)主類
【碼上實戰】【立體匹配系列】經典PatchMatch: (3)隨機初始化
【碼上實戰】【立體匹配系列】經典PatchMatch: (4)代價計算
【碼上實戰】【立體匹配系列】經典PatchMatch: (5)迭代傳播
【碼上實戰】【立體匹配系列】經典PatchMatch: (6)后處理
3 AD-Census系列
理論恒叨系列
【理論恒叨】【立體匹配系列】經典AD-Census: (1)代價計算
【理論恒叨】【立體匹配系列】經典AD-Census: (2)十字交叉域代價聚合(Cross-based Cost Aggregation)
【理論恒叨】【立體匹配系列】經典AD-Census: (3)掃描線優化(Scanline Optimization)
【理論恒叨】【立體匹配系列】經典AD-Census: (4)多步驟視差優化
碼上實戰系列
【碼上實戰】【立體匹配系列】經典AD-Census: (1)框架
【碼上實戰】【立體匹配系列】經典AD-Census: (2)主類
【碼上實戰】【立體匹配系列】經典AD-Census: (3)代價計算
【碼上實戰】【立體匹配系列】經典AD-Census: (4)十字交叉域代價聚合
【碼上實戰】【立體匹配系列】經典AD-Census: (5)掃描線優化
【碼上實戰】【立體匹配系列】經典AD-Census: (6)多步驟視差優化
如果你能學會SGM和PatchMatch,那么立體匹配你就完全入門了,
關于方法論
而真正需要學習的是立體匹配的方法論,從SGM演算法,你可以學習馬爾科夫隨機場是如何應用于立體匹配的,進而你可以深入去了解馬爾科夫隨機場這個經典的理論,它在三維重建里應用比較廣泛,你會在不同的地方看到它的身影,簡而言之,大部分標簽分配問題都可以用馬爾科夫隨機場來建模,而解決馬爾科夫隨機場這個能量最優問題,都是用效率高的近似方法,比如SGM的掃描線優化(Scanline Optimize)、動態規劃(Dynamic Programming)、置信度傳播(Belief Propagation)、合作優化(Cooperative Optimization)等,
我們會發現,無論在科學研究還是在工程實踐中,建模都很重要且關鍵,當你發現立體匹配問題可以轉化為標簽分配問題便很快想到可以用馬爾科夫隨機場建模,進而嘗試用眾多成熟的優化演算法之一去解決問題,大多數論文都是這樣產出,研究進展的突破就在你轉化問題的那一瞬間,當然前提是你要掌握一定數量的演算法模型,這便是你應該掌握的基本知識之一,
而從PatchMatch演算法上,和SGM對比我們可以明顯感知到,基于離散空間的標簽分配方法似乎并不是立體匹配問題的最優解,而基于連續空間的視差平面方法,在精度和效果上有明顯的優勢,尤其是在邊界和細小結構的恢復上,離散空間帶來的不精確性以及SGM的代價聚合模型對邊界的處理并不清晰(或者說并不精確),使得SGM和PatchMatch差距明顯,下圖是一個例子:
|
|
|
邊界恢復問題,并不能說是離散空間的問題,現在的深度神經網路,本質上還是離散空間的標簽分配方法,但是將效果提升到了另一層次,對邊界的恢復也比傳統的標簽分配方法要更好,但是在最終點云的精度上,對比PatchMatch并沒有顯現出優勢,如果深度神經網路能在精度上打敗傳統幾何演算法,那算得上是一種全方位的顛覆,但是這并非不可能發生,因為目前所知的傳統演算法也并非在最好的狀態,就算目前來看幾何精度最好的PatchMatch也有精度解析度,最終視差精細化時還是落到了離散空間,所以它未來被深度學習網路超越是可能的,
我覺得理論上的觀點是,如果深度學習和傳統幾何都受到同樣的關注度和研究度,那么傳統幾何演算法的結果精確度一定會持續表現出優勢,而深度學習的結果完整度和準確度也讓傳統幾何演算法難以望其項背,但是現實情況是,深度學習有著遠超傳統幾何演算法的關注度和研究度,這一定程度上導致深度學習和某些注重精度的工業實踐中存在一個鴻溝,所以你可以看到,在精度無比重要的精確測量領域,比如工業測量、測繪、定位抓取等,深度學習還很少應用,反而是原理簡單而精度很高的結構光重建技術大行其道,
而在一些不過分追求高精度的應用中,比如自動駕駛里的深度獲取,并不需要每個點的精度都非常高,而完整度顯得更重要,畢竟車前是否有物,和其離車距離是否足夠精確兩者之間,顯然前者要更重要;再比如目前很流行的深度相機,雖然大多都是傳統演算法,但實際上很多情況下其并不需要非常高的精度,而采用傳統演算法居多的原因是傳統演算法的低算力,如果深度學習算力要求下降,或者芯片算力增強,則深度學習也將變得主流,
關于弱紋理恢復問題
弱紋理恢復是立體匹配的老大難,輻射差異對所有立體匹配來說至關重要,這是區分兩個點是否為同一點的最關鍵資訊,但是弱紋理的輻射差異十分微小且輻射值高度相似,這給基于區域視窗的立體匹配方法帶來很大困難,
目前我所知的弱紋理恢復方法,大體上是有兩類,一類是聚類分割法、一類是多尺度估計法,
聚類分割法建立的假設是區域的一塊顏色相近的弱紋理區域極可能是屬于同一塊連續表面的,通常這個表面會假設為一個平面,在這個假設下有兩類具體的思路去完成優化:
1、先對所有像素完成視差估計,在對像素進行聚類分割,對于恢復失敗的像素,用同一塊內的其他有效視差進行平面擬合,擬合方程可用來填補該缺失像素,
2、先對像素進行聚類分割,再基于聚類后的尺度上進行立體匹配,再將匹配結果映射到細粒度的像素尺度上,
這類方法實際應用是很少的,因為其假設看上去有明顯缺陷,聚類分割本身就存在過分割和欠分割的問題難解決,且前景背景顏色相近的情況并不少見,這讓問題反而變得更加棘手,
我這里想多聊聊另一類方法:多尺度估計方法,尺度是在我們人類感知中很重要的因子,如果將一塊純白的墻超近距離放在你的眼前,你肯定一頭霧水,不知道這是什么東西,而且你的距離感會非常弱,感知不到這東西離你的眼睛到底有多遠,而當距離慢慢拉遠,你漸漸看到了墻周圍的資訊而推斷出這是一堵墻,且距離感也會越來越清晰,尺度的大小決定了我們在有限視野內能接受到的資訊范圍,顯然資訊范圍越大對我們的識別和定位都有好處,但也要認識到資訊范圍越大同時也會導致單位元尺寸下的資訊清晰度變弱,兩者必然是相互矛盾的,
回到立體匹配問題上,我們顯然無法單靠一個像素資訊來完成左右像素的配對,像素周圍的區域資訊是必須的,但是前提是區域視窗有足夠的資訊熵,在上一個例子來說,在距離拉遠的程序中,在看到白墻輪廓之前,你都依舊無法識別它,所以對弱紋理來說,對區域資訊范圍的擴大需求顯得尤為突出,我們認識到周圍資訊的范圍對識別并定位能力非常重要,所以我們希望更大的視窗以接受更大范圍的資訊,所以增大視窗尺寸往往對弱紋理的優化有一定的幫助,
但增大視窗尺寸往往帶來的是增大數倍的計算量,所以其實更實用的是減小影像解析度,生成多個解析度下的多尺度影像,在低解析度尺度上對弱紋理取得更好的效果并投影到高解析度尺度上,
我這里做了組對比實驗來驗證多尺度下的的SGM演算法效果:
|
|
|
|
隨著影像解析度尺度的變小,在墻面上的視差越來越完整,這是多尺度匹配有助于恢復弱紋理的一個佐證,
好了本篇就到這里了,時隔半年的更新,希望能給到你幫助,再見!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423742.html
標籤:AI
上一篇:梯度下降【無約束最優化問題】
