Matlab进行滤波去噪
时间: 2023-12-24 09:09:09 浏览: 83
Matlab中提供了多种滤波去噪的函数,下面介绍常用的两种:
1. 中值滤波
中值滤波是一种非线性滤波方法,它的基本思想是用像素点周围一定区域内的中值来代替该像素点的灰度值。这种方法可以很好地去除椒盐噪声等随机噪声,但会模糊图像的边缘信息。
Matlab代码实现:
```matlab
I=imread('lena.png'); % 读入图像
J=medfilt2(I,[3 3]); % 中值滤波
figure,imshow(I),title('原图');
figure,imshow(J),title('中值滤波后的图像');
```
2. 高斯滤波
高斯滤波是一种线性滤波方法,它的基本思想是用一个高斯函数作为权值函数,对图像进行加权平均。这种方法可以很好地去除高斯噪声等平稳噪声,并且不会明显模糊图像的边缘信息。
Matlab代码实现:
```matlab
I=imread('lena.png'); % 读入图像
J=imnoise(I,'gaussian',0,0.01); % 添加高斯噪声
K=fspecial('gaussian', [5 5], 1); % 生成高斯滤波器
L=imfilter(J,K); % 高斯滤波
figure,imshow(I),title('原图');
figure,imshow(J),title('添加高斯噪声后的图像');
figure,imshow(L),title('高斯滤波后的图像');
```
其中,`fspecial`函数用于生成滤波器,第一个参数表示滤波器类型,这里选择高斯滤波;第二个参数表示滤波器大小,这里选择 $5\times 5$;第三个参数表示高斯分布的标准差,这里选择 $1$。
阅读全文