opticalFlowHS

用霍恩-舒克法估计光流的对象

描述

创建一个光流对象,用于估计方向和速度的移动对象使用霍恩- schunck方法。使用对象函数estimateFlow估计光流矢量。使用重置对象函数,可以重置光流对象的内部状态。

创建

描述

opticFlow= opticalFlowHS返回一个光流对象,您可以使用它来估计视频中移动对象的方向和速度。采用霍恩-舒克法估计光流。

例子

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

例如,opticalFlowHS(“平滑”,1.5)

属性

全部展开

光流的期望平滑性,指定为一个正标量。当连续帧之间的运动增加时增加这个值。的典型值“平滑”大约是1

最大迭代次数,指定为正整数标量。增加这个值可以估计低速物体的光流。

当迭代次数等于的值时,迭代计算停止“MaxIteration”或者当算法达到的值“VelocityDifference”。仅通过使用来停止计算“MaxIteration”,设置的值“VelocityDifference”0

最小绝对速度差,指定为一个正标量。这个值取决于输入数据类型。降低这个值来估计低速物体的光流。

当算法达到为的值时,迭代计算停止“VelocityDifference”或者说迭代次数等于“MaxIteration”。只使用“VelocityDifference”若要停止计算,请设置“MaxIteration”

对象的功能

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

例子

全部折叠

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

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

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

opticFlow = opticalFlowHS
opticFlow = opticalFlowHS,属性:平滑度:1 MaxIteration: 10速度差:0

创建自定义图形窗口以可视化光流向量。

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

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

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

算法

全部展开

要计算两幅图像之间的光流,必须求解光流约束方程:

x u + y v + t = 0

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

  • u为水平光流。

  • v为垂直光流。

参考文献

bb0 Barron, J. L., D. J. Fleet, S. S. Beauchemin和T. A. Burkitt。"光流技术的性能。“在IEEE计算机视觉与模式识别会议论文集,236 - 242。香槟,IL: CVPR, 1992年。

扩展功能

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

介绍了R2015a