CN101489138A - 基于场景的二次编码图像组划分方法 - Google Patents
基于场景的二次编码图像组划分方法 Download PDFInfo
- Publication number
- CN101489138A CN101489138A CN 200910300383 CN200910300383A CN101489138A CN 101489138 A CN101489138 A CN 101489138A CN 200910300383 CN200910300383 CN 200910300383 CN 200910300383 A CN200910300383 A CN 200910300383A CN 101489138 A CN101489138 A CN 101489138A
- Authority
- CN
- China
- Prior art keywords
- frame
- scene
- img
- coding
- encoding
- 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.)
- Granted
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及一种视频信号处理技术,尤其涉及一种基于场景的二次编码图像组划分方法。本发明公开一种基于场景的二次编码GOP划分方法,解决在场景切换时产生图像质量下降的问题,提高视频编码重建图像的稳定性。其技术方案的要点是:包括以下步骤:a.对视频序列进行第一次编码,统计场景切换的位置;b.第二次编码中,根据第一次编码中场景切换位置,进行新的GOP划分,并完成该GOP的初始化;c.编码该GOP图像时,计算每帧图像的帧号;d.对该GOP中每帧图像进行优化编码。本发明的有益效果是:避免了在场景切换时图像质量下降的情况,提高视频编码重建图像的稳定性,适用于对视频信号的处理。
Description
技术领域
本发明涉及一种视频信号处理技术,尤其涉及一种基于场景的二次编码图像组划分方法。
背景技术
在现有视频编码中,通常采用固定图像组(以下简称GOP)结构进行编码。当场景发生切换或图像运动剧烈时,由于使用前一帧相同位置基本单元的MAD(Mean AbsoluteDifference,平均绝对误差)值线性预测当前基本单元的MAD值,导致当前帧MAD值以及QP(量化参数)预测不准确,并且由于编码过程中通常采用CBR(Constant Bit Rate,恒定比特率)码率控制技术对整个视频序列平均分配码率,往往使得场景切换以及运动剧烈的图像质量急剧下降,影响了视频编码重建图像的稳定性,甚至造成马赛克现象。综上,现有技术产生这些缺陷的根本原因是:未对场景切换后的GOP进行重新划分。
发明内容
本发明所要解决的技术问题是:针对现有技术的不足,提出一种基于场景的二次编码GOP划分方法,解决在场景切换时产生图像质量下降的问题,提高视频编码重建图像的稳定性。
本发明解决上述技术问题采用的技术方案是:基于场景的二次编码GOP划分方法,包括以下步骤:
a.对视频序列进行第一次编码,统计场景切换的位置;
b.第二次编码中,根据第一次编码中场景切换位置,进行新的GOP划分,并完成该GOP的初始化;
c.编码该GOP图像时,计算每帧图像的帧号;
d.对该GOP中每帧图像进行优化编码。
所述步骤b中,具体划分GOP的方法为:
设任意一帧图像对应的帧号为frame_no,I帧或P帧对应的帧号为Img_no;
b1:无B帧时GOP划分方法:
如果该场景为第一个场景或场景标志位为真,可以判断场景发生切换,开始新的GOP初始化:将场景切换帧强制编码为I帧,在第一次编码中得到了该场景的长度Ns(i),则在第二次编码中该场景编码的P帧数目为np2,s(i)=Ns(i)-1,对于非场景切换的帧按照正常的编码结构进行编码;
b2:有B帧时GOP划分方法:
当有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的计数不改变。
所述步骤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]之间。
本发明的有益效果是:避免了在场景切换时图像质量下降的情况,提高视频编码重建图像的稳定性。
具体实施方式
下面结合实施例对本发明作进一步的描述。
本发明所要解决的技术问题是:针对现有技术的不足,提出一种基于场景的二次编码GOP划分方法,解决在场景切换时产生图像质量下降的问题,提高视频编码重建图像的稳定性。
实施例:
本例中的二次编码GOP划分方法可采用以下步骤实现:
(a)初始化视频信号的初始量化参数,设定编码帧率以及相关编码参数,判断待编码视频序列的编码次数,如果为第一次编码,则执行b进行第一次编码,否则,进入步骤c进行第二次编码。
(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。
(c)在第二次编码过程中,编码结构支持插入B帧编码,开启码率控制和RDO。假设任意一帧图像对应的帧号为frame_no,I帧或P帧对应的帧号为Img_no。如果在第二次编码中无B帧插入,则进入步骤d,否则进入步骤e。
(d)当没有B帧插入时,如果该场景为第一个场景或Scene_flag(i)为真,可以判断场景发生切换,即开始新的GOP初始化:将场景切换帧强制编码为I帧,由于在第一次编码中得到了该场景的长度Ns(i),则在第二次编码中该场景编码的P帧数目为np2,s(i)=[Ns(i)-1],对于非场景切换的帧按照正常的编码结构进行编码。
(e)当有B帧插入时,假设连续插入B帧的数目为Bno,记M=Bno+1。当一帧图像编码完成时,记录该帧的frame_no并结合场景切换标志位判断场景是否发生切换,相应的方法是如果场景标志位为真,或者场景为第一个场景时,可以判断场景发生切换,即开始新的GOP初始化:将场景切换帧编码为I帧,由于在第一次编码中得到了该场景的长度Ns(i),该场景中P帧的数目计算公式为np2,s(i)=[Ns(i)-1]/M+[Ns(i)-1]%M,则该GOP中B帧的数目为nb2,s(i)=Ns(i)-np2,s(i)-1。假设该场景中已编码的B帧和P帧的帧数分别为nb_account(i)和np_account(i),这两个值在每个GOP初始化时设置为0。由于B帧编码采用双向预测模式,对当前待编码的B帧图像,需要先编码其前后两个参考帧。如果待编码的B帧图像位于场景尾部时,由于前后两个场景的相关性很小,对于当前场景尾部的B帧图像,不应让其参考下一场景的P帧图像,而将这些多余的B帧图像(其帧数间于[0,Bno]之间)强制编码为P帧,消除了固定GOP结构中B帧图像参考其下一场景的图像。由于本方法改变了编码图像的顺序及结构,在第二次编码中需要统计在第一次编码中如果插入B帧时应编码的P帧数目np1,s(i),判断的方法是,如果[Starts(i)%M]=0(该公式含义为:第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)。为了使得两次编码中编码每一个场景时Img_no的起始位置相同,应将上一GOP中得到的NIP(i-1)(表示前一GOP在第二次编码中开始编码最后一组B帧时已编码的I帧和P帧总数)和np1,s(i-1)(表示前一GOP在第一次编码中如果插入B帧时应该编码的P帧的数目)用于更新当前GOP中的初始值Img_no。相应的方法是如果NIP(i-1)>np1,s(i-1),则Img_no计数更新为Img_no-[NIP(i-1)-Np1,s(i-1)],否则Img_no的计数不改变。然后进入步骤f。
(f)在第二次编码中,在编码该场景某帧图像时,需要读取该帧的帧号frame_no。计算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,如果[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]之间。
Claims (3)
- 【权利要求1】基于场景的二次编码图像组划分方法,其特征在于:包括以下步骤:a.对视频序列进行第一次编码,统计场景切换的位置;b.第二次编码中,根据第一次编码中场景切换位置,进行新的图像组划分,并完成该图像组的初始化;c.编码该图像组图像时,计算每帧图像的帧号;d.对该图像组中每帧图像进行优化编码。
- 【权利要求2】如权利要求1所述的基于场景的二次编码图像组划分方法,其特征在于:所述步骤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的计数不改变。
- 【权利要求3】如权利要求2所述的基于场景的二次编码图像组划分方法,其特征在于:所述步骤c中,计算每帧图像的帧号的方法是:假设该场景中已编码的B帧和P帧的帧数分别为nb_account(i)和np_account(i),这两个值在该图像组初始化时设置为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]之间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910300383 CN101489138B (zh) | 2009-02-11 | 2009-02-11 | 基于场景的二次编码图像组划分方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910300383 CN101489138B (zh) | 2009-02-11 | 2009-02-11 | 基于场景的二次编码图像组划分方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101489138A true CN101489138A (zh) | 2009-07-22 |
CN101489138B CN101489138B (zh) | 2011-06-22 |
Family
ID=40891778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910300383 Expired - Fee Related CN101489138B (zh) | 2009-02-11 | 2009-02-11 | 基于场景的二次编码图像组划分方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101489138B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103491381A (zh) * | 2013-08-22 | 2014-01-01 | 合一网络技术(北京)有限公司 | 一种动态规划优化视频编码关键帧位置方法 |
CN103517080A (zh) * | 2012-06-21 | 2014-01-15 | 北京数码视讯科技股份有限公司 | 实时视频流编码器和实时视频流编码方法 |
CN104509118A (zh) * | 2012-08-13 | 2015-04-08 | 迪士尼企业公司 | 对数字媒体内容的基于内容的分割 |
CN105898373A (zh) * | 2015-12-17 | 2016-08-24 | 乐视云计算有限公司 | 视频切片方法和装置 |
CN105979267A (zh) * | 2015-12-03 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种视频压缩、播放方法以及装置 |
CN106034237A (zh) * | 2015-03-10 | 2016-10-19 | 杭州海康威视数字技术股份有限公司 | 一种基于编码切换的混合编码方法和系统 |
CN112019850A (zh) * | 2020-08-27 | 2020-12-01 | 广州市百果园信息技术有限公司 | 基于场景切换的图像组划分方法、视频编码方法及装置 |
-
2009
- 2009-02-11 CN CN 200910300383 patent/CN101489138B/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103517080A (zh) * | 2012-06-21 | 2014-01-15 | 北京数码视讯科技股份有限公司 | 实时视频流编码器和实时视频流编码方法 |
CN104509118A (zh) * | 2012-08-13 | 2015-04-08 | 迪士尼企业公司 | 对数字媒体内容的基于内容的分割 |
CN104509118B (zh) * | 2012-08-13 | 2017-11-17 | 迪士尼企业公司 | 对数字媒体内容的基于内容的分割 |
CN103491381A (zh) * | 2013-08-22 | 2014-01-01 | 合一网络技术(北京)有限公司 | 一种动态规划优化视频编码关键帧位置方法 |
CN103491381B (zh) * | 2013-08-22 | 2016-03-02 | 合一网络技术(北京)有限公司 | 一种动态规划优化视频编码关键帧位置方法 |
CN106034237A (zh) * | 2015-03-10 | 2016-10-19 | 杭州海康威视数字技术股份有限公司 | 一种基于编码切换的混合编码方法和系统 |
CN106034237B (zh) * | 2015-03-10 | 2020-07-03 | 杭州海康威视数字技术股份有限公司 | 一种基于编码切换的混合编码方法和系统 |
US10863185B2 (en) | 2015-03-10 | 2020-12-08 | Hangzhou Hikvision Digital Technology Co., Ltd. | Systems and methods for hybrid video encoding |
CN105979267A (zh) * | 2015-12-03 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种视频压缩、播放方法以及装置 |
WO2017092340A1 (zh) * | 2015-12-03 | 2017-06-08 | 乐视控股(北京)有限公司 | 一种视频压缩、播放方法以及装置 |
CN105898373A (zh) * | 2015-12-17 | 2016-08-24 | 乐视云计算有限公司 | 视频切片方法和装置 |
CN112019850A (zh) * | 2020-08-27 | 2020-12-01 | 广州市百果园信息技术有限公司 | 基于场景切换的图像组划分方法、视频编码方法及装置 |
WO2022042156A1 (zh) * | 2020-08-27 | 2022-03-03 | 百果园技术(新加坡)有限公司 | 基于场景切换的图像组划分方法及装置、视频编码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101489138B (zh) | 2011-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101489138B (zh) | 基于场景的二次编码图像组划分方法 | |
CN101232619B (zh) | 嵌入帧内编码块的视频编码方法 | |
US8259794B2 (en) | Method and system for encoding order and frame type selection optimization | |
CN102630013B (zh) | 基于场景切换的码率控制视频压缩方法和装置 | |
CN101404774B (zh) | 运动搜索中宏块划分模式的选择方法 | |
CN100499788C (zh) | 视频编码设备 | |
CN101159871B (zh) | 宏块组级视频码率控制方法 | |
CN101262603B (zh) | 一种自适应码率控制方法 | |
CN108347605B (zh) | 3d视频深度图像四叉树编码结构划分的快速决策方法 | |
WO2008076148A2 (en) | Distortion estimation | |
CN112188208B (zh) | 一种宏块级码率控制方法及相关装置 | |
CN102934443A (zh) | 用于对视频进行编码和解码的方法和设备 | |
CN103634601B (zh) | 基于结构相似度的高效视频编码感知码率控制优化方法 | |
CN101621685A (zh) | 编码装置和编码方法 | |
CN103188496A (zh) | 基于运动矢量分布预测的快速运动估计视频编码方法 | |
CN101188752A (zh) | 一种基于相关性的自适应码率控制方法 | |
CN101562750B (zh) | 视频编码快速模式选择装置及方法 | |
CN108989818A (zh) | 一种图像编码参数调整方法及装置 | |
CN101917618B (zh) | 多视点视频编码分层b帧预测结构的计算复杂度控制方法 | |
CN102148973A (zh) | 基于拉格朗日乘数因子的3层码率控制方法 | |
CN103384327A (zh) | 基于自适应阈值的avs快速模式选择算法 | |
CN101511026B (zh) | 一种基于场景的avs二次编码码率控制方法 | |
CN101888561B (zh) | 一种率失真优化动态调整的多视点视频传输差错控制方法 | |
CN102196253B (zh) | 一种帧类型自适应选择的视频编码方法及装置 | |
CN110139101B (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 |
Granted publication date: 20110622 Termination date: 20220211 |
|
CF01 | Termination of patent right due to non-payment of annual fee |