基于空间连贯性的图像压缩与重建系统
项目介绍
本项目是一个基于MATLAB开发的图像压缩与重建实验系统。其核心逻辑建立在图像的空间连贯性基础上,即利用图像相邻像素间的高相关性来消除冗余。系统模拟了类似于JPEG压缩的标准流程,通过将图像从空间域转换到频率域,并结合非均匀量化和熵编码技术,实现在显著降低数据量的同时,尽可能保留图像的关键视觉特征。该系统适用于理解数字图像处理、有损压缩原理以及评价图像重建质量的教学与研究场景。
功能特性
- 交互式图像加载:支持用户通过文件选择对话框导入本地图像(BMP、PNG、JPG格式),并具备自动容错机制,在未选择文件时可调用内置示例图或生成随机测试图。
- 自适应分块处理:系统自动完成图像的灰度化预处理,并对图像边缘进行填充(Replicate模式),确保其尺寸符合8x8像素块的处理要求。
- 可调控压缩质量:提供1至100之间的质量因子调节功能,通过动态调整量化矩阵的步长,平衡压缩率与重建图像的保真度。
- 全流程压缩仿真:实现了包含零电平偏移、二维离散余弦变换(DCT)、标准JPEG量化方案、Zigzag(之字形)扫描以及行程编码(RLE)在内的完整流程。
- 自动化性能评估:自动计算并输出原始大小、估计压缩大小、压缩比、均方误差(MSE)以及峰值信噪比(PSNR)。
- 多维度可视化对比:系统同屏展示原始图像、重建图像以及误差分布图(热力图形式),直观反映压缩造成的细节损失。
实现逻辑与算法分析
1. 预处理与分块
系统首先将输入图像转换为双精度浮点数并进行灰度化处理。为了符合DCT变换的要求,通过补全操作将图像尺寸扩展为8的倍数。在处理每个8x8块之前,执行“零电平偏移”,即将像素值减去128,使信号关于零对称,提高变换效率。
2. 离散余弦变换 (DCT)
系统对每个像素块应用二维离散余弦变换。在频率域中,图像的能量被集中在左上角的低频系数(直流分量和低频交流分量),而右下角的高频系数(代表边缘和细节)通常数值较小,为后续量化过滤打下基础。
3. 量化处理 (Quantization)
这是系统实现有损压缩的核心环节。程序引用了标准的JPEG亮度量化矩阵,并根据用户设置的质量因子(Quality Factor)计算缩放比例。通过矩阵元素级除法并取整,舍弃了大量对视觉影响较弱的高频信息,从而产生大量零系数。
4. 扫描与编码 (Zigzag & RLE)
- Zigzag扫描:使用预定义的64位索引序列将二维量化系数矩阵重排为一维向量。这种扫描方式优先读取低频分量,最后读取高频分量,使得量化后的连续零值聚集在一起。
- 行程编码 (RLE):对扫描后的向量进行编码,记录连续相同值的个数和数值,以此模拟数据冗余的消除过程。
5. 熵与压缩率估计
系统并未实际生成物理压缩文件,而是通过统计RLE编码后数据的出现频率,利用香农熵(Shannon Entropy)公式计算理论上的位率。据此估算出压缩后的比特数,并计算压缩比。
6. 图像重建 (Reconstruction)
重建过程是压缩的逆运算。系统对每个块依次执行反量化(系数乘以量化步长)和逆离散余弦变换(IDCT),最后加上128的偏移量并进行尺寸裁剪,将图像恢复至原始大小。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 所需工具箱:Image Processing Toolbox(图像处理工具箱)。
- 硬件建议:具备基本图形显示能力的通用计算机。
使用方法
- 启动MATLAB,将工作目录切换至项目文件夹。
- 运行主脚本程序。
- 在弹出的文件浏览器中选择一张标准图像(如JPG、PNG或BMP格式)。
- 程序将自动执行压缩和重建逻辑。
- 查看输出的图形窗口:
* 左侧为原始灰度图像。
* 中间为经过DCT压缩与逆变换后的重建图像。
* 右侧为误差分布图,其中颜色越深(趋向红色)代表该区域压缩损失越大。
- 在控制台(Command Window)查看详细的性能报告,包括压缩比和PSNR等关键指标。
- 如需测试不同压缩率,可手动修改代码开头的
quality_factor 变量(1-100)并重新运行。