将视频划分为场景(片段)的最佳方法是什么

kfi*_*roo 1 c++ opencv


我被要求拍摄一个给定的视频,可能是一个简单的卡通片,然后返回一系列场景.
我需要使用opencv库来执行它,结果格式是无关紧要的(即我可以返回每个场景的时间跨度或实际分割视频).

任何帮助都会得到满足.

谢谢

Tug*_*tes 8

从技术上讲,场景是一组镜头,它们在一个位置连续一起拍摄.甲镜头是一个由多个帧被从连续视点呈现的视频的基本叙述元件.

将视频自动划分为其镜头称为镜头边界检测问题,其中基本思想是识别形成从一个镜头到另一个镜头的过渡的连续帧.

识别转变通常涉及计算两帧之间的相似度值.可以使用诸如颜色,边缘或运动之类的低级图像特征来计算该值.一个简单的相似性指标可能是:

  • s(f 1,f 2)= sum(i在所有像素位置)(abs(f i color(i) - f 2 color(i)))/ N

其中f1f2代表两个不同的视频帧,N代表那些帧中的数字像素.这是两帧之间的平均一阶(曼哈顿)像素颜色距离.

假设您有一个由帧{f 1,f 2 ... f M }组成的视频,并且您已计算出相邻帧之间的距离.如果s(f a,f b)低于某个阈值,则简单的决策度量可以将从f af b的转变标记为镜头边界.

成功的镜头边界检测器使用二阶(或更多)的距离,例如欧几里德距离或皮尔森相关系数,并利用不同特征的组合而不是仅使用一种颜色.

通常,相机或物体移动会破坏帧之间的像素对应关系.在直方图的帮助下使用低级细节的频率将是一种治疗方法.

此外,执行超过两帧的决策有助于找到平滑过渡,其中一个镜头在一段时间内溶解替换另一个镜头.确定一组帧也可以帮助我们识别由闪光或快速移动的相机引起的错误转换.

对于您的问题,请从基本方法开始,例如比较视频帧之间的RGB颜色和边缘响应.分析您的结果和数据,并尝试调整新功能,距离指标决策方法,以获得更好的性能.

将视频分割为镜头的最佳方式因数据而异.机器学习方法,例如使用高斯混合模型对帧过渡进行概率建模或通过支持向量机进行分类,预期比手选阈值更好.但是,在有效选择输入要素之前,了解基础知识非常重要.

自动查找镜头边界足以将视频划分为有意义的部分.另一方面,将视频划分为场景被认为是一个更难的语义问题.然而,镜头分割是它的第一步.