理解相机工作原理:图像形成背后的机制
本内容为slam学习中所涉及的关于相机模型基础知识整理。
一.针孔相机模型与图像
照片记录了真实世界在成像平面上的投影,这个过程丢弃了“距离”维度上的信息,普通相机可以用针孔模型很好的近似。
小孔成像模型:就是初高中物理讲过的成像原理
由于成像平面的坐标系是在图像的中心并且像素的排布是一个离散的过程,所以从成像平面到像素坐标还要进行以下转化过程:
这里补充一个齐次坐标系的知识,之前学线代时经常用到齐次非齐次的概念,可是当看到上图中左右两个不同的坐标时没有理解为什么一个是齐次一个是非齐次的,所以百度了一下深入理解一下这个概念。
https://www.zhihu.com/question/59595799/answer/301242100
言归正传,由此可以看出同一直线上的投影点扔是同一个。
除了内参外,像极坐标系与世界坐标系还相差一个变换:
这里的R,t或T称为外参(注:右侧式子隐含了一次非齐次到齐次的变换),这个外参就是SLAM估计的目标。
下面整理一下投影顺序:世界-----相机-------归一化平面-------像素(激光模型要更加简单,因为激光直接能够获得距离)
针孔前的镜头会引入畸变,下面来介绍一下畸变:
主要的畸变类型有:径向畸变和切向畸变
那么怎么建立数学模型去表示畸变后的坐标呢?畸变可以用归一化坐标的变换来描述:
最后再整理一下针孔相机模型成像的整个过程:
下面介绍双目相机成像模型:
除了单目双目外再介绍一下用物理手段测量深度的RGBD相机:
主要分为ToF或结构光两种主要原理,通常能够得到与RGB图对应的深度图。
上一篇: 实战分享:打造高效生产级AI的关键—— 数据集构建与优化的经验探讨
下一篇: 相机成像原理
推荐阅读
-
详解各类锁机制:互斥锁、条件变量、读写锁与自旋锁的工作原理及其理解
-
【2022新手指南】Java编程进阶之路 - 六、技术架构篇 ### MySQL索引底层解析与优化实战 - 你会讲解MySQL索引的数据结构吗?性能调优技巧知多少? - Redis深度揭秘:你知道多少?从基础到哨兵、主从复制全梳理 - Redis持久化及哨兵模式详解,还有集群搭建和Leader选举黑箱打开 - Zookeeper是个啥?特性和应用场景大公开 - ZooKeeper集群搭建攻略及 Leader选举、读写一致性、共享锁实现细节 - 探究ZooKeeper中的Leader选举机制及其在分布式环境中的作用 - Zab协议深入剖析:原理、功能与在Zookeeper中的核心地位 - RabbitMQ全方位解读:工作模式、消费限流、可靠投递与配置策略 - 设计者视角:RabbitMQ过期时间、死信队列与延时队列实践指南 - RocketMQ特性和应用场景揭示:理解其精髓与差异化优势 - Kafka详细介绍:特性及广泛应用于实时数据处理的场景解析 - ElasticSearch实力揭秘:特性概述与作为搜索引擎的广泛应用 - MongoDB认知升级:非关系型数据库的优势阐述,安装与使用实战教学 - BIO/NIO/AIO网络模型对比:掌握它们的区别与在网络编程中的实际应用 - Netty带你飞:理解其超快速度背后的秘密,包括线程模型分析 - 网络通信黑科技:Netty编解码原理与常用编解码器的应用,Protostuff实战演示 - 解密Netty粘包与拆包现象,怎样有效应对这一常见问题 - 自定义Netty心跳检测机制,轻松调整检测间隔时间的艺术 - Dubbo轻骑兵介绍:核心特性概览,服务降级实战与其实现益处 - Dubbo三大神器解读:本地存根与本地伪装的实战运用与优势呈现 ----------------------- 七、结语与回顾
-
深入理解STL中的queue(队列)机制:探索队列在STL中的工作原理与应用
-
理解并运用:ViewModel的数据储存机制与工作原理 - 入门篇
-
理解三维相机与测距背后的奥秘:轻松解析3D相机测量原理笔记
-
理解数码相机的工作机制:揭示成像背后的奥秘
-
如何理解深度相机(TOF)的工作机制
-
理解相机工作原理:数码相机的成像机制详解
-
理解相机工作原理:探索照相机制作背后的奥秘
-
理解相机工作原理:图像形成背后的机制