主要内容

opticalFlowLKDoG

用高斯法的Lucas-Kanade导数估计光流的对象

描述

创建一个光流对象,用于估计移动物体的方向和速度,使用高斯的卢卡斯-坎纳德导数(DoG)方法。使用object函数<一个href="//www.ru-cchi.com/help/vision/ref/opticalflowhs.estimateflow.html">estimateFlow估计光流矢量。使用<一个href="//www.ru-cchi.com/help/vision/ref/opticalflowhs.reset.html">重置对象函数,可以重置光流对象的内部状态。

创建

描述

opticFlow= opticalFlowLKDoG返回一个光流对象,您可以使用它来估计视频中移动对象的方向和速度。利用高斯导数的Lucas-Kanade (DoG)方法估计光流。

例子

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

例如,opticalFlowLKDoG (NumFrames, 3)

属性

全部展开

用于时态平滑的缓冲帧数,指定为正整数值标量。随着这个数字的增加,光流估计方法对运动物体轨迹的突然变化变得不那么稳健。流量估计中的延迟量取决于的值NumFrames.输出流对应于的图像tt当前的−0.5 (NumFrames-1),在那里t当前的是当前图像的时间。

图像平滑滤波器的标准偏差,指定为正标量。

梯度平滑滤波器的标准偏差,指定为正标量。

降噪阈值,指定为正标量。当你增加这个数字时,物体的运动对光流计算的影响就会减小。

对象的功能

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

例子

全部折叠

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

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

创建光流对象,使用Lucas-Kanade DoG方法估算光流。指定降噪门限。输出是指定光流估计方法及其属性的光流对象。

opticFlow = opticalFlowLKDoG (“NoiseThreshold”, 0.0005)
opticFlow = opticalFlowLKDoG的属性:NumFrames: 3 ImageFilterSigma: 1.5000 GradientFilterSigma: 1 NoiseThreshold: 5.0000e-04

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

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”, 35岁,“父”, 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