Извлеките сигналы от передающей потоком пиксель структуры управляющего сигнала
[hStart,hEnd,vStart,vEnd,valid]
= pixelcontrolsignals(ctrl)
Если вы интегрируете проекты 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.