图像DCT变换编码与压缩

合集下载

dct变换的原理和应用

dct变换的原理和应用

DCT变换的原理和应用1. DCT变换的原理DCT(Discrete Cosine Transform)是一种在数字信号处理和图像压缩中常用的技术。

它将一个信号或图像从时域变换到频域,通过将信号或图像表示为一系列频率组件的和来表示。

DCT变换基于余弦函数的正交性,将信号或图像转换成一组离散的余弦函数系数。

DCT变换的原理可以用以下步骤进行解释: - 首先,将信号或图像分成大小相等的块。

- 然后,对每个块进行DCT变换。

- DCT变换后的结果是一系列频率系数,表示了块中各个频率分量的强度。

- 最后,通过保留最重要的频率系数或者设置阈值来压缩或重构信号或图像。

DCT变换在图像和音频压缩中广泛应用,比如JPEG图像压缩算法和MP3音频压缩算法都使用了DCT变换。

2. DCT变换的应用2.1 图像压缩DCT变换在图像压缩中起到了重要的作用。

在JPEG图像压缩算法中,首先将图像分成8x8的块,对每个块进行DCT变换。

然后,根据变换后的DCT系数,通过量化和编码来压缩图像数据。

DCT变换通过将图像表示为频域系数的和来去除冗余信息,可以显著减少图像的存储空间。

2.2 音频压缩DCT变换在音频压缩中也被广泛应用。

在MP3音频压缩算法中,首先将音频信号分成较短的时间段,对每个时间段进行DCT变换。

然后,根据变换后的DCT系数,通过量化和编码来压缩音频数据。

DCT变换可以提取音频信号的频域特征,减少冗余信息,从而实现音频的高效压缩。

2.3 数据隐藏DCT变换还可以用于数据隐藏领域。

通过对图像进行DCT变换,并在DCT系数中嵌入隐藏的信息,可以实现对图像进行数据隐藏。

隐藏的信息可以是文本、图像、音频等。

DCT变换具有良好的鲁棒性,嵌入的隐藏信息对原始图像的质量影响较小,可以在图像传输和存储过程中做秘密通信或水印认证。

2.4 视频编码DCT变换在视频编码中也有广泛应用。

视频编码是图像压缩的一种扩展形式,将连续的图像帧编码为压缩视频流。

图像编码与压缩

图像编码与压缩
行程编码对于仅包含很少几个灰度 级的图像,特别是二值图像,比较有效。
LZW编码
LZW编码是由Lemple和Ziv提出并经 Welch扩充而形成的无损压缩专利技术。在 对文件进行编码时,需要生成特定字符序列 的表以及对应的代码。每当表中没有的字符 串出现时,就把它与其代码一道存储起来。 这以后当该串再次出现时,只存储其代码。 实际上,字符串表是在压缩过程中动态生成 的,而且由于解压缩算法可以从压缩文件中 重构字符串表,因而字符串表也不必存储。
5

图像质量很差,妨碍观看的干扰始终存在,几乎无法观看。
6
不能用 图像质量极差,不能使用尺度
进行评价。如果观察者将 和f(x,y)逐个进行对照,则
可以得到相对的质量分。例如可用
来代
表主观评价{很差,较差,稍差,相同,稍好,较好,很
好}。
四、霍夫曼编码
DCT编码 DCT变换是图像压缩标准中常用的变换方法,
如JPEG标准中将图像按照8x8分块利用DCT变换 编码实现压缩。
Lena.bmp(原图)
Lenna.jpg (压缩率9.2)
Lenna.jpg (压缩率18.4)
Lenna.jpg (压缩率51.6)
其它变换编码
变换方法是实现图像数据压缩的主要手段,其基本原 理是首先通过变换将图像数据投影到另一特征空间,降低 数据的相关性,使有效数据集中分布;再采用量化方法离 散化,最后通过Huffman等无损压缩编码进一步压缩数据 的存储量。DCT是一种常用的变换域压缩方法,是 JPEG,MPEGI-II等图像及视频信号压缩标准的算法基础。 在实际采用DCT编码时,需要分块处理,各块单独变换编 码,整体图像编码后再解压会出现块状人工效应,特别是 当压缩比较大时非常明显,使图像失真。因此,为了获得 更高的图像压缩比,人们提出了一些其它方法,如基于小 波变换的图像压缩算法和基于分形的图像压缩算法等。

实验八、图像变换压缩编码

实验八、图像变换压缩编码
四, 实验内容 1.以 DCT 变换为例,采用标准亮度量化表,得有损压缩的变换值,并计算并显示其直方
图;
2.采用标准量化表的上述变换值反量化回去后采用 DCT 变换回图像,比较并计算压缩 前后图像的差异(均方差 MSE,峰值信噪比 PSNR 等);
3.根据由 1 计算得到的统计直方图试判断采用 HUFFMAN 编码的平均码长。 MATLAB 具体的实现代码: clear ALL; cd d: %问题一,DCT 变换,运用标准亮度量化表,得到有损压缩的量化值,并显示其直方图 %jpeg 亮度量化表 M=[16 11 10 16 24 40 51 61;
end end if (b==504 & a==504)%当抵达倒数第二个边界时结束该循环
break; end if (b==504)
a=a+8;b=0;
未信的我
continue;%当完成一次 8 行循环,行向下移动 8,B 置 0,重新从左到右的开始 end b=b+8;%当 A 小于 504 时,继续向右推移计算 end
仅供参考
% 统计概率分布 zhifangtu=zeros(1,511);%定义-255—255 范围的一维空间 for i=1:1:512
for j=1:1:512 zhifangtu(lianghuazhi(i,j)+256)=(zhifangtu(lianghuazhi(i,j)+256)+1);
%将统计值多添加 256,以此来避免负数灰度值的出现,最后统计灰度值,并计算概率 end end %定义了重新描述直方图的横坐标 X=[-255:255]; plot(X,zhifangtu);title('概率统计');

基于DCT变换的图像压缩技术的研究

基于DCT变换的图像压缩技术的研究

本科毕业设计论文题目:基于DCT变换的图像压缩技术的研究专业名称:学生姓名:指导教师:毕业时间:毕业一、题目基于DCT变换的图像压缩技术的研究二、指导思想和目的要求指导思想:图像信息给人们以直观、生动的形象,成为人们获取外部信息的重要途径。

然而数字图像具有极大的数据量。

在目前的计算机系统条件下,若图像信息不经过压缩,则会占用信道,传输速率变慢,而且传输成本变得昂贵,这对图像的储存、传输及使用都非常不利,同时也阻碍了人们对图像的有效获取和使用。

因此,图像压缩技术的重要性也越来越高,在学习、生产、生活等方面的作用也越来越显著,对图像进行压缩成为图像研究领域的重要课题。

目的要求:基于DCT变换的图像压缩技术,首先介绍图像压缩的基本原理及方法,然后了解离散余弦变换的性质以及JPEG图像压缩算法,最后从DCT 变换、量化以及熵编码三个过程进行详细论述,利用MATLAB仿真软件实现基于DCT变换的图像压缩,去除冗余数据,节约文件所占的码字,降低原始图像数据量,解决图像数据量巨大的问题,以达到对图像进行压缩的目的。

三、主要技术指标图像的质量评价方法主要有两种:一种是主观评价,另一种是客观评价。

主观评价直接反映人眼的视觉感受,主要从亮度、色调、饱和度和细节分辨等方面入手,但因观察者个体差异、人力成本较高等原因而存在许多不足之处。

通常客观评价的方法应用更广泛。

常用的客观评价方法和标准有压缩比(CR)和峰值信噪比(PSNR)两种。

再根据不同的量化系数得到不同的压缩比和峰值信噪比。

x,和标准图像f0()y x,的大小是M⨯N,常用客观评价指标定设待评价图像f()y义如下:x,/f0()y x,不同的量化系数压缩比也不同(量化系数分压缩比:r=f()y别为:1、3、5、10、15等)由于量化系数不同得到的峰值信噪比也不同,根据均方差得出峰值信噪比。

均方差: MSE =()[]()[]}{()[]∑∑∑∑-=-=-=-=-10102010x 10y 20,,,M x N y M N y x f y x f Q y x f Q 式中,运算符Q []∙表示在计算前,为使计算值与人眼视觉感受一致而进行的某种预处理,如对数处理、幂处理等。

基于DCT变换的图像压缩技术的研究答辩稿

基于DCT变换的图像压缩技术的研究答辩稿
信和计算机系统中,但是图像数据的一个显著特点就是 信息量大。具有庞大的数据量,若不经过压缩,不仅超 出了计算机的储存和处理能力,而且在现有的通信信道 传输速率下,是无法完成大量多媒体信息实时传输的。

选题的意义
为了更有效的存储、处理和传输这些图像数据,必须对 其进行压缩
课题研究方法
本文对于图像压缩的方法主要用于离散余弦变换 定义:离散余弦变换(Discrete Cosine Transform,简称DCT) 利用傅立叶变换的性质,采用图像边界褶翻将图像变换为偶函数 形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项。
其反变换如下式:
二维离散余弦变换核具有可分离性,即可以先对每行进行 一维离散余弦变换,再对每列进行一维离散余弦变换,因 此,二维离散余弦变换可表示为:
基于DCT的编码器系统流程图
基于DCT编码的JPEG压缩过程简化图
DCT系数量化的均衡量化器
量化DCT系数的编排及序号表
系数AC编码格式
10级本科毕业设计答辩
基于DCT变换的图像压缩技术的研究

专 学
业:通信工程 生:蔡滨滨
指导教师:李颖华 LOGO
论文的结构及主要内容
第一部分:选题背景以及研究意义 第二部分:课题研究方法 第三部分:本文研究流程图 第四部分:课题结论
第五部分:致


选题的背景:
随着信息技术的发展,图像信息被广泛应用于多媒体通
压缩比与图像质量的关系
程序流程图
程序流程图
调用dct2和idct2来实现二维离散余弦变换及其反变换
DCT变换后图像
仿真结果如图示
量化系数个数不同的图像的压缩比(CR) 和峰值信噪比(PSNR)

简述dct离散余弦变换编码过程。

简述dct离散余弦变换编码过程。

简述dct离散余弦变换编码过程。

DCT(离散余弦变换)编码是一种常用的数据压缩技术,它使用DCT算法将数据转换为频域系数,使用量化和编码技术对系数进行压缩。

DCT编码的过程可以简单地描述为以下几个步骤:
1. 将原始数据划分为若干个块,通常以8x8的块为单位。

2. 对每个块进行DCT变换,得到块内的频域系数。

DCT变换的具体过程可以参考DCT算法相关的文献和教材。

3. 对频域系数进行量化,将系数值舍入到最接近的量化步长。

量化步长的大小由压缩比和图像质量要求等因素决定。

4. 对量化后的系数进行编码,通常使用熵编码技术,如哈夫曼编码。

5. 将编码后的系数存储或传输,解码时按照相反的顺序进行解码,即先解码系数,再进行反量化和反DCT变换,得到原始数据。

DCT编码的主要优点是压缩效率高,对于图像、音频等数据具有良好的压缩效果。

但是,由于DCT变换是块处理的,需要对边界进行处理,可能会导致图像边缘的失真问题。

此外,DCT编码还存在一定的计算复杂度和存储成本。

- 1 -。

JPEG图像压缩算法基本介绍

JPEG图像压缩算法基本介绍

JPEG图像压缩算法基本介绍JPEG压缩算法可以用失真的压缩方式来处理图像,但失真的程度却是肉眼所无法辩认的。

这也就是为什么JPEG会有如此满意的压缩比例的原因。

下面主要讨论,JPEG基本压缩法。

一、图像压缩算法之JPEG压缩过程JPEG压缩分四个步骤实现:1.颜色模式转换及采样;2.DCT变换;3.量化;4.编码。

二、图像压缩算法具体操作1、图像压缩算法之颜色模式转换及采样RGB色彩系统是我们最常用的表示颜色的方式。

JPEG采用的是YCbCr色彩系统。

想要用JPEG基本压缩法处理全彩色图像,得先把RGB颜色模式图像数据,转换为YCbCr颜色模式的数据。

Y代表亮度,Cb和Cr则代表色度、饱和度。

通过下列计算公式可完成数据转换。

Y=0.2990R+0.5870G+0.1140BCb=-0.1687R-0.3313G+0.5000B+128Cr=0.5000R-0.4187G-0.0813B+128人类的眼晴对低频的数据比对高频的数据具有更高的敏感度,事实上,人类的眼睛对亮度的改变也比对色彩的改变要敏感得多,也就是说Y成份的数据是比较重要的。

既然Cb成份和Cr成份的数据比较相对不重要,就可以只取部分数据来处理。

以增加压缩的比例。

JPEG 通常有两种采样方式:YUV411和YUV422,它们所代表的意义是Y、Cb和Cr三个成份的数据取样比例。

2、图像压缩算法之DCT变换DCT变换的全称是离散余弦变换(Discrete Cosine Transform),是指将一组光强数据转换成频率数据,以便得知强度变化的情形。

若对高频的数据做些修饰,再转回原来形式的数据时,显然与原始数据有些差异,但是人类的眼睛却是不容易辨认出来。

压缩时,将原始图像数据分成8*8数据单元矩阵,例如亮度值的第一个矩阵内容如下:JPEG将整个亮度矩阵与色度Cb矩阵,饱和度Cr矩阵,视为一个基本单元称作MCU。

每个MCU所包含的矩阵数量不得超过10个。

dct变换及在jpeg编码中的具体应用 -回复

dct变换及在jpeg编码中的具体应用 -回复

dct变换及在jpeg编码中的具体应用-回复DCT(离散余弦变换)是一种数学变换,常用于信号处理、图像处理和数据压缩中。

在JPEG编码中,DCT的应用非常重要,它能够将图像信息压缩成更小的文件大小,同时保持较高的图像质量。

本文将详细介绍DCT 变换及其在JPEG编码中的具体应用。

一、什么是DCT变换?离散余弦变换(DCT)是一种数学变换,能将输入信号转换为一组频率分量。

与傅里叶变换相似,DCT也能将时间域信号转换为频域信号,但它的输出是实数而不是复数。

DCT变换的主要思想是将一个N维的输入信号分解为一组N个不同频率的余弦函数的线性组合。

这样的分解使得大部分信号能够用较少的系数来表示。

DCT的数学公式如下:X_k = \sum^{N-1}_{n=0}x_n \cdot\cos\left(\frac{(2n+1)k\pi}{2N}\right), \quad k=0,1,...,N-1其中,x_n是输入信号的采样值,N是采样点数,X_k是输出的DCT系数。

二、DCT在JPEG编码中的应用1. 颜色空间转换JPEG编码中的第一步是将RGB颜色空间转换为亮度-色度(YCbCr)颜色空间。

这主要是因为人眼对亮度的感知比色度更敏感。

YCbCr颜色空间将图像分为亮度(Y)和两个色度(Cb和Cr)分量,其中亮度分量负责传输图像的明暗信息,而色度分量负责传输颜色信息。

转换的过程中,通过DCT变换可以提取出亮度和色度分量的频域信息,减少了图像的冗余信息,从而减小了数据量。

2. 分块压缩JPEG编码将图像分为若干个8x8像素的小块,对每个小块进行独立的DCT变换。

这样做的原因是图像中的局部区域往往具有较强的相关性,8x8分块的做法可以充分利用这种相关性。

对每个8x8分块进行DCT变换后,通过量化将DCT系数进行舍入。

这样,高频分量的数值变得较小,可以被更多的抹除掉,进一步减小数据量。

低频分量可以保留较大的数值,以保证图像的主要特征。

图像压缩原理

图像压缩原理

本节以JPEG为例,讲解静态图像压缩的原理。

JPEG图像压缩主要分为下面四个过程,离散余弦变换、量化、编码以及组成位数据流。

下面通过一个简单的例子说明各步骤的原理。

1.离散余弦变换(1)通过离散余弦变换(DCT变换,下略),可以将能量集中在矩阵左上角的少数几个系数上。

简单地说,我们可以将DCT看作用一个8行8列的二维数组产生另一个8行8列的二维数组的函数。

也就是说,把一个数组通过某种变换,变成另一个数组。

首先将一幅图像划分成一个个8*8像素的图像块。

比如,原图的尺寸是640*480,那么将会被划分成80行60列的图像块。

如果图像只包含灰度,那么每个象素都会用一个8bit的数字表示。

因此可以将每个图像块表示成一个8行8列的二维数组,这个数组中每个元素都是0~255的8bit整数。

DCT变换就是作用在这个数组上。

再看一下彩色的情况。

如果图像是彩色的,那么每个象素都可以用24bit、相当于3个8bit的组合来表示。

因此可以用3个8行8列的数组来表示这个8*8的图像块。

DCT变换作用于每一个数组。

(2)用f表示像素值的数组,f(i,j)表示第i行第j列的值,则DCT变换之后定义一个新的数组F(u,v)表示第u行v列的值。

DCT变换通过下面公式完成:逆DCT变换公式:在上面两公式中,当u,v=0时,,其他情况下,C(u),C(v)=1。

下面举例说明。

下面矩阵表示一个8*8的图像样本的原始数组。

为了便于计算,在进行变换之前先对原始图像中的每个样本数据减去128。

然后再按照公式计算出数组中每个元素的值。

举F(0,0)的值的计算过程如下:按照这样,继续计算其他值:f(i,j)经过DCT变换之后得到了F(i,j),其中F(0,0)是直流系数,称为DC系数,其他的为交流系数,称为AC系数。

2.量化为了达到压缩的目的,我们需要对经过DCT变换的DCT系数进行量化,目的是减小非0系数的幅度以增加0值系数的数目。

在一定的主观保真的前提下,丢掉那些对视觉效果影响不大的数据。

图像编码中的分块压缩方法探究(九)

图像编码中的分块压缩方法探究(九)

图像编码是指将连续的图像信号转换成数字编码的过程。

在图像编码中,分块压缩方法被广泛应用。

本文将探究图像编码中的分块压缩方法。

一、分块压缩方法的背景图像编码是为了在保持图像质量的基础上减小存储空间和传输带宽,从而实现高效的图像处理和传输。

分块压缩方法就是其中一种方法。

二、分块压缩方法的原理分块压缩方法将图像分成若干个块,对每个块进行编码和压缩。

根据图像的特性,使用不同的算法对每个块进行处理,以减小数据量。

分块压缩方法常用的算法有离散余弦变换(DCT)和小波变换(Wavelet Transform)等。

三、离散余弦变换(DCT)离散余弦变换是将一个N x N的图像块转换为一个N x N的频域系数块的过程。

DCT压缩能够有效地去除图像中的冗余信息,实现更好的压缩效果。

DCT在图像编码中的应用非常广泛,比如JPEG压缩算法就采用了DCT。

四、小波变换(Wavelet Transform)小波变换是将信号分解为多个不同频率的子信号,通过对子信号进行压缩和重构来实现数据压缩。

小波变换的特点是能够在时域和频域上进行分析,更好地适应图像中的不同频率成分。

五、分块压缩方法的优缺点分块压缩方法的优点是可以灵活地控制压缩的粒度,根据需要对图像的不同部分进行不同的处理。

另外,分块压缩方法采用了离散变换技术,能够更好地提取图像的特征,从而实现较好的压缩效果。

然而,分块压缩方法也存在一些缺点,比如在块边界处会出现压缩伪影,对图像细节的保留不够完美等。

六、分块压缩方法的应用分块压缩方法被广泛应用于图像编码中,特别是在无损和有损压缩标准中。

无损压缩主要用于医学图像、卫星图像等需要保留图像细节的领域。

有损压缩则主要用于互联网传输、图像存储等需要高压缩性能的领域。

七、总结分块压缩方法是图像编码中的重要方法之一,通过对图像进行分块处理和离散变换,可以实现对图像数据的高效压缩。

离散余弦变换和小波变换是目前常用的分块压缩方法。

分块压缩方法在图像编码中有着广泛的应用,并不断地进行优化和改进。

dct编码原理

dct编码原理

dct编码原理
DCT(离散余弦变换)编码是一种用于图像和音频压缩的常用方法。

它通过将信号转换为基于余弦函数的频域表示,在保留关键信息的同时丢弃冗余数据来实现压缩。

DCT编码的原理是将原始信号分解为不同频率的余弦波形,然后对这些波形进行量化和编码。

具体来说,编码过程包括以下几个步骤:
1. 将输入信号分成块:DCT编码通常将输入信号划分为固定大小的块,例如8x8像素的图像块或音频帧。

2. 应用DCT变换:对每个块应用DCT变换,将其从时域转换到频域。

这意味着对于图像,我们将8x8像素块转换为相应的8x8频谱系数。

3. 量化:对DCT系数进行量化。

由于相邻频域系数通常具有较高的相关性,并且高频系数对图像或音频的质量影响较小,因此可以通过减少高频系数的精度和量化低频系数来减少数据的冗余。

一般来说,采用较低的量化步长(即量化精度更高)将产生更高质量的编码,但也会占用更多的存储空间。

4. 编码:对量化后的DCT系数进行压缩编码。

常用的方法包括哈夫曼编码、算术编码等。

这些编码方法能够根据系数的出现频率来分配更短的编码长度,从而进一步减小数据的存储空间。

通过以上步骤,DCT编码能够在一定程度上压缩信号数据,减小存储空间的使用。

当需要还原原始信号时,可以通过逆向操作进行解码:解码量化系数和逆变换,从频域反转到时域,最终得到近似于原始信号的重建结果。

总的来说,DCT编码通过将信号转换为频域表示,并对频域系数进行量化和编码,以实现压缩。

它是一种广泛应用于图像和音频压缩的有效方法,具有良好的压缩效果和可逆性。

JPEG图像压缩与编码解析

JPEG图像压缩与编码解析

JPEG图像压缩与编码解析
JPEG(Joint Photographic Experts Group)压缩格式,以其易于使用、压缩率高而著称,是应用最为广泛的一种图像压缩格式。

JPEG压缩
算法把图像分为内容和质量两个维度来进行压缩。

下面将详细论述JPEG
图像编码与解码的基本原理。

1.JPEG图像编码过程
(1)空间域转换
空间域转换是将原始图像由空间域变换成更加节省存储空间的频域。

JPEG压缩采用的是离散余弦变换(DCT)这种空间域转换方法,它可以把
图像表示成一系列正交基函数的线性组合,每一个函数表示的是对应的图
像量化值。

利用DCT将一幅图像分成8×8(也有可能是16×16)大小的块,每一个块由64(或者256)个相互独立的像素构成,被称为DCT子块。

(2)频段选择
JPEG图像压缩算法采用频段选择的原则,根据图像中的特征,把空
间域转换之后的低频分量即低频信息传��有损,而只把高频分量即高频
信息传递以达到保留重要信息的目的,在JPEG中,特征的保留按照“从
重要的到不重要的”的顺序进行。

(3)变换。

DCT变换与KLT变换在图像压缩中的应用

DCT变换与KLT变换在图像压缩中的应用

DCT变换与KLT变换在图像压缩中的应用专业:电子与通信工程学号:******** ********姓名:目录1 报告简介 (1)2 算法原理 (1)2.1 DCT算法原理 (1)2.2 KLT算法原理 (3)3 仿真分析 (5)3.1 DCT仿真分析 (5)3.2 KLT仿真分析 (7)5 总结 (8)参考文献 (9)附录:MATLAB代码 (10)DCT变换与KLT变换在图像压缩中的应用1 报告简介随着数据化时代的开启,图像压缩技术越来越成熟并且应用越来越广泛,本文在研究近年来图像压缩一般方法的基础上,介绍了基于DCT变换的图像压缩的基本原理及其实现步骤,以及扩展研究了KL变换的图像压缩方法,并使用MATLAB,针对同一幅原始图像进行不同方法的压缩比较,给出了实验仿真结果。

本论文首先提出了用MATLAB来实现DCT变换的数字图像压缩技术, 方法简单,快速,且误差小。

然后介绍了KLT图像压缩编码的具体过程和方法。

最后分析了图像经过2种压缩方法时,图像质量的变化情况。

2 算法原理2.1 DCT算法原理DCT变换利用傅立叶变换的性质。

采用图像边界褶翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。

DCT编码属于正交变换编码方式,用于去除图像数据的空间冗余。

变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。

在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。

我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。

图像经DCT变换以后,DCT系数之间的相关性就会变小。

而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。

从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。

基于DCT的图像压缩编码算法的MATLAB实现

基于DCT的图像压缩编码算法的MATLAB实现

摘要跟着科学技巧的成长,图像紧缩技巧越来越引起人们的存眷.为此从浩瀚的图像紧缩编码尺度中拔取了基于DCT变换的JPEG图像紧缩编码算法进行研讨,并经由过程比较剖析各类软件特点拔取了MATLAB进行试验仿真.起首说清楚明了图像紧缩在现代通讯中的须要性和可行性,然后讲述了MATLAB及其图像处理对象箱的相干常识,并对基于DCT变换的JPEG图像紧缩算法进行了具体的研讨,重点介绍了JPEG紧缩编码的具体进程和办法 ,具体介绍了编码中DCT变换.量化.熵编码和霍夫曼编码等模块的道理和数学推导以及各模块的功效剖析.最后运用MATLAB进行了试验仿真并剖析成果得出结论.试验成果标明基于DCT变换的JPEG图像紧缩办法简略.便利,既能包管有较高的紧缩比,又能包管有较好的图像质量,运用MATLAB仿真出来的成果较好的反响了其编码算法道理.症结词JPEG图像紧缩;DCT;MATLAB;图像处理对象箱目录摘要IAbstract ..................................................................................... 错误!未界说书签. 第1章绪论11.1课题布景 (1)1.1.1 离散余弦变换 (2)1.1.2 猜测技巧 (3)1.2图像紧缩技巧的成长和近况 (3)1.2.1 图像编码技巧成长汗青 (3)1.2.2 图像编码技巧的近况 (4)1.3MATLAB及其图像处理对象箱 (4)第2章图像紧缩编码理论算法62.1DCT变换的思惟起源 (6)2.2基于DCT的JPEG图像紧缩编码步调 (8)2.2.1 色彩空间的转换和采样 (8)2.2.2 二维离散余弦变换 (9)2.2.3 DCT系数的量化 (12)2.2.4 量化系数的编排 (13)2.2.5 DC系数的编码 (14)2.2.6 AC系数的编码 (15)2.2.7 构成位数据流 (16)2.2.8 DCT变换在图像紧缩中的运用 (19)2.3代码实现错误!未界说书签.第1章绪论1.1 课题布景跟着信息技巧的成长,图像信息被普遍运用于多媒体通讯和盘算机体系中,但是图像数据的一个明显特色就是信息量大.具有宏大的数据量,假如不经由紧缩,不但超出了盘算机的存储和处理才能,并且在现有的通讯信道的传输速度下,是无法完成大量多媒体信息及时传输的,是以,为了更有效的存储.处理和传输这些图像数据,必须对其进行紧缩,是以有须要对图像紧缩编码进行研讨.因为构成图像的各像素之间,无论是在程度偏向照样在垂直偏向上都消失着必定的相干性,是以只要运用某种图像紧缩编码办法提取或者削减这种相干性,就可以达到紧缩数据的目标[1].数字图像的冗余重要表示在以下几种情势:空间冗余:规矩物体和规矩布景的概况物理特点都具有相干性,数字化后表示为数字冗余.例如:某图片的画面中有一个规矩物体,其概况色彩平均,各部分的亮度.饱和度邻近,把该图片作数字化处理,生成位图后,很大数量的相邻像素的数据是完全一样或十分接近的,完全一样的数据当然可以紧缩,而十分接近的数据也可以紧缩,因为恢复后人亦分辨不出它与原图有什么差别,这种紧缩就是对空间冗余的紧缩.时光冗余:序列图像(如电视图像和活动图像)和语音数据的前后有着很强的相干性,经常包含着冗余.在播出该序列图像时,时光产生了推移,但若干幅画面的统一部位没有变更,变更的只是个中某些地方,这就形成了时光冗余.统计冗余:空间冗余和时光冗余是把图像旌旗灯号看作概率旌旗灯号时所反响出的统计特点,是以,这两种冗余也被称为统计冗余.编码冗余:同样长度的编码可以暗示不合的信息.构造冗余:类似的,对称的构造假如都加以记载就消失构造冗余.常识冗余:由图像的记载方法与人对图像的常识差别而产生的冗余.人对很多图像的懂得与某些基本常识有很大的相干性.很多纪律性的构造,人可以由先验常识和布景常识得到.而盘算机存储图像时还得把一个个像素信息存入,这就形成冗余.视觉冗余:视觉体系对于图像场的留意长短平均和非线性的,视觉体系不是对图像的任何变更都能感知.所谓的图像紧缩编码技巧就是对要处理的图像数据按必定的规矩进行变换和组合, 从而达到以尽可能少的数据流(代码)来暗示尽可能多的数据信息.在浩瀚的图像紧缩编码尺度中,JPEG(Joint Photographic Experts Group)格局是一种称为结合图像专家组的图像紧缩格局,它实用于不合类型.不合分辨率的黑色和诟谇静止图像[2].在JPEG图像紧缩算法中,一种是以离散余弦变换(DCT,Discrete Cosine Transform)为基本的有损紧缩算法,另一种是以猜测技巧为基本的无损紧缩算法.离散余弦变换DCT变换运用傅立叶变换的性质.采取图像鸿沟褶翻将像变换为偶函数情势,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换.DCT编码属于正交变换编码方法,用于去除图像数据的空间冗余.变换编码就是将图像光强矩阵(时域旌旗灯号)变换到系数空间(频域旌旗灯号)长进行处理的办法.在空间上具有强相干的旌旗灯号,反应在频域上是在某些特定的区域内能量经常被分散在一路,或者是系数矩阵的散布具有某些纪律.我们可以运用这些纪律在频域上削减量化比特数,达到紧缩的目标.图像经DCT变换今后,DCT系数之间的相干性就会变小.并且大部分能量分散在少数的系数上,是以,DCT变换在图像紧缩中异常有效,是有损图像紧缩国际尺度JPEG的焦点.从道理上讲可以对整幅图像进行DCT变换,但因为图像各部位上细节的丰硕程度不合,这种整体处理的方法后果不好.为此,发送者起首将输入图像分化为8*8或16*16块,然后再对每个图像块进行二维DCT 变换,接着再对DCT系数进行量化.编码和传输;吸收者经由过程对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换.最后将操纵完成后所有的块拼接起来构成一幅单一的图像.对于一般的图像而言,大多半DCT系数值都接近于0,所以去掉落这些系数不会对重建图像的质量产生较大影响.是以,运用DCT进行图像紧缩确切可以勤俭大量的存储空间.在试验中,先将输入的原始lena图像分为8*8块,然后再对每个块进行二维DCT变换.MATLAB图像处理上具箱中供给的二维DCT变换及DCT反变换函数如下.dct2实现图像的二维离散余弦变换.其语法格局为:(1)B=dct2(A) 返回图像A的二维离散余弦变换值,其大小与A雷同且各元素为离散余弦变换的系数B(K1,k2).(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]).1.1.2 猜测技巧它是运用空间中相邻数据的相干性,运用曩昔和如今消失过的点的数据情形来猜测将来点的数据.通经常运用的办法是差分脉冲编码调制(DPCM)和自顺应差分脉冲编码调制(ADPCM).1.2.1 图像编码技巧成长汗青1948年提出电视旌旗灯号数字化后,图像紧缩编码的研讨工作就宣布开端了.在这项技巧成长的早期,限于客不雅前提,仅对帧内猜测法和亚取样内查回复复兴法进行研讨,对视觉特点也做了一些极为有限但宝贵的研讨工作.1966年J.B.O Neal比较剖析了DPCM和PCM并提出了用于电视的试验数据.1969年进行了线性猜测编码的现实试验.1969年举办首届图像编码会议.70年月开端进行了帧间猜测编码的研讨.80年月开端对活动估值和模子编码进行研讨[3].进入90年月,ITU-T和ISO制订了一系列图像编码国际建议,如H.261.JPEG.MPEG-1.H.262.H.263.MPEG-4等.变换编码是1968年H.C.Andrews等人提出的,采取的是二维离散傅立叶变换,此后接踵消失用其他变换办法的变换编码,个中包含二维离散余弦变换.1.2.2 图像编码技巧的近况经由几十年的成长,图像编码技巧业已成熟,一些国际建议的制订极大地推进了图像编码技巧的实现和财产化,从而推进图像编码技巧以更快的速度成长,今朝的研讨偏向有两个:(1) 更好地实现现有的图像编码国际建议. 研制出集成度更高.机能更好的图像编码专用芯片,使编码体系成本更低.靠得住性更高.解决好现有的图像编码体系开辟中的技巧问题.例如:进步图像质量.进步抗码才能等.(2) 对图像编码理论和其他图像编码办法的研讨. 今朝已经提出和正在进行研讨的图像编码办法有:多分辨率编码.基于概况描写的编码.模子编码.运用人工神经收集的编码.运用分形几何的编码.运用数学形态学的编码等等.1.3 MATLAB及其图像处理对象箱假如运用高等说话(如Basic,C,Fortran)编写仿真程序来实现这一基于DCT的图像紧缩编码算法比较麻烦,并且仿真后果也不是十分幻想.本文重要运用MATLAB宣布的图像处理对象箱中的相干函数和敕令来实基于DCT的图像紧缩编码理论算法的仿真.MATLAB说话是由美国MathWorks公司推出的盘算机软件,经由多年的慢慢成长与不竭完美,现已成为国际公认的最优良的科学盘算与数学运用软件之一,它集数值剖析.矩阵运算.旌旗灯号处理和图形显示于一体,构成了一个便利的.界面友爱的用户情形,并且还具有可扩大性特点.MATLAB中的数字图像是以矩阵情势暗示的,矩阵运算的语法对MATLAB中的数字图像同样实用,这意味着MATLAB壮大的矩阵运算才能对用于图像处理异常有利.图像处理对象箱(Image Processing Toolbox)供给了一套全方位的参照尺度算法和图形对象,用于进行图像处理.剖析.可视化和算法开辟.可进行图像紧缩.空间转换.图像加强.特点检测.降噪.图像朋分和图像配准等功效.对象箱中大部分函数均以凋谢式MATLAB 说话编写,这意味着可以检讨算法.修正源代码和创建自界说函数.本文运用MATLAB图像处理对象箱对基于DCT 的JPEG图像紧缩编码理论算法进行仿真,试验证实该软件功效壮大,说话简练易学,对象箱具有丰硕的技巧支撑并集成了该范畴专家的聪明,运用简略而后果优越.第2章图像紧缩编码理论算法2.1 DCT变换的思惟起源旌旗灯号的变换剖析办法中,平日是经由过程一组恰当的基函数对旌旗灯号进行分化,得到旌旗灯号在变换域的暗示办法,运用旌旗灯号在变换域中某些特点趋于分散的特色来提取其特点从而进行剖析.自1822年傅立叶(Fourier)揭橥“热传导解析理论”以来,傅立叶变换一向是旌旗灯号处理范畴中运用最普遍.后果最好的一种剖析手腕.但傅立叶变换只是一种纯频域的剖析办法,它在频域的定位性是完全精确的(即频域分辨率最高),而在时域无任何定位性(或分辨才能),也即傅立叶变换所反应的是全部旌旗灯号全体时光下的整体频域特点,而不克不及供给任何局部时光段上的频率信息.事实上,在我们生涯中的罕有旌旗灯号平日都具有非安稳的性质,即其频域性质都是随时光而变更的.对这一类旌旗灯号用傅立叶变换进行剖析,固然可以知道旌旗灯号所包含有哪些频率信息,但不克不及知道这些频率信息具体出如今哪个时光段上,是以不克不及供给关于旌旗灯号完全的信息.可见,傅立叶变换不实用于提取局部时光段(或刹时)的频域特点信息[4].提出了有名的Gabor变换.,,,然后再进行傅立叶变换.在Gabor变换的基本上,为了顺应不合问题的须要,进一步成长了多种情势的窗口函数,如矩形窗.汉宁窗.哈明窗等,这一类加窗的傅立叶变换统称为短时傅立叶变换(STFT).STFT从本质上讲,是用窗函数截取原始旌旗灯号的一个待剖析段进行傅立叶变换,因而可以描写旌旗灯号在某一局部时光段上的频率信息.今朝,STFT在很多范畴获得了普遍的运用,但因为STFT的界说决议了其窗函数的大小和外形均与时光和频率无关,一旦选定窗口就保持固定不变,晦气于剖析时变旌旗灯号.现实上一般的高频旌旗灯号中断时光较短,而低频旌旗灯号中断时光较长,是以我们期望对于高频旌旗灯号采取小时光窗,对于低频旌旗灯号采取大时光窗进行剖析.在进行旌旗灯号剖析时,这种变时光窗的请求同STFT的固准时窗(窗不随频率而变更)的特点是相抵触的[5].离散余弦变换(DCT)从本质上是一种变换剖析办法,要在变换时最大的去除剖析旌旗灯号的相干性提取其特点,就必须恰当的构造一组基函数,这组基函数以某种情势类似于我们所要暗示的数据,甚至具有与数据雷同的相干构造.在我们日常生涯中常碰到的旌旗灯号在空间域和频域都具有相干性.在空间上相隔较近的样值间的相干性比相隔较远的大的多,而在频域上平日呈带状.为了剖析和暗示如许的旌旗灯号,我们须要基函数在空间域和频域是局域性的.因为离散余弦函数的频域分辨率与时域分辨率成反比,刚好与现实旌旗灯号长时低频.短时高频的特点相吻合,既能准肯定位旌旗灯号的突发跳变,又能掌控旌旗灯号的整体变更率.由此可见,离散余弦变换是一种比较幻想的进行旌旗灯号处理的数学对象[6].图像紧缩编码的理论算法.(1)基于DCT的JPEG图像紧缩编码理论算法基于DCT编码的JPEG 编码紧缩进程框图,如图2-1所示.上图是基于DCT变换的图像紧缩编码的紧缩进程,解紧缩与上图的进程相反.在编码进程中,起首将输入图像色彩空间转换后分化为8×8大小的数据块,然后用正向二维DCT把每个块转变成64个DCT系数值,个中1个数值是直流(DC)系数,即8×8空域图像子块的平均值,其余的63个是交换(AC)系数,接下来对DCT 系数进行量化,最后将变换得到的量化的DCT 系数进行编码和传送,如许就完成了图像的紧缩进程.在解码进程中,形成紧缩后的图像格局,先对已编码的量子化的DCT 系数进行解码,然后求逆量化并把DCT 系数转化为8×8样本像块(运用二维DCT 反变换),最后将操纵完成后的块组合成一个单一的图像.如许就完成了图像的解压进程.2.2 基于DCT 的JPEG 图像紧缩编码步调2.2.1 色彩空间的转换和采样JPEG 文件运用的色彩空间为1982年推举的电视图像数字化尺度CCIR 601(现为ITU-RB T.601).在这个色彩空间中,每个分量.每个像素的电平划定为255级,用8位代码暗示.JPEG 只支撑YCbCr 色彩模式.个中Y 代表亮模式转换到YCbCr 模式,用下组公式.JPEG 是以8×8的块为单位来进行处理的,因为人眼对亮度Y 的迟钝度比色度CbCr 的迟钝度大的多,所以采取缩减取样的方法,平日采取YUV422取样,图2-2所示.图2-2Y U V 422取样示意图即对于16×16的块,Y 取4个8×8的块,CbCr 各取2个8×8的块.也有YUV411方法,Y 取4个8×8的块,CbCr 各取1个8×8的块.YUV422取样方法,数据削减1/3.YUV411取样方法,数据削减1/2.缩减取样一般采取图2-3所示办法.图2-3 紧缩取样示意图2.2.2 二维离散余弦变换在傅里叶级数睁开式中,假如被睁开的函数是实偶函数,那么,其傅里叶技巧中只包含余弦项,在将其离散化由此可导出余弦变换,或称之为离散余弦变换(DCT,Discrete Cosine Transform)[7].式中式中JPEG 采取的是8×8大小的子块的二维离散余弦变换.在编码器的输入端,把原始图像次序地朋分成一系列8×8的子块,子块的数值在-128到127之间.采取余弦变换获得64个变换系数[8].变换公式,如式(2-5)所示.()()()()7712121,,cos cos 41616x y x y F u v c u c v f x y u v ππ==++⎛⎫⎛⎫= ⎪ ⎪⎝⎭⎝⎭∑∑(2-5)式中,7,,1,0,,, =v u y x .⎪⎩⎪⎨⎧====其它10,021)()(v u v c u c在MATLAB 的图像处理对象箱中,可以直接挪用dct2和idct2来实现二维离散余弦变换及其反变换.(1) dct2dct2函数实现图像的二维离散余弦变换,其语法为: F=dct2(f) 运行下列程序: f=imread('cameraman.tif'); f=im2double(f); F=dct2(f);subplot(121),imshow(f,[ ]);subplot(122),imshow(log(1+20*abs(F)),[ ]); 运行成果如图2-4所示.图2-4图像显示及图像DCT 变换后频谱显示由运行成果可知,DCT 变换具有能量分散的性质,数据分散在左上角.是以进行图像紧缩时离散余弦变换矩阵可以舍弃右下角的高频数据.(2) idct2 idct2函数实现图像的二维离散余弦逆变换,其语法为: F=idct2(f)在MATLAB图像处理对象箱中,有一个对图像进行块操纵的函数blkproc,运用这个函数,可以直接实现图像一系列8×8子块的DCT变换.其语法格局为:B = blkproc(A,[m n],fun, parameter1,,parameter2, ...)B = blkproc(A,[m n],[mborder nborder],fun,...)B = blkproc(A,'indexed',...)[m n]是指图像以m*n为分块单位,对图像进行处理(如8像素*8像素) Fun:运用此函数对分离对每个m*n分块的像素进行处理parameter1, parameter2:要传给fun函数的参数mborder nborder:对每个m*n块高低进行mborder个单位的扩充,阁下进行nborder个单位的扩充,扩充的像素值为0,fun函数对全部扩充后的分块进行处理.如下列程序:I = imread('cameraman.tif');fun = idct2;J = blkproc(I,[8 8],fun);imagesc(J), colormap(hot)8×8的图像经由DCT变换后,其低频分量都分散在左上角,高频分量散布在右下角(DCT变换现实上是空间域的低通滤波器).因为该低频分量包含了图像的重要信息(如亮度),而高频与之比拟,就不那么重要了,所以我们可以疏忽高频分量,从而达到紧缩的目标.将高频分量去掉落,这就要用到量化,它是产生信息损掉的根源.这里的量化操纵,就是将某一个值除以量化表中对应的值.因为量化表左上角的值较小,右上角的值较大,如许就起到了保持低频分量,克制高频分量的目标.JPEG运用的色彩是YUV格局.我们提到过,Y分量代表了亮度信息,UV分量代表了色差信息.比拟而言,Y分量更重要一些.我们可以对Y采取细量化,对UV采取粗量化,可进一步进步紧缩比.所以上面所说的量化表平日有两张,一张是针对Y的,一张是针对UV的.DCT系数的量化量化是对经由DCT变换后的频率系数进行量化,其目标是减小非“0”系数的幅度以及增长“0”值系数的数量,它是图像质量降低的最重要原因.对于基于DCT的JPEG图像紧缩编码算法运用如图2-6所示的平均量化器进行量化,量化步距是按照系数地点的地位和每种色彩分量的色调值来肯定.因为人眼对亮度旌旗灯号比对色差旌旗灯号更迟钝,是以运用了表2-1所示的种量化表.此外,因为人眼对低频分量的图像比对高频分量的图像更迟钝,是以表中的左上角的量化步距要比右下角的量化步距小[9].亮度和色度因为代表的图像的信息量不合,亮度代表了图像的低频分量,色度代表了图像的高频分量,要分离对亮度和色度进行量化,所以量化表也是不合的.JPEG紧缩色度和亮器量化表如表2-1所示.量化会产生误差,上图是分解大量的图像测试的试验成果,对于大部分图像都有很好的成果.表中可以看出,高频部分对应的量化值大,目标就是将高频部分编程接近于0,以便今后处理.JPEG可以在紧缩比和图像质量间作弃取.办法就是转变量化值.假如量化值放大一倍,则有更多的系数量化为0,进步了紧缩比.2.2.4 量化系数的编排经由DCT变换后,低频分量分散在左上角,个中F(0,0)(即第一行第一列元素)代表了直流(DC)系数,即8×8子块的平均值,要对它单独编码.因为两个相邻的8×8子块的DC系数相差很小,所以对它们采取差分编码DPCM,可以进步紧缩比,也就是说对相邻的子块DC系数的差值进行编码.8×8的其它63个元素是交换(AC)系数,采取行程编码[10].所以量化后的系数要从新编排,目标是为了增长中断的“0”系数的个数,就是“0”的游程长度,办法是按照Z字形的式样编排.DCT变换后低频分量多呈圆形辐射状向高频率衰减,是以可以算作按Z 字形衰减.是以,量化系数按Z字形扫描读数,如许就把一个8×8的矩阵变成一个1×64的矢量,频率较低的系数放在矢量的顶部.量化后的DCT系数的编排如图2-7所示.图2-7 量化DCT系数的编排量化后的DCT系数的序号如表2-2所示.表2-2 量化DCT系数的序号0 1 5 6 14 15 27 282 4 7 13 16 26 29 423 8 12 17 25 30 41 439 11 18 24 31 40 44 5310 19 23 32 39 45 52 5420 22 33 38 46 51 55 6021 34 37 47 50 56 59 6135 36 48 49 57 58 62 63DC系数的编码8×8子块的64个变换系数经量化后,按直流系数DC和交换系数AC分成两类处理.坐标u=v=0的直流系数DC本质上就是空域图像中64个像素的平均值.图像块经由DCT变换之后得到的DC直流系数有两个特色,一是系数的数值比较大,二是相邻8×8图像块的DC系数值变更不大.依据这个特色,JPEG算法运用了差分脉冲调制编码技巧.差分脉冲编码调制(DPCM,Differential Pulse Code Modulation),是一种对模仿旌旗灯号的编码模式,先依据前一个抽样值盘算出一个猜测值,再取当前抽样值和猜测值之差作为编码用.此差值称为猜测误差.抽样值和猜测值异常接近(因为相干性强),猜测误差的可能取值规模比抽样值变更规模小.所以可用少几位编码比特来对猜测误差编码,从而降低其比特率.这是运用减小冗余度的办法,降低了编码比特率.是以,对DC系数编码进行差分脉冲编码就是对相邻图像块之间量化DC系进行编码,即对相邻块之间的DC系数的差值.DC采取差值脉冲编码的重要原因是因为在中断色调的图像中,其差值多半比原值小,对差值进行编码所需的位数,会比对原值进行编码所需的位数少很多.例如差值为5,它的二进制暗示值为101,假如差值为-5,则先改为正整数5,再将其二进制转换成1的补数即可.所谓1的补数,就是将每个Bit若值为0,便改成1;Bit为1,则变成0.差值5应保存的位数为3,列出差值所应保存的Bit数与差值内容的对比.在差值前端别的参加一些差值的霍夫曼码值,例如亮度差值为5(101)的位数为3,则霍夫曼码值应当是100,两者衔接在一路即为100101.2.2.6 AC系数的编码DCT变换所得系数除直流系数之外的其余63个系数称为交换系数(AC 系数).量化AC系数的特色是1×64矢量中包含有很多“0”系数,并且很多“0”是中断的,是以运用异常简略和直不雅的游程长度编码(RLE)对它们进行编码.所谓行程编码(Run-Length Encoding)就是指仅存储一个像素值以及具有雷同色彩的像素数量标图像数据编码方法,或称游程编码,经常运用RLE(Run-Length Encoding)暗示.该紧缩编码技巧相当直不雅和经济,运算也相当简略,是以解紧缩速度很快.RLE紧缩编码尤其实用于盘算机生成的图形图像,对削减存储容量很有后果[11].63个AC系数采取行程编码的方法进行编码的格局如图2-8所示.也即在AC01到AC63中,找出每一个非零的AC值,将其暗示成(NN/SS)VV的情势,个中:NN暗示该AC值前的0的个数.而SS.VV与DC的界说一样.假如中断的非0超出15个时,增长一个扩大字节:(15/0)暗示中断16个0.别的如有一串0延长到AC63,一律用(0/0)暗示停止.图2-8 AC 编码格局对于AC 系数,有两个符号.符号1为行程和尺寸,即上面的(RunLength,Size).(0,0)和(15,0)是两个比较特别的情形.(0,0)暗示块停止标记(EOB),(15,0)暗示ZRL,当行程长度超出15时,用增长ZRL 的个数来解决,所以最多有三个ZRL(3×16+15=63).符号2为幅度值(Amplitude).对于DC 系数,也有两个符号.符号1为尺寸(Size);符号2为幅度值(Amplitude).对于AC 系数,符号1和符号2分离进行编码.零行程长度超出15个时,有一个符号(15,0),块停止时只有一个符号(0,0).对符号1进行Huffman 编码(亮度,色差的Huffman 码表不合).对符号2进行变长整数VLI 编码.举例来说:Size=6时,Amplitude 的规模是-63~-32,以及32~63,对绝对值雷同,符号相反的码字之间为反码关系.所以AC 系数为32的码字为100000,33的码字为100001,-32的码字为011111,-33的码字为011110.符号2的码字紧接于符号1的码字之后.对于DC 系数,Y 和UV 的Huffman 码表也不合.2.2.7 构成位数据流JPEG 编码的最后一个步调是把各类标识表记标帜代码和编码后的图像数据构成一帧一帧的数据,如许做的目标是为了便于传输.存储和译码器进行译码,如许的组织的数据平日称为JPEG 位数据流(JPEGbitstream)[12].举个例子来解释上述进程.下面为8×8的亮度(Y)图像子块经由量化后的系数,如表2-3所示.第一字节第二字节。

基于DCT的图像压缩编码算法及Matlab实现

基于DCT的图像压缩编码算法及Matlab实现

基于DCT的图像压缩编码算法及Matlab实现电子与信息工程学院信号与信息处理刘厚鹏1030092090基于DCT的图像压缩编码算法及Matlab实现一.DCT介绍离散余弦变换(Discrete Cosine Transform,简称DCT变换)是一种与傅立叶变换紧密相关的数学运算。

在傅立叶级数展开式中,如果被展开的函数是实偶函数,那么其傅立叶级数中只包含余弦项,再将其离散化可导出余弦变换,因此称之为离散余弦变换。

二.基于DCT的图像压缩编码算法的表述在编码过程中,首先将输入图像分解为8⨯8大小的数据块,然后用正向二维DCT,把每个块转变成64个DCT系数值,其中1个数值是直流(DC)系数,即8⨯8空域图像子块的平均值,其余的63个是交流(AC)系数,接下来对DCT系数进行量化,最后将变换得到的量化的DCT系数进行编码和传送,形成压缩后的图像格式.在解码过程中,先对已编码的量子化的DCT系数进行解码,然后求逆量化并把DCT系数转化为8⨯8样本像块(使用二维DCT反变换),最后将操作完成后的块组合成一个单一的图像.这样就完成了图像的压缩和解压过程.三.Matlab实现应用MATLAB仿真实现中,主要是在解析式定义基础上采用二维DCT变换的矩阵式定义来实现的.MATLAB仿真实现过程:I=imread('1.tif');I=im2double(I);T=dctmtx(8);B=blkproc(I,[8 8],'P1*x*P2',T,T');mask=[1 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0];B2=blkproc(B,[8 8],'P1.*x',mask);I2=blkproc(B2,[8 8],'P1*x*P2',T',T);imshow(I)title('原始图像')figure;imshow(I2)title('压缩后的图像')四:压缩结果:原始图像:压缩后的图像五:结论数字图像的固有缺陷是其特别巨大的数据量,与传输网络有限的传输能力形成了一对矛盾,成为制约数字图像应用的瓶颈。

DCT图像压缩

DCT图像压缩

图像压缩一.摘要JPEG压缩算法可以用失真的压缩方式来处理图像,但失真的程度却是肉眼所无法辩认的。

这也就是为什么JPEG会有如此满意的压缩比例的原因。

二.设计目的和意义图像压缩的目的在于以较少的数据来表示图像以节约存储费用,或者传输时间和费用。

图像压缩主要目的是为了节省存储空间,增加传输速度。

图像压缩的理想标准是信息丢失最少,压缩比例最大。

不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。

压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。

三.设计原理信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉冗余等,数据压缩实质上是减少这些冗余量。

高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。

编码压缩方法有许多种,从不同的角度出发有不同的分类方法,从信息论角度出发可分为两大类。

1. 冗余度压缩方法,也称无损压缩、信息保持编码或嫡编码。

具体说就是解码图像和压缩编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。

2. 信息量压缩方法,也称有损压缩、失真度编码或烟压缩编码。

也就是说解码图像和原始图像是有差别的,允许有一定的失真。

3. 应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分为以下3类:(1)无损压缩编码种类哈夫曼(Huffman)编码,算术编码,行程(RLE)编码,Lempel zev 编码。

(2)有损压缩编码种类预测编码,DPCM,运动补偿;频率域方法:正交变换编码(如DCT),子带编码;空间域方法:统计分块编码;模型方法:分形编码,模型基编码;基于重要性:滤波,子采样,比特分配,向量量化;(3)混合编码。

有JBIG,H261,JPEG,MPEG等技术标准。

四.设计步骤1.用DCT压缩图像的过程为:(1)首先将输入图像分解为8×8或16×16的块,然后对每个子块进行二维DCT变换。

图像编码与压缩的关系解析(一)

图像编码与压缩的关系解析(一)

图像编码与压缩的关系解析随着信息时代的到来,图像的应用越来越广泛。

然而,图像的存储和传输占据了大量的存储空间和带宽,因此对图像进行编码和压缩变得至关重要。

本文将讨论图像编码与压缩的关系,以及它们在图像处理中的重要性。

一、图像编码的基本原理图像编码是将图像转换成数字信号以便于存储、传输和处理的过程。

它的基本原理是利用冗余和人眼感知特性来减少图像数据的冗余度。

冗余是指在图像中存在的重复、无效或不必要的信息。

如何最大限度地去除冗余并保持图像质量是图像编码的核心问题。

在图像编码中,最常用的编码方法是离散余弦变换(DCT)。

DCT 将图像分解成不同频率的分量,然后对每个分量进行系数化。

这样做的目的是降低高频部分的系数,使得在保持图像质量的前提下减少存储和传输所需的数据量。

编码后的图像可以通过解码器进行还原,以便于正常显示。

二、图像压缩的概念和分类图像压缩是指通过改变图像的存储方式,减少其所需的存储空间和传输带宽。

它在图像处理领域有着广泛的应用。

根据压缩方式的不同,图像压缩可以分为无损压缩和有损压缩。

无损压缩是指压缩后的图像可以完全恢复成原始图像,没有任何信息的损失。

常见的无损压缩方法有LZW、Huffman编码等。

这种方法适用于对图像质量要求较高的场合,如医学图像和卫星图像等。

有损压缩是指压缩后的图像有一定的信息损失,但在一定程度上保持了图像的可视品质。

有损压缩能够大幅度地减少图像所需的存储空间和传输带宽,并广泛应用于图片存储、传输和显示领域。

常见的有损压缩方法有JPEG、JPEG2000等。

三、图像编码与压缩的关系图像编码和压缩是紧密相关的。

图像编码是为了减少冗余度,从而减少存储和传输所需的数据量;而图像压缩是为了通过改变存储方式减少所需的存储空间和传输带宽。

可以说,图像编码是图像压缩的基础。

在图像编码的过程中,采用的编码方法会影响到图像的压缩比和图像质量。

不同的编码方法对冗余的处理方式不同,从而导致不同的图像压缩效果。

图像压缩编码的方法概述

图像压缩编码的方法概述

图像压缩编码的方法概述摘要:在图像压缩的领域,存在各种各样的压缩方法。

不同的压缩编码方法在压缩比、压缩速度等方面各不相同。

本文从压缩方法分类、压缩原理等方面分析了人工神经网络压缩、正交变换等压缩编码方法的实现与效果。

关键词:图像压缩;编码;方法图像压缩编码一般可以大致分为三个步骤。

输入的原始图像首先需要经过映射变换,之后还需经过量化器以及熵编码器的处理最终成为码流输出。

一、图像压缩方法的分类1.按照原始信息和压缩解码后的信息的相近程度分为以下两类:(1)无失真编码又称无损编码。

它要求经过编解码处理后恢复出的图像和原图完全一样,编码过程不丢失任何信息。

如果对已量化的信号进行编码,必须注意到量化所产生的失真是不可逆的。

所以我们这里所说的无失真是对已量化的信号而言的。

特点在于信息无失真,但压缩比有限。

(2)限失真编码中会损失部分信息,但此种方法以忽略人的视觉不敏感的次要信息的方法来得到高的压缩比。

图像的失真怎么度量,至今没有一个很好的评判标准。

在由人眼主观判读的情况下,唯有人眼是对图像质量的最有利评判者。

但是人眼视觉机理到现在为止仍为被完全掌握,所以我们很难得到一个和主观评价十分相符的客观标准。

目前用的最多的仍是均方误差。

这个失真度量标准并不好,之所以广泛应用,是因为方便。

2.按照图像压缩的方法原理可分为以下三类:(1)在图像编码过程中映射变换模块所做的工作是对编码图像进行预测,之后将预测差输出供量化编码,而在接受端将量化的预测差与预测值相加以恢复原图,则这种编码方法称为预测编码。

预测编码中,我们只对新的信息进行编码。

并且是利用去除邻近像素之间的相关性和冗余性的方法来达到压缩的目的。

(2)若压缩编码中的映射变换模块用某种形式的正交变换来代替,则我们把这种方式的编码方法称为变换编码。

在变换编码中常用的变换方法有很多,我们主要用到的有离散余弦变换(DCT),离散傅立叶变换(DFT)和离散小波变换(DWT)等。

图象压缩(JPEG)编码算法中的DCT实现

图象压缩(JPEG)编码算法中的DCT实现

图象压缩图象压缩((JPEG )编码算法中的DCT 实现JPEG 中的二维DCT本文所讨论的压缩过程的关键是被称为离散余弦变换(Discrete Cosine Transform ,DCT )的数学变换。

Baseline System 中的DCT 要求输入数据是一个8×8的矩阵,且每个矩阵元素具有8bit 精度,分为从-128到127,故DCT 变换前,象素值先要减去128。

所谓8×8的二维DCT 是指将8×8的象素值矩阵变换成8×8系数矩阵。

8×8象素值矩阵是由输入图像分块得到的,若图像的高或宽不是8的整数倍,必须扩展其下边或右边到8的整数倍。

下面给出了式1二维DCT 的实用公式。

式2是反离散余弦变化(IDCT )公式。

式中表示的是8×8个象素值的矩阵进行计算的,产生出8×8频率系数的矩阵。

8×8的DCT 及IDCT 公式如下:用相当直接的代码段来表示for ( i = 0 ; i < 8 ; i + + )for ( j = 0 ;j < 8 : j + + ){temp = 0.0;for ( x = 0 ; x < 8 ; x ++ )for ( y = 0 ; y < 8 ; y ++ ){temp += Cosines [ x ] [ i ]*Cosines[ y ][ j ]*pixel[ x ][ y ];}temp * = sqrt ( 2 * 8 ) * Coefficient[ i ][ j ];DCT [ i ][ j ] = INT_ROUND (temp); // 取整运算 INT_ROUND}DCT 的实现测验DCT 算法时所表现出的首要的问题之一是计算DCT 中每个元素所需要的世界紧紧地依赖于矩阵的大小。

由于使用双层嵌套循环,所以计算量为:随着N 的增长,处理DCT 输出数组中每个元素所要的时间也将增长。

图像压缩编码的方法

图像压缩编码的方法

图像压缩编码的方法
图像压缩编码的方法有许多,常见的包括以下几种:
1. 无损压缩:无损压缩的目标是在压缩图像的同时不损失任何数据。

常见的无损压缩方法有:
- Run Length Encoding (RLE):适用于有大量连续重复像素的图像。

- Huffman 编码:通过统计像素出现的频率和概率来分配不同的编码长度。

- Lempel-Ziv-Welch (LZW) 编码:将连续出现的像素序列映射为较短的编码。

2. 有损压缩:有损压缩的目标是在压缩图像的同时牺牲一部分信息以获得更高的压缩比。

常见的有损压缩方法有:
- 基于变换的压缩方法:如福利耶变换(Discrete Cosine Transform, DCT)和小波变换(Wavelet Transform),将图像从时域转换到频域来减少冗余。

- 基于预测的压缩方法:如差分编码(Differential Encoding)和运动补偿(Motion Compensation),通过计算像素之间的差异来减少冗余。

- 量化:将频域系数或预测误差按照一定的量化步长进行量化,牺牲一部分细节信息。

这些方法可以单独使用,也可以结合使用以实现更高的压缩率。

-。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图像DCT 变换编码与压缩
一、实验目的:
(1)掌握离散余弦变换DCT 的实现方法,了解DCT 的幅度分布特性,从而加深对DCT 变换的认识。

(2)掌握图像DCT 变换编码的实现方法,从而加深对变换编码压缩图像原理的理解。

二、实验内容:
编程实现图像DCT 变换编码。

三、实验原理:
变换编码是在变换域进行图像压缩的一种技术。

图1显示了一个典型的变换
编码系统。

压缩图像
输入图像N×N
图1 变换编码系统
在变换编码系统中,如果正变换采用DCT 变换就称为DCT 变换编码系统。

DCT 用于把一幅图像映射为一组变换系数,然后对系数进行量化和编码。

对于大多数的正常图像来说,多数系数具有较小的数值且可以被粗略地量化(或者完全抛弃),而产生的图像失真较小。

DCT 是仅次于K-L 变换的次最佳正交变换,且以获得广泛应用,并成为许多图像编码国际标准的核心。

离散余弦变换的变换核为余弦函数,计算速度快,有利于图像压缩和其他处理。

对于N ×N 的数字图像,二维DCT 变换的正反变换可表示为:
11
0011
00
(21)(21)(,)()()(,)cos
cos 222
(21)(21)(,)()()(,)cos
cos 22N N x y N N u v x u y v F u v c u c v f x y N N x u y v f x y c u c v F u v N
N N
ππ
ππ
--==--==++=++=
∑∑∑∑(1)
其中,
1/00()()1,1,2,...,1
u v c u c v u v N ⎧==⎪==⎨
=-⎪⎩或 MATLAB 图像处理工具箱实现离散余弦变换有两种方法:
(1)使用函数dct2,该函数用一个基于FFT 的算法来提高当输入较大的方阵时的计算速度。

(2)使用由dctmtx 函数返回的DCT 变换矩阵,这种方法较适合于较小的输入方阵(例如8×8或16×16)。

①函数:dct2
实现图像的二维离散余弦变换。

调用格式为: B = dct2(A) B = dct2(A,[M N]) B = dct2(A,M,N)
式中A 表示要变换的图像,M 和N 是可选参数,表示填充后的图像矩阵大小,B 表示变换后得到的图像矩阵。

②函数:dctmtx
除了用dct2函数实现二维离散余弦变换,还可用 dctmtx 函数来计算变换矩阵,调用格式为:
D = dctmtx(N)
式中D 是返回N ×N 的DCT 变换矩阵,如果矩阵A 是N ×N 方阵,则A 的DCT 变换可用D ×A ×D ’来计算。

这在有时比dct2计算快,特别是对于A 很大的情况。

③函数:idct2
实现图像的二维离散余弦反变换。

调用格式为: B = idct2(A) B = idct2(A,[M N]) B = idct2(A,M,N) 式中参数同dct2。

此外,为了实现8×8子块的DCT 图像变换还要用到MATLAB 中的blkproc 函数。

将这个函数和函数dctmtx 一起用于块处理可以大大简化运算。

调用函数blkproc 的格式为:
B=blkpro(A,[M,N],FUN,P1,P2,…)
其中,A表示原图像,[M,N]指定了大小为M×N的滑动邻域,FUN是对M×N 的矩阵进行计算的函数,P i是传递给FUN的附加参数。

该函数自动实现图像块处理的整个过程。

Blkproc把A分成M×N个块,对每个块调用参数为P1,P2,…的函数FUN,并重新将结果组合到输出图像B。

blkproc函数实现n×n矩阵的DCT变换和反变换。

编程中可写成:
Y=blkproc(F,[8 8],’P1*x*P2’,H,H’)
同样的道理,blkproc函数还用于量化和反量化。

显示误差直方图可能用到的MATLAB函数有:
Max %找图像差最大值
[ ]=hist %用于生成直方图数据
Bar %显示图像差值直方图
以上函数用MATLAB的help查看具体使用方法。

图2显示了采用JPEG标准化矩阵进行DCT变换编码的结果。

图2 DCT变换编码
四、实验步骤:
DCT变换编码流程如下:
步骤1:设置JPEG标准化数组;
步骤2:求8×8快的DCT变换矩阵;
步骤3: 计算8×8快的DCT变换;
步骤4:对DCT系数量化和反量化;
步骤5:求反量化系数的逆DCT变换;
步骤6:重新显示重建图像、误差图像和误差图像的直方图。

量化时可采用JPEG标准推荐的归一化数组,如表1所示。

表1 JPEG标准化数组
程序如下:
x=imread('lena','bmp');
[M,N]=size(x);%得到原始举矩阵大小
m=[ 16 11 10 16 24 40 51 61;
12 12 14 19 26 58 60 55;
14 13 16 24 40 57 69 56;
14 17 22 29 51 87 80 62;
18 22 37 56 68 109 103 77;
24 35 55 64 81 104 113 92;
49 64 78 87 103 121 120 10;
72 92 95 98 112 100 103 99];
I=x;
x=double(x);%变成双精度
t=dctmtx(8);%得到DCT变换矩阵
y1=blkproc(x,[8 8],'P1*x*P2',t,t');%进行DCT变换得到变换矩阵
y2=blkproc(y1,[8 8],'round(x./P1)',m);%量化
y3=blkproc(y2,[8 8],'x.*P1',m);%反量化
y=blkproc(y3,[8 8],'P1*x*P2',t',t);%反DCT变化IDCT
subplot(2,2,1);imshow(I);title('原始图像');
subplot(2,2,2);imshow(mat2gray(y));title('重建图像');%reconstruted image
d=x-y;%original-reconstruted原始矩阵和变化矩阵的差值,即变化误差
subplot(2,2,3);imshow(mat2gray(d));title('误差图像');
[h,k]=hist(d(:),256);%生成直方图数据
subplot(2,2,4);bar(k,h,'k');title('误差图像直方图');
五、思考题目:
(1)观察图像8×8子块的DCT系数的分布,并分析其特点。

答:经DCT变换以后,系数大多数集中在左上角(即低频分量),其余系数大多很小或为零。

(2)将量化步长分别增大为初始值的2倍、4倍、8倍后再进行DCT变换编码,显示不同量化步长条件下的重建图像、误差图像以及误差图像的直方图。

分析重建图像质量和量化步长的关系。

答:由以上结果对比可看出随着量化补偿的加大,图像误差变大,失真越来越严重。

相关文档
最新文档