《数据压缩与信源编码》实验指导书
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);
2.编码
%LBG算法开始 %初始化码书 l=1;
- 5 -
《数据压缩与信源编码》实验指导书
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 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
- 6 -
《数据压缩与信源编码》实验指导书
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 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 tep>0 - 7 - 《数据压缩与信源编码》实验指导书 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 3. 解码 %编码后图像恢复过程 data3=zeros(M1,siz_word); for i=1:M1 - 8 - 《数据压缩与信源编码》实验指导书 for j=1:siz_book if MIU(i,j)==1 t=j; end end 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); end end figure(2) - 9 -