exponenta event banner

visionhdl. PixelsToFrame

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

Описание

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

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

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

Примечание

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

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

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

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

Свойства

NumComponents

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

NumPixels

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

Примечание

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

VideoFormat

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

Video FormatActive Pixels Per LineActive Video Lines
240p320240
480p640480
480pH720480
576p720576
720p1280720
768p1024768
1024p12801024
1080p (по умолчанию)19201080
1200p16001200
2KCinema20481080
4KUHDTV38402160
8KUHDTV76804320
CustomПользователь -
определенный
Пользователь -
определенный

Методы

шагПреобразование потока пикселей в кадр изображения
Общие для всех системных объектов
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