传统光流方法汇总

news/2024/5/1 7:51:47/文章来源:https://blog.csdn.net/qq_29788741/article/details/126969564

又搬运了一个3d视觉相关的~~ 还是先道歉 就是学习用 还是公交上回家看那种 ~~

这次分享传统光流方法汇总及其在深度学习中的应用!(基于相位/能量/匹配/变分)

回望传统光流估计方法

近年来,随着深度学习技术的快速发展,基于深度学习的光流估计技术已成为光流研究领域的热点与主战场。然而,当前很多刚接触光流算法研究的同学直接从深度学习方法开始,大跃进式的迈过了传统光流估计理论与方法。虽然,这并不影响他们产出高质量的研究成果,但是,对传统光流估计方法原理和理论还是有必要进行一定程度的学习。基于此,本文将主要从以下四个方面介绍传统光流估计方法:

  1. 光流的定义与应用;

  2. 传统光流估计方法的分类;

  3. 经典的变分光流估计模型;

  4. 传统光流估计方法在深度学习方法中的应用。

光流的定义与应用

当我们的眼睛在观察运动物体时,运动物体的景象会在我们眼睛的视网膜上产生一系列连续变化的图像,就像水流一样不断流过视网膜(即图像平面),故称之为光流。将其理论化,则有光流是指空间中运动物体在观测成像表面上的像素点运动瞬时速度。其不仅包含了被观察物体的运动信息,而且还包含有关景物丰富的三维结构信息。

此外,光流产生还需要3个必备的条件:

  1. 运动,这是光流形成的必要条件,没有运动就没有像素的位移;

  2. 带光学特性的部位 (例如有灰度的像素点 ) ,它能携带信息;

  3. 成像投影即从场景到图像,能被观察到。

图1展示了光流在三维重建工作中的应用,从图中可以看到,通过利用光流包含的结构信息可以较好的实现场景的3D重建

因此,研究光流的目的就是从光流中恢复物体三维结构和运动,进而为更高级的视觉任务提供可靠支撑。

目前,光流估计技术已经应用于自动驾驶、无人机定位导航、影视特效以及目标跟踪等领域,几乎与人们生产生活息息相关。下方展示了光流在影视特效中的应用。

传统光流估计方法的分类

在深度学习兴起之前,实现光流估计的方法主要分为:

  1. 基于相位的方法;

  2. 基于能量的方法;

  3. 基于匹配的方法;

  4. 基于变分的方法。

下面逐一介绍。

1.基于相位的方法

Fleet和Jepson最先提出将相位信息用于光流计算的思想。他们认为相比图像亮度信息,图像的相位信息更加可靠,利用相位信息获取的光流更加鲁棒。

基于相位的光流估计方法首先利用Gabor滤波器计算图像序列的相位时间梯度,然后,过滤给定时间跨度的非线性相位时间梯度,最后,在一个位置的剩下的相位时间梯度使用递归的神经网络计算出该位置的速度。下图是Fleet和Jepson所提方法的光流估计结果。

其优点在于对图像序列的适用范围较为宽泛,而且速度估计比较精确,缺点在于具有较高的时间复杂性且对图像序列的时间混叠较为敏感。

2.基于能量的方法

该方法利用调谐滤波器的输出能量达到最大来计算光流,由于调谐滤波器是在频域中设计的,因此该方法也称为基于频率的方法 。然而,在使用该类方法的过程中,如果要获得均匀光流场的准确估计,就必须对输入的图像进行时空滤波处理,但这样会降低光流的时间和空间分辨率。并且会涉及大量的计算,因此该方法时间成本较大。

3.基于匹配的方法

基于匹配的光流计算方法又分为基于特征和区域的两种。

基于特征的方法不断地对目标主要特征进行定位和跟踪,对目标大的运动和亮度变化具有鲁棒性。基于区域的方法先对类似的区域进行定位,然后通过相似区域的位移计算光流。他们获的光流方法均是稀疏的。

4.基于变分的方法

基于变分原理的光流估计方法是将光流估计问题归结为求解某个能量泛函的极值问题。因其在模型构建、计算精度以及性能鲁棒性等方面相比上述方法具有显著的优越性,在深度学习方法兴起之前一直是光流研究领域的主流方法。

经典的变分光流估计模型

HS模型

提到变分光流估计模型就不得不提经典的HS光流估计模型。1981年,Horn和Schunck 提出通过最小化全局能量函数来计算每个像素的位移向量。其中,该全局能量函数是基于灰度守恒假设(BCA) 的数据项和平滑项的组合。假设移动像素的灰度随时间保持恒定,则在数学上,可以表述为:

这里I表示图像序列,I(x,y,t)表示在t时刻像素点的灰度,I(x+u,y+v,t+1)表示在t+1时刻下一帧像素点灰度。为了对方程进行优化, HS 应用一阶泰勒展开来线性化方程的右半部分,则可得到近似值:

这就是众所周的光流约束方程,为了便于书写将上式可以重写为如下:

其中,X=(x,y) 是像素点坐标, w=(u,v) 是光流。

基于灰度守恒,则光流变分能量函数的数据项可以被写为:

然而,仅利用灰度守恒原理难以获得唯一解。所以,为了克服歧义,HS 提出了一个平滑约束,该约束规定流场应该平滑变化,因为相邻像素往往具有相似的运动。换句话说,一个点 (𝑥, 𝑦) 与其相邻点之间的流量变化接近于零,于是便有

依据平滑假设,则变分光流能量函数的平滑项可以被定义为:

将数据项与平滑项进行结合,则HS全局能量函数可以写作:

其中, 是权重因子,用于平衡两项。

最后,通过优化该能量函数便可以得到最终的光流w。该方程也可看做是变分光流估计中鼻祖级的能量方程,此后,所有变分光流估计方法几乎都以此能量方程为基础。

通常,对HS方程的改进方法主要有以下几个方向:

  1. 对数据项进行改善,以提高数据项的保真能力;

  2. 对平滑项进行重新设计,以控制光流扩散的程度与方向;

  3. 增加附加约束,解决特定场景下光流估计问题;

  4. 提出不同的优化与计算策略以提高复杂场景光流估计精度。

例如,由于灰度守恒对光照变化不敏感,研究人员就是用对光照变化更为鲁棒的梯度守恒策略代替灰度守恒,则数据项可以被改造为:

其中,=(/,/) 表示图像空间梯度。

由于HS方程中的平滑项是线性扩散的,容易模糊包含图像重要信息的边缘,因此,平滑项又被改造为基于各向同性的图像驱动平滑项:

再如,为了解决大位移光流估计问题,Brox等人在能量函数中的附加了匹配项,也就是LDOF光流估计模型。

其中,w=(u,v)是光流,w表示表示描述符在某些点x处匹配得到的对应向量。前两项是灰度守恒和梯度守恒假设,最后两项的附加的匹配项与描述符。

此外,通过引入由粗到细(coarse-to-fine )的金字塔优化策略也可以解决大位移光流估计不准确问题。下图中(a)表示了由粗到细的金字塔模型,(b)是原始图像,(c)是金字塔第三层,(d)是金字塔第四层,(e)是估计出的光流可视化结果

从上述的模型变化可以看出来,变分光流估计朝着越来越复杂的方向狂奔而去。

Classic+NL模型

在变分光流估计方法中,Classic+NL是继HS经典模型后的又一个经典模型。该方法的作者是光流研究领域的大牛 Deqing Sun所提出。他详细探索了HS各种改模型中不同改进方法对模型性能提升的具体的原因。并发现中值滤波启发式的方法可以有效提高模型光流的估计的准确性与鲁棒性。

将经典的HS模型离散化:

 是惩罚函数,常用的有二次惩罚函数(x)=x,Charbonnier惩罚函数 (x)=(x+)以及Lorentzian惩罚函数(x)=log(1+x/2 )。作者将各个惩罚函数分别加入模型进行测试,以观察各惩罚函数的效果,如表所示。

接着,作者又探索了图像预处理技术、由粗到细策略以及GNC优化策略对模型的影响。其中,作者发现中值滤波启发式的方法对模型性能的提升具有显著作用。下图中左侧为使用中值滤波技术的光流估计结果,右图是未使用中值滤波技术的光流估计结果,可以看出在经典模型中加入中值滤波技术可以显著提升光流估计的效果。

 

尽管,中值滤波技术可以提升光流估计的精度,但是作者认为这种中值滤波方法还存在一定缺陷,即没有考虑像素点之间的距离、颜色以及遮挡因素的影响。为此,他设计了一种非局部加权中值滤波方法。该方法简而言之就是在HS能量函数中附加非局部约束项,其中非局部约束项如下所示:

其中,u''和v''是辅助光流,辅助优化能量函数。w是权重,根据空间距离、颜色值距离和遮挡状态定义,也就是加权中值滤波中的加权。

这里,0是遮挡变量,I(i,j)是Lab颜色空的颜色矢量,是常量均为7。下图展示了滤波窗口内加权与非加权中心像素点与邻域像素间的关系。

下图显示了15*15邻域空间内权重示例,其中, 明亮的值表示较高的权重。在d区域,由于步枪上的像素很少,因此未加权的中位数会过平滑。相反,加权项使用步枪上的值稳健地估计运动。   whaosoft aiot http://143ai.com 

 

最终,Classic+NL模型可公式化为:

该图展示了使用中值滤波与非局部加权中值滤波技术光流估计效果对比,左图为中值滤波,右图为非局部加权中值滤波,可以看出Classic+NL方法具有更高的光流估计精度。

正是由于Classic+NL出色的光流估计性能,在此之后,很多方法都在此模型上进行改进。下图是Middlebury数据集排名,其中标记出的排名靠前的传统方法中均有Classic+NL的身影。 

 

经典光流估计方法在深度学习方法中的应用

虽然,当前基于深度学习的光流估计方法在准确性与鲁棒性方面已经超越传统方法,并且达到了实时估计。但这并代我们可以完全抛弃传统方法。实际上,目前很多深度学习方法均采用了传统方法中的相关技术。

例如,SpyNet 将经典的空间金字塔方法与深度学习结合来计算光流的模型,并引入传统方法中的变形技术(warp)与纯深度学习方法FlowNet相比,它不需要处理大的运动,这些均交给空间金子塔处理,因此,SpyNet模型更小、参数更少。

LiteFlowNet为了解决光流场在动边界出现的模糊与伪影问题,其借鉴传统方法中的各向异性图像驱动、图像和光流驱动的正则化概念。在级联流推断之后,允许流场通过特征驱动局部卷积层在每个金字塔级别进一步正则化, 有效的保护光流边缘。

PWC-Net网络的设计更是遵循了传统方法中三个简单而成熟的原则:金字塔处理、变形(warping) 操作和代价计算 (cost volume),不仅获取了高精度的估计效果,而且实现了模型尺寸与计算精度之间的平衡。下图展示了传统金字塔处理与PWC-Net方法的异同:

可能有人说了,有没有直接将变分方程与深度学习结合的方法?答案当然是有的,不过这些方法一般应用于无监督光流估计模型。因为,无监督学习没有真实值作为收敛对比的条件,因此需要自己设计损失函数以实现模型的训练收敛,而这些损失函数一般往往都借鉴于变分方程。例如Jsaon J等人发表的”Back to Basics: Unsupervised Learning of Optical Flow via Brightness Constancy and Motion Smoothness"无监督光流估计方法。题目中就很直白的说了他们使用了灰度守恒和平滑正则,所以他们网络模型的损失函数为:

且:

是不是很熟悉??是不是跟Classic+NL前半部分很像?

同样的,后续的无监督的方法也在该损失函数上进行改进,例如UnFlow在该损失函数上引入了遮挡感知,上海交大的Zhe Ren等人在损失函数的数据项引入了梯度守恒;Rico Jonschkowski等人设计了一种边缘感知的一阶和二阶平滑项等等。虽然,上述方法可以实现无监督学习模式的光流估计,但是其精度与鲁棒性相比于监督方法还差很多,但整体准确性在逐步提高。下图展示了无监督学习光流估计与监督学习方法的对比。最近,武汉大学的涂志刚教授在IEEE TIP发表了题为“Unsupervised Learning of Optical Flow With CNN-Based Non-Local Filtering ”的无监督光流估计方法,该方法首次将非局部滤波的思想引入无监督光流估计。

 

此外,传统方法还在半监督光流模型中得到采用,如在“GuidedOpticalFlowLearning”论文中,作者用变分方法计算出得光流来引导深度学习模型训练,从而减少模型对标签数据的依赖。 

 

 总结一下,尽管,深度学习光流估计方法在计算精度、泛化性以及时效性方面,已经全面超越传统方法。但这并不代表我们需要全盘放弃对传统方法的研究与思考,实际上,通过对传统方法的研究与理解可以指导我们在深度学习光流估计领域创新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_11449.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式分享合集63

一、PCB为什么一定要做阻抗 在具有电阻、电感和电容的电路里,对交流电所起的阻碍作用叫做阻抗。阻抗常用Z表示,是一个复数,实部称为电阻,虚部称为电抗。 其中电容在电路中对交流电所起的阻碍作用称为容抗,电感在电路…

Pr:多机位编辑

很多时候一个机位满足不了影视创作的需求。比如拍摄人物动作,如果能使远景、近景、特写等一些镜头相互衔接,将会使得角色显得更加丰富饱满。不同的景别传达着不同的信息,更容易交待环境和表达角色的情绪。早期人们在拍摄的同时完成多机位切换…

应用层 HTTP 代理服务器转发消息时的相关头部 请求头 X-Forwarded-For

在http消息传递过程当中会经过很多正向代理服务器和反向代理服务器,这些代理服务器在转发消息的时候会涉及到http的头部,下面将会介绍这些头部,包括由于存在这些代理服务器所以客户端和源服务器之前有许多的tcp连接,有一些http头部…

Flutter快学快用15 服务通信:Flutter 中常见的网络协议

上一课时之前,我们的接口都是在代码中模拟假数据,并没有从服务端获取数据,但是在实际开发中,必须与服务端进行交互。本课时主要介绍在 Flutter 中常见的网络传输协议序列化方式,并对其中比较常用的协议进行简单实践&am…

大数据培训技术phoenix表操作

phoenix表操作 1 显示所有表 !table 或 !tables 2 创建表 CREATE TABLE IF NOT EXISTS us_population ( State CHAR(2) NOT NULL, City VARCHAR NOT NULL, Population BIGINT CONSTRAINT my_pk PRIMARY KEY (state, city)); 如下显示: 在p…

超级基础篇_疑惑实验

1、多态: 多态是什么? 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作多态的优点 1.消除类型之间的耦合关系 2. 可替换性 3. 可扩充性 …

树的应用 —— 二叉树:二叉树的性质

树的应用 —— 二叉树 二叉树(Binary Tree)是n (n ≥0)个节点构成的集合,或为空树(n 0),或为非空树。 对于非空树T ,要满足: ①有且仅有一个被称为根的节点…

FFmpeg入门详解之20:视频编码原理简介

视频为何需要压缩? 原因:未经压缩的数字视频的数据量巨大 ● 存储困难 ○ 一G只能存储几秒钟的未压缩数字视频。 ● 传输困难 ○ 1兆的带宽传输一秒的数字电视视频需要大约4分钟。 主要压缩了什么东西? 原始视频压缩的目的是去除冗余信息&a…

结构体的理解

结构体前言结构体?定义变量如何赋初值?结构体的访问结构体的嵌套使用注意事项结构体的大小内存对齐默认对齐数的修改为什么存在内存对齐?结构体传参位段什么是位段?位段的内存分配深入剖析位段“存”数据位段的“取”位段的跨平台…

Idea工具中,使用Mapper对象有红线

背景: IDEA开发工具,springboot mybatis项目 (这个是不需要改的,也不算是问题,因为项目并不会报错,只是作者好奇找了下问题,并记录一下) 问题描述 mapper对象在service层有红线&a…

8 位卷王!总结 1135 页 Java 核心面试手册,硬钢 BATJ 一线大厂面试官

又到了金九银十求职季! HR 开始拼业绩,招聘网站也开始释放出大量岗位,转行跳槽、毕业求职的人都开始行动起来! 此时,对于大多数程序员来说,最大的目标就是:进大厂! 大厂为什么这么…

ArcGIS Map Sdk for unity使用

本文主要讨论离线模式。 目录 1.底图tpk文件制作 2.3D图层slpk文件制作 3.导入使用 1.底图tpk文件制作 软件:91卫图助手 Arcgis Pro 操作步骤: 打开91卫图助手,更换底图为高德影像/腾讯影像。(百度影像的地理投影格式有自身加密&#xff…

剖析容器运行时

特别说明:一部分转载自大佬文章:https://blog.csdn.net/weixin_39246554/article/details/120926174(不得不说大佬总结的真好啊!!!) 剩下的听老王公开课总结。 k8s官网关于运行时的说明&#x…

Typora Mac版本安装Pandoc导出文件为word格式(windows可通用)

我们在用Typora时导出的格式常常为PDF格式,但是如果我们要将文件导出为word格式的时候却需要安装插件PanDoc,我目前使用的是Mac版本的Typora,给大家分享一下如何安装Pandoc以及导出word格式文件。 1.根据Typora中的说明进入GitHub下载Pandoc…

Maven安装配置

Maven安装配置一、下载 apache-maven-3.6.1Maven官网:https://maven.apache.org/download.cgi(或)直接下载maven-3.8.6:https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.zip解压到当前文件夹二、配置 maven 环境变量右键此电脑 - 属性 - 高级…

MySQL学习——执行计划

MySQL中可以通过explain关键字模拟优化器执行SQL语句,从而知道MySQL是如何处理SQL语句的,这将有利我们做代码的优化。 1、MySQL查询执行过程客户端向MySQL服务器发送一条查询请求 服务器首先检查查询缓存,若缓存中存在,则立刻返回存储在缓存中的结果。否则进入下一阶段 服务…

扫码挪车小程序源码专业版上线了

1 、做挪车码之前,先说一些我个人的观点,大家一起探讨学习交流。 2 、挪车码已经是普遍已久的项目,其核心主要在于解决了车主的隐私问题。 3 、观察过目前市面上所有的挪车码系统, 公司也购买了一套测试了完整流程,盈…

【图像分割】基于matlab萤火虫算法图像分割【含Matlab源码 2136期】

一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【图像分割】基于matlab萤火虫算法图像分割【含Matlab源码 2136期】 点击上面蓝色字体,直接付费下载,即可。 获取代码方式2: 付费专栏图像处理(Matlab) 备注: 点击上面蓝色字体付费专栏图像处理(Matlab),…

parted分区步骤

parted分区步骤概述 通常我们用的比较多的一般都是fdisk工具来进行分区,但是现在由于磁盘越来越廉价,而且磁盘空间越来越大;而fdisk工具他对分区是有大小限制的,它只能划分小于2T的磁盘。但是现在的磁盘空间很多都已经是远远大于2T了,甚至达到2.5T和3T,那要怎么办能,有两…

路径规划总结(一)

第三讲 路径规划 ps:排版有一些问题,懒得改了,见Github 一、导航规划简介 导航规划:在给定环境的全局或局部知识以及一个或者一系列目标位置的条件下,使机器人能够根据知识和传感器感知信息高效可靠地到达目标位置。 导航规划类…