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:主点坐标,也就是光轴与成像平面的交点。理想情况下应该在图像正中心,但实际生产中总会有几像素的偏移。
为什么叫「内参」?因为它只跟相机内部结构有关。你换个镜头,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 ]
注意,这里得到的是齐次坐标,最后要除以第三个分量才能得到真正的像素坐标。这个除法就是「透视投影」的核心——近大远小。
4.4 三者的关系:一张图说清楚
为了让你更直观地理解这三者的关系,我画了一张流程图:
这张图把整个流程串起来了:世界坐标先经过外参变换到相机坐标,再经过内参投影到像素坐标。而投影矩阵 P 就是把这两步合并成一步。
4.5 实际应用中的注意事项
讲完了理论,说说我在实际项目中踩过的坑:
- 内参标定不能只做一次:镜头变焦、温度变化都会影响内参。我建议每次重要实验前都重新标定一次。
- 外参的旋转矩阵必须是正交矩阵:R 的逆等于它的转置。如果你标定出来的 R 不满足这个条件,说明标定有问题。
- 投影矩阵 P 的最后一列:它包含了平移信息。如果你发现 P 的最后一列全是 0,那肯定错了——没有平移,相机就在世界坐标系原点。
好了,内参、外参、投影矩阵这三兄弟,你现在应该能分清楚了吧?说白了,内参是相机自己的「基因」,外参是相机在空间中的「位置和姿势」,投影矩阵就是它们俩的「合体技」。搞懂了这些,后面做三维重建、视觉SLAM,你就能游刃有余了。
公众号:蓝海资料掘金营,微信deep3321