幾種方法我得到了一個任務:打開CV - SFM的
我們有一個系統的工作,其中一個攝像頭周圍做一個人的頭部halfcircle。我們知道相機矩陣和每一幀的旋轉/平移。 (失真和更多...但我希望第一個工作沒有這些參數)
我的任務是,我只有相機矩陣,這是不變的這一舉措,和圖像(超過100)。現在,我必須逐幀地獲得翻譯和旋轉,並將其與現實世界中的旋轉和平移進行比較(來自我的系統,但僅用於比較,我也證明了這一點!)
第一步I到目前爲止:
- 使用OpenCV Cookbook的robustMatcher - works finde - 40-70匹配每個幀 - 可見看起來非常好!
- 我用getFundamental()獲得了基礎矩陣。我使用來自robustMatcher和RANSAC的健壯點。
- 當我在F,我可以用我的CameraMatrixķ得到Essentialmatrixè這樣的:
cv::Mat E = K.t() * F * K; //Found at the Bible HZ Chapter 9.12
現在我們需要用SVD提取R和T出電子商務。順便說一句,camera1的位置只是零,因爲我們必須從某處開始。
cv::SVD svd(E);
cv::SVD svd(E);
cv::Matx33d W(0,-1,0, //HZ 9.13
1,0,0,
0,0,1);
cv::Matx33d Wt(0,1,0,//W^
-1,0,0,
0,0,1);
cv::Mat R1 = svd.u * cv::Mat(W) * svd.vt; //HZ 9.19
cv::Mat R2 = svd.u * cv::Mat(Wt) * svd.vt; //HZ 9.19
//R1 or R2???
R = R1; //R2
//t=+u3 or t=-u3?
t = svd.u.col(2); //=u3
這是我的實際狀態!
我的計劃是:
- 三角測量的所有點獲得3D點
- 加入幀i與幀i ++
- 我的可視化3D莫名其妙地指出他們!
現在我的問題是:
- 在這個強大的匹配過時?還有其他方法嗎?
- 在我的第二步描述中使用這些要點是錯誤的嗎?他們必須轉換扭曲或什麼?
- 什麼R和T是我在這裏提取?從camera1的角度來看camera1和camera2之間的旋轉和平移嗎?
- 當我讀到聖經或論文或其他地方時,我發現R和t有四種可能性! 'P'= [UWV^T | + u3] oder [UWV^T | -u3] oder [UW^TV^T | + u3] oder [UW^TV^T | -u3]' P'是第二圖像的投影矩陣。 這意味着t可能是 - 或+和R可能是完全不同的?! 我發現我應該計算一個點到三維,並找出這個點是否是兩個相機的盈虧,然後我找到了正確的矩陣! 我發現了一些這個代碼在網上和他只是說這沒有進一步的計算:
cv::Mat R1 = svd.u * cv::Mat(W) * svd.vt
和t = svd.u.col(2); //=u3
爲什麼這是正確的?如果不是的話 - 我如何在OpenCV中做這個三角測量? 我把這個翻譯與給我的翻譯進行了比較。 (首先,我必須將相關的翻譯和旋轉轉換爲camera1,但我現在得到了這個!)但它不一樣。我的程序的價值只是讓我們稱它從加減去跳。但它應該更穩定,因爲相機正在不斷的移動。 我確信有些軸可能會被切換。我知道翻譯只是從-1到1,但我認爲我可以從我的結果中提取一個因子到我的比較值,然後它應該是類似的。
有人做過這樣的事嗎?
很多人用棋盤進行攝像機標定,但是我不能用這個方法來獲得外部參數。
我知道visual sfm可以以某種方式做到這一點。 (在youtube上是一個視頻,其中有人圍着一棵樹走來走去,並從這些圖片中獲取這棵樹的視覺效果) 這與我所要做的非常相似。
最後一個問題:
是否有人知道一個簡單的方法來可視化我的3D點?我優先考慮MeshLab。有一些經驗呢?
@ Shambool:謝謝你的幫助。我進一步研究了一下。我真的應該使用undistortPoints。我認爲你可以通過校準得到外在的。但似乎我錯了。 – 2012-08-19 14:25:26
但是我對校準不感興趣,因爲我已經有了相機(內在)矩陣。重要的是要知道R和t矩陣取決於第一個攝像機座標系。下一步:獲得正確的R和T,因爲有4個選項。是的,它可以通過三角測量完成。 (以及SVD或Horn的封閉形式以獲得四個選項) – 2012-08-19 14:26:03
但是你只是說聖經中可能並且描述了數學,但是我希望有人已經這樣做並且想要分享他的代碼。最後:是的,文件夾應該是Meshlab的最佳文件。我想回到youtube視頻:不,他們沒有做過校準。他們使用來自羅馬,杜布羅夫尼克或樹木的150.000 Flikrimages,並做一個sfm。所以他們絕對不能有校準!但我的問題的意思是解決這個問題。如果有人想分享他的代碼 - 那真的很有幫助。 – 2012-08-19 14:26:36