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'