基于LBG的矢量量化图像压缩编码实验_第1页
基于LBG的矢量量化图像压缩编码实验_第2页
基于LBG的矢量量化图像压缩编码实验_第3页
基于LBG的矢量量化图像压缩编码实验_第4页
基于LBG的矢量量化图像压缩编码实验_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、基于LBG的矢量量化图像压缩编码实验一、实验原理矢量量化: 要想得到好的性能编码,仅采用标量量化是不可能的。当把多个信源符号联合起来形成多维矢量,再对矢量进行标量量化时自由度将更大,同样的失真下,量化基数可进一步减少,码率可进一步压缩。这种量化叫矢量量化。应用:在航天、军事、气象、医学、多媒体等领域中经常需要大量存储和传输各种静态图像和视频图像。为了提高传输效率和减少存储空间,必须采取有效的压缩编码算法消除图像中所包含的各种冗余信息并在给定的失真条件下使用尽量少的比特数来描述图像。矢量量化(VQ)作为一种有效的有损压缩技术,其突出优点是压缩比大以及解码算法简单,因此它已经成为图像压缩编码的重要

2、技术之一。矢量量化压缩技术的应用领域非常广阔,如军事部门和气象部门的卫星(或航天飞机)遥感照片的压缩编码和实时传输、雷达图像和军用地图的存储与传输、数字电视和DVD的视频压缩、医学图像的压缩与存储、网络化测试数据的压缩和传输、语音编码、图像识别和语音识别等等。LGB算法:一种有效和直观的矢量量化码书设计算法LBG算法(也叫GLA算法)是由Linde、Buzo和Gray于1980年首先提出来的。该算法基于最佳矢量量化器设计的最佳划分和最佳码书这两个必要条件,且是Lloyd算法在矢量空间的推广,其特点为物理概念清晰、算法理论严密及算法实现容易。设训练矢量集为,待产生的码书为,其中,则码书设计过程就

3、是需求把训练矢量集分成个子集的一种最佳聚类方案,而子集的质心矢量作为码字。假设平方误差测度用来表征训练矢量和码字之间的失真,即:则码书设计的准则可用下列数学形式表达: 最小化 约束条件 ,其中为矩阵,其元素满足: 矩阵可看作训练矢量的聚类结果。根据,可计算码字: 其中 代表子集中训练矢量的数目,或者说是矩阵第行中非零元素的数目。 针对训练矢量集为,其LBG算法的具体步骤如下: 步骤1:给定初始码书,令迭代次数,平均失真,给定相对误差门限。 步骤2:用码书中的各码字作为质心,根据最佳划分原则把训练矢量集划分为个胞腔,满足 步骤3:计算平均失真 判断相对误差是否满足 若满足,则停止算法,码书就是所

4、求的码书。否则,转步骤4。 步骤4:根据最佳码书条件,计算各胞腔的质心,即 由这个新质心形成新码书,置,转步骤2。二、实验目的 采用矢量量化算法(LBG)获得图像压缩所需要的码书,通过码书实现图像压缩编码。 三、实验内容 对给定的一幅图片四、实验步骤(1) 对训练图片,采用LBG算法获取最佳码书设计;(2) 采用熵编码实现图像索引编号的压缩。五、程序代码clear all; data=imread('cameraman.tif'); %调入原始图像 data=double(data)/255; %归一化m,n=size(data); %求出图像的行数和列数 figure(1)s

5、ubplot(1,2,1);imshow(data); %显示原始图像 title('原始图像')subplot(1,2,2);imhist(data);title('直方图')siz_word=4; %设置码字的大小 siz_book=512; %设置码书的大小 data1=zeros(m*n,1);for 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,

6、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);%LBG算法开始%初始化码书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; end

7、endMIU=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)-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

8、_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 tep>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+

9、(code_book1(j,l)-code_book(j,l)2; end end if tep/siz_book<0.000001 t=0; end code_book=code_book1;end%编码后图像恢复过程data3=zeros(M1,siz_word);for i=1:M1 for j=1:siz_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('矢量量化编码后恢复的图像')六、运行结果siz_book=512当把码书的大小改为siz_book=256时,图片明显比码书为512时模糊,因为此时所分的区间更大,导致图片解码时不精确度加大siz_book=256然而当siz_

温馨提示

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

评论

0/150

提交评论