赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 图像处理与人工智能

首页 > 专业技术 > 图像处理与人工智能 > 常用的图像编码方法
常用的图像编码方法

人的感觉器官接收的各类信息中,视觉类占了近70%。但视觉信息经过数字化后,如果不进行压缩,数据量巨大,将占用极大的存储空间和信道带宽,因此图像数据编码压缩成为关键技术。压缩编码就是对图像的源数据用一定的规则进行变换和组合,从而达到用尽可能少的代码表示尽可能多的数据信息。
从信息论观点看,描述图像信源的数据是由有效信息和冗余信息两部分组成,去除冗余信息能够节省存储和传输中的开销,同时又不损坏图像信源的有效信息量。图像压缩的基本思想是去除图像信息中由于各种相关性而存在的冗余,基本方法是找出这些相关性并以此为根据进行编码处理去除冗余信息。信息冗余有多种,如空间冗余、时间冗余、结构冗余、知识冗余、视觉冗余等,数据压缩实质上是减少这些冗余量。高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。
组成图像的各像素之间,无论在行方向还是在列方向,都存在着一定的相关性,应用某种算法提取或减少这些相关性,便可以达到压缩数据的目的。在有些场合,一定限度的失真是允许的,如人眼对图像灰度分辨的局限性,监视器显示分辨率的限制,而并不妨碍图像的实际应用,因此却可以得到很大程度的压缩。

1. 压缩编码分类及常用的方法:

多媒体数据压缩方法根据不同依据有多种分类,根据作用域分为空间编码、变换编码和混合编码,根据是否自适应分为自适应编码和非自适应编码。
从信息论角度看,可分为冗余度压缩方法和信息量压缩方法,冗余度压缩也称无损压缩、信息保持编码或熵编码,压缩后解码的图像和压缩前的原图像严格相同,数学上是一种可逆运算,包括霍夫曼编码、算术编码、游程编码、LZW编码等。信息论压缩也称有损压缩、失真度编码或熵压缩编码,解码后的图像和原图像有差别,允许一定的失真,包括预测编码、运动补偿、正交变换、子带编码、统计分块编码、分形编码等等。
多媒体数据编码的算法有预测编码、变换编码、统计编码、帧间编码等,预测编码有DPCM、ΔM,变换编码有傅里叶变换、DCT变换、哈尔变换、K-L变换、小波变换等,统计编码有霍夫曼编码、算术编码、游程编码、LZW编码等,帧间编码有运动估计、运动补偿、帧间内插、帧间预测等,其他编码还有矢量编码、子带编码、分形编码、模型基编码等。
1)经典编码方法:
1948年,Oliver提出了脉冲编码调制PCM。PCM实际上就是连续模拟信号的数字采样,将模拟信号转化成了数字信号,并没有对信号进行任何压缩。经典编码方法主要有预测编码、统计编码和变换编码。
⑴ 预测编码:根据数据的统计特性得到预测值,然后传输图像像素与其预测值的差值信号,使传输的码率降低,达到压缩的目的。预测编码方法简单,编码效率较高,典型的预测编码有DPCM、ΔM。
⑵ 统计编码:主要针对无记忆信源,根据信息码字出现概率的分布特征而进行压缩编码,寻找概率与码字长度间的最优匹配。这种编码的实质就是用短码来表示出现概率较大的码字,用长码表示出现概率小的码字,常用的统计编码有游程编码、Huffman编码和算术编码。
⑶ 变换编码:利用图像块内像素之间的相关性,把图像变换到频率域上,使得能量集中到少数几个变换系数上,通过存储这些系数而达到压缩数据的目的。变换编码一般分为两步,变换,然后统计编码,其中变换并不压缩数据,只是将图像数据有空间域转换到频率域,对频率域系数的统计编码才能达到编码压缩的目的,只是经过变换以后频率域系数更加有利于编码。目前常用的变换主要为离散余弦变换DCT、整数DCY、小波变换等。
2)第二代编码方法:
第二代编码技术不局限于信息论,而是充分利用人的视觉特性,从而获得更高的压缩比。常用的方法有分形编码和模型编码等。
⑴ 分形编码:利用自然图像中的自相似性进行压缩。自相似性是指无论几何尺度如何变化,景物的任何一小部分的形状都与较大部分的形状及其相似。对于这种相似性可以通过仿射转换确定,而编码的对象就是仿射变换的系数。由于仿射变换的系数的数据量小于图像块的数据量,因此可以实现压缩的目的。分形压缩编码过程及其复杂,很难实时应用。
⑵ 模型编码:对图像建立特定的模型,并根据这个模型确定图像中景物的特征参数,如运动参数、形状参数等。解码时则根据特征参数和已知的模型利用图像合成技术重建图像。由于编码的对象是特征参数,而不是原始图像,因此有可能实现比较大的压缩比。模型编码引入的误差主要是人眼视觉不太敏感的几何失真,因此重建图像非常自然和逼真,一般用于基本的视频对象处理。如人像等。
第二代编码方法充分利用了计算机图形学、计算机视觉、人工智能、模式识别等研究成果,但增加了分析的难度,增加了实现的复杂性。
3)过渡编码技术:
近年出现了充分利用人眼视觉特性的多分辨率编码方法,如子带编码、塔形编码和基于小波变换的编码。这类方法使用不同类型的一维或二维线性数字滤波器,对视频图像进行整体分解,然后根据人眼视觉特性对不同频段的数据进行粗细不同的量化处理,以达到更好的压缩效果。这里方法原理上仍属于线性处理,属于波形编码,可归入经典编码方法,但又充分利用了人眼的视觉特性,因此可以看作经典编码向第二代编码过渡的方法。
⑴ 子带编码:利用一组带通滤波器把输入信号分解到若干个连续的频段上,每个频段称为子带,对每个子带中的信号采用单独的编码方案去编码。子带编码在语音信号压缩编码中获得广泛应用,是一种高质量、高压缩比的编码方法。进行子带编码的关键是设计共轭滤波器组,除去混叠频谱分量。
⑵ 基于小波变换的编码技术:把图像进行多分辨率分解,分解成不同空间、不同频率的子图像,然后再对子图像进行系数编码。基于小波变换的编码也分为两步,小波变换和变换系数后处理。图像经小波变换后生成的小波图像的数据总量与原数据量相等,即小波变换本身并不具有压缩功能,用于图像压缩是因为小波变换后系数主要集中在低频部分,而水平、垂直、对角线部分的能量较少。
对于小波变换后系数的处理方法一般为量化、重排列、熵编码。其中量化是根据人眼视觉系统特性,减少人眼不敏感的高频成分以达到压缩数据的目的,这一过程是有损的;重排列是根据频带分布相似性或重要性级别等性能将数据重新排列,重排本身也是一种减少数据量的操作,如零数的生成,并为下一步的熵编码提供了很好的数据特性,如四叉树的形似性;熵编码是为了进一步减少数据量而采用的一种无损压缩操作,一般为游程编码、Huffman编码、算术编码等。

2. 压缩编码技术:

视频编码技术是一项正在发展中的复杂技术,涉及计算机视觉、计算机图形学、信息论、应用数学等。
1)游程编码:
有些图像,尤其是计算机生成的图形,往往有许多颜色相同的色块。这种情况下,就可以不需要存储每一个像素的颜色值,而仅仅存储一个像素值及其具有相同颜色的像素数目,这种编码称为游程编码,或称行程编码,常用RLE(Run-Length Encoding)表示。对于拥有大量连续相同数值的数据用RLE压缩方法非常有效。
具有同一颜色的连续图像的数目称为游程长度,像素位表示各个连续的像素点,像素值表示这个像素点的色彩、属性值,把连续相同的像素值组合起来用游程表示。
RLE编码很适合计算机生成的图形图像,而对于自然中的色彩图像,由于行程很短,若用RLE编码,可能反而要用更多代码来表示。对于灰度图像和二值图像,用RLE编码一般都有很高的压缩率。
2)霍夫曼编码
Huffman编码利用变长的码来使冗余量达到最小。通过一个二叉树来编码,使常出现的字符用较短的码表示,不常出现的字符用较长的码表示,这些代码都是二进制码,且码的长度是可变的。
静态霍夫曼编码使用依据字符出现概率的编码树进行编码;动态霍夫曼编码需要在编码过程中建立编码树,需要对原始数据扫描两遍,第一遍统计出原始数据中每个值出现的频率,第二遍建立霍夫曼树并进行编码。
由于编码需要建立霍夫曼二叉树,并遍历二叉树生成编码,因此数据压缩和还原速度较慢,但简单有效,因而得到广泛应用。H.264中采用统一变长编码UVLC就是一种固定码表的霍夫曼编码,采用固定码表压缩性能稍差,但编码复杂性降低,速度提高。
3)算术编码:
将不同的序列映射到0~1的区域内,该区域表示成可变精度的二进制小数,越不常见的数据的精度越高。算术压缩适合于由相同的重复序列组成的文件,其压缩接近压缩的理论极限,并且不需要码表,只需要编码一次就可以得到编码结果,但算法比较复杂,硬件实现难度大。H.264中可选的基于内容的二进制算术编码CABAC就是一种算术编码。
在算术编码中,消息用0~1的实数进行编码,用到符号概率和它的编码间隔两个基本参数。信源符号的概率决定压缩编码的效率,也决定编码过程中信源符号的间隔,而这些间隔包含在0~1,编码过程中的间隔决定了符号压缩后的输出。
由于实际的计算机的精度不可能无限长,运算中可能出现溢出,这个问题可使用比例缩放解决。算术编码器对整个消息只产生一个码字,这个码字是在间隔[0 1}中的一个实数,因此译码器在接收到表示这个实数的所有位之前不能进行译码。算术编码是一种对错误很敏感的编码方法,如果一位发生错误就会导致整个消息译错。
算术编码可以是静态的,或者是自适应的。在静态算术编码中,信源符号的概率是固定的,在自适应算术编码中信源符号的概率根据编码时符号出现的概率出现的频繁程度动态进行修改,在编码期间估算信源符号概率的过程称为建模。
算术编码是一种高效清除子串冗余的算法,用一个单独的浮点数来代替一串输入符号,避开了特殊字符串编码中比特数必须取整的问题。但是实现有两个缺陷,很难在具有固定精度的计算机完成无限精度的算术操作,高度复杂的计算量不利于实际应用。
4)词典编码:
词典编码根据数据本身包含有重复代码的特性,种类很多,大致有两类。第一类是企图查找正在压缩的字符序列是否在以前输入的数据中出现过,然后用已经出现过的字符串替代重复的部分,输出仅仅是指向早期出现过的字符串的指针。如LZSS算法。第二类是企图从输入的数据中创建一个短语词典,短语可以是任意字符的组合。编码数据过程中当遇到已经在词典中出现的短语时编码器就输出这个短语在词典中的索引号。如LZW压缩编码,TIFF和GIF格式文件都是采用LZW编码方式进行压缩。
5)预测编码:
预测编码是一种设备简单质量较佳的高效编码法,主要有DPCM、ΔM两种。DPCM编码记录与传输的不是样本的真实值,而是与预测值的差。由于空间的相关性,真实值与预测值之间差值的变换范围远小于真实值的变化范围,因此可以采用较少的位数来记录数据。
6)帧内编码:
在一幅图像中,某像素点与其相邻的一些区域内常存在有规则的相关性,这种相关性带来了图像数据在空间域中的冗余性,通过对这些空间冗余的压缩可以大大减少数据量,达到数据压缩的目的,这种方式称为帧内编码。
压缩算法采用类似JPEG等静态图像编码方法,主要分为六步:
·分块:将图像平面分成8x8的图块
·变换:一般是对每个图块进行离散余弦变换DCT
·量化:对图块DCT变换后的系数按照特定的量化表进行量化
·Z形扫描:将量化的交流分量系数按照Z字形顺序扫描排列
·游程编码:对交流分量系数用游程长度编码,对相邻的低频直流系数采用DPCM编码
·熵编码:用霍夫曼或算术编码对游程编码后的数据进行熵编码
随着编码技术的发展,H.264标准使用4x4变换块,或者自适应可变的块大小ABT;变换多采用整数代替DCT变换;对隔行扫描采用双Z扫描模式;熵编码用基于内容的二进制算术编码CABAC和统一的可变长编码UVLC等算法。
7)帧间编码:
视频序列可以看作基于时间轴内的一组连续画面,其中相邻帧往往包含相同的背景和移动物体,只不过移动物体所在的空间位置略有不同,这种共性称为时间冗余。一般的视频序列其时间冗余可以占整个数据量的70%以上。减少时间冗余采用帧间编码,基础是预测技术,目前主要采用运动估计与运动补偿。
运动估计算法根据利用的参考帧的不同,帧间编码分为两类:
·只利用前项参考帧的P帧编码
·同时利用前项、后项参考帧的B帧编码
8)运动估计与运动补偿:
帧间编码利用两帧之间的相似性,将前后两帧相减得到的误差作为编码的对象,由于时间上的冗余,残差图像的绝对值将集中于零附近,可以用较短的码字来传送,这是帧间编码的核心思想。实现帧间编码的方法是运动估计和运动补偿。
运动估计算法在编码端使用,一般步骤为:
·对当前帧中某个宏块,按照一定规则在过去帧的窗口中寻找匹配部分,找到运动矢量
·根据运动矢量,将过去帧移位,求得对当前帧的估计
·将这个估计和当前帧相减,求得估计的残差值
·将运动矢量和残差传送到接收端
运动补偿算法在解码端使用,一般步骤为:
·根据收到的运动矢量将过去帧做位移,得到对当前帧的估计
·将这个估计和接收到的残差相加,得到当前帧的补偿结果
运动估计运动补偿算法是MPEG-4的核心算法之一,有多种估计算法,主要差异有:
·匹配准则:采用MAD、MSD等
·搜索策略:三步法、交叉搜索法等
·估计块大小的确定:分级算法、自适应算法等
最常用的算法有二维对数搜索法、三步搜索法、对偶搜索法等。
9)正交变换编码:
从数学角度来说,正交变换本身并不能对图像数据进行有效的压缩,但正交变换改变了图像数据的表现域或表现形式,为编码压缩提供了可能。
傅里叶变换,将图像数据从空间域变换到了频域,原来彼此相关的图像阵列变成了基本独立的变换系数矩阵,其中幅值大的变换系数集中在低频部分,但几乎占了图像信息的90%左右,而高频部分的幅值均很小或趋向零。变换编码就是对正交变换得到的系数矩阵进行量化编码。
图像变换编码的一般过程为:
·确定图像矩阵阶数
·选择正交变换方法
·正交变换
·对变换系数矩阵编码
·信息传输
·逆变换,图像复原
选择那种变换方法将视存储容量、图像质量、硬件条件等因素综合考虑。
在正交变换中,往往要将一幅图像划分为若干正方形的图像子块来进行,子块越小计算量越小,实现时硬件装置的规模也越小,但均方差较大,在同样的允许失真度下压缩比小。从改善图像质量考虑,适当加大子块是明智的举措。硬件的复杂程序与规模和子块成比例,变换中图像子块一般取8x8或16x16。
对相关系数矩阵编码时,比特数的分配可采用等长码与不等长码。
10)整数变换编码:
离散余弦变换DCT由于能够极大地去除图像元素在变换域中的相关性,在图像、视频编码领域得到广泛应用。但DCT采用浮点运算,需要占用较大的内存资源,消耗更多的编码时间;由于受处理器运算位数的影响,浮点运算存在截断误差,计算精度不高;由于存在截断误差,因此DCT反变换不能完全恢复原始数据。采用整数变换矩阵代替DCT的浮点数变换矩阵,不存在精度误差,能保证编码的可逆性;整数运算的复杂度更低,能够设计出运算效率非常高的快速算法;整数变换对处理器的性能要求下降很多。因此,最新的国际标准H.264和新制定的标准都采用了整数变换。
8x8整数变换及反变换公式分别为Y=PXP'和X=P'YP,其中X、Y分别为输入、输出矩阵,P为变换矩阵,一般公式为:
encode
矩阵P中,k1、k2、k3、k4为正整数,变换的性能取决于这4个数的选择,常用的测试选择(10,9,6,2)、(5,4,3,1)、(5,6,4,1)。
11)离散余弦变换的矩阵表示:
对一维离散余弦变换:离散余弦变换矩阵    离散余弦变换矩阵
二维离散余弦变换:离散余弦变换矩阵    离散余弦变换矩阵
式中:离散余弦变换矩阵
C是一个正交矩阵,离散余弦变换矩阵,E为单位矩阵。

3. 视频编码标准:

国际上主要的视频编码标准有:ITU-T制定的H.261、H.263、H.263+、H.263++及H.264系列,ISO制定的MPEG-1、MPEG-2、MPEG-4、MPEG-7及MPEG-21系列。
1)ITU-T的H.26X:
国际电信联盟ITU制定了H.261、H.263、H.263+、H.263++及H.264等一系列视频压缩编码标准,统称H.26X标准。
H.261:制定于1998年,用于基于ISDN的视频会议,数码率pX64KB/s,支持CIF、QCIF图像格式,使用了DCT编码和帧间预测及运动补偿等技术。
H.263:制定于1994年,用于可视电话、视频会议等低码率视频通信,数码率8~1.5Mb/s,支持图像格式Sub-QCIF、QCIF、CIF、4CIF、16CIF等。编码技术在H.261和MPEG-1基础上发展起来的,有I帧、P帧、PB帧,使用了基于语法的算术编码。后来又提出了增强版本H.263+和H.263++。
H.264:2000年制定,面向多媒体网络应用,用于可变码率场合。编码使用4x4整数变换,多模式运动预测,1/4、1/8像素精度运动补偿,ABT技术,多预测参考帧,CABAC编码等技术。
2)ISO的MPEG-X:
国际标准化组织ISO运动图像专家组MPEG制定了MPEG-1、MPEG-2、MPEG-4、MPEG-7及MPEG-21等系列音视频编码标准,统称MPEG-X标准。
MPEG-1:制定于1992年,针对1.5Mb/s以下数据传输率的数字存储媒体运动图像及其伴音编码的国际标准,主要用于CD-ROM存储视频图像,它对标准交换格式SIF标准分辨率,即NTSC的352x240和PAL制的352x288,每秒可播放30帧画面,具备CD音质。使用MPEG-1算法,可将一部120分钟长的电影压缩到1.2GB左右,被广泛用于VCD制作与存储。
MPEG-2:制定于1994年,针对3~10Mb/s的数据传输率制定的运动图像及其伴音编码的国际标准,可以提供一个较广的范围改变压缩比以适应不同画面质量、存储容量和带宽要求。除了作为DVD标准外,还可以用于广播、有线电视网、电缆网络等提供广播级的数字视频。
MPEG-4:1998年公布,针对一定比特率下的视频、音频编码,提供多媒体系统的交互性。MPEG-4编码、存储高效,并引入了视频对象,使得可以进行交互操作,视频对象可以是一个人,也可以是这个人的语音或一段背景音乐。MPEG-4编码在数字电视、动态图像、互联网、实时多媒体监控、移动多媒体通信等方面得到广泛应用,网络上流行的ASF流、DivX视频编码技术都是采用这种编码方式。但MPEG-4是一种高比率有损压缩,图像质量无法与MPEG-2相比,而且有专利费用问题,支持度并不高。
MPEG-7:1998年提出,是一种面向内容的描述语言和格式标准,用以解决图像、声音信息的管理和迅速搜索问题,正式名称是多媒体内容描述接口。
MPEG-21:1999年提出,是一个支持通过异构网络和设备使用户透明而广泛地使用多媒体资源的标准,目的是建立一个交互的多媒体框架。这个标准是一些能通过访问全球网络和设备实现对多媒体资源的透明和增强使用的关键技术的集成,主要功能包括内容创建、内容产品、内容发布、内容消耗和使用、内容表示、知识产权管理和保护、内容识别和描述、财政管理、用户隐私权、终端和网络资源抽取以及事件报告等。

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659