实验2:编码解码
一、问题描述
使用matlab实现对lena灰度图像和二值图像的DPCM编码和解码,以及游长编码的实现。
二、问题分析
在进行编码之前,首先应该理解两种编码方式的原理、过程,梳理好之后再落实到代码上。
将图片的像素当做信号,一张图片可以转化为一个一维的信号流,从而利用两种编码方式进行压缩。
三、算法分析
DPCM
差分脉冲编码调制简称差值编码,是对模拟信号幅度抽样的差值进行量化编码的调制方式(抽样差值的含义请参见“增量调制”)。这种方式是用已经过去的抽样值来预测当前的抽样值,对它们的差值进行编码。差值编码可以提高编码频率,这种技术已应用于模拟信号的数字通信之中。
DPCM与预测编码类似,只是它有一个量化步骤。量化步骤和PCM中的量化步骤类似,可以是均匀量化,也可以是非均匀量化
对于有些信号(例如图像信号)由于信号的瞬时斜率比较大,很容易引起过载,因此,不能用简单增量调制进行编码,除此之外,这类信号也没有像话音信号那种音节特性,因而也不能采用像音节压扩那样的方法,只能采用瞬时压扩的方法。但瞬时压扩实现起来比较困难,因此,对于这类瞬时斜率比较大的信号,通常采用一种综合了增量调制和脉冲编码调制两者特点的调制方法进行编码,这种编码方式被简称为脉码增量调制,或称差值脉码调制,用DPCM表示。
原理是减少或除去声音信号的多余成分以提高通信的有效性。
DPCM的操作流程是,首先生成预测值,然后用原始信号值减去预测信号生成误差值,接着量化误差值,得到量化后的误差值,并进行传输。重建时,利用量化后的误差值和预测信号来重构信号,从而得到图像。
游长编码
又称为游程编码Run-lengthcoding。是一种统计编码,属于无损压缩,是栅格数据压缩的重要编码方法。
它的原理是,用一个符号值或串长代替具有相同值的连续符号,使符号长度少于原始数据的长度。只在各行或者各列数据的代码发生变化时,一次记录该代码及相同代码重复的个数,从而实现数据的压缩。
游程编码的记录方式有两种:①逐行记录每个游程的重点列号;②逐行记录每个游程的长度。
比如,对于数据
A |
A | <