已阅读5页,还剩62页未读, 继续免费阅读
(信号与信息处理专业论文)并行多处理器h263视频解码器设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京l l i j 【b ! 院碗l 研究生学位睦文 摘要 i t uh 2 6 3 建议规定了低比特率视听业务中活动图像的压缩编码表示,h 2 6 3 视频 编码算法的基本思想是基于i t uh 2 6 1 协议。 本文在简要介绍了c r a d l e 公司的并行多处理器c t 3 4 0 0 的内部结构、功能的基础上, 分析了h 2 6 3 视频解码系统的实现流程,并结合c t 3 4 0 0 的并行处理结构的特点,提出 了适合c t 3 4 0 0 的解码模块划分以及如何解决并行处理带来的缓存控制问题。此外针对 c t 3 4 0 0l o c a lm e m o r y 较小的特点,对v l d 算法进行了优化,提出了适合d s p 的解码算 法,随后对系统调试过程中遇到的相关问题及解决方法进行了分析。实际测试结果解码 满足实时要求,证明本文的方案是可行的。 文章最后给出了基于并行多处理器c t 3 4 0 0 的h 2 6 3 解码系统需要进一步完善和改 进的方面。 关键词:h 2 6 3 解码、c t 3 4 0 0 、v l d 、并行处理 柯求l i f | j i u l 院顺l 研究q 学位论文 a b s t r a c t i t u tr e c o m m e n d a t i o nh 2 6 3 s p e c i f i e sac o d e dr e p r e s e n t a t i o nt h a tc a r lb eu s e df o r c o m p r e s s i n gt h em o v i n gp i c t u r ec o m p o n e n to fa u d i o v i s u a ls e r v i c e sa tl o wb i tr a t e s t h eb a s i c c o n f i g u r a t i o no ft h ev i d e os o u r c ec o d i n ga l g o r i t h mi sb a s e do nr e c o m m e n d a t i o nh 2 61 f i r s t ,t h ep a p e rs u m m a r i l yp r e s e n tt h es t r u c t u r ea n df u n c t i o no ft h e p a r a l l e l m u l t i p r o c e s s o rc t 3 4 0 0o fc r a d l ec o m p a n y ,t h e nd e t a i l e d l yg i v e st h er e a l i z a t i o nf l o ws h e e to f h 2 6 3v i d e od e c o d i n gs y s t e m t h e nc o m b i n i n gt h ep a r a l l e l p r o c e s s i n g s t r u c t u r eo ft h e c t 3 4 0 0 ,b r i n gf o r w a r dad i v i s i o no ft h em o d u l eo ft h ed e c o d i n gs y s t e ma n dam e t h o df o r b u f f e rc o n t r 0 1 t h i sp a p e ra l s oo p t i m i z e st h ev l da r i t h m e t i ca n dg i v e san e wm e t h o do fv l d a c c o r d i n gt ot h es m a l ll o c a lm e m o r yo ft h ec t 3 4 0 0 w h a t sm o l e ,t h ep a p e rg i v e ss o l u t i o n st o t h eq u e s t i o nm e ti nd e b u g g i n gt h es y s t e ma n da n a l y z e st h e m a l lt h er e s u l t sp r o v et h a tt h e d e s i g no f t h i sp a p e ri sf e a s i b l ea n de f f i c i e n t f i n a l l y ,t h i sp a p e rp u t sf o r w a r dt h ei m p r o v e m e n td i r e c t i o n sf o rt h i sh 2 6 3v i d e o d e c o d i n gs y s t e m k e y w o r d s :h 2 6 3d e c o d i n g 、c t 3 4 0 0 、v l d 、p a r a l l e lp r o c e s s i n g i i 南京邮电学院学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究 工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的 地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包 含为获得南京邮电学院或其它教育机构的学位或证书而使用过的材 料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了 明确的说明并表示了谢意。 研究生签名:蓟塾 日期:出! 墨。竺与 南京邮电学院学位论文使用授权声明 南京邮电学院、中国科学技术信息研究所、国家图书馆有权保留 本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其 他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一 致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布 ( 包括刊登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权 南京邮电学院研究生部办理。 研究生签名:垒鲣导师签名 t j a f l i i l l i 匕学院颂i 研究生学值沦义h u 吾 h 2 6 3 视频编码算法的基本思想是基于i t uh ,2 6 l 协议,它将减少时间冗余的帧问 预测编码和减少空间冗余的剩余信号变换编码结合起来,有效地去除图像的相关性。其 解码器具有运动补偿的能力。 在现有的视频编解码系统中,人们一般采用三种方式来实现压缩算法:其一是用纯 硬件方式来实现图像的编码解码,即采用专用芯片米完成。此种方式实现的编解码系统 实时性好,压缩率高,且图像质量也好,但是一旦编解码方案固定就无法对其进行升级 与更新,并且系统成本造价高,难以在市场上推广:其二是用纯软件方式实现编解码算 法。由于很多场合不适合使用p c 机作为编解码平台,所以使用范围较为局限:其优点 是此方案灵活,算法易更新升级,并且造价低;第三种方式是基于通用视频d s p 芯片 的软件实现。此种方式利用d s p 的高速信号处理功能,使用软件实现的算法在d s p 上 运行时,执行时间较短,并可以获得较高的压缩率。同时该方案易升级,算法易更新。 电子系统的复杂性和要求计算能力不断提高的事实促进了多处理器架构的迅速发 展。回顾一下s o c 的发展历程,在9 0 年代,s o c 基本上由1 个片上c p u + 逻辑+ i o 端 口组成,而进入2 0 0 0 年后的第二代s o c 的重要特征是包含了多个可配置处理器和i o 端口。 美国c r a d l e 技术公司2 0 0 4 年推出了应用于高速多媒体信号的大规模并行多处理 ( m u l t i p r o c e s s i n g ) 芯片c t 3 4 0 0 其3 s o c 是一种全新的处理器结构,它符合新一代多媒 体应用的特殊要求。这种结构提供了单一的片上解决方案,这种解决方案是完全软件可 编程实现的,同时在一个开发包里提供数据、控制、信号和输入输出处理。 c r a d l e3 s o c 在视频和音频媒体处理等高性能处理应用方砸有着显著的优点:它是 一r i s c 处理器阵列,为视频和多媒体应用提供了无缝连接的,可升级的系统解决方案; 3 s o c 产品有软件工具和支持图像和流处理必须的库;软件设计工具支持软件仿真和 3 s o c 硬件i j = ! j 试:库包括通用i o 设备模块;开发板( r d s 3 4 0 0 ) 提供了应用发展和硬件 渊试的甲台。 该芯片包含8 个d s p 内核、4 个专有的通用r i s c 内核以及一簇i o 处理资源。该 l 妇;j f l l l l l i u 学院硕卜研究生学位沦文h i l 吾 j 醛片的输入和输出被设讣成几乎和计算资源一样灵活。由小型f i f o 和控制状态机支持 的通用可编程i o 引脚连到i o 处理簇,为数据源和目的地提供通用i o 。这些引脚还可 用于级联器件以提高计算中的并行程度。 南京邮电学院图像通信实验室多年来一直从事会议电视、可视电话等图像通信课题 的研究,在h 2 6 3 软硬件编码方面进行了相当多的工作。为了进一步提高h 2 6 3 的视频 编码质量、扩大它的应用范围,本文尝试以c t 3 4 0 0 多处理器为硬件平台,采用软件编 码的方式来实现h 2 6 3 解码。具体实现时,首先参考p c 上c 语言的h 2 6 3 解码算法, 然后移植到c r a d l er d s 3 4 0 0 芯片上,利用该芯片先进的多处理器并行处理功能,实现 了h 2 6 3 解码器。最后从程序框架、算法、代码三个方面考虑提高系统运行效率。 本文除了实现h 2 6 3 解码器外,还对其中的v l d 算法的优化进行了深入的研究,在 不增加系统负担的情况下尽可能的降低码表长度,使之更加适合在片上内存较小的 c t 3 4 0 0 处理器上高效运行。 本文结构安排如下:第一章介绍了h 2 6 3 视频编码标准,描述了编码基本流程和解 码基本流程以及h 2 6 3 协议的码流结构;第二章从解码流程的角度详细分析解码实现的 过程,以及其中各个部分可能出现的情况;第三章介绍了c r a d l e3 s o c 结构,并行多处 理器c t 3 4 0 0 结构、c r a d l e3 s o c 处理器汇编语言及c t 3 4 0 0 的软件开发环境i n s p e c t o r 。 第四章介绍了c t 3 4 0 0 上实现视频编码过程,重点研究了并行处理器上解码系统任务的 分配与强度,以及对v l d 算法实现的改进和优化:第五章分析了实验数据,并对系统 调试阶段遇到的典型问题给出了解决办法。文章最后对整个研究工作进行了总结。 村求电学院顺士研究生学位论立第章h 2 6 3 视频编妈标准 第一章h 2 6 3 视频编码标准 1 1h 2 6 3 建议简介 h 2 6 3 建议规定了低比特率视听业务中活动图像的压缩编码表示。由于它的算法在 低比特率视频应用上的优越性能,使它在带宽较窄的通信系统中得到广泛的应用。 h 2 6 3 建议中信源编码的算法是基于 l 2 6 1 建议上的。它们采用了一种混合的信源 压缩编码算法方案,即通过利用帧间预测( i n t e r - p i c t u r ep r e d i c t i o n ) 去除时间上的冗余 度,利用变换编码减少预测余量信号空间上的冗余度。解码器具有运动补偿能力。最后 采用游长编码形成传输码流。视频编码译码器的框图见图1 1 。 与h 2 6 l 不同,h 2 6 3 使用了半像素精度进行运动补偿,在h 2 6 1 中使用的是全像 素精度和环路滤波器。为了改善性能,h 2 6 3 增加了诸多选项。例如非受限运动矢量模 式,基于语法的算术编码模式,高级预测模式,p b 帧模式,这些选项可以单独或一起使 用。 、 b 税赣样码i 图i - 1 视频编码译码器的方框图 在h 2 6 3 巾变换编码采用的是视频编码中常用的d c t 变换。这是由于基于d c t 的 方法具有较高的相关性,并能应用快速d c t 算法,适于实时应用。d c t 本身并不能进 行码率压缩,因为6 4 个样值仍然得到6 4 个系数。由于大多数图像的高频分量较小,相 南京吣i 乜学院硕士研究生学位论文第蘸h 2 6 3 视频编码标准 应于图像高频成分的系数常为零,加上人眼对高频成分的失真不太敏感,所以可用较粗 的量化,因此传送变换系数所用的码率要大大小于传送图像像素所用的码率。到达接收 端后,再通过反离散余弦变换返回到样值,虽然会有一定的失真,但人眼是可以接受的。 读出数据和表示数据的方式也是减少码率的一个重要因素。读出的方式可以有多种 选择,如:水平读出、垂直读出、之字型读出和交替读出等,其中之字型读( z i g - z a g ) 是最常用的一种。由于经d c t 变换以后,系数大多数集中在左上角,即低频分量区,因 此之字型读出实际上是按二维频率的高低顺序读出系数的,这样一来就为游程长度编码 创造了条件。所谓游程长度编码是指一个码字可同时表示码的僮和前面几个零,这样就 可以把之字型读出的优点显示出来了。因为之字型读出在大多数情况下出现连零的机会 比较多,尤其在最后,如果都是零,在读到最后一个数后只要给出“块结束”( e o b ) 码, 就可以结束输出,因此节省了很多码字。 游程长度指的是由码字构成的数据流中各个字符连续重复出现而形成字符串的长 度。基本的游程编码就是在数据流中直接用三个字符来给出上述三种信息,其数据结构 如图1 2 所示。 数据流 二口 图1 2 游程长度编码结构 s c 表示有一个字符串在此位置,x 表示构成串的字符,c c 代表串的长度。 带运动估计和运动补偿的编码是一种帧问编码的方法,其原理是利用帧间的时间相 关性,减小时间冗余度。帧间编码之所以可以减小冗余度,是因为两帧之间有很大的相 似性。如果将前后两i 陕相减( 移动物体作相应位移) 得到的残差作为编码所需比特要比 帧内编码所需的比特少,帧间残差的分布集中在零附近,可以用短的码字传送。 将运动图像分为若干局部结构,并设法检测出每个局部结构在前一帧图像中的位置, 这个过程通常叫做运动估计,这样,用其在前一帧图像中的对应部分对当前i 帧中的局部 结构进行预测,这种预测称为运动补偿。同一局部结构在两相邻帧问的位置变化通常叫 做运动矢量,将运动矢量和相应的预测误差一起进行编码并传输给接收端而在接收端 t j z i l l l i u 学院颂士研究生学位论文第葶h 2 6 3 视频编码标准 则按运动矢量指明的位置,从已经解码的前一帧图像中找到相应的局部结构,和预测误 差相加后就得到了当前帧中的结构。 运动估计的准确程度对帧问编码的压缩效果非常重要。如果估计做的好,那么当前 图像与估计图像相减后只留下很小的值用于传输。运动估计以宏块为单位进行,计算被 压缩图像与参考图像的对应位置上的宏块间的位置偏移。这种位置偏移是以运动矢量来 描述的,一个运动矢量代表水平和垂直两个方向上的位移。 在做运动估计和运动补偿时,是以1 6 x 1 6 的块( 宏块) 逐个进行的,这是将当前帧 划分为n x n ( 1 6 x1 6 ) 的块。对每一块在过去帧中范围为( n - f 2 w y ) ( n + 2 w x ) 的窗f 1 内进 行搜索,以求得最优匹配,从而得到运动矢量的估值( d x ,d y ) 。 1 2 视频编解码算法 1 2 1 视频编码算法 h 2 6 3 视频编码的框图如图1 3 所示,h 2 6 3 编码采用的是混合编码技术,即用帧间预 测减少时域冗余,用变换编码减少残差信号的空域冗余,相应的解码器具有运动补偿能 力。编码器首先对当前帧进行整像素运动估计,然后进行帧内和帧间编码方式判断。如 果是帧间方式,则进行运动估计,在参考帧中选出最佳匹配宏块,接着对最佳匹配宏块 与当前宏块的预测宏块之差( 即残差宏块) ,以8 8 像素块为单位分别作d c t 年n 量化; 如果是帧内方式,则直接对原始图像数据以8 8 像素块为单位进行d c t 和量化。这些经 过量化的二维系数经过之字形扫描后变成一维系数,然后作变长编码输出。 府s j - f l l l l l 电学院硕j 研究,上学位沦文第章h2 6 3 税频编码标水 1 2 2 视频解码算法 图1 3 h 2 6 3 编码框图 t ( 传不传指示) q z ( 量化器指不) p ( 帧i ;| i ,帧间指示) q ( 变换系数的量化值) 动矢量1 图l - 4 为解码器的框图。被压缩的数据送入缓冲器,然后作可变长度解码,解码器 余下的部份相似于编码器的后端,仅有的区别是不再需要运动估计。运动矢量和其它附 带的信息是直接从可变长解码器的输出得到的。 在编码器的输出端有缓冲器,这是因为编码过程产生的比特率不是恒定的,它取决 于运动序列中各点的图像统计特征。对于每一个编码图像,比特的数目也允许变更。但 是在传输网络中的数据的比特率又经常必须是恒定的,所以在视频编码器的输出端必须 有数据缓冲器来提供平滑的作用。相反,在解码器要以非恒定的速率来处理接收到的信 息,所以也要包含一个解码器的缓冲器。 粥京岍屯7 :1 能顾f ? 研究生学位论文 第章h2 6 3 视频编码标准 编码后 的比特 流 1 3h 2 6 3 码流结构 1 3 1 视频码流结构 图i - 4 解码器的框图 视频码流为四层的结构,如图1 5 ,从顶层到底层依次为 陶1 - 5 :t t 2 6 3 码流结构 7 出 像 南京l u 学院顺i :研究生学位论文第一章h 2 6 3 视频编码标准 l _ 3 2 图像层( p i c t u r e ) 每帧图像的数据包含一个图像头,并紧跟着块组数据,最后是一个e o s 码和填 充位。图1 6 说明了这个结构。p s b l 只有在被c p m 说明后才出现。c p m 、t r b 和 d b q u a n t 只有在p t y p e 指示为p b f r a m e 才出现。p s p a r e 和p e i 的组合不可以出 现。e s t u f 只有在e o s 出现才可以出现。不要传送丢失帧的图像头。 叵目三五亟王正正五亚圃巨巫五三巨五司 翻1 6h 2 6 3 图像层结构 帧起始码( p s c ) ( 2 2b i t s ) 图像编码起始标志 时域指示( t r ) ( 8b i t s ) 总图像帧计数 类型信息( p t y p e ) ( 1 3b i t s ) 类型信息字段包含整个图像的相关信息 量化器信息( p q u a n t ) ( 5b i t s ) 代表了所使用量化器q u a n t 的值 连续多点显示( c p m ) ( 1b i t ) 代表是否使用了连续多点显示模式 图像子比特流指示( p s b i ) ( 2b i t s ) _ 一表示c p m 模式中子比特流二进制符号 b 帧的时域指示( t r b ) ( 3b i t s ) 相邻p b 或i b 帧的非传送图像计数 b 帧的量化器信息( d b q u a n t ) ( 2b i t s ) p b 帧中p 帧量化器和与b 帧量 化器的比例 额外插入信息标识( p e i ) ( 1b i t ) 指示后面额外的插入数据是否出现 插入信息( p s p a r e ) ( 0 8 1 6 b i t s ) 备用字段 填充( e s t u f ) ( v a r i a b l el e n g t h ) 编码器将它插在e o s 之前以确保e o s 是 字节对齐的 序列结束( e o s ) ( 2 2 b i t s ) 编码器可以决定是否在编码是插入e o s ,e o s 必须是字节对齐的,这可以通过插入e s t u f 来实现 填充( p s t u f ) ( v a r i a b l el e n g t h ) p s u t f 为全0 的码长小于8 的比特流, 编码器插入p s t u f 是为了保证下一个p s c 是字节对齐的。 1 3 3 块组层( g r o u po f b l o c k sl a y e r ) 块组( g o b ) 包括一个块组头和宏块数据,结构如图1 7 所示。每个块组包括一 8 南京邮l b 学院坝i i j 究生学位论义第一章h 2 6 3 视频编码标准 行或几行宏块。对于第一个块组( 标号为o ) ,不传输它的块组头,其他块组头可以 为空,这取决于编码策略。解码器能通过外部要求编码器仅传输非空的块组头,如 h 。2 4 5 建议。当g b s c 出现时,g s t u f 可以出现,但对于g n ,g f i d 和g q u a n t 而言则必须出现。g s b l 只有在帧头中的c p m 模式打丌时才出现。 图1 7h 2 6 3g o b 层结构 填充( g s t u f ) 编码器可将它插在g b s c 之前以确保g b s c 是字节对齐的, 解码器应设计成丢弃g s t u f 。 块组起始码( g b s c ) ( 1 7 b i t s ) 可以是字节对齐的,通过插入g s t u f 来实 现。 组数( g n ) ( 5b i t s ) 宏块的组数的二进制表示。 块组子比特流指示( g s b i ) ( 2b i t s ) 一用二进制形式表示的子比特流编号, 仅用于c p m 模式。 块组帧i d ( g f i d ) ( 2b i t s ) 相邻帧问p t y p e 值相同,则此值相同,否则 变不同。 量化信息( g q u a n t ) ( 5b i t s ) 代表了量化器q u a n t 的信息。 1 3 4 宏块层( m a c r o b l o c kl a y e r ) 宏块的数据包括一个宏块头和块( b l o c k s ) 数据,其结构如图1 8 所示。对帧内 的每个宏块,仅p t y p e 指示“i n t e r ”时,c o d 才出现。p t y p e 指示“i n t r a ” 或c o d 指示时,m c b p c 出现。若p t y p e 指示“p b f r a m e ”,m o d b 出现并指示 m b 的种类( 0 到4 ) 。c b p y ,d q u a n t ,m v d 和m v d 2 4 只有在m c b p c 指示时 才出现。同时c b p b 和m v d b 仅当m o d b 指示时出,而块数据在被m c b p c 和c b p y 指示时出现。 图1 - 8h 2 6 3 宏块层结构 宏块编码指示( c o d ) ( 1b i t ) 宏块编码标志,c o d 仅存在于非i n t r a 9 南l 讪;i 也学院砸一【:研究生学位论文 第一毒h2 6 3 视频编码标准 模式下。 宏块类型和块的色度编码方式( m c b p c ) ( v a r i a b l el e n g t h ) 宏块类型和色 度编码块模式的相关信息。 b 块的宏块模式( m o d b ) ( v a r i a b l el e n g t h ) 用来指示c b p b 和m v d b 是 否存在。 b 块的块编码方式( c b p b ) ( 6b i t s ) 表示b n 块的系数是否存在。 亮度的块编码方式( c b p y ) ( v a r i a b l el e n g t h ) 表明宏块中的哪些y 块至 少要传送个非i n t r a d c 变换系数,各位分别表明相应的块是否有i n t r a d c 以外的系数。 量化信息( d q u a n t ) ( 2b i t s ) q u a n t 变化差值编码。 运动矢量数据( m v d ) ( v a r i a b l el e n g t h ) 两个变长码组成,包括水平和垂 直分量变长编码两部分。 运动矢量数据( m v d 2 4 ) ( v a r i a b l el e n g t h ) 高级预测模式中的三个运动向 量。同m v d 一样,它也包括水平和垂直分量变长编码两个部分。 b 宏块的运动矢量数据( m v d b ) ( v a r i a b l el e n g t h ) m v d b 只适用于p b 帧模式,只有在m o d b 有指示时才出现。它包括水平和垂直分量变长编码两部分。 1 3 。5 块层( b l o c kl a y e r ) 一个宏块包括4 个亮度块和2 个色差块。块层结构如表i - 9 所示。对于每个宏块 中的块而言,i n t r a d c 只有在m c b p c 指示所用的宏块类型为3 或4 时才存在。而 t c o e f 也只是在m c b p c 或c b p y 有指示时才存在。 匝巫丑卫 图i - 9 h 2 6 3 块层结构 南京邮电学院 ! ! 士研究生学位论文 第二章h2 6 3 视频解码与v l d 第二章h 2 6 3 视频解码与v l d 2 1h 2 6 3 解码器的基本流程 h ,2 6 3 解码器的主要作用就是要将编码器输出比特流恢复成为原始的图像。这一 过程相当于编码过程的逆过程。编码过程是将原始图像分解成若干个g o b ,每个g o b 分解成多个1 6 1 6 像素的m b 。m b 是进行运动预测的基本单位,对于每个m b , 在参考帧一定的范围内搜索,根据一定的算法,找到最佳的匹配宏块,进行运动补偿。 编码器的基本流程图如图2 1 所示: 阁2 1 编码器的基本流程图 南京邮f 乜学院硕士研究生学位论文 第二章h2 6 3 视频解码与v l d 解码过程可以近似为编码过程的逆,首先它要从比特流中恢复出各种有用的数 据,这一步解码的过程实际上就是h u f f m a n 解码。这一过程中主要包括解p i c t u r e 头、g o b 头、m b 头部信息,和解b l o c k 层中的i n t r ad c 系数、t c o e f 系数。 将码流转换成有用的数据之后,就可以进行图像的恢复。m b 是预测的最小单位,对 于每一个m b ,解码器先进行运动预测。根据运动矢量从参考帧中找出参考宏块 m b p r e ,其像素的亮度值可用1 6 1 6 的矩阵y p r e 表示,这就是该宏块亮度的预测值。 亮度差分值就是m b 原始亮度值与预测值之间的差值,是从码流中b l o c k 层的系数 值中恢复出来的,可以表示为1 6 1 6 的矩阵y d i f f o 所以重构的m b 值可以由式2 1 得到: y r e c2y p r e + y d i f f ( 2 1 ) 以上是亮度值的运动补偿过程,色度的运动补偿过程与之类似,唯一不同的是色 度矩阵是8 8 的。 以上介绍的运动补偿的一般过程,它有两个特例:i n t r a 宏块和s k i p 宏块的 情况。i n t r a 宏块直接对其的像素值进行d c t 变换的宏块。这种情况下,宏块没有 进行预测,所以它的预测值y p r e 就等于0 ,式2 1 则变为: y r e c2y d i f f ( 2 2 ) s k i p 宏块是只有运动预测而不进行编码的宏块,这种宏块b l o c k 层不含有 t c o e f 数据段,即不存在差分值y d i 圩。它的重构值就是预测值,如式2 _ 3 : y r e c = y p r e( 2 3 ) 。 经过运动补偿后得到重构值将按照m b 的顺序存放到一帧图像的相应的位置上。 整个h 2 6 3 的解码的流程见图2 2 : 南京州i u 学院碳士研究生学位论文 第二章h2 6 3 视频解码与v l d 图2 - 2h 2 6 3 解码器的流程 3 南i 渊f 电学院硼士研究生学位论文第二章h 2 6 3 视频解码与v l d 2 2 可变长解码 整个h 2 6 3 的解码过程从功能上可分为两部分:可变长解码和图像重构。这一节 中着重介绍可变长解码。由于可变长码采用h u f f m a n 码,所以可变长解码也可称为 h u f f m a n 解码。h u f f m a n 编码效率高,运算速度快,实现方式灵活,在数据压缩领域 得到了广泛应用。 h u f f m a n 解码就是恢复经过h u f f m a n 编码的数据,根据编码过程我们可以知道, 其中包括p i c t u r e 头、g o b 头、m b 头和b l o c k 中的i n t r a d c & t c o e f 。下面将分别 介绍解头部信息和解d c t 系数过程。 解头部信息包括解p i c t u r e 头、g o b 头和m b 头。对三者解码的方法相同,都是 根据协议中每一个条目所对应的比特数,逐个从数据流中取出相关信息,具体各层头 信息码字的码长和何时出现,参见1 3 节h 2 6 3 码流结构。 头部信息解析完成之后就是对b l o c k 层中的i n t r a d c 和t c o e f 系数的查找。 这里有两种特殊的情况,对于i 帧或者对于i n t r a d c 宏块,可能只有1 n t r a d c 系 数,而没有其它t c o e f ,此时当解出i n t r a d c 时,可以跳过解下一b l o c k 。对于i n t e r 宏块,可以跳过该宏块的某一b l o c k 或全部b l o c k 的编码,所以解码时需要作出判断。 过程如图2 - 3 所示: 阁2 - 3b l o c k 层解码过程 1 4 白束i l f f f f u 学院硕上柳 究! k 学位论文 第二章h 2 6 3 视频解码与v l d 当前帧是i 帧或当前m b 类型是帧内宏块( i n t r a ) 时,b l o c k 的第一个系数是 直流系数,直流系数采用8 比特量化编码,二进制码字0 0 0 00 0 0 0 和1 0 0 00 0 0 0 不被 使用,重建值1 0 2 4 编码为1 1 1 lj 1 1 1 。 当前m b 类型是帧间宏块( i n t e r ) 时,每一个m b 中的六个b l o c k 都可能不被编 码,因此在解码时首先要判断当前宏块中哪几个b l o c k 没有编码。根据h 2 6 3 协议, 四个亮度块的编码标识信息由m b 头的c b p y 中得到,两个色度块的标识由c b p c 得到。不编码的b l o c k 表示该b l o c k 与预测m b 中对应b l o c k 的差分值为0 。 对于交流系数经过h u f f m a n 解码解出的游程码( r u n l e v e l ) ,还需要再进行 r n n l e v e l 解码。最经常发生的事件( e v e n t s ) 用表中的可变长编码进行编码, 个事件由一个非0 系数指示( l a s t ,0 ;该块中还有非0 系数,“l ”:这是 该块中最后一个非o 系数) ,编码系数前的连续0 个数( r u n ) 和编码系数的非0 值( l e v e l ) 结合而成。剩余的( l a s t ,r u n ,l e v e l ) 所构成的组合用2 2 比特 来进行编码。其中包括7 比特的e s c a p e ,1 比特的l a s t ,6 比特的r u n 和8 比特 的l e v e l 。对于8 比特的l e v e l ,0 0 0 00 0 0 0 和1 0 0 00 0 0 0 被禁止使用。 t c o e f 系数的编码方式是根据文献 1 t a b l e1 3 来编制的,当出现的r u n l e v e l 值在这个表中不能查到的话,则根据t a b l e1 4 来编制。在解码时先判断是查哪个表, 然后再根据相应的表来恢复r u n l e v e l 值。具体实现中,可以将表1 3 中的h u f f m a n 码字进行分类,分成若干个子表,先判断再在相应的子表中搜索,这样在搜索过程中 所耗费的时间大大减小。关于这种方法的原理,将在第4 章的算法优化中具体说明。 流程如图2 - 4 所示: 堕塞! ! ! ! ! 生兰坚竺主竺壅竺兰竺丝苎 塑三兰坚:! ! ! 望塑塑里生兰旦 2 3 运动补偿 图2 4t c o e f 解码过程 运动补偿包括以下几个步骤:运动预测、i d c t 和图像重构。下面将依次详述这 三个步骤。 6 南糸f i | l i 电学院倾f :研究生学位沦文 第二章h2 6 3 税频解码与v l d 2 3 1 运动预测 运动补偿预测是一个有力的工具,可以减少帧闻的时间冗余度,并作为用于 d p c m 编码的预测技术。运动补偿概念是以对视频帧间运动估计为基础的,也就是说, 若视频镜头中所有物体均在空间上有一位移,那么用有限的运动参数来对帧间的运动 加以捞述。为了做到这一点,画亟一般划分成一些不连续的像素块,对每个这样的像 素块,只对一个运动矢量进行估算、编码和传送。 在h 2 6 3 压缩算法中,运动补偿预测技术用来减少帧间的时间冗余度,只对预测 误差画面( 原始画面与运动补偿预测画面之闯的差别) 加以编码。运动补偿去除时 间方向的冗余度,最多只能利用前后两帧图像间的相关性,效率不高。而实际上,尤 其是在运动缓慢的图像序列中,在连续多帧图像间都存在着很强的时间相关性。正是 由于它固有的缺陷,使得在图像活动剧烈或低码率通讯时,编码器只能通过租量化, 降低帧频或舍去更多的d c t 变换系数来降低码率,因而对信号损伤较大,丢失了许 多有用的信息。在恢复图像中将出现明显的块效应。 运动预测阶段实现的主要目标是得到m b 像素的预测值。首先要计算运动矢量的 预测值和运动矢量的差分值,并由这两个值求出重构的运动矢量。根据这个重构的运 动矢量找出m b 的亮度预测值色度预测值。 2 3 ,1 ,1 差分运动矢量 通过在运动矢量差( m v d ) 所指示的矢量差加上预测结果即可得到宏块的运动矢 量。在每宏块一个运动矢量差( m v d ) 的情况下,差分编码的候选预测矢量来自周围的 3 个宏块预测矢量按照水平和垂直分量分别迸行计算,如图2 5 所示。 在当前宏块处于块组或图像边缘的特殊情况下,应用如下的判决规则: ( 1 ) 当对应宏块以i n t r a 方式编码或未编码( c o d = 1 ) ,候选预测置为0 。对 于每个分量,预测欠量等于三个候选矢量的中值。 ( 2 ) 如果对应宏块在图像外( 在左侧) ,候选运动矢量预测值m v l 置为0 。 ( 3 ) 如果对应宏块在图像外( 在顶端) 或当前块组的块组头非空时,对应宏块在 块组外( 在顶端) ,候选预测运动矢量预测值m v 2 和m v 3 置为m v l 。 f 4 ) 如果对应宏块在图像外( 在右侧) ,候选预测m v 3 置为0 。 对于每个分量预测值是这个分量三个预测值的中值。每个运动矢量的变长码 ( v l c ) 码字代表一对差值。有一对能产生在允许的范围 1 6 ,1 5 5 】内的运动矢量。 运 南京j i u 学院硕士研究生学位论文第二章h 2 6 3 视频解码与v l d 动矢量水平或垂直分量的正值意味着前帧图像相应宏块在空问上位于右边或下边。 m v 2m v 3 m v i m v m v 2m v 3 ( 0 ,0 )m v m v :当前宏块的运动矢量 m v i :当前宏块的前一宏块的运动矢量 m v 2 :当前宏块的上面宏块运动矢量 m v 3 :当前宏块的右上宏块运动矢量 m v lm v l m v lm v 虚线是画面的边界 图2 - 5 运动矢量预测 m v 2 ( 0 ,0 】 m v lm v 在程序中,通过设置一个全局运动矢量表示m v ,用来保存每个宏块的运动矢量, 在每一帧开始的时候,先将最上边界处的宏块的运动矢量置为“n ov e c ”,再把左 右边界的宏块运动矢量置为零,每求得个宏块的运动矢量,就将矢量写到相应的位 置,这样在程序中可以很容易的得到m v i 、m v 2 、m v 3 值,然后得到当前宏块的预 测矢量p m v ,同时解码查表求得运动矢量差m v d ,然后可以根据下面的代码得到当前 宏块的运动矢量,再将这个矢量值写入全局运动矢量表,为相邻宏块得到预测值做准 备。 i f ( m v d 3 1 ) m v d 一= 6 4 ; m v d + = p m v ; i f ( ! l o n g _ v e c t o r s ) i f ( m v d 3 l 、m v d 一= 6 4 ; i f ( m v d 一3 2 )m v d 忙6 4 ; e l s e i f ( m v d 6 3 )m v d - = 6 4 ; 晰京| | | i | 乜学院碳士研究生学位论文第= 章h2 6 3 视频解码与v l d 2 3 2 解差分系数 2 - 3 2 1 反量化 2 2 节中解出的系数仅仅是经过h u f f m a n 解码和r u n l e v e l 解码的量化后的d c t 系数,因此先要对这些系数进行反量化。 这里用l e v e l 表示游程编码中的l e v e l ,当l e v e l 等于0 时,r e c ( r e c o n s t r u c t i o n ) 也等于0 。 其它的非零系数由以下公式可得: i r e c i = q u a n tx ( 2 i l e v e l i + 1 ) 如果q u a n t 为奇数( 2 1 ) l r e c i ;q u a n t ( 2 i l e v e l i 十1 ) - 1 如果q u a n t 为偶数( 2 2 ) 其中,q u a n t 为量化步长。 这一过程不允许偶数出现,这是为了防止逆离散余弦变换( i d c t ) 非匹配误差的积 累。在计算得到r e c 的绝对值后,再加上符号便可得到最终的r e c 值。 r e c = s i g n ( l e v e l ) l r e c i( 2 3 ) s i g n ( l e v e l ) 由t c o e f 码字的最后一个比特给出。 2 3 2 2 重建值的修正 在反量化后,除i n t r a d c 外的所有系数的重建值都被限制在一2 0 4 8 到2 0 4 7 的范围内。 2 _ 3 2 - 3z 字形扫描顺序 量化的变换系数根据图2 6 中的序列排列到8 8 的块中。 l2671 51 62 82 9 3581 4172 73 04 3 491 31 82 63 l4 24 4 1 01 21 92 53 24 i4 55 4 l l 2 02 43 34 04 65 35 5 2 i2 3 3 4 3 94 75 25 6 6 1 2 23 53 84 85 i5 76 06 2 3 63 74 95 05 85 96 36 4 i ; j2 - 6h 2 6 3 请化后的变换系数的之字形放置 在程序实现时,为了简化程序,提高效率,可以将反量化与z 字形扫描结合同时 完成,每解山一个系数,反量化后,矗接按照z 字形扫描的顺序写入m b p o o l 中。 但是可以知道,如果按照上面的扫描顺序表每次计算扫描的位置的话,一个宏块可能 南京| l i | f i u 学院硕士研究生学位论文第二章h2 6 3 视频解码与v l d 要计算数十次,计算开销过大,因此在程序中,提出了适合c r a d l e c t 3 4 0 0 的z 字扫 描表,这样结合c r a d l ec t 3 4 0 0 的d s e 中的f a d 和f d 寄存器,很容易得到每个系 数在z 字形扫描中的位置。下面结合程序来具体说明如何通过该z 字扫描表来确定 t c o e f 在b l o c k 中的位置。 程序中定义了一个z i g z a g _ s t r u c t 结构,结构中限定每个u n s i g n e di n t 为8 位,这 样可以节约片内存储器的空问,这里的s t d z i g z a g v a l u e 是,而r o w v a l u e 和c o l v a l u e 就是表示行列值。 t y p e d e f s t r u c tz i g z a g _ s t r u c t u n s i g n e di n ts t d z i g z a g v a l u e u n s i g n e di n tc o l v a l u e : u n s i g n e di n tr o w v a l u e : u n s i g n e di n td u m m y : z i g z a g _ s t m c t ; z i g z a g _ s t r u c ts t a n d a r d z i g z a g 6 4 】一s l = o ,0 ,0 ,0 , 9 ,4 ,0 ,0 , 1 0 ,0 ,l ,0 1 8 ,4 ,1 ,0 3 3 ,0 ,2 ,0 5 ,4 ,2 ,0 , 2 7 ,0 ,3 ,0 5 6 ,4 ,3 ,0 2 8 ,0 ,4 ,0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 瓦屋面工创新方法模拟考核试卷含答案
- 调理肉制品加工工岗前基础培训考核试卷含答案
- 皮肤管理师安全生产基础知识竞赛考核试卷含答案
- 工艺蜡染工安全技能测试模拟考核试卷含答案
- 水产养殖潜水工安全实操强化考核试卷含答案
- 印染烧毛工变革管理强化考核试卷含答案
- 压力机(生产线)操作工岗中业务能力考核试卷含答案
- 船舶电焊工变更管理评优考核试卷含答案
- 铝箔腐蚀氧化工班组安全能力考核试卷含答案
- 油船清洗工安全知识强化考核试卷含答案
- 棚顶抬升施工方案及流程
- 《神曲》课件教学课件
- 北理 光电成像原理与技术4-辐射源与典型景物辐射教学课件
- 人教版(2024)八年级上册数学全册教案
- 药品验收员培训试卷及答案
- DB41T 2689-2024水利工程施工图设计文件编制规范
- 乳制品gmp培训课件
- 智慧水电厂一体化平台建设技术导则
- 数说成长 共育花开-二年级数学家长会【课件】
- 幼儿园如何家长会培训
- 20起典型火灾事故案例合集-2024年消防月专题培训
评论
0/150
提交评论