关于世界坐标系,相机坐标系,图像坐标系,像素坐标系的一些理解
关于世界坐标系,相机坐标系,图像坐标系,像素坐标系的一些理解
- 前言
- 一、各坐标系的含义
- 二、坐标系转换
- 1.世界坐标系与相机坐标系(旋转与平移)
- 2.相机坐标系与图像坐标系(透视)
- 3.图像坐标系与像素坐标系(缩放)
- 4.世界坐标系与像素坐标系
前言
在项目中,研究标定时,像素坐标与轴位置的关系时,需要用到关于坐标系的转换。在此也就是找到世界坐标系与像素坐标系的转换关系。想理清楚故做如下记录。
一、各坐标系的含义
四坐标关系图如下:

图中:
- 世界坐标系(OW—XWYWZW):
一个三维直角坐标系,以其为基准可以描述相机与待测物体的空间位置。世界坐标系可以根据实际情况自由确定,时常的会和机器运动坐标系重合。 - 相机坐标系(OC—XCYCZC):
一个三维直角坐标系,原点位于镜头的光心处,x,y分别与像面的两边平行,Z轴为镜头光轴,与像面垂直。 - 图像坐标系(O—XY)
一个二维直角坐标系,原点是光轴与像面的交点(又称主点),即图像的中心点,x,y分别与像面的两边平行。 - 像素坐标系(O1—uv)
一个二维直角坐标系,反应了相机(CCD/CMOS)芯片中像素的排列情况。原点位于图像的左上角,下x,y分别平行与像面。像素坐标与图像坐标实际是平移的关系(下面会详细描述)。像素坐标中坐标轴单位为像素。
PS:为什么要有世界坐标?
自己的理解:确定唯一且不变的世界坐标系之后,后面所有的坐标系都可以通过与世界坐标的相对关系来进行转换。此时,当我移动或者旋转世界坐标系的时候,通过相对关系可以很快速的得到其他坐标系下的数据。
二、坐标系转换
1.世界坐标系与相机坐标系(旋转与平移)
如下图示:

两个坐标系都可以通过旋转加平移来互相转换。
即有:
[XCYCZC1]=[RT01][XwYwZw1]\begin{bmatrix} X_C \cr Y_C\cr Z_C\cr 1 \end{bmatrix} = \begin{bmatrix} R&T \cr 0&1 \end{bmatrix} \begin{bmatrix} X_w \cr Y_w\cr Z_w\cr 1 \end{bmatrix} XCYCZC1=[R0T1]XwYwZw1
或者:
[XwYwZw1]=[RT01][XCYCZC1]\begin{bmatrix} X_w \cr Y_w\cr Z_w\cr 1 \end{bmatrix} = \begin{bmatrix} R&T \cr 0&1 \end{bmatrix} \begin{bmatrix} X_C \cr Y_C\cr Z_C\cr 1 \end{bmatrix} XwYwZw1=[R0T1]XCYCZC1
其中R为3×3的旋转矩阵,T为3×1的平移矩阵。
旋转矩阵R:
而旋转我们可以把它拆分成以每个轴为旋转中心进行的三次旋转调整。
如下图所示:

重合z轴,并以Z轴为旋转中心旋转,旋转角度为θ。
点P(x,y,z)为在坐标系O—XYZ中的P点坐标
点P(x’,y’,z’)为在坐标系O—X’Y’Z’中的P点坐标
所以可以有:

则有矩阵:

同理的,重合x轴并以x轴为旋转轴,旋转角φ。重合y轴并以y轴为旋转轴,旋转角ω。可以得到如下矩阵:

所以可以得到旋转矩阵R = Rθ RφRω
平移矩阵T
平移矩阵T是一个3×1的矩阵,数值分别为世界坐标系与相机坐标系的原点的差值。
故最终的转换关系为:

2.相机坐标系与图像坐标系(透视)
p与相机光心的连线op,与像面的交点就是空间点P在像平面上的投影。此时f为有效焦距则有:

3.图像坐标系与像素坐标系(缩放)
图像坐标系与像素坐标系转换是二维坐标系的转换,且两坐标系中并不存在夹角,则只存在平移与缩放操作。如下图:

其中,dx是X方向像素与距离的比例;dy是Y方向像素与距离的比例;u0是X方向的平移距离;v0是Y方向的平移距离。
4.世界坐标系与像素坐标系
综上所述可得到表达式:

外参数决定了相机的姿态。而内参数与相机的位置无关。内外参数可通过标定获取。
相关文章:
关于世界坐标系,相机坐标系,图像坐标系,像素坐标系的一些理解
关于世界坐标系,相机坐标系,图像坐标系,像素坐标系的一些理解前言一、各坐标系的含义二、坐标系转换1.世界坐标系与相机坐标系(旋转与平移)2.相机坐标系与图像坐标系(透视)3.图像坐标系与像素坐…...
企业防护ddos的注意事项,你知道吗?
DDoS,分布式拒绝服务攻击,是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。在当下,DDoS 攻击是非常常见的一种攻击方式,大…...
RocketMQ如何测试
RocketMQ如何测试MQ简介RocketMQRocketMQ测试点MQ简介 MQ:Message Queue,即消息队列,是一种应用程序之间的消息通信,简单理解就是A服务不断的往队列里发布信息,另一服务B从队列中读取消息并执行处理,消息发…...
SpringBoot中的bean注入方式和原理介绍
Spring Boot是一个非常流行的Java框架,它可以帮助开发者快速地构建高效、健壮的应用程序。其中一个重要的功能就是依赖注入,也就是将一个对象注入到另一个对象中,以便它们可以相互协作。在Spring Boot中,依赖注入是通过bean实现的…...
ESP32设备驱动-RFID-RC522模块驱动
RFID-RC522模块驱动 文章目录 RFID-RC522模块驱动1、RFID-RC522介绍2、硬件准备3、软件准备4、驱动实现1、RFID-RC522介绍 基于 NXP 的 MFRC522 IC 的 RC522 RFID 模块通常带有一个 RFID 卡标签和具有 1KB 内存的密钥卡标签。 最重要的是,它可以写一个标签,这样你就可以在里…...
SMETA认证有些客户是需要做窗口期的
【SMETA认证有些客户是需要做窗口期的】SMETA审核是常见的社会责任审核标准之一,中文全称为“Sedex 会员道德贸易审核”,英文为“Sedex Members Ethical Trade Audit”. SEDEX 官网:网页链接Sedex 作为目前市场流行的CSR审核标准,…...
面向对象设计模式:创建型模式之原型模式
文章目录一、引入二、代理模式,Prototype Pattern2.1 Intent 意图2.2 Applicability 适用性2.3 类图2.4 应用实例:使用下划线或消息框展示字符串2.4 应用实例:JDK java.lang.Object java.lang.Cloneable一、引入 二、代理模式,Pr…...
三维重建(单目、双目、多目、点云、SFM、SLAM)
1 相机几何与标定1.1 相机模型中的坐标系1.2 四种坐标系之间的转换1.3 相机内参1.4 相机标定2 单目三维重建2.1 NeuralRecon三维重建定义 在计算机视觉中, 三维重建是指根据单视图或者多视图的图像重建三维信息的过程. 由于单视频的信息不完全,因此三维重建需要利用经验知识. 而…...
Java中的final和权限修饰符
目录 final 常量 细节: 权限修饰符 Java权限修饰符用于控制类、方法、变量的访问范围。Java中有四种权限修饰符: 权限修饰符的使用场景: final 方法 表明该方法是最终方法,不能被重写。类 表明该类是最终类,不能被继…...
MySQL的基本语句(SELECT型)
基本MySQL语句SELECTSELECT FROM 列的别名去除重复行空值着重号算术运算符加法( )减法( - )乘法( * )除法( / 或DIV)求模( % 或MOD)比较运算符等于( )安全等于( <> )不等于( ! 或 <…...
日志服务搭建-ES-FileBeat-Kibana
1次订单量突增问题,导致了有几个数据没有录库,但是确有支付的记录,啥玩意,还能有这个操作,组内安排问题定位,解决,一看打出来的日志,只有支付有,生成订单这边没有&#x…...
大数据架构设计与数据计算流程
大数据架构设计Hadoop有3个核心组件:分布式文件系统HDFS;分布式运算编程框架MapReduce;分布式资源调度平台YARN。HBase,Hadoop dataBase,基于HDFS的NoSQL数据库,面向列式的内存存储,定期将内存数…...
207. 课程表
207. 课程表https://leetcode.cn/problems/course-schedule/ 难度中等1526 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] [a…...
2023-03-08 mysql列存储数据库-查询执行过程分析
摘要: 在mysql的sql层和存储引擎的交互模式中, 存储引擎实现handler接口, 由SQL层负责调用接口, 所以执行的过程可以看作是在sql层中, innodb仅提供接口。 但是在mysql列存储引擎中, TMD直接替换掉了sql层的执行接口,并且将sql层的查询树转换成了自己的一套查询树, 然后根据…...
各种激活函数的计算公式、图像以及实现代码
激活函数已经成为神经网络中非常重要的一部分,随着各种类型的神经网络模型被人们开发出来,各种激活函数也应运而生,在不同的场景中,取得良好的效果。本文跟据著名的YOLO系列目标检测模型的源码 AlexeyAB Darknet,整理出…...
ArangoDB
介绍 ArangoDB 是一个原生的多模型开源数据库,具有灵活的文档、图形和键值数据模型。使用方便的类似 SQL 的查询语言或 JavaScript 扩展构建高性能应用程序。主要特点 在集群上安装 ArangoDB —— 安装简单灵活的数据建模:数据建模为键值对、文档或图表的…...
MySQL8.0Linux安装及主从的搭建
MySQL8.0Linux安装教程 下载并安装 需要说明的一点是我使用的是SSH secure shell Client连接linux系统的,它的用法和命令窗口差不多。界面如图:一样的使用Linux命令操作。 话不多说 第一步: 1)、切换到 /usr/local下 cd /usr/…...
苹果新专利实现无线技术传输睡眠数据,蓝牙在智能家居中的应用
苹果于 2017 年 5 月收购了芬兰科技公司 Beddit,只是在过去 6 年时间里并没有太大的动作。根据美国商标和专利局本周公示的清单,苹果获得了一项 Beddit 相关的技术专利。 根据专利描述,苹果使用一根或者多根天线,利用电磁辐射的…...
银行数字化转型导师坚鹏:数字化转型为什么需要致良知与知行合一
在银行数字化转型过程中,特别需要致良知与知行合一哲学思想的指导。 知中有行,行中有知;行极而知,知极而行;知行无端,知行无始。知与行是一件事,做事与培养本体(修心)也是…...
Web前端学习:章三 -- JavaScript预热(二)
六五:作用域与function function:函数,不是数学上的函数,与写代码有关 JS中的函数:运用它,起个名字,然后对函数进行调用,即可将函数中的内容执行一遍 1、function 最基本的作用域…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
SQL注入篇-sqlmap的配置和使用
在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…...
