文章目录
- fisheye_calibration
- 小孔成像模型(理想相机成像模型)
- fisheye model 相机模型
- 内参校正的原理
- calibration过程
- 对这个过程简单分析
- 参考文章
fisheye_calibration
小孔成像模型(理想相机成像模型)
fisheye model 相机模型
fisheye model opencv 里使用的鱼眼成像模型。
- 等距投射模型
- P点射过来的光线,按照这个模型会成像到上图P’点。但是实际上由于畸变,他不是成像到P’点,而是这一点附近。可以用P’点的多项式展开来近似。
- 鱼眼成像模型为什么会增大视场角?
几种模型的视场角 - 从Z 轴俯视看成像模型如下,可看出rd 和rc的关系,以及xd,yd 与rc 的关系。
- 由小孔成像影射几何以及上面的等距模型可以把fisheye model 抽象成下面的模型。从上到下依次是公式1-公式7.
- 理想相机模型VS鱼眼相机模型
内参校正的原理
输入:一堆世界坐标系下的3D 坐标点,和相应的这些棋盘坐标点经过相机成像之后的2D像素坐标点。
输出:内参(9个)(), 外参(6 个)()
- 问题域描述:
- 已知:,
- 求:求解内参和外参,内参(), 外参()
- 求解方法:这类问题如何求解请参考另一篇博文。
可以认为自变量是待求的参数(15个),因变量是, 导数是分别对15 个参数的偏导,,。
calibration过程
对这个过程简单分析
- 第一步初始化内参(finalParam.init()), 不需要过多分析。初始化的值对最终的结果影响很小, 我尝试修改初始化的内参,对最终的结果影响很小。
- 第二步,计算外参(CalibrateExtrinsics())
- 第三步,优化内参加外参(Optimization)。
- CalibrateExtrinsics() 函数会循环对每一张输入的图片做一次InitExtrinsics() 和ComputeExtrinsicRefine(), 这里的ComputeExtrinsicRefine() 只会根据当前图像的棋盘点(比如8X5=40个点)对外参进行refine. 这一步对外参的估算是在固定的初始化内参的情况下进行的。内参不变。
- Optimization,是针对所有图像的所有点进行的优化,同时对内参和外参都进行了优化。优化的方法使用的是牛顿-- 拉夫逊方法 (Newton-Raphson method)
- 具体每个函数的详细分析, 请参专门对每个函数分析的文章。
- InitExtrinsics函数分析
- 协方差矩阵的 几何意义
- ComputeHomography函数分析
- ComputeExtrinsicRefine函数分析
- projectPoints函数分析
- Optimization分析
参考文章