3D几何变换
3D点:非齐次坐标x(x,y,z) (x表示向量矢量)
齐次坐标:x~=(x~,y~,z~,w~)=w~(x,y,z,1)=w~x~ 增广矢量:x—=(x,y,z,1)
w~=0时,齐次点称作理想点或无穷远点。
3D平移:
非齐次坐标:x'=x+t 即 x'=[I t]x I是3*3的单位矩阵
齐次坐标: x—’=[I t; 0 1]x— 两个自由度t1,t2,t3
3D平移保持方向一致。
3D旋转+平移:(3D刚体运动,3D欧式变换)
非齐次坐标:x'=Rx+t 即 x'=[R t]x R是3*3的正交旋转矩阵,RRT=I, |R|=1
齐次坐标: x—’=[R t; 0 1]x— 六个自由度t1,t2,t3,R的三个参数
一般用x'=R(x-c)=Rx-Rc, c是旋转中心,通常是摄像机中心。
3D欧式变换保持欧式距离,长度不变。
3D放缩旋转平移:
非齐次坐标:x'=sRx+t 即 x'=[sR t]x R是3*3的正交旋转矩阵,RRT=I, |R|=1;
s是尺度因子(一个值),sR=[a -b; b a]
齐次坐标: x—’=[sR t; 0 1]x— 七个自由度t1,t2,t3,R的三个参数,s
3D相似变换保持直线与平面间的夹角不变。
3D仿射变换:
齐次坐标: x—’=Ax— A 是3*4矩阵,A=[a00 a01 a02 a03; a10 a11 a12 a13; a20 a21 a22 a23 ]
共有12个自由度,A中的12个参数。
在仿射变换下,平行的线与平面仍然保持平行。
不变的性质:平面的平行性、体积比、形心、无穷远平面。
3D投影变换:(透视变换或同态映射)
齐次坐标: x—’=H— x— H—是任意的4*4齐次矩阵,也是非奇异矩阵,只相差在一个尺度量的情况下定义的。仅仅尺度量不同的两个H—是等同的。
H—=[h1 h2 h3 h4; h5 h6 h7 h8; h9 h10 h11 h12 ; h13 h14 h15 h16 ]
H的16个元素中有15个独立比率,因此一个投影变换有15个自由度(七个用于相似变换部分:旋转三个、位移三个、均匀缩放一个;五个用于仿射变换部分;三个用于射影变换部分)。
投影变换保持直线性(直线在变换后仍然是直线)。
自由度:当以样本的统计量来估计总体的参数时, 样本中独立或能自由变化的自变量的个数,称为该统计量的自由度。
变换 | 矩阵 | 自由度数 | 保持性质 | 图标 | 失真 |
平移 | [I|t]3*4 | 3 | 方向 | □ | ![]() |
刚氏 | [R|t]3*4 | 6 | 长度 体积 | ◇ | ![]() |
相似 | [sR|t]3*4 | 7 | 夹角 | ♦ | ![]() |
仿射 | [A]3*4 | 12 | 平行性 | 平行四边形 | ![]() |
投影 | [H-]4*4 | 15 | 直线性 | 梯形 | ![]() |
注:表中的下层的变换都能产生上层变换的所有行为。
原创,转载请注明出处~
3D几何变换的更多相关文章
- 第1部分: 游戏引擎介绍, 渲染和构造3D世界
原文作者:Jake Simpson译者: 向海Email:GameWorldChina@myway.com ---------------------------------------------- ...
- 《DirectX 9.0 3D游戏开发编程基础》必备的数学知识 读书笔记
最近在看游戏导航源码,但是看了几天感觉看不懂.里面全是一些几何运算,以及一些关于3d方面的知识.发现自己缺少3d这方面的知识,正好也想研究一下3d游戏开发的基本原理,于是决定买本书看看了,后来在ope ...
- 基本3D变换之World Transform, View Transform and Projection Transform
作者:i_dovelemon 来源:CSDN 日期:2014 / 9 / 28 主题:World Transform, View Transform , Projection Transform 引言 ...
- 单图像三维重建、2D到3D风格迁移和3D DeepDream
作者:Longway Date:2020-04-25 来源:单图像三维重建.2D到3D风格迁移和3D DeepDream 项目网址:http://hiroharu-kato.com/projects_ ...
- 3D重建算法原理
3D重建算法原理 三维重建(3D Reconstruction)技术一直是计算机图形学和计算机视觉领域的一个热点课题.早期的三维重建技术通常以二维图像作为输入,重建出场景中的三维模型.但是,受限于输入 ...
- 3D车道线检测:Gen-LaneNet
3D车道线检测:Gen-LaneNet Gen-LaneNet: A Generalized and Scalable Approach for 3D Lane Detection 论文链接:http ...
- 数学:3D和矩阵
跟紧工作需求学习,于是抽了点时间看了看用于2D3D转换的矩阵内容. 矩阵在3D数学中,可以用来描述两个坐标系间 的关系,通过定义的运算能够把一个坐标系中的向量转换到另一个坐标系中.在线性代数中,矩阵就 ...
- 2020国防科大综述:3D点云深度学习—综述(点云形状识别部分)
目录 摘要 1.引言: 2.背景 2.1 数据集 2.2评价指标 3.3D形状分类 3.1基于多视图的方法 3.2基于体素的方法 3.3基于点的方法 3.3.1 点对多层感知机方法 3.3.2基于卷积 ...
- PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
摘要 点云是一种重要的几何数据结构类型.由于其不规则的格式,大多数研究人员将此类数据转化为常规的三维体素网格或图像集合.然而,这使数据变得不必要的庞大,并导致问题.在本文中,我们设计了一种新型的直接处 ...
随机推荐
- 【java基础】面向对象的三大基本特征之-------继承
面向对象的三大特征:封装,继承,多态 java通过extends关键字来实现继承,而且是单继承,一个子类只可以有一个直接父类,但是父类还可以有父类... java.long.Object是所有类的父类 ...
- tcpdump捕捉样例
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- java.lang.Class<T> -- 反射机制
1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为jav ...
- JAVA 线程中的异常捕获
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...
- ajax中使用post传值数组array
如果我们在data中想放入array的参数,根据在网上搜索的结果有如下方法,但是没有一个成功的……我还是贴出来,别人成功了,也许是我哪里不对,日后也许还有机会研究..在文章的最后贴出了转化为json的 ...
- UI测试 错题分析
从服务器端获取的json对象,可以直接访问对象中的属性 该属性的作用就是C text属性显示节点文本,state属性默认为open 看错行 不能用 ' ' 包裹 state:节点状态,'open' ...
- PHP之PhpDocument的使用
参考资料: 1.http://manual.phpdoc.org/HTMLSmartyConverter/HandS/ric_INSTALL.html 2.http://blog.csdn.net/s ...
- KETTLE 配置资源库
KETTLE 是一款开源的ETL工具,通过图形界面进行设计,可以对数据进行转换.设计好的文件分为两类,一类是trans,一类是job,这些文件可以存储到文件系统中. 也可以存储到数据库中. 如 ...
- IE9,10中console对象的bug
首先上一段很简单的代码 <!DOCTYPE html> <html> <head> <title></title> <meta htt ...
- 远程线程DLL注入64位进程
int main() { BOOL bFlag = FALSE; char *szDllName = "MSGDLL.dll"; //bFlag = EnablePrivilege ...