Matlab之空间域滤波——低通、中值滤波

图像滤波器的应用:去除噪声。

均值滤波器的应用:提取感兴趣物体。

低通滤波:图像平滑。

低通滤波器去除了图像的高频部分,即细节信息,留下的低频信息代表了概貌。常用的例子,比如美图秀秀的磨皮,去掉了脸部细节信息(痘坑,痘印,暗斑等)。  中值滤波就是一种低通滤,其是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。所以能够消除图像篡改的噪音。用于数字图像反取证。

高通滤波则相反,所以在图像取证领域,高通滤波能检测噪声的急促变化,证实图像的边缘信息(或者噪声)
原文链接:https://blog.csdn.net/qq_24568487/article/details/85101859

一、低通滤波

    空间域滤波是指在图像空间中借助模板对图像领域进行操作,处理图像每一个像素值。主要分为线性滤波和非线性滤波两类,根据功能可分为平滑滤波器和锐化滤波器。平滑可通过低通来实现,平滑的目的有两类,一是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小尖端连接起来;二是去噪。锐化则可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。

clear all; close all;
I=imread('ice.bmp');
I=im2gray(I);
I=im2double(I);
h=ones(3,3)/9;
K=conv2(I, h);
figure;
subplot(121);
imshow(I);
subplot(122);
imshow(K);

 在matlab中,也可以通过函数filter2()进行二维线性数字滤波,采用函数fspecial()产生滤波器模板。

具体代码如下:

clear all; close all;
I=imread('ice.bmp');
I_gray=im2gray(I);%转换为灰度图像
I2=im2double(I_gray);%转换精度
%J=imnoise(I, 'salt & pepper', 0.02);
h1=fspecial('average', 3);%创建预定义的二维滤波器,3*3
h2=fspecial('average', 5);%创建预定义的二维滤波器,5*5
K1=filter2(h1, I2);%二维数字滤波器
K2=filter2(h2, I2);
figure;
imshow(I2);
figure;
imshow(K1);
figure;
imshow(K2);

结果:

 二、中值滤波

二位中值滤波用于图像的增强。中值滤波可以去除图像的椒盐噪声,平滑效果由于均值滤波,在抑制噪声的同时还能够保持图像的边缘清晰。在Matlab中,可以采用函数medfilt2()进行图像的二维中值滤波。

具体代码如下:

clear all; close all;
I=imread('ice.bmp');
I_gray=im2gray(I);%转换为灰度图像
I2=im2double(I_gray);%转换精度
K=medfilt2(I2);
figure;
imshow(I2);
title('原图');
figure;
imshow(K);
title('中值滤波后');

猜你喜欢

转载自blog.csdn.net/maggieyiyi/article/details/119879272