CN101511026B - 一种基于场景的avs二次编码码率控制方法 - Google Patents
一种基于场景的avs二次编码码率控制方法 Download PDFInfo
- Publication number
- CN101511026B CN101511026B CN 200910300505 CN200910300505A CN101511026B CN 101511026 B CN101511026 B CN 101511026B CN 200910300505 CN200910300505 CN 200910300505 CN 200910300505 A CN200910300505 A CN 200910300505A CN 101511026 B CN101511026 B CN 101511026B
- Authority
- CN
- China
- Prior art keywords
- frame
- scene
- time
- bit
- coding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Abstract
本发明涉及一种基于场景的AVS二次编码码率控制方法。本发明公开了一种基于场景的AVS二次编码码率控制方法,保证编码重建视频图像的稳定性,避免运动剧烈或场景切换时出现的马赛克现象。其技术方案的要点是:a.对视频序列进行第一次编码,完成场景检测及相关统计;b.进行第二次编码,如果切换场景则进入步骤c,否则进入步骤d;c.对新划分的图像组层进行目标比特数分配,估计该场景的平均比特率并计算每个图像组的初始QP;d.对每帧特性进行目标比特分配,估计该帧的比特率;e.更新缓冲区占用值和下溢值。本发明根据视频序列的相关统计,动态分配不同帧的编码比特数,避免马赛克现象,适用于对视频信号的编码。
Description
技术领域
本发明涉及视频信号处理技术,尤其涉及一种基于场景的AVS二次编码码率控制方法。
背景技术
数字音视频编码技术标准AVS是我国第一个具有自主知识产权的第二代数字音视频编解码标准,其编码效率和竞争性与国际标准H.264/AVC相当,是MPEG-2的两倍以上。AVS是数字音视频产业的共性基础标准,其代表了当前国际先进水平。
码率控制是视频编码的重要技术之一,其最终目的是为了在有限的缓冲区容量和信道带宽下传输高质量的视频序列。目前,AVS编码标准采用了H.264/AVC的码率控制技术,也就是李政国提出的JVT-G012码率控制方法,其主要过程如下:
(1)根据流量往返模型、线性跟踪模型和上界与下界的值计算当前帧的目标比特率;
(2)平均分配当前帧未编码的基本单元;
(3)根据先前帧相应位置实际的MAD(Mean Absolute Difference,平均绝对误差)值,应用线性模型预测当前帧的当前基本单元的MAD值;
(4)根据二次R-D(Rate-Distortion,率失真)模型计算相应的量化参数;
(5)由上一步得到的量化参数,从而完成当前帧中所有基本单元中每个宏块的RDO(Rate Distortion Optimization,率失真优化)计算。
该方法利用上述技术,使得码率控制更加准确,实际编码码率能很好地逼近限定的目标码率。但是该方法在处理运动剧烈或场景切换的图像时,由于使用前一帧相同位置基本单元的MAD值线性预测当前基本单元的MAD值,导致当前帧MAD值以及QP(量化参数)预测不准确的缺陷,并且由于编码过程中对整个序列平均分配码率,使得运动剧烈或场景切换的图像质量急剧下降,导致视频编码的重建图像质量波动较大。然而,针对本地存储的视频编码,往往要求整个视频序列的图像质量始终保持平稳。
发明内容
本发明所要解决的技术问题是:针对现有技术的不足,提出一种基于场景的AVS二次编码码率控制方法,保证编码重建视频图像的稳定性,避免运动剧烈或场景切换时出现的马赛克现象。
本发明解决上述技术问题采用的技术方案是:一种基于场景的AVS二次编码码率控制方法,包括以下步骤:
a.对视频序列进行第一次编码,并完成序列的场景检测及相关统计;
b.完成第一次编码后进行第二次编码,判断当前帧是否发生场景切换,如果是,划分一个新的图像组,并将场景切换帧强制编码为I帧,该图像组的长度为该场景的帧长度,如果当前帧没有发生场景切换,则按照正常的编码结构进行编码;
c.根据第一次编码的相关统计对新划分的图像组进行目标比特数分配,估计该场景的平均比特率并计算每个图像组的初始QP;
d.根据第一次编码的相关统计对每帧特性进行目标比特分配,估计该帧的比特率;
e.每帧编码完成时更新缓冲区占用值和下溢值;
所述相关统计包括每帧实际生成的比特数,每帧的PSNR值,场景切换的位置,以及每个场景消耗的实际比特数。
所述步骤c包括:
将第一次编码过程中统计的每个场景消耗的实际比特数设为T1,s(i),将第一次和第二次编码过程中整个视频序列需要编码的实际帧数设为Ntotal,将第一次编码过程中当编码至i场景时,包含该场景的剩余比特数设为Left1,s(i);
c1:场景比特数的分配:第二次编码当前场景时,判断该场景是否为最后一个场景,如果不是最后一个场景,该场景分配的目标比特数为 其中B2,total为第二次编码中整个视频序列分配的目标比特数, 为截止到上一个场景时,第二次编码剩余的可用比特数;加上上一场景剩余的比特数T2,r(i-1),当前场景实际分配的比特数为T2,,S(i)=T′2,S(i)+T2,r(i-1);若该场景为最后一个场景,其分配的比特数为截至到上一个场景时,第二次编码剩余的可用比特数;
c2:场景的平均比特率和每个图像组初始QP的计算:根据每个场景分配的目标比特数,可以估计出场景i 的平均比特率公式 Ns(i)为场景的帧长度,B1,total为第一次编码中整个视频序列分配的目标比特数,bit_rate为设定的编码码率;当初始化图像组时,设置场景i下溢的初始值 在第一次编码中,如果PSNR1,S(i,Starts(i))>(PSNR1,S(i-1)+2),则QPst=Paveqp+2,即如果第i个场景起始帧的PSNR值大于上一个场景中PSNR的平均值与2之和,则 该图像组的初始QP值为上一场景所有P帧QP的平均值加上2,如果PSNR1,S(i,Starts(i))<(PSNR1,S(i-1)-2),则QPst=Paveqp-2,对于其他情况QPst=Paveqp,其中PSNR1,S(i-1)为第一次编码中上一场景亮度PSNR的平均值,Paveqp为第二次编码中上一场中所有P帧的平均量化步长。
所述步骤d包括:
d1:无B帧时的帧级目标比特分配:从该场景第二个P帧开始,对应P帧分配的目标比特数为 其中T1,F(i,j)为第i个场景第j帧实际消耗的比特数, 为第一次编码时该场景第j帧到该场景结束消耗的比特数, 为第一次编码时当前帧生成的比特数在当前场景中剩余的比特数中所占的比例,B2,scene_left(i,j)为第二次编码中编码第j帧时该场景剩余的比特数;可以估计出该帧的比特率 其中 为第一次编码中该场景出去I帧和第一个P帧剩余的比特数;
d2:有B帧时的帧级目标比特分配:将待编码的P帧与其上一个P帧之间的B帧进行BP帧组合打包,共计(Bno+1)帧,Bno为连续插入B帧的数目,在第二次编码中假设第i个场景当前P帧的帧号为k,统计该BP帧组合在第一次编码过程中消耗的比特数为 此时P帧分配的比特数为 为第一次编码时当前BP帧组合在当前场景中剩余的比特数中所占的比例,θ为常数,取值为0.7,可以估 计出该P帧的比特率公式为: 其中 表示该场景在第二次编码时I帧和第一个P帧及其间的B帧对应于第一次编码时消耗的比特数,此时,B帧的估计比特率为:
d3:结合线性跟踪理论的帧级目标比特分配:结合线性跟踪理论,在第i个场景中分配给第j个P帧的目标比特数为 其中Tbl(i,j)为该帧目标缓冲级,Bc(i,j)表示编码第j帧以后虚拟缓冲区的占用情况,该P帧比特分配为 其中β为常数,无B帧时,取值为0.5,当有B帧时,取值为0.7。
本发明的有益效果是:根据视频序列的相关统计,动态分配不同帧的编码比特数,使得编码产生的重建图像平稳,避免剧烈运动或场景切换时造成的马赛克现象。
具体实施方式
下面结合实施例对本发明作进一步的描述。
本发明相对于现有技术来说,摒弃了采用平均分配视频序列各帧码率的方式,而是采用动态分配不同帧的编码比特数,使得编码产生的重建图像平稳,避免剧烈运动或场景切换时造成的马赛克现象。
实施例:
(a)初始化视频序列的初始量化参数,设定编码帧率Fr以及及相关编码参数,判断待编码视频序列的编码次数,如果为第一次编码,则执行b进行第一次编码,否则,进入步骤c进行第二次编码。
(b)在第一次编码过程中,采用固定QP进行编码,编码结构采用IPPP模式,只对视频序列首帧编码为I帧,关闭码率控制选项,开启RDO。假设Fn为第二次编码中设置的编码帧数,连续插入B帧的数目为Bno,则在第一次和第二次编码过程中需要编码的实际帧数为Ntotal=Fn+(Fn-1)×Bno。在第一次编码中采用场景检测算法,记录第i个场景的起始和结束位置分别为Starts(i)和Ends(i),可以确定该场景的帧长度为Ns(i)。统计每个场景消耗的实际比特数 其中T1,F(i,j)为第i个场景第j帧实际消耗的比特数,其对应的PSNR(亮度峰值信噪比)为PSNR1,S(i,j)。当第一次编码过程结束后,可以得到该过程消耗的总比特数B1,total,则在第一次编码过程中,当编码场景i时包含该场景的剩余比特数为Left1,S(i)=B1,tota-∑T1,S(i-1)。
(c)在第二次编码过程中,编码结构支持插入B帧编码,开启码率控制和RDO,设定编码的码率bit_rate,基本单元大小设置为帧级流控。通过第一次编码中的检测结果,判断当前帧是否发生场景切换,如果是,划分一个新的图像组,并将场景切换帧强制编码为I帧,该图像组的长度为该场景的帧长度,对于非场景切换的帧按照正常的编码结构进行编码,然后进入步骤d。
(d)编码当前场景时,判断该场景是否为最后一个场景,如果不是最后一个场景,该场景分配的目标比特数为 其中B2,total为整个视频序列在第二次编码中分配的比特总数,其值为 为截止到上一个场景时,第二次编码剩余的可用比特数。加上上一场景剩余的比特数T2,r(i-1),其中T2,r(0)=0,实际分配的比特数为T2,S(i)=T′2,S(i)+T2,r(i-1)。若该场景为最后一个场景,其分配的比特数为 按照这种分配原则,运动舒缓的场景比特分配相对减小,节约的比特数可以分配给运动剧烈的场景,这为保证不同复杂度场景的编码重建图像质量稳定性提供了理论基础。
(e)根据每个场景分配的目标比特数,可以估计出场景i的平均比特率公式 由于基于本地存储的视频编码不存在缓冲器上溢问题,因此只需要限制下溢条件。其中当初始化图像组时,设置场景i下溢的初始值 在第一次编码中,如果PSNR1,S(i,Starts(i))>(PSNR1,S(i-1)+2)则QPst=Paveqp+2,即:如果第i个场景起始帧的PSNR值大于上一个场景中PSNR的平均值与2之和,则该GOP的初始QP值为上一场景所有P帧QP的平均值加上2。如果PSNR1,S(i,Starts(i))<(PSNR1,S(i-1)-2),则QPst=Paveqp-2,对于其他情况QPst=Paveqp,其中PSNR1,S(i-1)为第一次编码中上一场景亮度PSNR的平均值,Paveqp为第二次编码中上一场中所有P帧的平均量化步长。
(f)对于帧级流控,对该场景中的I帧和第一个P帧采用QPst进行编码。
①当不插入B帧编码时,从该场景第二个P帧开始,对应P帧分配的目标比特数为 其中 为第一次编码时该场景第j帧到该场景结束消耗 的比特数, 为第一次编码时当前帧生成的比特数在当前场景中剩余的比特数中所占的比例,B2,scene_left(i,j)为第二次编码中编码第j帧时该场景剩余的比特数。可以估计出该帧的比特率 其中 为第一次编码中该场景出去I帧和第一个P帧剩余的比特数。
②当有插入B帧时,由于B帧采用双向预测技术,往往使得B帧消耗的比特数大幅减小,因此B帧的引入可以较大幅度提高视频的编码性能。由于B帧不存在目标比特分配问题,其是通过其前后两个参考帧的量化步长来进行调整的,为了提高码率控制的准确性,将待编码的P帧与其上一个P帧之间的B帧进行BP帧组合打包,共计(Bno+1)帧。在第二次编码中假设第i个场景当前P帧的帧号为k,统计该BP帧组合在第一次编码过程中消耗的比特数为 此时P帧分配的比特数为 为第一次编码时当前BP帧组合在当前场景中剩余的比特数中所占的比例,θ为常数,取值为0.7。可以估计出该P帧的比特率公式为: 其中 表示该场景在第二次编码时I帧和第一个P帧及其间的B帧对应于第一次编码时消耗的比特数。此时,B帧的估计比特率为:
③结合线性跟踪理论,在第i个场景中分配给第j个P帧的目标比特数为 其中Tbl(i,j)为该帧目标缓冲级,Bc(i,j)表示编码第j帧以后虚拟缓冲区的占用情况。该P帧比特分配为 其中β为常数,无B帧时,取值为0.5,当有B帧时,取值为0.7。
(g)根据步骤f中③为每帧分配的比特数,结合拉格朗日代价函数,对每帧图像进行第二次优化编码。每帧编码完成时,缓冲区占用情况更新为 其中T_act2,F(i,j)表示第i个场景第j帧在第二次编码实际消耗的比特数,下溢值更新为
(h)判断序列编码是否结束,如果没有结束,则进入步骤c,否则结束编码,输出优化视频流。
Claims (2)
1.一种基于场景的AVS二次编码码率控制方法,其特征在于:包括以下步骤:
a.对视频序列进行第一次编码,并完成序列的场景检测及相关统计;
b.完成第一次编码后进行第二次编码,判断当前帧是否发生场景切换,如果是,划分一个新的图像组,并将场景切换帧强制编码为I帧,该图像组的长度为该场景的帧长度,如果当前帧没有发生场景切换,则按照正常的编码结构进行编码;
c.根据第一次编码的相关统计对新划分的图像组进行目标比特数分配,估计该场景的平均比特率并计算每个图像组的初始量化参数QP;
d.根据第一次编码的相关统计对每帧特性进行目标比特分配,估计该帧的比特率;
e.每帧编码完成时更新缓冲区占用值和下溢值;
所述相关统计包括每帧实际生成的比特数,每帧的PSNR值,场景切换的位置,以及每个场景消耗的实际比特数;
所述步骤c包括:
将第一次编码过程中统计的每个场景消耗的实际比特数设为T1,s(i),将第一次和第二次编码过程中整个视频序列需要编码的实际帧数设为Ntotal,将第一次编码过程中当编码至i场景时,包含该场景的剩余比特数设为Left1,s(i);
c1:场景比特数的分配:第二次编码当前场景时,判断该场景是否为最后一个场景,如果不是最后一个场景,该场景分配的目标比特数为 其中B2,total为第二次编码中整个视频序列分配的目标比特数, 为截止到上一个场景时,第二次编码剩余的 可用比特数;加上上一场景剩余的比特数T2,r(i-1),当前场景实际分配的比特数为T2,S(i)=T′2,S(i)+T2,r(i-1);若该场景为最后一个场景,其分配的比特数为截至到上一个场景时,第二次编码剩余的可用比特数;
c2:场景的平均比特率和每个图像组初始量化参数QP的计算:根据每个场景分配的目标比特数,可以估计出场景i的平均比特率公式 Ns(i)为场景的帧长度,B1,total为第一次编码中整个视频序列分配的目标比特数,bit_rate为设定的编码码率;当初始化图像组时,设置场景i下溢的初始值 Fr为编码帧率;在第一次编码中,如果PSNR1,S(i,Starts(i))>(PSNR1,S(i-1)+2),则QPst=Paveqp+2即如果第i个场景起始帧的PSNR值大于上一个场景中PSNR的平均值与2之和,则该图像组的初始量化参数QP值为上一场景所有P帧量化参数QP的平均值加上2,如果PSNR1,S(i,Starts(i))<(PSNR1,S(i-1)-2),则QPst=Paveqp-2,对于其他情况QPst=Paveqp,其中PSNR1,S(i-1)为第一次编码中上一场景亮度PSNR的平均值。
2.如权利要求1所述的一种基于场景的AVS二次编码码率控制方法,其特征在于:所述步骤d包括:
d1:无B帧时的帧级目标比特分配:从该场景第二个P帧开始,对应P帧分配的目标比特数为 其中T1,F(i,j)为第i个场景第j帧实际消耗的比特数, 为第一次编码时该场景第j帧到该场景结束消耗的比特数, 为第一次编码时当前帧 生成的比特数在当前场景中剩余的比特数中所占的比例,B2,scene_left(i,j)为第二次编码中编码第j帧时该场景剩余的比特数;可以估计出该帧的比特率 其中 为第一次编码中该场景除去I帧和第一个P帧剩余的比特数;
d2:有B帧时的帧级目标比特分配:将待编码的P帧与其上一个P帧之间的B帧进行BP帧组合打包,共计(Bno+1)帧,Bno为连续插入B帧的数目,在第二次编码中假设第i个场景当前P帧的帧号为k,统计该BP帧组合在第一次编码过程中消耗的比特数为 此时P帧分配的比特数为 为第一次编码时当前BP帧组合在当前场景中剩余的比特数中所占的比例,θ为常数,取值为0.7,可以估计出该P帧的比特率公式为: 其中 表示该场景在第二次编码时I帧和第一个P帧及其间的B帧对应于第一次编码时消耗的比特数,此时,B帧的估计比特率为:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910300505 CN101511026B (zh) | 2009-02-23 | 2009-02-23 | 一种基于场景的avs二次编码码率控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910300505 CN101511026B (zh) | 2009-02-23 | 2009-02-23 | 一种基于场景的avs二次编码码率控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101511026A CN101511026A (zh) | 2009-08-19 |
CN101511026B true CN101511026B (zh) | 2011-01-19 |
Family
ID=41003255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910300505 Expired - Fee Related CN101511026B (zh) | 2009-02-23 | 2009-02-23 | 一种基于场景的avs二次编码码率控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101511026B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106034237B (zh) * | 2015-03-10 | 2020-07-03 | 杭州海康威视数字技术股份有限公司 | 一种基于编码切换的混合编码方法和系统 |
CN105847796A (zh) * | 2016-03-31 | 2016-08-10 | 乐视控股(北京)有限公司 | 一种用于视频编码的比特分配方法及装置 |
WO2018045970A1 (en) * | 2016-09-06 | 2018-03-15 | Mediatek Inc. | Efficient coding switching and modem resource utilization in wireless communication systems |
CN110545418B (zh) * | 2019-08-27 | 2021-09-24 | 杭州当虹科技股份有限公司 | 一种基于场景的自适应视频编码方法 |
CN113747154A (zh) * | 2021-08-27 | 2021-12-03 | 杭州当虹科技股份有限公司 | 码率控制方法及编码器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5872598A (en) * | 1995-12-26 | 1999-02-16 | C-Cube Microsystems | Scene change detection using quantization scale factor rate control |
CN1642274A (zh) * | 2004-01-15 | 2005-07-20 | 北京时代互动传媒技术有限公司 | 一种带场景变换检测的码率控制方法 |
CN101188755A (zh) * | 2007-12-14 | 2008-05-28 | 宁波中科集成电路设计中心有限公司 | 一种对实时视频信号在avs编码过程中vbr码率控制的方法 |
-
2009
- 2009-02-23 CN CN 200910300505 patent/CN101511026B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5872598A (en) * | 1995-12-26 | 1999-02-16 | C-Cube Microsystems | Scene change detection using quantization scale factor rate control |
CN1642274A (zh) * | 2004-01-15 | 2005-07-20 | 北京时代互动传媒技术有限公司 | 一种带场景变换检测的码率控制方法 |
CN101188755A (zh) * | 2007-12-14 | 2008-05-28 | 宁波中科集成电路设计中心有限公司 | 一种对实时视频信号在avs编码过程中vbr码率控制的方法 |
Non-Patent Citations (2)
Title |
---|
刘文尧,龚声蓉.一种考虑场景切换的H. 264码率控制算法.计算机应用与软件.2008,25(7),第19-20,30页. * |
徐荣杰,杨广文.一种带场景变换检测的码率控制策略.计算机工程与应用.2003,第79-80,97页. * |
Also Published As
Publication number | Publication date |
---|---|
CN101511026A (zh) | 2009-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102630013B (zh) | 基于场景切换的码率控制视频压缩方法和装置 | |
CN101547349B (zh) | 一种对视频信号的二次avs编码码率控制的方法 | |
CN101720044B (zh) | 一种基于自适应帧结构的avs编码方法 | |
CN101511026B (zh) | 一种基于场景的avs二次编码码率控制方法 | |
CN101917614B (zh) | 一种基于h.264分层b帧编码结构的码率控制方法 | |
CN101262603B (zh) | 一种自适应码率控制方法 | |
CN101287112B (zh) | 一种自适应码率控制方法 | |
CN105049850A (zh) | 基于感兴趣区域的hevc码率控制方法 | |
CN102186084B (zh) | 一种可伸缩视频编码svc的空间增强层码率控制实现方法 | |
CN101572806B (zh) | 一种基于h.264的i帧码率控制方法 | |
CN100574447C (zh) | 基于avs视频编码的快速帧间预测模式选择方法 | |
CN101188752A (zh) | 一种基于相关性的自适应码率控制方法 | |
CN104320658A (zh) | 一种hevc快速编码方法 | |
CN105227955B (zh) | 超高清低延时视频码率控制方法 | |
CN101888561B (zh) | 一种率失真优化动态调整的多视点视频传输差错控制方法 | |
CN101489138B (zh) | 基于场景的二次编码图像组划分方法 | |
CN103096048B (zh) | 一种可伸缩视频编码量化参数确定方法及装置 | |
CN105392001A (zh) | 基于梯度的自适应高性能视频编码码率控制方法 | |
CN110139101B (zh) | 一种基于λ域码率控制的帧级比特分配方法 | |
CN102420987A (zh) | 基于分层b帧结构的码率控制的自适应比特分配方法 | |
CN104038769A (zh) | 帧内编码的码率控制方法 | |
CN101883275B (zh) | 视频编码方法 | |
CN102752598A (zh) | 快速自适应码率控制方法 | |
CN102158702A (zh) | 自适应h.264码率控制方法 | |
CN108989818A (zh) | 一种图像编码参数调整方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110119 |