镜头边界检测(下)| 学习笔记

简介: 快速学习镜头边界检测(下),介绍了镜头边界检测(下)系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【高校精品课-华中科技大学 -智能媒体计算镜头边界检测(下)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/811/detail/15700


镜头边界检测(下)


内容介绍

一、前言

二、基于边缘特征

三、基于变换特征

四、基于运动特征

五、基于深度学习的镜头边界检测方法

六、镜头边界检测的评价指标

 

一、前言

前面是切变的检测,这一课讲解渐变的检测。这是一个比较经典的算法,尽管它本身不是特别的准确,但它的思路是后面其他算法的基础。这是由在金山的张洪江博士上个世纪90年代提出的,叫做双重比较法,即采用两个阈值来检测镜头变换。

在一个镜头内部变时会出现一个峰值而渐变时没有明显的峰值在镜头内部的帧间差很小渐变的过程里帧间差变大但没有峰值尤其是当一个镜头内部有物体的运动时,也会偶尔出现阈值变大的情况

根据张洪江博士检测步骤,首先设置两个阈值 TbTsTs < Tb ),分别是镜头切换和渐变的阈值,用较低的阈值 Ts 来确定渐变过程的起始帧,如果两个连续帧的直方图差 dHiHi + 1) 满足 Ts < d  Hi  Hi + 1  < Tb ,则它们被认为可能是渐变的开始出这种帧,就开始进行帧间直方图差累计 Aci ),如果发现下一帧它又变小了认为这不是渐变开始,如果加一直都变大,直到大于 Tb并且两之间又小于 Ts ,则认为是渐变结束

变小说明已经进入另一个镜头内部但实际上由于镜头变换类型复杂度太高这个算法的准确率不是特别高,且实用性也不高,后面根据这个算法做相应的改进,于是有了后面的一些算法。


二、基于边缘特征

通过边缘检测,当相邻帧的边缘位置的差别较大的时,则认为发生了镜头的变换。即在图像里面找边缘存在 i +1帧中,与第 i 帧中最近的边缘像素的距离大于r,即它边缘数发生变化变化大约一个阈值就认为发生了镜头变换。这个方法在一些运动视频里面效果不错,比如说乒乓球比赛(如图),但不是对所有的视频效果都好

图片9.png

该方法有个特点,由于需要边缘检测和预处理,其计算成本很高,但它能解决光照变化问题,有一些其他因素,例如相机变焦操作等,使得错检率很高。


三、基于变换特征

然后将边缘特征变换到频域去,即基于变换的镜头边界检测方法,就是将帧图像从空间域变换到变换域,常见的变换傅立叶变换小波变换离散余弦变换等等

基本流程是将图像进行分块然后呢对第 i  n在第 i +1中的 n' 的周围块中找到最佳的匹配块 p ,然后计算这两图像的相似矩阵(如图)。

图片10.png

在计算匹配块时,需要计算块之间的相关性,由于在空间域的计算代价大,因此将其转到领域再进行计算。


四、基于运动特征

计算相邻两帧图像块的运动向量 Motion Vector ),用以区别镜头的变和相机操作(如缩放或平移等),其缺点是快匹配的计算量巨大。将图像分割成多个不重叠的块,然后对第 i 帧中块 n ,将其与第 i +1帧中的每一块执行块匹配,找到匹配块 n并计算匹配值和运动参数匹配值的有序集合为:

L={li,i=1,…,Ksuch that l¡≤li+1 fori=1,…,K-1}

最后进一步计算图像匹配值:

图片11.png

求运动向量的过程时,将它变化的频率后更容易求解,可以一个一个的去找最后就可以求出(如图)。

图片12.png

在一个镜头内部的运动向量和两帧中切变或者渐变过程,它们一个是全局的一个是局部的,用这种方法可以有效区分。其实还有其他的方法,例如基于信息特征和基于统计特征,这里不详细讲解,感兴趣的同学可以去查看相关的参考文献


五、基于深度学习的镜头边界检测方法

前面的内容是基于手工特征的检测方法。随着近十年深度学习的快速发展不同的学者开始思考把深度学习用在镜头边界检测上,他们的思路就是利用神经网络提取我们视频的空间时间特征并预测或分类镜头边界

有一个文献中的三阶段方法可以去试试,后期实验室也用该方法过实验,用于来证明深度学习用在镜头边界检测的效果,发现深度学习在渐变检测上效果是不错的第一步就是选段的选择,即可能变化的检测利用 CNN 提取特征,然后根据特征来判断切变还是渐变

在候选段选择时,先将视频分割成片段,不能太长,计算片段中第一帧和最后一帧的距离,若超过预设值,则保留为渐变候选段,对候选段执行两次二等分,得到切变候选段(如图),以此类推。

图片13.png

然后利用 CNN 提取候选的特征,先用手工特征进行粗略计算,然后用深度特征进行精选计算,最后计算出相邻两帧之间的相似度。对相似度设置多个约束条件(参数),用于确定切变边界和渐变边界。

要想用深度学习对镜头边界进行检测就要把不同类型的镜头变换收集起来,出做一个大量的数据集,把它标注好切变边界和渐变边界。这个数据集也叫训练集,它越模型的训练越准确,它越准确检测镜头变换效果就越好详细的算法大家可以参考文献


六、镜头边界检测的评价指标

评价镜头边界检测的指标概有三个准确率、召回率和 F1-Measure 准确率就是切变和渐变检测的数量,正确的是多少。在做测试题时,需提前知道它的类型。

公式如下:

图片14.png

召回率是指的总共的变换类型中所找到的变换类型。公式如下:

 图片15.png

准确率和召回率综合在一起可以通过 F1-Measure 度量的公式来进行综合的考量

图片16.png

如果说准确率和召回率的两个算法都差不多F1基本相同还要比较镜头边界检测算法的效率,即计算成本

做实验通常是运行实践,比如说每秒钟处理了多少帧。而从算法角度分析主要是计算复杂度

相关文章
|
算法 计算机视觉 开发者
镜头边界检测(上)| 学习笔记
快速学习镜头边界检测(上),介绍了镜头边界检测(上)系统机制, 以及在实际应用过程中如何使用。
镜头边界检测(上)| 学习笔记
|
XML Java 数据格式
SpringBoot中yaml格式、语法规则及数据读取方式(3种)
SpringBoot中yaml格式、语法规则及数据读取方式(3种)
1045 0
|
3月前
|
JSON API PHP
通用图片搜索API:百度源免费接口教程
本文介绍一款基于百度图片搜索的免费API接口,由接口盒子提供。支持关键词搜索,具备详细请求与返回参数说明,并提供PHP及Python调用示例。开发者可快速集成实现图片搜索功能,适用于内容聚合、素材库建设等场景。
|
12月前
|
监控 Python
视频监控笔记(五):Jetson Nano上通过Tkinter和Socket实现GUI文件传输
这篇文章介绍了如何使用Python的Tkinter和Socket在Jetson Nano上实现图形用户界面(GUI)的文件传输系统,包括服务器端和客户端,能够进行文件的发送和接收,并展示传输进度。
167 1
|
9月前
|
人工智能 算法 搜索推荐
云端问道11期方案教学-创建专属AI助手-阿里云百炼产品能力分享
阿里云百炼产品能力分享旨在帮助用户深入了解百炼的核心功能,并快速将大模型与系统结合。主要内容包括:1. 百炼的产品定位和能力简介,涵盖模型推理、应用搭建等;2. 知识检索RAG智能体的应用能力和优势,介绍其高效构建知识库的步骤及常见问题;3. 最佳落地案例实践,如宠物行业AI助手和产业分析类互联网企业的Copilot机器人。通过这些内容,用户可以全面掌握百炼在实际业务中的应用方法和效果。
298 0
|
安全 Linux 开发者
在Linux中,内核模块是什么以及如何加载和卸载它们?
在Linux中,内核模块是什么以及如何加载和卸载它们?
|
Python
md文件格式转成word文档
md文件格式转成word文档
602 0
【单片机】简易计算器完整代码带电路图
【单片机】简易计算器完整代码带电路图
870 0
【单片机】简易计算器完整代码带电路图
|
机器学习/深度学习 存储 自然语言处理
Transformer中的FFN介绍
Transformer中的FFN介绍
903 0
Transformer中的FFN介绍
解决办法:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
解决办法:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
1861 0