解析H.264视频编解码DSP实现与优化

引言

  基于互联网的数字视频产业前景看好,而3G的规模部署,也会推动移动视频通信成为现实。但数字化后的视频图像具有数据海量性,给图像的存储和传输造成较大的困难。数字视频产业,是指数字内容中以数字视频形态为主的文化创意和传播产业,及其必需依赖的多学科高科技技术支撑和保障服务产业。为此,该专家组基于帧内图像相邻像素间及相邻行间的空间相关性和相邻帧间运动图像的时间相关性,采用压缩编码技术,将那些对人眼视觉图像和人耳听觉声音不太重要的东西及冗余成分抛弃,从而缩减了存储、传输和处理的数据量,提高了频谱资源利用率,使数字化正在变为现实。数字视频压缩编码技术是解决这一问题的关键技术。H.264以其良好的网络适应性和高编码压缩效率,灵活的语法配置,在视频处理领域比以往的视频编码标准更加适合视频处理的发展方向,更加适合不同应用环境的对象。进一步提高了编码算法的压缩效率和图像回放质量。在肉眼主观感受相同的情况下,H.264较之H.263的编码效率提高了50%左右。

  利用高性能数字信号处理器(DSP)来实现H.264实时编码器是一种快速有效的方法,有助于H.264视频标准的迅速推广和应用,也指明了视频图像压缩领域最新的研究方向。数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。

  1 H.264编码的关键技术

  1.1 基于灵活分割宏块(MB)的运动矢量估计和补偿以及增加变换的压缩效果

  H.264根据宏块的编码特性采用亮度块直流变换,色度块直流变换与普通差值变换相结合的方法。在运动估计时,H.264信源编码采用基于4×4块的整数变换,可以灵活地选择块的大小。而其他标准处理的像素块大小均为16×16或者8x8.H.264以可变大小的块来适应不同应用环境和要求,采用16×16,16×8,8×16,8×8四种模式;当划分为8×8模式时,又可进一步采用8×4,4×8,4×4三种子宏块划分模式进一步划分,如图1所示。根据需要由不同尺寸的宏块来执行,采用整数变换既可以使运动物体的划分更加精确,不可以减小运动物体边缘的衔接误差,处理好需要更多运动细节的场合,即以引入更小运动补偿块可以提高一般和特殊情况下的预测质量,它可以提高主观视觉效果,同时又减小了变换过程中的计算量。实验表明,应用7种不同大小和形状的块可以比单一利用16×16块进行的编码提高15%以上的压缩率。

 

 

  1.2 支持l/4像素或l/8像素精度的运动估值

  运动估计与补偿算法是目前视频压缩技术中最为关键的部分,影响着编码的速度、质量和码率,其编码的复杂度也是整个编码系统中最高的。

  在H.264中通过6阶FIR滤波器的内插获得1/2像素位置的预测值。FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。当获得1/2像素值后,通过取整数像素位置和1/2像素位置像素值均值的方式获得l/4像素位置的值。在高码率情况下,提供1/8像素精度的运动估计。采用高精度运动估计会进一步减小帧间预测误差,减少经变换和量化后的非0比特数,提高了编码效率。利用1/4像素空间精度可以比原有的一个像素精度(整数精度)预测提高20%的编码效率。

  1.3 多参考帧预测

  参考帧是帧间预测编码,也就是运动补偿的基础,根据它与待预测帧之间的位置关系,可分为前向参考帧和后向参考帧。

  以往的编解码技术在对P帧图像进行帧间预测时,只允许以参考前一帧图像进行编码,即以前一个I图像或P图像为参考帧,在对B图像进行预测时,只允许参考前后帧图像进行编码,即以前后两个I图像或P图像为参考图像。H.264则打破了这些限制,允许在从当前帧的前几帧中选择一帧作为参考帧图像,对宏块进行运动预测,当选用多参考帧模式时。编码器从几个参考帧中选择一个效果最好的参考帧,编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。 编码器把角位移或直线位移转换成电信号,前者成为码盘,后者称码尺。按照读出方式编码器可以分为接触式和非接触式两种。接触式采用电刷输出,一电刷接触导电区或绝缘区来表示代码的状态是"1"还是"0";非接触式的接受敏感元件是光敏元件或磁敏元件,采用光敏元件时以透光区和不透光区来表示代码的状态是"1"还是"0",通过"1"和"0"的二进制编码来将采集来的物理信号转换为机器码可读取的电信号用以通讯、传输和储存。达到最佳的预测效果,参考帧图像甚至可以是采用双向预测编码方式的图像,大幅度降低了预测误差。另

  因此,多参考帧预测对周期性运动和背景切换能够提供更好的预测效果。

  1.4 消除块效厘适应性滤波器

  基于分块处理的变换编码算法,忽略了物体边缘的连续性,在低码率情况下,容易出现方块效应。为消除在预测和变换过程中引入的块效应,H.264对此采用了消除块效应适应性滤波器,对宏块边缘进行平滑,有效改进图像的主观质量。但与以往标准不同的是,H.264的消除块效应滤波器位于运动估计循环内部,可以利用消除块效应以后的图像去预测其他图像的运动,即滤波后宏块用于运动估计,以产生更小的帧差进行编码,进一步提高预测精度。

  1.5 增强的熵编码

  以往标准的熵编码采用变长的哈夫曼编码,码表统一,不能适应变换多端的视频内容,影响编码效率。根据视频内容的不同,H.264利用较短的码字来代表出现,高频率的符号,可进一步去除码流中的冗余,提供两种熵编码,即上下文自适应二进制算术编码(CABAC)和基于内容的自适应可变长编码(CAVLC),CABAC的编码效率更高,也更复杂,在相同图像质量下,使用CABAC编码电视信号可降低10%左右(10%~15%)的码率,后者具有较强抗误码能力。

  2 H.264的视频编解码的DSP平台实现

  在数字图像处理中,要完成大量的数字信号处理工作,特别是对于H.264这样的新一代视频压缩编码标准。就其Baseline而言,其解码复杂度是同等情况下H.263的2倍,而编码复杂度更是H.263的3倍,解决这种高运算量问题,很大程度上依赖于高速DSP技术,而且采用半导体制造工艺生产的DSP处理器可以有更低的功耗。

  TI公司生产的DM64X系列芯片具有超高主频、很强的并行处理能力和信号处理功能,是实现H.264编解码的理想平台。

  TI公司生产的642系列是一款专门面向多媒体应用的专用DSP,该DSP时钟频率高达600 MHz,8个并行运算单元,处理能力达4 800 MIPS.它是在C64X的基础上,增加了很多外围设备和接口。可见,DM642是一个强大的多媒体处理器,是构成多媒体通信系统的良好平台。

  该系统主要是为了对模拟视频图像(PAL制式)进行采集,之后对其进行压缩,然后把压缩后的数据通过扩频的方式发送到接收端,在接收端接收码流后由DSP进行解压缩,之后再由DSP负责图像的显示,存储等。所以总体设计方案必须包括视频的输入/输出、网络等接口。设计图如图2所示。

 

 

  在发送端,视频输出由视频A/D芯片先转换为数字视频信号,然后输入到DM642的视频端口2,由DM642进行图像采集,并把图像数据送入SDRAM中,同时DM642对视频图像进行实时压缩,并把压缩后的数据通过McBSP发送到信道编码部分,完成发送端的工作。在接收端,接收由信道译码部分送来的压缩图像数据,然后由DM642完成图像的实时解压,并把解压后的数据送到SDRAM中,然后把解压后的图像数据送人视频端口0,再由视频端口0把数据送入视频D/A,完成视频的实时显示。图2中音频/视频接口作为扩展,10/100Mb/s的以太网卡以及USB控制器外设主要是为了方便接收端直接把数字视频信号传送到计算机或者终端各处,供电及复位电路完成对电路板的供电及复位功能。

  3 H.264的视频编解码的DSP优化

  将H.264编码器移植到DM642图像处理平台上,由于H.264的核心算法不仅在代码结构上需要改进,而且在具体的核心算法上也需要做较大的改动,因此整个系统的编码速度非常令人不满意,达不到实时应用的要求,因此需要从各个方面对该系统进行优化,将编码的时间减少下去。首先去除了编码器中的冗余代码,然后优化工作分三步:在PC机上实现H.264算法并进行优化;PC机H.264代码的DSP化,可以在DSP上实现H.264的编解码算法,但是,这样实现的算法运行效率很低,因为所有的代码都是由C语言编写,并没有完全利用DSP的各种性能,所以必须结合DSP本身的特点,对其进一步优化,才能实现H.264视频解码器算法对视频图像的实时处理,即要H.264的DSP算法优化。对于DSP代码的优化共分为三个层次:项目级优化、C程序级优化、汇编程序级优化。

  4 结语

  在上述环境下,解码器算法对QCIF测试序列已经能够达到45~60 f/s的解码速度,达到了实时性解码的目的。测试结果表明,图像主观质量较好,无明显方块效应,码率也比较低。另外,图像编码的实时性能与图像的内容、运动的剧烈程度等都有一定的关系。在DM642板卡上实现的H.264视频编解码器具有功能强,使用灵活等特点,有广泛的应用前景。RADVISION策略的关键是在SCOPIA架构中支持H.264-SVC技术,这样RADVISION的支持SVC的SCOPIA桌面系统就可以与诸如H.263和H.264等其它标准视频编解码技术互通。可以向同一个会议室接入不同的设备,每台设备根据其性能均可获得最佳的视频编解码质量。不支持H.264-SVC的设备仍可通过H.263或H.264方式进行连接,相信在不久的将来,基于H.264算法和DSP处理器的可视电话、视频会议、有线电视、无线流媒体通信等产品会逐渐地走进千家万户,视频编解码器在嵌入式处理终端上的应用会渐渐地成为应用的主流。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 打包exe_python如何封装为exe

1、首先进入python安装路径D:\Python27\Scripts下,查看pip或easy_install是否安装。2、确保安装了pip或者easy_install,在cmd命令行下输入“easy_install”,没有提示“xxx不是内部或外部命令……”,就说明easy install工具安装成功…

Django REST framework 解析器和渲染器

解析器的作用 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己可以处理的数据。本质就是对请求体中的数据进行解析。 在了解解析器之前,我们要先知道Accept以及ContentType请求头。 Accept是告诉对方我能解析什么样的数据&#xff0c…

MyBatis的学习之路(二)

上篇文章介绍了MyBatis的配置文件,现在来介绍实体映射文件Mapper.xml。 说道实体映射文件,就不得不说一下实体与表之间的映射关系:单表映射和多表映射。 a. 单表映射 1 public class Admin{ 2 private String id; 3 private String n…

python爬取toefl_spark学习进度6-Python爬取数据的四个简单实例

今天本来想把昨天安装的intellij配置好,但是一直显示没有网络,网上查了相关资料也没有查出来解决办法。然后暂停了intellij的配置,开始做了几个Python爬取简单数据的实例,先做了几个最简单的,以后再加大难度&#xff0…

Django REST framework 版本

API 版本控制允许我们在不同的客户端之间更改行为(同一个接口的不同版本会返回不同的数据)。 DRF提供了许多不同的版本控制方案。 可能会有一些客户端因为某些原因不再维护了,但是我们后端的接口还要不断的更新迭代,这个时候通过…

AngularJS中的过滤器(filter)

AngularJS中的过滤器是用于对数据的格式化,或者筛选的函数,可以直接通过以下语法使用: {{expression|filter}} {{expression|filter1|filter2}} {{expression|filter1:param1,param2,...|filter2} 过滤器的种类有number,currency&…

计算机考试上传照片教程,电脑照片传到iPhone手机的详细步骤【图文】

苹果自带的iOS系统是不可以随便和电脑进行数据交换的,必须使用iTunes软件。许多用户为此问题困扰,我们有什么可以把电脑照片传到iPhone手机?下面我们就一起来看看把电脑照片传到iphone设备的详细步骤。具体方法如下:1,…

Mware HA实战攻略之五VMwareHA测试验收

【IT168 专稿】在上一篇"VMware HA实战攻略之四VMwareHA安装及配置"中(点击),讲述了VMwareHA的概念及创建过程,还讲述了创建过程中要注意的一些事项。在本篇中,将要讲述如何在群集节点之一的ESX主机上安装虚…

AVS解码器在DSP平台上的优化

AVS( Audio Video Coding STandard)是由我国数字 音视频标准工作组制定的具有自主知识产权的第二代音视频压缩准。AVS实行1 元专利费用的原则,相比其它音视频编解码标准具有编码效率高、专利费用低、授权模式简单等优势。AVS 解码器的结构复杂、运算量较大&#xff…

如何重做计算机系统软件,电脑卡如何一键重做Win7旗舰版

电脑卡如何一键重做Win7旗舰版?小伙伴们在使用电脑的过程中系统会越来越卡,对于新手小白来说怎么重装系统是一个比较烦恼的问题,不知道如何下手,从哪里开始,那么接下来就以云骑士装机大师为例给小伙伴们讲解一下电脑卡…

python去停用词用nltk_【NLTK】安装和使用NLTK分词和去停词

黄聪:PythonNLTK自然语言处理学习(一):环境搭建 http://www.cnblogs.com/huangcong/archive/2011/08/29/2157437.html 安装NLTK可能出现的问题: 1. pip install ntlk 2. 如果遇到缺少stopwords报错如下:&am…

JavaScript知识概要

JavaScript 1.简介 JavaScript简介: JS是运行在浏览器端的一门脚本语言,一开始主要用来做浏览器验证,但现在功能已经不止于此。 所谓脚本语言就是指,代码不需要编译,直接运行,并且读入…

vue项目cordova打包的android应用

准备工作nodejs、cordova、AndroidStudio这些在上一篇文章中已经说过了,这里就不重复说明。以此文记录vue项目用cordova打包移动app的方法。 1.创建一个cordova项目,如创建一个名为testapp的工程:cordova create testapp 2.添加安卓平台 cord…

Django REST framework 源码解析

先放图,放图说话,可能有点长 主流程 这个颜色 从setting导入默认数据流程是 这个颜色 主流程大概流程写一下:as_view 实际返回view,并把参数{"get":"list","post":"create"}传递给view…

-9 逆序输出一个整数的各位数字_leetcode两数相加(大整数相加)

题目来源于leetcode第二题两数相加。题目描述给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来…

计算机如何添加管理员权限,电脑使用代码如何添加管理员权限

我们在使用电脑运行某些软件的时候,可能需要用到管理员权限才能运行,通常来说直接点击右键就会有管理员权限,但最近有用户向小编反馈,在需要管理员权限的软件上点击右键没有看到管理员取得所有权,那么究竟该如何才能获…

sql注入问题

${}拼接sql,会引起sql注入,sql注入例如: select * from user where name like ‘%’ or 11 or ‘%’; 这种情况下,论name为什么都可以执行 转载于:https://www.cnblogs.com/mengyinianhua/p/7649325.html

teechart绘制实时曲线_快速学会CAD绘制传输线路图纸

一工具CAD工程设计软件二方法和步骤万事开头难,遇到不懂的知识刚开始都有畏难的情绪,只要有决心学习,诚心想学会一项技能,那学会学好它就只是时间问题了。我们常常面临时间紧、需要快速入门甚至熟练地解决工作中实际情况的问题&am…

使用ajax获取用户所在地的天气

1.要获取用户归属地的天气&#xff0c;首先得获取用户所在的市区&#xff0c; 这里先获取用户的IP&#xff0c;通过IP获取IP的归属地&#xff0c;从而得到用户 地址。 获取客户端ip: js: <scripttype"text/javascript" src"http://pv.sohu.com/cityjson?ieu…

Python 之协程

之前我们学习了线程、进程的概念&#xff0c;了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题&#xff0c;都要消耗一定的时间来创建进程、创建线…