开发者学堂课程【高校精品课-华中科技大学 -智能媒体计算:镜头边界检测(下)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/811/detail/15700
镜头边界检测(下)
内容介绍
一、前言
二、基于边缘特征
三、基于变换特征
四、基于运动特征
五、基于深度学习的镜头边界检测方法
六、镜头边界检测的评价指标
一、前言
前面是切变的检测,这一课讲解渐变的检测。这是一个比较经典的算法,尽管它本身不是特别的准确,但它的思路是后面其他算法的基础。这是由在金山的张洪江博士于上个世纪90年代提出的,叫做双重比较法,即采用两个阈值来检测镜头变换。
在一个镜头内部,切变时会出现一个峰值,而渐变时没有明显的峰值。在镜头内部的帧间差很小,渐变的过程里帧间差变大,但没有峰值,尤其是当一个镜头内部有物体的运动时,也会偶尔出现阈值变大的情况。
根据张洪江博士所说检测步骤,首先设置两个阈值 Tb 和 Ts ( Ts < Tb ),分别是镜头切换和渐变的阈值,用较低的阈值 Ts 来确定渐变过程的起始帧,如果两个连续帧的直方图差 d ( Hi , Hi + 1) 满足 Ts < d ( Hi , Hi + 1 ) < Tb ,则它们被认为很可能是渐变的开始。一旦检出这种帧,就开始进行帧间直方图差累计 Ac ( i ),如果发现下一帧它又变小了,认为这不是渐变开始,如果累加一直都变大,直到大于 Tb ,并且两帧之间又小于 Ts 时,则认为是渐变结束。
两帧之差变小,说明已经进入另一个镜头内部,但实际上,由于镜头变换类型复杂度太高,这个算法的准确率并不是特别高,且实用性也不高,后面根据这个算法做相应的改进,于是有了后面的一些算法。
二、基于边缘特征
通过边缘检测,当相邻两帧的边缘位置的差别较大的时,则认为发生了镜头的变换。即在图像里面找边缘,存在 i +1帧中,与第 i 帧中最近的边缘像素的距离大于r,即它边缘数发生变化。变化数大约一个阈值时,就认为发生了镜头变换。这个方法在一些运动视频里面效果不错,比如说乒乓球比赛(如图),但不是对所有的视频效果都好。
该方法有个特点,由于需要边缘检测和预处理,其计算成本很高,但它能解决光照变化问题,有一些其他因素,例如相机变焦操作等,使得错检率很高。
三、基于变换特征
然后将边缘特征变换到频域去,即基于变换的镜头边界检测方法,就是将帧图像从空间域变换到变换域,常见的变换有傅立叶变换、小波变换、离散余弦变换等等。
基本流程是先将图像进行分块,然后呢对第 i 帧中块 n ,在第 i +1帧中的块 n' 的周围块中找到最佳的匹配块 p ,然后计算这两帧图像的相似矩阵(如图)。
在计算匹配块时,需要计算块之间的相关性,由于在空间域的计算代价大,因此将其转到领域再进行计算。
四、基于运动特征
计算相邻两帧图像块的运动向量( Motion Vector ),用以区别镜头的变换和相机操作(如缩放或平移等),其缺点是快匹配的计算量巨大。将图像分割成多个不重叠的块,然后对第 i 帧中块 n ,将其与第 i +1帧中的每一块执行块匹配,找到匹配块 n’ ,并计算匹配值和运动参数匹配值的有序集合为:
L={li,i=1,…,K,such that l¡≤li+1 fori=1,…,K-1}
最后进一步计算图像匹配值:
求运动向量的过程时,将它变化的频率后会更容易求解,可以一个一个的去找,最后就可以求出(如图)。
在一个镜头内部的运动向量和两帧中切变或者渐变过程,它们一个是全局的,一个是局部的,用这种方法可以有效区分。其实还有其他的方法,例如基于信息特征和基于统计特征等,这里不详细讲解,感兴趣的同学可以去查看相关的参考文献。
五、基于深度学习的镜头边界检测方法
前面的内容是基于手工特征的检测方法。随着近十年深度学习的快速发展,不同的学者开始思考把深度学习运用在镜头边界检测上,他们的思路就是利用神经网络提取我们视频帧的空间和时间特征,并预测或分类镜头边界。
有一个文献中的三阶段方法可以去试试,后期在实验室也用该方法做过实验,用于来证明深度学习运用在镜头边界检测的效果,发现深度学习在渐变检测上效果是不错的。第一步就是候选段的选择,即可能变化的检测,利用 CNN 提取特征,然后根据特征来判断是切变还是渐变。
在候选段选择时,先将视频分割成片段,不能太长,计算片段中第一帧和最后一帧的距离,若超过预设值,则保留为渐变候选段,对候选段执行两次二等分,得到切变候选段(如图),以此类推。
然后利用 CNN 提取候选帧的特征,先用手工特征进行粗略计算,然后用深度特征进行精选计算,最后计算出相邻两帧之间的相似度。对相似度设置多个约束条件(参数),用于确定切变边界和渐变边界。
要想用深度学习对镜头边界进行检测,就要把不同类型的镜头变换收集起来,出做一个大量的数据集,把它标注好切变边界和渐变边界。这个数据集也叫训练集,它越大,模型的训练就越准确,它越准确,检测镜头变换效果就越好。详细的算法大家可以参考文献。
六、镜头边界检测的评价指标
评价镜头边界检测的指标大概有三个,准确率、召回率和 F1-Measure 。准确率就是切变和渐变检测的数量,正确的是多少。在做测试题时,需提前知道它的类型。
公式如下:
召回率是指的总共的变换类型中所找到的变换类型。公式如下:
准确率和召回率综合在一起,可以通过 F1-Measure 度量的公式来进行综合的考量。
如果说准确率和召回率的两个算法都差不多,或F1基本相同,还要比较镜头边界检测算法的效率,即计算成本。
做实验通常是运行实践,比如说每秒钟处理了多少帧。而从算法角度分析,主要是计算复杂度。