2013-12-10 157 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對象包含有關前一幀的信息。