visionhdl.BilateralFilter

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

Описание

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

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

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

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

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

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

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

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

Создание

Описание

пример

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

Например:

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Зависимости

Этот параметр применяется, когда вы устанавливаете 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