发明内容
为了克服已有的多媒体视频对象处理方法中存在的耗费资源多、处理效率低下、处理效果不佳、较依赖人机交互等不足,本发明提供了一种处理速度快、效果好、自动化程度高的多媒体视频对象处理方法。
本发明的上述技术问题主要是通过下述技术方案得以解决的:一种多媒体视频对象处理方法,该方法包括以下步骤:
(1)标准的MPEG视频格式的语法结构的最上层是帧图像组GOP(Groupof picture),由三种主要的压缩类型的图像帧(I帧、P帧、B帧)组成,一个GOP可分为3种子类(SGOP,Sub Group of picture)。在处理视频时,分别对每个SGOP中各帧的宏块(MB,Marco Block)的类型进行分析,凡是满足一定规则的,就认为有一个MB发生了变化。将各帧发生变化的MB个数与总的MB个数相比得到镜头变化可能程度c,c越接近1,表明镜头发生转换的几率就越大。设置某个阈值t,若c>t,则认为场景发生了变化,进行分割;
(2)预读两个要进行拼接的标准MPEG视频流,分别找到两个视频流的节目关联表(PAT),通过节目关联表(PAT)找到相应的节目映射表(PMT),然后在节目映射表(PMT)里面得到各种信息,主要包括音频、视频和节目时钟基准(PCR)的识别符(PID),并寻找合适的拼接场景;
(3)寻找视频拼接的入点和出点,并对接入的视频流的各种信息进行调整,主要包括:视频流的节目专用信息(PSI),音频、视频传输流数据包的识别符(PID),包含节目时钟基准(PCR)的传输流数据包的PID,以及所有这些数据包的版本号,同时修改第二个视频流的时间信息;
(4)根据已经存在的视频拼接点选取合适的音频拼接点,保证音频和视频同步拼接;
(5)设置视频缓冲区验证模型,简称VBV(video buffering verifier),使解码器输入端有码流缓冲区,使不规则的帧边界规则化。同时通过调节视频流中空包的数量,将进行拼接的两个视频的码率调整为一致,保证视频的无缝拼接;
(6)基于变化检测对视频图像在时间域中进行运动对象提取。将两帧彩色图像转化为灰度图像,设置合适的阈值得到灰度帧差掩模图像,同理取得HSV彩色空间的帧差掩模图像,两者进行或运算得到联合帧差图像。通过数学形态学的膨胀和腐蚀操作形成连通域,得到运动对象的区域;
(7)对得到的运动对象区域经预处理后进行分水岭变换,并进行时域和空域的区域合并,实现运动对象的精确分割。
作为技术方案的进一步改进,所述步骤(1)具体包括以下步骤:
(1.1)MPEG视频中的一个帧图像组(GOP)由三种主要的压缩类型的图像帧组成,包括I帧、P帧、B帧,其标准结构为:IBBPBBPBBPBBPBB;将帧图像组(GOP)分为三类子类(SGOP):PBBP结构(SGOP1),PBBI结构(SGOP2)和IBBP结构(SGOP3);其中前一个子类(SGOP)的最后一帧图像即是后面一个子类(SGOP)的第一帧图像,所以只需分析一个子类(SGOP)中的最后3帧图像即可;
(1.2)将可能发生在一个帧图像组(GOP)中的场景变换分为三类:变换发生在P帧或I帧,称为SPI;变换发生在前面的B帧,称为SFB;变换发生在后面的B帧,称为SRB;
(1.3)宏块(MB)的变化类型参考以下规则:(1.3.1)对于SPI而言,两个B帧图像(Bf,Br)的大多数宏块(MB)都是前向运动补偿方式,称为F模式,它们与后面的参考帧Pr更相似;参考帧Pr为场景变换所在的帧,大多数宏块(MB)都是帧内编码,称为I模式;(1.3.2)对于SFB而言,参考帧(Pr)中的大多数宏块(MB)也是I模式,但是由于在B帧图像Bf处镜头内容发生了变化,B帧图像Bf和B帧图像Br图像的内容与后面参考帧的内容相似,因此两个B帧的大多数宏块(MB)将是后向运动补偿方式,称为B模式;(1.3.3)对于SRB,由于镜头内容在后面的B帧处发生了变化,所以B帧图像Bf与后面的参考帧不相似,它的大多数宏块(MB)为F模式;而B帧图像Br与前面的参考帧不相似,它的大多数宏块(MB)为B模式;
(1.4)在检测镜头时,分别对子类(SGOP)各帧的宏块(MB)类型进行分析,凡是类型关系满足上述规则之一的,就认为有一个宏块(MB)发生了变化;
(1.5)统计各帧中宏块(MB)发生变化的次数,与总的宏块(MB)数量相比,若大于一定的阈值t,则认为场景发生了变化,进行切割。
作为技术方案的进一步改进,所述的步骤(2)具体包括以下步骤:
(2.1)从视频流的开始,寻找载有节目关联表(PAT)信息的数据包,从中可获得该视频流复用节目数、每路节目的节目号和每路节目的节目映射表(PMT)的识别符(PID)等信息;
(2.2)通过节目映射表(PMT)的识别符(PID),在视频流里找到包含节目映射表(PMT)信息的数据包,从中查出该路节目的节目时钟基准(PCR)的识别符(PID),判断某个对象是音频还是视频;
(2.3)通过得到的视频的识别符(PID),获取视频序列头信息,判断两个视频流编码的类、级、图像大小、幅型比、帧率等信息是否相同,如果不同,则不能拼接;同时,根据得到的节目时钟基准(PCR)的识别符(PID),取得两个视频流的码率;
(2.4)对视频图像进行预览,寻找预览图像周围的部分拼接点,得到主观合适的拼接点,节省资源并提高处理速度。
作为技术方案的进一步改进,所述的步骤(3)具体包括以下步骤:
(3.1)对于一组标准MPEG视频序列,出点只能在I帧或P帧之前最后一帧的最后一个数据结束点,入点只能在I帧(包括I帧前面的序列头和图组头)的第一个数据;
(3.2)以预览图像中得到的预览位置为起点,向前和向后搜寻一定数量的视频传输流包,判断该传输流包是不是一个图像的开头,如果是,判断该图像的帧类型是I帧、P帧还是B帧;若是I帧,则该传输流包可以直接作为该传输流的一个入点包,也就是说可以从这个传输流包开始进入该视频流;同样,如果判断出该传输流包包含I帧或P帧的图像头,则该包前面的一个传输流包就可以作为该视频流的一个出点包;
(3.3)找到可能的拼接点后,记录拼接点的信息,包括:拼接点的位置(包括接口帧在传输流里的起始和结束位置),拼接点类型(出点还是入点),接口帧的帧类型,接口帧的显示时间标记(PTS)和解码时间标记(DTS),DTS的间隔值,接口帧从开始到下一帧开始在传输流里所占的数据包数,接口帧净打包的基本流(PES)包数据在传输流里所占的数据包数等;
(3.4)把拼入视频流中除了节目关联表(PAT)的传输流包之外所有需要识别符(PID)进行识别的传输流包,其识别符(PID)都改成与拼出视频流一致,同时把节目关联表(PAT)和节目映射表(PMT)的内容替换为拼出流的相应内容以保证正确解码;
(3.5)对时间信息进行调整,在拼出流的出点之前找到最近的一个节目时钟基准(PCR)值PCR1,记录该PCR字段距离拼出点的字节数i1,该PCR字段的最后一位字节进入系统目标解码器的时间为t1;同样再找到入流的入点之后最近的PCR值PCR2,记录i2和t2,则第二个流PCR的调整量Time_offset的计算方法如下:
其中rate为视频的码率,若两个视频码率不同,则公式(1)记为:
入流拼接点之后的每一个PCR处理后的时间值t与其处理前的原值t’的关系如下:
t=t’+Time_offset (3)
作为技术方案的进一步改进,所述的步骤(4)具体包括以下步骤:
(4.1)根据对拼接点所记录的显示时间标记(PTS)信息,找到显示时间标记(PTS)与之最为接近的音频帧的位置,保证出点的音频比视频提前、入点的音频比视频滞后;
(4.2)一般出流音频不止一帧,在开始插入入流视频时,中间遇到入流音频包时用出流音频替换,如果出流音频包多于入流音频包,则多余的部分堆积在入流视频数据之后。
作为技术方案的进一步改进,所述的步骤(6)具体包括以下步骤:
(6.1)对视频序列中的两帧进行灰度化,灰度化的公式是:
Gray=0.229R+0.587G+0.114B (4)
(6.2)对两帧灰度图像进行帧差计算,计算公式是:
d=fm(x,y)-fn(x,y),m>n (5)
其中m,n分别代表两帧的序号。
(6.3)设置合理的阈值τ,得到帧差掩模图像FDMgray,计算公式如下:
(6.4)将RGB颜色空间转化到HSV颜色空间,分别求出三个分量的帧差掩模图像FDMH、FDMS、FDMV,得到关于HSV空间的帧差掩模图像FDMHSV如下:
FDMHSV=FDMH|FDMS|FDMV (7)
(6.5)将灰度帧差掩模图像与HSV空间的帧差掩模图像进行或运算,得到联合帧差掩模图像FDM:
FDM=FDMgray|FDMHSV (8)
(6.6)对FDM进行数学形态学的膨胀或腐蚀运算,去除零散的噪声干扰,并填充运动对象区域的空洞,得到分割结果。
作为技术方案的进一步改进,所述的步骤(7)具体包括以下步骤:
(7.1)步骤(6)中取得的运动对象区域经过中值滤波之后,按照Lue Vincent算法进行分水岭算法变换;
(7.2)分水岭算法往往会因为噪音以及图像纹理造成许多小区域的过分割,因此把空间与时间信息同时考虑,运用区域合并来消除这种影响。分水岭算法的输出是N个区域{R1,R2,…,RN},Ri区域像素的个数是Ni,Ri则区域内颜色均值μi和方差定义σi 2如下:
其中Xi是某个像素的颜色值。
(7.3)用Fisher距离度量两个相邻区域的相异度:
Fisher距离越大表明两个区域之间颜色相关性越小;反之Fisher距离越小表明两个区域颜色相关性越大,可以考虑合并两区域。
(7.4)用颜色均值进行类距离测量考察相邻两帧的差别,定义:
表示图像在第k和第k+1帧的颜色均值差分。则在Rm和Rn之间的时间距离Bmn定义为:
其中Bmn是区域Rm和Rn在边界上前后两帧之间的强度差,Rmn值越大,表明两个区域存在运动相关;反之表明该区域或者属于背景,或者属于同一运动对象,考虑进行合并;
(7.5)基于对空间域和时间域的区域距离定义,应用下式就是相邻两区域的联合距离:
(7.6)当两个相邻区域的联合距离ω小于阈值TM时就合并这两个区域,当重复执行次N1之后,尚有一些较小区域未合并;如果区域内包含的像素个数S小于阈值SM,且此区域与相邻区域最小联合距离为ωmin,若ωmin小于阈值TN,且TN>TM,则合并这两个区域。重复执行N2次得到最终的合并结果。
本发明的有益效果主要表现在:1、视频场景检测过程简单,能以快速有效、地检测出场景变换,精确到帧,避免误检;2、无缝拼接方案较简单、快捷,资源消耗较低,误码率低;3、在视频对象检测中运用时空结合的方法,克服了由于噪音引起的过分割现象,改善了分割质量,提高了分割精度。
具体实施方式
下面通过实施例,对本发明的技术方案作进一步具体的说明。
实施例:一种多媒体视频对象处理方法,该方法包括以下步骤:
(1)标准的MPEG视频格式的语法结构的最上层是帧图像组GOP(Groupof picture),由三种主要的压缩类型的图像帧(I帧、P帧、B帧)组成,一个GOP可分为3种子类(SGOP,Sub Group of picture)。在处理视频时,分别对每个SGOP中各帧的宏块(MB,Marco Block)的类型进行分析,凡是满足一定规则的,就认为有一个MB发生了变化。将各帧发生变化的MB个数与总的MB个数相比得到镜头变化可能程度c,c越接近1,表明镜头发生转换的几率就越大。设置某个阈值t,若c>t,则认为场景发生了变化,进行分割;
具体包括以下步骤:
(1.1)MPEG视频中的一个帧图像组(GOP)由三种主要的压缩类型的图像帧组成,包括I帧、P帧、B帧,其标准结构为:IBBPBBPBBPBBPBB;将帧图像组(GOP)分为三类子类(SGOP):PBBP结构(SGOP1),PBBI结构(SGOP2)和IBBP结构(SGOP3);其中前一个子类(SGOP)的最后一帧图像即是后面一个子类(SGOP)的第一帧图像,所以只需分析一个子类(SGOP)中的最后3帧图像即可;
(1.2)将可能发生在一个帧图像组(GOP)中的场景变换分为三类:变换发生在P帧或I帧,称为SPI;变换发生在前面的B帧,称为SFB;变换发生在后面的B帧,称为SRB;
(1.3)宏块(MB)的变化类型参考以下规则:(1.3.1)对SPI而言,两个B帧图像(Bf,Br)的大多数宏块(MB)都是前向运动补偿方式,称为F模式,它们与后面的参考帧Pr更相似;参考帧Pr为场景变换所在的帧,大多数宏块(MB)都是帧内编码,称为I模式;(1.3.2)对于SFB而言,参考帧(Pr)中的大多数宏块(MB)也是I模式,但是由于在B帧图像Bf处镜头内容发生了变化,B帧图像Bf和B帧图像Br图像的内容与后面参考帧的内容相似,因此两个B帧的大多数宏块(MB)将是后向运动补偿方式,称为B模式;(1.3.3)对于SRB,由于镜头内容在后面的B帧处发生了变化,所以B帧图像Bf与后面的参考帧不相似,它的大多数宏块(MB)为F模式;而B帧图像Br与前面的参考帧不相似,它的大多数宏块(MB)为B模式;
(1.4)在检测镜头时,分别对子类(SGOP)各帧的宏块(MB)类型进行分析,凡是类型关系满足上述规则之一的,就认为有一个宏块(MB)发生了变化;
(1.5)统计各帧中宏块(MB)发生变化的次数,与总的宏块(MB)数量相比,若大于一定的阈值t,则认为场景发生了变化,进行切割。
(2)预读两个要进行拼接的标准MPEG视频流,分别找到两个视频流的节目关联表(PAT),通过节目关联表(PAT)找到相应的节目映射表(PMT),然后在节目映射表(PMT)里面得到各种信息,主要包括音频、视频和节目时钟基准(PCR)的识别符(PID),并寻找合适的拼接场景;
具体包括以下步骤:
(2.1)从视频流的开始,寻找载有节目关联表(PAT)信息的数据包,从中可获得该视频流复用节目数、每路节目的节目号和每路节目的节目映射表(PMT)的识别符(PID)等信息;
(2.2)通过节目映射表(PMT)的识别符(PID),在视频流里找到包含节目映射表(PMT)信息的数据包,从中查出该路节目的节目时钟基准(PCR)的识别符(PID),判断某个对象是音频还是视频;
(2.3)通过得到的视频的识别符(PID),获取视频序列头信息,判断两个视频流编码的类、级、图像大小、幅型比、帧率等信息是否相同,如果不同,则不能拼接;同时,根据得到的节目时钟基准(PCR)的识别符(PID),取得两个视频流的码率;
(2.4)对视频图像进行预览,寻找预览图像周围的部分拼接点,得到主观合适的拼接点,节省资源并提高处理速度。
(3)寻找视频拼接的入点和出点,并对接入的视频流的各种信息进行调整,主要包括:视频流的节目专用信息(PSI),音频、视频传输流数据包的识别符(PID),包含节目时钟基准(PCR)的传输流数据包的PID,以及所有这些数据包的版本号,同时修改第二个视频流的时间信息;
具体包括以下步骤:
(3.1)对于一组标准MPEG视频序列,出点只能在I帧或P帧之前最后一帧的最后一个数据结束点,入点只能在I帧(包括I帧前面的序列头和图组头)的第一个数据;
(3.2)以预览图像中得到的预览位置为起点,向前和向后搜寻一定数量的视频传输流包,判断该传输流包是不是一个图像的开头,如果是,判断该图像的帧类型是I帧、P帧还是B帧;若是I帧,则该传输流包可以直接作为该传输流的一个入点包,也就是说可以从这个传输流包开始进入该视频流;同样,如果判断出该传输流包包含I帧或P帧的图像头,则该包前面的一个传输流包就可以作为该视频流的一个出点包;
(3.3)找到可能的拼接点后,记录拼接点的信息,包括:拼接点的位置(包括接口帧在传输流里的起始和结束位置),拼接点类型(出点还是入点),接口帧的帧类型,接口帧的显示时间标记(PTS)和解码时间标记(DTS),DTS的间隔值,接口帧从开始到下一帧开始在传输流里所占的数据包数,接口帧净打包的基本流(PES)包数据在传输流里所占的数据包数等;
(3.4)把拼入视频流中除了节目关联表(PAT)的传输流包之外所有需要识别符(PID)进行识别的传输流包,其识别符(PID)都改成与拼出视频流一致,同时把节目关联表(PAT)和节目映射表(PMT)的内容替换为拼出流的相应内容以保证正确解码;
(3.5)对时间信息进行调整,在拼出流的出点之前找到最近的一个节目时钟基准(PCR)值PCR1,记录该PCR字段距离拼出点的字节数i1,该PCR字段的最后一位字节进入系统目标解码器的时间为t1;同样再找到入流的入点之后最近的PCR值PCR2,记录i2和t2,则第二个流PCR的调整量Time_offset的计算方法如下:
其中rate为视频的码率,若两个视频码率不同,则公式(1)记为:
入流拼接点之后的每一个PCR处理后的时间值t与其处理前的原值t’的关系如下:
t=t’+Time_offset (3)
(4)根据已经存在的视频拼接点选取合适的音频拼接点,保证音频和视频同步拼接;具体包括以下步骤:
(4.1)根据对拼接点所记录的显示时间标记(PTS)信息,找到显示时间标记(PTS)与之最为接近的音频帧的位置,保证出点的音频比视频提前、入点的音频比视频滞后;
(4.2)一般出流音频不止一帧,在开始插入入流视频时,中间遇到入流音频包时用出流音频替换,如果出流音频包多于入流音频包,则多余的部分堆积在入流视频数据之后。
(5)设置视频缓冲区验证模型,简称VBV(video buffering vcrifier),使解码器输入端有码流缓冲区,使不规则的帧边界规则化。同时通过调节视频流中空包的数量,将进行拼接的两个视频的码率调整为一致,保证视频的无缝拼接;
(6)基于变化检测对视频图像在时间域中进行运动对象提取。将两帧彩色图像转化为灰度图像,设置合适的阈值得到灰度帧差掩模图像,同理取得HSV彩色空间的帧差掩模图像,两者进行或运算得到联合帧差图像。通过数学形态学的膨胀和腐蚀操作形成连通域,得到运动对象的区域;具体包括以下步骤:
(6.1)对视频序列中的两帧进行灰度化,灰度化的公式是:
Gray=0.229R+0.587G+0.114B (4)
(6.2)对两帧灰度图像进行帧差计算,计算公式是:
d=fm(x,y)-fn(x,y),m>n (5)
其中m,n分别代表两帧的序号。
(6.3)设置合理的阈值τ,得到帧差掩模图像FDMgray,计算公式如下:
(6.4)将RGB颜色空间转化到HSV颜色空间,分别求出三个分量的帧差掩模图像FDMH、FDMS、FDMV,得到关于HSV空间的帧差掩模图像FDMHSV如下:
FDMHSV=FDMH|FDMS|FDMV (7)
(6.5)将灰度帧差掩模图像与HSV空间的帧差掩模图像进行或运算,得到联合帧差掩模图像FDM:
FDM=FDMgray|FDMHSV (8)
(6.6)对FDM进行数学形态学的膨胀或腐蚀运算,去除零散的噪声干扰,并填充运动对象区域的空洞,得到分割结果。
(7)对得到的运动对象区域经预处理后进行分水岭变换,并进行时域和空域的区域合并,实现运动对象的精确分割。具体包括以下步骤:
(7.1)步骤(6)中取得的运动对象区域经过中值滤波之后,按照Lue Vincent算法进行分水岭算法变换;
(7.2)分水岭算法往往会因为噪音以及图像纹理造成许多小区域的过分割,因此把空间与时间信息同时考虑,运用区域合并来消除这种影响。分水岭算法的输出是N个区域{R1,R2,…,RN},Ri区域像素的个数是Ni,Ri则区域内颜色均值μi和方差定义σi 2如下:
其中Xi是某个像素的颜色值。
(7.3)用Fisher距离度量两个相邻区域的相异度:
Fisher距离越大表明两个区域之间颜色相关性越小;反之Fisher距离越小表明两个区域颜色相关性越大,可以考虑合并两区域。
(7.4)用颜色均值进行类距离测量考察相邻两帧的差别,定义:
表示图像在第k和第k+1帧的颜色均值差分。则在Rm和Rn之间的时间距离Bmn定义为:
其中Bmn是区域Rm和Rn在边界上前后两帧之间的强度差,Rmn值越大,表明两个区域存在运动相关;反之表明该区域或者属于背景,或者属于同一运动对象,考虑进行合并;
(7.5)基于对空间域和时间域的区域距离定义,应用下式就是相邻两区域的联合距离:
(7.6)当两个相邻区域的联合距离ω小于阈值TM时就合并这两个区域,当重复执行次N1之后,尚有一些较小区域未合并;如果区域内包含的像素个数S小于阈值SM,且此区域与相邻区域最小联合距离为ωmin,若ωmin小于阈值TN,且TN>TM,则合并这两个区域。重复执行N2次得到最终的合并结果。
本发明总体包括视频处理的三方面内容,分别是:对视频中进行场景分割,对视频进行无缝拼接,从视频中进行运动对象截取。
为了对视频进行有效的组织,需要将视频分解为基本单元。一般认为视频的基本物理单元是镜头,一个镜头是指一系列连续记录的图像帧,用于表示一个连续时间段或者相同地点的一段有意义的帧的组合,由摄像机的一次连续摄像的开始和结束决定。
对视频进行场景分割的基本原理在于判别出相邻两帧在内容上存在着较大的差异。所以,场景分割需要一些合适的量化度值,以确定能够捕获相邻两帧之间的特征是否发生较大变化。如果特征差值超过了一个给定的阈值,则意味着出现一个分割边界。因此,自动分割的关键问题是建立合适的特征差值度量技术来确定切分点,需要解决以下问题:(1)选用何种参量来表示帧间差异;(2)确定镜头变化的检测规则;(3)镜头变化的阈值选择;(4)如何提取关键帧来有效地表示场景。
按照传统的在非压缩域内进行镜头检测的方法,需要对压缩的视频进行解压缩解码,这将耗费大量的处理时间和设备开销。如今压缩格式的图像或视频的使用越来越广泛,基于内容的视频检索需求不断增加,使得传统方法中解压缩编码所需的额外/重复费用不断增加。本发明提出的在标准MPEG压缩域内进行场景检索和分割,可以不需要解码或只需要部分解码。
标准的MPEG视频由三种不同的帧组成,I帧、P帧、B帧,且有标准的格式:IBBPBBPBBPBBPBB。三种不同类型的帧在视频场景分割中有着不同的应用,其中:I帧图像为帧内编码,不依赖之前或之后的任何帧。当一个场景变换发生在两个连续的I帧之间时,两幅图像是有很大差别的;当一个镜头变换发生在P帧和前一个I帧或P帧之间时,两者之间差别很明显,导致了P帧前向预测编码的宏块数目大幅度减少,通过计算P帧图像的内部编码宏块与整个帧图像所有宏块之比,可检测出变换发生所在的帧;当一个镜头变换发生在B帧时,当前B帧的内容与前一个参考帧之间存在较大差别,并且此B帧与下一个参考帧会特别相似。此时,B帧中的大多数运动向量参考下一帧,其中的宏块大多数为后向预测。
基于宏块信息的视频场景分割算法如下:
Step 1.通过检测I帧,分析相邻两个GOP中I帧宏块编码数据量,通过计算两个I帧中宏块的数量差,如果宏块数量之差大于某个阈值,则认为有场景变换发生在当前GOP;反之,则重复步骤1检测下一个GOP,否则执行步骤Step2;
Step 2.分析P4,P7,P10,P13,通过计算P帧图像的内部编码宏块与整个帧图像所有宏块之比,即可检测出变换发生所在的帧,进一步定位出变换所发生的帧后执行步骤Step 3;
Step 3.假设Step 2检测所得为P4,则利用B帧检测算法分析B2,B3,如果算法中只存在一个峰值,则对应峰值所在的帧为场景变换帧;如果存在两个峰值,则第一个峰值所在的帧为场景变换帧;如果没有出现峰值,则说明P4帧即为场景变换帧;
Step 4.按照Step 3分析P7,P10,P13;
Step 5.如前4步骤没有检出可疑的P帧,则下一个GOP中的I1帧为场景变换帧。
本发明的算法的有益效果表现在:
(1)在压缩域中,数据量比原始域上或解压域上的数据量要少得多,有利于提高整个系统的效率,尤其是要求实时响应的场合;
(2)在压缩域上可(部分)省略解压缩的附加环节,减少处理时间和设备开销;
(3)许多视频压缩算法在压缩过程中已对视频进行了大量的处理和分析,在压缩域上的帧图像的许多特征信息就包含在压缩系数中,充分利用这些处理和分析的结果,可以减少场景检索和分割时的计算量,提高检索效率;
(4)本发明的场景变换检测是基于MPEG压缩视频中的帧的变化,精确到帧,查全率和查准率高。
视频的无缝拼接的关键在于拼接点的选取及处理,选取拼接点意味着在第一个节目流和第二个节目流中各自找到一个切断点(退出点和接入点),并且保证这两个切断点衔接起来以后视频衔接自然,播放流畅。
选取两个视频拼接点时,可以通过预览图像,只寻找预览图像定位周围的一部分拼接点,不需要把一个文件所有的拼接点都找出来,这样会节省资源和提高处理速度。
对于第一个视频流来说,只能从连续B帧的最后一个结束处所在的传输流分组切断,从I帧、P帧或是非连续B帧的最后一个结束处所在传输流分组切断都会造成一部分显示帧的缺失,同时需要将B帧结束处后面剩余的传输流分组内容用OxFF填充。
对于第二个视频流,从GOP第一个I帧的起始位置所在传输流组开始续接,在第一个节目播放的同时,循环定位第二个节目GOP第一个I帧的起始位置所在传输流分组,如此操作两次,并预先将这两个位置之间的所有传输流分组内容读入缓存,对open型GOP,还需对I帧后的连续B帧进行预处理,一旦需要发生拼接动作,即从缓存中取出数据直接插入第一个视频流的退出点,实现接入点的低延迟。
PAT和PMT提供视频被正确解码的索引信息,在进行视频拼接时,两者的PAT和PMT是不同的,因此,为了使拼接后的新视频符合MPEG的标准规范,应该将这些信息修改为一致,才能成为一个规范的视频。
PAT和PMT需要进行CRC32校验码计算,因此预先提取两个视频流的PAT和PMT所在传输流分组,分别获取其关键字段信息,然后以第一个视频流的PAT和PMT关键字段为标准来修改第二个视频流的相应字段,使之和第一个节目流一致,并重新进行CRC32校验码计算。在拼接事件发生时,应首先于拼接点处插入已预处理好的第二个视频流的PAT和PMT所在传输流分组,然后再接入第二个视频流的视频、音频等其他内容。在第二个视频流中,如出现PAT或PMT,则用预处理好的相关数据直接替换。
由于插入视频的PAT和PMT进行了修改,则其原有的视频、音频传输流分组的识别符亦要作相应的修改,与之保持一致,否则将不能正确解码。
在拼接点处,两节目流的PCR及PTS/TS必然出现不连续,如果不加处理而直接送入解码器解码,将会出现黑屏或者抖动等现象。因此,PCR及PTS/TS字段都需进行重新计算、更新,这是实现无缝拼接的一个关键点。
对于音频信息而言,由于在处理拼接点时是从视频传输流分组角度考虑,这样就很可能造成拼接点前后两个视频流的音频传输流分组不是以一个完整的PES分组结束或者开始,因此有必要分析判断音频PES分组是否完整。
最后通过调节码率实现视频的无缝拼接,从视频A的最后一个显示画面平滑过渡到节目B的第一个显示画面。
本发明方案主要在系统层对两个传输流进行无缝拼接,不经过视频接压缩、解码、编码和重新复用的过程。该方案的关键技术是选择合适的拼接点、调整PSI信息、调整时间信息和音频、视频同步处理等。该方案基本不改变原始流内容,其中最复杂的是获取拼接点的信息和对拼接点附近码流进行处理,其余部分基本就是读取和存储文件。该方法较简单、快捷,资源消耗较低,能在客观上满足MPEG-2标准要求,主观上图像衔接连续,不会出现解码错误和音视频失同步现象。
对于从视频中进行运动目标区域定位的原理是检测序列图像中与背景存在相对运动的前景,将运动前景分割为若干独立目标,即从相邻的两帧或几帧图像中检测出存在相对运动的区域,通常对图像进行差分运算。一个好的目标检测和分割算法,应该能适用于各种环境,通常应具有以下的特征:(1)对环境的缓慢变化(如光照变化等)不敏感;(2)对于复杂背景和复杂目标有效;(3)能适应场景中个别物体运动的干扰(如树木的摇晃,水面的波动等);(4)能够去除目标阴影的影响;(5)检测和分割的结果应满足后续处理的精度要求。
在视频运动目标检测过程中,本发明采用了时间域和空间域区域合并的方法。首先运用常规的方法,通过时域分割,即将运动的对象从相对固定的背景中提取出来,采取的方法是帧差法。在传统方法下,帧差图像都采用图像的灰度特征,但对于那些对比度较低的图像,或者当前景和背景的灰度很接近时,这种方法就会遗漏一些属于变化区域的像素。因此,本发明提出了一种灰度帧差图像结合HSV彩色空间帧差图像的方法,将两者进行或运算,可以很好的检测出运动对象的大概位置,尽管背景中还是存在一定的离散的噪音点。
检测出运动对象的大概位置后,对检测结果进行处理。由于运动物体内部颜色比较一致,利用帧差法并不能把所有属于物体内部的点都确定出来,这样就会在物体内部形成“空洞”现象,这些“空洞”是属于前景的。因此对于这种情况需要对“空洞”区域进行填充,采用数学形态学的膨胀和腐蚀操作,目的在于填充内部空洞,去除图像中存在的离散的噪声点,并且平滑运动对象区域,这样就得到了在时间域分割的最终结果。
在传统的方法中,基于时间域的方法是独立的,该方法适用于一些场合,可以取得比较好的检测分割效果。但是由于场景中存在噪声,以及运动估计所固有的遮挡和孔径问题,使得时域分割过程不可避免的存在误差,可能会有部分运动区域在跟踪过程中丢失;另外,如果部分对象区域停止运动的话,时域分割时检测不到区域运动,同样会导致部分运动对象的丢失;同时,基于运动的分割方法一般对有较大运动的目标分割效果不好,影响到运动分割的精度,不能准确逼近运动物体的边缘,因此本发明提出了运用时间域和空间域的区域合并的方法来进行运动目标检测。
对于前面利用帧差法获得的运动对象区域,再对其进行分水岭算法,能得到图像对象封闭、准确的边缘,能较好的提取对象的轮廓,两者结合能够极大提高运动对象检测的精度。通常,需要分割的目标是图像中的某个运动对象,但是该对象在图像中所占面积往往只占整幅图像的50%以下,因此,如果对整个图像进行分水岭变换以及区域合并,也就需要对大块的背景区域进行操作,这样就会浪费很多没有必要时间。由于分水岭算法本身的运算速度较慢,所以首先运用帧差法取得大致的运动对象区域,可以有效减少分水岭算法的运算量,对于提高运算效率是大有裨益的。
时空联合的分割方法综合利用了时间域的帧间运动信息和空间的色度信息,同时进行空间分割和时域分割的方法,是为了提取足够准确的边缘。通过空域分割将图像分割为具有准确语义边界的初始分割区域,时域分割定位图像中的运动区域,最后结合空间分割和时域分割的结果产生鲁棒性较好的分割结果,获得边缘定位较精确的分割对象。
本发明根据MPEG视频的规范,设计了一套完整的处理流程,包括MPEG视频的场景分割、音视频的无缝拼接以及基于视频的运动对象检测。实验结果证明,本发明算法快速高效,有效提高了视频分割、拼接的效率,降低了系统资源要求,运动对象检测精度高。
以上实施例仅是本发明较有代表性的例子。显然,本发明不限于上述实施例,还可以有许多变形。凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均应认为属于本发明的保护范围。