基于LBG的矢量量化图像压缩编码实验.docx

上传人:b****8 文档编号:10230362 上传时间:2023-02-09 格式:DOCX 页数:12 大小:143.27KB
下载 相关 举报
基于LBG的矢量量化图像压缩编码实验.docx_第1页
第1页 / 共12页
基于LBG的矢量量化图像压缩编码实验.docx_第2页
第2页 / 共12页
基于LBG的矢量量化图像压缩编码实验.docx_第3页
第3页 / 共12页
基于LBG的矢量量化图像压缩编码实验.docx_第4页
第4页 / 共12页
基于LBG的矢量量化图像压缩编码实验.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于LBG的矢量量化图像压缩编码实验.docx

《基于LBG的矢量量化图像压缩编码实验.docx》由会员分享,可在线阅读,更多相关《基于LBG的矢量量化图像压缩编码实验.docx(12页珍藏版)》请在冰豆网上搜索。

基于LBG的矢量量化图像压缩编码实验.docx

基于LBG的矢量量化图像压缩编码实验

基于LBG的矢量量化图像压缩编码实验

一、实验原理

矢量量化:

要想得到好的性能编码,仅采用标量量化是不可能的。

当把多个信源符号联合起来形成多维矢量,再对矢量进行标量量化时自由度将更大,同样的失真下,量化基数可进一步减少,码率可进一步压缩。

这种量化叫矢量量化。

应用:

在航天、军事、气象、医学、多媒体等领域中经常需要大量存储和传输各种静态图像和视频图像。

为了提高传输效率和减少存储空间,必须采取有效的压缩编码算法消除图像中所包含的各种冗余信息并在给定的失真条件下使用尽量少的比特数来描述图像。

矢量量化(VQ)作为一种有效的有损压缩技术,其突出优点是压缩比大以及解码算法简单,因此它已经成为图像压缩编码的重要技术之一。

矢量量化压缩技术的应用领域非常广阔,如军事部门和气象部门的卫星(或航天飞机)遥感照片的压缩编码和实时传输、雷达图像和军用地图的存储与传输、数字电视和DVD的视频压缩、医学图像的压缩与存储、网络化测试数据的压缩和传输、语音编码、图像识别和语音识别等等。

LGB算法:

一种有效和直观的矢量量化码书设计算法——LBG算法(也叫GLA算法)是由Linde、Buzo和Gray于1980年首先提出来的。

该算法基于最佳矢量量化器设计的最佳划分和最佳码书这两个必要条件,且是Lloyd算法在矢量空间的推广,其特点为物理概念清晰、算法理论严密及算法实现容易。

设训练矢量集为

,待产生的码书为

,其中

,则码书设计过程就是需求把训练矢量集

分成

个子集

的一种最佳聚类方案,而子集

的质心矢量

作为码字。

假设平方误差测度用来表征训练矢量

和码字

之间的失真,即:

则码书设计的准则可用下列数学形式表达:

最小化

约束条件

其中

矩阵,其元素满足:

矩阵

可看作训练矢量的聚类结果。

根据

,可计算码字:

其中

代表子集

中训练矢量的数目,或者说是矩阵

中非零元素的数目。

针对训练矢量集为

,其LBG算法的具体步骤如下:

步骤1:

给定初始码书

,令迭代次数

,平均失真

,给定相对误差门限

步骤2:

用码书

中的各码字作为质心,根据最佳划分原则把训练矢量集

划分为

个胞腔

满足

步骤3:

计算平均失真

判断相对误差是否满足

若满足,则停止算法,码书

就是所求的码书。

否则,转步骤4。

步骤4:

根据最佳码书条件,计算各胞腔的质心,即

由这

个新质心

形成新码书

,置

,转步骤2。

 

二、实验目的

采用矢量量化算法(LBG)获得图像压缩所需要的码书,通过码书实现图像压缩编码。

三、实验内容

对给定的一幅图片

四、实验步骤

(1)对训练图片,采用LBG算法获取最佳码书设计;

(2)采用熵编码实现图像索引编号的压缩。

五、程序代码

clearall;

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);

fori=1:

m

forj=1:

n

data1((i-1)*n+j)=data(i,j);

end

end

M1=floor(m*n/siz_word);

r=mod(m*n,siz_word);

ifr>0

M1=M1+1;

end

data2=zeros(M1,siz_word);

l=1;

A=zeros(siz_word,1);

r=1;

fori=1:

m*n

A(r)=data1(i);

ifr==siz_word

data2(l,:

)=A;

l=l+1;

r=1;

else

r=r+1;

end

end

code_book=zeros(siz_book,siz_word);

%LBG算法开始

%初始化码书

l=1;

r=1;

A=zeros(siz_word,1);

fori=1:

siz_book*siz_word

A(r)=data1(i);

ifr==siz_word

code_book(l,:

)=A;

l=l+1;

r=1;

else

r=r+1;

end

end

MIU=zeros(M1,siz_book);

t=1;

whilet==1

fori=1:

M1

B=zeros(siz_word,1);

B=data2(i,:

);

A=zeros(siz_word,1);

A=code_book(1,:

);

tep=0.0;

forl=1:

siz_word

tep=tep+(A(l)-B(l))^2;

end

r=1;

forj=2:

siz_book

A=code_book(j,:

);

temp=sum((A-B).^2);

iftemp

r=j;

tep=temp;

end

end

MIU(i,r)=1.0;

end

t=0;

code_book1=zeros(siz_book,siz_word);

forj=1:

siz_book

forl=1:

siz_word

tep=0.0;

fori=1:

M1

code_book1(j,l)=code_book1(j,l)+MIU(i,j)*data2(i,l);

tep=tep+MIU(i,j);

end

iftep>0

code_book1(j,l)=code_book1(j,l)/tep;

else

code_book1(j,l)=0.0;

end

end

end

tep=0.0;

forj=1:

siz_book

forl=1:

siz_word

tep=tep+(code_book1(j,l)-code_book(j,l))^2;

end

end

iftep/siz_book<0.000001

t=0;

end

code_book=code_book1;

end

%编码后图像恢复过程

data3=zeros(M1,siz_word);

fori=1:

M1

forj=1:

siz_book

ifMIU(i,j)==1

t=j;

end

end

data3(i,:

)=code_book(t,:

);

end

data5=zeros(m,n);

fori=1:

m

forj=1:

n

tep=(i-1)*n+j;

i1=floor(tep/siz_word);

ifi1==0

i1=1;

end

j1=mod(tep,siz_word);

ifj1==0

j1=siz_word;

end

data5(i,j)=floor(data3(i1,j1)*255);

end

end

figure

(2)

imshow(uint8(data5));%显示恢复图像

title('矢量量化编码后恢复的图像')

六、运行结果

siz_book=512

当把码书的大小改为siz_book=256时,图片明显比码书为512时模糊,因为此时所分的区间更大,导致图片解码时不精确度加大

siz_book=256

然而当siz_book=1024时,与siz_book=512时的矢量量化后的图片变换很小,很难用眼睛区分开来,这说明影响图片质量的主要因素不是码书的大小了,而是码字的大小,或者其他的因素,导致图片解码后的不够清晰。

同时码字的大小也对矢量量化编码的影响较大,当码字比小时,图片的轮廓更加清晰,而码字变大时,图片编码后更加模糊。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1