双目立体匹配算法漫谈
雙目立體匹配算法漫談
- 雙目立體匹配算法漫談
- 前提
- 一些基本假設
- 框架
- matching cost computation
- cost (support) aggregation;代價聚合
雙目立體匹配算法漫談
雙目立體匹配算法是計算機視覺中比較經典的問題。有大量經典的雙目立體匹配算法。本文簡要介紹一下雙目立體匹配的常用基本流程,也可以說是套路。 第一次寫這么長的博文,我想到哪里寫哪里。
更詳細內容的可見文章A Taxonomy and Evaluation of Dense Two-Frame Stereo Correspondence Algorithms。
測試數據:www.middlebury.edu/stereo
前提
通常來說,硬件采集的圖像首先經過畸變矯正,極線糾正,然后進行立體匹配,最后三角化為點云。如圖1所示。首先需要說明的是,這里講的立體匹配算法假定圖像已經經過極線1糾正,從而兩幅圖像極線約束匹配變成圖像的一行內匹配問題。在圖1中對應的為紅色的部分。以下沒有特殊說明,兩幅圖像均指經過極線糾正后的圖像。立體匹配問題這里主要考慮怎樣計算極線糾正后的兩幅圖像之間的視差圖。因為在基線和焦距已知的情況下,視差圖可以和深度圖互相轉換,從而完成由雙目估計物體深度(三維信息)的工作。
一些基本假設
如果物體是一個朗伯體2,或者說物體表面是朗伯表面,那么,從任意位置和方向看物體表面同一點,得到的輻射能量是相同的。在可見光范圍內,輻射也可以簡單理解為RGB顏色值。那么匹配問題自然是按行尋找相同顏色的像素。理想很豐滿,現實很骨感。一方面有可能在圖像同一行內出現相同的顏色,無法區分。另一方面現實世界物體很難是一個朗伯體,即便是表面同一個點,在不同圖像上的顏色都有差異。所以就有了諸多的算法來解決這些問題。
首先可以假設物體表面深度是連續的,或者是分段連續的。(因為前文說了視差和深度在基線和焦距已知的情況可以相互轉換,這里有時候說視差,有時候說深度,不必在意)。這樣在圖像鄰域之間可以產生一個平滑約束。另外雖然場景不是一個朗伯表面,但是不同相機看相同點顏色還是非常接近的。
框架
現在講一講立體匹配的套路。主要由四個算法模塊組成:
matching cost computation
一個簡單的想法是對于灰度圖像,直接計算像素之間灰度差來作為匹配代價。但是這不夠魯棒。通常采用一個以當前像素為中心的window來代替像素,這些像素可以排成一個向量。向量的值為像素的灰度值。這樣兩個像素的匹配問題就轉換成兩個向量之間的距離??梢允荓1,L2,或者夾角的余弦值等等??梢詤⒖糓AD、SAD、SSD、MSD、NCC、SSDA、SATD等匹配算子。
圖1 將一個像素附近窗口轉換為一個向量 通常來說,以一幅圖像作為參考圖像,另外一幅成為目標圖像,比如左圖像為參考圖像,右圖像為目標圖像。匹配過程為按行搜索,以某一行為。對于參考圖像一個像素,目標圖像有w個可能得匹配像素,w為圖像寬度,這里假設兩幅圖像大小相同。所以對于每一行,需要做w*w次的匹配。當然,通過一定的假設和前提條件,我們可以限定視差范圍為dmax那么匹配即為w*dmax次,參見圖2。對于參考圖像每一像素的匹配代價的次數按照深度排列,一個w*h的圖像,得到w*h*dmax的代價立方體,深度為視差值或者可以可以轉換為視差的值。如圖3。有了代價立方體以后,我們需要得到每個像素的最優代價。這通常使用下面的技術方案:代價聚合。cost (support) aggregation;代價聚合
代價聚合通常是一個立體匹配算法中非常關鍵的部分。因為一些噪聲,光照差異,顏色不同和匹配歧義,匹配代價最優(代價最小)的不一定是真正的同名點,可以通過假設場景是連續的來進行處理。比較容易想到的是要考慮每個像素鄰域信息。這里如果考慮某個像素與周圍所有圖像的關系,那么就是一個全局算法:如果僅僅考慮局部窗口內,那么就是一個局部算法。還有一種介于二者之間,稱為半全局算法。顯然,考慮的越多,計算量越大,但效果越好。通常來說,全局算法較慢,到效果很棒。
極線幾何也稱作核線幾何,二者是一個意思,在攝影測量領域中常稱作核線幾何。極線約束也稱作核線約束 ??
朗伯體是指當入射能量在所有方向均勻反射,即入射能量以入射點為中心,在整個半球空間內向四周各向同性的反射能量的現象,稱為漫反射,也稱各向同性反射,一個完全的漫射體稱為朗伯體 ??
總結
以上是生活随笔為你收集整理的双目立体匹配算法漫谈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华东师大二月月赛游记
- 下一篇: CompletableFuture的正常