首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV立体视觉二维摄像机平面投影的三维坐标与二维点到三维的三角剖分不同

OpenCV立体视觉二维摄像机平面投影的三维坐标与二维点到三维的三角剖分不同
EN

Stack Overflow用户
提问于 2016-05-01 12:41:02
回答 1查看 3.9K关注 0票数 1

通过特征匹配,在立体摄像机的左摄像机(pointL)和右摄像机(pointR)中分别得到一个图像点和相应的图像点。这两个相机是平行的,在同一“高度”。他们之间只有x-转换。

我也知道每个相机的投影矩阵(projL,projR),这是我在使用initUndistortRectifyMap校准时得到的。

对于三角剖分点,我调用:triangulatePoints(projL, projR, pointL, pointR, pos3D) (文档),其中pos3D是对象的输出三维位置。

现在,我想要将投影到左侧相机的2D图像的3D坐标:

2 3dPos=projL*3 3dPos

得到的x坐标是正确的。但是y坐标大约错了20像素。

我怎么才能解决这个问题?

编辑:,当然,我需要使用齐次坐标,以便将它与投影矩阵(3x4)相乘。为此,我决定:

代码语言:javascript
复制
3dPos[0] = x;
3dPos[1] = y;
3dPos[2] = z;
3dPos[3] = 1;

设置3dPos[3]1是错误的吗?

注意:

  1. 所有的图像都被重新映射,我在一种预处理步骤中这样做。
  2. 当然,我总是使用齐次坐标
EN

回答 1

Stack Overflow用户

发布于 2016-05-02 13:08:53

你很可能会射入校正后的摄像机。在原始(不失真)线性摄像机坐标中,需要应用整流翘曲的逆变换来获得点,然后应用畸变进入原始图像。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36966759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档