我使用opencv校準了我的單色相機。現在我知道攝像機的攝像機固有矩陣和失真係數[K1,K2,P1,P2,K3,K4,K5,K6]。假設相機以[Roll,Pitch,Yaw]旋轉放置在[x,y,z]中。當攝像機在地板上看時,我怎樣才能獲得世界座標中的每個像素[z = 0]。圖像座標到世界座標opencv
3
A
回答
2
你說你校準你的相機,讓你:
- 內在參數
- 外在參數(旋轉,平移)
- 失真係數
首先,以補償失真,您可以使用undistort函數並獲取未失真的圖像。現在,你剩下的是內在/外在參數和針孔相機模型。從OpenCV documentation採取以下等式說明如何變換3D世界座標轉換成2D圖像座標使用這些參數:
基本上,你乘以一個投影矩陣,這又是一個組合的3D座標內部參數(方程中的第一個矩陣)和外部參數(方程中的第二個矩陣)。外部參數矩陣包含旋轉和平移分量[R|T]
。
2
我建議你通過學習針孔相機模型,該款機型的過程中,通過其在3D世界中的一個點使用相機內部參數映射到圖像平面開始。正如你所看到的,這個過程不是一對一的,因此它通常不能被倒置(圖像到3D),除非你有深度信息(你有,因爲你說的點位於z = 0 )。 this presentation幻燈片27中提到了這種特殊情況。先前的講座詳細解釋了圖像形成過程,並且可以用作實際確定從圖像到世界座標的轉換的第一參考。 Szeliski's book和this PDF也是很好的資源。
相關問題
- 1. 如何將世界座標轉換爲相機圖像座標?
- 2. 從圖像座標中獲取對象的世界座標
- 3. 照片座標比。世界座標
- 4. 轉換視圖點擊座標從世界座標到本地?
- 5. OpenCV:從世界到像素座標的dx和dy轉換
- 6. 從鼠標座標到世界座標通過glUnproject
- 7. 如何將像素座標轉換爲世界座標?
- 8. 世界座標浮動塊和像素座標
- 9. 世界大洲的座標
- 10. 使用世界座標
- 11. 將光世界空間座標轉換爲眼圖座標
- 12. 轉換網格座標到真實世界的座標
- 13. 投影屏幕座標到世界座標軸射線
- 14. OPEN GL ES 1.0。世界座標到屏幕座標
- 15. 屏幕座標到現實世界座標在opengl
- 16. 世界座標到UI座標,反之亦然?
- 17. Android OpenGL ES 2.0屏幕座標到世界座標
- 18. 3D相機座標到世界座標(更改基準?)
- 19. 圖像點(像素)到現實世界座標(米)
- 20. C++獲取世界座標中的攝像頭位置(opencv)
- 21. opencv的Ç - 笛卡爾座標到極座標圖像變換
- 22. Java Slick2d - 如何將鼠標座標轉換爲世界座標
- 23. 世界到OpenSceneGraph中的空間座標
- 24. 世界到當地的座標
- 25. OpenGL的座標變換Sceen到世界
- 26. Unproject鼠標讓3D世界座標Libgdx
- 27. 轉化2D圖像座標到3D世界其中z = 0
- 28. MKMap座標映射到圖像座標
- 29. C++/OpenGL將世界座標轉換爲屏幕(2D)座標
- 30. 轉換屏幕座標爲世界座標
感謝您的回答。我認爲這是一般情況。看起來相機位置的過渡[X,Y,Z]應該變爲t1 t2 t3。但我不明白我怎麼能從[Roll,Pitch,Yaw]中獲得r11〜r33。那我的常規攝像機正在尋找地板[Z = 0]呢? – mefmef
如果您正在尋找地面,方程中的Z = 0,並且轉換變爲可逆的,如我在回答中提到的演示文稿幻燈片27中所述(http://www.gris.tu-darmstadt。德/教學/課程/ SS11/CV1/L9-singleview-v1.pdf)。 –
關於值r11〜r33,它們形成了所謂的旋轉矩陣。它可以寫成R = ABC,其中A,B和C表示圍繞不同軸的旋轉(根據慣例選擇軸)。旋轉量由滾動角,俯仰角和偏航角給出,但由於存在不同的慣例,因此A,B和C的值可能會有所不同。作爲實施轉換的參考,您可以使用http://mathworld.wolfram.com/EulerAngles.html。 –