visionhdl. ROISelector

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

Описание

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

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

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

Примечание

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

Конструкция

ROI = visionhdl.ROISelector возвращает Системный объект, ROI, который выбирает область по умолчанию активного кадра от входного потока.

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

Свойства

RegionsSource

Местоположение выходных определений области.

Свойство Задайте области в свойстве Regions.

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

Значение по умолчанию: 'Property'

Regions

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

N является количеством областей. Можно выбрать до 16 областей. Четыре элемента, которые задают каждую область, являются верхними левыми стартовыми координатами и размерностями, [hPos vPos hSize vSize]. Координаты рассчитывают от верхнего левого угла активного кадра, заданного как [1,1]. hSize должен быть больше, чем 1. Области независимы друг от друга, таким образом, они могут наложиться. Это свойство применяется, когда вы устанавливаете RegionsSource на 'Property'.

Значение по умолчанию: [100 100 50 50]

NumberofRegions

Количество аргументов region к методу step, заданному как положительное целое число.

Можно выбрать до 16 областей. Это свойство применяется, когда вы устанавливаете RegionsSource на 'Input port'.

Значение по умолчанию: 1

Методы

шагВозвратите следующий пиксель в перевыбранном кадре
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

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

Выберите фиксированную видимую область (ROI) из входного кадра.

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

frmOrig = imread('coins.png');
[frmActiveLines,frmActivePixels] = size(frmOrig);
imshow(frmOrig)
title 'Input 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:

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

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

Примечание: Этот синтаксис запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов объекта с эквивалентным синтаксисом step. Например, замените myObject(x) на step(myObject,x).

[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

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

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

Алгоритм

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

Задержка

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

Смотрите также

|

Введенный в R2016a