本文为视觉 SLAM 学习总结,讲解观测方程中 z k , j z_{k,j} zk,j 的具体形式。欢迎交流
本讲内容概要
- 针孔相机的模型、内参与径向畸变参数
- 空间点如何投影到相机成像平面的
- OpenCV 的图像存储与表达方式
- 基本的摄像头标定方法
相机模型
照片只能记录物体在成像平面上的投影,无法测得“距离”维度的信息。而普通相机可以用针孔模型进行很好地近似。
小孔成像模型
小孔成像的原理图如下:
左图为立体图像,在相机平面建立三维坐标系,在像素平面建立二维坐标系。则空间中一点 P P P 透过小孔投影到成像平面的坐标可以计算。右图为俯视图,由相似三角形有,小孔成像模型的原始形式为:
Z f = − X X ′ = − Y Y ′ \frac{Z}{f}=-\frac{X}{X'}=-\frac{Y}{Y'} fZ=−X′X=−Y′Y
其中负号表示为倒像。相机内部会将图像翻转,因此我们平时看到的是正像。若将像翻转到前面则可消除负号:
Z f = X X ′ = Y Y ′ \frac{Z}{f}=\frac{X}{X'}=\frac{Y}{Y'} fZ=X′X=Y′Y
整理后得到:
X ′ = f X Z X'=f\frac{X}{Z} X′=fZX
Y ′ = f Y Z Y'=f\frac{Y}{Z} Y′=fZY
成像平面的单位是米,而像素坐标的单位为像素,两种表示方法有一定的比值和中心移动。因此将成像平面到像素坐标:
{ u = α X ′ + c x v = β Y ′ + c y \left\{\begin{aligned}u & = & αX'+c_x \\v & = & βY'+c_y \\\end{aligned}\right. {
uv==αX′+cxβY′+cy
将其带入到 X ′ , Y ′ X',Y' X′,Y′ 得:
{ 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. ⎩⎪⎪⎨⎪⎪⎧uv==fxZ