visionhdl.BilateralFilter

Выполните 2D фильтрацию пиксельного потока

Описание

visionhdl.BilateralFilter возразите изображениям фильтров при сохранении ребер. Некоторые приложения двусторонней фильтрации являются шумоподавлением при сохранении ребер, разделении структуры от освещения и cartooning, чтобы улучшить ребра. Фильтр заменяет каждый пиксель в центре окружения средним значением, которое вычисляется с помощью пространственного и интенсивность Гауссовы фильтры. Объект определяет коэффициенты фильтра из:

  • Пространственное местоположение в окружении (похожий на Гауссов фильтр размытия)

  • Различие в интенсивности от окружения сосредотачивает значение

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

Выполнять двустороннюю фильтрацию пиксельного потока:

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

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

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

Создание

Описание

пример

filt2d = visionhdl.BilateralFilter(Name,Value) возвращает двустороннюю Систему фильтра object™. Установите свойства с помощью пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки.

Например:

filt2d = visionhdl.BilateralFilter('CoefficientsDataType','Custom',...
                      'CustomCoefficientsDataType',numerictype(0,18,17))

Свойства

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

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

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

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

Размер области изображений использовался для расчета среднего значения, заданного как N-by-N пиксельный квадрат.

Пространственная цель стандартного отклонения использовалась для расчета коэффициентов в пространственном Гауссовом фильтре, заданном как положительное вещественное число. Этот параметр не имеет никаких пределов, но рекомендуемые значения от 0,1 до 10. На верхнем уровне распределение становится плоским, и коэффициенты малы. На нижнем уровне распределение достигает максимума в центре и имеет маленькие коэффициенты в остальной части окружения. Эти граничные значения также зависят от размера окружения и типа данных, используемого в коэффициентах.

Стандартное отклонение интенсивности предназначается для использованных для расчета коэффициентов для интенсивности Гауссов фильтр, заданный как положительное вещественное число. Этот параметр не имеет никаких пределов, но рекомендуемые значения от 0,1 до 10. На верхнем уровне распределение становится плоским, и коэффициенты малы. На нижнем уровне распределение достигает максимума в центре и имеет маленькие коэффициенты в остальной части окружения. Эти граничные значения также зависят от размера окружения и типа данных, используемого в коэффициентах.

Когда стандартное отклонение интенсивности является большим, двусторонние действия фильтра больше как Гауссов фильтр размытия, потому что Гауссова интенсивность имеет более низкий пик. С другой стороны, когда стандартное отклонение интенсивности меньше, ребра в интенсивности сохранены или улучшены.

Метод для дополнения контура входного изображения.

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

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

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

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

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

Зависимости

Этот параметр применяется, когда вы устанавливаете PaddingMethod к 'Constant'.

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

Если вы задаете значение, которое не является степенью двойки, объект использует следующую самую большую степень двойки.

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

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

Метод для определения типа данных коэффициентов фильтра. Коэффициенты обычно требуют типа данных с большей точностью, чем тип входных данных.

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

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

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

Задайте тип данных без знака, который может представлять значения меньше чем 1. Коэффициенты обычно требуют типа данных с большей точностью, чем тип входных данных. Объект вычисляет коэффициенты на основе размера окружения и значений IntensityStdDev и SpatialStdDev. Большие окружения распространяют Гауссову функцию, таким образом, что каждое содействующее значение меньше. Большее стандартное отклонение сглаживает Гауссово так, чтобы коэффициенты были более универсальными по своей природе, и меньшее стандартное отклонение производит остроконечный ответ.

Примечание

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

Зависимости

Это свойство применяется, когда вы устанавливаете CoefficientsDataType к 'Custom'.

Метод, чтобы определить тип данных выходных пикселей.

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

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

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

Зависимости

Это свойство применяется, когда вы устанавливаете OutputDataType к 'Custom'.

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

Описание

пример

[pixelOut,ctrlOut] = filt2d(pixelIn,ctrlIn) возвращает отфильтрованное пиксельное значение и сопроводительные управляющие сигналы.

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

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

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

Один пиксель изображения в пиксельном потоке, заданном как интенсивность представления скалярного значения. Целое число и типы данных с фиксированной точкой, больше, чем 16 битов, не поддержаны.

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

Типы данных: uint8 | uint16 | int8 | int16 | fi | logical | double | single

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

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

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

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

Один пиксель изображения в пиксельном потоке, возвращенном как интенсивность представления скалярного значения. Целое число и типы данных с фиксированной точкой, больше, чем 16 битов, не поддержаны.

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

Типы данных: uint8 | uint16 | int8 | int16 | fi | logical | double | single

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

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

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

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

release(obj)

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

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

Примеры

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

Загрузите входное изображение и создайте объекты deserializer и сериализатор.

frmOrig = imread('rice.png');
frmActivePixels = 48;
frmActiveLines = 32;
frmIn = frmOrig(1:frmActiveLines,1:frmActivePixels);
figure
imshow(frmIn,'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);
[~,~,numPixPerFrm] = getparamfromfrm2pix(frm2pix);

pix2frm = visionhdl.PixelsToFrame(...
      'NumComponents',1,...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',frmActivePixels,...
      'ActiveVideoLines',frmActiveLines);

Запишите функцию, которая создает и вызывает Систему object™. Можно сгенерировать HDL от этой функции.

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

function  [pixOut,ctrlOut] = BilatFilt(pixIn,ctrlIn)
%bilatFilt 
% Filters one pixel according to the default spatial and intensity standard
% deviation, 0.5.
% pixIn and pixOut are scalar intensity values.
% ctrlIn and ctrlOut are structures that contain control signals associated
% with the pixel.
% You can generate HDL code from this function.

  persistent filt2d;
  if isempty(filt2d)
    filt2d = visionhdl.BilateralFilter(...
      'CoefficientsDataType','Custom',...
      'CustomCoefficientsDataType',numerictype(0,18,17));
 
  end    
 [pixOut,ctrlOut] = filt2d(pixIn,ctrlIn);
end

Отфильтруйте изображение путем вызывания функции для каждого пикселя.

pixOutVec = zeros(numPixPerFrm,1,'uint8');
ctrlOutVec = repmat(pixelcontrolstruct,numPixPerFrm,1);

[pixInVec,ctrlInVec] = frm2pix(frmIn);
for p = 1:numPixPerFrm
    [pixOutVec(p),ctrlOutVec(p)] = BilatFilt(pixInVec(p),ctrlInVec(p));
end
[frmOut,frmValid] = pix2frm(pixOutVec,ctrlOutVec);

if frmValid
   figure;
   imshow(frmOut,'InitialMagnification',300)
   title 'Output Image'
end

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

Блоки

Объекты

Введенный в R2017b