matlab加入高斯噪声(均值为0,方差为0.01),使用3*3加权均值滤波模板进行滤波(加大中心点权重)
时间: 2024-11-03 20:13:15 浏览: 53
在MATLAB中,你可以使用`imnoise`函数向图像添加高斯噪声,然后利用`imfilter`函数应用3x3的加权均值滤波。以下是简单的步骤:
1. **添加高斯噪声**:
假设你有一个名为`img`的图像变量,首先创建一个零均值、标准差为0.01的高斯噪声:
```matlab
sigma = 0.01; % 高斯噪声的标准差
noise_img = imnoise(img, 'gaussian', 0, sigma);
```
2. **定义加权均值滤波模板**:
创建一个3x3的矩阵,其中中心元素的权重较大,周边元素的权重较小。你可以手动设定权重,或者使用`fspecial('average')`函数自动创建对角线权重较大的模板:
```matlab
if not_provided_weight
kernel = fspecial('average', [3 3]); % 使用默认平均权重
else
kernel = [central_weight, ... % 自定义权重
...,
central_weight]; % 保证是对称的
end
```
3. **应用加权均值滤波**:
将噪声图像通过这个模板进行滤波:
```matlab
filtered_img = imfilter(noise_img, kernel, 'replicate');
```
`imfilter`的第三个参数 `'replicate'`表示边缘值复制处理。
4. **查看结果**:
可以使用`imshowpair`函数比较原始图像和滤波后的图像,检查噪声减少效果:
```matlab
figure;
subplot(1, 2, 1), imshow(img), title('Original Image');
subplot(1, 2, 2), imshow(filtered_img), title('Filtered Image with Gaussian Noise');
```
阅读全文