一种基于率失真优化和丢帧预测的长参考帧的选取方法与流程

文档序号:17324472发布日期:2019-04-05 21:42阅读:332来源:国知局
一种基于率失真优化和丢帧预测的长参考帧的选取方法与流程

本发明涉及视频编解码技术领域,尤其是涉及一种基于率失真优化和丢帧预测的长参考帧的选取方法。



背景技术:

视频通信是现代通信常用的通信方式,它出现在我们生活的各个方面,如网络直播,视频新闻,视频会议等。视频信息的特点就是直观且信息量大,对于像直播或是像视频会议这样的实时视频系统来说,如何保证视频流实时且高效地传输极为重要。为了保证实时播放中的低延迟性,该类视频中的帧类型通常只有两种i和p,不使用b帧。现有的被广泛应用的编解码技术如h264或者hevc,在进行帧间预测编码来恢复重建图像时,通常选取的是前一帧作为参考帧来编码当前帧。

目前使用的压缩标准在采用帧间编码预测时,一到两帧已重建图像作为参考帧用于与运动估计来编码当前帧。尤其在实时会议系统中我们通常选择参考上一帧,该方法的优点是搜索时间短、算法复杂度低、延时较低,但这种参考帧选取方法的缺点是在当前帧发生巨大的场景变换或是当前帧预参考的上一帧在传输中发生丢包,无法正确解码的情况下,会选择重编i帧,开启新的gop进行恢复。因为重编i帧所需的比特数要远远大于其他帧类型,从而导致码率突增,影响编码效率,这时我们需要使用长参考帧作为丢帧恢复的解决方案。

长参考帧的定义是将已经被接收端收到且已解的关键帧记录到参考帧列表中,当编码端收到丢包反馈或是检测到场景切换时,触发长参考帧的使用。这样一方面可以防止错误大范围地蔓延导致解码端不可解的状况的发生,另一方面可以防止重编i帧带了的巨大比特消耗。参考帧的选取实际上是一个消耗与效率的妥协,消耗包括存储消耗和搜索消耗,而效率则是使用多参考帧带来的压缩效率的提升。就国内普遍使用的h264压缩算法来说,国际标准化协会规定了在做帧间预测时,参考帧列表的最大长度不超过15帧。我们可以充分地在编码端缓存15帧作为参考帧,根据比较所有参考帧与当前编码帧之间畸变值的大小选择最优的参考帧,但这样做的成本就是系统所需的存储空间增大,搜索查找最优帧的运算工作量增大,延时增加,影响码流在实时传输系统中的时效性。

同时,长参考帧的选取可以结合传输错误控制机制,充分利用传输机制中的反馈信息来进行优化,提高用户体验。在丢包发生后,在标准传输协议中一般采用自动重传请求(arq)和前向错误纠正(fec)两种方法进行错误控制。视频接收端检测出丢包时,arq机制会向发送端发送重传请求(nack),请求发送端重传丢失的数据包。自动重传请求恢复是简便且安全的帧恢复方法,当然重传也会增加视频延时,影响用户体验。当数据传输线路特别差时,自动重传恢复甚至可能会发生死锁现象。另一种方法是fec,fec通过增加冗余数据提供对抗包丢失的有效途径,因为无需重传或反通道,所以该方法常用于实时或多播应用,但是如果突发丢包长度超过fec的纠错能力时,fec的性能可能很差。此外,冗余包通常要占用较多的存储空间,在传输时需要更大的带宽。arq和fec可以降低网络丢包对视频质量造成的负面影响,但由于延时和带宽等的限制,在实际应用中还是需要考虑如何进一步降低丢包对视频体验的负面影响。如何将长参考帧的选取和网络丢包信息结合起来,预测出最优长参考帧是急需解决的关键问题。



技术实现要素:

为了解决上述问题,本发明提出了一种基于率失真优化和丢帧预测的长参考帧的选取方法,通过丢包率对当前编码帧之前的若干帧已被解码端收到且已经被解码的概率的预测以及当前编码帧与之前的某帧之间的畸变或残差的预测,借助概率和畸变估计选择率失真综合最优的长参考帧,降低所选参考帧丢失可能导致的失真,同时兼顾编码效率,从而提升用户体验。

为了实现上述目的,本发明采用如下技术方案:

一种基于率失真优化和丢帧预测的长参考帧的选取方法,包括以下步骤:

步骤1:首先考虑端对端的收发方式,即发端通过预设多参考帧的使用,然后将短参考与长参考的优先级进行判断,通过比较重建帧的已解概率和其与当前编码真之间畸变大小的合函数来确定目标优化率失真函数;

步骤2:对距离当前编码帧步长为x的已发送的参考帧被丢失的概率的预测,与丢帧概率相乘构成目标优化率失真函数的第一项;

步骤3:计算使用距离当前编码帧的某一帧作为参考后,两帧之间的畸变大小,与拉格朗日乘数λ相乘,构成目标优化率失真函数的第二项;

步骤4:通过找到使目标优化率失真函数最小的步长值,获得最优参考帧。

进一步地,作为优选技术方案,所述步骤1中的目标优化率失真函数为:

dopt=argmin{dd+λ·rd}

其中,dopt表示最优步长值;dd表示的是如果选取距离当前帧步长为d的帧被选用为参考帧可能会产生的失真,此失真与丢包概率和实时rtt值的预测有关;rd表示的是选用距离当前编码帧步长为d的帧为长参考帧时当前编码帧所需要的编码码率;λ是拉格朗日乘数。

进一步地,作为优选技术方案,所述步骤2的具体过程为:

步骤2-1:确定距离当前帧步长为d的帧被选用为参考帧可能会产生的失真dd表达式:dd=p(y|x)×fs,其中,x表示属性集;y表示类变量;p(y|x)表示在没有收到该帧nack请求的情况下发现丢帧的概率;fs表示丢帧后对gop序列产生失真损伤估计;

步骤2-2:利用贝叶斯定理将步骤1中的p(y|x)计算出来,贝叶斯公式表达为:

其中,p(x)表示在传输中nack没有返回的概率;p(y)表示传输过程中发生丢帧的概率;p(x|y)表示在已知丢帧的情况下同时收到nack的概率;

步骤2-3:计算选取距离当前帧步长为d的帧被选用为参考帧可能会产生的失真dd:

其中,fs表示的是当前帧的确定步长的帧发生丢包以后造成的错误蔓延。

进一步地,作为优选技术方案,所述步骤2-2中,p(x)根据实时的网络环境监控,假设当前发送100个包,其中收到n个nack返回值,那么没有收到nack的概率为:

进一步地,作为优选技术方案,所述步骤2-2中,p(x|y)的计算过程为:

步骤2-2-1:计算帧与帧之间的间隔po,其表达式为:

步骤2-2-2:计算距离当前编码帧确定步长内在未收到nack返回时可以确定该帧已经收到并解码的概率psuccess,其表达式为:

其中,rtt表示数据包经过传输链路到达接受端返回信息到发送端的时长;p(rtt)表示随着网络变化关于rtt时长的概率密度函数;

步骤2-2-3:求解p(x|y),其表达式为:

p(x|y)=1-psuccess。

进一步地,作为优选技术方案,所述步骤2-2-2中,rtt的分布概率服从长尾概率分布函数。

进一步地,作为优选技术方案,所述步骤3的具体过程为:

步骤3-1:确定每次丢包造成序列的期望受损长度velfl的表达式为:

其中,le表示每次丢包造成的序列受损长度;pes表示序列中丢帧模式的条件概率,pf表示丢包帧的概率,根据洛必达法则,当pf趋近于0时,velfl接近于0;当pf趋近于1时,velfl接近于l;

步骤3-2:计算视频序列单位时间内的平均丢包率,其表达式为:

其中,vaflf_t是单位时间内的平均丢包帧频率,t为某一时间段,nf为t时间内视频的总帧数,pf为丢包帧的概率,fr为视频的帧率,当丢包时间符合独立分布时,每个数据包丢失的概率都相同,即等于丢包率;

步骤3-3:计算平均包含数vppf和丢包帧概率pf,其表达式分别为:

其中,np表示t时间内视频的总包数;psize表示数据包大小;br表示编码比特率;

步骤3-4:计算丢帧后对gop序列产生失真损伤估计fs,其表达式为:

fs=vaflf_tveifl

步骤3-5:计算参考帧与当前编码帧之间的畸变大小sad(d),其表达式为:

其中,d表示距离当前编码帧的步长大小;

步骤3-6:为简化计算,假设r(d)正比于sad(d):r(d)=k*sad(d),求解出r(d);其中k为比例系数,sad(d)表示参考帧与当前编码帧之间的畸变大小,r(d)表示当前编码帧的编码所需的编码码率。

与现有技术相比,本发明的有益效果在于:

本发明通过采用数学建模,将参考帧的最优选取问题转化为数学问题,通过对于当前编码帧确定步长范围的帧已经解码的概率和参考该帧后产生的畸变的预估,得到最优选参考帧的估计方法。在长参考帧的使用条件下,具有优选对于当前编码帧畸变最小的已解帧作为参考而不是某一帧与当前编码帧的非相关不是关键帧作为参考的优势,很好地解决了短参考帧遇到场景变换时无法进行帧间预测方法的问题和使用长参考帧时未能参考到关键帧的问题;此外对于整个编解码框架来说,通过对于解码端网络传输质量的分析,来判决接收反馈的个数达到多少的时候,就能成功地确定该帧可以被标记为关键帧,即可以被移至长参考帧列表。

附图说明

图1为本发明实施例提供的一种基于率失真优化和丢帧预测的长参考帧的选取方法的流程图。

具体实施方式

下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。

实施例:

如图1所示,本实施例所述的一种基于率失真优化和丢帧预测的长参考帧的选取方法,包括以下步骤:

步骤1:首先考虑端对端的收发方式,即发端通过预设多参考帧的使用,然后将短参考与长参考的优先级进行判断,通过比较重建帧的已解概率和其与当前编码真之间畸变大小的合函数来确定目标优化率失真函数。

步骤2:对距离当前编码帧步长为x的已发送的参考帧被丢失的概率的预测,与丢帧概率相乘构成目标优化率失真函数的第一项。

步骤3:计算使用距离当前编码帧的某一帧作为参考后,两帧之间的畸变大小,与拉格朗日乘数λ相乘,构成目标优化率失真函数的第二项。

步骤4:通过找到使目标优化率失真函数最小的步长值,获得最优参考帧。

具体地,所述步骤1中的目标优化率失真函数为:

dopt=argmin{dd+λ·rd}

其中,dopt表示最优步长值;dd表示的是如果选取距离当前帧步长为d的帧被选用为参考帧可能会产生的失真,此失真与丢包概率和实时rtt值的预测有关;rd表示的是选用距离当前编码帧步长为d的帧为长参考帧时当前编码帧所需要的编码码率;λ是拉格朗日乘数。

具体地,所述步骤2的具体过程为:

步骤2-1:对于目标优化函数的第一项dd,表达的是如果选取距离当前帧步长为d的帧被选用为长参考帧可能会产生的失真。如果已经收到该帧的nack请求,那么可以很确切地判断接收端无法解码该帧,此帧可即时被标记为无法被用作长参考帧,从长参考帧侯选中排除掉。如果并没有收到该帧的nack请求,该帧也有可能被丢失的,从而对造成失真。在没有收到该帧nack请求的情况下,该帧的丢帧概率可以表述为条件概率p(y|x),其中x表示没有收到该帧nack请求这一条件,y表示该帧丢失这一事件。dd可以用此丢帧概率与丢帧后对gop序列产生失真损伤估计fs的乘积来估计,具体为:dd=p(y|x)×fs,其中,x表示属性集;y表示类变量;p(y|x)表示在没有收到该帧nack请求的情况下发现丢帧的概率;fs表示丢帧后对gop序列产生失真损伤估计;

步骤2-2:利用贝叶斯定理将步骤1中的p(y|x)计算出来,贝叶斯公式表达为:

其中,p(x)表示在传输中nack没有返回的概率;p(y)表示传输过程中发生丢帧的概率;p(x|y)表示在已知丢帧的情况下同时收到nack的概率;

步骤2-3:计算选取距离当前帧步长为d的帧被选用为参考帧可能会产生的失真dd:

其中,fs表示的是当前帧的确定步长的帧发生丢包以后造成的错误蔓延。

具体地,所述步骤2-2中,p(x)根据实时的网络环境监控,假设当前发送100个包,其中收到n个nack返回值,那么没有收到nack的概率为:

进一步地,作为优选技术方案,所述步骤2-2中,p(x|y)的计算过程为:

步骤2-2-1:计算帧与帧之间的间隔po,其表达式为:

步骤2-2-2:计算距离当前编码帧确定步长内在未收到nack返回时可以确定该帧已经收到并解码的概率psuccess,其表达式为:

其中,rtt表示数据包经过传输链路到达接受端返回信息到发送端的时长;p(rtt)表示随着网络变化关于rtt时长的概率密度函数;

步骤2-2-3:求解p(x|y),其表达式为:

p(x|y)=1-psuccess。

具体地,所述步骤2-2-2中,rtt的分布概率服从长尾概率分布函数。

具体地,所述步骤3的具体过程为:

步骤3-1:确定每次丢包造成序列的期望受损长度velfl的表达式为:

其中,le表示每次丢包造成的序列受损长度;pes表示序列中丢帧模式的条件概率,pf表示丢包帧的概率,根据洛必达法则,当pf趋近于0时,velfl接近于0;当pf趋近于1时,velfl接近于l;

步骤3-2:计算视频序列单位时间内的平均丢包率,其表达式为:

其中,vaflf_t是单位时间内的平均丢包帧频率,t为某一时间段,nf为t时间内视频的总帧数,pf为丢包帧的概率,fr为视频的帧率,当丢包时间符合独立分布时,每个数据包丢失的概率都相同,即等于丢包率;

步骤3-3:计算平均包含数vppf和丢包帧概率pf,其表达式分别为:

其中,fr表示t时间内视频的总包数;psize表示数据包大小;br表示编码比特率;

步骤3-4:计算丢帧后对gop序列产生失真损伤估计fs,其表达式为:

fs=vaflf_tveifl

步骤3-5:计算参考帧与当前编码帧之间的畸变大小sad(d),其表达式为:

其中,d表示距离当前编码帧的步长大小;

步骤3-6:为简化计算,假设r(d)正比于sad(d):r(d)=k*sad(d),求解出r(d);其中k为比例系数,sad(d)表示参考帧与当前编码帧之间的畸变大小,r(d)表示当前编码帧的编码所需的编码码率。

以上得到dd和rd的已知表达式后,再结合目标优化率失真函数为:dopt=argmin{dd+λ·rd},计算出目标优化率失真函数dopt=argmin{dd+λ·rd}取得最小值时长参考帧距当前帧的步长d。

以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1