相机标定——小孔成像、相机模型与坐标系

小孔成像

用一个带有小孔的板遮挡在墙体与物之间,墙体上就会形成物的倒影,我们把这样的现象叫小孔成像。

用一个带有小孔的板遮挡在墙体与物之间,墙体上就会形成物的倒影,我们把这样的现象叫小孔成像。前后移动中间的板,墙体上像的大小也会随之发生变化,这种现象说明了光沿直线传播的性质。

在照相机被发明之前,人们就已经开始利用“小孔成像”原理制造各类光学成像装置,这种装置被称为“Camera obscura(暗箱)”。 19世纪上半叶,人们终于找到了固定保存暗箱中投影面上光学图像的方法与介质,照相机工业由此发展,因此Camera obscura被认为是照相机的祖先;而“Camera”则成了照相机的英文名称。

1839 年法国画家达盖尔根据小孔成像的原理发明了被称为“西洋镜”的世界第一台照相机。 不过当时的相机令现代人无法想象,暗箱大得像个小房子,拍摄时间至少三十分钟,以至于不得不将被摄的人头部固定在事先预制好的卡箍里,而且得到的只是一张笨重的铜版正像。 当时有报社记者评述:“就像在马路上拿着一面镜子,周围的景物极细地反映出来,然后把镜子带回家。”

现代照相机和摄影机也是利用了小孔成像的原理——镜头是小孔(大多数安装凸透镜以保证光线成像距离),景物通过小孔进入暗室,影像被一些特殊的化学物质(如显影剂等)留在胶片上。 数码相机、摄影机等则是将影像通过感光元件转换为数字信号(数码格式)存储在存储卡内。

其实,人类的视觉系统也是小孔成像的原理。只不过视觉系统的复杂度是相机系统的成千上万倍。

小孔成像模型

在这里插入图片描述

上图是最原汁原味的小孔成像原理图,它描述的是三维空间中的点到图像平面(image plane)上的投影。

在实际的实现和应用中,为了表达的方便,通常会将图像平面放在小孔和三维场景之间。如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里介绍几个概念:

  • 光轴:像极坐标系的Z轴
  • 光心:光轴中心点,即上图中的O点
  • 主点:光轴与图像平面的交点Principal Point
  • 焦距:光心到图像平面的距离Focal Length

四个坐标系

为了数学表达的方便,通常以光心为原点,建立一个图像坐标系。下图详细的描述了这些关系。

在这里插入图片描述

世界坐标系: O w − X w Y w Z w O_w−X_wY_wZ_w OwXwYwZw 单位m

世界坐标系(world coordinate),也称为测量坐标系,是一个三维直角坐标系,以其为基准可以描述相机和待测物体的空间位置。世界坐标系的位置可以根据实际情况自由确定。

相机坐标系: O c − X c Y c Z c O_c−X_cY_cZ_c OcXcYcZc 单位m

相机坐标系(camera coordinate),也是一个三维直角坐标系,原点位于镜头光心处,x、y轴分别与相面的两边平行,z轴为镜头光轴,与像平面垂直。

像素坐标系: O u v − u v O_{uv}−uv Ouvuv 单位像素pixel(整数)

像素坐标系(pixel coordinate),二维直角坐标系,反映了相机CCD/CMOS芯片中像素的排列情况。原点ouv位于图像的左上角,u轴、v轴分别于像面的两边平行。像素坐标系中坐标轴的单位是像素pixel(整数)
几乎所有的图像,像素坐标都如下图所示:
在这里插入图片描述
即:像素原点在图像的左上角,横坐标值表示列数c,通常以u表示;纵坐标值表示行数r,通常以v表示。

图像坐标系: O x y − x y O_{xy}−xy Oxyxy 单位mm

图像坐标系(image coordinate),由于像素坐标系不利于坐标变换,因此需要建立图像坐标系oxy,其坐标轴的单位为毫米(mm),原点是相机光轴与相面的交点(称为主点Principal Point),即图像的中心点,x轴、y轴分别与u轴、v轴平行。故两个坐标系实际是平移关系,即可以通过平移就可得到。
如下图:(u0,v0) 为图像坐标系中心O在像素坐标系下的位置表示。
在这里插入图片描述

点在各个坐标系的表达:

在这里插入图片描述

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

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

相关文章

Docker 常规安装简介

Docker常规安装简介 欢迎关注我的B站:https://space.bilibili.com/379384819 1. 安装mysql 1.1 docker hub上面查找mysql镜像 网址: https://hub.docker.com/_/mysql 1.2 从docker hub上(阿里云加速器)拉取mysql镜像到本地标…

Redis远程字典服务器(0)——分布式系统

目录 一,关于Redis 二,分布式系统 2.1 关于分布式 2.2 理解数据库分离 2.3 理解负载均衡 2.4 数据库读写分离 2.5 引入缓存 2.6 数据库分库分表 2.7 微服务 四,补充 五,总结 一,关于Redis MySQL是在磁盘中存…

分类预测 | Matlab实现PSO-XGBoost粒子群算法优化XGBoost的多特征分类预测

分类预测 | Matlab实现PSO-XGBoost粒子群算法优化XGBoost的多特征分类预测 目录 分类预测 | Matlab实现PSO-XGBoost粒子群算法优化XGBoost的多特征分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现PSO-XGBoost粒子群算法优化XGBoost的多特征分类预测&a…

英特尔:“芯”痛巨头

从全球芯片巨头到“芯”痛巨头, 英特尔 到底经历了什么? 今天券商中国说英特尔在QDII基金上这么多年,一直就没能进入主流持仓中,最后一只试探性持仓英特尔的QDII也已在今年3月末砍仓了, 这一砍还让这只QDII完美躲过…

医得快医疗服务交易服务平台/基于微信小程序的药品销售系统

获取源码联系方式请查看文章结尾🍅 摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而…

【中间件】Redis从入门到精通-黑马点评综合实战

文章目录 一:Redis基础1.Redis是什么2.初识Redis3.Redis的数据结构A.通用命令B.String类型C.Key的层级格式D.Hash类型E.List类型F.Set类型G.SortedSet类型 二:Redis的Java客户端1.JedisA.引入依赖B.建立连接C.测试JedisD.释放资源 2.Jedis连接池3.Spring…

如何通过GD32 MCU内部ADC参考电压通道提高采样精度?

ADC采样精度受很多因素影响,比如电源波动、参考电压波动、输入信号波动等,GD32 MCU内部提供了一个参考电压通道,理论上可以优化由于电源和参考电压较大波动引入的采样误差。 如下图所示,GD32F303 ADC内部17通道为VREFINT参考电压…

密码学基础-为什么使用真随机数(True Random Number Generators)

密码学基础-为什么使用真随机数(True Random Number Generators) 概述 随机的意义很重要,就像你的银行密码如果是亲朋好友的生日,结婚纪念日(可预测的),那么就容易被人测试出来;而…

从零开始学习性能测试

学习目标 理解性能测试定义、目的理解常见性能测试策略理解性能指标理解性能测试方法学习性能测试工具 什么是性能测试 测试中的非功能测试其实范围比较广,性能、稳定性、安全性等都可以放进这个范畴。非功能测试,一般比功能测试门槛高些,多数…

深入理解计算机系统 CSAPP lab:bomb

实验资源下载地址:csapp.cs.cmu.edu/3e/labs.html 请先查看writeup 解压后 当我们运行bomb时,发现该程序要求我们输入行,如果输入错误,程序就会返回BOOM!!!提示我们失败了. 所以我们的目标是输入正确的行.以解开bomb程序. 实验前先详细阅读bomb.c //bomb.c /*****…

计算机系统基础(一)

开始复习了软考软件设计师还有考研复习了,这个重合部分比较大,开始学习打卡,基础最重要,直接看书又多又杂,重点理不出来,学习记录。 计算机系统基础 冯诺依曼体系结构奠定了计算机的基础结构。五个部分组成…

认识Modbus RTU与Modbus TCP

(选自成都纵横智控-Modbus RTU与Modbus TCP协议区别详解 ) Modbus RTU 和 Modbus TCP 是两种常用的工业通信协议,用于连接电子设备,但它们在多方面有所不同。以下是它们的详细比较: Modbus RTU 协议类型: …

Flink 实时数仓(九)【DWS 层搭建(三)交易域汇总表创建】

前言 今天立秋,任务是完成 DWS 剩余的表,不知道今天能不能做完,欲速则不达,学不完就明天继续,尽量搞懂每一个需求; 1、交易域下单各窗口汇总表 任务:从 Kafka 订单明细主题读取数据&#xff0…

SpringBoot中使用过滤器filter

过滤器Filter 在 Java 中,Filter(过滤器)是一种用于对请求进行预处理和后处理的机制。 工作原理: 当一个请求到达服务器时,会先经过一系列配置好的过滤器。过滤器可以检查请求的参数、头信息、请求体等内容&#xf…

【ARM】v8架构programmer guide(3)_ARMv8的寄存器

目录 4.ARMv8 registers 4.1 AArch64 特殊寄存器 4.1.1 Zero register 4.1.2 Stack pointer (SP) 4.1.3 Program Counter (PC) 4.1.4 Exception Link Register(ELR) 4.1.5 Saved Process Status Register (SPSR) 4.2 Proc…

PythonStudio 控件使用常用方式(十三)TScrollBox

PythonStudio是一个极强的开发Python的IDE工具,它使用的是Delphi的控件,常用的内容是与Delphi一致的。但是相关文档并一定完整。现在我试试能否逐步把它的控件常用用法写一点点,也作为PythonStudio的参考。 从1.2.1版开始,Python…

mac 2k显示器 配置

前言 今年5月份买了一个2k显示器,刚收到的时候发现只有一个1080 x 720(HiDPI)分辨率是人眼看起来比较舒服的,于是一直用着。但是直到开始写前端代码的时候,我才发现,网页在2k显示器和内建显示器的布局竟然…

Go语言中gin+gorm开发前端端分离博客时遇到的问题,gorm执行查询时如何选中特定字段?

代码获取 本篇文章的代码放在了Github上,可以免费获取。 https://github.com/zhangdapeng520/zdpgo_gin_examples 概述 在查询用户信息的时候,由于密码这个字段比较敏感,需要进行处理,不要返回给前端。 我一开始的解决方案是直…

SpringBoot+Mybatis 分页

无论多数据源,还是单数据源,分页都一样,刚开始出了点错,是因为PageHelper的版本问题 这里用的SpringBoot3 SpringBoot2应该是没有问题的 相关代码 dynamic-datasourceMybatis多数据源使用-CSDN博客 依赖 <?xml version"1.0" encoding"UTF-8"?&g…

CocosCreator使用 ProtoBuf WebSocket与服务器对接方法

在 Cocos Creator 中使用 .proto 文件和转换成 TypeScript&#xff08;TS&#xff09;两者各有其优缺点&#xff0c;具体选择取决于你的项目需求和团队的开发习惯。以下是两者的一些比较&#xff1a; 1、使用 .proto 文件的优点&#xff1a; 跨语言支持&#xff1a;Protocol B…