《实验一 基于DCT的图像压缩编码算法.docx》由会员分享,可在线阅读,更多相关《实验一 基于DCT的图像压缩编码算法.docx(5页珍藏版)》请在第一文库网上搜索。
1、实验一基于DCT的图像压缩编码算法专业:通信工程班级:()班学号:姓名:实验地点:工B实验时间:指导教师:一、实验目的1 .理解有损压缩和无损压缩的概念;2 .理解图像压缩的主要原则和目的;3 .了解DCT编码方式。4 .利用MAT1AB程序进行图像压缩。二、实验仪器1、XP系统的计算机;2、MAT1AB软件;3、移动式存储器(软盘、U盘等)。4、记录用的笔、纸。三、实验原理DCT变换利用傅立叶变换的性质。采用图像边界褶翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。DCT编码属于正交变换编码方式,用于去除图像数据的空间冗余。变换编码就是将图像
2、光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经DCT变换以后,DeT系数之间的相关性就会变小。而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为8*8或16*16块,然后再对每个图像块进行二维DCT变换,
3、接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换。最后将操作完成后所有的块拼接起来构成一幅单一的图像。对于一般的图像而言,大多数DCT系数值都接近于0,所以去掉这些系数不会对重建图像的质量产生较大影响。因此,利用DCT进行图像压缩确实可以节约大量的存储空间。在实验中,先将输入的原始Iena图像分为8*8块,然后再对每个块进行二维DCT变换。MAT1AB图像处理上具箱中提供的二维DCT变换及DCT反变换函数如下。dct2实现图像的二维离散余弦变换。其语法格式为:(1)B=dct2(A)返回图像A的二维离散余弦变换值,其大小与A相同
4、且各元素为离散余弦变换的系数B(KI,k2)o(2)B=dct2(A,in,n)或B=dct2(A,m,n)如果m和n比图像A大,在对图像进行二维离散余弦变换之前,先将图像A补零至m*n如果m和n比图像A小。则进行变换之前,将图像A剪切。idct2可以实现图像的二维离散余弦反变换,其语法格式为:B=idct2(A);B=idct2(A,m,n)或B=idct2(A,m,n)o用DCT解压的过程为:(1)对每个8X8或16X16块进行二维DCT反变换。(2)将反变换的矩阵的块合成一个单一的图像。余弦变换具有把高度相关数据能量集中的趋势,DCT变换后矩阵的能量集中在矩阵的左上角,右下的大多数的DC
5、T系数值非常接近于Oo对于通常的图像来说,舍弃这些接近于0的DCT的系数值,并不会对重构图像的画面质量带来显著的下降。所以,利用DCT变换进行图像压缩可以节约大量的存储空间。压缩应该在最合理地近似原图像的情况下使用最少的系数。使用系数的多少也决定了压缩比的大小。在压缩过程的第2步中,可以合理地舍弃一些系数,从而得到压缩的目的。在压缩过程的第2步,还可以采用R1E和Huffman编码来进一步压缩。2)行程编码(R1E)原理:例如如下这幅的二值图像,000000011100000011100000111000001110011100001110000001110000001110000000如果采
6、用行程编码可以按如下格式保存108071306130n130613061306130613061306其中10和8表示图像的宽和高。在这个小例子中行程编码并没有起到压缩图像的作用。这是由于这个图的尺寸过小,当图像尺寸较大时行程编码还是不错的无损压缩方法。对于灰度图像和二值图像,用行程编码一般都有很高的压缩率。行程编码方法实现起来很容易,对于具有长重复值的串的压缩编码很有效,例如:对于有大面积的阴影或颜色相同的图像,使用这种方法压缩效果很好。很多位图文件格式都采用行程编码,如TIFF,PCX,GEM,BMP等。四、实验步骤1、打开计算机,启动MAT1AB程序;2、调入数字图像,并进行数据的DCT变换编码压缩处理;3、比较它们的数据量。4、记录和整理实验报告五、实验记录编写程序代码,实现实验目的,运行程序。以下展示的图是实验结果:DC侬换后的频域图像复原图像原始图像压缩图像六、实验总结实验时,用DCT变换必须是512*512分辨率的才可以,其他图片会报错。所以图片的选取也很重要。