主要内容

opticalFlowLKDoG

对象使用Lucas-Kanade高斯函数的导数估算光流的方法

描述

创建一个光学流对象的方向和速度估算移动对象使用高斯的Lucas-Kanade导数(狗)方法。使用目标函数<一个href="//www.tatmou.com/au/au/help/vision/ref/opticalflowhs.estimateflow.html">estimateFlow估计光流矢量。使用<一个href="//www.tatmou.com/au/au/help/vision/ref/opticalflowhs.reset.html">重置目标函数,你可以重置光学流对象的内部状态。

创建

描述

opticFlow= opticalFlowLKDoG返回一个光学流对象,您可以使用估计的方向和速度移动对象在一个视频。光流估计使用高斯的Lucas-Kanade导数(狗)方法。

例子

opticFlow= opticalFlowLKDoG (名称,值)返回一个光学流对象与属性指定为一个或多个名称,值对参数。任何未指定的属性有默认值。在报价附上每个属性的名字。

例如,opticalFlowLKDoG (NumFrames, 3)

属性

全部展开

时间平滑的缓冲帧数量,指定为一个正整数值标量。当你增加这个数字,光流估计方法变得不那么健壮的突然移动对象的轨迹的变化。延误的数量估计的值取决于流动NumFrames。对应于图像的输出流t=t当前的−0.5 (NumFrames1),在那里t当前的是当前图像的时间。

标准偏差为图像平滑滤波器,指定为一个积极的标量。

标准差梯度平滑滤波器,指定为一个积极的标量。

阈值降噪,指定为一个积极的标量。当你增加这个数字,物体的运动不影响光流计算。

对象的功能

estimateFlow 光流估计
重置 复位光流估计对象的内部状态

例子

全部折叠

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

vidReader = VideoReader (“visiontraffic.avi”,“CurrentTime”11);

创建一个光学流对象使用Lucas-Kanade狗方法估算光学流。指定阈值降噪。输出是一个光学流对象指定光流估计方法及其属性。

opticFlow = opticalFlowLKDoG (“NoiseThreshold”,0.0005)
opticFlow = opticalFlowLKDoG属性:NumFrames: 3 ImageFilterSigma: e-04 1.5000 GradientFilterSigma: 1 NoiseThreshold: 5.0000

创建一个定制的可视化的光流矢量图窗口。

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图像类型的对象,颤。

图包含一个坐标轴对象和一个uipanel类型的对象。坐标轴对象包含2图像类型的对象,颤。

算法

全部展开

计算两幅图像之间的光流,你必须解决这个光流约束方程:

x u + y v + t = 0

  • x , y , t 的时空图像亮度的衍生品。

  • u是水平的光流。

  • v是垂直的光流。

引用

[1]巴伦,j·L。,D. J. Fleet, S. S. Beauchemin, and T. A. Burkitt. “ Performance of optical flow techniques.” In《IEEE计算机视觉与模式识别会议(CVPR),236 - 242。香槟,IL: CVPR, 1992年。

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

介绍了R2015a