matlab生成有加性高斯噪声和椒盐噪声的图像,进行低通滤波处理并比较
时间: 2024-10-15 18:14:59 浏览: 123
在MATLAB中,你可以通过以下几个步骤生成包含加性高斯噪声(AWGN)和椒盐噪声的图像,对其进行低通滤波处理,并对比原始和处理后的效果:
1. **生成图像**:
- 使用`imread`函数读取一张图像作为基础。
```matlab
img = imread('your_image.jpg'); % 替换为你要处理的图片文件名
```
2. **添加高斯噪声**:
- `awgn`函数可以向图像添加加性高斯噪声。例如,给定信号到噪声比(SNR),计算噪声后再添加:
```matlab
snr_db = 10; % dB形式的SNR
sigma = sqrt(10^(-snr_db/10)); % 计算标准差
noisy_img = awgn(img, 'measured', sigma);
```
3. **添加椒盐噪声**:
- MATLAB并没有内置椒盐噪声函数,你需要手动创建一个二值掩模然后对图像进行点运算:
```matlab
noise_mask = rand(size(img)) < 0.05; % 创建随机椒盐噪声掩模
salt_pepper_noisy_img = img .* (1 - noise_mask) + 128 * noise_mask; % 点运算
```
这里假设椒盐噪声的比例是5%。
4. **低通滤波**:
- 使用`imgaussfilt`函数进行低通滤波,比如使用5x5的高斯核:
```matlab
lowpass_img = imgaussfilt([noisy_img; salt_pepper_noisy_img], [5 5]); % 对两幅图同时处理
```
5. **比较结果**:
- 可以通过`imshowpair`函数并行显示原始、加噪和降噪后的图像,以便直观地观察变化:
```matlab
figure;
subplot(2, 2, 1); imshow(img, []);
title('Original Image');
subplot(2, 2, 2); imshow(noisy_img, []);
title('Noisy Image with Gaussian Noise');
subplot(2, 2, 3); imshow(salt_pepper_noisy_img, []);
title('Noisy Image with Salt and Pepper Noise');
subplot(2, 2, 4); imshow(lowpass_img, []);
title('Low-pass Filtered Image');
```
阅读全文