visionhdl.MedianFilter

2D медианная фильтрация

Описание

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

Этот объект использует пиксельный интерфейс потоковой передачи со структурой для сигналов управления кадром. Этот интерфейс включает объекту действовать независимо от размера изображения и формата, и соединиться с другими объектами 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Значение парные аргументы. Name имя свойства и Value соответствующее значение. Name должен появиться в одинарных кавычках (''). Можно задать несколько аргументов пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN. Свойства, не заданные, сохраняют свои значения по умолчанию.

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

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

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' (значение по умолчанию) — Ребро клавиатуры изображений с его зеркальным отображением.

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'

Создайте сериализатор, возражают и задают размер неактивных пиксельных областей.

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'

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

Алгоритмы

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

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

| |

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