基于MAtlab图像压缩编码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
步骤 1:给定初始码书 C (0)
y0(0)
,
y1(0)
,,
y (0) N 1
,令迭代次数 n 0,均
失真 D(1) ,给定相对误差门限 (0 1) 。
步骤 2:用码书 C (n) 中的各码字作为质心,根据最佳划分原则把训
练矢量集 X 划分为 N 个胞腔 S (n)
S
(n) 0
for j=1:n data1((i-1)*n+j)=data(i,j);
end end M1=floor(m*n/siz_word); r=mod(m*n,siz_word); if r>0
M1=M1+1;
9
%调入原始图像 %归一化 %求出图像的行数和列数
%显示原始图像
%显示原始图像的色彩直方图 %设置码字的大小 %设置码书的大小 %以行为 m*n,列为 1 的零矩阵
关键字:矢量量化(VQ)、LBG 算法、码书、压缩比、码字
一、实验原理
矢量量化:
当把多个信源符号联合起来形成多维矢量,再对矢量进行标量
量化时自由度将更大,同样的失真下,量化基数可进一步减少,码率
可进一步压缩。这种量化叫矢量量化。
LGB 算法:
一种有效和直观的矢量量化码书设计算法——LBG 算法(也叫
1
步骤 4:根据最佳码书条件,计算各胞腔的质心,即
y (n1) i
1 S (n)
i
v vSi( n )
由这 N 个新质心 yi(n1) ,i 0,1,, N 1形成新码书 C (n) ,置 n n 1, 转步骤 2。
二、实验步骤
(1)对给定图片,采用 LBG 算法获取最佳码书设计; (2) 采用熵编码实现图像索引编号的压缩。
GLA 算法)是由 Linde、Buzo 和 Gray 于 1980 年首先提出来的。该算
法基于最佳矢量量化器设计的最佳划分和最佳码书这两个必要条件,
且是 Lloyd 算法在矢量空间的推广,其特点为物理概念清晰、算法理
论严密及算法实现容易。
针对训练矢量集为 X x0 , x1,, xM 1,其 LBG 算法的具体步骤如下:
10
end MIU=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;
7
(4)当 siz_word=10 时,
图 2-2 siz_word=10 注:上图男孩的脸较以上所有的图,处于最模糊状态,随着码字的增 加,逐渐模糊。
结合上述图片可以明显地看出:码字对图像恢复影响较明显,当 siz_word=1 时,编码后恢复的图像看着轮廓很清晰,逐渐增加码字大 小,当 siz_word=4,图片中男孩的脸开始变模糊,当 siz_word=8 时, 模糊程度加深,继续增加码字到 10 时,男孩的脸完全处于模糊状态。 所以概括性地总结得到:当码字变小时,图片的轮廓更加清晰,而码 字变大时,图片编码后恢复得更加模糊。 说明对于给定的码字,码书越大,压缩比就越低,重建的图片效果就 越好,而在码书给定的情况下,码字越小的编码型越优。
4
图 1-3 siz_book=1024
然而当 siz_book=1024 时,与 siz_book=512 时的矢量量化后的图片变 化不大,用眼睛很难区分开,说明影响图片质量的最主要因素不是码 书的大小了,而是码字的大小,或者还有其他因素,导致图片解码后 的不够清晰。
2. 同时码字的大小也对矢量量化编码的影响较大,则下面在码书不变 (siz_book=512)的情况下,改变码字的大小,从而总结码字对图像恢 复的影响。(由于改变码字大小,直方图基本不变,所以只对矢量量 化编码后恢复的图片进行对比)
end t=0; code_book1=zeros(siz_book,siz_word); for j=1:siz_book
for l=1:siz_word tep=0.0;
11
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
8
附录:
程序代码如下:
clear all; data=imread('Boy.bmp'); 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); for i=1:m
end end figure(2) imshow(uint8(data5)); %显示恢复图像 title('矢量量化编码后恢复的图像')
13
%取整(朝负无穷方向) %取余
end data2=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; end end code_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
数字图像处理
题
目 基 于 LBG 算 法的 矢 量 量 化
图像压缩编码实验
院( 系 )名 称 专业名称 学生姓名 学生学号 指导教师
2012 年 5 月 15 日 摘要
在航天、军事、气象、医学、多媒体等领域中经常需要大量存储 和传输各种静态图像和视频图像。为了提高传输效率和减少存储空
间,必须采取有效的压缩编码算法消除图像中所包含的各种冗余信息 并在给定的失真条件下使用尽量少的比特数来描述图像。 要想得到 好的性能编码,仅采用标量量化是不可能的,而矢量量化(VQ)作为 一种高效的数据压缩技术,其突出优点是压缩比大以及解码算法简 单,已被广泛应用于图像压缩领域。本实验采用 LBG 算法得图像压 缩所需要的码书,通过码书实现图像压缩编码。大量实验结果表明: LBG 算法对初始码书依赖性大,对于给定的码字大小,码书越大, 压缩比越低,但重建图像质量越好;码书相同时码字较小的编码性能 较优。
5
(1)当 siz_word=1 时,
图 2-1
siz_word=1
注:上图中男孩的脸还是很清晰
6
(2)当 siz_word=4 时,运行结果如图 1-1 所示即下图
注:男孩的脸开始变模糊 (3)当 siz_word=8 时,
图 2-3 siz_word=8 注:较图 1-1,男孩的脸模糊程度加深
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; end %编码后图像恢复过程 data3=zeros(M1,siz_word); for i=1:M1 for j=1:siz_book if MIU(i,j)==1 t=j; end end
三、运行结果如下:
1.在给定的码字(siz_word=4)下,改变码书大小 (1)当 siz_book=512 时:
2
图 1-1
siz_book=512
(2)当 siz_book=256 时,
3
图 1-2 siz_book=256 对比图 2-1、图 1-2 可以看出:当把码书大小改为 siz_book=256 时, 图片明显比码书为 512 时的模糊,因为码书越小,压缩比就越高,所 分的区间更大,导致图片解码时不精确度加大。 (3)当 siz_book=1024 时,
12
data3(i,:)=code_book(t,:); end data5=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);
,
S1(
n
)
,,
S
(n) N 1
, Si(n) 满足
S
wk.baidu.com
(n i
)
v
|
d
(v,
yi(n)
)
min
0 jN 1
d
(v,
y
(n) j
),v
X
步骤 3:计算平均失真
D (n)
1 M
M 1
i0
min
0 j N 1
d
(
xi
,
y
(n) j
)
判断相对误差是否满足
(D(n1) D(n) ) / D(n)
若满足,则停止算法,码书 C (n) 就是所求的码书。否则,转步骤 4。