1

这个函数 videooptflowlines() 的目的是什么;对象 hof 是否还包含有关前一帧的信息来计算光流?

hvfr = vision.VideoFileReader('viptraffic.avi', ...
                              'ImageColorSpace', 'Intensity', ...
                              'VideoOutputDataType', 'uint8');
hidtc = vision.ImageDataTypeConverter; 
hof = vision.OpticalFlow('ReferenceFrameDelay', 1);
hof.OutputValue = 'Horizontal and vertical components in complex form';
hsi = vision.ShapeInserter('Shape','Lines','BorderColor','Custom', 'CustomBorderColor',      255);
hvp = vision.VideoPlayer('Name', 'Motion Vector');
while ~isDone(hvfr)
    frame = step(hvfr);
    im = step(hidtc, frame); % convert the image to 'single' precision
    of = step(hof, im);      % compute optical flow for the video
    lines = videooptflowlines(of, 20); % generate coordinate points 
    if ~isempty(lines)
      out =  step(hsi, im, lines); % draw lines to indicate flow
      step(hvp, out);           % view in video player
    end
end
release(hvp);
release(hvfr);
4

2 回答 2

2

该函数是计算机视觉系统工具箱中videooptflowlines的演示 ( ) 使用的辅助函数。您可以通过在 Matlab 命令窗口中visiondemos键入来查看此函数的代码。edit videooptflowlines代码中的注释指出,正如其名称所示,该函数用于vision.OpticalFlow.

本质上,该函数执行基本数学运算来创建指示光流方向的矢量线。代码中有几个参数可能取决于所用图像的分辨率。如果您正在创建自己的使用此函数的代码,您可能应该创建它的副本并编辑新版本以满足您的需要。

于 2013-12-10T17:31:31.183 回答
0

你的第二个问题的答案是“是”。vision.OpticalFlow 对象确实包含有关前一帧的信息。

于 2013-12-10T19:02:00.833 回答