基于Matlab的数字图像处理 ——图像空域增强
院系:信息技术学院 专业班级:电气四班 学号:201107111191 姓名:王英
指导教师:章瑞平
课程设计时间:2012年11月30日 目录
第一章 空域点处理增强 1空域处理表示 2直接灰度变换 3像素间的运算 4直方图均衡化 5直方图规定化
第二章 空域滤波增强 1 均值滤波 2 中值滤波
第四章 总结与体会 第五章 参考文献 摘要
图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。图像增强技术主要有直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。
第一章
空域点处理增强
1 空域处理表示
空域:是指由像素组成的空间。
空域增强方法:是指直接作用于像素空间的增强方法。 设f(x,y)是增强前的图像,g(x,y)是增强处理后的图像,T是定义在(x,y)领域一种操作,则空域处理可表示为:g(x,y)=T[f(x,y)]
如T是定义在每个点(x,y)上,则T称为点操作点处理增强
如T是定义在(x,y)的某个领域上,则T称为模板操作——空域滤波 2直接灰度变换:基于点操作,将每一个像素的灰度值按照一定的数学变换公式转换为一个新的灰度值。 1、图像求反
假设对灰度级范围是[0,L-1]的图像求反,就是通过变换将[0,L-1]变换到[L-1,0],变换公式如下:t=L-1-s 图像求反的变换关系 t Lt0
sLs
2.线性灰度变换
典型的分段线性变换数学表达式如下:
用分段线性法,将需要的图像细节灰度级拉伸,增强对比度,不需要的细节灰度级压缩 增强对比度-增强图像各部分的反差,实际中增加图像中某两个灰度值间的动态范围来实现
t1 0ss1ss1 t2t1 t[ss1]t1s1ss2ss1 2L1t2 L1s[ss2]t2s2sL12
3. 对数变换
要消除这种因动态范围太大而引起的失真,一种有效的方法是对原图像的动态范围进行压缩,最常用的是借助对数形式对动态范围进行调整,其数学表达式如下: T=C㏒(1+|s|)
4、灰度切割
目的:增强特定范围的对比度,用来突出图像中特定灰度范围的亮度。 一种方法:是对感兴趣的灰度级以较大的灰度值t2显示而对另外的灰度级则以较小的灰度值t1来显示。
t2s1ss2
t 其它t1
另一种方法:对感兴趣的灰度级以较大的灰度值进行显示而其他的灰度级则保持不变。 s1ss22
其它
5、位图切割
设图像中每一个像素由8bit表示,也就是说图像有8个位面,一般用位面0表示最低位面,位面7表示最高位面,如图所示。借助图像的位面表示形式可通过对图像特定位面的操作来达到对图像的增强效果。
3 像素间的运算 (1) 图像减法 h(x,y)=f(x,y)-g(x,y)
图像相减的结果就可把两图的差异显示出来,可以用来增强两幅图像的差异。 下面给出一个例子: SI=imread('shadow.tif'); subplot(221);
ttsimshow(SI);
[M,N]=size(SI);I=SI; >> for i=1:M for j=1:N
I(i,j)=bitand(SI(i,j),240); end end
>> subplot(222);imshow(I); >> IMIN=double(SI)-double(I);
>> IMIN=uint8(IMIN);subplot(223);imshow(IMIN); >> IMIN=histeq(IMIN);subplot(224);imshow(IMIN); 运行结果如下:
(2) 图像平均 g(x,y)=f(x,y)+e(x,y)
设噪声互不相关,且具有零均值 ,可用图像平均去除噪声 下面给出一个例子:
I=imread('spine.tif');[M,N]=size(I);II1=zeros(M,N); for i=1:16
II=imnoise(I,'gaussian',0,0.01); II1=II1+double(II);
if or(or(i==1,i==4),or(i==8,i==16)); figure;
imshow(uint8(II1/i)); end end
程序运行结果如下:
%J=imnoise(I,type) %J=imnoise(I,type,parameters) .type:噪音的种类,parameters具体参数, (3)逻辑运算
包括:与、或、非运算。
对灰度图像进行逻辑操作时,像素值作为一个二进制字符串来处理。 下面给出一个或运算:
I=imread('eight.tif'); [M,N]=size(I); I=double(I); I1=ones(M,N)*255;I1(20:150,50:150)=0; for i=1:M for j=1:N
II(i,j)=bitor(I(i,j),I1(i,j)); end end
I=uint8(I);I1=uint8(I1);II=uint8(II); subplot(221);imshow(I); subplot(222);imshow(I1); subplot(223);imshow(II); 运行结果为:
4直方图均衡化
一 直方图是多种空间域处理技术的基础。直方图操作能有效地用于图像增强。除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。直方图在软件中易于计算,也适用于商用硬件设备,因此,它们成为了实时图像处理的一个流行工具。
直方图是图像的最基本的统计特征,它反映的是图像的灰度值的分布情况。直方图均衡化的目的是使图像在整个灰度值动态变化范围内的分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果。灰度直方图是图像预处理中涉及最广泛的基本概念之一。 图像的直方图事实上就是图像的亮度分布的概率密度函数,是一幅图像的所有象素集合的最基本的统计规律。直方图反映了图像的明暗分布规律,可以通过图像变换进行直方图调整,获得较好的视觉效果。
直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。
二 下面给出直方图均衡化增强图像对比度的MATLAB程序:
I=imread(‘kids.tif’); 该程序不能png,jpg格式的图像运行
J=histeq(I); imshow(I);
title(‘原图像’); figure; imshow(J);
title(‘直方图均衡化后的图像’); fihure;subplot(1,2,1); imhist(I,);
title(‘原图像直方图’); subplot(1,2,2); imhist(J,);
title(‘均衡变换后的直方图’); 该程序运行结果如下:
原图像
直方图均衡化后的图像
原图像直方图均衡变换后的直方图10000700060008000500060004000300020002000100000100200001002004000
处理后的图像直方图分布更均匀了,图像在每个灰度级上都有像素点。从处理前后的图像可以看出,许多在原始图像中看不清楚的细节在直方图均衡化处理后所得到的图像中都变得十分清晰。
imhist函数:用于显示图像直方图,其语法格式为:
imhist(I,n) %I为输入图像,n为灰度级,默认为256级灰度级。 imhist(X,map) %显示索引图像X的直方图,map为调色板。
histeq函数:实现对输入图像的直方图均衡化(规定化),其语法格式为:
J=histeq(I,hgram) %将原始图像I的直方图变成用户指定的向量hgram,hgram中的各元素值域为[0,1]。即实现直方图规定化。
J=histeq(I,N) %对原始图像实现直方图均衡化,N为输出图像的灰度级数,默认时N为。
直方图均衡化的特点是计算相对简单,能自动的增强整个图像的对比度,但具体的增强效果不易控制,处理的结果也是得到全局均衡化的直方图。
5直方图规定化
一可以按照预先设定的某个形状来调整图像的直方图。
二下面给出直方图规定化增强图像对比度的MATLAB程序:
I=imread('kids.tif'); [M,N]=size(I); for i=1:8:255 counts(i)=i; end;
N=histeq(I,counts); figure;
subplot(1,3,1);imshow(I); subplot(1,3,2);imshow(N); subplot(1,3,3);imhist(N); 该程序运行结果如下:
50004500400035003000250020001500100050000100200
说明;1 代数运算中需要有若干幅图像数据,在这里我们运用MATLAB中的FOR循环语句来完成产生多幅图像数据及将这些图像数据进行相加运算。MATLAB中FOR END循环的用法如下: for end循环
这种循环允许一组命令以固定的和预定的次数重复,循环的一般形式为: for variable = expression statements end
2 至于多个图像的显示,则可分为两个方面:在不同的图形窗口显示不同的图像,可以用figure指令来实现;在同一个图形窗口显示多图,可以用subplot来实现。其语法格式为: subplot(m,n,p)
其作用就是将一个图像显示对话框分成m行n列,并显示第p幅图像。
直方图规定化的特点:计算量大,有选择的增强图像特定灰度范围,更灵活、更有针对性,若能正确选择规定化的增强函数,就可以得到比直方图均衡化更好的效果。
第二章
空域滤波增强
1 均值滤波
一 均值滤波是在空间域对图象进行平滑处理的一种方法,易于实现,效果也挺好。 设噪声η(m,n)是加性噪声,其均值为0,方差(噪声功率)为σ2,而且噪声与图象f(m,n)不相关。
除了对噪声有上述假定之外,该算法还基于这样一种假设:图象是由许多灰度值相近的
小块组成。这个假设大体上反映了许多图象的结构特征。均值滤波是由某像素领域内各点灰度值的平均值来代替该像素原来的灰度值。
可用模板反映邻域平均算法的特征。对模板沿水平和垂直两个方向逐点移动,相当于用这样一个模板与图像进行卷积运算,从而平滑了整幅图象。模板内各系数和为1,用这样的模板处理常数图象时,图像没有变化;对一般图象处理后,整幅图像灰度的平均值可不变。 MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为: Y = filter2(h,X)
其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。
Fspecial函数用于创建预定义的滤波算子,其语法格式为: h = fspecial(type)
h = fspecial(type,parameters)
二 下面举一个均值滤波的例子: I=imread('trees.tif');
J=imnoise(I,'salt & pepper',0.02);
subplot(231),imshow(I);title('原图像');
subplot(232),imshow(J);title('添加椒盐噪声图像'); k1=filter2(fspecial('average',3),J); k2=filter2(fspecial('average',5),J); k3=filter2(fspecial('average',7),J); k4=filter2(fspecial('average',9),J);
subplot(233),imshow(uint8(k1));title('3×3模板平滑滤波'); subplot(234),imshow(uint8(k2));title('5×5模板平滑滤波'); subplot(235),imshow(uint8(k3));title('7×7模板平滑滤波'); subplot(236),imshow(uint8(k4));title('9×9模板平滑滤波'); 该程序运行结果如下:
原图像添加椒盐噪声图像3×3模板平滑滤波5×5模板平滑滤波7×7模板平滑滤波9×9模板平滑滤波
参数type制定算子类型,parameters指定相应的参数,具体格式为:
type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。 type= 'gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为0.5。
2 中值滤波
一 中值滤波是一种非线性处理技术,能抑制图象中的噪声。它是基于图象的这样一种特性:噪声往往以孤立的点的形式出现,这些点对应的象素很少,而图象则是由像素数较多、面积较大的小块构成。
在一维的情况下,中值滤波器是一个含有奇数个像素的窗口。在处理之后,位于窗口正中的像素的灰度值,用窗口内各像素灰度值的中值代替。例如若窗口长度为5,窗口中像素的灰度值为80、90、200、110、120,则中值为110,因为按小到大(或大到小)排序后,第三位的值是110。于是原理的窗口正中的灰度值200就由110取代。如果200是一个噪声的尖峰,则将被滤除。然而,如果它是一个信号,则滤波后就被消除,降低了分辨率。因此中值滤波在某些情况下抑制噪声,而在另一些情况下却会抑制信号。
中值滤波很容易推广到二维的情况。二维窗口的形式可以是正方形、近似圆形的或十字形的。在图像增强的具体应用中,中值滤波只能是一种抑制噪声的特殊工具,在处理中应监视其效果,以决定最终是否用这种方案。
二 在MATLAB图像处理工具箱中,提供了medfilt2函数用于实现中值滤波。 Medfilt2函数的语法格式为:
B = medfilt2(A) 用3×3的滤波窗口对图像A进行中值滤波。 B = medfilt2(A,[m n]) [m n]用于指定滤波模板的大小。 举一个中值滤波的例子: I=imread('pout.tif');
J=imnoise(I,'salt & pepper',0.02);
subplot(231),imshow(I);title('原图像');
subplot(232),imshow(J);title('添加椒盐噪声图像'); k1=medfilt2(J);
k2=medfilt2(J,[5 5]); k3=medfilt2(J,[7 7]); k4=medfilt2(J,[9 9]);
subplot(233),imshow(k1);title('3×3模板平滑滤波'); subplot(234),imshow(k2);title('5×5模板平滑滤波'); subplot(235),imshow(k3);title('7×7模板平滑滤波'); subplot(236),imshow(k4);title('9×9模板平滑滤波'); 该程序运行结果如下:
原图像添加椒盐噪声图像3×3模板平滑滤波5×5模板平滑滤波7×7模板平滑滤波9×9模板平滑滤波
第四章 总结与体会
一•总结
1.图像增强的目的是对图像进行加工,以得到对具体应用来说视觉效果更“好”,更“有用”的图像。
2.直方图:是图像的重要统计特征,表示了数字图像中每一个灰度级与该灰度级出现的频率间的统计关系。
3.直方图均衡化的基本思想:把原始图的直方图变换为均匀分布的形式,增加象素灰度值的动态范围,从而达到增强图像整体对比度的效果。
直方图均衡化的特点:计算相对简单,能自动的增强整个图像的对比度,但具体的增强效果不易控制,处理的结果也是得到全局均衡化的直方图。
4.直方图规定化的基本思想:按照预先设定的某个形状来调整图像的直方图。
直方图规定化的特点:计算量大,有选择的增强图像特定灰度范围,更灵活、更有针对性,若能正确选择规定化的增强函数,就可以得到比直方图均衡化更好的效果。
5.空域滤波:是在图像空间中借助模板进行邻域操作完成的,根据操作特点可以分为线性滤波和非线性滤波两类;而根据滤波效果可以分为平滑滤波和锐化滤波两种。 6.平滑滤波器(低通滤波)的作用是模糊处理和消除噪声。
常用的空域平滑滤波器有:平均值滤波器(邻域平均法)和中值滤波器,前者是线性的,后者则是非线性的。邻域平均法虽然可以平滑图像,但在消除噪声的同时,会使图像中的一些细节变得模糊。中值滤波则在消除噪声的同时还能保持图像中的细节部分,防止边缘模糊 。 7.邻域平均法:用滤波模板确定的邻域内像素的平均灰度值去代替图像中的每一个像素点 的值。
8.邻域平均法的实现:邻域平均法有力的抑制了噪声,同时也引起 了模糊,模糊程度与邻域半径成正比。
9.中值滤波是用一个有奇数点的滑动窗口,将窗口中心点的值用窗口各点的中值代替。具体操作步骤如下:
(1)将模板在图中漫游,并将模板中心与图中某个象素位置重合。 (2)读取模板下各对应象素的灰度值。 (3)将这些灰度值从小到大排成1列。 (4)找出这些值里排在中间的1个。
(5)将这个中间值赋给对应模板中心位置的象素。
二.体会:经过一个学期的学习,对数字图像处理有了一定的了解,从中学到了如何去对图像进行空域点处理增强和空域滤波增强。虽然它有点难,但只要你认真去学,就一定会掌握的,刚开始我对数字图像一点也不了解,上课时就像在听老师讲天书一样,但我还是认真去听,慢慢的就感觉后面的听懂了,并对它产生了兴趣。 第五章 参考文献
1 书名:数字图像处理—>Java编程与实验 孙燮华 编著
北京:机械工业出版社 2011.1 期号:ISBN 978-7-111-31849-1 2书名:数字图像处理 原书第4版 主编:普特拉 张引等译
北京:机械工业出版社 2009.12 期号:ISBN 978-7-111-268-5 3书名:数字图像处理 主编:霍宏涛
副主编:林小竹、何薇
北京:北京理工大学出版社 2002.9(2006.2重印) 期号:ISBN 7-50-0001-5 4 书名:图象处理识别 主编:张洪刚、称光、郭军
北京:北京邮电大学出版社 2006年 期号:ISBN 7-5635-1290-X
5 书名:数字图象处理与图象通信 主编:朱秀昌、刘峰、胡栋
北京:北京邮电大学出版社 2002年 期号:ISBN 7-5635-0574-1
6 书名:数字图象处理-Java语言实现 主编:赵海滨、王宏
沈阳:东北大学出版社 2005.4 ISBN 7-81102-139-0
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务