从 2d 图像像素获取 3d 坐标系中的 x,y

Posted

技术标签:

【中文标题】从 2d 图像像素获取 3d 坐标系中的 x,y【英文标题】:Getting x,y in 3d coordinate system from 2d image pixel 【发布时间】:2012-08-22 11:57:57 【问题描述】:

使用固定位置的相机,我必须跟踪运动中的物体并将其定位在某个预先选择的坐标系中。想法是在已知高度的对象顶部放置一个特定的颜色标记,这样Z坐标就知道了。完成颜色跟踪后,我需要从找到颜色的 u 和 v 图像坐标中找出 X 和 Y。我已经完成了相机校准,我打算使用 cv::solvePnP 来获取旋转和平移向量。另外,我学习了颜色跟踪here,并从中编写了一个 C++ api。

我已经找到了一个类似的问题here 并从中学到了很多,但不同的是我只需要评估X和Y,因为Z坐标是已知的(之前测量过)。如何获得具有预先指定 Z 的 X 和 Y 坐标?感谢您的帮助!

【问题讨论】:

这个问题可能只对你有意义。您需要展示您尝试过什么以及您的具体问题是什么。 我想按照 Jav_Rock 在他的回答 here 中描述的那样做,就像我在问题中描述的那样,我已经有了 Z 坐标(它是颜色标记所在的高度)。所以,我想硬编码我的 Z 坐标,只得到 X 和 Y。 【参考方案1】:

由于您已经校准(我假设 z=0),您可以使用相机、平移和旋转矩阵从像素坐标到 rw 坐标。

    您找到了一个您想知道其 rw 坐标的点。 (颜色标记) 您查找该点的 x 和 y 坐标(假设 z=0) 您计算 x 和 y 中的角度(相对于主点) 您可以使用这些角度来计算 x 和 y 在 z=objectHeight 处的位置

【讨论】:

感谢您的建议,我会尝试一下。 另请参阅this answer,将图像点投影到 z=0 平面上。【参考方案2】:

在您标定并获得外在参数和内在参数后,您可以使用有关的信息

u,v坐标 z坐标

在世界坐标中找到 X e Y:

Pc = R * Pw + T

其中Pc凸轮坐标,Pw世界坐标,R旋转矩阵和T平移向量。

【讨论】:

这是从已知的世界坐标到图像坐标。问题是关于逆的。

以上是关于从 2d 图像像素获取 3d 坐标系中的 x,y的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL获取像素的原始3d坐标

使用掩码从特定坐标处的图像(2d数组)中提取像素值

需要一种从大量 3D 坐标中绘制平面的有效方法

八 动画效果

转载从零实现3D图像引擎:画2D直线不简单

如何使用 python 从 2d 坐标中获取 3d 空间坐标?