资源描述:
《《数据压缩与信源编码》实验指导书》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《数据压缩与信源编码》实验指导书《数据压缩与信源编码》实验指导书适用专业:信息工程课程代码:6088619总学时:40总学分:2.5编写单位:电气与电子信息学院编写人:李斌审核人:审批人:批准时间:2015年11月10日-19-《数据压缩与信源编码》实验指导书目录实验一码书的设计和使用…………………………………2实验二基于DCT变换的图像压缩技术……………………8实验三基于小波变换的图像压缩技术…………………15-19-《数据压缩与信源编码》实验指导书实验一码书的设计和使用一、实验目的采用矢量量化算法(LBG)获得图像压缩所需要的码书,通过码书实现图像压缩编码。二、实验内容对给定的一幅图像进
2、行码书设计、编码和解码。三、实验仪器、设备及材料操作系统:Windowsxp;软件:MATLAB四、实验原理要想得到好的性能编码,仅采用标量量化是不可能的。当把多个信源符号联合起来形成多维矢量,再对矢量进行标量量化时自由度将更大,同样的失真下,量化基数可进一步减少,码率可进一步压缩。这种量化叫矢量量化。一种有效和直观的矢量量化码书设计算法——LBG算法(也叫GLA算法)是由Linde、Buzo和Gray于1980年首先提出来的。该算法基于最佳矢量量化器设计的最佳划分和最佳码书这两个必要条件,且是Lloyd算法在矢量空间的推广,其特点为物理概念清晰、算法理论严密及算法实现容易。设训练矢量集为,
3、待产生的码书为,其中,,,则码书设计过程就是需求把训练矢量集分成个子集的一种最佳聚类方案,而子集的质心矢量作为码字。假设平方误差测度用来表征训练矢量和码字之间的失真,即:则码书设计的准则可用下列数学形式表达:最小化约束条件,其中为矩阵,其元素满足:-19-《数据压缩与信源编码》实验指导书矩阵可看作训练矢量的聚类结果。根据,可计算码字:其中代表子集中训练矢量的数目,或者说是矩阵第行中非零元素的数目。针对训练矢量集为,其LBG算法的具体步骤如下:步骤1:给定初始码书,令迭代次数,平均失真,给定相对误差门限。步骤2:用码书中的各码字作为质心,根据最佳划分原则把训练矢量集划分为个胞腔,满足步骤3:计
4、算平均失真判断相对误差是否满足若满足,则停止算法,码书就是所求的码书。否则,转步骤4。步骤4:根据最佳码书条件,计算各胞腔的质心,即由这个新质心形成新码书,置,转步骤2。一、实验步骤1.码书的设计clearall;data=imread('cameraman.tif');%调入原始图像-19-《数据压缩与信源编码》实验指导书data=double(data)/255;%归一化[m,n]=size(data);%求出图像的行数和列数figure(1)subplot(1,2,1);imshow(data);%显示原始图像title('原始图像')subplot(1,2,2);imhist(dat
5、a);title('直方图')siz_word=4;%设置码字的大小siz_book=512;%设置码书的大小data1=zeros(m*n,1);fori=1:mforj=1:ndata1((i-1)*n+j)=data(i,j);endendM1=floor(m*n/siz_word);r=mod(m*n,siz_word);ifr>0M1=M1+1;enddata2=zeros(M1,siz_word);-19-《数据压缩与信源编码》实验指导书l=1;A=zeros(siz_word,1);r=1;fori=1:m*nA(r)=data1(i);ifr==siz_worddata2(l
6、,:)=A;l=l+1;r=1;elser=r+1;endendcode_book=zeros(siz_book,siz_word);2.编码%LBG算法开始%初始化码书l=1;-19-《数据压缩与信源编码》实验指导书r=1;A=zeros(siz_word,1);fori=1:siz_book*siz_wordA(r)=data1(i);ifr==siz_wordcode_book(l,:)=A;l=l+1;r=1;elser=r+1;endendMIU=zeros(M1,siz_book);t=1;whilet==1fori=1:M1B=zeros(siz_word,1);B=data2
7、(i,:);A=zeros(siz_word,1);A=code_book(1,:);tep=0.0;forl=1:siz_word-19-《数据压缩与信源编码》实验指导书tep=tep+(A(l)-B(l))^2;endr=1;forj=2:siz_bookA=code_book(j,:);temp=sum((A-B).^2);iftemp