仿射函数与线性变换的区别

为了方便起见,以下叙述均采用平面直角坐标系。

一个矢量(1,2)可以表示为从原点指向该点的箭头。

你可以对这个矢量进行缩放,比如放大两倍就变成了(2,4)这个操作可以表示为2 x(1,2)。也就是说放大k倍就是k(x,y)上面的例子写成矩阵的话就是,这里用到了矩阵乘法。
( 1 2 ) ( 2 0 0 2 ) \begin{pmatrix}1&2\end{pmatrix}\begin{pmatrix}2&0\\0&2\end{pmatrix} (12)(2002)

这个很简单。你也可以把矩阵中的两个值弄成不一样的。那么如果你对一张图片操作的话,横竖两个方向上的缩放倍数不同图像就变形了。方的变成长方的。你也可以对矢量进行旋转。比如想把向量(1,0)逆时针旋转45度。旋转以后的向量和这个向量会构成一个三角形。旋转以后的是斜边,长度和原来向量长度一样。用勾股定理计算一下。三角形的顶点会变成 ( 2 2 , 2 2 ) (\frac{\sqrt2}{2},\frac{\sqrt2}{2}) (22 ,22 )。这个看起来比较麻烦。但是如果你明白矩阵乘法是怎么算的,那很容易理解为什么一个旋转矩阵会是这样的:
( cos ⁡ ( θ ) − sin ⁡ ( θ ) sin ⁡ ( θ ) cos ⁡ ( θ ) ) \begin{pmatrix} \cos(\theta)&-\sin(\theta)\\ \sin(\theta)&\cos(\theta) \end{pmatrix} (cos(θ)sin(θ)sin(θ)cos(θ))

旋转变换看这个

有些变换,比如反射。相当于你在第一种情况里面对角线上的两个值有一个是负的。那么对应的就会把这个轴翻转过去。别的都很好理解。这些变换被称为线性变换。它提供了把一个图像扭成任意形状的方法。但在二维坐标系内,用2x2的矩阵所不能表示的变换就是平移操作。你在上面所有的操作无非都是给向量的两个分量乘一个系数。没办法再加一个数。想要表达这种计算就得给你的矩阵变成这样:
( a 1 a 2 0 b 1 b 2 0 c 1 c 2 1 ) \begin{pmatrix} a_1&a_2&0\\ b_1&b_2&0\\ c_1&c_2&1 \end{pmatrix} a1b1c1a2b2c2001

这样的话你的(x,y)向量就没法乘进去了。你可以在后面添个1,编程(x,y,1)这样的。那么变换以后的结果就是(xa1+yb1+c1,xa2+yb2+c2,1),去掉最后面的1,前面的就是线性变换加上一个平移变换的结果。这就是仿射变换。简单的说就是一个线性变换加上平移。

仿射变换可以理解为经过对坐标轴的放缩,旋转,平移后原坐标在在新坐标域中的值

更简洁的说:仿射变换=线性变换+平移

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老实人小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值