基于MATLAB的变换编码的设计与实现

发布于:2022-12-21 ⋅ 阅读:(260) ⋅ 点赞:(0)

变换编码的设计与实现

一、实验目的

采用dct变换,编制对图象进行变换的程序,图象采用8x8分快。

对变换系数做Z型扫描,分别采用前2、3、5、8个和全部系数恢复原图象,观察结果,给出psnr值。

对变换后系数做量化,量化表采用JPEG量化表,量化过程如下:

  • ,j)=C(i,j)/Q(i,j),

  • 其中C(i,j)为变换后系数,F(i,j)为量化后系数,Q(i,j) = K q(i,j),q(i,j)为JPEG基本量化表。

  • 量化后做重构图像(反量化,反变换),

  • 计算K=1时的PSNR值,

  • 求PSNR大约分别为25、28、30、35时的K值。

二、实验环境

系统环境:windows 10;

编程语言:matlab

三、实验原理

将空间域的图像信号映射变换到另一个复正交矢量空间,产生一批变换系数,制去除图像的空间冗余度,然后对这些系数进行编码处理。具体来讲就是讲图像的每一个像素定为一百个字块,然后将这N*N个像块各自正交变换,再通过滤波、量化,再统一编码。

四、实验过程与结果

实验使用的原图是lena.bmp(512*512)

4.1 DCT变换

DCT变化是:将图像分解为8×8的子块,并对每一个子块进行单独的DCT变换,然后对变换结果进行量化、编码。DCT变换公式: 正变换:Y=CPC';逆变换:P=C'YC。

实验结果:

在这里插入图片描述

4.2 对变换系数做Z型扫描

对变化系数矩阵进行Z字型扫描,Z字形扫描的过程如下图所示:

在这里插入图片描述

4.3 对变换后系数做量化

采用JPEG量化表,如下a1是亮度量化表。

在这里插入图片描述

量化过程如下:K(i,j)=C(i,j)/Q(i,j),其中C(i,j)为变换后系数,K(i,j)为量化后系数,Q(i,j) = k .* a1(i,j),a1(i,j)为JPEG基本量化表。

4.4 量化后做重构图像

DCT反变换,根据量化过程进行反量化。

实验结果:

在这里插入图片描述

4.5 PSNR的计算

  • 公式是:PSNR=10*log10((2^n-1) ^ 2/MSE)。

  • =1时的PSNR值为-10.3237。

  • PSNR大约分别为25、28、30、35时的K值为6,6,7,8。

PSNR实验结果(量化后11比特整数,即k=11):

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看