visionhdl.Closing

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

Описание

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

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

  1. Создайте visionhdl.Closing Объекту и установите его свойства.

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

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

Создание

Синтаксис

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

Описание

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

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

Свойства

расширить все

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

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

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

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

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

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

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

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

Для получения дополнительной информации об этих методах см. Раздел «Заполнение ребер».

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

Описание

пример

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

Входные параметры

расширить все

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

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

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

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

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

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

расширить все

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

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

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

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

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

Алгоритмы

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

См. также

Объекты

Блоки

Функции

  • (Набор Image Processing Toolbox)
Введенный в R2015a