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

    %% Create and Decompose pixelcontrol structures
% If you integrate Vision HDL Toolbox designs with algorithms that use a 
% different interface, you may need to create the structure manually, or 
% manipulate the control signals outside of the structure.   
%%
% Create a |pixelcontrol| structure by passing five control signal values 
% to the |pixelcontrolstruct| function. The function arguments must be 
% scalar values. These control signals may come from a camera or other
% video input source. The control signal vectors in this example describe 
% a simple 2-by-3 pixel test image, surrounded by padding pixels. 
% 
% <<../CustomCtrlSignals_pixelstream_2x3.png>>
%
hStart = [0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0];
vStart = [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
hEnd   = [0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0];
vEnd   = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0];
valid  = [0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0];
pixel = uint8([0 0 0 0 0 0 0 30 60 90 0 0 0 120 150 180 0 0 0 0 0 0 0 0]);
[~,numPix] = size(pixel);
ctrlIn = repmat(pixelcontrolstruct,numPix,1);
for i=1:numPix
    ctrlIn(i) = pixelcontrolstruct(hStart(i),vStart(i),...
                                   hEnd(i),vEnd(i),valid(i));
end
%%
% Each element of |ctrlIn| is a structure containing the five control
% signals. 
ctrlIn(8) 
%% 
% You can then pass this structure to the |step| method of a Vision
% HDL Toolbox System object. This example uses the LookupTable object to 
% invert each pixel.  
tabledata = uint8(linspace(255,0,256));
inverter = visionhdl.LookupTable(tabledata);
pixelOut = zeros(numPix,1,'uint8');
ctrlOut = repmat(pixelcontrolstruct,numPix,1);
for i=1:numPix
    [pixelOut(i),ctrlOut(i)] = step(inverter,pixel(i),ctrlIn(i));
end
%%
% If you need to use the control signals directly in downstream algorithms,
% you can flatten each structure into five |logical| control signal values by
% calling the |pixelcontrolsignals| function. 
[hStartOut,vStartOut,hEndOut,vEndOut,validOut] = deal(false(numPix,1));
for i=1:numPix
    [hStartOut(i),vStartOut(i),hEndOut(i),vEndOut(i),validOut(i)] = ...
        pixelcontrolsignals(ctrlOut(i));
end
%% 
% Each output control signal is a vector of logical values that correspond
% with the |pixelOut| vector. 
validOut'