exponenta event banner

visionhdl. GrayscaleDilation

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

Описание

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

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

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

Примечание

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

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

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

D = visionhdl.GrayscaleDilation(Name,Value) возвращает объект System, D, с дополнительными опциями, указанными одним или несколькими 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(5,5)

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);

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

mdilate = visionhdl.GrayscaleDilation( ...
          'Neighborhood',ones(4,4));

Сериализируйте тестовый образ, вызвав объект сериализатора. 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)] = mdilate(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 104 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