2013-11-28 59 views
5

我想在不使用OpenCV或其他圖像處理庫的情況下實現立體聲塊匹配。 所有教程,書籍,演講幻燈片等僅僅教會了比較圖像塊的基本方法,但結果非常糟糕。 我讀過一些K.Konolige的文章,這是OpenCV算法的基礎,但我似乎仍然錯過了一些重要的東西。與基本立體聲塊匹配(沒有OpenCV)的不好結果

我現在正在做的事情:

  1. 應用索貝爾左,右圖像。
  2. 待辦事項塊匹配
    • 拾取周圍的左圖像中的像素的(9×9)的塊,並與塊的同一行的右圖像的比較(最多的80個像素右邊的原始塊的)
    • 找到與最佳匹配的一個(使用的絕對差值SAD之和)

產生的差距是我多少步不得不去右邊找到最佳匹配。

在閱讀完Konolige論文後,我實施了左右檢查,在找到最佳匹配後,在左側圖像中搜索右側圖像的最佳匹配,並只接受它,如果它是一個你最初的搜索或緊鄰它。

此外還添加了一個檢查,以便一個像素只能匹配一次,如果它們以前與像素匹配,則使用位域像素將跳過搜索。

結果看起來不太錯,但非常稀疏。

什麼是我未能添加?每個人似乎都知道,但沒有說明。 我是否需要添加某種插值?

任何幫助表示讚賞!

我的輸入是筑波立體聲對。在網絡上找到

結果(第2個是OpenCV的BM,第3顯然是SAD BM來自博客作者)

http://cseautonomouscar2012.files.wordpress.com/2012/11/111412_2001_comparisono1.png

回答

3

這是正常的,你的結果是稀疏的,因爲你的算法是稀疏的!

讓我們倒帶的故事位:在你的第一步

  • ,應用Sobel邊緣檢測。你在這裏做的是提取一組稀疏的特徵,它們是圖像的邊緣;
  • 然後你對結果應用塊匹配:你實際做的是匹配邊緣,從而匹配稀疏特徵。

經典的BM實現工作在圖像強度補丁上(這就是爲什麼亮度均衡很重要),即採取像素強度的SSD/SAD /相關性。

此外,BM的工作,但不太好與困難的圖像。通常需要穩健的成本函數(如歸一化相關)而不是SAD。 當您將結果與OpenCV進行比較時要小心:OpenCV建議稱爲SGBM的另一個BM實現(用於半全局BM)。在這種情況下,附加的術語強制相鄰像素的視差也接近。這就是所謂的規律性約束和兩種方式有助於:

  1. 它限制在輸出結果中的噪聲(如果像素的視差是異常值,它被去除,通過從推斷的值替換其鄰居);
  2. 它允許將良好的結果傳播到算法沒有線索的區域,以推斷出好的結果。邊緣匹配通常就是這種情況:您可以在邊緣集上獲得良好的視差估計,並且您可以讓正則化術語將此良好估計傳播到平坦(無紋理和無邊緣)區域。