imguidedfilter

Ведомая фильтрация изображений

Синтаксис

B = imguidedfilter(A,G)
B = imguidedfilter(A)
B = imguidedfilter(___,Name,Value)

Описание

B = imguidedfilter(A,G) двоичный файл фильтров, шкала полутонов или RGB отображают A с помощью ведомого фильтра, куда процесс фильтрации ведется изображением G.

пример

B = imguidedfilter(A) вход фильтров отображает A под саморуководством, с помощью самого A в качестве изображения руководства. Это может использоваться для сохраняющего ребро сглаживания изображения A.

B = imguidedfilter(___,Name,Value) фильтрует изображение A с помощью пар "имя-значение", чтобы управлять аспектами ведомой фильтрации.

Примеры

свернуть все

Этот пример показывает, как выполнить сглаживание сохранения ребра с помощью ведомого фильтра.

Считайте изображение в рабочую область. Отобразите изображение.

A = imread('pout.tif');
imshow(A);

Сглаживайте изображение с помощью imguidedfilter. В этом синтаксисе imguidedfilter использует само изображение в качестве изображения руководства.

Iguided = imguidedfilter(A);

Для сравнения сглаженного, оригинальное изображение с помощью гауссова фильтра задано imgaussfilt. Установите стандартное отклонение фильтра к 2,5 так, чтобы степень сглаживания приблизительно совпадала со степенью ведомого фильтра.

Igaussian = imgaussfilt(A,2);

Отобразите результат ведомой фильтрации и результат гауссовой фильтрации.

imshowpair(Iguided,Igaussian,'montage');

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

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

свернуть все

Отобразите, чтобы быть отфильтрованными, заданными как двоичный файл, шкала полутонов или изображение RGB.

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

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

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

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: Ismooth = imguidedfilter(A,'NeighborhoodSize',[4 4]);

Размер прямоугольного окружения вокруг каждого пикселя, используемого в ведомой фильтрации, заданной как положительное целое число или вектор с 2 элементами положительных целых чисел. Если вы задаете скалярное значение, такое как Q, то окружение является квадратом размера [Q Q]. Не задавайте значение, больше, чем размер изображения.

Пример: Ismooth = imguidedfilter(A,'NeighborhoodSize',[7 7]);

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

Если вы указываете, что руководство отображает G, то значение по умолчанию degreeOfSmoothing зависит от типа данных G и вычисляется как 0.01*diff(getrangefromclass(G)).^2. Например, степенью по умолчанию сглаживания является 650.25 для изображений типа данных uint8, и значением по умолчанию является 0.01 для изображений типа данных double с пиксельными значениями в области значений [0, 1]. Если вы не задаете изображение руководства, то значение по умолчанию зависит так же от типа данных изображения A.

Пример: Ismooth = imguidedfilter(A,'DegreeOfSmoothing',650.25);

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

Фильтрованное изображение, возвращенное как числовой массив, одного размера и тип данных как A

Советы

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

  • Введите отображает A, и G может иметь различные классы. Если или A или G имеют целое число класса или логические, то imguidedfilter преобразовывает их в точность с плавающей точкой для внутреннего вычисления.

  • Введите отображает A, и G может иметь различное количество каналов.

    • Если A является изображением RGB, и G является полутоновым или двухуровневым изображением, то imguidedfilter использует G для руководства всеми каналами A независимо.

    • Если и A и G являются изображениями RGB, то imguidedfilter использует каждый канал G для руководства соответствующим каналом A, т.е. поведение плоскости плоскостью.

    • Если A является полутоновым или двухуровневым изображением, и G является изображением RGB, то imguidedfilter использует все три канала G для руководства (цветная статистика) для фильтрации A.

Ссылки

[1] Кэйминг Хэ, Цзянь Sun, Ксиэуу Тан, Ведомая Фильтрация Изображений. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту, Объему 35, Выпуск 6, стр 1397-1409, июнь 2013

Введенный в R2014a