1、多媒体技术基于matlab图像处理多媒体技术基础课程设计JPEG图像压缩院 (系) 名 称物理与电子信息学院专 业 名 称电气工程及其自动化学 生 姓 名沈君红学 号120542004指 导 教 师李玲完 成 时 间2013年6月14日JPEG图像压缩沈君红物理与电子信息学院 电气工程及其自动化专业 学号:120542004指导教师:李玲摘要:本文主要介绍了基于 DCT 变换的 JPEG 图像压缩编码技术,并用 MATLAB7.1 对标准灰度图像进行仿真实验,方法简单而且误差小,既保证有较高的压缩比,又保证了较好的图像质量。目 录JPEG图像处理 11 引言 12 压缩编码理论简述及程序框架设
2、计 22.1压缩编码理论简述 22.2 程序框架设计 23 MATLAB仿真程序 33.1 仿真程序 33.2 程序结果与问题分析 64 附录 64.1 M文件 64.2 原图像 74.3 DCT变换后的图像 74.4 数据压缩后的图像 84.5 DCT逆变换后的图像 84.6 原始图像与压缩后的图像对比图 91 引言当今的信息化社会,图像是人类赖以获取信息的最重要的来源之一。随着计算机技术的迅猛发展,图像技术与计算机技术不断融合,产生了一系列图像处理软件,如VC、MATLAB,这些软件的广泛应用为图像技术的发展提供了强大的支持。MATLAB已成为国际公认的最优秀的科技应用软件之一,具有编程简
3、单、数据可视化功能强、可操作性强等特点,而且配有功能强大、专业函数丰富的图像处理工具箱,是进行图像处理方面工作必备的软件工具本文在研究JPEG图像压缩原理的基础上,用MATLAB7.1对标准灰度图像进行JPEG分析压缩与重构,并分析实验结果得出结论。2 压缩编码理论简述及程序框架设计2.1压缩编码理论简述所谓的图像压缩编码技术就是对要处理的图像源数据按一定的规则进行变换和组合,从而以尽可能少的代码来表示尽可能多的数据信息。在众多的图像编码标准中,JPEG格式是一种成为联合图像专家组的图像压缩格式,它她适用于不同类型,不同分辨率的彩色和黑白静止图像。在JPEG图像压缩算法中,一种是以离散余弦变量
4、(DCT)为基础的有损压缩算法,另一种以预测技术为基础的无损压缩算法。基于DCT的图像压缩编码过程称为基本的顺序过程,它应用于绝大多数图像压缩场合,并且她能在图像的压缩操作中获得较高的压缩比,在压缩比为25:1的情况下,压缩后还原得到的图像与原始图像相比较,非图像专家很难找出它们之间的区别,重构图像与源图像的视觉效果基本相同,因而得到广泛的应用。因此,本文以基于DCT的JPEG图像压缩为主要的研究内容,通过软件仿真实现分析实验结果得出结论。2.2 程序框架设计基于DCT编码的JPEG编码压缩过程框图如图1所示。图1 基于DCT编码的JPEG编码压缩过程框图在编码过程中,首先将输入图像分解为8x
5、8大小的数据块,然后用正向二维DCT把每块转变成64个DCT系数值,其中1个数值是DC系数,即8x8空域图像子块的平均值,其余的63个是AC系数,接下来对DCT系数进行量化,最后将变化的得到的量化的DCT系数进行编码和传送,形成压缩后的图像格式在解码过程中,先对已经编码的量子化的DCT系数进行解码,然后求逆量化并把DCT系数转化为8x8样本像块,最后将操作完成后的块组合成一个单一的图像。这样就完成了图像压缩的过程。3 MATLAB仿真程序3.1 仿真程序 clear;close all %清空Matlab工作平台所有变量; m=imread(fruits256rgb.jpg); %读取图像;
6、imfinfo(fruits256rgb.jpg) %查看图像信息;ans = Filename: fruits256rgb.jpg FileModDate: 01-Jan-2005 08:52:20 FileSize: 23936 Format: jpg FormatVersion: Width: 256 Height: 256 BitDepth: 24 ColorType: truecolor FormatSignature: NumberOfSamples: 3 CodingMethod: Huffman CodingProcess: Sequential Comment: m=rgb2
7、gray(m); %将真彩色图像转换为灰度图像; imshow(m) %显示灰度图像;m1=im2double(m); %把图像数据类型转换为双精度浮点类型; T=dctmtx(8); %产生二维DCT变换矩阵,即离散余弦变换矩阵; B=blkproc(m1,8,8,P1*x*P2,T,T); %图像以8*8为分块单位,对图像进行DCT变换; imshow(B) %显示分块后的图像; mask=1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8、 0 0 0 0 0 0 0 0 0 0 0 0 0; mask=reshape(mask,8,8) %重新调整矩阵的行数、列数、维数;mask = 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; h=blkproc(B,8,8,P1*x,mask); %数据压缩,丢弃右下角高频数据; imshow(h) %显示调整后的图像; h=blkproc(h,8,8,P1*x*P2,T,T);
9、%进行DCT反变换; imshow(h) subplot(121),imshow(m1) %在第一块绘画原始的图像; subplot(122),imshow(h) %在第二块绘画压缩后的图像; imwrite(11,shenjunhong.png) %将图像数据写入到图像文件中; imfinfo(shenjunhong.png)ans = Filename: shenjunhong.png FileModDate: 15-Jun-2013 20:43:16 FileSize: 86 Format: png FormatVersion: Width: 1 Height: 1 BitDepth:
10、8 ColorType: grayscale FormatSignature: 137 80 78 71 13 10 26 10 Colormap: Histogram: InterlaceType: none Transparency: none SimpleTransparencyData: BackgroundColor: RenderingIntent: Chromaticities: Gamma: XResolution: YResolution: ResolutionUnit: XOffset: YOffset: OffsetUnit: SignificantBits: Image
11、ModTime: 15 Jun 2013 12:43:16 +0000 Title: Author: Description: Copyright: CreationTime: Software: Disclaimer: Warning: Source: Comment: OtherText: 3.2 程序结果与问题分析对比压缩前后的图像可知,压缩后的图像显得模糊,这是因为该压缩算法为有损压缩,压缩后的图像丢失了原始图像部分数据信息。但由于DCT变换有使图像能量集中在左上方的特性,因此压缩图像保留了原始图像的部分图像特征。应用MATLAB图像处理工具箱中的相关函数和命令来实现基于DCT的JPEG图像压缩编码理论算法的压缩方法简单,仿真程序思路清晰。压缩后的图像与原图像对比发现,压缩后的图像出现波纹。4 附录4.1 M文件如下图2所示。图2 M文件4.2 原图像如下图3所示。图3 原图像4.3 DCT变换后的图像如下图4所示。图4 DCT变换后的图像4.4 数据压缩后的图像如下图5所示。图5 数据压缩后的图像4.5 DCT逆变换后的图像如图像6所示。图6 DCT逆变换后的图像4.6 原始图像与压缩后的图像对比图如下图7所示。图7 原始图像与压缩后的图像对比图