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