4、内参矩阵与外参矩阵:内参K矩阵的物理意义、外参[R|t]的几何含义、投影矩阵P

好,咱们接着聊。前面我们把畸变校正的原理讲清楚了,但有个问题一直悬着:校正后的像素坐标,怎么跟真实世界的位置对应起来?

这就得请出今天的主角——内参矩阵和外参矩阵。说白了,它们就是相机看世界的两套「翻译规则」。我当年刚接触这概念时,总觉得矩阵就是一堆数字,没啥感觉。直到有一次做三维重建,标定数据出了点偏差,结果重建出来的物体歪得像抽象画……嗯,从那以后我再也不敢小看这几个矩阵了。

4.1 内参矩阵 K:相机内部的「尺子」

内参矩阵,通常记作 K,描述的是相机坐标系到像素坐标系的映射关系。它只跟相机本身的硬件有关,跟你把相机放在哪儿、对着哪儿拍,一点关系都没有。

K 矩阵长这样:

K = [ fx   0   cx
      0   fy   cy
      0    0    1 ]

这里面每个参数都有明确的物理意义:

  • fx, fy:焦距在 x 和 y 方向上的像素度量。说白了,就是镜头中心到成像平面的距离,用像素个数来表示。我习惯叫它「像素焦距」。
  • cx, cy:主点坐标,也就是光轴与成像平面的交点。理想情况下应该在图像正中心,但实际生产中总会有几像素的偏移。
💡 我的经验: 很多初学者以为 cx, cy 就是图像宽高的一半。其实不然。我测过几十款相机,主点偏移 3~5 个像素是常事。如果你做高精度测量,千万别偷懒用默认值。

为什么叫「内参」?因为它只跟相机内部结构有关。你换个镜头,fx, fy 就会变;你换个传感器,cx, cy 也会变。但只要你不动相机硬件,K 矩阵就是固定的。

4.2 外参矩阵 [R|t]:相机在空间中的「位置和姿态」

外参矩阵描述的是世界坐标系到相机坐标系的变换。它由两部分组成:

  • R:旋转矩阵,3×3,表示世界坐标系的三个轴相对于相机坐标系的旋转关系。
  • t:平移向量,3×1,表示世界坐标系原点在相机坐标系中的位置。

合在一起就是 [R|t],一个 3×4 的矩阵。

你想想看,相机放在三脚架上,你把它转个角度,或者挪个位置,内参 K 变不变?不变。但外参 [R|t] 呢?全变了。这就是「外参」这个名字的由来——它描述的是相机外部的空间关系。

🔑 核心理解: 内参是「相机怎么看世界」,外参是「相机在世界哪里、朝哪看」。两者缺一不可。

我记得有一次做多相机拼接项目,两台相机型号完全一样,内参几乎相同。但就因为安装角度差了 0.5 度,外参标定错了,拼接出来的全景图在接缝处总是对不齐。后来我花了整整两天重新标定外参,问题才解决。所以,外参的精度直接影响空间映射的准确性

4.3 投影矩阵 P:从世界到像素的「一站式服务」

投影矩阵 P 就是把内参和外参合在一起,直接完成世界坐标系 → 像素坐标系的映射。

公式很简单:

P = K * [R | t]

P 是一个 3×4 的矩阵。给定一个世界坐标点 (X, Y, Z),乘以 P 就能得到像素坐标 (u, v):

[ u ]   [ p11  p12  p13  p14 ] [ X ]
[ v ] = [ p21  p22  p23  p24 ] [ Y ]
[ 1 ]   [ p31  p32  p33  p34 ] [ Z ]
                                 [ 1 ]

注意,这里得到的是齐次坐标,最后要除以第三个分量才能得到真正的像素坐标。这个除法就是「透视投影」的核心——近大远小

⚠️ 避坑指南: 我曾经在写代码时,忘了把齐次坐标归一化,结果算出来的像素坐标全都不对。调试了整整一个下午才发现问题。所以,拿到投影结果后,一定要检查第三个分量是不是 1

4.4 三者的关系:一张图说清楚

为了让你更直观地理解这三者的关系,我画了一张流程图:

世界坐标系 (X, Y, Z) 相机坐标系 (Xc, Yc, Zc) 像素坐标系 (u, v) 外参 [R|t] 旋转 + 平移 内参 K 焦距 + 主点 投影矩阵 P = K · [R | t] 世界 → 像素 一站式映射

这张图把整个流程串起来了:世界坐标先经过外参变换到相机坐标,再经过内参投影到像素坐标。而投影矩阵 P 就是把这两步合并成一步。

4.5 实际应用中的注意事项

讲完了理论,说说我在实际项目中踩过的坑:

  1. 内参标定不能只做一次:镜头变焦、温度变化都会影响内参。我建议每次重要实验前都重新标定一次。
  2. 外参的旋转矩阵必须是正交矩阵:R 的逆等于它的转置。如果你标定出来的 R 不满足这个条件,说明标定有问题。
  3. 投影矩阵 P 的最后一列:它包含了平移信息。如果你发现 P 的最后一列全是 0,那肯定错了——没有平移,相机就在世界坐标系原点。
💡 实用技巧: 验证标定结果是否准确,有个简单方法:用标定板上的已知点,反投影到图像上,看看重投影误差有多大。一般小于 0.5 像素就算不错了。我自己的项目通常要求控制在 0.3 像素以内。

好了,内参、外参、投影矩阵这三兄弟,你现在应该能分清楚了吧?说白了,内参是相机自己的「基因」,外参是相机在空间中的「位置和姿势」,投影矩阵就是它们俩的「合体技」。搞懂了这些,后面做三维重建、视觉SLAM,你就能游刃有余了。


公众号:蓝海资料掘金营,微信deep3321