数据流索引文件生成及用该文件访问帧和切变镜头的方法

文档序号:7943629阅读:268来源:国知局
专利名称:数据流索引文件生成及用该文件访问帧和切变镜头的方法
技术领域
本发明涉及一种数据流索引文件生成及用该文件访问帧和切变镜头的方法,尤指一种基于MPEG-2码流的节目流、基本流和建立索引文件,以及使用该文件随机访问任意帧的方法和高速切变镜头的搜索方法,属于多媒体信息处理领域。
目前,数字化信息已从过去的简单文本发展成含有视频、音频、图片、文本等信息类型的多媒体信息。在多媒体数据库中,视频媒体的有效管理需要对视频数据结构化的支持,来方便用户对视频数据快速访问。随着桌面计算机性能的提高,存储介质费用的不断降低,宽带网络的扩展,数字视频数据的应用已变得越来越广泛。每一个数字视频素材都由一系列时间上连续的帧构成,诸多的有关多媒体视频的应用都希望能快速定位到一视频序列中某一特定帧。虽然目前诸多微机环境中的VCD软件播放器都提供了相应的快进、快退的功能,但这种随机访问能力在快速性、准确性上均有一定的局限性,无法满足许多更高级的多媒体应用的需要。例如一个大型的视频数据库系统希望为用户提供基于内容的检索方式,库中的视频流文件经过结构化的分析处理后,对视频流中的镜头集都加入了标引,用户在浏览检索时若需要从一个镜头转到另一个镜头,就会希望系统能以最快的响应速度准确地快进或快退到目标镜头的起始第一帧;这样的系统一般都以客户/服务模式并发地响应多个用户的请求,这时通过对视频流建立合适的索引来实现对特定帧视频内容访问的快速性、准确性便是一种有效的解决方法。
镜头分割是视频信息管理系统对视频数据结构化的一项基本功能。完全的手工标注是一项耗时枯燥的人力劳动,提供各种高度自动化的结构分析工具对原始数据进行处理,以自动化或半自动化的方式建立并描述视频信息的内容结构是一种重要的系统需求。
对MPEG码流中的帧进行解压缩并显示是许多涉及视频的多媒体应用的一项基本操作。由于MPEG码流编码的特点,只有编码类型为I的图的内容可独立解码显示,其它类型的图都需要在与其相关的某些帧被正确解码,后该图才能够正确解码。这也正是一般的MPEG节目流演播器的快进、快退的分辨单元一般为一个图片组(GOP)的原因,其实质进行的是对与目标位置最为接近的I图的搜索,而不是对任意一个精确的帧进行搜索。
但是,有时为了满足特定的应用需求,需要对一个具体的帧进行搜索定位。例如切变镜头是一种最为普遍的镜头切换方式,镜头在相邻的两帧间发生突然性的改变。镜头分割在许多视频应用中都是基本的关键技术,如新闻的自动编目系统等;一些新闻类纪实性节目中的镜头过渡几乎都采用这种方式来突出内容的严肃正式性。通过对中央电视台每天的新闻联播作镜头的手工标注统计,发现95%以上的镜头过渡为切变类型。对这类镜头的编辑,往往需要对一个具体的帧进行精确的搜索定位。
在一个视频的片段中寻找一个镜头,通常需要搜索出镜头之间的过渡帧,而利用上述的以一个GOP(GOP)为分辨单元的方法显然是不精确的。另外,为了提高分析搜索的速度,通常采用多级分辨率检测方式来比较相邻帧间内容特征量,对MPEG-2码流建立合适的索引文件是多级分辨率检测方式的基础。
本发明的主要目的在于提供一种MPEG-2码流索引文件的生成方法,对MPEG-2节目流、基本流建立索引,通过对MPEG-2流中的视频数据的内容进行扫描来发现视频打包基本数据流包头的起始位置和对应一帧开始的图片头的位置,完成MPEG-2流编码次序向播放次序的转换,使得索引中的帧排列顺序与播放次序相一致。
本发明的另一目的在于提供一种随机访问MPEG2码流中的任意帧的方法,利用MPEG-2码流中不同编码类型帧所含信息的不同特点,通过利用原始特征信息来降低特征抽取的时间复杂度,从而实现随机访问MPEG2码流中的任意帧。
本发明又的一目的在于给出一种压缩域上更加快速的镜头边界搜索方法,与现有的压缩域上镜头分割算法相比,它利用MPEG-2码流索引文件,采用多级分辨率检测方法对镜头进行分切搜索;利用对其它视频帧的分析结果,跳过一定数量的视频帧,从而使整个搜索过程处理的数据量大大减少。
本发明是通过如下技术方案实现的一种MPEG2码流索引文件的生成方法,它包括MPEG-2或MPEG-1的节目流,传输流、打包数据流或基本数据流文件,并且包括以下步骤1、打开一个基本流文件和建立一个空的临时文件;2、设置节目流中含有的总帧数计数器为0,结束标志为FALSE;3、如果视频缓冲区是空的,则搜索、解析基本流文件,将基本流读入视频缓冲区;4、搜索、解析视频缓冲区中的各种MPEG头信息数据,如果遇到序列结束码或基本流文件的结束符,则转步骤15;若遇到一个视频PES包头,记下该包头的起始位置;若遇到一个图片头,记下该图片头的起始位置,并转步骤5;5、解析该图片头;6、若图片编码类型为B类型,则解码当前帧为B帧的帧编码类型,转步骤9;否则转步骤7;7、若结束标志为FALSE,则前向参考帧与后向参考帧的内容互换;8、解码当前帧为后向参考帧;9、如果结束标志为FALSE,则将图片编码类型、图片头的起始位置信息存入到解码当前帧指向的对象;如果流类型为节目流,同时也将该包头的起始位置信息存入到解码当前帧指向的对象,验证MPEG2码流的GOP结构是否出现非规则情况,如果是,则失败退出;10、如果节目流中含有的总帧数计数器不为0,且图片结构为帧类型,或者结束标志为FALSE,则如果图片编码类型为B类型,则播放当前帧为B帧的帧编码类型,否则,播放当前帧为前向参考帧;转步骤13;11、如果当前图片结构不为帧类型,则结束标志取反;12、如果结束标志为FALSE,则将播放当前帧指向对象的信息放入到输出缓冲区中,节目流中含有的总帧数计数器的值+1;13、如果输出缓冲区超过一定的满度,则取出一定量的数据,构造出若干索引子,并按预定的文件格式写入到一个临时文件中;14、转步骤3;15、若输出缓冲区不空,则取出其中所有的数据,构造出若干索引子,并按预定的文件格式写入到一个临时文件中;16、建立一个空的索引文件,按索引文件格式将描述数据写入到文件中,将临时文件的内容追加到索引文件,并关闭索引文件,基本流文件,关闭并删除临时文件。
上述的MPEG码流的二元组<G,D>索引I的元素D是一个按显示顺序排列的索引子的集合;元素G为的结构为<FrameRate,Frames,tagRegular,Gop_NP,Gop_NB,BL_GopIndex,BaseFrmNum,TypeStream>,其中FrameRate为MPEG流的帧率,Frames为该节目流中含有的总帧数,tagRegular标志索引的MPEG流的GOP结构是否是规则的,Gop_NP、Gop_NB分别为被索引的MPEG流的每个GOP中所含的P帧和B帧的数目,BL_GopIndex为在索引I中索引一个GOP中的所有帧花费的字节数,BaseFrmNum为MPEG节目流中按播放顺序第一个I帧的帧序号,TypeStream为索引流的类型。所述的索引子为I索引子或P索引子;I索引子为对构成GOP的图片子组中参考帧含有I图的I型图片子组的索引形式,其为一个四元组<tag,numB,ipPos,dif_Bs>;所述的P索引子为对构成GOP的图片子组中参考帧含有P图的P型图片子组的索引形式,其为一个四元组<tag,numB,ipPos,dif_Bs>;所述的四元组中,tag为索引子的类型,numB为该索引子对应的图片子组中包含的B帧的数目,ipPos为该索引子对应的图片子组中I帧或P帧的在流中的位置的相关描述信息,dif_Bs为一个由numB个元素组成的有序正数集,其中的每个元素为图片子组中各个B帧的位置相对于ipPos的位置差的相关描述信息。索引文件格式为以索引I中元素G为基本数据结构的存储格式。
一种随机访问MPEG2码流中任意帧的方法,它包括MPEG-2或MPEG-1的节目流,传输流、打包数据流或基本数据流文件,并且包括以下步骤1、打开基本流文件,采用上述MPEG2码流索引文件的生成方法所建立的相应码流的索引文件;2、从相应码流的索引文件中提取相关的参数,求出帧序号为所需的帧序号的帧所在GOP的I型图片子组对应的索引子在索引I中D元素中的位置;3、移动相应码流的索引文件的文件指针到步骤2求出的位置的对应处,并读取一个索引子大小的内容;4、移动基本流文件的文件指针到所读取的索引子对应的图片子组中相应帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据;5、如果被搜索帧在图片组中的编号=0,则转步骤14;6、设前一个索引子为当前的索引子;7、若被搜索帧在图片组中的编号小于各索引子包含的帧数值,则转步骤11;8、从相应码流的索引文件中读取一个索引子大小的内容;9、移动基本流文件的文件指针到所读取的索引子对应的图片子组中相应帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据;10、被搜索帧在图片组中的编号=被搜索帧在图片组中的编号-各索引子包含的帧数值,转步骤6;11、若被搜索帧在图片组中的编号=0,则转步骤14;12、从相应码流的索引文件中读取一个索引子大小的内容,移动基本流文件的文件指针到读取的索引子对应的图片子组中相应帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据;13、移动基本流文件的文件指针到读取的索引子对应的图片子组中相应帧在码流中的相应的位置中的相应个B帧的位置处,利用MPEG解码引擎解码该帧的数据;14、查找出最后解码的帧;结束。
一种高速切变镜头边界搜索方法,它包括MPEG-2或MPEG-1的节目流,传输流、打包数据流或基本数据流文件,并包括以下步骤1、打开基本流文件,采用上述的MPEG2码流索引文件的生成方法所建立的相应码流的索引文件;2、如果已检测完所有的GOP,转到步骤5;否则,进行GOP级检测,若满足设定的相似性要求,则继续检测Ik+1、Ik+2间的内容相似程度;否则说明Ik、Ik+1间可能存在镜头的切换,进行步骤3;3、进行图片子组级检测,设SPl、SPl+1为两个相邻的图片子组,且SPl+1为P型图片子组,检测SPl、SPl+1图片子组中参考帧Rm、Rm+1间的内容相似程度,若满足设定的相似性要求,则继续检测下一个图片子组的参考帧Rm+2与Rm+1间的内容相似度,否则说明Rm、Rm+1间可能存在镜头的切换,当发现SPl+1为I型图片子组,SPl则为一个GOP的最后一个图片子组,进行步骤4;4、进行帧级检测,若该B帧序列属于一个GOP的最后一个图片子组,则分析后返回到步骤2,否则返回到步骤3;5、记录所有的镜头切换的位置,结束。
上述的GOP级检测为对相距一个GOP长度的两个I帧Ik、Ik+1间的内容相似程度的检测;图片子组级检测为对处于两个I帧Ik、Ik+1间的帧按图片子组的分辨率进行的检测;帧级检测为对两个参考帧间的所有B帧序列B1B2...Bn进行分析,确定切变镜头的产生及其准确位置。
帧级检测依照下列步骤1、定义一个参考帧间的相关函数Relevance(df,db)Relevance(df,db)=Maxdfpdpdb(NFwdBack(d)+NFwdBackSkip(d))]]>其中df、db为两个相邻的参考帧的帧序号,NFwdBack(d)和NFwdBackSkip(d)分别为计算帧d中双向预测宏块数目和双向跳过宏块数目的函数;Ri、Rj分别对应的播放帧序号为f、b;2、若Relevance(f,b)≥K2·SumofMacroBlocks,其中K2,K2∈(0,1)为系统的门限参数,则帧Ri、Rj间不存在镜头的切换;3、否则,对于Bk(k=1,2,...n),若NBackSkip(d)+NBackward(d)>K3·(NFwdSkip(d)+NForward(d))并且Relevance(f,b)≤K4·SumofMacroBlocks则在帧Bk(k=1,2,..n)与其前一帧之间发生了镜头的切换;其中K4,K4∈(0,1)为系统的门限参数,NBackSkip(d),NBackward(d)NFwdSkip(d)及NForward(d)分别为帧d中后向跳过宏块数目,后向预测宏块数目,前向跳过宏块数目及前向预测宏块数目;其中K3,(K3>1)为系统的门限参数;4、对于Bn,若Relevance(f,b)≤K4·SumofMacroBlocks并且K3·(NBackSkip(d)+NBackward(d))<NFwdSkip(d)+NForward(d)则判断在Bn与其后一帧Rj之间发生了镜头的切换。
本发明通过对以MPEG2码流为主的节目流、基本流建立索引,完成了MPEG2码流编码次序向播放次序的转换,使得索引中的帧排列顺序与播放次序相一致;并且,利用MPEG2码流中不同编码类型的帧所含信息的不同的特点,实现了对MPEG2码流中的任意一帧的随机访问;此外,本发明利用MPEG2码流索引文件,采用多级分辨率的检测方法对镜头进行分切检测;利用对其它视频帧的分析结果,跳过一定数量的视频帧,从而使整个探测过程的处理数据量大大减少,与现有的压缩域上镜头分割算法相比,它提高了对MPEG2码流分析搜索的速度。
以下,结合附图对本发明作进一步的详细说明

图1为MPEG2码流索引文件的生成方法的流程图之一。
图2为MPEG2码流索引文件的生成方法的流程图之二。
图3为随机访问MPEG2码流中的任意帧的方法的流程示意图。
图4为高速切变镜头边界搜索方法的流程示意图。
参见图1及图2,为本发明的MPEG-2码流索引文件的生成方法的流程图。本方法是基于MPEG-2或MPEG-1的节目流,或基本流文件建立索引的,根据流程图首先打开一个基本流文件和建立一个空的临时文件,此时,基本流文件是一个用于存放其GOP结构是规则的MPEG2码流的索引流的空的文件,所谓规则的是指GOP结构在整个节目流是不变的,且按显示顺序排列的参考帧间包含的B帧的数目是相同的。
其次,将节目流的总帧数计数器设置为0,结束标志设置为FALSE。
如果视频缓冲区是空的,则搜索、解析基本流文件,将基本流读入视频缓冲区。
然后,搜索、解析视频缓冲区中的各种MPEG头信息数据,如果遇到序列结束码或基本流文件的结束符,结束所有的搜索、解析等操作,取出输出缓冲区中所有的数据,构造出若干索引子,并按预定的文件格式写入到一个临时文件中,再建立一个空的索引文件,按索引文件格式将描述数据写入到文件中,将临时文件的内容追加到索引文件,并关闭索引文件和基本流文件,关闭并删除临时文件。
若遇到一个视频PES包头,记下该包头的起始位置。若遇到一个图片头,记下该图片头的起始位置,否则继续搜索、解析视频缓冲区中的各种MPEG头信息数据。
解析该图片头;若图片编码类型为B类型,则解码当前帧为B帧的帧编码类型,否则,若结束标志为FALSE,则前向参考帧与后向参考帧的内容互换,并且,解码当前帧为后向参考帧。
如果结束标志为FALSE,则将图片编码类型、图片头的起始位置信息存入到解码当前帧指向的对象;如果流的类型为节目流,同时也将该包头的起始位置信息存入到解码当前帧指向的对象。
验证MPEG2码流的GOP结构是否出现非规则情况,如果是,则失败退出。
如果节目流中含有的总帧数计数器不为0,且图片结构为帧类型,或者结束标志为FALSE,则如果图片编码类型为B类型,则播放当前帧为B帧的帧编码类型,否则,播放当前帧为前向参考帧。
如果总帧数计数器不为0,且当前图片结构不为帧类型,或者结束标志为FALSE,则结束标志取反;如果结束标志为FALSE,则将播放当前帧指向对象的信息放入到输出缓冲区中,使节目流中含有的总帧数计数器的值递增1。
如果输出缓冲区超过一定的满度,则取出一定量的数据,构造出若干索引子,并按预定的文件格式写入到一个临时文件中。
重复搜索、解析视频缓冲区中的各种MPEG头信息数据等各个步骤,直到整个搜索结束或失败退出。
上述的MPEG码流带有索引I,其为一个二元组,<G,D>;元素G为码流的结构特征及索引I的特征所有的描述项,而元素D是按显示顺序排列的所有的索引子。元素G为的结构为<FrameRate,Frames,tagRegular,Gop_NP,Gop_NB,BL_GopIndex,BaseFrmNum,TypeStream>,其中FrameRate为MPEG流的帧率,Frames为该节目流中含有的总帧数,tagRegular标志索引的MPEG流的GOP结构是否是规则的,Gop_NP、Gop_NB分别为被索引的MPEG流的每个GOP中所含的P帧和B帧的数目,BL_GopIndex为在索引I中索引一个GOP中的所有帧花费的字节数,BaseFrmNum为MPEG节目流中按播放顺序第一个I帧的帧序号,TypeStream为索引流的类型。
MPEG码流中的索引子为I索引子或P索引子,I索引子为对构成GOP的图片子组中参考帧含有I图的I型图片子组的索引形式;P索引子为对构成GOP的图片子组中参考帧含有P图的P型图片子组的索引形式;上述的两种索引子均四元组<tag,numB,ipPos,dif_Bs>,在该四元组中,tag为索引子的类型,numB为该索引子对应的图片子组中包含的B帧的数目,ipPos为该索引子对应的图片子组中I帧或P帧的在流中的位置的相关描述信息,dif_Bs为一个由numB个元素组成的有序正数集,其中的每个元素为图片子组中各个B帧的位置相对于ipPos的位置差的相关描述信息。
而索引文件格式则是以索引I中元素G为基本数据结构的存储格式。
参见图3,为本发明随机访问MPEG2码流中任意帧的方法的流程图。本方法基于MPEG-2或MPEG-1的节目流或基本流文件及与之相关的索引文件的,根据流程图首先,打开基本流文件和与之相应的采用MPEG2码流索引文件的生成方法所建立的相应码流的索引文件。
其次,从相应码流的索引文件中提取相关的参数,求出帧序号为需要的帧序号的帧所在GOP的I型图片子组对应的索引子在索引I中D元素中的位置,并读取一个索引子大小的内容。
然后,移动基本流文件的文件指针到所读取的索引子对应的图片子组中相应帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据。
如果被搜索帧在图片组中的编号=0,则查找出最后解码的帧,结束;否则,设前一个索引子为当前的索引子。
如果被搜索帧在图片组中的编号小于各索引子包含的帧数,且若被搜索帧在图片组中的编号=0,则查找出最后解码的帧,结束;否则,从相应码流的索引文件中读取一个索引子大小的内容;移动基本流文件的文件指针到所读取的索引子对应的图片子组中相应帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据。
使被搜索帧在图片组中的编号=被搜索帧在图片组中的编号-各索引子包含的帧数,设前一个索引子为当前的索引子;若被搜索帧在图片组中的编号=0,则查找出最后解码的帧,结束。
从相应码流的索引文件中读取一个索引子大小的内容,移动基本流文件的文件指针到读取的索引子对应的图片子组中相应帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据。
移动基本流文件的文件指针到读取的索引子对应的图片子组中相应帧在码流中的相应的位置中的相应个B帧的位置处,利用MPEG解码引擎解码该帧的数据。
查找出最后解码的帧,结束。
参见图4,为本发明高速切变镜头边界搜索方法的流程图。本方法基于MPEG-2或MPEG-1的节目流,或基本流文件及与之相关的索引文件的,根据流程图首先,打开基本流文件,采用上述的一种MPEG2码流索引文件的生成方法所建立的相应码流的索引文件;如果已检测完所有的GOP,记录所有的镜头切换的位置,结束;否则,进行GOP级检测,若满足设定的相似性要求,则继续检测Ik+1、Ik+2间的内容相似程度;否则说明Ik、Ik+1间可能存在镜头的切换,进行图片子组级检测。
进行图片子组级检测,设SPl、SPl+1为两个相邻的图片子组,且SPl+1为P型图片子组,检测SPl、SPl+1图片子组中参考帧Rm、Rm+1间的内容相似程度,若满足设定的相似性要求,则继续检测下一个图片子组的参考帧Rm+2与Rm+1间的内容相似度,否则说明Rm、Rm+1间可能存在镜头的切换,当发现SPl+1为I型图片子组,SPl则为一个GOP的最后一个图片子组,进行帧级检测。
进行帧级检测,若该B帧序列属于一个GOP的最后一个图片子组,则分析后转到进行GOP级检测,否则返回到图片子组级检测。
上述的GOP级检测为对相距一个GOP长度的两个I帧Ik、Ik+1间的内容相似程度的检测;图片子组级检测为对处于两个I帧Ik、Ik+1间的帧按图片子组的分辨率进行的检测;帧级检测为对两个参考帧间的所有B帧序列B1B2...Bn进行分析,确定切变镜头的产生及其准确位置。
帧级检测依照下列方法帧级检测为帧级确认提供了在一个图片子组内进行检测的范围。帧级确认将利用图片子组中的B帧的原始压缩域中的信息,判定切变镜头是否发生极其发生的准确位置。
MPEG流中的B帧由不同类型的宏块构成,包括有帧内宏块(Intra)、前向预测宏块(Forward)、后向预测宏块(Backward)、双向预测宏块(FwdBack)、前向跳过宏块(FwdSkip)、后向跳过宏块(BackSkip)、双向跳过宏块(FwdBackSkip)。
对于一个按播放顺序排列的帧序列RiB1B2...BnRj,若存在k(k=1,2,...n),帧Bk中含有很多的双向预测宏块,根据MPEG的编码算法,如果Bk的两个参考帧Ri、Rj间的内容存在很大的相关性。为此,定义一个参考帧间的相关函数Relevance(df,db)。Relevance(df,db)=Maxdfπdπdb(NFwdBack(d)+NFwdBackSkip(d))]]>其中df、db为两个相邻的参考帧的帧序号,NFwdBack(d)、NFwdBackSkip(d)分别求出帧d中双向预测宏块数目及双向跳过宏块数目。
设Ri、Rj分别对应的播放帧序号为f、b,如果Relevance(f,b)≥K2·SumofMacroBlocks则帧Ri、Rj间不存在镜头的切换。
其中K2,K2∈(0,1)为系统的门限参数。
否则对于Bk(k=1,2,...n),如果NBackSkip(d)+NBackward(d)>K3·(NFwdSkip(d)+NForward(d))
Relevance(f,b)≤K4·SumofMacroBlocks其中K4,K4∈(0,1)为系统的门限参数则在Bk(k=1,2,...n)与其前一帧之间发生了镜头的切换。
其中NBackSkip(d),NBackward(d)、NFwdSkip(d)、NForward(d)分别为帧d中后向跳过宏块数目,后向预测宏块数目,前向跳过宏块数目以及前向预测宏块数目,其中K3,(K3>1)为系统的门限参数。
另外,对于Bn,如果Relevance(f,b)≤K4·SumofMacroBlocksK3·(NBackSkip(d)+NBackward(d))<NFwdSkip(d)+NForward(d)则在Bn与其后一帧Rj之间发生了镜头的切换。
权利要求
1.一种MPEG2码流索引文件的生成方法,它包括MPEG-2或MPEG-1的节目流,传输流、打包数据流或基本数据流文件,其特征在于它还包括以下步骤a、打开一个基本流文件和建立一个空的临时文件;b、设置节目流中含有的总帧数计数器为0,结束标志为FALSE;c、如果视频缓冲区是空的,则搜索、解析基本流文件,将基本流读入视频缓冲区;d、搜索、解析视频缓冲区中的各种MPEG头信息数据,如果遇到序列结束码或基本流文件的结束符,则转步骤o;若遇到一个视频PES包头,记下该包头的起始位置;若遇到一个图片头,记下该图片头的起始位置,并转步骤e;e、解析该图片头;f、若图片编码类型为B类型,则解码当前帧为B帧的帧编码类型,转步骤i;否则转步骤g;g、若结束标志为FALSE,则前向参考帧与后向参考帧的内容互换;h、解码当前帧为后向参考帧;i、如果结束标志为FALSE,则将图片编码类型、图片头的起始位置信息存入到解码当前帧指向的对象;如果流类型为节目流,同时也将该包头的起始位置信息存入到解码当前帧指向的对象,验证MPEG2码流的GOP结构是否出现非规则情况,如果是,则失败退出;j、如果节目流中含有的总帧数计数器不为0,且图片结构为帧类型,或者结束标志为FALSE,则如果图片编码类型为B类型,则播放当前帧为B帧的帧编码类型,否则,播放当前帧为前向参考帧;转步骤m;k、如果当前图片结构不为帧类型,则结束标志取反;l、如果结束标志为FALSE,则将播放当前帧指向对象的信息放入到输出缓冲区中,节目流中含有的总帧数计数器的值+1;m、如果输出缓冲区超过一定的满度,则取出一定量的数据,构造出若干索引子,并按预定的文件格式写入到一个临时文件中;n、转步骤c;o、若输出缓冲区不空,则取出其中所有的数据,构造出若干索引子,并按预定的文件格式写入到一个临时文件中;p、建立一个空的索引文件,按索引文件格式将描述数据写入到文件中,将临时文件的内容追加到索引文件,并关闭索引文件,基本流文件,关闭并删除临时文件。
2.如权利要求1所述的一种MPEG2码流索引文件的生成方法,其特征在于所述的MPEG码流的二元组<G,D>索引I的元素D是一个按显示顺序排列的索引子的集合;元素G为的结构为<FrameRate,Frames,tagRegular,Gop_NP,Gop_NB,BL_GopIndex,BaseFrmNum,TypeStream>,其中FrameRate为MPEG流的帧率,Frames为该节目流中含有的总帧数,tagRegular标志索引的MPEG流的GOP结构是否是规则的,Gop_NP、Gop_NB分别为被索引的MPEG流的每个GOP中所含的P帧和B帧的数目,BL_GopIndex为在索引I中索引一个GOP中的所有帧花费的字节数,BaseFrmNum为MPEG节目流中按播放顺序第一个I帧的帧序号,TypeStream为索引流的类型。
3.如权利要求1所述的一种MPEG2码流索引文件的生成方法,其特征在于所述的索引子为I索引子或P索引子。
4.如权利要求3所述的一种MPEG2码流索引文件的生成方法,其特征在于所述的I索引子为对构成GOP的图片子组中参考帧含有I图的I型图片子组的索引形式,其为一个四元组<tag,numB,ipPos,dif_Bs>;所述的P索引子为对构成GOP的图片子组中参考帧含有P图的P型图片子组的索引形式,其为一个四元组<tag,numB,ipPos,dif_Bs>;所述的四元组中,tag为索引子的类型,numB为该索引子对应的图片子组中包含的B帧的数目,ipPos为该索引子对应的图片子组中I帧或P帧的在流中的位置的相关描述信息,dif_Bs为一个由numB个元素组成的有序正数集,其中的每个元素为图片子组中各个B帧的位置相对于ipPos的位置差的相关描述信息。
5.如权利要求1所述的一种MPEG2码流索引文件的生成方法,其特征在于所述的索引文件格式为以索引I中元素G为基本数据结构的存储格式。
6.一种随机访问MPEG2码流中任意帧的方法,它包括MPEG-2或MPEG-1的节目流,传输流、打包数据流或基本数据流文件,其特征在于它还包括以下步骤a、打开基本流文件,采用如权利要求1-5所述的一种MPEG2码流索引文件的生成方法所建立的相应码流的索引文件;b、从相应码流的索引文件中提取相关的参数,求出帧序号为所需的帧序号的帧所在GOP的I型图片子组对应的索引子在索引I中D元素中的位置;c、移动相应码流的索引文件的文件指针到步骤b求出的位置的对应处,并读取一个索引子大小的内容;d、移动基本流文件的文件指针到所读取的索引子对应的图片子组中相应帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据;e、如果被搜索帧在图片组中的编号=0,则转步骤n;f、设前一个索引子为当前的索引子;g、若被搜索帧在图片组中的编号小于各索引子包含的帧数值,则转步骤k;h、从相应码流的索引文件中读取一个索引子大小的内容;i、移动基本流文件的文件指针到所读取的索引子对应的图片子组中相应帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据;j、被搜索帧在图片组中的编号=被搜索帧在图片组中的编号-各索引子包含的帧数值,转步骤f;k、若被搜索帧在图片组中的编号=0,则转步骤n;l、从相应码流的索引文件中读取一个索引子大小的内容,移动基本流文件的文件指针到读取的索引子对应的图片子组中相应帧在码流中的相应的位置处,利用MPEG解码引擎解码该帧的数据;m、移动基本流文件的文件指针到读取的索引子对应的图片子组中相应帧在码流中的相应的位置中的相应个B帧的位置处,利用MPEG解码引擎解码该帧的数据;n、查找出最后解码的帧;结束.
7.一种高速切变镜头边界搜索方法,它包括MPEG-2或MPEG-1的节目流,传输流、打包数据流或基本数据流文件,其特征在于它还包括以下步骤a、打开基本流文件,采用如权利要求1-5所述的一种MPEG2码流索引文件的生成方法所建立的相应码流的索引文件;b、如果已检测完所有的GOP,转到步骤e1;否则,进行GOP级检测,若满足设定的相似性要求,则继续检测Ik+1、Ik+2间的内容相似程度;否则说明Ik、Ik+1间可能存在镜头的切换,进行步骤c;c、进行图片子组级检测,设SPl、SPl+1为两个相邻的图片子组,且SPl+1为P型图片子组,检测SPl、SPl+1图片子组中参考帧Rm、Rm+1间的内容相似程度,若满足设定的相似性要求,则继续检测下一个图片子组的参考帧Rm+2与Rm+1间的内容相似度,否则说明Rm、Rm+1间可能存在镜头的切换,当发现SPl+1为I型图片子组,SPl则为一个GOP的最后一个图片子组,进行步骤d;d、进行帧级检测,若该B帧序列属于一个GOP的最后一个图片子组,则分析后返回到步骤b,否则返回到步骤c;e、记录所有的镜头切换的位置,结束。
8.如权利要求7所述的一种高速切变镜头边界搜索方法,其特征在于所述的GOP级检测为对相距一个GOP长度的两个I帧Ik、Ik+1间的内容相似程度的检测。
9.如权利要求7所述的一种高速切变镜头边界搜索方法,其特征在于所述的图片子组级检测为对处于两个I帧Ik、Ik+1间的帧按图片子组的分辨率进行的检测。
10.如权利要求7所述的一种高速切变镜头边界搜索方法,其特征在于所述的帧级检测为对两个参考帧间的所有B帧序列B1B2...Bn进行分析,确定切变镜头的产生及其准确位置。
11.如权利要求10所述的一种高速切变镜头边界搜索方法,其特征在于帧级检测依照下列步骤a、定义一个参考帧间的相关函数Relevance(df,db)Relevance(df,db)=Maxdfpdpdb(NFwdBack(d)+NFwdBackSkip(d))]]>其中df、db为两个相邻的参考帧的帧序号,NFwdBack(d)和NFwdBackSkip(d)分别为计算帧d中双向预测宏块数目和双向跳过宏块数目的函数;Ri、Rj分别对应的播放帧序号为f、b;b、若Relevance(f,b)≥K2·SumofMacroBlocks,其中K2,K2∈(0,1)为系统的门限参数,则Ri、Rj间不存在镜头的切换;c、否则,对于Bk(k=1,2,...n),若NBackSkip(d)+NBackward(d)>K3·(NFwdSkip(d)+NForward(d))并且Relevance(f,b)≤K4·SumofMacroBlocks则在帧Bk(k=1,2,...n)与其前一帧之间发生了镜头的切换;其中K4,K4∈(0,1)为系统的门限参数,NBackSkip(d),NBackward(d)NFwdSkip(d)及NForward(d)分别为帧d中后向跳过宏块数目,后向预测宏块数目,前向跳过宏块数目及前向预测宏块数目;其中K3,(K3>1)为系统的门限参数;d、对于Bn,若Relevance(f,b)≤K4·SumofMacroBlocks并且K3·(NBackSkip(d)+NBackward(d))<NFwdSkip(d)+NForward(d)则判断在Bn与其后一帧Rj之间发生了镜头的切换。
全文摘要
一种MPEG-2码流索引文件的生成方法,通过对MPEG-2流中视频数据内容的扫描,发现视频基本流包头的起点和对应一帧开始的图片头位置,建立索引,完成MPEG-2流编码次序向播放次序的转换;同时,提供随机访问MPEG2码流中任意帧的方法,利用原始特征降低特征抽取的复杂度,实现随机访问任意帧;给出一种压缩域上的镜头边界搜索方法,利用MPEG-2码流索引文件,采用多级分辨率检测法对镜头进行分切搜索;利用对其它视频帧的分析结果,减少处理的数据量。
文档编号H04N7/173GK1349351SQ00129698
公开日2002年5月15日 申请日期2000年10月13日 优先权日2000年10月13日
发明者高文, 罗森林, 王伟强 申请人:北京算通数字技术研究中心有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1