pixelcontrolsignals

Извлечение сигналов из структуры пиксельного потокового сигнала управления

Описание

пример

[hStart,hEnd,vStart,vEnd,valid] = pixelcontrolsignals(ctrl) извлекает пять скалярных logical управляющие сигналы от структуры.

Примеры

свернуть все

Если вы интегрируете проекты Vision HDL Toolbox с алгоритмами, которые используют другой интерфейс, вам, возможно, потребуется создать структуру вручную или манипулировать управляющими сигналами вне структуры.

Создайте pixelcontrol структура путем передачи пяти управляющих значений сигналов в pixelcontrolstruct функция. Аргументы функции должны быть скалярными значениями. Эти сигналы управления могут поступать от камеры или другого источника видео входа. Векторы управляющего сигнала в этом примере описывают простое тестовое изображение 2 на 3 пикселя, окруженное пикселями заполнения.

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

Каждый элемент ctrlIn - структура, содержащая пять управляющих сигналов.

ctrlIn(8)
ans = struct with fields:
    hStart: 1
      hEnd: 1
    vStart: 0
      vEnd: 0
     valid: 1

Затем можно передать эту структуру объекту Vision HDL Toolbox System. Этот пример использует объект LookupTable, чтобы инвертировать каждый пиксель.

Примечание.Синтаксис объекта выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов объекта на эквивалентный step синтаксис. Для примера замените myObject(x) с 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

Если вам нужно использовать сигналы управления непосредственно в дочерних алгоритмах, можно сплющить каждую структуру в пять logical управляйте значениями сигналов путем вызова pixelcontrolsignals функция.

[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

Каждый выходной сигнал управления является вектором логических значений, которые соответствуют pixelOut вектор.

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

Входные параметры

свернуть все

Пиксельные сигналы управления, заданные как структура, содержащая пять logical значения.

Структура управления пикселями является определенным форматом, используемым объектами Vision HDL Toolbox™. См. Раздел «Структура управления пикселями»

Выходные аргументы

свернуть все

Управляющий сигнал, указывающий первый пиксель в горизонтальной линии, заданный как logical скаляр.

Управляющий сигнал, указывающий последний пиксель в горизонтальной линии, заданный как logical скаляр.

Управляющий сигнал, указывающий первый пиксель в первой (верхней) линии, заданный как logical скаляр.

Управляющий сигнал, указывающий последний пиксель в последней (нижней) линии, заданный как logical скаляр.

Управляющий сигнал, указывающий на валидность пикселя, заданный как logical скаляр.

Введенный в R2015a