主要内容

opticalFlowLKDoG

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

描述

使用Lucas Kanade高斯导数(DoG)方法创建光流对象,用于估计移动对象的方向和速度。使用对象函数估计流量估计光流矢量。使用重启目标函数,则可以重置所述光流对象的内部状态。

创造

描述

光流= opticalFlowLKDoG返回光流对象,可用于估计视频中移动对象的方向和速度。光流估计使用卢卡斯-卡纳德高斯导数(DoG)方法。

实例

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

例如,opticalFlowLKDoG( 'NumFrames',3)

性质

全部展开

用于时间平滑的缓冲帧数,指定为正整数值标量。随着此数量的增加,光流估计方法对移动对象轨迹中的突然变化的鲁棒性将降低。流量估计中的延迟量取决于NumFrames.输出流量对应于所述图像在T=T现在的− 0.5(NumFrames-1)哪里T现在的是当前图像的时间。

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

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

降噪阈值,指定为正标量。增加此数量时,对象的移动对光流计算的影响较小。

目标函数

估计流量 估计光流
重启 复位光流估计对象的内部状态

例子

全部收缩

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

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

创建用于使用Lucas Kanade DoG方法估计光流的光流对象。指定降噪阈值。输出是指定光流估计方法及其属性的光流对象。

opticFlow=opticalFlowLKDoG(“噪声阈”,0.0005)
opticFlow = opticalFlowLKDoG与属性:NumFrames:3 ImageFilterSigma:1.5000 GradientFilterSigma:1噪声阈:5.0000e-04

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

H =图。movegui(H);hViewPanel = uipanel(H,'位置',[0 0 1 1],'标题',“绘制光学流向量”); hPlot=轴(hViewPanel);

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

尽管hasFrame(vidReader)frameRGB=readFrame(vidReader);frameGray=im2gray(frameRGB);流量=估计流量(opticFlow,框架灰色);imshow(帧RGB)保持积(流动,“决策因素”,[5 5],“ScaleFactor”,35,“父”,hPlot);抓住离开暂停(10^-3)终止

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

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

算法

全部展开

为了计算两幅图像之间的光流,就必须解决这个光流约束方程:

x U + Y v + T = 0

.

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

  • U是水平光流。

  • v是垂直光流。

参考

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

扩展能力

C / C ++代码生成
生成使用MATLAB®编码器™C和C ++代码。

介绍了在R2015a