exponenta event banner

visionhdl. FrameToPixels

Преобразование видео на основе кадра в поток пикселей

Описание

visionhdl.FrameToPixels преобразует цветное или кадровое видео в градациях серого в поток пикселей и структуру управления. Структура управления указывает достоверность каждого пикселя и его местоположение в кадре. Формат потока пикселей может включать в себя заполнение пикселей вокруг активного кадра. Можно настроить размеры кадра и заполнения, выбрав общий формат видео или указав пользовательские размеры. Дополнительные сведения о формате потока пикселей см. в разделе Потоковый интерфейс пикселей.

Этот объект используется для создания входных данных для функции, предназначенной для генерации кода HDL. Этот блок не поддерживает генерацию кода HDL.

Если проект преобразует кадры в поток пикселей, а затем преобразует поток обратно в кадры, укажите тот же формат видео для FrameToPixels объект и PixelsToFrame объект.

Примечание

Начиная с R2016b, вместо использования step для выполнения операции, определенной системным object™, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Строительство

F2P = visionhdl.FrameToPixels возвращает объект System, F2P, что сериализует кадр в градациях серого 1080 × 1920 в поток пикселей 1080p со стандартным заполнением вокруг активных данных.

F2P = visionhdl.FrameToPixels(Name,Value) возвращает объект System, F2P, с дополнительными опциями, указанными одним или несколькими Name,Value аргументы пары. Name является именем свойства и Value - соответствующее значение. Name должно отображаться внутри отдельных кавычек (''). Можно указать несколько аргументов пары имя-значение в любом порядке как Name1,Value1,...,NameN,ValueN. Не указанные свойства сохраняют значения по умолчанию.

Свойства

NumComponents

Компоненты каждого пикселя, заданные как 1, 3 или 4. Установите значение 1 для видео в градациях серого. Установите значение 3 для цветного видео, например {R, G, B} или {Y, Cb, Cr}. Установите значение 4, чтобы использовать цвет с альфа-каналом для прозрачности. Значение по умолчанию - 1. visionhdl.FrameToPixels объект возвращает P-by-NumComponents матрица, где P - общее число пикселей.

NumPixels

Количество пикселей, переданных на потоковом интерфейсе для каждого цикла, указанное как 1, 4, или 8. Значение по умолчанию: 1. Чтобы включить многопиксельную потоковую передачу и увеличить пропускную способность для видео с высоким разрешением или высокой частотой кадров, установите для этого свойства значение 4 или 8. visionhdl.FrameToPixels объект возвращает P-by-NumPixels матрица, где P - общее число пикселей. При установке NumPixels> 1, необходимо установить NumComponents свойство для 1.

Примечание

Можно моделировать системные объекты с помощью многопиксельного потокового интерфейса, но они не поддерживаются для генерации кода HDL. Используйте эквивалентные блоки для создания кода HDL для мультипиксельных алгоритмов.

VideoFormat

Размеры активной и неактивной областей видеокадра. Чтобы выбрать предопределенный формат, укажите VideoFormat в качестве одного из параметров в первом столбце таблицы. Для пользовательского формата задайте VideoFormat кому 'Custom'и укажите свойства размера в виде целых чисел. Размеры рамы указаны на схеме.

Video FormatActive Pixels Per LineActive Video LinesTotal Pixels Per LineTotal Video LinesStarting Active LineEnding Active LineFront PorchBack Porch
240p320240 40232412404438
480p6404808005253651516 144
480pH7204808585253351216122
576p7205768646254762212132
720p1280720165075025744110260
768p102476813448061077724296
1024p128010241688106642106548360
1080p (по умолчанию)192010802200112542112188192
1200p160012002160125050124964496
2KCinema204810802750112542112163963
4KUHDTV384021604400225042220188472
8KUHDTV7680432088004500424361881032
CustomПользователь -
определенный
Пользователь -
определенный
Пользователь -
определенный
Пользователь -
определенный
Пользователь -
определенный
Пользователь -
определенный
Пользователь -
определенный
Пользователь -
определенный

Примечание

При использовании пользовательского формата свойства, вводимые для активных и неактивных размеров изображения, должны складываться в общие размеры кадра.

Для горизонтального направления TotalPixelsPerLine должно быть больше или равно FrontPorch + ActivePixelsPerLine. Блок вычисляет BackPorch = TotalPixelsPerLineFrontPorchActivePixelsPerLine.

Для вертикального направления: TotalVideoLines должно быть больше или равно StartingActiveLine + ActiveVideoLines − 1. Блок вычисляет значение EndingActiveLine = StartingActiveLine + ActiveVideoLines − 1.

Если указан формат, не соответствующий этим правилам, объект сообщает об ошибке.

Примечание

При использовании пользовательского формата ActivePixelsPerLine должно быть больше 1. Также установите интервал горизонтального гашения или BackPorch + FrontPorch, в соответствии с этими руководящими принципами.

  • Общая сумма BackPorch + FrontPorch должен быть не менее чем в 2 раза больше наибольшего размера ядра алгоритма в объектах, следующих за visionhdl.FrameToPixels объект. Если размер ядра равен < 4, общая площадь крыльца должна быть не менее 8 пикселей.

  • BackPorch должно быть не менее 6 пикселей. Этот параметр представляет собой количество неактивных пикселей перед первым допустимым пикселем в кадре.

Примечание

При использовании многопиксельной потоковой передачи (NumPixels > 1) применяются эти требования.

  • Формат видео должен иметь горизонтальные размеры, делимые на NumPixels значение свойства. Горизонтальные размеры задаются следующими свойствами: ActivePixelsPerLine, TotalPixelsPerLine, FrontPorch, и BackPorch. Поддержка стандартных видеопротоколов 480p, 720p, 1080p и 4k UHD NumPixels равно 4 или 8.

  • Минимальный размер входного кадра для многопиксельной потоковой передачи (4 или 8 пикселей) составляет 18 строк на 32 столбца.

  • Выберите размер ядра и ActivePixelsPerLine такое, что (ActivePixelsPerLine)/(NumPixels) - по крайней мере ширина ядра.

Методы

шагПреобразование кадра изображения в поток пикселей
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

Примеры

свернуть все

В этом примере изображение в градациях серого пользовательского размера преобразуется в поток пикселей. Он использует visionhdl.LookupTable объект для получения отрицательного изображения. Затем он преобразует поток пикселей обратно в полнокадровое изображение.

Загрузите исходное изображение из файла. Выберите часть изображения, соответствующую требуемому размеру теста.

frmOrig = imread('rice.png');
frmActivePixels = 64;
frmActiveLines = 48;
frmInput = frmOrig(1:frmActiveLines,1:frmActivePixels);
figure
imshow(frmInput,'InitialMagnification',300)
title 'Input Image'

Figure contains an axes. The axes with title Input Image contains an object of type image.

Создайте объект сериализатора и укажите размер неактивных пиксельных областей.

frm2pix = visionhdl.FrameToPixels(...
      'NumComponents',1,...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',frmActivePixels,...
      'ActiveVideoLines',frmActiveLines,...
      'TotalPixelsPerLine',frmActivePixels+10,...
      'TotalVideoLines',frmActiveLines+10,...
      'StartingActiveLine',6,...     
      'FrontPorch',5);

Создайте объект таблицы подстановки (LUT), чтобы создать негатив входного изображения.

tabledata = linspace(255,0,256);
inverter = visionhdl.LookupTable(tabledata);

Сериализируйте тестовый образ, вызвав объект сериализатора. pixIn - вектор значений интенсивности. ctrlIn - вектор структур управляющих сигналов.

Примечание.Синтаксис этого объекта выполняется только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов объекта эквивалентным step синтаксис. Например, заменить myObject(x) с step(myObject,x).

[pixIn,ctrlIn] = frm2pix(frmInput);

Подготовка к обработке пикселей путем предварительного выделения выходных векторов.

[~,~,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);
pixOut = zeros(numPixelsPerFrame,1,'uint8');
ctrlOut = repmat(pixelcontrolstruct,numPixelsPerFrame,1);

Для каждого пикселя в потоке найдите отрицательное значение пикселя.

for p = 1:numPixelsPerFrame  
    [pixOut(p),ctrlOut(p)] = inverter(pixIn(p),ctrlIn(p));
end

Создайте объект десериализатора с форматом, соответствующим формату сериализатора. Преобразование потока пикселей в кадр изображения путем вызова объекта десериализатора. Отображение результирующего изображения.

pix2frm = visionhdl.PixelsToFrame(...
      'NumComponents',1,...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',frmActivePixels,...
      'ActiveVideoLines',frmActiveLines);
[frmOutput,frmValid] = pix2frm(pixOut,ctrlOut);
if frmValid
    figure
    imshow(frmOutput,'InitialMagnification',300)
    title 'Output Image'
end

Figure contains an axes. The axes with title Output Image contains an object of type image.

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