?? codebook16_512.m
字號:
%function design()
clear all;
figure(1);
sig=imread('lena1.bmp');
sig=double(sig)/255;
[m_sig,n_sig]=size(sig);
siz_word=16;
siz_book=512;
imshow(sig);
num=m_sig/siz_word;
ss=siz_word*siz_word;
nn=num*num;
re_sig=[];
for i=1:m_sig
for j=1:n_sig
f1=floor(i./siz_word);
m1=mod(i,siz_word);
if m1==0
m1=siz_word;
f1=f1-1;
end
f2=floor(j./siz_word);
m2=mod(j,siz_word);
if m2==0
m2=siz_word;
f2=f2-1;
end
re_sig(num*f1+f2+1,siz_word*(m1-1)+m2)=sig(i,j);
end
end
codebook=[];
for i=1:siz_book
r=floor(rand*nn)+1;
codebook=[codebook;re_sig(r,:)];
end
%LBG算法
tic
sea=100;
while sea>=0.0001
d1=0.0;
for i=1:siz_book
VectorNumber(i)=0;
end
for i=1:nn
CodeNumber(i)=1;
min=VectorDistance(ss,re_sig(i,:),codebook(1,:));
for j=2:siz_book
d0=0.0;
for l=1:ss
d0=d0+(re_sig(i,l)-codebook(j,l)).^2;
if d0>=min
break;
end
end
if d0<min
min=d0;
CodeNumber(i)=j;
end
end
VectorNumber(CodeNumber(i))=VectorNumber(CodeNumber(i))+1;
d1=d1+min;
end
sea=(d0-d1)/d1;
if sea<=0.0001
break;
end
d0=d1;
for j=1:siz_book
if VectorNumber(j)~=0
dd=zeros(1,ss);
for l=1:nn
if CodeNumber(l)==j
for k=1:ss
dd(k)=dd(k)+re_sig(l,k);
end
end
end
for k=1:ss
codebook(j,k)=dd(k)/VectorNumber(k);
end
else
msgbox('select a random vector');
l=floor(rand*nn);
codebook(j,:)=re_sig(l,:);
end
end
end
toc
t=toc
I10=codebook;
save codebook16_512 I10;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -