【计算机视觉】Lecture 23:光流估计

2023-05-16

流估计

主要概念:

  1. 亮度08好恒定方程

  2. 孔径问题

  3. Lucas-Kanade算法

回顾:由于自身运动产生的场

流(Flow):
在这里插入图片描述

在这里插入图片描述
旋转分量不依赖于场景结构。平移分量随场景 Z 值的变化而变化。也就是说,它显示出运动视差(parallax)。

特例:纯平移

为了更好地理解流场是什么样子,让我们只考虑纯平移运动的情况。

然后,在场景中通过平行速度矢量的投影形成流

在这里插入图片描述

特例1:纯平移

在这里插入图片描述

假设 Tz 不等于 0

定义:在这里插入图片描述

在这里插入图片描述

假如 Tz = 0 则

在这里插入图片描述
在这里插入图片描述

所有运动场矢量彼此平行,并且与深度成反比!(与简单的立体视觉联系起来)

在这里插入图片描述

此情况下的运动场是径向的:

  1. 它由通过 po=(xo,yo)的向量组成
  2. 假如:
    1)Tz > 0 (相机向物体移动)
    向量远离po
    po是扩展点 POINT OF EXPANSION
    2)Tz < 0 (相机远离物体)
    向量指向po
    po是收缩点 POINT OF CONTRACTION

纯旋转:运动场的性质

假如 Tz 不等于0,则运动场是径向的,所有向量都指向(或远离)单个点po。如果Tz=0,则运动场是平行的。

运动场向量的长度与深度Z成反比。如果Tz≠0,它也与p和po之间的距离成正比

po是平移方向的灭点(vanishing point)

po是平行于平移向量的光线与图像平面的交点

运动场Motion Field和光流Optic Flow

运动场:三维相对速度矢量在二维图像平面上的投影

光流:在图像中观察到的亮度模式(brightness patterns)的二维位移

运动场是我们想知道的。
光流是我们可以估计的。

注意:光流不等于运动场

考虑一个移动的光源:

在这里插入图片描述

MF=0,因为场景中的点没有移动

OF不等于0,因为图像中存在移动模式

用OF近似MF

不过,我们将估计 OF(因为 MF 不能被真正观察到!)。

为了避免由于改变光照而产生的视在流(apparent flow),假设移动对象的视在亮度(apparent brightness)保持不变。

亮度恒定方程

考虑场景点在图像序列中移动

在这里插入图片描述

假设:它的亮度/颜色将保持不变(部分原因是我们可以认识到它是同一点)

在这里插入图片描述

两边同时对 t 求导

在这里插入图片描述

使用链式法则

在这里插入图片描述

在这里插入图片描述

空间梯度,我们可以计算

在这里插入图片描述

光流,我们希望得到的

在这里插入图片描述

帧间导数。也是知道的,例如帧差

可以写为

在这里插入图片描述

光流被限制在一条线上!(方程是 a u+b v+c=0 这样的形式)

在这里插入图片描述

绿色圈:已知(空间和时间梯度)
红色方框:未知(光流矢量部分)

意义

在这里插入图片描述

直觉上,这个约束意味着

– 梯度方向的光流部分是被确定的(称为垂直光流)

– 平行于边缘的光流部分是未知的

孔径问题 The Aperture Problem

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

图像亮度恒定假设只提供空间图像梯度方向上的OF分量

另一个例子是理发杆错觉。

在这里插入图片描述考虑一个点

视在的运动是往上
真实的运动是往左

光流不等于运动流

孔径问题再一次提醒我们光流和运动流是不一样的

  1. 在边缘附近,我们只能观察(测量)垂直于边缘的光流分量
  2. 不能够测量平行于边缘的光流分量
  3. 光流不可观测的另一个例子是在恒定灰度的区域。没有观察到流。

计算光流

计算光流的算法有两种形式:

  1. 差分方法
    在所有像素上的图像亮度基于空间和时间的变化。
    用于计算稠密光流
  2. 匹配方法
    类似于立体特征匹配,计算视差
    用于计算稀疏光流

一种差分方法:恒定光流,也就是Lucas-Kanade光流

Lucas-Kanade光流动机

在这里插入图片描述
我们需要两个或者更多的像素去解决
由于孔径问题,我们希望包括不同梯度方向的像素。

解决孔径问题

使用两个或多个方向的梯度

在这里插入图片描述

单个梯度方向的孔径问题
用两个或更多方向能够推导出正确的结果

如何为一个像素得到更多的方程?

  • 基本思想:引入额外的约束

    • 最常见的是假设流场是局部平滑的(假设某一个窗口内的像素具有相同的运动)

    • 例如,假设像素领域内的像素都具有相同的位移(u,v)
    —如果我们使用一个 5x5 的窗口,每个像素就会有25个方程!

在这里插入图片描述

Lucas-Kanade 光流

我们有比未知数更多的方程:解最小二乘问题,也就是:

在这里插入图片描述

在这里插入图片描述

对 K×K 窗口内的所有像素求和得到 在这里插入图片描述

可解的条件

最优(u,v)满足Lucas-Kanade方程
在这里插入图片描述

什么时候有解?

  1. ATA应该是可逆的

  2. 由于噪声,ATA不应该太小

    – ATA 的特征值 λ1 和 λ2 不应该太小

  3. ATA应该 well-conditioned

    – λ1 / λ2 不应该太大(λ1 是较大的特征值)

ATA看起来相似?

观察矩阵:

在这里插入图片描述

Harris角点检测矩阵

回顾:Harris角点检测算子

在 Lecture 6,我们通过考虑偏移灰度图像块的SSD导出了Harris角点检测算子

在这里插入图片描述

结合Harris进行运动分析

在这里插入图片描述

在这里插入图片描述

之前这里是单帧的空间偏移。现在是一段时间内两帧之间的位移。

在这里插入图片描述

当前帧

在这里插入图片描述

前一帧

在这里插入图片描述

边缘,大的梯度, λ1 大,λ2 小 ——将会有孔径问题

在这里插入图片描述

纹理弱(平坦)的区域,梯度的幅值小,λ1 小,λ2 小——Ill-conditioned 矩阵,可能计算垃圾答案

在这里插入图片描述

角点,梯度在各个方向上是不同的并且具有较大的幅值,λ1 大,λ2 大——很好的角点特征。也是估计光流的好地方!

意义

• 角点是当 λ1 和 λ2 都较大时;这也是 Lucas-Kanade 光流最有效的时候。

• 角点是具有(至少)两个不同梯度方向的区域。

• 角点处的孔径问题是会消失的。

• 角点是计算光流的好地方!

基于特征点的方法

稀疏光流的特征匹配

在这里插入图片描述

基本思想:
在第一幅图像中找到角点(因为角点是估计光流的好区域)
在第二幅图像中搜索对应的灰度图像块

KLT算法

http://www.ces.clemson.edu/~stb/klt/

通过2帧或更多帧图像跟踪角点特征

KLT算法

  1. 在第一幅图像中找到角点
  2. 提取每个角点处的灰度图像块
  3. 用 Lucas-Kanade 算法估计图像块像素的恒定位移

细节:

  1. 运用迭代和多分辨率来处理大运动
  2. 亚像素位移估计(双线性插值变换)
  3. 可以通过整个帧序列跟踪特征点
  4. 具备旧的特征点“丢失”时添加新特征点的能力

基于互相关性的匹配

另一种方法是使用互相关性(correlation)或 NCC 来匹配灰度图像块。(之前有讨论过)

  1. 在第一幅图像中找到角点
  2. 提取每个角点处的灰度图像块
  3. 使用 NCC 计算第二幅图像中搜索窗口内的匹配分数
  4. 识别最高得分(最佳匹配)

关于效率的重要说明

一幅图像中给定的图像块

在这里插入图片描述

我们不想在第二张图片中到处搜索匹配块。

在这里插入图片描述

在立体视觉中我们有一个极线约束

在这里插入图片描述

但这里我们不知道相对的 R,T,所以没有对极约束
但是…运动是已知比较“小”的,所以仍然可以限制搜索区域。

在这里插入图片描述

关于使用归一化互相关的说明

如果我们使用归一化互相关性来匹配特征块,我们可以放松(relax)恒定亮度假设!

因此,我们可以消除了一些潜在的误差源(光照或摄像机增益的变化)

另一个基于互相关性的算法

Due to David Nister, “Visual Odometry”, CVPR 2004

观察:一张图片中的角点在短时间内倾向于停留在角点上

因此,我们只需要匹配角点到角点

Nister 的算法

  1. 在第一幅图像中找到角点
  2. 在第一幅图像中提取每个角点处的灰度图像块
  3. 在第二幅图像中找到角点
  4. 在第二幅图像中提取每个角点处的灰度图像块
  5. 找到匹配对 (c1, c2)
    • C1 是图像1的一个角点块
    • C2 是图像2的一个角点块
    • C2 是 C1 的最佳匹配
    C1 是 C2 的最佳匹配 ——为什么还要这么做?因为这是线性分配问题 (linear assignment problem) 的近似解——你会得到更好的匹配。

线性分配问题Linear Assignment Problem

又被称为婚姻问题“Marriage Problem”

最简单的形式:
1) 给定 k 个男孩和 k 个女孩
2) 让每个男孩按希望和其结婚程度给女孩排序
3) 让每个女孩也给男孩排序
4) 婚姻问题决定了男孩和女孩的配对,使总体配对排名之和最大化

说明:一般来说,你可能得不到你最想要的配偶,但平均来说,你几乎不会得到最不想要的。

线性分配问题Linear Assignment Problem

LAP的最优解对于实时特征匹配/跟踪来说计算量太大。

因此,我们使用一个启发式的解决方案,其中特征只有在彼此最匹配的情况下才能配对(即,男孩-女孩匹配对中彼此都将对方排序为第一)

这会丢弃掉很多潜在有用的得分匹配对,但剩下的通常都很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【计算机视觉】Lecture 23:光流估计 的相关文章

  • 数学之路-python计算实战(16)-机器视觉-滤波去噪(邻域平均法滤波)

    coding utf 8 code myhaspl 64 myhaspl com 邻域平均法滤波 半径为2 import cv2 import numpy as np fn 61 34 test3 jpg 34 myimg 61 cv2 i
  • R语言与数据模型(1)-平均,方差,中位数,分位数,极差

    1 求平均数 gt x lt c 1 10 20 30 40 50 NA 60 gt xm lt mean x gt xm 1 NA na rm表示允许缺失数据NA gt xm lt mean x na rm 61 TRUE gt xm 1
  • FreeRTOS系列|中断管理和临界段

    FreeRTOS中断管理和临界段 1 中断管理 1 1 中断管理简介 中断是微控制器的一个常见特性 xff0c 中断由硬件产生 xff0c 当中断产生后CPU就会中断当前的流程转而去处理中断服务 xff0c Cortex M内核的MCU提供
  • AI理论随笔-对称矩阵、正交矩阵与特征向量,特征值(2)

    一 如果 xff1a A A T 61 E AA T 61 E A A T 61 E
  • 英文过滤停用词

    span class token triple quoted string string 34 34 34 Created on Sun Nov 13 09 14 13 2016 64 author daxiong 34 34 34 spa
  • C语言随笔-去掉仅有\n的行

    include lt stdio h gt int main int argc const char argv char str 128 char linep strcpy str 34 12 35 56 n12 33 87 n n n n
  • python3.6-深入浅出视频

    课程收益 适合人群 python小白 xff0c 大数据和机器学习编程程序员 上机实践为主线 以最快的速度上手 快速入门 xff0c 还学到了python3的核心知识 https edu csdn net course detail 989
  • 数学之路(3)-机器学习(3)-机器学习算法-神经网络[11]

    多层感知器的代码 xff0c 需要一个比较复杂的调试过程 xff0c 不过也有一些方法来加快这一速度 xff0c 其中有几个地方要注意 xff1a 1 输入层 输出层 中间层的学习率和动量参数不能一样 xff0c 2 3个层的权值策略不能一
  • opencv中ArUco识别

    姿态估计 xff08 Pose estimation xff09 在 计算机视觉领域扮演着十分重要的角色 xff1a 机器人导航 增强现实以及其它 这一过程的基础是找到现实世界和图像投影之间的对应点 这通常是很困难的一步 xff0c 因此我
  • PID算法的EXCEL模拟实现

    增量式PID算法公式 xff1a 在表格里可以看见PID算法在目标值和实际值差异较大时 xff0c 控制量也很大 xff0c 主要是比例环节起到主要的调节作用 xff0c 在目标值和实际值相等时 xff0c 主要的控制量是积分环节 xff0
  • 三极管基本知识

    导通条件 NPN型三极管的导通条件是C点电位 gt B点电位 gt E点电位 xff0c 三极管饱和导通的条件是Ub gt Ue Ub gt Uc PNP型三极管的导通条件是E点电位 gt B点电位 gt C点电位 xff0c 三极管饱和导
  • 5.FreeRTOS学习笔记- 互斥量

    基本概念 互斥量又称互斥信号量 本质是信号量 是一种特殊的二值信号量 互斥量 支持互斥量所有权 递归访问以及防止优先级翻转的特性 用于实现对临界资源 如显示器 打印机 的独占式访问 任意时刻互斥量的状态只有两种 开锁或闭锁 持有该互斥量的任
  • could not stop cortex-m device 问题

    出现问题原因 xff1a 调试程序过程中mdk突然奔溃 xff0c 之后就再也下载程序失败 xff0c 但是读取swd IDCODE OK 下载程序就报错 个人觉得应该是单片机内部保护了 问题图 问题处理办法 先检查3 3v和GND是否短路
  • FreeRTOS系列|任务堆栈

    任务堆栈 运行freertos系统的大部分都是资源有限的MCU xff0c 所以对于RAM我们都要考虑尽量的节省 xff0c 避免资源浪费 下面将会基于Cortex M3内核的STM32F103型MCU来介绍FreeRTOS任务栈大小的确定
  • 9. GD32F103C8T6 定时器2的更新中断触发定时器0开始计时

    1 初始化定时器TIM0 span class token comment 定时器的基本初始化和打开更新中断 enable 是否使能定时器 span span class token keyword static span span cla
  • 4.GD32F103C8T6 串口中断方式接收数据和输出重定向

    1 串口基本初始化 span class token comment 基本初始化函数 span span class token keyword void span span class token function usart base
  • 5.GD32F103C8T6 串口DMA+IDLE方式接收数据

    1 串口的基本初始化 span class token keyword void span span class token function usart base init span span class token punctuatio
  • 26. GD32F103C8T6入门教程-CAN外设回环测试

    1 基础知识 相关stm32CAN外设 外设特征 3个发送邮箱 2个深度为3个邮箱的接收FIFO 自动重传 自动唤醒 发送 接收时间戳 最大速率1Mbps 3种工作模式 睡眠模式 可以检车总线状态自动唤醒 初始化工作模式 如果需要对 CAN
  • stm32 操作W25Q256 W25Q16 spi flash

    硬件连接 本函数库来自正点原子官方 xff0c 本人稍作修改和添加注释 W25Q16 2M Byte W25Q256 32M Byte spi 配置 2022 7 27 经过测试 华邦的 W25Q256JV 32M 字节 容量的spi fl
  • ESP32学习笔记20-dac

    20 DAC 20 1概述 ESP32 有两个 8 位数模转换器 DAC 通道 分别连接到 GPIO25 通道 1 和 GPIO26 通道 2 每个 DAC 通道可以将数字值 0 255 转换成模拟电压 0 Vref out voltage

随机推荐

  • ESP32学习笔记21-esp32启动流程

    24 esp32启动流程 第一 xff0c 第二阶段启动流程 第三阶段的详细流程
  • ESP32学习笔记22-TWAI-CAN

    22 TWAI CAN 22 1概述 22 1 1参考博客 ESP32 基于自带控制器实现CAN总线通信 上 知乎 zhihu com ESP32 基于自带控制器实现CAN总线通信 下 知乎 zhihu com 22 1 2 ESP32 T
  • Python str和bytes的相互转换

    str0 61 39 abc 39 a 61 bytes str0 39 utf 8 39 print type str0 str0 print type a a print 39 39 c 61 bytes 97 98 99 100 pr
  • wxpython 基本的控件 (按钮)

    在wxPython 中有很多不同类型的按钮 这一节 xff0c 我们将讨论文本按钮 位图按钮 开关按钮 xff08 toggle buttons xff09 和通用 xff08 generic xff09 按钮 如何生成一个按钮 xff1f
  • FreeRTOS系列|处理器利用率

    处理器利用率 1 处理器利用率统计的作用 处理器利用率其实就是系统运行的程序占用的CPU资源 xff0c 表示机器在某段时间程序运行的情况 xff0c 如果这段时间中 xff0c 程序一直在占用CPU的使用权 xff0c 那么可以认为CPU
  • QT 多线程使用QTcpSocket

    本人亲测使用moveToThread xff08 xff09 的方式可以 xff1b 不存在报错 xff0c 警告 include 34 widget h 34 include 34 ui widget h 34 Widget Widget
  • ESP8266天猫精灵接入流程

    Blinker天猫精灵接入流程 设备上线 设置接入的设备类型 设置接入设备的auth Key 设置SSID PSWD 或者选择 ESPTOUCH等配网方式 下载代码等待设备接入上线成功 authKey对应的设备若需要更换接入的设备类型 xf
  • 存储器的分类

    目录 01 ROM 02 非易失性RAM 2 1原理 2 2发展 2 3 摩尔定律 03 易失性RAM 3 1原理 3 2发展 3 3总结 04 总结 储器类型有很多 xff0c 常见的有ROM xff08 Read onlymemory只
  • RT - thread学习(一)

    目录 一 RT thread介绍 二 RT thread移植 首先我们先在官网获取 编辑 对无关的文件进行剪裁 剪裁后的内核文件移植到sdk文件 配置内核文件 一 RT thread介绍 rt thread是国产的一款开源的实时操作系统 这
  • 机器学习基本概念

    文章目录 深度学习和机器学习NLP xff08 Natural language processing xff09 Confusion Matrix 混淆矩阵ROC xff08 Receiver Operator Characteristi
  • ROS Kinetic中OpenCV使用

    ROS Kinetic中OpenCV使用 本文主要记录了ROS Kinetic中OpenCV的使用 xff0c Kinetic完全安装中本身自带了Opencv3 3 1 xff0c 因此在ROS中可以直接用ROS自带的Opencv3 3 1
  • ROS下gazebo不能加载willowgarage世界

    在打开gazebo ros打开williowgarage的时候 xff0c 能够找到willowgarage world的文件 xff0c 但是gazebo不能够加载这个模型 xff0c 主要原因是gazebo的model里面并没有mode
  • Mac OS下安装串口调试工具minicom

    最近在做一个Mac下的ssh调试工具 xff0c 但是出现了一点问题 后来发现居然Mac下有串口调试工具可以用 xff0c 所以果断换串口了 xff0c 是普通PL2303芯片的usb转串口线 接下来说下简单的安装步骤吧 我是勤劳的搬砖工
  • Eclipse等IDE配置Anaconda/Python3开发环境(win10_x64)

    分诊台 正所谓 洞庭揽物 xff0c 各有所怀 xff0c 博客点击 xff0c 也是各有所需 为了能让读者节约时间 xff0c 本小百姓 xff0c 写博客时尽力将博客内容各部分内容解耦 xff0c 但仍保持一定的连贯性 xff0c 并参
  • Linux(树莓派)系统中判断WiFi是否连接上路由器的方法

    之前 xff08 https blog csdn net u010299133 article details 105823339 xff09 介绍过在Linux系统中使用wpa supplicant连接到指定的WiFi路由器的方法 xff
  • FreeRTOS系列|任务相关API函数

    任务相关API函数 1 任务相关API函数 FreeRTOS中有很多与任务相关的API函数 xff0c 大多数是辅助函数 下表是这些与任务相关的API函数功能和描述简介 函数名功能描述uxTaskPriorityGet 查询某个任务的优先级
  • 无人机通信协议:MavLink协议使用

    mavlink的数据封装的结构体以及封装解析的函数都在mavlink代码库中的头文件中 主要的结构体 xff1a E mavlink mavlink include v1 0 mavlink types h MAVPACKED typede
  • 【计算机视觉】Lecture 16:平面单应变换

    动机 xff1a 在平面上的点 回顾 xff1a 正向投影 世界坐标系到相机坐标系的变换 透视矩阵方程 xff08 相机坐标系到成像坐标系 xff09 成像坐标系到像素坐标系 从成像坐标 xff08 x xff0c y xff09 到像素坐
  • 【计算机视觉】Lecture 20:八点法

    提醒 本质 基础矩阵 本质矩阵和基础矩阵都是 3x3 的矩阵 xff0c 用于 编码 两个视图的对极几何 动机 xff1a 给定一张图像中的一个点 xff0c 乘以本质 基础矩阵将告诉我们在第二个视图中沿着哪个极线搜索 本质 基础矩阵总结
  • 【计算机视觉】Lecture 23:光流估计

    流估计 主要概念 xff1a 亮度08好恒定方程 孔径问题 Lucas Kanade算法 回顾 xff1a 由于自身运动产生的场 流 xff08 Flow xff09 xff1a 旋转分量不依赖于场景结构 平移分量随场景 Z 值的变化而变化