首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >垂直于相机z轴的线的相机投影

垂直于相机z轴的线的相机投影
EN

Stack Overflow用户
提问于 2016-02-22 07:23:35
回答 1查看 591关注 0票数 1

我正在使用openCV开发一个对象跟踪应用程序。我想将我的像素坐标转换为世界坐标,以获得更有意义的信息。我读过很多关于计算透视变换矩阵的文章,我也知道cv2.solvePnP。但我觉得我的情况应该是特别的,因为我在田径跑道上跟踪一个跑步者,跑道与摄像机的z轴垂直。我将设置摄像头以确保这一点。

如果我只选择跑道边缘上的两个点,我可以计算出在该特定高度(地面高度)和距相机的距离(即沿该线)的像素到世界坐标的线性转换。然后我推断跑步者将在一条与跑道平行的直线上跑步,该直线的高度和与相机的距离略有不同,但这些直线在图像中应该仍然是平行的,因为它们都将与相机的z轴正交。有了所有这些限制,我觉得我不应该需要正常的点数来跟踪特定轴上的跑步者。我的直觉告诉我,2-3应该足够了。有人能帮我弄清楚这里的方法吗?我是不是完全偏离正轨了?由于高度和到相机的距离基本上都是固定的,我不应该使用更小的通信集吗?

谢谢,比尔

EN

回答 1

Stack Overflow用户

发布于 2016-02-22 13:33:57

所以,我想我自己已经回答了这个问题。确实,在以下假设下,只需要两个对应点。

假设:

使用与地平面平行的X轴和Y轴设置

  1. 世界坐标。X轴与跑道平行。
  2. 相机平移并可能绕X轴旋转(向下倾斜),但不绕Y轴(相机平面与跑道和X轴平行)或Z轴旋转(相机相对于ground).
  3. Camera的水平通过相机校准得知。

方法:

  1. 使用世界和图像中的已知坐标在地平面上拾取两个点。例如,跑道边缘上的两个点,如原始帖子中所述。连接世界坐标中的点的线不应该与X或Z轴平行。
  2. Y=0对于这些点,忽略旋转/平移矩阵的第二列,将投影减少为平面单应性变换(3x3矩阵)。现在我们有了9个自由度。

  1. ,旋转假设将在旋转/平移矩阵上施加某种形式。也就是说,第一列和第一行将是标识(1,0,0)。这进一步将矩阵中的自由度数量减少到5。
  2. 约束矩阵的第二列的值,使cos^2(θ)+sin^2(θ)= 1。这将未知数的数量减少到仅4。两个对应点将给出我们从单应矩阵计算地面plane.
  3. Factor的单应性矩阵所需的4个方程,将旋转/平移矩阵留给地面。由于先前所做的旋转假设,旋转/平移矩阵中被忽略的列可以很容易地从相同矩阵的第三列构造,该第三列是地平面单应性matrix.
  4. Multiply中的第二列,它与相机内部参数一起返回,以得到最终的通用投影矩阵(仅从2个对应点!)

我的测试实现工作得很好。当然,它对提供的两个对应点的准确性很敏感,但这是给定的。

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

https://stackoverflow.com/questions/35543447

复制
相关文章

相似问题

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