基于小波变换的图像数据压缩 第9页
第五章 应用小波变换进行图像压缩的Matlab 实现
Matlab 小波分析工具箱集成了小波分析的许多研究成果,不仅提供了丰富的工具函数,还是一个很好的算法研究、工程设计与仿真应用平台.一般图像数据间存在着各种数据信息的冗余,而数据冗余不利于图像信息的网上实时快速传输和大量存储,图像压缩可解决这个问题. 小波变换用于图像压缩具有压缩比大、压缩速率快和压缩后保持图像特征基本不变等特点,因此小波变换被广泛用于图像压缩. 小波变换图像压缩方法有变换压缩与相邻像素去相关压缩之分.
5.1MATLAB简介
MATLAB 产品家族是美国 MathWorks公司开发的用于概念设计,算法开发,建模仿真,实时实现的理想的集成环境。由于其完整的专业体系和先进的设计开发思路,使得 MATLAB 在多种领域都有广阔的应用空间,特别是在 MATLAB 的主要应用方向 — 科学计算、建模仿真以及信息工程系统的设计开发上已经成为行业内的首选设计工具,全球现有超过五十万的企业用户和上千万的个人用户,广泛的分布在航空航天,金融财务,机械化工,电信,教育等各个行业。
在MATLAB产品家族中,MATLAB工具箱是整个体系的基座,它是一个语言编程型(M语言)开发平台,提供了体系中其他工具所需要的集成环境(比如M语言的解释器)。同时由于MATLAB对矩阵和线性代数的支持使得工具箱本身也具有强大的数学计算能力。 MATLAB产品体系的演化历程中最重要的一个体系变更是引入了Simulink,用来对动态系统建模仿真。其框图化的设计方式和良好的交互性,对工程人员本身计算机操作与编程的熟练程度的要求降到了最低,工程人员可以把更多的精力放到理论和技术的创新上去。
针对控制逻辑的开发,协议栈的仿真等要求,MathWorks公司在Simulink平台上还提供了用于描述复杂事件驱动系统的逻辑行为的建模仿真工具— Stateflow,通过Stateflow,用户可以用图形化的方式描述事件驱动系统的逻辑行为,并无缝的结合到Simulink的动态系统仿真中。
在MATLAB/Simulink基本环境之上,MathWorks公司为用户提供了丰富的扩展资源,这就是大量的Toolbox和Blockset。从1985年推出第一个版本以后的近二十年发展过程中,MATLAB已经从单纯的Fortran数学函数库演变为多学科,多领域的函数包,模块库的提供者。用户在这样的平台上进行系统设计开发就相当于已经站在了巨人的肩膀上,众多行业中的专家、精英们的智慧结晶可以信手拈来。
5.2 MATLAB的主要特点
1 语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。
2 运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。
3 MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。
4 程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。
5 程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
6 MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。
7 MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
8 功能强大的工具箱是MATLAB的另一特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。
9 源程序的开放性。开放性也许是MATLAB最受人们欢迎的特点。
5.3 MATLAB 与图像压缩
基于小波分析的图像压缩方法很多,包括低频信息保留压缩、小波包最佳基方法、小波域纹理模型方法、小波变换零树压缩、小波变换向量量化压缩等。
5.4 低频信息保留压缩方法
一个图像在进行小波分解后,可得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不相同的。高分辨率即高频子图像上大部分点的数值都接近于0 ,越是高频这种现象越明显。对一个图像来说,表现一个图像最主要的部分是低频部分,所以一个最简单的压缩方法是利用小波分解,去掉图像的高频部分而只保留低频部分,图像压缩可按如下程序进行处理。
%低频信息保留压缩方法
[ X , map] = imread (’d : \ a. bmp’,’bmp’) ;
subplot (221) ; image ( X) ; colormap( map) ;
title (’原始图像’) ; axis square
[ c , s ] = wavedec2( X ,2 ,’bior3.
ca1 = appcoef2( c , s ,’bior3.
ch1 = detcoef2 (’h’, c , s ,1) ;
cv1 = detcoef2(’v’, c , s ,1) ;
cd1 = detcoef2 (’d’, c , s ,1) ;
a1 = wrcoef2(’a’, c , s ,’bior3.
h1 = wrcoef2(’h’, c , s ,’bior3.
v1 = wrcoef2 (’v’, c , s ,’bior3.
d1 = wrcoef2(’d’, c , s ,’bior3.
c1 = [ a1 , h1 ; v1 , d1] ;
subplot (222) ; image ( cl) ; axis square
title (’分解后低频和高频信息’) ;
ca1 = appcoef2( c , s ,’bior3.
ca1 = wcodemat ( cal ,440 ,’mat’,0) ;
ca1 = 0. 5 3 cal ;
subplot (223) ; image ( cal) ; colormap( map) ;
axis square ;
title (’第一次压缩图像’) ;
imwrite ( cal , map ,’d : \ b. bmp’,’bmp’) ;
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>