visionhdl.GrayscaleErosion

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

Описание

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

Для структурирования элементов меньше чем 8 пикселей шириной, или которые содержат нулевые элементы, объект реализует конвейерное дерево сравнения для каждой строки окружения. Дополнительное дерево сравнения находит максимальное значение результатов строки. Если элемент структурирования содержит нули, что маска от пикселей, алгоритм сохраняет аппаратные ресурсы, не реализовывая компараторы для тех пиксельных местоположений.

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

Примечание

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

Конструкция

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

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

Значение по умолчанию: 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);

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

merode = visionhdl.GrayscaleErosion( ...
          'Neighborhood',ones(2,5));

Сериализируйте тестовое изображение путем вызова объекта сериализатора. 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)] = 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 107 cycles'

Создайте объект 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.

Алгоритмы

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

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

| | | (Image Processing Toolbox)

Введенный в R2016a
Для просмотра документации необходимо авторизоваться на сайте