基于DPCM预测编码的无损压缩算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于DPCM预测编码的无损压缩算法
1数据无损压缩技术特征
遥感图像的存储格式为BIL(波段按行交叉)格式,按BIL格式存储的图像先存储第一个波段的第一行,接着是第二个波段的第一行,然后是第三个波段的第一行,交叉存取直到波段总数为止。每个波段随后的行按照类似的方式交叉存取。
遥感图像的数据是以16位的整形数存储的,因为其低四位是无用信息,所以可以舍去低四位只取高12位,再进行后续操作。
2无损压缩算法——编码器
无损压缩算法一般包括图像压缩预处理和压缩熵编码两个步骤。
2.1图像压缩预处理
预处理就是在空间域尽可能对图像去相关,以提高压缩比,同时将图像数据变换映射成适于熵编码的数据源。去相关的方法主要根据差分脉冲编码调制(DPCM)原理进行预测编码。DPCM预测编码器输出的是当前的实际值与信号预测值之间的差值。DPCM预测编码器系统的工作原理如图一所示。
图一:编码器
图中Xt为输入信号在t时刻的取样值,预测器可以使用Xt的邻近像素值的函数。
DPCM预测编码的关键在于预测式的选择,只有设计针对大量图像数据普适性强的预测式,才能更好的进行去相关。
2.1.1JPEG无失真自适应预测器
JPEG 无失真自适应预测器结合三邻域的像素值(A、B和C)来生成用X表示的像素的预测值Xi’(i=0,1,2,3,4,5,6)。如图二所示。
图二:X为当前像素值,A、B、C为相对位置的像素值七个预测值分别为:
1)X0’=A;2)X1’=B;3)X2’=C; 4)X3’=A+B-C;
5)X4’=A+(B-C)/2; 6)X5’=B+(A-C)/2; 7)X6’=(A+B)/2。
所谓自适应,可以不固定预测系数,也可以不固定预测器,在多个预测器中自适应选择相对最优的一个,随图像的局部特性而有所变化。在实际操作过程中,后者应用得较多。这里利用JPEG预测来设计的自适应最佳预测式为:
£(x)=min(|X- X0’|,|X- X1’|,|X- X2’|,|X- X3’|,|X- X4’|,|X- X5’|,|X- X6’|) (1)
但是这样每个像素就需要附加最佳预测信息,如上式,最佳预测信息需要用3bit表示。在实际应用中,每幅图像的第一行和第一列的像素值不进行上述预测和编码,直接存储当前像素值的高12位。
2.1.2边缘检测预测式(MED)
被JPEG-LS选用的LOCO-IP算法采用了针对DPCM方法在图像轮廓处性能较差而改进设计的边缘检测预测式(MED),它是一个非线性自适应预测器,其思想是根据当前像素所处的位置来优选预测值。即在当前像素X的左侧出现竖直边缘时选择上方邻域点预测,在上方出现水平边缘时选择左侧邻域点预测,在没有发现明显的边缘时则选择较平均的(A+B-C)作为预测值。这是一个复杂度低而预测效果好的自适应预测器,采用上述JPEG 预测器的模型,可以表示如下
X’=
MIN(A,B) IF C>MAX(A,B)
MAX(A,B) IF C A+B-C OTHERWISE 同样,每幅图像的第一行和第一列的像素值不进行上述预测和编码,直接存储当前像素值。 2.1.3基于上下文的无损预测式 基于上下文无损自适应预测器的模型如图三所示。 图三 具体的预测式可以表示如下: 先计算以下两个值, 预测值可以经由以下过程得到 在实际应用中,对第一行和第一列不作任何处理,对第二行、第二列和最后一列进行JPEG 无失真自适应预测或MED预测,对其他的像素值进行基于上下文的无损预测。 2.1.4 光谱维去相关 三维遥感图像与普通图像的区别是多了一维(光谱维)信息,因此除了考虑空间去相关外,还可以考虑光谱维去相关。就是利用波段间的相关性,根据前几波段的图像预测当前波段的图像,并对预测误差进行编码。 实际上,在应用于硬件实现的无损压缩系统中,为了抑制波段间的误码扩散,很少在算法设计中涉及到光谱维去相关 2.2 压缩熵编码 在进行自适应无损预测后,用当前的像素值X减去其预测值X’得到预测误差,再对误差进行无失真熵编码。这里的熵编码一般选择霍夫曼编码或者算术编码。 2.2.1 霍夫曼(Huffman)编码 霍夫曼编码的基本思想是可变长最佳编码定理,即根据源数据符号出现的概率大小进行编码,出现概率大的符号分配越短的码字,出现概率越小的符号分配越长的码字,从而达到用尽量少的比特数表示数据源的目的。Huffman编码器可以使用很简单的查表方法进行编码。这个Huffman编码表可以事先进行定义,当然JPEG标准中提出了参考的Huffman编码表。直流Huffman编码表如表一所示。因为预测后得到的预测误差分布类似几何分布,所以参考表一来进行霍夫曼变长编码。 表一 编码后的数值由两部分二进制数表示,前一部分是前缀码,后一部分是预测误差的实际二进制表示。例如预测误差为5,则其二进制表示为101,因为需要用三位表示,所以选择表中对应于尺寸分类为3的码字100当前缀,最终编码后的结果为100/101。如果预测误差为负数,则前缀码与其绝对值的前缀码相同,后一部分是把其绝对值的二进制表示取反,例如-5的霍夫曼码为100/010。 3无损压缩算法——译码器 译码器的系统结构如下图所示: 图四:译码器 译码和编码的过程是非常对称的,译码完全是编码的逆过程。也就是说,编码器和译码器是用同样的基本过程,步骤相同但处理次序相反。 3.1 解码 解码的过程和译码的过程是相对的,先获取2位码字,比较有没有和表一中码长为2的码字相同的,如果相同,就再读取对应的尺寸分类个码字,把二进制数译为十进制;如果不相同,接着再读取一位,直到有相同的码字为止。在知道前缀码后,如果读取的码字第一个二进制数为0,则先取反,再译成十进制数,前面加个负号。