图像的离散余弦变换

图像的离散余弦变换广泛用于图像的压缩。对原始图像进行离散余弦变换,变换后DCT系数能量主要集中在左上角,其余大部分系数接近于零,DCT具有适用于图像压缩的特性。将变换后的DCT系数进行门限操作,将小于一定值得系数归零,这就是图像压缩中的量化过程,然后进行逆DCT运算,可以得到压缩后的图像。
离散余弦变换的原理:
二维离散余弦变换的正变换公式为:
这里写图片描述
在图像的压缩码中,N一般为8;
逆变换公式为:
这里写图片描述
上式的各项系数分别为:
这里写图片描述
在matlab中对图像进行离散余弦变换,2维离散余弦变换函数为dct2(),逆变换为idct2();

clc;clear;
I=imread('L.png');
I=rgb2gray(I);
D1=dct2(I);
ID1=uint8(idct2(D1));
subplot(1,3,1)
imshow(I);
title('原图')
subplot(1,3,2)
imshow(abs(D1));
title('离散余弦变换的图')
subplot(1,3,3)
imshow(ID1);
title('逆变换后的图')

这里写图片描述
对图像进行压缩,取dct变换后矩阵左上角60X60的一小块矩阵其余置零,然后逆变换。

clc;clear;
I=imread('L.png');
I=rgb2gray(I);
D1=dct2(I);
D2=zeros(size(D1));
D2(1:60,1:60)=D1(1:60,1:60);
ID1=uint8(idct2(D1));
ID2=uint8(idct2(D2));
subplot(2,2,1)
imshow(I);
title('原图')
subplot(2,2,2)
imshow(abs(D1));
title('离散余弦变换的图')
subplot(2,2,3)
imshow(ID1);
title('不压缩逆变换后的图')
subplot(2,2,4)
imshow(ID2);
title('压缩逆变换后的图')

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/77848011