700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 相机模型:单目 双目 深度相机模型及相机畸变

相机模型:单目 双目 深度相机模型及相机畸变

时间:2024-01-29 12:01:31

相关推荐

相机模型:单目 双目 深度相机模型及相机畸变

针孔模型

坐标系

首先定义名词:

光轴:各坐标系的Z轴方向光心:光轴的中心点主点:光轴同图像平面的交点焦距:光心到图像平面的距离

相机通常存在四个相关的坐标系:世界坐标系、相机坐标系、像素坐标系、图像坐标系。

为方便数学表达,通常以相机光心为原点,构建坐标系:

世界坐标系

世界坐标系(world coordinate),也称测量坐标系,用于描述三维空间中刚体的空间位置及姿态。

世界坐标系的位置可以根据实际情况自由确定,记为Ow−XwYwZwO_w-X_wY_wZ_wOw​−Xw​Yw​Zw​,坐标系单位为米(m)。

相机坐标系

相机坐标系(camera coordinate),以相机光心为原点,相机光轴为Z轴方向,构建的三维直角坐标系。

相机坐标系同像平面垂直,记为Oc−XcYcZcO_c-X_cY_cZ_cOc​−Xc​Yc​Zc​,坐标系单位为米(m)

像素坐标系

像素坐标系(pixel coordinate),以图像左上角为像素原点,构建的二维直角坐标系。坐标系的两轴uuu轴同图像的宽平齐,vvv轴同图像的高平齐。

像素坐标系记为Op−uvO_p-uvOp​−uv,坐标系的单位为像素(pixel)

图像坐标系

图像坐标系(image coordinate),以图像的中心点(相机光轴同图像的交点位置,主点)为原点构建的二维直角坐标系,坐标系的两轴xxx同像素坐标系的uuu平行,yyy同vvv平行。

像素坐标系不利于坐标变换,故而将像素坐标系平移至主点构建图像坐标系,记作Oi−xyO_i-xyOi​−xy,坐标系的单位为毫米(mm)。

小孔成像模型

相机的成像满足小孔成像模型,真实成像平面为倒像。然而在实际的相机中,得到的图像为正像,为使模型符合实际,将成像平面对称放置在相机前方,同世界坐标系、相机坐标系同侧放置:

由此,得到实际的相机模型如下:

坐标变换

世界坐标系到相机坐标系

已知某点在世界坐标系内坐标Wp{}^WpWp坐标为[XwYwZw]T\begin{bmatrix}X_w&Y_w&Z_w\end{bmatrix}^T[Xw​​Yw​​Zw​​]T,其在相机坐标系内坐标为cp=[XcYcZc]T{}^cp=\begin{bmatrix}X_c&Y_c&Z_c\end{bmatrix}^Tcp=[Xc​​Yc​​Zc​​]T:

则可通过变换矩阵得到两者间关系:

[XcYcZc1]=T⋅[XwYwZw1]=[Rt0T1][XwYwZw1]\begin{bmatrix}X_c\\Y_c\\Z_c\\1\end{bmatrix}=T\cdot\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix}=\begin{bmatrix}R&t\\0^T&1\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix} ⎣⎢⎢⎡​Xc​Yc​Zc​1​⎦⎥⎥⎤​=T⋅⎣⎢⎢⎡​Xw​Yw​Zw​1​⎦⎥⎥⎤​=[R0T​t1​]⎣⎢⎢⎡​Xw​Yw​Zw​1​⎦⎥⎥⎤​

相机坐标系到图像坐标系

已知相机坐标系内坐标cp=[XcYcZc]T{}^cp=\begin{bmatrix}X_c&Y_c&Z_c\end{bmatrix}^Tcp=[Xc​​Yc​​Zc​​]T,对应在图像坐标系上的坐标点为ip=[xy]T{}^ip=\begin{bmatrix}x&y\end{bmatrix}^Tip=[x​y​]T:

已知,相机坐标系到图像坐标系的距离为焦距fff,由相似三角形易得:

xXc=fZcyYc=fZc\frac{x}{X_c}=\frac{f}{Z_c}\\ \frac{y}{Y_c}=\frac{f}{Z_c} Xc​x​=Zc​f​Yc​y​=Zc​f​

由此,得x、yx、yx、y的表达:

{x=fXcZcy=fYcZc\begin{cases}x=f\frac{X_c}{Z_c}\\y=f\frac{Y_c}{Z_c}\end{cases} {x=fZc​Xc​​y=fZc​Yc​​​

整理为齐次坐标形式,可得:

Zc⋅[xy1]=[f0000f000010]⋅[XcYcZc1]Z_c\cdot \begin{bmatrix}x\\y\\1\end{bmatrix}=\begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0\end{bmatrix}\cdot\begin{bmatrix}X_c\\Y_c\\Z_c\\1\end{bmatrix} Zc​⋅⎣⎡​xy1​⎦⎤​=⎣⎡​f00​0f0​001​000​⎦⎤​⋅⎣⎢⎢⎡​Xc​Yc​Zc​1​⎦⎥⎥⎤​

图像坐标系到像素坐标系

由图像坐标系上一点坐标ip=[xy]T{}^ip=\begin{bmatrix}x&y\end{bmatrix}^Tip=[x​y​]T到像素坐标系上坐标pp=[uv]T{}^pp=\begin{bmatrix}u&v\end{bmatrix}^Tpp=[u​v​]T仅需要一个缩放和一个平移:

设坐标在uuu轴上缩放α\alphaα倍,vvv轴上缩放β\betaβ倍,坐标原点平移[cxcy]T\begin{bmatrix}c_x&c_y\end{bmatrix}^T[cx​​cy​​]T,则可得:

{u=αx+cxv=βy+cy\begin{cases} u=\alpha x+c_x\\ v= \beta y+c_y \end{cases} {u=αx+cx​v=βy+cy​​

将其写为齐次坐标形式:

[uv1]=[α0cx0βcy001]⋅[xy1]\begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}\alpha&0&c_x\\0&\beta&c_y\\0&0&1\end{bmatrix}\cdot\begin{bmatrix}x\\y\\1\end{bmatrix} ⎣⎡​uv1​⎦⎤​=⎣⎡​α00​0β0​cx​cy​1​⎦⎤​⋅⎣⎡​xy1​⎦⎤​

综合变换

综合上述变换,可到如下形式:

Zc⋅[uv1]=[α0cx0βcy001][f0000f000010][Rt0T1][XwYwZw1]Z_c\cdot \begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}\alpha&0&c_x\\0&\beta&c_y\\0&0&1\end{bmatrix}\begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}R&t\\0^T&1\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix} Zc​⋅⎣⎡​uv1​⎦⎤​=⎣⎡​α00​0β0​cx​cy​1​⎦⎤​⎣⎡​f00​0f0​001​000​⎦⎤​[R0T​t1​]⎣⎢⎢⎡​Xw​Yw​Zw​1​⎦⎥⎥⎤​

对等式右侧,合并由相机到图像坐标系、图像到像素坐标系的变换,得到相机到图像坐标系的变换:

Zc⋅[uv1]=[fx0cx00fycy00010][Rt0T1][XwYwZw1]Z_c\cdot \begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}f_x&0&c_x&0\\0&f_y&c_y&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}R&t\\0^T&1\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix} Zc​⋅⎣⎡​uv1​⎦⎤​=⎣⎡​fx​00​0fy​0​cx​cy​1​000​⎦⎤​[R0T​t1​]⎣⎢⎢⎡​Xw​Yw​Zw​1​⎦⎥⎥⎤​

其中,记αf=fx,βf=fy\alpha f=f_x,\beta f=f_yαf=fx​,βf=fy​。其含义为焦距fff在图像坐标系两轴方向上的像素个数,单位像素。

右侧第一个矩阵为相机内参矩阵K(Camera Intrinsic Matrix),描述物理世界与相片像素之间的对应关系;

右侧第二个矩阵为相机外参矩阵T(Camera Extrinsic Matrix),描述世界坐标系与相机的位置关系。

左侧系数ZcZ_cZc​称为比例因子,可记为s

s[uv1]=KT[XcYcZc1]s\begin{bmatrix}u\\v\\1\end{bmatrix}=KT\begin{bmatrix}X_c\\Y_c\\Z_c\\1\end{bmatrix} s⎣⎡​uv1​⎦⎤​=KT⎣⎢⎢⎡​Xc​Yc​Zc​1​⎦⎥⎥⎤​

归一化坐标

投影过程可认为,将世界坐标系下点坐标wp=[XwYwZw]T{}^wp=\begin{bmatrix}X_w&Y_w&Z_w\end{bmatrix}^Twp=[Xw​​Yw​​Zw​​]T转换至相机坐标系下点坐标cp=[XcYcZc]T{}^cp=\begin{bmatrix}X_c&Y_c&Z_c\end{bmatrix}^Tcp=[Xc​​Yc​​Zc​​]T,随后除去最后一维的数值(图形的深度信息),得到归一化坐标:

R[XwYwZw]+t=[XcYcZc]→[XcZcYcZc1]R\begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}+t=\begin{bmatrix}X_c\\Y_c\\Z_c\end{bmatrix}\to\begin{bmatrix}\frac{X_c}{Z_c}\\\frac{Y_c}{Z_c}\\1\end{bmatrix} R⎣⎡​Xw​Yw​Zw​​⎦⎤​+t=⎣⎡​Xc​Yc​Zc​​⎦⎤​→⎣⎡​Zc​Xc​​Zc​Yc​​1​⎦⎤​

归一化坐标可视作为,相机平面前方z=1处平面上的点,称为归一化平面,归一化坐标左乘内参矩阵可得像素坐标。

通常认为归一化平面同图像平面相同,也即图像平面在相机平面前方z=1处

可知,在针孔模型中图像的深度信息被丢弃,无法得到。

畸变模型

透镜

为获得清晰明亮的图形,在相机前方增加透镜。透镜使得光线聚焦或分散,每个透镜由特定的对焦距离,称为景深(Depth of Field)。

透镜可将平行于光轴的光线折射至同一点,称为焦点,焦点与光心间距离为焦距fff。过光心的光线不会偏离原始方向。

透镜的加入,引起新的影响:

透镜形状对传播产生的畸变,称为径向畸变(Radial Distortion)由机械安装对传播产生的畸变,称为切向畸变(Tangential Distortion)

畸变系数包含[k1k2k3p1p2]\begin{bmatrix}k_1&k_2&k_3&p_1&p_2\end{bmatrix}[k1​​k2​​k3​​p1​​p2​​]

畸变

径向畸变

实际拍摄所得照片中,透镜会使得真实环境中的直线变为曲线。这种畸变越靠近图像边缘,越明显。此类畸变由于透镜形状的中心对称而通常径向对称。

径向畸变包含桶形畸变和枕形畸变两种:

设归一化平面上一点p=[xy]Tp=\begin{bmatrix}x&y\end{bmatrix}^Tp=[x​y​]T可用极坐标表示:[rθ]\begin{bmatrix}r&\theta\end{bmatrix}[r​θ​],其中rrr表示点p同坐标系原点的距离,θ\thetaθ表示同水平轴的夹角。径向畸变可视为坐标沿长度方向的变化产生的畸变,也即距离原点长度的变化引起的畸变。

xcorrected=x(1+k1r2+k2r4+k3r6)ycorrected=y(1+k1r2+k2r4+k3r6)r2=x2+y2x_{corrected}=x(1+k_1r^2+k_2r^4+k_3r^6)\\ y_{corrected}=y(1+k_1r^2+k_2r^4+k_3r^6)\\ r^2=x^2+y^2 xcorrected​=x(1+k1​r2+k2​r4+k3​r6)ycorrected​=y(1+k1​r2+k2​r4+k3​r6)r2=x2+y2

坐标pcorrected=[xcorrectedycorrected]Tp_{corrected}=\begin{bmatrix}x_{corrected}&y_{corrected}\end{bmatrix}^Tpcorrected​=[xcorrected​​ycorrected​​]T表示畸变后的归一化坐标,通常桶形畸变k1>0k_1>0k1​>0而枕形畸变k1<0k_1<0k1​<0。

切向畸变

切向畸变产生于相机透镜组装的不精确,由于透镜制造上的缺陷使其本身同像平面不平行而产生:

切向畸变可看成归一化平面上的坐标点沿着切线方向发射的变化产生的畸变,也即水平夹角变化导致的畸变:

xcorrected=x+2p1xy+p2(r2+2x2)ycorrected=y+p1(r2+2y2)+2p2xyr2=x2+y2x_{corrected}=x+2p_1xy+p_2(r^2+2x^2)\\ y_{corrected}=y+p_1(r^2+2y^2)+2p_2xy\\ r^2=x^2+y^2 xcorrected​=x+2p1​xy+p2​(r2+2x2)ycorrected​=y+p1​(r2+2y2)+2p2​xyr2=x2+y2

畸变模型

综合上述两种畸变类型,得到畸变模型:

理想点(Ideal Point)为通过坐标变换得到的坐标,真实点(Real Point)为理想点(xu,yu)(x_u,y_u)(xu​,yu​)经过径向畸变drdrdr和切向畸变dtdtdt后真实得到图像的上的点:

{xdistorted=x(1+k1r2+k2r4+k3r6)+2p1xy+p2(r2+2x2)ydistorted=y(1+k1r2+k2r4+k3r6)+p1(r2+2y2)+2p2xy\begin{cases} 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{cases} {xdistorted​=x(1+k1​r2+k2​r4+k3​r6)+2p1​xy+p2​(r2+2x2)ydistorted​=y(1+k1​r2+k2​r4+k3​r6)+p1​(r2+2y2)+2p2​xy​

其中,径向畸变由参数[k1、k2、k3]\begin{bmatrix}k_1、k_2、k_3\end{bmatrix}[k1​、k2​、k3​​]确定;切向畸变由参数[p1、p2]\begin{bmatrix}p_1、p_2\end{bmatrix}[p1​、p2​​]决定;参数rrr满足条件:r2=x2+y2r^2=x^2+y^2r2=x2+y2。

由畸变后的点通过内参矩阵可得到像素平面上的实际坐标:

{u=fxxdistorted+cxv=fyydistorted+cy\begin{cases} u=f_x\:x_{distorted}+c_x\\ v= f_y\:y_{distorted}+c_y \end{cases} {u=fx​xdistorted​+cx​v=fy​ydistorted​+cy​​

双目相机模型

双目相机通过同步采集左右相机的图像,计算图像间视差,估计每个像素的视差。

双目相机通常由两个水平放置的相机组成,两相机的光圈中心分别记为OL、ORO_L、O_ROL​、OR​,两者之间的距离称为双目相机的基线bbb,相机焦距为fff

若对于三维空间内一点PPP进行捕捉,此时两相机将各自成像,记为PL、PRP_L、P_RPL​、PR​。理想情况下,相机尽在X轴进行位移,对应像素仅在uuu轴上存在差异,则记物体在两图像上的坐标为uLu_LuL​及−uR-u_R−uR​:

则可由相似三角形得到:

z−fz=b−uL+uRb\frac{z-f}{z}=\frac{b-u_L+u_R}{b} zz−f​=bb−uL​+uR​​

从而得到深度信息:

z=fbdz=f\frac{b}{d} z=fdb​

其中,参数ddd称为视差(disparity),用于描述物体在两相机上形成像素的横坐标之差:

d≜uL−uRd\triangleq u_L-u_R d≜uL​−uR​

由视差可估计得到物体的深度信息,视差越大,距离越近。由于视差最小为一个像素,则双目测量具有最大值:

∀d=1s.t.zmax=fb\forall d=1\quad s.t.\quad z_{max}=fb ∀d=1s.t.zmax​=fb

也即双目相机的基线越大,测量范围就越大。

深度相机模型

RGB-D相机按原理可分为两大类:

红外结构光类(Structured Light)飞行时间类(Time-of-Flight,ToF)

RGB-D相机通过向探测目标发射光束(通常为红外光)进行测距。其中结构光相机返回结构光图案以计算距离,而飞行时间则计算发射与接收时间差值计算距离。

根据测量结果,相机将生成3D点云信息。

图像信息

相机成像后,生成图像。图像在计算机中以矩阵形式存储(二维数组)。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。