exponenta event banner

visionhdl. Эрозия

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

Описание

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

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

Примечание

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

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

E = visionhdl.Erosion возвращает объект System, E, которая выполняет морфологическую эрозию потока двоичных пикселей.

E = visionhdl.Erosion(Name,Value) возвращает объект System, E, с дополнительными опциями, указанными одним или несколькими 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);

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

 merode = visionhdl.Erosion( ...
          'Neighborhood',ones(2,7));

Сериализируйте тестовый образ, вызвав объект сериализатора. 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)] = merode(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 102 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