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

  1. Matlab图像处理创新实践-实验1【图像滤波基础(1)】
  2. Matlab图像处理创新实践-实验2【图像滤波基础(2)】
  3. Matlab图像处理创新实践-实验3【图像锐化】
  4. 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图像处理创新实践-实验2【图像滤波基础(2)】_第1张图片 Matlab内置图片:Peppers.png

步骤3

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

步骤4

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

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

步骤5

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

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

步骤6、7

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

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

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

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

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

四、分析与思考

【在此描述下你从该实验中得出的结论,并对实验结果进行分析,例如: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滤波器');

多谢观看、

你可能感兴趣的:(图像处理创新实践,matlab,图像处理,rgb2gray,fspecial,filter2)