第1题:均值滤波器
读入图像flower.jpg,对图像加噪声(分别加入高斯和椒盐噪声); 利用均值滤波器对两幅已被噪声污染的噪声图像分别进行滤波除噪处理,实验结果如图5和图6所示。比较均值滤波器模板大小分别选[3*3],[7*7],[9*9]对图像滤波效果的影响。
图5 加入高斯噪声图像均值滤波结果
图6 加入椒盐噪声图像均值滤波结果
代码如下:
% 读取原始图像
img = imread('flower.jpg');
% 添加高斯噪声
noisy_img_gaussian = imnoise(img, 'gaussian', 0, 0.01);
% 添加椒盐噪声
noisy_img_salt_pepper = imnoise(img, 'salt & pepper', 0.05);
% 均值滤波处理高斯噪声图像
mean_filtered_img_gaussian_3 = imfilter(noisy_img_gaussian, fspecial('average', [3 3]));
mean_filtered_img_gaussian_7 = imfilter(noisy_img_gaussian, fspecial('average', [7 7]));
mean_filtered_img_gaussian_9 = imfilter(noisy_img_gaussian, fspecial('average', [9 9]));
% 均值滤波处理椒盐噪声图像
mean_filtered_img_salt_pepper_3 = imfilter(noisy_img_salt_pepper, fspecial('average', [3 3]));
mean_filtered_img_salt_pepper_7 = imfilter(noisy_img_salt_pepper, fspecial('average', [7 7]));
mean_filtered_img_salt_pepper_9 = imfilter(noisy_img_salt_pepper, fspecial('average', [9 9]));
% 显示原始图像和各种滤波后的图像
figure('Name', '图像滤波', 'NumberTitle', 'off');
subplot(3, 4, 1);
imshow(img);
title('原始图像');
subplot(3, 4, 2);
imshow(noisy_img_gaussian);
title('高斯噪声');
subplot(3, 4, 3);
imshow(noisy_img_salt_pepper);
title('椒盐噪声');
subplot(3, 4, 4);
imshow([]);
title('空白');
subplot(3, 4, 5);
imshow([]);
title('3x3');
subplot(3, 4, 6);
imshow(mean_filtered_img_gaussian_3);
title('高斯噪声');
subplot(3, 4, 7);
imshow(mean_filtered_img_salt_pepper_3);
title('椒盐噪声');
subplot(3, 4, 8);
imshow([]);
title('空白');
subplot(3, 4, 9);
imshow([]);
title('7x7');
subplot(3, 4, 10);
imshow(mean_filtered_img_gaussian_7);
title('高斯噪声');
subplot(3, 4, 11);
imshow(mean_filtered_img_salt_pepper_7);
title('椒盐噪声');
subplot(3, 4, 12);
imshow([]);
title('空白')
subplot(3, 4, 13);
imshow([]);
title('9x9');
subplot(3, 4, 14);
imshow(mean_filtered_img_gaussian_9);
title('高斯噪声');
subplot(3, 4, 15);
imshow(mean_filtered_img_salt_pepper_9);
title('椒盐噪声');
subplot(3, 4, 16);
imshow([]);
title('空白');
第2题:中值滤波器
读入图像flower.jpg,对图像加入椒盐噪声,利用中值滤波器对已被噪声污染的图像进行滤波去噪处理,要求在同一窗口中显示结果,如图7所示。比较中值滤波器和均值滤波器对噪声滤除的效果。
图7 中值滤波
代码如下:
I=imread('自定义图片位置.jpg');subplot(2,2,1); imshow(I); title('原图像'); %读入图像,将窗口分为两行两列,第一个子窗口显示原图像
J=imnoise(I, 'salt & pepper'); %为图像叠加椒盐噪声
subplot(2,2,2); imshow(J); title('加入椒盐噪声后的图像'); %第二个子窗口显示加入椒盐噪声后的图像
h = fspecial('average'); %创建一个均值滤波器
l=imfilter(J,h);subplot(2,2,3); imshow(l); title('均值滤波结果'); %对图像进行均值滤波并在第三个子窗口显示
g1=medfilt2(J(:,:,1),[3 3]); %对彩色图像的红色分量进行 3×3 中值滤波
g2=medfilt2(J(:,:,2),[3 3]); %对彩色图像的绿色分量进行 3×3 中值滤波
g3=medfilt2(J(:,:,3),[3 3]); %对彩色图像的蓝色分量进行 3×3 中值滤波
g(:,:,1)=g1; %进行 3×3 中值滤波后得到的图像的红色分量
g(:,:,2)=g2; %进行 3×3 中值滤波后得到的图像的绿色分量
g(:,:,3)=g3; %进行 3×3 中值滤波后得到的图像的蓝色分量
subplot(2,2,4);imshow(g); title('中值滤波结果');%在第三个子窗口显示中值滤波结果
第3题:最大值滤波
读取图像flower.jpg,加入高斯噪声,对被噪声污染的图像进行最大值滤波去噪处理,输出结果如图8所示:
图8 最大值滤波
代码如下:
I=imread(自定义图片位置.jpg');subplot(1,3,1); imshow(I); title('原图像'); %读入图像,将窗口分为1行3列,第一个子窗口显示原图像
J=imnoise(I,'gaussian',0,0.01); %加入高斯噪声,均值为 0、方差为 0.01
subplot(1,3,2); imshow(J); title('加入高斯噪声后的图像'); %第二个子子窗口显示加入高斯噪声后的图像
g1=ordfilt2(J(:,:,1),9,ones(3,3)); %对彩色图像的红色分量进行 3×3 最大值滤波
g2=ordfilt2(J(:,:,2),9,ones(3,3)); %对彩色图像的绿色分量进行 3×3 最大值滤波
g3=ordfilt2(J(:,:,3),9,ones(3,3)); %对彩色图像的蓝色分量进行 3×3 最大值滤波
g(:,:,1)=g1;
g(:,:,2)=g2;
g(:,:,3)=g3;
subplot(1,3,3); imshow(g); title('最大值滤波结果'); %第三个子窗口显示最大值滤波图像
第4题:最小值滤波
读取图像flower.jpg,加入椒盐噪声,对被噪声污染的图像进行最小值滤波去噪处理,输出结果如图9所示:
代码如下:
I=imread('C:\医学成像\医学成像与处理-第3次实验-空间滤波20220426\医学成像与处理-第3次实验-空间滤波20220426\发给学生版本\Image\flower.jpg');subplot(1,3,1); imshow(I); title('原图像'); %读入图像,将窗口分为两行三列,第一个子窗口显示原图像
J=imnoise(I, 'salt & pepper'); %为图像叠加椒盐噪声
subplot(1,3,2); imshow(J); title('加入椒盐噪声后的图像'); %第二个子窗口显示加入椒盐噪声后的图像
g1=ordfilt2(J(:,:,1),1,ones(3,3)); %对彩色图像的红色分量进行 3×3 最大值滤波
g2=ordfilt2(J(:,:,2),1,ones(3,3)); %对彩色图像的绿色分量进行 3×3 最大值滤波
g3=ordfilt2(J(:,:,3),1,ones(3,3)); %对彩色图像的蓝色分量进行 3×3 最大值滤波 g(:,:,1)=g1;
g(:,:,2)=g2;
g(:,:,3)=g3;
subplot(1,3,3); imshow(g); title('最小值滤波结果'); %第三个子窗口显示最小值滤波图像
实验心得:
空间滤波是数字图像处理中的重要部分,可以用于图像增强、去噪等领域。在进行空间滤波基础实验时,我总结了以下几点心得体会。
首先,需要了解空间滤波的基本概念。空间滤波是指对图像矩阵上的像素点进行一定的计算,以达到图像增强或去噪的目的。在实验过程中,需要先了解基本的空间滤波方法,例如均值滤波、中值滤波等,并了解各方法的优缺点和适用范围。
其次,需要掌握MATLAB中实现空间滤波的方法和函数。MATLAB提供了丰富的数字图像处理函数库,包括滤波函数、矩阵操作函数等。在实验过程中,需要熟练掌握这些函数的用法和注意事项,这样才能够更好地进行实验和实现空间滤波。
第三,需要注意实验数据的选择和处理。在进行空间滤波基础实验时,需要选择适当的图像数据作为实验数据。同时需要对实验数据进行预处理,例如去噪、模糊等,以消除干扰影响,并保证实验结果的正确性和可信度。
最后,需要进行实验数据的分析和结果的验证。在实验数据处理和实验结果输出后,需要对实验结果进行分析和验证,比较不同方法的效果和优缺点,从而得出结论和改进意见。
总之,空间滤波基础实验需要了解基本概念、掌握相应函数、注意实验数据处理和结果分析,通过实验来加深对数字图像处理方法的理解和掌握。在实验过程中,需要注重数据的准确性和结果的可靠性,不断优化和改进方法,以达到更好的实验效果。