网站建设捌金手指花总十二,凡科建站登录界面,国际实时新闻最新消息,二七免费网站建设目录 一、图像压缩二、BP神经网络实现图像压缩原理三、算法步骤3.1 图像块划分3.2 归一化3.3 建立BP神经网络3.4 保存结果 四、效果演示 一、图像压缩
常见的文件压缩软件如WinZip、WinRAR等采用的是无损压缩#xff0c;能够完全恢复原文件内容。多媒体信息具有信息量大、冗余… 目录 一、图像压缩二、BP神经网络实现图像压缩原理三、算法步骤3.1 图像块划分3.2 归一化3.3 建立BP神经网络3.4 保存结果 四、效果演示 一、图像压缩
常见的文件压缩软件如WinZip、WinRAR等采用的是无损压缩能够完全恢复原文件内容。多媒体信息具有信息量大、冗余信息多的特点往往采用有损压缩技术。
根据大面积着色原理图像必须在一定面积内存在相同或相似的颜色对于人眼的观察来说才有意义否则看到的只是杂乱无章的雪花。因此图像中相邻象素间存在相似性这样就产生了图像的预测编码。由于存在视觉的掩盖效应因此人眼对于颜色细节往往并不敏感。图像信息上的微小损失往往是无法感知或可以接受的这样就提供了广阔的压缩空间数据都存在统计上的冗余如在某一幅描绘海洋的图像中蓝颜色出现的频率可能远高于红颜色通过去除统计上的冗余同样可以实现压缩。
二、BP神经网络实现图像压缩原理
BP神经网络用于压缩 只采用一个隐含层因此整体构成了一个三层的网络。
把一组输入模式通过少量的隐含层单元映射到一组输出模式并使输出模式尽可能等于输入模式。因此隐含层神经元的值和相应的权值向量可以输出一个与原输入模式相同的向量。当隐含层的神经元个数较少时就意味着隐含层能用更少的数来表现输入模式而这实际上就是压缩。 第一层为输入层中间层为隐含层网络的映射功能依赖隐含层实现。输入层到隐含层的变换相当于压缩的编码过程而从隐含层到输出层的变换则相当于解码过程。 假设输入图像为像素 N ∗ N N*N N∗N大小被细分为多个 n ∗ n n*n n∗n的图像块。如果将图像块中每一个像素点与一个输入或输出神经元相对应 网络随机地抽取图像中各 n ∗ n n*n n∗n图像块作为学习模式使用反向传播算法进行学习通过调整网络中神经元之间的连接权值使训练集图像的重建误差 Ef-g 的均值达到最小。
其主要流程图如下
三、算法步骤
主要步骤如下
3.1 图像块划分
为简单起见这里将所有输入图像大小调整为128x128像素大小。为了控制神经网络规模规定网络输入神经元节点个数为16个即将图像划分为1024个4x4大小的图像块将每个图像块作为一一个样本向量保存为16x1024大小的样矩阵。 具体代码如下
function Pblock_divide(I,K)
%实现图像分块
%输入:I——二维矩阵且图像的行数和列数都是K的倍数;
%输出当K4时输出是一个16*N的矩阵
%计算块的个数
[row,col]size(I);
Rrow/K;
Ccol/K;
%预分配空间
Pzeros(K*K,R*C);
for i1:Rfor j1:C%依次取K*K图像块I2I((i-1)*K1:i*K,(j-1)*K1:j*K);%将K*K块变为列向量I3reshape(I2,K*K,1);%将列向量放入矩阵P(:,(i-1)*Rj)I3;end
end
end3.2 归一化
神经网络的输入样本一般都需要进行归一化处理这样更能保证性能的稳定性。归一化可以使用mapminmax函数进行考虑到图像数据的特殊性像素点灰度值为整数且处于0-255之间因此归一化处理统一将数据除以255即可。 归一化代码如下
Pdouble(P)/255;3.3 建立BP神经网络
采用MATLAB神经网络工具箱的feedforwardnet函数创建BP网络并指定训练算法。为了达到较好效果采用LM训练法。 代码如下
netfeedforwardnet(N,trainlm);
TP;
net.trainParam.goal1e-3;
net.trainParam.epochs500;
tic
nettrain(net,P,T);
toc3.4 保存结果
保存结果。训练完成后压缩的结果是每个输入模式对应的隐含层神经元向量的值以及网络的权值和阈值。 使用save命令保存为MAT文件。
save comp com minlw maxlw minb maxb mind maxd四、效果演示
压缩过程如下 解压过程如下 原始图像和压缩重建图像如下 PSNR: 29.2312
rate: 0.2766 如果需要源代码可以参考资源https://download.csdn.net/download/didi_ya/87734433。 制作不易如果对你有所帮助记得点个赞哟~