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, аргументы пары Value. Name является именем свойства, и Value является соответствующим значением. Имя должно находиться внутри одинарных кавычек (' '). Можно задать несколько аргументов пары "имя-значение" в любом порядке как 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' — Pad с постоянным значением.

  • '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