目录

  • 6. 光流估计
    • 6.1 Lucas-Kanade算法

上一篇: OpenCv_05——背景建模

6. 光流估计

光流是空间运动物体在观测成像平面上的像素运动的"瞬时速度",根据各个像素点的速度矢量特征,可以对图像进行动态分析,例如目标跟踪。

  • 亮度恒定:同一点随着时间的变化,其亮度不会发生改变。
  • 小运动:随着时间的变化不会引起位置的剧烈变化,只有小运动情况下才能用前后帧之间单位位置变化引起的灰度变化去近似灰度对位置的偏导数。
  • 空间一致;一个场景上临近的点投影到图像上也是邻近点,且邻近点速度一致。因为光流法基本方程约束只有一个,而要求x,y方向的速度,有两个未知变量。所以需要联立n多个方程求解。

6.1 Lucas-Kanade算法

约束方程

最小二乘法

cv2.calcOpticalFlowPyrLK()

参数 说明
preaImage 前一帧图像
nextImage 当前帧图像
prevPts 待跟踪的特征点向量
winSize 搜索窗口的大小
maxtus 最大的金字塔层数
返回 说明
nextPts 输出跟踪特征点向量
status 特征点是否找到,找到的状态为1,未找到状态为0
import numpy as np
import cv2cap = cv2.VideoCapture('xxx.avi')# 角点检测所需参数:
# 角点最大数量(效率);
# 品质因子(筛选角点;特征值越大,角点越少,效果越好);
# 距离相当于这区间有比这个角点强的,就不要这个弱的了
feature_params = dict( maxCorners = 100,qualityLevel = 0.3,minDistance = 7)# lucas kanade参数
lk_params = dict( winSize  = (15,15),maxLevel = 2)# 随机颜色条
color = np.random.randint(0,255,(100,3))# 拿到第一帧图像
ret, old_frame = cap.read()
old_gray = cv2.cvtColor(old_frame, cv2.COLOR_BGR2GRAY)
# 返回所有检测特征点,需要输入图像,
#
p0 = cv2.goodFeaturesToTrack(old_gray, mask = None, **feature_params)# 创建一个mask
mask = np.zeros_like(old_frame)while(True):ret,frame = cap.read()frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 需要传入前一帧和当前图像以及前一帧检测到的角点p1, st, err = cv2.calcOpticalFlowPyrLK(old_gray, frame_gray, p0, None, **lk_params)# st=1表示good_new = p1[st==1]good_old = p0[st==1]# 绘制轨迹for i,(new,old) in enumerate(zip(good_new,good_old)):a,b = new.ravel()  #把a转成整数a=int(a)b=int(b)c,d = old.ravel() c=int(c)d=int(d)mask = cv2.line(mask, (a,b),(c,d), color[i].tolist(), 2)  frame = cv2.circle(frame,(a,b),5,color[i].tolist(),-1)img = cv2.add(frame,mask)cv2.imshow('frame',img)k = cv2.waitKey(150) & 0xffif k == 27:break# 更新old_gray = frame_gray.copy()p0 = good_new.reshape(-1,1,2)cv2.destroyAllWindows()
cap.release()

OpenCv_06——光流估计相关推荐

  1. 综述:光流估计从传统方法到深度学习

    作者丨肖泽东 Shon@知乎 来源丨https://zhuanlan.zhihu.com/p/74460341 编辑丨目标检测与深度学习 编者荐语 光流估计是计算机视觉研究中的一个重要方向,然而,因为 ...

  2. 视频光流估计综述:从算法原理到具体应用

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:肖泽东 | 来源:知乎 https://zhuanlan.zhihu.com/p/7446034 ...

  3. 光流估计:从传统方法到深度学习

    来源:信息网络工程研究中心本文约4200字,建议阅读10+分钟 近年来,深度学习技术,作为一把利剑,广泛地应用于计算机视觉等人工智能领域. 一.摘要 近年来,深度学习技术,作为一把利剑,广泛地应用于计 ...

  4. 光流估计 liteflownet3

    深度学习方法在解决光流估计问题方面取得了巨大的成功.成功的关键在于使用cost volume和从粗到精的flow推断.但是,当图像中存在部分被遮挡或同质的区域时,匹配问题就变得ill-posed.这将 ...

  5. 光流 速度_[论文笔记] FlowNet 光流估计

    [论文笔记] FlowNet: Learning Optical Flow with Convolutional Networks 说在前面 个人心得: 1. CNN的光流估计主要是速度上快,之后的v ...

  6. 光流估计——从传统方法到深度学习

    本文转载自知乎,已获作者授权转载. 链接:https://zhuanlan.zhihu.com/p/74460341    1.摘要 近年来,深度学习技术,作为一把利剑,广泛地应用于计算机视觉等人工智 ...

  7. NVIDIA ECCV18论文:超像素采样网络助力语义分割与光流估计(代码将开源)

    (欢迎关注"我爱计算机视觉"公众号,一个有价值有深度的公众号~) 计算机视觉中超像素指具有相似纹理.颜色.亮度等特征的相邻像素构成的具有一定视觉意义的不规则像素块.它利用像素之间特 ...

  8. 光流估计算法RAFT的论文和代码阅读

    RAFT论文和代码阅读 RAFT: Recurrent All-Pairs Field Transforms for Optical Flow Zachary Teed and Jia Deng EC ...

  9. LiteFlowNet3:解决对应歧义以获得更准确的光流估计

    LiteFlowNet3:解决对应歧义以获得更准确的光流估计 LiteFlowNet3: Resolving Correspondence Ambiguity for More Accurate Op ...

最新文章

  1. 膨胀卷积--Multi-scale context aggregation by dilated convolutions
  2. 大型Web应用的数据库设计与部署
  3. python序列类型-Python基础-序列类型的常用方法
  4. 订单可视化(智能制造、流程再造、企业信息化) 第三篇 订单可视化定义及目标...
  5. 使用公式给参数赋默认初始值
  6. SpringBoot v2.2.6版本遇到的坑------Thymeleaf的sec:authorize标签无效
  7. HarmonyOS之变量可视化调试
  8. Silverlight 布局控件
  9. java.lang.NoSuchMethodError示例
  10. MPC模型预测控制器——数学推导
  11. C++ emplace_back()是什么
  12. 【C语言】的%*d、%.*s等详解:
  13. 计算机学报latex模板\renewcommand\figurename失效
  14. 计算机网络中传输层传送的是什么,传输层
  15. 如何自己搭建外卖红包平台,操作外卖CPS佣金提成实现躺赚=
  16. STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)
  17. TORCH.JIT理解
  18. WordCount 官方源码解读及工程代码
  19. P2P文件分发读书笔记
  20. centos7使用dnsmasq搭建dns服务器

热门文章

  1. 交通类SCI顶级期刊排名
  2. 微信支付-java实现微信支付-后端篇
  3. 方国伟:企业服务入云还有很长的路要走
  4. Matlab科研绘图颜色补充(特别篇3)—320种中国传统颜色
  5. 【剑桥摄影协会】相机VS.人眼
  6. webService各客户端(Asix、Asix2、cxf、HTTP..)请求服务整理
  7. BP信用数据配置更新
  8. 【重磅】国家数据局加商务分析师新职业,个人发展规划利好
  9. 用友政务适时推出全国产财政管理软件
  10. html页面添加动态动画小人,使用CSS3各个属性实现小人的动画_html/css_WEB-ITnose