B = imfilter(A,h)
% 使用多维滤波器 h 对多维数组 A 进行滤波。
B = imfilter(A,h,options,...)
% 根据一个或多个指定的选项执行多维滤波。
选项 | 说明 |
---|
数值标量,X | 数组边界之外的输入数组值被赋予值 X。如果未指定填充选项,默认值为 0 |
‘symmetric’ | 数组边界之外的输入数组值是通过沿数组边界对数组进行镜面反射得到。 |
‘replicate’ | 数组边界之外的输入数组值假定为等于最近的数组边界值。 |
‘circular’ | 数组边界之外的输入数组值是通过隐式假设输入数组具有周期性来计算的。 |
‘same’ | 输出数组与输入数组大小相同。这是未指定输出大小选项时的默认行为。 |
‘full’ | 输出数组是完全滤波后的结果,因此比输入数组大。 |
‘corr’ | imfilter 使用相关性执行多维滤波,这与 filter2 执行滤波的方式相同。当未指定相关性或卷积选项时,imfilter 使用相关性。 |
‘conv’ | imfilter 使用卷积执行多维滤波。 |
1.1 卷积滤波
nablaN = imfilter(diff_im,hN,'conv');
1.2 均值滤波
M = 35; %均值滤波窗口
h = 1/(M*M) * ones(M);
b1 = imfilter(double(I1),double(h),'circular')
h = fspecial(type)
% 创建具有指定 type 的二维滤波器 h。
type 值 | 说明 |
---|
‘average’ | 平均值滤波器 |
‘disk’ | 圆形平均值滤波器 (pillbox) |
‘gaussian’ | 高斯低通滤波器。不推荐。请改用 imgaussfilt 或 imgaussfilt3。 |
‘laplacian’ | 逼近二维拉普拉斯算子 |
‘log’ | 高斯拉普拉斯滤波器 |
‘motion’ | 逼近照相机的线性运动:运动模糊 |
‘prewitt’ | Prewitt 水平边缘强调滤波器 |
‘sobel’ | Sobel 水平边缘强调滤波器 |
J = medfilt2(I)
% 对图像 I 执行二维中位数滤波。每个输出像素包含输入图像中对应像素周围 3×3 邻域的中位数值。
N = 3; %中值滤波窗口
Med1 = medfilt2(I1, [N N]);
值 | 说明 |
---|
‘zeros’(默认值) | 用 0 填充图像。 |
‘symmetric’ | 在边界处对称延伸图像。 |
‘indexed’ | 如果 I 的类是 double,则用 1 填充图像;否则,用 0 填充。 |