fspecial

Создайте предопределенный фильтр 2-D

Описание

пример

h = fspecial(type) создает двумерный фильтр h указанного type. Некоторые из типов фильтров имеют необязательные дополнительные параметры, показанные в следующих синтаксисах. fspecial возвращает h как корреляционное ядро, которое является подходящей формой для использования с imfilter.

h = fspecial('average',hsize) возвращает фильтр усреднения h размера hsize.

h = fspecial('disk',radius) возвращает круговой фильтр среднего значения (pillbox) в квадратной матрице размера 2*radius+1.

h = fspecial('gaussian',hsize,sigma) возвращает вращательно симметричный Гауссов lowpass фильтр размера hsize со стандартным sigma отклонения. Не рекомендуется. Использовать imgaussfilt или imgaussfilt3 вместо этого.

h = fspecial('laplacian',alpha) возвращает фильтр 3 на 3, аппроксимирующий форму двумерного лапласианского оператора, alpha управляет формой лапласиана.

h = fspecial('log',hsize,sigma) возвращает вращательно симметричный Лаплакиан Гауссова фильтра размера hsize со стандартным sigma отклонения.

h = fspecial('motion',len,theta) возвращает фильтр, чтобы аппроксимировать, после свертки с изображением, линейное движение камеры. len задает длину движения и theta задает угол движения в степенях в направлении против часовой стрелки. Фильтр становится вектором для горизонтальных и вертикальных движений. Значение по умолчанию len является 9 и значение по умолчанию theta является 0, что соответствует горизонтальному движению в девять пикселей.

h = fspecial('prewitt') возвращает фильтр 3 на 3, который подчеркивает горизонтальные ребра путем аппроксимации вертикального градиента. Чтобы подчеркнуть вертикальные ребра, транспонируйте фильтр h'.

[ 1  1  1 
  0  0  0 
 -1 -1 -1 ]

h = fspecial('sobel') возвращает фильтр 3 на 3, который подчеркивает горизонтальные ребра, используя эффект сглаживания путем аппроксимации вертикального градиента. Чтобы подчеркнуть вертикальные ребра, транспонируйте фильтр h'.

[ 1  2  1 
  0  0  0 
 -1 -2 -1 ]

Примеры

свернуть все

Чтение изображения и его отображение.

I = imread('cameraman.tif');
imshow(I);

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

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

H = fspecial('motion',20,45);
MotionBlur = imfilter(I,H,'replicate');
imshow(MotionBlur);

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

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

H = fspecial('disk',10);
blurred = imfilter(I,H,'replicate'); 
imshow(blurred);

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

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

свернуть все

Тип фильтра, заданный как одно из следующих значений:

Значение

Описание

'average'

Фильтр усреднения

'disk'

Круговой фильтр среднего (дульный)

'gaussian'

Гауссов lowpass фильтр. Не рекомендуется. Использовать imgaussfilt или imgaussfilt3 вместо этого.

'laplacian'

Аппроксимирует двумерный лапласианский оператор

'log'

Лапласиан Гауссова фильтра

'motion'

Аппроксимирует линейное движение камеры

'prewitt'

Предварительный горизонтальный фильтр, подчеркивающий кромку

'sobel'

Горизонтальный фильтр, подчеркивающий кромку Собеля

Типы данных: char | string

Размер фильтра, заданный как положительное целое или 2-элементный вектор положительных целых чисел. Используйте вектор, чтобы задать количество строк и столбцов в h. Если вы задаете скаляр, то h является квадратной матрицей.

При использовании с 'average' тип фильтра, размер фильтра по умолчанию [3 3]. При использовании с лаплацианом Гауссовым ('log') тип фильтра, размер фильтра по умолчанию [5 5].

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

Радиус дискообразного фильтра, заданный как положительное число. Фильтр является квадратной матрицей размера 2 * radius+1.

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

Стандартное отклонение, заданное в виде положительного числа.

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

Форма Laplacian, заданная как число в области значений [0, 1]. Задайте alpha как 0 для получения 4-окрестного лапласианского фильтра:

[ 0  1 0 
  1 -4 1 
  0  1 0 ]

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

Линейное движение камеры, заданное как числовой скаляр, измеренное в пикселях.

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

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

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

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

свернуть все

Ядро корреляции, возвращенное как матрица.

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

Алгоритмы

Средние фильтры:

ones(n(1),n(2))/(n(1)*n(2))

Гауссовы фильтры:

hg(n1,n2)=e(n12+n22)2σ2

h(n1,n2)=hg(n1,n2)n1n2hg

Лаплакские фильтры:

2=2x2+2y2

2=4(α+1)[α41α4α41α411α4α41α4α4]

Лапласиан Гауссов (LoG) фильтров:

hg(n1,n2)=e(n12+n22)2σ2

h(n1,n2)=(n12+n222σ2)hg(n1,n2)σ4n1n2hg

Обратите внимание, что fspecial сдвигает уравнение, чтобы убедиться, что сумма всех элементов ядра равна нулю (подобно ядру Лапласа), так что результат свертки однородных областей всегда равен нулю.

Фильтры движения:

  1. Создайте идеальный сегмент линии с длиной и углом, заданными аргументами len и theta, с центром в центральном коэффициенте h.

  2. Для каждого местоположения коэффициента (i,j)вычислите ближайшее расстояние между этим местоположением и идеальным сегментом линии.

  3. h = max(1 - nearest_distance,0);

  4. Нормализуйте h: h = h/(sum(h(:)))

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

..
Представлено до R2006a