浅析图像压缩编码方法

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

Computer Knowledge and Technology 电脑知识

与技术第6卷第23期(2010年8月)浅析图像压缩编码方法

徐飞

(闽西职业技术学院,福建龙岩364021)

摘要:该文描述了图像压缩编码的概念,原理以及主要分类,介绍了目前常见的三种图像压缩编码方法的原理,特点以及简单讨论了其中两种方法的MATLAB 代码实现。

关键词:图像压缩编码;编码原理;编码分类;编码方法;MATLAB

中图分类号:TP301文献标识码:A 文章编号:1009-3044(2010)23-6584-03

Analysis of the Image Compression Coding Method

XU Fei

(Minxi Vocational &Technical College,Longyan 364021,China)

Abstract:This paper is mainly about the concept,principle and classification of image compression coding,introduces the concepts and characteristic of three kinds of image compression coding methods that are common used,and discusses how to using matlab to accomplish the two common methods which mentions in the front.

Key words:image compression coding;coding principle;coding classification;coding method;MATLAB

现代社会是信息社会,随着信息技术的发展,图像信息被广泛应用于多媒体通信、计算机系统和网络中。因为对图像的要求越来越高,图像信息量也越来越大,所以在传输之前需要进行信息处理,必须采用合适的方法对其进行压缩,因此有必要对图像压缩编码方法进行研究。

1图像压缩编码

1.1概述

图像压缩编码就是在满足一定保真度和图像质量的前提下,对图像数据进行变换、编码和压缩,去除多余的数据以减少表示数字图像时需要的数据量,便于图像的存储和传输。即以较少的数据量有损或无损地表示原来的像素矩阵的技术,也称图像编码。

1.2图像压缩编码原理

图像数据的压缩机理来自两个方面:一是利用图像中存在大量冗余度可供压缩;二是利用人眼的视觉特性。

1.2.1图像数据的冗余度

1)空间冗余:

在一幅图像中规则的物体和规则的背景具有很强的相关性。

2)时间冗余:电视图像序列中相邻两幅图像之间有较大的相关性。

3)结构冗余和知识冗余:

图像从大面积上看常存在有纹理结构,称之为结构冗余。

4)视觉冗余:人眼的视觉系统对于图像的感知是非均匀和非线性的,对图像的变化并不都能察觉出来。

1.2.2人眼的视觉特性

1)亮度辨别阈值:当景物的亮度在背景亮度基础上增加很少时,人眼是辨别不出的,只有当亮度增加到某一数值时,人眼才能感觉其亮度有变化。人眼刚刚能察觉的亮度变化值称为亮度辨别阈值。

2)视觉阈值:视觉阈值是指干扰或失真刚好可以被察觉的门限值,低于它就察觉不出来,高于它才看得出来,这是一个统计值。3)空间分辨力:空间分辨力是指对一幅图像相邻像素的灰度和细节的分辨力,视觉对于不同图像内容的分辨力不同。

4)掩盖效应:“掩盖效应”是指人眼对图像中量化误差的敏感程度,与图像信号变化的剧烈程度有关。

1.3图像压缩编码的分类

根据编码过程中是否存在信息损耗可将图像编码分为:

1)无损压缩:又称为可逆编码(Reversible Coding),解压缩时可完全回复原始数据而不引起任何失真;

2)有损压缩:又称不可逆压缩(Non-Reversible Coding),不能完全恢复原始数据,一定的失真换来可观的压缩比。

根据编码原理可以将图像编码分为:

1)熵编码:熵编码是编码过程中按熵原理不丢失任何信息的编码。熵编码基本原理是给出现概率大的信息符号赋予短码字,出收稿日期:2010-06-10

作者简介;徐飞(1982-),男,福建龙岩人,闽西职业技术学院,助教,理学学士,主要研究方向为数字图象,软件开发,软件测试。ISSN 1009-3044Computer Knowledge and Technology 电脑知识与技术Vol.6,No.23,August 2010,pp.6584-6586,6589E-mail:eduf@ Tel:+86-551-56909635690964

第6卷第23期(2010年8月)

Computer Knowledge and Technology电脑知识与技术

现概率小的信息符号赋予长码字,最终使得平均码长最小。常见熵编码方法有哈夫曼编码、算术编码和行程编码(Run Length En-coding)。

2)预测编码:预测编码是根据离散信号之间存在着一定关联性的特点,利用前面一个或多个信号预测下一个信号进行,然后对实际值和预测值的差(预测误差)进行编码。预测编码可分为帧内预测和帧间预测,常见的预测编码有差分脉码调制(Differential Pulse Code Modulation,DPCM)和自适应差分脉冲编码(Adaptive Differential Pulse Code Modulation,ADPCM)。

3)变换编码:变换编码通常是将空域图像信号映射变换到另一个正交矢量空间(变换域或频域),产生一批变换系数,然后对这些变换系数进行编码处理。图像信号在空域描述时,数据之间相关性大,冗余量大,经过变换到变换域中去描述,数据相关性大大减少,冗余量减少,参数独立,数据量少,这样再进行适当的量化和编码就能得到较大的压缩比。常用的正交变换有傅立叶(Fouries)变换、正弦变换、余弦变换、哈尔(Haar)变换、沃尔什(Walsh)变换、斜(Slant)变换和K-L(Karhunen-Loeve)变换等。

4)混合编码:混合编码是指综合使用了熵编码、预测编码或变换编码的编码方法,如JPEG标准和MPEG标准。

1.4图像压缩编码方法介绍

1.4.1哈夫曼编码

基本思想是统计一下灰度级的出现概率,建立一个概率统计表,将最常出现(概率大的)的灰度级用最短的编码,最少出现的灰度级用最长的编码。

步骤:1)将输入灰度级按概率大小由大到小排序;2)将最小的两个概率相加得到一个新的概率集合,重复第1步,直到只有两个概率集合为止;3)反向分配码字。

特点:1)码值不唯一;2)对不同概率分布的信源,哈夫曼编码的编码效率有所差别,对于二进制编码,当信源概率为2的负幂次方时,哈夫曼编码的编码效率可达100%,其平均码字长度也很短,而当信源概率为均匀分布时,其编码效果明显降低。3)需先计算图像数据的概率特性形成编码表后才对图像编码,因此缺乏构造性。

1.4.2预测编码

基本思想是通过提取每个像素中的信息并对它们编码来消除像素间的冗余,它是根据离散信号之间存在一定关联性的特点,利用前面一个或者多个信号对下一个信号进行预测,然后对实际值和预测的差值(预测误差)进行编码。

预测编码是比较易于实现的,如差分脉冲编预测编码(Differential Pulse Code Modulation,DPCM)方法。

在这种方法中,每一个像素灰度值,用先前扫描过的像素灰度值去减,求出他们的差值,此差值称为预测误差,预测误差被量化和编码与传送。接收端再将此差值与预测值相加,重建原始图像像素信号。由于量化和传送的仅是误差信号,根据一般扫描图像信号在空间及时间邻域内个像素的相关性,预测误差分布更加集中,即熵值比原来图像小,可用较少的单位像素比特率进行编码,使得图像数据得以压缩。

预测编码具有高的编码压缩比,其缺点就是降低了抗误码的能力。

DPCM的MATLAB实现代码如下:

i1=imread('cameraman.tif');

i1=rgb2gray(i1);

i1=imcrop(i1,[2020350400]);

i=double(i1);

[m,n]=size(i);

p=zeros(m,n);

图1预测编码原理框图y=zeros(m,n);

y(1:m,1)=i(1:m,1);

p(1:m,1)=i(1:m,1);

y(1,1:n)=i(1,1:n);

p(1,1:n)=i(1,1:n);

y(1:m,n)=i(1:m,n);

p(1:m,n)=i(1:m,n);

p(m,1:n)=i(m,1:n);

y(m,1:n)=i(m,1:n);

for k=2:m-1;

for l=2:n-1;

y(k,l)=(i(k,l-1)/2+i(k-1,l)/4+i(k-1,l-1)/8+i(k-1,l+1)/8);

p(k,l)=round(i(k,l)-y(k,l));

end

end

p=round(p);

subplot(3,2,1),imshow(i1);title('原灰度图像');

subplot(3,2,2),imshow(y,[0256]);title('利用三个相邻块线性预测后的图像');

subplot(3,2,3),imshow(abs(p),[01]);title('编码的绝对残差图像');

j=zeros(m,n);

j(1:m,1)=y(1:m,1);

j(1,1:n)=y(1,1:n);

相关文档
最新文档