exponenta event banner

visionhdl. Открытие

Морфологическое открытие двоичных пиксельных данных

Описание

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

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

Примечание

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

Строительство

O = visionhdl.Opening возвращает объект System, O, которая выполняет морфологическое открытие в двоичном потоке пикселей.

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

Свойства

Neighborhood

Окрестность пикселя, заданная как вектор или матрица двоичных значений.

Объект поддерживает области размером до 32 на 32 пиксела. Для использования элемента структурирования укажите Neighborhood как getnhood(strel(shape)), где shape определяется входными аргументами для strel(Панель инструментов обработки изображений).

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

По умолчанию: ones(3,3)

LineBufferSize

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

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

По умолчанию: 2048

PaddingMethod

Выберите один из этих методов заполнения границы входного изображения. Дополнительные сведения об этих методах см. в разделе Заполнение кромок.

  • 'Constant' - Объект помещает изображение с единицами для операции эрозии и с нулями для операции расширения. Эти значения предотвращают открытие на границах активного кадра.

  • 'None' - Исключить логику заполнения. Объект не устанавливает для пикселов вне кадра изображения какое-либо конкретное значение. Эта опция уменьшает аппаратные ресурсы, используемые объектом, и блокирование, требуемое между кадрами, но влияет на точность выходных пикселей на краях кадра. Для поддержания синхронизации потока пикселей выходной кадр имеет тот же размер, что и входной кадр. Однако, чтобы избежать использования пикселей, вычисленных из неопределенных значений заполнения, маскируйте n/2 пикселей вокруг края кадра для нисходящих операций, где n - размер ядра операций. Дополнительные сведения см. в разделе Увеличение пропускной способности при отсутствии заполнения.

По умолчанию: 'Constant'

Методы

шагОтчет об открытом значении пикселя на основе соседства
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

Примеры

свернуть все

Выполнение морфологического открытия миниатюры.

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

frmOrig = imread('rice.png');
frmActivePixels = 64;
frmActiveLines = 48;
frmInput = frmOrig(1:frmActiveLines,1:frmActivePixels);
frmInput = frmInput>128;
figure
imshow(frmInput,'InitialMagnification',300)
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+10,...
      'StartingActiveLine',3,...     
      'FrontPorch',10);

Создание объекта фильтра.

 mopen = visionhdl.Opening( ...
          'Neighborhood',ones(5,5));

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

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

[pixIn,ctrlIn] = frm2pix(frmInput);

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

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

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

foundValIn = false;
foundValOut = false;
for p = 1:numPixelsPerFrame  
    if (ctrlIn(p).valid && foundValIn==0)
        foundValIn = p;
    end
    [pixOut(p),ctrlOut(p)] = mopen(pixIn(p),ctrlIn(p));
    if (ctrlOut(p).valid && foundValOut==0)
        foundValOut = p;
    end
end
sprintf('object latency is %d cycles',foundValOut-foundValIn)
ans = 
'object latency is 368 cycles'

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

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

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

Алгоритмы

Этот объект реализует алгоритмы, описанные на странице ссылки на блок открытия.

См. также

| | | | | (Панель инструментов обработки изображений)

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