基于相位的运动放大:如何检测和放大难以察觉的运动(01/2)

基于相位的运动放大:如何检测和放大难以察觉的运动

目录

  • 一、说明
  • 二、结果的峰值
  • 三、金字塔背景
    • 3.1 可操纵金字塔
    • 3.2 亚倍频程复数可控金字塔
  • 四、基本方针
    • 4.1 1D 问题陈述
    • 4.2 一维方法
    • 4.3 实际实施说明
  • 五、放大倍率的限制
    • 5.1 空间支持的影响
    • 5.2 频带的影响
  • 六、推导放大范围
    • 6.1 将频率纳入运动界
    • 6.2 降低八度以增加放大倍率
  • 七 处理噪音
    • 7.1 原理
    • 7.2 滤波相位增量
  • 八、总结
  • 九、结论

一、说明

   当我第一次接触到运动放大时,我很惊讶,移动不到一个像素的东西怎么会有运动放大?没错,我们实际上可以检测和放大静态视频中难以察觉的运动,而且我们可以在不放大噪音的情况下做到这一点!这个概念有很多应用,并且已经在多个行业中使用。例如,结构和设备并不总是容易安装传感器。可靠的视觉技术可以成为快速识别和诊断问题的有效方法,这提供了低成本的结构分析。

第 1 部分:背景和理论(本)
第 2 部分:Python 实现

二、结果的峰值

   下面的 GIF 显示了基于相位的运动放大的几个示例,原始视频在左侧,运动放大视频在右侧。在每个 GIF 中,处理仅应用于 YIQ 色彩空间中的亮度通道。
在这里插入图片描述
图 1. 放大系数为 25 的运动放大起重机视频。

在这里插入图片描述
图2.运动放大吉他弦,放大倍数为 25。

   这不是最新的AI,原始论文是2013年的。在这篇文章中,我们将解开论文中的主要概念,并了解基于相位的运动放大背后的细节。在第 2 部分中,我们将在 Python 中从头开始实现它,并学习如何制作如上所示的视频和 GIF。

三、金字塔背景

   大部分背景知识涉及理解复杂可操纵金字塔,以及可选的亚倍频程复杂可操纵金字塔。为简洁起见,我们仅在此处进行总结,详情请参阅链接的帖子。

3.1 可操纵金字塔

   可操纵金字塔是一种线性的多尺度和多方向图像分解,使我们能够在不同的频带和方向上观察图像。每个滤波器都占据频域的连续区域,并具有定位在空间域中的脉冲响应。在实践中,我们生成了一组不同频段和方向的频域滤波器以及非定向高通和低通分量,然后在频率空间中进行分解。该转换没有混叠,并且过度完成,这意味着它包含足够的信息来重建原始图像。

   复杂可操纵金字塔在多个尺度和方向上添加了局部相位的概念。一般来说,相位告诉我们事物在图像中的位置,而局部相位只是某个位置的相位概念,例如图像左下角的相位。如果我们看到视频序列中的相位变化,这意味着图像中的事物正在移动。视频序列中的局部相位描述了图像在给定位置的变化方式,这正是我们将用来放大运动的内容。关键是要知道如何使用它,我们将在本文后面介绍。

   复杂可控金字塔提供局部相位信息,用于描述视频帧在给定位置的变化方式

3.2 亚倍频程复数可控金字塔

   默认情况下,可操纵金字塔的频率滤波器相距一个倍频程。由于频域支持与空间域支持成反比,因此我们可以通过在频域中缩小滤波器来增加滤波器的空间域支持。这就是Sub-Octave滤波器的全部功能。例如,如果我们有半倍频程滤波器,那么需要两个倍频程滤波器才能代替单个倍频程滤波器。我们稍后将看到,亚倍频程滤波器对于大型运动放大至关重要。

   在这篇文章中,我们将大量讨论复杂可操纵金字塔,从现在开始,我们将以简写的方式将它们称为金字塔。

四、基本方针

   在我们全力以赴尝试用视频来做到这一点之前,让我们先考虑一下 1D 中的事情。通过这篇文章,概念将在 1D 中解释,并附有将其与 2D 实用方法相关的注释。

4.1 1D 问题陈述

   考虑一个空间信号 f(x),它可以通过某个瞬态位移函数 δ(t) 进行位移,位移的信号为:f(x + δ(t)))。我们希望将位移放大 α 倍,使放大的位移信号为:f(x + (1 + α)δ(t)))。

4.2 一维方法

   我们可以使用傅里叶级数分解来表示复正弦曲线的信号。这种分解为复正弦曲线是我们用于视频的金字塔分解的 1D 模拟。傅里叶分解。修改自源代码。
在这里插入图片描述

   每个正弦波的相位 ω(x + δ t)) = ωx + ωδ(t) 包含运动信息,其中 ω 对应于单个频带。我们需要做的第一件事是隔离与运动相关的相位信息。直流分量:ωx 表示底层空间信号,对应于静态背景。如果我们去掉它,我们就剩下 ωδ(t) 分量,其中包含我们希望放大的运动信息。我们将其表示为带通阶段 B。
在这里插入图片描述

   然后,我们可以按α比例缩放 B,并在频域中获得放大的运动,以获得运动放大的复正弦曲线。
在这里插入图片描述

   我们对每个子带ω都这样做,以获得空间域中的全运动放大信号:f(x + (1 + α)δ(t)))。

4.3 实际实施说明

   在实践中,我们可以使用参考系的局部相位来估计直流分量ωx的值,以便我们可以提取运动信息。我们从电流帧处的相位中减去参考相位,得到运动信号ωδ(t)。由于我们假设视频大部分是静态的,因此这种方法往往效果很好。

   除了去除直流分量外,我们还对相位增量进行时间带通滤波,以隔离某个感兴趣的时间频带。这对如何使用运动放大有很大的影响,因为我们能够可视化我们选择的任何频段。例如,我们可以可视化已知的感兴趣频率,也可以扫描多个频段以发现隐藏的运动。

   在视频帧中,运动是局部的,这意味着帧中一个位置的对象相对于其他位置的其他对象以不同的方式移动。因此,δ(t) 实际上是 δ(x, t),其中空间变量 x 允许我们根据空间位置区分时间 t 的运动。

五、放大倍率的限制

   事实证明,我们可以放大运动的程度是有限的。除了看起来很荒谬之外,极大的运动放大倍率并不能代表真实的信号。换句话说,错误的特征将被放大!此限制来自金字塔筛选器的两个方面:

  • 滤波器的空间支持→空间覆盖
  • 滤波器的空间频带→中心频率
       让我们看两个一维示例,以了解为什么它们会限制放大倍率。

5.1 空间支持的影响

   金字塔滤波器的空间支持有一些滚降,我们可以使用高斯窗口在一维中近似它。在此示例中,考虑一个由复正弦曲线和高斯窗口组成的函数 f。
在这里插入图片描述

   f 的参数是:频率 ω、位置向量 x 和标准差 σ。我们可以将这个函数移动一个倍α正如我们之前所看到的,这个相移对应于运动放大倍率。由于窗口化,我们只能在高斯窗口的范围内移动它。让我们在 Python 中实现它以更好地理解它,用于此的笔记位于 GitHub 上。

S = lambda x, omega : np.exp(1j*omega*x) 
G = lambda x, sigma : np.exp((-x**2)/(2*sigma**2))x = np.arange(-15, 15, 0.01)
octaves = 1 # number of octaves for Gaussian window
sigma = octaves*np.pi # std dev of Gaussian window
omega = np.pi/4 # frequency
alpha = np.pi/2 # initial phase shift factorsignal = S(x, omega) * G(x, sigma) 
shifted = S(x, omega) * G(x, sigma) * np.exp(1j*omega*alpha)

下面的 GIF 显示了复正弦波的实部和虚部的相移。
在这里插入图片描述
图3.具有复正弦波的相移示例。
   一旦我们将相位偏移一定量,振幅将由于高斯窗口而高度衰减。如果我们可以增加高斯窗口的大小(增加它的空间支持),那么我们可以扩展这个限制并实现更大的偏移,而不会有那么多的衰减。

回到 2D 中,这意味着我们只能将运动放大一定数量的像素,然后才能将信号降级到无法识别的程度。此限制基于金字塔过滤器的空间支持。如果我们要增加空间支持,那么我们可以执行更强烈的放大倍率,并且仍然准确地接近真实的移位信号。

5.2 频带的影响

   当我们应用运动放大倍率时,我们将其应用于单个金字塔滤镜。我们可以应用的有用运动放大倍率与滤波器的频带直接相关。让我们通过比较两种不同频率下的相移效应来在一维中说明这一点。(从现在开始,我们将只看正弦曲线的实部)。

omega1 = 0.2 # frequency 1
omega2 = 1.0 # frequency 2signal_1 = S(x, omega1) * G(x, sigma) 
signal_2 = S(x, omega2) * G(x, sigma) alpha_vals = np.arange(0, 2*np.pi, 0.025)for i, alpha_val in enumerate(alpha_vals):f_shifted_1 = signal_1 * np.exp(1j*omega1*alpha_val)f_shifted_2 = signal_2 * np.exp(1j*omega2*alpha_val)

在这里插入图片描述

图4.相移对全倍频程高斯窗口内不同频段的影响。仅显示复正弦曲线的实部。资料来源:作者。
   两个正弦波的偏移量相同,但请注意频率较高的右侧衰减量较大。更糟糕的是,如果我们继续前进,我们将得到一个翻转(由于周期性),所以主导特征甚至不会是我们打算放大的特征。

   大放大倍率在较高的空间频率下具有更大的衰减

六、推导放大范围

   您可能会问自己,在降低信号质量之前,我们可以将运动放大多少?我很高兴你问,我们实际上可以根据高斯窗口近似推导出放大倍率的理论界限。我们简单地将运动绑定为高斯窗口的一个标准差,因此我们至少保持原始信号的 ~61%。
在这里插入图片描述

   好吧,这似乎不是很有见地,我们所做的只是根据标准差进行任意的截止。边界的真正用途是观察某些因素(如频率和倍频程带宽)如何影响运动放大倍率和信号衰减关系。

6.1 将频率纳入运动界

   在全倍频程带宽滤波器(复数可控金字塔提供)中,我们在窗口下大约有一个周期的正弦曲线。如果我们假设窗口的全宽约为 4σ,那么我们得到:
在这里插入图片描述
其中ω对应于滤波器的频带。这提供了频率 ω 或波长 λ 的界限:
在这里插入图片描述

   该界限总结了信号频率与有用放大倍率之间的关系,即没有极端衰减的放大倍率。它告诉我们,较低频率(较长)的放大信号比较高频率的信号经历的衰减更少。现在让我们看看倍频程带宽如何影响放大倍率范围。

6.2 降低八度以增加放大倍率

   如前所述,增加滤波器的空间支持将使我们能够在减少信号衰减的情况下增加放大倍率。亚倍频程意味着我们正在减少滤波器的频率支持(使它们在频率空间中更小),这反过来又增加了每个滤波器的空间支持。例如,半倍频程意味着两个半倍频程滤波器在频率空间中取代了单个全倍频程滤波器。在一维中,半倍频程高斯窗口可以支持正弦曲线的两个周期,我们可以相应地修改我们的边界。
在这里插入图片描述
更进一步,四分之一倍频程带宽高斯窗口可以支持正弦波的四个周期。我们可以用倍频程带宽来概括边界,其中放大倍率的边界变大,倍频程带宽减小。
在这里插入图片描述

这是一张 GIF,显示了 Sub-Octave 的影响。
在这里插入图片描述

图5.正弦波在不同倍频程带宽的高斯窗口下移位。资料来源:作者。
   我们还可以使用由高斯窗口化的局部函数来可视化移位。
在这里插入图片描述

图6.局部函数在不同倍频程带宽的高斯窗口下发生偏移。资料来源:作者。
   上面的 GIF 显示,在四分之一倍频程窗口下的移位信号达到 0.60 之前,全倍频程高斯窗口中的移位信号被长期衰减为 0。

七 处理噪音

7.1 原理

   这种基于相位的运动放大方法实际上并没有放大噪声,而是通过移动的运动将其转换。考虑一个带有附加噪声的图像 I:I + σnn,其中噪声功率 σn 远小于图像信号 I。它在频率 ω 的金字塔滤波器下的响应表示为:
在这里插入图片描述

   其中 N 是噪声对滤波器的响应 由于我们假设噪声远小于信号,因此我们也假设对应于运动的相位近似等于 ωδ(t),就像我们之前看到的一样。放大的运动响应为:
在这里插入图片描述

   运动放大滤波器响应中的噪声项现在具有相移 αωδ(t),对应于噪声的平移,而不是放大。这与这种基于阶段的方法的基础知识有关。我们不是直接放大信号,而是通过对感兴趣的特征进行相移来放大运动。碰巧的是,我们也放大了噪声的运动(将噪声从一个点移动到另一个点),但我们实际上并没有增加噪声功率。

7.2 滤波相位增量

   尽管这些假设意味着滤波相位将等于ωδ(t),但我们仍然需要意识到噪声会破坏相位信号并导致不正确的运动被放大。为了解决这个问题,我们可以过滤获得的相位差。为此,我们使用幅度加权滤波器对每一帧的相位差应用空间高斯模糊。
在这里插入图片描述

   其中 φ 是金字塔滤波器 i 和视频帧 k 处的相位信号,A 是电流滤波器响应的幅度,K 是标准偏差为 ρ 的高斯核。

八、总结

   基于相位的运动放大率概述如下所示:
在这里插入图片描述

图7.基于相位的运动放大概述。来源。
   需要注意的是,我们一次对单个金字塔过滤器执行处理,并且通常对视频的所有帧执行处理。但是,处理不是在高通和低通金字塔组件上执行的,它们保持不变,并在最后一步重新合并。

🇦 → 使用复杂可操纵金字塔分解图像。
🇧 → 从每个帧中移除直流相位分量,以获得运动信号 ωδ(t) 的相位。然后,将视频帧中的运动/相位信号按时间过滤到目标带宽。
🇨 → (可选)执行幅度加权滤波以对相位信号进行降噪。
🇩 → 在每个滤光片上应用运动放大倍数 αωδ(t)。
🇪 → 重新合并高通和低通组件并折叠金字塔并获得运动放大的视频帧

九、结论

   我们已经通过一维示例介绍了基于相位的运动放大的基础知识。我们已经描述了 2D 的基本方法以及它取决于空间支持和频段的局限性。我们已经展示了噪声实际上是如何被放大的,它只是被平移,这是这种方法的一个方便的特点。上面显示了该算法的高级概述,第 2 部分展示了如何实际实现它。

引用
[1] Simoncelli, EP, & Freeman, WT (未注明日期).可操纵金字塔:一种用于多尺度导数计算的灵活架构。论文集,图像处理国际会议。https://doi.org/10.1109/icip.1995.537667

[2] 波蒂利亚,哈维尔和西蒙切利,埃罗。(2000). 基于复杂小波系数联合统计的参数化纹理模型.国际计算机视觉杂志。40. 10.1023/A:1026553619983.

[3] Granlund,GH和Knutsson,H.(2011)。计算机视觉的信号处理。斯普林格。

[4] Wadhwa,N.,Rubinstein,M.,Durand,F.和Freeman,WT(2013)。基于相位的视频运动处理。基于相位的视频运动处理。https://people.csail.mit.edu/nwadhwa/phase-video/

[5] https://rxian.github.io/phase-video/

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

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

相关文章

好书推荐丨细说Python编程:从入门到科学计算

文章目录 写在前面Python简介推荐图书内容简介编辑推荐作者简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家推荐一本Python基础入门的全新正版书籍,对Python、机器学习、人工智能感兴趣的小伙伴们快来看看吧~ Python简介 Python 是一种广泛使用的高级、解…

多目标追踪概述

1. 目标跟踪分类 单目标跟踪:在视频的初始帧画面上框出单个目标,预测后续帧中该目标的大小与位置多目标跟踪:追踪多个目标的大小和位置,且每一帧中目标的数量和位置都可能变化 2. 多目标跟踪目前的主要问题 形态变化&#xff1a…

做了个很牛的网站,可以搜索网站的网站到底有多好用?

今天给大家推荐的网站叫做:毒蘑菇 - 搜索 毒蘑菇搜索,顾名思义呢,搜索的功能比较好用,大家上网的时候总是需要记住网站的地址,即使你知道网站的名称,也得跳转到百度然后在搜索,有时候百度上那么…

天哪!还有这些逆天的fofa​语句?(二)

接上文 天哪!还有这些逆天的fofa语句? 再分享几条,个人觉得比较有意思的fofa语句。 情侣飞行器 之前写过文章的,有兴趣的师傅可以试着翻翻以前的文章去破解密码 fofa语句:"static/js/index.d2dcdf5b.js"…

sql-labs第46关(order by盲注脚本)

一、环境 网上有自己找 二、解释 order by 注入我们看他的true和false来进行注入出来 二、实操 让我们用sort 看看源码 最终我们的id是放到order by后面了 如果我们直接用列去排序 ?sortusername/password username: password: 可以看到顺序是不…

一个39岁程序员的自白,大龄程序员的出路在哪里?

一个39岁程序员的自白,大龄程序员的出路在哪里? 大龄程序员,最悲惨的,可能是但凡你发个贴,下面就会有类似这种人来怼你 本文来自知乎一个大龄程序员老哥(白圣君)的自白,涤生哥已经经…

JAVA集合进阶(Set、Map集合)

一、Set系列集合 1.1 认识Set集合的特点 Set集合是属于Collection体系下的另一个分支&#xff0c;它的特点如下图所示 下面我们用代码简单演示一下&#xff0c;每一种Set集合的特点。 //Set<Integer> set new HashSet<>(); //无序、无索引、不重复 //Set<…

【架构】GPU架构总结

文章目录 GPU架构GPU渲染内存架构Streaming Multiprocessor(SM)CUDA CoreTensor CoreRT CoreCPU-GPU异构系统GPU资源管理模型 GPU架构演进G80 架构Fermi 架构Maxwell架构Tesla架构Pascal架构Volta 架构Turing架构Ampere 架构Hopper架构 参考文献 GPU架构 主要组成包括&#xf…

外汇天眼:掌握这个方法,你也能成为交易高手!

在金融市场这个大潮中&#xff0c;外汇交易因其高杠杆、24小时交易等特点吸引着无数交易者。然而成功的交易并非易事&#xff0c;对于投资者来说&#xff0c;外汇交易市场是一个复杂且多变的市场&#xff0c;要在外汇市场中获得成功就需要扎实的外汇金融基础知识和独特的策略&a…

压力测试工具Jmeter的下载与使用

1、进入官网下载Jmeter https://jmeter.apache.org/ 国内镜像&#xff08;下载的慢的话可以用国内镜像下载&#xff09; https://mirrors.cloud.tencent.com/apache/jmeter/binaries/ 2、跳转到下载页面 3、根据不同系统下载相应版本的Jmeter压缩包&#xff0c;Linux系统下载…

医院LIS(全称Laboratory Information Management System)系统源码

目录 一、医院LIS系统概况 二、医院LIS系统建设必要性 三、为什么要使用LIS系统 四、技术框架 &#xff08;1&#xff09;总体框架 &#xff08;2&#xff09;技术细节 &#xff08;3&#xff09;LIS主要功能模块 五、LIS系统优势 &#xff08;1&#xff09;客户/用户…

LeetCode_Java_环形链表(题目+思路+代码)

141.环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位…

49.仿简道云公式函数实战-文本函数-Ip

1. Ip函数 获取当前用户的ip地址 注意是Ipv4的地址 2. 函数用法 IP() 3. 函数示例 获取当前用户的ip地址IP() 4. 代码实战 首先我们在function包下创建text包&#xff0c;在text包下创建IpFunction类&#xff0c;代码如下&#xff1a; package com.ql.util.express.sel…

如何使用Lychee+cpolar搭建本地私人图床并实现远程访问存储图片

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站&#xff0c;可以看做是云存储的一部分&#xff0c;既可…

EAP-TLS实验之Ubuntu20.04环境搭建配置(FreeRADIUS3.0)(二)

上篇文章简要介绍了freeradius的搭建及配置&#xff0c;在最后数据库连接阶段还没进行测试验证&#xff0c;今天继续。 修改相关文件 1 radiusd.conf 打开762行注释&#xff08;&#xff04;INCLUDE mods-enabled/sql&#xff09;&#xff1b; 2 sites-available/default …

【大数据】Flink SQL 语法篇(四):Group 聚合、Over 聚合

Flink SQL 语法篇&#xff08;四&#xff09;&#xff1a;Group 聚合、Over 聚合 1.Group 聚合1.1 基础概念1.2 窗口聚合和 Group 聚合1.3 SQL 语义1.4 Group 聚合支持 Grouping sets、Rollup、Cube 2.Over 聚合2.1 时间区间聚合2.2 行数聚合 1.Group 聚合 1.1 基础概念 Grou…

DevOps 周期的 6 个 C

中型到大型软件开发项目涉及许多人员、多个团队、资源、工具和开发阶段。它们都需要以某种方式进行管理和简化&#xff0c;不仅可以获得所需的产品&#xff0c;而且还要确保将来在不断变化的环境下易于管理和维护。组织通常遵循许多项目管理模型和技术。DevOps 是其中之一&…

家用超声波清洗机哪个好?四款高评分超声波清洗机分享

超声波清洗机可以说是眼镜党家中必备的一款超声波清洗机&#xff0c;毕竟它能高效的帮我们解决清洗眼镜的烦恼&#xff0c;也可以帮我们清洗家中其他的一些物品。很多朋友因为各种原因没有时间清洗眼镜以及家中的小物件物品&#xff0c;长时间下来一次物品或者是眼镜上就会堆积…

卷积神经网络 CNN

目录 卷积网络与传统网络的区别 参数共享 卷积神经网络整体架构 卷积操作的作用 卷积核的定义 卷积特征值计算方法 卷积层涉及的参数 边缘填充 ​编辑 卷积结果计算 池化层 整体网格架构 VGG网络架构 残差网络Resnet 卷积网络与传统网络的区别 卷积神经网络&#x…

50.仿简道云公式函数实战-文本函数-ISEMPTY

1. ISEMPTY函数 判断值是否为空字符串、空对象或者空数组。 支持使用 ISEMPTY 函数的字段有&#xff1a;单行文本、多行文本、数字、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、地址、定位、成员字段、部门字段、微信昵称、微信 OpenID、扩展字段。 2. 函数用法 …