一文搞懂鱼眼相机模型
本文转自|计算机视觉life
鱼眼镜头
之前的文章我们介绍了针孔相机模型,相机镜头是一个凸透镜,而本文介绍的鱼眼相机镜头是由十几个不同的透镜组合而成,在成像的过程中,入射光线经过不同程度的折射,投影到尺寸有限的成像平面上,使得鱼眼镜头拥有更大的视野范围。下图为鱼眼相机的组成结构:
与针孔相机原理不同,鱼眼镜头采用非相似成像,在成像过程中引入畸变,通过对直径空间的压缩,突破成像视角的局限,从而达到广角成像。
所以鱼眼镜头是一种极端的广角镜头,通常焦距小于等于16mm并且视角接近或等于180°(在工程上视角超过140°的镜头即统称为鱼眼镜头)。
相机畸变
鱼眼镜头无论如何它的边缘线条都是要弯曲的,即使90度的鱼眼也是这样,这种畸变我们在很多广角镜头上都可以看到,而这就是明显的桶形畸变。同样的120度的鱼眼看起来弯曲的更加厉害一些了,而且被容纳进范围的景物更多;150度同样如此,而180度的鱼眼则可以把镜头周围180度范围内的所有物体都拍摄进去。众所周知,焦距越短,视角越大,因光学原理产生的变形也就越强烈。为了达到180度的超大视角,鱼眼镜头不得不允许这种变形(桶形畸变)的合理存在。
针对原始图像进行畸变校正后,带有冗余边界,需要做进一步截取。如下图:
投影模型
通常的光学系统均基于高斯光学,遵循相似成像准则,而鱼眼镜头为了将尽可能大的场景投影到有限的图像平面内采用非相似成像,故需要选择其他的成像公式来替换高斯光学成像公式,每一个成像公式对应一种镜头设计模型。常用的鱼眼镜头模型一共有四个,分别是等距投影、正交投影、等立体角投影、体视投影。
f为鱼眼相机的焦距,即成像平面的半径,θ是入射光线与鱼眼相机光轴的夹角,即入射角,rd为鱼眼图像的点到畸变中心的距离。rd随着设计模型的变化而发生变化,四种模型投射距离的大小关系如下(反映空间中的一点P投影到球面再到图像平面的成像过程):
等距投影的成像点的位置rd与入射角θ成正比。这种模型可以解决在小孔成像下入射角为 90°时图像无限拉伸的问题,在二维图像中,成像为随着入射角不断变化的同心圆,最大视场角可达到 360°,这种鱼眼模型是最简单的一种模型。
正交投影的成像结果,不会产生出透射映射的近大远小结果。在二维图像中,从 0 到 90 度,等差的视场角成像越来越密。180度视场角以内的场景都可以进行投影。
等立体角投影是鱼眼镜头中比较常用的一种模型。
体视投影是一种将圆球投影至平面的映射,在几何学里也称共型映射,是一种保角映射。此时相机的光心移至南极的位置,光轴朝北极。体视投影可以将 360度的场景都投影到图像上。
成像模型
相比针孔相机模型可以将三维点直接投影到归一化平面,鱼眼相机则多了一个中间过程:先将三维点投影到单位球面,再将单位球面上的点投影到归一化平面上。
对于三维世界中的一点
一文搞懂鱼眼相机模型相关推荐
- 一文搞懂双亲委派模型
类加载器 虚拟机设计团队把类加载阶段中的"通过一个类的全限定名来获取此类的二进制字节流"这个动作放到 Java 虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类.实现这 ...
- KannalaBrandt8鱼眼相机模型
1. 鱼眼相机 鱼眼相机镜头是由十几个不同的透镜组合而成,在成像的过程中,入射光线经过不同程度的折射,投影到尺寸有限的成像平面上,使得鱼眼镜头拥有更大的视野范围.下图为鱼眼相机的组成结构: 与针孔相机 ...
- 一文搞懂HMM(隐马尔可夫模型)-Viterbi algorithm
***一文搞懂HMM(隐马尔可夫模型)*** 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度.熵越大,系统越无序,意味着系统结构和运动的不确定和无规则:反之,,熵越小,系统越有序, ...
- 一文搞懂如何使用ArcGIS API for Python训练深度学习模型
一文搞懂如何使用ArcGIS API for Python训练深度学习模型 文章目录 一文搞懂如何使用ArcGIS API for Python训练深度学习模型 写在前面 一.ArcGIS API f ...
- 一文搞懂TCP/IP四层模型
一文搞懂TCP/IP四层模型 上篇介绍过了OSI七层网络模型,本文将介绍四层网络模型,七层网络模型只是理论实现,但是市面上更实际的是四层模型. 七层模型和四层模型比较 将应用层,表示层,会话层这些应用 ...
- 一文尽览 | 计算机视觉中的鱼眼相机模型及环视感知任务汇总!
点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心技术交流群 后台回复[ECCV2022]获取ECCV2022所有自动驾驶方向论文! 论文 ...
- 一文搞懂 Cocos Creator 3.0 坐标转换原理
一文搞懂 Cocos Creator 3.0 坐标转换原理 屏幕坐标 UI 触点坐标 UI 多分辨率适配方案 UI 触点获取 不同坐标之间的转换 屏幕坐标与 3D 节点世界坐标互转 3D 节点之间的坐 ...
- 一文搞懂RNN(循环神经网络)
基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...
- python语言语句快的标记是什么_一文搞懂Python程序语句
原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...
最新文章
- 别再用那些已经淘汰的技术了!2020年9大顶级Java框架出炉!!
- html(超链接定义锚点与特殊符号转义)
- .NET连接SAP系统专题:C#获取RFC中自定义的异常(四)
- 对于我的博客的相关说明
- P3160:局部极小值(容斥、状压)
- 自定义Log4j 2.0
- sql server 2005单独添加mdf文件
- jdbc连接oracle数据库
- Unity3D游戏开发之开发游戏带来的问题
- Documentation目录下的as-iosched.txt文档翻译
- 直流稳压电源的设计与制作
- 更换微软TTS语音引擎切换
- AcWing 741. 斐波那契数列
- 一款老飞飞_魅力飞飞脚本研究增加攻击与暴击几率方式探讨源码(附带易语言源码)
- MIT Mini Cheetah--仿真流程
- android 耳机检测,android 检测耳机是否插入方法
- Element Black 打造 NFT 新形式
- 王勇杰《音乐漫步》1-10单元测试答案
- 使用easypoi导出注解添加序号,无须重写ExcelExportUtil类
- 前端实习面试题(自己当笔记用)
热门文章
- 来自大数据的反思:需要你读懂的10个小故事 三
- 服务器安装macos虚拟机,windows服务器装macos虚拟机系统
- JavaWeb:request.setAttribute()和session.setAttribute()的区别
- 20189200余超 2018-2019-2 移动平台应用开发实践第十二周作业
- 【ubuntu】解决“不在 sudoers 文件中。此事将被报告。”
- JavaBeans 教程
- 使用计算机VLOOKUP函数需注意什么,vlookup函数怎么用-vlookup函数使用方法介绍 - Iefans...
- java implement和extends
- 2020JavaScript技能抽查
- Android入门教程学习笔记