终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~

在学图形学的时候,仿射变换肯定会遇到,那到底什么是仿射变换了?在做仿射变换时一般都会用到齐次坐标,这个齐次坐标又是什么?下面是我自己学习过程中的一些领悟,记录下来做个总结。

首先给出简短的定义:仿射变换是线性变换(旋转和缩放)加平移变换,齐次坐标就是用高一维的空间坐标表示低一维空间的坐标。

这里解释下线性变换,线性变换也就是在两个向量之间的函数,它保持向量加法和标量乘法的运算。

向量加法: (1)

标量乘法: (2)

线性变换可以用矩阵表示,假设空间一个点坐标为p=(x,y),T表示一个线性变换,则存在一个矩阵A使得

p'=(x',y')=T(p)=Ap。旋转和缩放都是线性变换,因为它们都保持了上述两个性质。用矩阵表示如下:

旋转: (3)

缩放:(4)

平移:(5)

仿射变换也就是上面三个变换的叠加,在上面三个变换中平移变换是没办法使用矩阵相乘的方式来获取的。但是如果将坐标在高一维空间进行表示的时候,也就是采用齐次坐标的时候,平移变换可以用矩阵乘法来进行表示。假设p=(x,y,1)是齐次坐标下二维点p(x,y)的坐标表示,具体表示如下:

旋转: (6)

缩放:(7)

平移:(8)

这样就以上三个进行统一,便得到了仿射变换的矩阵表示,其定义也更容易表达,仿射变换也就是下面的变换:

仿射变换:(9)

当将一个矩阵表示成如下形式时:

(10)

其中分别表示旋转缩放和平移变换。

从上面可以看出,引入齐次坐标的好处就是将这三个变换进行统一用矩阵的形式进行表示,矩阵运算在编程的时候容易实现,而且仿射变换也有个性质:仿射变换后保持点共线及共面的性质。

在公式(10)里面的1,如果变换成其他数值,则表示对整体进行缩放,也就是相当于在整个矩阵外面乘以一个w效果一样。

图形系统中的仿射变换相关推荐

  1. OpenCV中的仿射变换

    OpenCV中的仿射变换 仿射变换:一个任意的仿射变换都能表示为 乘以一个矩阵 (线性变换) 接着再 加上一个向量 (平移). 通常一个图像有三种变换: 1.旋转 2.平移 3.缩放 通常用2X3的矩 ...

  2. 关于多视觉几何MVG中,仿射变换的SVD分解问题的程序验证

    多视觉几何课程: http://www.robots.ox.ac.uk/~victor/teaching/practicals/Practical_MVG.html http://www.robots ...

  3. 计算机图形学中几何变换的定义,计算机图形学-第5章-几何变换课件

    <计算机图形学-第5章-几何变换课件>由会员分享,可在线阅读,更多相关<计算机图形学-第5章-几何变换课件(70页珍藏版)>请在人人文库网上搜索. 1.计算机图形学-第5章-几 ...

  4. 可视化中的数学基础知识

    一,坐标系 1.坐标系与坐标映射 浏览器的四个图形系统通用的坐标系分别为: HTML 采用的是窗口坐标系,以参考对象(参考对象通常是最接近图形元素的 position 非 static 的元素)的元素 ...

  5. OpenCV中的透视变换介绍

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 透视变换原理 透视变换是将图像从一个视 ...

  6. 边缘检测、霍夫变换、重映射、仿射变换、直方图均衡化

    文章目录 1.基于 OpenCV 的边缘检测 1.1 边缘检测的一般步骤 1.2 canny 算子 1.2.1 canny 边缘检测的步骤 1.2.2 Canny 边缘检测:Canny() 函数 1. ...

  7. Qt中的基础图形绘制

    文章目录 1 Qt中的基础图形绘制 2 Qt基础图形绘制中的视口和窗口 3 综合实例开发:简易绘图程序 3.1 需求分析 3.2 设计分析 1 Qt中的基础图形绘制 Qt图形系统中的关键角色: QPa ...

  8. Android 图形系统之gralloc

    Gralloc1::Loader 与 gralloc 模块加载 Gralloc1::Loader 用于加载 HAL gralloc 模块.其类定义(位于 frameworks/native/inclu ...

  9. Halcon:二维仿射变换实例探究

    二维仿射变换,顾名思义就是在二维平面内,对对象进行平移.旋转.缩放等变换的行为(当然还有其他的变换,这里仅论述这三种最常见的). Halcon中进行仿射变换的常见步骤如下: ① 通过hom_mat2d ...

最新文章

  1. [Offer收割]编程练习赛63
  2. cxgrid中纵横单元格合并_被合并单元格折磨疯的我,真后悔没早点知道这个Excel技巧!...
  3. python可变序列和不可变序列_一文看懂可变序列和不可变序列
  4. 重现2篇Nature中GraPhlAn绘制的超高颜值物种树Cladogram
  5. POJ 3617 Best Cow Line 贪心
  6. 【转】10分钟精通SharePoint - VS开发模板
  7. NTFS文件系统的简述
  8. POJ——字符串插入
  9. 一分钟在云端快速创建MySQL数据库实例
  10. MSSQL 2000更改表和存储过程的所有者
  11. PDF文档只能读,不能修改和复制怎么办?
  12. dtft性质及证明_数字信号处理1 时域分析和DTFT.pptx
  13. 有关聊天机器人的近两年的优秀论文和开源程序
  14. 紫光武汉新芯珠联璧合 引领存储“芯”篇章
  15. Linux安装maven
  16. winform直接控制云台_299元,246g,260mm,一天销量破万的智云最新手机云台深度评测...
  17. 手机连接谷歌浏览器进行联调_如何让任何人将手机连接到您的Google Home
  18. Confluence 6 通过用户管理编辑组成员
  19. Qt学习(6)——Q_PROPERTY宏解析
  20. maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理...

热门文章

  1. 每输入四个字符添加一个中划线
  2. 多个独立的forEach循环, 内部处理条件是一样,代码优化方案
  3. Maven 中央仓库地址
  4. java语言程序设计答案_《java语言程序设计》练习题及答案
  5. Oracle11gR2在9x8hk..Windows18669144449 命名进入Oracle
  6. 人人都能学会的python编程教程(基础篇)完整版
  7. MAC chrome浏览器 adobe flash player不是最新版本提示 的解决方案
  8. 各个平台看 docset 的工具
  9. Redhat Ha Cluster -(转)
  10. mysql binlog日志定时删除---计划任务