通过特征匹配,在立体摄像机的左摄像机(pointL)和右摄像机(pointR)中分别得到一个图像点和相应的图像点。这两个相机是平行的,在同一“高度”。他们之间只有x-转换。
我也知道每个相机的投影矩阵(projL,projR),这是我在使用initUndistortRectifyMap校准时得到的。
对于三角剖分点,我调用:triangulatePoints(projL, projR, pointL, pointR, pos3D) (文档),其中pos3D是对象的输出三维位置。
现在,我想要将投影到左侧相机的2D图像的3D坐标:
2 3dPos=projL*3 3dPos
得到的x坐标是正确的。但是y坐标大约错了20像素。
我怎么才能解决这个问题?
编辑:,当然,我需要使用齐次坐标,以便将它与投影矩阵(3x4)相乘。为此,我决定:
3dPos[0] = x;
3dPos[1] = y;
3dPos[2] = z;
3dPos[3] = 1;设置3dPos[3]为1是错误的吗?
注意:
发布于 2016-05-02 13:08:53
你很可能会射入校正后的摄像机。在原始(不失真)线性摄像机坐标中,需要应用整流翘曲的逆变换来获得点,然后应用畸变进入原始图像。
https://stackoverflow.com/questions/36966759
复制相似问题