H.264/MPEG4等编码格式

来源:百度文库 编辑:神马文学网 时间:2024/04/19 08:20:11
用户名
密码
首届移动博客高峰论坛火热进行中!移动博客频道全新改版参加调查立即得正版《如果爱》享受遨游订房服务,5%现金返还blogcn网络提速,请大家协助测试BlogCN优秀Blogger评选热烈开幕Blogcn电子期刊正刊第十五期出刊了,欢迎订阅!


虫儿飞[申请][帮助][退出]
虫儿飞,花儿追……

2005-1-17
JPEG2000综述 [转]
JPEG2000图像压缩标准及其关键算法
周 宁    汤晓军    徐维朴
(西安交通大学人工智能与机器人研究所西安710049)
摘  要:JPEG2000是为适应不断发展的图像压缩应用而出现的新的静止图像压缩标准。阐述了JPEG2000图像编码系统的实现过程, 对其中采用的基本算法和关键技术进行了描述,介绍了这一新标准的特点及应用场合,并对其性能进行了分析。
关键词:JPEG2000; 图像压缩;离散小波变换; 速率控制;感兴趣区域
1  引言
随着多媒体应用领域的快速增长和网络的不断发展,传统的JPEG压缩技术已无法满足人们对数字化多媒体图像资料的要求,一种功能更强大、效率更卓越的静止图像压缩标准被提到制定日程上,这就是JPEG2000。
JPEG(Joint Photographic Experts Group)是在国际标准化组织(ISO)领导之下制定静态图像压缩标准的委员会,第一套国际静态图像压缩标准ISO 10918-1(JPEG)就是该委员会制定的。由于JPEG优良的品质,使他在短短几年内获得了极大的成功,被广泛应用于互联网和数码相机领域,网站上80%的图像都采用了JPEG压缩标准。然而,目前的JPEG静止图像压缩标准,具有中端和高端比特速率上的良好的速率畸变特性,但在低比特率范围内,将会出现很明显的方块效应,其质量变得不可接受。JPEG不能在单一码流中提供有损和无损压缩,并且不能支持大于64×64 K的图像压缩。同时,尽管当前的JPEG标准具有重新启动间隔的规定,但当碰到比特差错时图像质量将受到严重的损坏。
针对这些问题,自1997年3月起,JPEG图像压缩标准委员会开始着手制定新一代的图像压缩标准以解决上述问题。2000年3月的东京会议,确定了彩色静态图像的新一代编码方式JPEG2000图像压缩标准的编码算法。
JPEG2000系统分为下列7个部分:
①JPEG2000图像编码系统;
②扩充(给①的核心定义添加更多的特征和完善度);
③运动JPEG2000;
④一致性;
⑤参考软件(目前包含Java和C实现);
⑥复合图像文件格式(用于文件扫描和传真应用程序);
⑦对①的最小支持(技术报告)。
①为完全被认可的ISO标准,定义了核心压缩技术和最小文件格式,②~⑥定义压缩和文件格式的扩充。其中,①已经制定完成,其余部分还在制定过程中。本文所讨论的JPEG2000标准就是基于第1部分的。
2  JPEG2000系统的特点
JPEG2000以其特有的优点弥补了现行JPEG标准的不足。离散小波变换算法中,图像可以转换成一系列可更加有效存储像素模块的子带,因此,JPEG2000格式的图像压缩比可在现在的JPEG基础上再提高10%~30%,而且压缩后的图像显得更加细腻平滑。也就是说,在网上观看采用JPEG2000压缩的图像时,不仅下载速率比采用JPEG格式的快近30%,而且品质也将更好。对于目前的JPEG标准,在同一个压缩码流中不能同时提供有损和无损压缩,而在JPEG2000系统中,通过选择参数, 能够对图像进行有损和无损压缩,可满足图像质量要求很高的医学图像、图像库等方面的处理需要。现在网络上的JPEG图像下载时是按“块”传输的,因此只能逐行地显示,而采用JPEG2000格式的图像支持渐进传输(Progressive Transmission),这就允许图像按照所需的分辨率或像素精度进行重构,用户根据需要,对图像传输进行控制,在获得所需的图像分辨率或质量要求后,便可终止解码,而不必接收整个图像的压缩码流。由于JPEG2000采用小波技术,利用其局部分辨特性,在不解压的情况下,可随机获取某些感兴趣的图像区域(ROI)的压缩码流,对压缩的图像数据进行传输、滤波等操作。
3  JPEG2000图像编解码系统
本节主要介绍JPEG2000图像编解码系统。其编码器和解码器的框图如图1所示。

在编码器中,首先对源图像进行前期预处理,对处理的结果进行离散小波变换,得到小波系数。然后对小波系数进行量化和熵编码,最后组成标准的输出码流(位流)。解码器是编码器的反过程,首先对码流进行解包和熵解码,然后是反向量化和离散小波反变换,对反变换的结果进行后期处理合成,就得到重构的图像数据。尽管JPEG2000编解码过程与JPEG类似,但是对于每一步的具体实现两者却有非常大的差异。编码过程的一般步骤如下:
(1) 将有多个颜色分量组成的图像分解成单一颜色分量的图像。分量之间存在一定的相关性,通过分解相关的分量变换,可减少数据间的冗余度,提高压缩效率;
(2) 分量图像被分解成大小统一的矩形片——图像片。图像片是进行变换和编解码的基本单元;
(3) 每一个图像片进行小波变换。产生多级系数图像。这些不同级数的系数图像可以重构出不同分辨率的图像;
(4) 多级分解的结果是由小波系数组成的多个子带。他们表示图像片中局部区域(而不是整幅图像)的频率特性;
(5) 对系数子带进行量化,并且组成矩形数组的“码块”;
(6) 对一个码块中的系数位平面(也就是一个码块中整个系数中具有同样权值的那些位)进行熵编码;
(7) 相对于图像的背景区域,可以对感兴趣区域进行更高质量的编码;
(8) 通过在位流中加入掩码来增加抗干扰性;
(9) 在每一个码流的最前部都有一个头结构,他描述的是源图像的属性,各种分解情况和编码风格。这个头结构可以用来进行定位、抽取、译码和重构图像,得到的图像可以具有所期望的分辨率、重现精度、感兴趣的区域或是其他特性。
编码过程主要分为以下几个过程:预处理、核心处理和位流组织。预处理部分包括对图像分片、直流电平(DC)位移和分量变换。核心处理部分由离散小波变换、量化和熵编码组成。位流组织部分则包括区域划分、码块、层和包的组织。
3.1  预处理
(1)图像分片
分片指的是把源图像分割成相互不重叠的矩形块——图像片,每一个图像片作为一个独立的图像进行压缩编码。编码中的所有操作都是针对图像片进行的。图像片是进行变换和编解码的基本单元。图像的分片降低了对存储空间的要求,并且由于他们重构时也是独立进行的,所以可以用来对图像的特定区域而不是整幅图像进行解码。当然,图像分片会影响图像质量。比较小的图像片会比大图像片产生更大的失真。图像分片在低比特率表示图像的时候所造成的图像失真会更加严重。
(2)DC电平位移
在对每一图像片进行正向离散小波变换之前,都要进行直流电平位移。目的是在解码时,能够从有符号的数值中正确恢复重构的无符号样本值。直流电平位移是对仅有无符号数组成的图像片的像素进行的。电平位移并不影响图像的质量。在解码端,在离散小波反变换之后,对重构的图像进行反向直流电平位移。
(3)分量变换
JPEG2000支持多分量图像。不同的分量不需要有相同的比特深度,也不需要都是无符号或有符号数。对于可恢复(无损)系统,唯一的要求就是每一个输出分量图像的比特深度必须跟相应输入分量图像的比特深度保持一致。
3.2  核心处理
(1)小波变换
不同于传统的DCT变换,小波变换具有对信号进行多分辨率分析和反映信号局部特征的特点。通过对图像片进行离散小波变换,得到小波系数图像,而分解的级数视具体情况而定。小波系数图像由几种子带系数图像组成。这些子带系数图像描述的是图像片水平和垂直方向的空间频率特性。不同子带的小波系数反映图像片不同空间分辨率的特性。通过多级小波分解,小波系数既能表示图像片中局部区域的高频信息(如图像边缘),也能表示图像片中的低频信息(如图像背景)。这样,即使在低比特律的情况下,我们也能保持较多的图像细节(如边缘)。另外,下一级分解得到的系数所表示图像在水平和垂直方向的分辨率只有上一级小波系数所表示的图像的一半。所以,通过对系数图像的不同级数进行解码,就可以得到具有不同空间分辨率(或清晰,或模糊)的图像。
小波变换因其具有的这种优点被JPEG2000标准所采用。在编码系统中,对每个图像片进行Mallat塔式小波分解。经过大量的测试,JPEG2000选用两种小波滤波器:LeGall 5/3滤波器和Daubechies 9/7滤波器。前者可用于有损或无损图像压缩,后者只能用于有损压缩。
在JPEG2000标准中,小波滤波器可以有2种实现模式:基于卷积的和基于提升机制的。而具体实现时,对图像边缘都要进行周期对称延伸,这样可以防止滤波器对图像边缘操作时产生失真。另外,为了减小变换时所需空间的开销,标准中还应用了基于行的小波变换技术。
(2)量化
由于人类视觉系统对图像的分辨率要求有一定的局限,通过适当的量化减小变换系数的精度,可在不影响图像主观质量的前提下,达到图像压缩的目的。量化的关键是根据变换后图像的特征、重构图像质量要求等因素设计合理的量化步长。量化操作是有损的,会产生量化误差。不过一种情况除外,那就是量化步长是1,并且小波系数都是整数,利用可恢复整数5/3拍小波滤波器进行小波变换得到的结果就符合这种情况。
在JPEG2000标准中,对每一个子带可以有不同的量化步长。但是在一个子带中只有一个量化步长。量化以后,每一个小波系数有2部分来表示:符号和幅值。对量化后的小波系数进行编码。对于无损压缩,量化步长必须是1。
(3)熵编码
图像经过变换、量化后,在一定程度上减少了空域和频域上的冗余度,但是这些数据在统计意义上还存在一定的相关性,为此采用熵编码来消除数据间的统计相关。将量化后的子带系数划分成小的矩形单元——码块(code block)。

如图2所示,采用两层编码策略,首先使用基于上下文的算术编码器,每个码块进行独立的嵌入式码块编码,得到码块的嵌入式压缩位流。然后,根据率失真优化原则,采用PCRD(Post Compression Rate Distortion)优化算法思想,将所有码块的压缩位流适当截取,组织成具有不同质量级的压缩位流层。每一层上的压缩位流连同其前面的所有层的压缩位流,可重构出一定质量的图像。在分层组织压缩位流时,须对每个码块在每一层上的贡献信息进行编码,即对码块位流在该层的截断点信息等编码。由于图像采用小波变换,整个图像压缩码流具有分辨率可分级性,从而,压缩码流可同时具有质量上和分辨率上的可分级性。由于对码块进行独立编码,因此,可根据需要,随机获取并解码相应的码块压缩位流,重构出所需的图像区域。
①第一层编码算法
与传统的依次对每个系数进行算术熵编码不同,JPEG2000编码系统把码块中的量化系数组织成若干个位平面,从最高有效位平面(MSB)开始,依次对每个位平面上的小波系数位进行算术编码。
第一层编码可以看作2部分:上下文的生成(CF)和算术编码器(AE)。在上下文的生成中,以一定的顺序扫描码块中的所有位。在码块的每个位平面上,从左上角系数开始,从左到右,从上到下进行扫描,并为每一位生成一个上下文。算术编码器根据生成的上下文,对每一位进行编码。
在量化后,小波系数被转换为符号-振幅模式。在从MSB到LSB编码时,当遇到第一个为1的比特时,这个像素被称作是显著的,否则,为不显著的。所有比特的上下文都是由他们的邻域通过以下的4种方法产生:
零编码(zero coding,ZC)用来编码非显著像素在当前的位平面中是否将变得显著;
游程编码(run-length coding, RLC)用来编码位于同一列中的4个非显著性像素,如果他们的邻域都是非显著的;
符号编码(sign coding, SC)当该位变得显著后,编码他的符号位;
幅度编码(Magnitude Refinement, MR)用来编码显著位。
每个位平面都在3个编码通道中进行编码。通道1是重要性传播通道(Significance Propagation Pass),至少有一个重要性邻域的像素,在此通道进行编码,使用ZC和SC。通道2是幅度细化通道(Magnitude Refinement Pass),所有的重要位在此通道进行编码,使用MR。通道3是清除通道(Cleanup Pass),所有没有在上两个通道中进行编码的像素,在此通道中进行编码,使用ZC,LRC和SC。位平面中的每一位在3个通道中进行检查来确定是否应当被编码。
由编码通道得到的上下文和与其对应的数据一起,送至算术编码器进行编码。在这里,采用了自适应二进制算术编码[1],主要是考虑到计算的复杂度以及实现的方便性。在进行算术编码后,对每一个码块,得到一个独立的嵌入式码块压缩位流。
②第二层编码算法
在第二层编码算法中,采用PCRD率失真优化算法思想[1,2],对所有码块的嵌入式压缩位流进行适当的截取,分层组织,形成整个图像的具有质量可分级的压缩码流。第二层编码算法也可以看作两部分:速率控制和分层组织压缩位流。速率控制是指通过一定的编解码措施,获得给定压缩码率下的最佳重构图像质量。分层组织压缩位流根据编码参数所规定的分层层数以及每一层的编码速率,估算每一层的率失真门限,然后根据每一层估计出的率失真门限,按照码块率失真算法,找到每个码块嵌入式压缩位流在该层上的截断点,将截断的码块压缩位流进行打包,按照规定的格式存储,形成图像压缩码流。将码流分层组织,每一层含有一定的质量信息,在前面层的基础上改善图像质量。这样用户可以根据自己的需要,控制图像的传输,在取得满意的图像效果后,中止传输,在某种程度上缓解当前网络带宽有限而图像数据量大而造成的瓶颈问题。
3.3  位流组织
为了适合图像交换,更好地应用JPEG2000压缩码流的功能,JPEG2000标准规定了存放压缩位流和解码所需参数的格式,把压缩码流以包为单元进行组织,形成最终的码流。
4  JPEG2000中的关键技术
在这一节中,对JPEG2000中所使用的关键技术加以说明。
4.1 离散小波变换
JPEG2000与传统JPEG最大的不同在于他放弃了JPEG所采用的以离散余弦变换(DCT)为主的区块编码方式,转而采用以小波变换(DWT)为主的多解析编码方式。 
余弦变换是经典的谱分析工具,他考察的是整个时域过程的频域特征或整个频域过程的时域特征,因此对于平稳过程,他有很好的效果,但对于非平稳过程,他却有诸多不足。在JPEG中,离散余弦变换将图像压缩为8×8 的小块,然后依次放入文件中,这种算法靠丢弃频率信息实现压缩,因而图像的压缩率越高,频率信息被丢弃的越多。在极端情况下,JPEG图像只保留了反映图像外貌的基本信息,精细的图像细节都损失了。小波变换是现代谱分析工具,他既能考察局部时域过程的频域特征,又能考察局部频域过程的时域特征,因此即使对于非平稳过程,处理起来也得心应手。他能将图像变换为一系列小波系数,这些系数可以被高效压缩和存储,此外,小波的粗略边缘可以更好地表现图像,因为他消除了DCT压缩普遍具有的方块效应。
4.2  速率控制算法
JPEG2000通过采用速率控制方法来计算码流的理想截断点,从而获得给定压缩码率下的最佳重构图像质量。速率控制使用了PCRD率失真优化算法。率失真优化,即给定整个压缩码流的最大编码速率,找出每个码块压缩位流的适当截断点,在满足的条件下,使重构图像失真最小。从而使得嵌入式码块编码具有如下特点:生成的压缩位流可根据需要,被截断成不同长度的位流子集;将所有码块的截断位流组织起来,可重构出一定质量的图像。
4.3  渐进传输特性
现在网络上的JPEG图像下载时是按“块”传输的,因此只能逐行显示,而采用JPEG2000格式的图像支持渐进传输。JPEG2000中的渐进传输有2种,按照分辨率的渐进传输和按照质量的渐进传输。按照质量的渐进传输就是先传输图像轮廓数据,然后再逐步传输细节数据来不断提高图像质量,而按照分辨率的渐进传输则先传输分辨率较低的图像,后一幅图像在前一幅图像的基础上提高其分辨率。图像的渐进传输使得用户不需要像以前那样等图像全部下载后才决定是否需要,有助于快速地浏览和选择大量图片,从而有效的解决了网络传输的瓶颈问题。
4.4  感兴趣区域压缩
JPEG2000一个极其重要的优点就是ROI(Region of Interest,感兴趣区域)。用户可以任意指定图片上感兴趣的区域,然后在压缩时对这些区域指定压缩质量,或在恢复时指定某些区域的解压缩要求。这是因为子波在空间和频率域上具有局域性,要完全恢复图像中的某个局部,并不需要所有编码都被精确保留,只要对应他的一部分编码没有误差就可以了。在实际应用中,我们就可以对一幅图像中感兴趣的部分采用低压缩比以获取较好的图像效果,而对其他部分采用高压缩比以节省存储空间。这样就能在保证不丢失重要信息的同时又有效地压缩了数据量,实现了真正的“交互式”压缩。
5  JPEG2000标准的应用
随着科技的发展,网络已经渗透到每个人的生活之中。然而,受到网络带宽的限制,高质量的图像由于数据量很大,在网络上的传输延迟很大。因此,对于使用PC机、笔记本、掌上电脑或PDA,通过Modem接入因特网访问图像数据的用户来说,允许根据需要选择恰当的图像分辨率进行浏览和传输是非常必要的。
在军事侦察和气象预报中,由卫星遥感得到的图像必须通过远距离无线信道传输,传输误码的出现不可避免。JPEG2000编码器特有的码流组织形式是输出码流具有有效抑制误码的能力。这样,码流通过无线卫星通讯信道发还给地面接收站后,地面接收站在解码过程中可以利用JPEG2000内部的码流组织形式来避免由于传输误码而造成的错误解码。
此外,在安全确认、身份认证及医学领域,JPEG2000都有着其广泛的应用。可以预测,在不久的将来,JPEG2000将在以下领域得到广泛的应用:因特网、移动和便携设备、印刷、扫描(出版物预览)、数码相机、遥感、传真(包括彩色传真和因特网传真)、医学应用、数字图书馆和电子商务等。
6  结论
JPEG2000旨在创建一个新的图像编码系统,该压缩编码系统的率失真和主观图像质量优于现有的JPEG标准,能够提供对图像的低码率的压缩,并且对压缩码流可进行灵活的处理,如随机获取部分压缩码流、图像的渐进传输、感兴趣区域的实现以及压缩码流较强的容错性能等,该标准将与现行JPEG标准兼容。JPEG2000图像压缩标准以其优秀的性能,必将在数码相机、遥感、传真、医疗以及电子商务等多个领域得到广泛的应用,成为21世纪的主流静态图像压缩标准。
参考文献
[1]JPEG 2000 Image Coding ystem.JPEG 2000 Final Committee Draft Version 1.0, 2000,16(3)
[2]Taubman D. High Performance Scable Image Compression with EBCOT.IEEE Trans Image Processing,1994,3(9):572~578
[3]张晓娣,等.新一代的静止图像压缩标准 JPEG2000.电信科学,2001(5)
[4]李冬梅.发展中的静止图像压缩标准JPEG2000.电视技术,2001(6)
[5]王瑞轩.面向JPEG2000的二维DWT的VLSI设计与仿真,2002
xiaochongchong 发表于 >2005-1-17 20:15:19[全文][评论][引用][推荐][档案][推给好友]
2005-1-7
考完试了
终于结束了研究生的第一学期的考试,感想颇多。
下学期要好好学习了。
剩下的时间做些jpeg2000相关的一些工作,然后就回家过年了……
xiaochongchong 发表于 >2005-1-7 23:42:18[全文][评论][引用][推荐][档案][推给好友]
2005-1-2
新标准H264技术亮点 [转]
视频编码新标准H.264的技术亮点
摘要:
面向实际应用,由ISO/IEC和ITU-T两大国际标准化组织共同制定的H.264建议是视频编码技术的新发展。它在多模式运动估计、整数变换、统一VLC符号编码、分层编码语法等方面都有它的独到之处。因此H.264算法具有很高的编码效率,其应用前景应是不言而喻的。
关键词:视频编码 图像通信 JVT
上个世纪80年代以来,ISO/IEC制定的MPEG-x和ITU-T制定的H.26x两大系列视频编码国际标准的推出,开创了视频通信和存储应用的新纪元。从H.261视频编码建议,到H.262/3、MPEG-1/2/4等都有一个共同的不断追求的目标,即在尽可能低的码率(或存储容量)下获得尽可能好的图像质量。而且,随着市场对图像传输需求的增加,如何适应不同信道传输特性的问题也日益显现出来。这就是IEO/IEC和ITU-T两大国际标准化组织联手制定的视频新标准H.264所要解决的问题。
H.261是最早出现的视频编码建议,目的是规范ISDN网上的会议电视和可视电话应用中的视频编码技术。它采用的算法结合了可减少时间冗余的帧间预测和可减少空间冗余的DCT变换的混合编码方法。和ISDN信道相匹配,其输出码率是p×64kbit/s。p取值较小时,只能传清晰度不太高的图像,适合于面对面的电视电话;p取值较大时(如 p>6),可以传输清晰度较好的会议电视图像。H.263 建议的是低码率图像压缩标准,在技术上是H.261的改进和扩充,支持码率小于64kbit/s的应用。但实质上H.263以及后来的H.263+和H.263++已发展成支持全码率应用的建议,从它支持众多的图像格式这一点就可看出,如Sub-QCIF、QCIF、CIF、4CIF甚至16CIF等格式。
MPEG-1标准的码率为1.2Mbit/s左右,可提供30帧CIF(352×288)质量的图像,是为CD-ROM光盘的视频存储和播放所制定的。MPEG-l标准视频编码部分的基本算法与H.261/H.263相似,也采用运动补偿的帧间预测、二维DCT、VLC游程编码等措施。此外还引入了帧内帧(I)、预测帧(P)、双向预测帧(B)和直流帧(D)等概念,进一步提高了编码效率。在MPEG-1的基础上,MPEG-2标准在提高图像分辨率、兼容数字电视等方面做了一些改进,例如它的运动矢量的精度为半像素;在编码运算中(如运动估计和DCT)区分“帧”和“场”;引入了编码的可分级性技术,如空间可分级性、时间可分级性和信噪比可分级性等。近年推出的MPEG-4标准引入了基于视听对象(AVO:Audio-Visual Object)的编码,大大提高了视频通信的交互能力和编码效率。MPEG-4中还采用了一些新的技术,如形状编码、自适应DCT、任意形状视频对象编码等。但是MPEG-4的基本视频编码器还是属于和H.263相似的一类混合编码器。
总之,H.261建议是视频编码的经典之作,H.263是其发展,并将逐步在实际上取而代之,主要应用于通信方面,但H.263众多的选项往往令使用者无所适从。MPEG系列标准从针对存储媒体的应用发展到适应传输媒体的应用,其核心视频编码的基本框架是和H.261一致的,其中引人注目的MPEG-4的“基于对象的编码”部分由于尚有技术障碍,目前还难以普遍应用。因此,在此基础上发展起来的新的视频编码建议H.264克服了两者的弱点,在混合编码的框架下引入了新的编码方式,提高了编码效率,面向实际应用。同时,它是两大国际标准化组织的共同制定的,其应用前景应是不言而喻的。
一、JVT的H.264
H.264是ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)的联合视频组(JVT:joint video team)开发的一个新的数字视频编码标准,它既是ITU-T的H.264,又是ISO/IEC的MPEG-4的第10 部分。1998年1月份开始草案征集,1999年9月,完成第一个草案,2001年5月制定了其测试模式TML-8,2002年6月的 JVT第5次会议通过了H.264的FCD板。目前该标准还在开发之中,预计明年上半年可正式通过。
H.264和以前的标准一样,也是DPCM加变换编码的混合编码模式。但它采用“回归基本”的简洁设计,不用众多的选项,获得比H.263++好得多的压缩性能;加强了对各种信道的适应能力,采用“网络友好”的结构和语法,有利于对误码和丢包的处理;应用目标范围较宽,以满足不同速率、不同解析度以及不同传输(存储)场合的需求;它的基本系统是开放的,使用无需版权。
在技术上,H.264标准中有多个闪光之处,如统一的VLC符号编码,高精度、多模式的位移估计,基于4×4块的整数变换、分层的编码语法等。这些措施使得H.264算法具有很的高编码效率,在相同的重建图像质量下,能够比H.263节约50%左右的码率。H.264的码流结构网络适应性强,增加了差错恢复能力,能够很好地适应IP和无线网络的应用。
二、H264的技术亮点
分层设计
H.264的算法在概念上可以分为两层:视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示,网络提取层(NAL:Network Abstraction Layer)负责以网络所要求的恰当的方式对数据进行打包和传送。H.264编码器分层结构如图1所示。在VCL和NAL之间定义了一个基于分组方式的接口,打包和相应的信令属于NAL的一部分。这样,高编码效率和网络友好性的任务分别由VCL和NAL来完成。
VCL层包括基于块的运动补偿混合编码和一些新特性。与前面的视频编码标准一样,H.264没有把前处理和后处理等功能包括在草案中,这样可以增加标准的灵活性。
NAL负责使用下层网络的分段格式来封装数据,包括组帧、逻辑信道的信令、定时信息的利用或序列结束信号等。例如,NAL支持视频在电路交换信道上的传输格式,支持视频在Internet上利用     RTP/UDP/IP传输的格式。NAL包括自己的头部信息、段结构信息和实际载荷信息,即上层的VCL数据。(如果采用数据分割技术,数据可能由几个部分组成)。
高精度、多模式运动估计
H.264支持1/4或1/8像素精度的运动矢量。在1/4像素精度时可使用6抽头滤波器来减少高频噪声,对于1/8像素精度的运动矢量,可使用更为复杂的8抽头的滤波器。在进行运动估计时,编码器还可选择“增强”内插滤波器来提高预测的效果。
在H.264的运动预测中,一个宏块(MB)可以按图2被分为不同的子块,形成7种不同模式的块尺寸。这种多模式的灵活和细致的划分,更切合图像中实际运动物体的形状,大大提高了运动估计的精确程度。在这种方式下,在每个宏块中可以包含有1、2、4、8或16个运动矢量。
在H.264中,允许编码器使用多于一帧的先前帧用于运动估计,这就是所谓的多帧参考技术。例如2帧或3帧刚刚编码好的参考帧,编码器将选择对每个目标宏块能给出更好的预测帧,并为每一宏块指示是哪一帧被用于预测。
4×4块的整数变换
H.264与先前的标准相似,对残差采用基于块的变换编码,但变换是整数操作而不是实数运算,其过程和DCT基本相似。这种方法的优点在于:在编码器中和解码器中允许精度相同的变换和反变换,便于使用简单的定点运算方式。也就是说,这里没有“反变换误差”。 变换的单位是4×4块,而不是以往常用的8×8块。由于用于变换块的尺寸缩小,运动物体的划分更精确,这样,不但变换计算量比较小,而且在运动物体边缘处的衔接误差也大为减小。为了使小尺寸块的变换方式对图像中较大面积的平滑区域不产生块之间的灰度差异,可对帧内宏块亮度数据的16个4×4块的DC系数(每个小块一个,共16个)进行第二次4×4块的变换,对色度数据的4个4×4块的DC系数(每个小块一个,共4个)进行2×2块的变换。
H.264为了提高码率控制的能力,量化步长的变化的幅度控制在12.5%左右,而不是以不变的增幅变化。变换系数幅度的归一化被放在反量化过程中处理以减少计算的复杂性。为了强调彩色的逼真性,对色度系数采用了较小量化步长。
统一的VLC
H.264中熵编码有两种方法,一种是对所有的待编码的符号采用统一的VLC(UVLC :Universal VLC),另一种是采用内容自适应的二进制算术编码(CABAC:Context-Adaptive Binary Arithmetic Coding)。CABAC是可选项,其编码性能比UVLC稍好,但计算复杂度也高。UVLC使用一个长度无限的码字集,设计结构非常有规则,用相同的码表可以对不同的对象进行编码。这种方法很容易产生一个码字,而解码器也很容易地识别码字的前缀,UVLC在发生比特错误时能快速获得重同步。
这里,x0,x1,x2,…是INFO比特,并且为0或1。图4列出了前9种码字。如:第4号码字包含INFO01,这一码字的设计是为快速再同步而经过优化的,以防止误码。
帧内预测
在先前的H.26x系列和MPEG-x系列标准中,都是采用的帧间预测的方式。在H.264中,当编码Intra图像时可用帧内预测。对于每个4×4块(除了边缘块特别处置以外),每个像素都可用17个最接近的先前已编码的像素的不同加权和(有的权值可为0)来预测,即此像素所在块的左上角的17个像素。显然,这种帧内预测不是在时间上,而是在空间域上进行的预测编码算法,可以除去相邻块之间的空间冗余度,取得更为有效的压缩。
4×4方块中a、b、...、p为16 个待预测的像素点,而A、B、...、P是已编码的像素。如m点的值可以由(J+2K+L+2)/ 4 式来预测,也可以由(A+B+C+D+I+J+K+L)/ 8 式来预测,等等。按照所选取的预测参考的点不同,亮度共有9类不同的模式,但色度的帧内预测只有1类模式。
面向IP和无线环境
H.264 草案中包含了用于差错消除的工具,便于压缩视频在误码、丢包多发环境中传输,如移动信道或IP信道中传输的健壮性。
为了抵御传输差错,H.264视频流中的时间同步可以通过采用帧内图像刷新来完成,空间同步由条结构编码(slice structured coding)来支持。同时为了便于误码以后的再同步,在一幅图像的视频数据中还提供了一定的重同步点。另外,帧内宏块刷新和多参考宏块允许编码器在决定宏块模式的时候不仅可以考虑编码效率,还可以考虑传输信道的特性。
除了利用量化步长的改变来适应信道码率外,在H.264中,还常利用数据分割的方法来应对信道码率的变化。从总体上说,数据分割的概念就是在编码器中生成具有不同优先级的视频数据以支持网络中的服务质量QoS。例如采用基于语法的数据分割(syntax-based data partitioning)方法,将每帧数据的按其重要性分为几部分,这样允许在缓冲区溢出时丢弃不太重要的信息。还可以采用类似的时间数据分割(temporal data partitioning)方法,通过在P帧和B帧中使用多个参考帧来完成。
在无线通信的应用中,我们可以通过改变每一帧的量化精度或空间/时间分辨率来支持无线信道的大比特率变化。可是,在多播的情况下,要求编码器对变化的各种比特率进行响应是不可能的。因此,不同于MPEG-4中采用的精细分级编码FGS(Fine Granular Scalability)的方法(效率比较低),H.264采用流切换的SP帧来代替分级编码。
三、TML-8性能
TML-8为H.264的测试模式,用它来对H.264的视频编码效率进行比较和测试。测试结果所提供的PSNR已清楚地表明,相对于MPEG-4(ASP:Advanced Simple Profile)和H.263++(HLP:High Latency Profile)的性能,H.264的结果具有明显的优越性,如图5所示。
H.264的PSNR比MPEG-4(ASP)和H.263++(HLP)明显要好,在6种速率的对比测试中,H.264的PSNR比MPEG-4(ASP)平均要高2dB,比H.263(HLP)平均要高3dB。6个测试速率及其相关的条件分别为:32 kbit/s速率、10f/s帧率和QCIF格式;64 kbit/s速率、15f/s帧率和QCIF格式;128kbit/s速率、15f/s帧率和CIF格式;256kbit/s速率、15f/s帧率和QCIF格式;512 kbit/s速率、30f/s帧率和CIF格式;1024 kbit/s速率、30f/s帧率和CIF格式。
四、实现难度
对每个考虑实际应用的工程师而言,在关注H.264的优越性能的同时必然会衡量其实现难度。从总体上说,H.264性能的改进是以增加复杂性为代价而获得的。但是,随着技术的发展,这种复杂性的增加是在我们当前或不久的将来的技术可接受的范围之内的。实际上,考虑到复杂性的限制,H.264对一些计算量特别大的改进算法未予采用,如H.264未采用全局运动补技术,这在MPEG-4的ASP中是采用的,并增加了相当的编码复杂性。
H.264和MPEG-4两者都包括了B帧和比MPEG-2、H.263或MPEG-4的SP(Simple profile)更为精确、更为复杂的运动内插滤波。为了更好地完成运动估计,H.264显著地增加了可变块尺寸的种类和可变参考帧的数目。
H.264的RAM需求主要用于参考帧图像,大多数编码视频使用3~5帧参考图像。它对ROM的需求并不比通常的视频编码器更多,因为H.264的UVLC对所有的各类数据采用了一个结构良好的查找表。
五、结束语
H.264具有广阔的应用前景,例如实时视频通信、因特网视频传输、视频流媒体服务、异构网上的多点通信、压缩视频存储、视频数据库等。
H.264建议的技术特点可以归纳为三个方面,一是注重实用,采用成熟的技术,追求更高的编码效率,简洁的表现形式;二是注重对移动和IP网络的适应,采用分层技术,从形式上将编码和信道隔离开来,实质上是在源编码器算法中更多地考虑到信道的特点;三是在混合编码器的基本框架下,对其主要关键部件都做了重大改进,如多模式运动估计、帧内预测、多帧预测、统一VLC、4×4二维整数变换等。
迄今为止,H.264尚未最后定稿,但因其更高的压缩比,更好的信道适应性,必将在数字视频的通信或存储领域得到越来越广泛的应用,其发展潜力不可限量。
最后,必须说明的是,H.264优越性能的获得不是没有代价的,其代价是计算复杂度的大大增加,据估计,编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍。
xiaochongchong 发表于 >2005-1-2 11:32:09[全文][评论][引用][推荐][档案][推给好友]
2005-1-2
视频编码标准的发展:从H.261到H.264 [转]
数字视频技术广泛应用于通信、计算机、广播电视等领域,带来了会议电视、可视电话及数字电视、媒体存储等一系列应用,促使了许多视频编码标准的产生。ITU-T与ISO/IEC是制定视频编码标准的两大组织,ITU-T的标准包括H.261、H.263、H.264,主要应用于实时视频通信领域,如会议电视;MPEG系列标准是由ISO/IEC制定的,主要应用于视频存储(DVD)、广播电视、因特网或无线网上的流媒体等。两个组织也共同制定了一些标准,H.262标准等同于MPEG-2的视频编码标准,而最新的H.264标准则被纳入MPEG-4的第10部分。
本文按照ITU-T视频编码标准的发展过程,介绍H.261、H.263及H.264。
H.261视频编码标准
H.261是ITU-T为在综合业务数字网(ISDN)上开展双向声像业务(可视电话、视频会议)而制定的,速率为64kb/s的整数倍。H.261只对CIF和QCIF两种图像格式进行处理,每帧图像分成图像层、宏块组(GOB)层、宏块(MB)层、块(Block)层来处理。
H.261是最早的运动图像压缩标准,它详细制定了视频编码的各个部分,包括运动补偿的帧间预测、DCT变换、量化、熵编码,以及与固定速率的信道相适配的速率控制等部分。
H.263视频编码标准
H.263是最早用于低码率视频编码的ITU-T标准,随后出现的第二版(H.263+)及H.263++增加了许多选项,使其具有更广泛的适用性。
H.263视频压缩标准
H.263是ITU-T为低于64kb/s的窄带通信信道制定的视频编码标准。它是在H.261基础上发展起来的,其标准输入图像格式可以是S-QCIF、QCIF、CIF、4CIF或者16CIF的彩色4∶2∶0亚取样图像。H.263与H.261相比采用了半象素的运动补偿,并增加了4种有效的压缩编码模式。
无限制的运动矢量模式允许运动矢量指向图像以外的区域。当某一运动矢量所指的参考宏块位于编码图像之外时,就用其边缘的图像象素值来代替。当存在跨边界的运动时,这种模式能取得很大的编码增益,特别是对小图像而言。另外,这种模式包括了运动矢量范围的扩展,允许使用更大的运动矢量,这对摄像机运动特别有利。
基于句法的算术编码模式使用算术编码代替霍夫曼编码,可在信噪比和重建图像质量相同的情况下降低码率。
先进的预测模式允许一个宏块中4个8×8亮度块各对应一个运动矢量,从而提高了预测精度;两个色度块的运动矢量则取这4个亮度块运动矢量的平均值。补偿时,使用重叠的块运动补偿,8×8亮度块的每个象素的补偿值由3个预测值加权平均得到。使用该模式可以产生显著的编码增益,特别是采用重叠的块运动补偿,会减少块效应,提高主观质量。
PB-帧模式规定一个PB-帧包含作为一个单元进行编码的两帧图像。PB-帧模式可在码率增加不多的情况下,使帧率加倍。
H.263视频压缩标准版本2
ITU-T在H.263发布后又修订发布了H.263标准的版本2,非正式地命名为H.263+标准。它在保证原H.263标准核心句法和语义不变的基础上,增加了若干选项以提高压缩效率或改善某方面的功能。原H.263标准限制了其应用的图像输入格式,仅允许5种视频源格式。H.263+标准允许更大范围的图像输入格式,自定义图像的尺寸,从而拓宽了标准使用的范围,使之可以处理基于视窗的计算机图像、更高帧频的图像序列及宽屏图像。
为提高压缩效率,H.263+采用先进的帧内编码模式;增强的PB-帧模式改进了H.263的不足,增强了帧间预测的效果;去块效应滤波器不仅提高了压缩效率,而且提供重建图像的主观质量。
为适应网络传输,H.263+增加了时间分级、信噪比和空间分级,对在噪声信道和存在大量包丢失的网络中传送视频信号很有意义;另外,片结构模式、参考帧选择模式增强了视频传输的抗误码能力。
H.263++视频压缩标准
H263++在H263+基础上增加了3个选项,主要是为了增强码流在恶劣信道上的抗误码性能,同时为了提高增强编码效率。这3个选项为:
选项U——称为增强型参考帧选择,它能够提供增强的编码效率和信道错误再生能力(特别是在包丢失的情形下),需要设计多缓冲区用于存贮多参考帧图像。
选项V——称为数据分片,它能够提供增强型的抗误码能力(特别是在传输过程中本地数据被破坏的情况下),通过分离视频码流中DCT的系数头和运动矢量数据,采用可逆编码方式保护运动矢量。
选项W——在H263+的码流中增加补充信息,保证增强型的反向兼容性,附加信息包括:指示采用的定点IDCT、图像信息和信息类型、任意的二进制数据、文本、重复的图像头、交替的场指示、稀疏的参考帧识别。 H.264视频编码标准
H.264是由ISO/IEC与ITU-T组成的联合视频组(JVT)制定的新一代视频压缩编码标准。事实上,H.264标准的开展可以追溯到8年前。1996年制定H.263标准后,ITU-T的视频编码专家组(VCEG)开始了两个方面的研究:一个是短期研究计划,在H.263基础上增加选项(之后产生了H.263+与H.263++);另一个是长期研究计划,制定一种新标准以支持低码率的视频通信。长期研究计划产生了H.26L标准草案,在压缩效率方面与先期的ITU-T视频压缩标准相比,具有明显的优越性。2001年,ISO的MPEG组织认识到H.26L潜在的优势,随后ISO与ITU开始组建包括来自ISO/IEC MPEG与ITU-T VCEG的联合视频组(JVT),JVT的主要任务就是将H.26L草案发展为一个国际性标准。于是,在ISO/IEC中该标准命名为AVC(Advanced Video Coding),作为MPEG-4标准的第10个选项;在ITU-T中正式命名为H.264标准。H.264的主要优点如下:
在相同的重建图像质量下,H.264比H.263+和MPEG-4(SP)减小50%码率。
对信道时延的适应性较强,既可工作于低时延模式以满足实时业务,如会议电视等;又可工作于无时延限制的场合,如视频存储等。
提高网络适应性,采用“网络友好”的结构和语法,加强对误码和丢包的处理,提高解码器的差错恢复能力。
在编/解码器中采用复杂度可分级设计,在图像质量和编码处理之间可分级,以适应不同复杂度的应用。
相对于先期的视频压缩标准,H.264引入了很多先进的技术,包括4×4整数变换、空域内的帧内预测、1/4象素精度的运动估计、多参考帧与多种大小块的帧间预测技术等。新技术带来了较高的压缩比,同时大大提高了算法的复杂度。
4×4整数变换
以前的标准,如H.263或MPEG-4,都是采用8x8的DCT变换。H.26L中建议的整数变换实际上接近于4×4的DCT变换,整数的引入降低了算法的复杂度,也避免了反变换的失配问题,4×4的块可以减小块效应。而H.264的4×4整数变换进一步降低了算法的复杂度,相比H.26L中建议的整数变换,对于9b输入残差数据,由以前的32b降为现在的16b运算,而且整个变换无乘法,只需加法和一些移位运算。新的变换对编码的性能几乎没有影响,而且实际编码略好一些。
基于空域的帧内预测技术
视频编码是通过去除图像的空间与时间相关性来达到压缩的目的。空间相关性通过有效的变换来去除,如DCT变换、H.264的整数变换;时间相关性则通过帧间预测来去除。这里所说的变换去除空间相关性,仅仅局限在所变换的块内,如8×8或者4×4,并没有块与块之间的处理。H.263+与MPEG-4引入了帧内预测技术,在变换域中根据相临块对当前块的某些系数做预测。H.264则是在空域中,利用当前块的相临象素直接对每个系数做预测,更有效地去除相临块之间的相关性,极大地提高了帧内编码的效率。
H.264基本部分的帧内预测包括9种4×4亮度块的预测、4种16×16亮度块的预测和4种色度块的预测。
运动估计
H.264的运动估计具有3个新的特点:1/4象素精度的运动估计;7种大小不同的块进行匹配;前向与后向多参考帧。
H.264在帧间编码中,一个宏块(16×16)可以被分为16×8、8×16、8×8的块,而8×8的块被称为子宏块,又可以分为8×4、4×8、4×4的块。总体而言,共有7种大小不同的块做运动估计,以找出最匹配的类型。与以往标准的P帧、B帧不同,H.264采用了前向与后向多个参考帧的预测。半象素精度的运动估计比整象素运动估计有效地提高了压缩比,而1/4象素精度的运动估计可带来更好的压缩效果。
编码器中运用多种大小不同的块进行运动估计,可节省15%以上的比特率(相对于16×16的块)。运用1/4象素精度的运动估计,可以节省20%的码率(相对于整象素预测)。多参考帧预测方面,假设为5个参考帧预测,相对于一个参考帧,可降低5%~10%的码率。以上百分比都是统计数据,不同视频因其细节特征与运动情况而有所差异。
熵编码
H.264标准采用的熵编码有两种:一种是基于内容的自适应变长编码(CAVLC)与统一的变长编码(UVLC)结合;另一种是基于内容的自适应二进制算术编码(CABAC)。CAVLC与CABAC根据相临块的情况进行当前块的编码,以达到更好的编码效率。CABAC比CAVLC压缩效率高,但要复杂一些。
去块效应滤波器
H.264标准引入了去块效应滤波器,对块的边界进行滤波,滤波强度与块的编码模式、运动矢量及块的系数有关。去块效应滤波器在提高压缩效率的同时,改善了图像的主观效果。
其他视频编码标准
除上述ITU-T的视频压缩标准外,还有一些标准也比较流行,如MPEG-4、AVS、WM9。
H.264也称为MPEG-4 AVC,而目前业内所说的MPEG-4一般是指SP(简级)或ASP(先进的简级),主要针对低码率应用,如因特网上的流媒体、无线网的视频传输及视频存储等,其核心类似于H.263。
M  PEG-4 SP和H.263有很多相似的地方,如附表所示。然而,这两个标准之间也有显著的不同,主要表现在:码流结构和头信息、熵编码的部分码表、编码技术的一些细节。MPEG-4 ASP较SP增加了一些技术,主要有:1/4象素精度的运动估计、B帧、全局运动矢量(GMV),因而压缩效率得以提高。
AVS是由我国自主制定的音/视频编码技术标准,主要面向高清晰度电视、高密度光存储媒体等应用。AVS标准以当前国际上最先进的MPEG-4 AVC/H.264框架为基础,强调自主知识产权,同时充分考虑了实现的复杂度。相对于H.264,AVS的主要特点有:(1)8×8的整数变换与64级量化;(2)亮度和色度帧内预测都是以8×8块为单位,亮度块采用5种预测模式,色度块采用4种预测模式;(3)采用16×16、16×8、8×16和8×8 4种块模式进行运动补偿;(4)在1/4象素运动估计方面,采用不同的四抽头滤波器进行半象素插值和1/4象素插值;(5)P帧可以利用最多2帧的前向参考帧,而B帧采用前后各一个参考帧。
Window Meida 9(WM9)是微软公司开发的新一代数字媒体技术。一些测试表明,WM9的视频压缩效率比MPEG-2、MPEG-4 SP及H.263高很多,而与H.264的压缩效率相当。
结束语
目前,H.261与H.263在视频通信中广泛应用,成熟的产品已经很多。H.263与H.261相比,增加了若干选项,提供了更灵活的编码方式,压缩效率大大提高,更适应网络传输。H.264标准的推出,是视频编码标准的一次重要进步,它与现有的MPEG-2、MPEG-4 SP及H.263相比,具有明显的优越性,特别是在编码效率上的提高,使之能用于许多新的领域。尽管H.264的算法复杂度是现有编码压缩标准的4倍以上,随着集成电路技术的快速发展,H.264的应用将成为现实。
中宽网
xiaochongchong 发表于 >2005-1-2 11:30:14[全文][评论][引用][推荐][档案][推给好友]
2005-1-1
04--05
04的梦已做完,05的已经开始。
xiaochongchong 发表于 >2005-1-1 0:34:05[全文][评论][引用][推荐][档案][推给好友]
2004-12-28
MPEG-4简介
下学期开始做视频编码相关的工作,以后就多关注这方面的技术了。
MPEG4视频压缩编码技术详解
MPEG全称是Moving Pictures Experts Group,它是"动态图象专家组"的英文缩写,该专家组成立于1988年,致力于运动图像及其伴音的压缩编码标准化工作,原先他们打算开发MPEG1、MPEG2、MPEG3和MPEG4四个版本,以适用于不同带宽和数字影像质量的要求。
目前,MPEG1技术被广泛的应用于VCD,而MPEG2标准则用于广播电视和DVD等。MPEG3最初是为HDTV开发的编码和压缩标准,但由于MPEG2的出色性能表现, MPEG3只能是死于襁褓了。而我们今天要谈论的主角--MPEG4于1999年初正式成为国际标准。它是一个适用于低传输速率应用的方案。与MPEG1和MPEG2相比,MPEG4更加注重多媒体系统的交互性和灵活性。下面就让我们一起进入多彩的MPEG4世界。
MPEG4的技术特点
MPEG1、MPEG2技术当初制定时,它们定位的标准均为高层媒体表示与结构,但随着计算机软件及网络技术的快速发展,MPEG1.MPEG2技术的弊端就显示出来了:交互性及灵活性较低,压缩的多媒体文件体积过于庞大,难以实现网络的实时传播。而MPEG4技术的标准是对运动图像中的内容进行编码,其具体的编码对象就是图像中的音频和视频,术语称为"AV对象",而连续的AV对象组合在一起又可以形成AV场景。因此,MPEG4标准就是围绕着AV对象的编码、存储、传输和组合而制定的,高效率地编码、组织、存储、传输AV对象是MPEG4标准的基本内容。
在视频编码方面,MPEG4支持对自然和合成的视觉对象的编码。(合成的视觉对象包括2D、3D动画和人面部表情动画等)。在音频编码上,MPEG4可以在一组编码工具支持下,对语音、音乐等自然声音对象和具有回响、空间方位感的合成声音对象进行音频编码。
由于MPEG4只处理图像帧与帧之间有差异的元素,而舍弃相同的元素,因此大大减少了合成多媒体文件的体积。应用MPEG4技术的影音文件最显著特点就是压缩率高且成像清晰,一般来说,一小时的影像可以被压缩为350M左右的数据,而一部高清晰度的DVD电影, 可以压缩成两张甚至一张650M CD光碟来存储。对广大的"平民"计算机用户来说, 这就意味着, 您不需要购置 DVD-ROM就可以欣赏近似DVD质量的高品质影像。而且采用MPEG4编码技术的影片,对机器硬件配置的要求非常之低,300MHZ 以上CPU,64M的内存和一个 8M显存的显卡就可以流畅的播放。在播放软件方面,它要求也非常宽松,你只需要安装一个 500K左右的 MPEG4 编码驱动后,用 WINDOWS 自带的媒体播放器就可以流畅的播放了(下面我们会具体讲到)。
视频编码研究与MPEG标准演进
人类获取的信息中70%来自于视觉,视频信息在多媒体信息中占有重要地位;同时视频数据冗余度最大,经压缩处理后的视频质量高低是决定多媒体服务质量的关键因素。因此数字视频技术是多媒体应用的核心技术,对视频编码的研究已成为信息技术领域的热门话题。
视频编码的研究课题主要有数据压缩比、压缩/解压速度及快速实现算法三方面内容。以压缩/解压后数据与压缩前原始数据是否完全一致作为衡量标准,可将数据压缩划分为无失真压缩(即可逆压缩)和有失真压缩(即不可逆压缩)两类。
传统压缩编码建立在仙农信息论基础之上的,以经典集合论为工具,用概率统计模型来描述信源,其压缩思想基于数据统计,因此只能去除数据冗余,属于低层压缩编码的范畴。伴随着视频编码相关学科及新兴学科的迅速发展,新一代数据压缩技术不断诞生并日益成熟,其编码思想由基于像素和像素块转变为基于内容 (content-based)。它突破了仙农信息论框架的束缚,充分考虑了人眼视觉特性及信源特性,通过去除内容冗余来实现数据压缩,可分为基于对象(object-based)和基于语义(semantics-based)两种,前者属于中层压缩编码,后者属于高层压缩编码。
与此同时,视频编码相关标准的制定也日臻完善。视频编码标准主要由ITU-T和ISO/IEC开发。ITU-T发布的视频标准有H.261、 H.262、 H.263、 H.263+、H.263++,ISO/IEC公布的MPEG系列标准有MPEG-1、MPEG-2 、MPEG-4 和MPEG-7,并且计划公布MPEG-21。
MPEG即Moving Picture Expert Group(运动图像专家组),它是专门从事制定多媒体视音频压缩编码标准的国际组织。MPEG系列标准已成为国际上影响最大的多媒体技术标准,其中MPEG-1和MPEG-2是采用以仙农信息论为基础的预测编码、变换编码、熵编码及运动补偿等第一代数据压缩编码技术;MPEG-4(ISO/IEC 14496)则是基于第二代压缩编码技术制定的国际标准,它以视听媒体对象为基本单元,采用基于内容的压缩编码,以实现数字视音频、图形合成应用及交互式多媒体的集成。MPEG系列标准对VCD、DVD等视听消费电子及数字电视和高清晰度电视(DTV&&HDTV)、多媒体通信等信息产业的发展产生了巨大而深远的影响。
MPEG-4视频编码核心思想及关键技术
核心思想
在MPEG-4制定之前,MPEG-1、MPEG-2、H.261、H.263都是采用第一代压缩编码技术,着眼于图像信号的统计特性来设计编码器,属于波形编码的范畴。第一代压缩编码方案把视频序列按时间先后分为一系列帧,每一帧图像又分成宏块以进行运动补偿和编码,这种编码方案存在以下缺陷:
· 将图像固定地分成相同大小的块,在高压缩比的情况下会出现严重的块效应,即马赛克效应;
· 不能对图像内容进行访问、编辑和回放等*作;
· 未充分利用人类视觉系统(HVS,Human Visual System)的特性。
MPEG-4则代表了基于模型/对象的第二代压缩编码技术,它充分利用了人眼视觉特性,抓住了图像信息传输的本质,从轮廓、纹理思路出发,支持基于视觉内容的交互功能,这适应了多媒体信息的应用由播放型转向基于内容的访问、检索及*作的发展趋势。
AV对象(AVO,Audio Visual Object)是MPEG-4为支持基于内容编码而提出的重要概念。对象是指在一个场景中能够访问和*纵的实体,对象的划分可根据其独特的纹理、运动、形状、模型和高层语义为依据。在MPEG-4中所见的视音频已不再是过去MPEG-1、MPEG-2中图像帧的概念,而是一个个视听场景(AV场景),这些不同的AV场景由不同的AV对象组成。AV对象是听觉、视觉、或者视听内容的表示单元,其基本单位是原始AV对象,它可以是自然的或合成的声音、图像。原始AV对象具有高效编码、高效存储与传输以及可交互*作的特性,它又可进一步组成复合AV对象。因此MPEG-4标准的基本内容就是对AV对象进行高效编码、组织、存储与传输。AV对象的提出,使多媒体通信具有高度交互及高效编码的能力,AV对象编码就是MPEG-4的核心编码技术。
MPEG-4不仅可提供高压缩率,同时也可实现更好的多媒体内容互动性及全方位的存取性,它采用开放的编码系统,可随时加入新的编码算法模块,同时也可根据不同应用需求现场配置解码器,以支持多种多媒体应用。
MPEG-4 采用了新一代视频编码技术,它在视频编码发展史上第一次把编码对象从图像帧拓展到具有实际意义的任意形状视频对象,从而实现了从基于像素的传统编码向基于对象和内容的现代编码的转变,因而引领着新一代智能图像编码的发展潮流。
关键技术
MPEG-4除采用第一代视频编码的核心技术,如变换编码、运动估计与运动补偿、量化、熵编码外,还提出了一些新的有创见性的关键技术,并在第一代视频编码技术基础上进行了卓有成效的完善和改进。下面重点介绍其中的一些关键技术。
A. 视频对象提取技术
MPEG-4实现基于内容交互的首要任务就是把视频/图像分割成不同对象或者把运动对象从背景中分离出来,然后针对不同对象采用相应编码方法,以实现高效压缩。因此视频对象提取即视频对象分割,是MPEG-4视频编码的关键技术,也是新一代视频编码的研究热点和难点。
视频对象分割涉及对视频内容的分析和理解,这与人工智能、图像理解、模式识别和神经网络等学科有密切联系。目前人工智能的发展还不够完善,计算机还不具有观察、识别、理解图像的能力;同时关于计算机视觉的研究也表明要实现正确的图像分割需要在更高层次上对视频内容进行理解。因此,尽管MPEG-4 框架已经制定,但至今仍没有通用的有效方法去根本解决视频对象分割问题,视频对象分割被认为是一个具有挑战性的难题,基于语义的分割则更加困难。
目前进行视频对象分割的一般步骤是:先对原始视频/图像数据进行简化以利于分割,这可通过低通滤波、中值滤波、形态滤波来完成;然后对视频/图像数据进行特征提取,可以是颜色、纹理、运动、帧差、位移帧差乃至语义等特征;再基于某种均匀性标准来确定分割决策,根据所提取特征将视频数据归类;最后是进行相关后处理,以实现滤除噪声及准确提取边界。
在视频分割中基于数学形态理论的分水岭(watershed)算法被广泛使用,它又称水线算法,其基本过程是连续腐蚀二值图像,由图像简化、标记提取、决策、后处理四个阶段构成。分水岭算法具有运算简单、性能优良,能够较好提取运动对象轮廓、准确得到运动物体边缘的优点。但分割时需要梯度信息,对噪声较敏感,且未利用帧间信息,通常会产生图像过度分割。
B. VOP视频编码技术
视频对象平面(VOP,Video Object Plane)是视频对象(VO)在某一时刻的采样,VOP是MPEG-4视频编码的核心概念。MPEG-4在编码过程中针对不同VO采用不同的编码策略,即对前景VO的压缩编码尽可能保留细节和平滑;对背景VO则采用高压缩率的编码策略,甚至不予传输而在解码端由其他背景拼接而成。这种基于对象的视频编码不仅克服了第一代视频编码中高压缩率编码所产生的方块效应,而且使用户可与场景交互,从而既提高了压缩比,又实现了基于内容的交互,为视频编码提供了广阔的发展空间。
MPEG-4支持任意形状图像与视频的编解码。对于任意形状视频对象。对于极低比特率实时应用,如可视电话、会议电视,MPEG-4则采用VLBV(Very Low Bit-rate Video,极低比特率视频)核进行编码。
传统的矩形图在MPEG-4中被看作是VO的一种特例,这正体现了传统编码与基于内容编码在MPEG-4中的统一。VO概念的引入,更加符合人脑对视觉信息的处理方式,并使视频信号的处理方式从数字化进展到智能化,从而提高了视频信号的交互性和灵活性,使得更广泛的视频应用及更多的内容交互成为可能。因此VOP视频编码技术被誉为视频信号处理技术从数字化进入智能化的初步探索。
C. 视频编码可分级性技术
随着因特网业务的巨大增长,在速率起伏很大的IP(Internet Protocol)网络及具有不同传输特性的异构网络上进行视频传输的要求和应用越来越多。在这种背景下,视频分级编码的重要性日益突出,其应用非常广泛,且具有很高的理论研究及实际应用价值,因此受到人们的极大关注。
视频编码的可分级性(scalability)是指码率的可调整性,即视频数据只压缩一次,却能以多个帧率、空间分辨率或视频质量进行解码,从而可支持多种类型用户的各种不同应用要求。
MPEG-4通过视频对象层(VOL,Video Object Layer)数据结构来实现分级编码。MPEG-4提供了两种基本分级工具,即时域分级(Temporal Scalability)和空域分级(Spatial Scalability),此外还支持时域和空域的混合分级。每一种分级编码都至少有两层VOL,低层称为基本层,高层称为增强层。基本层提供了视频序列的基本信息,增强层提供了视频序列更高的分辨率和细节。
在随后增补的视频流应用框架中,MPEG-4提出了FGS(Fine Granularity Scalable,精细可伸缩性)视频编码算法以及PFGS(Progressive Fine Granularity Scalable,渐进精细可伸缩性)视频编码算法。
FGS编码实现简单,可在编码速率、显示分辨率、内容、解码复杂度等方面提供灵活的自适应和可扩展性,且具有很强的带宽自适应能力和抗误码性能。但还存在编码效率低于非可扩展编码及接收端视频质量非最优两个不足。
PFGS则是为改善FGS编码效率而提出的视频编码算法,其基本思想是在增强层图像编码时使用前一帧重建的某个增强层图像为参考进行运动补偿,以使运动补偿更加有效,从而提高编码效率。
D. 运动估计与运动补偿技术
MPEG-4采用I-VOP、P-VOP、B-VOP三种帧格式来表征不同的运动补偿类型。它采用了H.263中的半像素搜索(half pixel searching)技术和重叠运动补偿(overlapped motion compensation)技术,同时又引入重复填充(repetitive padding)技术和修改的块(多边形)匹配(modified block (polygon)matching)技术以支持任意形状的VOP区域。
此外,为提高运动估计算法精度,MPEG-4采用了MVFAST(Motion Vector Field Adaptive Search Technique)和改进的PMVFAST(Predictive MVFAST)方法用于运动估计。对于全局运动估计,则采用了基于特征的快速顽健的FFRGMET(Feature-based Fast and Robust Global Motion Estimation Technique)方法。
在MPEG-4视频编码中,运动估计相当耗时,对编码的实时性影响很大。因此这里特别强调快速算法。运动估计方法主要有像素递归法和块匹配法两大类,前者复杂度很高,实际中应用较少,后者则在H.263和MPEG中广泛采用。在块匹配法中,重点研究块匹配准则及搜索方法。目前有三种常用的匹配准则:
(1)绝对误差和(SAD, Sum of Absolute Difference)准则;
(2)均方误差(MSE, Mean Square Error)准则;
(3)归一化互相关函数(NCCF, Normalized Cross Correlation Function)准则。
在上述三种准则中,SAD准则具有不需乘法运算、实现简单方便的优点而使用最多,但应清楚匹配准则的选用对匹配结果影响不大。
在选取匹配准则后就应进行寻找最优匹配点的搜索工作。最简单、最可靠的方法是全搜索法(FS, Full Search),但计算量太大,不便于实时实现。因此快速搜索法应运而生,主要有交叉搜索法、二维对数法和钻石搜索法,其中钻石搜索法被MPEG-4校验模型(VM, Verification Model)所采纳,下面详细介绍。
钻石搜索(DS, Diamond Search)法以搜索模板形状而得名,具有简单、鲁棒、高效的特点,是现有性能最优的快速搜索算法之一。其基本思想是利用搜索模板的形状和大小对运动估计算法速度及精度产生重要影响的特性。在搜索最优匹配点时,选择小的搜索模板可能会陷入局部最优,选择大的搜索模板则可能无法找到最优点。因此DS算法针对视频图像中运动矢量的基本规律,选用了两种形状大小的搜索模板。
· 大钻石搜索模板(LDSP, Large Diamond Search Pattern),包含9个候选位置;
· 小钻石搜索模板(SDSP, Small Diamond Search Pattern),包含5个候选位置。
DS算法搜索过程如下:开始阶段先重复使用大钻石搜索模板,直到最佳匹配块落在大钻石中心。由于LDSP步长大,因而搜索范围广,可实现粗定位,使搜索不会陷于局部最小,当粗定位结束后,可认为最优点就在LDSP 周围8 个点所围菱形区域中。然后再使用小钻石搜索模板来实现最佳匹配块的准确定位,以不产生较大起伏,从而提高运动估计精度。
此外Sprite视频编码技术也在MPEG-4中应用广泛,作为其核心技术之一。Sprite又称镶嵌图或背景全景图,是指一个视频对象在视频序列中所有出现部分经拼接而成的一幅图像。利用Sprite可以直接重构该视频对象或对其进行预测补偿编码。
Sprite视频编码可视为一种更为先进的运动估计和补偿技术,它能够克服基于固定分块的传统运动估计和补偿技术的不足,MPEG-4正是采用了将传统分块编码技术与Sprite编码技术相结合的策略。
MPEG4的应用领域
凭借着出色的性能,MPEG4技术目前在多媒体传输、多媒体存储等领域得到了广泛的应用,下面我们就来看看目前在那些领域MPEG4技术得到了大显伸手的机会。
1、精彩的视频世界
精彩的视频世界是MPEG4技术应用最多也是最为广大朋友所熟悉的的形式。目前它主要以两种形式出现,一种是DIVX-MPEG4影碟(国内市面上已出现,且D版居多),另一种是网上MPEG4电影。
(1)、我们先来说说DIVX-MPEG4影碟,DIVX视频编码技术实际上就是MPEG4压缩技术,它由微软MPEG4V3修改而来,使用的是MPEG4压缩算法,并同时分离视频和音频。它的核心部分便是由DivX对DVD音视频进行压缩,生成Mpeg4视频格式文件(也就是AVI格式)。
小提示:笔者也是经常被朋友所问到:"我看到的MPEG4电影片段明明是avi(扩展名)格式文件,并且Windows的媒体播放器也与之关联,但就是无法播放"。其实, MPEG4并没有确定必须用什么扩展名,它只是一种编码方法而已。使用avi作为扩展名,是一种习惯性的沿用。
在计算机上播放MPEG4影音文件的方法目前有两种:第一种是用诸如DivxPlayer等专门的播放软件来播放;第二种播放方法是安装MPEG4(Divx)插件后,用Windows自带的媒体播放机来播放。
(2)、随着网络技术的不断发展,互联网上的视频流应用也成为了近几年的热门话题。目前,在互联网上比较流行的几种影像格式包括Quicktime、RealPlay以及微软的MediaPlayer等。MPEG4技术出现之后,互联网上又出现了MPEG4格式的电影,不过在观看前,系统会提示你下载最新的MPEG4解码软件。
小提示:大家平时在网上可能经常会看见ASF格式的电影,其实它也是微软公司开发出的一种可以直接在网上观看视频节目的压缩格式。使用的也是MPEG4的压缩算法,但因为它是以网上即时观看电影的视频流格式存在的,所以它的图像质量相对要差一些。
2、低比特率下的多媒体通信,
目前,MPEG4技术已经广泛的应用在如视频电话、视频电子邮件、移动通信、电子新闻等多媒体通信领域。由于这些应用对传输速率要求较低,一般在4.8~64kbit/s之间,分辨率为176×144左右。因此MPEG4技术完全可以充分的利用网络带宽,通过帧重建技术压缩和传输数据,以最少的数据量获得最佳的图像质量。
3、实时多媒体监控。
多媒体监控领域原来一直是MPEG1技术担当重任,但近些年来,它们也是"城头变换大王旗"了。由于MPEG4压缩技术原本是一种适用在低带宽下进行信息交换的音视频处理技术,它的特点是可以动态的侦测图像各个区域变化,基于对象的调整压缩方法可以获得比MPEG1更大的压缩比,使压缩码流更低。因此,尽管MPEG4技术一开始并不是专为视频监控压缩领域而开发的,但它高清晰度的视频压缩,在实时多媒体监控上,无能是存储量,传输的速率,清晰度都比MPEG1具有更大的优势。
4、基于内容存储和检索的多媒体系统。
由于MPEG4在压缩方法上远远优于MPEG1技术,更是MJPEG技术所不能比拟的。 经过专家的测试表明,在相同清晰度对应MPEG1(500Kbits/sec)码流情况下, MPEG4比MPEG1节省了2/3的硬盘空间,在一般活动场景下也节省近一般的容量。因此无论是从内容存储量,还是从多媒体文件的检索速度来说,MPEG4技术都是多媒体系统应用的不二之选。
5、硬件产品上面的应用
目前,MPEG4技术在硬件产品上也已开始逐步得到应用。特别是在视频监控、播放上,这项高清晰度,高压缩的技术得到了众多硬件厂商的钟爱,而市场上支持MPEG4技术的产品也是种类繁多。下面笔者就列举一些代表性的产品,旨在让读者了解MPEG4技术在今天应用范围之广。
(1)、摄像机:日本夏普公司推出过应用在互联网上的数字摄像机VN-EZ1。这台网络摄像机利用MPEG4格式,可把影像文件压缩为ASF(高级流格式),用户只要利用微软公司的MediaPlayer播放程序,就可以直接在电脑上进行播放。
(2)、播放机:飞利浦公司于今年八月份推出了一款支持DivX的DVD播放机DVD737。它可以支持DivX 3.11、4.xx、5.xx等MPEG4标准,而对于新标准的支持则可以通过升级固件来实现。
(3)、数码相机:日本京瓷公司在11月中旬发售其最新款数码相机Finecam L30,这款是采用300万像素、3倍光学变焦设计的数码相机产品, L30采用了MPEG4格式动态视频录制,可以让动态视频录制画面效果比传统数码相机更出色。
(4)、手机:在手机领域,MPEG4技术更是得到了广泛的应用,各大手机厂商也都推出了可拍摄MPEG4动态视频的手机型号,如西门子ST55、索尼爱立信P900/P908、LG 彩屏G8000等。
(5)、MPEG4数字硬盘:在今年深圳举行的安防展览会上,开发数字录像监控产品的厂家纷纷推出了他们的最新产品,而支持MPEG4的DVR压缩技术也成为改展会上的亮点。
如北京华青紫博科技推出的"E眼神MPEG4数字视频王"便是一款基于网络环境的高清晰数字化监控报警系统。内置多画面处理器,集现场监控、监听、多路同时数字录像与回放等多种功能为一体。
其实,市场上还有许多基于MPEG4技术的硬件产品,笔者这里就不一一列举了,不过笔者相信,随着视频压缩技术的不断发展,MPEG4技术的产品会越来越多的出现在我们生活,工作中。
//from BBS 水木清华站 smth.org
xiaochongchong 发表于 >2004-12-28 17:01:26[全文][评论][引用][推荐][档案][推给好友]
2004-12-23
虫儿飞
虫儿飞
黑黑的天空低垂
亮亮的繁星相随
虫儿飞虫儿飞
你在思念谁
天上的星星流泪
地上的玫瑰枯萎
冷风吹冷风吹
只要有你陪
虫儿飞花儿睡
一双又一对才美
不怕天黑只怕心碎
不管累不累
也不管东南西北
',1)">
xiaochongchong 发表于 >2004-12-23 0:44:26[全文][评论][引用][推荐][档案][推给好友]
2004-10-16
Some tips of C++ programming
//2004.7.14
(1).    float GetValue(void);//良好风格
float GetValue();     //不良风格
(2).    如果参数是指针,且仅作输入用,则应在类型前加const,
以防止该指针在函数体内被任意修改。
如:void StringCopy(char *strDestination, const char *strSource);
(3).    如果参数以值传递的方式传递对象,则宜改用“const &”方式来传递,这样可以
省去临时对象的构造和析构过程,从而提高效率。
(4).    返回值时,不要将正常值和错误标志混在一起返回。正常值用输出参数获得,而
错误标志用return语句返回。
如:BOOL GetChar(char *c);
(5).    有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回
值。如:char *strcpy(char *strDest, const char *strSrc);
char str[20];
int length = strlen( strcpy(str, "Hello, world" ;
(6). 函数开始使用assert断言进行正确性检查。
(7). 使用free和delete释放内存后,指针值没有变,应及时将指针赋为NULL,
防止产生野指针。
(8). char *p = "hello"; //此时p指向常量字符串,位于静态存储区,它在程序
//生命周期内恒定不变
p[0] = ‘X‘; //对常量进行写操作,而编译器不会发现这个错误
(9). char a[] = "hello, world";
char *p = a;
cout<< sizeof(a) << endl; //12字节
cout<< sizeof(p) << endl; //4字节
void Func(char a[100])
{
cout<< sizeof(a) <
class Base
{
public:
virtual void f(float x){ cout << "Base::f(float)" << x << endl; }
void g(float x){ cout << "Base::g(float)" << x << endl; }
void h(float x){ cout << "Base::h(float)" << x << endl; }
};
class Derived : public Base
{
public:
virtual void f(float x){ cout << "Derived::f(float)" << x << endl; }
void g(int x){ cout << "Derived::g(float)" << x << endl; }
void h(float x){ cout << "Dervied::h(float)" << x << endl; }
};
void main(void)
{
Derived d;
Base *pb = &d;
Derived *pd = &d;
// Good : behavior depends solely on type of the object
pb->f(3.14f); // Derived::f(float) 3.14
pd->f(3.14f); // Derived::f(float) 3.14
// Bad : behavior depends on type of the pointer
pb->g(3.14f); // Base::g(float) 3.14
pd->g(3.14f); // Derived::g(int) 3 (surprise!)
// Bad : behavior depends on type of the pointer
pb->h(3.14f); // Base::h(float) 3.14 (surprise!)
pd->h(3.14f); // Derived::h(float) 3.14
}
(11). 派生类的构造函数应在其初始化表里调用基类的构造函数。
(12). 基类与派生类的析构函数应该为虚(即加virtual关键字),这样在调用派生类的
析构函数时会调用基类的析构函数。
(13). 在编写派生类的赋值函数时,注意不要忘记对基类的数据成员重新赋值。例如:
class Base
{
public:
……
Base &operate =(const Base &other); //类Base的赋值函数
private:
int m_i, m_j, m_k;
};
class Derived : public Base
{
public:
……
Derived &operate =(const Derived &other);//类Derived的赋值函数
private:
int m_x, m_y, m_z;
};
Derived & Derived::operate =(const Derived &other)
{
//(1)检查自赋值
if(this == &other)
return *this;
//(2)对基类的数据成员重新赋值
Base::operate =(other); //因为不能直接操作私有数据成员
//(3)对派生类的数据成员赋值
m_x = other.m_x;
m_y = other.m_y;
m_z = other.m_z;
//(4)返回本对象的引用
return *this;
}
(14). 严格的继承规则:若在逻辑上B是A的“一种”,并且A的所有功能和属性对B而言
都有意义,则允许B继承A的功能和属性。
(15). 组合规则:若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,
而是要用A和其它东西组合出B。
xiaochongchong 发表于 >2004-10-16 2:14:29[全文][评论][引用][推荐][档案][推给好友]
:全部档案文件:
::我的日历::-
<< <:January 2005:> >>
SunMonTueWedThuFriSat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
最近日志
·JPEG2000综述 [转] (2005-1-17)
·考完试了 (2005-1-7)
·新标准H264技术亮点 [转] (2005-1-2)
·视频编码标准的发展:从H.261到H.264 [转] (2005-1-2)
·04--05 (2005-1-1)
全部档案文件
历史档案
最近评论
·你好,可否和我联系!shilindal..(2005-12-9)
·小虫好,我是文广!(2005-8-2)
·既然感想颇多,那就写出来和大家分享下,博..(2005-2-20)

天南地北霍山人
sky的技术天空
sky‘s 天空
凡尘一滴



©2003 Blogcn.com

天南地北霍山人
sky的技术天空
sky‘s 天空
凡尘一滴
^.: 用户登陆:.
用户名:
*
密 码:
*
Sign in

用户登陆
会员注册
年 010203 040506070809101112 月01020304050607080910111213141516171819202122232425262728293031日
·怎样看待约会的女孩子大谈自己的追求者
·刚毕业找到的第一份工作如果好累,是马上就跳槽还是呆下去?
·文凭是否是找工作的“敲门砖”?
·疲惫的家庭生活,妻子该何去何从?
·男人与女人也该反省!
·JPEG2000综述 [转] (2005-1-17)
·考完试了 (2005-1-7)
·新标准H264技术亮点 [转] (2005-1-2)
·视频编码标准的发展:从H.261到H.264 [转] (2005-1-2)
·04--05 (2005-1-1)
全部档案文件
·你好,可否和我联系!shilindal..(2005-12-9)
·小虫好,我是文广!(2005-8-2)
·既然感想颇多,那就写出来和大家分享下,博..(2005-2-20)

※点此进入Blog聊天室※
_xyz_Flash