矩阵和映射包含两方面的关系:code
简单:已知矩阵 M, 从向量 x 映射到 M * x. (注:矩阵与行向量的点乘)blog
稍微复杂:已知映射 x ->
M * x, 求矩阵 M。图片
第一种状况直接运算就能够获得映射,就不详细写了,着重写第二种状况。io
首先,假设 x 为 n 维行向量, M*x 为 m 维列向量,能够知道 M 是 m × n 大小的矩阵。在点乘里面,M 的列向量是基向量, x 向量的每一个份量是线性组合的系数,M 矩阵能够写成:方法
怎么求出 v1, v2, ..., vn 向量呢?利用基向量带入便可获得:im
例一 :将一张图片向右拉伸两倍,即 (x, y) 变为了 (2x, y), 它的变换矩阵能够这样求:img
求得的变换矩阵就是 M = (v1, v2)e2e
例二 :将一张图片逆时针旋转 90 度,变换矩阵 M 能够这样求:co
求得的变换矩阵也是 M = (v1, v2)错误
一样,将图像旋转 theta 角度和平移操做 (translation) 也能够用这个方法求出变换矩阵。
根据上述方法虽然能够求出图像平移的变换矩阵,可是若是咱们将 [0, 0] 左边进行变换,发现原点仍是在原点,并无平移,结果显然是错误的,这是什么缘由呢?这里就不得不说一说线性映射了。
线性映射须要知足两个条件:
首先,左乘矩阵确定是一个线性映射。考虑上面的例子,图像伸缩、旋转都符合两个条件,而图像平移不符合,所以不是线性映射,不存在变换矩阵。更进一步,何时才是一一映射呢?当矩阵 M 是一个满秩矩阵,此时 M 可逆,该映射是一个 one-to-one and onto 的线性映射。