Stereo Matching with Global and Local Optimizations

立體匹配就4個步驟:匹配代價計算,代價聚合,計算視差,視差精化。

匹配代價計算:通過計算左右兩圖對應像素3個通道的灰度值差來決定匹配代價的,基於區域的匹配代價計算一般有SAD,SSD, STAD之類的。

匹配代價計算會生成一個disparity space image,也就是DSI。

DSI是一個三維的空間,也就是每一個視差,得到一張代價圖。

假如視差範圍是0~16,則會得到17幅代價圖。在視差範圍內(比如0-16)內搜索匹配代價,得到17張匹配代價圖,然後找到匹配代價最小的對應的視差值就是此像素對應的視差。

代價聚合:其實就是一個濾波的過程,對每一幅代價圖進行聚合,最簡單的就是採用boxfilter。第一步代價計算只是得到了圖像上所有孤立像素的視差值,但是這些時差值都是孤立的,引入了過多噪聲,比如一片區域的視差值都是10,可是引入噪聲後就會導致這一片的視差值都不一樣,那麼就需要一個濾波的過程,也就是我們所說的局部立體匹配方法,即採用窗口卷積達到局部濾波的目的。

計算視差:常用的方法就是WTA算法(局部),對於圖像中的同一個點,選出17幅代價圖中匹配代價最小的那張圖,該幅圖對應的視差值就選取為最終的視差。

一般來說,全局算法基於原始匹配代價進行後續算法計算。而區域算法則需要通過窗口疊加來增強匹配代價的可靠性,(SAD和SSD取最小值,NCC取最大值)

對於區域算法來說,在完成匹配代價的疊加以後,視差的獲取就很容易了,只需在一定範圍內選取疊加匹配代價最優的點(SAD和SSD取最小值,NCC取最大值)作為對應匹配點,如勝者為王算法WTA(Winner-take-all)。

而全局算法則直接對原始匹配代價進行處理,一般會先給出一個能量評價函數,然後通過不同的優化算法來求得能量的最小值,同時每個點的視差值也就計算出來了。

在全局立體匹配中採用能量函數的方法,分為數據項和平滑項,數據項其實就是代價計算,平滑項就是代價聚合,只不過窗口大小是整幅圖像,也可以試試如果把平滑項前面的係數lamda設為0,那麼得到的結果和單純代價計算的局部立體匹配是一樣的。

視差精化:也就是對得到的視差進行優化的過程,如:左右一致性檢測、區域投票等;這步其實是很多立體匹配的遮羞布,比如用遮擋處理,中值濾波,左右一致性檢測等,都能使最後的是視差圖提升1%左右,它是很多論文的遮羞布。但是不可否認的是,立體匹配最關鍵的步驟仍然是代價計算和代價聚合步驟。

results matching ""

    No results matching ""