聂伟《数据压缩的几种重要方法》.docx
《聂伟《数据压缩的几种重要方法》.docx》由会员分享,可在线阅读,更多相关《聂伟《数据压缩的几种重要方法》.docx(47页珍藏版)》请在冰豆网上搜索。
聂伟《数据压缩的几种重要方法》
数据压缩的几种重要方法
一、数据压缩方法概述
到目前为止,对数据压缩还没有一种公认的权威性的分类方法,这是因为数据压缩还是一个较年轻的研究领域。
大部分专家学者倾向于分为可逆法及不可逆法两大类。
“可逆法”又称“多余度减少法”这类算法着眼于消除数据间的相关性,减少多余度而仍保存原有信息。
经压缩后的数据可以恢复重现为原有数据。
采样定理表明:
以大于或等于“Nyquist”采样率进行时间采样,所得的采样值保存了全部的信息。
故以Nyquist频率进行的时间采样被视为多余度减少的最重要的形式。
“不可逆法”又称“爛减少法”。
利用这一类的压缩方法,压缩后的数据势必要丢失一部分信息(爛),因而不能恢复重现原数据,幅值采样(量化)是爛减少的最主要形式。
因为一旦将幅值量化,永远不可能准确地重现原信号。
在这两大类下,又有各种具体方法。
这些方法也普遍适用于工业、军事、其它等需要数据压缩的领域。
对于医学数据的压缩有不少具体的算法,但均可归之于下面几种方法的修剪与揉合。
常用的几种数据压缩方法是:
(-)参数提取法
这种压缩方法提取信号中的某一特征或参数,并把此特征或参数予以传送,而不传送数据的全部信息。
例如,只提取信号的峰值或只提取信号的功率谱并传送谱分量的幅值。
在ECG屮只提取R-R间期并加以传送等。
显然从参数提取法所得的压缩后数据不能恢复重现原信号,因信息损失太多。
它属于“不可逆”压缩或“爛减少”压缩。
这种方法在医疗信息数据压缩中最早使用的一种方法又是当前广泛应用的医疗数据压缩方法。
(二)非多余采样编码法
属于这一算法的有预测及内插法,它的本质是:
根据过去时刻(对预测法)的数据或根据过去时刻及当前时刻(对内插法)的数据作为当前时刻的估计值(即预测值),然后将它与当前时刻的实际值进行比较,其差值若小于某预置容限,认为该实际值属多余采样,不予保留;反之,若差值大于某预置容限,则该当前时刻的实际值属“非多余采样值”应予保留或传送。
它属“可逆法”。
例如ECG信号的压缩算法之一AZTEC属于本算法的变形。
(三)变换编码法
变换编码的主要目的在于把统计相依的采样值变换成“某种程度上的统计独立”的系数。
大多数变换属线性正交变换。
变换本身并不提供压缩,而只是将信号映射到另一域内,在所映射的域中压缩较易实现。
随后通过比特分配的量化过程,把变换后的采样值进行压缩,以供存储或传输。
常用的变换法有下面几种:
1.傅里叶变换;
2.主分量法(K-L变换);
3.余弦变换;
4.哈尔和哈达玛变换;
5.小波变换。
(四)预测编码法
变换编码是把信号变换到另一空间域,以便有效地进行量化,预测编码法则是在信号空
间,特别是在时域内进行的一种压缩编码法,大致过程如下:
先对下一个采样值进行预测,并把该预测值与下一个采样的实际值之差进行编码。
这样做的理由是:
大部分信号集中,用
上述方式得到的差值的方差总小于原始信号的方差。
这样可藉较小的量化级进行有效的量化,从而获得较大的压缩比。
△调制(DM)与差分脉冲编码调制(DPCM)均属预测编码法。
(五)燔编码法
不少多余度减少的方法都是利用采样值之间具有相关性这一点,那末如何达到式(6.14)
所给岀的最大压缩比呢?
通常的做法是分二步来进行。
先使采样值之间统计独立,减少多余
度。
再进行编码,使平均字长等于或近似等于统计独立采样源的炳。
这最后一步常称嫡编码。
医疗数据压缩中常用的哈夫曼(Huffman)编码是爛编码法中的一种编码法。
二、非多余采样编码法
非多余采样编码法分为二类:
一类称预测器,另一类称内插器。
本书先讨论多项式预测器,包括零阶预测器与一阶预测器。
然后讨论多项式内插器,包括零阶内插器与一阶内插器。
最后讨论心电数据压缩中常用的AZTEC数据压缩、TP算法,以及将两者混合而成的
CORTES算法以达到在内容布局上的合理化,所有这些方法都设置一个幅度容许差值或幅度容限带,故又称“容差比较”压缩法。
幅值容差有时不尽合理,为此还将介绍另一种基于
“距离误差”作为判断采样点冗余与否的LADT算法。
(一)多项式预测器
最早,也是最常用于采样数据压缩的方法之一就是多项式预测器,其屮尤以零阶预测器
和一阶预测器使用得最为普遍。
在一切多项式预测器中,下一个采样值由其前面的n+1个采样值所组成的多项式决定:
(6.24)
式屮t代表t时刻的预测值,上式称为n-阶预测器的多项式。
各差分符号的意义如下:
△Xt-i=Xt-i—Xt-2,
Axt-2二Xt-2—Xt-3!
称为2阶预测器,其时
t二xt-i+Axt-1+Ax
t-i
来决定。
这里列出
3阶以内的观测器的多项式如下:
零阶预测器
t二Xt-l
(6.25)
一阶预测器
t二X
t-i+△Xt-i
-2Xt-i—Xt-2
(6.26)
二阶预测器
2
t二
xt-i+Axt-i+A
Xt-1
二3Xt-i-3Xt-2+Xt-3
(6.27)
三阶预测器
丄
2
a3
也就是说,在
2阶预测器屮,t时刻的观测值由t-l、t-2、t-3这三个以前时刻的采样值
二4xt-l~6xt-2+4xt-3-Xt-4
(6.28)
般说来,式(6.22)的n阶有限差分可展开成t时刻以前n+1个采样值的线性组合:
(6.29)
式+al,a2,•••,an+l各系数可用杨辉三角形查出。
图6-28画出了相应于式(6.25)
(6.28)各阶预测器的预测示意图。
图6-28预测器的预测示意
(a)零阶;(b)—阶;(c)二阶;(d)三阶.规忙來与系一|、农(6.25)〜(6.28)各式中的加权系数。
从逻辑上讲,最靠近当前时刻的那个采样值对当前时刻的预测值的影响相应的就最大,权系数也应最大。
零阶、一阶预测器的表达式反映了这一规律。
二阶、三阶表达式就不然。
特别是三阶预测器的多项式中,t-l时刻的权系数仅及t-2时刻的2/3,显然
不合理。
阶数n愈大,这种不合理的情况就愈严重。
故并非项数愈多愈准确。
正因为这个道理,以零阶与一阶预测器用得最多。
压缩是这样进行的:
若预测值“接近”于该时刻的真实值,贝何用预测值来代替该时刻的真实值。
由于预测值仅由以前的诸采样值线性组合得出,说明该时刻的真实采样值与以前
的采样值线性相关,属于多余采样,应把该真实值舍弃。
反之,若预测值与真实值相差较大,说明真实值与以前的采样值之间相关性小,应把该真实值保留,它是非多余采样。
预测值与
真实值之间的接近程度,由容许差值K来规定。
这样:
|Xt(真实采样值)-t(预测值)丨
按上法对采样数据进行逐个鉴别,可得到全部由非多余采样值构成的数据组,利用它可
恢复出原始数据,由此引起的最大误差恒小于Ko
(二)零阶预测器及一阶预测器
零阶预测器及一阶预测器在医学数据压缩中是应用最多和最有效的一种压缩方法,因此,本书对这玫法以于详细阐述。
1.固定窗口零阶预测器如上所述,零阶
预测器由方程(&25)表示:
t二XtT,
工作之初,先设置一组固定容限带(窗口),宽度为2K,K就是上一小节所述的容许差值。
所谓固定窗口,指的是容限带的位置一经设定,在整个压缩过程中就不再变动。
工作
过程如下:
(1)根据式(6.25)求预测值。
它是前一时刻的采样值;
(2)将t时刻的真实采样值xt与上面求得的预测值t-Xt-i,比较,如果两者处于同一容限带内,则认为该真实采样值Xt是多余的,弃而不顾。
t时刻的值沿用t-l时刻的值。
反之,若两者不在同一容限带内,则该真实采样值是非多余的,应予保留。
(3)在t+1时刻,宜注意:
当t时刻的真实采样值属多余采样时,t+1时刻的预测值t+i
二Xt-i;t时刻的真实采样值属非多余采样时,t+i二Xt。
以后的过程就同上面一样重复。
图6-29固定窗口零阶预测原理图
图6-29说明了上述过程。
在23个原采样数据中,有14个被认为是多余的,剩下的9个为非多余采样数据,应该传送出去。
据式(6.16),这时的采样压缩比为
如要在接收端重现原数据,那末还必须记下这些非多余数据相应的时刻。
如此,还要化
掉一些数据字。
故实际的比特压缩比小于2.56o此外,这类预测器的输出是异步的,必须加一缓冲
器,以便能以匀速送出数据。
图6-30为按上述思想设计的固定窗口零阶预测器的计算机程序流程图。
初始化后,迎来了第一个采样数据。
显然是非多余的,应予保留。
同时计算它所在的容限带。
再取下一个数据,也计算所在的容限带。
比较两个容限带,若相重合,说明当前的采样值属多余的。
该当前值连同所在的容限带都弃而不顾,保留相应于前一时刻采样值所在的
容限带,以便与下一时刻的容限带比较。
如果两者不相重合,说明该当前采样值连同它所在
的容限带一起保留。
这一当前采样值应予储存或传送。
其容限带准备与下一时刻的容限带比
较。
如此重复,直到全部医学数据处理完即可打印出非多余数据和比特压缩比。
图6-30固定窗口零阶预测器流程图
2•浮动窗口零阶预测器
与固定窗口零阶预测器相比,现在宽为2K的容限带的位置是随采样值的大小而浮动的。
对每个非多余采样值,总有一个土K的窗口对称地罩在这些值的上下。
图6-31是将图6-29的同一波形用浮动窗口零阶预测的原理图。
在23个原始采样值屮,
有12个被划为多余采样值,11个为非多余采样值。
采样压缩比为
为了重现数据,要附加说明每一非多余采样发生时刻的时间字。
故实际的比特压缩比远
小于2.09。
例如图6-31情况,11个非多余采样要配以11个时间字。
设每一时间用5比特,采样值用8比特,则比特压缩比为
图6-31浮动窗口零阶预测原理图
为了增加①b,可以用所谓的“游程长度”编码。
即不是传送11个时刻的时间字,而只传送在非多余采样之间的三个多余采样段的长度。
这样做仍能重现原始数据,但比特压缩比
可望提高。
如仍设以5比特表示每段游程长度,则此时的比特压缩比为
图6-32为浮动窗口零阶预测器的计算机程序流程图。
工作过程如下:
图6-32浮动窗口零阶预测器流程图
初始化后,取出一个采样值,求出对应时刻的预测值。
后者是前次运算中存于存储器内
的。
将这一时刻的采样值与该时刻的预测值相减,看其差值的绝对值丨xt-t|K
来决定对当前时刻采样值的取舍。
若丨xt-t|>K,则心是非多余的,应予保留。
同时将它存入专放预测值的存储单元,作为下一个采样的预测值以备调用。
若xt-twK|,则心是
多余采样,舍去不要。
这时仅保存预测值,将它存入存储器屮供下次使用。
3•零阶补偿预测器
零阶补偿预测器是浮动窗口零阶预测器的改型。
主要差别在于预测值的求取。
在本法中,当前时刻的预测值是在前一个非多余采样值上预先加上一偏置量得到的。
即时刻t的预测值
为
t二xt-i±K(6.30)
式中,xt-i为以前时刻中最新的一个非多余采样值。
土K就是偏置量。
同前面一样,容
限带宽度为2K。
正、负号由最新的一个非多余采样值越岀容限带的方向来决定。
若最新的非多余采样值从容限带顶部越出,取正号;若从容限带底部越出,取负号。
这样,可以照顾数据变化的趋势,压缩效率就能得以提高。
其它工作细节与前面所述的浮动窗口零阶预测器相同。
图6-33为其工作原理图。
图6-33零阶补偿预测器原理图
图6-34给出零阶补偿预测器的计算机程序流程图。
流程图中(I)表示预测值,x(J)
表示采样值。
第一点x