exponenta event banner

pixelcontrolstruct

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

Описание

пример

ctrl = pixelcontrolstruct(hStart,hEnd,vStart,vEnd,valid) создает структуру, содержащую пять управляющих сигналов, используемых объектами Vision HDL Toolbox™. Входные аргументы должны быть пятью скалярами 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 скаляр.

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

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

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

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

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

свернуть все

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

Структура пиксельного управления представляет собой конкретный формат, используемый объектами панели инструментов Vision HDL. См. раздел Структура пиксельного управления.

Представлен в R2015a