用matlab编程实现1、分析比较同一模板尺寸,不同σ的高斯滤波的结果,在同一窗口中显示出相应的灰度图形进行比较。。 2、分析比较同一σ,不同模板尺寸的高斯滤波的结果,在同一窗口中显示出相应的灰度图形进行比较。。 3、对同一幅(高斯和椒盐)噪声图像,分析比较均值滤波和高斯滤波的结果,在同一窗口中显示出相应的灰度图形进行比较。
时间: 2023-06-27 21:05:54 浏览: 113
1、比较不同σ的高斯滤波结果
```matlab
% 原图
I = imread('lena.png');
I = rgb2gray(I);
% 不同σ的高斯滤波结果
sigma = [1, 3, 5, 7];
figure;
for i = 1:length(sigma)
G = fspecial('gaussian', [5 5], sigma(i));
Ig = imfilter(I, G, 'same');
subplot(2, 2, i);
imshow(Ig);
title(['σ=', num2str(sigma(i))]);
end
```
2、比较不同模板尺寸的高斯滤波结果
```matlab
% 原图
I = imread('lena.png');
I = rgb2gray(I);
% 不同尺寸的高斯滤波结果
size = [3, 5, 7, 9];
figure;
for i = 1:length(size)
G = fspecial('gaussian', [size(i) size(i)], 1);
Ig = imfilter(I, G, 'same');
subplot(2, 2, i);
imshow(Ig);
title(['size=', num2str(size(i))]);
end
```
3、比较均值滤波和高斯滤波的结果
```matlab
% 原图
I = imread('lena.png');
I = rgb2gray(I);
% 添加高斯和椒盐噪声
sigma = 30;
Inoise1 = imnoise(I, 'gaussian', 0, (sigma/255)^2);
Inoise2 = imnoise(I, 'salt & pepper', 0.1);
% 均值滤波和高斯滤波结果
h = ones(3, 3)/9;
Ig1 = imfilter(Inoise1, h, 'same');
G = fspecial('gaussian', [5 5], 1);
Ig2 = imfilter(Inoise1, G, 'same');
figure;
subplot(2, 3, 1);
imshow(I);
title('原图');
subplot(2, 3, 2);
imshow(Inoise1);
title('高斯噪声');
subplot(2, 3, 3);
imshow(Inoise2);
title('椒盐噪声');
subplot(2, 3, 4);
imshow(Ig1);
title('均值滤波');
subplot(2, 3, 5);
imshow(Ig2);
title('高斯滤波');
```
注意:以上代码只是简单实现,实际应用中需要考虑滤波器尺寸、σ等参数的选择以及不同滤波方法的效果比较。
阅读全文