1、引言
视频(Video)是源于广播电视业的术语,指 内容 随着时间变化的图像(Picture)序列,也称为活动图像(Motion Picture)。广义的视频有电影、电视和 计算 机动画等不同类型,狭义上的视频主要是指电视类视频。
视频是一种重要的视觉信息源。随着各种数字影像设备的 发展 与遍及,以及多媒体技术和Internet的发展,人们面对的视频信息种类迅速地增长,如电影、电视、视频会议、监控录像等。仅中央电视台(CCTV)截至2003年就保存有约30万盘视频节目, 目前 CCTV开设有15套节目(日播出量超过300小时,其中约有1/3是首播节目)、6套付费电视频道,以每天保存80—90h的首播节目计算,每年新增节目将会达到3万小时以上[1]。面对如此巨量的视频信息,人们迫切希望改进传统的对视频数据的线性查找方式,研发出能够快速定位和部 分析 取的视频数据获取技术。要达到这样的目标,首先需要将视频数据有序化,即对视频信息进行有效的索引,使之便于检索[2]。
从目前来看,数据库信息、文本信息、图形图像信息的检索已进入成熟期,已有许多实用的检索工具和产品,而视频信息的检索目前还处于 研究 阶段,虽然已有一些实验原型和个别针对特定领域的检索工具,但目前还无普遍实用的工具和产品。其主要原因是,与其他信息(如文本、图像等)相比,视频信息主要有如下一些特点:
(1)信息内涵丰富;
(2)无“显式”的结构;
(3)存档方式、视频格式和编码标准较多;
(4)数据量大。
近年来,许多研究人员在文本信息、图形图像信息检索技术的基础上,对视频信息检索技术进行了大量的研究,研究内容涉及视频信息的存储组织、内容分析、特征抽取、索引 方法 、匹配算法、检索算法、检索结果的评估和视频信息的表现形式等诸多方面。本文在分析视频信息的隐含结构基础上,研究视频信息的索引对象、索引模型和索引结构。
2、视频信息的隐含结构与索引对象
目前的视频文档都是以节目(或称为作品)为单位表现某个主题,其数据在组织时无“显式”的结构和索引信息(如同一本无目录和章节标题的书籍),用户只能采用线性方式观看和欣赏。传统的视频信息的消费往往是以节目为单位进行的,即查找某一电视节目(电视片、广告片、某场 体育 比赛等),但不同类型的用户(消费型、研究型、创作型和 应用 型[3]),在不同的场合下(通过电视、 网络 、PDA、移动电话等)可能有不同的视频消费要求,即可能需要以镜头、场景或故事单元为单位进行消费。例如,篮球教练需要查找“姚明进攻”的视频镜头、司机在“塞车”时利用PDA收看某场足球比赛的精彩片段或画面等等。所以,对视频信息进行“结构化”,并针对不同的结构层次对象进行索引,是实现基于内容的视频信息检索的基础。
2.1 视频信息的隐含结构
从形式上看,视频信息本身是一种无“显式”结构的流媒体,即数据流本身无明显的“章节、段落”结构,但从构成和语义上看,视频信息蕴涵着帧、镜头、场景、故事单元和节目这样的层次型结构。其中,帧、镜头和节目是视频信息的物理组成成分,而场景和故事单元则是语义上的逻辑组成成分。
视频是内容随着时间变化的图像序列,其最小组成单位是帧(Frame),即一幅幅静止图像;针对一个对象或事件的、摄像机一次拍摄产生的帧集合称为一个镜头(Shot);发生在某一场地的、针对某一对象、具有相对独立的叙事情节的一个或多个连续镜头构成一个场景(Scene);故事单元(Story Unit)是指针对某一事件的、具有相对完整的故事情节的一个或多个连续场景的集合,例如电视连续剧中的每一节节目、NBA比赛中的每一节比赛;节目(Program)是独立的完整的视频文档,通常表述一个完整的故事或事件。视频信息的这种隐含结构,可用如下的数学模型表述:
shot={frame[,i]│i>1}
scene={shot[i]│i≥1}
story_unit={scene[,i]│i≥1}
program={story_unit[,i]│i≥1}
2.2 视频索引对象的分割与选取
视频信息蕴涵着帧、镜头、场景、故事单元和节目这样的层次型结构,为了满足不同的应用需求,视频信息的索引应在各个层次上分别展开,即对视频信息的索引,不仅要以节目为对象,而且需要在视频分割的基础上以帧、镜头、场景和故事单元为对象分别进行索引。节目和帧是视频信息固有的 自然 层次,而镜头、场景和故事单元则要通过对视频内容的分析、采用各种算法进行分割才能得到。
(1)帧对象的选取
虽然帧是视频信息固有的自然层次,但一个视频文档由太多的帧组成(每秒25—30帧),且帧之间存在大量的信息冗余以及用户不感兴趣的帧图像,这就需要采取一定的策略进行帧的“选取”,找出一定数量的“代表帧”(也称为“关键帧”)。
目前代表帧的选取大多是在镜头分割的基础上,以镜头为单元分别进行代表帧的选取,选取算法主要是以镜头的首帧、尾帧或中间帧为代表帧。笔者认为,代表帧的选取还应考虑两个方面:一是对于不同体裁(类型)的视频,应采用不同的选取方法,且代表帧的数量也应区别对待;二是可以通过帧图像的相似性比较,对帧进行聚类,从帧数最多的类中选取代表帧(因为持续时间长的画面往往更具有代表性)。
(2)镜头分割
镜头是视频节目构成的基本单元,也是视频消费时的最小逻辑单元。一个完整的视频节目通常由若干个镜头组成,例如一部2小时的电影通常由数百个镜头组成。镜头之间的切换形式主要有突变和渐变两大类,渐变又可分为隐现(Dissolve)、淡入/淡出(Fade)和擦除(Wipe)等不同类型, 文献 [4] 列出了常见的10种镜头变换形式,在实际的应用中可能有上百种镜头变换效果。
采用人工方式进行视频分割是十分费时的。近十多年来, 电子 工程和计算机 科学 等领域的学者从不同的角度研究出了多种自动镜头检测的方法,其基本思想大多为比较相邻帧之间的相似性。目前镜头检测技术的方法分类主要有以下三种:
①根据所处理的视频是否为压缩数据进行分类,如文献[4] 所述,将镜头变换检测方法分为基于解压的全图像序列的识别方法、直接基于压缩视频的识别方法和基于确定变换模型的识别方法;
②根据检测的镜头变换类型进行分类,如文献[5] 所述,将镜头变换检测方法分为突变检测(Hard Cut Detection)、淡入/淡出检测(Fade Detection)和隐现检测(Dissolve Detection)等类型;
③根据检测时所采用的视频特征进行分类,可以将镜头变换检测方法分为基于亮度/颜色(Intensity/color)的检测、基于纹理(Texture)的检测、基于边缘(Edges/contours)的检测、基于运动(Motion)信息的检测,等等。
镜头突变检测的技术相对比较成熟,一般采用基于颜色直方图比较法即可得到较高的准确率。但对于形式多样的渐变切换检测,通常需要采用多种检测手段进行综合检测,这也是目前镜头检测研究的难点和热点之一。
(3)场景分割
场景是发生在某一场地或针对某一对象(或动作)的、具有相对独立的叙事情节的一个或多个连续镜头的集合。有时一个场景就是一个镜头,有时一个场景是从不同角度反映同一场地(或对象或动作)的多个镜头的组合。
目前场景分割(也可称为场景构建)一般是在镜头分割的基础上,采用镜头聚集的方式实现。文献[6] 提出了一种通过构造层次型“场景变换图”的方法实现场景分割的思路,场景变换图中的结点表示镜头、边表示变换,基于场景变换图,利用颜色的相似性计算对镜头进行层次聚类,形成的每一个子图即为一个场景;文献[7] 提出了一种在镜头分割基础上,利用运动信息(包括摄像机运动和对象运动)、镜头长度和颜色属性进行场景检测的方法。
(4)故事单元分割
在影视制作过程中,导演根据剧本的内容,按照叙述的逻辑并根据创作意图,合乎逻辑地、富有表现力地、有节奏地把镜头连接起来,构成完整的银幕形象,形成比镜头更高一级的结构——故事单元[8]。故事单元是指针对某一事件的、具有相对完整的故事情节的一个或多个连续场景(镜头)的集合。故事单元分割的基本思想也是在镜头分割的基础上,结合领域知识对镜头(或场景)进行聚类分析。
故事单元的理解主要是从语义层次上进行的,其长度(大小)并没有确切的定义和界限,需要更多地考虑视频节目的类型、体裁等领域知识。对于不同类型的视频节目,其故事单元的划分有不同的形式。例如,对于电视连续剧,可以将每一集看作一个故事单元;对于体育节目,可以根据其本身所固有的时间间隔进行分割,或根据主要事件(如得分、进球等)进行分割等。
2.3 视频索引对象的数据结构
数据模型是直接面向计算机系统(数据库)中数据的逻辑结构。在常见的数据库系统中,根据实体集之间的不同结构,通常把数据模型分为层次模型、网状模型、关系模型和面向对象模型四种。目前成熟的、主流的数据库管理系统绝大多数是采用关系模型,并在此基础上扩展了面向对象的程序设计功能。鉴于这种情况,可以考虑视频索引对象的数据结构采用如下的关系数据模式:
节目Program(节目号pNO,索引信息p)
故事单元Story Unit(节目号pNo,故事单元号uNO,索引信息u)
场景Scene(节目号pNo,故事单元号uNO,场景号eNO,索引信息e)
镜头Shot(节目号pNo,故事单元号uNO,场景号eNO,镜头号sNO,索引信息s)
代表帧KeyFrame(节目号pNo,故事单元号uNO,场景号eNO,镜头号sNO,帧号fNO,索引信息f)
在实现时,节目号由分类号和编号两部分组成,其中分类号应采用类似于中图分类号的编码体系,分类方法可 参考 TV-Anytime论坛制定的分类策略(SP003v13[12]);故事单元号、场景号、镜头号和帧号可采用视频片段的起止时间码(SMPTE使用的时间码格式为:<小时:分钟:秒:帧>);各索引对象的索引信息可根据后续讨论的索引模型创建。




