【目标解算】相机内外参数详细解读+坐标系转换

一、相机参数介绍

1.1 相机内参矩阵

概念:内参矩阵用于描述相机的内部参数,它包含了相机的焦距、主点坐标和图像的畸变等信息。内参矩阵的形式通常为一个3x3的矩阵,常用表示为K。内参矩阵可以将相机坐标系中的三维点映射到图像平面上的二维像素坐标。通过内参矩阵,我们可以进行相机标定、图像校正和三维点云到图像的投影等操作。
标定后的相机内参矩阵为3x3矩阵:在这里插入图片描述
在这里插入图片描述

相机标定参照:【鱼眼+普通相机】相机标定。

1.2 相机畸变矩阵

普通工业相机畸变矩阵为1x5矩阵:在这里插入图片描述
在这里插入图片描述

1.3 相机外参矩阵

外参矩阵用于描述相机的外部参数,它包含了相机的位置和朝向信息。外参矩阵定义了世界坐标系到相机坐标系的转换关系。外参矩阵的形式通常为一个4x4的矩阵,常用表示为[ R | t ],其中 R 表示旋转矩阵,t 表示平移向量。通过外参矩阵,我们可以将世界坐标系中的三维点转换到相机坐标系,或者将相机坐标系中的三维点转换到世界坐标系。
在这里插入图片描述
旋转矩阵性质:

  • 旋转矩阵是正交矩阵,即它的逆矩阵等于其转置矩阵。
  • 旋转不会改变物体的形状或大小,只会改变其方向。
  • 在实际应用中,旋转矩阵通常与平移向量一起使用,以描述物体在空间中的完整运动。

二 、坐标系介绍

2.1 相机坐标系{camera}:

坐标原点为相机的光心位置,X 轴和Y 轴分别平行于图像坐标系的X轴和 Y 轴,Z 轴为相机的光轴。相机坐标系中的点,用在这里插入图片描述表示。

2.2 图像物理坐标系:

坐标原点为CCD 图像平面的中心,X轴和Y 轴分别平行于图像平面的两条垂直边。图像物理坐标系中的点,用在这里插入图片描述表示。图像物理坐标系是用物理单位(例如毫米)表示像素在图像中的位置。

2.3 图像像素坐标系{image}:

坐标原点为图像平面的左上角顶点,X 轴和Y 轴分别平行于图像物理坐标系的 X 轴和Y 轴。图像像素坐标系中的点,用在这里插入图片描述表示。像素坐标系就是以像素为单位的图像坐标系。

2.4 世界坐标系(world coordinate):

也称为测量坐标系,是一个三维直角坐标系,以其为基准可以描述相机和待测物体的空间位置。世界坐标系的位置可以根据实际情况自由确定。
坐标原点为目标中心点位置,X轴水平向右,Y轴指向地面,Z轴与光轴方向平行。坐标系中的点,用 在这里插入图片描述表示。

2.5 Ground坐标系 :

在世界坐标系中, Yw = 0 的平面。

三、坐标系转换公式

3.1 相机坐标系 -> 图像像素坐标系:

在这里插入图片描述
式中,

  • u和v是图像坐标系中点的x轴和y轴像素坐标,其原点是图像的左上角顶点,x轴朝右、y轴朝下是正方向。
  • Zc是在相机坐标系下的Z轴坐标,也即深度。
  • fx和fy分别是x轴和y轴像素焦距 (单位为pixel)。
  • Cx和Cy是图像的中心点o1(相机坐标系的光心在图像上成像的点)的像素坐标(以图像左上角顶点作为原点)。

3.2 世界坐标系 -> 相机坐标系:

在这里插入图片描述
式中,

  • 将点[Xw Yw Zw]从世界坐标系通过刚体变换(旋转和平移)变换到相机坐标系,这个变换过程使用的是相机间的相对位姿,也就是相机的外参数。
  • 旋转矩阵为R,平移向量为t。

3.3 世界坐标系 -> 图像像素坐标系

即前两个转换公式合并。
在这里插入图片描述

3.4 相机坐标系 -> 图像物理坐标系:

在这里插入图片描述
即: 在这里插入图片描述

3.5 图像物理坐标系 -> 图像像素坐标系

在这里插入图片描述
式中,

  • u和v是图像坐标系中点的x轴和y轴像素坐标,其原点是图像的左上角顶点,x轴朝右、y轴朝下是正方向。
  • cx和cy是图像的中心点o1(相机坐标系的光心在图像上成像的点)的像素坐标(以图像左上角顶点作为原点)。

以上公式已经验证,如有错误还请批评指正。

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

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

相关文章

C++设计模式之策略模式、迭代器模式、适配器模式、工厂模式、超级工厂模式、享元模式、代理模式

文章目录 一、介绍1.毫无价值的使用虚函数例子 二、策略模式1.策略模式2.多重策略与迭代器模式3.不要什么东西都塞一块 三、适配器模式1.跨接口的适配器2.跨接口的适配器 四、工厂模式1.工厂模式2.超级工厂模式3.RAII 自动管理内存4.工厂模式实战 五、享元模式1.享元模式2.代理…

linux安装mysql后,配置mysql,并连接navicat软件

Xshell连接登陆服务器 输入全局命令 mysql -u root -p 回车后,输入密码,不显示输入的密码 注意mysql服务状态,是否运行等 修改配置文件my.cnf,这里没找到就找my.ini,指定有一个是对的 find / -name my.cnf 接下…

GPT-4你了解多少呢

一、引言 在人工智能(AI)领域,自然语言处理(NLP)技术一直备受关注。近年来,随着深度学习技术的飞速发展,NLP领域也取得了显著进步。GPT-4,作为OpenAI公司最新发布的自然语言处理模型…

bochs 调试基本指令大全

bochs 调试基本指令大全 功能 指令 举例 在某物理地址设置断点 b addr b 0x90000 运行到断点位置 c c 单步运行(遇到函数则进入) s s 单步运行(遇到函数则跳过) n n 继续运行上调指令 回车 回…

liunx进程和计划任务管理

文章目录 一、进程特殊情况 二、查看进程2.1进程查看2.2补充说明 三、进程管理3.1运维的指标五大负载 3.2定时任务、计划任务 一、进程 进程管理 相当于任务管理器 进程就是运行起来的代码 线程:线程相当于复制了进程的部分代码,程序运行起来之后&…

2024-03-23青少年软件编程(Python语言)等考(五级)解析

2024-03-23青少年软件编程(Python语言)等考(五级)解析一、单选题(共25题,共50分) 1.以下代码的输出结果是?( A ) nums = list(range(100, 201)) print(nums[::10]) A.[100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200] B.[100, 101, 102, 103, 104, 105, 106…

京东二面:为什么Netty要造FastThreadLocal?

FastThreadLocal 从字面意义上来看,它是“Fast”“ThreadLocal”的结合体,寓意为快速的 ThreadLocal。那么,问题来了,Netty 为什么要再造一个 FastThreadLocal?FastThreadLocal 运行快的原因是啥?除了快之外…

linnux上安装php zip(ZipArchive)、libzip扩展

安装顺序: 安装zip(ZipArchive),需要先安装libzip扩展 安装libzip,需要先安装cmake 按照cmake、libzip、zip的先后顺序安装 下面的命令都是Linux命令 1、安装cmake 确认是否已安装 cmake --version cmake官网 未安装…

项目十 网络服务器搭建及应用

文章目录 Samba1.配置yum源2.安装samba服务和客户端3.添加用户4.修改访问控制权限,使samba指定的目录可以正常访问5.修改samba配置参数6.启动samba服务7.查看samba运行情况8.通过外部服务器访问 I know, i know 地球另一端有你陪我 Samba 1.配置yum源 mkdi…

【Paddle】稀疏计算的使用指南 稀疏ResNet的学习心得 (2) + Paddle3D应用实例稀疏 ResNet代码解读 (1.6w字超详细)

【Paddle】稀疏计算的使用指南 & 稀疏ResNet的学习心得 Paddle3D应用实例稀疏 ResNet代码解读 写在最前面一、稀疏格式简介1. COO(Coordinate Format)2. CSR(Compressed Sparse Row Format) 二、Paddle稀疏张量支持1. 创建 C…

SQL刷题笔记day6——转战LeetCode

1 第二高的薪水 ​ 我的代码: SELECT Salary SecondHighestSalary FROM Employee ORDER BY Salary DESC LIMIT 1, 1 我的代码不满足示例2的情况:如果没有第 2 高的薪资,即表里可能只有一条记录,这个解答会被评测为 Wrong Answ…

整理了六个正规靠谱的兼职赚钱软件,适合普通人做的兼职副业~

​随着互联网时代的到来,越来越多的人选择通过互联网赚钱。在这篇文章中,我们将探讨一些可以在网上长期赚钱的方法。 在网络上面其实有很多的赚钱方法,尽管方法很多,但是对于一些网络新手,刚进入互联网圈子不久的伙伴…

智慧校园建设的重要性有哪些

在21世纪的数字化浪潮中,教育领域正经历一场深刻的变革。智慧校园,这一概念如同一股清风,席卷全球的高等教育机构,以其创新的科技应用和教育理念,重塑着学习的未来。面对信息时代的挑战,传统校园模式是否还…

html+CSS部分基础运用9

项目1 参会注册表 1.设计参会注册表页面,效果如图9-1所示。 图9-1 参会注册表页面 项目2 设计《大学生暑期社会实践调查问卷》 1.设计“大学生暑期社会实践调查问卷”页面,如图9-2所示。 图9-2 大学生暑期社会调查表页面 2.调查表前导语的…

Win11有些exe双击后无反应的解决办法

现象 双击某些exe文件之后,小圆圈转了两下之后就消失,然后没任何反应。用回车反复启动也是一样的现象。 由于截图没法截图到鼠标,所以没法放出截图。 我电脑出现上述现象的软件有: 1.纸飞机调试助手 2.SOC Programming Tool 对…

torch-cuda版本安装

在gpu机器上 torch.cuda.device_count() 0 是什么原因呢 没有安装torch的GPU版本,无法将模型或数据提交到gpu上训练。 cuda_available torch.cuda.is_available() print("Is CUDA available:", cuda_available) # 输出为Falsedevice_count torch.cud…

3.4 移动机器人工作空间(摘自自主移动机器人导论2)

对于一个机器人来说,机动性等效于它的控制自由度。但是,机器人是处于某种环境的,因而下一个问题是把我们的分析放到环境之中。 我们关心机器人用它可控制的自由度在环境中定位它本身的方法。例如,考虑 Ackerman 车辆或汽车&#…

《深入C++11 代码优化与工程应用》勘误表(二)

第4章 1. 书中做了个包装函数&#xff0c;p是第三方库返回的裸指针。此包装函数为了用智能指针包裹以起到自动释放堆内存的目的。但是代码中lambda捕获的this指针只能在类中使用&#xff0c;否则编译报错&#xff1a; void* p GetHandle()->Create();shared_ptr<void&…

Pyhton 二叉树层级遍历

class TreeNode:def __init__(self, val0, leftNone, rightNone):self.val valself.left leftself.right rightclass Solution:def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:res []# 空节点&#xff0c;直接返回if not root:return resque [roo…

Docker容器快速入门(1)

目录 1.Docker 简介 2.跟普通虚拟机的对比 2.打包、分发、部署 Docker主要理念&#xff1a;一次封装&#xff08;打包&#xff09;随处运行&#xff08;部署&#xff09; 4.Docker 部署的优势 5.Docker 通常用来做什么 6.重要概念&#xff1a;镜像、容器、仓库 Docker 官方…