visionhdl.ROISelector

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

Описание

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

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

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

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

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.

Чтобы выбрать видимые области (ROIs) из потока пикселей:

  1. Создайте visionhdl.ROISelector Объекту и установите его свойства.

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

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

Создание

Синтаксис

ROI = visionhdl.ROISelector(Name,Value)

Описание

ROI = visionhdl.ROISelector(Name,Value) создает системный объект, который выбирает области активной системы координат из потока входа. Задайте свойства с помощью одной или нескольких пар "имя-значение". Заключайте каждое имя свойства в одинарные кавычки. Например,. '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 координат информация только для чтения .

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

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

Входные параметры

расширить все

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

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

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

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

Типы данных: 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 сигналы. Для получения дополнительной информации смотрите Pixel Control Structure.

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

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

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

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