【问题标题】:How to Transform Centroid from Pixel to Real World Coordinates如何将质心从像素转换为真实世界坐标
【发布时间】:2021-09-18 12:04:24
【问题描述】:

我正在开发一个应用程序,使用 IFM 3D 相机在机器人拾取之前识别零件。目前,我能够使用深度图像中的轮廓找到这些对象的质心,并从那里计算这些对象在像素空间中的中心点。

我的下一个任务是将 2D 质心坐标转换为“真实”空间中的 3D 点。我能够训练机器人使其坐标系位于图像的中心或图像的传统 (0,0) 点(左上角)。

我使用的 3D 相机同时提供了内在和外在矩阵。我知道我需要使用这些矩阵的某种组合将我的质心投影到三个空间中,但仍然存在以下问题:

  1. 我目前在谷歌上的理解是内在矩阵用于修复镜头失真(桶形和针孔翘曲等),而外在矩阵用于将点投影到现实世界中。这个简化的假设是否正确?

  2. 相机如何提供单个外在矩阵?我知道传统上这些矩阵是使用棋盘角方法找到的,但这些矩阵不依赖于相机的高度吗?

  3. 解决方案是否像取 3x4 外在矩阵并将其乘以 3x1 矩阵 [x, y, 1] 一样简单,如果是,返回的值是相对于相机中心还是传统的 (0,0)图像的点。

提前感谢您的任何见解!另外,如果有什么安慰的话,我正在用 python 和 openCV 做所有事情。

【问题讨论】:

  • 您的相机与工作台面的距离不是固定的吗?如果您无法确定距离,则需要一种测量方法(立体、飞行时间等)。
  • 这将是一个固定的距离是的。这是否意味着我可以使用单个分机。供应商提供的相机矩阵?
  • 只需校准系统,将对象放置在已知位置,拍照并确定哪些像素属于这些位置。当然,您可以将其复杂化,但简单总是更好。
  • 会的,我会进行校准。关于供应商提供的内在/外在矩阵,我试图弄清楚为什么如果它们不是高度不可知的,为什么会提供这些。

标签: python matrix graphics computer-vision camera-calibration


【解决方案1】:
  1. 没有。我建议您阅读 Hartley 和 Zisserman 的多视图几何中的基础知识,可在网络上免费获得。根据相机型号,内在函数包含不同的参数。对于针孔相机模型,这些是焦距和主点。

  2. 您可以直接将 2D 质心转换为 3D 的唯一原因是您使用了 3D 相机。阅读相机手册,应该解释如何为您的特定型号提供 2D 和 3D 坐标之间的关系。 如果您只有图像数据,则只能从至少两个视图计算 3D 点。

  3. 不,当然不是。请不要偷懒,开始阅读有关相机投影的基础知识,而不是要求其他人解释网络和文献中随处可见的常见基础知识。

【讨论】:

  • 您好,感谢您抽出宝贵时间回复,但请注意,我实际上已经在网上进行了研究。我正在使用这个论坛通过论文、文章或教科书以外的渠道确认我对主题的理解。我没有简历背景。你显然知道。请不要假设您的“共同基础”与其他所有人相同。再次感谢您的回复。
  • “我目前在谷歌上的理解是内在矩阵是用来修复镜头畸变的”——这句话表明你在一本关于内在参数的书中至少没有读过几页。所以请去做吧,你很快就会明白的。您的问题非常广泛,并不是解决 stackoverflow 的最佳方法。请更具体,以便答案也可以更具体。此外,请接受或支持答案。
猜你喜欢
  • 1970-01-01
  • 2014-06-15
  • 2013-12-16
  • 1970-01-01
  • 2018-07-03
  • 2022-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多