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

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

Примечание

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

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

  • Минимальный размер входного кадра для мультипиксельной потоковой передачи (любые 4 или 8 пикселей) является 18 rows-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'

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

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