当前位置: 首页 > 知识库问答 >
问题:

OpenCV立体校正后三维摄像机和图像像素位置计算

简学文
2023-03-14

我有一个完整的立体声校准与所有结果从(Python)OpenCV(即必要的输入和输出的立体整流)。

立体摄像机设置的可视化

共有1个答案

祁坚壁
2023-03-14

太晚了,我主要是为了将来能帮上忙才回答的。这可能不是OP要找的,但我和一个同事校准了一个立体相机,正在尝试计算校准中使用的棋盘角的深度。由于我们知道每个(左和右)图像中角的精确像素坐标,因此不需要校正或一维搜索。然而,由于stereocrety()返回的是假想的、经过整流的摄像机的投影矩阵,我们最终只能手动地从K1、K2、R和T创建P1和P2:

P1 = np.hstack((K1, np.zeros(shape=(3, 1))))
P2 = K2@np.hstack((R, T))

在我们的特殊情况下,使用单摄像机校准(stereocalibrate())对每个摄像机单独计算K1和K2,然后传递给calibrateCamera(),后者给出旋转和平移矩阵R&T(以及E和F)。

我的理解是,投影矩阵的最后一列已经考虑到了立体对的两个摄像机之间的关系(经常使用左侧摄像机中心作为世界原点),因此对右侧摄像机中的像素[u2,v2]使用P2应该会得到一个与对左侧摄像机中相应的像素[u1,v1]使用P1具有相同世界原点的XYZ。但是,请注意(再次),这个使用stereocrety()中的P1和P2的世界起源是用于一个假想的、经过整流的左相机,而不是真实的相机。

不过,我还是个新手,所以请参阅计算机视觉第二版多视图几何的第6章。理查德·哈特利和安德鲁·齐瑟曼的更多细节。

 类似资料:
  • 我一直在运行一个从多个相机拼接图像的项目,但我认为我遇到了瓶颈......我对这个问题有一些问题。 我想尝试在未来将它们安装在车辆上,这意味着相机的相对位置和方向是固定的。 此外,由于我使用多个摄像机,并尝试使用单应性从中缝合图像,我将尽可能靠近摄像机,以减少误差(由于摄像机的焦点不在同一位置,并且摄像机占据一定空间是不可能的)。 这是我的实验短片http://www.youtube.com/wa

  • 我目前有一个游戏,有一个地图是480x3200,一个人从顶部掉下来。镜头跟在人的后面,随着人的下落有平台。平台需要是可触摸的,所以我可以在游戏中旋转和移动它们,所以我把它变成了一个图像,而它原本只是一个精灵。 编辑:

  • 前面的教程中我们讨论了观察矩阵以及如何使用观察矩阵移动场景(我们向后移动了一点)。OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动。 本节我们将会讨论如何在OpenGL中配置一个摄像机,并且将会讨论FPS风格的摄像机,让你能够在3D场景中自由移动。我们也会讨论键盘和鼠标输入,最终完成一个

  • 如何找到二进制图像(cv::Mat)中所有非零像素的位置?我是否必须扫描图像中的每个像素,或者是否可以使用高级OpenCV函数?输出应为点(像素位置)的矢量。 例如,这可以在Matlab中简单地完成: 或者更简单 编辑:换句话说,如何找到坐标的所有非零元素在cv::垫?

  • 我正在尝试使用图像编辑器(如MS paint或paint.net)在图像上绘制固定颜色的边界框(如RGB=255,0,0的纯红色),然后在python中加载图像(如opencv imread),方法是查找具有此RGB值(或0,0,255中的BGR值)的像素,以便创建用于对象检测的标签。 但是,在保存并加载图像后,我看不到任何具有这种RGB或BGR值的像素。相反,这些像素在一个值范围内,这个值可能与

  • 我是否也需要一个相机向上向量,这代表什么? 我在用GLM。