从 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的主要内容,如果未能解决你的问题,请参考以下文章