2013-12-10 100 views
1

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

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); 

回答

2

功能videooptflowlines是在计算机视觉系统工具箱中的演示(visiondemos)使用的辅助函数。您可以在Matlab命令窗口中输入edit videooptflowlines来查看该功能的代码。代码中的评论指出,正如其名称所示,该功能在vision.OpticalFlow的帮助示例中使用。

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

0

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