主要内容

MotointFlowlkdog.

目标用高斯方法的Lucas-Kanade导数估计光流

描述

创建一个光流对象,使用高斯(DoG)方法估计移动对象的方向和速度。使用对象函数<一个href="//www.tatmou.com/uk/help/vision/ref/opticalflowhs.estimateflow.html">estimateFlow来估计光流矢量。使用<一个href="//www.tatmou.com/uk/help/vision/ref/opticalflowhs.reset.html">重启对象函数,可以重置光流对象的内部状态。

创建

描述

opticFlow= LOTELDFLOWLKDOG.返回一个光流对象,您可以使用它来估计视频中移动对象的方向和速度。利用高斯的Lucas-Kanade导数(DoG)方法估计光流。

例子

opticFlow= opticalFlowLKDoG (名称,值返回指定为一个或多个属性的光流对象名称,值对参数。任何未指定的属性都有默认值。将每个属性名用引号括起来。

例如,MotoftingFlowlkdog('numframes',3)

属性

全部展开

用于时间平滑的缓冲帧数,指定为正整值标量。随着这个数字的增加,光流估计方法对运动物体轨迹的突然变化变得不那么稳健。流量估计中的延迟量取决于的值numframes..输出流量对应于图像t流动t当前的−0.5 (numframes.1), 在哪里t当前的为当前图像的时间。

图像平滑滤波器的标准偏差,指定为正标量。

梯度平滑过滤器的标准偏差,指定为正标量。

降噪阈值,指定为正标量。当你增加这个数字时,物体的运动对光流计算的影响较小。

对象的功能

estimateFlow 估计光学流量
重启 重置光流量估计对象的内部状态

例子

全部收缩

读取视频文件。指定要读取帧的时间戳。

Vidreader = Videoreader('VisionTraffic.avi'“CurrentTime”11);

创建一个光流对象,使用Lucas-Kanade DoG方法估计光流。指定降噪阈值。输出是一个光流对象,指定了光流估计方法及其特性。

opticFlow = opticalFlowLKDoG ('noisethreshold', 0.0005)
OpticFlow = LocoundFlowlkdog具有属性:Numframes:3 ImageFiltersigma:1.5000梯度Filtersigma:1 Noisethreshold:5.0000E-04

创建一个自定义图形窗口来可视化光流矢量。

h =图;Movegui(h);hviewpanel = Uipanel(H,'位置',[0 0 1 1],'标题''光学流量矢量图');hPlot =轴(hViewPanel);

读取图像帧并转换为灰度图像。估计连续图像帧的光流。显示当前图像帧并绘制光流矢量为抖动图。

尽管hasFrame(vidReader) frameRGB = readFrame(vidReader);frameGray = im2gray (frameRGB);流= estimateFlow (opticFlow frameGray);imshow (frameRGB)绘图(流量,“DecimationFactor”, 5 [5],“ScaleFactor”, 35岁,'父母',hplot);抓住离开暂停(10 ^ 3)结束

图包含轴对象和uipanel类型的对象。轴对象包含2个类型的图像,Quiver。

图包含轴对象和uipanel类型的对象。轴对象包含2个类型的图像,Quiver。

算法

全部展开

要计算两个图像之间的光流,必须解决该光学流量约束方程:

x u + y v + t 0

  • x y , 和 t 为图像的时空亮度导数。

  • u是水平光学流量。

  • v为垂直光流。

参考

[1] Barron,J.L.,D. J. Fleet,S.S.Beuchemin和T. A. Burkitt。“光学流动技术的性能。”在计算机愿景和模式识别(CVPR)的IEEE会议的诉讼程序,236 - 242。伊利诺伊州香槟市:CVPR, 1992年。

扩展功能

C / C ++代码生成
使用MATLAB®Coder™生成C和C ++代码。

在R2015A介绍