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

📄 huffman.m

📁 适合初学者的基于MATLAB的JPEG编码,haffman编码,RLE编码.
💻 M
字号:
I=imread('lena256.bmp');
[m,n]=size(I);
p1=1;s=m*n;
for k=1:m
    for L=1:n
        f=0;
        for b=1:p1-1
            if (c(b,1)==I(k,L)) f=1;break;end
        end
        if (f==0) c(p1,1)=II(k,L);p1=p1+1;end
    end
end

for g=1:p1-1
    p(g)=0;c(g,2)=0;
    for k=1:m
        for L=1:n
            if (c(g,1)==I(k,L)) 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)<g,tree(k,2)<g))
         if (tree(k,1)<g)
             c(tree(k,1),2)=c(tree(k,1),2)+m1;
             m2=1;
             while (tt<po-1)
                    m1=m1*2;
                    for L=tt:po-1
                          if (tree(L,1)==tt+g)
                              c(tree(k,1),2)=c(tree(k,1),2)+m1;
                              m2=m2+1;tt=L;break;
                          elseif (tree(L,2)==tt+g)
                              m2=m2+1,tt=L;break;
                          end
                    end
             end
             c(tree(k,1),3)=m2;
         end
         tt=k;m1=1;
         if (tree(k,2)<g)
             m2=1;
             while (tt<po-1)
                 m1=m1*2;
                 for L=tt:po-1
                     if (tree(L,1)==tt+g)
                         c(tree(k,2),2)=c(tree(k,2),2)+m1;
                         m2=m2+1;tt=L;break;
                     elseif (tree(L,2)==tt+g)
                         m2=m2+1;tt=L;break;
                     end
                 end
             end
             c(tree(k,2),3)=m2;
         end
    end
end

⌨️ 快捷键说明

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