世界坐标系、相机坐标系和图像坐标系的转换

news2025/1/12 3:44:01

本文转载于:https://blog.csdn.net/weixin_38842821/article/details/125933604?spm=1001.2014.3001.5506

1. 世界坐标

世界坐标系是一个特殊坐标系,它建立了描述其他坐标系需要的参考框架。能够用世界坐标系描述其他坐标系的位置,而不能用更大的、外部的坐标系描述世界坐标系。从非技术意义上讲,世界坐标系建立的是我们所关心的最大坐标系,而不必真的是整个世界。用 (Xw​,Yw​,Zw​)来表示,世界坐标系可通过旋转和平移得到相机坐标系。

2.相机坐标

以相机透镜的几何中心(光心)为原点,坐标系满足右手法则,用(Xc​,Yc​,Zc​)来表示;相机光轴为坐标系的Z轴,X轴水平,Y轴竖直。

3. 图像物理坐标系

以CCD图像的中心为原点,坐标由 ( x , y ) (x, y) (x,y) 表示,图像坐标系的单位,一般是毫米,坐标原点为相机光轴与成像平面的交点(一般情况下,这个交点是接近于图像的正中心)
CCD,英文全称:Charge coupled Device,中文全称:电荷耦合元件,可以称为CCD图像传感器。CCD是一种半导体器件,能够把光学影像转化为数字信号。 CCD上植入的微小光敏物质称作像素(Pixel)。一块CCD上包含的像素数越多,其提供的画面分辨率也就越高。

4. 图像像素坐标系

其实,当我们提及一个图像时,通常指的是图像的像素坐标系。像素坐标系的原点在左上角,并且单位为像素。
将图像坐标系的原点 O1​ ,转化到以O0​ 为原点的坐标系中。使用的原因:
如果使用图像坐标系,单位mm,其实不太好衡量具体的图像,如果按照统一的像素标准,比较容易衡量图像的质量
如果使用图像坐标系,然后就有四个象限,这样会有正负数的问题,但是转换成像素坐标系后,都为整数。在后续的操作和运算中,都简化很多。

5.坐标转换

针孔模型(The basic pinhole model)。这种模型在数学上是三维空间到二维平面(image plane or focal plane)的中心投影,由一个3×4 投影矩阵 P=K[R∣t]来描述, K 为相机内参(internal camera parameters), [R∣t]为外参(external parameters)。

6. 世界坐标 → 相机坐标(刚性变换)

Xc​,Yc​,Zc​代表相机坐标; Xw​,Yw​,Zw​代表世界坐标;R代表正交单位旋转矩阵,t代表三维平移矢量。
根据旋转角度可以分别得三个方向上的旋转矩阵,而旋转矩阵即为他们的乘积: R=Rx​∗Ry​∗Rz​
顺便记录一下三个旋转矩阵的公式,经常忘记。

7. 相机坐标 → 图像坐标系(中心投影)

相机坐标系到图像坐标系是透视关系,利用相似三角形进行计算。

写成齐次坐标形式的矩阵相乘为
其中f代表焦距,即相机坐标系和图像坐标系在Z轴上的差。此时投影点p的单位还是mm,并不是pixel,不方便进行后续运算。

8. 图像坐标系 → 像素坐标系(离散化)

像素坐标系的原点在左上角,并且单位为像素。像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样。图像坐标系的原点为相机光轴与成像平面的交点,通常情况下是成像平面的中点或者叫principal point。图像坐标系的单位是mm,属于物理单位,而像素坐标系的单位是pixel,我们平常描述一个像素点都是几行几列。所以这二者之间的转换如下:其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel=dx mm


9. 世界坐标转像素坐标合起来就是

这是我见过最清晰的几个坐标系转换关系了。所以手动保留一份

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

stack、queue和priority_queue的使用介绍--C++

一、stack介绍 1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组…

YOLOv5 更换Neck之 BiFPN:如何替换YOLOv5的Neck实现更强的检测能力?

目录 一、BiFPN是什么?1、什么是BiFPN2、BiFPN的优势 二、为什么要用BiFPN替换YOLOv5的Neck?1、YOLOv5原有的Neck存在的问题2、BiFPN的适用场景 三、如何在YOLOv5中实现BiFPN1、下载并替换BiFPN代码2、修改配置文件3、遇到的问题及解决方法 四、BiFPN超参…

IronOCR 2023.4.13 Crack

IronOCR能够允许用户软件工程师直接从图片中读取文本文章,以及从.NET的程序和互联网网站中读取PDF。从扫描的图像中读取文本和条形码,能够支持多种外语,并且输出为纯文本甚至信息结构。IronOCR库能够供用户在互联网游戏控制台中使用。MVC&…

PyQt6: 多网卡适配器的选择与显示(GPT4帮写)

PyQt6: 多网卡适配器的选择与显示 1. 背景2. Python获取本机网卡适配器信息3. PyQT6 UI显示网卡信息4. PyQT6 后台处理:ButtonComboBox 附:GPT Output:博主热门文章推荐: (本文部分文案由ChatGPT生成,但代码…

企企通:为什么成长型企业,需要SaaS采购管理平台?

根据艾瑞咨询发布的《2022年中国企业级SaaS行业研究报告》,未来三年SaaS行业的增长也将与宏观经济恢复速度相挂钩,在中性预期下,到2024年中国企业级SaaS市场规模将有望达到1201亿元。 由于SaaS和云模式出现,采购角色在慢慢发生了变…

perf record对C++程序耗时进行分析

本节将介绍如何使用perf工具的perf record对C代码进行性能分析,一切操作都是在ubuntu 20下进行。 perf工具安装 由于perf工具和内核版本有关,因此直接安装容易出错,建议直接通过如下指令安装: sudo apt-get install linux-tool…

【Access】Access:SQL 语句汇总

目录 一、SQL 的功能 二、考试重点 三、关系的定义 (1)新建关系 (2)删除关系 四、SQL 的「数据查询」功能 (1)基本结构 ① Select 语句的基本结构 ② Select 子句 ③ Where 子句 ④ 空值的处…

HTB-TheNotebook

HTB-TheNotebook 信息收集80端口JWT攻击 立足www-data -> noahnoah -> root 信息收集 80端口 存在一个登录和注册用户业务。先看看登录业务,在登录中如果我输入不存在的用户就会出现: Login Failed! Reason: User doesn’t exist. 如果是存在的用…

Value for SWIFT_VERSION cannot be empty错误解决

出错: 解决方法: 选择后 重新编译成功

【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 42页论文及代码

【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 42页论文及代码 相关链接 【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 详细建模方案及代码实现 1 题目 列车时刻表优化问题是轨道交通…

​力扣解法汇总1376. 通知所有员工所需的时间

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从…

【五一创作】【笔记】Git|如何将仓库中所有的 commit 合成一个?又名,如何清除所有 git 提交记录?(附 git rebase 机制的简要分析)

在对代码进行开源时,我们往往并不希望代码开发过程中的提交记录被其他人看到,因为提交的过程中往往会涵盖一些敏感信息。因此会存在 将仓库中所有 commit 合成一个 的需求。 直觉上,往往会用 rebase 和 squash 或 reset,不过我尝…

【Unity-UGUI控件全面解析】| Button 按钮组件详解

🎬【Unity-UGUI控件全面解析】| Button 按钮组件详解一、组件介绍二、组件属性面板2.1 Transition 类型三、代码操作组件四、组件常用方法示例4.1 监听点击事件4.2 按钮过度动画示例💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首…

JavaWeb——JavaScript

定义: js引入方式(两种方式) js基础语法 输出语句 变量 var的变量特点1:作用域大,是全局变量 var的变量特点2:可以重复声明 ES6最新增的关键字 数据类型,运算符,流程控制语句 js中也有着类似java的8大基本数据类…

企业级信息系统开发讲课笔记3.3 基于XML配置方式SSM框架西蒙购物网

文章目录 零、本节学习目标一、网站功能需求二、网站设计思路(一)设计模式(二)网站前台(三)网站后台1、用户管理2、类别管理3、商品管理4、订单管理 (四)购物流程图 三、网站运行效果…

Iron Web Scraper 2023.4.13 Crack

Iron Web Scraper 被认为是 C# 的互联网抓取库,它能够让用户和开发者激发和最终的个人浏览行为,以提取文件、内容甚至图片和应用程序。动词作为 .NET 的本机项。IronWebScraper 具有从后台处理礼貌和多线程进程的能力,这使得用户程序很容易简…

FreeRTOS 任务通知

文章目录 一、任务通知简介二、发送任务通知1. 函数 xTaskNotify()2. 函数 xTaskNotifyFromISR()3. 函数 xTaskNotifyGive()4. 函数 vTaskNotifyGiveFromISR()5. 函数 xTaskNotifyAndQuery()6. 函数 xTaskNotifyAndQueryFromISR() 三、任务通知通用发送函数1. 任务级任务通知通…

一、环境搭建

一、创建新的环境空间 conda create -n yanyu python3.7.4 yanyu为新的环境空间名称,可自定义修改 conda activate yanyu 切换一下环境空间 二、安装sklearn并验证 安装相关包 pip install numpy pip install scipy pip install matplotlib pip install sklear…

Python小姿势 - Python面向对象

Python面向对象 Python是一种面向对象的编程语言,它能够把很复杂的事情简单化。面向对象最大的特点就是数据和对数据的操作分离开了。 举个例子,假设你要做一个学生成绩管理系统,在这个系统里,你需要存储每个学生的姓名、年龄、成…

【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 42页论文及代码

【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 42页论文及代码 相关信息 【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 详细建模过程解析及代码实现 1 题目 在银行信用…