2015-06-16 76 views
0

我想提取相机检测到的物体的真实世界坐标。我有相机矩阵和失真矩阵。由于我有x,y(图像中物体的坐标),我试着求解(X,Y)以获得相对于相机的物体坐标。 (Z = 0,因为我知道该对象被放置在平面上。)提取相机坐标

enter image description here

然而,似乎有什么不对这种方法。我在这里错过了什么吗?

+0

你不知道W¯¯这就是为什么你不能给解决X,Y,Z,但只有在3D世界中的光线和你的观点可以在该线的任何位置。 – Micka

+0

顺便说一句,你可以尝试颠倒摄像机矩阵,并将其从左边乘以非常容易的方程。在那之后,如果你输入x和y,你有一个X,Y,Z只取决于未知的w。 – Micka

+0

感谢您的回答。我也有扭曲矩阵和旋转平移矩阵。我需要用它们来获得(X,Y)吗? – Abhijay

回答

-1

问题是,你得到的是协调规模。远处的大物体与附近的小物体具有相同的图像。

您需要申请有关对象的一些外部信息,以能够扩展的坐标。它可以是关于物体的一些信息(例如其大小),也可以是使用立体相机或其他RGBD相机。

+0

我知道对象的大小,但我如何缩放它?你能再详细一点吗?谢谢您的帮助! – Abhijay

+0

错误的答案。尺度是已知的,因为这是一个校准设置。 –

+0

这个问题没有指定已知的比例。 – Photon

0

你说,在Z世界问题的三维点的坐标已知为零。我假定你的世界坐标系与摄像机坐标系不一样,否则你的点将落在传感器平面之后,我们就完成了。因此,您必须具有(可能是校准过程的结果)从世界框架到相机之间的坐标变换,表示为3x4矩阵Q = [R |使得该平面上的世界点投影到图像上:

[x, y, w]' = K * Q * [X, Y, Z, 1]' 

其中“'”表示换位。

表示具有齐逆坐标从相机帧变换到世界坐标系:

Qi = inv(Q) = [R' | (-R' * t)] 

使用该矩阵,我们可以在世界坐标写照相机中心:

c_w = Qi * [0, 0, 0, 1]' 

在像素图像平面这是你的世界点的图像有世界坐标:

i_w = Qi * Ki * [x, y, 1]' 

其中Ki = inv(K)是相机矩阵的倒数。

所有的光线通过像素从摄影机中心去点有当时的世界坐标:

r_w = c_w + lambda * (i_w - c_w) 

其中的λ是一个正数。

您正在寻找这种射线上的特定点,即Z = 0平面上的一点。因此,如果您在(X,Y,Z)分量中写出最后一个方程,并将Z替换为0,则可以得到未知量X,Y和λ的3个方程的线性系统。解决它,你会得到你的答案。