visionhdl. PixelsToFrame

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

Описание

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

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

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

Примечание

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

Конструкция

P2F = visionhdl.PixelsToFrame возвращает Системный объект, P2F, который преобразовывает пиксельный поток на 1 080 пунктов, со стандартным дополнением, к шкале полутонов 1080×1920 кадр.

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

Свойства

NumComponents

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

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'

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

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

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

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

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