matlab 高斯白噪声 去除
时间: 2023-12-09 11:37:00 浏览: 149
以下是使用Matlab进行高斯白噪声去除的步骤:
1.读取含有高斯白噪声的图像并显示:
```matlab
img = imread('2010-03-09-2.bmp');
imshow(img);
```
2.添加高斯白噪声:
```matlab
noise_img = imnoise(img, 'gaussian', 0, 0.01);
imshow(noise_img);
```
其中,'gaussian'表示添加高斯噪声,0表示噪声均值,0.01表示噪声方差。
3.使用邻域平均法进行去噪:
```matlab
avg_img = filter2(fspecial('average', 3), noise_img)/255;
imshow(avg_img);
```
其中,'average'表示使用邻域平均法,3表示邻域大小。
4.使用中值滤波法进行去噪:
```matlab
med_img = medfilt2(noise_img);
imshow(med_img);
```
其中,medfilt2表示使用中值滤波法。
5.使用维纳滤波法进行去噪:
```matlab
wnr_img = deconvwnr(noise_img, fspecial('gaussian', 5, 5), 0.01);
imshow(wnr_img);
```
其中,'gaussian'表示使用高斯滤波器,5表示滤波器大小,0.01表示噪声方差。
6.使用小波变换进行去噪:
```matlab
[c, s] = wavedec2(noise_img, 2, 'db4');
thr = wthrmngr('dw2ddenoLVL', 'penalhi', c, s, 2);
sorh = 's';
keepapp = 1;
denoised_c = wdencmp('gbl', c, s, 'db4', 2, thr, sorh, keepapp);
wav_img = waverec2(denoised_c, s, 'db4');
imshow(wav_img, []);
```
其中,'db4'表示小波基函数,2表示小波分解层数,'penalhi'表示使用高斯噪声模型进行阈值计算,'s'表示使用软阈值,keepapp=1表示保留低频分量。
阅读全文