(信号与信息处理专业论文)avs_m算法优化及其在dm642上的实现.pdf_第1页
(信号与信息处理专业论文)avs_m算法优化及其在dm642上的实现.pdf_第2页
(信号与信息处理专业论文)avs_m算法优化及其在dm642上的实现.pdf_第3页
(信号与信息处理专业论文)avs_m算法优化及其在dm642上的实现.pdf_第4页
(信号与信息处理专业论文)avs_m算法优化及其在dm642上的实现.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

(信号与信息处理专业论文)avs_m算法优化及其在dm642上的实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 随着计算机和网络技术的发展,多媒体通信如图像、语音以及视频的传输成了人 们生活中的一个重要组成部分。目前,国际上比较流行的多媒体通信压缩标准包括船e g 系列标准和h 2 6 x 标准。由于这两个标准都要收取昂贵的专利费用,我国自主研发并 制定了具有自主知识产权的音视频编解码标准a v s ( a u d i ov i d e oc o d i n gs t a n d a r d ) 【3 】 v s 标准的第七部分移动视频部分 v s - m ( a u d i ov i d e oc o d i n gs t a n d a r d - m o b i l e ) 是为了适应移动通信中的多媒体传输和存储需要而制定的,主要针对小画面显示的3 g 应用u 1 。由于移动设备的c p u 处理速度有限,如何提高解码器的效率和速度就成了这一 标准能否在移动通信中获得应用的关键。 本文介绍了课题的背景、研究意义及课题来源,阐述了a v s _ m 标准的编解码器的 架构及其内部采用的主要技术。针对 v s 工作组官方的参考软件w i n 2 7 嘲展开优化和速 度提升工作,分两步进行。 首先,在p c 上进行算法级的优化。用v t u n e 工具分析了解码器的时间复杂度,得 到其速度瓶颈为分像素点位置插值计算问题。在探讨了问题存在的原因后,提出了流 程改进方法和数据载入方法。经实验验证,该方法使解码器在p c 上的速度提高到了原 来的1 5 倍。 其次,在嵌入式系统d m 6 4 2 ( t i 公司c 6 4 x 系列的数字信号处理器) 开发平台上实 现了实时解码器。根据c c s ( c o d ec o m p o s e rs t u d i o ) 编译器的特点进行了代码移植工作。 根据该系统存储器结构特点,分析了参考软件存储器管理效率低的原因。提出了c a c h e 优化、参考帧数据快速查询和数据最小等待时问一系列的改进方法,并合理地组织了 代码编译优化方法。通过评估板测试,解码速度达到了实时播放的要求。 关键字:a v sm ;插值算法优化;v t u n e 分析;d m 6 4 2 ;存储器三级结构;c a c h e 优化; e d m a 与c p u 同步 a b s t r a c t w i 血也ed e v c l o p 删斌0 f 删p u t e ra n d n e t w o r l 【t h n o l o g y , m d t i m e d i ae o m m u n i f i o n 跚i c h 勰i m p e , m u s i ca n dv i d t r a n s m i s s i h a s 涨i i l _ t 0p e o p l e sl i f 色n o wi l lt h ew o r l d m p e ga n dh 2 6 嚣躺t h em o s tp o p i l l 盯m 妇。d i ac o m p r e s s i o np r o t o c o l s s i i l u s i n gt h e s e t w os t a n d a r d sh a v e 幻p a y 懿p e n s i v em y a l t y 0 1 1 1 c o u n t r yb a sd e y e l o p e do u ro w n a v s ( a u d i o a n dv i d c o d i n gs t a n d a r d ) 、) i r i n lm d e p e n d 伽ti n t e l l e c t u a lp r o p e r t yn 曲t t h e v e n t l lp a r to ft h es t a n d a r da v $ 一m ( a i l d i 0 啊d c o d i n gs t a n d a r d 咖幽l e ) i s d e v e l o p e d 幻a d a 耻t h em o b i l ec o m m u n i c a t i o nn e e d s i ti sm a i n l yu s e di nt h em d t i m e d i a s 觚g e , o o 】田n l u n i 训o na n ds m a l li m a g es h o wi nt h e3 g b e c a u s eo fl o wc p up r o c e s s i n g s p e e do np d & h o wt oi m p r o v ed e e o d e r s 印e e di st h em o s ti m p o r t a n tp r o b l e mw en e e dt o s o l w i i lt h i sp a p e r , w em t r o d u b a c k g r o u n da n ds i 鲥6 c 觚c c0 ft h es u b j e c t , a n dd e s 口醍埒 f i a m e w o l ka n dm 旬0 r l o 西嚣0 ft l l ec o d e c 弧w ed 0 叩t i m i z a t i o nw o r kb a s e do i lm e 鲫u r c cc o d ew m 2 7 t h eo p u m i z 撕o n p r o e e s s m gh a st w o 鼬e p s f i r s t , a l g o f i t h mi sq 洒m 娩e do np c r h r o u g l la n a l y 2 i n gt i m e 伽哪p 1 咖w cg e tt h a t s u b _ p i ) 【dm t e r p o l 蜘a l g o f i t h mi sb 砌铽旧出o ft h ed c c o d 盯ow e o p o s cp r o c e s s i m p r o v e m 铋tm e t h o d sa n dd a m l o a dm e t h o d s e x p e r i m 踟词r e s u l 乜s h o wn l a tt 1 1 髂em e t h o d s h a v e e n h a n c e dt h ed e c o d i n gs p e e dt 01 56 m e se o m p 刹、) i 由h o r i g i n a lo n e s e e o n d ,t h ed e e o d 盯i sr e a l i z e do nd m 6 4 2s y s t e m p o r tt h ec o d e 幻蹦l b e d d 。ds y s t e m a c c o r d i n g 幻c c s ( c o d ec o m p o s e rs t u d i 0 ) c o m p i l 盯sc h a r a c t e r i z e t h r o u 曲a n a l y z i n g m e m o r ym a n a g 贫s t r u c t u r e , w ei m p r o v ec a c h eo r g a n i z a f i o n ,d a mr e s e a r 出m e t h o da n dd a m l e a s t w a i ts o l u t i o n e x p e r i m 酬r e s u l t s0 1 1e v ms h o wi th a ss a t i s f i e dr e a l - t i m ed e c o d i n g r e q u i r e m 曲 k e yw o r d s :a v s _ m ;m t e r p o l 翻o l 坩m 证撕。珥v t t m e 删y s i s ;d m 6 4 2 ;m e m o 巧s t r u e t u 佗= , c a c h e o p t i m i z a f i o n ;e d m aa n dc p us y n c h r 0 】= l i z 撕o n 本人声明 我声明,本论文及其研究工作由本人在导师指导下独立 完成。在完成论文时所利用的一切资料均已在参考文献中列 出。 作者:陆林海 签字:似彳易 2 0 0 8 年钥倍日 1 1 引言 第一章绪论 近二十多年来电子信息技术迅猛发展,推动了数字视频业务的快速发展。数字视 频数据量巨大,在存储和传输之前需要进行压缩,播放之前再进行解压缩还原,这种 压缩和解压缩技术称为数字视频编解码技术。数字视频编解码处于信号处理的信源端, 是数字信息传输、存储、播放等环节的前提和基础,是数字音视频产业的共性基础技 术和关键技术,因而成为近2 0 年来整个数字视频领域国际竞争的热点。 现阶段国际两大组织i s o 和i s t t 分别制订了即e g 系列标准和h 2 6 x 标准,伴 随着新标准的提出,新产品、新应用也随之发展。m p e g l 标准带来了r e d 的兴起,m p e g 2 标准带来了d y d 和h d t v 的商机。h 2 6 1 在i s t n 上以及h 2 6 3 在p s l n 上的应用,成为 了可视电话标准的一部分,也将视频标准推向网络化应用的新时代。同时,m p e g 4 和 h 2 6 4 使视频压缩技术发展到了一个更高的阶段,能够在较低带宽上带来更高质量的传 输,为移动视频及视频通信带来新的解决方案。 a v s ( a u d i ov i d e oc o d i n gs t a n d a r d ) 标准是我国自主制定的数字音视频编解码技 术国家标准,a v s 标准包括系统、视频、音频、数字版权管理四个主要技术标准和一致 性测试等支撑标准。a v s 是我国拥有自主知识产权的技术,解决了国外专利收费的问题。 a v s 标准有着很广阔的应用前景,包括交互存储媒体、宽带视频业务、多媒体邮件、分 组网络的多媒体业务、实时通信业务( 视频会议,可视电话等) 、远程视频监控等。其 中,a v s 标准的第七部分移动视频 v s - m ( a u d i ov i d e oc o d i n gs t a n d a r d - m o b i l e ) 是为 了适应数字存储媒体、网络流媒体、多媒体通信等应用中对运动图像压缩技术的需要 而制定的。a v s - m 视频的主要特点是应用目标明确,技术有针对性。a v s - m 主要针对小 画面显示的3 g 应用,是面向新一代移动通信的视频编码标准。 1 2 视频编码的发展现状 ( 1 ) i v l p e g 系列 m p e g 是m o v i n gp i c t u r e se x p e r t sg r o u p ( 动态图像专家组) 的缩写。1 9 9 1 年1 2 月, 该组织提出m p e g l 嘲,以v c d 和m p 3 为代表产品,在c d r o m 上的音视频存储可达 到1 5 - 2 m b i t s 。1 9 9 4 年推出m p e g 2 ,针对数字电视、高清电视和d v d 的视频压缩, 针对h d t v 应用的编码率为4 - 9 m b i t s 。1 9 9 8 年又推出m p e g 4 ,比m p e g 2 在保证画 面质量的情况下有着惊人的数据压缩比,多用于手机等消费电子产品,也开始应用在 监控设备上,并在m p e g 4 中首次提出一种基于内容的视频编码形式,有别于m p e g i 中基于矩形块的帧结构,在需要超低比特率的时候使用基于块的结构m ,在有比较高要 求的场合使用基于内容的结构。m p e g 系列的平均压缩率在l 。5 0 ,最高可达l :2 0 0 ( 2 ) h 2 6 x 系列 h 2 6 x 系列是由国际电信联盟( 删) 提出的,n u _ t 是国际电信联盟标准化部门脚 1 9 9 3 年,r i u 提出h 2 6 1 ,为在综合业务数字网( i s d n ) e 开展双向声像业务( 可视电话、 视频会议) 而制定,速率为6 4 k b s 的整数倍。h 2 6 1 只对c i f 和q c i f 两种图像格式进 行处理。1 9 9 6 年,提出h 2 6 3 ,是最早用于低码率视频编码的r r u - t 标准,随后出现 的第二版( h 2 6 3 + ) 及h 2 6 3 + + 增加了许多选项,使其具有更广泛的适用性,在p s t n 上 至少有6 4 k b s 。h 2 6 4 是由i s o i e c 与mm 组成的联合视频组( j v t ) 釉j 定的新一代视 频压缩编码标准,已经被纳入m p e g 4 的第十部分,它具有相当高的数据压缩比,在同 等的图像质量条件下,h 2 6 4 的数据压缩率能比m p e g - 2 高2 3 倍,比m p e g - 4 高1 5 - 2 倍。正因为如此,经过h 2 6 4 压缩的视频数据,在网络传输过程中需要的带宽更少 在相同的重建图像质量下,h 2 6 4 比h 2 6 3 + 和m p e g - 4 减小了5 0 的编码量,但是h 2 6 4 有着较高的计算复杂度n 帕。 ( 3 ) w m v 系列 w m v 格式( w m d o w sm e d i av i d e o ) 是微软推出的一种采用独立编码方式并且可以 直接在网上实时观看视频节目的文件压缩格式。主要优点有:本地或网络回放、可扩 充的媒体类型、可伸缩的媒体类型、多语言支持、环境独立性、丰富的流间关系以及 扩展性等。目前占据市场巨大份额的m e d i a 系列产品的核心就是视音频编解码技术 w m v 和w m a 。w m a ll 是目前视频编解码的最新版本。 1 3a v s - m 的研究现状 a v s 标准由我国数字音视频编解码技术标准工作组提出。a v s 的编码效率理论上比 肝e g 一2 国际标准高2 3 倍,可节省一半以上的无线频谱和有线信道资源,降低传输和 存储的复杂度,也可以兼容m p e g - 4a v c h 2 6 4 国际标准基本层。a v s _ m 是a v s 系列标 准中的第七部分,移动视频编码标准,又称为a v s _ p 7 其目的是为手机等移动设备提 供视频编解码规范和标准,应用范围包括交互存储媒体宽带视频业务、多媒体邮件、 远程视频监控、视频会议、可视电话等。 a v s 标准的研究目前主要是在国内开展,也包括一些国外的 v s 会员单位,如a 胁、 s u n 、索尼、三星等,从a v s 工作组成立到现在,各高校、研究所和相关企业都投入到 这个产业当中,取得了很多成果。2 0 0 5 年3 月2 日,a v s 高清解码芯片科技成果鉴定 会在北京召开,我们国家开发出第一个 v s 芯片。2 0 0 5 年1 2 月6 日,“基于 v s 标准 的数字视频广播编码播出与接收系统 通过鉴定,第一个 v s 实施级编码完成。在产 业化进程中,2 0 0 6 年9 月,中国网通开始进行a v s _ i p t v 的商用实验,2 0 0 7 年2 月, a v s _ i p t v 用户体验实验在大连完成。2 0 0 6 年6 月,联合信源数字音视频技术( 北京) 有 限公司开发出 v s 标准的软件编码器和播放器,编码器可以支持实时编码和离线编码 两种方式,解码器实现了基于p c 端播放a v s 视频图像的功能叫。 1 4 课题来源 本课题来源于广东省自然科学基金项目“多生物特征融合与识别模型与算法研究一 ( 项目编号:0 7 0 1 0 8 6 9 ) 、北京大学视觉与听觉信息处理国家重点实验室开放课题基金 项目“生物特征融合与识别的应用研究 ( 项目编号:0 5 0 5 ) 、浙江大学c a d & c g 国家 重点实验室开放课题基金项目“多生物特征识别算法研究一( 项目编号:a j c l 7 0 3 ) 。 1 5 本文的研究工作 本文的研究工作主要分为两大部分:分析了a v s _ m 解码器w i n 2 7 嘲中的性能瓶颈并 提出了改进的插值算法:将参考代码移植到d m 6 4 2 平台上,并进行了存储器系统优化 提出了外部数据访问和计算的协同方法。 本文分为四章内容,安排如下: 第一章介绍本课题的背景和意义、常用的视频压缩标准的特点和应用范围。 第二章介绍 v s j 的编码器的框架结构,并对其中的关键技术帧内预测、帧间预 测、变换量化、熵编码和环路滤波技术给予了详细阐述;然后介绍相应的解码器结构 由于解码器中的技术大部分与编码器相同,对其附加介绍帧内补偿和帧间补偿部分 第三章在p c 上进行算法级的优化。用v t u n e 工具分析了解码器的时间复杂度,得 到其速度瓶颈为分像素点位置插值计算问题。在探讨了问题存在的原因后,提出了流 程改进方法和数据载入方法。 第四章在嵌入式系统1 h 6 4 2 ( t i 公司c 6 4 x 系列的数字信号处理器) 开发平台上实 现了实时解码器。将p c 上的参考代码, m 2 7 移植到d m 6 4 2 的开发平台上。根据该系统 存储器结构特点,分析了参考软件存储器管理效率低的原因。提出了c a c h e 优化、参 考帧数据快速查询和数据最小等待时间一系列的改进方法,并合理地组织了代码编译 优化方法,使解码的速度有了大幅度的提高。 第二章a v s m 视频标准 2 1 a v s m 编码器 2 1 1 a v s m 编码过程框架 根据a v s m 的标准描述,编解码器的结构和编解码过程如图2 一l 所示。 ;黼 雩塑p 蕊囊 矗 一? 灞豳麓豳醯= 。一帧 主动欠复 数据 。2 譬一 图2 1a v s - m 编码器框架 编码过程有以下几个部分: ( 1 ) 将当前要编码的帧和预测图像做减法得到差值图像,对差值图像做变换、量 化、熵编码后得到码流; ( 2 ) 对差值图像变换量化后,把这些数据进行反量化反变换,得到还原后的图像。 对还原后的图像和下一个要编码的帧图像进行分析从而得到运动矢量: ( 3 ) 根据当前图像和分析得到的运动矢量进行计算得到一个当前编码图像的预测 图像。 簪 2 1 2a v s m 的图像数据结构 a v sm 标准的帧图像格式为4 :2 :o o 一帧图像由一个亮度y 样本矩阵和两个色度c b 、 c r 样本矩阵构成,色度矩阵c b 和c r 的行数和列数均为亮度矩阵的一半,排列布局如 图2 2 所示。 l ( 、rf ,( 、。 l “ q 图2 2 亮度和色度样本位置 a v s m 标准中定义了两种图像:帧内编码图像( 工帧) 和前向帧间编码图像( p 帧) 。 p 帧最多可参考前向的两帧,运动向量所指的参考像素可超出参考图像的边界。图像可 以分成若干条带,如图2 3 所示,条带是按光栅扫描顺序连续的若干宏块,条带内的 宏块不应重叠,条带之间也不应重叠。条带内宏块的解码处理不使用本图像其它条带 的数据。 图2 - 3 条带结构 帧图像的基本单元为宏块。a v s m 中宏块定义为1 6 1 6 的像素块。一些运动较剧 烈的图像序列宏块变化较大,为了进行编码时的运动估计,对宏块作了进一步的模式 划分,如图2 4 所示。根据运动情况的不同,一个宏块可以按照8 种不同的模式划分 出不同的小宏块单元。 采块埘分 1 - i l 瓠l 硫度块2 个1 6 x 8 亮度块2 个融1 6 尧度块4 4 8 :( 8 毵度头 和捆琏的色鹰块和相波的色座块 和襁瘦的色鹰块和檑的色度块 田日田田 嘲蝴口日田田 2 1 3a v $ - m 编码过程关键技术 2 1 3 1 帧内预测 m p e g - 2 、h 2 6 1 、h 2 6 3 等编码器是对当前帧( i 帧) 直接编码,不进行帧内预测 编码。其优点是为解码器建立了不用补偿的参考帧,简化了计算过程。但由于没有进 行帧内预测,导致图像的压缩效率不高。处于一帧的图像,由于其图像内容的连续性, 相邻像素点的图像值相差不大,这种强的相关性就存在空间上的冗余所以现在的 m p e c - - 4 、1 4 2 6 4 视频编码算法均采用了不同的帧内预测的方法来去除同一帧图像中相邻 块之间的冗余,将当前像素值用前面已知的相邻像素来进行预测,然后对实际值和预 测值差值进行编码口。 a v s m 帧内预测对亮度帧和色度帧采用了不同的两种帧内预测模式。亮度帧预测是 以宏块内单元4 4 像素块为单位,采用了与h 2 6 4 相似但预测角度更为宽泛的8 个方 向预测和直流( d c ) 预测共9 种预测模式,色度预测分为3 种预测模式。宏块的每一个 8 8 色度块中所有4 4 色度块的预测模式均相同,亮度帧方向的预测模式如图2 - 5 所 示。 图2 - 5 亮度4 x 4 块的帧内预测方向 由于人眼对色度信号的敏感度较差,色度信号的预测模式在4x4 像素块为单位的 基础上只有水平、垂直预测和直流( d c ) 预测三种预测模式,如图2 - 5 中的2 方向和6 方向。 2 1 3 2 帧问预测 由于视频相邻帧的内容相差不大,所以帧间运动估计( 艇) 和补偿( ) 一直是运动 图像压缩编码中的关键技术。帧间预测和编码主要是利用时域相关性,通过运动估计 把视频信号的时域冗余信息去掉,从而达到压缩视频数据的目的。a v s - , i 对p 帧的亮度 块提供最小是1 4 精度的运动估计,而色度块是l 8 精度的运动估计嘲。 运动估计是根据代价函数在参照帧中寻找一个与当前宏块单元块最匹配的块,作 为当前块的估计值。根据编码块和参考块的位置计算出运动矢量。编码过程中,如果 根据代价函数得到运动矢量不是整数像素位置,则要经过滤波器插值计算分像素位置 的值来得到参考块。a v s - m 采用了两个参考帧,即在编码时,帧间预测需要在两个参考 帧中寻找参考块。 运动估计的结果就是图像块的运动矢量,在a v s m 中对运动向量的初始值信息也 采用了预测编码的方法,也就是一个块的运动向量的初始值可以通过相邻块的运动向 量来计算,如图2 - 6 所示。e 代表当前需要进行运动估计的编码块,a 、b 、c 、d 是与 e 相邻并完成运动估计的编码块。根据运动向量的相近准则,e 块的运动向量应该与a 、 b 、c 、d 四个块的运动向量差不多,所以可以由a 、b 、c 、d 的运动向量估计出e 的 运动矢量预测值,然后根据代价函数通过运动估计的调整过程来确定最终e 块的运动 c ii-li 向量的值。 r 二! j。 c 习 b l 馨” 耄 卜 。霭 瑾 + 躺 图2 石计算运动向量的初始值的空间位置 如前所述,对宏块本身预测单元的划分,具体预测单元的运动矢量的初始值的计 算过程又各不相同,如图2 7 所示。当上面的e 宏块划分为两个8 1 6 预测单元时,左 侧的预测单元会利用a 块的运动向量,而右侧的预测单元会利用c 块的运动向量。当 e 块划分为两个1 6 x8 预测单元的时候,上面的预测单元会采用b 块的运动向量,而 下面的预测单元会采用a 块的运动向量。 2 1 3 3 变换量化 日1 61 5 8 图2 - 7 不同预测模式运动向量预测 变换技术主要是根据图像在变换域的相关性来消除冗余。由于d c t 为浮点运算其 占用运算资源大,在a v s _ m 中采用了整数d c t 变换。变换只需要加法和移位运算,运 算量小,且不存在舍入误差。运算采用的公式为: y = t 蟛。弓= 季三寻主 23 2 l 21 2 - 3 2 l 之_ 3 _ 23 2一l卜 a 2a ba 2 口66 2 口6 a 2a b a口2 口 a b 矿a b 动 引 。 6 z j 其中,g 描哆是二维变换t 的核心部分,其中c 为整数变换矩阵,芬为缩放系数矩 阵,运算符。表示变换后的系数分别与q 中缩放因子相乘( 标量乘法而不是矩阵乘 法) 。缩放过程是与量化结合的,量化通过乘法和右移来实现。 2 1 3 4 熵编码 a v s 熵编码采用自适应变长编码技术。在a v s 熵编码过程中,所有语法元素和残差 数据都是以指数哥伦布码的形式映射成二进制比特流。采用指数哥伦布码的优势在于, 一方面,它的硬件复杂度比较低,可以根据闭合公式解析码字,无需查表:另一方面, 它可以根据编码元素的概率分布灵活地确定以k 阶指数哥伦布码编码,如果k 选得恰 当,则编码效率可以逼近信息熵。对预测残差的块变换系数,经扫描形成( 1 e v e l 、r u n ) 对串,l e v e l 、r u n 不是独立事件,而存在着很强的相关性,在a v s 中l e v e l 、r u 采用 二维联合编码,并根据当前l e v e l 、r u n 的不同概率分布趋势,自适应改变指数哥伦布 码的阶数。 2 1 3 5 环路滤波 为了消除块变换造成的块效应现象,a v s - m 采用了自适应环路滤波器。环路滤波的 作用是根据块边缘信息的不同采用不同的滤波权重,消除解码图像中的块效应,缓和 块边界差别。块效应产生的原因是由于各个宏块分别进行量化,这样在相邻宏块的交 界处,由于量化步长不同导致原本取值很接近的像素重构后产生了较大的差异,形成 明显的块边界,a y s m 环路滤波以宏块为单位,对亮度和色度分别做环路滤波,首先从 左到右对垂直边界滤波,然后从上到下对水平边界滤波。帧内和帧问有不同的滤波模 式。对于帧间模式如果当前宏块量化系数小于某q p ,则不进行环路滤波。 解码流程如图2 _ 8 所示。从解析n a l 开始,分为以下几个步骤: ( 1 ) 对传输过来的码流首先进行熵解码; ( 2 ) 由于存在预测的问题,帧传输的顺序和实际播放的顺序是不同的,进行重排 序; ( 3 ) 对要解码的数据进行反量化和反d c t 变换; ( 4 ) 对于i 帧,如果里面有帧内预测,要进行帧内补偿操作,再对反变换完的数 据进行环路滤波,得到解码后的图像数据; ( 5 ) 对于p 帧,进行帧间补偿,再对反变换后的数据进行环路滤波,获得解码后 的图像数据。 ”参考毒h 运动朴偿卜 参考宏 h 帧斛楼卜j 块 f 瞄 , 反重熵 解码盾显苯 - 一环辨谴溏_ 行 、d i 四 豹图缘 砷麟碳刑一 变 卜- 量 卜_ 捧 卜一 解 佬序码 换 图2 - 8m s _ m 的解码流程图 2 2 2a v s 解码过程详述 2 2 2 1 帧内补偿 对于i 帧,解码时经过熵解码和变换解码后得到的是非预测帧的帧内预测残差数 据。把残差数据和帧内预测模式得到的预测值相加得到i 帧的重建帧。帧内最左上角 的数据块默认的预测像素值为1 2 8 ,所以加上1 2 8 。其他数据块的预测数据则要根据当 前块帧内预测模式计算得到。 如果帧内预测模式为图2 5 中的0 方向模式,待解码的图像块像素位置如图2 _ 9 所示。其中,待解码块用小写字母表示,其他相邻块用大写字母表示,则当前块帧内 预测数据的计算过程可表示为。 a = ( a + 2 b + c + e + 2 f + g + 4 ) 8 ( 2 - 2 ) b = e = ( b + 2 c + d + f + 2 g + h + 4 ) 8 ( 2 - 3 ) c = f = i = ( c + 3 d + g + 3 h + 4 ) 8 ( 2 - 4 ) 1 1 2 2 2 2 帧间补偿 d = g = j = m = h = k = n = 1 = o = ( ( d + h ) 木4 + 4 ) 8 p - _ ( ( d + h ) 木2 + 2 ) 4 图2 - 9 帧内补偿像素位置 ( 2 - 5 ) ( 2 - 6 ) 运动估计过程是在前两个参考帧中根据当前块和参考块的残差值能量寻找最匹配 的图像块,根据查询结果可得到一个运动矢量。a v s m 是基于图像块的运动估计算法, 运动矢量确定了最佳匹配块和当前块的相对位置,运动矢量由当前块指向匹配块,即 物体移动方向的反方向。 解码时解出来的数据是当前块与最佳匹配块的差值,必须按照运动矢量所指的方 向找到参考帧中最佳匹配块的位置,并把差值和最佳匹配块的值相加才是需要的图像。 2 3 本章小结 本章介绍了a v s m 的编码器的框架结构,并对其中的关键技术帧内预测、帧间预 测、变换量化、熵编码和环路滤波技术给予了详细阐述;然后介绍了相应的解码器结 构。由于解码器中的技术大部分与编码器相同,对其附加介绍了帧内补偿和帧间补偿 部分。 曩 第三章解码器的运动补偿插值算法优化 3 1 分像素运动补偿中的插值算法 3 1 1 分像素运动补偿 在描述物体运动的视频序列中,下一帧和上一帧某个物体的运动情况用整像素间 隔的精度并不能最好地表示,往往物体的运动矢量用分像素精度表示比较符合实际, 这就涉及一个分像素点问题。分像素点是利用周围的整像素点计算出来的一个本来不 存在的像素点。得到分像素点值的过程称为分像素点插值计算过程。在视频编码过程 中运动估计部分先计算分像素点,然后对搜索区域的所有整像素点,1 2 、i 4 分像素 点进行查询,找到最好的匹配位置,得到运动矢量。解码过程要用到这样一过程,先 根据运动矢量查找参考像素的位置,如果是分像素点位置就要进行插值计算。 编码时分像素的精度并不是越高越好。精度降低,插值计算复杂度降低,此时编 码出来图像的物体运动估计不好,差值后图像的编码性能就差。插值的精度越高,运 动估计时找到的匹配块更优,补偿时得到的残差能量越小。同时精度提高会带来编码 器计算复杂度的提高,分像素插值后查找匹配块需要的比较次数将大大增加。通过统 计分析,1 8 像素精度时相对1 4 像素的编码性能提高就很少了。 3 1 2 分像素插值算法 由上述分析可知,分像素插值后运动补偿能达到较好的效果。在a v s - m 中采用了 1 4 像素插值。亮度运动补偿采用i 2 或i 4 精度运动补偿,色度采用l 8 精度运动补 偿。a v s m 中l 2 像素精度垂直插值计算使用4 抽头滤波器;1 2 像素精度水平插值 计算使用8 抽头滤波器;1 4 像素精度插值计算均采用2 抽头滤波器。 3 1 2 1 亮度插值算法 分像素位置点插值算法是针对参考帧中每个像素进行的。对于3 2 0 2 4 0 分辨率的 帧参考图像,插值计算的调用达到7 6 8 0 0 次之多。可见,插值算法的优化程度对解码 的整体速度起关键作用。宏块分像素点与整像素点分布的相对位置如图3 - 1 所示其 中,整像素点位置用大写字母表示;分像素插值点位置用小写字母表示。 口口口固囡圈口口口 回回回 圈回回 回囡田 圈圈圈 口口口固团团口口口 图3 - l 插值样本位置图 二分之一样本位置上插值的计算过程,水平方向上的预测值通过8 抽头滤波器 f h ( 一l ,4 ,- 1 2 ,4 1 ,4 1 ,- 1 2 ,4 ,- 1 ) 得到,垂直方向上的预测值通过4 抽头滤波器 f v ( 一l ,5 ,5 ,- 1 ) 得到,具体的分像素插值的计算方法为 ( 1 ) 水平方向上二分之一像素值b 的计算过程。首先,用f h 对水平方向上最近 的8 个整数样本滤波,得到中间值b 1 = ( - c + 4 d 1 2 e + 4 l f + 4 l g _ 1 2 h + 4 i j ) ,最终的半像素 点b 的值为b = c l i p ( ( b 1 + 3 2 ) 6 ) ; ( 2 ) 垂直方向上二分之一像素值h 的计算过程。首先,用f v 对垂直方向上最近 的4 个整数样本滤波,得到中间值h l = ( - a + 5 f + 5 n s ) 。最终的半像素点h 的值 h = c l i p ( ( h l + 4 ) 3 ) ; ( 3 ) 中心点二分之一位置像素值j 的计算过程。首先,用水平方向8 抽头滤波器 f h 分别计算出r 、b 、q 、s 位置的二分之一像素值,然后用f v 计算j 点的分像素值。 过程中先计算中间值j 1 = ( 一r + s b + 5 q s ) :最终中心点象素值为j = c li p ( ( j l + 4 ) 3 ) 。 四分之一分像素值由半像素插值点通过线性滤波得到,在水平或垂直方向上的四 分之一插值为 a - ( f + b + 1 ) 1 :( 3 - 1 ) c - ( g + b + 1 ) l :( 3 - 2 ) d = ( f + h + i ) l :(3-3) 1 i n = ( n + h + 1 ) l :( 3 - 4 ) 块中间部分的分像素点的计算则需用到中心半像素点j 的值,由于j 的计算过程比 较复杂,四分之一像素点的计算过程就要消耗大量的c p u 资源 f-(b+j+1)l:(3-5) i-(h+j+1)l:(3-6) 。 k=(1+j+1)l:(3-7) 。o;(q+j+1)l:(3-8) e=(f+j+1)l:(3-9) g :( g + j + 1 ) l :( 3 - 1 0 ) n = ( n + j + 1 ) l ;( 3 - i i ) p = ( 0 + j + 1 ) l :( 3 - 1 2 ) 其中,b 、j 、h 、l 、q 是相应二分之一像素位置的预测值;f 、g 、f 、n 为整数样本。 c l i p 函数的作用就是要把值限定在0 - - - - 2 5 5 的范围之内,对于大于2 5 5 的值定为2 5 5 。 计算公式为 3 1 2 2 色度插值算法 仨5 矿o o ) 矿( 0 6 ) ( 3 - 1 4 ) 图3 - 2 色度插值位置图 3 2 参考代码性能瓶颈分析 3 2 1 参考代码的分像素插值计算过程 从上述可知,标准算法将插值点分为三大类,即整像素点、半像素点和i 4 像素点 在参考代码的插值计算实现中,g e t b l o c k ( ) 函数参数引入了x _ p o s 和y _ p o s 两个变量, 它们表示的是当前块中待计算插值点的坐标加上运动矢量后在参考帧中的坐标,也就 是某个运动物体或点在参考图像中的位置。这两个变量均是四分之一精度,所以我们 要通过下述的计算过程得到他们的正像素点位置和插值的相对位置,即 d x = x _ p o s 3 : d y = y _ p o s 3 : x _ p o s = ( x _ p o s d x ) 4 : y _ p o s = ( y _ p o s d y ) 4 : ( 3 - 1 5 ) ( 3 1 6 ) ( 3 - 1 7 ) ( 3 - 1 8 ) 他们相互间的位置关系如图3 3 所示。图中灰色方格表示整像素点,白色方格表示分像 素点。d x 、d y 是预测像素点距自己最近的左上整像素点的相对坐标,l 4 像素精度。而 参考块中整像素的坐标由x _ p o s 和y _ p o s 确定,即参考块相对于参考帧最左上整像 素的坐标,整像素精度。 n囵i m囝囵 r - , y j l ,暑 i l | |i 。- 一 一r 曩正 囝囝囝圈 。一, 7 豳 j 图 囝圈 囝豳 圈图圈囝囝囹 3 2 2 参考代码流程分析 图3 - 3 函数参数的位置关系 标准算法将插值点分为三大类,即整像素点、半像素点和1 4 像素点,然后细分 为9 类分别处理,在这9 类中划分各自的像素点。 参考代码不同位置点的插值计算流程如图争4 所示。由图3 4 可以看出像素插值 计算的判断分支太多。若插值点处于n 或p 位置,则每个像素的插值计算都伴随着9 次判断过程,严重影响计算效率。 如图3 - 1 和图3 _ 4 所示,位置a 的插值计算过程为位置b 的插值计算加上一个线 性滤波的过程,位置b 的插值计算重复两次:位置d 的插值计算过程是位置h 插值计 算加上一个线性滤波的过程,位置h 的插值计算重复两次。由于插值计算对每个像素 都要进行一次,大量的重复造成代码过长从而不能全部存放于c a c h e 中,导致效率降 低n 1 】。 图3 _ 4 参考代码插值滤波判断结构 参考代码插值点的具体计算过程为 g e t _ b l o c k ( i n tx _ d o s ,i n ty _ p o s ) i n td x ,d y ,x _ p o s _ w h o l e ,y _ p o s _ _ w h o i e ; i f ( ( d x - - 0 ) & & ( d y - - - - o ) ) 整像素点位置 1 8 ) e l s e if ( ( d x = = 2 ) g t & ( d y - - - - o ) ) 水平方向上的1 2 像素点位置 e l s ei f ( ( ( d x - 一- i ) i i ( d x u 3 ) ) g t ( d y - - - - o ) ) 水平方向上的1 4 像素点位置 i f ( d x - - 1 ) 左边的i 4 像素点位置 ) e i s e 右边的1 4 像素点位置 e l s ei f ( ( d y 一2 ) ( d x 一0 ) ) 垂直方向上1 2 像素点位置 ) e l s ei f ( ( d y - 一1 ) il ( d y - - 一3 ) ) g t g t ( d x = o ) ) 垂直方向上1 4 像素点位置 先计算像素点:2 i f ( d y = 1 ) 上边的l 4 像素点位置 e l s e 下边的1 4 像素点位置 e l s e i f ( ( d x - - = 2 ) & & ( d y - - 2 ) ) 中心点的1 2 像素点位置 f o r ( i n ti = 0 :i v e c t 中断向量 b s s d a t a 程序中的全局和静态变量。 c i n i t p r o g 程序中的变量初值 c d n s t p r o g 程序中的常量 f a r d a t a 以f a r 声明的全局和静态变量 s t a c k s t a c k c 函数堆栈保留空间 c i o p r o g 标准c 的i o 缓冲 s y s m e m p r o g 系统中的动态分配空间 利用预编译命令p r o g m a 把相应的函数或者数组分配到一个内存空间中。在代码中 变量定义前利用p r a g m a 命令声明这个变量属于的代码类型。 # p r a g m ad a t a _ s e c t i o n ( c m d _ o u t 嘞旦姨旦衬、 v o l a t i l es h o r tc m d _ o u t 1 6 = 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , 0 : 在o a ) 文件中利用s e c t i o n 来将这个代码类型分配到一个存储空间中。 s e ( x 1 0 n s c 胁o u tb u f: d s p _ c m d 4 2 2 代码的语法修改 c c s 有自己的语法规则和定义,所以在d s p 上实现a v s _ m 算法要改变p e 平台a v s - m 编码器的c 代码,使其完全符合c c s 编译器中c 的语法要求。 在调试中发现,对头文件中定义的变量,即便是添加了开关保护,在c 文件中多 次包含时编译器仍然报错。所以,本文采用在头文件中尽量仅定义常量和数据结构, 而不要定义全局和静态变量m 1 。全局变量和静态变量在相应的c 文件中定义,在别处 引用的地方用e x t e r n 标识符进行声明。 由于不同类型的编译器对于s h o r t 、i n t 、l o n g 和d o u b l e 类型的解析不同,而在 d m 6 4 2 上解析上述四种类型的数据类型长度分别为2 ,4 ,5 和8 个b y t e 的长度。为防 止数据的溢出,对数据进行了重新规范。 4 3 参考代码存储器管理效率瓶颈分析 参考代码中数据是利用c p u 获取的,这样数据传输特别是在运动补偿的分像素插 值部分会浪费掉大量的c p u 时间周期;用e d m a 搬运方式可以较好地解决这一问题,并 且不会浪费c p u 运算时间。 若c p u 在运算时相应的数据没有传送到,则处理器需花费一定时间等待,出现了 数据等待耗费时间问题,通过合理地组织数据在内存中的空间分布和数据获取的时间 分布,可将运行当前代码需要的程序和数据同时送到l 2 缓存中去,避免数据等待。 参考代码的帧内部解码是以宏块为单位进行的,这样会带来频繁的小量数据外部 内存访问。即使利用e d 姒技术,在每个宏块访问时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论