matlab 图像滤波
时间: 2023-10-16 12:28:24 浏览: 63
Mat 中有很多种图像滤波方法,包括线性滤波和非线性滤波等。其中,线性滤波包括均值滤波、中值滤波、高斯滤波等,非线性滤波包括双边滤波、非局部均值滤波等。下面以常用的三种滤波方法为例进行介绍。
1. 均值滤波
均值滤波是最简单的线性滤波方法之一,它将每个像素点周围的像素值取平均值作为该像素点的新值。在 Matlab 中,可以使用函数 imfilter 实现均值滤波,代码如下:
```
I = imread('lena.png');
h = fspecial('average', [3 3]); % 创建 3x3 的平均滤波器
I_filtered = imfilter(I, h);
imshow(I_filtered);
```
2. 中值滤波
中值滤波是一种非线性滤波方法,它将每个像素点周围的像素值排序,取中间值作为该像素点的新值。中值滤波可以有效地去除椒盐噪声等随机噪声。在 Matlab 中,可以使用函数 medfilt2 实现中值滤波,代码如下:
```
I = imread('lena.png');
I_noisy = imnoise(I, 'salt & pepper', 0.1); % 添加椒盐噪声
I_filtered = medfilt2(I_noisy, [3 3]); % 创建 3x3 的中值滤波器
imshow(I_filtered);
```
3. 高斯滤波
高斯滤波是一种常用的线性滤波方法,它将每个像素点周围的像素值按照高斯分布加权平均,使得离中心像素点越近的像素值对中心像素点的影响越大。在 Matlab 中,可以使用函数 imgaussfilt 实现高斯滤波,代码如下:
```
I = imread('lena.png');
I_filtered = imgaussfilt(I, 2); % 创建标准差为 2 的高斯滤波器
imshow(I_filtered);
```
以上是三种常用的图像滤波方法,在实际应用中,需要根据图像的特点和需要进行选择。
阅读全文