添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

fspecial

创建预定义的二维滤波器

说明

示例

h = fspecial( type ) 创建具有指定 type 的二维滤波器 h 。一些滤波器类型具有可选的附加参数,如以下语法所示。 fspecial 以相关性核形式返回 h ,该形式适用于 imfilter

h = fspecial('average', hsize ) 返回大小为 hsize 的平均值滤波器 h

h = fspecial('disk', radius ) 在大小为 2*radius+1 的方阵中返回圆形平均值滤波器 (pillbox)。

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 ,对应于 9 个像素的水平运动。

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 object. The axes object contains an object of type image.

创建运动滤波器,并使用它来对图像进行模糊处理。显示模糊处理后的图像。

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

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

创建圆形滤波器,并使用它来对图像进行模糊处理。显示模糊处理后的图像。

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

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

输入参数

全部折叠

滤波器的类型,指定为下列值之一:

描述

'average'

平均值滤波器

'disk'

圆形平均值滤波器 (pillbox)

'gaussian'

高斯低通滤波器。不推荐。请改用 imgaussfilt imgaussfilt3

'laplacian'

逼近二维拉普拉斯算子

'log'

高斯拉普拉斯滤波器

'motion'

逼近相机的线性运动

'prewitt'

Prewitt 水平边缘强调滤波器

'sobel'

Sobel 水平边缘强调滤波器

数据类型: char | string

滤波器的大小,指定为正整数或由正整数组成的二元素向量。使用向量指定 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))

高斯滤波器:

h g ( n 1 , n 2 ) = e ( n 1 2 + n 2 2 ) 2 σ 2

h ( n 1 , n 2 ) = h g ( n 1 , n 2 ) n 1 n 2 h g

拉普拉斯滤波器:

2 = 2 x 2 + 2 y 2

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

高斯拉普拉斯 (LoG) 滤波器:

h g ( n 1 , n 2 ) = e ( n 1 2 + n 2 2 ) 2 σ 2

h ( n 1 , n 2 ) = ( n 1 2 + n 2 2 2 σ 2 ) h g ( n 1 , n 2 ) σ 4 n 1 n 2 h g

请注意, fspecial 平移方程以确保核的所有元素之和为零(类似于拉普拉斯核),从而使同构区域的卷积结果始终为零。

运动滤波器:

  1. 构造一个理想线段,其长度和角度由参数 len theta 指定,以 h 的中心系数为中心。

  2. 对于每个系数位置 (i,j) ,计算该位置和理想线段之间的最近距离。

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

  4. 归一化 h h = h/(sum(h(:)))

扩展功能

版本历史记录

在 R2006a 之前推出

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.