视频镜头分割算法综述
2014-05-26刘艳红
刘艳红
摘 要:视频镜头分割作为视频处理的第一步和关键帧提取的基础,一直受到研究者的关注和重视,近二十年来已经提出了大量的算法。文章首先对几种典型的视频镜头分割算法做了综述,比较了它们之间的优缺点,然后又介绍了两种新的视频镜头分割算法,最后对视频镜头分割算法研究做了展望。
关键词:镜头分割;视频检索;直方图
1 引言
随着科学技术的发展,视频等多媒体格式的信息数据越来越丰富。面对庞大的视频信息,如何建立一个简便、快速、精确的视频检索系统就成为近年来的一个热门课题[1]。对视频检索系统的研究具有十分重要的应用意义。例如,电视新闻时时刻刻都在产生大量视频数据的电视节目,这些节目又划分为军事、政治、娱乐、体育等。通过对各个节目进行分类、归纳、整理,建立对应的视频检索系统,将会为人们的使用提供很大方便[2]。又如,近年来,足球作为一项全球性的运动,被越来越多的人们所关注,但由于各方面的原因,人们无法观看完整的赛事,因此足球视频精彩镜头的研究也具有很重要的现实意义,而这也同样离不开视频检索系统[3]。
视频镜头分割作为视频检索的第一步,也是随后关键帧提取的基础,它的准确与否直接影响到后续的处理效果。因此,对视频镜头分割的研究就显得尤为重要。
文章首先就现有的视频镜头分割算法进行了分类,并总结了各个算法的优缺点,接着介绍了两种改进了的视频镜头分割算法,最后对视频镜头分割算法研究做了展望。
2 视频镜头分割的典型算法
视频镜头分割算法的研究已经开展了很多年了,许多学者提出了各自的方案,对视频镜头分割做了很多有益的研究和探讨。各种视频镜头分割算法各有所长,从不同的角度来提高视频镜头边缘的检测效率。视频镜头分割总体来说分为:像素比较法、直方图比较法、边缘比较法、块匹配法[4]。下面就这几种典型的视频镜头分割算法做一个详细的分析和比较。
2.1 像素比较法
当视频从一个镜头切换到另一个镜头的时候,相邻图像帧的对应像素的差值会发生很大的变化,当这个差值大于设定好的某一阈值时,我们就说镜头发生了转变,这就是像素比较法的基本原理[5]。
像素比较法的帧间差定义为:
其中k与k+1是连续的两个视频帧,M、N分别是图像帧的宽度和高度,Pk(i,j)是第k帧在像素点(i,j)的像素值。当D(k,k+1)大于设定阈值时说明第k帧和第k+1帧之间产生了镜头切换,即为镜头的边界。
经过分析,影响图像的像素变化主要因素有:摄像机的运动、视频对象的运动、闪光灯以及变焦等。另外,当发生渐变时,过渡效果对像素变化的影响也会比较严重[6]。
总的来说,像素比较法的原理简单、便于实现,但是若单纯的利用它来进行镜头分割的话效果是不太理想的。
2.2 直方图比较法
直方图比较法是比较相邻两帧图像的直方图差值,从而来进行镜头边界的检测,这种方法的考量是依据图像帧的全局特征。
直方图比较法通常是将每一帧图像的亮度、灰度、颜色划分为N个等级,统计每个等级中各个像素点的个数,绘制成直方图。设图像帧的总像素为M,灰度级为N,具有k级灰度的像素有fk个,它出现的频率为
其中,设颜色区间分为N个,fi,k是第i帧中第k个颜色区间的像素个数。
因为同一个镜头中相邻帧间的直方图差异不是很大,而不同镜头之间的相邻帧间的直方图差异较大,因此通过比较相邻帧之间的直方图差异就可以实现视频镜头的分割[7]。
大体上来说,直方图比较法具有有效的抗干扰能力,并且计算复杂度低,实现简单,效率高,镜头分割效果较好,但是直方图不能反映图像的空间特性,若出现两幅具有不同结构却有相同颜色的直方图时,就会造成误检。
2.3 边缘比较法
边缘比较法是利用图像的边缘特征来实现视频镜头的分割。当镜头发生变化时,整个画面的内容发生了变化,因此对应的图像边缘也发生了变化,边缘比较法就是利用旧边缘的消失和新边缘的出现来实现视频镜头的分割[8]。
具体原理是,设定一个阈值T,检测第i帧与第i+1帧中最近边缘的距离大于给定阈值T的边缘像素数目的百分比(din),第i+1帧中与第i帧中最近边缘的距离大于给定阈值T的边缘像素数目的百分比(dout),计算第i帧与第i+1帧的帧间差(diff):
diff=max(din,dout) 公式4
如果帧间差(diff)大于设定的阈值T1,则认为此处发生了视频镜头的切换。
边缘比较法对视频镜头分割的检测准确度相对来说比较高,但是计算过于繁琐且数据量比较大,而且当边缘不明显时,检测效果不理想。
2.4 块匹配法
块匹配法是将每帧图像分割成若干个小块,然后在比较相应块的相似程度来确定镜头的边界,若相邻帧对应的不相似块数比较多,则认为出现了视频镜头的分割[9]。
把图像分成m个小块,小块内比较的阈值T1,相似块数的阈值为T2,第i帧和第i+1帧对应块的相似比例?姿k计算方法如下:
其中,?滋k,i、?滋k,i+1分别是第i帧和第i+1帧中第m块的像素平均值,?滓k,i、?滓k,i+1是第i帧和第i+1帧中第m块的像素标准差。如果块的相似比例?姿k大于阈值T1,则认为这两个块不相同。累计并记录不同的块数n,如果n大于阈值T2,则认为发生镜头切换。
块匹配法与像素比较法相比降低了小块内噪声的影响,但是因为分成了多个块增加了计算量,给计算带来了不便。
3 改进的视频镜头分割算法
通过介绍典型的视频镜头边缘检测算法,可以发现,镜头边缘检测算法的实质就是:如何找到一种良好的视频图像特征,判断相邻图像帧之间的特征是否发生了剧烈变化,从而来完成视频镜头边缘的检测,实现镜头分割[10]。考虑到典型算法都有优缺点,如果能设计一种算法,去掉它们的缺点、综合它们的优点的话就可以大大提高视频镜头分割的效率。下面就两个改进了的视频镜头分割算法进行简单介绍。
3.1 基于颜色空间的自适应阈值镜头分割算法
YUV颜色空间是一种最常用的颜色空间,不论是非压缩视频还是压缩视频都可以直接获取。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。YUV颜色空间可以通过公式由RGB颜色空间得到。由于视频内容具有连续性,所以即便不在一个镜头内的相邻帧它们的色度分量U、V相差也不会很大,但是亮度分量Y会随着镜头的切换发生变化,因而可以用亮度分量Y作为判断镜头是否突变的主要依据。在YUV颜色空间中,Y和U、V分量是可以分离的,这样就减少了大量的运算量[11]。
算法的具体思路是,首先要对相邻帧帧差值进行计算。在统计直方图时,会使视频帧原有的像素点位置信息丢失,从而很难反应视频的空间信息。为了解决这个问题,采用了分块直方图。考虑到一般视频的内容主要集中在视频帧中心,而底部或顶部通常是广告或字幕的变化,因此将视频帧沿垂直和水平方向分别分割为3:5:3。
计算出相邻帧对应子块的直方图差值:
Minus_framei=|Y_valuek+1-Y_valuek| 公式6
这里的Y_valuek为当前帧子块的Y分量直方图,Y_valuek+1为下一帧对应子块Y分量的直方图。根据每块的重要程度,设置不同的权值,根据设定的加权矩阵W,得到相邻两帧之间的亮度分量Y的直方图差值:
然后获取自适应阈值。由于处于同一镜头内的相邻两帧在内容上基本一致,因此它们之间的直方图差值比较小。当发生镜头突变时,亮度分量Y的直方图帧差值变化明显要比同一镜头内所有帧的平均帧差值大很多[12],所以可以利用这个原理作为检测镜头是否发生突变转换的依据。镜头渐变是通过亮度的不断变化来实现的,表现为在连续多帧内相邻帧差值变化较大,可以利用此点来检测镜头是否发生渐变转换。经过大量的实验对比,来确定阈值。
最后进行判断,如果帧差值大于突变自适应阈值,转入突变检测模块;如果帧差值处于突变阈值和渐变阈值之间的话,转入渐变帧检测模块;如果当前帧不是本段视频最后一帧的话,检测下一帧,直到结束。
通过查全率和查准率可以看出算法检测效果比较好。采用YUV颜色空间,方便于亮度分量的提取,分块上采用了不均匀分块并且运用不同的权值,计算各个帧的直方图亮度分量Y 的值,在阈值的计算中体现了自适应性,但是计算复杂度比较高,并且当视频出现闪光灯效果时,会出现误检。
为了解决这个问题,通过观察,发现闪光灯前后的帧间差一般相差不大,而当发生镜头突变时,突变前后的帧间差都比较大。因此可以通过计算隔帧图像的相关性来区分闪光灯和镜头突变。
当检测出某帧可能发生镜头突变时,计算在该位置的前N帧和后N+1帧的帧间差d(fi-N,fi+N+1),将其与该帧的相邻帧间差d(fi,fi+1)进行对比。如果二者的比值接近1,则表示位置i发生镜头突变,否则为闪光灯影响。因为闪光灯可能持续数帧,因此可以增加步长N来计算帧间差,使得相隔2N+1帧后恰好跳过闪光持续的帧[13]。
我们可以看出,此算法虽然整体是按照直方图比较法来实现的,但为了提高算法的效率,在进行直方图比较时增加了分块思想,使得算法的检测精准度有了大大提高。并且在阈值的设定上,采用了自适应阈值提取法,使得算法更智能化。
3.2 基于HCR的视频镜头分割
目前提出的很多镜头分割算法,对于镜头突变的检测基本上都能达到预期效果,但是对于镜头渐变的检测效果不是很理想。一些分割算法如运动估计、光流分析、运动建模等,虽然分割效果好,但是计算复杂,这些在实际运用中不是很方便[14]。因此提出了基于HCR的视频镜头分割算法,该算法的具体步骤为:
首先,将RGB颜色空间转换到HSV颜色空间,按L=4×H+S计算该帧的HS值,用Hcur、Hshot分别代表当前帧HS直方图和当前镜头HS直方图。得出当前帧Hcur直方图,且Hshot=Hcur,并将当前镜头内已有帧数len赋初值为1;计算下一帧的Hcur,并根据公式
更新镜头特征Hshot;否则,作为候选镜头边界。此时需要进一步判断当前镜头内的视频帧数len是否大于阈值T2;如果len>T2则认为检测到镜头边界,记录当前尽头结束位置并进行下一帧的检测,直到视频结束。
通过分析我们可以得出,此算法的物理意义就是当前检测镜头内所有帧的颜色直方图的平均值,用当前帧的颜色直方图值和镜头的颜色直方图的平均值计算出HCR,不再以相邻帧或者非相邻帧之间距离作为边界检测的依据,而是用HS直方图作为当前帧和当前镜头的特征,具有一定的合理性和准确性,但是在视频较为复杂的时候,会出现一定的误检和漏检,误检的原因是在渐变过程中会有过渡,阈值的设定不好把控,漏检的原因是因为只用一种颜色信息造成的。
4 总结及展望
虽然对视频镜头分割算法的研究已经有很多年了,但总的来说能得到大家一致认同的算法却仍然没有。因此,我们在分析解决具体问题的时候就应该选择合适的算法。例如在进行新闻或体育类视频的镜头检索时,考虑到此类视频的切换方式大多是突变,我们就可以选择针对镜头突变检测效果比较好的算法;而在一些MV和电影的视频中,镜头渐变的切换方式运用的比较多,这个时候,我们应该选择侧重于检测镜头渐变的算法。
通过总结以前的视频镜头分割算法,发现对视频镜头的突变检测的研究相对来说比较成熟,并且效果也比较好,但是对渐变的检测效果就不尽如人意,所以对视频镜头渐变的检测将仍然是研究的重点。并且随着三网融合的发展,作为视频检索的基础技术之一的视频镜头分割将成为一项重要的技术[15]。
参考文献
[1]钱刚,曾贵华.典型视频镜头分割方法的比较[J].计算机工程与应用,2004,32.
[2]刘嘉琦,封化民.基于多模态特征融合的新闻故事单元分割[J].计算机工程,2012,12.
[3]段富,朱伟.视频存储中一种改进的镜头分割算法[J].微机计算机信息,2009,25(73).
[4]Tsamoura E,Mezaris V,Kompatsiaris I.Gradual transition detection using color coherence and other criteria in a video shot meta-segementation framework.IEEE,2008:45-49.
[5]Jorge S,Narayanan,Shrikanth S.Discriminative Wavelet Packet Filter Bank Selection for Pattern Recognition[J].IEEE Transactions on Signal Processing,2009,57(5):1796-1810.
[6]丁洪丽,陈怀新.基于累积直方图的视频镜头边界检测方法[J].电讯技术,2008,48(3).
[7]Ercelebi E,Koc S.Lifting-based wavelet domain adaptive Wiener filter for image enhancement[J].IEEE proceedings.Vision,image and signal processing,2006,153(1):31-36.
[8]秦剑鹏,符茂胜.基于颜色直方图变化率的视频镜头检测[J].计算机应用与软件.2011,4.
[9]Lefever S,incent V.Efficient and robust shot change detecion[J].Springer,207,2(1):23-34.
[10]Brechet L,Lucas M F,Doncarli C,et al.Compression of Biomedical Signals With Mother Wavelet Optimization and Bese-Basis Wavelet Packet Seletion[J].IEEE Transactions on Biomedical Engineering,2007,54(12):2186-2192.
[11]潘磊,吴小俊.基于聚类的视频镜头分割和关键帧提取[J].红外与激光工程,2005,34(3).
[12]汪翔,罗斌.基于颜色空间的自适应阈值镜头分割算法[J].计算机技术与发展.2012,9.
[13]田玉民,吴自力.基于帧间联合直方图帧差的镜头边界检测算法[J].计算机应用,2008,21(10).
[14]巢娟,孙琰锋.基于双重检测模型的视频镜头分割算法[J].上海交通大学学报,2011,10.
[15]张玉珍,杨明.基于运动补偿和自适应双阈值的镜头分割[J].计算机科学,2010,9.