第2章:标定基础理论——坐标系定义与投影模型
各位同学,今天我们来聊聊标定中最基础、也最绕不开的部分——坐标系和投影模型。说实话,我刚入行那会儿,被这四个坐标系绕得晕头转向。后来在项目里吃过亏,才真正搞明白它们之间的关系。
2.1 四大坐标系,一个都不能少
仿生眼系统里,我们打交道的主要有四个坐标系。我习惯把它们想象成一个流水线:世界坐标系→相机坐标系→图像坐标系→像素坐标系。每一步都是一个变换。
2.1.1 世界坐标系 (World Coordinate System)
世界坐标系,说白了就是“绝对参考系”。你放一个物体在空间里,它的位置用(Xw, Yw, Zw)表示。这个坐标系是你自己定的,原点可以选在机器人底座、房间角落,或者随便哪里。
2.1.2 相机坐标系 (Camera Coordinate System)
相机坐标系的原点在相机光心,Z轴沿着光轴方向朝前。这个坐标系描述的是“物体相对于相机的位置”。
嗯,这里要注意:相机坐标系和世界坐标系之间,存在一个刚体变换。这个变换由旋转矩阵R和平移向量t组成。我在项目中遇到过,有人把R和t搞反了,结果重建出来的3D点全跑偏了。
2.1.3 图像坐标系 (Image Coordinate System)
图像坐标系是二维的,原点在图像中心(主点),单位是毫米。它描述的是“物体在成像平面上的物理位置”。
为什么会从三维降到二维?因为针孔相机模型嘛。光线穿过光心,在成像平面上投影。这个投影过程,就是我们后面要讲的透视变换。
2.1.4 像素坐标系 (Pixel Coordinate System)
像素坐标系也是二维的,但原点在图像左上角,单位是像素。它描述的是“图像中每个像素的行列位置”。
从图像坐标系到像素坐标系,其实就是个缩放+平移。缩放因子是像素的物理尺寸(dx, dy),平移量是主点坐标(u0, v0)。
像素坐标(u, v) = (图像坐标x / dx + u0, 图像坐标y / dy + v0)
2.2 刚体变换:旋转与平移
刚体变换,就是物体在空间里“挪动”但不发生形变。它由两部分组成:旋转和平移。
2.2.1 旋转矩阵
旋转矩阵R是一个3x3的正交矩阵,行列式为+1。它描述了坐标系之间的旋转关系。
我曾经犯过一个低级错误:直接用欧拉角做插值,结果出现了万向锁。后来我改用四元数,问题就解决了。所以这里建议你,如果要做平滑旋转,用四元数比欧拉角靠谱。
2.2.2 平移向量
平移向量t = (tx, ty, tz)表示两个坐标系原点之间的位移。
完整的刚体变换可以写成:
Pc = R * Pw + t
其中Pw是世界坐标,Pc是相机坐标。
2.3 针孔相机模型详解
针孔相机模型,是相机成像的最基本模型。它假设光线沿直线传播,穿过一个小孔(光心),在成像平面上形成倒像。
你想想看,这个模型虽然简单,但已经能解释大部分成像现象了。比如为什么远处的物体看起来小?因为投影比例嘛。
2.3.1 投影公式
假设相机坐标系下有一点P = (X, Y, Z),它在图像平面上的投影坐标为:
x = f * X / Z
y = f * Y / Z
其中f是焦距。这个公式看着简单,但它是整个标定理论的基石。
2.3.2 内参矩阵
把上面的公式写成矩阵形式,就得到了内参矩阵K:
K = [fx, 0, u0;
0, fy, v0;
0, 0, 1]
其中fx = f/dx, fy = f/dy,是归一化焦距。u0, v0是主点坐标。
s * [u, v, 1]^T = K * [R|t] * [Xw, Yw, Zw, 1]^T
这个公式把世界坐标一路变换到像素坐标。s是尺度因子,因为深度信息在投影过程中丢失了。
2.3.3 畸变模型
真实的相机不是完美的针孔。镜头会有畸变,主要是径向畸变和切向畸变。
径向畸变:图像边缘的直线会变弯。桶形畸变和枕形畸变就是典型的径向畸变。
切向畸变:镜头和成像平面不平行导致的。
我记得第一次做标定时,忽略了畸变校正,结果重建出来的3D点误差很大。后来加上畸变模型,精度立马就上去了。
2.4 知识体系总览
下面这张图,是我自己整理的本章知识结构。你可以把它当作一个思维导图来看。
2.5 本章小结
好了,这一章的内容就这些。总结一下:
- 四个坐标系:世界、相机、图像、像素,它们之间通过刚体变换、透视投影和仿射变换连接。
- 针孔相机模型:是最基本的成像模型,内参矩阵K和外参[R|t]是标定的核心参数。
- 畸变校正:真实相机必须考虑畸变,否则精度上不去。
我个人觉得,理解坐标系之间的变换关系,比死记硬背公式更重要。你想想看,只要搞清楚了“从哪来到哪去”,公式自然就记住了。
公众号:蓝海资料掘金营,微信deep3321