首页> 中国专利> 一种基于H.264的可伸缩视频编码方法

一种基于H.264的可伸缩视频编码方法

摘要

本发明属于视频编解码技术领域,具体为一种基于H.264的可伸缩视频编码方法。这种视频压缩编码的方法建立在H.264标准基础上,通过实现分辨率、帧序列长度和量化参数在视频编码过程中实时可调,从而实现编码视频可以以各种码率输出或传输;该方法还实现了环路滤波与动态预测相关参数在编码过程中可调,控制编码过程中编码的复杂度,从而合理利用系统资源。该编码方法具有的高效性、易实现性特点,可应用于多种网络视频传输和多种处理器系统。

著录项

  • 公开/公告号CN102065302A

    专利类型发明专利

  • 公开/公告日2011-05-18

    原文格式PDF

  • 申请/专利权人 复旦大学;

    申请/专利号CN201110034808.8

  • 发明设计人 杨志智;胡波;冯辉;

    申请日2011-02-09

  • 分类号H04N7/26;H04N7/50;

  • 代理机构上海正旦专利代理有限公司;

  • 代理人陆飞

  • 地址 200433 上海市杨浦区邯郸路220号

  • 入库时间 2023-12-18 02:21:58

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-07-09

    授权

    授权

  • 2012-12-19

    实质审查的生效 IPC(主分类):H04N7/26 申请日:20110209

    实质审查的生效

  • 2011-05-18

    公开

    公开

说明书

技术领域

本发明属于视频编解码技术领域,具体涉及一种可伸缩视频编码方法。

背景技术

实时视频通信具有数据量大、网络带宽要求高、延时敏感等特性,而目前的因特网尚不能对流视频提供任何服务质量(Qos)保证,这使得在因特网上的实时视频传输面临许多困难。例如,由于目前的因特网不能在大范围内支持资源预留协议,网络的可用带宽是时变的。特别是对于受环境影响严重的无线网络传输,带宽的波动将会更大。为了应对视频流传输过程中网络带宽的变化,需要动态地增大或减小视频流的码率,从而保证视频数据的流畅传输即保证接收端视频无间断播放。

可伸缩视频编码的一种实现方法是服务器提供一视频序列的多个备份和多种比特率,该服务器随后根据网络拥塞或客户端可用的带宽在这些比特流之间动态地进行切换。当可用信道带宽减小时,客户端必须从一个高速率比特流切换到另一低速率比特流,反之亦然。然而这种切换处理会引入漂移误差,这是因为一个比特流中的预测帧(如P帧)与另一个比特流中的不同。尽管图像漂移可以通过使用切换图像(SP帧)进行矫正,但是这需要同时提供多种比特率的视频序列,使得视频的处理很难做到实时性而且对系统资源的占用很大。

另一种实现方法是将视频序列压缩为单个可变比特流,可以对该比特流进行删节,以适应带宽的变化。编码器将视频序列编码成一个基本层和多个增强层,基本层具有最低视频质量,增强层可以改善基本层质量。网络服务器可以根据可用带宽及终端需求选择发送数据量。例如空间可伸缩编码应用中,手机视频的分辨率较小,这时就没有必要传输较多的增强层,而只需传适合手机分辨率的增强层和基本层即可。接收端根据接收到的数据解码出相应质量的视频,接收到的增强层越多,解码视频质量越好。但是该种编码方法编码效率低,由于额外的语法开销,多层编码器的总比特率可能远大于单层;在可变编码中,可用层的数量有限,可限制了用户的选择;该种编码在解码器侧引入了额外的计算,这给用户端系统增加了较大的负担。

总的来说,现有的可伸缩视频编码方法需要耗费较多的系统资源。在服务器编码总量中用户所需内容只是其中一部分,甚至是一小部分,因此该种编码方法带来了较大的资源浪费。从另一方面讲实现该种编码方法需要使用较高性能的处理器、较大的存储空间。

发明内容

为了克服现有的可伸缩视频编码存在的缺点,本发明提出了一种基于H.264视频编码标准的高效、简便、易实现的可伸缩视频编码方法。

本发明提出的可伸缩视频编码方法,具体步骤如下:

1、从视频图像缓冲空间中取出视频图像,执行图像尺度变换:将输入视频图像的分辨率变换为目标分辨率,即生成目标分辨率图像;根据图像分辨率与图像编码输出码率的一定对应关系确定目标分辨率; 

2、根据当前帧内容及其之前图像帧的编码方式确定当前帧编码方式(I帧、P帧或B帧),即确定帧序列长度;

3、根据当前帧内容及其之前图像帧的编码情况(包括编码量化参数、输出比特率等)确定当前帧编码量化参数大小;

4、根据步骤3中确定的量化参数大小以及视频编码处理器实际测评结果,确定是否开启环路滤波;

5、根据步骤1中确定的分辨率大小以及视频编码处理器实际测评结果确定动态预测宏块大小;

6、根据视频编码处理器实际测评结果确定动态预测精细度;

7、根据视频编码处理器实际测评结果确定动态预测搜索方式以及搜索半径大小;

8、根据步骤2 ~ 7所设定的参数执行H.264标准视频编码。

本发明步骤1中引入了尺度变换模块,可以将单一分辨率的输入图像变换为目标分辨率的图像,其中目标分辨率可以自由设定。分辨率的设定要求如下:

a、在设定编码码率下,选择使得编码图像PSNR高于37.5dB时对应的分辨率;

b、设定分辨率为满足条件a的可选分辨率中的最大值。

本发明步骤2中当前帧编码方式的确定方法如下:

a、当前帧序号小于最小帧序列长度,则设定该帧为P帧或B帧;

b、当前帧序号大于最大帧序列长度,则设定该帧为I帧,并重新开始帧序列;

c、当前帧序号大于最小帧序列长度,小于最大帧序列长度,则对当前帧图像内容与上一帧图像进行简单对比分析,倘若图像分析结果超过I帧插入门限,则设定该帧为I帧,否则设定为P帧或B帧。

本发明步骤3中编码量化参数的确定有多种方法,具体如下:

方法一:使用实验的方法建立量化参数与编码码率之间统计平均意义上的一一对应关系,从而根据设定编码码率唯一确定量化参数;

方法二:采用估计预测的方法;

方法三:对当前图像进行预分析,根据分析结果确定量化参数。

本发明步骤4中开启环路滤波的条件是:

a、量化参数大于20;(量化参数取值范围为0~50); 

b、当前处理器资源占用量小于70%(默认处理器只用做视频编码)。

本发明步骤5中动态预测宏块大小可选为4×4和8×8,其确定方法为:

a、分辨率小于800×600,且当前处理器资源占用量小于70%时,选择宏块大小为4×4;

b、分辨率大于800×600或当前处理器资源占用量大于70%时,选择宏块大小为8×8。

本发明步骤6中动态预测精细度确定方法为:

a、当前处理器资源占用量大于70%时设定为一个像素精度;

b、当前处理器资源占用量大于40%且小于70%时设定为二分之一个像素精度;

c、当前处理器资源占用量小于40%时设定为四分之一个像素精度。

本发明步骤7中动态预测搜索方式以及搜索半径大小确定方法为:

a、当前处理器资源占用量大于70%时设定为菱形搜索,搜索半径为1或正六边形搜索,搜索半径为2;

b、当前处理器资源占用量小于60%时设定为全面搜索或可变半径六边形搜索,搜索半径为16。

本发明提出的可伸缩视频编码方法,采用实时调整视频编码参数的方法,该方法中编码参数包括步骤1~7中所确定的八个参数:分辨率、帧序列长度、量化参数、环路滤波、动态预测宏块大小、动态预测精细度、动态预测搜索方式以及搜索半径大小。该方法与分层编码等方法不同,不会编码用户所需内容以外的数据,编码效率高;视频编码输出码率直接由参数控制,不需要在各种码率视频流间切换或引入SP帧;该方法中三个可调参数(分辨率、帧序列长度和量化参数)可以实现大范围的编码码率调整,能适应各种网络带宽或用户的需求;该方法中五个可调参数(环路滤波、动态预测宏块大小、动态预测精细度、动态预测搜索方式以及搜索半径大小)的实时调整,实现了编码复杂度的可伸缩,使得该编码技术可以在处理器资源较少的情况下编码更高分辨率视频,在编码低码率视频时使用更高的编码复杂度从而提升视频质量。

本发明具有高效性、易实现性特点,可应用于多种网络视频传输和多种处理器系统。

附图说明

图1是本发明可伸缩视频编码方法实现总体框图。

图2是不同分辨率视频编码输出码率与编码图像信噪比的关系。

具体实施方式

本发明的关键在于实时调整图像分辨率和多个视频编码参数。下面将对照附图并结合具体实施方式对本发明做进一步的详细说明。

本发明的具体实施步骤如下:

1、从视频图像缓冲空间中取出视频图像,执行图像尺度变换,如附图1所示,尺度变换模块将分辨率为640×480的输入视频图像变换为目标分辨率为320×240的视频图像。

在尺度变换模块中,使用一个整型参数控制尺度变换后视频分辨率的大小,通过调节该参数即能设定编码视频的分辨率。由于在H.264编码标准中,编码器会使用前一帧或前后几帧作为参考帧,通过帧间预测对当前帧进行编码,倘若当前帧与参考帧分辨率不一致,则编码器无法编码。为了解决该问题,需要将分辨率切换后的第一帧用帧内预测形式编码,即编码为I帧(更确切的说,应该为IDR帧,需要更新编解码参数集)。在其他参数一定的情况下,分辨率的切换会引起输出码率的较大变化,一般切换分辨率的频率较低,因而分辨率切换一般应用于编码输出码率的粗调。

分辨率的设定要满足以下要求:

a、在设定编码码率下,选择使得编码图像PSNR高于37.5dB时对应的分辨率;

b、设定分辨率为满足条件a的可选分辨率中的最大值。

以下举例说明分辨率的设定方法:

附图2是一份使用H.264标准编码网络摄像头(物理分辨率为640×480)采集视频所得的统计数据,其中横坐标为视频编码的输出码率,单位为Kbps,纵坐标为编码图像的信噪比PSNR。图中3条曲线分别表示视频分辨率为160×120、240×180、320×240时编码图像信噪比与输出码率的关系。从图中可以看出,对于分辨率为320×240的视频编码,当编码输出码率低于166Kbps时,编码图像的信噪比PSNR低于37.5dB(一般图像信噪比低于37.5 dB时图像会较为模糊或失真)。而对于分辨率为240×180的视频编码,当编码输出码率高于113Kbps时,编码图像的信噪比PSNR都是高于37.5dB。因此要使得编码图像具有更好的信噪比,则在编码输出码率需要低于166Kbps时将编码视频分辨率切换为240×180。以此类推,当编码输出码率需要低于113Kbps时,可以将编码视频分辨率切换为160×120。反之,若当前采用的分辨率为240×180,允许的视频输出码率高于166Kbps时,可以将分辨率切换为320×240,从而可以得到更高画质的视频。

补充说明:通常情况下,尺度变换后的视频分辨率为常用视频分辨率,如320×240、640×480、800×600等等,在实际应用中可根据需要选择合适的几个分辨率用于切换。且在初始化时,尺度变换模块与视频编码间存储视频帧的存储空间需足够大,即可以存储最大分辨率视频帧(最大分辨率值的选取是由处理系统资源多少决定,针对不同的系统、不同的用户要求,选择不同的最大分辨率值)。目标码率可能会在分辨率切换码率周围有微小振荡,引起分辨率频繁切换,为了解决该问题,通常使用滞回切换的方法,即目标码率高于切换码率5%时才从低分辨率切换至高分辨率,目标码率低于切换码率5%时才从高分辨率切换至低分辨率。

2、根据当前帧内容及其之前图像帧的编码方式确定当前帧编码方式(I帧、P帧或B帧),即确定了帧序列长度(两相邻I帧之间的图像数)。

当前帧编码方式的确定方法如下:

a、当前帧序号小于最小帧序列长度(一般为10),则设定该帧为P帧或B帧。当设定P帧与B帧是1:1的情况时,当前一帧为P帧,则当前帧为B帧,下一帧为P帧,以此类推。由于B帧的编解码运算量较大,通常会不使用B帧,则该情况下直接设定为P帧。

b、当前帧序号大于最大帧序列长度(一般为200),则设定该帧为I帧,并重新开始帧序列。

c、当前帧序号大于最小帧序列长度,小于最大帧序列长度,则对当前帧图像内容与上一帧图像进行简单对比分析,倘若图像分析结果超过I帧插入门限,则设定该帧为I帧,否则设定为P帧或B帧。这里所说的简单对比分析可以是求取前一帧图像与当前帧图像的相关系数,即当当前帧与前一帧相关系数较高、两幅图像较为相似时,该帧设定为P帧或B帧,否则设定为I帧。

从以上确定编码方式的方法可以看出,I帧插入门限是影响帧序列长度的重要参数,进而也是影响编码码率的参数。对于该视频编码方法用于网络视频实时传输的情况,一般不考虑其对编码码率的影响,而是考虑对接收端解码图像的影响:网络链路丢包使得接收端缺失一幅图像或图像的一个宏块(此处默认网络协议为不可靠连接,如UDP),而之后的图像或相邻的图像需要以该图像为参考帧进行解码,则解码将出现一定差错,并随着时间的推移,差错会越来越严重。

针对以上情况,I帧插入门限的设定方法为:I帧插入门限设定为0~40,当丢包率为0%时,插入门限设定为40,即最不容易插入I帧;当丢包率β小于20%时,I帧插入门限设定为40-200β;当丢包率大于20%时即插入I帧。以上方法为一种简单实现方法,实际应用时可以根据需要的精度使用较为复杂的算法或模型。

3、根据当前帧内容及其之前图像帧的编码情况(包括编码量化参数、输出比特率等)确定当前帧编码量化参数大小。

编码量化参数的确定有多种方法,具体如下:

方法一:使用实验的方法建立量化参数与编码码率之间统计平均意义上的一一对应关系,从而根据设定编码码率唯一确定量化参数。例如对于该视频编码方法应用于网络视频聊天的情况,可以预先录制一段聊天视频,分辨率设定为320×240,量化参数分别设定为10~50这41种情况,对每种量化参数执行一次编码,统计每一次编码输出平均码率,从而建立量化参数与输出码率的一一关系。当网络带宽为a时,则编码时使用平均编码码率为a所对应的量化参数。

方法二:采用估计预测的方法。编码过程中记录当前帧前10帧编码所使用的量化参数[p1,p2,…p10]和对应的平均输出码率r,使用以下计算公式确定当前量化参数p:

其中R为目标输出码率,为正常数因子。以上为一简单的估计预测方法,针对不同情况可以选择更加精确复杂的估计预测方法。

方法三:对当前图像进行预分析,根据分析结果确定量化参数。编码前对当前帧进行预编码,较为精确地统计出编码当前图像所需的比特数与量化参数的关系,根据该关系和目标码率唯一确定量化参数。该方法较为复杂,需要占用相当大的处理器资源。

根据实际应用的要求,合理选择以上方法确定量化参数。

4、根据步骤3中确定的量化参数大小以及视频编码处理器实际测评结果确定是否开启环路滤波。

开启环路滤波的条件是:

a、量化参数大于20;

b、当前处理器资源占用量小于70%。

以上两个条件同时满足时才开启环路滤波,即当量化参数小于20或当前处理器资源占用大于70%时都应关闭环路滤波。

5、根据步骤1中确定的分辨率大小以及视频编码处理器实际测评结果确定动态预测宏块大小。

动态预测宏块大小可选为4×4和8×8,其确定方法为:

a、分辨率小于800×600,且当前处理器资源占用量小于70%时,选择宏块大小为4×4;

b、分辨率大于800×600或当前处理器资源占用量大于70%时,选择宏块大小为8×8。

以上确定方法是基于分辨率和处理器性能的一般考虑,实际应用时可以根据具体情况调整确定方法。

6、根据视频编码处理器实际测评结果确定动态预测精细度。

动态预测精细度确定方法为:

a、当前处理器资源占用量大于70%时设定为一个像素精度;

b、当前处理器资源占用量大于40%且小于70%时设定为二分之一像素精度;

c、当前处理器资源占用量小于40%时设定为四分之一像素精度。

动态预测精细度越高,运动补偿计算复杂度就越大,但图像编码的输出比特率可能会较低,因此在实际情况中若处理器资源充足,则尽量采用高精度动态预测,即上述的四分之一像素精度。

7、根据视频编码处理器实际测评结果确定动态预测搜索方式以及搜索半径大小。

动态预测搜索方式以及搜索半径大小确定方法为:

a、当前处理器资源占用量大于60%时设定为菱形搜索,搜索半径为1或正六边形搜索,搜索半径为2;

b、当前处理器资源占用量小于60%时设定为全面搜索或可变半径六边形搜索,搜索半径为16。

8、根据步骤2 ~ 7所设定的参数执行H.264标准视频编码。在每幅图像编码之前,以上参数都被具体设定,使得视频编码可以适应处理器性能且得到目标码率视频流,从而实现该发明所提出的编码码率和编码复杂度可伸缩视频编码。

从以上具体实施方式可以看出,视频编码输出码率与编码器复杂度的可伸缩性使得该编码方法具有高效率、易实现、使用范围广等特点。该方法与分层编码等方法不同,不会编码用户所需内容以外的数据,编码效率更高;视频编码输出码率直接由参数控制,不需要在各种码率视频流间切换或引入SP帧;该方法中前三个可调参数的动态调整可以实现大范围的编码码率调整,能适应各种网络带宽或用户的需求; 编码复杂度的可伸缩使得该编码技术可以在处理器资源较少的情况下编码更高分辨率视频,在编码低码率视频时使用更高的编码复杂度从而提升视频质量,同时也拓宽了该编码技术的使用范围,可以应用于多种处理器或嵌入式平台。基于以上优点,本发明提出的视频编码技术适用于网络视频聊天、视频监控、视频直播等需要视频编码的情况。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号