当前位置:首页 > 地信家园 > Matlab数字图像处理之四:图像增强和空域滤波

Matlab数字图像处理之四:图像增强和空域滤波

正文索引[ 隐藏 ]

Matlab数字图像处理之四:图像增强和空域滤波

一、 实验目的

巩固滤波算法,了解几种不同滤波方式的使用和使用的场合,学会使用MatLab对图像作滤波处理,体会滤波效果,培养处理实际图像的能力。

二、 实验原理与函数说明

fspecial 函数

功能:产生预定义滤波器

格式:H=fspecial(type)

产生一个由 type 指定的二维滤波器 H ,返回的H常与其它滤波器搭配使用,如:

H=fspecial(‘gauss’,n,sigma)       高斯低通滤波器

H=fspecial(‘sobel’)              Sobel 水平边缘增强滤波器

H=fspecial(‘prewitt’)            Prewitt水平边缘增强滤波器

H=fspecial(‘laplacian’,alpha) 近似二维拉普拉斯滤波器

H=fspecial(‘log’,n,sigma)      高斯拉普拉斯(LoG)运算滤波器

H=fspecial(‘average’,n)           均值滤波器

H=fspecial(‘unsharp’,alpha)         模糊对比增强滤波器

filter2 函数

功能:计算二维线性数字滤波,它与函数fspecial连用

格式1:Y=filter2(B,X)

说明:filter2使用矩阵B中的二维 滤波器对数据X进行滤波,结果Y是通过二维互相关计算出来的,其大小与 X一样。

格式2:Y=filter2(B,X,’shape’)

说明:filter2返回的Y是通过二维互相关计算出来的,其大小由参数 shape确定,其取值如下:

full 返回二维互相关的全部结果,size(Y)>size(X);

same 返回二维互相关结果的中间部分,Y与X大小相同;

valid 返回在二维互相关过程中,未使用边缘补0部分进行计算的结果部分,有 size(Y)<size(X) 。

filter2函数用于图像滤波

i=imread(‘e:w11.tif’);

h=[1,2,1;0,0,0;-1,-2,-1]; %Sobel算子

j=filter2(h,i);

conv2函数 (conv函数(多维卷积))

功能:计算二维卷积。

格式1:C=conv2(A, B)conv2计算矩阵A和B的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1];

格式2:C=conv2(Hcol, Hrow, A) 

说明:矩阵 A分别与Hcol向量在列方向和Hrow向量在行方向上进行卷积;

格式3:C=conv2(…, ′shape′)

说明:用来指定conv2返回二维卷积结果部分,参数shape可取值如下:

full 为缺省值,返回二维卷积的全部结果;

same 返回二维卷积结果中与 A 大小相同的中间部分;

valid 返回在卷积过程中,未使用边缘补0部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。

利用二维卷积conv2进行线性滤波

i=imread(‘e:w11.tif’);

h=[1,1,1;1,1,1;1,1,1];

h=h/9;

j=conv2(i,h);

medfilt2函数

功能:图像中值滤波

格式:C=medfilt2(A,n)

示例:

A0=imread(‘abao.bmp’);

A=rgb2gray(A0);

I=imnoise(A,’salt & pepper’,0.02); %叠加密度为0.02的椒盐噪声

C=medfilt2(I, [3 3]); %窗口大小为3×3的中值滤波

edge函数

功能:图像边缘检测,提供了许多微分算子模板,对某些模板可以指定水平边缘还是垂直边缘(或者两者都有)敏感(即主要检测是水平边缘还是垂直边缘)。

格式:C=edge(A,type)

说明:type指明了边缘检测所用的算子

示例:

J1=edge(I,’sobel’);

J2=edge(I,‘prewitt’);

J3=edge(I,’log’);

J4= edge(I,’roberts’)

三、 实验内容及步骤

1. 完成对图像加噪声,使用均值滤波器、中值滤波器对不同噪声类型、不同强度的噪声图像进行滤波处理,并评价处理的结果,进行理论上的解释。

(a) 读入图像electric.tif;

(b) 利用imnoise函数在图像上加入高斯噪声;

(c) 利用预定义函数fspecial 产生平均(average)滤波器 ;

(d) 分别采用3×3和5×5的模板,用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果;

(e) 选择不同大小的模板,对加入某一固定噪声的图像进行处理,观察上述滤波器处理的结果;

(f) 利用imnoise函数在图像上加入椒盐噪声;

(g) 重复(c)~(e)的步骤;

(h) 输出全部结果并进行讨论;

高斯噪声0.02,分别用3×3和5×5的模板,进行平均滤波和中值滤波

A=imread(‘cameraman.tif’);

B=im2double(A);

CX=imnoise(B,’gaussian’,0.02);

A3=fspecial(‘average’,3);

A5=fspecial(‘average’,5);

DX=filter2(A3,CX);

EX=filter2(A5,CX);

FX=medfilt2(CX,[3 3]);

GX=medfilt2(CX,[5 5]);

subplot(2,3,1),imshow(A),title(‘原图’);

subplot(2,3,2),imshow(CX),title(‘高斯噪声 0.02′);

subplot(2,3,3),imshow(DX),title(‘平滤波均3×3′);

subplot(2,3,4),imshow(EX),title(‘平滤波均5×5′);

subplot(2,3,5),imshow(FX),title(‘中值滤波3×3′);

subplot(2,3,6),imshow(GX),title(‘中值滤波5×5′)

Matlab数字图像处理之四:图像增强和空域滤波

高斯噪声0.05,分别用3×3和5×5的模板,进行平均滤波和中值滤波

A=imread(‘cameraman.tif ‘);

B=im2double(A);

CY=imnoise(B,’gaussian’,0.05);

A3=fspecial(‘average’,3);

A5=fspecial(‘average’,5);

DY=filter2(A3,CY);

EY=filter2(A5,CY);

FY=medfilt2(CY,[3 3]);

GY=medfilt2(CY,[5 5]);

subplot(2,3,1),imshow(A),title(‘原图’);

subplot(2,3,2),imshow(CY),title(‘高斯噪声 0.05′);

subplot(2,3,3),imshow(DY),title(‘平滤波均3×3′);

subplot(2,3,4),imshow(EY),title(‘平滤波均5×5′);

subplot(2,3,5),imshow(FY),title(‘中值滤波3×3′);

subplot(2,3,6),imshow(GY),title(‘中值滤波5×5′)

Matlab数字图像处理之四:图像增强和空域滤波

椒盐噪声0.02,分别用3×3和5×5的模板,进行平均滤波和中值滤波

A=imread(‘cameraman.tif ‘);

B=im2double(A);

CZ= imnoise(B,’salt & pepper’,0.02);

A3=fspecial(‘average’,3);

A5=fspecial(‘average’,5);

DZ=filter2(A3,CZ);

EZ=filter2(A5,CZ);

FZ=medfilt2(CZ,[3 3]);

GZ=medfilt2(CZ,[5 5]);

subplot(2,3,1),imshow(A),title(‘原图’);

subplot(2,3,2),imshow(CZ),title(‘椒盐噪声 0.02′);

subplot(2,3,3),imshow(DZ),title(‘平滤波均3×3′);

subplot(2,3,4),imshow(EZ),title(‘平滤波均5×5′);

subplot(2,3,5),imshow(FZ),title(‘中值滤波3×3′);

subplot(2,3,6),imshow(GZ),title(‘中值滤波5×5′)

Matlab数字图像处理之四:图像增强和空域滤波

不同噪声类型和强度,滤波后进行比较:

subplot(3,5,1),imshow(CX),title(‘高斯噪声 0.02′);

subplot(3,5,2),imshow(DX),title(‘平滤波均3×3′);

subplot(3,5,3),imshow(EX),title(‘平滤波均5×5′);

subplot(3,5,4),imshow(FX),title(‘中值滤波3×3′);

subplot(3,5,5),imshow(GX),title(‘中值滤波5×5′)

subplot(3,5,6),imshow(CY),title(‘高斯噪声 0.05′);

subplot(3,5,7),imshow(DY),title(‘平滤波均3×3′);

subplot(3,5,8),imshow(EY),title(‘平滤波均5×5′);

subplot(3,5,9),imshow(FY),title(‘中值滤波3×3′);

subplot(3,5,10),imshow(GY),title(‘中值滤波5×5′)

subplot(3,5,11),imshow(CZ),title(‘椒盐噪声 0.02′);

subplot(3,5,12),imshow(DZ),title(‘平滤波均3×3′);

subplot(3,5,13),imshow(EZ),title(‘平滤波均5×5′);

subplot(3,5,14),imshow(FZ),title(‘中值滤波3×3′);

subplot(3,5,15),imshow(GZ),title(‘中值滤波5×5′)

Matlab数字图像处理之四:图像增强和空域滤波

2. 完成对图像的加噪、降噪、边缘增强

A) 在MATLAB中读入名为eight.tif的图像给矩阵X,将X强制类型转换为double,最大值归一化并显示X。

B) 使用imnoise函数对图像矩阵X加噪(均值为零,方差为0.005的高斯噪声),加噪后图像矩阵名为J。

C) 使用平滑滤波模板和conv2函数对加噪图像进行平滑滤波即降噪,输出图像Y1并显示。

D) 使用锐化滤波模板和conv2函数对图像X进行锐化滤波即边缘增强,输出图像Y2并显示。

E) 在一个图形窗口中建立2×2子窗口,分别显示原始图像X, 加噪图像J, 降噪后图像Y1和边缘增强图像Y2。

X=imread(‘eight.tif’);

Y=double(X);

X=(255-Y)./255;

J=imnoise(X,’gaussian’,0,0.005);

d1=0.04.*[1,1,1,1,1; 1,1,1,1,1; 1,1,1,1,1; 1,1,1,1,1; 1,1,1,1,1];

Y1=conv2(J,d1);

d2=[0,-1,0;-1,4,-1;0,-1,0];

Y2=conv2(X,d2);

subplot(2,2,1),imshow(X),title(‘原图’);

subplot(2,2,2),imshow(J),title(‘高斯噪声’);

subplot(2,2,3),imshow(Y1),title(‘降噪 Y1′);

subplot(2,2,4),imshow(Y2),title(‘边缘增强 Y2′)

Matlab数字图像处理之四:图像增强和空域滤波

3. 完成图像的边缘检测

a) 使用edge函数和同样的锐化滤波器对图像X进行锐化滤波即边缘增强,输出图像Y3并显示。

b) 将上述得到的结果图像与第二步的边缘增强结果进行比较,给出合理的解释。

X=imread(‘eight.tif’);

Y=double(X);

X=(255-Y)./255;

J=imnoise(X,’gaussian’,0,0.005);

d2=[0,-1,0;-1,4,-1;0,-1,0];

Y2=conv2(X,d2);

Y3=edge(X,’sobel’);

subplot(1,3,1),imshow(X),title(‘原图’);

subplot(1,3,2),imshow(Y2),title(‘锐化滤波’);

subplot(1,3,3),imshow(Y3),title(‘edge函数’);

Matlab数字图像处理之四:图像增强和空域滤波

四、 思考与回答:

1. 结合实验内容,定性评价平均滤波器/中值滤波器对高斯噪声和椒盐噪声的去噪效果?

subplot(1,2,1),imshow(DX),title(‘高斯噪声 0.02 平滤波均3×3′);

subplot(1,2,2),imshow(DZ),title(‘椒盐噪声 0.02 平滤波均3×3′);

Matlab数字图像处理之四:图像增强和空域滤波

平均滤波对两种噪声去噪效果差不多。

subplot(1,2,1),imshow(FX),title(‘高斯噪声 0.02 中值滤波3×3′);

subplot(1,2,2),imshow(FZ),title(‘椒盐噪声 0.02 中值滤波3×3′);

Matlab数字图像处理之四:图像增强和空域滤波

中值滤波明显对椒盐噪声去噪效果好。

2. 结合实验内容,定性评价滤波窗口对去噪效果的影响?

subplot(1,2,1),imshow(FZ),title(‘中值滤波3×3′);

subplot(1,2,2),imshow(GZ),title(‘中值滤波5×5′)

Matlab数字图像处理之四:图像增强和空域滤波

subplot(1,2,1),imshow(DZ),title(‘平滤波均3×3′);

subplot(1,2,2),imshow(EZ),title(‘平滤波均5×5′);

Matlab数字图像处理之四:图像增强和空域滤波

比较可知,滤波窗口越大,去噪效果越好。

友荐云推荐
  • «
  • »
  • 作者:
    除非注明,本文原创:技术宅,欢迎转载!转载请以链接形式注明本文地址,谢谢。
    原文链接:http://www.jishuzh.com/gis/matlab数字图像处理之四:图像增强和空域滤波.html

    3 thoughts on “Matlab数字图像处理之四:图像增强和空域滤波

    1. australian online casino

      Your writting is really very good. Blog is fully stuffed with unique and good information. Good keep it up. :twisted:

    2. 国外新鲜资讯

      看着代码就头痛

      1. 技术宅 (Post author) 

        呵呵 慢慢看嘛 ~

    评论已关闭.