codeb.m

来自「基于matlab的小波变换的图象压缩」· M 代码 · 共 50 行

M
50
字号
function mainc=codeb(m,X,N,l)
%对矩阵X进行N遍扫描,得到一个[8,N*8]的矩阵mainc
%N个[8,8]的矩阵分别对应了N遍扫描后的编码矩阵
tn=1;mainc=[];A=zeros(size(X));ts=1;
while tn<=N&m>=8
   k=1;s=2;Y=zeros(size(X));
   kr=1;kc=1;n=1;sr=2;sc=2;
   while k<=l&s<=l
      for row=kr:sr
         for col=kc:sc
            if ts==tn&Y(row,col)==2    %第一个条件保证不影响第二次编码
               if row<=l/2&col<=l/2
                  Y(2*row-1,2*col-1)=2;
                  Y(2*row-1,2*col)=2;
                  Y(2*row,2*col-1)=2;
                  Y(2*row,2*col)=2;
               end   
            else 
               Y=lxbmb(m,X,Y,row,col,l/2);
            end 
            if tn==1
               A(row,col)=fzbm(X,row,col);
            end   
         end
      end
      if n==1
         k=2;
      end
      if n==2
         kc=kr;sc=sr;kr=k;sr=s;n=3;
      elseif n==3
         kr=k;kc=k;sr=s;sc=s;n=4;
      else
         k=2*k-1;s=2*s;sc=s;kc=k;kr=1;sr=s/2;n=2;
      end
   end
   t=hy(Y,A,l);
   mainc=[mainc t];ts=tn;
   tn=tn+1;
   m=m/2;
end
if m<8             
   disp(['所输N值太大,N应小于',num2str(tn),'.']);
end
return

         
         
         
         

⌨️ 快捷键说明

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