基于场景的二次编码图像组划分方法转让专利

申请号 : CN200910300383.3

文献号 : CN101489138B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 曾超展华益徐锦亮

申请人 : 四川长虹电器股份有限公司

摘要 :

本发明涉及一种视频信号处理技术,尤其涉及一种基于场景的二次编码图像组划分方法。本发明公开一种基于场景的二次编码GOP划分方法,解决在场景切换时产生图像质量下降的问题,提高视频编码重建图像的稳定性。其技术方案的要点是:包括以下步骤:a.对视频序列进行第一次编码,统计场景切换的位置;b.第二次编码中,根据第一次编码中场景切换位置,进行新的GOP划分,并完成该GOP的初始化;c.编码该GOP图像时,计算每帧图像的帧号;d.对该GOP中每帧图像进行优化编码。本发明的有益效果是:避免了在场景切换时图像质量下降的情况,提高视频编码重建图像的稳定性,适用于对视频信号的处理。

权利要求 :

1.基于场景的二次编码图像组划分方法,其特征在于:包括以下步骤:

a.对视频序列进行第一次编码,统计场景切换的位置;

b.第二次编码中,根据第一次编码中场景切换位置,进行新的图像组划分,并完成该图像组的初始化;

c.编码该图像组图像时,计算每帧图像的帧号;

d.对该图像组中每帧图像进行优化编码;

所述步骤b中,具体划分图像组的方法为:

设任意一帧图像对应的帧号为frame_no,I帧或P帧对应的帧号为Img_no;

b1:无B帧时图像组划分方法:

如果某个场景为第一个场景或场景标志位为真,则场景发生切换,开始新的图像组初始化:将场景切换帧强制编码为I帧,在第一次编码中得到了该场景的长度Ns(i),则在第二次编码中该场景编码的P帧数目为np2,s(i)=Ns(i)-1,对于非场景切换的帧按照正常的编码结构进行编码;

b2:有B帧时图像组划分方法:

当有B帧插入时,假设连续插入B帧的数目为Bno,记M=Bno+1;场景标志位为真或者场景为第一个场景时,则场景发生切换,开始新的图像组初始化:将场景切换帧强制编码为I帧,在第一次编码中得到了该场景的长度Ns(i),在第二次编码中该场景中的P帧的数目为:np2,s(i)=[Ns(i)-1]/M+[Ns(i)-1]%M,该场景中B帧的数目为nb2,s(i)=Ns(i)-np2,s(i)-1;如果待编码的B帧图像位于场景尾部时,将其强制编码为P帧;统计在第一次编码中如果插入B帧时应编码的P帧数目np1,s(i),判断的方法是,如果[Starts(i)%M]=0则np1,s(i)=[Ns(i)-1]/M+1,否则np1,s(i)=(Ns(i)-M+[Starts(i)%M-1])/M+1;同时,需要计算该场景在第二次编码中开始编码最后一组B帧时已编码的I帧和P帧总数NIP(i);将上一图像组中得到的NIP(i-1)和Np1,s(i-1)用于更新当前图像组中的初始值Img_no,相应的方法是:如果NIP(i-1)>Np1,s(i-1),则Img_no计数更新为Img_no-[NIP(i-1)-Np1,s(i-1)],否则Img_no的计数不改变,其中Np1,s(i-1)为前一图像组在第一次编码中如果插入B帧时应该编码的P帧的数目;Starts(i)为第i个场景的起始帧号;

所述步骤c中,计算每帧图像的帧号的方法是:假设场景中已编码的B帧和P帧的帧数分别为nb_account(i)和np_account(i),这两个值在该图像组初始化时设置为

0;设第二次编码时该场景应编码的B帧数目为nb2,s(i);计算I帧或P帧的帧号的方法为:如果[Starts(i)%M]≠0并且nb_account(i)<nb2,s(i),则frame_no=Img_no×M-[M-Starts(i)%M],如果[Starts(i)%M]=0并且nb_account(i)<nb2,s(i),则frame_no=Img_no×M,如果[Starts(i)%M]≠0并且nb_account(i)=nb2,s(i),则frame_no=Img_no×M-[M-Starts(i)%M]+np_account(i),如果[Starts(i)%M]=0并且nb_account(i)=nb2,s(i),则frame_no=Img_no×M+np_account(i);在计算B帧的帧号时,需要首先计算上一个P帧的帧号prevP_no和下一个P帧的帧号nextP_no,其中prevP_no的计算方法为(Img_no-1)×M-[M-Starts(i)%M],相应地,nextP_no的计算方法为(Img_no+1)×M-[M-Starts(i)%M],该B帧的帧号为frame_no=prevP_no+Bno×nb_code,其中nb_code为每次插入B帧时该B帧所处的位置,其值间于[1,Bno]之间。

说明书 :

基于场景的二次编码图像组划分方法

技术领域

[0001] 本发明涉及一种视频信号处理技术,尤其涉及一种基于场景的二次编码图像组划分方法。

背景技术

[0002] 在现有视频编码中,通常采用固定图像组(以下简称GOP)结构进行编码。当场景发生切换或图像运动剧烈时,由于使用前一帧相同位置基本单元的MAD(Mean AbsoluteDifference,平均绝对误差)值线性预测当前基本单元的MAD值,导致当前帧MAD值以及QP(量化参数)预测不准确,并且由于编码过程中通常采用CBR(Constant Bit Rate,恒定比特率)码率控制技术对整个视频序列平均分配码率,往往使得场景切换以及运动剧烈的图像质量急剧下降,影响了视频编码重建图像的稳定性,甚至造成马赛克现象。综上,现有技术产生这些缺陷的根本原因是:未对场景切换后的GOP进行重新划分。

发明内容

[0003] 本发明所要解决的技术问题是:针对现有技术的不足,提出一种基于场景的二次编码GOP划分方法,解决在场景切换时产生图像质量下降的问题,提高视频编码重建图像的稳定性。
[0004] 本发明解决上述技术问题采用的技术方案是:基于场景的二次编码GOP划分方法,包括以下步骤:
[0005] a.对视频序列进行第一次编码,统计场景切换的位置;
[0006] b.第二次编码中,根据第一次编码中场景切换位置,进行新的GOP划分,并完成该GOP的初始化;
[0007] c.编码该GOP图像时,计算每帧图像的帧号;
[0008] d.对该GOP中每帧图像进行优化编码。
[0009] 所述步骤b中,具体划分GOP的方法为:
[0010] 设任意一帧图像对应的帧号为frame_no,I帧或P帧对应的帧号为Img_no;
[0011] b1:无B帧时GOP划分方法:
[0012] 如果该场景为第一个场景或场景标志位为真,可以判断场景发生切换,开始新的GOP初始化:将场景切换帧强制编码为I帧,在第一次编码中得到了该场景的长度Ns(i),则在第二次编码中该场景编码的P帧数目为np2,s(i)=Ns(i)-1,对于非场景切换的帧按照正常的编码结构进行编码;
[0013] b2:有B帧时GOP划分方法:
[0014] 当有B帧插入时,假设连续插入B帧的数目为Bno,记M=Bno+1;场景标志位为真或者场景为第一个场景时,可以判断场景发生切换,开始新的GOP初始化:将场景切换帧强制编码为I帧,在第一次编码中得到了该场景的长度Ns(i),则在第二次编码中该场景中的P帧的数目为:np2,s(i)=[Ns(i)-1]/M+[Ns(i)-1]%M,该场景中B帧的数目为nb2,s(i)=Ns(i)np2,s(i)-1;如果待编码的B帧图像位于场景尾部时,将其强制编码为P帧;统计在第一次编码中如果插入B帧时应编码的P帧数目np1,s(i),判断的方法是,如果[Starts(i)%M]=0则np1,s(i)=[Ns(i)-1]/M+1,否则np1,s(i)=(Ns(i)-M+[Starts(i)%M-1])/M+1;同时,需要计算该场景在第二次编码中开始编码最后一组B帧时已编码的I帧和P帧总数NIP(i);将上一GOP中得到的NIP(i-1)和Np1,s(i-1)用于更新当前GOP中的初始值Img_no,相应的方法是:如果NIP(i-1)>Np1,s(i-1),则Img_no计数更新为Img_no-[NIP(i-1)-Np1,s(i-1)],否则Img_no的计数不改变。
[0015] 所述步骤c中,计算每帧图像的帧号的方法是:假设该场景中已编码的B帧和P帧的帧数分别为nb_account(i)和np_account(i),这两个值在该GOP初始化时设置为0;设第二次编码时该场景应编码的B帧数目为nb2,s(i);如果[Starts(i)%M]≠0并且nb_account(i)<nb2,s(i),则frame_no=Img_no×M-[M-Starts(i)%M],如果[Starts(i)%M]=0并且nb_account(i)<nb2,s(i),则frame_no=Img_no×M,如果[Starts(i)%M]≠0并且nb_account(i)=nb2,s(i),则frame_no=Img_no×M-[M-Starts(i)%M]+np_account,如果[Starts(i)%M]=0并且nb_account(i)=nb2,s(i),则frame_no=Img_no×M+np_account;在计算B帧的帧号时,需要首先计算上一个P帧的帧号prevP_no和下一个P帧的帧号nextP_no,其中prevP_no的计算方法为(Img_no-1)×M-[M-Starts(i)%M],相应地,nextP_no的计算方法为(Img_no+1)×M-[M-Starts(i)%M],该B帧的帧号为frame_no=prevP_no+Bno×nb_code,其中nb_code为每次插入B帧时该B帧所处的位置,其值间于[1,Bno]之间。
[0016] 本发明的有益效果是:避免了在场景切换时图像质量下降的情况,提高视频编码重建图像的稳定性。

具体实施方式

[0017] 下面结合实施例对本发明作进一步的描述。
[0018] 本发明所要解决的技术问题是:针对现有技术的不足,提出一种基于场景的二次编码GOP划分方法,解决在场景切换时产生图像质量下降的问题,提高视频编码重建图像的稳定性。
[0019] 实施例:
[0020] 本例中的二次编码GOP划分方法可采用以下步骤实现:
[0021] (a)初始化视频信号的初始量化参数,设定编码帧率以及相关编码参数,判断待编码视频序列的编码次数,如果为第一次编码,则执行b进行第一次编码,否则,进入步骤c进行第二次编码。
[0022] (b)在第一次编码过程中,采用固定QP进行编码,编码结构采用IPPP模式,只对视频序列首帧编码为I帧,关闭码率控制选项,开启RDO(率失真优化)。假设Fn为第二次编码中设置的编码帧数,连续插入B帧的数目为Bno,则在第一次和第二次编码过程中需要编码的实际帧数为Ntotal=Fn+(Fn-1)×Bno。在第一次编码中采用场景检测算法,记录第i个场景的起始和结束位置分别为Starts(i)和Ends(i),可以确定该场景的帧长度为Ns(i)。设置场景切换的标志位Scene_flag(i),如果发生场景切换,则该标志位设置为1,否则设置为0。
[0023] (c)在第二次编码过程中,编码结构支持插入B帧编码,开启码率控制和RDO。假