基于MATLAB的图像压缩技术研究
- 格式:pdf
- 大小:628.11 KB
- 文档页数:4
第12期山西焦煤科技No.122008年12月ShanxiCokingCoalScience&TechnologyDec.2008
试验研究
基于MATLAB的图像压缩技术研究
吕金花
(山西汾西煤化高级技工学校)
摘要介绍了MATLAB在图像压缩研究方面的应用,探讨基于BP人工神经网络的图像压缩
的MATLAB实现和基于小波的图像压缩技术。MATLAB软件使用MATLABR2007a版本,并且通过
计算机实验证明了经过小波变换和BP神经网络编解码的图像在实现高压缩率的情况下能够保证很
好的图像质量,具有较好的视觉效果。
关键词MATLABR2007a;图像压缩;小波变换;BP神经网络
中图分类号:TD679文献标识码:A文章编号:1672-0652(2008)12-0035-04
图像信息数字化使电子信息技术领域面临的最
大难题是海量数据的存储和传输问题,而图像数据压
缩技术是解决问题的关键。由于图像数据往往存在
各种信息的冗余,如空间冗余、信息熵冗余、视觉冗余
和结构冗余等,因此也可以说,图像压缩就是去掉图
像中的各种冗余,保留有用的信息的过程[1]。
MATLAB是由美国MathWorks公司推出的用于
数值计算和图形处理的科学计算软件,它集数值分
析、矩阵计算、信号处理和图形显示多种功能于一体。
2007年3月,MathWorks公司推出了MATLAB
R2007a版本的最新产品,此版本增加了很多新的功
能,基本上囊括了目前很多典型应用的数字图形处
理。在MATLAB的神经网络工具箱中提供了很多用
于图像处理的函数。MATLABR2007a中的小波工具
箱(WaveletToolbox3.0)中包含的各种小波分析函
数,可用于对信号与图像的压缩处理,压缩后能保持
信号与图像的特征基本不变,压缩比高,压缩速度快,
且在传递过程中具有抗干扰能力。本文讨论了应用
MATLAB中的BP神经网络工具箱函数和小波工具
箱(WaveletToolbox3.0)函数进行图像压缩的原理,
并对其实现方法给出实例及相应分析。
1基于BP人工神经网络的图像压缩原理
BP网络是目前最为常用的一种人工神经网络模型,它可以直接提供数据压缩能力。利用多层前馈网
络的模式变换能力实现数据变换(编码)的基本思想
是:把一组输入模式通过少量的隐含层单元映射到一
组输出模式,并使输出模式尽可能等于输入模式。当
隐含层的单元数比输入模式数少时,就意味着隐含层
能更有效地表现输入模式,并把这种表现传送到输出
层,输出层节点数与输入层节点数相同。学习时,图
像数据既送到输入层,又送到输出层作为教师信号,
所使用的学习算法为算法网络训练好以后,输入层到
隐含层为网络的编码过程,对图像数据进行线性或者
非线性变换,从隐含层到输出层为网络的解码过程,
对经过压缩后的变换系数进行线性或者非线性反变
换,恢复图像的原始数据。
考虑用于学习的图像有NN个像素点,各像素
灰度值被量化为mBit(共2m个可能的取值)。2m
个灰度按线性关系转化成0~1之间的数值作为网络
的输入和期望输出(教师模式)。网络随机地抽取各
nn图像块(经过[0,1]区间的变换)作为学习模
式,用BP算法学习。通过调整网络中神经元之间的
连接权值,使训练集图像的重建误差E=f-g的均值
达到最小。训练好的网络隐含层神经元矢量(经过
量化)便是数据压缩的结果,而输出神经元矢量便是重建的数据。作者简介:吕金花女1959年出生1998年毕业于山西矿业学院工程师介休0320002基于BP人工神经网络图像压缩的实现
用基本的BP网络来进行图像压缩分为两个阶
段:训练和编码。第一阶段,将图像数据样本集作为
输入和教师信号训练BP网络;第二阶段:进行熵编
码。用BP人工神经网络对图像进行压缩的步骤如
下:
1)训练样本构造。把一幅图像的所有像素点作
为压缩网络的输入,应适当控制网络的规模,因此,首
先将图像进行划分。设待压缩图像由NN个像素
点构成,将其划分成M个子图像块,每个子图像块都
分别由pp的子像素块构成。这里以128128的
图像像素矩阵划分成44子像素块矩阵为例来说明
训练样本的生成情况。
[1]44[2]44[32]44[33]44[34]44[64]440
0
[993]44[994]44[1024]4
4
=[[1]44,[2]44,,[1024]44]41024]
由上面的方法生成的像素块矩阵还必须进行归
一化处理,本文采用的是均值分布预处理;待处理图
像的灰度范围为[xmin,xmax],变换域为[ymin,ymax],令
当前待处理的像素灰度值为:xvalue,则映射yvalue为:
yvalue=(ymax)(xvalue-xmin)xmax-xmin+xmin
用上式将原始图像的像素值划到[0,1]的范围
内,这样就构成了训练样本的所有预处理过程。
2)创建神经网络。将图像数据样本集作为输入
和教师信号训练BP网络,BP网络图像压缩中比特
率定义为:比特率=lkT+nktnL(bit/pixel)
这里输入图像被分成l个n维矢量,T和t分别
代表编码一个hi需要的比特数和编码一个耦合权值
(即wij与b)需要的比特数,k是隐含层神经元的个
数。
图像数据的压缩比=输入层节点/隐含层节点。
神经网络训练好以后,网络的耦合权值在这个压
缩过程中保持不变。在MATLAB中newff函数用于
创建反向传播网络。
3)对神经网络进行训练。用构建的输入矩阵,
每一列代表一个输入模式,用输入矩阵作为目标输出
矩阵,开始训练网络。训练过程中可以采用不同的学
习算法。在MATLAB中用train函数实现对神经网络
的训练。
4)编码仿真。用给定的算法训练网络,然后仿
真。如果隐含层神经元为K,则网络的隐含层产生K1024的矩阵,隐含层和输出层之间产生16K的
权值矩阵,输出层产生161的阈值矢量,分别对仿
真结果进行熵编码。MATLAB中用sim函数实现对
神经网络的仿真。
5)图像重构。对熵编码后的比特流进行解码,
得到隐含层输出hj和权值(wij与b),代入公式计算
出网络输出yi,它是一个161024的矩阵,每个矩阵
元素分别乘以255,把各像素值从[0,1]恢复为[0,
255],再把每个列向量变形成图像块,把所有子图像
组合成一幅完整图像,从而完成图像的重建工作[1]。
下面用实验来证明BP神经网络进行图像压缩
的结果。神经网络的输入节点为16,隐含层S分别
为8、4、2,分别代表压缩比为2、4、8。由于篇幅所限程序和运行过程省略。运行的结果见图1。
图1原始图像和压缩后的重构图像36山西焦煤科技2008年第12期从重建图像的效果可以看出,当隐含层神经元数
较少(S=2)时,压缩比较高,但是重建图像质量较
差,所以在仿真实验过程中,可通过增加隐含层的神
经元数来提高重建图像的质量。
3基于小波的图像压缩
小波分解方法是一种窗口大小(即窗口面积)固
定,但其形状可改变,时间窗和频率窗都可改变的时
频局域化分析方法,即在低频部分具有较高的频率分
辨率和较低的时间分辨率,在高频部分具有较高的时
间分辨率和较低的频率分辨率,所以被称为数学显
微镜。正是这种特性,使小波变换具有对信号的自
适应性[2]。
小波变换用于图像压缩的基本思想是:把图像进
行多分辨率分解,分解成不同空间、不同频率的子图
像,然后再对子图像系数进行编码。系数编码是小波
变换用于图像压缩的核心,压缩的实质是对系数的量
化压缩。图像经过小波变换后生成的小波图像的数
据总量与原图像的数据总量相等,即小波变换本身并不具有压缩功能。之所以将它用于图像压缩,是因为
生成的小波图像具有与原图像不同的特性,表现在图
像的能量主要集中在低频部分,而水平、垂直和对角
线部分的能量则较少;水平、垂直和对角线部分表征
了原图像在水平、垂直和对角线部分的边缘信息,具
有明显的方向特性。低频部分可以称为亮度图像,水
平、垂直和对角线部分可以称为细节图像。
小波变换通过多分辨分析过程将一幅图像分成
近似和细节两部分,细节对应的是小尺度的瞬变,它
在本尺度内很稳定。因此,将细节存储起来,对近似
部分在下一个尺度上进行分解,重复该过程即可。
应用MATLAB小波工具箱进行图像压缩,有2
种方法。
1)用wavedec2函数对图像进行小波分解后,再
用appcodf2函数对分解后图像进行重构,最后用
wcodemat函数进行量化编码,得到结果图像(程序和
运行过程省略)。运行的结果见图2。
图2基于小波的图像压缩结果
在这里可以看出,第一次压缩提取原始图像中
小波分解第一层的低频信息,此时压缩效果较好,压
缩比较小(约为1/4大小)。第二次压缩是提取第一
层分解低频部分的低频部分(即第二层的低频部
分),其压缩比较大(约为1/12),压缩效果在视觉上
也基本可以。随着分解层数的增加,压缩比是递减
的。
上面保留原始图像中低频信息的压缩办法只是
一种最简单的压缩办法,它不需经过其他处理即可获
得较好的压缩效果。对于上面的例子还可以只提取
小波分解的第三、第四层的低频信息。从理论上说,
可获得任意压缩比的压缩图像。在对压缩比和图像质量都有较高要求时,不如其他编码方法。
2)利用小波工具箱中专用的阈值压缩图像函数
wdencmp对给定图像进行压缩处理。首先给出应用
函数wdencmp进行压缩的效率,即分解系数中置0
的系数个数百分比和保留能量百分比(程序和运行
过程省略)。运行的结果见图3。
4结束语
MATLAB软件一经推出就获得了广大用户的青
睐,随着版本的不断提高,功能也越来越强大,尤其是
2007年3月推出的MATLABR2007a增加了350个
新特性,使用方便,简单易学。把用户从繁重的计算
和编程中解脱出来。所以,使用好MATLAB软件可372008年第12期吕金花:基于MATLAB的图像压缩技术研究