草庐IT

相机标定基础--相关坐标系

Aria_J 2024-04-08 原文

目录

1. 相机标定的四个坐标系

1.1 世界坐标系

1.2 相机坐标系

1.3 图像平面坐标系

1.4 像素坐标系

2. 坐标系之间的转换关系

2.1 世界坐标系与相机坐标系的变换

2.2 相机坐标系与图像平面坐标系的变换

2.3 图像平面坐标系与像素坐标系的变换


1. 相机标定的四个坐标系

如图1.所示,为了能够更好的描述和计算相机标定过程中图像上的像素点与空间三维点之间的关系,首先定义了四个坐标系:世界坐标系、相机坐标系、图像平面坐标系、像素坐标系

图1. 相机标定的四个坐标系

 

1.1 世界坐标系

设置世界坐标系是为了统一描述真实三维世界中物体的位置,包括相机的位置、特征目标的位置等。在实际应用中世界坐标系是以空间中任意一点作为原点建立的笛卡尔直角三维坐标系。

1.2 相机坐标系

相机坐标系同样是笛卡尔直角坐标系。相机坐标系是空间三维信息与二维图像信息之间的关键媒介,如图1所示,原点建立在相机的光心,轴为相机光轴,方向向外。平面垂直于想相机光轴,轴平行于图像平面的横向。

1.3 图像平面坐标系

图像平面坐标系用于描述特征点在图像平面上的位置坐标,坐标单位一般为毫米。如图1所示,图像平面坐标系是在图像平面上建立二维坐标系,坐标原点为相机坐标中轴与图像平面的交点,轴、轴分别平行于相机坐标系的轴、轴。图像平面坐标系的原点与相机坐标系的原点之间的距离为相机的焦距

1.4 像素坐标系

相机采集的图像一般为二维数字图像,以像素矩阵的形式存储,每个元素为该像素的图像灰度值。图像平面坐标系用于描述图像点在图像平面的位置坐标,像素坐标系描述该点在像素矩阵中的位置。如图1所示,像素坐标系建立在图像平面上,坐标原点建立在图像平面的左上角,轴平行于图形平面坐标系的轴,轴平行于图形平面坐标系的轴。因此,坐标分别表示像素点在像素矩阵中的行和列。

2. 坐标系之间的转换关系

从空间三维点的世界坐标系到其对应的在图像平面的投影点的像素坐标之间的变换可以分为三个变换,如图2所示。

图2. 世界坐标与像素坐标之间的变换

2.1 世界坐标系与相机坐标系的变换

同为三维坐标系的世界坐标系与相机坐标系之间的变换可以使用旋转矩阵和平移矩阵进行描述。假设空间三维点的相机坐标为,则该点的世界坐标与相机坐标之间的关系可以表示为:

 其中,是旋转矩阵,的矩阵;是平移矩阵,的矩阵。

2.2 相机坐标系与图像平面坐标系的变换

图3. 相机坐标系与图像平面坐标系变换示意图

 

由于相机坐标系的轴和轴分别与图像平面坐标系的轴和轴平行,因此点的相机坐标与其对应的图像投影点的图像平面坐标之间只存在一个比例关系,此比例关系与相机焦距点的坐标有关。

点的相机坐标与其对应的投影点的图像平面坐标之间的关系为:

 其中,是比例因子,不为0。

2.3 图像平面坐标系与像素坐标系的变换

图像平面坐标系的原点是光轴在图像平面上的投影点,假设该点在像素坐标系中的坐标为。三维点对应的投影点的图像平面坐标与其像素坐标之间的关系为:

其中,是像素在图像平面坐标系的轴方向上的物理尺寸,是像素在图像平面坐标系的轴方向上的物理尺寸。

 

有关相机标定基础--相关坐标系的更多相关文章

  1. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  2. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  3. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. [工业相机] 分辨率、精度和公差之间的关系 - 2

    📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年

  6. ruby-on-rails - 在具有 ActiveRecord 条件的相关模型中按字段排序 - 2

    我正在尝试按Rails相关模型中的字段进行排序。我研究的所有解决方案都没有解决如果相关模型被另一个参数过滤?元素模型classItem相关模型:classPriority我正在使用where子句检索项目:@items=Item.where('company_id=?andapproved=?',@company.id,true).all我需要按相关表格中的“位置”列进行排序。问题在于,在优先级模型中,一个项目可能会被多家公司列出。因此,这些职位取决于他们拥有的company_id。当我显示项目时,它是针对一个公司的,按公司内的职位排序。完成此任务的正确方法是什么?感谢您的帮助。PS-我

  7. ruby - 使用指向 ruby​​ 可执行文件的符号链接(symbolic link)时查找相关库 - 2

    假设您有一个可执行文件foo.rb,其库bar.rb的布局如下:/bin/foo.rb/lib/bar.rb在foo.rb的header中放置以下要求以在bar.rb中引入功能:requireFile.dirname(__FILE__)+"../lib/bar.rb"只要对foo.rb的所有调用都是直接的,这就可以正常工作。如果你把$HOME/project和符号链接(symboliclink)foo.rb放入$HOME/usr/bin,然后__FILE__解析为$HOME/usr/bin/foo.rb,因此无法找到bar.rb关于foo.rb的目录名.我意识到像ruby​​gems这

  8. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  9. HarmonyOS原子化服务开发相关术语 - 2

    术语中文解释Ability原子化服务帮助用户完成任务的原子化服务,和用户的意图进行关联。Fulfillment服务履行通过图标,卡片,语音等形式呈现用户意图。开发者通过接口的方式,处理用户意图,返回内容。Intent意图用于表达用户想要达成的目标或完成的任务。HUAWEIAssistant智能助手“无微不智”的个人助手,通过不断的学习用户的使用习惯,不断的为用户提供贴心的精准的便捷的个性化服务。AISearch全局搜索用户可快速搜索关键词,与之匹配的原子化服务则会出现在搜索结果中。SmartService智慧服务用户订阅原子化服务,在到达特定触发条件(时间、地点、事件)后,卡片推送至用户智能助

  10. H2数据库配置及相关使用方式一站式介绍(极为详细并整理官方文档) - 2

    目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式

随机推荐