您的位置:首页 > 其它

鱼眼图像畸变校正_V

2017-12-03 16:48 489 查看
鱼眼图像即便校正这个专题已经写到了第5版了,本次博客需要探讨的是关于在鱼眼图像畸变校正中的畸变半径的确定问题。同时结束鱼眼图像畸变校正的专题,在此做一个总结。并给出具体的解决方案。

鱼眼图像畸变半径的获取。

在之前的博客中已经探讨了关于如何进行鱼眼图像畸变矫正的方案,主要是说明了球面透视投影算法,以及基于等距模型的球面透视投影的方法,实际上这种空间坐标映射的变换方法难度很大。在处理这类问题的时候最主要的是要在头脑里建立5个坐标系:世界坐标系,摄像机坐标系,成像平面坐标系,图像图标系,像素平面坐标系。这5个具体的坐标系共同组成了一个完整的成像系统。其中摄像机坐标系以及成像平面坐标系可以看作是一个完整的坐标系统在简化的摄像机模型中作为一个坐标系统来近似。由于具体示意图不在手边,等之后完善修改的时候添加直观地示意图:

简要说明下这几个坐标系的意思:

世界坐标系:CCS实际上就是指现实世界的绝对坐标系。上北下南左西右东。实际的建立时建立的是三位的坐标系。

摄像机坐标系:实际上就是讲的已摄像机平面为参考平面的所建立的坐标系。空空间关系上来看摄像机坐标系并不总是与世界坐标系在同一平面。更多可能是一个交叉空间。

成像平面坐标系:在摄像机内部成像的过程中现实世界所成的像并不是直接在摄像机的坐标中心成像而是在摄像机的光学中心成像,所谓的光学中心实际上就是镜头组合的焦点。可以理解所称的像是在以光心为圆心的平面上的。

图像坐标系:图像所在的坐标系,不同的成像模型成像的关系是不同的。

像素坐标系:就是我们使用最为广泛的图像处理的坐标系。不同的系统原点位置不同。

这里在理清了这几个坐标系的关系之后下一步就是校正关系的推导。常见的鱼眼矫正的方法大致分为三类:2D空间校正,3D空间校正,基于内容的校正。

2D空间校正就是常见的经纬度校正。一般只用经度校正。CSDN上有一片写的很好的博客。

http://blog.csdn.net/lkj345/article/details/60146164

作者对经纬度校正做了比较详细的整理。值得借鉴但是注意一点文中使用的是MATLAB代码,为了进行效率优化作者使用了变换的矩阵操作代替了loop,这个做法很好。但是不建议C++实现时使用。在具体的C++实现时可以参考变换公式。

3D空间校正:

对于3D空间校正我之前的博客中已经写了很多了,具体的MATLAB代码在鱼眼图像畸变校正_|||中可以下载。在此不再赘述。

基于内容的校正:

这个方法是比较先进的方法使用到了机器学习的方法。但是实现起来难度较大。当然也可以思考将现在的一些深度学习模型迁移到这里来进行校正。说一下大致的思路基于内容的畸变校正时我们可以在获取到了相机模型的畸变参数之后使用SVM 的方法进行训练,训练的目的实际上就是为了为了得到更好的校正拟合参数。再将这个拟合参数加入到建立的相机模型中来辅助校正。这种方法可以得到最好的效果。但是运算量太大,不太适合工程使用。

在对鱼眼图像校正有了比较系统的认识之后,下一步需要做的就是对具体的实现方法的说明,当然不可能细致到每一项。相关的技术都有比较好的参考文档。我就不再班门弄斧。

精确的畸变参数的获取:

如果要做到比较精确的畸变参数的获取,就需要使用到张正友博士的棋盘标定的方法了。对于不同的参数需要使用不同的分辨率板。常见的就是获取摄像机的外参和内参,外参包括摄像机的旋转矩阵,平移矩阵。内参主要是摄像机的焦距以及畸变半径的修正参数。当然了除了这几个参数之外我们同样需要获取成像平面到图像坐标系平面的高度。以及成像平面到世界坐标系之间的高度。对于这些参数我们需要使用不同的标定板来得到。

鱼眼图像畸变半径的粗略估计:

基本思想是通过过图像处理的方式获得ROI区域。然后对ROI区域求解半径。

大致的方案:

二值化,形态学操作,连通域获取,最大外接矩形,半径计算,参数输出





到此本专题就结束了,希望有兴趣的朋友一起交流学习。(上图只是校正的效果不是最终的拼接效果)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  解决方案 算法