图像增强.docx
- 文档编号:5727448
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:19
- 大小:745.33KB
图像增强.docx
《图像增强.docx》由会员分享,可在线阅读,更多相关《图像增强.docx(19页珍藏版)》请在冰豆网上搜索。
图像增强
评分
实验报告
课程名称医学图像处理
实验名称图像增强
专业班级
姓名
学号
实验日期
实验地点
2015—2016学年度第2学期
一、实验目的
掌握常见的图像噪声种类。
学习用于图像增强中的去噪声等平滑技术。
理解在空间域邻域平均法和中值滤波的原理、特点、适用对象。
学习用于突出目标形状特征、改善视觉效果的图像锐化技术的原理和常用方法。
二、实验环境
1、硬件配置:
处理器:
Intel(R)Core(TM)i7-3770CPU@3.40GHz3.40GHz
安装内存(RAM):
4.00GB系统类型:
64位操作系统
2、软件环境:
MATLABR2013b软件
三、实验内容
利用Matlab对图像进行添加噪声、均值滤波和中值滤波,并利用fspecial函数生成各种滤波器。
四、实验结果与分析
(包括实验原理、数据的准备、运行过程分析、源程序(代码)、图形图象界面等)
注:
本项可以增加页数
例1对图像skull.tif分别添加高斯噪声、椒盐噪声和乘性噪声
I=imread('skull.tif');%读原图
J1=imnoise(I,'gaussian',0,0.02);%加均值为0,方差为0.02的高斯噪声。
J2=imnoise(I,'salt&pepper',0.02);%加密度为0.02的椒盐噪声。
J3=imnoise(I,'speckle',0.02);%添加均值为0,方差为0.02的乘性噪声
subplot(2,2,1),imshow(I);%把绘图窗口分成两行两列两块区域,在第一块区域绘图显示原图
title('原图像')%添加标题为原图像
subplot(2,2,2),imshow(J1);%把绘图窗口分成两行两列两块区域,在第二块区域绘图显示有高斯噪声图像
title('添加高斯噪声图像')%添加标题
subplot(2,2,3),imshow(J2);%把绘图窗口分成两行两列两块区域,在第三块区域绘图显示有椒盐噪声图像
title('添加椒盐噪声图像')%添加标题
subplot(2,2,4),imshow(J3);%把绘图窗口分成两行两列两块区域,在第四块区域绘图显示有乘性噪声图像
title('添加乘性噪声图像')%添加标题
运行结果:
图1原图像图2添加高斯噪声图像
图3添加椒盐噪声图像图4添加乘性噪声图像
分析:
1)g=imnoise(f,'gaussian',n,var)是将均值m,方差为var的高斯噪声加到图像f上,默认值是均值n为0,方差var为0.01的噪声。
此处我们选择的是均值为0,方差为0.02的高斯噪声,输出图像如图2所示;
2)g=imnoise(f,'salt&pepper',d)是用椒盐噪声污染图像f,其中d是噪声密度(即包括噪声值的图像区域的百分比)。
因此,大约有d*numel(f)个像素受到影响。
默认的噪声密度为0.05。
此处我们选择的是概率密度为0.02的椒盐噪声,输出图像如图3所示;
3)g=imnoise(f,'speckle',n,var)是用方程
)将乘性噪声添加到图像f上,其中n是均值为0,方差为var的均匀分布的随机噪声,var的默认值是0.04。
此处我们选择的是均值为0,方差为0.02的乘性噪声,输出图像如图4所示。
例2生成各种滤波器
H1=fspecial('gaussian',[5,5],0.4)%生成模板尺寸为5
5,标准差为0.4的高斯低通滤波器
H2=fspecial('sobel')%Sobel水平边缘增强滤波器,无参数
H3=fspecial('prewitt')%Prewitt水平边缘增强滤波器,大小为[3,3],无参数
H4=fspecial('laplacian')%近似二维拉普拉斯运算滤波器,参数alpha用于控制算子形状,取值范围为[0,1],默认值为0.2.
H5=fspecial('log')%高斯拉普拉斯(LoG)运算滤波器,有两个参数,hsize表示模板尺寸,默认值为[3,3],sigma为滤波器的标准差,单位为像素,默认值为0.5.
H6=fspecial('average')%均值滤波器,参数为n代表模版尺寸,用向量表示,默认值为[3,3]。
H7=fspecial('unsharp',0.3)%模糊对比增强滤波器,参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2.
运行结果:
H1=
0.00000.00000.00000.00000.0000
0.00000.00160.03710.00160.0000
0.00000.03710.84500.03710.0000
0.00000.00160.03710.00160.0000
0.00000.00000.00000.00000.0000
H2=
121
000
-1-2-1
H3=
111
000
-1-1-1
H4=
0.16670.66670.1667
0.6667-3.33330.6667
0.16670.66670.1667
H5=
0.04480.04680.05640.04680.0448
0.04680.31670.71460.31670.0468
0.05640.7146-4.90480.71460.0564
0.04680.31670.71460.31670.0468
0.04480.04680.05640.04680.0448
H6=
0.11110.11110.1111
0.11110.11110.1111
0.11110.11110.1111
H7=
-0.2308-0.5385-0.2308
-0.53854.0769-0.5385
-0.2308-0.5385-0.2308
分析:
1)高斯低通滤波器:
参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为0.5。
此处我们生成的是模版为5
5,标准差为0.4的高斯低通滤波器,模版如H1所示;
2)sobbel算子是一阶梯度边缘检测算子,且有方向性。
Sobel算子有两个,一个是检测水平边沿的;另一个是检测垂直平边沿的。
垂直方向上的是x轴,水平方向上的是y轴。
根据H2的输出结果,我们可以看出此次生成的sobel滤波器主要是用于检测水平边沿的;
3)prewitt算子是一种一阶微分的边缘检测算子,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用。
其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。
由H3的输出结果,我们可以知道该prewitt算子主要用于检测水平边沿的;
4)laplacian算子是一种二阶各向同性算子,在只关心边缘的位置而不考虑其周围的象
素灰度差值时比较合适。
laplacian算子对孤立象素的响应要比对边缘或线的响应要
更强烈,因此只适用于无噪声图象,即图像的锐化。
存在噪声情况下,使用Laplacian
算子检测边缘之前需要先进行低通滤波。
5)高斯--拉普拉斯算子把高斯平滑滤波器和拉普拉斯锐化滤波器结合起来的滤波器,它是先进行平滑噪声,再进行边缘检测,所以效果更好。
LOG算子的默认模板为5
5。
例3邻域平均法滤波
I=imread('skull.tif');%读入原图像
J=imnoise(I,'salt&pepper',0.02);%添加椒盐噪声
subplot(2,2,1),imshow(I);%作一幅子图作为并排两幅图的第一幅图,显示原图像
title('原图像')%给原图像加题名
subplot(2,2,2),imshow(J);%作第二幅子图
title('添加椒盐噪声图像')%给添加椒盐噪声图像加题名
K1=filter2(fspecial('average',3),J)/255;%用3×3窗的邻域平均法进行滤波
subplot(2,2,3),imshow(K1);%作第三幅子图
title('3×3窗的邻域平均滤波图像')%给3×3窗的邻域平均滤波图像加题名
K2=filter2(fspecial('average',7),J)/255;%用7×7窗的邻域平均法进行滤波
subplot(2,2,4),imshow(K2);%作第四幅子图
title('7×7窗的邻域平均滤波图像')%给7×7窗的邻域平均滤波图像加题名
运行结果:
图5skull原图图6添加椒盐噪声图像
图73×3窗邻域平均滤波图像图87×7窗邻域平均滤波图像
分析:
1)K1=filter2(fspecial('average',3),J)/255中的filter2是计算二维线型数字滤波,它与fspecial连用,我们在本次实验中分别采用了3×3和7×7窗的邻域平均法对被椒盐噪声所污染的图像进行滤波,输出结果如图7和图8所示。
2)由图7和图8可知,邻域半径越大平滑的效果越好,但邻域半径过大时,会使边缘信息损失的越大,从而使输出的图像变得模糊,因此需合理选择邻域半径的大小;且可以看出邻域平均法对椒盐噪声的处理效果并不是很好;
3)图像运算时采用的double型,而imshow函数显示图像时对double型的显示范围为0-1之间,即大于1时都是显示为白色,因此在进行计算完后需将double型转换为uint8型。
例4各种滤波方法的比较
J=imread('skull.tif')%读取原图像
I=imnoise(J,'salt&pepper',0.02);%添加椒盐噪声
I=uint8(I);%转换为uint8
W1=1/9*ones(3,3);%均值滤波
W3=fspecial('laplacian',0);%拉普拉斯算子
W4=[0.010.10.01;%3x3模板
0.100.560.10;
0.010.10.01];
I1=imfilter(I,W1);%对图像I执行均值滤波,采用W1模板
I2=medfilt2(I);%对图像I执行二维中值滤波
I3=I-imfilter(I,W3);%对图像I执行拉普拉斯滤波
I4=imfilter(I,W4);%用W4模板进行均值滤波
[mn]=size(I);%模板大小为I
fori=1:
m%执行for循环
I1(1,i)=I(1,i);
I1(i,1)=I(i,1);
I1(5,i)=I(5,i);
I1(i,5)=I(i,5);
I2(1,i)=I(1,i);
I2(i,1)=I(i,1);
I2(5,i)=I(5,i);
I2(i,5)=I(i,5);
I3(1,i)=I(1,i);
I3(i,1)=I(i,1);
I3(5,i)=I(5,i);
I3(i,5)=I(i,5);
I4(1,i)=I(1,i);
I4(i,1)=I(i,1);
I4(5,i)=I(5,i);
I4(i,5)=I(i,5);
end
subplot(3,2,1),imshow(J),title('原图像')%建立3行2列子图窗口,在第一列窗口显示
图像J
subplot(3,2,2),imshow(I),title('添加椒盐噪声图像')%在第二列窗口作第二幅子图,显
示图像I,并命名
subplot(3,2,3),imshow(I1),title('均值滤波图像')%作第三幅子图,显示图像I1,并命名
subplot(3,2,4),imshow(I2),title('中值滤波图像')%作第四幅子图,显示图像I2
subplot(3,2,5),imshow(I3),title('laplacian滤波图像')%作第五幅子图,显示图像I3,
并命名
subplot(3,2,6),imshow(I4),title('低通滤波图像')%作第六幅子图,显示图像I4,并命名
运行结果:
图9原图像图10添加椒盐噪声图像图11均值滤波图像
图12中值滤波图像图13laplacian滤波图像图14低通滤波图像
分析:
1)由于椒盐噪声是幅值近似相等,但分布在不同位置上,图像上既有干净点也有污点,中滤波是选择合适的点来代替污点的值,且因为椒盐噪声的均值不为0,因此中值滤波器对椒盐噪声的处理效果比均值滤波器的好,通过图11和图12我们也可以看到中值滤波器对椒盐噪声的处理效果要远远优于均值滤波器。
2)低通滤波器是模糊情节,削弱图像中的高频分量,具有平滑图像的效果可以通过均值实现;而高通滤波器是用于加强边缘和细节,削弱图像中的低频分量,具有锐化图像的效果,且可以通过laplacian算子实现。
通过图13和图14的,我们也可以看出经过laplacian滤波的图像细节和边缘更为清晰,而低通滤波后的图像较为平滑。
思考题
1、在对图像进行邻域平均法滤波时,邻域半径的大小对图像有什么影响,为什么?
I=imread('skull.tif');%读取图像
J=imnoise(I,'gaussian',0.02);%给图像添加噪声密度为0.02的高斯噪声
subplot(3,2,1),imshow(I);%显示图像I
title('原图像')%添加标题为“原图像”
subplot(3,2,2),imshow(J);%显示图像J
title('添加高斯噪声图像')%添加标题
K1=filter2(fspecial('average',3),J)/255;%用3*3窗的邻域平均滤波处理图像
subplot(3,2,3),imshow(K1);%显示图像K1
title('3*3窗的邻域平均滤波图像')%添加标题“3*3窗的邻域平均滤波图像”
K2=filter2(fspecial('average',5),J)/255;%用5*5窗的邻域平均滤波处理图像subplot(3,2,4),imshow(K2);%显示图像K2
title('5*5窗的邻域平均滤波图像');%添加标题“5*5窗的邻域平均滤波图像”
K3=filter2(fspecial('average',7),J)/255;%用7*7窗的邻域平均滤波处理图像subplot(3,2,5),imshow(K3);%显示图像K3
title('7*7窗的邻域平均滤波图像');%添加标题“7*7窗的邻域平均滤波图像”
K4=filter2(fspecial('average',9),J)/255;%9*9窗的邻域平均滤波处理图像subplot(3,2,6),imshow(K4);%显示图像K4
title('9*9窗的邻域平均滤波图像');%添加标题“9*9窗的邻域平均滤波图像”
运行结果:
图15原图像图16添加高斯噪声图像图173*3窗邻域平均滤波图像
图185*5窗邻域平均滤波图像图197*7窗邻域平均滤波图像图209*9窗邻域平均滤波图像
答:
通过图17和图18的对比,我们可以清楚的看到随着邻域半径的增大,对图像的处理效果会更好,通过图18、图19和图20的对比,我们也可以清晰的看到当邻域半径选取的过大时,图像反而会更模糊,因此我们可以知道邻域的半径应选取合适的大小,否则会造成图像的失真。
2、
1)邻域平均法更适合于处理高斯噪声还是椒盐噪声?
试分析原因。
2)中值滤波更适合于处理高斯噪声还是椒盐噪声?
试分析原因。
I=imread('skull.tif');%读入原图像
J1=imnoise(I,'salt&pepper',0.02);%添加密度为0.02的椒盐噪声
J2=imnoise(I,'gaussian',0,0.02);%添加方差为高斯噪声
subplot(4,3,1),imshow(I);%作一幅子图作为并排两幅图的第一幅图,显示原图像
title('原图像')%给原图像加题名
subplot(4,3,2),imshow(J1);%作第二幅子图
title('添加椒盐噪声图像')%给添加椒盐噪声图像加题名
subplot(4,3,3),imshow(J2);%作第三幅子图
title('添加高斯噪声图像')
K1=filter2(fspecial('average',3),J1)/255;%用3×3窗的邻域平均法进行滤波
subplot(4,3,4),imshow(K1);%作第四幅子图
title('均值滤波图像')%给3×3窗的邻域平均滤波图像加题名
K2=filter2(fspecial('average',3),J2)/255;%用3×3窗的邻域平均法进行滤波
subplot(4,3,5),imshow(K2);%作第五幅子图
title('均值滤波图像')%给3×3窗的邻域平均滤波图像加题名
I1=medfilt2(J1);%%用中值滤波处理高斯噪声图像
subplot(4,3,6),imshow(I1);%作第六幅子图
title('中值滤波图像')%添加标题
I2=medfilt2(J2);%%用中值滤波处理椒盐噪声图像
subplot(4,3,7),imshow(I2);%作第七幅子图
title('中值滤波图像')%添加标题
运行结果:
图21原图图22添加椒盐噪声图像图23添加高斯噪声图像
图24均值处理椒盐噪声图像图25均值处理高斯噪声图像图26中值处理椒盐噪声图像
图27中值处理高斯噪声图像
答:
1)通过图24和图25的对比,我们可以看出均值滤波器既可以用于椒盐噪声,也可以用于高斯噪声,只是均值滤波对高斯噪声的处理效果比椒盐噪声的更具有优势。
2)通过图26和图27的对比,我们可以清楚的看出中值滤波器对椒盐噪声的处理效果远远由于处理高斯噪声,甚至对高斯噪声的处理很差,这是因为高斯噪声近似于正态分布,图像中的点几乎都为污点,使得中值滤波找不到干净的点来代替。
3、对叠加有乘性噪声的图像,设计一种处理方法,既能去噪声又能保持边缘清晰。
答:
第一步:
采取对数转换的方法将乘性噪声转换成加性噪声
第二步:
邻域平均滤波处理
第三步:
拉普拉斯滤波处理。
第四步:
最后处理的结果用反对数变换的方法,还原回去
I=imread('skull.tif');%读取图像
J1=imnoise(I,'speckle',0.02);%添加乘性噪声图像
subplot(3,2,1),imshow(I)%显示图像I
title('原图像')%添加标题“原图像”
subplot(3,2,2),imshow(J1)%显示图像J1
title('添加乘性噪声图像')%添加标题“添加乘性噪声图像”
J2=double(J1);%将乘性噪声图像的图像类型变为double型
J3=log(J2);%对乘性噪声图像取对数
subplot(3,2,3),imshow(J3)%显示图像J3
title('加性噪声图像')%添加标题“加性噪声图像”
K1=filter2(fspecial('average',3),J3);%用3*3窗的邻域平均滤波处理图像
subplot(3,2,4),imshow(K1,[])%显示图像K1
title('用邻域平均滤波处理图像')%添加标题“用3*3窗的邻域平均滤波处理图像”
w=fspecial('laplacian',0);%生成拉普拉斯滤波器
g1=K1+imfilter(K1,w,'replicate');%对邻域平均滤波处理过的图像进行拉普拉斯滤波处理
subplot(3,2,5),imshow(g1,[])%显示图像g1
title('laplacian滤波图像')%添加标题
g2=exp(g1);%对进行过混合空间滤波的图像进行反对数变换(指数变换)
subplot(3,2,5),imshow(g2,[])%显示图像g2
title('混合空间滤波后的图像')%添加标题
运行结果:
图28原图像图29添加乘性噪声图像图30加性噪声图像
图31邻域平均滤波图像图32laplacian滤波图像图33混合空间滤波图像
五、实验小结:
(包括主要实验问题的最终结果描述、详细的收获体会,待解决的问题等)
在此次实验中,由于实验内容更贴近生活应用,因此比起上学期,我们更容易领悟该程序的表达,只是在细节方面还是很容易出错,甚至不容易拐过弯来。
在实验中应注意的点:
1)在编写运行文件的时候要选择正确的路径,图片保存在哪里,就应该选择哪里,不然就会出现读取错误。
2)当对函数中的某一参数不了解时,我们可以通过不断改变该参数的值来观察该值所造成的影响。
3)当用imshow显示图像时,应注意图像的精度问题。
4)在进行图像的运算时应注意保持图像的类型和大小一致。
5)学会明确处理图像的意义之所在,以此来选取合适的处理方法
对图像进行处理,以提取出我们所想要的部分。
手写签名:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 增强