如何计算笛卡尔坐标给出内在和失真矩阵

时间:2013-03-16 07:05:06

标签: c++ opencv camera-calibration

我已经进行了相机校准,我已经获得了相关内容: 这里有内在的:

<?xml version="1.0"?>
<opencv_storage>
<Intrinsics type_id="opencv-matrix">
  <rows>3</rows>
  <cols>3</cols>
  <dt>f</dt>
  <data>
    6.59121826e+002 0. 2.09667786e+002 0. 6.98561340e+002
    1.49071167e+002 0. 0. 1.</data></Intrinsics>
</opencv_storage>

这里有一个失真:

<?xml version="1.0"?>
<opencv_storage>
<Distortion type_id="opencv-matrix">
  <rows>4</rows>
  <cols>1</cols>
  <dt>f</dt>
  <data>
    1.11172847e-001 -1.00810878e-001 -1.00857615e-001 -8.45640600e-002</data></Distortion>
</opencv_storage>

在这样的过程之后,我应该在图像平面中找到一个点A(u,v),它在我的笛卡尔裁判R(X,Y,Z)中协调。

注意:Z轴与光轴平行,X轴也与u轴平行,依此类推Yv

我关注this online turorial但我无法计算XYZ

任何帮助。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果内部矩阵为K且失真运算符为D,则对于给定点A(u,v),空间中的对应点将为(X,Y,Z)^T = t * D^-1 * K^-1 * (u,v,1)^T,其中{{1}是一个任意的实数。假设摄像机中心位于原点。