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