给某图像加入高斯或椒盐噪声,使用不同的空间域和频域滤波器对图像进行滤波处理MATLAB代码
时间: 2024-10-19 12:07:56 浏览: 33
数字图像处理作业图像加椒盐噪声加高斯噪声修正的阿尔法均值滤波自适应均值滤波自适应局部降噪滤波MATLAB源码及实验报告
在MATLAB中,你可以使用内建函数来给图像添加高斯噪声或椒盐噪声,并应用空间域和频域滤波器。以下是简单的示例:
1. **添加噪声**:
```matlab
% 加载图像
img = imread('your_image.jpg');
% 高斯噪声
sigma = 5; % 高斯噪声的标准差
noisy_img_gaussian = img + sigma * randn(size(img));
% 椒盐噪声
salt_noise_prob = 0.05; % 盐噪声的概率
noisy_img_saltpepper = imnoise(img, 'salt & pepper', salt_noise_prob);
% 保存结果
imwrite(noisy_img_gaussian, 'gaussian_noisy_img.jpg');
imwrite(noisy_img_saltpepper, 'salt_pepper_noisy_img.jpg');
```
2. **空间域滤波器(例如均值滤波)**:
```matlab
% 均值滤波
filtered_img = imfilter(noisy_img_gaussian, ones(3) / 9, 'replicate'); % 3x3 窗口
% 保存滤波后的图像
imwrite(filtered_img, 'mean_filtered_img.jpg');
```
3. **频域滤波器(例如低通滤波)**:
```matlab
% 将图像转换为频率域(离散傅里叶变换)
frequencies = fft2(img);
freq_domain_img = abs(frequencies);
% 设定低通截止频率
cutoff_freq = round(size(freq_domain_img, 1) / 4); % 取四分之一作为阈值
% 使用布尔矩阵表示高频部分并进行衰减
low_pass_mask = freq_domain_img < cutoff_freq;
% 应用低通滤波(将高频部分设为零)
filtered_freq_domain = low_pass_mask .* freq_domain_img;
filtered_img_back = ifft2(filtered_freq_domain);
% 保存结果
imwrite(double(reshape(filtered_img_back, size(img))), 'lowpass_filtered_img.jpg');
```
阅读全文