visionhdl.FrameToPixels

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

Описание

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

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

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

Примечание

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

Конструкция

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

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

Свойства

NumComponents

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

NumPixels

Количество пикселей, переданных по потоковому интерфейсу для каждого цикла, заданное как 1, 4, или 8. Значение по умолчанию является 1. Чтобы включить многопиксельную потоковую передачу и увеличить пропускную способность для видео с высоким разрешением или высокой частотой кадров, установите это свойство на 4 или 8. The 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 раза больше kernel size алгоритма в объектах, следующих за visionhdl.FrameToPixels объект. Если kernel size составляет < 4, общее крыльцо должно быть не менее 8 пикселей.

  • The 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