imfilter

Фильтрация N-D многомерных изображений

Описание

пример

B = imfilter(A,h) фильтрует многомерный массив A с многомерным фильтром h и возвращает результат в B.

пример

B = imfilter(A,h,options,...) выполняет многомерную фильтрацию согласно одной или нескольким заданным опциям.

Примеры

свернуть все

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

originalRGB = imread('peppers.png');
imshow(originalRGB)

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

h = fspecial('motion', 50, 45);

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

filteredRGB = imfilter(originalRGB, h);
figure, imshow(filteredRGB)

Отфильтруйте изображение снова, на этот раз задав реплицировать граничную опцию.

boundaryReplicateRGB = imfilter(originalRGB, h, 'replicate');
figure, imshow(boundaryReplicateRGB)

По умолчанию, imfilter корреляция использования, потому что функции создания фильтра тулбокса производят ядра корреляции. Используйте дополнительный параметр, чтобы использовать свертку.

Создайте демонстрационную матрицу.

A = magic(5)
A = 5×5

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

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

h = [-1 0 1];

Отфильтруйте корреляцию использования, значение по умолчанию.

imfilter(A,h)
ans = 5×5

    24   -16   -16    14    -8
     5   -16     9     9   -14
     6     9    14     9   -20
    12     9     9   -16   -21
    18    14   -16   -16    -2

Отфильтруйте свертку использования, задав imfilter дополнительным параметром.

imfilter(A,h,'conv')
ans = 5×5

   -24    16    16   -14     8
    -5    16    -9    -9    14
    -6    -9   -14    -9    20
   -12    -9    -9    16    21
   -18   -14    16    16     2

В этом примере, выходе imfilter имеет отрицательные величины, когда вход имеет класс double. Чтобы избежать отрицательных величин, преобразуйте изображение в другой тип данных прежде, чем вызвать imfilter. Например, когда входным типом является uint8, imfilter обрезает выходные значения до 0. Может также быть уместно преобразовать изображение в тип целого числа со знаком.

A = magic(5)
A = 5×5

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

Отфильтруйте изображение с imfilter.

h = [-1 0 1];
imfilter(A,h)
ans = 5×5

    24   -16   -16    14    -8
     5   -16     9     9   -14
     6     9    14     9   -20
    12     9     9   -16   -21
    18    14   -16   -16    -2

Заметьте, что результат имеет отрицательные величины. Чтобы избежать отрицательных величин в выходном изображении, преобразуйте входное изображение в uint8 прежде, чем выполнить фильтрацию. Начиная с входа к imfilter имеет класс uint8, выход также имеет класс uint8, и imfilter обрезает отрицательные величины до 0.

A = uint8(magic(5));
imfilter(A,h)
ans = 5x5 uint8 matrix

   24    0    0   14    0
    5    0    9    9    0
    6    9   14    9    0
   12    9    9    0    0
   18   14    0    0    0

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

свернуть все

Отобразите, чтобы быть отфильтрованными в виде числового массива размерности.

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

Многомерный фильтр в виде массива N-D типа данных double.

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

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

Граничные опции

Опция

Описание

Дополнение опций

числовой скаляр, X

Значения входного массива вне границ массива присвоены значение X. Когда никакая дополнительная опция не задана, значением по умолчанию является 0.

'symmetric'

Значения входного массива вне границ массива вычисляются отражением зеркала массив через границу массивов.

'replicate'

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

'circular'

Значения входного массива вне границ массива вычисляются путем неявного предположения, что входной массив является периодическим.

'OutputSize'

'same'

Выходной массив одного размера с входным массивом. Это - поведение по умолчанию, когда никакие выходные опции размера не заданы.

'full'

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

Корреляция и опции свертки

'corr'

imfilter выполняет многомерную фильтрацию с помощью корреляции, которая является тем же путем который filter2 выполняет фильтрацию. Когда никакая опция корреляции или свертки задана, imfilter корреляция использования.

'conv'

imfilter выполняет многомерную фильтрацию с помощью свертки.

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

свернуть все

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

Советы

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

Алгоритмы

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

  • Если вы задаете ядро ровного размера h, затем центром ядра является floor((size(h) + 1)/2).

    Например, центр фильтра с 4 элементами [0.25 0.75 -0.75 -0.25] второй элемент, 0.75. Этот фильтр дает идентичные результаты как фильтрующий с фильтром с 5 элементами [0 0.25 0.75 -0.75 -0.25].

Расширенные возможности

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте