基于光流的实时运动检测
这个例子展示了如何使用光流技术创建一个视频算法来检测运动。本示例使用图像采集工具箱™系统对象™以及计算机视觉工具箱™系统对象。
简介
此示例将来自图像采集设备的图像流化,以检测实时视频中的运动。该算法利用光流估计技术估计视频序列中每一帧的运动向量。一旦确定了运动向量,我们就把它画在视频序列中移动的物体上。
初始化
创建Video Device System对象。
vidDevice = imaq。VideoDevice (“winvideo”, 1“YUY2_320x240”,...“ReturnedColorSpace”,“rgb”,...“DeviceProperties。亮度的, 130,...“DeviceProperties。锐度的, 50);
创建一个System对象来估计物体运动的方向和速度从一个视频帧到另一个使用光流。
opticFlow = opticalFlowHS;
流采集和处理循环
创建一个处理循环在输入视频中执行运动检测。这个循环使用上面实例化的System对象。
%设置为流nFrames = 0;而(nFrames < 100)前100帧的进程。从成像设备获取单帧。frameRGB = vidDevice ();计算特定帧的光流。流= estimateFlow (opticFlow rgb2gray (frameRGB));imshow (frameRGB)在情节(流,“DecimationFactor”, 5 [5],“ScaleFactor”, 25)从增加帧数nFrames = nFrames + 1;结束
总结
在图窗口中,您可以看到示例检测到黑色文件的运动。移动的物体用图中所示的矢量场线表示。
释放
在这里,您调用System对象上的release方法来关闭所有打开的文件和设备。
释放(vidDevice);