matlab实现图片去噪
时间: 2023-11-06 11:02:49 浏览: 83
noise.zip_NOISE_去噪_去噪matlab_噪声_图片去噪平台
5星 · 资源好评率100%
在MATLAB中,我们可以使用几种方法来去除图像中的噪声。以下是几种方法的简要介绍:
1. 中值滤波器:中值滤波器是一种常用的去噪方法,它的原理是用像素的中值来代替该像素的值,从而消除孤立的噪声点。在MATLAB中,可以使用 medfilt2 函数实现中值滤波。
2. 高斯滤波器:高斯滤波器是一种线性滤波器,它的原理是利用高斯函数的权值来平滑图像,从而消除噪声。在MATLAB中,可以使用 fspecial 函数生成高斯滤波器模板,再使用 imfilter 函数对图像进行滤波。
3. 小波去噪:小波去噪是一种基于小波分析的去噪方法,它的原理是将信号分解为不同频率的小波系数,然后根据阈值将低幅度的小波系数置零,再将信号重构。在MATLAB中,可以使用 wdenoise 函数实现小波去噪。
示例代码:
```matlab
% 读取图像
img = imread('lena.png');
% 添加噪声
noise_img = imnoise(img, 'gaussian', 0.02);
% 中值滤波
med_img = medfilt2(noise_img, [3,3]);
% 高斯滤波
gauss_filter = fspecial('gaussian', [3,3], 0.5);
gauss_img = imfilter(noise_img, gauss_filter);
% 小波去噪
wave_img = wdenoise2(noise_img, 'haar', 'ThresholdRule', 'Soft', 'Level', 2);
% 显示结果
subplot(2, 2, 1);imshow(img);title('原图像');
subplot(2, 2, 2);imshow(noise_img);title('添加高斯噪声');
subplot(2, 2, 3);imshow(med_img);title('中值滤波');
subplot(2, 2, 4);imshow(gauss_img);title('高斯滤波');
```
上面的代码演示了如何使用中值滤波器和高斯滤波器去除图像中的高斯噪声。小波去噪的实现方法类似,可以使用 wdenoise 函数。
阅读全文