鱼眼图像校正(球面等距投影模型)
为了真正的理清鱼眼图像校正的原理,查阅了很多的资料,本文主要从以下几个方面详细阐述基于球面透视投影等距模型的鱼眼图像校正算法。
1,鱼眼相机的构造原理。
2,透视投影。
3,等距投影算法
鱼眼相机的构造
成像模型的不同,鱼眼相机的成像原理不同于一般的小孔成像模型。对于一般的小孔成像模型其成像的示意图如下所示:
我们先展示了小孔成像的相关知识,不同于小孔成像 鱼眼图像由于为了获得更加宽广的视角,因此允许了图像畸变的存在。其成像也就不同于小孔成像的线性模型。对于鱼眼相机,我们一般将其成像模型用球面,抛物面模型来代替。下面先来看看鱼眼相机的成像光路图:
从图中可以看出,鱼眼相机的成像路径是完全不同于一般的小孔成像的相机。一般的鱼眼相机由以下几个部分组成:
为了更好的描述,鱼眼相机的成像原理,以及其成像过程,通常根据应用场景的不同将鱼眼相机等效为以下的几种模型:
图中的等距投影模型就是本文算法所采用的模型,对于实际的理解,我们可以认为相机的成像模型实际上表征的是成像的像高与入射角之间的关系。以等距投影模型为例来说明,公式中r表示的是传感器上成像的像高。f表示的是相机的焦距。theta表示的是入射角的大小。成像模型实际上是为了用来描述入射角与成像像高之间的映射关系,等距投影是以线性关系来定义,等立体角投影模型是用正弦函数来定义,立体视觉投影是以正切函数来定义的。那么如何来理解所谓的等距投影呢?先来看看等距投影的示意图:
从图中可以看出以相同增量的入射角theta来进行投影,等距投影模型将这些相同增量位置的像素投影到成像面上的时候所得到的像高是相等的。其实这个关系从等距投影的r的表达式上也可以看出来。
明白了等距投影的概念时候,下一个需要理解的概念就是图像畸变。图像的畸变分为径向畸变和切向畸变。所谓的径向畸变意思就是沿着成像半径方向的图像位置的偏移,切向畸变表示的是沿着成像点切线方向图像像素点位置的偏移。可以借助于下面这张图来理解下图像畸变的概念。
根据成像形状的不同可以将鱼眼相机分为普通鱼眼相机和对角型。不同的相机模型所采用的原理是不同的,这对我们选择图像的校正方案是很重要的。
透视投影
关于透视投影的相关知识可以参考下面这篇博客,作者详细的讲解了透视投影的相关知识。
http://www.cnblogs.com/graphics/archive/2012/07/25/2582119.html
等距投影算法
(考虑到我们项目的鱼眼相机实际上是属于壁挂式的安装方式,采用球面模型等距投影算法相比于经纬度法会更好一点。)
算法说明:
如图中所示将鱼眼成像模型等效为一个半球面,
P(x,y,z):为现实空间(CCS)中的一点;
P1(x1,y1,z1):为P点与虚拟成像光心连线交成像半球面的一点。
P2(u,v):过点P1作XOY平面垂线,交XOY平面一点P2。(注意在实际的成像过程中XOY平面并非实际的成像面,这里画出来只是为了方便理解。真实的成像面实际上是上图中最下方的xoy平面。)
r:不同角度的景物通过鱼眼相机的投影在传感器上的像高。r的不同表达式代表着不同的成像模型,本次算法由于采用等距投影模型故r的表达式为r = f*arg(入射);
公式的推导:
鱼眼图像的等距投影模型:r = f* ,其中f表示的是摄像机的焦距。 表示的是光线的入射角。
设鱼眼图像上的像素的坐标为(x,y)。目标图像的平面即为上图中P(X,Y,Z)所在的平面。一般我们取Z=R,其中R为鱼眼图像的半径。由上图的示意图可得到:
平面的投影。同时也是实际成像面中像高r与实际图像坐标x轴之间的夹角。具体理解可参考上图。当得到了theta ,alpha , 这两个值之后,实际上也就得到了球面上一点P1(x1,y1,z1)的极坐标的表达式。2维的平面坐标实际上是通过极坐标这个桥梁映射到三维坐标系中的。此时P1可用极坐标表示出来。P1( theta,alpha ).
由空间一点的极坐标转化为空间点的三维坐标:
P1点的三维坐标为:
在得到空间的点的三维坐标之后,下一步就是要将这个空间点进行球面透视变换。将虚拟球面上的点P1,映射到目标图像平面。根据相似三角形的关系,考虑图中三角形OPP3,OP3P3’,与 可知:
实际上我们校正后的目标图像的平面就是Z = R平面。因此假设校正后的目标图像的坐标为(u,v)。可以得到鱼眼图像的源图像(x,y)和目标图像之间的映射关系。
根据变换之后的鱼眼图像的效果,调整鱼眼图像半径以达到最好效果。同时编程时建议采用矩阵运算的形式进行,减少循环迭代次数,提高算法运行效率。
当然,对于最后的推到公式实际上有许多的方法,除了使用空间三角形的相似定理之外。还可以使用两个具有相同夹角的三角形,其相同角的三角函数值相同。再结合球面模型的空间表达式x2+y2+z2=R2,以及抛物面的空间表达式来求解目标图像与源图像之间的像素映射关系。
鱼眼图像校正(球面等距投影模型)相关推荐
- 鱼眼图像校正(球面等距投影模型)_||
鱼眼图像校正算法 2017.11.6 前面讲了关于鱼眼图像等距投影模型的原理.下面先来看看几个算法的仿真效果. 本周主要在上周的基础上完成鱼眼图像校正算法的仿真,上周提出的是基于等距模型的球面投影校正 ...
- 鱼眼校正c语言算法,一种简单而精确的鱼眼图像校正算法研究
舒旭 摘 要: 针对鱼眼图像的校正提出了一种有效区域提取算法,并在鱼眼图像的球面物投影平面展开时与目标半立方体的校正平面建立线性映射.实验结果表明,该算法能有效地提取鱼眼图像轮廓的有效区域,同时半立方 ...
- 利用opencv棋盘格标定法对鱼眼图像校正分析
利用opencv棋盘格标定法对鱼眼图像校正分析 一.开发环境 PC端.vs2013+opencv3.0.摄像头为淘宝购置的鱼眼摄像头外设+iphone6 二.镜头标定 1. 输入畸变的棋盘格图以及棋 ...
- 鱼眼校正c语言算法,鱼眼图像校正算法.PDF
鱼眼图像的校正算法 诵广垒 (天津工业大学信息与工程学院,天津300160) 摘要:基于鱼眼镜头的全方位视觉系统可应用在很多方面,如全视觉监视.机器人导航等.全方位视觉系统的 标定和畸变图像的校正是至 ...
- java 矫正鱼眼图像_鱼眼图像校正
这两天在做鱼眼图像的校正,也就是鱼眼镜头拍摄的照片的校正. 首先,先贴两张图,学学siggraph,哈哈哈.开玩笑.梦寐以求的图形学年会啊! 这里采用的方法,是从鱼眼图像成像的原理入手,反投影到平面图 ...
- 鱼眼校正c语言算法,一种鱼眼图像逆向经纬映射的快速校正算法
1. 引言 鱼眼镜头因其焦距短,视场大,拍摄图像信息量大等优点,在安防监控.360度汽车成像仪等领域中得到广泛应用.但鱼眼镜头在获得大视场的同时,会产生严重的图像畸变问题 [1] [2] .通过鱼眼镜 ...
- 基于经度坐标校正鱼眼图像
最近开始鱼眼图像校正方面的研究,在这个过程中阅读博主元气少女缘结神的相关博客让我受益匪浅,在此对她表示感谢,另外所有代码在Github. 提取有效区域 在研究中仅仅考虑圆形的鱼眼图像,其他形状,如长方 ...
- 图像处理--鱼眼图像
鱼眼镜头--最开始(1919)是源于摄影的需求--因为鱼眼图像存在几何畸变>>>鱼眼校正的需求 发展: 装满水的针孔摄像机>>>半球形玻璃>>>在 ...
- 【图像提取】基于matlab鱼眼图像有效区域提取【含Matlab源码 2186期】
一.鱼眼图像 1 鱼眼图像研究 随着信号处理和图像处理技术的发展,基于鱼眼全景监控摄像头的视觉处理技术得到快速发展,中国已于2013年底发射"嫦娥三号",搭载的"玉兔号& ...
最新文章
- 零基础入门学习Python(2)
- AI硬件碎片化难题,英特尔想用“一个API”解决,还推出新的编程语言DPC++
- Html5 History API解析
- python类型转换-马哥教育官网-专业Linux培训班,Python培训机构
- 中国最难考的大学共有31所,分6大梯度,考上毕业很抢手
- idea console中文乱码_Python3的字符编码乱码问题解决思路
- PHP生成唯一订单号
- lt、le、eq、ne、ge、gt的含义
- php源码自动识别文本中的链接,自动加载识别文件Auto.php
- TaskBar Hider – 用快捷键手动隐藏任务栏[Windows]
- garageband 淡出_为什么史蒂夫·乔布斯(Steve Jobs)的GarageBand展示了有史以来最好的现场产品演示...
- NET-由于该控件目前不可见、未启用或类型不允许,因此无法将焦点移向
- 怎么判断一个机器可以跑多少用户和并发_美逛微信云发单机器人申请方法及其问题解答汇总...
- Java中IDEA,Springboot实现手机获取验证码和倒计时
- 排序算法专题-堆排序
- mysql2000数据库四合一_sql2000四合一版下载|microsoft sql server2000 简体中文4合一版附sql 2000 sp4 补丁_ - 极光下载站...
- 有没有能PC远程控制安卓手机的App?AirDroid实现PC远程控制安卓
- 爱奇艺动画屋 android,爱奇艺奇巴布(com.qiyi.video.child) - 11.5.5 - 应用 - 酷安
- ASP.NET DATETIME
- 菜鸟海外仓智慧供应链系统“货运参谋”上线,全球跨境仓库100+覆盖30国
热门文章
- 不是有效的win32应用程序_什么是模块,各种模块的有效行为(1)
- 格灵深瞳mysql面试三表联查
- 对于‘用C#编写一个员工工资计算’问题的代码编写风格和结构设计考虑的比较【发现自己还是太弱,大家可以在评论区中提出我代码中的不足】
- 【数据科学】05 数据合并(merge、concat、combine)与数据清洗(缺失值、重复值、内容和格式)
- 让siri变语音计算机,iOS12新功能将释放Siri潜力 让它变身真正语音助手
- spring boot 设置默认主页
- 【浏览器】浏览器缓存
- Bzoj 3875 骑士游戏
- 经常被问道的cap是什么
- java中JAO_JVM内部细节之一:synchronized关键字及实现细节(轻量级锁Lightweight Locking)...