1、太原理工大学 2015级 硕士研究生考试用纸学生姓名 裴晓鹏 学号 2015510298 专业 控制科学与工程 课程名称:智能控制及其MATLAB实现 授课教师 李国勇 考试时间 2016.6 智能控制及其MATLAB实现 题目: 基于BP神经网络的图像压缩实现方法 姓 名: 裴晓鹏 学 号: 2015510298 授课教师: 李国勇 所在院系: 信息工程学院 基于BP神经网络的图像压缩实现方法摘要 在当今这个信息爆炸的时代,图像传输和共享是一个很重要的环节,但是图像数据的海量性使其存储和传输成为数字图像处理领域的一大难题。研究发现,一幅图像之所以占据内存大,是因为除了有效信息以外,还有许多冗
2、余信息和相干信息。也正是因为图像中存在着大量的冗余信息和相干信息,使得对图像进行压缩,即去除图像中的冗余信息和相干信息,只保留图像中的有效特征信息变得可行。所谓图像压缩是指用较少的数据量对冗余信息和相干信息进行有效的表征或直接去除。压缩图像为数字图像提供了一种有效的表示方法,同时缓解了系统的存储和传输等压力,在一定程度上能够减少图像存储量和减轻图像传输的负担,也能实现快速传输和实时处理。本文在图像压缩原理及几种常用的图像压缩方法的研究基础上,采用BP神经网络实现图像压缩,能够重构出高质量的图像。在要求存储量较少的同时还追求高质量的重构图像的情况下,这种压缩方法对数据的存储和传输有一定的实践指导
3、作用。关键词:图像压缩;快速传输;BP神经网络Image compression method based on BP neural networkAbstractToday information explodes, the images transmission and sharing is an important part but the image data huge amounts make its storage and transport become a big problem in the field of digital image processing. The stu
4、dy found that an image is to occupy memory is big, because in addition to the valid information, there are a lot of redundant information and irrelevant information. Is precisely because there are a lot of redundant information in the image and correlation information, make the image is compressed,
5、which remove the redundant information in the image and correlation information, only keep the effective feature information of images become feasible. Image compression refers to the use of less amount of data to the redundant information and coherent information for effective characterization or r
6、emove directly. Compressed image as the representation method of digital image provides an effective, at the same time reduce the pressure on the system of storage and transmission, etc, to a certain extent, can reduce the image storage and reduce the burden of image transmission, also can realize f
7、ast transmission and real-time processing. Based on the principle of image compression and several common image compression method based on the research of image compression is realized by using the BP neural network, to reconstruct the high quality images. In demanding less storage capacity but als
8、o the pursuit of high quality under the condition of reconstructed images, the compression method for data storage and transmission have certain practice guidance.Key words: Image compression; Rapid transmission; The BP neural network第一章 引言 在当今充满各种类型信息的时代,图像是人类感知世界、表达信息、获取信息和传递信息的重要工具之一。随着人类对图像信息需求量
9、的不断增加,庞大图像数据量的获取、存储、传输以及传播等都面临着巨大的挑战。现实应用中,一幅较大图像数据的存储通常需要占用比较大的内存,而真正用来表征图像本质特征的数据往往相对较少,如果我们将整幅图像数据全部保存,将无形中占用和浪费较大的内存资源,假如我们只保存表征图像的有效数据,则能够节约大量的存储空间。因此,如何对图像信号用少量的数据进行有效表征以减少存储空间和缩短传输时间已成为图像处理领域的研究热点之一。【1】研究发现,一幅图像之所以占据内存大,是因为除了有效信息以外,还有许多余信息和相干信息。通常把图像中大量重复出现的这部分信息称为冗余信息,对于那些可用其它信息表示的信息称为相干信息,也
10、正是因为图像中存在着大量的冗余信息和相干信息,使得对图像进行压缩,即去除图像中的冗余信息和相干信息,只保留图像中的有效特征信息变得可行【2】。所谓图像压缩是指用较少的数据量对冗余信息和相干信息进行效的表征或直接去除。压缩图像为数字图像提供了一种有效的表示方法,同时缓解了系统的存储和传输等压力,也便于用有限的资源查看和处理大量的图像信息。 图像压缩技术历经50多年的不断发展,目前已经有一些比较成熟的方法。常用的图像压缩技术通常采用变换的方法来有效地去除图像中的冗余信息。基于变换编码压缩的方法,常用的主要有离散余弦变换(Discrete Cosine Transform, DCT)编码81和离散小
11、波变换(Discrete Wavelet Transform, DWT)编码,“。DCT变换将空间域的图像信号变换到频域,使得信号能量集中在一起,能够用少量的有效数据来表征原始图像。由于DCT变换基固定,并且能够快速实现,使其在许多图像压缩技术中采用。如JPEG,MPEG, H.26x和AVS等标准均采用了DCT变换技术。如今,通信网络技术的发展、数字图像的阅览和图像数据的传输不断要求图像压缩方法能够提供高质量和高分辨率的解压图像,来满足不同等级的需求,这些灵活性的要求往往与DCT的编码结构很难结合起来,有待相关研究者进行更深入的研究【3】。 1974年,小波变换(Wavelet Transf
12、orm, WT)理论出现,极大地促进了数据压缩技术的进一步发展【4】。小波变换和DCT变换类似,可以将图像从空间域变换到频域,使图像按频率能量分布更为集中;小波变换通过对图像进行多尺度分解,可以获得不同程度上的近似图像信号。80年代末,Lu Jian等人就将小波变换应用到图像压缩编码中,其具体过程为:首先对图像依据Mallat塔式快速小波变换算法进行多尺度分解;然后对每级的小波系数进行量化;再对量化后的小波系数进行编码处理,最终获得压缩图像。随着小波变换理论的不断发展,其在图像数据压缩领域已经被广泛地应用,如2002年提出的图像压缩编码方法JPEG2000就是基于DWT的一种新的静止图像压缩标
13、准【5】。 1993年,MPEG-1正式成为视频图像压缩标准(运动图像压缩标准)。MPEG-1主要面向数字存储媒体,应用于多媒体计算机、电子出版物以及交互式电视等领域。随着数字图像技术的不断发展,随后的几年中,陆续推出了MPEG-2, MPEG-4, MPEG-7等标准【6】。 图像压缩编码方法已经发展多年,并且日渐成熟,一系列的图像压缩标准也在不断完善和发展,从静止图像压缩标准JPEG到JPEG2000的发展使得图像的压缩比以及重构图像质量都有很大的提升,尤其从动态图像压缩标准MPEG-X系列可以看出,基于图像内容信息的压缩编码方法将是图像压缩发展的趋势【7】。 本文在阐述BP 神经网络的图
14、像压缩原理基础上,仿真实现了基于BP神经网络的静态灰度图像压缩。第二章 人工神经网络简介人工神经网络从生理学角度模拟人脑大量神经元细胞的运行机理,通过不断对链接权值进行修改,达到训练、模拟、预测等目的。人工神经网络经一段时间的低潮后,从 20 世纪 80 年代起,逐渐进入热潮,并衍生出多种网络链接方式,在工程、勘探、图像、预测等方面应用广泛【8】。1988年Hecht-Nielsen对人工神经网络定义如下“人工神经网络是一个并行、分布处理结构,它由处理单元及称为连接的无向信号通道互连而成。这些处理单元具有局部内存,并可以完成局部操作。每个处理单元有一个单一的输出链接,这个输出可根据需要被分支多
15、个并行链接,且这些并行连接都输出相同的信号,即相应处理单元的信号及信号的大小不因分支的多少而变化。处理单元的输出信号可以是任何需要的数学模型,每个处理单元进行的操作必须是完全局部的。也就是说,它必须仅仅依赖于经过输入连接到达处理单元的所有输入信号的当前值和储存在处理单元局部的范围值。”【9】1986 年,Rumelhart和Mc Celland在 Parallel Distributed Processing一书中,提出 BP 学习算法。用得最广泛的BP神经网络一般采用三层,即一输入层,一隐层,一输出层。BP算法训练时,由工作信号正向传播和误差信号反向传播组成;工作时,采用训练好的权值进行计算
16、。 工作信号正向传播。神经网络的输入数据在输入层经传递函数的计算,把结果传向隐层;再经隐层传递函数的计算,结果传向输出层,在输出层产生输出。在此过程中,网络权值不变,算法计算因输入、网络权重、阈值、传递函数等产生的输出。 误差信号反向传播产生输出结果后,根据输出值和期望值之间的差异,把误差回传,根据不同的具体算法,从输出层起,逐层调整网络权值,至输入层,目的是通过调整权值,使输出的数据更接近期望值然后再进行工作信号正向传播,得出输出层结果后,再调整网络权值,如此循环。工作时,采用经多次调整的网络权值,把输入数据传递到输出层,产生输出。BP 网络是目前发展较为成熟的神经网络模型之一,是一种利用非
17、线性可微分函数进行权值修正与调整的多层前馈人工神经网络,能通过严谨的数学理论进行推理验证,在模式识别、函数逼近、数据压缩等方面获得了广泛应用与认同。BP 网络算法的主要特点是输入信号正向传递,误差反向传播。BP 网络的学习训练算法的实质是把样本集合的输入输问题变换为一个非线性优化问题【10】。其网络结构分为输入层、隐含层、输出层等三层。一个典型的BP神经网络模型结构如图1。图1 一个典型的BP网络模型结构人脑在接受视觉感观传来的大量图像信息后,能够迅速做出反应,并在脑海中重现这些信息, 这不仅与人脑的巨大信息储存能力有关,还说明人脑具有较强的特征提取能力。人工神经网络虽然是人脑的简单模拟和抽象
18、,但具有许多与人脑相似的信息处理能力, 自然也具有较强的数据压缩能力, 一些神经网络模型能直接提供数据压缩就是一个很好的例子【11】。由于现实图像内容变化的随机性,对图像的分割以及平稳区域与非平稳区域的数学描述还没有找到一个有效的手段和方法,试图用一种图像模型来描述自然界千奇百怪的图像是不现实的, 而人工神经网络在解决类似的黑箱上特别有效, 故可以用神经学习图像中规律性的东西, 通过神经网络自适应机制, 如结构自适应、学习率参数的变化和连接权值的变化等进行调整。因此, 可以利用神经网络的特点对图像信息进行有效的分解、表征和编码, 从而取得传统方法无法比拟的结果。这就是将人工神经网络用于图像压缩
19、的基本思想和出发点。具体来讲, 与传统的图像压缩方法相比,人工神经网络具有如下一些优势:(1) 图像信号的正交变换中,如果所选的基向量与图像信号的协方差矩阵的特征向量接近, 则变换域内图像信号的相关性将明显下降,能量相对集中, 就能使图像信号的带宽得到较大压缩, 此时的变换比较接近最佳线性变换(KLT)。对于随机性很强的图像信号来说,很难找到一种与不同统计特性的图像信号完全匹配的变换, 因此变换矩阵中基向量的选择不是固定的, 这就给最佳变换编码的实现带来了困难,而神经网络的强映射力和非线性特性, 使它可以学习具有相当接近输入信号特征空间基的能力,因此用来解决最佳变换的实现是很有效的【12】;(
20、2) 神经网络中及其丰富的训练算法为设计高效的图像压缩编码系统提供了新的途径;(3) 大多数人工神经网络都具有相当强的模式识别与模式分类能力, 这给图像编码方案中模式分类问题的解决提供了一个强有力的工具;(4)神经网络有较强的容错性和联想记忆功能,任何局部的损坏不会影响整体结果, 这一特性有助于对有噪图像的数据压缩及对压缩后信息不全图像的恢复;(5)神经网络的大规模并行处理能力及分布式结构,为神经网络图像编码的实时实现创造了条件, 这也是将神经网络用于图像编码的优势所在。目前,将人工神经网络理论与技术引入图像编码领域的研究工作十分活跃,发展相当快,基于人工神经网络模型的图像编码方法已涉足图像编
21、码研究的很多方面, 所使用的神经网络模型已有近十种,对现有的神经网络图像编码方法进行归纳、总结, 有助于了解神经网络方法的发展方向,使已取得的成果系统化,使尚未解决的问题明确化【13】。不少神经网络模型都有相当强的数据压缩能力,当然,有些神经网络模型不能提供直接的数据压缩, 而是间接参与数据压缩。如果以用于图像编码的神经网络模型为主线, 对现有神经网络图像编码方法进行分类, 一方面可了解哪些神经网络模型具有压缩能力, 从而进一步挖掘潜力, 另一方面可了解神经网络与图像压缩技术结合的途径,从而探讨其它模型的压缩能力, 建立适合数据压缩的新的模型, 在进行归类的过程中, 将那些常用的或者重要的神经
22、网络模型和学习算法分别作为一个独立的类别, 而将那些很少使用或新近提出的神经网络模型划入其它类别, 按此原则, 目前用于图像编码的神经网络模型和学习算法主要有以下几类:(1) 多层前馈神经网络,其学习算法为BP算法,所以又叫BP网络;(2) Kohonen 自组织神经网络,包括频率敏感竞争学习(FSCL)网络,其学习算法为自组织特征映射(SOFM)算法;(3) Hpfield 神经网络;(4) 模拟退火(SA)学习算法;(5) 混合神经网络模型;(6) 其它神经网络模型,包括CPN,函数链神经网络,Sophia 联想神经网络(SANNET), 改进的Hebbian 学习规则的系列应用(SAMH
23、)等。第三章 BP 神经网络的图像压缩原理数字图像压缩是以较少的比特数有损或者无损地表示原来的像素矩阵的一种图像处理技术,其目的是减少图像数据中的时间冗余、空间冗余、频谱冗余等一种或多种冗余信息而达到更加高效的存储与传输数据。图像压缩系统无论采用什么具体的结构或者技术方法,其基本过程却是一致的,可概括为如图2 所示的流程图,包括编码、量化、解码等三个环节【14】。图2 图像压缩基本流程从理论上讲,编解码问题可以归纳为映射与优化问题,而人工神经网络从数学上分析就是实现了从输入到输出的一个非线性映射关系,并具有高度并行处理能力、较高的容错性与鲁棒性。分析图像压缩的基本原理、环节与BP 的网络结构分
24、布,可得出基于BP 网络的图像压缩原理如图3 所示。图3 基于BP神经网络的图像压缩原理在BP 网络中,输入层到隐含层之间的映射关系相当于编码器,用于对图像信号进行线性或者非线性变换。而隐含层到输出层之间的映射关系相当于解码器,通过对压缩后的信号数据进行反变换以达到重建图像数据。压缩比率S= 输入层神经元节点数/ 隐含层神经元节点数。BP 神经网络的输入层与输出层的神经元节点数目从理论上应该是一致的,而隐含层的神经元数目比输入输出层地数目要少的多。这样理论上可通过调节隐含层神经元节点数目可达到不同图像压缩比效果。BP网络是目前最为常用的一种神经网络模型,它可以直接提供数据压缩能力。最典型的例子
25、是一种三层对称的BP网络,包括输入层、隐含层和输出层,隐含层的节点数要少于输入节点数, 输入节点数与输出节点数相同, 整个网络结构是完全对称的。学习时, 图像数据既送到输入层又送到输出层作为教师信号,所使用的学习算法为BP 算法。网络训练好以后,输入层到隐含层为网络的编码过程,对图像数据进行线性或者非线性变换, 从隐含层到输出层为网络的解码过程,对经过压缩后的变换系数进行线性或非线性反变换,恢复图像的原始数据。这类方法称为结构压缩法。N.Sonehara 等人1989 年探讨了三层前馈神经网络的通用性与训练图像数目以及迭代次数的关系,还探讨了隐节点输出值量化和初始权值的选择对重建图像质量的影响
26、,为了控制网络规模,将图像分成88的子块, 每一子块分别送到相应的子网络进行并行处理, 因此学习速度相当快,每学习一幅图像仅一秒钟。1990年,Z.He与H.Li将多层前馈神经网络用于图像非线性预测编码,结果表明:神经网络实现的非线性预测器优于线性预测器,网络的抗噪性强,通用性好。随后,S.A.Dianat与张伟等人进行了类似的研究,得出了相同的结论。BP 算法流程如图4 所示。误差反向传播算法分为两个阶段:第一阶段(正向传播过程), 给出输入信息通过输入层经隐含层逐层处理并计算每个单元的实际输出值; 第二阶段(反向传播过程), 若在输出层未能得到期望的输出值,则逐层递归求期望输出和实际输出值
27、的偏差(即误差),以便根据此误差调节权值。权值的实际改变可由权值误差微商一个模式一个模式的计算出来,即它们可以在这组模式集上进行累加【15】。图4 BP算法流程图误差反向传播算法的性能函数是均方误差。对单层的线性网络,误差是网络权值的显式线性函数,其相对于权值的导数较为容易求得。在具有非线性传输函数的多层网络中,网络权值和误差的关系就更为复杂。为了计算导数,需要使用微积分的链式法则。采用BP算法的多层前馈网络是至今为止应用最为广泛的神经网络,在多层前馈网的应用中, 以图5 所示的单隐层网络的应用最为普遍【16】。一般习惯将单隐层前馈网称为三层前馈网, 所谓三层包括了输入层、隐层和输出层。图5
28、三层BP网络模型通常,图像的数字编码,其实质是在一定质量(信噪比要求或主观评价得分)条件下, 以最少比特数来表示(传输)一幅图像。为了比较各种压缩编码效率,需定义表示其压缩效率的压缩比,通用的压缩比可定义为:压缩比用于表示原始数据量与压缩后存储数据量之间的比值关系,衡量数据压缩的程度。压缩比越大丢弃的信息越多,重构图像质量越差。压缩比主要是用来评价图像的压缩性能,而另外还有一些评价重建图像的质量的性能参数,如峰值信噪比( PSNR ),造成解压后重构图像失真的就是压缩过程中丢弃的那部分信息,这部分信息可以通过原始图像与重构图像之间的函数关系来表示,PSNR能反映出这两者间的关系。峰值信噪比定义
29、为: 。本文的程序在附录里有详细说明,下面图6展示了利用BP神经网络实现图像压缩的效果:图表 6 图像压缩结果总结本次压缩的峰值信噪比PSNR:33.8075,压缩比:2.3136,压缩效果明显,重构图像效果较好。但是它也有很多不完美的地方:(1) 己经学习好的网络的泛化问题,即能否逼近规律、能否正确处理大量没有学习的样本、是否有预测能力;(2) 基于BP 算法的网络的误差面有三个特点:有很多局部最小的解; 存在一些平坦区, 在此区内误差改变很小; 存在不少的局部最小点, 在某些初值的条件下算法容易陷入局部最小点。由于第二和第三个缺点, 造成网络完全不能训练; 初始的随机加权的大小, 对局部最
30、小的影响很大; 训练步长的大小, 直接影响训练时间的长短, 其选择没有理论指导。(3) 学习算法的收敛速度缓慢, 且容易振荡;(4) 网络的隐含层节点的个数的选取尚缺少统一而完整的理论指导。针对这些问题,将在以后的研究中进行改进。参考文献1张旭峰.基于压缩感知的图像压缩研究D.西北大学,20152徐大卫.基于字典学习的高光谱图像压缩算法研究D.中国科学技术大学,20153王丹枫.基于在线字典学习的高光谱图像压缩技术研究D.哈尔滨工业大学,20154吴运泽.基于小波变换的多级树集合分裂图像压缩算法研究D.沈阳工业大学,20155刘志翔.基于BP神经网络的汽车保险需求预测研究D.暨南大学,2015
31、6董程.基于改进神经网络的车牌识别算法的研究及仿真D.哈尔滨理工大学,20157罗毅.基于BP神经网络与智能算法的股价预测方法研究D.深圳大学,20158XiaoHong Han;Xiaoyan Xiong;Fu Duan.A new method for image segmentation based on BP neural network and gravitational search algorithm enhanced by cat chaotic mappingJ.Applied Intelligence,2015,No.49Xuewu Ji;Jian Wang;Youqun
32、Zhao;Yahui Liu;Liguo Zang;Bo Li.Path planning and tracking for vehicle parallel parking based on preview BP neural network PID controllerJ.Transactions of Tianjin University,2015,No.310Ximing You;Xuewu Cao.Study of Liquid Lithium Coolant Interaction Based on BP Neural Network Optimized by Genetic Al
33、gorithmJ.Journal of Fusion Energy,2015,No.411Weikuan Jia;Dean Zhao;Tian Shen;Shifei Ding;Yuyan Zhao;Chanli Hu.An optimized classification algorithm by BP neural network based on PLS and HCAJ.Applied Intelligence,2015,No.112Juncheng, Tao.Adaptive combination forecasting model for Chinas logistics fre
34、ight volume based on an improved PSO-BP neural networkJ.Kybernetes: The International Journal of Systems & Cybernetics,2015,No.413Woodworth, Joseph Thomas.Numerical Optimization Methods for Image Processing and Machine LearningD.UCLA,201614丛爽编著.面向MATLAB工具箱的神经网络理论与应用M.200915贺兴华等编著.MATLAB 7.x图像处理M.200
35、616周润景,张丽娜著.基于MATLAB的模糊与神经网络设计M.2010附录1程序代码bp_imageCompress.m% bp_imageCompress.m% 基于BP神经网络的图像压缩% 清理clcclear all% 压缩率控制K=4;N=10;row=256;col=256;% 数据输入% I=imread(lena.bmp);i=imread(tyut2.jpg);I=rgb2gray(i);%I灰度图像% 统一将形状转为row*colI=imresize(I,row,col);% 图像块划分,形成K2*N矩阵P=block_divide(I,K);% 归一化P=double(P
36、)/255;% 建立BP神经网络net=feedforwardnet(N,trainlm);T=P;net.trainParam.goal=0.001;net.trainParam.epochs=1000;ticnet=train(net,P,T);toc% 保存结果com.lw=net.lw2;com.b=net.b2;,len=size(P); % 训练样本的个数com.d=zeros(N,len);for i=1:len com.d(:,i)=tansig(net.iw1*P(:,i)+net.b1);endminlw= min(com.lw(:);maxlw= max(com.lw(:
37、);com.lw=(com.lw-minlw)/(maxlw-minlw);minb= min(com.b(:);maxb= max(com.b(:);com.b=(com.b-minb)/(maxb-minb);maxd=max(com.d(:);mind=min(com.d(:);com.d=(com.d-mind)/(maxd-mind);com.lw=uint8(com.lw*63);com.b=uint8(com.b*63);com.d=uint8(com.d*63);save comp com minlw maxlw minb maxb maxd mindbp_imageRecon
38、.m% bp_imageRecon.m% 清理clear,clcclose all% 载入数据col=256;row=256;% I=imread(lena.bmp);i=imread(tyut2.jpg);I=rgb2gray(i);%I灰度图像I=imresize(I,row,col);load compcom.lw=double(com.lw)/63;com.b=double(com.b)/63;com.d=double(com.d)/63;com.lw=com.lw*(maxlw-minlw)+minlw;com.b=com.b*(maxb-minb)+minb;com.d=com.d
39、*(maxd-mind)+mind;% 重建for i=1:4096 Y(:,i)=com.lw*(com.d(:,i) +com.b;end% 反归一化Y=uint8(Y*255);% 图像块恢复I1=re_divide(Y,col,4);% 计算性能fprintf(PSNR :n );psnr=10*log10(2552*row*col/sum(sum(I-I1).2);disp(psnr)a=dir();for i=1:length(a) if (strcmp(a(i).name,comp.mat)=1) si=a(i).bytes; break; endendfprintf(rate:
40、 n );rate=(256*256)/double(si);disp(rate)figure(1)imshow(I)title(灰度图像);figure(2)imshow(I1)title(重建图像);block_divide.mfunction P = block_divide(I,K)% P=block_divede(I)% row,col=size(I),row%K=0, and col%K=0% divide matrix I into K*K block,and reshape to % a K2*N matrix% example:% I=imread(lena.jpg);% P
41、=block_divide(I,4);% 计算块的个数:R*C个row,col=size(I);R=row/K;C=col/K;% 预分配空间P=zeros(K*K,R*C); for i=1:R for j=1:C % 依次取K*K 图像块 I2=I(i-1)*K+1:i*K,(j-1)*K+1:j*K); % 将K*K块变为列向量 i3=reshape(I2,K*K,1); % 将列向量放入矩阵 P(:,(i-1)*R+j)=i3; endendre_divide.mfunction I=re_divide(P,col,K)% I=re_divide(P)% P: K2*N matrix% example:% I=re_divide(P);% I=uint8(I*255);% imshow(I)% 计算大小,N=size(P);m=sqrt(N);% 将向量转为K*K矩阵b44=;for k=1:N t=reshape(P(:,k),K,K); b44=b44,t;end% 重新排布K*K矩阵I=;for k=1:m YYchonggou_ceshi1=b44(:,(k-1)*col+1:k*col); I=I;YYchonggou_ceshi1;end