exponenta event banner

visionhdl. GrayscaleOpening

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

Описание

visionhdl.GrayscaleOpening выполняет морфологическую эрозию с последующим морфологическим расширением, используя одинаковую окрестность для обоих расчетов. Объект работает на потоке значений интенсивности пикселей. Можно задать окрестность или элемент структурирования размером до 32 × 32 пикселей. Для элементов структурирования линии, квадрата или прямоугольника шириной более 8 пикселей объект использует алгоритм Ван Герка для нахождения максимума и минимума. Для структурирования элементов шириной менее 8 пикселей или элементов, содержащих ноль, объект реализует конвейерное дерево сравнения для нахождения максимума и минимума.

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

Примечание

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

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

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

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

Свойства

Neighborhood

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

Объект поддерживает окрестности до 32 × 32 пикселей. Для использования элемента структурирования укажитеNeighborhood как getnhood (Image Processing Toolbox)(strel (Image Processing Toolbox)(shape)). Минимальный размер окрестности - матрица 2 × 2, или вектор столбца 2 × 1. Если окрестность является вектором строки, она должна иметь ширину не менее 8 столбцов и не содержать нулей.

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

LineBufferSize

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

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

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

Методы

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

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

Примеры

свернуть все

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

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

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

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

mopen = visionhdl.GrayscaleOpening( ...
          'Neighborhood',ones(2,7));

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

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

[pixIn,ctrlIn] = frm2pix(frmInput);

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

[~,~,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);
pixOut = uint8(zeros(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 216 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.

Алгоритмы

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

См. также

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

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