exponenta event banner

visionhdl. Закрытие

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

Описание

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

Чтобы морфологически закрыть двоичный поток пикселей:

  1. Создать visionhdl.Closing и задайте его свойства.

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

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

Создание

Синтаксис

mclose = visionhdl.Closing
mclose = visionhdl.Closing(Name,Value)

Описание

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

mclose = visionhdl.Closing(Name,Value) задает свойства, используя один или несколько аргументов «имя-значение». Заключите каждое имя свойства в кавычки. Например, 'Neighborhood',getnhood(strel('disk',4)) задает окрестность дискового массива 4 на 4.

Свойства

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

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

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

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

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

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

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

Метод заполнения границы входного изображения, указанный как одно из этих значений.

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

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

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

Использование

Синтаксис

Описание

пример

[pixelOut,ctrlOut] = mclose(pixelIn,ctrlIn) возвращает следующее двоичное значение пикселя, pixelOut, в результате морфологической операции закрытия окрестности вокруг каждого входного двоичного пикселя, pixelIn.

Входные аргументы

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

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

Входной пиксель, заданный как logical значение.

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

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

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

Выходные аргументы

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

Один выходной пиксель, преобразованный морфологической операцией, возвращаемый как logical значение.

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

Загрузка исходного изображения из файла. Выберите часть изображения, соответствующую требуемому размеру теста. Это исходное изображение содержит значения интенсивности пикселей 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);

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

 mclose = visionhdl.Closing(...
          'Neighborhood',getnhood(strel('disk',4)));

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

[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)] = mclose(pixIn(p),ctrlIn(p));
    if (ctrlOut(p).valid && foundValOut==0)
        foundValOut = p;
    end
end
objLatency_cycles = foundValOut-foundValIn
objLatency_cycles = 540

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

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