1.光流

参考:https://blog.csdn.net/lanbing510/article/details/40451317

光流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。其计算方法可以分为三类:

A b
(1) 基于区域或者基于特征的匹配方法;
(2) 基于频域的方法;
(3) 基于梯度的方法;

1.1 光流基于光度不变假设,具体来说分成三个假设

A b
(1) 亮度恒定,前后帧观测到的对应点的灰度值一样。
(2) 时间连续或者运动位移小。
(3) 空间一致性:邻近点有相似运动,同一子图像的像素点具有相同的运动。

1.2 这里有两个概念需要解释:

  • 运动场,其实就是物体在三维真实世界中的运动;
  • 光流场,是运动场在二维图像平面上的投影。


光流(optical flow)是指平面上,光照模式的变化情况。
在计算机视觉领域,是指视频图像中各点像素随时间的运动情况。
光流具有丰富的运动信息,因而在运动估计、自动驾驶和行为识别方面都有广泛应用。
光流预测通常是从一对时间相关的图像对中,估计出第一张图像中各个像素点在相邻图像中的位置。首先找去特征点,之后用光流去跟踪的方法。a. 找到好的特征点,例如 Harris角点、Shi-Tomasi角点、FAST角点等
b. 计算光流。Lucas-Kanade method, LK光流(灰度不变,相邻像素运动相似)灰度不变性:I(x,y,t) = I(x+dx,y+dy,t+dt)= I(x,y,t) + Ix*dx +Iy*dy +It*dt  (泰勒公式展开,Ix,Iy表示灰度梯度,Ix表示相邻帧相同点像素变化)====>  Ix*dx +Iy*dy +It*dt = 0 , 两边同除以 dt, 得到:Ix*dx/dt + Iy*dy/dt + It = 0=  Ix * Vx + Iy*Vy = -It,   Vx为像素水平速度, Vy为像素垂直速度相邻像素运动相似:Ix(p1) * Vx + Iy(p1)*Vy = -It(p1)Ix(p2) * Vx + Iy(p2)*Vy = -It(p2)...Ix(pn) * Vx + Iy(pn)*Vy = -It(pn)注:p1,p2,...,pn是窗口内的像素点写成矩阵形式有:A = [Ix(p1) Iy(p1);Ix(p2) Iy(p2)...Ix(pn) Iy(pn)]B = [It(p1)It(p2)...It(pn)]V = [VxVy]A * V  = -B线性方程组求解:V = (A转置*A)逆 * A转置*(-B) = A逆*A转置逆* A转置*(-B)=A逆*(-B) (伪逆求解,A矩阵可能没有逆矩阵)

1.3光流法用于目标检测的原理:

给图像中的每个像素点赋予一个速度矢量,这样就形成了一个运动矢量场。在某一特定时刻,图像上的点与三维物体上的点一一对应,这种对应关系可以通过投影 来计算得到。根据各个像素点的速度矢量特征,可以对图像进行动态分析。如果图像中没有运动目标,则光流矢量在整个图像区域是连续变化的当图像中有运动物体时,目标和背景存在着相对运动运动物体所形成的速度矢量必然和背景的速度矢量有所不同,如此便可以计算出运动物体的位置

1.3.1需要提醒的是,利用光流法进行运动物体检测时,计算量较大,无法保证实时性和实用性

目标跟踪流程(需要结合目标检测算子)

(1)对一个连续的视频帧序列进行处理;

(2)针对每一个视频序列,利用一定的目标检测 方法,检测可能出现的前景目标;(例如SURF算子)

(3)如果某一帧出现了前景目标,找到其具有代表性的关键特征点(可以随机产生,也可以利用角点来做特征点);

(4)对之后的任意两个相邻视频帧而言,寻找上一帧中出现的关键特征点在当前帧中的最佳位置,从而得到前景目标在当前帧中的位置坐标;

(5)如此迭代进行,便可实现目标的跟踪;

对于二维的运动场,单靠一个像素无法确定其运动矢量。根据假设三, 我们可以使用当前像素的邻域像素添加更多约束条件;如经典的Horn-Schunck光流法所加的运动平滑约束。

同时,对于二维运动场,只需包含两条或以上边缘则可以解系统方程,因此在进行光流法时,先选择好跟踪的特征点,如harris角点。

KLT是一种非常知名的光流方法。

近年来研究跟踪的方法很多,各种算法几乎层出不齐,主要可将其分为两类目标跟踪算法,一类是传统的目标跟踪算法,一类是基于深度学习的跟踪方法,而基于传统的目标跟踪算法比较经典的有粒子滤波(pf)、Mean Shift目标跟踪算法以及KLT的跟踪算法又或者叫做Lucas光流法,这些方法各有优缺点:

粒子滤波(pf):能够比较好的在全局搜索到最优解,但其求解速度相对较慢,由于其是基于颜色直方图的计算,对颜色相近的物体不太能够区别开来。

Mean Shift算法:很容易陷入局部最优,但其跟踪的速度很快。

基于以上两种算法各自的优缺点,常常有人将Mean Shift和pf做结合,恰好在很多方面能够达到互补的效果。

二、 KLT跟踪算法
查看本博客另外一篇文章:局域不变特征的目标跟踪,SURF算子,KLT算子
https://blog.csdn.net/djfjkj52/article/details/104433936

举个5*5图像的例子

假设对像素点来说,周围的像素点都保持相同的移动距离假设窗口大小为5*5,则对于25个窗口内的像素点来说,就会如下等式成立:

得到下面的过约束等式:

即:

ATAd=ATbA^TAd=A^TbATAd=ATb

采用最小二乘法求解ddd:

这样我们就得到了KLT光流等式与该窗口的Hessian矩阵:

Hessian矩阵的特征值λ1λ_1λ1​和 λ2λ_2λ2​ 都很大的时候才能满足空间一致性的条件,所以:

在这里shi-tomasi提出了一种Good Features的角点。他们认为,对称矩阵Z包含了噪声和良好条件,当矩阵Z的两个特征值较小时,意味着以该点为中心W为窗口内是平坦的;一大一小的两个特征值,对应无方向的纹理特征;两个较大的特征值代表了当前点是角点或者椒盐纹理。所以,当两个特征值大于一定阈值时,选择这个点作为角点。

我们回想一下一张图中有的三种点:
1,边缘;2,团块;3,角点。

参考:https://zhuanlan.zhihu.com/p/88033287

O.0尝试

尝试1:Face Detection and Tracking Using the KLT Algorithm

参考地址:https://ww2.mathworks.cn/help/vision/examples/face-detection-and-tracking-using-the-klt-algorithm.html

pointTracker = vision.PointTracker('MaxBidirectionalError', 2);

最近热播《大主宰》,就把欧阳娜娜拿出来实验。

尝试2:good features to track

Kanade–Lucas–Tomasi (KLT) feature tracker is a famous algorithm in computer vision to track detected features (corners) in images.


尝试3:http://cecas.clemson.edu/~stb/klt/

人脸跟踪检测

。。。需要时间消化

详见:https://blog.csdn.net/qq_43409984/article/details/89606194

2月26日 光流,跟踪算法的尝试相关推荐

  1. 直播预告|5月26日14:00 AAAI 专场三

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 5月26日14:00,本期我们邀请到AAAI的七位学者给大家带来精彩的分享! 5月26日 14:00-14:30 龚元: 美国麻省理工学 ...

  2. 【历史上的今天】2 月 26 日:施乐 Alto 设计师出生;ATM 机获得专利;Clearview AI 被盗取 30 亿张照片

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 2 月 26 日,在 17 年前,郭去疾随李开复归国,作为总裁特别助理帮助李开复平息了一场官司:从此 ...

  3. Linux 第24天: (09月26日) Linux DNS

    Linux 第24天: (09月26日) Linux DNS 本章内容 名字解析 DNS服务 实现主从服务器 实现子域 实现view 编译安装 压力测试 DNS排错 DNS服务 DNS: Domain ...

  4. 案例七:8月26日 项目采购不可用

    一.故障简述 二.故障处理过程 1.告警开始8月26日 9:05(-24) 09:05 prod-db_tendering实例告警消息发同步到运维群,运维并开始排查数据库的问题 09:07 运维收到告 ...

  5. 2016年3月26日作业 质量管理和人力资源管理

    2016年3月26日作业 质量管理和人力资源管理 一.质量管理 1.质量管理基本原则? 质量管理基本原则是: 以实用为核心的多元要求 系统工程 职工参与管理 管理层和第一把手重视 保护消费者权益 面向 ...

  6. 4月26日,每日互动(个推)与您相约第六届数字中国建设峰会

    4月26日-30日,第六届数字中国建设峰会及成果展览会将在福州隆重举行.本届峰会以"加快数字中国建设,推进中国式现代化"为主题,由国家网信办.国家发改委.科技部.工信部.国务院国资 ...

  7. 天刀服务器维护开服时间表,天刀8月26日服务器例行维护 师徒系统开放

    亲爱的玩家: 青龙乱舞区.大地飞鹰区.血海飘香区.名剑风流区.陌上花开全部服务器将在8月26日6:00~8:00停机维护更新,维护完成后上述各服务器客户端版本号升级至1.1.11.6.本次维护主要调整 ...

  8. 程序猿学习笔记~2020年10月26日(数据类型与条件语句)

    Java学习日记~2020年10月26日 基本数据类型 整数类型 整数类型有byte.short.int.long.在不同位数的操作系统占用不同的字节.在64位操作系统中,它们分别占1.2.4.8个字 ...

  9. 01月26日【Python3 基础知识】

    01月26日[Python3 基础知识] 5.1 九宫格 5.2 函数入门 5.3 判断某天为某年的第几天 5.1 九宫格 import random x = 0 l = [1,2,3,4,5,6,7 ...

  10. 2009年8月26日,用于win2003上的MSN不能正常使用

    2009年8月26日. 也就是昨天咯. XP下的MSN完全正常,没有任何的异样. 但是,一大早,就有同事抱怨,他的MSN被强制更新,不更新就不能登录,更新之后却又报错.统计了一下,出现这个问题的,都是 ...

最新文章

  1. Kali Linux 2017中Scapy运行bug解决
  2. 微软推出新逆天开源语言Bosque,告别 for 循环,提高开发效率!
  3. maven中spring-boot-dependencies变量名冲突
  4. java issynthetic_java.lang.reflect.Constructor.isSynthetic()方法示例
  5. java nio有哪些功能_如何真正理解java中的NIO?
  6. Android 7.0 隐式广播-监听网络变化
  7. c语言复杂数据类型存储,C语言基础-复杂数据类型
  8. [导入]vs2005视频教程 之 编译程序集和发布网站 [视频]
  9. 华为京东联手,火拼小米生态链!
  10. Android安全防护之旅---Android应用反调试操作的几种方案解析
  11. JavaScript实现监听移动端上下左右滑动事件
  12. Android 分析ANR和死锁(3)
  13. 计算机word排版素材,WORD基础排版素材
  14. python编程考试_Python编程练习(一)
  15. STEPN 新手入门及进阶
  16. 工业封装胶粘剂市场现状及未来发展趋势
  17. 点亮LED-STM32电控学习笔记03
  18. 金匮要略重点整理 笔记
  19. Python日志模块
  20. 驱动开发:内核层InlineHook挂钩函数

热门文章

  1. 【ArcGIS|空间分析】地形特征相关计算
  2. C++命名空间和缺省参数的概念
  3. css的list,CSS List 入门教程
  4. android自定义ClockView
  5. 实现视频播放器倍速、清晰度切换、m3u8下载功能
  6. 在碾压中找到自己,提升自己的思考能力
  7. 三星笔记文件存储路径_《那些年JavaWeb踩过的坑》ssh框架整合配置文件路径(错误笔记)...
  8. 工频干扰频谱测量_力参数传感器的电阻应变测量系统
  9. java string查找_Java lastIndexOf() 方法
  10. mysql mgr监控_6. MySQL组复制(MGR)全解析 Part 6 监控MySQL组复制