计算高斯滤波器去噪的平滑度指标的MATLAB代码
时间: 2024-03-22 17:40:09 浏览: 39
高斯平滑滤波器(含matlab代码).pdf
好的,以下是MATLAB代码:
```matlab
% 定义高斯滤波器大小和标准差
filter_size = 5;
sigma = 2;
% 生成高斯滤波器
filter = fspecial('gaussian', filter_size, sigma);
% 读入图像
img = imread('lena.png');
% 添加高斯噪声
noisy_img = imnoise(img, 'gaussian', 0, 0.01);
% 对添加噪声的图像进行滤波
filtered_img = imfilter(noisy_img, filter, 'replicate');
% 计算平滑度指标
smoothness = sum(sum(abs(filtered_img - noisy_img))) / numel(img);
% 显示结果图像和平滑度指标
subplot(1, 2, 1);
imshow(noisy_img);
title('Noisy Image');
subplot(1, 2, 2);
imshow(filtered_img);
title(['Filtered Image (Smoothness: ', num2str(smoothness), ')']);
```
其中,`sum`函数用于计算图像的差值之和,`numel`函数用于计算图像的像素数。在计算平滑度指标时,我们可以利用滤波后的图像和添加噪声的图像之间的差值,除以图像的像素数得到平均值。这个平均值越小,说明滤波后的图像越平滑,平滑度指标越高。在显示结果图像时,我们可以将平滑度指标显示在标题中。
阅读全文