发明内容
本发明所要解决的技术问题是提供一种视频编码方法,用来解决现有技术中,对于分辨率可变视频中存在较大的编码码率波动的缺陷,可快速调节编码码率使之符合信道要求。
为解决上述技术问题,本发明所采用的技术方案是提供一种视频编码方法,除第一个I帧和第一个P帧,包括以下步骤:
A)当前帧为I帧时,根据之前记录的各编码分辨率下的编码信息,计算各编码分辨率下对应的I帧编码量化参数,对所述当前I帧进行各编码分辨率 下的编码,记录各编码分辨率下的编码信息;
B)当前帧为P帧时,根据之前记录的输出编码分辨率下的编码信息,计算输出编码分辨率下对应的P帧编码量化参数,对所述当前P帧进行输出编码分辨率下的编码,记录输出编码分辨率下的编码信息;
C)当前帧为B帧时,计算输出编码分辨率下对应的B帧编码量化参数,对所述当前B帧进行输出编码分辨率下的编码;
其中步骤A)中所述“根据之前记录的各编码分辨率下的编码信息,计算各分辨率下对应的I帧编码量化参数”包括:
根据传统的码率控制方法计算I帧初始量化参数QP0(ni,1),其中ni,1为第i个图像组GOP的第1帧,即I帧;
根据之前记录的各编码分辨率下的编码信息,计算各编码分辨率下对应的量化参数偏置offset(ni1);
所述量化参数偏置offset(n
i,1)与所述I帧初始量化参数QP
0(n
i,1)相加得到各编码分辨率下对应的I帧编码量化参数,其中offset
k(n
i,1)用以标记编码吗分辨率k下对应的量化参数偏置,QP
k(n
i,1)用以标记编码分辨率k下对应的I帧编码量化参数,
n
i,1为第i个图像组GOP的第1帧,即I帧;编码分辨率k下对应的量化参数偏置
其中
为第i-1个图像组GOP的I帧在编码分辨率k下编码的复杂度权重,
为第i-1个图像组GOP的I帧在编码分辨率p下的复杂度权重,b
k(n
i-1,1)为第i-1个图像组GOP的I帧在编码分辨率k下编码产生的比特数,b
p(n
i-1,1)为第i-1个图像组GOP的I帧在编码分辨率p下编码产生的比特数,QS
k(n
i-1,1)为第i-1个图像组GOP的I帧在编码分辨率k下编码采用的量化步长,QS
P(n
i-1,1)为第i-1个图像组GOP的I帧在编码分辨率p下编码采用的量化步长。
该视频编码方法,是针对除了第一个I帧和第一个P帧以外的I帧、P帧和B帧的编码方法,在分辨率可变时,通过计算I帧编码量化参数、P帧编码量化参数和B帧编码量化参数,对当前帧进行编码,并记录当前帧的编码信息。该记录下的编码信息又作为改变后的分辨率下的计算I帧编码量化参数、P帧编码量化参数和B帧编码量化参数的前提已知信息。该视频编码方法中的某分辨率下的I帧编码量化参数由该分辨率下的量化参数偏置offset(ni,1)与I帧初始量化参数QP0(ni,1)相加得到。
作为优选,步骤A)中所述“对所述当前I帧进行各编码分辨率下的编码”包括以下步骤:
i)获取当前I帧;
ii)获取当前I帧在各编码分辨率下的处理I帧;
iii)对处理I帧采用I帧编码量化参数进行编码。
作为优选,步骤ii)中所述“获取当前I帧在各编码分辨率下的处理I帧“包括:
若首次执行获取当前I帧在各编码分辨率下的处理I帧的操作,则采用当前I帧作为处理I帧;
当非首次执行获取当前I帧在各编码分辨率下的处理I帧的操作,则对当前I帧进行该当前I帧所在编码分辨率下的下采样,以下采样获得的帧作为处理I帧。
该视频编码方法引入了处理帧的概念,定义了处理帧的获取方法以及对处理帧采用I帧编码量化参数进行编码来获得在当前帧所在分辨率下的编码。
作为优选,步骤B)中所述“根据之前记录的输出编码分辨率下的编码信息,计算输出编码分辨率下对应的P帧编码量化参数”包括:
根据之前记录的输出编码分辨率下的编码信息,计算输出编码分辨率下的量化步长
其中
为第i个图像组GOP的第j帧的模 糊图像复杂度,
为通过对上一个分辨率改变处的P帧到当前P帧的图像复杂度的递归滤波得到的模糊图像编码复杂度,其中QS(n
m,n)为第m个图像组GOP的第n帧的量化步长,b(n
m,n)为第m个图像组GOP的第n帧编码的输出比特数,cng为上一个分辨率改变处的图像组GOP的编号,u(n
m,n)为第m个图像组GOP的第n帧的信道带宽,F
r为预置帧率;
根据一种量化参数与量化步长的对应关系,得到P帧编码量化参数。
该视频编码方法又给了一种计算P帧编码量化参数的方法,即通过计算出P帧在某分辨率下的量化参数,再通过现有技术中已知的量化参数与量化步长的对应关系,得到某分辨率下的P帧编码量化参数。
作为优选,步骤B)中所述“对所述当前P帧进行输出编码分辨率下的编码”包括:
a)获取当前P帧;
b)获取当前P帧在输出编码分辨率下的处理P帧;
c)对处理P帧采用P帧编码量化参数进行编码。
其中步骤b)中所述“获取当前P帧在输出编码分辨率下的处理P帧”包括:
当输出编码分辨率的大小等于原始图像分辨率的大小时,所述处理P帧为当前P帧;
当输出编码分辨率的大小不等于原始图像分辨率的大小时,对当前P帧进行该当前P帧所在的编码分辨率下的下采样,以下采样获得的帧作为处理P帧。
作为优选,步骤C)中所述“对所述当前B帧进行输出编码分辨率下的编码”包括:
①获取当前B帧;
②获取当前B帧在输出编码分辨率下的处理B帧;
③对处理B帧采用B帧编码量化参数进行编码。
其中步骤②中所述“获取当前B帧在输出编码分辨率下的处理B帧”包括:
当输出编码分辨率的大小等于原始图像分辨率的大小时,所述处理B帧为当前B帧;
当输出编码分辨率的大小不等于原始图像分辨率的大小时,对当前B帧进行该当前B帧所在的编码分辨率下的下采样,以下采样获得的帧作为处理B帧。
该视频编码方法引入了处理帧的概念,定义了处理帧的获取方法以及对处理帧采用P帧编码量化参数或B帧编码量化参数进行编码来获得在当前帧所在分辨率下的编码。
有益效果:由上述技术方案可知,在分辨率变化情况下,对I帧通过计算各编码分辨率下的量化参数偏置,得到各编码分辨率下对应的I帧编码量化参数,从而达到快速调节编码码流大小使之符合当前信道变化的目的;对P帧通过计算输出编码分辨率下的量化步长,得到输出编码分辨率下对应的P帧编码量化参数,同样能够保证在分辨率改变时,仍然能够快速跟上信道变化的目的。
具体实施方式
下面将结合附图对本发明的实施方式进行详细描述:
如图1所示,一种视频编码方法,此方法适用于除第一个I帧和第一个P帧外的所有帧,基本思路是判断当前帧的类型,是I帧还是P帧还是B帧,对不同的帧用不同的方式计算编码量化参数,进行编码,记录编码信息。
具体来讲,对于I帧,如图2所示,步骤S201,当前帧为I帧。
根据之前记录的各编码分辨率下的编码信息,计算各编码分辨率下对应的I帧编码量化参数,具体包括以下步骤:步骤S202,根据传统的码率控制方法计算I帧初始量化参数QP
0(n
i,1),其中n
i,1为第i个图像组GOP的第1帧,即I帧。所述传统的码率控制方法包括通用视听业务的先进视频编码(Advanced Video Coding for Generic Audiovisual Services,即H.264)所采用的联合视频组(Joint Video Team,简称JVT)的提案基于基本单元层的自适应码率控制(Adaptive Basic Unit Layer Rate Control for JVT,即G012)、运动图像专家组制定的标准2(Moving Picture Experts Group 2,简称MPEG 2)所采用校验模型(Test Model 5,简称TM5)、低码率视频编码标准(Video Coding for Low Bit Rate Communication,即H.263)校验模型(Test Model Near-Time 8,简称TMN8)等等。在实际应用中,可以采用其中任意一种或几种方法的组合进行计算。步骤S203,根据之前记录的各编码分辨率下的编码信息,计算各编码分辨率下对应的量化参数偏置offset(n
i,1)。步骤S204所述量化参数偏置offset(n
i,1)与所述I帧初始量化参数QP
0(n
i,1)相加得到各编码分辨率下对应的I帧编码量化参数。其中offset
k(n
i,1)用以标记编码吗分辨率k下对应的量化参数偏置,QP
k(n
i,1)用以标记编码分辨率k下对应的I帧编码量化参数,
n
i,1为第i个图像组GOP的第1帧,即I帧。编码分辨率k下的对应的量化参数偏 置
其中
为第i-1个图像组GOP的I帧在编码分辨率k下编码的复杂度权重,
为第i-1个图像组GOP的I帧在编码分辨率p下的复杂度权重,b
k(n
i-1,1)为第i-1个图像组GOP的I帧在编码分辨率k下编码产生的比特数,b
p(n
i-1,1)为第i-1个图像组GOP的I帧在编码分辨率p下编码产生的比特数,QS
k(n
i-1,1)为第i-1个图像组GOP的I帧在编码分辨率k下编码采用的量化步长,QS
P(n
i-1,1)为第i-1个图像组GOP的I帧在编码分辨率p下编码采用的量化步长。所述根据之前记录的各编码分辨率下的编码信息即指根据第i-1个图像组GOP的I帧的编码信息,第一个I帧的编码信息是用传统编码方式计算得到的。各编码分辨率可以采用下述多种分辨率,垂直方向1/2采样分辨率、水平方向1/2采样分辨率、垂直和水平方向1/2采样分辨率但不限于此。
步骤S205,对当前I帧进行各编码分辨率下的编码,具体包括以下步骤:获取当前I帧。获取当前I帧在各编码分辨率下的处理I帧。若首次执行获取当前I帧在各编码分辨率下的处理I帧的操作,则采用当前I帧作为处理I帧。当非首次执行获取当前I帧在各编码分辨率下的处理I帧的操作,则对当前I帧进行该当前I帧所在编码分辨率下的下采样,以下采样获得的帧作为处理I帧。对处理I帧采用I帧编码量化参数进行编码。
步骤S206,记录各编码分辨率下的编码信息。
对于P帧,如图3所示,步骤S301当前帧为P帧。
根据之前记录的输出编码分辨率下的编码信息,计算输出编码分辨率下对应的P帧编码量化参数。输出编码分辨率指输出码流所选择的分辨率,具体的选择方法可以采用预置的方法,或在I帧处,根据各编码分辨率下的编码信息来选择最优分辨率,所述的最优分辨率指最好的编码质量或最佳的码率-失真函数值。计算P帧编码量化参数具体包括以下步骤:步骤S302,根据之前 记录的输出编码分辨率下的编码信息,计算输出编码分辨率下的量化步长
其中
为第i个图像组GOP的第j帧的模糊图像复杂度,
为通过对上一个分辨率改变处的P帧到当前P帧的图像复杂度的递归滤波得到的模糊图像编码复杂度,其中QS(n
m,n)为第m个图像组GOP的第n帧的量化步长,b(n
m,n)为第m个图像组GOP的第n帧编码的输出比特数,cng为上一个分辨率改变处的图像组GOP的编号,u(n
m,n)为第m个图像组GOP的第n帧的信道带宽,F
r为预置帧率。图像复杂度的计算可采用现有的任何图像复杂度的计算方法,具体地,本实施例中采用的方法为SATD(Sum of Absolute Transformed Difference),但不限于此。分辨率改变处指,已经编码过的帧中,离当前帧最近的且输出分辨率与当前帧不同的帧,此帧的下一帧定义为分辨率改变处。分辨率改变处的GOP编号,即分辨率改变处的帧所在的GOP的编号。步骤S303,根据一种量化参数与量化步长的对应关系,得到P帧编码量化参数。具体地,在各视频编码标准中都有明确的表格进行映射。
步骤S304,对当前P帧进行输出编码分辨率下的编码,具体包括以下步骤:获取当前P帧。获取当前P帧在输出编码分辨率下的处理P帧,当输出编码分辨率的大小等于原始图像分辨率的大小时,所述处理P帧为当前P帧。当输出编码分辨率的大小不等于原始图像分辨率的大小时,对当前P帧进行该当前P帧所在的编码分辨率下的下采样,以下采样获得的帧作为处理P帧。对处理P帧采用P帧编码量化参数进行编码。原始图像分辨率指的是设为当前P帧未作处理前的图像分辨率。
步骤S305,记录输出编码分辨率下的编码信息。
对于B帧,如图4所示,步骤S401当前帧为B帧。
步骤S402,计算输出编码分辨率下对应的B帧编码量化参数。B帧编码量化参数采用现有技术进行计算。
步骤S403,对当前B帧进行输出编码分辨率下的编码,具体包括以下步骤:获取当前B帧。获取当前B帧在输出编码分辨率下的处理B帧,当输出编码分辨率的大小等于原始图像分辨率的大小时,所述处理B帧为当前B帧。当输出编码分辨率的大小不等于原始图像分辨率的大小时,对当前B帧进行该当前B帧所在的编码分辨率下的下采样,以下采样获得的B帧作为处理B帧。具体可采用多种采样方式,采样方法可以预先设定。如采样方法可采用联合视频组(Joint Video Team,简称JVT)标准中推荐的5抽头滤波器,滤波系数为:-1/8,2/8,6/8,2/8,-1/8。以上仅为采样方法的一个具体实例,在实际应用中还可以采用任何其他的采样方法,不限于上述方法。对处理B帧采用B帧编码量化参数进行编码。
以上对I帧编码量化参数、P帧编码量化参数和B帧编码量化参数进行编码,都是采用现有技术进行,在本发明实施例中,具体的编码方法包括以下方法,但不限于以下方法:如运动图像专家组(Moving Picture Experts Group,简称MPEG)制定的版本MPEG1、MPEG2、MPEG4,联合视频组(Joint Video Team,简称JVT)提出的数字视频编解码器标准(Advanced Video Coding简称H.26x/AVC),及由我国具备自主知识产权的数字音视频编解码技术标准(Advanced Coding of Audio and Video,简称AVS)等视频编码标准。在本发明的实施例中,编码量化参数的计算可以包含编码分辨率或输出分辨率的编码信息,在分辨率可变视频编码中,修正了传统码率控制中不考虑图像分辨率的缺陷,从而达到快速调节编码码流大小使之符合当前信道变化,减少了码率的波动。
需要说明的是:对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本方法并不受所描述的动作顺序的限制,因为依据本方法,某些步骤可以采用其他顺序或者同时进行。 例如,如图5所示,以P帧为例,对当前P帧进行输出编码分辨率下的编码的过程,步骤S501,获取当前P帧,S502,获取当前P帧在输出编码分辨率下的处理P帧可以与步骤S503,根据一种量化参数与量化步长的对应关系,得到P帧编码量化参数同步执行,只要能实现步骤S505,对处理P帧采用P帧编码量化参数进行编码即可。同理可得I帧、B帧中的某些步骤均是如此。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:随机存取记忆体(Random Access Memory,简称RAM)、唯读记忆体(Read Only Memroy,简称ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
虽然结合附图描述了本发明的实施方式,但是本领域普通技术人员可以在所附权利要求的范围内作出各种变形或修改。