相机模型-Unified Camera Model
- 模型介绍
- 投影过程
- 反投影过程
- 雅可比计算
开篇不知道说啥了,直接开始吧。
模型介绍
这个相机模型在其它地方又被叫做 Omnidirectional 相机模型,我做了一个简单的图来表示这个模型,这个模型的本质其实是将原始的光心在光轴方向上进行移动,得到一个虚拟的光心,从而达到模拟畸变的目的。用这个模型可以模拟针孔相机的成像过程,也可以模拟广角以及鱼眼相机的成像过程。需要注意的是,在广角或鱼眼相机中,该模型不会完全模拟畸变过程,所以还需要搭配一些其他畸变模型,比如 相机模型–针孔相机投影(pinhole camera model)中讲的Brown畸变模型。
接下来结合这个示图对这个模型进行详细说明。首先是投影过程,假设相机坐标系下一个点 , 将其归一化到以光心为中心的单位球面上 ,若在无畸变的情况下,可以直接得到归一下像点, 在有畸变的情况下,可以找到一个以虚拟光心(与原光心只存在光轴上的平移,设平移量为 )为原点的虚拟相机坐标系,那么此时在虚拟相机坐标系下的坐标变为,投影到像平面中可以得到畸变后的归一化像点。
上述的是投影的过程,然后我们来看反投影的过程,反投影就是已知求的过程,在上存在一点,将其归一化后就是,可见和实际对应同一个像素点。按照上边的投影过程可得到,即 从而
求解可以得到
syms r xi z
solve(z + xi * sqrt(z^2 + r^2) == 1, z)
投影过程
- 设相机坐标系下一点,将其归一化到单位球面上 。
- 转换到虚拟像平面上得到
- 对添加畸变(参考针孔模型加畸变),得到。
- 得到像素坐标。
反投影过程
- 设图像上某个点 p = (u, v);
- 得到归一化焦平面上坐标.
- 进行去畸变处理,可参考针孔相机模型去畸变,得到
- 转换到相机坐标系下,其中,。
- 归一化到单位球平面上。
雅可比计算
同针孔相机模型和鱼眼相机模型中介绍的,先贴代码,再贴公式
syms x y z xi fx fy cx cy
u = x / (z + xi);
v = y / (z + xi);
u = fx * u + cx;
v = fy * v + cy;
alphaE_alphaK = - [diff(u, xi), diff(u, fx), diff(u, fy), diff(u, cx), diff(u, cy);
diff(v, xi), diff(v, fx), diff(v, fy), diff(v, cx), diff(v, cy)]
alphaE_alphaP = -[diff(u, x), diff(u, y), diff(u, z);
diff(v, x), diff(v, y), diff(v, z)]
alphaP_alphaR = [1, 0, 0, 0, z, -y;
0, 1, 0, -z, 0, x;
0, 0, 1, y, -x, 0]
alphaE_alphaP * alphaP_alphaR
假设相机坐标系下归一化到球面的3D点坐标坐标为
- 误差项关于内参的偏导数
- 误差项关于相机坐标系下点的偏导
- 误差项在李代数上的扰动模型
根据链式法则可得
其中,的推导后续会有专门篇幅进行总结,在这个先用起来再说。