我想要做的是將點雲投影到2D圖像上。我擁有的是一個3D PointCloud和一個與普通世界座標系不同的Viewpoint。我想從這個觀點進行光線投射來生成點雲的二維圖像。所以,我只需要像getintersectedvoxel這樣的方法,它可以爲整個區域進行鑄造,而不僅僅是單一射線。從給定的觀點將3D點雲Raycast到2D圖像
1
A
回答
0
這是從3D到相機的投影。您可以使用針孔攝像機模型方程式獲得它(如here所示)。
您需要先定義相機的3個參數:焦距f
,以及投影平面的中心:cx
,cy
。有了這個,你創建一個3x3矩陣(我將使用MATLAB語法):
A = [ f 0 cx;
0 f cy;
0 0 1 ];
您可以使用類似cx = 0.5 * image_width
,cy = 0.5 * image_height
,有的價值f = 800
(嘗試一些他們的檢查圖像看起來如何更好)。
然後,從相機框架點雲框架的變換一個3×4矩陣(你說你有話):
T = [ r11 r12 r13 tx;
r21 r22 r23 ty;
r31 r32 r33 tz ];
最後,你的點雲齊次座標,即在4xN矩陣點雲與N個點:
P = [ x1 x2 ... xN;
y1 y2 ... yN;
z1 z2 ... zN;
1 1 ... 1 ];
現在,您可以投影點:
S = A * T * P;
S
是一個3×N個矩陣,其中每個第i 3D點的像素座標是:
x = S(1, i)/S(3, i);
y = S(2, i)/S(3, i);
+0
多數民衆贊成在一般情況下...但我只想看到第一個相交的體素,而不是所有的體素 – user2707698
+0
具有較低'S(3,i)'分量的點首先被看到。 – ChronoTrigger
相關問題
- 1. 將點雲投影到2D
- 2. 將3D點投影到2D點
- 3. OpenGL:渲染圖像3D點雲
- 4. 將3D點轉換爲2D
- 5. 散點圖Matplotlib 2D> 3D
- 6. 3d到2d點轉換
- 7. 將2D窗口點轉換爲3D點
- 8. 將2D點投影到3D Plucker線
- 9. 從多個2D點重建3D點?
- 10. 從3D點獲取2D屏幕點
- 11. 從兩個2D點重建3D點?
- 12. Java LWJGL OpenGL轉換3d點到2d點
- 13. 將2D圖像,3D模型
- 14. 3d從2d圖像emgu
- 15. 2D圖像到3D(重建)
- 16. 將3D點雲轉換爲距離圖像
- 17. OpenGL中從圖像到用戶定義的一組點(點雲)的貼圖
- 18. 攝像機標定:3D到2D點映射
- 19. 3D動畫 - 觀點
- 20. numpy的點積(3D倍2D)
- 21. 錯誤添加點雲給觀看者
- 22. 3D繪圖與給定的2D數據
- 23. 2d點雲的輪廓
- 24. 如何從任意點Raycast
- 25. 旋轉3d點雲以偏移給定的vNormal和floor點的平面角度
- 26. 將3D點雲與CAD模型匹配
- 27. 轉換PCL XYZ雲到XY(3D到2D)
- 28. 如何使用writeCloud()OpenCV函數構造給定3D點座標的點雲?
- 29. 蟒3D coordiante點雲內插
- 30. OpenCV StereoRectify未校準到3D點雲
像做點的投影到一個平面與正常平面? – Max
你可以看看VTK(http://www.vtk.org/vtkindex.html) –
我得到了兩個視點之間的變換矩陣,如果這是必要的。 – user2707698