exponenta event banner

fspecial

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

Описание

пример

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

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

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

h = fspecial('gaussian',hsize,sigma) возвращает вращательно симметричный фильтр нижних частот Гаусса размера 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'

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

'laplacian'

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

'log'

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

'motion'

Аппроксимация линейного движения камеры

'prewitt'

Фильтр с подчеркиванием горизонтальных кромок

'sobel'

Горизонтальный краевой подчеркивающий фильтр Sobel

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

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

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

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

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

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

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

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

Форма лапласиана, заданная как число в диапазоне [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) 2start2

h (n1, n2) = hg (n1, n2) ∑n1∑n2hg

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

2 = 2∂x2 + 2∂y2

∇2=4(α+1)[α41−α4α41−α4−11−α4α41−α4α4]

Лапласианские гауссовы (LoG) фильтры:

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

h (n1, n2) = (n12 + n22 2start2) hg (n1, n2) σ4∑n1∑n2hg

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

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

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

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

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

  4. Нормализовать h: h = h/(sum(h(:)))

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

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