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

📄 encode16_512.m

📁 基于哈德码变换域的快速矢量量化编码Matlab程序
💻 M
字号:
%矢量X的一些特征值计算
figure(1);
sig=imread('lena1.bmp');
sig=double(sig)/255;
[m_sig,n_sig]=size(sig);
siz_word=16;
siz_book=512;
imshow(sig);

load codebook16_512;
%k=256;
%N=512;

%重新排列图像
num=m_sig/siz_word;
ss=siz_word*siz_word;
nn=num*num;
re_sig=[];
for i=1:m_sig
    for j=1:m_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
x=re_sig';
HX=hadamard(k);
X=HX*x;

%搜索初始匹配码字
tic
Sb=[];
D=[];
P=[];
for i=1:nn
    Sa=abs(X(1,i)-Y(1,1));
    p=1;
    for j=2:N
        arg=abs(X(1,i)-Y(1,j));
        if arg<Sa
            Sa=arg;
            p=j;
        end
    end
    Sb=[Sb,Sa];
    Dmin=0;
    for m=1:k
        Dmin=Dmin+(X(m,i)-Y(m,p))^2;
    end
    D=[D,Dmin];
    P=[P,p];
end

%编码
for i=1:nn
    codenumber(i)=1;     
    T=P;
    for j=1:N
       if P(i)+j<=N
           sum6=0;
           for m=1:k
                sum6=sum6+(X(m,i)-Y(m,P(i)+j))^2;
                if D(i)<sum6
                    codenumber(i)=T(i);
                    break;                         
                end
           end
           if D(i)>sum6
                D(i)=sum6; 
                codenumber(i)=P(i)+j;
                T(i)=codenumber(i);
           else
                break;
           end
       else
           break;
       end
    end
       
   for j=1:N
       if P(i)-j>=1
           sum6=0;
           for m=1:k
                sum6=sum6+(X(m,i)-Y(m,P(i)-j))^2;
                if D(i)<sum6
                    codenumber(i)=T(i);
                    break;                         
                end
           end
           if D(i)>sum6
                D(i)=sum6; 
                codenumber(i)=P(i)-j;
                T(i)=codenumber(i);
           else
                break;
           end
       else
           break;
       end
    end
end
toc
t=toc

%figure(2);
%imshow(sig);


        
        

⌨️ 快捷键说明

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