如何将x,y像素映射到世界坐标

时间:2012-11-16 15:30:50

标签: image-processing opencv

在我的项目中,我计算的是x,y的像素,Z是相机的距离,单位为mm。所以我想利用深度并计算x,y,z。

任何人都可以告诉我如何做到这一点吗?

我有以下信息:

  1. 从图像
  2. 获得的x,y像素
  3. 与相机和物体的距离 距离相机和物体的距离不断变化,因为我从不同的距离拍摄图像

2 个答案:

答案 0 :(得分:1)

如果图像坐标中有x,y,相机矩阵和世界坐标中的z,则需要将图像坐标放入同质矢量,乘以相机矩阵的倒数,然后乘以z_world坐标。一开始可能不直观的事情是世界坐标中的单位无关紧要。在乘以相机矩阵的倒数后,您已经定义了x / z比率,它是无单位的。您通过乘以z_world给出结果单位。你可以用mm,英寸,英里等来测量它,你得到的矢量将具有相同的单位。

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。

答案 1 :(得分:-1)

我建议您阅读3D reconsecration documentation以了解opencv实现。