visionhdl. FrameToPixels

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

Описание

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

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

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

Примечание

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

Конструкция

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

F2P = visionhdl.FrameToPixels(Name,Value) возвращает Системный объект, F2P, с дополнительными опциями, заданными одним или несколькими аргументами пары 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 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 пикселей.

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

Методы

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