基于哈夫曼编码的图像编解码系统设计及实现
图像编码中的哈夫曼编码技术解析

图像编码是将图像信号转化为数字信号的过程,它是数字图像处理中一个重要的环节。
在图像编码中,哈夫曼编码技术被广泛应用于无损压缩。
本文将对哈夫曼编码技术进行详细解析,并探讨其在图像编码中的应用。
1. 哈夫曼编码的基本原理哈夫曼编码是一种变长编码方式,它根据字符出现的频率分配不同长度的编码。
出现频率高的字符使用较短的编码,而出现频率低的字符使用较长的编码,以达到压缩数据的目的。
2. 字符频率统计在使用哈夫曼编码前,首先需要对输入的字符进行频率统计。
对于图像编码来说,可以统计每个像素值的出现频率。
通过频率统计,我们可以得到一个字符频率表,表中记录了每个字符出现的频率。
3. 构建哈夫曼树接下来,根据字符频率表构建哈夫曼树。
哈夫曼树是一种特殊的二叉树结构,它的叶子节点对应着字符,而路径上的节点则对应着字符的编码。
构建哈夫曼树的过程是通过不断合并频率最小的两个节点,直至所有节点都合并完成。
4. 生成哈夫曼编码构建完哈夫曼树后,我们可以根据树的结构来生成每个字符对应的哈夫曼编码。
生成哈夫曼编码的方法是往左走为0,往右走为1。
从根节点到每个叶子节点的路径上的0和1组成的序列就是该叶子节点对应的哈夫曼编码。
5. 编码与解码过程在编码过程中,将原始的字符替换为其对应的哈夫曼编码。
编码后的数据可以在传输和存储时占用更小的空间。
解码的过程是根据哈夫曼编码和哈夫曼树来找到原始的字符。
6. 哈夫曼编码在图像压缩中的应用由于图像数据的冗余性较高,在图像编码中使用哈夫曼编码可以达到较好的压缩效果。
通过统计图像中每个像素值的频率,并构建哈夫曼树,可以生成每个像素值对应的哈夫曼编码。
将编码后的数据进行传输和存储,可以大大减小所需的空间。
7. 哈夫曼编码的优势与局限性哈夫曼编码的主要优势是能够根据字符的出现频率来进行编码,使得出现频率高的字符使用较短的编码,从而实现对数据的有效压缩。
然而,哈夫曼编码并不是所有情况下都能获得最优压缩效果,因为它只考虑了字符的出现频率,而没有考虑字符之间的相关性。
哈夫曼编码的实现及应用毕业设计

哈夫曼编码的实现及应用毕业设计目录摘要 (I)Abstract (II)第一章绪论 (1)1.1 研究目的及意义 (1)1.2 图像压缩编码技术概述 (2)1.2.1 图像压缩编码技术分类 (2)1.2.2 图像压缩编码评价 (2)1.3 哈夫曼编码简介 (3)1.4 本设计所做的主要工作 (4)第二章利用静态哈夫曼编码实现图像压缩 (5)2.1 静态哈夫曼编码介绍 (5)2.2 静态哈夫曼编码树的构造 (6)2.3 静态哈夫曼编码的具体编码过程 (6)2.4 静态哈夫曼编码的算法实例 (7)2.3 利用静态哈夫曼编码压缩与还原图像的C语言实现 (9)2.3.1 压缩的实现 (9)2.3.2 解压缩的实现 (11)2.4 图象压缩实例 (12)第三章利用动态哈夫曼编码实现图像压缩 (15)3.1 动态哈夫曼编码的提出 (15)3.2 动态哈夫曼编码的原理 (15)3.3 动态哈夫曼编码的算法思想 (16)3.4 动态哈夫曼编码的编码实例 (18)3.5 利用动态哈夫曼编码压缩与还原图像的C语言实现 (25)3.5.1 数据结构 (25)3.5.2 压缩的实现 (26)3.5.3 解压缩的实现 (27)3.6 图像压缩实例 (28)3.7 静态哈夫曼编码与动态哈夫曼编码的比较 (29)第四章对哈夫曼编码的改进 (31)4.1 在哈夫曼编码中引入堆排序 (31)4.2 模拟哈夫曼树的创建 (32)第五章总结 (34)5.1 总结 (34)参考文献 (35)附录 (36)第一章绪论1.1 研究目的及意义从信息论角度看,信源编码的一个最主要的目的,就是要解决数据的压缩问题。
数据压缩是指以最少的代码表示信源所发出的信号,减少容纳给定信息集合或数据采样集合的信号空间。
图像编码与压缩的目的就是对图像数据按一定的规则进行变换和组合,从而达到以尽可能少的代码表示尽可能多的图像信息。
图像数字化之后,其数据量非常庞大,例如,一副640×480 的彩色图像(24bit/ 像素),其数据量约为921.6KB。
数字图像实验 哈夫曼编码的方法和实现1234

实验八哈夫曼编码的方法和实现一、实验目的1.掌握哈夫曼编码的基本理论和算法流程;2. 用VC++6.0编程实现图像的哈夫曼编码。
二、实验内容1.画出哈夫曼编码的算法流程;2.用VC++6.0编程实现哈夫曼编码。
三、实验步骤(1)启动VC++6.0,打开Dip工程。
(2)在菜单栏→insert→resouce→dialog→new,在对话框模版的非控制区点击鼠标右键,在弹出的对话框中选properties,设置为ID:IDD_DLG_Huffman,C标题:哈夫曼编码表。
(3)在弹出的对话框中,添加如下的按钮等控件:(4)在ResourceView栏中→Menu→选IDR_DIPTYPE ,如图在图像编码菜单栏下空的一栏中,右键鼠标,在弹出的对话框中选属性properties,在弹出的对话框中,进行如下的设置(5)右击哈夫曼编码表菜单栏,在建立的类向导中进行如下设置(6)在DipDoc.cpp中找到void CDipDoc::OnCodeHuffman()添加如下代码void CDipDoc::OnCodeHuffman(){int imgSize;imgSize = m_pDibObject->GetWidth()*m_pDibObject->GetHeight();//在点处理CPointPro类中创建用来绘制直方图的数据CPointPro PointOperation(m_pDibObject );int *pHistogram = PointOperation.GetHistogram();//生成一个对话框CHistDlg类的实例CDlgHuffman HuffmanDlg;//将绘制直方图的数据传递给CHistDlg对话框类的公有成员变量m_pnHistogramif( pHistogram != NULL ){//设置直方图数据指针HuffmanDlg.m_fFreq = pHistogram;HuffmanDlg.m_iSizeImage = imgSize;if(m_pDibObject->GetNumBits() >= 8)HuffmanDlg.m_iLeafNum=256;elseHuffmanDlg.m_iLeafNum=m_pDibObject->GetNumBits();}//显示对话框if ( HuffmanDlg.DoModal() != IDOK)return;delete [] pHistogram;}(7)在DipDoc.cpp中添加#include "DlgHuffman.h"(8)将DlgHuffman.h、DlgHuffman.cpp文件拷贝到当前工程目录文件里面;并添加到当前工程。
哈夫曼编码方法的选择及其Python的实现

• 188•随着人们对图像和视频的压缩存储和传输的要求越来越高,如何提高传输速率和如何节省存储空间显得更加重要,解决这两个问题的最根本途径就是采用图像压缩技术。
本科课程《信息论与编码》中指出图像压缩的具体实现技术就是压缩编码,通过编码可以减少信息的冗余度从而提高传输速率和节省存储空间。
在音视频编解码技术快速发展的今天,其实已经有很多的编码方法。
通过实际应用发现,哈夫曼编码在编码效率与平均码长方面都是较好的。
本文主要研究哈夫曼编码及其Python 的实现。
1 哈夫曼编码哈夫曼编码是一种典型的无失真编码,哈夫曼编码所采用的编码原理是最佳编码定理。
最佳编码定理指出,在信息编码的过程中对于信源符号,如果分配短字长的码字给出现概率小的信源符号,分配长字长的码字给出现概率大的信源符号,那么编码结束之后所得到的平均码长一定是小于其他任何一种编码方法所得到的平均码长的,也就是每个信源符号所得到的码字长度是严格按照符号概率大小的相反顺序所排列。
哈夫曼编码具体步骤如下:(1)将n 个信源符号按其概率大小进行降序排序,即:p (x 1) ≥ p (x 2) ≥ p (x 3)≥……≥ p (x n ) (1)(2)取两个概率最小的信源符号分别配以1和0两个码元,然后将这两个信源符号概率相加作为一个新符号的概率,与未分配的二进符号重新进行降序排序。
(3)对重排后的序列重复(2)过程,直到只有两个信源符号为止,再把这两个信源符号分别配以1和0即可。
(4)最后得出各个符号的码字。
2 哈夫曼编码方法的选择及Python的实现哈夫曼编码方法的选择和Python 的实现看似是两个分离的部分,但其实两者是有机结合的,因为要对哈夫曼编码方法做出选择就要通过Python 的实现来分析各种方法的平均码长和编码效率。
由哈夫曼编码的具体步骤可以看出来:哈夫曼的编码结果其实是不唯一的。
这是因为:其一,对两个概率最小的信源符号0和1的分配是任意的;其二,当两个概率最小的信源符号的概率相加时,所得的概率值有可能与原序列中的其他概率值相等。
图像编码中的哈夫曼编码技术解析(一)

图像编码是一种广泛应用于数字图像处理中的技术。
其中,哈夫曼编码作为一种优秀的编码算法,被广泛应用于图像压缩领域。
本文将对哈夫曼编码技术在图像编码中的应用进行详细解析。
一、哈夫曼编码的原理哈夫曼编码是一种变长编码算法,它通过将出现频率较高的字符用较短的编码表示,而将出现频率较低的字符用较长的编码表示,从而实现对数据的高效编码。
在图像编码中,每个像素点都可以看作是一种字符,其灰度值即表示该字符的频率。
二、图像编码的需求在图像编码中,我们往往需要将图像的原始数据进行压缩,以便存储和传输。
而压缩的核心思想就是通过减少冗余信息来减少数据的存储和传输量。
哈夫曼编码正是解决这一需求的有效方法之一。
三、基于哈夫曼编码的图像编码方案在图像编码中,我们可以将哈夫曼编码应用于两个方面:图像压缩和图像解压缩。
1. 图像压缩在图像压缩中,我们首先需要对图像进行离散余弦变换(Discrete Cosine Transform, DCT),将图像从空域变换到频域。
然后,我们将变换后的图像进行量化,将高频部分进行舍弃。
接下来,我们将量化后的图像进行分块,并统计每个像素值出现的频率。
最后,利用哈夫曼编码算法对出现频率进行编码,生成一个哈夫曼编码表。
这个编码表包含了每个像素值对应的变长编码,从而实现了对图像数据的高效压缩。
2. 图像解压缩在图像解压缩中,我们首先需要读取压缩后的图像文件,并解析出哈夫曼编码表。
然后,我们根据哈夫曼编码表对压缩数据进行解码,恢复出原始的像素值。
接下来,我们对解码后的数据进行逆量化和逆离散余弦变换,将图像从频域变换到空域。
最后,我们将逆变换后的图像数据进行重建,得到原始的图像。
四、哈夫曼编码的优势和应用哈夫曼编码作为一种变长编码算法,与传统的定长编码相比,具有如下优势:1. 数据压缩率高:哈夫曼编码可以根据字符的频率灵活选择编码长度,从而大大减少了数据的存储和传输量,实现了高效的数据压缩。
2. 无损压缩:哈夫曼编码是一种无损压缩算法,可以保证压缩后的数据与原始数据完全一致。
图像编码中的哈夫曼编码技术解析(七)

图像编码中的哈夫曼编码技术解析图像编码是指将图像数据进行压缩和储存的过程,其中哈夫曼编码是一种常用的无损编码技术。
本文将详细解析哈夫曼编码在图像编码中的原理和应用。
一、哈夫曼编码的原理哈夫曼编码是由美国统计学家大卫·哈夫曼于1952年提出的,它是一种根据数据频率进行编码的方法。
其基本思想是,为出现频率较高的数据分配较短的编码,而为出现频率较低的数据分配较长的编码,从而实现数据的高效压缩。
在图像编码中,每个像素点的灰度值可以看作是一种数据,而图像的压缩就是通过对灰度值进行编码来实现的。
具体而言,通过统计图像中不同灰度值的频率,将频率较高的灰度值对应的编码设置为较短的码字,频率较低的灰度值对应的编码设置为较长的码字。
这样,在存储和传输图像时,就可以用较短的码字代表频率较高的灰度值,用较长的码字代表频率较低的灰度值,从而实现图像数据的高效压缩。
二、哈夫曼编码在图像编码中的应用1. 图像压缩由于哈夫曼编码可以根据数据的频率进行编码,因此在图像编码中广泛应用于压缩算法中。
图像数据中有许多颜色的像素点是大量重复的,这些重复的像素点具有较高的频率。
通过对这些像素点进行哈夫曼编码,可以用较短的码字表示,去除冗余的数据,从而达到高效压缩的效果。
这种编码方式不仅可以减小图像文件的存储空间,还可以提高图像在网络传输中的传输速度。
2. 图像解码在图像编码中,哈夫曼编码不仅应用于压缩算法,还应用于解码算法。
对于压缩后的图像数据,需要进行解码才能还原成原始的图像。
在解码过程中,需要利用哈夫曼编码表来对压缩后的码字进行解码。
哈夫曼编码表是由编码过程中所统计的频率信息所生成的,通过哈夫曼编码表中的信息,可以将压缩后的码字重新映射到原始的灰度值,从而实现图像数据的完整解码。
三、哈夫曼编码的优缺点1. 优点哈夫曼编码是一种无损压缩算法,压缩后的图像数据可以完美地还原成原始的图像。
同时,由于哈夫曼编码是根据数据频率进行编码,频率较高的数据使用较短的码字来表示,从而实现了高效的压缩。
基于哈夫曼编码的图像编解码系统设计与实现

课程设计任务书学生:王鸣专业班级:信息sy1001班指导教师:洪涛工作单位:信息工程学院题目:基于哈夫曼编码的图像编解码系统设计及实现初始条件:计算机Windows8操作系统MATLAB7.8.0软件要求完成的主要任务:设计哈夫曼编码的图像编解码系统、利用软件编写程序、仿真实现时间安排:第1-18周:理论讲解第19周:理论设计,实验室安装调试以及撰写设计报告答辩:时间:7月2日地点: 鉴主15楼通信实验室四指导教师签名:年月日系主任(或责任教师)签名:年月日目录目录 (I)摘要 (II)ABSTRACT (III)1引言 (1)1.1图像数据压缩的目的 (1)1.2图像数据压缩的原理 (1)1.3常用的压缩编码方法 (3)2哈夫曼编码 (3)2.1 哈夫曼编码简介 (3)2.2哈夫曼编码步骤 (3)2.3 哈夫曼编码的缺点 (5)3基于哈夫曼编码的图像编解码系统的程序设计 (6)3.1 分块程序设计分析 (6)3.2主程序 (8)3.3程序函数 (8)3.3.1编码函数 (8)3.3.2解码函数 (12)3.3.3符号概率计算函数 (13)3.3.4节点添加函数 (14)3.3.5解码返回符号函数 (14)4系统仿真结果 (15)4.1程序运行结果 (15)4.2 程序运行结果分析 (16)5.总结 (18)参考文献 (19)摘要本论文首先介绍了图像压缩相关知识。
随后,分析概述了哈夫曼压缩编码的原理及方法,并采用 MATLAB 软件对两幅图片进行压缩编码程序设计,获得压缩信息及哈夫曼编码表,分析压缩后的图像像素数据及压缩比。
关键词:图像压缩;MATLAB;哈夫曼编码;无损压缩编码ABSTRACTThis paper firstly introduces the theoretical knowledge of image compression. Then, it analyses the principle and method of Huffman coding and using Huffman coding principle and methods, compression coding design is made for two images on the MATLAB software. Also gain the compression information and Huffman coding table. What’s more, compressed image pixel data and compression ratio are analyzed.Key words: Image compression; MATLAB; Huffman encoding;Lossless compression coding1引言1.1图像数据压缩的目的数字图像通常要求很大的比特数,这给图像的传输和存储带来相当大的困难。
Huffman编码(哈夫曼编码)的Matlab实现

clea r allf printf (' Re a ding data、、、')d ata= imreadC camera man、tif');da t a=uin t 8 (da t a) ;%读入数据,井将数据限制为u i n t 8fprintfC Done!\n')%编码压缩fprintf pre s sing da t a、、、):[z i pp e d, info] = n orm 2 huff (data):fprintfC D one!\n )%解压缩fp rin t f (* pressing data、、、');u nzi p ped=h u ff 2 n o r m(zi p ped, in f 0 );f p r intf (' Done!\n* )%测试就能否无失貞.isOK=i s e qua 1 (data(:)»unz i pp ed(:))%显示压缩效果whos da t a z ippe d u n z i ppedfun c ti 0 n [zi pp ed, info] =norm2 h u f f ( v e c t or)if ~isa( Y ect o r,' uint 8 *)»er r or C i npu tar gume n t must be a uint 8 vector*)endvecto r =ve c t o r (:)':%将输入向量转换为行向量f=freq u en c y (vec t or);%讣算个元素出现猖概率sirabo I s=fi n d (f"=0);f=f(simbols);%W元素按出现得概率排列[f, s 0 rti n d ex] = s ot (f ):simbols = simbols( s ortindex):%产生码字ge n e r ate the c odeword as the 5 2 bi t s of a do u bl elen= 1 e ng t h( s imb o Is);s i mb 0 ls_in d ex=num2cell (1: len);c odew 0rd_tmp= c elKle n , 1 ):wh i le le n g t h ( f )〉1,ind exl= s imb o ls_index⑴;index 2 =simb o 1 s _in d ex{ 2 };codeword_tm p (i n dexl)=a d dnod e( c odeword_tmp (ind e xl) .u i n t8(0)); c 0 d e w 0 rd_ t mp( ind ex2) = a ddno d e (co d e word_tm p (index 2 ), u i ntS (1 )):f=[sum (f(1:2)) fC3:end)];simbols_in d e x=[{[ i n d e x 1 i n d e x2]} simb o ls_ i ndex (3:e n d )];%将数据重新排列,就是两个右点得频率尽量与前一个iT点得频率想肖r esort da t a in orde r to h av e two no d es w i th ! ov e r fr e que n cy asfirst to[ft so r ti n dex]=sort(f):sim b ols_index=s i mbols_index(so r tindex):end$对应相应得元素与码字codew ord =cell( 2 56 :1);c odew 0 rd (sim b ols)=codew o rd_tmp :%讣算总得字符串长度len=0:for index=l : length (vector) >le n =1 e n+ 1 ength (codew ord {doubl e (vector (index) )+1)): end%产生01序列st r ing=repraa t (u i n t8(0)» I en);poin t er= I :for inde x =1:1 e ngth(vect or),co d e=cod eword{dou b 1 e(v e ct o r (inde x ))+1};le n =length(co de);strin s (pointer+(0 :len-l)) =code;poin t e r=poin t er+len :en d%如果需要,加零len= 1 ength ( s tring);p ad=8-mod (1 e n, 8);辻 pad> 0 ,s t ring=[ s tring u in t 8(zeros (1 , pad))];end财呆存实际有用得码字cod e wo r d=co d ew o rd (simbo 1 s);c ode I en=z e r o s (s i ze (codeword ));weigh t s=2、* (0:23);max c ode I e n= 0 ;fo r ind ex 1; length ( cod ew ord), len=lengt h (cod e word{i n de x });ifen dend co d eword= [code wor d {:}] 1 e n>m a s c od e 1 e n,max cod e le n =len :n d1 e n>0rc 0 de=sum(w e ig li t s ( codeword {index} ==1)):cod e =bitset(cod e , le n +1);cod eword {i nd ex} =code :co d ele n (ind e x) =len;e if%汁算压缩后得向量co ls= I eng t h( s tri n g) / 8 ;s t r i ng= r eshape (strin g , 8, co 1 s);weights=2、* ( 0 : 7 );zip p e d = U intS (weights*d o u b 1 e (st ring)):%存储一个稀疏矩阵h uf f c 0 des=sp arse (1, 1);% init s p arse ma t r ixfor in d e x=l: nu me 1 ( c odeword),huffcod e s( c o dewo r d (ind e x), 1 ) =s i m b ols (index):end瓯产生信息结构体i nfox pad = pad ;info、rati o =cols、/leng t h(v e c tor):i n fox 1 en g th=l e ngth(vec t or);info, max c od e len=maxc o de 1 en;fun c t i 0 n codewor d _new=a d dno d e (co d eword_old, item)codew ord _ne w=cell ( s iz e (cod e word_ol d )):for index=l;lens t hCcodewor d _old),c 0de w 0 rd_new{in dex}=Eitemcod ewo r d _old{i n de x }];endfu n c t ion v e c t or=huf f 2norm (zipped, info)%HVFF2X0R>I Huffman 解码器%IIVFF2N0RM(X, INFO)根据倚息体结构info返回向星zipped得解码结果%%矩阵参数以X(:)形成输入i f 2 i S a ( Z i P ped,' uintS*).error (' i n pu t a r gumen t mus t be a uintS vector')end%产生01序列1 e n=l e ngth(zi p p ed);str i ng=repma t (uint 8 (0) ,1, len^ * 8 );b it i n dex= 1 :8;for i n d e s+1:I en,s t r in s (b i tindes+g、* (ind e x -1)) =uint8( b itget ( z ipped(index), bitind ex));end%调整字符串st r ing= I 0 gica 1 (st r ing (:)');% remove 0 padd i n g1 e n =lengt h ( s t ring);%解码weig h t s =2、* (0:51):V ecto r =re p mat (uintS ( 0 ) , 1 , in f o, length);vec t orind e x=l;c 0 deinde x =1:c 0 de=O;for i n d ex=l: le n ,code=bit s et(coder cod e i n des, s t r i ng (ind ex));] codein d e x=c o de i n d ex+ 1 ;byte=dec o de ( b i t set ( c o de, codei n dex), i n f o):if by t e>0- % V e ctor ( V ector i n d ex) =byte-l;cod ei n d e x= 1 :code = 0;vecto r i n d e X = V ect o rindex+ 1 ;endendfu n Ct i 0 n b yt e =d e code (code, i nfo)b y te=in f o、huf f cod e s (code);func t ion f=frequ e ncy (v e ct o r )幣FREQUENCY计算元素出现概率I f^isa(v e ctor,' u i nt8'),e rror ('input a r gum ent mu st b e a uin t 8 vector') endf =repm a t (Or 1* 2 5 6);%扫描向量len= length (vec t or);for ind e s= 0 :256, %f (ind ex+1) =sum(ve c tor==uint8(i n de x ));end%归一化f=f、/ 1 e n :。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书题目:基于哈夫曼编码的图像编解码系统设计及实现初始条件:计算机Windows8操作系统MATLAB7.8.0软件要求完成的主要任务:设计哈夫曼编码的图像编解码系统、利用软件编写程序、仿真实现时间安排:第1-18周:理论讲解第19周:理论设计,实验室安装调试以及撰写设计报告答辩:时间:7月2日地点: 鉴主15楼通信实验室四指导教师签名:年月日系主任(或责任教师)签名:年月日目录目录........................................................................................................................ I矚慫润厲钐瘗睞枥庑赖。
摘要....................................................................................................................... I I聞創沟燴鐺險爱氇谴净。
ABSTRACT ......................................................................................................... I II残骛楼諍锩瀨濟溆塹籟。
1引言..................................................................................................................... 1酽锕极額閉镇桧猪訣锥。
1.1图像数据压缩的目的.............................................................................. 1彈贸摄尔霁毙攬砖卤庑。
1.2图像数据压缩的原理.............................................................................. 1謀荞抟箧飆鐸怼类蒋薔。
1.3常用的压缩编码方法.............................................................................. 3厦礴恳蹒骈時盡继價骚。
2哈夫曼编码......................................................................................................... 3茕桢广鳓鯡选块网羈泪。
2.1 哈夫曼编码简介..................................................................................... 3鹅娅尽損鹌惨歷茏鴛賴。
2.2哈夫曼编码步骤...................................................................................... 3籟丛妈羥为贍偾蛏练淨。
2.3 哈夫曼编码的缺点................................................................................. 5預頌圣鉉儐歲龈讶骅籴。
3基于哈夫曼编码的图像编解码系统的程序设计............................................. 6渗釤呛俨匀谔鱉调硯錦。
3.1 分块程序设计分析................................................................................. 6铙誅卧泻噦圣骋贶頂廡。
3.2主程序...................................................................................................... 8擁締凤袜备訊顎轮烂蔷。
3.3程序函数.................................................................................................. 9贓熱俣阃歲匱阊邺镓騷。
3.3.1编码函数....................................................................................... 9坛摶乡囂忏蒌鍥铃氈淚。
3.3.2解码函数..................................................................................... 12蜡變黲癟報伥铉锚鈰赘。
3.3.3符号概率计算函数..................................................................... 14買鲷鴯譖昙膚遙闫撷凄。
3.3.4节点添加函数............................................................................. 14綾镝鯛駕櫬鹕踪韦辚糴。
3.3.5解码返回符号函数..................................................................... 15驅踬髏彦浃绥譎饴憂锦。
4系统仿真结果................................................................................................... 15猫虿驢绘燈鮒诛髅貺庑。
4.1程序运行结果........................................................................................ 15锹籁饗迳琐筆襖鸥娅薔。
4.2 程序运行结果分析............................................................................... 17構氽頑黉碩饨荠龈话骛。
5.总结................................................................................................................... 18輒峄陽檉簖疖網儂號泶。
参考文献.............................................................................................................. 19尧侧閆繭絳闕绚勵蜆贅。
摘要本论文首先介绍了图像压缩相关知识。
随后,分析概述了哈夫曼压缩编码的原理及方法,并采用MATLAB 软件对两幅图片进行压缩编码程序设计,获得压缩信息及哈夫曼编码表,分析压缩后的图像像素数据及压缩比。
识饒鎂錕缢灩筧嚌俨淒。
关键词:图像压缩;MATLAB;哈夫曼编码;无损压缩编码ABSTRACTThis paper firstly introduces the theoretical knowledge of image compression. Then, it analyses the principle and method of Huffman coding and using Huffman coding principle and methods, compression coding design is made for two images on the MATLAB software. Also gain the compression information and Huffman coding table. What’s more, compressed image pixel data and compression ratio are analyzed. 凍鈹鋨劳臘锴痫婦胫籴。
Key words:Image compression; MATLAB; Huffman encoding;Lossless compression coding 恥諤銪灭萦欢煬鞏鹜錦。
1引言1.1图像数据压缩的目的数字图像通常要求很大的比特数,这给图像的传输和存储带来相当大的困难。
要占用很多的资源,花很高的费用。
一般原始图像中存在很大的冗余度。
鯊腎鑰诎褳鉀沩懼統庫。
例如1;一幅512x512的灰度图象的比特数为512x512x8=256k 。
例如2;一部90分钟的彩色电影,每秒放映24帧。
把它数字化,每帧512x512象素,每象素的R、G、B三分量分别占8 bit,总比特数为90x60x24x3x512x512x8bit=97,200M。
硕癘鄴颃诌攆檸攜驤蔹。
例如3:一张CD光盘可存600兆字节数据,这部电影光图像(还有声音)就需要160张CD光盘用来存储。
所以,对图像数据进行压缩显得非常必要。
而通常用户通常允许图像失真;当信道的分辨率不及原始图像的分辨率时,降低输入的原始图像的分辨率对输出图像分辨率影响不大;用户对原始图像的信号不全都感兴趣,可用特征提取和图像识别的方法,丢掉大量无用的信息;提取有用的信息,使必须传输和存储的图像数据大大减少。
在以上的条件下,其为数据压缩提供了可能性。
阌擻輳嬪諫迁择楨秘騖。
图像数据压缩的目的是在满足一定图像质量条件下,用尽可能少的比特数来表示原始图像,以提高图像传输的效率和减少图像存储的容量。
在信息论中称为信源编码。
氬嚕躑竄贸恳彈瀘颔澩。
1.2图像数据压缩的原理对数字图像进行压缩通常利用两个基本原理:一是数字图像的相关性。
在图像的同一行相邻象素之间,相邻象素之间,活动图像的相邻帧的对应象素之间往往存在很强的相关性,去除或减少这些相关性,也即去除或减少图像信息中的冗余度也就实现了对数字图像的压缩。
帧内象素的相关称做空域相关性。
相邻帧间对应象素之间的相关性称做时域相关性。
二是人的视觉心理特征。