3D世界坐标到2D图像坐标转换
3D world coordinate to 2D image coordinate conversion
如果世界坐标系中的相机坐标 (x1, y1, z1) 与相机姿态四元数(或俯仰滚转和偏航)一起可用,那么我如何将像素 (x,y) 映射到相机上图像 - 给定世界坐标系中像素对象 (x2,y2,z2) 的坐标?我是计算机视觉的新手。即使是相关教程的 link 也将不胜感激。
1。创建视图(相机)矩阵
伪代码:
view = new Matrix4();
view.rotate(camRotationQuaternion);
view.translate(camX, camY, camZ);
2。将顶点乘以视图矩阵
伪代码:
vertexCam = view * vertexWorld;
3。获取变换点的 x
和 y
值(在相机中 space)
由于该点现在是 "seen" 从视图矩阵,它的 z
值代表相机的深度,它的 x
和 y
值代表相机平面 "image" 上的像素坐标。
伪代码:
pixX = vertexCam.x;
pixY = vertexCam.y;
如果世界坐标系中的相机坐标 (x1, y1, z1) 与相机姿态四元数(或俯仰滚转和偏航)一起可用,那么我如何将像素 (x,y) 映射到相机上图像 - 给定世界坐标系中像素对象 (x2,y2,z2) 的坐标?我是计算机视觉的新手。即使是相关教程的 link 也将不胜感激。
1。创建视图(相机)矩阵
伪代码:
view = new Matrix4();
view.rotate(camRotationQuaternion);
view.translate(camX, camY, camZ);
2。将顶点乘以视图矩阵
伪代码:
vertexCam = view * vertexWorld;
3。获取变换点的 x
和 y
值(在相机中 space)
由于该点现在是 "seen" 从视图矩阵,它的 z
值代表相机的深度,它的 x
和 y
值代表相机平面 "image" 上的像素坐标。
伪代码:
pixX = vertexCam.x;
pixY = vertexCam.y;