如何通俗的解释仿射变换?

知乎里有些扫盲贴真是精华,讲得相当通俗易懂。
把复杂的东西讲清楚也是件不容易的事,这篇文章的作者是用了真心。
简单来说,“仿射变换”就是:“线性变换”+“平移”。
先看什么是线性变换?


1 线性变换


线性变换从几何直观有三个要点:
  • 变换前是直线的,变换后依然是直线
  • 直线比例保持不变
  • 变换前是原点的,变换后依然是原点
比如说旋转

image.png

image.png

image.png

image.png

image.png

1.1 代数
简单讲一下旋转是怎么实现的,可以让我们进一步了解代数是怎么描述线性变换的。

image.png

image.png

image.png

image.png

你可以手动操作下,会发现旋转矩阵在不断变化(为了方便观察旋转,我标记出一个顶点):



总结下来,线性变换是通过矩阵乘法来实现的。


2 仿射变换


仿射变换从几何直观只有两个要点:
  • 变换前是直线的,变换后依然是直线
  • 直线比例保持不变
少了原点保持不变这一条。
比如平移:


image.png

因此,平移不再是线性变化了,而是仿射变化。
2.1 代数
我们来看下仿射变换是怎么用代数来表示的。
上一节我们说了,线性变换是通过矩阵乘法来实现的,仿射变换不能光通过矩阵乘法来实现,还得有加法。

image.png

image.png

image.png

image.png



因为我们表示仿射变换为:

image.png


2.2 通过线性变换来完成仿射变换
这是我觉得非常优美的一个地方:

image.png

什么意思?继续举例子:

image.png

image.png

这样我就可以在三维空间下通过

image.png这个线性变换来操作平面上的二维正方形,完成仿射变换:

image.png

自己动手操作一下:

5qOZkHY1Pw.gif

image.png

image.png

如果还有没有清楚的地方,可以结合之前的描述,看一下维基百科“仿射变换”词条里的一个gif动图,非常生动的表明了这一过程:

CYt0D1cu2L.gif



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864