(电路与系统专业论文)基于dm642的h264编码优化.pdf_第1页
(电路与系统专业论文)基于dm642的h264编码优化.pdf_第2页
(电路与系统专业论文)基于dm642的h264编码优化.pdf_第3页
(电路与系统专业论文)基于dm642的h264编码优化.pdf_第4页
(电路与系统专业论文)基于dm642的h264编码优化.pdf_第5页
已阅读5页,还剩61页未读 继续免费阅读

(电路与系统专业论文)基于dm642的h264编码优化.pdf.pdf 免费下载

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

文档简介

摘要摘要 新一代视频压缩标准h.264/avc是极低码率视频编码标准, 具有压缩效率高、 图像效果好的特点。随着编码性能的提高,复杂度也随之提高。如何将其应用到 嵌入式中实现实时编码,是研究 h.264 应用的主要方向。 本文选用 ti 公司的 tms320c64 系列的 dm642 芯片作为实现平台,研究 h.264/avc 算法的嵌入式优化。文章按照如下方式组织: 首先,在算法优化方面,针对耗时的帧间预测算法,进行模式选择优化。并 且选取了菱形搜索作为运动搜索方法。在 dm642 上测试,使帧间预测时间减小 了 4/5。 其次,对 dm642 的结构进行研究。着重研究 dm642 的缓存、edma、并行 性功能。 对 h.264 代码进行整体结构、 子函数结构、 c 语言级、 汇编语言级优化。 实现对视频图像的实时编码:压缩率:0.01%、psnr:54.6。帧率:对于理想图 像 (没有噪声),25-30 帧/s;对于实际监控图像 (未去除噪声),10-15 帧/s。 关键词: h.264 编码器 dm642 abstract as the new-generation video compression technology, h.264 has the properties of low bit-rate and high compression ratio.however,its complexity increases quickly with the improvement of its encoding functions.how to implement the h.264/avc in embedded system in real time is one of the main research directions. the optimization of h.264 algorithm in embedded system is researched in this paper, where the tms320c64 dm642 of ti is chosen as implement platform. the paper is organized as follows: first, mode selection optimization is proposed for time-consuming inter prediction algorithm in aspect of algorithm optimization.and the diamond search is selected as motion search method.so that inter prediction time is decreased by 4/5. second,the structure of dm642 is researched.the emphasis are cache of dm642,edma,parallelism.h.264 code is optimized on overall structure,subroutine structure,c code-level,assembly language level.real-time coding of video image is realized:compression ratio:0.01%,psnr:54.6.the fps is 25-30 in original image without patternnoise;and 10-15f/s in actual monitoring and control image with patternnoise. keyword:h.264 encoder dm642 西安电子科技大学 学位论文独创性(或创新性)声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名: 日期 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。 本人签名: 日期 导师签名: 日期 第一章 绪论 1 第一章 绪论 1.1 引言 随着现代通信技术的发展和数字时代的到来,以数字计算机为主体的电子技 术得到长足发展。多媒体通信技术也由当初的模拟信号处理转向以数字信号为主 的音频、 视频的处理。 在多媒体通信技术中, 视频编码传输占据重要位置。 然而, 因数字图像的数据量庞大,例如分辨率为(352 288),全屏显示(full screen),真彩 色(true color 24 位),帧速率为 25-30 帧/秒的图像序列,则播放一秒钟数据量为 (352 288 24 30)/8=9,123,840 字节。如此庞大的数据量造成图像序列在存储、 传输的很大困难。 为了解决多媒体信息数据量过于庞大的问题,必须研究出有效的数据压缩编 码方法。因此,多媒体信息的压缩编码技术成为当今研究的热点。实验表明,人 类获取的信息 70%来自于视觉,视频信息在人类生产生活中占重要地位。作为多 媒体技术核心的视频压缩编码近年来在理论研究及实际应用方面都取得了长足进 展,它的进步和完善正深刻影响着现代社会的方方面面1。 自从通讯的数学原理奠定以信息论为基础的研究以来,以传统理论为基 础的信源编码方法得到了飞速发展。出现了像素编码、预测编码和变换编码等编 码方法。上世纪 80 年代中后期,随着可视电话、视频会议和数字广播通信等多 媒体技术的发展,一系列相对应的视频压缩标准相继产生。到目前为止,国际上 视频压缩编码标准共有两大系列:国际标准化组织和国际电工委员会第一联合技 术组 (iso/iec jtc1) 制定的 mpeg 系列标准; itu 针对多媒体通信制定的 h.26x 系列视频编码标准2。 mpeg 系列标准和 h.26x 系列标准的目标都是实现在尽可能低的码率情况下 获得最好的图像质量。 目前研究热点是基于动态图像的mpeg-4(part2)及h.264(也 称作 mpeg-4 avc 或 mpeg-4 part10)。在我国,习惯将 mpeg-4(part2)称为 mpeg-4,将 mpeg-4 avc 或 mpeg-4 part10 称为 h.264。由于 h.264 的良好的 压缩效率、高质量的图像和较低码率等特点。适合于视频的压缩存储和传输,也 便于嵌入式应用, 因 dsp 的价格低廉、 性能优越、 适合实现计算复杂度高的算法。 因此,本文着眼于研究并设计 h.264 视频编码器,在 dsp 上实现其编码功能,同 时利用 dsp 的特性对 h.264 的一些算法结构和代码进行优化。 基于 dm642 的 h.264 编码优化 2 1.2 视频编码技术简要介绍 对视频进行压缩,就是去除视频信息中的相关性,也可以说去除视频信息中 的冗余3 4。视频冗余主要包括以下五个部分: 1. 空间冗余5 也可称为像素冗余。在一幅静态图像中,任何给定位置的像素值,均与相邻 像素相关,表明它们之间存在相关性或冗余。特别是在灰度或颜色都相同的邻近 像素组成的局部区域中。对于一幅图像,大量单个像素对视觉的贡献是冗余的, 单个像素携带的信息相对较少,当然这是建立在对相关像素预测的基础上6。例 如: 原图像数据为 189,186,192,204,202 压缩后数据为 189, -3, 6, 12, -2 2. 时间冗余5 时间冗余是视频或运动图像序列中经常出现的冗余。视频是由多幅按时间序 列构成的连续图像,每一幅图像称为一帧7。大多数情况下,一帧图像的前帧和 后帧图像几乎一致,仅有图像中的运动物体有些很小的细微变化。这说明,构成 视频的各个图像之间存在着较大的相关性:相邻帧的背景和运动物体基本相同, 而运动物体所在的空间位置不同,这种相关性就是时间冗余。 3. 编码冗余8 又称为信息熵冗余。根据信息论,表示图像数据的像素值,按照其信息熵的 大小分配相应的比特数。而对于任何的实际视频,很难计算信息熵,因而一般采 用相同的比特数来表示各个像素值,这样必然导致实际平均码长与信息熵之间的 差距,即造成编码冗余。 4. 视觉冗余9 人类的视觉系统对图像的敏感性是非均匀和非线性的,即对构成图像的不同 频率成分、物体的不同运动程度等具有不同的敏感度。例如,人眼对低频信号的 敏感程度大于对高频信号的敏感程度,可用较少的比特数来表示高频信号;人眼 对亮度信号的敏感程度大于对色度信号的敏感程度,可沿着行、列方向缩减表示 色度信号的 bit 数;人眼对图像中心信息的敏感程度大于对图像边缘信息的敏感 程度,可对边缘信息分配较少的 bit 数等10。在实际工作中,由于眼睛对亮度、 色度敏感程度不一样,因此可以利用 yuv 格式将其分开处理,并可以去掉一些 第一章 绪论 3 色度信息,如 4:4:4 变为 4:2:2 或 4:2:0,这就改变了视频的比特结构, 减少视觉冗余了。 5. 知识冗余 图像中包含的信息可能是人先前通过认识世界已经得到的先验知识,如人脸 的结构等,而这些信息带来知识冗余,通过表示先验知识可以减少这些冗余。 通过上面分析,总结出视频压缩编码的主要目标就是: 必须将图像序列压缩在一定的带宽范围内,即视频编码器应具有足够的压缩 比; 应保证经过压缩编码之后的图像序列具有一定的视频质量。有两个标准对该 质量进行判定。一是从主观视觉,二是利用信噪比(s/n)进行判定7。 视频编码技术主要是利用图像序列的时域和空域关系, 对图像进行差值计算, 再经过变换,量化,熵编码等技术实现对视频序列的压缩。以往各个标准在细节 上有所改进,或者在其中一些环节加入了新的算法。但是整个编码过程都是沿用 该编码模式。典型的视频编码器框图如图 1.1 所示8: 映射变换量化熵编码 信道 熵解码反量化反映射变换 原始图像 重建图像 图 1.1 编码器结构流程 1.3 视频压缩编码标准的发展简史 从事视频编码标准制定的国际组织主要有两个:itu-t和iso/iec,itu-t的视 频会议电视编码的标准在“h”的子集里,如h.261、h.262和h.263。iso/iec制定 的标准是按照序号排列, 如mepg-1对应的就是11172, mepg-2对应的就是13813。 h.26x标准主要用于实时视频通信,如视频电视会议、可视电话等。而mpeg标准 主要用于广播电视、dvd和视频流媒体。大多数情况下,这两个标准组织独立制 定不同的标准,然而新的标准h.264是由jvt联合制定的。 1988年,ccitt通过了h.261,h.261是第一个视频图像编码的国际标准,具有 覆盖整个isdn基群信道的功能,它的应用目标是可视电话和会议电视。 1991年,iso/iec公布了mpeg-i标准,码率为1.5mbit/s,主要应用于家用vcd 的视频压缩。 1994年,mpeg-2/h.262标准推出,与mpeg-1一样,mpeg-2作为数字视听信 基于 dm642 的 h.264 编码优化 4 号提出的压缩方法。它允许数据率高达100mbit/s,并且支持隔行扫描视频格式和 许多高级性能,包括支持hdtv(高清晰度电视)。mpeg-2最主要的应用是通过卫 星、电缆和地面频道进行视频和音频数字传输。 1995年, h.263建议推出, 用于低于64kbit/s的低码率视频传输。 该标准是h.261 的重要发展,其原理框图与h.261相似,以混合编码为核心。原始视频数据同样被 分成图像层、 块组层、 宏块层和块层, 但h.263可支持更多图像格式: qcif、 sub-qcif、 cif、4cif和16cif,并且没有限定每秒帧数,因此可以通过减少帧数来限制最大 编码速率。 1997年和2000年分别公布了h.263+,h.263+,添加了更多的可选模式。 1999年,iso/iec通过了mpeg-4,也是针对低比特率视频图像编码方法提出 的,它除了定义视频压缩编码标准外,还增强了多媒体通信的交互性和灵活性。 基于内容的mpeg-4视频图像压缩编码标准主要包括3个步骤:从原始视频数据 流中分割出视频对象vo(video object);分别对各个vo独立编码,即对不同vo 的三类信息(运动信息、形状信息、纹理信息)分别编码,分配不同的码字;将各 个vo的码流复合成一个符合mpeg-4标准的比特流。 2003年,itu-t和iso/iec正式公布h.264标准6。该标准使用了以前编码标准 中所有的成熟编码技术,并应用了很多新兴技术来提高编码效率。如精确的i帧帧 内预测编码、 多参考帧及p帧的多种分块运动预测、 1/4分像素运动估计、 整数变换、 增强型熵编码等等, 这些特点使h. 264的编码效率相对h.263和mpeg-2有了很大提 高。 1.4 h.264 编码实现的几种方法 当前实现视频编码算法主要有以下几种途径: 1. 基于pc的软件实现 这种方案具有开发费用低,开发周期短等优点,而且可使用现成的软件包, 因此是开发者广泛采用的一种方式。但是软件编码器的运行脱离pc机,pc机的性 能优劣对其影响很大,所以在使用上受到很多限制。 2. 基于数字信号处理器(dsp)实现 图像压缩编码从本质上来说是数字信号处理, dsp比通用微处理器更适合数 字信号处理。采用改进的哈佛总线结构,内部有硬件乘法器、累加器,使用流水 线结构,具有良好的并行性,有专门设计的适合信号处理的指令系统等。dsp芯片 的这些特点使得它非常适合用于不允许有延迟的实时应用领域,并且对于图像处 第一章 绪论 5 理系统而言,一块dsp芯片结合外围电路就能完成整个系统的功能。这种方案的好 处是系统灵活,硬件系统设计完成后,整个系统的升级仅仅修改软件即可完成。 目前市场上的dsp芯片以美国德州仪器公司(ti)的tms320系列为主,tms320 系列, 从tms320c10至c20、c30、c40、c50、 c80、c2000、c5000、c6000、c8000 己经形成了一个门类齐全的大家族。c64系列的dsp芯片,是ti公司专门为视频音 频算法的实现设计的。因其内部的良好的并行性,多级缓存和dma,edma的传 输特性,超长指令字结构使实现视频实时编码变的容易。 3. 基于 fpga 开发 asic 实现图像压缩处理 随着fpga芯片的发展,人们可以利用altera、xilinx等公司提供的芯片,使用 vhdl等硬件描述语言,通过软件编程用硬件来实现视频压缩的算法,如dct,量 化,熵编码等。由于硬件编码器具有通用性好的特点并且可以实现算法的并行运 算,无论作为独立的数字信号处理器,还是作为dsp芯片的协处理器,都可以实现 其很好开发的性能。 综合比较以上方案优缺点可知: 第一种基于pc的软件编码器使用方便, 技术成熟。 但是其过分依赖于计算机, 使用领域比较有限。 第二种方案非常适合于图像信号处理的算法实现,而且这一方案具有性能上 的优势和通用性的特点,使得其成为真正使dsp技术实用化的方法。另一方面,由 于dsp芯片价格的下降,可以只用一块电路板实现视频压缩功能,可以用于不同场 合,适用性好。 第三种方案专用性比较强, 因为硬件编码器的并行性好, 所以实现的效果好。 但是因为使用vhdl或者verilog代码开发视频压缩算法的技术还不成熟,视频编码 算法的复杂度高,所以开发难度大,并且fpga芯片的价格较贵,在做成asic之后 就不能升级。成本较高。 综合以上分析,本文采用第二种方案,应用ti公司的c64系列的dm642芯片实 现h.264算法,并且在该芯片基础上对h.264算法进行优化,实现视频编码实时。 1.5 小结 本章介绍了视频压缩的原理、视频压缩标准的发展历程和各个视频压缩标准 的特点,最后确定了本论文的结构和主要工作内容。 第二章 h.264/avc 的关键算法分析 7 第二章 h.264/avc 的关键算法分析 h.264标准的整体编码框架与h.261、h.263及mpeg-1/2/4标准相比并无显著变 化,也是基于混合编码的方法:用运动矢量表征图像中运动部分的方向,使用已编 码帧进行运动估计和运动补偿或使用帧内预测, 所得像素矩阵残差值经过变换、 量 化、熵编码得到编码流进行传输或者存储。所以,新标准的性能提升在于编码细节 的改进及新算法的应用9。 2.1 h.264 编码器结构分析 2.1.1 h.264 编码器的整体框架10 h.264视频编码器的结构主要由前向支路和编码器重构支路组成。 1. 编码器前向支路10 输入的视频序列的每一帧图像都被分成16 16大小的宏块。编码时这些宏块可 以组合成片,片作为独立的编码单元。每一片都不使用其它片中的内容进行预测。 分片是为了减少图像宏块由于编码造成的噪声传递。 通常一帧图像的几个片可以并 行处理。 编码过程:首先,输入当前编码图像fn,将该帧分成16 16大小的宏块单元, 每个宏块都利用帧内或者帧间进行预测。 其编码参考帧是由重构支路构成的重构帧。 在帧内预测时,图2.1中的p为当前帧中已编码的部分重构得到,p中的内容是没有 经过去块滤波。去块滤波在熵编码之后进行。利用已经得到的重构值,提取当前编 码宏块的周围的已编码像素,作为预测值。在帧间预测时,p是由几个参考帧用运 动补偿的方式得到。 当前编码像素减去预测值得到残差dn,然后将残差值进行变换,使其由时域 转换到频域,提取dc和ac系数。经过量化得到变换系数x。x被zig-zag扫描,然 后进行熵编码。熵编码是对已经被重新排列的残差值x、宏块的预测模式、量化步 长、运动向量等进行编码处理,组成h.264编码输出码流。通过网络提取层进行传 输。 2. 编码器重构支路 对变换、量化后的残差系数x进行反量化、反变换,形成重构帧,以便对当前 编码宏块进行预测。由于量化噪声,dn和dn不同。预测宏块p加dn得到重构宏块 ufn。 基于 dm642 的 h.264 编码优化 8 编码器整体结构框图如图2.1所示: fn 当前 tq重排序 t-1q-1 熵编码 fn-1 参考 fn 重建 滤 波 me 帧内 预测 mc 帧内预 测选择 - + + + 帧间 帧内 xdn dn nal ufn p 图2.1 编码器结构框图 3. h.264引入的新算法7 1) 帧内预测的最小块是4 4块; 2) 帧间预测模式是按照树状分块的运动补偿,最小块是4 4块; 3) 最大1/4(亮度块)像素精度的运动估计; 4) 多参考帧的帧间预测; 5) 增强型的b帧预测; 6) 帧内加权预测; 7) 环路去块滤波器; 8) 基于4 4块的整数dct变换; 9) 基于上下文自适应熵编码; 10) 参数集结构传输图像序列头部信息; 11) si/sp同步切换帧。 在vcl层核心编码里面将对主要特性做详细介绍。 2.1.2 h.264 编码器的分层结构 h.264标准分为两层:网络抽象层(nal)和视频编码层(vcl)。 nal层主要负责对数据进行打包和传输, 用来对网络相关参数进行处理。 vcl 层负责图像内容,在nal层和vcl层之间定义一个接口。这样,高效率编码和网 络友好特性就可以由vcl层和nal层分别完成。 1. nal(network abstraction layer)层介绍 nal头由一个头部字节和一个字符串组成。头部后面的字符串代表片的内容。 头部字节由一个错误标志、一个单元处理标志、一个单元类型标志组成。nal层 第二章 h.264/avc 的关键算法分析 9 用于定义网络传输或者存储需要的数据格式, 从而提供视频编码与外部的接口信息。 nal单元支持数据在包交换技术网络中传输。每个单元都包含一个整数的字节数、 一个nal单元定义基于包和基于比特流的基本格式。区别在于每个比特流传输层 都有一个起始代码。在解码端假定按照传输顺序传递nal单元,如果有效载荷中 出现错误,则在nal单元的头部设置表示接收正确的、丢失的或者错误的位数据 标识位。如果对应的nal单元检测到传输错误,那么任何相关的网络元都可以改 变这个标志。所以,通过网络可以传输一些带有一定错误的有效载荷,解码器和网 关都可以决定是否解码或者处理这些nal包。关于nal头部的详细信息,见文献7 中第七章7.3.1节nal层语义。 2. vcl(video coding layer)层介绍 vcl层主要对图像进行帧内或者帧间预测、残差系数变换、量化、熵编码等方 法提高视频信号的编码效率。最基本的处理单位是片,每个片包含若干宏块,利用 当前片的宏块之间的空间相关性和前后帧的时间相关性进行压缩。 vcl层对视频的 处理包含四个方面: 1) 通过将每帧图像划分成片,将对一帧图像的处理降低到对片的处理; 2) 通过帧内预测的方法,减少视频图像在空间的冗余量; 3) 在连续帧之间进行帧间预测,采用运动估计和运动补偿技术去除视频图像的空 间冗余量; 4) 对帧内或者帧间预测的残差值进行变换、量化、熵编码处理,实现由时域转换 到频域的压缩。 3. nal层和vcl层之间的关系 vcl层和nal层都具有良好的自适应特性,特别是vcl层,可以通过调整宏 块的速率和片的大小来对错误做恢复。在h.264标准中定义了vcl和nal层之间的 接口标准。图2.2描述了两个层之间的接口关系: vcl层编码器 vcl层解码器 vcl-nal界面 nal层 nal层 nal层和传输层界面 传输层 图2.2 nal和vcl层接口关系 基于 dm642 的 h.264 编码优化 10 图像编码的主要过程都是在vcl层完成的, 因此, 对视频编码优化的主要工作 是对vcl层的一些编码算法进行分析改进,并结合硬件优化。 2.1.3 vcl 层编码的档次和级 h.264标准在vcl层编码部分可以分为3个档次(profile): 1. 基本档次(baseline profile):将编码图像序列定义为i片和p片,利用上下文自适 应变长编码(cavlc),主要用于可视电话、无线通信等实时视频通信中; 2. 主要档次(main profile):支持隔行视频、支持b帧的帧间编码和加权预测的帧内 编码、 支持基于上下文自适应算术编码(cabac)。 主要用于sdtv、 hdtv和dvd、 数字广播电视和数字视频的存储; 3. 扩展档次(externded profile):增加si/sp片、实现码流切换功能、不支持cabac 编码和隔行视频扫描,主要用于流媒体。 它们对应的不同编码工具,如表2.1所示: 表2.1 不同档次应用的编码工具 基本档次 主要档次 扩展档次 sp和si条带 数据分割 b条带 带权帧内预测 隔行 cabac i条带 p条带 cavlc 条带组和任意条带 顺序 见余条带 因为本文是基于dsp实现网络传输的图像编码,因此选用baseline profile档次 来进行编码器的设计。 2.1.4 片组织形式以及片组组织形式 2.1.4.1 片(slice) 一个视频序列图像可以编码成一个或者多个片, 每个片都包含整数个宏块, 但 是具体的宏块数不是固定的。 对于一幅图像,各个片之间进行独立编码,某片的预测像素不能来自其它片, 这样做的目的是为了防止预测误差传播到其它片中。 第二章 h.264/avc 的关键算法分析 11 h.264中的片一共分成5种类型:i片、p片、b片、si片、sp片。其中,si和sp 片用于不同码流之间的切换,两片内部可以包含i或者p类型的宏块,还包含一类特 殊类型宏块,si宏块。 在通常的图像帧中,不同类型的片中包含的宏块类型如表2.2所示: 表2.2 各种片对应的宏块 片类型 宏块类型 i片 i宏块 p片 i宏块、p宏块(前向预测) b片 i宏块、b宏块(前向、后向预测) sp片 i宏块、p宏块 si片 i宏块、si宏块 2.1.4.2 片组(slice group) 片组包含一个或者若干片。 在一个片组中, 每片中的宏块按照光栅扫描的顺序 进行编码。 一幅图像只包含一个片组, 则该幅图像中的所有宏块都是按照光栅扫描 顺序进行编码。在baseline中默认每幅图像为一片处理,每个宏块按照光栅扫描顺 序编码,故在此只对片组概念作简要介绍。 2.2 h.264 视频编码的核心技术 h.264视频编码的结构中,帧内预测、帧间预测、整数dct变换、量化、熵编 码、 去块滤波是其核心技术。 一个视频文件要经过这几个步骤后才能成为压缩率高 并且适合网络传输的视频压缩文件。 其中帧内预测利用图像空间冗余进行压缩, 帧 间预测利用时域冗余进行压缩, dct变换将预测后的残差值进行从时域到频域的变 换,提取dc和ac系数。量化是将dc和ac系数的数据分配到一些固定的数据中, 使编码需要处理的数据量降低。 熵编码对dc和ac以及编码的一些参数进行长短码 字的分配,编码次数较多的参数用短字长,编码次数较少的参数用长字长。下面将 重点介绍编码各个环节。 2.2.1 帧内(intra)预测编码7 h.264标准根据相邻像素之间的相关性, 采用帧内(intra)预测模式。 通过当前像 素块的左边和上边的像素(已编码重建后的像素)进行预测。只对当前像素值减去预 测像素值得到的残差值进行编码,就可以用较少比特数表示图像信息。在h.264标 准中,亮度帧内预测包括:intra16 16、intra4 4及i_pcm模式,其中intra16 16模 式是对16 16宏块整体作为预测对象, 主要针对较为平缓的图像, intra4 4是对宏块 中每个4 4子块做预测,主要针对变化较为剧烈的图像,i_pcm则是预测值和当前 基于 dm642 的 h.264 编码优化 12 宏块中像素几乎完全匹配, 这样就可以不经过变换和量化, 只用预测值对当前像素 值进行表示。对于色度块,通常用8 8预测模式。 下面对这三种模式进行分开介绍。 1. intra4 4(4 4亮度预测模式) abcd efgh ijkl mnop abcdefghq i j k l (a) 8 1 6 5 4 0 7 3 (b) 图2.3 利用a-q对a-p进行预测 图2.4 4 4预测模式 如图2.3所示,4 4亮度块的上边和左边像素a-q为已经编码过的重构像素,用 来作为参考像素,a-p为当前像素,利用图2.4的9种预测模式实现。其中dc模式是 根据a-q中已编码像素进行预测, 如果都没有编码, 则默认亮度像素值为中值128。 而其余模式只能在所需预测像素全部提供的时候才能使用。 因此, 对于图像边缘的 一些宏块,通常用dc模式进行预测。图2.4中的箭头表示预测方向。对于模式3-模 式8,预测像素是由a-q加权得到。例如:模式4中,d=round(b/4+c/2+d/4)。表2.3 对这9种模式进行了描述: 第二章 h.264/avc 的关键算法分析 13 表 2.3 预测模式描述 4 4 帧内模式 描 述 模式 0(垂直) 由 a、b、c、d 垂直推出相应像素值 模式 1(水平) 由 i、j、k、l 水平推出相应像素值 模式 2(dc) 由 ad 及 il 平均值推出所有像素值 模式 3 (下左对角线) 由 450方向像素内插得出相应像素值 模式 4 (下右对角线) 由 450方向像素内插得出相应像素值 模式 5(右垂直) 由 26.60方向像素值内插得出相应像素值 模式 6(下水平) 由 26.60方向像素值内插得出相应像素值 模式 7(左垂直) 由 26.60方向像素值内插得出相应像素值 模式 8(上水平) 由 26.60方向像素值内插得出相应像素值 2. intra16 16(16 16亮度预测模式) 宏块 16 16 的帧内预测模式一共有 4 种预测模式,如图 2.5 所示。表 2.4 对 这四种模式进行了详细描述。同 4 4 模式类似,在 16 16 预测模式中,对于边缘 宏块,通常采用 dc 模式进行预测,对于其预测值,通常选 125 作为预测值。即 像素最大值的中值。 图 2.5 16 16 预测模式 表 2.4 16 16 预测模式 16 16 帧内模 式 描 述 模式 0 (垂直) 由上边像素推出相应像素值 模式 1 (水平) 由左边像素推出相应像素值 模式 2(dc) 由上边和左边像素平均值推出相应像素值 模式 3 (平面) 利用线形plane函数及左、上像素推出相应像素值,适用于亮 度变化平缓区域 基于 dm642 的 h.264 编码优化 14 3. luma8 8(8 8色度块预测模式) 对于色度块,h.264 标准中使用基于 8 8 块的预测模式,因为人眼对亮度的 敏感度大于对色度的敏感度,所以 h.264 标准设定色度预测标准比亮度预测标准 简单。其 4 种预测模式类似于帧内 16 16 预测的 4 种预测模式,只是模式编号不 同。其中 dc(模式 0) 、水平(模式 1) 、垂直(模式 2) 、平面(模式 3) 。预测 方向和预测描述可参照亮度块的 16 16 预测模式。 4. 帧内预测模式的传输 每个 4 4 块帧内预测模式必须转变成信号传给解码器进行解码。该信息可能 需大量比特表示, 但是可以利用帧内模式之间的相关性对帧内传输模式进行压缩。 例如,a、b、e 分别为左边、上边和当前块,如果 a 和 b 预测模式为模式 1,e 的最佳预测模式很可能也为模式 1。所以通常利用这种关联性信号化 4 4 帧内模 式。 对每个当前块 e, 编码器和解码器计算最可能预测模式和 a、 b 预测模式的较 小者。如果没有这些位置的相邻块,例如当前块在片的边缘位置或者 a、b、e 是非帧内 4 4 模式,则 a 或 b 的模式置 2(dc 预测模式) 。 编码器分配给每个 4 4 块一个标志prev_intra4 4_pred_mode。 该标志置 1时, 使用最可能预测模式;置 0 时,使用参数 rem_intra4 4_pred_mode 来指明模式变 化 。 rem_intra4 4_pred_mode小 于 当 前 最 可 能 模 式 时 , 预 测 模 式 选 rem_intra4 4_pred_mode。否则预测模式为 rem_intra4 4_pred_mode1。其中 rem_intra4 4_pred_mode 值为 07。 举例:块 a 和 b 分别用模式 3 和模式 1 预测。最可能模式则为 1, prev_intra4 4_pred_mode 置 0 , rem_intra4 4_pred_mode 被 传 送 。 取 决 于 rem_intra4 4_pred_mode 的值,表 2.5 所示的 8 种预测模式的选择方法: 表 2.5 4 4 帧内模式预测 rem_intra4 4_pred_mode prediction mode for block c 0 0 1 2 2 3 3 4 4 5 5 6 6 7 7 8 帧内 16 16 亮度和色度预测模式的选择过程和 4 4 帧内模式传输过程类似。 第二章 h.264/avc 的关键算法分析 15 这里需说明的是,包括帧内预测在内的所有预测类型都不能跨片边界预测, 每片必须独立预测编码。 帧内预测以绝对误差和(sae)为标准选取最佳预测模式,使预测帧更加接近 原始帧,减少了相互间的差异,从而去除了空间上的数据冗余,提高了编码的压 缩效率。帧内预测中,块或宏块利用已编码并重建的块作为参考进行预测。具体 编程时,编码器通过计算并比较各种模式下的 sae,选取 sae 值最小的模式作 为最佳预测模式,并将该模式信息化,同时传送至解码端,以供正确解码。 5. coded block pattern(当前块的编码模式) coded block pattern(cbp)是一个重要的语法流元素。当宏块类型不是 intra16 16时,该元素出现在语法流中,用于指示宏块中的6个8 8块(亮度块和色度 块)是否有非0变换系数。该参数可以节约用于传输变换系数的控制信息的比特数。 2.2.2 帧间预测编码7 帧间预测编码是利用时域图像的相关性, 使用已解码的图像作为运动估计的参 考帧。 h.264标准使用更精确的块(最小子块单位是4 4块)和更精确的运动矢量(四分 之一像素单位)进行运动估计。 在h.264标准中,p片和b片使用帧间预测编码,p片是利用过去已经编码图像 进行运动估计。b片将当前帧的帧前和帧后的图像分成list0和list1,利用双向预测 方法进行编码。 1. 帧间预测编码的模式 h.264使用树状的块分割模式: 对于一个16 16的宏块来说, 可以将其分成16 8、 8 16、8 8,对于8 8子块,还可以分割成8 4、4 8、4 4。如图2.6所示: 1616 16881688 88844844 图2.6 树状分割模式 基于 dm642 的 h.264 编码优化 16 由此可见,帧间预测模式有 7 种划分模式,如果图像序列运动较为平缓,即 图像较为平坦, 则用大块划分模式, 如果图像运动较为剧烈, 则用小块划分模式。 但运动补偿残差在多细节区域的能量将非常高。 小尺寸分割运动补偿残差能量低, 但需要较多的比特表征 mv 和划分模式。分割尺寸的选择影响了压缩性能。大分 割尺寸适合平坦区域,小分割尺寸适合多细节区域。 宏块的色度成分(cr 和 cb)则为相应亮度的一半(水平和垂直各一半)。色度块 采用和亮度块同样的划分模式,只是尺寸减半(水平和垂直方向都减半)。例如, 8 16 的亮度块相应色度块尺寸为 4 8,8 4 亮度块相应色度块尺寸为 4 2 等等。 色度块的 mv 也是通过相应亮度 mv 水平和垂直分量减半而得。 在第三章, 将详细介绍笔者设计的基于图像平坦程度的帧间预测模式快速选择 算法。 2. 分像素的运动估计 在h.264中,采用高精度分像素进行帧间预测。对于亮度块,利用1/4像素进行 运动估计;对于色度块,采用1/8像素进行运动估计。匹配块的匹配程度达到最佳 效果。 在h.264标准中,应用六阶滤波器进行二分之一像素的计算,对于亮度块,运 动矢量的单位是四分之一像素精度。因此,当发现运动矢量的x,y分量的最后一 位为1时,就判定该运动矢量指向的是四分之一像素,这样,通过之前计算出来的 二分之一像素进行线性插值的计算, 由两边的二分之一像素计算出一个块的四分之 一像素作为匹配宏块。四分之一像素的计算过程如下: 首先, 利用六阶滤波器来计算二分之一像素, 六阶滤波器的权值为(1/32、 -5/32、 5/8、5/8、-5/32、1/32),如图2.7中的b点,可以通过e、f、g、h、i、j得到: (520205)/32)broundefghij 式(2-1) 图 2.7 亮度半像素的计算 第二章 h.264/avc 的关键算法分析 17 对于其它位置的像素,例如h,s,aa,bb的值也用类似方法得到。 在求完所有的二分之一像素值之后,就可以求四分之一像素值了。如图2.8所 示,例如求a的值,利用线性内插的方法: (1)/ 2)around gb 式(2-2) 图2.8 亮度像素的1/4像素计算 色度分量是1/8像素精度,计算方法同样是通过内插的方式得到,如图2.9所示,其 中dx,dy代表像素位置,色度分像素的a位置的值的计算方法如下: (8*(8)*(8)(8)*/64)arounddxdy adxdy bdxdycdx dyd 式(2-3) 当dx=2,dy=3时, (3010186 )/64)aroundabcd 式(2-4) 图2.9 色度像素的1/8像素计算 对利用分像素精度的运动估计和整像素的运动估计进行比较,得到表2.6所示。 从该表可以看出, 采用分像素搜索的精确度比采用整像素搜索的精确度高, 搜索的 匹配宏块和当前编码块的匹配程度更好,比特率降低。 基于 dm642 的 h.264 编码优化 18 表2.6 分像素与整像素比较 qp(量化参数) psnr(峰值信噪 比) br(比特率) 编码时间增加倍数 20 +0.25 -10.3% 2.33 26 +0.29 -10.1% 2.45 28 +0.34 -8.7% 2.03 32 +0.30 -5.4% 1.95 36 +0.31 -2.3% 1.86 3. 运动矢量预测 每个分割的运动矢量的编码需要相当数目的比特,分割尺寸越小,运动矢量 数目要求越多。为减少传输的比特数,可利用邻近块的运动矢量之间的相关性。 因此,可以利用临近运动矢量组成预测运动矢量来减少比特数。用运动矢量的预 测值 mvp,即从已编码宏块中得到的运动矢量,来和搜索之后的运动矢量 mv 进行相减,得到 mvd 差值传输。mvp 则取决于运动补偿尺寸和邻近 mv,其相 邻块的位置如图 2.10 所示。e 为当前宏块,a 为左方,b 为上方,c 为右上方已 编码宏块。 ea bc 图 2.10 当前宏块的相邻宏块 a、b、c 分别为 e 的左方、上方、右上方的三个相邻宏块。如果 e 的左方 宏块 a 不止一个分割,则 mv 取其中最上的一个子块的 mv;上方宏块 b 不止一 个分割时,则 mv 取最左边一个子宏块的 mv。在图 2.11 中,a 是按照 8 4 模式 分割,b 按照 4 8 模式进行分割,c 按照 16 8 模式进行分割。 e b a c d 图 2.11 当前宏块的相邻宏块的分割模式 第二章 h.264/avc 的关键算法分析 19 如图 2.10,如果当前宏块位于片的边缘,则 mvp 选择需要重新调整。对跳跃 宏块,则不计算 mvd,运动补偿宏块由 mvp 直接产生。 mvp 预测运动矢量是按照以下形式产生: 1) 当宏块 e 不进行 16 8 或者 8 16 时,预测运动矢量 mvp 是由 a、b、c 的 mv 的中值得到; 2) 当宏块 e 的分块方式为 16 8 块时,上面的 16 8 块的 mvp 由 b 得到,下面 16 8 块的 mvp 由 a 得到; 3) 当宏块 e 的分块方式为 8 16 时,左边 8 16 的 mvp 由 a 得到,右边 8 16 的 mvp 由 c 得到; 4) 当宏块 e 为跳跃宏块,即 skip 宏块时,mvp 按照步骤 1 进行计算。 当前宏块 e 的划分模式不是按照 16 8 或者 8 16 时, 预测运动矢量是按照中 值预测产生的。中值预测方法如下: 如图 2.11,如果宏块 c 是不可用的,则将用左上方的已编码宏块 d 的运动矢 量代替 c 的运动矢量。 1) 如果 b、c、d 都是不可用的,则将左方的 a 宏块的运动矢量作为中值预测 运动矢量 mvp; 2) 如果当前编码宏块 e 的周围宏块中的宏块是采用帧内预测,则其运动矢量被 设为 0; 3) 和 2 相同,如果当前宏块 e 周围宏块中只有一个参考宏块可用,则这个宏块 的运动矢量就作为中值运动矢量 mvp。 2.2.3 变换与量化711 变换:变换: 时域图像经过变换转换到了频域。 如果能够增加数据中0的数量, 同时缩小非0 数据的范围,可大大减少传输的比特率。实现这个目标通常是通过量化实现的。由 于对图像残差矩阵进行正交变换后, 系数的能量分布通常比较集中。 例如一个二维 矩阵,经过dct变换后,能量集中在左上角。如果能对能量进行重新量化,则可达 到很好的压缩效果。设计量化器的关键,在于保证压缩率的同时,又要保证有较好 的图像还原质量,即最小量化失真。 和a/d转换的量化不同,数据压缩编码中的量化是指以pcm码作为输入,经过 正交变换之后, 对正交变换系数进行量化处理。 量化的输入值的动态范围通常较大, 需要多个比特数表示。量化器的输出只能取有

温馨提示

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

评论

0/150

提交评论