visionhdl. ImageFilter

Описание

visionhdl.ImageFilter выполняет двумерную фильтрацию конечного импульсного ответа (FIR) на пиксельном потоке. Это поддерживает использование программируемых коэффициентов фильтра.

Примечание

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

Конструкция

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

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

F = visionhdl.ImageFilter(coeff,lineSize,Name,Value) возвращается 2D КИХ фильтруют Системный объект, F, с набором свойств Coefficients к coeff, свойством LineBufferSize к lineSize и дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value.

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

coeff

Отфильтруйте коэффициенты, заданные как матрица. Каждая размерность матрицы должна иметь по крайней мере 2 элемента и не больше, чем 64 элемента. Этот аргумент устанавливает Содействующее значение свойства.

lineSize

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

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

F

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

Свойства

CoefficientsSource

Выберите источник для определения коэффициентов фильтра.

  • 'Property' (значение по умолчанию) — Выбор это значение, чтобы задать коэффициенты фильтра с помощью свойства Coefficients.

  • 'Input port' — Выберите это значение, чтобы задать коэффициенты фильтра с помощью аргумента coeff.

Coefficients

Коэффициенты фильтра, заданного как матрица. Каждая размерность матрицы должна иметь по крайней мере 2 элемента и не больше, чем 64 элемента. Это свойство применяется, когда вы устанавливаете CoefficientsSource на 'Property'.

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

Значение по умолчанию: [1,0;0,-1]

PaddingMethod

Метод для дополнения контура входного изображения. Смотрите, что Ребро Дополняет.

  • 'Constant' (значение по умолчанию) — Интерпретирует пиксели вне фрейма изображения как наличие постоянного значения.

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

  • 'Symmetric' — Заполняет входную матрицу ее зеркальным отображением.

PaddingValue

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

Значение по умолчанию: 0

LineBufferSize

Размер буфера памяти строки, заданного как целое число.

Выберите степень двойки, которая размещает количество активных пикселей в горизонтальной строке. Если вы задаете значение, которое не является степенью двойки, объект использует следующую самую большую степень двойки. Объект выделяет (coefficient rows – 1)-by-LineBufferSize ячейки памяти, чтобы сохранить пиксели.

Значение по умолчанию: 2048

CoefficientsDataType

Выберите метод для определения типа данных коэффициентов фильтра. Это свойство применяется, когда вы устанавливаете CoefficientsSource на 'Property'.

  • 'Same as first input'' (значение по умолчанию) — Наборы тип данных коэффициентов, чтобы совпадать с типом данных аргумента pixelIn метода step.

  • 'custom' — Устанавливает тип данных коэффициентов совпадать с типом данных, заданным в свойстве CustomCoefficientsDataType.

При преобразовании коэффициентов в заданный тип данных объект округляется к самому близкому представимому значению и насыщает на переполнении.

CustomCoefficientsDataType

Тип данных для коэффициентов фильтра, заданных как numerictype(signed,WL,FL), где WL является размером слова и FL, является дробной длиной в битах. Это свойство применяется, когда вы устанавливаете CoefficientsDataType на 'custom'.

Значение по умолчанию: numerictype(true,16,15)

OutputDataType

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

  • 'Same as first input' (значение по умолчанию) — Наборы тип данных выходных пикселей, чтобы совпадать с типом данных аргумента pixelIn метода step.

  • 'full precision' — Вычисляет типы внутренних и выходных данных, использующие правила полной точности. Эти правила обеспечивают точные численные данные фиксированной точки и предотвращают квантование в объекте. Биты добавляются, по мере необходимости, чтобы предотвратить округление и переполнение.

  • 'custom' — Устанавливает тип данных выходных пикселей совпадать с типом данных, который вы задаете в свойстве CustomOutputDataType.

CustomOutputDataType

Тип данных для выходных пикселей, заданных как numerictype(signed,WL,FL), где WL является размером слова и FL, является дробной длиной в битах. Это свойство применяется только, когда вы устанавливаете OutputDataType на custom.

Значение по умолчанию: numerictype(true,8,0)

OverflowAction

Действие переполнения используется для операций фиксированной точки.

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

Значение по умолчанию: Wrap

RoundingMethod

Режим Rounding используется для операций фиксированной точки.

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

Значение по умолчанию: Floor

Методы

шаг2D КИХ-фильтрация
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

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

Этот пример реализует 2D фильтр размытия на изображении миниатюр.

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

frmOrig = imread('rice.png');
frmActivePixels = 64;
frmActiveLines = 48;
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);

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

 filt2d = visionhdl.ImageFilter(...
          'Coefficients',ones(2,2)/4,...
          'CoefficientsDataType','Custom',...
          'CustomCoefficientsDataType',numerictype(0,1,2),...
          'PaddingMethod','Symmetric');

Сериализируйте тестовое изображение путем вызова объекта сериализатора. 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)] = filt2d(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 101 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

Алгоритмы

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

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