相机模型-Unified Camera Model

  • 模型介绍
  • 投影过程
  • 反投影过程
  • 雅可比计算



开篇不知道说啥了,直接开始吧。

模型介绍

这个相机模型在其它地方又被叫做 Omnidirectional 相机模型,我做了一个简单的图来表示这个模型,这个模型的本质其实是将原始的光心在光轴方向上进行移动,得到一个虚拟的光心,从而达到模拟畸变的目的。用这个模型可以模拟针孔相机的成像过程,也可以模拟广角以及鱼眼相机的成像过程。需要注意的是,在广角或鱼眼相机中,该模型不会完全模拟畸变过程,所以还需要搭配一些其他畸变模型,比如 相机模型–针孔相机投影(pinhole camera model)中讲的Brown畸变模型。

接下来结合这个示图对这个模型进行详细说明。首先是投影过程,假设相机坐标系下一个点 鱼眼图像去畸变 算法 深度学习_归一化, 将其归一化到以光心为中心的单位球面上 鱼眼图像去畸变 算法 深度学习_归一化_02,若在无畸变的情况下,可以直接得到归一下像点鱼眼图像去畸变 算法 深度学习_Unified_03, 在有畸变的情况下,可以找到一个以虚拟光心(与原光心只存在光轴上的平移,设平移量为 鱼眼图像去畸变 算法 深度学习_像素点_04)为原点的虚拟相机坐标系,那么此时鱼眼图像去畸变 算法 深度学习_像素点_05在虚拟相机坐标系下的坐标变为鱼眼图像去畸变 算法 深度学习_归一化_06,投影到像平面中可以得到畸变后的归一化像点鱼眼图像去畸变 算法 深度学习_像素点_07

鱼眼图像去畸变 算法 深度学习_Unified_08


上述的是投影的过程,然后我们来看反投影的过程,反投影就是已知鱼眼图像去畸变 算法 深度学习_像素点_09鱼眼图像去畸变 算法 深度学习_归一化_10的过程,在鱼眼图像去畸变 算法 深度学习_鱼眼图像去畸变 算法 深度学习_11上存在一点鱼眼图像去畸变 算法 深度学习_像素点_12,将其归一化后就是鱼眼图像去畸变 算法 深度学习_像素点_05,可见鱼眼图像去畸变 算法 深度学习_像素点_05鱼眼图像去畸变 算法 深度学习_鱼眼图像去畸变 算法 深度学习_15实际对应同一个像素点。按照上边的投影过程可得到鱼眼图像去畸变 算法 深度学习_归一化_16,即鱼眼图像去畸变 算法 深度学习_归一化_17 从而鱼眼图像去畸变 算法 深度学习_归一化_18

求解可以得到

syms r xi z
solve(z + xi * sqrt(z^2 + r^2) == 1, z)

鱼眼图像去畸变 算法 深度学习_归一化_19

投影过程

  1. 设相机坐标系下一点鱼眼图像去畸变 算法 深度学习_像素点_20,将其归一化到单位球面上 鱼眼图像去畸变 算法 深度学习_鱼眼图像去畸变 算法 深度学习_21
  2. 转换到虚拟像平面上得到鱼眼图像去畸变 算法 深度学习_鱼眼图像去畸变 算法 深度学习_22
  3. 鱼眼图像去畸变 算法 深度学习_归一化_23添加畸变(参考针孔模型加畸变),得到鱼眼图像去畸变 算法 深度学习_像素点_24
  4. 得到像素坐标鱼眼图像去畸变 算法 深度学习_归一化_25

反投影过程

  1. 设图像上某个点 p = (u, v);
  2. 得到归一化焦平面上坐标鱼眼图像去畸变 算法 深度学习_归一化_26.
  3. 进行去畸变处理,可参考针孔相机模型去畸变,得到鱼眼图像去畸变 算法 深度学习_鱼眼图像去畸变 算法 深度学习_27
  4. 转换到相机坐标系下鱼眼图像去畸变 算法 深度学习_归一化_28,其中,鱼眼图像去畸变 算法 深度学习_Unified_29
  5. 归一化到单位球平面上。

雅可比计算

同针孔相机模型和鱼眼相机模型中介绍的,先贴代码,再贴公式

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点坐标坐标为鱼眼图像去畸变 算法 深度学习_归一化_30

  1. 误差项关于内参的偏导数
  2. 鱼眼图像去畸变 算法 深度学习_归一化_31

  3. 误差项关于相机坐标系下点鱼眼图像去畸变 算法 深度学习_归一化_32的偏导
  4. 鱼眼图像去畸变 算法 深度学习_像素点_33

  5. 误差项在李代数上的扰动模型
    根据链式法则可得

鱼眼图像去畸变 算法 深度学习_鱼眼图像去畸变 算法 深度学习_34

其中,鱼眼图像去畸变 算法 深度学习_Unified_35的推导后续会有专门篇幅进行总结,在这个先用起来再说。

鱼眼图像去畸变 算法 深度学习_像素点_36