【发布时间】:2021-09-18 12:04:24
【问题描述】:
我正在开发一个应用程序,使用 IFM 3D 相机在机器人拾取之前识别零件。目前,我能够使用深度图像中的轮廓找到这些对象的质心,并从那里计算这些对象在像素空间中的中心点。
我的下一个任务是将 2D 质心坐标转换为“真实”空间中的 3D 点。我能够训练机器人使其坐标系位于图像的中心或图像的传统 (0,0) 点(左上角)。
我使用的 3D 相机同时提供了内在和外在矩阵。我知道我需要使用这些矩阵的某种组合将我的质心投影到三个空间中,但仍然存在以下问题:
-
我目前在谷歌上的理解是内在矩阵用于修复镜头失真(桶形和针孔翘曲等),而外在矩阵用于将点投影到现实世界中。这个简化的假设是否正确?
-
相机如何提供单个外在矩阵?我知道传统上这些矩阵是使用棋盘角方法找到的,但这些矩阵不依赖于相机的高度吗?
-
解决方案是否像取 3x4 外在矩阵并将其乘以 3x1 矩阵 [x, y, 1] 一样简单,如果是,返回的值是相对于相机中心还是传统的 (0,0)图像的点。
提前感谢您的任何见解!另外,如果有什么安慰的话,我正在用 python 和 openCV 做所有事情。
【问题讨论】:
-
您的相机与工作台面的距离不是固定的吗?如果您无法确定距离,则需要一种测量方法(立体、飞行时间等)。
-
这将是一个固定的距离是的。这是否意味着我可以使用单个分机。供应商提供的相机矩阵?
-
只需校准系统,将对象放置在已知位置,拍照并确定哪些像素属于这些位置。当然,您可以将其复杂化,但简单总是更好。
-
会的,我会进行校准。关于供应商提供的内在/外在矩阵,我试图弄清楚为什么如果它们不是高度不可知的,为什么会提供这些。
标签: python matrix graphics computer-vision camera-calibration