基于DCT变换的图像压缩及matlab仿真
- 格式:doc
- 大小:94.00 KB
- 文档页数:7
实验三基于DCT的数字图像压缩及Matlab实现兰州大学信息学院08级通信工程一班赵军伟一、课程设计的目的和要求等内容实验目的:掌握基于DCT变换的图像压缩的基本原理及其实现步骤;通过使用MATLAB,对同一幅原始图像进行压缩,进一步掌握DCT和图像压缩。
实验要求:1、学生在实验操作过程中自己动手独立完成,2人为1组。
2、上机过程中由指导老师检查结果后方可做其他内容。
3、完成实验报告:按照实验的每个题目的具体要求完成二、基本原理或方法(一)图像压缩基本原理图像数据压缩的目的是在满足一定图像质量的条件下,用尽可能少的比特数来表示原始图像,以提高图像传输的效率和减少图像存储的容量,在信息论中称为信源编码。
图像压缩是通过删除图像数据中冗余的或者不必要的部分来减小图像数据量的技术,压缩过程就是编码过程,解压缩过程就是解码过程。
压缩技术分为无损压缩和有损压缩两大类,前者在解码时可以精确地恢复原图像,没有任何损失;后者在解码时只能近似原图像,不能无失真地恢复原图像。
假设有一个无记忆的信源,它产生的消息为{ai},1≤i≤N,其出现的概率是已知的,记为P(ai)。
则其信息量定义为:由此可见一个消息出现的可能性越小,其信息量就越多,其出现对信息的贡献量越大,反之亦然。
信源的平均信息量称为“熵”(entropy),可以表示为:对上式取以2为底的对数时,单位为比特(bits):根据香农(Shannon)无噪声编码定理,对于熵为H的信号源,对其进行无失真编码所可能达到的最低比特数为,这里为一任意小的正数,因此可能达到的最大压缩比为:其中B是原始图像的平均比特率。
在图像压缩中,压缩比是一个重要的衡量指标。
可以定义压缩比为:(二)图像压缩的基本模型图像编码包括两个阶段,前一个阶段就是利用预测模型或正交模型对图像信号进行变换;后一个阶段是利用已变换信号的统计特性,对其分配适当的代码来进行编码传输。
编码器与解码器的结构分别如图(a)、(b)。
摘要:基于DCT图像压缩编码技术提出了用Marlab实现离散余弦变换的图像压缩方法,该方法具有方法简单、速度快、误差小的优点,免去了大量的矩阵计算,既保证具有较高的压缩比,又保证了较好的图像质量。
关键词:DCT; 图像压缩;Matlab中图分类号:TN 919.81文献标识码:B文章编号:1673-5382(2007)02-0058-04白淑岩(烟台职业学院 基础部,山东 烟台 264000)1 引言图像数据的一个显著特点就是信息量大。
组成图像的各像素之间,无论是在行方向还是在列方向上都存在着一定的相关性。
应用某种编码方法提取或者减少这种相关性,就可以达到压缩数据的目的。
从信息论观点看,描述图像信源的数据是由有效信息量和冗余量两部分组成,去除冗余量能够节省图像存储和传输中的开销,同时又不损害图像信源的有效信息量。
保证重构图像的质量。
所谓的图像压缩编码技术就是对要处理的图像源数据按一定的规则进行变换和组合,从而达到以尽可能少的代码(符号)来表示尽可能多的数据信息,目前的编码技术很多,其中应用最广泛的方法之一就是基于离散余弦(DCT)的混合编码技术。
DCT变换是最小均方误差条件得出的较优的正交变换,已经成为许多图像编码国际标准DCT变幻的数字图像压缩技术中的核心。
DCT的变换和是余弦函数,计算速度快,有利于图像压缩和其他处理。
2 基于DCT的图像压缩编码理论算法2.1 基于DCT的图像压缩编码算法表述在编码过程中,首先将输入图像分解为8*8大小的数据块,然后用正向二维DCT把每个块砖变成64个DCT系数值,其中1个数值是直流(DC)稀疏,即8*8控与图像子块的平均值,其余的63个是交流(AC)稀疏,接下来对DCT系数进行量化,最后将变换得到的量化的DCT系数进行解码,然后求逆量化把DCT系数转化为8*8样本橡块(使用二维DCT反变换),最后将操作完成后的块组合成一个单一的图像,这样就完成了图像的压缩和解压缩过程。
通信专业课程设计一太原科技大学课程设计(论文)设计(论文)题目:基于DCT的图像压缩及Matlab实现姓名____学号_班级_学院____指导教师____2010年12月31日太原科技大学课程设计(论文)任务书学院(直属系):时间:学生姓名指导教师设计(论文)题目基于DCT的图像压缩及Matlab实现主要研究内容掌握DCT变换实现图像压缩的基本方法,在不损害图像信源的有效信息量的情况下保证图像的质量,在MATLAB环境中进行图像压缩技术的仿真,并对仿真结果进行分析。
研究方法主要运用实验法与观察法,通过编写程序实现对图像的DCT变换,观察图像结果进而实现对DCT变换的研究。
主要技术指标(或研究目标)利用DCT变换编码方法进行图像压缩,提高信息传输的有效性及通信质量。
教研室意见教研室主任(专业负责人)签字:年月日目录摘要.............................................................................................................................................II 第1章绪论. (1)第2章DCT变换概述 (2)2.1DCT函数介绍 (2)2.2DCT变换介绍 (2)2.2.1DCT变换原理 (2)2.2.2DCT变换编码的步骤 (3)第3章程序运行及结果分析 (5)3.1程序代码 (5)3.2运行结果分析 (7)第4章结论 (11)参考文献 (12)基于DCT变换函数的图像压缩摘要图像压缩是关于用最少的数据量来表示尽可能多的原图像的信息的一个过程。
对于图像来说,如果需要进行快速或实时传输以及大量存储,就需要对图像数据进行压缩,在同等的用心容量下.如果图像数据压缩后再传输,就可以传输更多的图像信息,也就可以增加通信的能力。
变换编码是把图像中的各个像素从一种空间变换到另一种空间.然后针对变换后的信号进行量化与编码操作的一种图象压缩编码技术。
收稿日期:20020711基于DCT 变换的数字图像压缩技术及其Matlab 实现Digital Image Compression Technology Based on Discrete Cosine Transformand Realization Based on Matlab崔春艳CU I Chunyan,李彩霞L I Caix ia(河北大学电子与信息工程学院 保定 071002)(College of Elect ro nic and Inform ational Eng ineering ,Hebei U niv ersity ,Baoding 071002,China )摘 要:介绍了M atlab 的基本功能,提出了用M atlab 来实现DCT 变换的数字图像压缩技术,方法简单,快速,且误差小。
关键词:离散余弦;M atlab ;图像压缩当前处于信息高速流通时代,要求在保证质量的前提下,以较小的空间存储图像和较小的比特率传输图像,这就需要采用各种图像压缩编码技术来实现。
DCT 变换是最小均方误差条件得出的较优的正交变换,且已经获得广泛的应用,并已经成为许多图像编码国际标准DCT 变换的数字图像压缩技术中的核心。
离散余弦变换的变换核是余弦函数,计算速度较快,有利于图像压缩和其他处理。
1 离散余弦变换的概念1.1 一维离散余弦正反变换的公式 F (k )=2∑N -1n =0f (n )cos P (2n +1)k 2N n ,k =0,1,2,…,N -1(1) f (n )=1N ∑N -1k =0F (k )cos P (2n +1)k 2N n ,k =0,1,2,…,N -1(2)1.2 二维离散余弦正反变换的公式正变换公式:5 结 论单片机控制技术应用越来越广泛,其核心技术是单片机控制系统的设计。
对工程技术人员来说,抓住系统的原理构成、软件设计、硬件设计以及系统调试方法的要点是十分必要的。
院(系、所)信息与机电学院专业通信与信息系统考试科目数字压缩第三学期研究生姓名张鹏学号*********摘要图像压缩是关于用最少的数据量来表示尽可能多的原图像的信息的一个过程。
对于图像来说,如果需要进行快速或实时传输以及大量存储,就需要对图像数据进行压缩,如果图像数据压缩后再传输,就可以传输更多的图像信息,也就可以增加通信的能力。
变换编码是把图像中的各个像素从一种空间变换到另一种空间.然后针对变换后的信号进行量化与编码操作的一种图象压缩编码技术。
本文提出了基于DCT变换的图像压缩编码算法进行研究,并用MATLAB进行实验仿真,重点介绍了压缩编码的具体过程和方法 ,详细介绍了编码中DCT变换、量化、熵编码等模块的原理和数学推导以及各模块的功能分析,基于DCT 变换的图像压缩方法简单、方便,既能保证有较高的压缩比,又能保证有较好的图像质量,应用MATLAB仿真出来的结果较好的反应了其编码算法原理。
关键词:图像压缩 DCT变换 MATLABAbstractˎ̥Image compression is a process about the least amount of data to show the original image information as much as possible. For images, if the requirement of high-speed and real-time transmission and a large amount of storage, we need to compress the image data, if the image data compression and transmission, can transmit more information of the image, also can increase the ability of communication. Transform coding is that each pixel in the image from a space to another space. Coding an image and then quantization and coding operation according to the transformed signal.This paper puts forward DCT transform for image compression coding algorithm based on study, and experimental simulation using MATLAB, focuses on process and compression coding method, a detailed analysis of principle and mathematical derivation of the DCT transform coding, quantization, entropy coding module and the function of each module, DCT transform for image the compression method is simple, convenient and based on, which can ensure a higher compression ratio, but also ensure a better image quality, the application of MATLAB simulation results reflect the coding algorithm.Key word:Image compression DCT transform MATLAB基于DCT变换的图像压缩及matlab仿真一.图像压缩编码的概念压缩的理论基础是信息论,从信息论的角度来看,压缩就是去掉信息中的冗余,即保留不确定的信息,去掉确定的信息(可推知的),也就是用一种更接近信息本质的描述来代替原有冗余的描述。
实验作业7分别用区域编码和阈值编码方法实现图像压缩,用8×8DCT变换,保留50%的大系数,并对解码图像进行比较。
要求:DCT要自己实现,不能用matlab中的DCT函数区域编码程序代码:clear;I=imread('d:\3.jpg');I=double(rgb2gray(I));figure(1);imshow(uint8(I));title('原图像');Y=zeros(8,8);for i=1:8for j=1:8if i==1Y(i,j)=sqrt(1/8);elseY(i,j)=sqrt(2/8)*cos((pi*(2*(j-1)+1)*(i-1))/16);endendends=blkproc(I,[8 8],'P1*x*P2',Y,Y'); figure(2);imshow(uint8(s));for j=1:8for i=1:8if j<=8-i+1a(i,j)=1;elsea(i,j)=0;end;end;end;s=blkproc(s,[8 8],'P1.*x',a); figure(3);imshow(uint8(s));s=blkproc(s,[8 8],'P1*x*P2',Y',Y); figure(4);imshow(uint8(s));title('经过压缩处理的图像')运行结果:阈值编码程序代码clear;I=imread('d:\3.jpg'); I=rgb2gray(I); imshow(uint8(I)); title('原图像'); I=double(I); for i=1:8 for j=1:8 if (i==1)Y(i,j)=sqrt(1/8); elseY(i,j)=sqrt(2/8)*cos((i-1)*(2*j-1)*pi/(2*8)); end; end; end; s=blkproc(I,[8 8],'P1*x*P2',Y,Y'); a=ones(8,8); b=reshape(Y,1,64); midvalue=median(b); for i=1:8 for j=1:8if(abs(Y(i,j))<midvalue) a(i,j)=0; end; end; end;s=blkproc(s,[8 8],'P1.*x',a); s=blkproc(s,[8 8],'P1*x*P2',Y',Y); figure(2); imshow(uint8(s));title('被与之编码方式压缩的图像');运行结果:心得体会:由于第八章内容上课听的不是很明白,所以作业题拿到之后不知道怎么做,重新把第八章看了一遍,可是很多地方看了好久好多次还是不明白其原理,就像这次所涉及的DCT (虽然会做作业,但是实在是不理解),区域编码,门限编码,都是不明白什么意思!后来网上搜罗资料,看了颇久,请教了同学,才慢慢知道是什么一回事,做这题目的时候,遇到过不知道怎么分块的问题,后来也是同学告诉有个blkproc 的函数可以用,才使到程序精简化。
基于DCT 变换的图象压缩技术的Matlab 实现一、背景图象的离散余弦变换具有把高度相关数据能量集中的趋势,因此广泛用于图象压缩。
下面使用二维离散余弦变换进行图象压缩。
利用离散余弦变换进行图象压缩,首先要将输入图象分解为88⨯或1616⨯的块,然后对每个块进行二维离散余弦变换,最后将变换得到的DCT 系数进行编码和传送,解码时对每个88⨯或1616⨯的图象块进行二维DCT 反变换,最后将反变换后的块组合成一幅图象。
对于通常的图象来说,大多数的DCT 系数的值非常接近于0。
如果舍弃这些接近于0的DCT 系数值,在重构图象时并不会带来画面质量的显著下降。
所以,利用DCT 进行图象压缩可以节约大量的存贮空间。
压缩应该在最合理的近似原图象的情况下使用最少的系数,使用系数的多少也决定了压缩比的大小。
源程序:Sig1=imread('qq.bmp');Sig=rgb2gray(Sig1);rat=1/4;Sig=double(Sig)/255;[a,b]=size(Sig);figure(1);imshow(Sig);T=dctmtx(8);DCTcoe=blkproc(Sig,[8 8],'P1*x*P2',T,T'); coeVar=im2col(DCTcoe,[8 8],'distinct');coe=coeVar;[Y,Ind]=sort(coeVar);[m,n]=size(coeVar);%Snum=64-64*rat;for i=1:ncoe(Ind(1:Snum),i)=0;endB2=col2im(coe,[8 8],[a b],'distinct');I2=blkproc(B2,[8 8],'P1*x*P2',T',T);% figure(4);imshow(I2);二、实验内容1、调试上述程序,将运行结果显示如下。
2010届毕业生毕业论文题目:基于DCT的图像压缩技术研究与仿真实现院系名称:国际学院专业班级:电子信息工程技术07级03班学生姓名:梁岑学号:20073930304指导教师:朱春华教师职称:讲师2010 年5月10 日摘要离散余弦变换(Discrete Cosine Transform,简称DCT)常被认为是对语音和图像信号进行变换的最佳方法。
为了工程上实现的需要,国内外许多学者花费了很大精力去寻找或改进DCT的快速算法。
由于近年来DSP的发展,加上专用集成电路设计上的优势,这就牢固地确立DCT在目前图像编码中的重要地位,成为H.261、JPEG、MPEG等国际上公用的编码标准的重要环节。
MATLAB是由美国Math-Works公司推出的用于数值计算和图形处理的科学计算软件,它集数值分析、矩阵计算、信号处理和图形显示多种功能于一体,构成了一个方便的界面友好的用户环境。
MATLAB中的图像处理工具箱是许多基于MATLAB技术计算环境的函数包的集合,图形功能完备。
本文主要讨论了DCT变换方法,并讨论了应用MATLAB中的图像处理工具箱中的相关函数和命令来实现离散余弦变换的图像压缩算法的仿真。
关键词:离散余弦变换(简称DCT);MATLAB;DCT变换方法;图像处理;图像压缩;仿真SummaryDCT (Discrete Cosine Transform, referred to as DCT) is often considered the voice and image signals, the best way to transform. The need to work to achieve many national and international scholars to spend a great effort to find or improve the DCT fast algorithm. In recent years the development of DSP, coupled with the advantages of ASIC design, which firmly established in the current DCT encoded images in an important position, as H.261, JPEG, MPEG and other international standards on the public an important part of the encoding . MATLAB is a U.S. Math-Works Inc. introduced for numerical computing and graphics processing in scientific computing software, which combines numerical analysis, matrix computation, signal processing and graphical display multiple functions into one, forming a convenient user friendly interface environment. MATLAB Image Processing Toolbox is the MATLAB technical computing environment, many based on a function of the set of packages, graphics, fully functional.This paper discusses the DCT transform, and discusses the application of MATLAB Image Processing Toolbox in order to achieve the correlation function and discrete cosine transform image compression algorithm is proved.Keywords: discrete cosine transform (the DCT); MATLAB; DCT transform;image processing;Image compression; simulation目录1 绪论 (1)2 图像压缩基本原理及模型 (3)2.1图像压缩基本原理 (3)2.1.1图像压缩的基本思想 (3)2.1.2图像压缩的方法 (3)2.2图像压缩系统流程图 (4)2.3分析图像压缩的主要模块 (5)2.3.1色度空间转换 (5)2.3.2离散余弦变换 (5)2.3.3量化编码 (6)2.3.4“Z”字型扫描 (6)2.3.5哈夫曼(Huffman)编码及解码 (7)2.4图像数据压缩的目 (7)2.5图像压缩的基本模型 (9)3 离散余弦变换的MATLAB仿真 (10)3.1离散余弦变换(DCT) (10)3.2M ATLAB的功能 (11)3.3离散余弦变换的M ATLAB仿真 (12)结论 (14)致谢 (15)参考文献 (16)附录 (17)1 绪论进入21世纪,人类已步入信息社会,新信息技术革命使人类被日益增多的多媒体信息所包围,这也正好迎合了人类对要示提高视觉信息的需求。
实验五基于DCT的数字图像压缩及Matlab实现实验报告一.实验目的1.了解DCT以及基于DCT的图片压缩的方法和步骤;2.学会图片压缩的方法二.实验仪器PC机(安装Windows98、Windows2000或者Windows XP或以上),Matlab软件。
三.实验原理(1)DCT的定义DCT变换利用傅立叶变换的性质,采用图像边界褶翻将图像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。
(2)DCT和图像压缩DCT编码属于正交变换编码方式,用于去除图像数据的空间冗余。
变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。
在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。
我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。
图像经DCT变换以后,DCT系数之间的相关性已经很小,而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。
从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。
为此,发送者首先将输入图像分解为8×8或16×16的块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换,最后将操作完成后所有的块拼接起来构成一幅单一的图像。
对于一般的图像而言,大多数DCT系数值都接近于0,可以去掉这些系数而不会对重建图像的质量产生重大影响。
因此,利用DCT进行图像压缩确实可以节约大量的存储空间。
DCT变换的特点是变换后图像大部分能量集中在左上角,因为左上放映原图像低频部分数据,右下反映原图像高频部分数据。
而图像的能量通常集中在低频部分。
院(系、所)信息与机电学院专业通信与信息系统考试科目数字压缩第三学期研究生姓名张鹏学号 122201115
考试成绩
导师评语:
导师签字
年月日
摘要
图像压缩是关于用最少的数据量来表示尽可能多的原图像的信息的一个过程。
对于图像来说,如果需要进行快速或实时传输以及大量存储,就需要对图像数据进行压缩,如果图像数据压缩后再传输,就可以传输更多的图像信息,也就可以增加通信的能力。
变换编码是把图像中的各个像素从一种空间变换到另一种空间.然后针对变换后的信号进行量化与编码操作的一种图象压缩编码技术。
本文提出了基于DCT变换的图像压缩编码算法进行研究,并用MATLAB进行实验仿真,重点介绍了压缩编码的具体过程和方法 ,详细介绍了编码中DCT变换、量化、熵编码等模块的原理和数学推导以及各模块的功能分析,基于DCT 变换的图像压缩方法简单、方便,既能保证有较高的压缩比,又能保证有较好的图像质量,应用MATLAB仿真出来的结果较好的反应了其编码算法原理。
关键词:图像压缩 DCT变换 MATLAB
Abstract
ˎ̥
Image compression is a process about the least amount of data to show the original image information as much as possible. For images, if the requirement of high-speed and real-time transmission and a large amount of storage, we need to compress the image data, if the image data compression and transmission, can transmit more information of the image, also can increase the ability of communication. Transform coding is that each pixel in the image from a space to another space. Coding an image and then quantization and coding operation according to the transformed signal.
This paper puts forward DCT transform for image compression coding algorithm based on study, and experimental simulation using MATLAB, focuses on process and compression coding method, a detailed analysis of principle and mathematical derivation of the DCT transform coding, quantization, entropy coding module and the function of each module, DCT transform for image the compression method is simple, convenient and based on, which can ensure a higher compression ratio, but also ensure a better image quality, the application of MATLAB simulation results reflect the coding algorithm.
Key word:Image compression DCT transform MATLAB
基于DCT变换的图像压缩及matlab仿真
一.图像压缩编码的概念
压缩的理论基础是信息论,从信息论的角度来看,压缩就是去掉信息中的冗
余,即保留不确定的信息,去掉确定的信息(可推知的),也就是用一种更接近信息本质的描述来代替原有冗余的描述。
这个本质的东西就是信息量(即不确定因素)。
二.图像编码的分类
图像编码压缩的方法目前有很多,其分类方法根据出发点不同而有差异。
根据解压重建后的图像和原始图像之间是否具有误差(对原图像的保真程度),图像编码压缩分为无误差(亦称无失真、无损、信息保持)编码和有误差(有失真或有损)编码两大类。
无损压缩(冗余度压缩、可逆压缩):是一种在解码时可以精确地恢复原图像,没有任何损失的编码方法,但是压缩比不大,通常只能获得1~5倍的压缩比。
用于要求重建后图像严格地和原始图像保持相同的场合,例如复制、保存十分珍贵的历史、文物图像等。
有损压缩(不可逆压缩):只能对原始图像进行近似的重建,而不能精确复原,适合大数工用于存储数字化了的模拟数据。
压缩比大,但有信息损失,本文采用有损压缩。
三.编码压缩系统介绍
(1)编码压缩系统
基于DCT编码的压缩过程简化图
(2)DCT变换
离散余弦变换(DCT)是一种与离散傅立叶变换紧密相关的正交变换,8×8的二维离散余弦变换可以将图像的空间表达式转换到频率域,只用少量的数据点来表达图像,用f(x,y)表示8×8的图像块象素值,F(u,v)表示二维离散余弦变换后的值,具体表达式如下:
(1.1)
()
()()
()()()⎥
⎦
⎤
⎢
⎣
⎡+
+
=∑∑
==
7
7
16
1
2
cos
16
1
2
cos
,
4
1
,
x y
v
u
v
y
u
x
y
x
f
C
C
v
u
F
π
π
其反变换如下式:
(1.2) 其中,
(1.3)
通过对8*8的图像块进行二维DCT变换,可以把每个图像块转化成64个DCT 系数值,其中一个数值是直流(DC)系数,即8*8图像空域块的平均值,体现了图像中的低频分量;其余63个是交流(AC)系数,体现了图像的高频细节部分。
(3)量化
在DCT处理中得到的64个数据中,低频分量包含了图像亮度等主要信息。
在从空间域到频域的变换中,图像中的缓慢变化比快速变化更易引起人眼的注意,所以在重建图像时,低频分量的重要性高于高频分量。
因而在编码时可以忽略高频分量,即减小非“0”系数的幅度以及增加“0”值系数的数目,从而达到压缩的目的,这也是量化的根据和目的,也是图像质量下降的最主要原因。
在JPEG标准中,用具有64个独立元素的量化表来规定DCT域中相应的64个系数的量化精度,使得对某个系数的具体量化阶取决于人眼对该频率分量的视觉敏感程度。
量化就是用DCT变换后的系数除以量化表中相对应的量化阶后四舍五入取整。
由于量化表中左上角的值较小,而右下角的值较大,因而起到了保持低频分量、抑制高频分量的作用。
(4)编码
1、“Z”字型扫描
量化后的数据本来已经可以直接进行游程编码,但为了提高游程编码的效率,我们必须尽量增加零游程的长度。
基于量化后系数的排列特征,采用“Z”字型扫描能有效增加零游程的长度。
“Z”字型扫描轨迹如图所示:
()
()()
()()(
)
⎥
⎦
⎤
⎢
⎣
⎡+
+
=∑∑
==
7
7
16
1
2
cos
16
1
2
cos
,
4
1
,
x y
v
u
v
y
u
x
y
x
F
C
C
y
x
F
π
π
()()
()
()
⎪⎩
⎪
⎨
⎧
=
=
=
其他情况
当
1
u
2
2
v
C
C
v
u
2、哈夫曼(Huffman)编码及解码
哈夫曼编码是1952年由Huffman提出的编码方法,基本思想是根据源数据符合出现的概率大小进行编码,出现概率大的符号分配越短的码字,出现概率越小的符号分配越长的码字,从而达到用尽量少的比特数表示数据源,标准哈夫曼编码步骤如下:
(1)统计数据源符号出现的概率,得到不同概率的信息符号;
(2)将数据源符号按概率递减顺序排列;
(3)把两个最小概率相加作为新符号的概率,并按(2)重排;
(4)重复(1)、(2),直到概率为1;
(5)在每次合并信源时,将合并的信源分别赋“0”和“1”;
(6)寻找从每一信源符号到概率为1处的路径,记录路径上的“0”和“1”;
(7)从树根开始写出每一符号的“0”、“1”。
用标准哈夫曼编码对图像进行编码时效率很高,但需要对原始图像扫描两遍,第一遍要精确统计出每个像素值出现的概率,第二遍是建立哈夫曼树并编码,数据压缩和解压速度较慢,因此,出现了一种改良的哈夫曼编码,它的变长码字不是实时产生而是一个固定的表,在编码和解码过程中不用计算符号概率和排序,直接查表得到,但这个表必须经过大量的统计工作并精心设计才能达到较高的编码效率。
在静态图像压缩国际标准(JPEG标准)中,专家组已经对大量自然图像进行了统计,得到了适合于静态自然图像编码的哈夫曼表,在实际编码过程中,我们可直接应用此表进行编码和解码。
四.MATLAB仿真代码
五.结论。