标定基础:什么是标定?内参、外参、畸变参数的基本概念

大家好,我是你们的嵌入式工程师老友。今天咱们聊聊标定这件事。

说实话,我刚入行那会儿,觉得标定就是个「玄学」。明明传感器买回来就能用,为什么还要多此一举?直到我在一个机器人项目中,摄像头看到的障碍物位置和激光雷达测到的差了十几厘米,差点撞上实验台……嗯,从那以后,我再也不敢小看标定了。

一、标定到底是什么?

标定,说白了就是给传感器「量体裁衣」。每个传感器出厂时都有个体差异,就像同一批手机摄像头,拍出来的颜色可能都不一样。标定就是找到这些差异,然后补偿掉。

我习惯把标定理解成三个步骤:

  • 建模:用数学公式描述传感器怎么把物理世界变成数据
  • 测量:用已知的参照物去实际测试
  • 求解:反推出公式里的那些未知参数

举个例子,你买了个激光雷达,它告诉你前方5米有个物体。但实际测量发现是4.85米。这0.15米的偏差,就是标定要解决的问题。

核心观点:标定不是「修」传感器,而是「认识」传感器。你知道了它的脾气,才能用好它。

二、内参:传感器自己的「性格」

内参,就是传感器内部固有的参数。拿摄像头来说,内参包括:

  • 焦距(fx, fy):镜头把光线汇聚到什么位置
  • 主点(cx, cy):光轴和成像平面的交点,理论上应该在图像正中心,但实际总有偏移
  • 像素尺寸:每个像素在感光元件上的物理大小

我记得有一次调试双目摄像头,左右图像怎么都对不齐。折腾了两天,最后发现是主点坐标差了3个像素。标定完内参,问题立刻解决。

我的经验:内参标定最好在传感器出厂后做一次,然后每隔半年或温度变化大的时候重新标定。温度会影响镜头和感光元件的形变,内参会漂移。

三、外参:传感器之间的「关系」

外参描述的是传感器在空间中的位置和朝向。比如你的机器人上装了摄像头和激光雷达,它们之间的相对位置就是外参。

外参包含两部分:

  • 旋转矩阵(R):一个传感器坐标系相对于另一个的旋转关系
  • 平移向量(t):两个传感器原点之间的位移

你想想看,如果外参不准,摄像头看到左边有障碍物,激光雷达却认为在右边。融合出来的数据就是矛盾的。

避坑指南:我曾经在AGV小车上犯过这个错——外参标定完没锁紧螺丝。车子跑了几圈后,摄像头被震歪了,外参全废。所以标定完一定要做机械固定,最好加防松胶。

四、畸变参数:镜头的「近视眼」

镜头不是完美的。尤其是广角镜头,拍出来的直线会变弯。这就是畸变。

畸变主要分两种:

畸变类型 表现 常见场景
径向畸变 直线向外或向内弯曲 鱼眼镜头、广角镜头
切向畸变 图像像被拉伸或压缩 镜头安装倾斜、模组装配误差

畸变参数通常用 k1, k2, k3(径向)和 p1, p2(切向)来表示。标定的时候,我们拍一张棋盘格照片,然后计算这些参数,把弯曲的直线「拉直」。

我刚开始做视觉SLAM时,没做畸变校正,结果特征点匹配全是错的。后来发现,图像边缘的畸变能达到十几个像素。校正之后,匹配准确率从60%直接跳到95%。

一句话总结:内参是传感器的「基因」,外参是传感器之间的「社交关系」,畸变参数是镜头的「视力矫正」。三者缺一不可。

五、知识体系框架

下面这张图,是我自己梳理的标定知识结构。你看一眼就能明白它们之间的关系:

传感器标定知识体系 标定基础 内参 焦距、主点、像素尺寸 外参 旋转矩阵R、平移向量t 畸变参数 径向k1k2k3、切向p1p2 焦距 fx, fy 主点 cx, cy 像素尺寸 旋转矩阵 R 平移向量 t 径向畸变 切向畸变 三者共同决定传感器的「真实」数学模型

六、标定的实际流程

说了这么多理论,咱们看看实际怎么做。以摄像头标定为例,流程大致如下:

  1. 准备标定板:打印一张棋盘格或圆点阵列,贴在平整的硬板上
  2. 采集图像:从不同角度拍摄15-20张照片,覆盖视野的各个区域
  3. 提取角点:用算法找到棋盘格上的角点坐标
  4. 求解参数:用最小二乘法或优化算法,解出内参、外参和畸变参数
  5. 验证结果:用标定后的参数去校正一张新图像,看看直线是不是真的变直了

小技巧:采集图像时,尽量让标定板在图像边缘和角落多出现几次。因为畸变在边缘最明显,数据越多,标定越准。

嗯,标定这件事,说难不难,说简单也不简单。关键是要理解每个参数背后的物理意义。你搞懂了内参、外参、畸变参数,后面做传感器融合就会顺手很多。

好了,今天就聊到这儿。下次咱们拿实际数据跑一遍标定流程,看看代码怎么写。


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