2012-01-15 69 views
3

好吧我沒有任何東西似乎使事情正確或至少接近正確的東西發佈我的生活難題後,無意識的編程4天的stackoverflow。抱歉有點戲劇化,但我今天感覺像一個糟糕的程序員。三維重建C++與OpenCV..Fundamental矩陣太大

無論如何,我的問題是:

要使用RANSAC(N> 8)獲得的基本矩陣。

我有兩個寬基線但足夠重疊的圖像,以便足夠的SURF關鍵點(〜308)匹配正確(我繪製它們)。

現在存在這個問題。我將2D點傳遞給cv :: findFindamentalMat,但是我得到了完全沒有根據的結果。該函數返回:

 FundMat=[2.05148e-13 3.72341 -2.03671e+10 
       1.6701e+26 -4.17712 4.59533e+29 
       3.32414e+18 2.8843 1.91069e-26] 

爲了避免基體的大的動態範圍,哈特利建議以標準化的數據點(歐氏空間中,而不是投影空間標準化)....即使這樣做的結果是後幾乎相同。 (10^-9到10^9)

我明白FundMat只能達到規模,但10^-9到10^+ 9的差別太大了。

我提到的其他問題,在這裏,但我似乎沒有得到任何線索:findfundamentalmatrix-doesnt-find-fundamental-matrix how-to-calculate-the-fundamental-matrix-for-stereo-vision

任何想法將是巨大的。在考慮未校準的軟件管道圖像時,這是非常重要的一步。

n代碼有幫助。 (它沒有縮進和着色雖然..空間太少這裏。) https://sites.google.com/site/3drecon124/

回答

0

它解決了......愚蠢的人爲錯誤。有一個從double到float的數據類型轉換,並導致數據從內存中不正確的位置獲取。現在它的平滑和極線約束滿足規模。