Matlab图像处理创新实践-实验2【图像滤波基础(2)】

    科技2022-08-20  137

    Matlab图像处理创新实践-实验1【图像滤波基础(1)】Matlab图像处理创新实践-实验2【图像滤波基础(2)】Matlab图像处理创新实践-实验3【图像锐化】Matlab图像处理创新实践-实验4【大实验——GUI综合设计】 Matlab实验4——GUI程序操作说明

    目   录

    一、实验目的

    二、实验内容

    三、实验过程及结果

    步骤1、2

    步骤3

    步骤4

    步骤5

    步骤6、7

    四、分析与思考

    附录:代码汇总


    参考:

    fspecial函数用于创建预定义的滤波算子,其语法格式为:

    h = fspecial(type)

    h = fspecial(type,parameters,sigma)

    参数type制定算子类型,parameters指定相应的参数,具体格式为:

    type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]

    type= 'gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3]sigma表示滤波器的标准差,单位为像素,默认值为 0.5

    type= 'laplacian',为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2

    type= 'log',为拉普拉斯高斯算子,参数有两个,n表示模版尺寸,默认值为[3,3]sigma为滤波器的标准差,单位为像素,默认值为0.5

    type= 'prewitt',为prewitt算子,用于边缘增强,无参数。

    type= 'sobel',为著名的sobel算子,用于边缘提取,无参数。 

    一、实验目的

    通过简单实验完成对一个图像多种滤波操作,熟悉并了解图像处理中空域滤波的概念,通过实际操作掌握滤波器的生成和基本的滤波,以完成基本的图像处理目的。同时,了解几种常见滤波器的功能和作用。

    二、实验内容

    步骤1:用手机给自己拍一张美照(必须是本人照片);

    步骤2:将你的照片放到计算机内;

    步骤3:启动Matlab,并通过imread(); 读取该照片,然后通过imshow()进行显示。如果图片过大,可以通过imresize(A,m)进行缩小,其中A为图像,m为尺寸变化系数,比如可设为0.2,尺寸为原来的五分之一;

    步骤 4:利用rgb2gray()函数将图像转换为灰度图像;

    步骤5:利用F = fspecial();生成多个常见滤波器,分别为:①均值滤波器、②高斯滤波器、③拉普拉斯滤波器、④sobel和⑤prewitt滤波器;非必要参数均采用默认值。(详细内容参加后面的参考信息)

    步骤6:将这些滤波器通过new_im = filter2(F, im)函数对测试图像进行滤波操作,并观察不同滤波器的滤波结果;filter2的输出结果的数据类型为double,需要进行类型转换才能够作为图像数据显示,可采用uint8()对其进行类型转换,例如:y = uint8(x)

    步骤7:利用subplot()函数实现将多个滤波结果图像显示在同一个窗口中;

    注意:所有的运行命令需全部形成脚本文件(.m后缀),文件名为姓名的汉语拼音,如zhangsan.m

    三、实验过程及结果

    【在这里描述下你的实验操作过程和相应代码,以及你得到的最终结果,需图文并茂】

    步骤1、2

    步骤1:用手机给自己拍一张美照(必须是本人照片);

    步骤2:将你的照片放到计算机内;

    Matlab内置图片:Peppers.png

    步骤3

    步骤3:启动Matlab,并通过imread(); 读取该照片,然后通过imshow()进行显示。如果图片过大,可以通过imresize(A,m)进行缩小,其中A为图像,m为尺寸变化系数,比如可设为0.2,尺寸为原来的五分之一;

    步骤4

    步骤 4:利用rgb2gray()函数将图像转换为灰度图像;

    步骤5

    步骤5:利用F = fspecial();生成多个常见滤波器,分别为:①均值滤波器、②高斯滤波器、③拉普拉斯滤波器、④sobel和⑤prewitt滤波器;非必要参数均采用默认值。(详细内容参加后面的参考信息)

    步骤6、7

    步骤6:将这些滤波器通过new_im = filter2(F, im)函数对测试图像进行滤波操作,并观察不同滤波器的滤波结果;filter2的输出结果的数据类型为double,需要进行类型转换才能够作为图像数据显示,可采用uint8()对其进行类型转换,例如:y = uint8(x)

    步骤7:利用subplot()函数实现将多个滤波结果图像显示在同一个窗口中。

    四、分析与思考

    【在此描述下你从该实验中得出的结论,并对实验结果进行分析,例如:filter2和imfilter区别,解释下各个滤波器的功能等等,可以查阅资料,该部分占最终成绩的50%】

    图像增强是为了改善图像的视觉效果,突出图像中有用的部分(即感兴趣的部分)。图像去噪目的是将退化图像原有信息进行恢复,使之更贴近实际。

           filter2和imfilter区别:imfilter 可进行多bai维图像(RGB等)进行空间滤波,且可选参数比较多;filter2 只能对二维图像(灰度图)进行空间滤波。两个函数结果类dao型不一样,只需要在I1=filter2(h,I)后面加上I1=uint8(I1)进行类型转换,结果就是一样的。

    Matlab采用fspecial函数生成滤波模板,并用filter2函数指定模板对图像进行滤波。fspecial的常用语法格式为:h = fspecial(type)、h = fspecial(type, parameters)。其中,type用于指定滤波器类型;parameters则是与滤波器有关的具体函数。

                                                                     图表 1 fspecial函数的滤波器模板定义

    type

    parameters

    说明

    average

    hsize

    矩形均值滤波器。hsize为两元素向量,用于指定矩形的大小。当为正方形区域时,hsize也可用标量表示。

    disk

    radius

    生成半径为radius的圆形滤波器。

    gaussian

    hsize,sigma

    标准偏差为sigma、大小为hsize的高斯低通滤波器。

    laplacian

    alpha

    系数为alpha的二维拉普拉斯操作。

    log

    hsize,sigma

    标准偏差为sigma、大小为hsize的高斯滤波旋转对称拉普拉斯算子。

    motion

    len,theta

    按角度theta移动len个像素的运动滤波器。

    prewitt

    近似计算梯度算子。

    sobel

    考虑了像素点空间位置的近似计算梯度算子。

    附录:代码汇总

    %--------步骤3-------- x = imread('peppers.png'); % 读取图片:将图像数据读取到Matlab环境中 peppers.png:Matlab内置图片 imshow(x); % 显示图片 % 警告: Image is too big to fit on screen; displaying at 8% % > In imuitools\private\initSize at 71 % In imshow at 282 %--------步骤3-------- smallx = imresize(x, 0.5); % 缩小图片 figure, imshow(smallx); % figure:生成新的图片窗口,不覆盖原窗口 % --------步骤4-------- x = imread('peppers.png'); % 读取图片:将图像数据读取到Matlab环境中 smallx = imresize(x, 0.5); imshow(smallx); gx = rgb2gray(smallx); f1 = fspecial('average', 5); gx1 = filter2(f1, gx); figure, imshow(uint8(gx1)); % --------步骤5-------- x = imread('peppers.png'); % 读取图片:将图像数据读取到Matlab环境中 smallx = imresize(x, 0.5); imshow(smallx); gx = rgb2gray(smallx); f1 = fspecial('average', 5); % 1、均值滤波器 f2 = fspecial('gaussian'); % 2、高斯滤波器 f3 = fspecial('laplacian'); % 3、拉普拉斯滤波器 f4 = fspecial('sobel'); % 4、sobel滤波器 f5 = fspecial('prewitt'); % 5、prewitt滤波器 gx1 = filter2(f1, gx); gx2 = filter2(f2, gx); gx3 = filter2(f3, gx); gx4 = filter2(f4, gx); gx5 = filter2(f5, gx); subplot(2, 3, 1);imshow(smallx);title('缩小至原来的0.5倍'); subplot(2, 3, 2);imshow(uint8(gx1));title('1、均值滤波器'); subplot(2, 3, 3);imshow(uint8(gx2));title('2、高斯滤波器'); subplot(2, 3, 4);imshow(uint8(gx3));title('3、拉普拉斯滤波器'); subplot(2, 3, 5);imshow(uint8(gx4));title('4、sobel滤波器'); subplot(2, 3, 6);imshow(uint8(gx5));title('5、prewitt滤波器'); %--------步骤6、7-------- x = imread('peppers.png'); % 读取图片:将图像数据读取到Matlab环境中 smallx = imresize(x, 0.05); imshow(smallx); gx = rgb2gray(smallx); f1 = fspecial('average', 5); % 1、均值滤波器 gx1 = filter2(f1, gx); gx1_1 = filter2(f1, gx1); f2 = fspecial('gaussian'); % 2、高斯滤波器 gx2 = filter2(f2, gx); gx2_1 = filter2(f2, gx2); f3 = fspecial('laplacian'); % 3、拉普拉斯滤波器 gx3 = filter2(f3, gx); gx3_1 = filter2(f3, gx3); f4 = fspecial('sobel'); % 4、sobel滤波器 gx4 = filter2(f4, gx); gx4_1 = filter2(f4, gx4); f5 = fspecial('prewitt'); % 5、prewitt滤波器 gx5 = filter2(f5, gx); gx5_1 = filter2(f5, gx5); f6 = fspecial('disk'); % 6、disk滤波器 gx6 = filter2(f6, gx); gx6_1 = filter2(f6, gx6); f7 = fspecial('log'); % 7、log滤波器 gx7 = filter2(f7, gx); gx7_1 = filter2(f7, gx7); f8 = fspecial('motion'); % 8、motion滤波器 gx8 = filter2(f8, gx); gx8_1 = filter2(f8, gx8); subplot(3, 3, 1);imshow(smallx);title('缩小至原来的0.05倍'); subplot(3, 3, 2);imshow(uint8(gx1_1));title('1、均值滤波器'); subplot(3, 3, 3);imshow(uint8(gx2_1));title('2、高斯滤波器'); subplot(3, 3, 4);imshow(uint8(gx3_1));title('3、拉普拉斯滤波器'); subplot(3, 3, 5);imshow(uint8(gx4_1));title('4、sobel滤波器'); subplot(3, 3, 6);imshow(uint8(gx5_1));title('5、prewitt滤波器'); subplot(3, 3, 7);imshow(uint8(gx6_1));title('6、disk滤波器'); subplot(3, 3, 8);imshow(uint8(gx7_1));title('7、log滤波器'); subplot(3, 3, 9);imshow(uint8(gx8_1));title('8、motion滤波器');

    🤣多谢观看、

    Processed: 0.009, SQL: 10