《数据压缩与信源编码》实验报告S_第1页
《数据压缩与信源编码》实验报告S_第2页
《数据压缩与信源编码》实验报告S_第3页
《数据压缩与信源编码》实验报告S_第4页
《数据压缩与信源编码》实验报告S_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 西华大学实验报告第 组 西华大学实验报告(理工类)开课学院及实验室: 电气信息学院 6A222 实验时间 :2017年4月6日学 生 姓 名学 号成 绩学生所在学院电气与电子信息学院年级/专业/班信息工程14(3)-1课 程 名 称数据压缩与信源编码课 程 代 码6088619实验项目名称码书的设计和使用项 目 代 码实验一指 导 教 师李斌项 目 学 分一、实验目的采用矢量量化算法(LBG)获得图像压缩所需要的码书,通过码书实现图像压缩编码。二、实验原理要想得到好的性能编码,仅采用标量量化是不可能的。当把多个信源符号联合起来形成多维矢量,再对矢量进行标量量化时自由度将更大,同样的失真下,量

2、化基数可进一步减少,码率可进一步压缩。这种量化叫矢量量化。一种有效和直观的矢量量化码书设计算法LBG算法(也叫GLA算法)是由Linde、Buzo和Gray于1980年首先提出来的。该算法基于最佳矢量量化器设计的最佳划分和最佳码书这两个必要条件,且是Lloyd算法在矢量空间的推广,其特点为物理概念清晰、算法理论严密及算法实现容易。设训练矢量集为,待产生的码书为,其中,则码书设计过程就是需求把训练矢量集分成个子集的一种最佳聚类方案,而子集的质心矢量作为码字。假设平方误差测度用来表征训练矢量和码字之间的失真,即:则码书设计的准则可用下列数学形式表达: 最小化 约束条件 ,其中为矩阵,其元素满足:

3、矩阵可看作训练矢量的聚类结果。根据,可计算码字: 其中 代表子集中训练矢量的数目,或者说是矩阵第行中非零元素的数目。针对训练矢量集为,其LBG算法的具体步骤如下: 步骤1:给定初始码书,令迭代次数,平均失真,给定相对误差门限。 步骤2:用码书中的各码字作为质心,根据最佳划分原则把训练矢量集划分为个胞腔,满足 步骤3:计算平均失真 判断相对误差是否满足 若满足,则停止算法,码书就是所求的码书。否则,转步骤4。 步骤4:根据最佳码书条件,计算各胞腔的质心,即 由这个新质心形成新码书,置,转步骤2。三、实验设备、仪器及材料操作系统:Windowsxp;软件:MATLAB四、实验步骤(按照实际操作过程

4、)1. 码书的设计12clear all; data=imread('cameraman.tif');%调入原始图像 data=double(data)/255;%归一化m,n=size(data); %求出图像的行数和列数 figure(1)subplot(1,2,1);imshow(data); %显示原始图像 title('原始图像')subplot(1,2,2);imhist(data);title('直方图')siz_word=4; %设置码字的大小 siz_book=512; %设置码书的大小 data1=zeros(m*n,1);f

5、or i=1:m for j=1:n data1(i-1)*n+j)=data(i,j); endendM1=floor(m*n/siz_word);r=mod(m*n,siz_word);if r>0 M1=M1+1;enddata2=zeros(M1,siz_word);l=1;A=zeros(siz_word,1);r=1;for i=1:m*n A(r)=data1(i); if r=siz_word data2(l,:)=A; l=l+1; r=1; else r=r+1; endendcode_book=zeros(siz_book,siz_word);2编码%LBG算法开始

6、%初始化码书l=1;r=1;A=zeros(siz_word,1);for i=1:siz_book*siz_word A(r)=data1(i); if r=siz_word code_book(l,:)=A; l=l+1; r=1; else r=r+1; endendMIU=zeros(M1,siz_book); t=1;while t=1 for i=1:M1 B=zeros(siz_word,1); B=data2(i,:); A=zeros(siz_word,1); A=code_book(1,:); tep=0.0; for l=1:siz_word tep=tep+(A(l)-

7、B(l)2; end r=1; for j=2:siz_book A=code_book(j,:); temp=sum(A-B).2); if temp<tep r=j; tep=temp; end end MIU(i,r)=1.0; end t=0; code_book1=zeros(siz_book,siz_word); for j=1:siz_book for l=1:siz_word tep=0.0; for i=1:M1 code_book1(j,l)=code_book1(j,l)+MIU(i,j)*data2(i,l); tep=tep+MIU(i,j); end if t

8、ep>0 code_book1(j,l)=code_book1(j,l)/tep; else code_book1(j,l)=0.0; end end end tep=0.0; for j=1:siz_book for l=1:siz_word tep=tep+(code_book1(j,l)-code_book(j,l)2; end end if tep/siz_book<0.000001 t=0; end code_book=code_book1;end3. 解码%编码后图像恢复过程data3=zeros(M1,siz_word);for i=1:M1 for j=1:siz_

9、book if MIU(i,j)=1 t=j; end end data3(i,:)=code_book(t,:);enddata5=zeros(m,n);for i=1:m for j=1:n tep=(i-1)*n+j; i1=floor(tep/siz_word); if i1=0 i1=1; end j1=mod(tep,siz_word); if j1=0 j1=siz_word; end data5(i,j)=floor(data3(i1,j1)*255); endendfigure(2)imshow(uint8(data5); %显示恢复图像title('矢量量化编码后恢

10、复的图像')五、实验过程记录(数据、图表、计算等)六、实验结果分析及问题讨论 西华大学实验报告(理工类)开课学院及实验室: 电气信息学院 6A222 实验时间 :2017年4月6日学 生 姓 名学 号成 绩学生所在学院电气与电子信息学院年级/专业/班信息工程14(3)-1课 程 名 称数据压缩与信源编码课 程 代 码6088619实验项目名称基于DCT变换的图像压缩技术项 目 代 码实验二指 导 教 师李斌项 目 学 分一、实验目的利用离散余弦变换进行图像压缩。二、实验原理1.DCT变换 离散余弦变换(DCT)是一种与离散傅立叶变换紧密相关的正交变换,8×8的二维离散余弦变换

11、可以将图像的空间表达式转换到频率域,只用少量的数据点来表达图像,用f(x,y)表示8×8的图像块象素值,F(u,v)表示二维离散余弦变换后的值,具体表达式如下:Fu,v=14CuCvx=07y=07fx,ycos2x+1u16cos2y+1v16 (4.1)其反变换如下式:Fx,y=14CuCvx=07y=07CuCvFx,ycos2x+1u16cos2y+1v16 (4.2)其中,C(u)=Cv22(当u=v=0)1 (其他情况)(4.3)二维离散余弦变换核具有可分离性,即可以先对每行进行一维离散余弦变换,再对每列进行一维离散余弦变换,因此,二维离散余弦变换可表示为:Fu,v=12

12、Cux=07Gx,vcos2x+1u16 (4.4)Gu,v=12Cuy=07Gx,vcos2x+1u16 (4.5)如果直接按照公式计算,其计算量很大,所以,实际应用中普遍采用快速傅立叶变换(FFT)算法来实现离散余弦变换的快速算法。2.量化编码数据压缩中的量化处理,不是对A/D转换量化,而是对正交变换后的数据进行量化处理,量化输入值的动态范围很大,而量化的输出只能取有限个整数,量化后的数值用较少的比特数便可表示。量化处理总是把一批输入量化到一个输出级上,这样降低了数值的精度,但减少了数据量。DCT的输出系数中,左上角的数据表示低频分量,人眼比较敏感,应该用较高的精度来表示,而右下角的数据可

13、以用较低的精度来表示,因此,我们可以定义一个量化表对不同的数据采用不同的量化等级,这个量化表可以根据期望的压缩比进行调整,一般来说,量化表元素值越大压缩比越大,当然图像失真度也越大。3.“Z”字型扫描量化后的数据本来已经可以直接进行游程编码,但为了提高游程编码的效率,我们必须尽量增加零游程的长度。基于量化后系数的排列特征,采用“Z”字型扫描能有效增加零游程的长度。“Z”字型扫描轨迹如图2.2所示:4.哈夫曼(Huffman)编码及解码哈夫曼编码是1952年由Huffman提出的编码方法,基本思想是根据源数据符合出现的概率大小进行编码,出现概率大的符号分配越短的码字,出现概率越小的符号分配越长的

14、码字,从而达到用尽量少的比特数表示数据源,标准哈夫曼编码步骤如下:(1)统计数据源符号出现的概率,得到不同概率的信息符号;(2)将数据源符号按概率递减顺序排列;(3)把两个最小概率相加作为新符号的概率,并按(2)重排;(4)重复(1)、(2),直到概率为1;(5)在每次合并信源时,将合并的信源分别赋“0”和“1”;(6)寻找从每一信源符号到概率为1处的路径,记录路径上的“0”和“1”;(7)从树根开始写出每一符号的“0”、“1”。用标准哈夫曼编码对图像进行编码时效率很高,但需要对原始图像扫描两遍,第一遍要精确统计出每个像素值出现的概率,第二遍是建立哈夫曼树并编码,数据压缩和解压速度较慢,因此,

15、出现了一种改良的哈夫曼编码,它的变长码字不是实时产生而是一个固定的表,在编码和解码过程中不用计算符号概率和排序,直接查表得到,但这个表必须经过大量的统计工作并精心设计才能达到较高的编码效率。在静态图像压缩国际标准(JPEG标准)中,专家组已经对大量自然图像进行了统计,得到了适合于静态自然图像编码的哈夫曼表,在实际编码过程中,我们可直接应用此表进行编码和解码。三、实验设备、仪器及材料操作系统:Windowsxp;软件:MATLAB四、实验步骤(按照实际操作过程)I=imread('cameraman.tif')I=im2double(I) %转换图像矩阵为双精度型。J=dct2(

16、I);T=dctmtx(8) %产生二维DCT变换矩阵a1=16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; 14 13 16 24 40 57 69 56; 14 17 22 29 51 87 80 62; 18 22 37 56 68 109 103 77; 24 35 55 64 81 104 113 92; 49 64 78 87 103 121 120 101; 72 92 95 98 112 100 103 99 ;for i=1:8:200 for j=1:8:200 P=I(i:i+7,j:j+7); K=T*P*T'

17、I2(i:i+7,j:j+7)=K; K=K./a1; 量化 K(abs(K)<0.03)=0; I3(i:i+7,j:j+7)=K; endendfigure;imshow(I2);title('DCT变换后的频域图像'); %显示DCT变换后的频域图像for i=1:8:200 for j=1:8:200 P=I3(i:i+7,j:j+7).*a1; %反量化 K=T'*P*T; I4(i:i+7,j:j+7)=K; endendfigure;imshow(I4);title('复原图像');B=blkproc(I,8,8,'P1*x*

18、P2',T,T') %计算二维DCT,矩阵T及其转置是DCT函数P1*X*P2的参数 mask=1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 %二值掩模,用来压缩DCT系数,只留下DCT系数中左上角的10个B2=blkproc(B,8 8,'P1.*x',mask) %只保留DCT变换的10个系数I2=blkproc(B2,8 8,'P1*x*P2

19、',T',T) %重构图像figureimshow(I)title('原始图像');figureimshow(I2);title('压缩图像');figureimshow(J);figuremesh(J) %画出J的立体网状图colorbar('horiz') %在水平条方向用不同的颜色表示曲面的高度五、实验过程记录(数据、图表、计算等)六、实验结果分析及问题讨论 西华大学实验报告(理工类)开课学院及实验室: 电气信息学院 6A207 实验时间 :2017年4月6日学 生 姓 名学 号成 绩学生所在学院电气与电子信息学院年级/专业

20、/班信息工程14(3)-1课 程 名 称数据压缩与信源编码课 程 代 码6088619实验项目名称基于小波变换的图像压缩技术项 目 代 码实验三指 导 教 师李斌项 目 学 分一、实验目的利用小波变换进行图像压缩。二、实验原理正交基在传统的信号表示中被广泛地采用, 如傅氏变换。 基函数的正交性使相应的表示系数能容易地用内积计算, 然而, 这些变换一般揭示的是信号的整体性质, 难以表示其局部特性, 小波变换发展了局部化思想, 是一种信号的时间- 尺度 ( 时间 - 频率) 分析方法, 它具有多分辨率分析的特点, 而且在时频两域都具有表征信号局部特征的能力, 是一种窗口大小固定不变但其形状可改变,

21、 时间窗和频率窗都可以改变的时频局部化分析方法。 即在低频部分具有较高的频率分辨力和较低的时间分辨力, 在高频部分具有较高的时间分辨力和较低的频率分辨力, 很适合于探测正常信号中夹带的瞬态反常现象并展示其成分, 所以被誉为分析信号的显微镜, 利用连续小波变换进行动态系统故障检测与诊断具有良好的效果。若记母小波为 ( t) , 伸缩和频移因子分别为 a和 b, 则由母小波( t) 生成的小波为:(a,b)t=1at-ba a,bR;a0 其中, 母小波 ( t) 必须满足下列条件:C=R2d< 为t的傅氏变换。对应于傅氏分析中的傅氏级数、傅氏变换、快速傅氏变换, 在小波分析中也有相应的小波

22、级数、小波变换和 Mallat 算法。小波分析广泛应用于信号处理、图像处理、量子场论、地震勘探、语音识别与合成、音乐、雷达、CT 成像、彩色复印、流体湍流、天体识别、机器视觉、机械故障诊断与监控、分形以及数字电视等科技领域, 原则上讲, 传统上使用傅里叶分析的地方, 都可以用小波分析取代。 小波分析优于傅里叶变换的地方是,它在时域和频域同时具有良好的局部化性质。小波分析应用于图像压缩具有压缩比高、压缩速度快、压缩后能保证图像的特征基本不变的特点,且在传递过程中可以抗干扰。 小波分析进行图像压缩的基本原理是: 根据二维小波分解算法, 一幅图像作小波分解后, 可得到一系列不同分辨率的图像, 而表现

23、一幅图像最主要的部分是低频部分, 如果去掉图像的高频部分只保留低频部分, 则可以达到图像压缩的目的。 基于小波分析的图像压缩方法有很多, 较成功的有小波包最优基、小波域纹理模型方法、小波变换零树压缩、小波变换向量量化压缩等。利用小波分解去掉图像的高频部分而仅保留图像的低频部分是一种最简单的图像压缩处理方法。 三、实验设备、仪器及材料操作系统:Windowsxp;软件:MATLAB 四、实验步骤(按照实际操作过程)% 装载原始图像并将其转化为索引图像load wbarb;subplot(221);image(X);colormap(map)title('原始图像');axis s

24、quaredisp('压缩前图像X的大小:');whos('X')%对图像用bior3.7小波进行2层小波分解c,s=wavedec2(X,2,'bior3.7');%提取小波分解结构中第一层低频系数和高频系数ca1=appcoef2(c,s,'bior3.7',1);ch1=detcoef2('h',c,s,1);cv1=detcoef2('v',c,s,1);cd1=detcoef2('d',c,s,1);%分别对各频率成分进行重构a1=wrcoef2('a',c

25、,s,'bior3.7',1);h1=wrcoef2('h',c,s,'bior3.7',1);v1=wrcoef2('v',c,s,'bior3.7',1);d1=wrcoef2('d',c,s,'bior3.7',1);c1=a1,h1;v1,d1;%显示分解后各频率成分的信息subplot(222);image(c1);axis squaretitle('分解后低频和高频信息');%下面进行图像压缩处理%保留小波分解第一层低频信息,进行图像的压缩%第一层的低频信息即为ca1,显示第一层的低频信息%首先对第一层信息进行量化编码ca1=appcoef2(c,s,'bior3.7',1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论