图像DCT变换编码与压缩

图像DCT变换编码与压缩
图像DCT变换编码与压缩

图像DCT 变换编码与压缩

一、实验目的:

(1)掌握离散余弦变换DCT 的实现方法,了解DCT 的幅度分布特性,从而加深对DCT 变换的认识。

(2)掌握图像DCT 变换编码的实现方法,从而加深对变换编码压缩图像原理的理解。

二、实验内容:

编程实现图像DCT 变换编码。

三、实验原理:

变换编码是在变换域进行图像压缩的一种技术。图1显示了一个典型的变换

编码系统。

压缩图像

输入图像N×N

图1 变换编码系统

在变换编码系统中,如果正变换采用DCT 变换就称为DCT 变换编码系统。 DCT 用于把一幅图像映射为一组变换系数,然后对系数进行量化和编码。对于大多数的正常图像来说,多数系数具有较小的数值且可以被粗略地量化(或者完全抛弃),而产生的图像失真较小。

DCT 是仅次于K-L 变换的次最佳正交变换,且以获得广泛应用,并成为许多图像编码国际标准的核心。离散余弦变换的变换核为余弦函数,计算速度快,有利于图像压缩和其他处理。

对于N ×N 的数字图像,二维DCT 变换的正反变换可表示为:

11

0011

00

(21)(21)(,)()()(,)cos

cos 222

(21)(21)(,)()()(,)cos

cos 22N N x y N N u v x u y v F u v c u c v f x y N N x u y v f x y c u c v F u v N

N N

ππ

ππ

--==--==++=++=

∑∑∑∑(1)

其中,

1/00()()1,1,2,...,1

u v c u c v u v N ?==?==?

=-??或 MATLAB 图像处理工具箱实现离散余弦变换有两种方法:

(1)使用函数dct2,该函数用一个基于FFT 的算法来提高当输入较大的方阵时的计算速度。

(2)使用由dctmtx 函数返回的DCT 变换矩阵,这种方法较适合于较小的输入方阵(例如8×8或16×16)。

①函数:dct2

实现图像的二维离散余弦变换。调用格式为: B = dct2(A) B = dct2(A,[M N]) B = dct2(A,M,N)

式中A 表示要变换的图像,M 和N 是可选参数,表示填充后的图像矩阵大小,B 表示变换后得到的图像矩阵。

②函数:dctmtx

除了用dct2函数实现二维离散余弦变换,还可用 dctmtx 函数来计算变换矩阵,调用格式为:

D = dctmtx(N)

式中D 是返回N ×N 的DCT 变换矩阵,如果矩阵A 是N ×N 方阵,则A 的DCT 变换可用D ×A ×D ’来计算。这在有时比dct2计算快,特别是对于A 很大的情况。

③函数:idct2

实现图像的二维离散余弦反变换。调用格式为: B = idct2(A) B = idct2(A,[M N]) B = idct2(A,M,N) 式中参数同dct2。

此外,为了实现8×8子块的DCT 图像变换还要用到MATLAB 中的blkproc 函数。将这个函数和函数dctmtx 一起用于块处理可以大大简化运算。调用函数blkproc 的格式为:

B=blkpro(A,[M,N],FUN,P1,P2,…)

其中,A表示原图像,[M,N]指定了大小为M×N的滑动邻域,FUN是对M×N 的矩阵进行计算的函数,P i是传递给FUN的附加参数。该函数自动实现图像块处理的整个过程。Blkproc把A分成M×N个块,对每个块调用参数为P1,P2,…的函数FUN,并重新将结果组合到输出图像B。

blkproc函数实现n×n矩阵的DCT变换和反变换。编程中可写成:

Y=blkproc(F,[8 8],’P1*x*P2’,H,H’)

同样的道理,blkproc函数还用于量化和反量化。

显示误差直方图可能用到的MATLAB函数有:

Max %找图像差最大值

[ ]=hist %用于生成直方图数据

Bar %显示图像差值直方图

以上函数用MATLAB的help查看具体使用方法。

图2显示了采用JPEG标准化矩阵进行DCT变换编码的结果。

图2 DCT变换编码

四、实验步骤:

DCT变换编码流程如下:

步骤1:设置JPEG标准化数组;

步骤2:求8×8快的DCT变换矩阵;

步骤3: 计算8×8快的DCT变换;

步骤4:对DCT系数量化和反量化;

步骤5:求反量化系数的逆DCT变换;

步骤6:重新显示重建图像、误差图像和误差图像的直方图。量化时可采用JPEG标准推荐的归一化数组,如表1所示。

表1 JPEG标准化数组

程序如下:

x=imread('lena','bmp');

[M,N]=size(x);%得到原始举矩阵大小

m=[ 16 11 10 16 24 40 51 61;

12 12 14 19 26 58 60 55;

14 13 16 24 40 57 69 56;

14 17 22 29 51 87 80 62;

18 22 37 56 68 109 103 77;

24 35 55 64 81 104 113 92;

49 64 78 87 103 121 120 10;

72 92 95 98 112 100 103 99];

I=x;

x=double(x);%变成双精度

t=dctmtx(8);%得到DCT变换矩阵

y1=blkproc(x,[8 8],'P1*x*P2',t,t');%进行DCT变换得到变换矩阵

y2=blkproc(y1,[8 8],'round(x./P1)',m);%量化

y3=blkproc(y2,[8 8],'x.*P1',m);%反量化

y=blkproc(y3,[8 8],'P1*x*P2',t',t);%反DCT变化IDCT

subplot(2,2,1);imshow(I);title('原始图像');

subplot(2,2,2);imshow(mat2gray(y));title('重建图像');%reconstruted image

d=x-y;%original-reconstruted原始矩阵和变化矩阵的差值,即变化误差

subplot(2,2,3);imshow(mat2gray(d));title('误差图像');

[h,k]=hist(d(:),256);%生成直方图数据

subplot(2,2,4);bar(k,h,'k');title('误差图像直方图');

五、思考题目:

(1)观察图像8×8子块的DCT系数的分布,并分析其特点。

答:经DCT变换以后,系数大多数集中在左上角(即低频分量),其余系数大多很小或为零。

(2)将量化步长分别增大为初始值的2倍、4倍、8倍后再进行DCT变换编码,显示不同量化步长条件下的重建图像、误差图像以及误差图像的直方图。分析重建图像质量和量化步长的关系。

答:由以上结果对比可看出随着量化补偿的加大,图像误差变大,失真越来越严重。

基于MATLAB 的图像压缩处理其实现

基于MATLAB 的图像压缩处理及其实现 一.图像压缩的概念 从实质上来说,图像压缩就是通过一定的规则及方法对数字图像的原始数据进行组合和变换,以达到用最少的数据传输最大的信息。 二.图像压缩的基本原理 图像数据之所以能被压缩,就是因为数据中存在着大量冗余信息,另外还有相当数量的不相干信息,这为数据压缩技术提供了可能。 数据压缩技术就是利用数据固有的冗余性和不相干性,将一个大的数据文件转化成较小的文件,图像技术压缩就是要去掉数据的冗余性。 图像数据的冗余主要表现为:图像中相邻像素间的相关性引起的空间冗余;图像序列中不同帧之间存在相关性引起的时间冗余;不同彩色平面或频谱带的相关性引起的频谱冗余。 由于图像数据量的庞大,在存储、传输、处理时非常困难,因此图像数据的压缩就显得非常重要。

三.图像的编码质量评价 在图像编码中,编码质量是一个非常重要的概念,怎么样以尽可能少的比特数来存储或传输一幅图像,同时又让接收者感到满意,这是图像编码的目标。对于有失真的压缩算法,应该有一个评价准则,用来对压缩后解码图像质量进行评价。常用的评价准则有两种:一种是客观评价准则;另一种是主观评价准则。主观质量评价是指由一批观察者对编码图像进行观察并打分,然后综合所有人的评价结果,给出图像的质量评价。而对于客观质量评价,传统的编码方法是基于最小均方误差(MSE)和峰值信燥比(PSNR)准则的编码方法,其定义如下 MSE= (1) PSNR=101g( (2) 式中:Nx,Nr图像在x方向和Y方向的像素数,f(i,j)——原图像像素的灰度值,f(i,j)--处理后图像像素的灰度值。对于主观质量,客观质量评价能够快速有效地评价编码图像的质量,但符合客观质量评价标准的图像不一定具有较好的主观质量,原因是均方误差只是从总体上反映原始图像和压缩图像的差别,但对图像中的所有像点同等对待,因此并不能反映局部和人眼的视觉特性。对于图像信号,人眼是最终的信号接受者,因此在压缩时不仅要以MSE作为评价标准,还应当考虑到人的主观视觉特性。

图像压缩方法综述

图像压缩方法综述 陈清早 (电信科学技术研究院PT1400158) 摘要:图像压缩编码技术就是对要处理的图像数据按一定的规则进行变换和组合,从而达到以尽可能少的数据流(代码)来表示尽可能多的数据信息。由于图像数据量的庞大,在存储、传输、处理时非常困难,因此图像数据的压缩就显得非常重要。图像压缩分为无损图像压缩和有损图像压缩或者分为变换编码、统计编码。在这里,我们简单的介绍几种几种图像压缩编码的方法,如:DCT编码、DWT编码、哈夫曼(Huffman)编码和算术编码。 关键字:图像压缩;DCT压缩编码;DWT压缩编码;哈夫曼编码;算术编码 1引言 在随着计算机与数字通信技术的迅速发展,特别是网络和多媒体技术的兴起,大数据量的图像信息会给存储器的存储容量、通信信道的带宽以及计算机的处理速度增加极大的压力。为了解决这个问题,必须进行压缩处理。图像数据之所以能被压缩,就是因为数据中存在着冗余。图像数据的冗余主要表现为:图像中相邻像素间的相关性引起的空间冗余;图像序列中不同帧之间存在相关性引起的时间冗余;不同彩色平面或频谱带的相关性引起的频谱冗余。数据压缩的目的就是通过去除这些数据冗余来减少表示数据所需的比特数。信息时代带来了“信息爆炸”,使数据量大增,无论传输或存储都需要对数据进行有效的压缩。因此图像数据的压缩就显得非常重要。 在此,我们主要介绍变换编码的DCT编码和DWT编码和统计编码的哈夫曼(Huffman)编码和算术编码。 2变换编码 变换编码是将空域中描述的图像数据经过某种正交变换转换到另一个变换域(频率域)中进行描述,变换后的结果是一批变换系数,然后对这些变换系数进行编码处理,从而达到压缩图像数据的目的。主要的变换编码有DCT编码和DWT编码 1.1DCT编码 DCT编码属于正交变换编码方式,用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。也就是说,图像变换本身并不能压缩数据,但变换后图像大部分能量集中到了少数几个变换系数上,再采用适当的量化和熵编码便可以有效地压缩图像。量化是对经过DCT变换后的频率系数进行量化,其目的是减小非“0”系数的幅度以及增加“0”值系数的数目,它是图像质量下降的最主要原因。 图像经DCT变换以后,DCT系数之间的相关性就会变小。而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为8*8或16*16块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换。最后将操作完成后所有的块拼接起来构成一幅单一的图像。对于一般的图像而言,大多数DCT系数值都接近于0,所以去掉这些系数不会对重建图像的质量产生较大影响。因此,利用DCT进行图像压缩确实可以节约大量的存储空间。 由于图像可看成二维数据矩阵,所以在图像编码中多采用二维正交变换方式,然而其正交变换的计算量太大,所以在实用中变换编码并不是对整幅图像进行变换和编码,而是将图像分成若

基于MATLAB-的图像压缩处理及其实现

基于MATLAB-的图像压缩处理及其实现

基于MATLAB 的图像压缩处理及其实现 一.图像压缩的概念 从实质上来说,图像压缩就是通过一定的规则及方法对数字图像的原始数据进行组合和变换,以达到用最少的数据传输最大的信息。 二.图像压缩的基本原理 图像数据之所以能被压缩,就是因为数据中存在着大量冗余信息,另外还有相当数量的不相干信息,这为数据压缩技术提供了可能。 数据压缩技术就是利用数据固有的冗余性和不相干性,将一个大的数据文件转化成较小的文件,图像技术压缩就是要去掉数据的冗余性。 图像数据的冗余主要表现为:图像中相邻像素间的相关性引起的空间冗余;图像序列中不同帧之间存在相关性引起的时间冗余;不同彩色平面或频谱带的相关性引起的频谱冗余。 由于图像数据量的庞大,在存储、传输、处理时非常困难,因此图像数据的压缩就显得非常重要。

三.图像的编码质量评价 在图像编码中,编码质量是一个非常重要的概念,怎么样以尽可能少的比特数来存储或传输一幅图像,同时又让接收者感到满意,这是图像编码的目标。对于有失真的压缩算法,应该有一个评价准则,用来对压缩后解码图像质量进行评价。常用的评价准则有两种:一种是客观评价准则;另一种是主观评价准则。主观质量评价是指由一批观察者对编码图像进行观察并打分,然后综合所有人的评价结果,给出图像的质量评价。而对于客观质量评价,传统的编码方法是基于最小均方误差(MSE)和峰值信燥比(PSNR)准则的编码方法,其定义如下 MSE=1 NxNy ∑∑[f(i,j)?f(i,j)]2 Nj j=0 Ni i=0 (1) PSNR=101g(255×255 MSE ) (2) 式中:Nx,Nr图像在x方向和Y方向的像素数,f(i,j)——原图像像素的灰度值,f(i,j)--处理后图像像素的灰度值。对于主观质量,客观质量评价能够快速有效地评价编码图像的质量,但符合客观质量评价标准的图像不一定具有较好的主观质量,原因是均方误差只是从总体上反映原始图像和压缩图像的差别,但对图像中的所有像点同等对待,因此并不能反映局部和人眼的视觉特性。对于图像信号,人眼是最终的信号接受者,因此在压缩时不仅要以MSE作为评价标准,还应当考虑到人的主观视觉特性。

基于奇异值分解的图像压缩处理

矩阵奇异值分解在图像压缩中的应用 电子科技大学 微固学院 贾旺旺 [摘要]本文首先介绍了矩阵的奇异值分解(SVD)定理,然后讨论了基于矩阵奇异值分解的图像压缩编码原理,最后文中给出了实例,并用matlab 编程实现了图像的压缩和重构,发现随着图像压缩比的减小,图像传输时间增大,但重构后得到的图像失真度减小了。 [关键词]奇异值分解 图像压缩 压缩比 一.引言 随着网络的快速发展,数据量的增长也十分迅速,这使人们必须想办法如何能以最少的存储空间,最大的传输效率来进行数据的存储和传输。如在宇航中,拍摄得到的图像文件一般都比较大且数量也很多,它的存储,传输和处理会受到一定的限制,因此图像压缩就显得格外重要。图像压缩技术就是要减少图像数据中的冗余信息从而以更加高效的格式存储和传输数据。 图像压缩的基本方法包括无损压缩的行程长度编码,熵编码法;有损压缩的色度抽样法,变换编码,分形压缩等。近几年,基于矩阵奇异值分解的图像压缩方法也得到了很多学者的关注[1] 。因为图像的像素点具有矩阵的结构,我们可以利用奇异值分解来对任意阶数的矩阵操作。本文就是利用了矩阵的奇异值分解,达到了图像压缩的目的。 二. 矩阵奇异值分解原理[2] 引理 1 的非零特征值相同 的特征值均为非负实数,则有 设H H H H H H n m r AA A A AA A A AA rank A A rank A rank C A ,)3(,)2()()()()1(==∈? ) ()()()(00)(0 0)()1(:1111111A A rank A rank A A rank A rank Ax Ax Ax Ax A x Ax A x X k n Ax A k A A rank H H H H H H H H H =?≤?=?==?=?-=?=维,记为的解空间为设证明0 ),(),(),(),(0)2(≥?===≤?=λααλλααααααλααA A A A A A H H

基于MATLAB-的图像压缩处理和其实现

基于MATLAB 的图像压缩处理及其实现一.图像压缩的概念 从实质上来说,图像压缩就是通过一定的规则及方法对数字图像的原始数据进行组合和变换,以达到用最少的数据传输最大的信息。 二.图像压缩的基本原理 图像数据之所以能被压缩,就是因为数据中存在着大量冗余信息,另外还有相当数量的不相干信息,这为数据压缩技术提供了可能。 数据压缩技术就是利用数据固有的冗余性和不相干性,将一个大的数据文件转化成较小的文件,图像技术压缩就是要去掉数据的冗余性。 图像数据的冗余主要表现为:图像中相邻像素间的相关性引起的空间冗余;图像序列中不同帧之间存在相关性引起的时间冗余;不同彩色平面或频谱带的相关性引起的频谱冗余。 由于图像数据量的庞大,在存储、传输、处理时非常困难,因此图像数据的压缩就显得非常重要。 三.图像的编码质量评价 在图像编码中,编码质量是一个非常重要的概念,怎么样以尽可能少的比特数来存储或传输一幅图像,同时又让接收者感到满意,这是图像编码的目标。对于有失真的压缩

算法,应该有一个评价准则,用来对压缩后解码图像质量进行评价。常用的评价准则有两种:一种是客观评价准则;另一种是主观评价准则。主观质量评价是指由一批观察者对编码图像进行观察并打分,然后综合所有人的评价结果,给出图像的质量评价。而对于客观质量评价,传统的编码方法是基于最小均方误差(MSE)和峰值信燥比(PSNR)准则的编码方法,其定义如下 MSE= (1) PSNR=101g( (2) 式中:Nx,Nr图像在x方向和Y方向的像素数,f(i,j)——原图像像素的灰度值,f(i,j)--处理后图像像素的灰度值。对于主观质量,客观质量评价能够快速有效地评价编码图像的质量,但符合客观质量评价标准的图像不一定具有较好的主观质量,原因是均方误差只是从总体上反映原始图像和压缩图像的差别,但对图像中的所有像点同等对待,因此并不能反映局部和人眼的视觉特性。对于图像信号,人眼是最终的信号接受者,因此在压缩时不仅要以MSE作为评价标准,还应当考虑到人的主观视觉特性。 四.图像压缩的基本方法 1.基于dct变换的图像压缩 1.1 基于DCT的图像压缩编码思想 在编码过程中,首先将输入图像分解成8×8 大小的数

相关主题
相关文档
最新文档