基于二维预测与Lloyd-Max量化的图像有损压缩系统
项目介绍
本项目是一个基于MATLAB开发的图像有损压缩系统仿真模型。也可以称之为二维差分脉冲编码调制(DPCM)系统的完整实现。该系统利用图像像素在空间上的强相关性,通过二维线性预测去除空间冗余,并结合Lloyd-Max算法对预测误差进行最佳非均匀量化,从而在降低数据变动范围的同时,尽可能保持重建图像的质量。
程序不仅实现了核心的编解码算法,还包含了从数据统计、量化器训练到最终性能评估和可视化的完整流程,是理解现代图像/视频编码核心原理(预测+量化)的理想范例。
功能特性
- 智能图像加载:程序具备鲁棒的图像读取机制,优先读取系统内置的经典测试图像(如cameraman.tif),若不可用则自动尝试备用图像或生成随机噪声图像,确保程序随时可运行。
- 自适应灰度处理:自动检测输入图像格式,若为彩色图像则自动转换为灰度图像进行处理。
- 二维空间预测:采用基于相邻像素(左侧与上方)的线性预测模型,有效提取图像纹理特征。
- Lloyd-Max 最佳量化器设计:基于实际图像的预测误差统计分布,通过迭代算法自动训练出最优的量化区间(Partition)和重建电平(Codebook),实现均方误差(MSE)最小化。
- 闭环编解码模拟:实现了完整的DPCM编码与解码循环,确保预测过程使用“重建像素”而非“原始像素”,有效防止量化误差在图像中的扩散。
- 客观性能评估:自动计算均方误差(MSE)和峰值信噪比(PSNR),提供定量的压缩质量评价。
- 全方位可视化展示:系统生成包含6个子图的综合面板,展示原始图、重建图、误差概率分布与量化器结构、预测误差图、重建残差图及量化索引图。
系统要求
- MATLAB R2016a 或更高版本
- Image Processing Toolbox(用于图像读取与色彩空间转换)
使用方法
- 确保MATLAB当前工作目录包含本项目的脚本文件。
- (可选)将名为
cameraman.tif 或 peppers.png 的测试图片放置于同级目录下。如果未提供图片,程序将自动生成随机噪声图进行演示。 - 在MATLAB命令窗口输入主函数名称运行程序。
- 程序运行结束后,控制台将输出图像尺寸、量化级数、迭代收敛情况、MSE及PSNR数值,并弹出一个综合图形窗口展示处理结果。
详细实现逻辑与算法分析
该项目的 main.m 核心逻辑严格遵循以下五个步骤,实现了从统计特性提取到最终重建的闭环流程:
1. 预处理与开环误差统计
程序首先设定量化比特数(默认为3比特,即8个量化电平)。在加载图像后,将其转换为双精度浮点型以进行数学运算。
为了训练最佳量化器,程序首先执行一次“开环预测”。在这一步中,系统使用
原始图像像素作为参考,利用固定的二维预测系数(当前像素 = 0.5 × 左侧像素 + 0.5 × 上方像素)计算整幅图像的预测误差。处理边界像素(第一行、第一列及原点)时采用了特殊的边界填充策略。
这一步生成的误差数据主要用于获取信源的概率分布特性(PDF),作为后续Lloyd-Max算法的训练数据集。
2. Lloyd-Max 量化器设计
利用第一步提取的预测误差向量,程序启动Lloyd-Max迭代优化算法来设计非均匀量化器。
初始化:在误差的最小值和最大值之间均匀生成初始码本(代表电平)。
迭代过程:
- 更新阈值(Partition):计算相邻两个代表电平的中点作为新的决策边界。
- 更新质心(Centroid):统计落在两个决策边界之间的所有误差样本,计算其算术平均值作为新的代表电平。如果某个区间为空,则保持原有电平或进行微调。
- 计算畸变与收敛判断:计算当前的均方误差,并与上一次迭代的结果进行比较。当畸变变化的相对比率小于设定的阈值(epsilon = 1e-4)或达到最大迭代次数(100次)时,判定算法收敛。
最终,该步骤输出了针对当前图像特征最优的分割阈值和重建电平。
3. 闭环DPCM编解码
这是系统的核心部分,模拟了真实的传输过程。为了保证编码端和解码端的同步,程序严格采用
闭环预测机制,即预测器的输入必须是
经过量化并重建后的像素(img_recon),而非原始像素。
处理流程(逐像素扫描):
- 预测:根据已重建的左侧和上方像素,计算当前像素的预测值。
- 误差计算:计算原始像素与预测值之间的实际差值。
- 量化:将实际差值与Lloyd-Max计算出的分割阈值进行比对,将其映射为量化索引,并检索对应的重建电平(量化值)。
- 重建:将预测值与量化值相加得到重建像素。
- 边界限制:对重建像素执行数值钳位操作,确保其数值范围在 [0, 255] 之间。
此过程同时生成了重建图像矩阵和量化索引矩阵(模拟压缩后的码流数据)。
4. 性能评估
程序计算原始图像与闭环重建图像之间的差异:
MSE(均方误差):衡量原图与重构图之间像素差值的平方均值。
PSNR(峰值信噪比):基于MSE计算的分贝值,数值越高代表重建质量越好,失真越小。
5. 结果可视化
程序创建一个包含六个子图的窗口:
- 原始灰度图像:作为参考基准。
- 重建图像:显示经过压缩和解压后的视觉效果,标题中注明了PSNR和量化比特数。
- 预测误差分布与量化器:绘制预测误差的直方图(近似PDF),并在图上叠加红色的虚线(量化决策边界)和蓝色的实线(最佳重建电平),直观展示量化器如何根据误差分布的密集程度分配电平。
- 预测误差图:对未量化的预测误差取绝对值并增强亮度,展示图像纹理边缘的高频信息。
- 重建残差图:展示原始图像与最终重建图像的差值(增强显示),反映压缩带来的噪点分布。
- 量化索引图:使用伪彩色(Jet Colormap)展示每个像素对应的量化级索引,模拟传输通道中的实际数据流结构。