哈夫曼图片编码.m
来源:互联网 发布:c语言算法经典书籍 编辑:程序博客网 时间:2024/04/30 14:51
clc;clear;close;[Filename,Pathname]=uigetfile(... {'*.tif';'*.bmp';'*.png';'*.gif';'*.jpg'},'选择图片');str=[Pathname Filename];if (Filename~=0) z=imread(str); imshow(z); %else %clear; %显示数组Z [m,n]=size(z); p1=1;s=m*n; for k=1:m %获取图像颜色总数 for l=1:n f=0; for b=1:p1-1 if(c(b,1)==z(k,l)) f=1;break;end end if(f==0)c(p1,1)=z(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)==z(k,l))p(g)=p(g)+1;end end end p(g)=p(g)/s; end pn=0;po=1; while(1) %按概率排序生成一个符号(0或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,l),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 endend
0 0
- 哈夫曼图片编码.m
- 哈夫曼编码.m
- 行程编码解码.m
- 哈夫曼编码优化图片原理
- 放大图片.m
- 图片的剪切.m
- Huffman编码m文件分析
- C++实现图片压缩算法(哈夫曼编码)
- n个图片生成gif图片.m
- 压缩编码M-JPEG、MPEG4、H.264
- ModR/M,SIB编码的含义
- base64编码图片
- Base64编码图片转化
- Base64 图片编码
- 图片转成base64编码
- base64 编码图片
- 图片转成base64编码
- base64图片编码
- 如何用u盘制作linux和windows公用启动盘
- 腐蚀操作.m
- 哈夫曼编码.m
- 哈夫曼编码的MATLAB实现(基于0、1编码):
- 使用STL导致.o增大的真相
- 哈夫曼图片编码.m
- 花样swap函数
- 函数分布的快速绘图.m
- 行程编码解码.m
- 灰度线性变换.m
- STLport源代码中的一个BUG
- 基本三维图形的绘制.m
- 计算方框图像从0°~180°每隔1°增加多个radon变换.m
- 计算方框图像在0°到45°方向上的radon变换.m