Matlab的图像压缩技术.docx
《Matlab的图像压缩技术.docx》由会员分享,可在线阅读,更多相关《Matlab的图像压缩技术.docx(12页珍藏版)》请在冰豆网上搜索。
Matlab的图像压缩技术
Matlab的图像压缩技术
Matlab的图像压缩技术
一.目的要求
掌握Matlab图像图像压缩技术原理和方法。
理解有损压缩和无损压缩的概念,了解几种常用的图像压缩编码方式,利用matlab进行图像压缩算法验证。
二.实验内容
1、观察颜色映像矩阵的元素
>>hot(8)
ans=
0.333300
0.666700
1.000000
1.00000.33330
1.00000.66670
1.00001.00000
1.00001.00000.5000
1.00001.00001.0000
数据显示第一行是1/3红色,最后一行是白色。
2、pcolor显示颜色映像
>>n=16;
>>colormap(jet(n));
>>pcolor([1:
n+1;1:
n+1]);
>>title('UsingPcolortoDisplayaColor)Map');
图2显示颜色映像
3、colorbar显示当当前坐标轴的颜色映像
>>[x,y,z]=peaks;
>>mesh(x,y,z);
>>colormap(hsv);
>>axis([-33-33-68]);
>>colorbar;
图3显示当前坐标轴的颜色映像
4、图像格式转换
g=rgb2gray(I);
g=rgb2gray(I);
>>imshow(g),colorbar;
图4-1原图像saturn.png
图4-2转换后的图像
5、求解图像的二唯傅里叶频谱
I=imread('cameraman.tif');
>>imshow(I)
>>
J=fftshift(fft2(I));
>>figure;
>>imshow(log(abs(J)),[8,10])
图5-1原图像cameraman.png
图5-2频谱图
将图像更换一下
I=imread('pout.tif');
imshow(I)
J=fftshift(fft2(I));
figure;
imshow(log(abs(J)),[8,10])
图5-3原始图pout.tif
图5-4频谱图
6、利用DCT变换进行图像压缩
RGB=imread('peppers.png');
>>I=rgb2gray(RGB);
>>J=dct2(I);
>>imshow(log(abs(J)),[]),colormap(jet(64)),colorbar
图6-1DCT变换后二维变换谱
J(abs(J)<10)=0;
>>K=idct2(J);%逆变换
>>figure,imshow(I)
figure,imshow(K,[0255])
图6-2原始图像
图6-3压缩还原后的图像
仔细看我们可以发现,压缩还原后的图像比较模糊。
7、利用离散余弦变换进行JPEG图像压缩
>>I=imread('cameraman.tif');
>>I=im2double(I);
>>T=dctmtx(8);%产生二维DCT变换矩阵
>>B=blkproc(I,[88],'P1.*x',T,T');%改成点乘
>>mask=[11110000;11100000;11000000;10000000;zeros(4,8)]%二值掩膜用来压缩DCT系数
mask=
11110000
11100000
11000000
10000000
00000000
00000000
00000000
00000000
>>B2=blkproc(B,[88],'P1*x',mask);%只保留10个系数
>>I2=blkproc(B2,[88],'P1*x*P2',T,T');%逆DCT
>>subplot(1,2,1);
>>imshow(I);title('原图像');
>>subplot(1,2,2);
>>imshow(I2);title('压缩图像');
图7-1原图像和第一种压缩后的图像
>>mask=[11000000;10000000;zeros(6,8)]
mask=
11000000
10000000
00000000
00000000
00000000
00000000
00000000
00000000
图7-2原图像和第二种压缩后的图像
>>mask=[10000000;zeros(7,8)]
mask=
10000000
00000000
00000000
00000000
00000000
00000000
00000000
10000000
图7-3原图像和第三种压缩后的图像
比较三种情况。
mask舍弃系数越多,图像越模糊。
压缩应在最合理近似原图像下使用最少系数。
1、图像中哪些信息主要,哪些信息次要?
需要传达给别人的部分是主要的。
其他是次要的。
例如肖像图片,肖像部分是主要的,其背景是次要的。
为了证明当时的场景,场景就是主要的了,而人物就变成次要的。
描述风景,人物是次要的,背景是主要的。
主要和次要是相对的。
DCT变换后图像变成了1.0代号0的就是次要冗余信息1就是主要信息
DCT变换主要作用就是把图像信息集中在较小的一部分利于图像处理。
2、简述离散余弦变换原理。
DCT变换和FFT变换都属于变换压缩方法(TransformCompression),变换压缩的一个特点是将从前密度均匀的信息分布变换为密度不同的信息分布。
在图像中,低频部分的信息量要大于高频部分的信息量,尽管低频部分的数据量比高频部分的数据量要小的多。
例如删除掉占50%存储空间的高频部分,信息量的损失可能还不到5%。
压缩过程为:
(1)首次将输入图像分解为8*8或16*16的块,然后对每个子块进行DCT变换。
(2)将变换后得到的量化的DCT系数进行编码和传送形成压缩后电脑图像格式。
解压过程:
(1)对每个8*8或16*16的块进行DCT反变换。
(2)将每个反变换矩阵的块合成一个单一的图像。
余弦变换有把高度相关数据能量集中的趋势,DCT变换后能量集中在矩阵的左上角,右下角大多数DCT系数接近于0。
对于通常图像,舍弃这些系数,并不会对重构图像的画面质量带来显著下降。
所以利用DCT变换可以节约大量压缩空间。
压缩应在最合理近似原图像下使用最少系数。