1

我已经在 vtk 中渲染了一个图像,我想将图像点 (x,y) 投影到 3D 相机帧坐标。对于每个像素 (x,y),我在相机帧中都有 z 值(从 z 缓冲区获得)。

在针孔投影下,执行此操作的标准方法是:

x_camera_frame = (x_pixel - cx) * z_camera_frame/ fx;

y_camera_frame = (y_pixel - cy) * z_camera_frame / fy;

其中fxfy是焦距,cx cy是相机的投影中心(内在参数)。

问题是,vtkCamera您只能设置视野,但无法设置或获取焦距或投影中心,那么我将如何计算x_camera_framey_camera_frame

4

1 回答 1

1

通常投影的中心是相机位置,即。(0,0,0) 在相机空间中。这意味着您的图像的左上角应该位于P = (-imagewidth/2, -imageheight/2, fl), (fl 是焦距),假设在透视变换之后没有应用进一步的 2d 变换(裁剪、调整大小等)。

P这里表示从相机空间看到的图像平面中的点。要将它乘以投影矩阵的倒数,您应该能够获得相机空间中的点。

我假设您知道图像的宽度和高度是多少。要获得焦距,可以使用相机和焦点之间的距离。API 还返回Projection Transform Matrix,因此您可以在将其应用于图像平面点之前计算其逆矩阵。

阿伦

于 2013-08-08T18:06:26.897 回答