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

📄 haffman.m

📁 实现JPEG的压缩和编码 (1)首先通过DCT变换去除数据冗余; (2)使用量化表对DCT系数进行量化; (3)对量化后的系数进行Huffman编码。
💻 M
字号:
function c=haffman(I) %定义Huffman编码子程序
[m,n]=size(I);
p1=1;s=m*n;

for k=1:m
   for h=1:n
   f=0;
       for b=1:p1-1
        if(c(b,1)==I(k,h)) f=1;break;
        end
       end
         if(f==0) c(p1,1)=I(k,h);p1=p1+1;
         end
    end
end


for g=1:p1-1
    p(g)=0;c(g,2)=0;
     for k=1:m
         for h=1:n
           if(c(g,1)==I(k,h)) p(g)=p(g)+1;
           end
         end
     end
    p(g)=p(g)/s;
end
  pn=0;po=1;

  while(1)
        if(pn>=1.0) break; 
        else
            [pm p2]=min(p(1:p1-1));p(p2)=1.1;
            [pm2,p3]=min(p(1:p1-1));p(p3)=1.1;
             pn=pm+pm2;p(p1)=pn;
            tree(po,1)=p2;tree(po,2)=p3;
             po=po+1;p1=p1+1;
        end
  end

  
  for k=1:po-1
     tt=k;m1=1;
         if(or(tree(k,1)<9,tree(k,2)<9))
        if(tree(k,1)<9)
            c(tree(k,1),2)=c(tree(k,1),2)+m1;
         m2=1;
      while(tt
m1=m1*2;
for h=tt:po-1
if(tree(h,1)==tt+g)
c(tree(k,1),2)=c(tree(k,1),2)+m1;
m2=m2+1;tt=h;break;
elseif(tree(h,2)==tt+g)
m2=m2+1;tt=h;break;
end
end
end
c(tree(k,1),3)=m2;
end
tt=k;m1=1;
if(tree(k,2)<9)
m2=1;
while(tt
m1=m1*2;
for h=tt:po-1
if(tree(h,1)==tt+g)
c(tree(k,2),2)=c(tree(k,2),2)+m1;
m2=m2+1;tt=h;break;
elseif(tree(l,2)==tt+g)
m2=m2+1,tt=h;break;
end
end
end
c(tree(k,2),3)=m2;
end
end
end

⌨️ 快捷键说明

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