读取灰度图像lena.bmp,对其加入均值为0,方差为0.03的高斯噪声,然后用截止频率为30的Gauss低通滤波器做滤波,在一个窗口中按照1行3列的方式分别显示原图像,加噪后的图像及去噪后的图像,并加标题的matlab代码
时间: 2024-12-19 22:21:50 浏览: 9
在MATLAB中,你可以使用以下代码来完成这个操作:
```Matlab
% 导入 Lena 灰度图像
img = imread('lena.bmp', 'gray');
% 加入高斯噪声
sigma = 0.03;
noise = sigma * randn(size(img));
noisy_img = img + noise;
% 定义低通滤波器
filter_size = 5; % Gauss 滤波器大小一般选择奇数
[rows, cols] = size(img);
h = fspecial('gaussian', [filter_size filter_size], 30); % 截止频率设为 30
% 应用低通滤波
filtered_img = imfilter(noisy_img, h, 'conv');
% 分割成1行3列的子图
figure;
subplot(1, 3, 1), imshow(img, 'InitialMagnification', 'fit'), title('Original Image');
subplot(1, 3, 2), imshow(noisy_img, 'InitialMagnification', 'fit'), title('Noisy Image');
subplot(1, 3, 3), imshow(filtered_img, 'InitialMagnification', 'fit'), title('Filtered Image');
% 显示图片
show;
```
这段代码首先导入灰度图像,然后添加高斯噪声。接着创建一个高斯滤波器并应用到加噪后的图像上,最后将原始图像、加噪后的图像和去噪后的图像展示在一个包含三张子图的窗口中。
阅读全文