matlab图片去噪代码
时间: 2023-08-13 14:04:28 浏览: 83
以下是一个基于中值滤波的 Matlab 图片去噪代码示例:
```matlab
% 读入图片
img = imread('example.jpg');
% 添加高斯噪声
noisy_img = imnoise(img, 'gaussian', 0.05);
% 中值滤波去噪
denoised_img = medfilt2(noisy_img, [3, 3]);
% 显示结果
figure;
subplot(1, 2, 1);
imshow(noisy_img);
title('Noisy Image');
subplot(1, 2, 2);
imshow(denoised_img);
title('Denoised Image');
```
在这个示例中,我们首先使用 `imread` 函数读入一张图片,然后使用 `imnoise` 函数添加高斯噪声。接着,我们使用 `medfilt2` 函数进行中值滤波去噪,其中 `[3, 3]` 指定了滤波器的大小。最后,我们使用 `subplot` 和 `imshow` 函数将原始图片、添加噪声后的图片和去噪后的图片显示在同一张图上。
相关问题
一段完整的matlab图像去噪代码
以下是一段完整的Matlab图像去噪代码,使用了小波阈值去噪算法:
```matlab
% 读入图片
img = imread('example.jpg');
% 添加高斯噪声
noisy_img = imnoise(img, 'gaussian', 0.05);
% 小波去噪
[wpt, lev] = wpdec2(noisy_img, 2, 'db4');
noisy_cfs = wprcoef2(wpt,lev);
thr = wthrmngr('dw2ddenoLVL','penalhi',noisy_cfs);
denoised_cfs = wthresh(noisy_cfs,'h',thr);
denoised_img = uint8(wprec2(wpt,lev,denoised_cfs));
% 显示结果
figure;
subplot(1, 2, 1);imshow(noisy_img);title('Noisy Image');
subplot(1, 2, 2);imshow(denoised_img);title('Denoised Image');
```
这段代码包含了图像读入、添加高斯噪声、小波去噪以及结果显示等步骤。其中,小波去噪是使用了`wpdec2`函数进行小波分解,然后使用`wprcoef2`函数获取小波系数,再通过`wthrmngr`函数获取阈值,最后使用`wthresh`函数对小波系数进行软阈值处理,得到去噪后的小波系数,最后使用`wprec2`函数进行小波重构,得到去噪后的图像。
matlab实现图片去噪
在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 函数。