一、双目标定概述:什么是双目标定、为什么需要双目标定、双目标定的应用场景
大家好,我是你们的老朋友。今天咱们正式开始聊双目标定。
说实话,我第一次接触双目标定的时候,心里也犯嘀咕:这不就是两个相机拍同一个东西吗?有什么难的?后来真正上手做项目,才发现这里面的门道比我想象的多得多。嗯,咱们今天就先把基础打牢。
1.1 什么是双目标定?
双目标定,说白了就是给两个相机做「校准」。
你想想看,两个相机放在一起,它们的镜头、传感器、安装位置都不可能完全一样。哪怕你买的是同一批次的工业相机,装在同一块铝板上,拍出来的两张图也肯定有偏差。
双目标定要解决的核心问题就是:找到两个相机之间的几何关系。
具体来说,它包含两个部分:
- 内参标定:每个相机自己的焦距、光心、畸变参数。这个单目相机也要做。
- 外参标定:两个相机之间的旋转矩阵 R 和平移向量 T。这是双目标定独有的。
我习惯把内参比作「一个人的视力」,外参比作「两个人的相对站位」。只有把这两样都搞清楚,才能让两个相机「协同工作」。
核心公式(简化版):
左相机坐标系下的点 PL,通过 R 和 T 变换到右相机坐标系:
P_R = R * P_L + T
这个 R 和 T,就是双目标定的最终输出。
1.2 为什么需要双目标定?
你可能会问:单目相机也能做很多事,为什么非要两个?
原因很简单:单目相机没有深度信息。
单目相机拍一张照片,你只知道物体在图像上的位置,但不知道它离你有多远。就像你闭上一只眼睛,很难判断远处物体的距离一样。
双目相机就不一样了。两个相机从不同角度拍同一个物体,利用「视差」就能算出深度。这个原理跟人眼一模一样。
我在项目中遇到过一件事:有个客户想用单目相机做测距,结果发现精度完全不够。后来换成双目方案,标定做好之后,测距误差直接降到了毫米级。嗯,这就是双目标定的价值。
我的经验:双目标定做得好不好,直接决定了后续所有算法的上限。标定误差 0.1 个像素,到了 3D 重建阶段可能就变成几厘米的偏差。所以,别嫌标定麻烦,这是最值得花时间的一步。
1.3 双目标定的应用场景
双目标定的应用场景,说白了就是三个方向:3D 重建、测距、自动驾驶。咱们一个一个说。
1.3.1 3D 重建
3D 重建是双目标定最经典的应用。两个相机拍同一个场景,通过匹配左右图像上的对应点,就能算出每个点的三维坐标。
我记得有一次做文物数字化项目,用双目相机扫描一尊佛像。标定花了整整一天,但重建出来的模型精度非常高,连佛像衣纹的褶皱都清晰可见。那一刻我觉得,所有的辛苦都值了。
3D 重建的典型流程:
- 双目标定(获取 R、T、内参)
- 立体校正(让左右图像行对齐)
- 立体匹配(找对应点)
- 三角测量(算深度)
- 点云生成
1.3.2 测距
测距是双目标定最直接的应用。你只需要知道物体在左右图像上的像素坐标差(视差),结合标定参数,就能算出距离。
公式很简单:
深度 Z = (焦距 f * 基线长度 B) / 视差 d
这里有个坑:基线长度 B 越大,测距精度越高,但两个相机的共同视野会变小。我刚开始做的时候,为了追求精度把基线拉得很长,结果发现很多物体只能被一个相机看到,根本没法匹配。后来我学乖了,基线长度一般控制在 10-30 厘米,具体看应用场景。
避坑指南:我曾经在户外做测距实验,阳光太强导致图像过曝,标定板上的角点都检测不到。后来我换了哑光材质的标定板,问题才解决。所以,标定环境的光照条件一定要控制好。
1.3.3 自动驾驶
自动驾驶是双目标定最火的应用。车载双目相机用来检测障碍物、估算距离、识别车道线。
你想想看,一辆自动驾驶汽车在路上跑,它需要知道前面那辆车离自己有多远,路边的行人会不会突然冲出来。单目相机做不到这一点,但双目相机可以。
自动驾驶对双目标定的要求特别高:
- 实时性:标定参数要能快速加载,不能拖慢系统
- 鲁棒性:车辆震动、温度变化都不能影响标定精度
- 自标定:很多车载系统支持在线自标定,跑着跑着就能自动修正参数
我在做车载项目时,最头疼的就是温度变化。夏天暴晒后,相机外壳热胀冷缩,内参都变了。后来我们加了温度补偿算法,才把这个问题解决。
1.4 本章知识体系
下面这张图,是我自己画的,帮你理清双目标定的知识脉络:
这张图把双目标定的核心脉络串起来了。你从「什么是双目标定」出发,理解内参和外参;再理解「为什么需要」——因为单目没有深度;最后看「应用场景」——3D重建、测距、自动驾驶,每个场景都离不开标定参数。
好了,这一章就到这里。双目标定的概念和意义,咱们已经讲清楚了。下一章,我会带你手把手做标定,从棋盘格制作到参数提取,每一步都讲透。