主要内容

光学流

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

描述

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

创造

描述

光流=光学流量返回一个光流对象,您可以使用它来估计视频中移动对象的方向和速度。采用Horn-Schunck方法估计光流。

实例

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

例如,光学流量(“平滑度”,1.5)

性质

全部展开

光流的期望平滑度,指定为正标量。当连续帧之间的运动增加时,增加这个值。的典型值“平滑度”在附近1.

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

当迭代次数等于的值时,迭代计算停止“最大迭代”或者当算法达到为“速度差异”.仅通过使用停止计算“最大迭代”,设置“速度差异”0

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

当算法达到设置的值时,迭代计算停止“速度差异”或者迭代次数等于“最大迭代”.仅限使用“速度差异”要停止计算,请设置“最大迭代”

目标函数

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

例子

全部崩溃

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

vidReader = VideoReader (“visiontraffic.avi”,“当前时间”11);

指定光流量估计方法为光学流. 输出是指定光流估计方法及其属性的对象。

opticFlow=opticalFlowHS
opticFlow=具有以下特性的opticalFlowHS:平滑度:1最大迭代次数:10速度差异:0

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

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

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

hasFrame(vidReader)frameRGB=readFrame(vidReader);frameGray=rgb2gray(frameRGB);流量=估计流量(opticFlow,框架灰色);imshow(帧RGB)保持情节(流,“决策因素”,[5 5],“ScaleFactor”,60,“父”, hPlot);持有暂停(10^-3)终止

算法

全部展开

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

x U + Y v + T = 0

  • x , Y , T 是时空图像亮度的导数。

  • U是水平光流。

  • v是垂直光流。

参考文献

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

扩展能力

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

介绍了R2015a