просочиться

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

Синтаксис

B = imfilter(A,h)
B = imfilter(A,h,options,...)

Описание

пример

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

Опционально можно отфильтровать многомерный массив с 2D фильтром с помощью графического процессора (требует Parallel Computing Toolbox™). Для получения дополнительной информации смотрите Обработку изображений на графическом процессоре.

пример

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.

Советы

  • Эта функция может использовать в своих интересах аппаратную оптимизацию для типов данных uint8, uint16, int16, single и 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