视觉SLAM理论入门——(4)相机模型

本文介绍了相机成像的单目相机模型,包括针孔模型和畸变校正,解释了单目相机如何丢失深度信息。接着讨论了双目相机如何通过视差测量像素深度,以及RGB-D相机通过结构光或飞行时间法获取深度信息。这些技术在计算机视觉和机器人定位中具有重要应用。
摘要由CSDN通过智能技术生成

单目相机模型

相机将三维世界中的坐标点映射到二维图像平面的过程能够用一个针孔模型进行描述。另外,由于相机中透镜的存在,会使得光线投影到成像平面的过程中会产生畸变。因此,使用针孔和畸变两个模型来描述整个投影过程。

针孔模型

O - x - y - z为相机坐标系,习惯上让z轴指向相机前方,x向右,y向下。O为摄像机的光心,也是针孔模型中的针孔。现实世界的空间点P,经过小孔O投影之后,落在物理成像平面O' - x' - y' - z'上,成像点为P' 。设P的坐标为[X,Y,Z] ^TP'[X',Y',Z'] ^T,并且设物理成像平面到小孔的距离为f(焦距)。根据三角形相似关系

\frac{Z}{f} = - \frac{X}{X'} = - \frac{Y}{Y'}

把可以成像平面对称到相机前方,和三维空间点一起放在摄像机坐标系的同一侧(如下图中的对称的成像平面),这样做可以把公式中的负号去掉

\frac{Z}{f} = \frac{X}{X'} = \frac{Y}{Y'}

将成像平面的X ′ 、Y ′ 表示出来

X' = f\frac{X}{Z}  , Y' = f\frac{Y}{Z}

上面的式子描述了P点与它的像之间的空间关系,在相机中最终获得的是一个个像素,因此需要在成像平面上采样和量化

设在物理成像平面上固定着一个像素平面 o−u−v。在像素平面得到了 P ′ 的像素坐标:[u,v] T 。其中像素坐标系 x 的定义方式是:原点 o ′ 位于图像的左上角,u 轴向右与 x 轴平行,v轴向下与 y 轴平行。像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移。设像素坐标在 u 轴上缩放了 α 倍,在 v 上缩放了 β 倍。同时,原点平移了 [c x ,c y ] T 。那么,P ′ 的坐标与像素坐标 [u,v] T 的关系为

u = \alpha X' + c_xv = \beta Y' + c_y

将上面两个式子合并

u = \alpha f\frac{X}{Z} + c_x = f_x\frac{X}{Z} + c_xv = \beta f\frac{Y}{Z} + c_y = f_y\frac{Y}{Z} + c_y,其中,f 的单位为米,α,β 的单位为像素每米,所以 f x ,f y 的单位为像素

利用齐次坐标,将上式写成简洁的矩阵形式

其中,中间的量组成的矩阵称为相机的内参数矩阵K,内参在出厂之后是固定的,一般由厂家告知。有时需要自己确定相机的内参,这也就是所谓的标定

由于相机在运动,P的相机坐标是它的世界坐标P_w根据相机当前位姿变换到相机坐标系下的结果。位姿由旋转矩阵和平移向量(或变换矩阵)描述,上式可变换为

相机的位姿就是指相机的外参数,它随相机运动而变化,也是SLAM中的待估计目标,代表机器人轨迹

回过头来分析上面的式子,可以将投影过程看成:把一个空间点P,从世界坐标系转换到相机坐标系中,再除以最后一维的数值(对最后一维进行归一化),得到P在归一化平面(z=1平面)中的坐标,最后通过内参矩阵对应到像素坐标。对相机坐标同乘以任意非0常数后,归一化坐标都是一样的,说明点的深度在投影过程中丢失了,这也是单目视觉无法得到像素点深度的原因。

畸变模型

径向畸变

径向畸变是指由透镜形状引起的畸变,它可以分为桶形畸变和枕形畸变。桶形畸变的图像放大率随着与光轴之间的距离增加而减小,枕形畸变反之。径向畸变会引起投影点在归一化坐标上沿长度方向的变化(极坐标下,点与原点之间的距离)。畸变多项式一般可以写作

x_{distorted1} = x(1 + k 1 r 2 + k 2 r 4 + k 3 r 6 )

y_{distorted1} = y(1 + k 1 r 2 + k 2 r 4 + k 3 r 6 )

切向畸变

切向畸变是指由于透镜和成像平面不完全平行引起的畸变。切向畸变会引起投影点在归一化坐标上沿切线方向的变化(极坐标下,点与横轴的水平夹角)

x_{distorted2} = x+2p_1xy+p_2(r^2+2x^2)

y_{distorted2} = y + p_1(r^2+2y^2)+2p_2xy

综上,设三维空间点投影到归一化平面上,坐标为[x,y]^T,畸变后坐标[x_{distorted}, y_{distorted}]^T

x_{distorted} =x(1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) +2p_1xy+p_2(r^2+2x^2)

y_{distorted} = y(1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p_1(r^2+2y^2)+2p_2xy

通过内参矩阵投影到图像上的正确位置[u,v]^T

u = f_xx_{distorted} + c_x

v = f_yy_{distorted} + c_y

总结

单目相机的成像过程总结如下

1、三维空间点P的世界坐标系为P_w

2、由于相机在运动,它的运动由Rt或者T描述,P的相机坐标为\widetilde{P_c} = RP_W + t = TP_w = [X,Y,Z]^T 

3、将其投影到归一化平面上,归一化坐标P_c = [X/Z,Y/Z,1]^T

4、如果有畸变,对其进行畸变处理(处理后坐标也记为P_c )

5、通过内参矩阵投影到图像中,得到像素坐标P_{uv} = KP_c

双目相机模型

针孔模型描述单个相机的成像,但是只通过一个像素无法确定一个空间点的位置。这是因为投影过程丢失了像素深度,从相机光心到归一化平面连线上所有点都投影到这一像素。

双目相机可以测量像素深度,原理是同步采集两个相机的图像,计算图像间的视差,估计每个像素的深度。这两个相机一般是水平放置的,意味两个相机的光圈中心都位于 x 轴上。它们的距离称为双目相机的基线b

考虑一个空间点 P,它在左右相机各成一像,记作P_LP_R 。由于相机基线的存在,这两个成像位置是不同的。理想情况下,由于左右相机只有在 x 轴上有位移,因此P的像也只在 x 轴(对应图像的 u 轴)上有差异。我们记它在左侧的坐标为u_L,右侧坐标为u_R,根据相似三角形可以得到

\frac{z-f}{z} = \frac{b-u_L+u_R}{b},即

z=\frac{fb}{d}d=u_L-u_R, 其中d是左右图的横坐标之差,称为视差

从上式看出,视差越大,距离越近;双目深度存在一个由fb确定的理论最大值,这说明基线越长,双目相机可测量的距离越远

RGB-D相机模型

RGB-D相机测量深度的方法有大类:通过红外结构光测量、通过飞行时间法(ToF)测量。无论哪种方法,都需要相机向探测目标发射一束光线(通常是红外光)。

在结构光原理中,相机根据返回的结构光图案,计算物体离自身的距离。

而在 ToF中,相机向目标发射脉冲光,然后根据发送到返回之间的光束飞行时间,确定物体离自身的距离。ToF 原理和激光传感器十分相似,不过激光是通过逐点扫描来获取距离,而 ToF相机则可以获得整个图像的像素深度。

在测量深度之后,RGB-D 相机通常按照生产时的各个相机摆放位置,自己完成深度与彩色图像素之间的配对,输出一一对应的彩色图和深度图。我们可以在同一个图像位置,读取到色彩信息和距离信息,计算像素的 3D 相机坐标,生成点云。

对RGB-D 数据,既可以在图像层面进行处理,亦可在点云层面处理。

RGB-D 相机能够实时地测量每个像素点的距离。但是,由于这种发射-接受的测量方式,使得它使用范围比较受限。用红外进行深度值测量的 RGB-D 相机,容易受到日光或其他传感器发射的红外光干扰,因此不能在室外使用,同时使用多个时也会相互干扰。对于透射材质的物体,因为接受不到反射光,所以无法测量这些点的位置。此外,RGB-D 相机在成本、功耗方面,都有一些劣势。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值