visionhdl.MedianFilter

2-D медианную фильтрацию

Описание

visionhdl.MedianFilter выполняет 2-D медианную фильтрацию в потоке пикселей. Объект заменяет каждое значение пикселя медианным значением смежных пикселей.

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

Примечание

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

Конструкция

MF = visionhdl.MedianFilter возвращает Системный объект, MF, который выполняет двумерную медианную фильтрацию данных последовательного пикселя.

MF = visionhdl.MedianFilter(Name,Value) возвращает медианный Системный объект фильтра, MF, с дополнительными опциями, заданными одним или несколькими Name, Value аргументы в виде пар. Name является именем свойства и Value - соответствующее значение. Name должны находиться внутри одинарных кавычек (''). Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN. Не заданные свойства сохраняют значения по умолчанию.

MF = visionhdl.MedianFilter(size,Name,Value) возвращает медианный Системный объект фильтра, MF, с NeighborhoodSize значение свойства установлено в size и дополнительные опции, заданные одним или несколькими Name, Value аргументы в виде пар.

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

size

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

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

MF

visionhdl.MedianFilter Системный объект.

Свойства

NeighborhoodSize

Размер окрестности, в пикселях.

  • '3×3' (по умолчанию)

  • '5×5'

  • '7×7'

LineBufferSize

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

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

По умолчанию: 2048

PaddingMethod

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

  • 'Constant' - Интерпретируйте пиксели вне системы координат изображения как имеющие постоянное значение.

  • 'Replicate' - Повторите значение пикселей на краю изображения.

  • 'Symmetric' - Установите значение пикселей заполнения, чтобы зеркально отобразить ребро изображения.

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

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

По умолчанию: 'Symmetric'

PaddingValue

Постоянное значение, используемое для дополнения контура входного изображения. Это свойство применяется при установке PaddingMethod на 'Constant'. Объект переводит это значение в тот совпадающий тип данных, что и входной пиксель.

По умолчанию: 0

Методы

шагМедианное значение пикселя окрестности
Общий для всех системных объектов
release

Разрешить изменение значения свойства системного объекта

Примеры

свернуть все

Этот пример реализует 5 × 5 медианный фильтр на миниатюрном изображении.

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

frmOrig = imread('rice.png');
frmActiveLines = 48;
frmActivePixels = 64;
frmInput = frmOrig(1:frmActiveLines,1:frmActivePixels);
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+10,...
      'TotalVideoLines',frmActiveLines+10,...
      'StartingActiveLine',6,...     
      'FrontPorch',5);

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

 medianfilt = visionhdl.MedianFilter(...
          'NeighborhoodSize','5x5');

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

Примечание.Синтаксис объекта выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов объекта на эквивалентный step синтаксис. Для примера замените myObject(x) с step(myObject,x).

[pixIn,ctrlIn] = frm2pix(frmInput);

Подготовьтесь к обработке пикселей путем предварительного выделения выходных векторов.

[~,~,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);
pixOut = zeros(numPixelsPerFrame,1,'uint8');
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)] = medianfilt(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 177 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.

Алгоритмы

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

См. также

| | (Image Processing Toolbox)

Введенный в R2015a