相机系列——从相机畸变到托勒密地图

by 木一

标签:#相机畸变 #畸变纠正 #鱼眼相机 #折射定律 #托勒密地图

引言

前文[1][2]我们介绍了针孔相机模型,以及针孔相机模型的相机标定过程,但针孔相机模型是对相机成像最简单的描述,实际的相机成像过程要远复杂很多。

首先相机成像原理虽然可以简化为小孔成像,但实际的相机并非针孔相机,按照小孔成像原理,小孔直径越小成像越清晰,事实上并非如此,因为光线还具有波动性,针孔越小,光的波动性就会越明显,衍射效应影响越大,导致成像变得模糊。另外小孔成像的亮度和成像范围也远远达不到相机成像要求。所以实际的相机采用的是凸透镜或镜头组来达到类似小孔成像的效果。

凸透镜成像 图源:https://zhuanlan.zhihu.com/p/469422543

相机畸变分类及成因

凸透镜出色的光线汇聚能力,能够将物体的像缩小到很小的范围,同时兼顾了成像的亮度和清晰度,这些特性使凸透镜非常适合作为相机镜头。而为了提高成像质量,相机镜头通常采用凹凸透镜组合实现成像。

透镜组合 图源:广东奥普特科技股份有限公司,奥普特,OPT,奥普特官网,广东奥普特科技

用凸透镜(透镜组)做镜头,尽管形式改了,但是成像投影的方式并没有变化,同样可以用针孔相机模型来进行描述。在针孔成像过程中,像与物保持着很多不变的性质,比如直线经过变换仍然是直线,圆锥曲线(比如椭圆)经过变换仍然是圆锥曲线,正因为这些不变的几何性质,使得照片与原场景存在着某种相似性,所以我们看照片才具备真实感。

而在实际应用中,相机的凸透镜成像会偏离相似性,也就是我们所说的产生了畸变,畸变一般是由于相机镜头的制造工艺、安装误差等原因造成的。通常相机畸变可以分类两类:径向畸变和切向畸变。

径向畸变

径向畸变是指是由镜头透镜物理性质或镜片组结构引起的成像画面向外膨胀或向内收缩的现象,简单来说就是直线经过成像后变成了曲线,这并不会影响像的清晰度,而只影响像与物的相似性,径向畸变分为桶形畸变和枕形畸变:

径向畸变1 图源:关于镜头畸变问题的总结_镜头畸变计算公式-CSDN博客

形成这种现象的主要原因是透镜在不同位置的放大倍率不同。如下图所示,将靠近镜头中心部分所成的像记作y1,远离镜头中心部分所成的像记作y2,当y1/h1 > y2/h2时,所成的像是从中心往外放大的,也就是桶形畸变。反之则是枕形畸变。

径向畸变2 图源:https://blog.csdn.net/qq_35247586/article/details/130047063

通常情况下,广角镜头容易产生桶形畸变,长焦镜头容易产生枕形畸变。

切向畸变

切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。通常情况下只考虑径向畸变即可。

切向畸变 图源:镜头畸变的那些事 | 清新的日子

畸变纠正

相机镜头由于要兼顾不同应用场景,畸变不可避免,因此需要对产生了畸变的图像进行畸变纠正。前文我们介绍的针孔相机模型和相机标定方法是基于无畸变的成像过程的,所标定的相机内参也是假定相片不存在畸变。因此畸变纠正需要在相机标定之前完成。基于特定的畸变模型,求解畸变系数,对相片进行畸变纠正,产生无畸变相片,再基于无畸变相片进行相机标定。

畸变纠正 图源:透镜畸变及校正模型_径向畸变-CSDN博客

常用于描述相机畸变的有多项式模型和除法模型,目前比较常用的机器视觉库中基本上也都集成了畸变纠正算法,比如OpenCV中集成张正友标定法,且只考虑了畸变模型中影响较大的径向畸变,具体算法介绍也比较普遍了,不再赘述。具体可参考:https://www.cnblogs.com/Jack-Elvis/p/16078743.html

拓展:鱼眼相机

大多时候,我们并不希望镜头有畸变,但在一些特殊应用场景中,也需要牺牲物像的相似性,以获取其他方面的优势,比如为了获取更大的视角范围所设计的超广角相机、鱼眼相机等。

上文我们介绍了焦距和视角的关系,容易得知,焦距越短视角越大,但实际情况是普通超广角相机即便拥有很短的焦距,也很难覆盖180°的视角范围,因此人们又发明了鱼眼镜头。鱼眼镜头的灵感顾名思义是来自水下的鱼。如下图所示,由于水的折射率比空气大,从水下向上看时,水面上的空间会被压缩到一个半球形空间,而球形外部,则是是来自水面下景色的反射。这样所有水面上的景色便被压缩在一个圈内,这个圈也被叫做斯涅耳窗口。关于鱼眼镜头的介绍,这边文章中介绍的很全面,本文不再过多阐述:https://zhuanlan.zhihu.com/p/29273352。

空气-水界面处的光线折射与全反射 图源:https://zhuanlan.zhihu.com/p/29273352

斯涅耳窗口现象 图源:https://zhuanlan.zhihu.com/p/29273352

鱼眼相机 图源:百度百科

拓展:折射定律

前面提到一个有趣的现象:斯涅耳窗口,关于这个现象在查阅资料时又关联到另外一个知识点:斯涅尔定律,出于好奇检索了一下,发现这便是从小便学过的折射定律,并且折射定律的发现历程,也是经历了很多曲折:

最早的研究起源于公元二世纪,古希腊科学家托勒密做了一个关于光的折射实验。他在一个圆盘上装两把能绕盘心旋转的尺子,将圆盘的一半浸入水中。让光线由空气射入水中,就得到它在水中的折射光线,转动两把尺子,使它们分别与入射光线和折射光线重合。然后取出圆盘,按尺子的位置刻下人射角和折射角。尽管托勒密的实验方法是正确的,实验结果相当精确,与现代值几乎没有多大的差别。但是,由于他测量得不够精确,得出了一个错误的结论,他认为折射角与入射角成正比。托勒密因此错过了一次发现折射定律的机会。

之后伊朗学者伊本·沙尔在984年的专著《论点火镜子与透镜》里最先正确地描述折射定律。可惜的是其它学者并没有注意到他的研究结果。之后很多年,人们都是从托勒密的错误理论开始研究折射。

伊本·沙尔的手稿 图源:维基百科

之后,阿拉伯的科学家阿勒·哈增重复了托勒密的测量,证明入射角和折射角之比是常数的说法是错误的。

17世纪初,开普勒对光的折射现象进行了深入的研究,虽然没有找到正确的折射定律表达式,但通过这些实验发现了全反射,并把他的发现写进了《折射光学》一书。

正确的折射定律是两个人建立的——荷兰数学家威里布里德•斯涅耳和法国数学家笛卡儿

1621年,在开普勒的研究结果的启示下,斯涅耳做了进一步的实验,并发现了入射角与折射角的余割之比为一常数的规律。斯涅耳的这一折射定律是从实验中得到的,没有做任何的理论推导,虽然正确,但却从未正式公布过。

1637年,法国数学家笛卡儿进一步完善了斯涅耳光的折射定律,第一次给出了折射定律的现代表述形式,并在《屈光学》一书中论述了这个问题。

最后还有一个法国数学家费马,由于笛卡尔是从光的微粒观念中推导出折射定律的,这引起了费马的怀疑,费马没有根据光折射的实验现象对光作任何假设,只是利用光是以有限速度传播的这一十七世纪最伟大的发现,用数学方法给出了折射定律的证明。

再发散一下,把大家带跑偏的托勒密,也是将地心说理论体系构建完善的那个人,托勒密通过整理之前六百年的天文学文献,加上自己长期观测的结果,建立了完整的地心体系理论,基本上圆满地解释了当时人们所能观察到的所有天文学现象。甚至在他死后的整整15个世纪中,天文学的教科书都在教授他的理论。

托勒密体系的宇宙图 图源:维基百科

此外,托勒密所著《地理学指南》对地图学的发展做出了巨大的贡献,影响贯穿至今。他综合前人的研究成果,提出在地图上绘制经纬线网的概念,为此,托勒密测量了地中海一带重要城市和据点的经纬度,还提出了投影问题,给出了圆锥投影和球面投影两种方法。《地理学指南》第8卷由几十幅地图组成。他用普通圆锥投影,也就是把经纬线绘成简单的扇形,绘制了世界地图,即著名的“托勒密地图”。

托勒密世界地图图源:影响世界制图史的九张地图

怎么就聊到了地图呢?因为小编是一名GISer,也就是专业为“地图学与地理信息系统”,地图投影几乎是地图学第一节课便要学习的内容。所以这位托勒密也算祖师爷级别的人物了。并且前面提到的鱼眼相机,在成像过程也存在一个投影模型,当然此投影非彼投影,但总觉得,万事万物皆有联系,好了,再说就唯心了,有兴趣的同学可以挖掘看看。

这些故事现在看起来似乎觉得有趣,但是回过头来想想,如今我们以为的常识,其实是先驱们对真理不懈的探索追求才得到的。摘抄一句博客中的话“虽然托勒密的错误延续了一千三百余年,而这也是他的价值所在。科学发现的轨迹就是在错误和正确之间来回震荡的一条曲线;人们总是会犯错误,而这些错误,不过是正确的前奏罢了。”

参考:

https://zhuanlan.zhihu.com/p/29273352

https://zhuanlan.zhihu.com/p/469422543

https://www.cnblogs.com/Jack-Elvis/p/16078743.html

关于镜头畸变问题的总结_镜头畸变计算公式-CSDN博客

镜头畸变的那些事 | 清新的日子

广东奥普特科技股份有限公司,奥普特,OPT,奥普特官网,广东奥普特科技

小孔成像为何以及为什么与凸透镜成像原理相同 - 哔哩哔哩

十一、托勒密之错

https://zh.wikipedia.org/wiki/斯涅尔定律

折射定律的发现及证明过程 开源地理空间基金会中文分会 开放地理空间实验室

科学网—托勒密为什么没有归纳出折射定律? - 王国强的博文

New Page 1

中国科学院西安光学精密机械研究所-光学科普园地

https://www.youtube.com/watch?v=i__IGU1Zm64

荣耀舰队托勒密_上.html

影响世界制图史的九张地图

科学网—从裴秀和托勒密,话地图学的发展 - 高关中的博文


  关注Mapmost,持续更新GIS、三维美术、计算机技术干货

Mapmost是一套以三维地图和时空计算为特色的数字孪生底座平台,包含了空间数据管理工具(Studio)、应用开发工具(SDK)、应用创作工具(Alpha)。平台能力已覆盖城市时空数据的集成、多源数据资源的发布管理,以及数字孪生应用开发工具链,满足企业开发者用户快速搭建数字孪生场景的切实需求,助力实现行业领先。

欢迎进入官网体验使用:Mapmost——让人与机器联合创作成为新常态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/749171.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pytest-yaml-sanmu(五):跳过执行和预期失败

除了手动注册标记之外,pytest 还内置了一些标记可直接使用,每种内置标记都会用例带来不同的特殊效果,本文先介绍 3 种。 1. skip skip 标记通常用于忽略暂时无法执行,或不需要执行的用例。 pytest 在执行用例时,如果…

医药研发项目管理系统:适合CRO/CDMO企业使用的项目管理系统有哪些?

近日,北京民康百草医药科技有限公司(以下简称“民康百草”)与北京瑞杰智能科技有限公司(以下简称“瑞杰科技”)宣布达成战略合作,双方将共同打造一套符合民康百草企业特色的研发项目管理系统。该系统将基于…

ChatGPT自媒体创作秘籍:高效生成优质文章和视频

在这个信息爆炸的时代,自媒体已经成为人们获取信息、表达观点和分享生活的重要途径。而作为自媒体创作者,如何高效地生成优质内容,吸引更多的关注和互动,是每一个创作者都在思考的问题。今天,我将为大家分享利用ChatGP…

Linux CentOS Suhosin禁用php5.6版本eval函数详细图文教程

方法一:PHP_diseval_extension禁用 Linux CentOS 禁用php的eval函数详细图文教程_centos php 禁用 eval-CSDN博客 这个方法make报错,懒得费时间处理,直接用第二种 方法二:suhosin禁用 服务器只装了一个PHP5.6版本,一…

PLM系统选购指南:哪款品牌最适合你?

在选购PLM(Product Lifecycle Management)系统时,选择最适合自己企业的品牌至关重要。以下是一份清晰的PLM系统选购指南,帮助您根据企业的具体需求选择最合适的品牌: 1、明确企业需求: 首先,明…

【面试分享】嵌入式面试题常考难点之关于单链表的增删改查

文章目录 【面试分享】嵌入式面试题常考难点之关于单链表的增删改查一、单链表结点定义二、增(Create)——插入结点1. 于链表头部插入结点(头插法)2. 于链表尾部插入结点(尾插法)3. 于链表中间插入结点3-1.…

一步步带你解锁Stable Diffusion:老外都眼馋的 SD 中文提示词插件分享

大家好我是极客菌!今天我们继续来分享一个外国人都眼馋的 SD 中文提示词插件。 那我们废话不多说,直接开整。 SD 的插件安装,小伙伴们应该都会了吧,我这里再简单讲下哦,到「扩展」中的「可下载」中点击「加载扩展列表…

图像、色彩波和抗混叠

阮一峰的博文图像与滤波中分析了图像和波的关系,主要结论如下: 图像本质上就是各种色彩波的叠加。图像就是色彩的波动:波动大,就是色彩急剧变化;波动小,就是色彩平滑过渡。色彩剧烈变化的地方,…

车载系统类 UI 风格品质非凡

车载系统类 UI 风格品质非凡

桌面上的记事软件是什么 大家都在用什么记事软件

你是否经常因为琐事繁多而感到焦虑?是否曾在忙碌的工作中遗漏了重要的事项? 作为一名文字工作者,我深知记事的重要性。在繁杂的工作和生活中,我们需要的不仅仅是一个简单的记事本,而是一个能够帮助我们高效管理时间、…

Spring Boot如何集成Spring Data JPA?

🍅 作者简介:哪吒,CSDN2021博客之星亚军🏆、新星计划导师✌、博客专家💪 🍅 哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师 🍅 技术交流:定期更新…

Http客户端-Feign 学习笔记

作者介绍:计算机专业研究生,现企业打工人,从事Java全栈开发 主要内容:技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流(SCI论文两篇) 上点关注下点赞 生活越过…

Embedding的概念和展开

前言 本章,我们介绍一个非常细的细节技术。让我们微调大模型的一些特性和能力。 在大模型的AI套路演化过程中,其实经历了太多的技术革新和方式变化,Embedding其实也可能是其中一个高速湮灭的技术点之一。 对比LoRA现在大红大紫&#xff0c…

深度学习 - Transformer 组成详解

整体结构 1. 嵌入层(Embedding Layer) 生活中的例子:字典查找 想象你在读一本书,你不认识某个单词,于是你查阅字典。字典为每个单词提供了一个解释,帮助你理解这个单词的意思。嵌入层就像这个字典&#xf…

初识 Embedding,为何大家都基于它搭建私人智能客服?

随着 AI 技术的发展,大家在日常使用过程中经常会碰到一些目前 GPT4 也无法解决的问题: 无法获取个人私有数据信息,进行智能问答无法获取最新信息,LLM 模型训练都是都是有截止日期的无法定制化私有的专属模型,从而在某…

算法常见问题

1.c虚函数 虚函数是用来实现多态(polymorphism) 的一种机制。通过使用虚函数,可以在子类中重写父类中定义的方法,并且在运行时动态地确定要调用哪个方法。 在类定义中将一个成员函数声明为虚函数,需要使用 virtual 关键字进行修饰 。 通过指向…

山海相逢,因你而至!第九届全球边缘计算大会·深圳站圆满召开!

2024年6月22日,第九届全球边缘计算大会在深圳盛大开幕。本次盛会由边缘计算社区主办,并获得了EMQ、研华科技、华为等重量级单位的鼎力支持。大会汇聚了来自全球各地的业界精英,共同探讨边缘计算的前沿技术、应用趋势以及创新实践,…

Isaac Sim 9 物理(1)

使用Python USD API 来实现 Physics 。 以下内容中,大部分 Python 代码可以在 Physics Python 演示脚本文件中找到,本文仅作为个人学习笔记。 一.设置 USD Stage 和物理场景 Setting up a USD Stage and a Physics Scene USD Stage不知道怎么翻译&#…

docker 部署的 wordpress 接入阿里云短信服务 详细实操介绍

一、阿里云短信服务配置: 1、登录 阿里云短信服务 完成指引短信相关配置 2、创建RAM用户 并完成授权 出于安全及规范考虑 需通过RAM 用户来完成OponApl 接口调用,创建成功需完成短信接口(AliyunDysmsFullAccess、AliyunDysmsReadOnlyAccess…

【大模型】大模型微调方法总结(二)

1.Adapter Tuning 1.背景 2019年谷歌的研究人员首次在论文《Parameter-Efficient Transfer Learning for NLP》提出针对 BERT 的 PEFT微调方式,拉开了 PEFT 研究的序幕。他们指出,在面对特定的下游任务时,如果进行 Full-Fintuning&#xff0…