线性代数学习笔记9-2:基变换(求变换后的坐标、同一个线性变换不同相似矩阵)、图像压缩(基变换的应用)

本文介绍基变换的基本知识,更多内容参考3.7 基变换,图像压缩

基变换

之前说过,矩阵基于坐标来描述线性变换(给定依赖的坐标系,则线性变换对应于一个特定的矩阵);

基变换就是「转换所依赖的坐标系」,从不同角度观察同一个问题,意义在于选择合适的基向量可以简化计算;基变换的重要应用就是图像、音视频的压缩储存

基变换和线性变换有某种内在联系
基变换前后:
输入/输出的空间维度相同,对应拉伸和旋转的线性变换;
输入/输出的空间维度不同,对应投影/降维的线性变换;
而我们学习线性变换时,可以从“基向量发生变换”的角度理解其对应的矩阵,详见线性代数学习笔记3-1:矩阵与线性变换

进行基变换时,发生了两件事:

  1. 每个向量(在新的基向量下)有了新的坐标,求新旧坐标之间的关系,此即基变换的坐标转换问题
    基变换只不过是在同一个空间中,用不同方式(基于不同坐标系)来描述同一个向量
  2. (由于矩阵基于坐标来描述线性变换),每个线性变换(在新坐标系下)有了新的矩阵表示,求新旧矩阵之间的关系,此即相似矩阵问题(同一线性变换在不同坐标系下的矩阵表示)
    相似矩阵只不过是在不同坐标系下,同不同方式来描述同一个线性变换
1. 基变换的坐标转换问题

原坐标系的基向量为 v 1 , v 2 , . . . , v n \mathbf{v}_1,\mathbf{v}_2,...,\mathbf{v}_n v1,v2,...,vn
若向量 x = x 1 v 1 + x 2 v 2 + … + x n v n \mathbf{x}=x_{1} \mathbf{v}_{1}+x_{2} \mathbf{v}_{2}+\ldots+x_{n} \mathbf{v}_{n} x=x1v1+x2v2++xnvn,其坐标记为 x = [ x 1 , x 2 , . . . , x n ] \mathbf{x}=[\mathrm x_1, \mathrm x_2, ...,\mathrm x_n] x=[x1,x2,...,xn]

目标:我们希望变换到另一组基( w 1 , w 2 , . . . , w n \mathbf{w}_1,\mathbf{w}_2,...,\mathbf{w}_n w1,w2,...,wn),在另一组基下表示同一个向量 x \mathbf{x} x

  • 这就是要求解一组 c = [ c 1 , c 2 , . . . , c n ] \mathbf{c}=[\mathrm c_1, \mathrm c_2, ...,\mathrm c_n] c=[c1,c2,...,cn],满足 x = c 1 w 1 + c 2 w 2 + … … + c n w n \mathbf{x}=c_1 \mathbf{w}_1+c_2 \mathbf{w}_2+\ldots \ldots+c_n \mathbf{w}_n x=c1w1+c2w2+……+cnwn
  • 最终,问题就是求解方程 x = W c \mathbf x=\boldsymbol{W} \mathbf{c} x=Wc
    其中 W \boldsymbol{W} W的列向量为另一组基 w 1 , w 2 , . . . , w n \mathbf{w}_1,\mathbf{w}_2,...,\mathbf{w}_n w1,w2,...,wn
    方程的解 c = [ c 1 , c 2 , . . . , c n ] = W − 1 x \mathbf{c}=[\mathrm c_1, \mathrm c_2, ...,\mathrm c_n]=\boldsymbol{W}^{-1} \mathbf{x} c=[c1,c2,...,cn]=W1x就是 x \mathbf{x} x另一组基下的坐标
    ps.这里的前提是,我们可以写出新的基向量「在旧基向量体系下的坐标」(即: W \boldsymbol{W} W的列向量/新的基向量的坐标,是针对原坐标系而言的),从而方程两端才有可比性、才能相等
  • 可见,新坐标系的基向量选取恰当,才能保证 W \boldsymbol{W} W可逆、新坐标 c = W − 1 x \mathbf{c}=\boldsymbol{W}^{-1} \mathbf{x} c=W1x易于计算
2. 相似矩阵

矩阵基于特定坐标系来描述线性变换,或者说同一个线性变换,在不同坐标系下的矩阵不同,实际上这就是两个相似矩阵

对于同一个线性变换:

  • 在基向量 v 1 , v 2 , . . . , v n \mathbf{v}_1,\mathbf{v}_2,...,\mathbf{v}_n v1,v2,...,vn下,线性变换对应矩阵 A \boldsymbol A A
    在基向量 w 1 , w 2 , . . . , w n \mathbf{w}_1,\mathbf w_2,...,\mathbf{w}_n w1,w2,...,wn下,线性变换对应矩阵 B \boldsymbol B B
  • 那么,两个矩阵的关系为: B = M − 1 A M \boldsymbol B=\boldsymbol M^{-1}\boldsymbol A\boldsymbol M B=M1AM
    其中, M \boldsymbol M M就是基变换矩阵

基变换的应用:信号有损压缩问题

注意,压缩分为有损和无损,这里讨论有损压缩

对于一个原始未处理的信号 x \mathbf x x(二维图像也可以化为一个列向量),有损压缩的思路是:

  1. 首先进行基变换,用另一组基 w 1 , w 2 , . . . , w n \mathbf{w}_1,\mathbf w_2,...,\mathbf{w}_n w1,w2,...,wn表示同样的信号 x \mathbf x x,其在新基向量下的坐标为 c = [ c 1 , c 2 , . . . , c n ] \mathbf{c}=[\mathrm c_1, \mathrm c_2, ...,\mathrm c_n] c=[c1,c2,...,cn],满足 x = c 1 w 1 + c 2 w 2 + … … + c n w n \mathbf{x}=c_1 \mathbf{w}_1+c_2 \mathbf{w}_2+\ldots \ldots+c_n \mathbf{w}_n x=c1w1+c2w2+……+cnwn
    注意,这一步是无损的,但这样做的意义是:
    若不变换就不能进行压缩(丢掉任意一个基向量的坐标信息,都会损失掉大量信息);
    而如果选择了一组良好的基,一部分基向量包含主要信息,另一部分基向量的系数很小,无关紧要,从而可以设定阈值,直接将较小的系数(坐标值)置为0丢弃,从而以较小的信息损失实现压缩

  2. 对新坐标 c = [ c 1 , c 2 , . . . , c n ] \mathbf{c}=[\mathrm c_1, \mathrm c_2, ...,\mathrm c_n] c=[c1,c2,...,cn]进行压缩,也就是丢弃一些较小的坐标值(对整个图片呈现效果影响不大),得到新的“近似”坐标 c ^ \mathbf{\hat{c}} c^(含大量0元素),这一步是有损压缩(在1中已经讲过原理)

  3. 最终,有损压缩后的信号为 x ^ = ∑ c ^ i v i \hat{\mathbf{x}}=\sum \hat{c}_{i} \mathbf{v}_{i} x^=c^ivi,此时求和项已经不是n项( c ^ \mathbf{\hat{c}} c^含大量0元素),可能只剩下两三项,从而实现压缩

整个压缩流程如图:
在这里插入图片描述
可见,图像压缩的本质就是基变换

寻找合适的基

上面说过,想要获得好的压缩效果,就需要找到一组好的基,它需要满足:

  • 计算速度快(做基变换/求逆/做乘法迅速)
    做基变换是上述压缩过程的必须步骤
    而再结合前文的知识,求解基变换后的新坐标,就是求 c = W − 1 x \mathbf{c}=\boldsymbol{W}^{-1} \mathbf{x} c=W1x,因此要求求逆 W − 1 \boldsymbol{W}^{-1} W1迅速、做乘法 W − 1 x \boldsymbol{W}^{-1} \mathbf{x} W1x迅速
  • 基向量有较好的压缩性,即:用少量基向量就能近似重现信号/图像
    如果单纯要求速度快,那么“不变换”就是运算速度最快的方案,然而后续压缩就会丢失大量信息;而合适的基下,信号 x \mathbf x x c = [ c 1 , c 2 , . . . , c n ] \mathbf{c}=[\mathrm c_1, \mathrm c_2, ...,\mathrm c_n] c=[c1,c2,...,cn]有很多较小值,可以实现损失很小的压缩

图像压缩JPEG

JPEG(联合图像专家组 Joint Photographic Experts Group)是一种图像有损压缩
在这里插入图片描述

图像由若干像素点组成,每个像素点的参数为0-255的灰度值(彩色图像与之类似,区别是有三个通道)

对于较大的512x512图像,JPEG先将其划分为8x8的较小网格(64个像素点),并且将二维的数据排放到一列,那么最终图像可以视为一个列向量 x \mathbf{x} x,假如图像共有 64 64 64个像素点,那么 x \mathbf{x} x的长度就是 64 64 64向量有 64 64 64个分量,每个分量就是一个像素点的灰度值),即 x \mathbf{x} x位于 R 64 \mathbf{R}^{64} R64空间内,需要64个基向量

正常情况下,我们使用标准基 [ 1 0 0 ⋮ 0 ] , [ 0 1 0 ⋮ 0 ] , ⋯ [ 0 0 0 ⋮ 1 ] \left[\begin{array}{c}1 \\0 \\0 \\\vdots \\0\end{array}\right], \left[\begin{array}{c}0 \\1 \\0 \\\vdots \\0\end{array}\right], \cdots\left[\begin{array}{c}0 \\0 \\0 \\\vdots \\1\end{array}\right] 1000 , 0100 , 0001 ,基向量长度/个数与图像的列向量 x \mathbf{x} x相同(像素点总数64)

基向量选择方案1:直观想法

直观上,图像中的一片区域,颜色是非常接近,基于这个特性,我们可以压缩图像

此时 [ 1 1 1 ⋮ 1 ] \left[\begin{array}{c}1 \\1 \\1 \\\vdots \\1\end{array}\right] 1111 (低频信号,频率为0)是一个很好的基向量,因为这代表“平滑”,或者说对应图像中颜色接近的一个色块,在图像经常存在,因而其系数通常很大,大片色块几乎只需要这一个基向量来表现(而其余的基向量的系数/坐标值很小,可以压缩丢弃)

例如,一幅天空的照片,有大片白色,此时我们将「亮度值全为255」作为一个基向量,那么白色色块基本可由这一个基向量表征,而其他系数(坐标值)较小的基向量,可以压缩(系数置为0)

基于类似思路,还可得到与上述基向量配套的一系列基向量:

  • 基向量 [ + 1 − 1 + 1 − 1 ⋮ ] \left[\begin{array}{c}+1 \\-1 \\+1 \\-1 \\\vdots\end{array}\right] +11+11 对应类似棋盘的“黑白相间”状态,即噪音扰动等(最高频信号),基变换后在图像中很少存在
  • 基向量 [ ⋮ + 1 − 1 ⋮ − 1 ] \left[\begin{array}{c}\vdots \\+1 \\-1 \\\vdots \\-1\end{array}\right] +111 对应图像一半图像暗一半图像亮的情况
基向量选择方案2:傅里叶基Fourier basis

从频域上看,语音和图像信号,大部分集中在一个频段(而其余频段对应的傅里叶基系数很小,可以压缩丢弃),则可以以频率的高低划分出一系列基向量,这就是傅里叶基

傅里叶基就是之前讲过的傅里叶矩阵的列向量,每个元素为复数的幂(用其做基变换,就是傅里叶变换,即从时域到频域的分析)

对于 R 8 \mathbf{R}^{8} R8空间内的列向量 x \mathbf{x} x,其傅里叶基为 [ 1 1 1 1 1 1 1 1 ] , [ 1 ω ω 2 ω 3 ω 4 ω 5 ω 6 ω 7 ] , [ 1 ω 2 ω 4 ω 6 ω 8 ω 10 ω 12 ω 14 ] , ⋯ [ 1 ω 7 ω 14 ω 21 ω 28 ω 35 ω 42 ω 49 ] \left[\begin{array}{l}1 \\1 \\1 \\1 \\1 \\1 \\1 \\1\end{array}\right], \left[\begin{array}{c}1 \\\omega \\\omega^{2} \\\omega^{3} \\\omega^{4} \\\omega^{5} \\\omega^{6}\\\omega^{7}\end{array}\right], \left[\begin{array}{c}1 \\\omega^{2} \\\omega^{4} \\\omega^{6} \\\omega^{8} \\\omega^{10}\\\omega^{12} \\\omega^{14}\end{array}\right], \cdots\left[\begin{array}{c}1 \\\omega^{7} \\\omega^{14} \\\omega^{21} \\\omega^{28} \\\omega^{35} \\\omega^{42} \\\omega^{49}\end{array}\right] 11111111 , 1ωω2ω3ω4ω5ω6ω7 , 1ω2ω4ω6ω8ω10ω12ω14 , 1ω7ω14ω21ω28ω35ω42ω49

基向量选择方案3:小波 Wavelets

小波基是傅里叶基的有力竞争对手

对于 R 8 \mathbf{R}^{8} R8空间内的列向量 x \mathbf{x} x,其小波基为 [ 1 1 1 1 1 1 1 1 ] , [ 1 1 1 1 − 1 − 1 − 1 − 1 ] , [ 1 1 − 1 − 1 0 0 0 0 ] , [ 0 0 0 0 1 1 − 1 − 1 ] , [ 1 − 1 0 0 0 0 0 0 ] , [ 0 0 1 − 1 0 0 0 0 ] , [ 0 0 0 0 1 − 1 0 0 ] , [ 0 0 0 0 0 0 1 − 1 ] \left[\begin{array}{l}1 \\1 \\1 \\1 \\1 \\1 \\1 \\1\end{array}\right], \left[\begin{array}{c}1 \\1 \\1 \\1 \\-1 \\-1 \\-1 \\-1\end{array}\right], \left[\begin{array}{c}1 \\1\\-1 \\-1 \\0 \\0 \\0\\0\end{array}\right], \left[\begin{array}{c}0 \\0 \\0 \\0 \\1 \\1 \\-1 \\-1\end{array}\right], \left[\begin{array}{c}1 \\-1 \\0 \\0 \\0 \\0 \\0 \\0\end{array}\right], \left[\begin{array}{c}0\\0 \\1 \\-1 \\0 \\0 \\0 \\0\end{array}\right], \left[\begin{array}{c}0\\0 \\0\\0 \\1 \\-1 \\0 \\0\end{array}\right], \left[\begin{array}{c}0 \\0 \\0 \\0 \\0 \\0 \\1 \\-1\end{array}\right] 11111111 , 11111111 , 11110000 , 00001111 , 11000000 , 00110000 , 00001100 , 00000011
这个只是一个小波选择,然而这一组基中有太多从+1跳转到-1的变化,还有很多种更多精细的选择
小波基的优势:

  • 是一组正交基,即任意两个基向量做内积为0(但不是标准正交的,可以将其长度标准化)
    从而求逆运算速度快(列向量标准正交,求逆等价于转置);
  • 并且矩阵向量乘法也很快,因为有快速小波变换FWT

之前学过,对于线性变换,其特征向量给出最佳的基向量,因为在此坐标系下线性变换对应简单的对角阵,每个特征向量给出了主导方向,这是压缩最理想的结果
然而实际中找出图像的特征向量代价太大,我们转而寻求代价小但是接近理想状态的基向量(例如小波基)进行基变换,完成压缩过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值