www.gusucode.com > BP神经网络实现图像压缩 > BP神经网络实现图像压缩/bp_imageCompress.m
% bp_imageCompress.m % 基于BP神经网络的图像压缩 %% 清理 clc clear all rng(0) %% 压缩率控制 K=4; N=2; row=256; col=256; %% 数据输入 I=imread('d:\lena.bmp'); % 统一将形状转为row*col I=imresize(I,[row,col]); %% 图像块划分,形成K^2*N矩阵 P=block_divide(I,K); %% 归一化 P=double(P)/255; %% 建立BP神经网络 net=feedforwardnet(N,'trainlm'); T=P; net.trainParam.goal=0.001; net.trainParam.epochs=500; tic net=train(net,P,T); toc %% 保存结果 com.lw=net.lw{2}; com.b=net.b{2}; [~,len]=size(P); % 训练样本的个数 com.d=zeros(N,len); for i=1:len com.d(:,i)=tansig(net.iw{1}*P(:,i)+net.b{1}); end minlw= min(com.lw(:)); maxlw= max(com.lw(:)); 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 mind