
2.3.1 逆矩阵
以2.2.3节中图2-2-6所示的向量旋转变换为例,矩阵是向量
逆时针旋转到
的旋转变换,那么,如果从
顺时针转到
的旋转变换是什么呢?这个变换相对于
而言,是逆变换。

是
的逆变换,反之亦然。这两个矩阵具有如下特点:

当然,并非所有的线性映射都能如同上面演示的那样,从像通过逆变换到原像。例如2.2.2节中的(2.2.5)式的线性映射,它将三维向量空间的向量映射到了二维向量空间,又如:

其中是三维空间的一个平面,
是二维空间的一条线段,如图2-3-1所示,对于这种线性映射,就无法逆回去了,或者即便逆回去,也不是唯一解了。那么,矩阵
就不能乘以某个矩阵之后得到一个单位矩阵。

图2-3-1
比较和
,能够实现逆向变换的矩阵
是方阵。这个结论可以推广到
的矩阵中,即:
定义 设是
的方阵,如果存在矩阵
,使得:

其中是单位矩阵,我们就说矩阵
是可逆的(或称“非奇异的”,Invertible),称矩阵
为
的逆矩阵(Inverse Matrix),记作:
。

由逆矩阵的定义可知,一个矩阵如果是可逆的,那么它首先要是一个方阵。在我们所学过的各种矩阵中,单位矩阵毫无疑问都是方阵,并且,所以单位矩阵的逆矩阵还是单位矩阵。
如果把单位矩阵经过一次初等行变换之后,会得到初等矩阵,显然行变换是可逆的,所以初等矩阵也是可逆的。例如对实施初等行变换
后得到初等矩阵
,如果要计算它的逆矩阵,则只要将它变换回单位矩阵,同形状的单位矩阵也同时变换:

在上面的矩阵中,竖线左侧是初等矩阵,右侧是同形状的单位矩阵。如此排列,主要目的是变换方便。这样的矩阵,称为增广矩阵。如果将左侧的初等矩阵变换为单位矩阵,右侧的单位矩阵做同样的变换,那么所得到的矩阵,就是
的可逆矩阵。实施变换
得:

所以,。
对于任何可逆矩阵,要计算它的逆矩阵,都可以用类似上面的方法。但是,这里要特别说明,用手工方式进行计算,不是本书的重点,致力于机器学习的读者,更要熟练使用Python语言生态系统中的NumPy、Pandas等各种库、模块来解决各种计算问题(参阅:《跟老齐学Python:数据分析》(电子工业出版社))。
下面以显示器上对颜色的表示为例,说明逆矩阵的应用和计算方法。通常可以用三个相对独立的变量来描述颜色,这就构成了一个向量空间,我们称之为颜色空间,比如:
● RGB:通过Red、Green、Blue三原色来描述颜色的颜色空间。在网页的CSS中设置颜色的时候,常用十六进制的6个数字,如 #336699表示一种颜色,这里的6个数字被分为三组,即(33,66,99),分别对应红(R)、绿(G)、蓝(B)三种颜色。每种颜色的成分可以用从0到255(十进制)的数表示,0是最低级,255是最高级。此外,还可以用诸如rgb(255,0,0)或rgb(100%,0%,0%)(这两者都表示红色)的形式表示颜色。
● YIQ:是NTSC制式的模拟彩色电视所使用的颜色空间,Y表示图像的亮度,I、Q是色调的两个分量,I代表从橙色到青色的颜色变化,Q代表从紫色到黄绿色的颜色变化。
● YUV:是PAL制式的模拟彩色电视所使用的颜色空间,我国的模拟彩色电视机即为PAL制式。Y代表亮度,U、V代表色差,构成彩色的两个分量。YUV颜色空间将Y、U、V分离,如果只有Y分量而没有U、V分量,那么表示的图像就是黑白灰度图像,从而让黑白电视机也能接收彩色电视机的信号。
不同的颜色空间从不同角度描述了颜色,也有不同的特点和用途。比如RGB颜色空间适用于显示色彩,不适用于获取图像,因为三个分量容易受到亮度的影响,特别是在自然环境下,而YUV则对外界干扰有一定的鲁棒性。
正如不同向量空间可以变换,颜色空间都可以表示为向量,它们之间也可以线性映射。下面所表示的就是从RGB变换为YUV的方式:

反过来,通过逆矩阵,可以计算从YUV变换为RGB的关系:

即:

那么,这个逆矩阵是如何计算出来的?刚才已经说了,手工计算逆矩阵不是本书的重点,以下用代码实现:

这里所创建的二维数组表示RGB变换为YUV的矩阵,利用NumPy提供的函数inv()计算其逆矩阵。

对计算结果取3位小数,与前述显示相同。
用手工计算逆矩阵比较烦琐,还是用inv()简单,不过读者要理解逆矩阵的基本含义。
其实,我们很少具体计算某个矩阵的逆矩阵,但是逆矩阵在进行理论推导的时候会经常用到,特别是它的一些运算性质,罗列如下,请读者了解:
性质 矩阵是
的可逆矩阵,
是非零数:
●
●
●
●
●
● 若计算,将其表示为
:
● 的各列线性无关
● 是可逆矩阵
● 当且仅当时,
可逆
这里所列出的可逆矩阵的性质,有的内容要在后续介绍,比如是什么,看下一节。