主要内容

estimateFlow

光流估计

描述

例子

= estimateFlow (opticFlow估计两个连续视频帧之间的光流。

例子

全部折叠

创建一个VideoReader对象的输入视频文件,visiontraffic.avi.指定要读取的帧的时间戳为11。

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

指定光流量估计方法为opticalFlowHS.输出是一个指定光流估计方法及其特性的对象。

opticFlow = opticalFlowHS
opticFlow = opticalFlowHS,具有平滑度:1 MaxIteration: 10 VelocityDifference: 0

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

h =图;movegui (h);hViewPanel = uipanel (h,“位置”,[0 0 1 1],“标题”“光流矢量图”);hPlot =轴(hViewPanel);

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

hasFrame(vidReader) frameRGB = readFrame(vidReader);frameGray = im2gray (frameRGB);流= estimateFlow (opticFlow frameGray);imshow (frameRGB)情节(流,“DecimationFactor”, 5 [5],“ScaleFactor”现年60岁的“父”, hPlot);持有暂停(10 ^ 3)结束

图包含一个轴对象和一个uipanel类型的对象。axis对象包含2个类型为image, quiver的对象。

图包含一个轴对象和一个uipanel类型的对象。axis对象包含2个类型为image, quiver的对象。

输入参数

全部折叠

用于光流估计的对象,指定为以下对象之一:

输入opticFlow定义了光流估计方法及其用于估计光流速度矩阵的性质。

当前视频帧,指定为大小的二维灰度图像——- - - - - -n.所述输入图像是从使用VideoReader对象。RGB格式的视频帧必须转换为二维灰度图像才能估计光流。

输出参数

全部折叠

对象,用于存储光流速度矩阵,返回为opticalFlow对象。

算法

该函数使用输入对象指定的方法估计输入视频的光流opticFlow.光流估计为两个连续视频帧之间的运动。在视频帧T在给定的时刻t当前的是指当前帧还是视频帧t - 1称为前一帧。前一帧在时间点的初始值t当前的= 0设置为灰度值为0的统一图像。

请注意

如果您指定opticFlow作为opticalFlowLKDoG对象,则估计延迟一个相对于视频帧数的量。延迟的数量取决于的值NumFrames中定义的opticalFlowLKDoG对象。为视频帧估计的光流t当前的对应于时间点的视频帧 t f l o w t c u r r e n t N u F r 一个 e 年代 1 / 2 t当前的为当前视频帧的时间。

扩展功能

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

另请参阅

介绍了R2015a