visionhdl.Closing

Морфологическое закрытие бинарного пиксельного потока

Описание

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 значение.

Типы данных: логический

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

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

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

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

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

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

Типы данных: 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

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

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.

Смотрите также

Объекты

Блоки

Функции

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