鱼眼图像由视场角接近180度甚至大于180度的镜头拍摄得到,图像周围畸变严重,通过经纬法将鱼眼图像展开是一个不错的方法。鱼眼镜头可以视为一个半球,经纬法按照球面贴图的类似思想将图像以球面形式展开。
以下面这幅鱼眼图像为例:
视场角假设为180度,如果按照球的北极点(南极点)为图像的中心,展开后会是这个样子:
图像中心为北极点
图像中心为南极点
当然这样做是不行的,所以需要把球绕x轴旋转90度后展开,这样球的北极点就是图像的边缘,赤道就是图像的中心,结果如下,球的另一面填充为0:
如果把视场角设置的大于180度,大概会是这样
利用反向映射+双线性插值得到最终经纬度图像。代码在此:https://git.oschina.net/rxdj/DewarpFisheye.git,代码文件是DewarpFisheyeImg.cpp
既然鱼眼可以转换到经纬度,经纬度也可以转换到鱼眼,简单写了一个代码,也放在上面的链接中,代码文件是warpFisheyeImg.cpp。
效果如下:
经纬度图
转换到鱼眼