精华内容
下载资源
问答
  • 本文介绍了仿射变换的类型及其关系以及仿射...实际中一般图像的仿射变换就是平移、旋转、缩放和错切的叠加组合,每叠加一个处理,就进行一次仿射变换矩阵齐次坐标的乘法,再进行一次处理则再乘一次对应变换的矩阵

    ☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython

    仿射变换博文传送门(带星号的为付费专栏文章):
    1. *图像仿射变换原理1:齐次坐标来龙去脉详解
    2. *图像仿射变换原理2:矩阵变换、线性变换和图像线性变换矩阵
    3. *图像仿射变换原理3:仿射变换类型及变换矩阵详解
    4. *图像仿射变换原理4:组合变换及对应变换矩阵
    5. *图像仿射变换原理5:组合变换矩阵的OpenCV-Python实现
    6. OpenCV-Python图像处理:仿射变换详解及案例
    7. OpenCV-Python仿射变换开发中遇到的坑
    8. openCV仿射变换:getAffineTransform的案例
    9. 为什么称图像旋转、错切、缩放变换是线性变换?
    10. 图像仿射变换:绕点旋转和指定直线依赖轴shear错切变换矩阵
    11. 图像仿射变换shear怎么翻译?剪切、错切、推移哪个译词好?
    12. 仿射变换原理和其OpenCV-Python实现知识汇总
    仿射变换类型及变换矩阵详解

    一、概述

    图像几何变换又称为图像空间变换,是各种图像处理算法的基础。它是在不改变图像内容的情况下,对图像像素进行空间几何变换的处理方式。它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置,其实质是改变像素的空间位置,估算新空间位置上的像素值。

    图像的几何变换包括透视变换和仿射变换,透视变换又称为投影变换、投射变换、投影映射,透视变换是将图片投影到一个新的视平面,它是二维(x,y)到三维(X,Y,Z)、再到另一个二维(x’,y’)空间的映射。

    仿射变换又称为图像仿射映射,可以认为是透视变换的一种特殊情况,是透视变换的子集,仿射变换是从二维空间到自身的映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间,也就是图像仿射变换等于图像线性变换和平移的组合。

    仿射变换包括平移(translation)、旋转(rotation)、缩放(scaling)、错切(shear )四种类型:

    1. 平移和旋转两者的组合不改变图像的大小和形状,只有图像的位置(平移变换)和朝向(旋转变换)发生改变,称之为欧式变换(Euclidean transformation)或刚体变换(rigid transformation),刚性变换是最一般的变换

    2. 缩放又分为等比例缩放(uniform scaling)和非等比例缩放(non-uniform scaling),如果缩放系数为负数,则会叠加翻转(reflection,又翻译为反射、镜像),因此翻转可以看成是特殊的缩放

    3. 欧式变换和等比例缩放保持了图像外观没有变形,因此二者的组合称为相似变换(similarity transformation)

    4. 老猿理解为类似于在图像外接平行四边形固定一边的情况下,在该固定边的对边某个角施加了一个推力,该推力的作用线与x或y轴方向平行,在该推力的作用下图像的外接平行四边形发送的形变就是错切,因此错切又被称为推移,可以想象一下,一个正方形在推移作用下变成一个平行四边形的场景,下图是正方形ABCD经过水平错切变成平行四边形A’B’CD:
      在这里插入图片描述
      α即竖直线倾斜后的倾角,称为错切角

    5. 旋转、翻转、缩放、错切的组合称为线性变换(这与后面要介绍的图像灰度线性变换是两个不同的概念),这是因为这些变换都可以表示为矩阵变换,而矩阵变换都是线性变换。相关介绍具体请参考《https://blog.csdn.net/LaoYuanPython/article/details/113804210 图像仿射变换原理2:矩阵变换、线性变换和图像线性变换矩阵》。

    仿射变换相关的变换类型及其关系可以用下图表示:

    在这里插入图片描述

    二、仿射变换矩阵

    2.1、引言

    在《https://blog.csdn.net/LaoYuanPython/article/details/113804210 图像仿射变换原理2:矩阵变换、线性变换和图像线性变换矩阵》介绍了图像线性变换及线性变换矩阵,仿射变换比线性变换多了个平移,无法使用线性变换的变换矩阵来表示仿射变换,这个时候我们就需要用到《https://blog.csdn.net/LaoYuanPython/article/details/113743213 图像仿射变换原理1:齐次坐标来龙去脉详解》介绍的齐次坐标和新的变换矩阵。

    2.2、图像的平移

    图像的平移就是将图像的纵横坐标进行变换,变换公式如下:
    x’ = x + m = x + 0y+m
    y’ = y + n = 0x + y +n

    其中m和n是对应横坐标和纵坐标移动的距离常数。

    我们将在《https://blog.csdn.net/LaoYuanPython/article/details/113804210 图像仿射变换原理2:矩阵变换、线性变换和图像线性变换矩阵》介绍的线性变换矩阵基础上,将二维向量表示的二维平面坐标扩展为三维向量,即在二维向量(x,y)基础上增加第三个分量1变为齐次坐标(x,y,1),变换方阵扩展为3*3,即用3维向量表示2维向量、用3维方阵来表示2维平面的仿射变换,扩展的第3列前2行为平移对应的横坐标和纵坐标移动的距离常数m、n,第3行固定为1,这就是仿射变换的变换矩阵。

    下面就是平移变换公式对应的仿射变换矩阵:
    在这里插入图片描述

    则变换代数式可以使用矩阵表示为:
    在这里插入图片描述

    2.3、仿射变换矩阵公式

    2.3.1、仿射变换通用矩阵变换表述

    类似平移变换,所有仿射变换都可以用类似如下的矩阵变换表示:
    在这里插入图片描述
    在《https://blog.csdn.net/LaoYuanPython/article/details/113804210 图像仿射变换原理2:矩阵变换、线性变换和图像线性变换矩阵》介绍的线性变换,用仿射变换的矩阵方式表述只需要将上述仿射变换矩阵的前2行2列的内容替换为对应线性变换矩阵,并将m、n置为0即可。

    2.3.2、旋转变换矩阵

    在OpenCV中顺时针旋转角度为θ,则仿射变换的旋转变换矩阵为:
    在这里插入图片描述
    对应变换的齐次坐标表示公式为:
    在这里插入图片描述
    如果是逆时针旋转θ,则变换矩阵两个sinθ的符号与上面公式的情况需要互换。

    2.3.3、错切变换矩阵

    假设α和β分布是水平错切角和垂直错切角,则仿射变换的水平错切变换矩阵为:
    在这里插入图片描述
    对应变换的齐次坐标表示公式为:
    在这里插入图片描述

    仿射变换的垂直错切变换矩阵为:
    在这里插入图片描述
    对应变换的齐次坐标表示公式为:
    在这里插入图片描述

    2.3.4、缩放变换矩阵

    假设kx和ky分布为水平缩放因子和垂直缩放因子,则仿射变换的缩放变换矩阵为:
    在这里插入图片描述
    对应变换的齐次坐标表示公式为:
    在这里插入图片描述

    三、补充说明

    本节介绍的仿射矩阵实际上是一种单应性矩阵。

    2D单应性变换定义为从一个平面到另一个平面的投影映射,坐标 (x,y) 通过单应性变换映射到 (u,v), 使用齐次坐标即为 (x,y,1), (u,v,1), 其变换公式为:
    在这里插入图片描述
    对应的3*3的矩阵称为单应性矩阵,仿射矩阵是2*3的矩阵,比单应性矩阵少一行,上面介绍的仿射矩阵实际上是单应矩阵固定最后一行为(0,0,1)的特殊单应性矩阵。

    四、小结

    本文介绍了仿射变换的类型及其关系以及仿射变换矩阵,基本的仿射变换包括平移、旋转、缩放和错切,镜像可以看做特殊的缩放。实际中一般图像的仿射变换就是平移、旋转、缩放和错切的叠加组合,每叠加一个处理,就进行一次仿射变换矩阵和齐次坐标的乘法,再进行一次处理则再乘一次对应变换的矩阵。

    参考资料

    1. 基本图像变换:线性变换,仿射变换,投影变换
    2. 仿射变换及其变换矩阵的理解

    更多图像处理的介绍请参考专栏《OpenCV-Python图形图像处理 https://blog.csdn.net/laoyuanpython/category_9979286.html》和《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》相关文章。

    更多图像处理的数学基础知识请参考专栏《人工智能数学基础 https://blog.csdn.net/laoyuanpython/category_10382948.html

    写博不易,敬请支持:

    如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

    关于老猿的付费专栏

    1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
    2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
    3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录
    4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

    前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

    对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

    如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

    跟老猿学Python!

    ☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython

    展开全文
  • 齐次空间与仿射变换1. 齐次坐标与齐次空间1.1 齐次坐标 齐次坐标本质上是4D向量(x,y,z,w),在w=1处的三维空间定义为标准的3D空间,任何齐次...1.2 4X4齐次矩阵 由于表示三维空间的3x3矩阵只能表示旋转和缩放不能...

    0cde12b33b43384da7de3803a49e0e32.png

    齐次空间与仿射变换

    1. 齐次坐标与齐次空间

    1.1 齐次坐标

    齐次坐标本质上是4D向量(x,y,z,w),在w=1处的三维空间定义为标准的3D空间,任何齐次坐标转化到标准3D空间坐标点为(x/w.y/w,z/w),如果w为0时(x,y,z,0)表示的是标准3D空间的方向(x,y,z)而并非坐标点。

    1.2 4X4齐次矩阵

    由于表示三维空间的3x3矩阵只能表示旋转和缩放不能表示移动,当我们使用齐次矩阵时就可以表示平移,旋转,缩放。可以将一个齐次矩阵拆分为只包含3x3的矩阵部分(包含旋转缩放)和只包含位移的矩阵部分

    2ba3f33e45ad49330035e1aee3b076d9.png

    ca9e2fd48de972eb7bace175c2b365b5.png

    1.3 齐次坐标的几何含义

    我们知道齐次坐标(x,y,z,1)可以表示在w=1处的三维空间的坐标点,那么扩展一下在w不为0时(wx,wy,wz,w)与(x,y,z,1)表示的含义相同都表示(x,y,z)点坐标(参见齐次坐标定义)那么齐次坐标的几何含义就是过原点与w=1的直线在w=1位置的投影。四维齐次坐标比较难以理解,我们可以想象下三维齐次坐标(x,y,w)表示的二维空间的点(x/w, y/w,1)。eg:(-1,-0.5,1)为齐次坐标表示(-1,-0.5)这个点,(-2,-1,2)的齐次坐标实际上也是表示(-1,-0.5)这个坐标点,如下图:

    867cea81b43933b31753cd28239288e3.png

    可以非常明显的看出av=(x,y,z)~(x/z.y/z.1)(含义是齐次空间(x,y,z)等价于(x/z.yy/z.1))表示过原点的av直线在w=1的投影。

    2. 仿射变换

    将一个矩形转化为另一个矩形的过程就是仿射变换,整个过程可以按照以下三个步骤进行,将矩形移动到原点,缩放矩形到目标大小,移动矩形到目标位置

    8c33ec8d730a008a1452d465ada6fc28.png

    4011382c98fd80b843698d7e7b2b6ab0.png

    同理由以上二维空间可以引申到三维空间的仿射变换矩阵为:

    f3cdde2b4269f9e1e3084cb6443eeaf7.png

    3. 向量沿矩阵变换与向量的空间转换

    3.1 向量沿矩阵变换

    矩阵M是由该空间的坐标轴基向量组成,表示一个新的坐标系(可以理解为将原坐标系经过平移旋转缩放后形成新的坐标系),原坐标系下向量v与该矩阵M相乘的含义是将向量v经过矩阵M相同的平移旋转缩放变换后形成的新的向量。可以想象原坐标系为模型的本地空间,矩阵M表示该模型在世界空间的位置朝向等信息,模型上的顶点与该模型世界空间的矩阵M乘积其实就是将该顶点经过模型相同的位移旋转缩放到达世界空间的新的坐标点。

    3.2 向量的空间转换

    向量的空间转换与简单的矩阵转换不同,其本质是向量v在新的坐标系的描述,而向量v本身并未发生任何变化。假设坐标轴空间矩阵为M1,新坐标轴空间为M2,向量为在M1空间的坐标为v1,在M2空间的坐标为v2。已知v1,M1,M2计算v2的过程叫做向量的空间转换,或者叫做向量转化到M2空间的坐标。由于向量本身没有变化,所以 v = v1*M1 = v2 *M2 等式两边同时呈上M2矩阵的逆矩阵可以得出: v = v1*M1*M2-1 = v2 *M2*M2-1 = v2 如果M2为正交矩阵 M2 -1 = M2T(转置矩阵)

    4. 总结

    • 齐次坐标的定义是n维空间在w=1处的n-1维空间的坐标点
    • 齐次坐标的几何含义是将经过原点的直线投影到某一维度为1位置的点,eg: 当把(x,y,z)可以看作齐次坐标时,它表示的是二维坐标点(x/z, y/z,1),表示的含义是(x,y,z)所形成的直线在z = 1平面投影的点,(x,y)。也就是说齐次坐标可以作为向某个特定轴向投影得到的坐标点。
    • 仿射变换矩阵为:

    f3cdde2b4269f9e1e3084cb6443eeaf7.png
    • 向量乘以矩阵表示的是该向量按照矩阵的变换轨迹运动后形成新的向量,而同一个向量保持不变,在不同坐标系空间内的坐标叫做空间转换,v2 = v1 *M1*M2-1
    展开全文
  • 仿射变换矩阵

    万次阅读 2018-07-04 20:51:33
    仿射变换(Affine Transformation)和齐次坐标系(Homogeneous Coordinate)是计算机图形学中经常碰到的基本概念。这篇文章主要讲述什么是仿射变换齐次坐标系,以及在图形系统中为什么要是用它们。不求全面,只为...

    GeometryTransformation 几何变换

    对图像的几何变换本质上是一种线性变换,其数学本质为 
    Inew=TIold

    即通过变换矩阵 T 将原图上的点的位置 Iold 变换到新的位置,从而得到新的图像 Inew

    2D平面变换示意图(”Computer Vision: Algorithms and Applications”, RichardSzeliski) 
    - Translation
    平移 
    - Euclidean(rigid, rotation)
    旋转 
    - Scale
    缩放;图中没有画出 
    - Similarity
    相似变换;结合旋转,平移和缩放 
    - Affine
    仿射变换;想象在similarity的基础上用两只手对图像进行按压拉伸 
    - Projective
    投影变换;想象投影仪做的事情,将一个面投影到另外一个面的情况


    仿射变换(Affine Transformation)和齐次坐标系(Homogeneous Coordinate)是计算机图形学中经常碰到的基本概念。这篇文章主要讲述什么是仿射变换和齐次坐标系,以及在图形系统中为什么要是用它们。不求全面,只为自己学习理解。

    仿射变换其实是另外两种简单变换的叠加:一个是线性变换,一个是平移变换。统一平移变换和线性变换的一种变换我们起了个名字叫“仿射变换”。这个新的变换就不再单纯的是两个线性空间的映射了,而是变成了两个仿射空间的映射关系。为了更好地理解仿射变换,首先就要知道线性变换以及它的不足。在未说明的情况下,下面使用的是卡迪尔坐标系。

    所谓线性变换是指两个线性空间的映射,一个变换\mathcal{L}:\mathcal{A}\to\mathcal{B}是线性变换,必须满足两个条件,也就是我们经常说的线性条件:

    L(u+v)=L(u)+L(v)      additivity

    L({\alpha}u)={alpha}L(u)      homogeneity

    举个例子说明一下。建设L是一个二维绕原点旋转变换,uv是旋转角度。我们知道“一次性旋转u+v度”和“先旋转u度再旋转v读”达到的效果是一样的;同样地,“一次性旋转{\alpha}u度”和“旋转{\alpha}次u度”也是一张的。

    线性变换可以用矩阵来表示。假设p=(x,y)^{T}是二维空间中的点,T是一线性变换,那么存在一个矩阵A,使得p'=(x',y')^{T}=T(p)=Ap。上面的旋转变换R,以及缩放S变换都有相应的变换矩阵

    \left[ {\begin{array}{c} x'\\y'\\ \end{array}} \right]=R(p)= \left[ {\begin{array}{cc} cos(\theta) & -sin(\theta) \\ sin(\theta) & cos(\theta) \\ \end{array} } \right] \left[ {\begin{array}{cc} x \\ y \\ \end{array} } \right]

    \left[ {\begin{array}{c} x'\\y'\\ \end{array}} \right]=S(p)= \left[ {\begin{array}{cc} S_x & 0 \\ 0 & S_y \\ \end{array} } \right] \left[ {\begin{array}{c} x \\ y \\ \end{array} } \right]

    但是在卡迪尔坐标系中,平移变换却不能用矩阵来表示。一个平移变换T具有如下的形式

    \left[ {\begin{array}{c} x'\\y'\\ \end{array}} \right]=T(p)= I \left[ {\begin{array}{cc} x \\ y \\ \end{array} } \right]+\left[ {\begin{array}{c} t_x \\ t_y \\ \end{array} } \right]

    我们可以很容易地验证,平移变换T是不能写成两个矩阵乘积形式的。使用齐次坐标系很好的解决了这个问题(可能还有其它的原因)。齐次坐标系统其实是用高维坐标来表示一个低维的点,就好比我们用(x,1)来表示一个长度值一样,其实用一个x就可以了,但是用高一维的表示,在有的时候会带来便利。一个N维的卡迪尔坐标系中的一个点p=(x_1,x_2,...,x_N),在齐次坐标系中有无数的N+1维点与之对应,这些点可以描述为p_H=(\omega x_1,\omega x_2,...,\omega x_N,\omega)\omega取不同的值,我们变得到齐次坐标系中不同的点。当把这些点映射到\omega=1平面(不改变x_i之间比例),我们又降维得到对应的卡迪尔坐标系中的点。在OpenGL中我们是用(x,y,z,1)(\omega=1)来表示一点三维的点,显然这个点与卡迪尔坐标系中的点(x,y,z)是一一对应的。在计算的过程中,会出现第四个分量不为\omega \neq 1的情况,这时我们也总是同除以\omega使齐次坐标正规化。现在回来让我们看看使用齐次坐标时,对应的线性变换是什么形式。假设p=(x,y,1)^{T}是二维点对应的齐次坐标,与上面使用卡迪尔坐标系类似,我们可以得到相应的线性变换如旋转变换R和缩放变换S的矩阵表示:

    \left[ {\begin{array}{c} x'\\y'\\1\\ \end{array}} \right]=R(p)= \left[ {\begin{array}{ccc} cos(\theta) & -sin(\theta) & 0 \\ sin(\theta) & cos(\theta) & 0 \\ 0 & 0 & 1\\\end{array} } \right] \left[ {\begin{array}{c} x \\ y \\ 1 \\ \end{array} } \right]

    \left[ {\begin{array}{c} x'\\y'\\1\\ \end{array}} \right]=S(p)= \left[ {\begin{array}{ccc} S_x & 0 & 0 \\ 0 & S_y & 0 \\ 0 & 0 & 1\\ \end{array} } \right] \left[ {\begin{array}{c} x \\ y \\ 1 \\ \end{array} } \right]

    容易验证, (x', y')的值并没有变化。但是使用齐次坐标后,平移操作便也可以使用矩阵来表示了(如下),平移量出现在变换矩阵的最右侧。

    \left[ {\begin{array}{c} x'\\y'\\1\\ \end{array}} \right]=T(p)= \left[ {\begin{array}{ccc} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1\\ \end{array} } \right] \left[ {\begin{array}{c} x \\ y \\ 1 \\ \end{array} } \right]

    最后,我们给出仿射变换稍微正式点的定义。一个仿射变换T,可以表示成一个线性变换A后平移tT(p)=Ap+t,其中p是待变换的点齐次坐标表示。T可以表示成如下的形式:

    \bf{T}=\left[ {\begin{array}{cccc} a_11&a_12&a_13&t_1\\ a_21&a_22&a_23&t_2\\ a_31&a32&a33&t_3\\ 0&0&0&1\\ \end{array}} \right]

    其中,\bf{A}=\left[ {\begin{array}{ccc} a_11&a_12&a_13\\ a_21&a_22&a_23\\ a_31&a32&a33\\ \end{array}} \right]表示线性变换;\bf{t}=\left[ {\begin{array}{c} t_1\\ t_2\\ t_3\\ \end{array}} \right]表示平移变换;右下角的数字可以进行整体缩放,当为1时,表示不进行整体缩放。

    仿射变换之所以重要,另一个重要的原因是仿射变换后不改变点的共线/共面性,而且还保持比例,这对图形系统尤其重要。例如,根据这个性质,如果我们要变换一个三角形,只需要对三个定点v1,v2,v3进行变换T就可以了,对于原先边v1v2上的点,变换后一定还在边后T(v1)T(v2)上。

    总结一下,仿射变换是线性变换后进行平移变换(其实也是齐次空间的线性变换),使用齐次坐标使得仿射变换可以以统一的矩阵形式进行表示。

    Advertisements
    展开全文
  • 仿射变换(Affine Transformation) 齐次坐标系(Homogeneous Coordinate) 定义: 所谓线性变换是指两个线性空间的映射,一个变换是线性变换,必须满足两个条件,也就是我们经常说的线性条件: additivity ...

    仿射变换(Affine Transformation)

    齐次坐标系(Homogeneous Coordinate)

    定义:

    所谓线性变换是指两个线性空间的映射,一个变换\mathcal{L}:\mathcal{A}\to\mathcal{B}是线性变换,必须满足两个条件,也就是我们经常说的线性条件:

    L(u+v)=L(u)+L(v)      additivity

    L({\alpha}u)={alpha}L(u)      homogeneity

    理解:

    在《3D数学基础:图形与游戏开发》》9.4.2中说到4x4平移矩阵,因为3x3矩阵平移并不能用

    乘法表示,也就是说,我们矢量来表示空间中一个点:

    r = {rx,ry,rz}

    而平移的矢量为

    t = {tx,ty,tz}

    那么一般化做法是:

    r + t = {rx+tx, ry+ty, rz+tz}

    所谓不能用乘法表示就是:

    r + t = r · x(x 表示未知)

    就是x是无解的

    所以表示的是线性变换,不包含平移

    那么这样就需要增加一个维度,就是4维度的

    也就是说在4D空间中,乘法仍然不能表示4D的平移,4D零向量总是变化成零向量,我们增加一个维度后,就是切变4D空间,3D空间平面不经过4D原点,就可以使用

    4D切变表示3D平移

    4x4的意义:

    在计算机图形学中,坐标转换通常不是单一的,一个几何体在每一帧可能都设计了多个平移,旋转,缩放等变化,

    这些变化我们通常使用串接各个子变化矩阵的方式得到一个最终变化矩阵,从而减少计算量

    仿射变换后不改变点的共线/共面性,而且还保持比例

    如果我们要变换一个三角形,只需要对三个定点v1,v2,v3进行变换T就可以了,对于原先边v1v2上的点,变换后一定还在边后T(v1)T(v2)上。

    转载于:https://www.cnblogs.com/W-Heisenberg/p/4634661.html

    展开全文
  • Core Graphics框架中的图形变换 在Core Graphics框架图形绘制的时候,经常会有对图形进行平移、缩放...CGAffineTransform与齐次坐标 首先,我们先看一下CGAffineTransform这个结构体是什么样子的,如下所示. struct CG..
  • 作者:i_dovelemon 来源:CSDN 日期:2015/5/18 主题:仿射变换,正交矩阵,求逆,矩阵乘法引言好久没有写博客了,这段时间一直忙着,今天抽空写下实习的时候遇到的问题,同时继续更新...齐次坐标我们都知道,在3D图
  • 一般而言,仿射变换矩阵为23的矩阵,第三列的元素起着平移的作用,前面两列的数字对角线上是缩放,其余为旋转或者错切的作用。 仿射变换是一种二维坐标(x, y)到二维坐标(u, v)的线性变换。数学表达式如下: 对应...
  • 仿射变换

    2018-12-01 11:27:53
    图像几何变换之仿射变换 ... 对应的齐次坐标矩阵表示形式为:    仿射变换保持了二维图形的“平直性”(直线经仿射变换后依然为直线)和“平行性”(直线之间的相对位置关系保持不变,平行线经仿射变换后依然...
  • 本节从基础的欧式空间、投影空间、笛卡尔坐标、向量、矩阵、线性空间着手介绍,从向量空间的点和向量的表示法着手说明齐次坐标概念引入的过程,并介绍了齐次坐标的作用。
  • 0012_仿射变换

    2018-09-15 22:21:27
    对于2D范围内的仿射变换,使用的是一个3*3的齐次矩阵。 有两种常见的仿射变换方法,两种仿射变换的对比如下: 一种是对轮廓进行仿射变换(方法一) 一种是对具体的2D坐标进行仿射变换(方法二) 分别如下: ...
  • 图像变换:仿射变换

    2018-08-20 11:59:15
    转自: 图像几何变换之仿射变换:https://www.cnblogs.com/liekkas0626/p/5238564.html 1. 原理  仿射变换(Affine Transformation 或Affine... 对应的齐次坐标矩阵表示形式为:    仿射变换保持了二维图形...
  • 对应的齐次坐标矩阵表示形式为: 仿射变换保持了二维图形的“平直性”(直线经仿射变换后依然为直线)和“平行性”(直线之间的相对位置关系保持不变,平行线经仿射变换后依然为平行线,且直线上点的位置顺序不会...
  • 图解图像仿射变换

    2020-03-18 16:53:49
    一. 原理: 文章参考自:... 仿射变换(Affine Transformation 或 Affine Map)是一种二维坐标(x,y)到二维坐标(u,v)的线性变换,其数学表达式为: 仿射变换数学表达式 ↑ ...对应齐次坐标矩阵 ↑ ...
  • 等距变换:在仿射变换下,欧几里得距离(旋转矩阵是正交的)不变(行列式的值为1或-1)的齐次坐标变换。 变换矩阵: 变换矩阵可以简化为 等距变化有三个自由度,两个点构成四个方程解参数。 变换效应:长度...
  • warp(图像仿射变换

    2019-10-01 10:08:45
    对应的齐次坐标矩阵表示形式为: 仿射变换特点: 直线经仿射变换后依然为直线; ’直线之间的相对位置关系保持不变,平行线经仿射变换后依然为平行线,且直线上点的位置顺序不会发生变化; 非共线的三对对应...
  • 它被叫做点的齐次表达,位于投影平面P2上。所谓单应就是发生在投影平面P2上的点和线可逆的映射。其它叫法包括射影变换、投影变换和平面投影变换等。单应变换矩阵是一个3*3的矩阵H。这个变换可以被任意乘上一个非零...
  • 图像仿射变换原理1:齐次坐标来龙去脉详解 图像仿射变换原理2:矩阵变换、线性变换和图像线性变换矩阵 图像仿射变换原理3:仿射变换类型及变换矩阵详解 图像仿射变换原理4:组合变换及对应变换矩阵 一、百度翻译 ...
  • 图像的仿射变换原理及python实现

    万次阅读 多人点赞 2018-09-21 13:16:17
    对应的齐次坐标矩阵表示形式为: 仿射变换保持了二维图形的“平直性”(直线经仿射变换后依然为直线)和“平行性”(直线之间的相对位置关系保持不变,平行线经仿射变换后依然为平行线,且直线上点的位置顺序不会...
  • ·仿射变换是由一个线性变换与一个平移变换组合而成。对于向量来说平移操作是没有意义的,而平移变换只能应用于点。 ·齐次坐标表示,是将原先...这样4 x 4矩阵称为仿射变换矩阵表示。 下面来说说平移的一些细节:
  • 齐次坐标下: 平移变换: 绕原点放大和缩小: 绕点(x, y)放大和缩小(矩阵从右往左计算): 旋转变换: 顺时针公式推导: 逆时针公式推导: 计算仿射变换矩阵 方程法: python cv2....
  • 其实呢,因为齐次矩阵是我们平常开发用的比较多的,我曾经在Core Graphics框架 :仿射变换与齐次坐标简单的提到过(小白视角),这篇我将对齐次矩阵进行进一步的说明. 那么接下来,好戏登场了. 矩阵的行列式 在任意的一个...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 125
精华内容 50
关键字:

仿射变换齐次矩阵