主要内容

opticalFlowHS

用Horn-Schunck方法估计光流的目标

描述

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

创建

描述

opticFlow= opticalFlowHS返回光流对象,可用于估计视频中移动对象的方向和速度。光流是使用Horn-Schunck方法估计的。

例子

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

例如opticalFlowHS(“平滑”,1.5)

属性

全部展开

光流的预期平滑度,指定为正标量。当连续帧之间的运动增加时,增加此值。此值为“平滑”大约是1

最大迭代次数,指定为正整数值标量。增加此值可估计低速对象的光流。

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

最小绝对速度差,指定为正标量。此值取决于输入数据类型。减小此值可估计低速对象的光流。

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

对象的功能

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

例子

全部折叠

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

视频阅读器(“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);

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

虽然hasFrame(vidReader) frameRGB = readFrame(vidReader);frameGray = im2gray (frameRGB);流= estimateFlow (opticFlow frameGray);imshow (frameRGB)在…上绘图(流程,“DecimationFactor”, 5 [5],“ScaleFactor”现年60岁的“家长”等一下暂停(10 ^ 3)结束

Figure包含一个Axis对象和一个uipanel类型的对象。Axis对象包含两个image类型的对象,quiver。

Figure包含一个Axis对象和一个uipanel类型的对象。Axis对象包含两个image类型的对象,quiver。

算法

全部展开

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

x u + y v + t 0

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

  • u为水平光流。

  • v为垂直光流。

工具书类

[1] Barron、J.L.,D.J.Fleet、S.S.Beauchemin和T.A.Burkitt。《光流技术的性能》,载于IEEE计算机视觉和模式识别会议记录(CVPR),236 - 242。伊利诺伊州香槟市:CVPR, 1992年。

扩展功能

C / c++代码生成
使用Matlab®编码器生成C和C++代码™.

R2015a中引入