exponenta event banner

visionhdl. ROISelector

Выберите интересующую область (ROI) из потока пикселей

Описание

visionhdl.ROISelector Система object™ выбирает часть активного кадра из видеопотока. Общий размер кадра остается прежним. Выходные управляющие сигналы указывают новую активную область кадра. Эта диаграмма показывает неактивные пиксельные области синим цветом и запрошенную выходную область оранжевым цветом.

Specified region of the input frame returned as a pixel stream with pixels outside of the region marked as inactive.

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

Области независимы друг от друга, поэтому они могут перекрываться. Если указать область, включающую край активного кадра, объект возвращает только активную часть области. На этой диаграмме показаны выходные кадры для трех запрашиваемых областей. Вторая выходная область не включает неактивную область над кадром.

Three regions (one partially falling outside the active frame, and one overlapping another), returned as three pixel streams.

Объект также обеспечивает режим вертикального повторного использования. В этом режиме необходимо указать области, которые не имеют вертикального перекрытия и выровнены по столбцам. Каждый столбец областей совместно использует один выходной поток пикселей. Сигналы управления определяют каждую область в потоке. Эта компоновка обеспечивает параллельную обработку каждого столбца и повторное использование логики обработки нисходящего потока для каждой области в столбце. Для использования этого режима установите VerticalReuse свойство для true. Используйте visionhdlframetoregions функция разделения фрейма на мозаичные области для повторного использования по вертикали.

Eight tiled regions returned as two pixel streams that each contain four vertically-aligned regions.

Чтобы выбрать интересующие области (ROI) из потока пикселей:

  1. Создать visionhdl.ROISelector и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Синтаксис

ROI = visionhdl.ROISelector(Name,Value)

Описание

ROI = visionhdl.ROISelector(Name,Value) создает объект System, который выбирает области активного кадра из входного потока. Задайте свойства, используя одну или несколько пар имя-значение. Заключите каждое имя свойства в отдельные кавычки. Например,.'Regions',[1 1 32 24] настраивает объект для выбора области 32 на 24 пиксела в левом верхнем углу кадра.

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Опция для возврата одного потока пикселей для каждого столбца областей, указанного как false или true. При установке для этого свойства значения true, необходимо указать области, не имеющие вертикального перекрытия и выровненные по столбцам. Объект имеет один выходной поток пикселей для каждого столбца областей. Эта компоновка обеспечивает параллельную обработку каждого столбца и повторное использование логики обработки нисходящего потока для каждой области в столбце. Используйте visionhdlframetoregions функция разделения фрейма на мозаичные области для повторного использования по вертикали.

Зависимости

Чтобы включить это свойство, установите значение RegionsSource свойство для 'Property'.

Расположение определений выходных областей, указанных как одно из следующих значений:

'Property' - Укажите области с помощью Regions собственность.

'Input port' - укажите области с помощью входных аргументов объекта. Каждый входной аргумент представляет собой четырехэлементный вектор строки, соответствующий одной области. Объект фиксирует значение region входные аргументы при получении vStart установить в значение true в структуре управления вводом.

Зависимости

Чтобы включить это свойство, установите значение VerticalReuse свойство для false.

Прямоугольные области для выбора из входного кадра, заданные как матрица N-by-4.

N - количество регионов. Четыре элемента, определяющие каждую область, являются верхними левыми начальными координатами и размерами области и должны иметь вид [hPos vPos hSize vSize]. Число координат в левом верхнем углу активного кадра, определяемое как [1,1]. Размер hSize должен быть больше 1.

При установке VerticalReuse свойство для false, области независимы друг от друга, поэтому они могут перекрываться. N не должно быть больше 16.

При установке VerticalReuse свойство для trueобласти в этой матрице не должны иметь вертикального перекрытия и быть выровнены по столбцам. На этой диаграмме показаны два примера недопустимых областей, обозначенных синей пунктирной линией. Область слева перекрывает другую область вертикально. Две области внизу не выравниваются с другими областями в столбцах. Регионы не должны покрывать весь каркас. Пикселы за пределами мозаичных областей помечаются как неактивные пикселы. Число столбцов не должно превышать 16.

Зависимости

Чтобы включить этот параметр, установите RegionsSource свойство для 'Property'.

Количество region входные аргументы объекта, указанные как целое число в диапазоне [1, 16].

Зависимости

Чтобы включить этот параметр, установите RegionsSource свойство для 'Input port'.

Использование

Синтаксис

[pixel1,ctrl1] = ROI(pixelIn,ctrlIn)
[pixel1,ctrl1,...,pixelN,ctrlN] = ROI(pixelIn,ctrlIn)
[pixel1,ctrl1,...,pixelN,ctrlN] = ROI(pixelIn,ctrlIn,region1,...,regionN)

Описание

[pixel1,ctrl1] = ROI(pixelIn,ctrlIn) возвращает следующее значение пикселя, pixel1и управляющие сигналы, ctrl1, в результате маскирования активного кадра изображения в одну новую область. Определите область, установив Regions свойство для четырехэлементного вектора строки, [hPos vPos hSize vSize].

[pixel1,ctrl1,...,pixelN,ctrlN] = ROI(pixelIn,ctrlIn) возвращает следующие значения пикселей, pixel1,...,pixelNи управляющие сигналы, ctrl1,...,ctrlN, каждого потока, полученного в результате маскирования активного кадра изображения. При установке VerticalReuse свойство для false, каждый выходной поток содержит одну активную область, и количество потоков равно NumberOfRegions значение свойства или количество строк в Regions матрица. При установке VerticalReuse свойство для trueкаждый выходной поток содержит набор вертикально выровненных областей. В обоих случаях определите области, установив Regions для N-by-4 матрицы координат ROI.

[pixel1,ctrl1,...,pixelN,ctrlN] = ROI(pixelIn,ctrlIn,region1,...,regionN) возвращает следующие значения пикселей каждого потока, pixel1,...,pixelN, в результате маскирования активного кадра изображения в от 1 до N новых областей, по указанию region1,...,regionN аргументы. Каждый region входной - четырехэлементный вектор строки координат ROI. Используйте этот синтаксис при установке RegionsSource свойство для 'Input Port', и NumberOfRegions собственность Н.

Этот объект использует потоковый пиксельный интерфейс со структурой для сигналов управления кадрами. Этот интерфейс позволяет объекту работать независимо от размера и формата изображения и подключаться к другим объектам Vision HDL Toolbox™. Объект принимает и возвращает значение скалярного пикселя и управляющие сигналы в виде структуры, содержащей пять сигналов. Сигналы управления указывают достоверность каждого пикселя и его местоположение в кадре. Чтобы преобразовать матрицу пикселей в поток пикселей и управляющие сигналы, используйте visionhdl.FrameToPixels объект. Полное описание интерфейса см. в разделе Потоковый пиксельный интерфейс.

Входные аргументы

развернуть все

Один пиксель изображения в потоке пикселей, заданный как скалярное значение, представляющее интенсивность.

double и single типы данных поддерживаются для моделирования, но не для генерации кода HDL.

Типы данных: uint8 | uint16 | uint32 | int8 | int16 | int32 | fi | logical | double | single

Управляющие сигналы, сопровождающие входной поток пикселей, указанный как pixelcontrol структура, содержащая пять logical сигналы типа данных. Сигналы описывают достоверность пикселя и его местоположение в кадре. Дополнительные сведения см. в разделе Структура пиксельного управления.

Типы данных: struct

Представляющая интерес область, заданная как вектор строки из четырех положительных целых чисел, которые определяют координаты верхнего левого угла и размеры каждого требуемого выходного кадра. Вектор должен иметь вид [hPos vPos hSize vSize]. Укажите N аргументов области, где N - NumberOfRegions значение свойства.

Зависимости

Чтобы включить этот аргумент, снимите флажок VerticalReuse свойство для false и установите RegionsSource свойство для 'Input Port'.

Типы данных: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

развернуть все

Выходной пиксель, возвращаемый как скалярное значение. Тип выходных данных совпадает с типом входных данных pixelIn аргумент. По умолчанию число аргументов выходного пикселя равно NumberOfRegions значение свойства или количество строк в Regions матрица свойств. При установке VerticalReuse кому trueобъект имеет один выходной пиксельный аргумент для каждого столбца вертикально выровненных областей.

Сигналы управления потоком пикселей, указывающие достоверность каждого выходного пикселя и его местоположение в кадре, возвращаемые в виде структуры из пяти logical сигналы. Дополнительные сведения см. в разделе Структура пиксельного управления.

По умолчанию число выходных управляющих аргументов равно NumberOfRegions значение свойства или количество строк в Regions матрица свойств. При установке VerticalReuse кому true, объект имеет один выходной управляющий аргумент для каждого столбца вертикально выровненных областей.

Типы данных: struct

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Загрузите исходное изображение из файла, а затем отобразите его.

frmOrig = imread('coins.png');
[frmActiveLines,frmActivePixels] = size(frmOrig);
imshow(frmOrig)
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+20, ...
      'TotalVideoLines',frmActiveLines+20, ...
      'StartingActiveLine',3, ...     
      'FrontPorch',10);

Создайте объект для выбора интересующей области. Определите прямоугольную область по координатам ее верхнего левого угла и размерам.

hPos = 80;
vPos = 60;
hSize = 65;
vSize = 50;
roicoin = visionhdl.ROISelector('Regions',[hPos vPos hSize vSize])
roicoin = 
  visionhdl.ROISelector with properties:

    VerticalReuse: false
    RegionsSource: 'Property'
          Regions: [80 60 65 50]

Сериализируйте тестовый образ, вызвав объект сериализатора. pixIn - вектор значений интенсивности. ctrlIn - вектор структур управляющих сигналов.

[pixIn,ctrlIn] = frm2pix(frmOrig);

Подготовка к обработке пикселей путем предварительного выделения выходных векторов. Выходной кадр имеет тот же размер, что и входной кадр, но сигналы управления указывают на другую активную область.

[~,~,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);
pixOut = uint8(zeros(numPixelsPerFrame,1));
ctrlOut = repmat(pixelcontrolstruct,numPixelsPerFrame,1);

Для каждого пикселя в заполненном кадре примените маску области.

for p = 1:numPixelsPerFrame  
    [pixOut(p),ctrlOut(p)] = roicoin(pixIn(p),ctrlIn(p));
end

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

pix2frm = visionhdl.PixelsToFrame( ...
      'NumComponents',1, ...
      'VideoFormat','custom', ...
      'ActivePixelsPerLine',hSize, ...
      'ActiveVideoLines',vSize);
[frmOutput,frmValid] = pix2frm(pixOut,ctrlOut);
if frmValid
    figure
    imshow(frmOutput)
    title 'Output Image'
end

Figure contains an axes. The axes with title Output Image contains an object of type image.

Алгоритмы

развернуть все

Сгенерированный код HDL для visionhdl.ROISelector Системный объект использует два 32-разрядных счетчика. Объект не использует дополнительные счетчики для дополнительных областей.

Представлен в R2016a