您好,欢迎来到划驼旅游。
搜索
您的当前位置:首页图像jpeg压缩的matlab实现.

图像jpeg压缩的matlab实现.

来源:划驼旅游
电子科技大学毕业论文

JPEG压缩的matlab作者姓名:

专业名称:信息工程

指导教师:讲师

图像实现

图像JPEG压缩的matlab实现

摘要

随着现代经济的发展,影像风暴已经席卷了我们的日常生活,图像对于人们已经息息相关。人们对计算机实时处理图像的要求就相对有所提高。现在我们就面对一个问题,如何在保证图像质量的前提下,同时能够考虑到实时性和高效性就成了一个大家关注的问题。么对图像数据信息进行必要的压缩,以便能够保证图像的快速存储和传输。但是,我们通常看到的图像是一种重要的二维信号,所以它本身就包含非常庞大的数据量,为了快速存储和实时传输,就必须对图像信息进行相应的压缩处理。新兴的数学工具是局域关注与研究。

本次课题设计在分析近年来,在图像处理领域,对图像压缩普遍方法的基础之上,充分学习和分析了基于及发展现状和方向,全面分析了

DCT变换的图像压缩的相

关编码及其基本原理和实现步骤。简单概述了图像压缩的基本原理以

DCT变换算法以及思路,提出了采

用DCT变换压缩的依据和优势。本文同时也介绍了图像压缩过程的重要步骤——编码量的方法和原理。为了方便简单,将使用MATLAB2010实现JPEG图像压缩的仿真。

在论文最后,将介绍仿真的过程以及仿真结果说明,阐述用MATLAB来实现离散余弦变换的图像压缩的基本过程,并总结相关方法的优缺点。同时也将充分展示压缩前后的图像,并做相应的比较。

关键词:图像压缩

DCT matlab仿真

DCT变换是一

种新兴的数学工具,在现在社会中,图像压缩技术现在正受到大量的

-I-

图像JPEG压缩的matlab实现

Abstract

With the development of modern economy, the storm has swept through the image of our daily life, people have been closely related to the image for the. People's requirements on image real-time processing is relatively improved. Now we face a problem, how to guarantee the quality of the image, at the same time can be old enough considering the real-time and efficiency has become an issue of concern. This information is certain to image compression and processing has become a very important link. However, the image is an important signal, due to the large amount of data, while the storage and transmission of the compressed. New mathematical tools are discrete cosine transform is a new mathematical tool, based on the discrete cosine transform image compression technology is now being a lot of attention and research.

In this paper, based on the analysis of the general methods of image compression in recent years, the basic principles and implementation steps of image compression based on DCT transform are also discussed. In this paper, the principle and development of image compression are introduced briefly, and the DCT transform algorithm is analyzed and compared with other compression methods. The basis of DCT transform compression is proposed. The final step of the image compression process is to encode the quantized image. This. We use MATLAB6.5 to realize the simulation of JPEG image compression.

The simulation results show that using MATLAB to achieve the image discrete cosine transform compression method is simple, fast, small error advantages, greatly improves the efficiency and accuracy of image compression.

Keywords: DCT ,matlab,simulation image, compression

-II-

图像JPEG压缩的matlab实现

目录

图像JPEG压缩的matlab实现........................................................ I摘要.................................................................................................... IAbstract.......................................................................................... II目录................................................................................................. III前言................................................................................................... 11 绪论............................................................................................... 31.1论文研究背景及意义................................................................. 31.2 JPEG图像的发展历史及简介................................................... 41.3 JPEG图像在DCT中压缩的作用............................................. 51.4 本文研究的主要内容................................................................ 62 图像压缩编码原理....................................................................... 72.1 DCT变换的来源........................................................................ 72.2基于DCT的JPEG图像压缩编码步骤.................................... 82.3图像压缩处理技术基本理论

..................................................... 9

3 图像压缩的MATLAB实现........................................................... 123.1离散余弦变换的定义及原理

................................................... 12

3.2离散余弦变换的算法实现....................................................... 133.3图形用户界面介绍................................................................... 143.3.1图像文件读取 ..................................................................... 153.3.2图像文件输出 ..................................................................... 1 运行结果及分析......................................................................... 184.1 程序流程图.............................................................................. 184.2 MATLAB仿真结果.................................................................. 194.3 实验结果及分析...................................................................... 20总结................................................................................................. 23

-III-

图像JPEG压缩的matlab实现

参考文献......................................................................................... 25致谢................................................................................................. 26附件1 图像JPEG压缩的matlab程序........................................ 27

-IV-

图像JPEG压缩的matlab实现

前言

在当今,人们大多都都已经迈入了信息化的社会,信息交换技术已经发展出不同的形式,主要的信息分为三种形式:

1.文字2.音频3.

图像。在我们看来,信息传播发展的历史可以得出结论,人们已经在信息中融入了形象,然而,对我而言,图像更直观,我们的观察,但也有最多的数据量,相应的数据量也最大,是最大的困难。这给图像信息的实时传输与快速存储带来了非常大的挑战。这已经成为图像和信息传输发展的难题,然而数字图像的表示包含非常大的数据流,如果要对其进行处理,就不得不对大量数据进行适当的压缩。

人们已经尝试了各种各样的方式对图像数据进行相关的压缩处理,但是有些被压缩的数据可能是对我们有用的。不过它的传输方法,以及传输媒介、以及存储媒介都有着严格的要求。所以,对于快速的图像压缩、以及图像的压缩和编码技术,就是一种十分重要的现代图像数据处理技术,也是一种核心技术。就现在而言图像文件格式的种类也是非常多的,其中常用的静止图像压缩编码的国际标准JPEG格式,因为它具有耗内存小,图像的质量相当非常清晰,目前早已经被广泛的用于信号处理和图像处理领域。整个图像数据的压缩过程和编码的过程我们叫做基本的顺序过程,因此被用户用来作为图像的压缩的实际中进行应用。这是目前图像压缩技术在现实中的最成功的运用之一。除此之外,重建图像与压缩前的图像的视觉效果大致上没有明显区别。DCT变换本身就是在最小均方误差条件下的最完美的正交变换,因此在图像压缩领域具有很好的实用价值,目前已经成为国际上普遍认可的图像压缩的格式标准。余弦函数的核心是

DCT变

换,它的计算速度在目前来说十分的快,从而大大的提高了图像压缩的效率。MATLAB信号图像处理工具是、math2works公司推出的一款功能强大,编写简单的图形处理软件平台,该平台将数据分析、数据计算、矩阵运算、信号处理和图形显示等多种处理技术融为一体,打

-1-

图像JPEG压缩的matlab实现

造了一个方便的、高效的、快速的处理系统以及友好的用户环境。在本次设计中,将直接在

Matlab图形处理工具箱中,调用相关图形文

DCT变换的图像压

件读取、存储以及具体操作函数和指令来实现基于缩编码过程,并分析相关结果,得出相应的结论。

-2-

图像JPEG压缩的matlab实现

1 绪论

1.1论文研究背景及意义

随着目前信息技术以及图像识别技术的快速进步,图像信息技术早已经被成熟的应用在图像检测系统和网络多媒体运用技术中,但是在实际运用中图像的数据量往往是海量的。这样庞大的信息量,如果不通过特定方式对信息进行压缩储能力和处理能力

,不但远远超过了一般处理系统的存

,而且在目前的传输信道的传输速率不大的情况

,我们

,,

下,根本不能够完成庞大的多媒体信息的实时且快速的传输。所以,为了我们可以有效且快速的存储、处理和传输多媒体图像数据码的方法进行仔细全面地研究和分析。因为组成图像的各像素之间不管是在垂直方向,还是在水平方向上都会存在一定的联系,那么,如果我们采用某种特定的图像压缩编码技术提取或者减少这种联系最终便可以达到压缩数据的效果。

图像信息是人们在生活中感受到的最重要的最直观的信息,在多媒体技术和通讯传输技术的快速发展的今天,图像必然也是信息技术所需要处理的最重要对象。在现在社会中,图像处理技术的发展十分快速,从而也带动了多媒体娱乐、多媒体数字通信、数码高清相机、高清数码摄像头和高清晰度显示屏等各类与图像和视频相关的产品的快速进步。随着目前图像信息的数据量的不断加大,而且很多成像设备的分辨率的越来越高,每一张图像所包含的信息量也就更大,海量的图像数据已经给存储设备的存储空间、通信信道的带宽以及处理器的处理速度带来了很大的压力。如果我们要克服这些挑战,就必须采用某种编码方式对图像进行可逆的有效的压缩处理。数字图像压缩编码的目的就是通过压缩,减小图片的内存,用尽可能最少的比特数来表征一幅图像,同时尽可能的保持原来图像的视觉效果,这必然要求我们对图像编码方式以及解码算法进行深入研究,目前,这个课题已

-3-

就必须对大数据的图像数据进行有效的压缩,因此必须对图像压缩编

图像JPEG压缩的matlab实现

将越来越受到人们的重视,成为近些年信息技术中的核心和热点。如果能够有好的编码技术,将大大提升图像信息的传输以及存储能力。

1.2 JPEG图像的发展历史及简介

在数十年的岁月里,越来越多的的图像压缩方法和相关理论已经被提出,可以分为传统的压缩编码方法和图像编码的新方法。传统的编码技术,包括脉冲编码调制、量化、熵编码等十种编码方式。但是随着这些传统编码方法的进一步应用,丢失对原始图像的原来结构的影响。

已经发现了这些方法的不足之所以,在量化编码不可以用特定

处:比如在传统编码方法中由于正交变换的差频局部化,变换系数的的方法;高的压缩比也会造成图像边缘虚化的发生从而发现严重的块效应。由于JPEG目前在图像压缩领域取得了广泛运用,因此,它已经成为了全世界的在图像处理与分析领域的一个标准。同时,他在全球图像压缩领域中,已经成为其中核心的部分。

JPEG本身仅仅只描述了如何把图像信息转换为字节流的数据,然而无法描述如何把这些字节在任何特定的存储介质密封起来。/.jpg是使用得比较多的图像文件的格式,由一个图像处理的联合会组织编制的,是一种会丢失部分信息的图像压缩格式,同时也是一种能够给保持原因视觉效果的压模式。特别是采用高压缩比以后,图像质量将会得到一定的恢复,但是最后减压之后明显会减少,如果我们需要高质量的图像效果,则高压缩比的方式就不适合使用了。不过,JPEG压缩技术已经非常先进和成熟,它通过有损压缩的形式来删除图像数据的冗余,从而获得非常高的压缩率,显示了一个非常接近原始图像的视觉效果。换一句话来说,用尽可能最少的存储空间来存储较完整的图像是能够实现的。

JPEG本身也是一种比较常用的稳定的

图像格式,可以根据实际的需要来调节图像的质量,通过设定相应的压缩比可以获取能够满足内存存储的需求,同时支持多级别的分向压缩,压缩比从10:1到40:1,通常压缩比越大,图像数据丢失就越严重,图像的品质自然也就很差;相反,图像品质就越好。

例如,你能

够将20.3kb BMP位图文件压缩到1.37mb。实际上,你能够在图像质量和文件大小之间找到一个适当的平衡点。现在处理的主要是高频部

-4-

.jpeg

图像JPEG压缩的matlab实现

分,针对JPEG压缩的。在日常生活中,颜色占得分量也是比较多的,在网络上面的运用也是相对完整效率也会随之增强。

。在图像的传输过程中,花费

时间也能够得到减少,这样就大大的提高了传输时需要的时间,工作

1.3 JPEG图像在DCT中压缩的作用

图像压缩这门技术起源于古老的数字电视信号。到现已经有了悠久的历史。随着科技的进步,图像处理的方式也逐步完善,处理的方式也出现了多样化。图像压缩技术也随之得到了比较好的发展。现在主要的热点是DCT的变换、以及图像的处理。在本文中,将对最广泛使用的图像压缩算法进行检讨,并讨论了它们的优点和缺点,以及它们的发展前景。

在JPEG算法原理里,把图像以一块一块的方式存在,它们之间不互相干扰,也不会重叠。这些块我们再将它们划分为二维离散余弦变换。它们之间的系数是没有关系的。常用的点:

它有几处优点:它已经形成了国际化的标准;以及在中端和高端比特率中的图像质量有一个有效的保证。

也有如下的缺点:就是在处理过程中,图像已被分成了块。在处理过程中会产生方块效应。很难用高斯过程来描述。系数在量化的时候也会丢失一部分数据。而且在另一方面图像的压缩比例在当前来看还不太高,还需进一步的努力。

JPEG在对图像进行压缩的过程中,会出现方块效应。而方块效应主要体现在信号上面。在这个过程中,图像压缩数据在高频量的数据是可以省略的,但是低频量上的数据包含了一些图像的基本数据。因此,图像压缩过程中必须保证低频数据不被丢失。

它是相当于对交叠在一起的数据进行离散余弦的变换。这种方式不仅将大大减少压缩数据对图像的影响,而且将大大提高压缩的稳定性。

JPEG主要有以下的特

-5-

图像JPEG压缩的matlab实现

1.4 本文研究的主要内容

在本文毕设中,是以

matlab为平台来进行开发研究。主要研究

的是JPEG图像在matlab中的使用。分析JPEG图像的原理,以及对原理的升入研究。Matlab这个平台对于初学者来说是比较实用的,本次的设计师用DCT的算法来进行研究。首先,需要理解的使用和了解,利用究内容如下:第一章为

DCT算法

matlab来进行图像的仿真。本次论文的主要研matlab及JPEG的基础部分,初步的介绍了本

文课题研究的方向及意义。还有之后介绍当前图像压缩技术的发展现状和未来发展的方向。

本次论文主要根据以往和当今离散余弦变换在图像压缩中的应用经验,对这次的研究来作一个总结。主要总结了本次论文的主要研究核心的技术,第二章主要介绍了

JPEG图像压缩方面的发展及意义和

讨论了

现状,包括图像压缩的相关标准、技术指标和相关分类等等,图像压缩编码及离散余弦变换的模型的相关原理等;

第三章介绍了离

散余弦变换的matlab,介绍了MATLAB图像处理工具箱的应用方法,然后概述了

JPEG的基本原理、以及离散余弦变换相关算法的实现

第四章主要介绍

等,并在本次论文中实现离散余弦变换的图像压缩;了离散余弦变换的

matlab界面,介绍的图形用户界面功能,采用

MATLAB代码的图像压缩编码和界面操作过程中讨论的设计思路和逻辑;在论文的最后,提出了本文的相关结论,提出了需要解决的问题,并提出改进步骤。

-6-

图像JPEG压缩的matlab实现

2 图像压缩编码原理

2.1 DCT变换的来源

在目前信号的变换编码处理方法中,一般情况下通过将一组相关的基函数的进行信号分解,就能够得到信号的变换域表示法,在变换域中,根据信号在相关特性上比较集中的特点,把重点放在特征提取和分析特点两个部分进行研究。从

19世纪20年代以来,傅里叶变换

DCT

在信号处理方面的应用,是目前应用最广泛的一种分析手段。变换在现实运用比较广泛,它可以实现在频域中进行高精准的定位,也就是具有很高的分辨率,而它在时域中是不具有任何定位性或分辨能力的,但它能够反映的所有相关信号的时间域特征,稳的,其他的频率的特点是随时间来进行变化的。

但它不能提供

任何相关的时频率信息。事实上,在我们的日常生活所用到的信号平

分析傅立叶变换的

这种信号,虽然可以知道频率信息包含的信息是什么,但不能知道具体信息的频率在哪一段时间内,因此不能提供这些信号所有完整性的信息。显然,傅立叶变换不适合实时(或瞬时)频域特征信息

离散余弦变换(DCT),其实际上就是一种转换分析信号的方法,如果要在变换的过程中去除来分析的信号,

从而提取其特征,我们就

需要不得不适当的构造一组基函数,而且这组基函数必须是以某种形式非常类似于我们所需要表示的数据,甚至必须具有与数据相类似的相关结构。在人们日常生活中。通常情况下遇到的信号是在时域和频域都同时具有相关性。在空间上相隔比较近的样值间的相关性,相比于相隔较远样值的大得多,然而在频域上通常是呈带状的。为了分析和表示这样的信号,我们要求相关的基函数在空间域和频域都是局域性的。因为离散余弦函数的频域分辨率与时域分辨率具有反比例的关系,刚好与实际信号长时为低频、短时高频的特性基本一致,不仅可以准确的定位信号的瞬间跳变,同时还能够呈现信号的整体变化规律率。综上所述,离散余弦变换是一种比较理想的进行信号处理的数学

-7-

图像JPEG压缩的matlab实现

工具

[6]

,在信号处理及其图像处理领域具有很好的优势,以及良好的

实时性。

2.2基于DCT的JPEG图像压缩编码步骤

1、颜色空间的转换和采样

JPEG的文件目前都是使用的颜色空间为

1982年推荐的电视图

8位的数字来表

像数字化标准CCIR 601(现为ITU-RB T.601)。在数字化的标准中,信号的变换必须是在时域中进行的,因此需要采用彩色图像转换到YCbCr模式,通常采用公式(2-1),

Y

0.299R

0.587G

0.114B

示代码。其中Y表示其亮度,CbCr表示其色度。将RGB模式的全

CrCb

RGB

RY/1.42B

R/1.772

(2-1)

逆变换公式为:

Y1.402GYY

0.344Cb1.772Cb

0.714Cr

(2-2)

2、二维离散余弦变换

通常,二维离散余弦正变换公式如下:

FU,V

CuCv

2N

n1n1

fx,ycos

X0y0

2x12n

ucos

2y12n

v

式中x,y,u,v=0,1,2…..n-1; 其中当u,v=0时:

Cu

Cv

12

其它都为1;

二维离散余弦逆变换公式为:

fx,y

2n

n1n1

CuCvFu,vcos

u0v0

2x12n

-8-

ucos

2y12n

v

(2-3)

图像JPEG压缩的matlab实现

JPEG目前是将图像分割成数个系数。

[8]

8×8的子块,每一个子块的数值

个变换

在-128到127之间。同时,采用余弦变换可以得出相关的

变换公式,如图所以:

77

12x12y1

Fu,vCuCvfx,ycosvcosv

41616x0y0

(2-4)

2.3图像压缩处理技术基本理论

图像数据压缩的核心问题,就是能否在兼顾图像质量的条件下,采用更少的数据量来表示图像,从而大大提高图像实时传输的效率以及快速存储的速度,这就是我们在信息编码中信源编码的基本含义。也就是说,前者在解码后可以最大程度还原图像的视觉效果,尽可能的减少信息的丢失;然而后者在解码时只能近似原图像压缩是通过删除图像数据中冗余的或者采用压缩高频量的方法来减少数据量,从而实现相关图像的压缩。

实际上,压缩过程和解压过

程这两个过程是一个可逆过程,实际也就是相对于编码和解码的过程,压缩技术分为缺失压缩和完全压缩两种,其实缺失压缩会造成数据量的丢失,而完全压缩会按照相关编码对所有数据进行保留和恢复。

假设有一个没有事先备份的信道,所传输的信息为N,发生的事件在发生几率上是可以判断的,记为量定义为:

Iai

log2Pai

[7]

{ai},1≤i≤P(ai)。则其信息

(2-5)

由此可见一个消息出现的可能性越小,其信息量就越多,其出现对信息的贡献量越大,反之亦然

H

i1

entropy),可以表示为:

n

PailogPai

i1

信源的平均信息量称为“熵”(

n

PaiI[Pai]

(2-6)

对其取二为底的对数时,也可写成如下

n

H

i1

Pailog2Pai

-9-

(2-7)

图像JPEG压缩的matlab实现

在图像压缩过程中,比较重要衡量指标就是压缩比。一般通过下列公式可以计算压缩比

原始数据的平均比特率压缩数据的平均比特率

C

在进行图像压缩编码的过程中通常分为两个过程,第一个过程为利用相关的分析模型和变换模型对图像信号进行处理的;关数进行量化处理,编码器与解码器的结构分别如图所示。

图像编码压缩模型如图所示:

原始数据

另一个过程

是利用变换过程中信号分析和变换特性,再根据相关的编码方式对相

DCT变换量化

量化器

编码

压缩图像数据

图2.1图像编码压缩模型

首先就是采集数据,对要处理原图像的相关图像信息进行相关采集,然后对采集到数据进行

DCT量化处理,也就是将信息从频域中

转化到时域中进行分析,这样做也是便于进行相关的编码分析和处

-10-

图像JPEG压缩的matlab实现

理。最后在进行进一步量化处理,然后进行相应的压缩编码,最后,就可以实现图像数据的压缩。这种压缩方式属于有损压缩,因此需要保证其稳定的可恢复性。

-11-

图像JPEG压缩的matlab实现

3 图像压缩的MATLAB实现

3.1离散余弦变换的定义及原理

图像的二维离散余弦变换(Discrete Cosine Transform)简称DCT变换是在最小均方误差条件下求出的一种最佳正交变换,这种变换在信号和图像领域获得广泛的使用,大多数情况下,为了保证图像的质量以及增强其传输的速率,一般使用

DCT变换编码对相关图像信息进

DCT变换算法。

行必要压缩处理,并已经成为大多数图像编码技术国际标准的核心,实际上,JPEG图像格式的压缩算法采用的就是可以大大提高压缩以及数据处理的效果

[12]

DCT变换的本质为标准余弦函数变换,其运算速度非常快速,

,JPEG算法目前已经成为

RGB分量分化为

JPEG世界标准,它是世界上第一有关图像彩色、灰度、静止图像的全球标准。在编码过程中,JPEG算法首先通过把后变成8×8的像素块,随后将每一个个

两种分量——亮度分量和色差分量,紧接着将相关图像进行分解,最

8×8像素块直接导入矩阵

的全部值进行平均运算,剩下的63个系数将作为交流量的系数,其中每一个系数都表示一定的压缩量,,紧跟着在离散余弦变换的基础上,对图像数据量进行矩阵量化。量化并使用离散余弦变换的逆变换将

在解压的过程中,第一步是对原来

DCT每一个相关的系数变成为

FFT(快速傅里叶变换)

已经编码量化的相关系数进行逆向的解码处理,接下来就就可以求逆8×8数据信息块,这样便于对每个信息块进行压缩操作。

离散余弦变换的传统算法就是一种基于

的基本算法,这种算法就是一种快速的傅里叶变换,目前广泛运用图像处理,视频处理和信号处理领域中。本论文中主要采用一种全新的变换方法——基于

DCT变换矩阵算法

[3]

。这种变换矩阵的方法是非

常适合做8×8或16×16的图像块的离散余弦变换,因为它具有很快的运算速度,便于处理器快速的处理。

本文主要采用MATLAB工具

A的二维离散余弦变换,

库中dctmtx函数来计算变换矩阵。要实现

-12-

图像JPEG压缩的matlab实现

只需计算D*A*D’。这种计算有时会比利用函数计算大量小的相同尺寸了,因此具有很快的速度

DCT时,因为矩阵

[12]

dct2更快,特别是

JPEG

D只需计算一次就可以

。举一个例子来说,在进行图像的

压缩时,就需要不断地进行变换量化,得到相关的子像素模块,如果要快速实现这种操作,第一步就是要调用函数B=D*A*D’。因为变换矩阵数要更快,更准确。关于

dctmtx得到矩阵D,

即利用语句D=dctmtx(8),然后,对每一个图像块执行运算

D是一个实正交的8x8矩阵,将其进行

二维逆DCT为A=D’*B*D。显然,这种调用方式相比于其他的函

DCT变换的算法,实际上是一种对高频信

息量压缩的处理方式,对其低频信息量进行完整的保留,从而达到最大程度保留原始图像信息,以恢复图像原本的视觉效果的过程。

3.2离散余弦变换的算法实现

第一步是读取指定的图像文件

X,然后调用dctmtx函数对图像

B=T*矩阵

X进行DCT变换,最终可以得到矩阵T,就是采用语句D=dctmtx(8),接下来,对每一个像素块进行矩阵运算x*T’。随后就可以调用二值掩膜算法对缩,通常情况下,只保留最后在对整个图像进行逆离散余弦算法流程图

导入图片

DCT的系数进行相应压

DCT变换的10个压缩后的系数就可以了。DCT变换,也就是进行图像的重构,并在

计算机上进行显示。整个算法的处理过程如下图所示:

利用DCT对图像进行余弦变换

对图像每个不同阵

8*8数据进行矩阵处理

-13-

图像JPEG压缩的matlab实现

利用二值掩膜只保留DTC变换的10个系数

逆DCT变换重构图像

显示图片

图3.1 离散余弦算法流程图

3.3图形用户界面介绍

传统的用户界面一般是指用户与计算机之间进行相互信息和数据交流的应用平台,目前已经有多种人机交互方式相继出现,目前已经从指令集的交互方式,发展至以图形界面操作为主的更简单直观交互形式。现在,图形界面己在人机交互方式中占核心地位,这主要是因为其能够更简单,更灵活,更直观,更快速的实现人机的交互通信。目前基于各种操作系统的用户

[11]

UI的开发设计已经非常普遍和重要

。因为不是所用用户都是专业的计算机人员,所以界面的设计与

使用必须十分方便,大多数功能均需要采用菜单按钮和图标,用户可以仅仅通过图标、按钮文字就可以轻松的进行相应的操作。图形用户界面(Graphical User Interfaces,简称GUI)是一种图形化的人机沟通界面,它是在操作系统的帮助下,实现图像信息快速转换为及其指令的过程,大大提高了用户使用的方便性和灵活性,而这些界面上会设计许多必要的按钮、窗口、菜单、图标、根据、键盘操作等对象,以方便可以借助这些用户界面快速调用信号的运算处理操作。

MATLAB工具来进行图像和

GUI是将来图像分析和处理的发展方向,因

为图像的视觉认知在一定程度上更容易被人们所接受。所以,采用用户界面的方式进行图像和信号处理,甚至进行人机交互的信息传输,将大大降低用户的操作难度,增强用户对处理过程的认知。

-14-

图像JPEG压缩的matlab实现

3.3.1图像文件读取

在我们压缩图像之前首先需要读取图像的像素点,以便进行后续处理。此部分可分为三个过程:原始图像载入,颜色模式转换以及离散余弦变换,第一步是读取指定的图像文件,然后调用对图像进行DCT变换,从而获得矩阵

dctmtx函数

T,使用语句:D=dctmtx(8),

最后,对每一个图像块进行相应的矩阵操作:B=P1*x*P2。

(1)图像文件的读取。MATLAB中一般是直接调用工具库中imread函数来实现图像文件的读取操作的。其语法为:

A=imread(filename,fmt) [X,map]=imread(filename,fmt) [,,]=imread(filename)

Filename:图像文件名;fmt:图像文件格式(2)颜色模式转换及采样(3)DCT变换

(4)对整幅图像进行DCT变换,具体程序实现:

RGB=imread(autumn,BMP); %从内存中读取BMP格式的真彩色图像

I=rgb2gTay(RGB); %将真彩色图像RGB转换为灰度级亮度图像I

I=im2double(I); %I1=idct2(I); %I1=idct2(I1); %

将I变换为双精度格式

对I进行二维DCT,返回的I1包含DCT系数求二维DCT逆变换,重构图像

subplot(2,2,1); imshow(I); subplot(2,2,2); imshow(I2); subplot(2,2,3); imshofigrue,mesh(I1)colorbar(vert); %为:

Image(C) image就是用来显示原始图像相关数据的,也就是在图像上显示x,y轴,能够很容易看到图像的像素情况。所谓量化过程其

-15-

’a,(I1);

’变换谱三维彩色图’)

subplot(2,2,4); imshow(abs(I-I2);

; title(

在垂直轴旁增加一颜色等级条

在MATLAB中,可以调用image函数来显示图像,其语法格式

图像JPEG压缩的matlab实现

实就是一个对图像压缩比的控制过程。在这个过程中可以去除高频量,但是会造成一些高频信息的丢失。

不过人类对高频量一般都不会

很敏感。因此不会对处理后的图像的视觉效果有所影响。其实对多数的图象信息都是存在于低频量中,经过量化这一过程后,在频率很高的空间上,就会出现一连串的数字3.“Z”字扫描

矢量中出现的连续的数字

0片段,可以使用一些处理压缩掉。比

如有一组矢量(个的后63个,已按z字形扫描得到)是57,45,0,0,0,0,23,0-30-16,0,0,1,0,0,0,0,0,0,0,,,0经过RLC压缩后就是(0,57) (0,45) (4,23) (1,-30) (0,-16) (2,1),EOB 是一个结束符,说明以后的部分都是来表示EOB。不过,假设这一串数字不以EOB。

3.3.2图像文件输出

YUVI=cat(3,uint8(YI),uint8(UI),uint8(VI));%化后的YUV图像

figure,imshow(YUVI),title('经过DCT变换和量化后的

图像');

RI=YI-0.001*UI+1.402*VI; GI=YI-0.344*UI-0.714*VI; BI=YI+1.772*UI+0.001*VI;

RGBI=cat(3,RI,GI,BI);%经过DCT变换和量化后的

RGBI=uint8(RGBI);

figure,imshow RGBI (),title('经过DCT变换和量化后的RGB

图像');

imwrite(RGBI,'L:\\Users\\Yi Fan\\Desktop\\end.jpg'); %保存压缩

图像

从这段输出图像代码中可以看出,

JPEG预处理图像经过了DCT

DCT变换,在

变化和量化后,就保存在桌面上。其实就是经过两次

-16-

0。

0了,一般用(0,0) 0结束,就没必要用

经过DCT变换和量

YUV

YUV图

图像JPEG压缩的matlab实现

频域中对相关图像进行像素处理。了。在离散余弦变换处理中得到的

这样一来就可以对图像进行压缩个系数中,低频分量包含了图

像的亮度、色度等核心信息。在从空间域到频域的变换中,图像中的缓慢变化比快速变化往往更易引起用户的重视,所以在重建图像时,往往更重视低频量,有时候甚至直接压缩掉高频量。因而在编码过程中可以对高频量进行去除,这样就可以达到一种压缩的效果,这也

是图像量化的根本依据。

-17-

图像JPEG压缩的matlab实现

4 运行结果及分析

4.1 程序流程图

Start

Imread( )

读取图像

dctmtx(8)

产生一个CT变换举证

矩阵量化处理

DCT变换

图像输出

End

图4.1 程序流程图

从该流程图可以看出这个像素信息,生成一个

MATLAB程序的执行过程,首先就是

读取在指定的路径中获取相关的图像信息,紧接着就是通过这些图像

8x8的举证,便于后期的量化处理,以及进行

DCT变。

DCT变换处理,将一些特定部分像素点进行删减,最终实现图像压缩。其实我们很容易发现其实压缩的核心就是

-18-

图像JPEG压缩的matlab实现

4.2 MATLAB仿真结果

这一章节,笔者将进行仿真演示,重点演示作,并且给出相关的操作过程。首先打来4.2所示,

MATLAB的软件操

MATLAB软件后,如图

图4.2 MATLAB主界面图

在该界面的左上角,点击新建图标会弹出如图在该窗体即可编写代码,

4.3所示的编辑窗体,

-19-

图像JPEG压缩的matlab实现

图4.3 编译窗体

代码编写完成后,点击第二排菜单中绿色的箭头图标(运行按钮),即可进行编译,但是之前你需要将相应的处理图片放在你自己设定的路径下,以便让系统可以找到处理的图像。运行结果如图

4.4所示,

图4.4 运行结果

4.3 实验结果及分析

上一小节笔者演示仿真的过程,这一章节我们一起来研究和分析放在的结果,如下图4.5所示,是处理前的图片:

-20-

图像JPEG压缩的matlab实现

图4.5 原图像

下面是处理后的最终图片,如图4.6所示,

图4.6 压缩后的图像

运行MATLAB程序后,显示如上几幅图所示的图像,点击运行图表按钮,在桌面上会立即生成上面两幅图片。进过对比,我们不难发现,两幅图片的整体视觉效果基本一致,清晰度区别不大。说明经过DCT变换压缩处理后的图像,与之前图像相比效果基本一致,这种压缩效果让人比较满意。而且原来图像的大小为

-21-

13.3Kb,占用内存

图像JPEG压缩的matlab实现

16.0kb,字节数16384b,压缩之后的图像大小为8.57k,占用内存

12k,字节数12288B,很明显,压缩后图像的大小以及内存的消耗明显降低,达到了很好的压缩效果。

另外,如果将这种压缩方式作为一种小软件在值。

Windows平台上

使用,具有操作灵活简单,处理速度快等优势,具有很好的推广价

-22-

图像JPEG压缩的matlab实现

总结

论文首先简单阐述了该课题的研究的背景、图像信息压缩技术的发展经历和未来发展的基本思路和方向、

DCT中压缩的作用等,并

然后论文jpeg图像

在第一章的最后重点论述了本文研究的主要内容以及含义。介绍了DCT(离散余弦变换)的来源,同时论文也讲述了压缩的编码过程和阐述压缩处理技术的基本理论。

在前面两个部分的基础上,论文就开始进入

matlab程序设计的

核心内容,包括图像文件读取、图像文件的输出等一列程序设计过程,并对某些可能难以理解的地方加以阐述和说明。最后,介绍仿真的相关情况,验证程序是否正确。

总的来说,这一次毕业设计我确实受益匪浅,从接到这个论题,到自己亲身开始思考,我都学到了许多。包括对

matlab的认识,图

像压缩的认识以及程序的设计思路和设计逻辑等方面都有长足的进步。我觉得这次毕业设计可以说是对我大学学习的一个很好的检验,同时,也为自己以后参与工作之中做一个很好的铺垫和准备。让我认识自己能力,找准自己的不足点,加强相关点的学习和认知。从另外一个角度来说,也是对自己以后进步的一次鼓励和锻炼。

本次的毕业设计,在通过我的指导老师刘晓丽老师的帮助和到图书馆查阅各种资料,对于图像压缩的掌握有了很大的提高,对于自己不懂的知识也完善了学习的方法。对于编程的把握又有了进一步的提高,通过本次毕业设计,我发现自己的编程和纠偏能力都有了很大程度的提升,不过设计过程中遇到的问题很多,但在自己及老师的耐心工作下,它们还是被我们逐个解决,学会了如何面对困难、处理难题,让我知道了只有自己真正的掌握了,困难的东西自然变得不困难。

最后敬请各位专家、老师和同学对论文的不足和谬误之处提出宝贵的指导意见和建议,谢谢。

-23-

又讨论了图像压缩的编码原理,阐述了涉及到相关问题,接着有简单

图像JPEG压缩的matlab实现

-24-

图像JPEG压缩的matlab实现

参考文献

[1]刘秀敏. 基于MATLAB的DCT变换在JPEG图像压缩中的应用[M]. 航空航天出版社, 2005.

[2]崔春艳. 基于DCT变换的数字图像压缩技术及其Matlab实现. 中国纺织出版社, 2003.

[3]鲍振博, 李连江. 凸轮动态仿真的Matlab实现[J]. 煤矿机械, 2006.

[4]曹玉茹;郑戟明. 基于Matlab的图像压缩实现[J]. 计算机工程与设计;2009.

[5]陈勇;郭金旭. 一种改进的图像压缩方法及其Matlab实现大众科技, 武汉理工大学学报(信息与管理工程版).2007.

[6]李莉. 基于DA算法的二维DCT的FPGA实现[J].现代电子技术.2006.

[7]钟文荣,陈建发. 二维DCT算法的高速芯片设计[J];厦门大学学报(自然科学版).2005.

[8]Solid Warehouse Material Management System Based on ERP and Bar Cod Technology, International Journal od Plant Engineering and Management[J].2004

[9]Choong Moon Lee. The Sillieon Vallery edage [M],Stab-ford University Press.2001.

-25-

图像JPEG压缩的matlab实现

致谢

在短短4个月的毕业设计的过程中,我不仅学到许多以前在课堂上没有接触的知识和方法,让我的实践操作能力得到了很高的提升。而且还收获了浓浓的同学之谊,师生之情。因此,我需要特别要感谢在整个毕业设计过程中耐心帮助我的同学们和坚持指导我的老师们,是他们给了我完成课题设计的信心,持之以恒的决心,使得我能够克服一个又一个的难题,最终顺利完成我的毕业设计!

让我感触最深的是我尊敬的老师——

**老师,她在matlab编程

设计上的造诣让我深深的佩服,当我有疑问向她请教时她总是能够很清晰的找到我问题的关键点,完美为我阐述问题的本质和核心,正是刘晓丽老师的悉心指导让我在程序编写上少走了很多弯路,最终编写完成了完整可行的程序代码。并且在最后的仿真阶段,牲自己的休息时间为我指导,我要向她表示由衷的感谢!

最后,我要再次感谢一直耐心指导,不厌其烦的

**老师,感谢陪

我一起过关斩将,攻坚克难的室友,感谢学校将实验室有限的资源对我们开放的大力支持,感谢所有朋友在生活上、精神上和知识上对我无私的帮助,时常和他们讨论我在设计过程中遇到的问题,他们了我很多宝贵的意见和想法,为我提供了很多的参考书目,在我最需要的时候给我鼓励和帮助,在这里我深深说一句:谢谢你们!

**老师更是牺

-26-

图像JPEG压缩的matlab实现

附件1 图像JPEG压缩的matlab程序

RGB=imread(

'c:\\Users\\yifan\\Desktop\\1.jpg'

%因为1.jpg

);%读取图片大小为169*220

,所以

RGB=imresize(RGB,[168,224]);我改为168*224

imwrite(RGB,前图像

%下面是对RGB三个分量进行分离R=RGB(:,:,1); G=RGB(:,:,2); B=RGB(:,:,3);

figure,imshow(RGB),title(

'c:\\Users\\yifan\\Desktop\\start.jpg'); %保存压缩

,此时他们依然为整数

'原来的RGB图像');

%下面是进行测试:由压缩前后.jpg

的大小可以知道,

matlab

.jpg,压缩后.jpg,压缩后后.jpg,压缩后后

自身对图像有着压缩功能

压缩前.jpg'

);

%保存压缩

imwrite(RGB,前图像

%由于1.jpg行了压缩

RGB=imread(imwrite(RGB,前图像

和压缩前.jpg

大小差距很大,从中可以看出matlab对图像进

压缩前.jpg'压缩后.jpg'

);%读取图片);

%保存压缩

RGB=imread(imwrite(RGB,缩前图像

压缩后.jpg');%读取图片

);

%保存压

压缩后后.jpg'

RGB=imread(压缩后后.jpg');%读取图片

-27-

图像JPEG压缩的matlab实现

imwrite(RGB,压缩后后后压缩前图像

%测试结束

%RGB->YUV

Y=0.299*double(R)+0.587*double(G)+0.114*double(B); U=-0.169*double(R)-0.3316*double(G)+0.5*double(B); V=0.5*double(R)-0.4186*double(G)-0.0813*double(B); YUV=cat(3,Y,U,V);

%YUV图像

figure,imshow(uint8(YUV)),title(

'通过计算得到的

T=dctmtx(8);%产生一个8*8的DCT变换举证

%进行DCT变换 BY BU BV是double类型BY=blkproc(Y,[8 8],'P1*x*P2',T,T'); BU=blkproc(U,[8 8],'P1*x*P2',T,T'); BV=blkproc(V,[8 8],

'P1*x*P2'

,T,T');

a=[16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; 14 13 16 24 40 57 69 55; 14 17 22 29 51 87 80 62; 18 22 37 56 68 109 103 77; 24 35 55 81 104 113 92; 49 78 87 103 121 120 101; 72 92 95 98 112 100 103 99;];

%量化值

b=[17 18 24 47 99 99 99 99; 18 21 26 66 99 99 99 99; 24 26 56 99 99 99 99 99;

-28-

.jpg'

);

%保存

YUV图像')

图像JPEG压缩的matlab实现

47 66 99 99 99 99 99 99; 99 99 99 99 99 99 99 99; 99 99 99 99 99 99 99 99; 99 99 99 99 99 99 99 99; 99 99 99 99 99 99 99 99;];

%BY2 BU2 BV2是double类型'x./P1''x./P1''x./P1'

,a); ,b); ,b); 是uint8

类型

BY2=blkproc(BY,[8 8], BU2=blkproc(BU,[8 8], BV2=blkproc(BV,[8 8],

%这里进行取整量化 BY3=int8(BY2); BU3=int8(BU2); BV3=int8(BV2);

,BY3 BU3 BV3

%BY4 BU4 BV4是double类型

'x.*P1''x.*P1''x.*P1'

,a); ,b); ,b);

BY4=blkproc(double(BY3),[8 8], BU4=blkproc(double(BU3),[8 8], BV4=blkproc(double(BV3),[8 8],

%测试代码

%BY4=blkproc(BY2,[8 8],'x.*P1',a); %BU4=blkproc(BU2,[8 8],'x.*P1',b); %BV4=blkproc(BV2,[8 8],'x.*P1',b);

mask=[

1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1;

-29-

图像JPEG压缩的matlab实现

1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1;];

%BY5 BU5 BV5

是double

类型'P1.*x''P1.*x''P1.*x'

,mask); ,mask); ,mask);

BY5=blkproc(BY4,[8 8], BU5=blkproc(BU4,[8 8], BV5=blkproc(BV4,[8 8],

%YI UI VI是double类型

'P1*x*P2''P1*x*P2''P1*x*P2'

,T',T); ,T',T); ,T',T);

YI=blkproc(double(BY5),[8 8], UI=blkproc(double(BU5),[8 8], VI=blkproc(double(BV5),[8 8],

%YUVI是double类型

%经过DCT变

YUVI=cat(3,uint8(YI),uint8(UI),uint8(VI));换和量化后的

YUV图像

figure,imshow(YUVI),title(');

'经过DCT变换和量化后的YUV图像

RI=YI-0.001*UI+1.402*VI; GI=YI-0.344*UI-0.714*VI; BI=YI+1.772*UI+0.001*VI; RGBI=cat(3,RI,GI,BI); RGBI=uint8(RGBI); figure,imshow(RGBI),title(');

imwrite(RGBI,压缩图像

'c:\\Users\\yifan\\Desktop\\end.jpg'

);

%保存

'经过DCT变换和量化后的

RGB图像

%经过DCT变换和量化后的

YUV图像

-30-

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务