您的位置:首页 > 其它

矩阵变换与图片平移,旋转,缩放的原理

2013-04-01 12:25 260 查看
矩阵这个东西看起来很简单,但是我觉得要把它理解成某一种东西(比如说变换)还是有点难度。我在这个问题上面就困扰了很久。某一天,脑袋里面突然灵光一闪,貌似理解了一些,心中甚是欢喜,隧写下这篇文章,以至于以后有所帮助。

1.对矩阵的理解

我个人觉得矩阵就是一个用括号括起来的东西,除此之外没有什么感觉。但是转换这个东西就有点意思了。

比如说:我可以把它看成是一个函数,是某种准则或者是一个魔法箱。

T(X)=AX;

这就是一个矩阵转换,左边是一个函数(我是这样看的),右边是一个矩阵与向量X相乘。

先解释一下左边:

T(X)------------------我们知道函数是一种映射关系,我们给一个X值,经过这个函数的计算我们就可以得到另一个值。

同理,我们给一个向量X给这函数,那么这个函数会给一个输出的值(假设这个值也是向量)。经过这样变化,那么我们

可以这样理解,X进入T这个变换函数变成了另外一个X',我认为这就是T对X进行的一次变换。不知道我理解的对不对,如果不对,希望高手指教

理解了变换了,接下来举一个例子:

例如一个向量X=(1,2);我不知道这个具体的变换函数是什么,就用T表示

假设X经过T变换后,会得到另外一个向量X'=(5,6);变换这个概念解决了,接下来就是怎么获得这个变换函数

2获取变换函数:

其实这个变换函数就是A矩阵。因为T(X)=AX;

很容易证明符合这个变换的矩阵是唯一,也就是说你求出来的A是只有一个的。

下面给出证明:

证明:T(X)=AX;A的唯一性;

X=IX;I是单位矩阵-------------------------X=[e1,......................en]X

[e1,......................en]是向量X的正交基底;

X=x1*e1+x2*e2+......................xn*en;

等式两边同时线性变换;

T(X)=T(x1*e1+x2*e2+......................xn*en);

=>T(X)=X[T(e1)...................T(en)]

所以A就是[T(e1)...................T(en)];

证明过程完毕。

有证明结果可知A就是[T(e1)...................T(en)];

那么我们想对X做变换,那我们先对这个基底做变换,求得A矩阵,然后就可以求得X'=AX;

变换之后的向量,

举个例子:

比如说我想把一下向量都旋转30度

a=(1,2); b=(3,4);c=(0,1);

根据上面的的说明,我首先得找到这些向量的正交基底,很显然是e1=(1,0);e2=(0,1);

然后我们对基底做变换,旋转30度,做顺时针旋转。

T(e1)=(cos(PI/6),-sin(PI/6)) T(e1)=(sin(PI/6),cos(PI/6));

所以A就是

cos(PI/6) sin(PI/6)

-sin(PI/6) cos(PI/6)

把以上向量a,b,c与A相乘一下,就获得了a,b,c旋转30的向量。

好了,写完了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐