[英]OpenCV Structure from Motion Reprojection Issue
我目前在基於OpenCv的Motion程序中遇到“結構”問題。 我將嘗試向您描述它的作用以及應該做什么。
該程序基於經典的“運動構造”方法。
基本思想是拍攝一對圖像,檢測其關鍵點並計算這些關鍵點的描述符。 然后,完成關鍵點匹配,並進行一定數量的測試以確保結果良好。 該部分工作完美。
完成此操作后,將執行以下計算:基本矩陣,基本矩陣,基本矩陣的SVD分解,相機矩陣計算以及最后的三角剖分。
一對圖像的結果是一組3D坐標,為我們提供了在3D查看器中繪制的點。 這對一對來說效果很好。
確實,這是我的問題: 對於一對圖像,在圖像對的第一幅圖像的坐標系中將3D點坐標作為參考圖像進行計算。 當處理兩個以上的圖像(這是我的程序的目標)時, 我必須重新投影在第一張圖像的坐標系中計算出的3D點 ,以便獲得一致的結果。
我的問題是: 如何將與攝像機相關的系統中給定的3D點坐標重新投影到另一個與攝像機相關的系統中? 用相機矩陣?
我的想法是獲取3D點坐標,並將其乘以之前每個相機矩陣的逆。
我澄清一下:
假設我正在處理第三張和第四張圖像(因此,第三對圖像,因為我正在像1-2 / 2-3 / 3-4等工作)。
我在第三個圖像的坐標系中獲得3D點坐標,如何在第一個圖像坐標系中正確地重新投影它們?
我將執行以下操作:
獲取3D點坐標矩陣,對圖像2到3應用相機矩陣的逆,然后對圖像1到2應用相機矩陣的逆。這是否正確?
因為這些相機矩陣是非正方形矩陣,所以我無法將它們求逆。
我肯定會誤會某個地方,如果有人能啟發我,我將不勝感激,我敢肯定這是一個相對容易的事情,但是我顯然缺少了一些東西...
非常感謝您的閱讀:)
假設您有一個稱為P
的3 * 4外在參數矩陣。 為了匹配OpenCV文檔的符號,此為[R|t]
。
該矩陣P
描述了從世界空間坐標到攝像機空間坐標的投影。 引用文檔:
[R | t]將點(X,Y,Z)的坐標轉換為相對於相機固定的坐標系。
您想知道為什么此矩陣是非正方形的。 這是因為在OpenCV的通常情況下,您不希望將齊次坐標作為輸出。 因此,要使其變為正方形,只需添加包含(0,0,0,1)
的第四行。 我們稱這個新的方陣Q
每對攝像機都有一個這樣的矩陣,也就是說,每對圖像{k,k+1}
都有一個Qk
矩陣,描述了從攝像機k
的坐標空間到攝像機k+1
的坐標空間的投影。 這些矩陣是不可逆的,因為它們描述的是同構坐標中的等距。
要從攝像機3的坐標空間移到攝像機1的坐標空間,只需將Q2
的倒數, 然后是Q1
的倒數應用於您的點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.