如何从相机投影矩阵计算 ext 和 int 参数

Posted

技术标签:

【中文标题】如何从相机投影矩阵计算 ext 和 int 参数【英文标题】:How to compute ext and int parameter from camera projection matrix 【发布时间】:2013-08-02 14:33:11 【问题描述】:

我一直在学习相机校准,但对如何从相机投影矩阵恢复外在和内在相机参数感到困惑。

一般来说,我们可以通过求解从 3D 世界坐标到 2D 屏幕坐标的对应关系的方程来推导出相机投影矩阵值,也就是说,我们得到一个矩阵,比如说“C”

C = [c11 c12 c13 c14; c21 c22 c23 c24; c31 c32 c33 c34]

通常,在不失一般性的情况下,我们可以指定 c34 = 1,并且我们可以通过 3D-2D 对应关系找到其余元素。

之后,我们可以将相机投影矩阵 C 与 ext 和 int 矩阵(假设是 M)的结合进行比较,可以安排为

M = [fxr1+uxr3 fxtx+uxtz; fyr1+uyr3 fytx+uytz; r3 tz] 其中 r1, r2, r3 是旋转矩阵的行向量,tx,ty,tz 是平移。

我无法弄清楚的是,当我们将每个 C 元素与 M 元素进行比较以获取 ext 和 int 参数时,我们的 tz(关于 z 的翻译)将为 1,因为我们已将 c34 分配为 1。 tz总是1?谁能解释一下?

【问题讨论】:

【参考方案1】:

查找“RQ 分解”。 OpenCV 有一个routine 来做这件事

【讨论】:

嗨 Francesco,我的意思是当我们从相机校准矩阵计算 ext 和 int 参数时,我们可以将 c34 设置为 1。因此,当我们将相机校准矩阵与矩阵 M 进行比较时(int 的结合和 ext 矩阵),我们总是得到 Tz 的值为 1。 tz 怎么总是 1?谢谢

以上是关于如何从相机投影矩阵计算 ext 和 int 参数的主要内容,如果未能解决你的问题,请参考以下文章

如何从 WinRT Windows.Media API 中获取 Hololens 可定位相机视图和投影矩阵

九点标定为啥需要的是9个点?

如何使用matlab获取相机投影矩阵?

相机标定:投影矩阵

惰性求值和 const 正确性问题

相机矩阵(Camera Matrix)