主要内容

opticalFlowFarneback

对象使用Farneback估算光流方法

描述

创建一个光学流对象的方向和速度估算使用Farneback移动对象的方法。使用目标函数estimateFlow估计光流矢量。使用重置目标函数,你可以重置光学流对象的内部状态。

创建

描述

opticFlow= opticalFlowFarneback返回一个光学流对象,您可以使用估计的方向和速度移动对象在一个视频。使用Farneback光流估计的方法。

例子

opticFlow= opticalFlowFarneback (名称,值)返回一个光学流对象与属性指定为一个或多个名称,值对参数。任何未指定的属性有默认值。在报价附上每个属性的名字。

例如,opticalFlowFarneback (NumPyramidLevels, 3)

属性

全部展开

金字塔层数,指定为一个积极的标量。包括最初的形象价值的一层。当你将这个值设置为1函数估计,光学流只从原始图像帧和不执行金字塔分解。推荐值之间14

图像比例尺,指定为一个积极的标量范围(0,1)。指定的值在每个金字塔将采样率水平。的值0.5创造了一个经典的金字塔,金字塔的分辨率降低在每个水平的两倍。在金字塔的最低水平最高的分辨率。

每个金字塔的搜索迭代数量级别,指定为一个正整数。Farneback算法执行迭代寻找关键点在每个金字塔层次,直到收敛。

像素邻域的大小,指定为一个正整数。增加社区的大小增加运动模糊。模糊运动产生一个更健壮的光流估计。一个典型的价值NeighborhoodSize57

平均滤波器尺寸,指定为一个正整数的范围[2,正)。算法计算位移(流)后,平均在社区使用高斯滤波器的大小(FilterSize*FilterSize)。也给出了像素边界附近减轻重量,因为算法假定多项式扩张系数是不可靠的。增加过滤大小增加算法的鲁棒性,图像噪声。过滤器尺寸越大,越大算法处理图像噪声和快速运动检测,使其更加健壮。

对象的功能

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

例子

全部折叠

读视频文件。指定要读取帧的时间戳。

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

创建一个光学流对象使用Farneback方法估算光学流。输出是一个对象指定光流估计方法和它的属性。

opticFlow = opticalFlowFarneback
opticFlow = opticalFlowFarneback属性:NumPyramidLevels: 3 PyramidScale: 0.5000 NumIterations: 3 NeighborhoodSize: 5 FilterSize: 15

创建一个定制的可视化的光流矢量图窗口。

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”2,“父”,hPlot);持有暂停(10 ^ 3)结束

图包含一个坐标轴对象和一个uipanel类型的对象。坐标轴对象包含2图像类型的对象,颤。

图包含一个坐标轴对象和一个uipanel类型的对象。坐标轴对象包含2图像类型的对象,颤。

算法

Farneback算法生成一个图像金字塔,每一层都有一个较低的分辨率比以前的水平。当您选择一个金字塔水平大于1,该算法可以在多级分辨率跟踪点,从最低的水平。增加金字塔的数量水平使算法能够处理大位移之间的分帧。然而,计算的数量也会增加。图中显示了一个与三层图像金字塔。

跟踪在最低分辨率级别开始,并继续,直到收敛。点位置检测到水平传播成功的要点的水平。通过这种方式,每个级别的算法改进跟踪。金字塔分解动作,使算法能够处理大像素可以距离大于附近的大小。

引用

[1]Farneback, g .“双座运动估计基于多项式的扩张。“在《13北欧图像分析会议,363 - 370。哈尔姆斯塔德、瑞典:SCIA, 2003。

扩展功能

版本历史

介绍了R2015b