主要内容

opticalFlowHS

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

描述

使用Horn-Schunck方法创建一个光流对象,用于估计移动对象的方向和速度。使用object函数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 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)结束

{

{

算法

全部展开

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

x u + y v + t 0

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

  • u是水平光流。

  • v是垂直光流。

参考文献

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

扩展功能

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

版本历史

介绍了R2015a

Baidu
map