CN101534442A - 视频编码系统及方法 - Google Patents
视频编码系统及方法 Download PDFInfo
- Publication number
- CN101534442A CN101534442A CN 200910038582 CN200910038582A CN101534442A CN 101534442 A CN101534442 A CN 101534442A CN 200910038582 CN200910038582 CN 200910038582 CN 200910038582 A CN200910038582 A CN 200910038582A CN 101534442 A CN101534442 A CN 101534442A
- Authority
- CN
- China
- Prior art keywords
- frame
- scene
- reference frame
- lists
- switch
- 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
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供了一种视频编码系统及方法。所述方法包括:创建场景切换参考帧列表,将场景切换帧的前一场景中的视频帧加入到所述场景切换参考帧列表中,根据所述场景切换参考帧列表对场景切换帧进行编码。采用本发明提供的视频编码系统及方法,能有效提高编码效率。
Description
技术领域
本发明涉及视频图像编码技术领域,更具体地说,涉及一种视频编码系统及方法。
背景技术
目前主流的视频编码标准有MPEG4、H.264等。在这些视频编码技术中,编码图像一般分为三种类型:内帧(I帧)、帧间帧(P帧)和双向帧(B帧)。其中,编码内帧是利用空间相关性,采用与JPEG类似的方式对静止的图像进行预测编码,编码帧间帧是利用时间相关性,使用前面的帧作为参考帧进行预测编码,而编码双向帧是同时利用前面的帧和后面的帧作为参考帧进行预测编码。预测编码之后将产生残差数据,对残差数据进行DCT变换和量化,输出编码码流即完成视频编码过程。
在对视频图像进行压缩时,每一帧被分成若干个宏块,每一个宏块包含多个亮度块和多个色度块。在对一个宏块进行预测编码时,需从参考帧列表中选择合适的参考帧,并在该参考帧中搜索与之最匹配的宏块(即预测编码所产生的残差数据的绝对误差和最小)。两个宏块的绝对误差和描述了两个宏块之间的相似性,绝对误差和越小表示两个宏块越相似。预测编码即搜索最匹配宏块的过程,根据参考帧的不同,可分为帧内预测和帧间预测,帧间预测也被称为运动估计。目前的视频编码标准可支持多参考帧预测编码,使运动搜索范围从原来的一个参考帧扩展为多个解码后的参考帧,这样通常能找到更精确的匹配,从而有助于获得更高的编码效率。
视频序列中的一个场景可以定义为一个连续的事件或者一组连续的动作,而视频序列通常包含多个独立的场景。在两个场景之间发生跃变的视频帧称为场景切换帧(即场景刚切换后的第一个视频帧)。通过对视频序列中相邻两帧图像相似度进行有效检测,可准确地判断场景切换帧,从而将视频分割成一系列连续的图像组。通常采用基于图像直方图的图像相似度检测来检测场景切换帧,即根据两帧图像的直方图特性,基于均值和方差作为检测尺度来进行检测。图像直方图是图像处理中一种十分重要的图像分析工具,它描述了一副图像的灰度级内容,任何一副图像的直方图都包含丰富的信息。从数学上来说,图像直方图是图像各灰度值统计特性与图像灰度值的函数,它统计一副图像中各个灰度级出现的次数或概率;从图形上来说,它是一个二维图,横坐标表示图像中各个像素点的灰度级,纵坐标为各个灰度级上图像各个像素点出现的次数或概率。通过比较两幅图像的图像直方图可以衡量两幅图像整体的相似度,从而检测到场景切换帧。
在大量的视频片段中,通常存在这样的情况:第一分钟视频内容在场景1中进行,第二分钟视频内容切换到场景2,下一分钟又切换回场景1,如此循环往复。一般来说,当前帧与参考帧在时间轴上相去甚远,匹配的可能性越小,因此,在预测编码时,通常会只选取当前帧的前几帧作为参考帧。对于上述情况的视频片段,场景刚切换时往往在当前帧的前几帧无法找到匹配的参考帧。在检测到场景切换帧之后通常会将场景切换帧编码为I帧(即关键帧)。然而,I帧本身所涉及的数据量很大,根据统计,每个I帧的数据量大约是P帧的3~4倍,B帧的4~6倍,且由于I帧只是利用空间相关性,其预测编码效率不如P帧和B帧高。
发明内容
基于此,有必要提供一种能提高编码效率的视频编码系统。
此外,还有必要提供一种能提高编码效率的视频编码方法。
所述视频编码系统包括:参考帧管理单元,用于创建场景切换参考帧列表,将场景切换帧的前一场景中的视频帧加入场景切换参考帧列表中;编码单元,与参考帧管理单元相连,根据场景切换参考帧列表对场景切换帧进行编码。
该参考帧管理单元可包括:列表创建模块,用于创建场景切换帧参考列表、前向参考帧列表和后向参考帧列表;检测模块,与列表创建模块相连,对当前帧进行场景切换检测,当检测到场景切换帧时,通知列表更新模块对场景切换参考帧列表进行更新;列表更新模块,与检测模块相连,接收检测模块的更新通知,将场景切换帧的前一场景中的最后一个编码后的可用视频帧加入场景切换参考帧列表中。
该检测模块可对场景切换参考帧列表中的参考帧进行检测,当检测到场景切换参考帧列表中存在与当前的场景切换帧匹配的参考帧时,通知编码单元进行编码;该编码单元接收检测模块的编码通知,选择场景切换参考帧列表编码场景切换帧、或选择场景切换参考帧列表和后向参考帧列表编码场景切换帧。
另外,在检测模块检测到场景切换参考帧列表中不存在与当前的场景切换帧匹配的参考帧时,编码单元选择前向参考帧列表编码场景切换帧、或选择前向参考帧列表和后向参考帧列表编码场景切换帧。
所述视频编码方法包括:创建场景切换参考帧列表,将场景切换帧的前一场景中的视频帧加入到场景切换参考帧列表中;根据所述场景切换参考帧列表对场景切换帧进行编码。
该方法还可包括:创建前向参考帧列表,将编码后的视频帧加入前向参考帧列表中。
根据场景切换参考帧列表对场景切换帧进行编码的步骤可包括:检测场景切换参考帧列表中是否存在与当前的场景切换帧匹配的参考帧,若是,则选择场景切换参考帧列表编码所述场景切换帧,否则,选择前向参考帧列表编码场景切换帧。
该方法还可包括:创建前向参考帧列表和后向参考帧列表,将编码后的视频帧加入前向参考帧列表和后向参考帧列表中。
根据所述场景切换参考帧列表对场景切换帧进行编码的步骤可包括:检测场景切换参考帧列表中是否存在与当前的场景切换帧匹配的参考帧,若是,则选择场景切换参考帧列表和后向参考帧列表编码场景切换帧,否则,选择前向参考帧列表和后向参考帧列表编码场景切换帧。
另外,该方法还可包括:对当前帧进行场景切换检测,当检测到场景切换帧时,将场景切换帧的前一场景中的最后一个编码后的可用视频帧加入场景切换参考帧列表中。
上述视频编码系统及方法通过创建场景切换参考帧列表,并通过从参考帧列表中检测与当前的场景切换帧匹配的参考帧,来选择合适的参考帧列表对当前的场景切换帧进行编码,能有效提高编码效率。
附图说明
图1是一个实施例中视频编码系统的结构示意图;
图2是图1中参考帧管理单元的结构示意图;
图3是一个实施例中视频编码方法的流程图;
图4是一个实施例中将当前帧编码为帧间帧的视频编码方法的流程图;
图5是一个实施例中将当前帧编码为双向帧的视频编码方法的流程图;
图6是一个实施例中编码方式不包含双向帧的视频编码方法的流程图;
图7是另一个实施例中编码方式包含双向帧的视频编码方法的流程图;
图8是一个实施例中的视频序列编码场景分割示意图;
图9是另一个实施例中视频序列编码场景分割示意图。
具体实施方式
图1示出了一个实施例中的视频编码系统,该系统包括参考帧管理单元100和编码单元200。其中:
参考帧管理单元100,用于创建场景切换参考帧列表,将场景切换帧的前一个场景中的视频帧加入场景切换参考帧列表中。
编码单元200,与参考帧管理单元相连,根据场景切换参考帧列表对场景切换帧进行编码。
图2示出了图1中的参考帧管理单元100,该参考帧管理单元100包括列表创建模块101、检测模块102和列表更新模块103。其中:
列表创建模块101,用于创建场景切换参考帧列表、前向参考帧列表和后向参考帧列表。在一个实施例方式中,各参考帧列表中可保存视频帧的索引号,根据索引号即可查找到该索引号对应的视频帧。其中,在编码当前帧为帧间帧时,可从前向参考帧列表中选择参考帧编码当前帧为帧间帧;而在编码当前帧为双向帧时,可从前向参考帧列表和后向参考帧列表中分别选择前后向参考帧对当前帧进行双向编码。
检测模块102,与列表创建模块101相连,对当前帧进行场景切换检测,当检测到场景切换帧时,通知列表更新模块103对场景切换参考帧列表进行更新。在一个实施方式中,可采用基于图像直方图的图像相似度检测来对当前帧进行场景切换检测。
列表更新模块103,与检测模块102相连,接收检测模块102的更新通知,将场景切换帧的前一场景中的视频帧加入场景切换参考帧列表中。在一个实施方式中,列表更新模块103可将场景切换帧的前一场景中的最后一个编码后的可用视频帧加入到场景切换参考帧列表中。
当检测到当前帧为场景切换帧时,检测模块102还可对场景切换参考帧列表中的参考帧进行检测,检测是否存在与当前的场景切换帧匹配的参考帧。所谓与当前的场景切换帧匹配的参考帧,是指该参考帧与当前的场景切换帧属于同一场景。在一个实施方式中,可通过基于图像直方图的图像相似度进行检测。当检测模块102检测到场景切换参考帧列表中存在与当前的场景切换帧属于同一场景的参考帧时,则通知编码单元200进行编码。
编码单元200接收检测模块102的编码通知,根据不同的编码方式对当前的场景切换帧进行编码。在一个实施方式中,编码方式不包含双向帧(即不会将视频帧编码为双向帧),则编码单元200可选择场景切换参考帧列表编码当前帧为帧间帧。在另一个实施方式中,编码方式包含双向帧(即可将视频帧编码为双向帧),则编码单元200还可选择场景切换参考帧列表和后向参考帧列表将当前帧编码为双向帧。
另外,当检测模块102检测到当前帧为非场景切换帧或虽为场景切换帧但场景切换参考帧列表中并不存在与当前的场景切换帧匹配的参考帧时,则也通知编码单元200对当前帧进行编码。在一个实施方式中,编码方式不包含双向帧,则编码单元200可选择前向参考帧列表编码当前帧为帧间帧。在另一个实施方式中,编码方式包含双向帧,则编码单元200还可选择前向参考帧列表和后向参考帧列表将当前帧编码为双向帧。
图3示出了一个实施例中的视频编码方法,具体包括以下步骤:
在步骤S301中,创建场景切换参考帧列表,将场景切换帧的前一场景中的视频帧加入场景切换参考帧列表中。
在步骤S302中,根据场景切换参考帧列表对场景切换帧进行编码。
图4示出了一个实施例中将当前帧编码为帧间帧的视频编码方法,具体过程如下:
在执行下述步骤之前,列表创建模块101还可创建前向参考帧列表,列表更新模块103可将编码后的视频帧加入前向参考帧列表中,编码单元200可从前向参考帧列表中选择参考帧编码当前帧为帧间帧。
在步骤S401中,检测当前帧是否为场景切换帧,若是,则执行步骤S402,否则,执行步骤S403。在一个实施例中,检测模块102可采用基于图像直方图的图像相似度检测来对当前帧进行场景切换检测。
在步骤S402中,检测场景切换参考帧列表中是否存在场景匹配帧,若是,则执行步骤S404,否则,执行步骤S405。所谓场景匹配帧,是指场景切换参考帧列表中与当前的场景切换帧属于同一场景的参考帧。
在步骤S403中,选择前向参考帧列表编码当前帧。在一个实施例中,检测模块102检测到当前帧为非场景切换帧时,则编码单元200从前向参考帧列表中选择参考帧来编码当前帧为帧间帧。
在步骤S404中,选择场景切换参考帧列表编码当前帧。在一个实施例中,当检测模块102检测到场景切换参考帧列表中存在场景匹配帧时,则编码单元200将场景切换参考帧列表作为编码当前帧的参考帧列表,从其中选择与当前的场景切换帧匹配的参考帧将当前帧编码为帧间帧。
在步骤S405中,选择前向参考帧列表编码当前帧。在一个实施例中,当检测模块102检测到当前帧为场景切换帧但场景切换参考帧列表中不存在与当前的场景切换帧匹配的参考帧时,则编码单元200选择前向参考帧编码对当前帧进行编码,即从前向参考帧列表中选择参考帧编码当前帧为帧间帧。
在步骤S406中,将当前帧的前一场景中的视频帧更新到场景切换参考帧列表中。在一个实施例中,当检测模块102检测到当前帧为场景切换帧时,列表更新模块103则将当前帧的前一个场景中的最后一个编码后的视频帧更新到场景切换参考帧列表中。
在步骤S407中,将编码后的当前帧加入前向参考帧列表中。
应当说明的是,在从前向参考帧列表或场景切换参考帧列表中选择参考帧来编码当前帧为帧间帧时,可在更新前向参考帧列表或场景切换参考帧列表之前,对加入到前向参考帧列表或场景切换参考帧列表中的视频帧进行解码,则编码当前帧为帧间帧时,以所选视频帧解码后的重建图像作为参考图像对当前帧进行编码。也可先更新前向参考帧列表或场景切换参考帧列表,从其中选择参考帧后,对参考帧进行解码,并以参考帧解码后的重建图像作为参考图像对当前帧进行编码。
图5示出了一个实例中编码当前帧为双向帧的视频编码方法,具体过程如下:
在执行下述步骤之前,列表创建模块101还可创建前向参考帧列表和后向参考帧列表,列表更新模块103可将编码后的视频帧加入前向参考帧列表和后向参考帧列表中,则编码单元200可从前向参考帧列表和后向参考帧列表中分别选择前后向参考帧编码当前帧为双向帧。
在步骤S501中,检测当前帧是否为场景切换帧,若是,则执行步骤S502,否则,执行步骤S503。在一个实施例中,检测模块102可采用基于图像直方图的图像相似度检测来对当前帧进行场景切换检测。
在步骤S502中,检测场景切换参考帧列表中是否存在场景匹配帧,若是,则执行步骤S504,否则,执行步骤S503。所谓场景匹配帧,是指场景切换参考帧列表中与当前的场景切换帧属于同一场景的参考帧。
在步骤S503中,选择前向参考帧列表及后向参考帧列表编码当前帧。在一个实施例中,检测模块102检测到当前帧为非场景切换帧或虽为场景切换帧但场景切换参考帧列表中并不存在场景匹配帧,则编码单元200从前向参考帧列表和后向参考帧列表中分别选择前后向参考帧编码当前帧为双向帧。
在步骤S504中,选择场景切换参考帧列表及后向参考帧列表编码当前帧。在一个实施例中,检测模块102检测到当前帧为场景切换帧且场景切换参考帧列表中存在场景匹配帧,则编码单元200从场景切换参考帧列表和后向参考帧列表中分别选择前后向参考帧编码当前帧为双向帧。
对于编码后的双向帧,通常不加入前向参考帧列表和后向参考帧列表中,因此,在编码当前帧为双向帧后,前向参考帧列表和后向参考帧列表可不作更新。
应当说明的是,在从前向参考帧列表及后向参考帧列表、或从场景切换参考帧列表及后向参考帧列表中选择前后向参考帧来编码当前帧为双向帧时,可在更新前向参考帧列表、后向参考帧列表及场景切换参考帧列表之前,对加入到各参考帧列表中的视频帧进行解码,则编码当前帧为双向帧时,以所选视频帧解码后的重建图像作为参考图像对当前帧进行编码。也可先更新各参考帧列表,从其中选择参考帧后,将参考帧进行解码,并以参考帧解码后的重建图像作为参考图像对当前帧进行编码。
图6示出了一个实施例中编码方式不包含双向帧的视频编码方法,具体过程如下:
在步骤S601中,读取视频帧。
在步骤S602中,判断当前帧是否编码为内帧,若是,则执行步骤S603,否则,执行步骤S604。
在步骤S603中,编码当前帧为内帧。可采用传统的内帧编码方法编码内帧,在此不再赘述。
在步骤S604中,编码当前帧为帧间帧。编码当前帧为帧间帧的过程见图4所示流程,在此也不再赘述。
在步骤S605中,将编码后的当前帧加入前向参考帧列表中。在一个实施例中,检测到当前帧应编码为内帧后,可将编码后的当前帧加入前向参考帧列表中,对前向参考帧列表进行更新。
在步骤S606中,判断视频帧是否读取完,若是,则结束,否则,返回步骤S601。
图7示出了一个实施例中编码方式包含双向帧的视频编码方法,具体过程如下:
在步骤S701中,读取视频帧。
在步骤S702中,判断当前帧是否编码为双向帧,若是,则执行步骤S703,否则,执行步骤S704。
在步骤S703中,编码当前帧为双向帧。编码当前帧为双向帧的过程见图5所示流程,在此不再赘述。
在步骤S704中,判断当前帧是否编码为内帧,若是,则执行步骤S705,否则,执行步骤S706。
在步骤S705中,编码当前帧为内帧。
在步骤S706中,编码当前帧为帧间帧。编码当前帧为帧间帧的过程见图4所示流程,在此不再赘述。
在步骤S707中,将编码后的当前帧加入前向参考帧列表中。在一个实施例中,检测到当前帧应编码为内帧,则编码后的当前帧可加入前向参考帧列表中,并对前向参考帧列表进行更新。
在步骤S708中,判断视频帧是否读取完,若是,则结束,否则,返回步骤S701
下面将以具体实例对上述两种编码方式的视频编码方法进行详细阐述。
在一个实施方式中,编码方式不包含双向帧。如图8所示,各虚线分隔的部分属于一个场景序列集合(如图8中的场景1、场景2、场景3......),其中,虚线帧表示该场景内的第一帧(如第0帧),阴影帧表示该场景内的最后一帧(如第2帧)。该实施例中,编码方式为IPPPPPPPPPPPPIPPPPPPPPPPPP。应当说明的是,该编码方式仅为举例说明不包含双向帧的编码方式下的视频编码过程,其中P帧的个数并不受限定。
列表创建模块101创建前向参考帧列表(List0)和场景切换参考帧列表(ListS),其中,List0保存3个前向参考帧,ListS保存2个场景切换帧。应当说明的是,列表创建模块101可根据需要动态设定List0和ListS中的参考帧数目,List0和ListS中保存的参考帧数目并不受限定。创建List0和ListS后,可将List0和ListS初始化为空。
(1)首先编码第0帧,第0帧按照编码方式需编码为I帧。第0帧编码后作为参考帧加入List0中,由于此时未检测到场景切换帧,故不对ListS更新。此时,List0和ListS为表a-1所示。
表a-1
ListX[0] | ListX[1] | ListX[2] | |
List0 | 第0帧 | 空 | 空 |
ListS | 空 | 空 | 空 |
(2)编码第1帧为P帧。经检测,第1帧为非场景切换帧,则选择List0对对第1帧进行编码,编码后的第1帧加入List0中,原List0[0]对应的第0帧移动到List0[1]。由于此时未检测到场景切换帧,故不对ListS进行更新。此时List0和ListS为表a-2所示。
表a-2
ListX[0] | ListX[1] | ListX[2] | |
List0 | 第1帧 | 第0帧 | 空 |
ListS | 空 | 空 | 空 |
(3)编码第2帧为P帧。第2帧的特性与第1帧的相同,编码过程可参照第1帧。此时,List0和ListS更新为表a-3所示。
表a-3
ListX[0] | ListX[1] | ListX[2] | |
List0 | 第2帧 | 第1帧 | 第0帧 |
ListS | 空 | 空 | 空 |
(4)编码第3帧为P帧。经检测,第3帧为场景切换帧,首先选择ListS编码第3帧,而此时ListS为空,其中并没有与第3帧匹配的参考帧,因此选择List0对第3帧进行编码。编码后的第3帧加入List0,而第3帧的前一场景的最后一帧(即第2帧)加入ListS。此时,List0和ListS为表a-4所示。
表a-4
ListX[0] | ListX[1] | ListX[2] | |
List0 | 第3帧 | 第2帧 | 第1帧 |
ListS | 第2帧 | 空 | 空 |
(5)编码第4帧为P帧。第4帧与第2帧类似,其编码过程可参照第2帧。
此时,List0和ListS为表a-5所示。
表a-5
ListX[0] | ListX[1] | ListX[2] | |
List0 | 第4帧 | 第3帧 | 第2帧 |
ListS | 第2帧 | 空 | 空 |
(6)编码第5帧为P帧。经检测,第5帧为场景切换帧,首先选择ListS编码第5帧,经检测,ListS中的第2帧与第5帧分别属于场景1和场景3,可知ListS中不存在与第5帧匹配的参考帧,因此选择List0编码第5帧。编码后的第5帧加入List0,而第5帧的前一场景的最后一帧(即第4帧)加入ListS。此时,List0和ListS为表a-6所示。
表a-6
ListX[0] | ListX[1] | ListX[2] | |
List0 | 第5帧 | 第4帧 | 第3帧 |
ListS | 第4帧 | 第2帧 | 空 |
(7)编码第6帧为P帧。第6帧与第4帧类似,其编码过程可参照第4帧。此时,List0和ListS为表a-7所示。
表a-7
ListX[0] | ListX[1] | ListX[2] | |
List0 | 第6帧 | 第5帧 | 第4帧 |
ListS | 第4帧 | 第2帧 | 空 |
(8)编码第7帧为P帧。第7帧与第6帧类似,其编码过程可参照第6帧。此时,List0和ListS为表a-8所示。
表a-8
ListX[0] | ListX[1] | ListX[2] | |
List0 | 第7帧 | 第6帧 | 第5帧 |
ListS | 第4帧 | 第2帧 | 空 |
(9)编码第8帧为P帧。经检测,第8帧为场景切换帧,首先选择ListS编码第8帧,经检测,ListS中的第4帧与第8帧属于同一场景,则选择第4帧作为编码第8帧时的参考帧将第8帧编码为P帧。编码后的第8帧加入List0中,而第8帧的前一场景的最后一帧(即第7帧)加入ListS中。此时,List0和ListS为表a-9所示。
表a-9
ListX[0] | ListX[1] | ListX[2] | |
List0 | 第8帧 | 第7帧 | 第6帧 |
ListS | 第7帧 | 第4帧 | 空 |
上述9个步骤已经覆盖了该编码方式下的所有情况,之后的编码过程可参照上述9个步骤。编码时,针对当前帧所选择的参考帧列表和序号都已写入码流中,对应解码时只需根据解码相应的码字即可找到对应的参考帧列表和序号。
在另一个实施方式中,编码方式包含双向帧。如图9所示,各虚线分隔的部分属于一个场景序列集合(如图9中的场景1、场景2、场景3......),其中,虚线帧表示该场景内的第一帧(如第0帧),阴影帧表示该场景内的最后一帧(如第2帧)。该实施例中,编码方式为IPBBPBBPBBPBBIPBBPBBPBBPBB。应当说明的是,该编码方式仅为举例说明包含双向帧的编码方式下的视频编码过程,其中P帧和B帧的个数并不受限定。
列表创建模块101创建前向参考帧列表(List0)、后向参考帧列表(List1)和场景切换参考帧列表(ListS),其中,List0保存2个前向参考帧,List1保存1个后向参考帧,ListS保存2个场景切换帧。应当说明的是,列表创建模块101可根据需要动态设定各参考帧列表中的参考帧数目,List0、List1和ListS中保存的参考帧数目并不受限定。创建List0、List1和ListS后,可将List0、List1和ListS初始化为空。
(1)首先编码第0帧,第0帧按照编码方式需编码为I帧。编码后的第0帧作为参考帧加入List0中,由于此时未检测到场景切换帧,故不对ListS更新。此时,List0、List1和ListS为表b-1所示。
表b-1
ListX[0] | ListX[1] | |
List0 | 第0帧 | 空 |
List1 | 空 | 空 |
ListS | 空 | 空 |
(2)编码第3帧(此处序号为显示顺序,而编码时按照编码顺序进行编码)为P帧。经检测,第3帧为场景切换帧,首先选择ListS编码第3帧,由于此时ListS为空,检测不到与第3帧匹配的参考帧,则选择List0编码第3帧。编码后的第3帧加入List0和List1中,而将第3帧的前一场景中最后一个可用视频帧(由于通常B帧不作为参考帧使用,这里的可用视频帧为第0帧)加入ListS。此时,List0、List1和ListS为表b-2所示。
表b-2
ListX[0] | ListX[1] | |
List0 | 第3帧 | 第0帧 |
List1 | 第3帧 | 空 |
ListS | 第0帧 | 空 |
(3)编码第1帧为B帧。经检测,第1帧为非场景切换帧,则选择List0和List1对第1帧进行双向编码。由于双向帧一般不作为参考帧,因此编码后的第1帧将不加入前向参考帧列表和后向参考帧列表中。此时,List0、List1和ListS都不更新。
(4)编码第2帧为B帧。第2帧与第1帧类似,其编码过程可参照第1帧。此时,List0、List1和ListS也不更新。
(5)编码第6帧为P帧。第6帧与已编码的前向最大序号第3帧相比检测到场景切换,因此第6帧为场景切换帧,选择ListS编码第6帧,而检测到ListS中的第0帧与第6帧并不属于同一场景,即ListS中不存在与第6帧匹配的参考帧,则选择List0编码第6帧。编码后的第6帧为P帧,可作为参考帧加入到List0和List1中,而将第6帧的前一场景中的最后一个编码后的可用视频帧(第3帧)加入ListS中。此时,List0、List1和ListS如表b-3所示。
表b-3
ListX[0] | ListX[1] | |
List0 | 第6帧 | 第3帧 |
List1 | 第6帧 | 空 |
ListS | 第3帧 | 第0帧 |
(6)编码第4帧为B帧。第4帧与第1帧类似,其编码过程可参照第1帧。此时,List0、List1和ListS都不更新。
(7)编码第5帧为B帧。经检测,第5帧与第3帧相比为场景切换帧,首先选择ListS编码第5帧,而在ListS中未检测到与第5帧属于同一场景的参考帧,则选择List0和List1对第5帧进行双向编码。由于双向帧一般不作为参考帧,因此编码后的第5帧将不加入前向参考帧列表和后向参考帧列表中。此时,List0、List1和ListS都不更新。
(8)编码第9帧为P帧。经检测,第9帧与第6帧相比为场景切换帧,首先选择ListS编码第9帧,检测到ListS中的第3帧与第9帧位于同一场景中,则以ListS编码第9帧,具体的是以ListS中的第3帧为参考帧编码第9帧。编码后的第9帧加入List0和List1中,而将第9帧的前一场景的最后一个可用视频帧(即第6帧)加入ListS。此时,List0、List1和ListS为表b-4所示。
表b-4
ListX[0] | ListX[1] | |
List0 | 第9帧 | 第6帧 |
List1 | 第9帧 | 空 |
ListS | 第6帧 | 第3帧 |
(9)编码第7帧为B帧。第7帧与第1帧类似,其编码过程可参照第1帧。此时,List0、List1和ListS都不更新。
(10)编码第8帧为B帧。经检测,第8帧与第6帧相比为场景切换帧,首先选择ListS编码第8帧,可检测到ListS中第3帧与第8帧位于同一场景,则选择ListS中的第3帧作为前向参考帧,而List1中的第9帧作为后向参考帧对第8帧进行双向编码。由于双向帧一般不作为参考帧,因此编码后的第8帧将不加入前向参考帧列表和后向参考帧列表中。此时,List0、List1和ListS都不更新。
上述10个步骤已经覆盖了该编码方式下的所有情况,之后的编码过程可参照上述10个步骤。与前一编码方式类似,编码时,针对当前帧所选择的参考帧列表和序号都已写入码流中,对应解码时只需根据解码相应的码字即可找到对应的参考帧列表和序号。
上述视频编码系统及方法通过检测场景切换参考帧列表中的参考帧,来选择与当前的场景切换帧相应的参考帧列表对当前的场景切换帧进行编码,相对现有技术直接将当前的场景切换帧编码为内帧,能有效提供编码效率。从相应的参考帧列表中选择参考帧后,对当前的场景切换帧进行编码及量化的过程可采用现有的通用视频编码框架实现,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1、一种视频编码系统,其特征在于,包括:
参考帧管理单元,用于创建场景切换参考帧列表,将场景切换帧的前一场景中的视频帧加入所述场景切换参考帧列表中;
编码单元,与所述参考帧管理单元相连,根据所述场景切换参考帧列表对场景切换帧进行编码。
2、根据权利要求1所述的视频编码系统,其特征在于,所述参考帧管理单元包括:
列表创建模块,用于创建场景切换帧参考列表、前向参考帧列表和后向参考帧列表;
检测模块,与所述列表创建模块相连,对当前帧进行场景切换检测,当检测到场景切换帧时,通知列表更新模块对场景切换参考帧列表进行更新;
列表更新模块,与所述检测模块相连,接收所述检测模块的更新通知,将场景切换帧的前一场景中的最后一个编码后的可用视频帧加入所述场景切换参考帧列表中。
3、根据权利要求2所述的视频编码系统,其特征在于,所述检测模块对所述场景切换参考帧列表中的参考帧进行检测,当检测到场景切换参考帧列表中存在与当前的场景切换帧匹配的参考帧时,通知所述编码单元进行编码;
所述编码单元接收所述检测模块的编码通知,选择场景切换参考帧列表编码所述场景切换帧、或选择场景切换参考帧列表和后向参考帧列表编码所述场景切换帧。
4、根据权利要求2所述的视频编码系统,其特征在于,在所述检测模块检测到场景切换参考帧列表中不存在与当前的场景切换帧匹配的参考帧时,所述编码单元选择前向参考帧列表编码所述场景切换帧、或选择前向参考帧列表和后向参考帧列表编码所述场景切换帧。
5、一种视频编码方法,其特征在于,所述方法包括:
创建场景切换参考帧列表,将场景切换帧的前一场景中的视频帧加入到所述场景切换参考帧列表中;
根据所述场景切换参考帧列表对场景切换帧进行编码。
6、根据权利要求5所述的视频编码方法,其特征在于,所述方法还包括:
创建前向参考帧列表,将编码后的视频帧加入所述前向参考帧列表中。
7、根据权利要求6所述的视频编码方法,其特征在于,根据所述场景切换参考帧列表对场景切换帧进行编码的步骤包括:
检测所述场景切换参考帧列表中是否存在与当前的场景切换帧匹配的参考帧,若是,则选择所述场景切换参考帧列表编码所述场景切换帧,否则,
选择所述前向参考帧列表编码所述场景切换帧。
8、根据权利要求5所述的视频编码方法,其特征在于,所述方法还包括:
创建前向参考帧列表和后向参考帧列表,将编码后的视频帧加入所述前向参考帧列表和后向参考帧列表中。
9、根据权利要求8所述的视频编码方法,其特征在于,根据所述场景切换参考帧列表对场景切换帧进行编码的步骤包括:
检测所述场景切换参考帧列表中是否存在与当前的场景切换帧匹配的参考帧,若是,则选择所述场景切换参考帧列表和后向参考帧列表编码所述场景切换帧,否则,
选择所述前向参考帧列表和后向参考帧列表编码所述场景切换帧。
10、根据权利要求5所述的视频编码方法,其特征在于,所述方法还包括:
对当前帧进行场景切换检测,当检测到场景切换帧时,将所述场景切换帧的前一场景中的最后一个编码后的可用视频帧加入所述场景切换参考帧列表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910038582 CN101534442B (zh) | 2009-04-13 | 2009-04-13 | 视频编码系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910038582 CN101534442B (zh) | 2009-04-13 | 2009-04-13 | 视频编码系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101534442A true CN101534442A (zh) | 2009-09-16 |
CN101534442B CN101534442B (zh) | 2011-01-12 |
Family
ID=41104790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910038582 Active CN101534442B (zh) | 2009-04-13 | 2009-04-13 | 视频编码系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101534442B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102075756A (zh) * | 2011-01-27 | 2011-05-25 | 北京视博云科技有限公司 | 视频多帧预测编解码方法和装置 |
CN105100799A (zh) * | 2015-04-25 | 2015-11-25 | 芯原微电子(北京)有限公司 | 一种减少hevc编码器中帧内编码时延的方法 |
CN106412580A (zh) * | 2016-11-01 | 2017-02-15 | 飞狐信息技术(天津)有限公司 | 一种设定视频序列中帧内编码帧的方法及装置 |
CN106488227A (zh) * | 2016-10-12 | 2017-03-08 | 广东中星电子有限公司 | 一种视频参考帧管理方法和系统 |
CN103826121B (zh) * | 2013-12-20 | 2017-05-10 | 电子科技大学 | 低延迟视频编码基于场景切换检测的码率控制方法 |
CN107005692A (zh) * | 2014-11-27 | 2017-08-01 | 株式会社Kt | 视频信号处理方法和设备 |
CN107534775A (zh) * | 2015-05-04 | 2018-01-02 | 谷歌公司 | 用于应用流的预取的编码 |
CN110149491A (zh) * | 2018-02-11 | 2019-08-20 | 腾讯科技(深圳)有限公司 | 视频编码方法、视频解码方法、终端及存储介质 |
CN111083481A (zh) * | 2019-11-15 | 2020-04-28 | 西安万像电子科技有限公司 | 图像编码方法及装置 |
CN112351278A (zh) * | 2020-11-04 | 2021-02-09 | 北京金山云网络技术有限公司 | 一种视频的编码方法和装置,视频的解码方法和装置 |
CN113099241A (zh) * | 2021-03-31 | 2021-07-09 | 北京百度网讯科技有限公司 | 参考帧列表更新方法、装置、设备以及存储介质 |
US11303888B2 (en) | 2015-03-31 | 2022-04-12 | Huawei Technologies Co., Ltd. | Picture encoding/decoding method and related apparatus |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996183B2 (en) * | 2001-09-26 | 2006-02-07 | Thomson Licensing | Scene cut detection in a video bitstream |
KR100491530B1 (ko) * | 2002-05-03 | 2005-05-27 | 엘지전자 주식회사 | 모션 벡터 결정 방법 |
CN1642274A (zh) * | 2004-01-15 | 2005-07-20 | 北京时代互动传媒技术有限公司 | 一种带场景变换检测的码率控制方法 |
CN101072342B (zh) * | 2006-07-01 | 2010-08-11 | 腾讯科技(深圳)有限公司 | 一种场景切换的检测方法及其检测系统 |
-
2009
- 2009-04-13 CN CN 200910038582 patent/CN101534442B/zh active Active
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102075756B (zh) * | 2011-01-27 | 2012-10-24 | 北京视博云科技有限公司 | 视频多帧预测编解码方法和装置 |
CN102075756A (zh) * | 2011-01-27 | 2011-05-25 | 北京视博云科技有限公司 | 视频多帧预测编解码方法和装置 |
CN103826121B (zh) * | 2013-12-20 | 2017-05-10 | 电子科技大学 | 低延迟视频编码基于场景切换检测的码率控制方法 |
CN107005692A (zh) * | 2014-11-27 | 2017-08-01 | 株式会社Kt | 视频信号处理方法和设备 |
US11563971B2 (en) | 2014-11-27 | 2023-01-24 | Kt Corporation | Video signal processing method and device |
US11889058B2 (en) | 2015-03-31 | 2024-01-30 | Huawei Technologies Co., Ltd. | Picture encoding/decoding method and related apparatus |
US11303888B2 (en) | 2015-03-31 | 2022-04-12 | Huawei Technologies Co., Ltd. | Picture encoding/decoding method and related apparatus |
CN105100799A (zh) * | 2015-04-25 | 2015-11-25 | 芯原微电子(北京)有限公司 | 一种减少hevc编码器中帧内编码时延的方法 |
CN107534775A (zh) * | 2015-05-04 | 2018-01-02 | 谷歌公司 | 用于应用流的预取的编码 |
CN107534775B (zh) * | 2015-05-04 | 2020-04-24 | 谷歌公司 | 用于应用流的方法和系统 |
CN106488227A (zh) * | 2016-10-12 | 2017-03-08 | 广东中星电子有限公司 | 一种视频参考帧管理方法和系统 |
CN106488227B (zh) * | 2016-10-12 | 2019-03-15 | 广东中星电子有限公司 | 一种视频参考帧管理方法和系统 |
CN106412580A (zh) * | 2016-11-01 | 2017-02-15 | 飞狐信息技术(天津)有限公司 | 一种设定视频序列中帧内编码帧的方法及装置 |
CN106412580B (zh) * | 2016-11-01 | 2019-07-09 | 飞狐信息技术(天津)有限公司 | 一种设定视频序列中帧内编码帧的方法及装置 |
CN110149491A (zh) * | 2018-02-11 | 2019-08-20 | 腾讯科技(深圳)有限公司 | 视频编码方法、视频解码方法、终端及存储介质 |
CN110149491B (zh) * | 2018-02-11 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 视频编码方法、视频解码方法、终端及存储介质 |
CN111083481A (zh) * | 2019-11-15 | 2020-04-28 | 西安万像电子科技有限公司 | 图像编码方法及装置 |
CN112351278A (zh) * | 2020-11-04 | 2021-02-09 | 北京金山云网络技术有限公司 | 一种视频的编码方法和装置,视频的解码方法和装置 |
CN112351278B (zh) * | 2020-11-04 | 2023-07-07 | 北京金山云网络技术有限公司 | 一种视频的编码方法和装置,视频的解码方法和装置 |
CN113099241A (zh) * | 2021-03-31 | 2021-07-09 | 北京百度网讯科技有限公司 | 参考帧列表更新方法、装置、设备以及存储介质 |
CN113099241B (zh) * | 2021-03-31 | 2022-11-01 | 北京百度网讯科技有限公司 | 参考帧列表更新方法、装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101534442B (zh) | 2011-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101534442B (zh) | 视频编码系统及方法 | |
CN101415122B (zh) | 一种帧间预测编解码方法及装置 | |
EP3549345A1 (en) | Local hash-based motion estimation for screen remoting scenarios | |
US10171830B1 (en) | Moving picture coding device, moving picture coding method, and moving picture coding program, and moving picture decoding device, moving picture decoding method, and moving picture decoding program | |
CN105556971A (zh) | 针对帧内块复制预测中的块翻动和跳跃模式的编码器侧判定 | |
EP2514209A1 (en) | Method and arrangement for video coding | |
CN103299622A (zh) | 改进型帧内亮度预测模式编码方法及装置 | |
KR100285599B1 (ko) | 격행 부호화에서의 움직임 추정을 위한 텍스쳐 패딩 장치 및그 패딩 방법 | |
CN105379288A (zh) | 处理对视频译码的照明补偿 | |
CN104685889A (zh) | 视频序列图像的解码和编码 | |
CN101658044A (zh) | 以低编码器和解码器复杂度进行视频编码的高精度运动矢量 | |
CN104969557A (zh) | 对用于视频编码的并置参考图片以显式方式进行信号传输 | |
CN1195254A (zh) | 移动图象信号的译码及编码方法及装置 | |
WO2021232979A1 (zh) | 视频编解码中的位移矢量预测方法、装置及设备 | |
CN102186075B (zh) | 一种熵编码器及其实现方法 | |
WO2020039408A1 (en) | Overlapped block motion compensation using temporal neighbors | |
CN109922336A (zh) | 视频数据的帧间预测方法和装置 | |
CN102740071A (zh) | 可分级视频编解码器的编码设备及其方法 | |
WO1999059341A1 (en) | Motion vector generation by temporal interpolation | |
CN1224977A (zh) | 用于编码交错形状信息的方法和设备 | |
CN101291436A (zh) | 视频编/解码方法和视频编/解码装置 | |
JP4034935B2 (ja) | サブサンプリング技法を採用する動き推定方法及び装置 | |
CN104104961A (zh) | 一种视频编码方法、解码方法和装置 | |
CN104219530A (zh) | 基于预测模式拷贝的hevc多描述编码 | |
CN112437312B (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 |