3D 世界坐标到 2D 图像坐标转换



如果世界帧中的相机坐标(x1,y1,z1)与相机姿态四元数(或俯仰滚动和偏航)一起可用,那么如何将像素(x,y)映射到相机图像上 - 给定世界帧中像素对象(x2,y2,z2)的坐标?我完全是计算机视觉的新手。即使是相关教程的链接也将不胜感激。

1. 创建视图(相机)矩阵

伪代码:

view = new Matrix4();
view.rotate(camRotationQuaternion);
view.translate(camX, camY, camZ);

2. 将顶点乘以视图矩阵

伪代码:

vertexCam = view * vertexWorld;

3. 获取变换点的x值和y值(在相机空间中)

由于现在从视图矩阵中"看到"该点,因此其z值表示相机的深度,其x值和y值表示相机平面"图像"上的像素坐标。

伪代码:

pixX = vertexCam.x;
pixY = vertexCam.y;

相关内容

  • 没有找到相关文章

最新更新