Image Formation Pipeline --- 从2D到3D(二)
Deal with Real World? Rotation & Translation
需要指出的是,在perspective projection这一步,我们处理的点是在以相机为参照系的三维世界坐标系中的,也就是说我们还需要把真实三维世界中的点( WP {}^{W}\!P)转化到以相机为参照系的三维世界坐标系中( CP {}^{C}\!P)。我们可以通过变换坐标系的方法来达到目的,而变换方法为旋转(rotate)和移动(translation)。
坐标系B到A的转换
假设两个坐标系A, B。在三维世界上有一个点P,在坐标系A上观察时,我们称点P为 AP {}^{A}\!P,同理在坐标系B上称之为 BP {}^{B}\!P。如果已知 BP {}^{B}\!P需要求出 AP {}^{A}\!P,我们可以通过矩阵乘法来达到目的:
{}^{A}\!P={}^{A}\!T_B{}^{B}\!P
其中 ATB {}^{A}\!T_B被称为变换矩阵(transformation matrix)。
那该如何得到 ATB {}^{A}\!T_B呢?
首先,我们需要了解如何通过一系列的旋转和移动来进行坐标系变换。 假设坐标系B沿坐标轴x旋转了 α \alpha,沿坐标轴y旋转了 β \beta,沿z旋转了 θ \theta;并且沿坐标轴x平移了10个单位(unit)。
那么 ATB {}^{A}\!T_B可以写成:
{}^{A}\!T_B=\left[ \begin{array}{c|c} {}^{A}\!R_B^{A}\!t_B \end{array} \right]
其中:
{}^{A}\!R_B=Rot(z, \theta)Rot(y, \beta)Rot(x, \alpha)
{}^{A}\!t_B= \begin{bmatrix} 10 \\ 0 \\ 0 \\ \end{bmatrix}
Rot(x, \alpha)= \begin{bmatrix} 1&0&0 \\ 0&cos\alpha&-sin\alpha \\ 0&sin\alpha&cos\alpha \\ \end{bmatrix}
Rot(y, \beta)= \begin{bmatrix} cos\beta&0&sin\beta \\ 0&1&0 \\ -sin\beta&0&cos\beta \\ \end{bmatrix}
Rot(z, \theta)= \begin{bmatrix} cos\theta&-sin\theta&0 \\ sin\theta&cos\theta&0 \\ 0&0&1 \\ \end{bmatrix}
坐标系A到B的转换
如果从坐标系A到B呢?我们很容易得到:
{}^{B}\!P=({}^{A}\!T_B)^{-1}{}^{A}\!P
要知道旋转矩阵 ARB {}^{A}\!R_B是正交矩阵(orthonomal matrix),所以其逆矩阵等于其转置矩阵,考虑到
{}^{A}\!P={}^{A}\!R_B({}^{B}\!P)+{}^{A}\!t_B
简化写法:
{}^{A}\!P=R({}^{B}\!P)+t
R^T({}^{A}\!P-t)={}^{B}\!P
或者:
{}^{B}\!P=(R^T){}^{A}\!P-R^Tt
所以得到:
{}^{A}\!T_B=({}^{B}\!T_A)^{-1}=[({}^{B}\!R_A)^T]-({}^{B}\!R_A)^T({}^{B}\!t_A)
这就是两个坐标轴的转换矩阵之间的关系。
另一种转换方法
事实上, ATB=[ARBAtB] {}^{A}\!T_B=\left[ \begin{array}{c|c} {}^{A}\!R_B^{A}\!t_B \end{array} \right] 蕴涵了很重要的几何关系。 ARB {}^{A}\!R_B上的每一列都代表了相对于坐标系A,B坐标系的单位向量,所以又可以写成:
{}^{A}\!R_B= \begin{bmatrix}{}^{A}\!x_B^{A}\!y_B^{A}\!z_B\end{bmatrix}
而 ATB {}^{A}\!T_B 的第四列 AtB {}^{A}\!t_B 是坐标系B的原点在坐标系A中的坐标。
这样的话,可以由观察得到变换矩阵。
Summary — Camera Matrix
所以,image formation pipeline可以由三个步骤组成,分别为:
最终,我们可以把公式写成:
\begin{bmatrix}{}^{im}\!x\\{}^{im}\!y\\1\end{bmatrix}=\begin{bmatrix}x/\omega\\y/\omega\\1\end{bmatrix}
\begin{bmatrix}x\\y\\\omega\end{bmatrix}=\begin{bmatrix}f/s_x&0&o_x\\0&f/s_y&o_y\\0&0&1\end{bmatrix}\begin{bmatrix}{}^{C}\!R^{C}\!t\end{bmatrix} \begin{bmatrix}X_W\\Y_W\\Z_W\\1\end{bmatrix}
或者更简单的写法:
\begin{bmatrix}x\\y\\\omega\end{bmatrix}=M\begin{bmatrix}X_W\\Y_W\\Z_W\\1\end{bmatrix}
M就是相机矩阵(camera matrix),大小为3*4。这个矩阵也是我们在图像转换中需要求得的参数。
下一篇文章将讲述Homography的基本概念,以及如何用python实现几种简单的图像变换。
Image Formation Pipeline --- 从2D到3D(二)相关推荐
- 三维球体换算到二维_单图像三维重建、2D到3D风格迁移和3D DeepDream
项目网址:http://hiroharu-kato.com/projects_en/neural_renderer.html 代码网址:https://github.com/hiroharu-kato ...
- 【人体姿态估计综述(2D、3D)】
人体姿态估计综述(2D.3D) 一.任务描述 二.2D人体姿态估计 2.1 2D单人姿态估计 2.1.1 回归方法 2.1.2 heatmap方法 2.2 2D多人姿态估计 2.2.1 自顶向下 2. ...
- 2D和3D机器视觉检测技术的优势和局限性
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 机器视觉一般由工业光源,图像采集单元,图像处理 ...
- 一文为你详解2D与3D人脸识别有什么区别?
最近业界内刮起了一股"人脸识别安全"的大讨论,小到个人大到超市以及银行,都在使用这个刷脸认证或支付,说它好吧,确实解决了无接触,快速高效等问题,你说它不好吧,也是有原因的,比如最明 ...
- 计算机图形学应用场景,计算机图形学: 应用Java 2D和3D
摘要: <计算机科学丛书·计算机图形学应用Java 2D和3D>提供了一个完整而权威的计算机图形学介绍,它并不需要低层次的编程或高深的数学背景.作者权衡了在软件和硬件方面的最新进展,结合高 ...
- 2d的公式_用深度学习实现 2D 到 3D 的转换
随着 5G 时代的到来,VR 端应用呈爆发式增长,3D 内容作为构建 VR 生态的主力输出一直深受广大用户的追捧和喜爱.针对目前 3D 内容过少,质量不高.生产昂贵等现状,爱奇艺作为国内领先的互联网视 ...
- 保姆级解读!CSS属性transform变形+2D转换+3D转换实例+代码+解析——Web前端系列学习笔记
文章目录 transfrom 2D转换 案例代码 效果图 元素变形原点 3D转换 3D转换--案例 案例代码 transfrom transform,翻译成中文的含义是"改变,使-变形:转换 ...
- html笔记(五)2D、3D、3D动画
大标题 小节 一.2D 1. css3 渐变的语法及应用 2. 动画过渡:transition 3. 2D转换属性:transform 二.3D 1. 3D转换 2. 3D视距 3. 3D翻转方法 4 ...
- 使用Disentangling形式的损失函数回归2D和3D目标框
本文介绍一篇 ICCV 2019 的论文『 Disentangling Monocular 3D Object Detection』.详细信息如下: 论文链接:https://arxiv.org/ab ...
最新文章
- python三层装饰器-python开发学习day16 (三层装饰器;迭代器)
- View和ViewGroup常用方法
- 没有他,就没有我们现在的WebRTC
- excel的mysql语言,Mysql中文乱码及导出sql语句和Excel的相关解决方法
- 小创意,大世界——休闲游戏开发者指南
- 如何在缺乏商业项目经验的前提下成功通过面试,兼说我如何甄别非商业项目经验...
- PAT—1082 射击比赛(20)
- pytorch---之halfTensor
- 创建项目连接错误_EF6连接Postgresql数据库
- windows优化大师怎么用_曾经辉煌的装机必备软件,你用过几个?
- USB转RS485/RS422接线说明
- 雨滴网易云播放器html代码,【问题求助】这种代码的播放器怎么关联网易云?...
- java 清除stdin缓冲区_使用fflush(stdin)
- php 加密网页,PHP_解密七种html网页加密解密法,自己辛苦做出来的内容被别人 - phpStudy...
- 10电脑睡眠后自动关机怎么回事 win_win10电脑睡眠变关机怎么解决_win10睡眠变自动关机的处理方法-系统城...
- TSMC HPC工艺介绍
- Outlook无法启动一直显示“正在启动”的解决方法
- Axure 进阶 | 制作携程网酒店“入住日期”与“退房日期”控件
- Spring boot集成Redis实现sessions共享时,sessions过期时间问题分析
- ASW3410设计说明|双通道 2切1/1切2 USB3.1 多路切换器设计|USB3.1/2.0双向切换方案