【问题标题】:Calculate Camera space coordinates from vtk render从 vtk 渲染计算相机空间坐标
【发布时间】:2013-08-10 02:09:27
【问题描述】:

我已经在 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 ?

【问题讨论】:

    标签: c++ math opengl graphics vtk


    【解决方案1】:

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

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

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

    阿伦

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-14
      • 2011-08-05
      • 2020-05-09
      • 2022-12-10
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多