主要内容

opticalFlowHS

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

描述

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

创建

描述

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

例子

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

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

属性

全部展开

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

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

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

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

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

对象的功能

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

例子

全部折叠

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

vidReader =视频阅读器(“visiontraffic.avi”“CurrentTime”11);

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

opticFlow = opticalflows
opticFlow = opticalFlowHS属性:平滑度:1 MaxIteration: 10 VelocityDifference: 0

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

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

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

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

{

{

算法

全部展开

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

x u + y v + t 0

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

  • u是水平光流。

  • v是垂直光流。

参考文献

[1]巴伦,J. L., D. J.弗利特,S. S.博切敏,T. A.伯基特。“光流技术的性能”在计算机视觉与模式识别(CVPR)会议论文集,236 - 242。香槟,伊利诺伊州:CVPR, 1992。

扩展功能

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

版本历史

在R2015a中引入