Извлеките сигналы из передающей потоком пиксель структуры управляющего сигнала
Если вы интегрируете проекты 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. Этот пример использует объект 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
ctrl
— Пиксельные управляющие сигналыlogical
значенияПиксельные управляющие сигналы в виде структуры, содержащей пять logical
значения.
Пиксельная управляющая структура является определенным форматом, используемым объектами Vision HDL Toolbox™. Смотрите Пиксельную Управляющую структуру.
hStart
— Управляющий сигнал, указывающий на первый пиксель в горизонтальной линииlogical
Управляющий сигнал, указывающий на первый пиксель в горизонтальной линии в виде logical
скаляр.
hEnd
— Управляющий сигнал, указывающий на последний пиксель в горизонтальной линииlogical
Управляющий сигнал, указывающий на последний пиксель в горизонтальной линии в виде logical
скаляр.
vStart
— Управляющий сигнал, указывающий на первый пиксель в первой (главной) линииlogical
Управляющий сигнал, указывающий на первый пиксель в первой (главной) линии в виде logical
скаляр.
vEnd
— Управляющий сигнал, указывающий на последний пиксель в последнем (нижняя часть) линияlogical
Управляющий сигнал, указывающий на последний пиксель в последнем (нижняя часть) линия в виде logical
скаляр.
valid
— Управляющий сигнал, указывающий на валидность пикселяlogical
Управляющий сигнал, указывающий на валидность пикселя в виде logical
скаляр.
pixelcontrolstruct
| visionhdl.FrameToPixels
| visionhdl.PixelsToFrame
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.