2D几何变换
2D点:非齐次坐标x(x,y) (x表示向量矢量)
齐次坐标:x~=(x~,y~,w~)=w~(x,y,1)=w~x~ 增广矢量:x—=(x,y,1)
w~=0时,齐次点称作理想点或无穷远点。
2D平移:
非齐次坐标:x'=x+t 即 x'=[I t]x I是2*2的单位矩阵
齐次坐标: x—’=[I t; 0 1]x— 两个自由度t1,t2
2D平移保持方向一致。
2D旋转+平移:(2D刚体运动,2D欧式变换)
非齐次坐标:x'=Rx+t 即 x'=[R t]x R是2*2的正交旋转矩阵,R=[cosθ -sinθ;sinθ cosθ] ,RRT=I, |R|=1
齐次坐标: x—’=[R t; 0 1]x— 三个自由度t1,t2,θ
2D欧式变换保持欧式距离,长度不变。
2D放缩旋转平移:
非齐次坐标:x'=sRx+t 即 x'=[sR t]x R是2*2的正交旋转矩阵,R=[cosθ -sinθ;sinθ cosθ] ,RRT=I, |R|=1;
s是尺度因子(一个值),sR=[a -b; b a]
齐次坐标: x—’=[sR t; 0 1]x— 四个自由度t1,t2,θ,s
2D相似变换保持直线间的夹角不变。
2D仿射变换:
齐次坐标: x—’=Ax— A 是2*3矩阵,A=[a00 a01 a02; a10 a11 a12]
在仿射变换下,平行线仍然保持平行。
2D投影变换:(透视变换或同态映射)
齐次坐标: x—’=H— x— H—是任意的3*3齐次矩阵,也是非奇异矩阵,只相差在一个尺度量的情况下定义的。仅仅尺度量不同的两个H—是等同的。
H—=[h1 h2 h3; h4 h5 h6; h7 h8 h9 ]
H的九个元素中有8个独立比率,因此一个投影变换有八个自由度。
自由度:当以样本的统计量来估计总体的参数时, 样本中独立或能自由变化的自变量的个数,称为该统计量的自由度。
投影变换保持直线性。
| 变换 | 矩阵 | 自由度数 | 保持性质 | 图标 |
| 平移 | [I|t]2*3 | 2 | 方向 | □ |
| 刚氏 | [R|t]2*3 | 3 | 长度 | ◇ |
| 相似 | [sR|t]2*3 | 4 | 夹角 | ♦ |
| 仿射 | [A]2*3 | 6 | 平行性 | 平行四边形 |
| 投影 | [H-]3*3 | 8 | 直线性 | 梯形 |
2D几何变换的更多相关文章
- Numpy和OpenCV中的图像几何变换
介绍 上面的图像使它不言而喻什么是几何变换.它是一种应用广泛的图像处理技术.例如,在计算机图形学中有一个简单的用例,用于在较小或较大的屏幕上显示图形内容时简单地重新缩放图形内容. 它也可以应用于扭曲一 ...
- 单图像三维重建、2D到3D风格迁移和3D DeepDream
作者:Longway Date:2020-04-25 来源:单图像三维重建.2D到3D风格迁移和3D DeepDream 项目网址:http://hiroharu-kato.com/projects_ ...
- Waymo object detect 2D解决方案论文拓展
FixMatch 半监督中的基础论文,自监督和模型一致性的代表作. Consistency regularization: 无监督学习的方式,数据\(A\)和经过数据增强的\(A\)计做\(A'\) ...
- 2D、3D形变
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Monaco; color: #a5b2b9 } span.Apple-tab-span { ...
- CSS 3学习——transform 2D转换
首先声明一点,transform属性不为none的元素是它的定位子元素(绝对定位和固定定位)的包含块,而且对内创建一个新的层叠上下文. 注意:可以通过 transform-box 属性指定元素的那个盒 ...
- UWP简单示例(三):快速开发2D游戏引擎
准备 IDE:VisualStudio 2015 Language:VB.NET/C# 图形API:Win2D MSDN教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面 ...
- 赠书:HTML5 Canvas 2d 编程必读的两本经典
赠书:HTML5 Canvas 2d 编程必读的两本经典 这两年多一直在和HTML5 Canvas 打交道,也带领团队开发了世界首款基于HTML5 Canvas 的演示文档工具---AxeSlide( ...
- egret3D与2D混合开发,画布尺寸不一致的问题
egret3d的GUI目前还没有,在做3d游戏的时候没有UI可用,只能使用egret2d的EUI组件库,egret3d与egret2d混合开发,canvas3d的大小与位置与canvas2d并没有重合 ...
- IOS 2D游戏开发框架 SpriteKit-->续(创建敌对精灵)
这次包括之后讲的spritekit 我都会围绕一个案例来说,这个案例就是一个简单的2d飞机大战游戏,今天这里我讲创建敌对精灵,就是敌对飞机,敌对飞机不停的被刷新到屏幕上.....当然这里涉及到的类其实 ...
随机推荐
- Python_Day7_面向对象学习
1.面向对象编程介绍 2.为什么要用面向对象进行开发? 3.面向对象的特性:封装.继承.多态 4.类.方法. 面向过程 VS 面向对象 编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告 ...
- string 常量池的理解
1: String a="123"; String b="12"+"3"; String c="1"+"23& ...
- upupw一键绿色免安装环境包
项目测试,选择upupw环境包 下载nginx版本,解压即可使用 任务就是要把我电脑上的项目test.com提供给公司局域网同事访问,如果是apache的话,前面的wampserver已经讲过了. 1 ...
- [sqoop1.99.6] 基于1.99.6版本的一个小例子
1.创建mysql数据库.表.以及测试数据mysql> desc test;+-------+-------------+------+-----+---------+------------- ...
- 深入springMVC源码------文件上传源码解析(下篇)
在上篇<深入springMVC------文件上传源码解析(上篇) >中,介绍了springmvc文件上传相关.那么本篇呢,将进一步介绍springmvc 上传文件的效率问题. 相信大部分 ...
- Redis常用命令入门2:散列类型
散列命令 散列类型的键值其实也是一种字典解耦,其存储了字段和字段值的映射,但字段值只能是字符串,不支持其他数据类型,所以说散列类型不能嵌套其他的数据类型.一个散列类型的键可以包含最多2的32次方-1个 ...
- Linux内核分析课程总结
Linux内核分析课程总结 By 20135203齐岳 知识梳理 (思维导图地址http://mindmap.4ye.me/mkxM0cFh/1) 从start _ kernel构造一个新的Linux ...
- 【基本技能篇】>>第2篇《如何把事情做到最好——心得》
如何把事情做到最好——全美第一本系统阐述学习与成功之道的经典著作. ——2016年2月12日 四个阅读层次:①基础阅读,具有基本阅读的能力,包括认识字,懂得词,知会句子的基本意思等.②检视阅读(也是判 ...
- Bootstrap 表单
表单布局 Bootstrap 提供了下列类型的表单布局: 垂直表单(默认) 内联表单 水平表单 垂直或基本表单 基本的表单结构是 Bootstrap 自带的,个别的表单控件自动接收一些全局样式.下面列 ...
- nodeType的意思
nodeType是用来获得当前节点对象的类型.nodeType 属性可返回节点的类型.元素element 1 属性attr 2 文本text 3 注释comments 8 ...