当前课程知识点:多媒体技术基础 > 第三章 数据压缩的基本技术 > 3.6 正交变换编码 > 3.6 正交变换编码
这一节我们学习正交变换编码
正交变换编码
跟我们前面所介绍的预测编码一样
可以用于对数据进行压缩
那我们来看一下变换的目的
对于数据压缩来说
我们对于信源进行一个变换编码
目的是为信源找到一种
更合适的表示方式
通过这种更有效的表示方法
我们能够在变换域或者是在频率域中
更有效地去除信源的相关性
通过去除信源的相关性
我们就达到了数据压缩的目的
变换我们可以看成是
信号在基矢量上的一种投影
那么我们把变换过程认为是
把信号表示成一组基矢量的线性组合
那么我们得到的变换系数
其实就是这些基矢量
对于信号的一系列的贡献
那么从这个图我们做一个理解
假设我们上面的这个图像块
我们以下面这四个
基函数进行一个分解
也就是说我们通过
对于这个图像块在下面四个图像块
所描述的基函数上进行一个分解
我们看t1 t2 t3 t4
可以认为是每一个基矢量
对这个图像块的一个贡献
这样对于这个图像块的描述
我们就可以通过
t1 t2 t3 t4
这些系数来表征
那么我们希望的这个变换
应该具有什么样的特性
因为我们对于数据压缩来说
变换的目的是为了
为信源找到一个更有效的表示方式
那么在这样子的一种有效的描述下
我们能够更好的对信源进行表述
所以我们希望变换
首先是具有
系数间相关性小的特点
也就是说
通过对信源进行变化
我们希望得到的变换系数
之间的相关性更小
而且我们希望
变换域中能量是相对集中的
也就是说希望变换之后的系数
它的能量是集中在少数系数上
这样方便我们进一步地
通过量化来减小数据量
我们假设用T来表示变换矩阵
一个N维的变换矩阵
那么信号矢量用X来表示
变换系数用Y来表示
那么这样正反变换我们可以给出它的描述
那么这是一般的这个变换的
正反变换的矩阵表达式
在变换编码中
最有效的变换是正交变化
所以我们来看一下正交变换
变换矩阵T的转置共轭对应的
就是由Φ所给出来的
这样一组变换系或者叫基函数组成
那么如果基函数之间具有正交性
也就是满足这样一个关系式的话
那么这个变换矩阵
就有这样一个性质存在
也就是说
它的转置共轭跟它自己相乘
得到的是单位阵
那么这样我们就能够得到
这个矩阵的幂跟它的
转置共轭是等价的
在这样子的一个条件下
我们来看一下
用这个变换矩阵T
来描述我们的信号X
就可以得出这样一个描述的表达式
那么在这个表达式里面
我们看Φi是基函数
那么这里头的yi就是每一个基函数对
表述X所给出来的贡献
那么就是我们所说的变换系数
那么这样子的一个正交变换
我们最熟悉的一个例子就是
三维欧几里得空间里面我们描述一个
矢量所基于的这个三维的立体坐标
那么在三维坐标空间中的一个矢量X
我们可以对它进行一个有效的表述
我们看一下
我们可以把它在
三个坐标方向上进行一个分解
那么每一个坐标上的分解系数
对应的就是我们通常所说的
三维坐标中的三个坐标a b c
我们对一个信源施加相应的正交变换
那么我们希望
得到的变换系数能量越集中越好
而且变换系数之间的相关性越小越好
这样我们就能够通过少数的系数
来还原出原来的信源
那么在一系列的变换编码中
不同的变换矩阵对应的这个变换的
效率或者是说这个变换的好坏是不一样的
那么我们来看一下
最佳的变化
我们现在讨论
在最小均方误差意义下的
最佳变换是什么
我们的目标是要找到一种正交变换
我们利用这个正交变换
把信源X转换为对应的变换系数Y
我们如果用Y来恢复X的时候
只用Y中的部分分量来进行恢复
能够得到最小的失真
那么这样子的变化
是我们现在要找的最佳的变化
那么这个失真的度量
如果是按照
最小均方误差来进行衡量的话
那么我们得到的这个变换就叫
最小均方误差意义下的最佳变化
那么我们把这样子的一个过程
用数学的形式表示一下
做一个分析
X通过正交变换转换为一组变换系数
那么假设我们的变换矩阵是一个N维的
那么我们得到的系数是N个系数
如果我们只用其中的M个系数来
对于输入信号进行一个还原
也就是对X进行还原的话
那么我们可以用这个表达式给出
这样一个还原的一个表达
在这儿这个M是我们用来
进行X还原的系数的数量
我们假设M是小于N的
也就是说我们不是用全部的变换系数
用来还原我们的X
我们只用一部分系数来进行还原
那么这个时候
还原信号XM
一定跟我们原始的X信号是不一样的
它们之间是有失真的或者是叫有误差
那么这个误差我们求一下
我们看到这个误差就是
由我们丢弃掉的那些变换系数所构成
那么对这个误差我们求一个均方差
求均方差的这个式子里头
那么我们做一个数学上的一个分析
在这个表达式里面
我们把这个X用
变换基和y来代进去
那么我们得到这样子的一个关系
在这个关系式中ΦiH乘以Φk
我们可以利用刚才我们前面所说的
正交变换变换基之间的正交关系
我们就可以得到这样一个结果
那么在这个结果中
我们把yi
用ΦiH·X代进去
整理之后
我们就得到了
现在所看到的这样一个结果
那么在这个表达式中
当信号的均值为零的时候
那么这一部分
其实给出来的是信号的协方差矩阵
我们用∑来表示这个协方差矩阵
那我们现在的问题是希望均方差最小
那么什么样的变换矩阵
能够得到最小的均方误差呢
这实际上是一个优化问题
那么我们可以把它用
带约束的优化问题来描述出来
就是在基函数具有
正交关系的这样一个约束下
我们求能够获得最小均方误差的
那样一组正交基
这就是我们要找的最佳变化
那么这样一个优化问题我们借助于
拉格朗日乘数法来进行求解
我们可以得到最终的这个结果
当满足这个关系式的时候
那么这个正交变换就是
均方误差最小意义下的最佳变化
那么我们来看一下这个关系式
这个表达式是能够
获得最佳变换的一个前提条件
那么这里面的∑X是信号的协方差矩阵
那么这个Φi
就是我们刚才所说的变换矩阵中的基函数
在这个表达式里头
这个Φi其实就是我们协方差矩阵的
本征向量或者叫特征向量
λi是协方差矩阵的特征值
所以我们现在求
最佳变换得到的是一个什么样的结果
就是在均方误差意义下
最佳的变换是一个以
信号的协方差矩阵的本征矢量
为基函数的这样子的一个正交变换
那么如果我们对信源进行正交变换
如果采用这个协方差矩阵的特征矢量
来构造这个变换矩阵的话
那么我们就能够得到最小的均方误差
这个意义下的这样子的一个最佳变换
就是我们所说的KL变化
那么从这样子的一个结论中我们看到
均方误差意义下的最佳变换是一个跟
信源的概率特征相关的这样一个变化
所以说不同的信源
那么我们要想进行这种最佳的变换
那么要基于信源的统计特性
来确定所使用的变换矩阵
那么这其实是一件不容易的事情
所以说在实际中我们很少使用
KL变化来做信号的这个压缩编码
那么就是因为
它的变换矩阵是随着信源变化的
那么实现起来不容易
而且没有相应的快速算法
所以说KL变化
我们通常在理论上以它作为一个
标尺来评价其它的变换的性能好坏
那么我们来研究一下
这样一个最佳变换
得到的变换系数
系数之间具有什么样的一些特性
那么我们基于得到的这个系数Y
我们求变换系数的协方差矩阵
用∑Y来表示
我们把这些变换关系代进去之后
通过整理我们得到Y的协方差矩阵是
这样的一个协方差矩阵
那么我们从这个矩阵中看到
这个协方差矩阵只在对角线上
是非零的
其他位置上都取零
那么说明系数之间是没有相关性的
非对角线上的这些位置
代表着
Y分量时间的协方差值
协方差值为零
说明系数之间的相关性是为零的
对角线上的值λ1到λN
对应的是Y分量的方差
那么我们也看到了
它的能量的聚集的特性
所以说KL变换
在系数去相关以及能量集中
这两个方面都具有
非常优秀的表现
那么我们来看一下
基于这样一个变换得到的这个均方差
那么这个最小的均方误差是由
我们丢弃掉的那些系数所构成的
刚才我们也说了
KL变换它是性能最优的一种变化
那由于它的基向量
是要由这个信号的统计特性来确定
所以说使用起来不是很方便
而且缺乏快速算法
那么我们在实际中
我们常常采用离散余弦变换来进行
信号的正交变换编码
在性能上离散余弦变换
跟KL变换非常相近
尤其是对图像和视频这类信源来说
离散余弦变换的性能
非常接近于KL变换
所以说对于图像和视频的压缩编码
我们常常采用离散余弦变换
我们先来看一下一维的离散余弦变换
上面给出来的是
正变换sk对应的就是信号样值
S(n)对应的是变换系数
对应的逆变换
正变换和逆变换的表达式中的C(n)
在N取不同值的时候是取不同的值
我们看到余弦变换
它的变换基是固定的
是以cos函数来构造
所以这种变换我们把它叫做是
DCT变换余弦变换
一维的余弦变换很容易就能够推广到
二维的余弦变换
这个地方我们给出
二维余弦变换的正反变换
在这儿s(j k)表示的是信号二维指
也就是说
我们如果对一个图像进行一个
二维的DCT变换的话
S(j k)代表的就是图像中的
j k这个位置上的像素
那么通过这样一个正交变化
我们得到变换系数S(u v)
那么u v我们又把它叫做是频率量
当u v=0的时候
对应的其实是我们
图像的平均亮度或者叫直流分量
这个地方
左边的图示
给出来了二维DCT变换
当N=8的时候
它的基函数的一个图示
在这个图中我们看到水平方向
从左到右频率不断增高
垂直方向从上到下频率不断增高
在左上角的这个区域
对应的就是直流分量
如果二维DCT变换
施加在一个图像上的话
那么我们得到的这个直流分量
代表了我们图像的平均亮度
右边的这一组图
给出了原信号矩阵和
变换系数矩阵之间的对应关系
假设我们是一个8·8的一个图像块
那么里面标出了每一个位置上的像素值
那么经过二维的DCT变换
对应得到相应的变换系数
那么系数的这个位置
在我们图中给出了标注
下面我们以8·8的
亮度块DCT变换作为例子
来对DCT变换的
实现过程做一个了解
在这个图中左上角的这个矩阵
代表的是一个
8·8的一个图像块矩阵
矩阵中的每一个数值代表的是
对应位置上像素的像素值
那么对这样一个8·8的
这样一个图像矩阵
我们用一个8·8的DCT变换
对它进行一个变换编码
DCT变换之后得到的变换系数
就是我们右上角的这个矩阵所描述的
那我们看到原始的图像块
经过DCT变换之后
我们得到的变换系数
它的能量已经产生了聚集
主要的能量集中在低频端
高频端 我们看一下
它的系数基本上大多数为零
也就是说
变换系数之间的相关性降低了
或者说没有相关性了
很多系数的相关性已经被去除了
那么DTC变换之后
一般会接量化单元
那么DCT变换的系数
我们送入到量化器里面进行一个量化
右下角看到的是一个量化的量化方式
对应的就是一个量化表
DTC变换的系数经过量化表
对应的这个量化步长
量化的处理
那么我们得到的量化器的输出
就是我们左下角的
这个矩阵给出来的结果
我们会看到经过量化的环节
把原本DCT系数中
有些非零的系数也变成了零
那也就是说
经过量化的环节我们进一步的
对于数据之间的这个值
做了一个能量上的降低
那么我们再来看一下相反的过程
刚才经过DCT变换
经过量化处理后的
这些量化输出的矩阵
我们经过一个反量化之后
我们得到了现在所看到的
这样子的一个输出结果
那我们再用DCT反变换
作为一个反变换处理
我们就得到了一个还原的图像块
那么这个图像块跟我们刚才原始的
图像块之间是有值的差别的
那么我们可以
求一下这两者之间的误差
也就是重建样值和原始值之间的误差
那么因为在我们整个的
这样一个处理环节里
包含着量化环节
所以说我们的这样一个
编码是引入失真的
那么具体的失真
我们通过这样子的一个矩阵
给出重建值和原始值之间的误差
那么通过DCT变化
我们能够使得这个
变换系数之间的相关性得到
进一步的去除
而且能量也得到了集中
那我们来看
用不同数量的系数来进行
数据的还原
那么会有什么样的一个表现
在这我们以一个图像来做一个例子
左上角的这个图是原始的图片
我们用8·8的DCT变换
对这样一个图片进行一个DCT变换处理
得到每个图像块64个系数
那么我们用这些变换系数
进行一个图像的还原
如果我们只用它64个
系数中的16个进行还原的话
我们得到的还原图是左上角的这个图
那么如果我们只用它64个系数中
8个能量大的系数进行还原
那么我们得到的还原图是这个图
我们会看到虽然我们用来
还原图像的这个变换系数
不是全部的系数
但是我们还原的图
跟原图之间的差别不是很大
也就是说
DCT变换在图像压缩编码中
它的有效性很直观的体现出来
那么如果我们只用4个系数
来还原丢弃掉变换系数中的60个
那么我们得到的还原结果我们看一下
也基本上能看出原图是一个什么样的
-1.1 概述
--1.1 概述
-第一章 作业
--第一章 作业
-2.1 光和彩色
--2.1 光和彩色
-2.2 视觉特性
--2.2 视觉特性
-2.3 扫描
--2.3 扫描
-2.4 模拟彩色电视信号
-2.5 数字电视信号
-第二章 作业
--第二章 作业
-3.1 信息熵理论
-3.2 率失真理论
-3.3 预测编码
--3.3 预测编码
-3.4 序列图像中运动矢量的估计
-3.5 具有运动补偿的帧间预测
-3.6 正交变换编码
-3.7 子带编码
--3.7 子带编码
-3.8 量化编码
--3.8 量化编码
-3.9 熵编码
--3.9 熵编码
-第三章 作业
--第三章 作业
-4.1 基于帧的视频编码
-4.2 视频压缩编码国际标准
-4.3 H.264/AVC
-4.4 H.265/HEVC
-4.5 基于率失真优化的编码模式选择
-4.6 恒定速率编码器的速率控制
-4.7 压缩编码算法性能的评价
-第四章 作业
--第四章 作业
-5.1 概述
--5.1 概述
-5.2 人的听觉特性
-5.3 音频信号编码方法
-第五章 作业
--第五章 作业
-6.1 多媒体传输对网络的要求
-6.2 网络对多媒体信息传输的支持
-第六章 作业
--第六章 作业
-7.1 多媒体数据及其时域特征的表示
-7.2 分布式多媒体系统中的同步
-7.3 连续媒体同步的基本方法
-7.4 广播应用的传输层协议
-7.5 宽带应用的传输层协议
-第七章 作业
--第七章 作业