本系列文章由 youngpan1101 出品,转载请注明出处。
文章链接:http://blog.csdn.net/youngpan1101/article/details/71088127
作者:宋洋鹏(youngpan1101)
邮箱: yangpeng_song@163.com
该讲详细资料下载链接 【Baidu Yun】【Video】【Code】
若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【点击购买】
若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【点击购买】
若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【点击购买】
相机与图像
本章主要讨论相机成像的过程,通俗地讲,就是相机如何观测外部世界。
相机模型
- 相机几何模型:将三维空间中的点(单位为米)映射到二维图像平面(单位为像素)的过程。
- 针孔模型 是常见且有效的模型。
- 因为相机镜头透镜的存在,使得光线投影到成像平面过程中产生了 畸变 。
针孔相机模型
(ps: 引自视觉SLAM十四讲 图5-1 针孔相机模型)
如上图所示,建立相机坐标系(
O−xyz
),图像物理坐标系(
O′−x′y′z′
),图像像素坐标系(
o−uv
)。
相机坐标系⟹图像物理坐标系
设三维空间中点 P 在相机坐标系下的坐标为 [X,Y,Z]T ,其投影落在物理成像平面上,像点 P′ 在图像物理坐标系下的坐标为 [X′,Y′,Z′]T ,物理成像平面到小孔的距离为焦距 f (单位为米),根据三角形相似原理,得:
Zf=−XX′=−YY′(5.1)
式 (5.1) 中负号表示成的像是倒立的,这里将成像平面对称到相机前方(处理真实世界与相机投影的数学方法),以简化模型:
Zf=XX′=YY′⟹{X′=fXZY′=fYZ(5.2)图像物理坐标系⟹图像像素坐标系
像点 P′ 到图像像素坐标系(原点 o′ 位于图像的左上角, u 轴向右与
x 轴平行, v 轴向右与y 轴平行)下的点 Puv ( [u,v]T ) 的变换关系为:
⎧⎩⎨u=X′dx+cxv=Y′dy+cy(5.3)
式 (5.3) 中 dx,dy 分别为图像上每一个像素点在 u 轴、v 轴方向上的物理尺寸(单位为米每像素);
cx,cy 分别为图像物理坐标系原点 O′ 在图像像素坐标系下 u 轴、v 轴的坐标(单位为像素) 。相机坐标系⟹图像像素坐标系
将式 (5.2) 代入式 (5.3) 可得相机坐标系下的点 P 到图像像素坐标系下的点 Puv 的变换关系 :
⎧⎩⎨u=fdxXZ+cxv=fdyYZ+cy(5.4)
将式 (5.4) 中的 fdx,fdy 分别合并成 fx,fy (单位为像素),整理得:
Z⎡⎣⎢uv1⎤⎦⎥=⎡⎣⎢fx000fy0cxcy1⎤⎦⎥⎡⎣⎢XYZ⎤⎦⎥=KP(5.5)
式 (5.5) 中的 P 为齐次坐标表示,矩阵 K 为相机的 内参 (Camera Intrinsics), 相机内参在出厂之后是固定的,可以通过相机生产厂商获得内参,也可以自己通过 标定 方法获得。世界坐标系⟹图像像素坐标系
设点 P 在世界坐标系下的坐标为 Pw ( [Xw,Yw,Zw]T ),世界坐标系到相机坐标系的变换矩阵为 T ,则 Pw 到 Puv 的变换关系:
ZPuv=Z⎡⎣⎢uv1⎤⎦⎥=K3×3[I3×303×1]T4×4Pw,T=[R0Tt1](5.6)
由式 (5.6) 中的 Puv,Pw 都为齐次坐标表示,相机的位姿 R,t 为相机的 外参 (Camera Extrinsics),外参会随着相机的运动而发生变化,同时也 是 SLAM 中需要估计的目标,该参数表示相机的运动轨迹。归一化
(ps: 引自视觉SLAM十四讲 图5-5)
TPw 表示将世界坐标系下的齐次坐标变换到相机坐标系下,取前三维进行归一化处理,得到了 P 在相机归一化平面上的投影 Pc :
Pc=⎡⎣⎢⎢⎢⎢⎢XZYZ1⎤⎦⎥⎥⎥⎥⎥(5.7)
Pc 称为归一化坐标,它位于相机前方 Z=1 处的平面上,该平面称为归一化平面。单目相机成像过程
世界坐标 ⟹ 相机坐标 ⟹ 归一化平面 ⟹ 像素坐标
PwP˜c=[X,Y,Z]T=RcwPw+tcw Pc=⎡⎣⎢X/ZY/Z1⎤⎦⎥
Puv=KPc
——————————– 分割线<< 家有小武,如有一母 >>分割线 ——————————–
畸变
径向畸变
- 原因:透镜形状影响光线的传播,导致光线在远离透镜中心的地方比靠近中心的地方更加弯曲。
- 主要包含 桶形畸变 和 枕形畸变:
桶形畸变:图像放大率随着离光轴的距离增加而减小。
枕形畸变:图像放大率随着离光轴的距离减小而增加。 - 该类畸变可以用和距中心距离有关的二次及高次多项式函数进行纠正:
{xcorrected=x(1+k1r2+k2r4+k3r6)ycorrected=y(1+k1r2+k2r4+k3r6),r=x2+y2−−−−−−√(5.8)
式 (5.8) 中的 [x,y]T 是未矫正的点的坐标, [xcorrected,ycorrected]T 是矫正后的点的坐标,它们都是 归一化平面 上的点。 k1,k2 分别作用于畸变较小的中心区域,畸变较大的边缘区域,这两个系数适用于普通摄像头,而对于畸变很大的摄像头(比如鱼眼)可以加入 k3 。
切向畸变
畸变校正
- 视觉 SLAM 一般选择 先对整张图像进行去畸变,再去讨论此图像上的点的空间位置。
- 步骤:
- 将三维空间点投影到归一化图像平面,其归一化坐标为 [x,y]T 。
- 对归一化平面上的点进行径向畸变和切向畸变校正(这里使用 5 个畸变项):
{xcorrected=x(1+k1r2+k2r4+k3r6)+2p1xy+p2(r2+2x2)ycorrected=y(1+k1r2+k2r4+k3r6)+2p2xy+p1(r2+2y2)(5.10) - 将校正后的点变换到图像像素坐标系下,得到该点在图像上的正确位置:
{u=fxxcorrected+cxv=fyycorrected+cy(5.11)
——————————– 分割线<< 家有小武,如有一母 >>分割线 ——————————–
双目相机模型
- 双目类似人眼可以根据左右眼看到的景物差异(视差)来判断物体与我们的距离。
- 计算视差
(ps: 引自视觉SLAM十四讲 图5-6 双目相机的成像模型)
图 5-6 中, OL,OR —— 左右光圈中心;
PL,PR —— 左、右眼关于三维空间中点 P 的像点;
uL,uR —— 成像平面像点的坐标,这里 uR 为负数;
f —— 相机焦距;
b —— 基线(Baseline);
z —— 三维空间中点 P 的深度值。
左右像素的几何关系(三角形 P−PL−PR 相似于 三角形 P−OL−OR ):
z−fz=b−uL+uRb(5.12)
整理,得:
z=fbd,d=uL−uR(5.13)
式 (5.13) 中的 d 为左右图的横坐标之差,称为视差 (Disparity)。由该式可知
- 视差越大,距离越近。
- 基线越长,能测距离越远。
- 计算深度公式很简洁,但视差计算比较困难,其计算量与精度都将成为问题。
——————————– 分割线<< 家有小武,如有一母 >>分割线 ——————————–
RGB-D 相机模型
物理手段测量深度
红外结构光(Structured Light):Kinect 1 代、Project Tango 1 代、Intel RealSense、Orbbec Astra 等。
工作原理:向探测目标发射红外结构光,相机根据返回的结构光图案,来计算物体离自身的距离。飞行时间法(Time-of-flight, TOF):Kinect 2 代、Tango 2 代 等。
工作原理:向探测目标发射脉冲光,根据发送到返回之间的光束飞行时间,来计算物体离自身的距离。劣势
- 使用范围有限
- 红外容易受到日光或其他传感器发射的红外光干扰
- 透射材质因接受不到发射光,无法进行测量
- 相机的成本、功耗较高