exponenta event banner

просочиться

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

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

Figure contains an axes. The axes contains an object of type image.

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

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

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

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

Figure contains an axes. The axes contains an object of type image.

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

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

Figure contains an axes. The axes contains an object of type image.

По умолчанию 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'

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

Размер вывода

'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