encode.m

来自「基于自组织神经网络的矢量量化编码Matlab程序」· M 代码 · 共 50 行

M
50
字号
%function encode()
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);
load codebook8_512;
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
d1=0.0;
for i=1:nn
    codenumber(i)=1;
    min=VectorDistance(ss,re_sig(i,:),codebook(1,:));
    for j=2:siz_book
        d=0.0;
        for l=1:ss
            d=d+(re_sig(i,l)-codebook(j,l)).^2;
            if d>=min
                break;
            end
        end
        if d<min
            min=d;
            codenumber(i)=j;
        end
    end
    d1=d1+min;
end

⌨️ 快捷键说明

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