www.gusucode.com > visionhdl 源码程序 matlab案例代码 > visionhdl/MeasureTimingParametersOfACustomVideoStreamExample.m

    %% Measure Timing Parameters of Custom Video Stream
% This example shows how to use the |MeasureTiming| object to observe the 
% frame parameters in a custom video stream. The example creates customized
% padding around an image frame and converts the frame to streaming video. 
% It uses the |MeasureTiming| object to confirm that the streaming video 
% parameters match the custom settings.
%% 
% Use a |FrameToPixels| object to specify a small custom-size frame with 
% customized blanking intervals. To obtain a frame of this size, select a 
% small section of the input image.
frm2pix = visionhdl.FrameToPixels(...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',32,...
      'ActiveVideoLines',18,...
      'TotalPixelsPerLine',42,...
      'TotalVideoLines',26,...
      'StartingActiveLine',6,...     
      'FrontPorch',5);    
[actPixPerLine,actLine,numPixPerFrm] = getparamfromfrm2pix(frm2pix);  

frmFull = imread('rice.png');
frmIn = frmFull(74:73+actLine,104:103+actPixPerLine);
imshow(frmIn);
  
%% 
% Create a |MeasureTiming| object to observe the parameters of the serial 
% pixel output from the |FrameToPixels| object. 
measure = visionhdl.MeasureTiming; 
%% 
% Serialize the input frame.
[pixInVec,ctrlInVec] = frm2pix(frmIn);
%%
% Some parameters require measurements between frames, so you must simulate
% at least two frames before using the results. Because you serialized only
% one input frame, process that frame twice to measure all parameters
% correctly.  
for f = 1:2
      for p = 1:numPixPerFrm
          [activePixels,activeLines,totalPixels,totalLines,...
              horizBlank,vertBlank] = measure(ctrlInVec(p));
      end
      fprintf('\nFrame %d:\n', f);
      fprintf('activePixels: %f\n', activePixels);
      fprintf('activeLines: %f\n', activeLines);
      fprintf('totalPixels: %f\n', totalPixels);
      fprintf('totalLines: %f\n', totalLines);
      fprintf('horizBlank: %f\n', horizBlank);
      fprintf('vertBlank: %f\n', vertBlank);
end

%% 
% The measurements after the first frame are not accurate.
% However, after the second frame, the measurements match the parameters 
% chosen in the |FrameToPixels| object.