【相机标定系列】【相机模型】SLAM 中常用的相机模型畸变模型总结

news/2024/7/21 14:13:30/文章来源:https://blog.csdn.net/djfjkj52/article/details/125626318

Overview

鱼眼镜头的成像原理分类:

Dioptric cameras,通过透镜来实现,主要是折射
Catadioptric cameras,使用一个标准相机加一个面镜(Shaped mirror)
polydioptric camera,通过多个相机重叠视野

目前的视觉系统都是 central 的,入射光线会相交于同一点,点称为 single effective viewpoint。

https://github.com/alalagong/CameraModel

Camera models相机模型

Pinhole:针孔
omnidirectional:全向

(【鱼眼镜头9】论文Omnidirectional Camera,鱼眼是全向折射相机,满足单一有效视点,scaramuzza多项式Taylor模型(适用于鱼眼相机),统一投影模型(在鱼眼应用受限))中提到了Omni 相机模型,早期的统一投影模型和后来的scaramuzza多项式Taylor模型(适用于鱼眼相机)

Distortion models :畸变模型

Equidistant (EQUI)
Radtan
FOV

Equi畸变模型是一种用于描述相机镜头引起的径向畸变(radial distortion)的数学模型。它基于等距投影(equidistant projection)的原理,即图像上点与物体空间点之间的距离在投影前后保持不变。在【鱼眼镜头10】等距Equidistant模型的Kannala-Brandt模型中我说明了这个的模型的情况,在opencv 中fisheye有应用

Radtan在【相机标定系列】径向畸变和切向畸变(radial-tangential distortion) 径向畸变和切向畸变模型,简称为radtan畸变模型。中有说明,是经典的畸变模型

Projection model:投影模型

Full projection model
MEI Camera
Pinhole Camera
atan Camera
Davide Scaramuzza Camera

常用用例

要注意畸变矫正之后的相机内参会变化。

DSO:Pinhole + Equi / Radtan / FOVVINS:Pinhole / Omni + RadtanSVO:Pinhole / atan / ScaramuzzaOpenCV:cv: pinhole + Radtan , cv::fisheye: pinhole + Equi , cv::omnidir: Omni + Radtan

cv::fisheye在 OpenCV 中用于鱼眼相机的标定,但它本身并不直接等同于 Kannala-Brandt 模型。不过,cv::fisheye 函数在处理鱼眼相机标定时,可能会采用类似 Kannala-Brandt 模型或其他鱼眼相机模型的方法来描述和校正鱼眼相机的畸变。

cv::fisheye

cv::fisheye 是 OpenCV 库中用于处理鱼眼相机(Fisheye Camera)的模块。它基于鱼眼相机模型来处理鱼眼镜头引入的严重畸变。以下是关于 cv::fisheye 所基于的模型的一些关键点:

  1. 鱼眼相机模型简介

    • 鱼眼相机相较于传统针孔相机,拥有更广阔的视野,但这也导致了更严重的畸变。
    • 鱼眼相机模型通常包括针孔成像和鱼眼畸变两个主要部分。
  2. 针孔成像

    • 在鱼眼相机模型中,针孔成像描述了从3D世界坐标系到相机坐标系,再到理想图像坐标系的投影过程。
    • 这一过程通过外参数的旋转和平移转换来实现。
  3. 鱼眼畸变

    • 鱼眼畸变是鱼眼相机特有的现象,它导致图像中的直线在图像边缘附近呈现弯曲状。
    • OpenCV 中的 cv::fisheye 模块使用多项式模型来描述这种畸变,通常包括多个畸变系数(如 k1, k2, k3, k4 等)。
    • 畸变校正通常涉及将畸变图像坐标转换为校正后的图像坐标。
  4. 畸变校正过程

    • 对于世界坐标系中的一点 P,首先通过针孔投影得到理想坐标 [a; b]。
    • 接着,应用鱼眼畸变模型计算畸变后的坐标 [x’; y’]。
    • 最后,将畸变坐标调整到像素坐标系 [u; v]。
  5. 多项式畸变模型

    • OpenCV 的 cv::fisheye 模块使用的畸变模型通常是一个多项式,如 θ d = θ ( 1 + k 1 θ 2 + k 2 θ 4 + k 3 θ 6 + k 4 θ 8 θd = θ (1 + k1θ^2 + k2θ^4 + k3θ^6 + k4θ^8 θd=θ(1+k1θ2+k2θ4+k3θ6+k4θ8)。
    • 其中,θ 是理想坐标的极角,θd 是畸变后的极角,k1, k2, k3, k4 是畸变系数。
  6. 模型应用

    • cv::fisheye 模块提供了多种函数和工具,用于鱼眼相机的标定、畸变校正、投影和反投影等操作。
    • 通过这些工具,用户可以准确地校正鱼眼相机拍摄的图像,获得更准确的视觉信息。

总结来说,cv::fisheye 是基于鱼眼相机模型来处理鱼眼镜头引入的畸变的。它利用针孔成像原理和多项式畸变模型来模拟和校正鱼眼相机的成像过程,从而为用户提供高质量的视觉信息。

参考

https://blog.csdn.net/OKasy/article/details/90665534

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

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

相关文章

关于我转生从零开始学C++这件事:升级Lv.25

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载,请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主,代码兴国!❤❤❤ OK了老铁们,又是一个周末,大伟又来继续给大家更新我们的C的内容了。那么根据上一篇博…

【ai】LiveKit Agent 的example及python本地开发模式工程实例

title: ‘LiveKit Agent Playground’ playgroundLiveKit Community playground的环境变量:LiveKit API # LiveKit API Configuration LIVEKIT_API_KEYYOUR_API_KEY LIVEKIT_API_SECRETYOUR_API_SECRET# Public configuration NEXT_PUBLIC_LIVEKIT_URLwss://YOUR_…

论文阅读笔记:Task-Customized Mixture of Adapters for General Image Fusion

论文阅读笔记:Task-Customized Mixture of Adapters for General Image Fusion 1 背景2 创新点3 方法4 模块4.1 任务定制混合适配器4.2 提示生成4.3 提示驱动融合4.4 互信息正则化MIR4.5 任务定制化损失 5 实验5.1 VIF任务5.2 MEF任务5.3 MFF任务5.4 消融实验5.5 性…

IDEA社区版创建并运行maven管理的web项目的基本流程

一、前言 注意,这是社区版,旗舰版可以绕路。 二、过程 1、下载安装社区版 2、安装jdk,tomcat,maven 3、创建并启动项目 注意选择的骨架是maven-archetype-webapp,然后next,设置项目名,存放…

5.27作业

定义自己的命名空间my_sapce&#xff0c;在my_sapce中定义string类型的变量s1&#xff0c;再定义一个函数完成对字符串的逆置。 #include <iostream> #include <string.h>using namespace std; namespace my_space {string s1;void RevString(string &s1); } v…

香橙派 AIpro开发板初上手

一、香橙派 AIpro开箱 最近拿到了香橙派 AIpro&#xff08;OrangePi AIpro&#xff09;&#xff0c;下面就是里面的板子和相关的配件。包含主板、散热组件、电源适配器、双C口电源线、32GB SD卡。我手上的这个是8G LPDDR4X运存的版本。 OrangePi AIpro开发板是一款由香橙派与华…

操作系统实验--终极逃课方法

找到图片里的这个路径下的文件 &#xff0c;结合当前题目名称&#xff0c;把文件内容全部删除&#xff0c;改为print print的内容为下图左下角的预期输出的内容

Java入门基础学习笔记43——包

什么是包&#xff1f; 包是用来分门别类的管理各种不同程序的&#xff0c;类似文件夹&#xff0c;建包有利于程序的管理和维护。 建包的语法规则&#xff1a; package cn.ensource.javabean;public class Car() {} 在自己的程序中调用其他包下的程序的注意事项&#xff1a; 1…

若依ruoyi-vue element-ui 横向滚动条 动态横向滚动条

动态横向滚动条 因为每次横向滑动都要到底部&#xff0c;引入插件 https://github.com/mizuka-wu/el-table-horizontal-scroll //动态横向滚动条移入样式 .el-table-horizontal-scrollbar :hover{//高度 变大10%transform: scaleY(1.5) translateY(-10%);//百分之八十亮度&a…

大模型时代的具身智能系列专题(四)

google deepmind团队 谷歌旗下最大的两个 AI 研究机构——地处伦敦 DeepMind 与位于硅谷的 Google Brain 合并成立新部门 Google DeepMind。其将机器学习和系统神经科学的最先进技术结合起来&#xff0c;建立强大的通用学习算法。代表作有AlphaGo&#xff0c;AlphaStar&#x…

编程零基础,如何学习Python?

初学者选择Python入手着实是一个不错的方向&#xff0c;入手简单且广泛的运用是它最显著的特色了。 那有几个问题&#xff0c;我想是开始学习Python之前应该了解的&#xff0c; python能做什么&#xff1f; 发展前景与工作机会有哪些&#xff1f; 需要学习哪些内容&#xf…

【多态】(超级详细!)

【多态】&#xff08;超级详细&#xff01;&#xff09; 前言一、 多态的概念二、重写1. 方法重写的规则2. 重写和重载的区别 三、多态实现的条件四、 向上转型五、动态绑定 前言 面向对象的三大特征&#xff1a;封装性、继承性、多态性。 extends继承或者implements实现&…

Vue状态管理深度剖析:Vuex vs Pinia —— 从原理到实践的全面对比

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 &#x1f44b; 引言&#x1f4cc; Vuex 基础知识核心构成要素示例代码 &#x1f4cc; Pinia 基础知识核心构成要素示例代码 &#x1f4cc; Vuex与Pinia的区别&#x1f4cc; 使用示例与对比&#x1f4cc; 总结 &#x1f44b;…

60. UE5 RPG 使用场景查询系统(EQS,Environment Query System)实现远程敌人寻找攻击位置

UE的Environment Query System&#xff08;EQS&#xff09;是环境查询系统&#xff0c;它是UE4和UE5中用于AI决策制定过程中的数据采集和处理的一个强大工具。EQS可以收集场景中相关的数据&#xff0c;利用生成器&#xff08;Generator&#xff09;针对用户的测试&#xff08;T…

Spring6基础笔记

Spring6 Log4j2 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 轻量级开源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发…

列表、元组、字典和集合的区别

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在前面介绍了序列中的列表、元组、字典和集合的应用&#xff0c;下面通过表2对这几个数据序列进行比较。 表2 列表、元组、字典和集合的区别 数 据…

985上交应届生转正12天,被某东辞退了!

&#x1f447;我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299&#xff0c;限时特价2杯咖啡&#xff0c;满100人涨10元。 01.事情起源 最近粉丝群都在转发一个截图&#xff0c;某应届毕业生在某东实习一年&#xff0c;才转正才12天&#xff0c;就因为自己调侃…

关于c++的通过cin.get()维持黑框的思考

1.前言 由于本科没有学过c语言&#xff0c;研究生阶段接触c上手有点困难&#xff0c;今天遇到关于通过cin.get()来让黑框维持的原因。 2.思考 cin.get()维持黑框不消失的原因一言蔽之就是等待输入。等待键盘的输入内容并回车&#xff08;一般是回车&#xff09;后cin.get()才…

ssm球场计费管理系统-计算机毕业设计源码77275

摘 要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在球馆计费管理的要求下&#xff0c;开发一款整体式结构的球场计费管理…

部署Prometheus + Grafana实现监控数据指标

1.1 Prometheus安装部署 Prometheus监控服务 主机名IP地址系统配置作用Prometheus192.168.110.27/24CentOS 7.94颗CPU 8G内存 100G硬盘Prometheus服务器grafana192.168.110.28/24CentOS 7.94颗CPU 8G内存 100G硬盘grafana服务器 监控机器 主机名IP地址系统配置k8s-master-0…