⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 codebook8_512.m

📁 基于等均值等方差的图象矢量量化Matlab程序
💻 M
字号:
%function design()
clear all;
figure(1);
sig=imread('lena1.bmp');
sig=double(sig)/255;
[m_sig,n_sig]=size(sig);
siz_word=8;
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

I13=codebook;
save codebook8_512 I13;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -