Main Content

pixelcontrolstruct

Create pixel-streaming control signal structure

Description

ctrl = pixelcontrolstruct(hStart,hEnd,vStart,vEnd,valid) creates a structure containing the five control signals used by Vision HDL Toolbox™ objects. The input arguments must be five scalars of logical type. See Pixel Control Structure.

example

Examples

collapse all

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.

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)
ans = struct with fields:
    hStart: 1
      hEnd: 1
    vStart: 0
      vEnd: 0
     valid: 1

You can then pass this structure to 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)] = 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'
ans = 1x24 logical array

   0   0   0   0   0   0   0   0   0   1   1   1   0   0   0   1   1   1   0   0   0   0   0   0

Input Arguments

collapse all

Control signal indicating the first pixel in a horizontal line, specified as a logical scalar.

Control signal indicating the last pixel in a horizontal line, specified as a logical scalar.

Control signal indicating the first pixel in the first (top) line, specified as a logical scalar.

Control signal indicating the last pixel in the last (bottom) line, specified as a logical scalar.

Control signal indicating the validity of the pixel, specified as a logical scalar.

Output Arguments

collapse all

Pixel control signals, specified as a structure containing five logical values.

The pixel control structure is a specific format used by Vision HDL Toolbox objects. See Pixel Control Structure.

Version History

Introduced in R2015a