Main Content

pixelcontrolsignals

Extract signals from pixel-streaming control signal structure

Description

example

[hStart,hEnd,vStart,vEnd,valid] = pixelcontrolsignals(ctrl) extracts five scalar logical control signals from a structure.

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.

Note: This object syntax runs only in R2016b or later. If you are using an earlier release, replace each call of an object with the equivalent step syntax. For example, replace myObject(x) with step(myObject,x).

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

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.

Output 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.

Introduced in R2015a