gpt4 book ai didi

c++ - 从给定视点将 3D 点云光线转换到 2D 图像

转载 作者:太空宇宙 更新时间:2023-11-04 14:02:58 26 4
gpt4 key购买 nike

我想做的是将点云光线转换到 2D 图像。我拥有的是一个 3D 点云和一个与一般世界坐标系不同的视点。我想从此视点进行光线转换以生成点云的二维图像。所以,我只需要一个像 getintersectedvoxel 这样的方法,它对整个区域进行转换,而不仅仅是对单个射线。

最佳答案

那是从 3D 到相机的投影。你可以用针孔相机模型方程得到它(如图here)。

您需要定义相机的前 3 个参数:焦距 f,以及投影平面的中心:cxcy .这样你就可以创建一个 3x3 矩阵(我将使用 matlab 语法):

A = [ f 0 cx;
0 f cy;
0 0 1 ];

您可以使用 cx = 0.5 * image_widthcy = 0.5 * image_height 和一些值 f = 800(尝试其中一些是为了检查图像看起来如何更好)。

然后,一个 3x4 矩阵,其中包含从相机帧到点云帧的转换(你说你有):

T = [ r11 r12 r13 tx;
r21 r22 r23 ty;
r31 r32 r33 tz ];

最后,齐次坐标中的点云,即在具有 N 个点的点云的 4xN 矩阵中:

P = [ x1 x2 ... xN;
y1 y2 ... yN;
z1 z2 ... zN;
1 1 ... 1 ];

现在你可以投影点了:

S = A * T * P;

S 是一个 3xN 矩阵,其中每个第 i 个 3D 点的像素坐标为:

x = S(1, i) / S(3, i);
y = S(2, i) / S(3, i);

关于c++ - 从给定视点将 3D 点云光线转换到 2D 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18382974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com