一、实验名称基于BP神经网络的图像压缩二、实验目的1.熟悉掌握神经网络知识;2.学习多层感知器神经网络的设计方法和Matlab实现;3.进一步了解掌握图像压缩的方式方法,分析仿真图像压缩效果。三、实验要求1.学习神经网络的典型结构;2.了解BP算法基本思想,设计BP神经网络架构;3.利用BP算法解决图像压缩的质量问题;4.谈谈实验体会与收获。四、实验步骤(一)分析原理,编写程序本实验主要利用BP神经网络多层前馈的模式变换能力,实现数据编码和压缩。采用输入层、隐含层、输出层三层网络结构。输入层到隐含层为编码过程,对图像进行线性变换,隐含层到输出层为网络解码过程,对经过压缩后的变换系统进行线性反变换,完成图像重构。其主要步骤有以下五步:1.训练样本构造基于数值最优化理论的训练算法,采用Levenberg-Marquardt方法,将训练图像的所有像素点作为压缩网络的输入,对图像进行划分。将原始图像分成4×4的互不重叠的像素块,并将每个像素快变形为16×1的列向量,将原始数据转化为16×1024的矩阵。对输入数据进行预处理,像素块矩阵进行尺度变换,即归一化处理。为了将网络的输入、输出数据限定在[0,1]的区间内,本实验采用均值分布预处理方法。将待处理图像的灰度范围[xmin,xmax],变换域为[ymin,ymax],设待处理的像素灰度值为xi,则对于所有过程的映射yi满足公式:yi=xminmaxmin)min)(max(xxxiyy+xmin其主要程序为:P=[];%将原始数据转化为16*1024的矩阵fori=1:32forj=1:32I2=I((i-1)*4+1:i*4,(j-1)*4+1:j*4);i3=reshape(I2,16,1);-1-II=double(i3);P_1=II/255;%矩阵归一化处理P=[P,P_1];endend2.创建神经网络将图像样本集作为输入和理想信号训练BP网络,设此网络图像压缩比为S,网络输入层节点数为ni,隐含层节点数为nh,则压缩比:S=nhni本实验将原始图像数据转化为16×1024的矩阵数据,网络输入层节点数为ni=64,隐含层节点数要求小于输入层节点数,则分别取nh为4、8、12、16进行实验。3.训练神经网络构建输入矩阵(每一列代表一个输入模式),并将此作为输出矩阵。根据采用Levenberg-Marquardt方法,在Matlab中调用训练算法,即调用newff函数开始训练网络,函数的输入参数BTF取值“trainlm”,TFi取值“tansig、logsig”,训练次数设定为500次,性能目标为0.001。其主要程序为:net=newff(minmax(P),[8,16],{'tansig','logsig'},'trainlm');net.trainParam.goal=0.001;net.trainParam.epochs=500;4.编码仿真根据给定的算法训练网络,然后进行仿真。在Matlab中用sim函数进行仿真。5.图像重构对压缩编码后的数据进行解码,并进行尺度变换回原数据量值,即每个矩阵元素分别乘以255,将像素值从[0,1]恢复到[0,255]区间内,再将列向量变形成图像块,合成一副完整图像,完成图像重构。其主要程序为:Y_fz=sim(net,P);%对网络训练结果进行编码仿真Y_cg=[];%图像重构-2-fork=1:1024Y_cg1=reshape(Y_1(:,k),4,4);Y_cg=[Y_cg,Y_cg1];endY_sc=[];fork=1:32Y_sc1=Y_cg(:,(k-1)*128+1:k*128);Y_sc=[Y_sc;Y_sc1];endY_scjg=uint8(Y_sc*255);(二)分析及仿真实验隐含层神经元数对神经网络的构建和训练有很重要的影响,当神经元数较少时,图像压缩较高,但重构图像质量较差,实验选取一定的神经元数,已满足图像重构质量和训练速度的要求。实验1:神经元数nh=4,S=16,训练次数500;实验2:神经元数nh=8,S=8,训练次数500;实验3:神经元数nh=12,S=5.3,训练次数500;实验4:神经元数nh=16,S=4,训练次数500。五、实验结果分析实验一结果:图1实验一图像压缩及误差曲线图原始图像S=16压缩比为16时的训练误差性能曲线-3-TRAINLM,Epoch500/500,MSE0.00150597/0.001,Gradient0.658157/1e-010TRAINLM,Maximumepochreached,performancegoalwasnotmet.Elapsedtimeis879.688000seconds.没有达到性能目标;实验二结果:图2实验二图像压缩及误差曲线图TRAINLM,Epoch0/500,MSE0.200195/0.001,Gradient411.191/1e-010TRAINLM,Epoch10/500,MSE0.000817748/0.001,Gradient36.1943/1e-010TRAINLM,Performancegoalmet.Elapsedtimeis42.203000seconds.达到性能目标,重构图像质量好,训练速度快。实验三结果:原始图像压缩比为8时的训练误差性能曲线S=8-4-图3实验三图像压缩及误差曲线图TRAINLM,Epoch0/500,MSE0.195168/0.001,Gradient448.976/1e-010TRAINLM,Epoch10/500,MSE0.000863373/0.001,Gradient186.52/1e-010TRAINLM,Performancegoalmet.Elapsedtimeis77.187000seconds.达到性能目标,重构图像质量差,训练速度较快。实验四结果:图4实验四图像压缩及误差曲线图TRAINLM,Epoch0/500,MSE0.183762/0.001,Gradient453.808/1e-010TRAINLM,Epoch18/500,MSE0.000511771/0.001,Gradient284.423/1e-010TRAINLM,Performancegoalmet.Elapsedtimeis226.625000seconds.原始图像压缩比为4时的训练误差性能曲线S=4原始图像压缩比为5.3时的训练误差性能曲线S=5.3-5-达到性能目标,重构图像质量好,训练速度较慢。综合上述实验分析:当隐含层元数选取8时,重构图像质量和训练速度都比较好,能够满足性能目标要求。六、实验体会与收获我现在学习的专业是图像处理,通过学习神经网络课程,使我进一步开拓了视野,了解掌握了一种新的数据处理方法。通过本次实验,进一步了解掌握神经网络强大的自学习能力和适应能力,以及对复杂问题的解决能力,也激发了进一步深入学习神经网络知识的热情。