matlab霍夫曼图像压缩,用matlab仿真huffman编码在jpg图像压缩中的应用崔微微

《用matlab仿真huffman编码在jpg图像压缩中的应用崔微微》由会员分享,可在线阅读,更多相关《用matlab仿真huffman编码在jpg图像压缩中的应用崔微微(3页珍藏版)》请在人人文库网上搜索。

1、用matlab仿真huffman编码在jpg图像压缩中的应用1.jpg图像的定义:JPEG是Joint Photographic Experts Group(联合图像专家组)的缩写,文件后辍名为jpg或jpeg,是最常用的图像文件格式,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的。

2、磁盘空间得到较好的图像品质。而且 JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。比如可以把137Mb的BMP位图文件压缩至203KB。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。2.huffman编码huffman编码是一种高效的无失真信源编码方法,所得到的码字具有最短的平均码长。3.用m。

3、atlab仿真用huffman编码对一图像进行压缩的例子(1)编码思路:先将一个模拟图形进行抽样量化,像素量化成九个灰度级。然后进行huffman编码,最后进行压缩率的计算。(2)编码程序如下:% 图像的huffman编码过程%将模拟图形进行抽样量化clear all;close all;clc;Dimens = 256; % 矩阵维数,假设矩阵为方阵即256*256src_size = Dimens2; % 矩阵元素的个数gray_level = 9; % 灰度级src = randn(Dimens); %产生模拟图像矩阵,满足正态分布,零均值,方差为1 src_one = reshape(。

4、src,1,src_size);src_max = max(src_one);src_min = min(src_one);quan = linspace(src_min,src_max,gray_level); % 产生均匀量化区间src_d = ; % 数字矩阵for row = 1:Dimens % 逐点量化for vol = 1:Dimensdiff = abs(src(row,vol)-quan);min_diff,min_index = min(diff);quan_gray = min_index -1;src_d(row,vol) = quan_gray;endend% pro。

5、b数组保存图像中各灰度出现的概率prob = ; for src_value=0:(gray_level-1)index = find(src_d=src_value);i = src_value + 1;prob(i) = length(index)/src_size;end% huffman编码p = prob;n=length(p); q=p; m=zeros(n-1,n); for i=1:n-1 q,l=sort(q); m(i,:)=l(1:n-i+1),zeros(1,i-1); q=q(1)+q(2),q(3:n),1; end bre=zeros(n-1,n);bre(n-1。

6、,1)=0+j; %虚部表示当前的二进制数的位数,以下类似bre(n-1,2)=1+j;for time=1:n-2loc_1 = find(real(m(n-time,:)=1);prebit = bre(n-time,loc_1);bre(n-time-1,1) = (real(prebit)*2 + 0) + j*(imag(prebit)+1);bre(n-time-1,2) = (real(prebit)*2 + 1) + j*(imag(prebit)+1);loc_not1 = find(real(m(n-time,:)1);bre(n-time-1,3:3+time-1) = 。

7、bre(n-time,loc_not1);endm1,index = sort(m(1,:);code = bre(1,index);code_data = real(code);code_bits = imag(code);disp(gray level, , huffman code);for i = 1:length(code)disp(num2str(i-1), ,num2str(dec2bin(code_data(i);endcode_binary = dec2bin(code_data);%逐点编码out = ;for row = 1:Dimens for vol = 1:Dime。

8、nsnow_gray = src_d(row,vol);now_code = code_binary(now_gray+1,:);now_bits = code_bits(now_gray+1);now_code = now_code(end-now_bits+1:end);out = out, now_code;endend%计算压缩比real_bitnum = length(out);bitnum_no_huffman = src_size*nextpow2(gray_level);comp_ratio =bitnum_no_huffman/real_bitnum;Hshannon = (-1)*prob*(log2(prob);disp(comp_ratio = ,num2str(comp_ratio);disp(Hshannon = ,num2str(Hshannon);(3)matlab运行结果如下:gray level huffman code0 1 2 110013 1114 05 106 11017 8 comp_ratio = 1.9087Hshannon = 2.0186。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值