形态滤波 matlab
时间: 2023-11-26 08:48:23 浏览: 201
形态学滤波是一种基于形态学运算的图像滤波方法,可以用于去除图像中的噪声、平滑图像边缘等。在MATLAB中,可以使用strel函数创建结构元素,然后使用imopen、imclose、imdilate、imerode等函数进行形态学滤波操作。
以下是形态学滤波的步骤:
1. 读入一幅灰度图像I1,并将其二值化得到I2。
```matlab
I1 = imread('image.jpg');
I2 = imbinarize(I1);
```
2. 创建结构元素SE,可以使用strel函数创建不同形状和大小的结构元素。
```matlab
SE = strel('disk',5); % 创建一个半径为5的圆形结构元素
```
3. 对I2进行形态学滤波操作,可以使用imopen、imclose、imdilate、imerode等函数。
```matlab
I3 = imdilate(I2, SE); % 对I2进行膨胀操作
I4 = imerode(I2, SE); % 对I2进行腐蚀操作
I5 = imopen(I2, SE); % 对I2进行开运算操作
I6 = imclose(I2, SE); % 对I2进行闭运算操作
```
4. 对图像I1加椒盐噪声和高斯噪声,可以使用imnoise函数。
```matlab
I3 = imnoise(I1, 'salt & pepper', 0.02); % 加椒盐噪声
I4 = imnoise(I1, 'gaussian', 0, 0.01); % 加高斯噪声
```
5. 对图像I3和I4进行图像滤波去噪,可以使用medfilt2、imfilter等函数。
```matlab
I5 = medfilt2(I3); % 中值滤波去噪
h = fspecial('gaussian', [5 5], 2); % 创建一个5x5的高斯滤波器
I6 = imfilter(I4, h); % 高斯滤波去噪
```
阅读全文