资源简介

MATLAB 实现RLE 对矩阵Z字形游程编码(行程编码)RLE 对矩阵Z字形游程编码(行程编码),可以对矩阵数据进行游程压缩编码。解码代码请看我的上传!

资源截图

代码片段和文件信息

%福建农林大学金山学院 2007级 jay粉丝 QQ544786937
%采用Z字形的游程编码对DCT变换矩阵进行编码
function r=rlez(x)  %r为游程编码后的游程编码表,x为待编码的数据矩阵
  [mn]=size(x); %读取数据矩阵的行数和列数
  r(11)=x(11); %初始化r(11)
  r(12)=1; %初始化r(12)
  c=2;%用c/2的余数用来记录游走方向,初始值为斜向下游走
  i=1;j=2;%让编码从第二个数开始,即x(12)。
  l=1;t1=2;t2=2;%l用来记录r中的位置,
  for k=2:m+n-1  %从第二个数开始,总共有m+n-1次Z形转换
        while i<=t1&j<=t2 %判断是否超过游走边界t1记录i的最大值,t2记录j的最大值          
            if r(l1)==x(ij) 
               r(l2)=r(l2)+1; %相等则将r的第l个位置第二列个数加1    
            else l=l+1;   %不相等,则跳转到下一个位置
               r(l1)=x(ij); %将当前的新数据加入到r矩阵中               
               r(l2)=1; %相应的行程置1
            end        
            if mod(c2)==1%决定游走方向,当mod(c2)==1的时候表示斜向上游走,当mod(c2)==0时表示斜向下游走。
               i=i-1;  %向上游走就是让i-1j+1。
               j=j+1;
            else       %向下游走就是让j-1i+1。
               i=i+1;
               j=j-1;      
            end
        end   %一旦越界就停止循环     
        %由于上面游走的时候,会产生越界,即有可能或i>t1或j>t2下面让越界返回到正常位置      
          if c              if mod(c2)==1  %决定游走方向,=1时表示斜向上游走,=0时表示斜向下游走
                 i=i+1; %向上越界后只需让i+1就可以到下一行的正常位置
              else
                 j=j+1; %向下越界后只需让j+1就可以到下一列的正常位置
              end
              c=c+1; %越界一次,让c+1,即改变游方向
              t1=c; %边界最大值作相应的改变
              t2=c; 
          elseif c>=max(mn) % 当转折到达另一个较大行程的对角时
              if mod(c2)==0   %决定游走方向,

评论

共有 条评论