2012-11-16 426 views
0

在我的项目中,计算像素中的x,y和Z中以mm为单位的相机距离。因此,我想利用深度并计算x,y, ž。
任何人都可以告诉我我该怎么做。
我拥有的是
1.x,y像素从图像中获得。
2.从相机的距离和从摄像头和对象的对象
距离不断变化的,因为是在不同的距离如何将x,y像素映射到世界坐标

+0

你有校准过的相机吗?你已经知道与物体的距离了吗?所以你已经知道Z,你想要X和Y? – Hammer

+0

@hammer yea我的问题Z我正在计算mm现在我想要x,y w.r.t的距离。 –

+0

X,y从图像中获取像素,是相机已校准,我有固有矩阵 –

回答

1

如果在图像坐标系中有x,y,相机矩阵和世界坐标系中的z,则需要将图像坐标放入同质向量中,乘以相机矩阵的逆,然后再由z_world坐标。起初可能不直观的东西是,你在世界坐标系中的单位不重要。乘以相机矩阵的逆矩阵后,您已定义无比单位的比率x/z。您将结果单位乘以z_world。你可以用毫米,英寸,英里等来测量它,而且你的结果矢量将具有相同的单位。

cv::Matx31f world_cord(x_im,y_im,1);   //here measured in pixels 
world_cord = camera_matrix.inv()*world_cord; //representing a ratio x/z,y/z 
world_cord *= z_world;      //now x,y,z are measured in units of z_world 

world_cord现在包含x_world,y_world,z_world。

+0

我想要以mm为单位获得x,y,而不是以像素为单位。有什么方法可以使用深度 –

+0

来转换它们,这就是它的作用。 x_world和y_world在最后以毫米为单位测量 – Hammer

+0

非常感谢你..你救了我.. +1 –

相关问题