相机与畸变模型

相机能将三维世界里的坐标点映射到二维图像平面,这样的一个过程能够用数学模型进行描述。这类的描述模型有很多,最经典的就是针孔模型。同时,由于相机镜头上的透镜的存在,使得光线投影到成像平面的过程会产生畸变。因此,常用针孔和畸变两个模型来描述整个映射的过程。

光圈:光圈的基本作用是调节相机的进光量,光圈越大进光面积就会越大;反之,光圈越小,图像就越暗。

景深:景深指的是焦点前后景物清晰的范围,般影响景深主要有三个要素,分别是摄距(被摄对象与镜头的距离)、镜头焦距、光圈。光圈越大,景深越小;光圈越小,景深越大。距离越近,景深越小;距离越远,景深越大。

视野:相机可以接收影像的角度范围,影响因有成像平面的大小、焦距。焦距越大视野越小。

一、针孔相机模型

蜡烛投影实验:点燃的蜡烛透过小孔投影到后方的平面上,形成一个倒立的蜡烛图像,其原理如下图所示。

在这里插入图片描述

假设 O − x − y − z O-x-y-z Oxyz为相机坐标系( z z z指向相机前方, x x x向右, y y y向下, O O O为相机的光心或指模型中的针孔)。

则现实空间一点 P P P,经过小孔 O O O,落在成像平面 O ′ − x ′ − y ′ O^{'}-x^{'}-y^{'} Oxy上,成像点为 P ′ P^{'} P

我们设 P P P的坐标为 [ X , Y , Z ] [X,Y,Z] [X,Y,Z] P ′ P^{'} P [ X ′ , Y ′ , Z ′ ] [X^{'},Y^{'},Z^{'}] [X,Y,Z],并且成像平面到小孔 O O O的距离为 f f f(焦距),那么,根据三角形相似关系,有
Z f = − X X ′ = − Y Y ′ \frac{Z}{f} = -\frac{X}{X^{'}} = -\frac{Y}{Y^{'}} fZ=XX=YY
其中,负号表示成的像是倒立的。不过,实际相机得到的图像并不是倒像,为了让模型更符合实际,我们可以等价把成像平面放到相机的前方,并去掉公式中的负号,更简洁:
Z f = X X ′ = Y Y ′ \frac{Z}{f} = \frac{X}{X^{'}} = \frac{Y}{Y^{'}} fZ=XX=YY

在这里插入图片描述

整理得到:
{ X ′ = f X Z Y ′ = f Y Z \left\{ \begin{aligned} X^{'} = f\frac{X}{Z} \\ Y^{'} = f\frac{Y}{Z} \end{aligned} \right. X=fZXY=fZY

1.1 相机内参

像素坐标系:原点 o ′ o^{'} o位于图像的左上角, u u u轴向右与 x x x轴平行, v v v轴向下与 y y y轴平行。

像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移

我们设像素坐标在 u u u轴上缩放 α \alpha α倍,在 v v v轴上缩放了 β \beta β倍。同时,原点平移了 [ c x , c y ] T [c_x,c_y]^{T} [cx,cy]T。那么, P ′ P^{'} P的坐标与像素坐标 [ u , v ] T [u,v]^{T} [u,v]T的关系为:
{ u = α X ′ + c x v = β Y ′ + c y \left\{ \begin{aligned} u = \alpha X^{'} + c_x \\ v = \beta Y^{'} + c_y \end{aligned} \right. {u=αX+cxv=βY+cy
代入公式并把 α f \alpha f αf合并成 f x f_x fx,把 β f \beta f βf合并为 f y f_y fy,得
{ u = f x X Z + c x v = f y Y Z + c y \left\{ \begin{aligned} u = f_x \frac{X}{Z} + c_x \\ v = f_y \frac{Y}{Z} + c_y \end{aligned} \right. u=fxZX+cxv=fyZY+cy
其中, f f f的单位为米, α , β \alpha,\beta α,β的单位为像素/米,所以 f x , f y f_x,f_y fx,fy c x , c y c_x,c_y cx,cy的单位为像素。写成矩阵的形式为:
( u v 1 ) = 1 Z ( f x 0 c x 0 f y c y 0 0 1 ) ( X Y Z ) = 1 Z K P \left(\begin{matrix}u \\v \\1\end{matrix} \right) = \frac{1}{Z} \left(\begin{matrix}f_x & 0 & c_x \\0 & f_y & c_y \\0 & 0 & 1\end{matrix} \right) \left(\begin{matrix}X \\Y \\Z\end{matrix} \right) = \frac{1}{Z} KP uv1=Z1fx000fy0cxcy1XYZ=Z1KP
Z Z Z移到等式左边得:
Z ( u v 1 ) = ( f x 0 c x 0 f y c y 0 0 1 ) ( X Y Z ) = K P Z\left(\begin{matrix}u \\v \\1\end{matrix} \right) = \left(\begin{matrix}f_x & 0 & c_x \\0 & f_y & c_y \\0 & 0 & 1\end{matrix} \right) \left(\begin{matrix}X \\Y \\Z\end{matrix} \right) = KP Zuv1=fx000fy0cxcy1XYZ=KP
式中,我们把中间量组成的矩阵成为相机的内参数(Camera Intrinsics)矩阵K。一般的,相机的内参在出厂后就是固定的,不会随使用过程发生变化。

相机的内参可以通过咨询生产厂家得到,或者通过标定的方式得到相机内参。

1.2 相机外参

除了内参,还有相对的外参。由于实际中相机是运动的,所以 P P P的相机坐标应该是有世界坐标( P w P_w Pw)根据相机的当前位姿转换到相机坐标系下得到的。相机的位姿由它的旋转矩阵 R R R和平移向量 t t t来描述。那么有:
Z P u v = Z [ u v 1 ] = K ( R P w + t ) = K T P w ZP_{uv} = Z \left[\begin{matrix}u \\v \\1\end{matrix} \right] = K(RP_w + t) = KTP_w ZPuv=Zuv1=K(RPw+t)=KTPw
其中相机的位姿 R , t R,t R,t成为相机的外参(Camera Extrinsics)

需要注意的是,右式中又经过一次齐次坐标到非齐次坐标的转换。
Z [ u v 1 ] = ( f x 0 c x 0 f y c y 0 0 1 ) ( f 0 0 0 0 f 0 0 0 0 0 1 ) ( R t 0 T 1 ) [ X Y Z 1 ] Z \left[\begin{matrix}u \\v \\1\end{matrix} \right] = \left(\begin{matrix}f_x & 0 & c_x \\0 & f_y & c_y \\0 & 0 & 1\end{matrix} \right) \left(\begin{matrix}f & 0 & 0 & 0 \\0 & f & 0 & 0 \\0 & 0 & 0 & 1\end{matrix} \right) \left(\begin{matrix}R & t \\0^T & 1\end{matrix} \right) \left[\begin{matrix}X \\Y \\ Z \\1\end{matrix} \right] Zuv1=fx000fy0cxcy1f000f0000001(R0Tt1)XYZ1

1.3 归一化处理

我们可以将世界坐标系上的一点,先转换到相机坐标系中,再除以距离成像平面的距离 Z Z Z,这就相当于进行了一次归一化处理,得到点 P P P在相机归一化平面上的投影:
( R P w + t ) = [ X , Y , Z ] T → [ X / Z , Y / Z , 1 ] T (RP_w + t) = [X,Y,Z]^T →[X/Z,Y/Z,1]^T (RPw+t)=[X,Y,Z]T[X/Z,Y/Z,1]T

二、畸变模型

由于相机前方的透镜,会对光的传播产生影响,产生畸变

引起畸变的主要因素有两种:

  • 透镜的形状:径向畸变;

在这里插入图片描述

  • 透镜与成像平面不平行:切向畸变。

在这里插入图片描述

归一化平面上的任意一点 p p p,它的坐标为 [ x , y ] T [x,y]^T [x,y]T,可以用极坐标的形式 [ r , θ ] T [r,\theta]^T [r,θ]T表示,其中 r r r表示点 p p p与坐标系原点之间的距离, θ \theta θ表示与水平轴的夹角。

径向畸变可以看作坐标点沿着长度方向发生了变化,也就是其距离远点的长度发生了变化。

切向畸变可以看作坐标点沿着切线方向发生了变化,也就是水平夹角发生了变化。

通常假设这些畸变呈多项式关系,即:

径向畸变:
{ x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) \left\{ \begin{aligned} x_{distorted} = x(1+k_1r^2+k_2r^4+k_3r^6) \\ y_{distorted} = y(1+k_1r^2+k_2r^4+k_3r^6) \end{aligned} \right. {xdistorted=x(1+k1r2+k2r4+k3r6)ydistorted=y(1+k1r2+k2r4+k3r6)
切向畸变:
{ x d i s t o r t e d = x + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y d i s t o r t e d = y + p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y \left\{ \begin{aligned} x_{distorted} = x+2p_1xy+p_2(r^2+2x^2)\\ y_{distorted} = y+p_1(r^2+2y^2)+2p_2xy \end{aligned} \right. {xdistorted=x+2p1xy+p2(r2+2x2)ydistorted=y+p1(r2+2y2)+2p2xy
其中, p 1 , p 2 p1,p2 p1,p2为纠正参数。两式联立,得到点在图像上的正确位置为:
{ x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y \left\{ \begin{aligned} x_{distorted} = x(1+k_1r^2+k_2r^4+k_3r^6)+2p_1xy+p_2(r^2+2x^2) \\ y_{distorted} = y(1+k_1r^2+k_2r^4+k_3r^6)+p_1(r^2+2y^2)+2p_2xy \end{aligned} \right. {xdistorted=x(1+k1r2+k2r4+k3r6)+2p1xy+p2(r2+2x2)ydistorted=y(1+k1r2+k2r4+k3r6)+p1(r2+2y2)+2p2xy
即畸变模型为:
{ u = f x x d i s t o r t e d + c x v = f y y d i s t o r t e d + c y \left\{ \begin{aligned} u = f_xx_{distorted}+c_x \\ v = f_yy_{distorted}+c_y \end{aligned} \right. {u=fxxdistorted+cxv=fyydistorted+cy

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值