文章目录
- 1. 简介
- 2. 基本原理
- 基本思路
- 从目标图到半球面模型的投影
- 从半球面模型到鱼眼图像的投影
- 正交投影
- 等距投影
- 3.实际效果示例
- 论文中的原图去畸变
- 4. 有意思的玩法
- 5. 对生成的鱼眼图去畸变
1. 简介
算法来自论文《基于双经度模型的鱼眼图像畸变矫正方法》
2. 基本原理
基本思路
去畸变需要建立一个投影链路,这里是从目标图(最终要得到的去畸变的图)到半球面模型的投影,再从半球面模型到鱼眼图投影。目标图的ij坐标转换为半球面模型上的经度值(类比地球经纬度描述表面位置),半球面模型到鱼眼图的投影有多种方式,这里采用的正交投影和等距投影。目标图到半球面再到鱼眼图上都是一一对应的。
从目标图到半球面模型的投影
α
\alpha
α为y方向的经度值,
β
\beta
β为x方向的经度值,经度值范围
[
0
,
π
]
[0,\pi]
[0,π]
下面的公式5 6就建立了从目标图到半球面的坐标的一一对应关系
注意
:这里的公式有点问题,z一定是正数,但是x,y却不一定,忽略x,y的符号会导致最终得到一个只有一个象限的图,看起来像是一朵四片重复的花瓣的花。
从半球面模型到鱼眼图像的投影
正交投影
下面的公式20 21建立了从半球面到鱼眼图的一一对应关系。
等距投影
下面的公式28 29建立了从半球面到鱼眼图的一一对应关系。
3.实际效果示例
论文中的原图去畸变
下面左边是最近邻插值的效果,右侧为双线性插值的结果
4. 有意思的玩法
正常去畸变的链路是从目标图—>半球面—>鱼眼图,这样可以去畸变,那链路反过来呢?那不是就可以制造鱼眼图的效果了吗!yes,是的。那后面验证效果可以用生成的鱼眼图来做去畸变。(目前有的数据不能发,所以才有了这个自己造鱼眼图的想法!)
左边为原图,右侧为生成的鱼眼图
5. 对生成的鱼眼图去畸变
左侧为输入图,右侧为去畸变的图。从效果来看对生成的鱼眼图去畸变效果非常好,这也就说明了在去畸变的时候,建立和真实的投影模型一致的模型是多么重要,用简单的模型来模拟真实的物理世界,还是很有意思,但是怎么去近似这个真实的物理过程真是件需要创造力的事情。
算法也还算是很简单,初版一天完成,后面稍微修改了一点,总的代码量300-400行左右。