基于自组织特征映射网络的图像矢量量化压缩系统
项目介绍
本项目是一个基于MATLAB平台开发的图像压缩系统,采用自组织特征映射(Self-Organizing Map, SOM)神经网络技术实现图像的矢量量化(Vector Quantization, VQ)编码与压缩。系统通过无监督学习算法训练神经网络生成能够表征图像局部特征的“码书”,从而将高维的图像子块映射为低维的索引值,在保证重建图像质量的同时实现数据压缩。
该项目不仅实现了完整的编解码流程,还提供了直观的图形化界面用于展示处理过程,并集成了详细的量化性能评估模块。
功能特性
- 智能图像预处理:自动加载图像,支持灰度转换与尺寸适配,将图像分割为固定大小的输入向量。
- SOM神经网络训练:基于竞争学习机制,动态调整学习率,从图像数据中自适应学习并生成特征码书。
- 矢量量化编码:通过寻找最优胜邻域节点(BMU),将图像块映射为码书索引,实现高效压缩。
- 图像重建解码:利用码书索引快速重组图像,恢复原始视觉信息。
- 全方位性能评估:自动计算MSE、PSNR、压缩比(CR)及每像素比特数(BPP),并提供详细的文本报告。
- 可视化分析:提供原始图像、重建图像、码书特征可视化及误差分布图的实时展示。
- 鲁棒性设计:内置合成图像生成逻辑,确保在缺失测试图片时系统仍能正常运行。
系统要求
- MATLAB R2016a 或更高版本
- Image Processing Toolbox(图像处理工具箱)
使用方法
- 确保MATLAB当前工作目录包含项目文件。
- 在MATLAB命令行窗口中直接运行主函数
main。 - 系统将自动执行从图像加载、训练、编码到评估的全过程。
- 运行结束后,屏幕将弹出包含四个子图的结果窗口,并在命令行输出详细的性能分析报告。
实现细节与逻辑说明
本项目核心逻辑集中在主程序文件中,具体实现流程如下:
1. 系统参数配置
系统首先定义了关键的算法参数,包括图像分块大小(默认为4x4像素)、码书大小(默认为256个神经元/码字)以及SOM训练的迭代次数、初始学习率和初始邻域半径。这些参数直接决定了压缩的效率和重建质量。
2. 图像加载与预处理
程序尝试读取系统内置的
cameraman.tif 图像。若文件不存在,则自动通过正弦函数生成一张合成的纹理图像作为替代。无论是读取的还是生成的图像,系统都会将其转换为灰度图,并根据分块大小裁剪图像边缘,确保图像尺寸能被块大小整除。随后,图像被分割成互不重叠的子块,按列展平并归一化到 [0, 1] 区间,构建训练向量集。
3. SOM 码书生成(训练阶段)
系统采用竞争学习算法构建码书:
- 初始化:从训练向量集中随机抽取样本初始化码书中的神经元权重,避免陷入局部极值。
- 迭代训练:进入训练循环,动态计算指数衰减的学习率。在每一步迭代中,随机选取一个输入向量,计算其与码书中所有向量的欧氏距离,找出距离最小的“胜者神经元”(Best Matching Unit, BMU)。
- 权值更新:根据当前学习率,将胜者神经元的权值向输入向量方向调整。为了提高运算速度,代码中采用了简化的竞争策略,主要更新胜者节点。
- 进度监控:通过进度条实时反馈训练状态。
4. 矢量量化编码
在生成最终码书后,系统对全图所有图像块进行编码。为了处理高分辨率图像可能带来的内存压力,程序采用分批处理机制。通过矩阵运算并行计算当前批次图像块与完整码书之间的欧氏距离,为每个图像块找到最匹配的码字,并记录该码字的索引值。最终生成的索引流即为压缩后的数据。
5. 解码与重建
解码过程是编码的逆过程。系统根据记录的索引值,从码书中提取对应的特征向量,将其反归一化并恢复为像素值(0-255)。最后,利用自定义的重组逻辑,将还原的向量重新拼合成完整的二维图像。
6. 性能评估与可视化
系统最后对算法性能进行量化分析:
- 误差计算:计算原始图像与重建图像的差值,得出均方误差(MSE)。
- 质量指标:基于MSE计算峰值信噪比(PSNR),以此衡量重建图像的逼真度。
- 压缩效率:统计原始图像比特数与压缩后比特数(包含码书和索引流),计算压缩比(Compression Ratio)和每像素比特数(BPP)。
- 结果可视化:创建一个包含四个子图的窗口:
1.
原始图像:显示预处理后的输入图像。
2.
码书可视化:将码书中的部分高维特征向量还原为图像块进行展示,直观反映网络学到的特征。
3.
重建图像:显示解码后的图像结果。
4.
误差分布图:利用热力图(Jet Colormap)展示图像各区域的重建误差,并在图表中直接标注具体的性能指标数据。
关键算法说明
- 分块策略:采用非重叠分块(Non-overlapping Blocking),将二维图像空间转化为高维向量空间,利用图像的局部相关性进行压缩。
- 竞争学习:利用胜者为王(Winner-Take-All)的策略,使码书向量分布自适应地逼近输入数据的概率密度分布,从而在概率密度高的区域(常见纹理)分配更多的码字,最小化量化误差。
- 距离度量:全程采用欧氏距离(Euclidean Distance)作为相似性度量标准。