visionhdl.GrayscaleErosion

Морфологически разрушьте полутоновый пиксельный поток

Описание

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

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

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

Морфологически разрушать полутоновый пиксельный поток:

  1. Создайте visionhdl.GrayscaleErosion объект и набор его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

eroder = visionhdl.GrayErosion создает Системный объект, который морфологически разрушает полутоновый пиксельный поток.

пример

eroder = visionhdl.GrayErosion(Name,Value) свойства наборов с помощью одних или нескольких аргументов name-value. Например, 'Neighborhood',getnhood(strel('disk',4)) задает окружение дискового шаблона 4 на 4.

Свойства

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

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

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

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

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

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

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

Объект выделяет (n – 1)-by-LineBufferSize ячейки памяти, чтобы сохранить пиксели, где n является количеством линий в Neighborhood значение свойства.

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

Описание

пример

[pixelout,ctrlout] = eroder(pixelin,ctrlin) возвращает следующее значение интенсивности пикселей, pixelout, следуя из морфологического разрушения окружения вокруг каждого значения интенсивности входного пикселя, pixelin.

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

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

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

Входной пиксель в виде беззнакового целого.

double и single типы данных поддерживаются для симуляции, но не для генерации HDL-кода.

Типы данных: single | double | uint8 | uint16 | uint32 | uint64 | fixdt(0,N,0)

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

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

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

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

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

Тип данных совпадает с типом данных pixelin.

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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 object. The axes object with title Input Image contains an object of type image.

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

frm2pix = visionhdl.FrameToPixels(...
      'NumComponents',1, ...
      'VideoFormat','custom', ...
      'ActivePixelsPerLine',frmActivePixels, ...
      'ActiveVideoLines',frmActiveLines, ...
      'TotalPixelsPerLine',frmActivePixels+20, ...
      'TotalVideoLines',frmActiveLines+20, ...
      'StartingActiveLine',3, ...     
      'FrontPorch',10);

Создайте морфологическое, разрушают Системный объект.

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

Сериализируйте тестовое изображение путем вызова объекта сериализатора. pixin вектор из значений интенсивности. ctrlin вектор из структур управляющего сигнала.

[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)] = eroder(pixin(p),ctrlin(p));
    if (ctrlout(p).valid && foundValOut==0)
        foundValOut = p;
    end
end
objLatency_cycles = foundValOut - foundValIn
objLatency_cycles = 107

Создайте 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 object. The axes object with title Output Image contains an object of type image.

Алгоритмы

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

Расширенные возможности

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

Объекты

Блоки

Функции

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