1. 程式人生 > >雙目視覺---立體匹配介紹

雙目視覺---立體匹配介紹

原文:http://blog.csdn.net/mysniper11/article/details/8618245

一、概念

        立體匹配演算法主要是通過建立一個能量代價函式,通過此能量代價函式最小化來估計畫素點視差值。立體匹配演算法的實質就是一個最優化求解問題,通過建立合理的能量函式,增加一些約束,採用最優化理論的方法進行方程求解,這也是所有的病態問題求解方法。

二、主要立體匹配演算法分類

1)根據採用影象表示的基元不同,立體匹配演算法分為:

       A、區域立體匹配演算法(可獲取稠密視差圖。缺點:受影象的仿射畸變和輻射畸變影響較大;畫素點約束視窗的大小與形狀選擇比較困難,選擇過大,在深度不連續處,視差圖中會出現過度平滑現象;選擇過小,對畫素點的約束比較少,影象資訊沒有得到充分利用,容易產生誤匹配。)

       B、基於特徵的立體匹配演算法(可獲得稀疏的視差圖,經差值估計可獲得稠密視差圖。可提取點、線、面等區域性特徵,也可提取多邊形和影象結構等全域性特徵。缺點:特徵提取易受遮擋、光線、重複紋理等影響較大;差值估計計算量大)

       C、基於相位立體匹配演算法(假定在影象對應點中,其頻率範圍內,其區域性相位是相等的,在頻率範圍內進行視差估計)

2)依據採用最優化理論方法的不同,立體匹配演算法可以分為:

       A、區域性的立體匹配演算法

       B、全域性的立體匹配演算法

三、匹配基元(match primitive)

目前匹配演算法中所採用的匹配基元可以分成兩大類:

1)在所有圖象畫素點上抽取量測描述子

      A、畫素灰度值(最簡單、直接,但必須在同一光照條件下獲得)

      B、區域性區域灰度函式(主要是利用求得在各種大小不同視窗中灰度分佈的導數資訊,描述畫素點周圍的結構向量。)

      C、卷積圖象符號(利用各種大小運算元與圖象進行卷積,用灰度梯度區域性極大值或極小值作為特徵資訊,描述整個影象)

2)影象特徵

      A、過零點

      B、邊緣(由於邊緣是影象特徵位置的標誌,對灰度值的變化不敏感,邊緣是影象匹配的重要特徵和描述子)

      C、角點(雖然其沒有明確的數學定義,但大家普遍認為角點,即二維影象亮度變化劇烈的點或邊緣曲線上曲率極值點)

四、區域匹配演算法

        基本原理是給定在一幅影象上的某一點,選取該畫素點鄰域內的一個子視窗,在另一幅影象中的一個區域內,根據某種相似性判斷依據,尋找與子視窗影象最為相似的子圖,而其匹配的子圖中對應的畫素點就為該畫素的匹配點。

        一般單純的區域匹配都遇到如下限制:

       1)針對弱紋理或存在重複紋理的區域,匹配結果不好

       2)該演算法不適應於深度變化劇烈的場景

       3)對光照、對比度和噪聲比較敏感

       4)子窗體的大小很難選擇

五、特徵匹配演算法

        特徵的匹配演算法,主要是基於幾何特徵資訊(邊緣、線、輪廓、興趣點、角點和幾何基元等),針對幾何特徵點進行視差估計,所以先要提取影象的特徵點,盡而利用這些特徵點的視差值資訊來重建三維空間場景。

        匹配所需要的主要步驟:影象預處理、提取特徵、特徵點的匹配獲取稀疏視差圖,如果想得到稠密的視差圖,需要採用插值的方法。

六、全域性匹配演算法

        全域性立體匹配演算法主要是採用了全域性的優化理論方法估計視差,建立全域性能量函式,通過最小化全域性能量函式得到最優視差值。

        全域性匹配演算法得到的結果比較準確,但是其執行時間比較長,不適合實時執行。主要的演算法有圖割(graph cuts)、信念傳播(belief propagation)、動態規劃等演算法。

七、區域性匹配演算法(個人覺得跟區域匹配類似,角度不同而已)

        主要是採用區域性優化方法進行視差值估計,區域性立體匹配演算法有 SAD,SSD 等演算法,與全域性立體匹配演算法一樣,也是通過能量最小化方法進行視差估計,但是,在能量函式中,只有資料項,而沒有平滑項。

       主要分為三類:自適應窗體立體匹配演算法、自適應權值的立體匹配演算法和多窗體立體匹配演算法。

八、立體匹配約束

1)極線約束
2)唯一性約束

3)視差連續性約束

4)順序一致性約束

5)相似性約束

九、相似性判斷標準

1)畫素點灰度差的平方和,即 SSD

2)畫素點灰度差的絕對值和,即 SAD

3)歸一化交叉相關,簡稱 NCC

4) 零均值交叉相關,即 ZNCC

5)Moravec 非歸一化交叉相關,即 MNCC

6) Kolmogorov-Smirnov 距離,即 KSD

7)Jeffrey 散度

8)Rank 變換(是以視窗內灰度值小於中心畫素灰度值的畫素個數來代替中心畫素的灰度值)

9)Census 變換(是根據視窗內中心畫素灰度與其餘畫素灰度值的大小關係得一串位碼,位碼長度等於視窗內畫素個數減一)

十、評價引數

        立體匹配演算法是一個病態問題,一般通過建立能量函式,利用最小化能量函式,和一些約束條件,採用最優化理論方法進行求解方程。

        公認的定量評價引數有:均方根誤差(Root-mean-squared)和誤匹配率(percentage of bad matching pixels)

     其中,利用極線約束、唯一性約束、順序性約束以及特徵約束的方法較為常用。對於場景連續變化,縮放、光照以及旋轉變化不大的場景來說,模板匹配演算法(SSD、SAD等)配合極線和特徵約束可以實現快速得到稠密匹配的目的。同時為了加速可以考慮利用改進的模板匹配演算法以及GPU加速。