20.5.2 线性滤波(1)
MATLAB图像处理工具箱利用函数imfilter对图像作线性滤波,其一般的调用格式为:
B = imfilter(A,H);
B = imfilter(A,H,option1,option2,...)。
其中A、B分别为输入、输出图像。线性滤波器可以由相关或卷积实现,默认情况下由相关实现,可以通过设置option3 = 'conv',使线性滤波由卷积实现。H为对应的相关窗或卷积窗;通过设置option1决定线性滤波器对边界的处理方式,'replicate'使用最近邻边界填充,默认情况下option1 = 0,边界由0填充。
下面的例子中利用 等权重的滤波器对受高斯噪声污染的coins图像作线性滤波,通常称这种等权重的线性滤波器为均值滤波器(averaging filter)。
【例20.18】 均值滤波器应用示例。
(1)读入coins的图像数据I,并显示。在MATLAB命令窗口输入以下代码。
>>I=imread('coins.png');
>>imshow(I);
上述代码运行结果如图20.60所示。
(2)对I施加高斯噪声,得到受噪声污染的图像。在MATLAB命令窗口输入以下代码。
>>I=imnoise(I,'gaussian');
>>imshow(I);
上述代码运行结果如图20.61所示。
(3)利用5 5均值滤波器对受加性噪声污染的coins图像作线性滤波。在MATLAB命令窗口输入以下代码。
>>h=ones(5,5)/25; %滤波窗口
>>I=imfilter(I,h); %线性滤波
>>imshow(I);
上述代码运行结果如图20.62所示,可以看到均值滤波器降低了噪声,但是也使得图像更加模糊。
注意:函数imfilter在考虑图像的数据类型时,遵循与图像代数运算相同的运算规则,读者如有疑问,请参考第20.3节。
在利用MATLAB图像处理工具箱对图像作线性滤波时,用户除了使用自定义的滤波器外,还可以使用一些MATLAB预定义的滤波器。用户可以利用函数fspecial得到MATLAB预定义的滤波器。例如,h = fspecial('gaussian',HSIZE,SIGMA)产生高斯滤波器,HSIZE为滤波窗口的大小,默认为[3,3];SIGMA表示高斯滤波器的峰度,SIGMA越小,h越接近冲击函数,SIGMA越大,h越接近均值滤波器。
【责任编辑:book TEL:(010)68476606】
点赞 0