exponenta event banner

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