精华内容
下载资源
问答
  • 数字图像压缩原理及常用压缩编码方法 概述了几种方法
  • 数据压缩编码方法

    万次阅读 2016-12-18 12:57:55
    变换编码一般只解除矢量内部的相关性,但它可有许多可供选择的变换方法,以适应不同的信源特性。 一、预测编码: 若有一个离散信号序列,序列中各离散信号之间有一定的关联性,则利用这个序列中若干个信号作为依据

    经典的数据压缩算法

    三大类:预测编码、变换编码、统计编码

    常用的解除相关性的措施是预测和变换,其实质都是进行序列的映射。

    一般,预测编码有可能完全解除序列的相关性,但须确知序列的概率特性;变换编码一般只解除矢量内部的相关性,但它可有许多可供选择的变换方法,以适应不同的信源特性。

    一、预测编码:

    若有一个离散信号序列,序列中各离散信号之间有一定的关联性,则利用这个序列中若干个信号作为依据,对下一个信号进行预测,然后将实际的值与预测的值的差进行编码。

    预测编码中典型的压缩算法有DPCM、ADPCM等,它们适合于声音、图像数据的压缩。

    (1)DPCM中文术语为差分脉冲编码调制(differentialpulse code modulation的缩写)

    利用样本与样本之间存在的信息冗余来进行编码的一种数据压缩技术

    基本思想:根据过去的样本去估算下一个样本信号的幅度大小,这个值称为预测值,然后对实际信号值与预测值之差进行量化编码,从而就减少了表示每个样本信号的位数

    它与脉冲编码调制(PCM)不同的是,PCM是直接对采样信号进行量化编码,而DPCM是对实际信号值与预测值之差进行量化编码,存储或者传送的是差值而不是幅度绝对值,这就降低了传送或存储的数据量。可适应大范围变化的输入信号。

    差分脉冲编码调制(DPCM)的基本出发点就是对相邻样值的差值进行量化编码。由于此差值比较小,可以为其分配较少的比特数,进而起到了压缩数码率的目的。

    (2)ADPCM的概念

    ADPCM的中文术语为自适应差分脉冲编码调制(adaptive difference pulse code modulation的缩写)

    综合了APCM的自适应特性和DPCM系统的差分特性,是一种性能比较好的波形编码技术

    它的核心想法是:

    利用自适应的思想改变量化阶的大小,即使用小的量化阶(step-size)去编码小的差值,使用大的量化阶去编码大的差值。

    使用过去的样本值估算下一个输入样本的预测值,使实际样本值和预测值之间的差值总是最小。

    二、变换编码

    变换编码是指在发送端,先对信号进行映射变换,然后再针对变换后的信号进行量化和编码;在接受端,则先将收到的信号进行解码等操作,然后再进行反映射变换,以再现原始信号。变换编码是在变换域上解除相关性,以提高信息传输效率的。

    变换编码中系统压缩数据有三个步骤,即映射变换、映射变换域采样和量化编码。

    对于图像信源等相关性更强的信源,常采用基于正交变换的变换编码方法进行数据压缩。

    变换编码中的关键技术在于正交变换。与预测编码一样,正交变换是通过消除信源序列中的相关性来达到数据压缩的。它们之间的区别在于预测编码是在空间域(或时间域)内进行的,而变换编码则是在变换域(或频率域)内进行的。

    变换编码用到的算法:如离散傅里叶变换(DFT)、离散余弦变换(DCT)、沃尔什变换(WHT)等,其中性能较接近KL变换的是离散余弦变换(DCT),某些情况下,DCT能获得与KL变换相同的性能,因此DCT也被称为准最佳变换。

    三、子带编码

    子带编码是一种在频率域中进行数据压缩的算法。其指导思想是首先在发送端将图像信号在频率域分成若干子带,然后分别对这些子带信号进行频带搬移,将其转换成基带信号,再根据奈奎斯特定理对各基带信号进行取样、量化和编码,最后合并成为一个数据流进行传送。

    子带编码有几个突出的优点:

     对不同的子带分配不同的比特数可以很好控制各个子带的量化电平数及重建信号时的量化误差方差值,进而获得更好的主观听音质量。

     由于各个子带相互隔开,使各个子带的量化噪声也相互独立,互不影响,量化噪声被束缚在各自的子带内。这样,某些输入电平比较低的子带信号不会被其它子带的量化噪声所淹没。

     子带划分的结果,使各个子带的采样频率大大的降低。

    四、小波变换编码

    小波变换恰巧弥补了DCT变换未能满足宽带图像的高数据压缩要求的缺憾。小波变换是一种能够在频率上自由伸缩的变换,因此它是一种不受带宽约束的图像压缩方法。

    小波变换的一个重要性质是它在时域和频域均具有很好的局部化特征,它能够提供目标信号各个频率子段的频率信息。这种信息对于信号分类是非常有用的。

     小波变换一个信号为一个小波级数,这样一个信号可由小波系数来刻画。

    五、统计编码

    给已知统计信息的符号分配代码的数据无损压缩方法。

    编码方法:香农-范诺编码、霍夫曼编码、算术编码。

    哈夫曼编码方法:

    (1)将信源消息符号按其出现的概率大小依次排列,

    (2)取两个概率最小的字母分别配以0和1两个码元,并将这两个概率相加作为一个新字母的概率,与未分配的二进符号的字母重新排队。

    (3)对重排后的两个概率最小符号重复步骤(2)的过程。

    (4)不断继续上述过程,直到最后两个符号配以0和1为止。

    (5)从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。

    费诺编码方法:

    费诺编码方法

    (1)将信源消息符号按其出现的概率大小依次排列。                                       。

    (2)将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近于相同,并对各组赋予一个二进制码元“0”和“1”。

    (3)将每一大组的信源符号进一步再分成两组,使划分后的两个组的概率之和近于相同,并又赋予两个组一个二进制符号“0”和“1”。

    (4)如此重复,直至每个组只剩下一个信源符号为止。

    (5)信源符号所对应的码字即为费诺码。

     

    展开全文
  • 视频压缩编码和音频压缩编码的基本原理

    万次阅读 多人点赞 2014-06-03 00:01:20
    本文介绍一下视频压缩编码和音频压缩编码的基本原理。其实有关视频和音频编码的原理的资料非常的多,但是自己一直也没有去归纳和总结一下,在这里简单总结一下,以作备忘。

    本文介绍一下视频压缩编码和音频压缩编码的基本原理。其实有关视频和音频编码的原理的资料非常的多,但是自己一直也没有去归纳和总结一下,在这里简单总结一下,以作备忘。

    1.视频编码基本原理

    (1)  视频信号的冗余信息

    以记录数字视频的YUV分量格式为例,YUV分别代表亮度与两个色差信号。例如对于现有的PAL制电视系统,其亮度信号采样频率为13.5MHz;色度信号的频带通常为亮度信号的一半或更少,为6.75MHz或3.375MHz。以4:2:2的采样频率为例,Y信号采用13.5MHz,色度信号U和V采用6.75MHz采样,采样信号以8bit量化,则可以计算出数字视频的码率为:

    13.5*8 + 6.75*8 + 6.75*8= 216Mbit/s

    如此大的数据量如果直接进行存储或传输将会遇到很大困难,因此必须采用压缩技术以减少码率。数字化后的视频信号能进行压缩主要依据两个基本条件:

    l  数据冗余。例如如空间冗余、时间冗余、结构冗余、信息熵冗余等,即图像的各像素之间存在着很强的相关性。消除这些冗余并不会导致信息损失,属于无损压缩。

    l  视觉冗余。人眼的一些特性比如亮度辨别阈值,视觉阈值,对亮度和色度的敏感度不同,使得在编码的时候引入适量的误差,也不会被察觉出来。可以利用人眼的视觉特性,以一定的客观失真换取数据压缩。这种压缩属于有损压缩。

    数字视频信号的压缩正是基于上述两种条件,使得视频数据量得以极大的压缩,有利于传输和存储。一般的数字视频压缩编码方法都是混合编码,即将变换编码,运动估计和运动补偿,以及熵编码三种方式相结合来进行压缩编码。通常使用变换编码来消去除图像的帧内冗余,用运动估计和运动补偿来去除图像的帧间冗余,用熵编码来进一步提高压缩的效率。下文简单介绍这三种压缩编码方法。

    (2)  压缩编码的方法

    (a)  变换编码

    变换编码的作用是将空间域描述的图像信号变换到频率域,然后对变换后的系数进行编码处理。一般来说,图像在空间上具有较强的相关性,变换到频率域可以实现去相关和能量集中。常用的正交变换有离散傅里叶变换,离散余弦变换等等。数字视频压缩过程中应用广泛的是离散余弦变换。

    离散余弦变换简称为DCT变换。它可以将L*L的图像块从空间域变换为频率域。所以,在基于DCT的图像压缩编码过程中,首先需要将图像分成互不重叠的图像块。假设一帧图像的大小为1280*720,首先将其以网格状的形式分成160*90个尺寸为8*8的彼此没有重叠的图像块,接下来才能对每个图像块进行DCT变换。

    经过分块以后,每个8*8点的图像块被送入DCT编码器,将8*8的图像块从空间域变换为频率域。下图给出一个实际8*8的图像块例子,图中的数字代表了每个像素的亮度值。从图上可以看出,在这个图像块中各个像素亮度值比较均匀,特别是相邻像素亮度值变化不是很大,说明图像信号具有很强的相关性。


    一个实际8*8图像块

    下图是上图中图像块经过DCT变换后的结果。从图中可以看出经过DCT变换后,左上角的低频系数集中了大量能量,而右下角的高频系数上的能量很小。


    图像块经过DCT变换后的系数

    信号经过DCT变换后需要进行量化。由于人的眼睛对图像的低频特性比如物体的总体亮度之类的信息很敏感,而对图像中的高频细节信息不敏感,因此在传送过程中可以少传或不传送高频信息,只传送低频部分。量化过程通过对低频区的系数进行细量化,高频区的系数进行粗量化,去除了人眼不敏感的高频信息,从而降低信息传送量。因此,量化是一个有损压缩的过程,而且是视频压缩编码中质量损伤的主要原因。

    量化的过程可以用下面的公式表示:

         

    其中FQ(u,v)表示经过量化后的DCT系数;F(u,v)表示量化前的DCT系数;Q(u,v)表示量化加权矩阵;q表示量化步长;round表示归整,即将输出的值取为与之最接近的整数值。

    合理选择量化系数,对变换后的图像块进行量化后的结果如图所示。


    量化后的DCT系数

    DCT系数经过量化之后大部分经变为0,而只有很少一部分系数为非零值,此时只需将这些非0值进行压缩编码即可。

    (b)  熵编码

    熵编码是因编码后的平均码长接近信源熵值而得名。熵编码多用可变字长编码(VLC,Variable Length Coding)实现。其基本原理是对信源中出现概率大的符号赋予短码,对于出现概率小的符号赋予长码,从而在统计上获得较短的平均码长。可变字长编码通常有霍夫曼编码、算术编码、游程编码等。其中游程编码是一种十分简单的压缩方法,它的压缩效率不高,但编码、解码速度快,仍被得到广泛的应用,特别在变换编码之后使用游程编码,有很好的效果。

    首先要在量化器输出直流系数后对紧跟其后的交流系数进行Z型扫描(如图箭头线所示)。Z型扫描将二维的量化系数转换为一维的序列,并在此基础上进行游程编码。最后再对游程编码后的数据进行另一种变长编码,例如霍夫曼编码。通过这种变长编码,进一步提高编码的效率。

    (c)  运动估计和运动补偿

    运动估计(Motion Estimation)和运动补偿(Motion Compensation)是消除图像序列时间方向相关性的有效手段。上文介绍的DCT变换、量化、熵编码的方法是在一帧图像的基础上进行,通过这些方法可以消除图像内部各像素间在空间上的相关性。实际上图像信号除了空间上的相关性之外,还有时间上的相关性。例如对于像新闻联播这种背景静止,画面主体运动较小的数字视频,每一幅画面之间的区别很小,画面之间的相关性很大。对于这种情况我们没有必要对每一帧图像单独进行编码,而是可以只对相邻视频帧中变化的部分进行编码,从而进一步减小数据量,这方面的工作是由运动估计和运动补偿来实现的。

    运动估计技术一般将当前的输入图像分割成若干彼此不相重叠的小图像子块,例如一帧图像的大小为1280*720,首先将其以网格状的形式分成40*45个尺寸为16*16的彼此没有重叠的图像块,然后在前一图像或者后一个图像某个搜索窗口的范围内为每一个图像块寻找一个与之最为相似的图像块。这个搜寻的过程叫做运动估计。通过计算最相似的图像块与该图像块之间的位置信息,可以得到一个运动矢量。这样在编码过程中就可以将当前图像中的块与参考图像运动矢量所指向的最相似的图像块相减,得到一个残差图像块,由于残差图像块中的每个像素值很小,所以在压缩编码中可以获得更高的压缩比。这个相减过程叫运动补偿。

    由于编码过程中需要使用参考图像来进行运动估计和运动补偿,因此参考图像的选择显得很重要。一般情况下编码器的将输入的每一帧图像根据其参考图像的不同分成3种不同的类型:I(Intra)帧、B(Bidirection prediction)帧、P(Prediction)帧。如图所示。

    典型的I,B,P帧结构顺序

    如图所示,I帧只使用本帧内的数据进行编码,在编码过程中它不需要进行运动估计和运动补偿。显然,由于I帧没有消除时间方向的相关性,所以压缩比相对不高。P帧在编码过程中使用一个前面的I帧或P帧作为参考图像进行运动补偿,实际上是对当前图像与参考图像的差值进行编码。B帧的编码方式与P帧相似,惟一不同的地方是在编码过程中它要使用一个前面的I帧或P帧和一个后面的I帧或P帧进行预测。由此可见,每一个P帧的编码需要利用一帧图像作为参考图像,而B帧则需要两帧图像作为参考。相比之下,B帧比P帧拥有更高的压缩比。

    (d)  混合编码

    上面介绍了视频压缩编码过程中的几个重要的方法。在实际应用中这几个方法不是分离的,通常将它们结合起来使用以达到最好的压缩效果。下图给出了混合编码(即变换编码+ 运动估计和运动补偿+ 熵编码)的模型。该模型普遍应用于MPEG1,MPEG2,H.264等标准中。

    混合编码模型

    从图中我们可以看到,当前输入的图像首先要经过分块,分块得到的图像块要与经过运动补偿的预测图像相减得到差值图像X,然后对该差值图像块进行DCT变换和量化,量化输出的数据有两个不同的去处:一个是送给熵编码器进行编码,编码后的码流输出到一个缓存器中保存,等待传送出去。另一个应用是进行反量化和反变化后的到信号X’,该信号将与运动补偿输出的图像块相加得到新的预测图像信号,并将新的预测图像块送至帧存储器。


    2.音频编码基本原理

    (1)  音频信号的冗余信息

    数字音频信号如果不加压缩地直接进行传送,将会占用极大的带宽。例如,一套双声道数字音频若取样频率为44.1KHz,每样值按16bit量化,则其码率为:

    2*44.1kHz*16bit=1.411Mbit/s

    如此大的带宽将给信号的传输和处理都带来许多困难,因此必须采取音频压缩技术对音频数据进行处理,才能有效地传输音频数据。

    数字音频压缩编码在保证信号在听觉方面不产生失真的前提下,对音频数据信号进行尽可能大的压缩。数字音频压缩编码采取去除声音信号中冗余成分的方法来实现。所谓冗余成分指的是音频中不能被人耳感知到的信号,它们对确定声音的音色,音调等信息没有任何的帮助。

    冗余信号包含人耳听觉范围外的音频信号以及被掩蔽掉的音频信号等。例如,人耳所能察觉的声音信号的频率范围为20Hz~20KHz,除此之外的其它频率人耳无法察觉,都可视为冗余信号。此外,根据人耳听觉的生理和心理声学现象,当一个强音信号与一个弱音信号同时存在时,弱音信号将被强音信号所掩蔽而听不见,这样弱音信号就可以视为冗余信号而不用传送。这就是人耳听觉的掩蔽效应,主要表现在频谱掩蔽效应和时域掩蔽效应,现分别介绍如下:

    (a)  频谱掩蔽效应

    一个频率的声音能量小于某个阈值之后,人耳就会听不到,这个阈值称为最小可闻阈。当有另外能量较大的声音出现的时候,该声音频率附近的阈值会提高很多,即所谓的掩蔽效应。如图所示:


    频率掩蔽效应

    由图中我们可以看出人耳对2KHz~5KHz的声音最敏感,而对频率太低或太高的声音信号都很迟钝,当有一个频率为0.2KHz、强度为60dB的声音出现时,其附近的阈值提高了很多。由图中我们可以看出在0.1KHz以下、1KHz以上的部分,由于离0.2KHz强信号较远,不受0.2KHz强信号影响,阈值不受影响;而在0.1KHz~1KHz范围,由于0.2KHz强音的出现,阈值有较大的提升,人耳在此范围所能感觉到的最小声音强度大幅提升。如果0.1KHz~1KHz范围内的声音信号的强度在被提升的阈值曲线之下,由于它被0.2KHz强音信号所掩蔽,那么此时我们人耳只能听到0.2KHz的强音信号而根本听不见其它弱信号,这些与0.2KHz强音信号同时存在的弱音信号就可视为冗余信号而不必传送。

    (b)  时域掩蔽效应

    当强音信号和弱音信号同时出现时,还存在时域掩蔽效应。即两者发生时间很接近的时候,也会发生掩蔽效应。时域掩蔽过程曲线如图所示,分为前掩蔽、同时掩蔽和后掩蔽三部分。

    时域掩蔽效应

    由图我们可以看出,时域掩蔽效应可以分成三种:前掩蔽,同时掩蔽,后掩蔽。前掩蔽是指人耳在听到强信号之前的短暂时间内,已经存在的弱信号会被掩蔽而听不到。同时掩蔽是指当强信号与弱信号同时存在时,弱信号会被强信号所掩蔽而听不到。后掩蔽是指当强信号消失后,需经过较长的一段时间才能重新听见弱信号,称为后掩蔽。这些被掩蔽的弱信号即可视为冗余信号。

    (2)  压缩编码方法

    当前数字音频编码领域存在着不同的编码方案和实现方式, 但基本的编码思路大同小异, 如图所示。

    数字音频编码系统模型

    对每一个音频声道中的音频采样信号,首先都要将它们映射到频域中,这种时域到频域的映射可通过子带滤波器实现。每个声道中的音频采样块首先要根据心理声学模型来计算掩蔽门限值, 然后由计算出的掩蔽门限值决定从公共比特池中分配给该声道的不同频率域中多少比特数,接着进行量化以及编码工作,最后将控制参数及辅助数据加入数据之中,产生编码后的数据流。

     


    展开全文
  • 摘要:从语音编码技术中常用的三种编码方法入手,由浅入深地引出了IP网络电话中常用的几种语音压缩编码方法,并对之进行了性能分析和比较。 随着互联网的迅速发展,最近几年出现了一种在互联网上提供电话服务的新...
  • 图像压缩编码

    2016-07-24 19:36:24
    常用图像压缩编码码matlab实现。包括:DM编码、变换编码(FFT和DCT)、算术编码、行程编码、Huffman编码、线性预测编码和一个近似的JPEG编码过程。非常适合入门用户实践。
  • JPEG压缩编码方法与实现

    万次阅读 热门讨论 2007-05-07 13:01:00
    JPEG压缩编码方法与实现 电子信息学院 戴玉超 学号:056080460一. 数据压缩问题的描述信息的本质,要求交流和传播。一个统一的数字传输系统系统模型如图1所示。图1.数字传输系统模型数据压缩,就是以最少的数码...

    JPEG压缩编码方法与实现

                                 电子信息学院   戴玉超   学号:056080460

    一.        数据压缩问题的描述

    信息的本质,要求交流和传播。一个统一的数字传输系统系统模型如图1所示。

    1.数字传输系统模型

    数据压缩,就是以最少的数码表示信源所发的信号,减少容纳给定消息集合或数据采样集合的信号空间。所谓信号空间即被压缩对象是指:(1)物理空间(2)时间区间(3)电磁频谱区域。

    二.        数据压缩的可能性和必要性

    数据压缩的必要性: 信息时代的重要特征是信息的数字化,数字化了的信息带来了“信息爆炸”。多媒体计算机系统技术是面向三维图形、立体声和彩色全屏幕运动画面的处理技术。数字计算机面临的是数值、文字、语言、音乐、图形、动画、静图像、电视视频图像等多种媒体,承载的由模拟量转化成数字量信息的吞吐、存储和传输的问题。数字化了的视频和音频信号的数量之大是非常惊人的。直接存储和传输庞大的数据不但开销很大,而且有时设备也无法承受如此大的负荷,并且通信带宽和存储容量有限,因此实现对于图像等数据进行高比特率的数据压缩显得尤为重要起来。

    数据压缩的可能性在于数据本身存在的冗余。对于图像而言,图像数字化之后,形成了大量的二进位数据。然而,由于图像的冗余性,表示一幅图像并不需要那么多二进位。一般来讲,数字图像存在以下类型的冗余:

    (一)   空间冗余:一幅图像中相邻像素的灰度值(彩色值)基本上是一致的(除去图像边缘像素点),图像相邻像素的数值是相关的。

    (二)   频域冗余:在RGB彩色图像中不同色平面或频段是相关的。

    (三)   时间冗余:在视频图像中,不同的图像帧是相关的。

    (四)   信息熵冗余:也称为编码冗余。对于实际图像数据的每一个像素,很难得到它的信息熵,因此在数字化一幅图像时表示像素的比特通常存在冗余。

    (五)   视觉冗余:人类的视觉系统对于图像的注意是非均匀和非线性的,特别是人类的视觉系统并不是对于图像中的任何变化都能感知。由于人是各类图像处理系统的最终接受者和评价者,而人眼的视觉特点产生了相应的视觉心理冗余。

    另外,还存在结构冗余,知识冗余等冗余形式。

    数字图像压缩的目的在于去除图像的冗余和不必要的信息,在不降低图像视觉质量的情况下,减少图像的数据量和存储空间,提高图像的传输速率。通过对图像信源进行编码,使编码数据流小于原始数据流,达到压缩的目的。

    三.        数据压缩方法

    数据压缩是有效率的,它是衡量一种编码标准的重要因素。总的来说,压缩比越大,压缩后的码率就低,分辨率相对也低;反之亦然。下面主要意图像和视频为例加以说明。图像的压缩是有损的,可能产生压缩失真。目前,已实际使用的活动图像压缩编码后的码率低到几至几十kbit/s,广播级的图像码率一般为26Mbit/s

    图像编码技术具有广阔的应用前景,特别是网络技术不断涵盖各个领域的今天,发达国家投入大量的资金和人力资源进行开发研究。一些新的压缩编码方法与算法不断出现。基于模型并被称为新一代的压缩编码方法正在深入研究之中,目前,有人把图像压缩编码方法分为三大类:第一类基于图像信源的统计特性,MPEG-1MPEG-2属于这一类;第二类基于人眼视觉特征,采用图像轮廓一纹理的编码方法;第三类基于图像的景物特征,采用模型的编码方法,有人把第二类和第三类统称为第二代编码方法,目前通过的标准有MPEG-4。下面简介第一类常用的压缩编码方法。

    1.亚抽样编码方式

    它分空间和时间亚抽样两种方式。空间亚抽样采用降低每行、每帧的像素进行抽样传输,以此达到压缩码率的目的,对于未传的像素,用其周围相邻像素经过运算后求出,再补插上去来恢复图像。时间亚抽样采用图像隔帧传输,来降低码率,在接收端对于未传的帧,通过前后帧计算出来,再补插上去。亚抽样方式中传输的像素和帧的数量大小,可根据不同的应用范围、清晰度的要求去确定。

    2.差值和预测编码方式

    差值编码方式根据图像内容一般都是连续变化而突变内容较少的特点,只传送帧内相邻像素之间的差值,或两帧对应像素之间的差值。这个差值必然比它们的原值小,甚至为零。这样就可以减少数据的传送,达到压缩码率的目的。

    预测编码不仅利用相邻像素样值的相关性,还利用与其他行和其他帧的像素值的相关性,通过计算,用更接近当前样值的预测值和当前值相减,这样,差值会进一步变小,小幅度差值就会进一步增加,使总码率进一步减少。实质上,差值编码就是以前一个样值为预测值的预测编码,预测编码有一维、二维、三维之分。

    3.具有运动补偿的帧间预测编码

    当图像中有较大的运动画面时,相邻帧差信号中大幅度值会大量增加,如果利用简单的帧间预测编码,其预测值会出现很大偏差,为适应这种情况,人们开发了多种方式及算法,来求出相邻帧间运动图像部分的运动矢量,然后用该矢量对帧间预测值进行修正(也叫运动补偿),减小预测值误差,从而提高对运动图像的编码质量。

    4.变换编码

    变换编码是通过某种数学变换,把图像从一个域变换到另一个域,使本来复杂的图像变得简单或有更好的统计特性,从而便于进一步编码,例如:一帧图像内容以不同的亮度和色度像素分布体现出来,而这些像素的分布依图像内容而变,毫无规律可言。但是通过离散余弦变换(DCT);像素分布就有了规律。代表低频成份的量分布于左上角,而越高频率成份越向右下角分布。然后根据人眼视觉特性,去掉一些不影响图像基本内容的细节(高频分量),从而达到压缩码率的目的。离散余弦变换与其他方式结合进行压缩编码,已广泛应用于各种图像压缩编码标准中。

    5.变字长编码

    图像进行各种方式压缩后,对出现概率大的符号给短码,对出现概率低的符号给长码,采用这种科学的变字长码编码,可提高信源编码效率。

    每种压缩编码标准中,都采用多种压缩编码方式进行图像压缩编码,其目的是为了既有高的图像压缩比,又便于图像还原。

    四.        JPEG图像压缩

    我这次所完成的程序是基于DCT变换的JPEG压缩编码的实现采用的VisualC++6.0 +MFC实现,本软件当前支持所有bmp图像文件的读取与显示,支持对于24bmp图像的Jpeg压缩。

    下面介绍一下JPEG压缩编码中使用的方法和JPEG压缩标准。

    41 JPEG压缩编码流程

    JPEG是关于连续色调多极灰度、静止图像的第一个数字图像压缩编码国际标准,它不仅适用于静止图像的压缩,也适用于电视图像序列的帧内图像压缩。

    基本JPEG编码器和解码器(基于DCT变换)的结构如下图所示。其算法流程为:首先,通过离散余弦变换把数据从空间域变换到频率域,从而去除数据的冗余度;量化器用加权函数来产生对人眼优化的量化DCT系数,同时熵编码器将量化DCT系数的熵最小化。从以上叙述可以看出基于DCT变换的JPEG压缩算法由以下几个步骤实现:

    1.  颜色模式转换及采样;

    2.  离散余弦变换;

    3.  量化;

    4.  Zigzag编码;

    5.  使用差分脉冲编码调制(DPCM)对直流系数进行编码;

    6.  使用行程长度编码对交流系数进行编码;

    7.  Huffman编码

    2.JPEG压缩编码器

        

    3.JPEG解压缩解码器

    4.2 JPEG压缩编码关键技术

    离散余弦变换(DCT):

           DCT变换是一种正交变换图像编码方法,常常被认为是对图像和语音信号的准最佳变换。在JPEG压缩编码中,采用的是 的图像快,其原因在于计算量和像素之间关系的数量。

    数字图像 可以看成是一个 的矩阵,借助于二维DCT,可以将图像从空间域(即 平面)变换到DCT域(即 平面)。以求和形式定义的二维DCT为:

            1

    可见,二维DCT实际上可以分解为两个一维DCT:即先以 为变量,对 逐行进行一维DCT得到一个一维中间结果 ;再对中间结果以 为变量,逐列进行第二个一维DCT,得到最终结果

    4. 二维DCT的行列分离计算过程

    量化:

    JPEG中使用的是线性均匀量化表。JPEG基本算法包括一套量化表,因为JPEG使用的是YUV格式,Y分量代表了亮度信息,U,V代表了色差信息。因此JPEG的两张量化表分别针对YUV

    JPEG中采用线性均匀量化器,量化定义为对64DCT系数除以量化步长并四舍五入,公式如下:

                      2

    Zigzag排序:

    保证低频分量先出现,高频分量后出现,以增加行程中连续“0”的个数。

    5.ZigZag扫描

    哈夫曼编码:

    JPEG中的哈夫曼编码分为两步进行,首先把DC码和行程码转换中间符号序列,然后给这些符号赋以变长码字。

    1.  中间符号表示:

     对于差分DC系数用两个符号进行编码:符号1和符号二,符号1表示的信息成为“长度”,即为DC系数的幅度进行编码所用的位数,符号二表示DC系数的幅度。类似的,对于每个AC系数也用两个符号进行编码,符号1表示两条信息,“游程”和“长度”。游程是在Zigzag矩阵中位于非零AC系数前的连续零值AC系数的个数,长度是对AC系数的幅度进行编码所用的位数,符号2表示了AC系数的幅度。

    2.  哈夫曼编码

    对于DC系数的符号一采用哈夫曼表中的可变长度代码进行编码。符号2用可变长度整数代码进行编码,若为负值,则采用二进制的补码形式。

    对于AC系数的哈夫曼编码流程如下:

    6AC系数编码流程

    4.3. JPEG文件格式:

    色度空间

    JPEG文件使用的颜色空间是CCIR 601推荐标准采用的彩色空间。在这个彩色空间中,每一个分量,每个像素的电平规定为255级,用8bit代码表示。在RGBYCrCb空间之间的转换为:

    RGB转换成YCbCr:

                                       3

    YCbCr转换成RGB:

                                4

    JPEG文件大体上可以分成以下两个部分:标记码(Tag)加压缩数据。标记码由两个字节构成,前一个字节为固定值0xFF,每个标记之前还可以添加数量不限的0xFF填充字节。标记码部分给出了JPEG图像的所有信息。

    JPEG文件由下面的8个部分组成:

    1.  图像开始SOIStart of Image)标记;

    2.  APP0标记:包括长度,标记符,版本号,XY方向的密度单位,X方向像素密度,Y方向像素密度,缩略图水平像素数目,缩略图垂直像素数目,缩略图RGB位图;

    3.  APPn标记(Markers),其中n=1~15(任选):包括长度和应用详细信息;

    4.  一个或多个量化表DQT(difine quatization table):包括量化表长度,量化表数目,量化表;

    5.  帧图像开始SOF(Start of Frame):帧开始长度,精度,图像高度,图像宽度,颜色分量数,对于每个颜色分量的描述;

    6.  一个或多个哈夫曼表DHT(Difine Huffman Table):包括长度,类型,索引,位表,值表;

    7.  扫描开始SOSStart of Scan):包括扫描开始长度,颜色分量数,每个颜色分量,压缩图像数据;

    8.  图像结束EOI(End of Image).

    7JPEG文件格式图解

    五.        程序说明

    本次JPEG图像数据压缩程序,我采用的是VisualC++6.0平台编程实现。建立的工程为JpegCompression,基于MFC类库实现。

    工程包括以下几个类:CDib,该类实现位图文件数据的读入,显示,JPEG压缩编码实现;CJpegCompressionApp,该类是整个程序执行的主进程,CJpegCompressionDoc控制文档数据,CJpegCompressionView控制视图显示,该类基于CScrollView,因此支持滑动条实现滚动;CMainFrame类控制整个框架结构,Jpeg类实现压缩编码。

    关于图像处理的部分主要集中在CDib类中,主要包含加载bmp位图的LoadImage函数,实现位图保存功能的SaveImage函数,写入32位数据Write32BitData,根据给定的量化表实现8*8块的量化的Quant函数,进行二维DCT变换的DCT函数,实现YCrCb颜色空间到RGB颜色空间的变换的函数YCbCr2RGB 实现游程编码的RunLengthCode函数;将哈夫曼编码结果按照长度和码字的ShiftWrite函数;将图像进行JPEG压缩编码的SaveAsJpeg            函数;实现Jpeg压缩编码的Jpeg()函数;进行数据写入操作的WriteData函数以及进行哈夫曼编码的HuffmanTable函数,详细的函数说明见源程序中的相关说明。

    当前软件版本实现效果包括:对于所有形式bmp图像的读取与显示,对于bmp图像的保存,对于24bmp图像的Jpeg压缩,内部实现的功能如DCT变换,量化,哈夫曼编码,游程编码等也可以作为单独功能添加到界面上予以实现。

    程序编译运行界面如下图:

    8Jpeg压缩程序运行界面

    9.打开位图文件

    主要功能包括:

    打开选定路径下的bmp图像文件(包括24位图,256色图像,灰度图,二值图像等文件格式),如图9所示。

    在屏幕上显示打开的bmp图像文件,支持滚动显示。全屏显示后图像位于屏幕中央,如图10左图所示,右图为滚动显示的位图。

    24bmp图像以给定路径保存为JPEG文件。实现JPEG图像数据压缩全过程。如图11所示,此时可以选定文件路径并以指定的文件名保存为JPEG图像文件。

    bmp图像文件另存于其他位置,如图12所示。

    关于作者信息说明,如图13所示。

     

    10.完全显示和滚动显示位图

    11JPEG图像压缩

    12.位图文件另存为

    13.版本信息

    六.        程序运行结果及分析

    应用本软件可以实现对于任意24bmp图像的JPEG压缩。为了比较,验证方法的效果,我采用几幅标准图像进行对比试验,为考察压缩效果,试验选用了不同大小的图像。我们知道对于数据压缩系统的性能评价主要包括两个方面:客观度量和主观度量,因此在下面的比较中以这两个标准和压缩效率进行比较。

     

     

     

    1.图像JPEG压缩效果

    图像名称

    位图格式大小

    JPEG格式大小

    压缩比

    Lena

    71,510B

    5,264B

    13.58

    SunSet

    1,440,054B

    47,853B

    30.09

    Blue hills

    1,440,054B

    28,391B

    50.72

    Water lilies

    1,440,054B

    28,391B

    50.72

     下载图片

    50,678B

    3,917B

    12.94

                       

      

                       

                      

    14JPEG压缩测试图片,依次为Lena,SunSet,BlueHills,Water lilies,下载图片

    从以上测试结果来看,设计实现的JPEG压缩算法较好地实现了对于24bmp图像的压缩,压缩比较高,压缩图像与原始图像相比差异几乎无法察觉。

    现将我在实现整个JPEG压缩中一些问题总结如下:

    (1)       关于量化表的问题,当前采用的是针对Y分量,UV分量的两个固定的量化表。这两个量化表来源于广泛的实验。但是由于通用性可能导致对于某些图像量化效果不佳,影响后续的其他操作。因此,可以考虑根据每一幅图像具体特征进行自适应量化。

    (2)       关于离散余弦变换。在这一次的实现之中,对于离散余弦变换,我实现了二维DCT的直接计算方法,先行后列两次一维DCT计算方法。由于DCT变换与DFT变换之间的联系,二维DCT可以通过FFT来实现,以提高整个运算速度。

    (3)       压缩率的可控性。可以设计实现给定压缩比或压缩率后的压缩。

    (4)       JPEG中的编码方式可以选择哈夫曼编码或者是算术编码,当前JPEG压缩中采用的均是Huffman编码,以后可以考虑采用算术编码。

    (5)       关于采样问题。将图像像素数据由RGB空间转换到YCbCr空间后,亮度Y包含的信息最为丰富,因此Y的采样频率应大于CbCr的采样频率,一般采用422或者411采样格式。

     

     

    七.        参考文献

    [1]吴乐南 编著 数据压缩  电子工业出版社,东南大学出版社。2000.6

    [2]张益贞,刘滔编著. Visual C++实现MPEF/JPEG编解码技术. 人民邮电出版社.2004.5

    八.个人体会

    经过几天的努力,基于离散余弦变换的Jpeg图像压缩编码程序终于实现完成了。通过程序设计开发过程,我进一步熟悉了数据压缩中的相关方法并且在理解的基础上实现了。主要的收获在于进一步清楚了数据压缩方法实现的过程,对于Jpeg压缩编码方法有了更加深入的理解,在Visual C++实现上也有所增长。希望在以后的学习过程中进一步研究数据压缩的相关方法,提高水平。最后,特别感谢冯老师让我们进入了数据压缩这一领域的学习,通过冯老师的教导,我感觉收获很大。

     

                                                                200614

     

    PS:需要代码可以留邮箱交流。

    展开全文
  • matlab图像压缩编码.rar

    2019-12-02 11:09:06
    Matlab实现常用图像压缩编码。包含DM编码、变换编码(FFT和DCT)、算术编码、行程编码、Huffman编码、线性预测编码和一个近似的JPEG编码过程
  • 数字图像压缩编码

    2011-12-24 23:48:46
    本篇先介绍压缩的基本概念,再讲解可用于静态图像编码的若干常用编码压缩算法、基于DCT的JPEG编码、运动图像和伴音的MPEG编码压缩算法、以及当前十分热门的AVC和AVS编码
  • 压缩是通过 特定的算法来减少机算机对文件的大小机制,可以减少 Bytes 对吧、 有很多的公司 对 存储的数据,都是用压缩包的形式,很少会用到数据库,的一个朋友 ,新跳了一家公司 分配好项目之后,没想到,发来的 ...
    • 压缩是通过 特定的算法来减少机算机对文件的大小机制,可以减少 Bytes

    有很多的公司 对 存储的数据,都是用压缩包的形式,很少会用到数据库,一朋友 ,新跳了一家公司 分配好项目之后,没想到,发来的 数据都是 压缩包,其中有一个包 里面有着 4000W 的用户信息 (具体啥玩意我也不知道)他的电脑 打都打不开。
    ( 咱不是程序大佬 小白白 )

    让我突然重视了起来 压缩,因为平时 除了用快压 解压一些小电影剩下的好像什么都没有办,所以 度妈妈 了一些相关知识想着分享一下、也放在这里希望 大佬 能够指点

    言归正传

    我们大众化的理解就是解压 就是去除空格 其实也不完全对
    接下来我们来说说 压缩

    1. 文件
    • ( 文件 )压缩技术 简单的来说 就是查找文件内的重复 Bytes,然后建立一个具有相同 Bytes 的 字典 文件,并且用一个代码来 表示。

    • 比如原文件里,有多处重复的 Bytes or word 如:LiEnze 我爱你,这个时候 就会生产出一个代码来表示 如:sb 当然只是举例、真实的操作要麻烦的多

    1. 图片
    • ( 图片 )计算机处理信息 用的是 二进制表示、在一张图片内 有数不清的 相同颜色点对吧,压缩就会 在某个位置上 有多少个 蓝色点、在通过 公式用 (0, 1)来表示出来

    压缩 方法分为:

    ( 有的时候想追求效率 必然质量会打点折扣 )

    1. 有损压缩:
    • 举个例子 在压缩 图片的时候 你图片的左上角 少了一个 像素点 你的肉眼能看出来么?对吧!
    • 所以有损压缩 非常适用于 压缩 图片 音频 视频 典型的代表格式就是 .mpeg
    1. 无损压缩:
    • 当我们对数据追求完美 不是特别考虑效率的时候 无损压缩就用到了、代表格式就太多了 如:.zip .rar 这些啊

    其实压缩 最重要的 一点还是去重 也就是 重复压缩

    重复压缩 也有两种:
    1. 段语句的重复
    • Bytes 在重复三个以上就成为短语句

    • 在压缩这种类型时候 zip 用的是 两个数字 一个是 重复位置到当前位置的 距离,另一个是重复的长度

    • 比如:abcddddd 我这个当前重复的位置是第 3个(第一个位置索引是 0),重复的长度是 5,那么我就可以 d(3,5) 来表示重复的 d。

    不要觉得一个 Bytes 有256个可能 三个字节就是有 256 ^ 3 种可能、这种压缩方法简直就是天方夜谭、

    • 比如:一篇小说中出现的 主人公的名字,和女主角去酒店的名字,极大程度地多次出现、这样就恰恰的符合了 重复压缩的做法,但是重复压缩只适合进行一次压缩
    • 如果对文件进行第二次重复压缩 意义不大,因为第一次压缩 已经大大的破坏了 源语句的重复倾向。
    1. 单 Bytes 的重复
    • 一个字节有 236 中可能、这样重复的几率岂不是更大?因为他是单字节,所以范围缩小了好多的。

    • 比如在 ASCII 文本文件中 常用的就是 字母 和 数字,据说 E 的使用率是最高的 。

    • 图片就更好理解了 肯定 深色调 和 浅色调 使用的多嘛
      这里顺便提一下:png图片格式是一种无损压缩,其核心算法就是 zip 算法,它和 zip 格式的文件的主要区别在于:作为一种图片格式,它在文件头处存放了图片的大小、使用的颜色数等信息。

    • 上面提到的短语式压缩的结果也有这种倾向:重复倾向于出现在离当前压缩位置较近的地方,重复长度倾向于比较短(20字节以内)。

    常见的压缩格式:

    1. JAR – Java Archive File
      他是 Java 的一种文档格式、你也可以理解为他就是 ZIP文件 ,叫他文件包,他和 ZIP 的最大区别就是 JAR 文件的内容中包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的

    2. ZIP
      zip 是 very常见的一种压缩格式了它不需要单独的一个压缩或者解压缩软件,因为Windows系统已经集成了对 ZIP 压缩格式的支持。

    3. RAR
      RAR 的压缩地位仅次于 ZIP ,因为 RAR 的压缩率 要比 ZIP 高很多。有一个后起之秀 叫 7Z 有着 比 RAR 更高的压缩率 但是 没办法 RAR 在压缩领域奠定了一定的基础、不可撼动。

    4. CAB
      CAB 是微软推出的压缩文件格式,主要都是用于安装程序上,所以 CAB 文件包含的文件都是被经过处理的,代价就是咱们自己解压后可能还用不了

    5. ISO
      ISO 是 一种光盘镜像格式,是吧数据保存到光盘上。你一可以理解 这就是文件提取。

    6. TAR
      TAR .tar 为后缀的文件,WinZIP、WinRAR、都可以打开,因为 他们两个都对 TAR 进行了关联,注意说的一点是 TAR是linux 常用的文件格式

    7. UUE
      UUE 这个比较牛逼、是压缩遇到邮件编码混合 引起 乱码 的情况下就用压缩格式,可以用WinZIP、WinRAR打开。

    压缩的操作相比较来说 还是比较麻烦的 当然啊 也有一些教程 我就不举例了

    此博客并非 -原创-,全是搜集的 ~~~

    发布的化,挂着转载,也不知道怎么填写 原 地址,所以只能写着原创、我觉得 学习别人的东西 自己没有进行更改 思维逻辑 还是别人的 那就不是 原创

    展开全文
  • 本文介绍了在多媒体通信中常用的图像数据压缩编码方法及图像的压缩标准,重点介绍JPEG和MPEG
  • 图象的压缩编码

    2014-04-26 15:36:10
    在象素编码常用的几种方法有:(1)脉冲编码调制(Pulse Code Modulation,简称PCM);(2)熵编码(Entropy Coding);(3)行程编码(Run Length Coding);(4)位平面编码(Bit Plane Coding)。其中我们要介绍的是熵编码中的...
  • Content:视频编码中常用编码方法介绍 1、熵编码 编码过程中按照熵原理不丢失任何信息的编码,即编码过程中不丢失信息量,保存信息熵。 熵编码是无损压缩编码方法。 常见的熵编码方法:香农编码(shannon)...
  • 常用图像压缩方法的对比

    千次阅读 2015-11-12 12:04:37
    压缩方法名称 压缩算法 优、缺点 行程长度压缩 RLE 将一扫描行中的颜色值相同的相邻像素用一个计数值和那些像素的颜色值来代替 如:aaabccccccddeee,压缩后为3ab6c2d3e 对于拥有大面积、相同颜色区域的图像 ...
  • function PSNR = psnr(f1, f2) %计算两幅图像的峰值信噪比 k = 8; %k为图像中表示一个... %归一化 function cr = imageratio(f1, f2) %计算两幅图像压缩比 error(nargchk(2, 2, nargin)); cr = bytes(f1)/bytes(f2);
  • 1.视频编码基本原理 (1) 视频信号的冗余信息 以记录数字视频的YUV分量格式为例,YUV分别代表亮度与两个色差信号。例如对于现有的PAL制电视系统,其亮度信号采样频率为13.5MHz;色度信号的频带通常为...
  • 一、图像压缩 二、预测编码
  • 大数据与算法系列之字符压缩编码

    千次阅读 2018-06-04 10:53:57
    压缩的目的在于将出现频率较高的字符用短编码表示,而对于很少出现的字符用较长编码表示,从而提升字符在某些领域中的负荷,如网络传输过程中减少流量开销,常用的字符串压缩编码包括哈夫曼编码及香农-范诺编码。...
  • 视频压缩编码基本原理

    千次阅读 2015-06-17 12:56:09
    本文介绍一下视频压缩编码和音频压缩编码的基本原理。其实有关视频和音频编码的原理的资料非常的多,但是自己一直也没有去归纳和总结一下,在这里简单总结一下,以作备忘。 1.视频编码基本原理 (1) 视频信号的...
  • 视频压缩编码(ppt)

    2009-12-16 23:25:10
    比较详细完整地讲解了视频压缩的原理、视频压缩常用方法及其相关标准。
  • 介绍了在多媒体通信中常用的图像数据压缩编码方法,重点介绍JPEG和MPEG。
  • 图象的压缩编码,JPEG压缩编码标准-续 飞云 发表于 2006-4-7 10:06:24 8×8的图象经过DCT变换后,其低频分量都集中在左上角,高频分量分布在右下角(DCT变换实际上是空间域的低通滤波器)。由于该低频...
  • 图像压缩编码概述

    千次阅读 2017-04-10 14:25:17
    1.图像压缩编码的必要性 现在是信息爆炸时代,图像数据量特别大,故此在传输或者存储时都需要对数据进行有效的压缩。图像压缩就是对图像数据按照一定的规则进行变换和组合,用少的数据量表示影像。 2.图像压缩编码...
  • 实验报告 课程名称 数字图像处理 实验名称 图像压缩编码技术 实验地点 明向校区 D001 机房 专业班级 测控 1401 班 学号 2014001796 学生姓名 郭佳鑫 ...了解几种常用的图像压缩编码方式 4.利用 MATLAB 程序进行图像压

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 109,114
精华内容 43,645
关键字:

常用压缩编码方法