相机坐标系的正向投影和反向投影

2023-10-26

1 、正向投影: 世界坐标系到像素坐标系

世界3D坐标系(x, y, z) 到图像像素坐标(u,v)的映射过程

(1)世界坐标系相机坐标系的映射。

两个坐标系的转换比较简单,就是旋转矩阵 + 平移矩阵,旋转矩阵则是绕X, Y,Z 轴旋转获得。
R 属于世界坐标系到相机坐标系的旋转矩阵, 旋转矩阵为R = R(z) * R(y) * R(x),
具体根据相机外参标定时规定的旋转方向来定,为 3 × 3 矩。
t 为世界坐标系原点到相机坐标系原点的平移矩阵,为3 x 1 矩阵。
世界坐标到相机坐标的映射为:
在这里插入图片描述

(2)相机坐标系内归一化坐标平面

射线到平面上的投影都是等效的,因此进行归一化,方便计算。
在这里插入图片描述

(3)归一化平面上发生畸变

畸变分为径向畸变(光线折射)和切向畸变(安装倾斜)。

联立径向畸变和切向畸变公式,得到畸变模型 distortion() 为:
在这里插入图片描述
对应到标定文件中的畸变参数为。
在这里插入图片描述
即畸变映射为:
在这里插入图片描述

(3)归一化平面坐标到像素平面

在这里插入图片描述

1 、反投影: 像素坐标系到世界坐标系(Z = 0)平面

图像像素坐标(u,v)到世界3D坐标系(x, y, z = 0) 的映射过程

(1)像素平面到归一化平面

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

(2)归一化平面上逆向去畸变

由于像素坐标(u, v)是畸变后的点经过内参映射得到。因此需要将畸变点逆向去畸变为非畸变点。

牛顿迭代法:

初始化:
在这里插入图片描述
迭代求解:
在这里插入图片描述
直到误差足够小,得到非畸变点
在这里插入图片描述
到此获得相机坐标系下归一化平面上的点。

(2)相机坐标系归一化平面到地平面映射

从相机坐标系的一个平面到世界坐标系的另一个平面的映射通过单应矩阵H可以得到。

假设相机坐标在世界坐标系下为(xc, yc, zc),

将相机坐标下归一化平面点旋转后平移到世界坐标系下:
在这里插入图片描述
假设映射到世界坐标系下地平面上的点为(x, y, 0), 则根据相似三角形:

在这里插入图片描述

求得:
在这里插入图片描述
同理:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相机坐标系的正向投影和反向投影 的相关文章

随机推荐

  • 【MySQL】八,角色管理

    创建角色 引入角色的目的是方便管理拥有相同权限的用户 恰当的权限设定 可以确保数据的安全性 语法 CREATE ROLE role name host name role name host name 创建一个经理的角色 create ro
  • 基于Uniapp+SpringBoot+Vue的电影交流平台小程序设计与实现(源码+lw+部署文档+讲解等)

    前言 博主介绍 全网粉丝10W CSDN特邀作者 博客专家 CSDN新星计划导师 全栈领域优质创作者 博客之星 掘金 华为云 阿里云 InfoQ等平台优质作者 专注于Java 小程序技术领域和毕业项目实战 精彩专栏 推荐订阅 2023 20
  • FreeRTOS笔记(九)定时器

    定时器Timer 软件定时器是基于系统时钟中断且由软件来模拟的定时器 当经过设定的Tick 时钟计数值后会触发用户定义的回调函数 软件定时器不占用单片机宝贵的硬件资源和CPU资源 FreeRTOS提供了完善的软件定时器的支持 为了启用软件定
  • JAVA对象的toString方法

    一切类都是Object的子类 Object有toString方法 因此所有对象都有toString方法 打印一个对象时 打印的就是这个对象的toString方法返回值 值为 类名 hashCode 因此很多时候需要程序员重写此方法 推荐写法
  • Python运维开发(CMDB资产管理系统)——Python基础数据类型

    Python基础数据类型 字符串 可以通过单引号 双引号 三个双引号来表示 布尔 True和False 整数 浮点数 列表 定义一个列表 列表常用的一些函数 append 向列表中添加元素 元素可以是整数 浮点数 字符串等类型 count
  • 云财经服务器维护,云财经服务器维护

    云财经服务器维护 内容精选 换一换 云耀云服务器适用于对CPU 内存 硬盘空间和带宽无特殊要求 服务一般只需要部署在一台或少量的服务器上 一次投入成本少 后期维护成本低的场景 例如网站开发 Web应用 推荐使用云耀云服务器 主要提供均衡的计
  • 【vim工具的使用】

    目录 前言 一 普通 命令模式 1 文件中移动 1 2 文件中移动 2 3 复制 粘贴 剪切 删除 4 行内删除 5 撤回 6 替换 7 高亮选中 8 逐单词移动 3 二 底行模式 1 退出vim 2 设置行号 3 替换 4 搜索 3 不退
  • IntelliJ IDEA 创建spring boot项目报错:Cannot download 'https://start.spring.io'

    IEAD默认使用https start spring io 把上面地址改成http start spring io即可
  • 华为OD机试 - 矩阵扩散(Java)

    题目描述 存在一个m n的二维数组 其成员取值范围为0或1 其中值为1的成员具备扩散性 每经过1S 将上下左右值为0的成员同化为1 二维数组的成员初始值都为0 将第 i j 和 k l 两个个位置上元素修改成1后 求矩阵的所有元素变为1需要
  • Host key verification failed.

    一 问题描述 在 ssh 连接某台服务器的时候 报错如下 ECDSA host key for 172 xxx xxx xxx has changed and you have requested strict checking Host
  • valgrind

    http blog csdn net yanghao23 article details 7514587 valgrind通常用来成分析程序性能及程序中的内存泄露错误 一 Valgrind工具集简绍 Valgrind包含下列工具 1 mem
  • Mathtype7的安装及使用方法

    换了电脑 以前那个安装的mathtype无了 最近又要写论文 尝试了个新的mathtype安装方法 可提供参考 首先 下载正版mathtype7 下载链接 win系统下载win版 安装mathtype 以管理员身份运行 东西都默认即可 安装
  • dos命令操作mysql数据库的常用语句

    一 连接MYSQL 格式 mysql h主机地址 u用户名 p用户密码 1 连接到本机上的MYSQL 首先打开DOS窗口 然后进入目录mysql bin 再键入命令mysql u root p 回车后提示你输密码 注意用户名前可以有空格也可
  • 二叉树结构与算法思路解析

    二叉树 介绍 主要内容 二叉树的概念和性质 二叉树的存储结构 遍历二叉树 递归遍历 非递归遍历 线索二叉树 哈夫曼树 树和森林 树和森林的存储 树和森林与二叉树的转换 树和森林的遍历 树型结构特点 一对多 例 自然界 树 人类社会 家谱 新
  • 一次线性回归拟合、二次线性回归拟合

    器学习一次回归和二次回归 reshape 行 列 可以根据指定的数值将数据转换为特定的行数和列数 reshape 1 1 之后 数据集变成了一列 采用线性回归方程预测 lr LinearRegression lr fit X y from
  • 重复元素判定续。利用集合的无重复性改编上一个程序,获得一个更快更简洁的版本

    ls eval input 请输入一个列表 if ls list set ls print True
  • Java基础(二)——数组、类和对象

    一 数组 1 声明并创建数组 数据类型 数组名 new 数据类型 大小 2 新生成的数组对象 其中所有的引用自动初始化为null 基本数据类型 数值型自动初始化为0 字符型为0 布尔型为false 3 数组赋值方法 1 边声明边赋值 静态初
  • map.get(key)空指针异常_NPE空指针异常总结

    一 java lang NullPointerException出现的几种原因 1 字符串变量未初始化 2 接口类型的对象没有用具体的类初始化 比如 Map map 会报错 Map map new Map 则不会报错了 3 当一个对象的值为
  • uniapp点击事件修改元素样式

    1 要有一个dom元素 用ref绑定 2 获取到dom元素并操作样式
  • 相机坐标系的正向投影和反向投影

    1 正向投影 世界坐标系到像素坐标系 世界3D坐标系 x y z 到图像像素坐标 u v 的映射过程 1 世界坐标系到相机坐标系的映射 两个坐标系的转换比较简单 就是旋转矩阵 平移矩阵 旋转矩阵则是绕X Y Z 轴旋转获得 R 属于世界坐标