《图像预处理及MATLAB实现课件》由会员分享,可在线阅读,更多相关《图像预处理及MATLAB实现课件(196页珍藏版)》请在金锄头文库上搜索。
1、第3章 图像预处理及MATLAB实现,图像预处理是相对于图像识别、图像理解而言的一种前期处理。 不论采用何种装置,输人的图像往往不能令人满意。 例:从美学的角度会感到图像中物体的轮廓过于鲜明而显得不协调; 按检测对象物大小和形状的要求看,图像的边缘过于模糊; 在相当满意的一幅图像上会发现多了一些不知来源的黑点或白点; 图像的失真、变形等等。 总之,输人的图像在视觉效果和识别方便性等方面可能存在诸多问题,这类问题不妨统称为“质量”问题。尽管由于目的、观点、爱好等的不同,图像质量很难有统一的定义和标准,但是,根据应用要求改善图像质量却是一个共同的愿望。,改善图像质量的处理称为图像预处理,主要是指按
2、需要进行适当的变换突出某些有用的信息,去除或削弱无用的信息,如:改变图像对比度,去除噪声或强调边缘的处理等。 本章主要介绍直方图修正、灰度变换等内容。除本章介绍的内容外,图像预处理基本方法还有:图像的频域特性(参见本书第4章)、直方图变换、灰度变换、图像平滑、图像锐化、伪彩色和假彩色处理(参见本书第8章)等就不在本章介绍了。,3. 1 直方图修正,*按照随机过程理论,图像可以看做是一个随机场,也具有相应的随机特性,其中最重要的就是灰度密度函数,但是一般讲,要精确得到图像的灰度密度函数是比较困难的,实际中用数字图像的直方图来代替。,图像的直方图:是图像的重要统计特征,是表示数字图像中每一灰度级与
3、该灰度级出现的频数(该灰度像素的数目)间的统计关系。用横坐标表示灰度级,纵坐标表示频数(也有用相对频数即概率表示的)。按照直方图的定义可表示为: (5.1.1) 式中:N为一幅图像的总像素数,是第k级灰度的像素数,表示第k个灰度级,P(rk)表示该灰度级出现的相对频数。,需要注意的是:直方图能给出该图像的大致描述,如图像的灰度范围、灰度级的分布、整幅图像的平均亮度等,但是仅从直方图不能完整地描述一幅图像,因为一幅图像对应于一个直方图,但是一个直方图不一定只对应一幅图像,几幅图像只要灰度分布密度相同,那么它们的直方图也是相同的。 P149图5.1就是具有相同直方图的图像实例。,尽管直方图不能表示
4、出某灰度级的像素在什么位置,更不能直接反映出图像内容,但是具有统计特性的直方图却能描述该图像的灰度分布特性,使人们从中得到诸如总体明亮程度、对比度、对象物的可分性等与图像质量有关的灰度分布概貌,成为一些处理方法的重要依据;,同时,对直方图进行分析可得出图像的一些能反映出图像特点的有用特征。例如, 当图像的对比度较小时,它的灰度直方图只在灰度轴上较小的一段区间上非零; 较暗的图像由于较多像素的灰度值低,因此直方图的主体出现在低值灰度区间上,在高值灰度区间上的幅度较小或为零,而较亮的图像情况正好相反; 看起来清晰柔和的图像,它的直方图分布比较均匀。,通常一幅均匀量化的自然图像由于其灰度直方图分布集
5、中在较窄的低值灰度区间,引起图像的细节看不清楚,为使图像变得清晰,可以通过变换使图像的灰度范围拉开或使灰度分布在动态范围内趋于均化,从而增加反差,使图像的细节清晰,达到图像增强的目的。 事实证明,通过图像直方图修改进行图像增强是一种有效的方法。,3.1.2直方图修正,直方图修正的应用非常广泛。 例:在医学上,为了改善x射线机操作人员的工作条件,可以采用低强度X射线曝光,但是这样获得的X光片灰度级集中在暗区,许多图像细节无法看清,判读困难,通过修正使灰度级分布在人眼合适的亮度区域,就可以使X光片中的细节,如筋骨、关节等清晰可见。 另外还有一些非可见光成像的工业无损检测(如射线成像、红外成像等),
6、 军事公安侦察等照片的处理。,(1)直方图均衡化 直方图均衡化(直方图均匀化),是一种常用的灰度增强算法,是将原图像的直方图经过变换函数修整为均匀直方图,然后按均衡后的直方图修整原图像。 为研究方便,首先将直方图归一化,即让原图像灰度范围Z1,Zk归一化为0,1。设其中任一灰度级Z归一化为r,变换后图像的任一灰度级Z归一化为s,显然r,s应当满足: 0r1, 0s1 (5.1.2),因此直方图修正就是对下列公式的计算过程: sT(r) 或 rT-1 (s) (5.1.3) 式中:T(r)为变换函数,它必须满足下列条件: T(r)在0r1区间内是单值函数,且单调增加; T(r)在0r1内满足0T
7、(r)1。 条件保证了灰度级从黑到白的次序,而条件确保映射后的像素灰度级仍在允许的灰度级范围内,避免整个图像明显变亮或者变暗。T-1 (s)为反变换函数,也同样满足上述的两个条件。,对于连续情况,设pr(r)和ps(s)分别表示原图像和变换后图像的灰度级概率密度函数,根据概率论的知识,在已知pr(r)和T(r)时,T-1 (s)也是单调增长,则ps(s)可由下式求出: (5.1.4) 在直方图均衡化时,有ps(s)=1/L=常数,这里L为均衡化后灰度变化范围,归一化表示时L=1,则ps(s)1,有ds=pr(r)dr,即ds=dT(r)=pr(r)dr,两边取积分得 (5.1.5) 式(5.1
8、.5)就是所求的变换函数,表明变换函数T(r)是原图像的累计分布函数,是一个非负递增函数,因此只要知道原图像的概率密度,就能很容易地确定变换函数。 将上述结论推广到离散的情况。设一幅图像总像素为n,共分L个灰度级,nk代表第k个灰度级rk出现的频数(像素数),则第k灰度级出现的概率为 pr(rk)nk/n,0rk1,k0,1,L-1 (5.1.6),此时变换函数可以表示为 (5.1.7) 其反变换函数为 (5.1.8) 因此,根据原图像的直方图统计值就可算出均衡后各像素的灰度值。,例:假设有一幅图像,共有6464=4096个像素, 8个灰度级,各灰度级概率分布如P150表5.1所示,试将其直方
9、图均匀化。 表5.1 各灰度级对应的概率分布,图像直方图均匀化过程: 根据表5. 1数据可得到此图像直方图:如P151图5.2(a) 应用式(5.1.7)可求得变换函数为:,依此类推,即可得到: s3=0.81; s4=0.89; s5=0.95; s6=0.98; s7=1.00 变换函数sk与灰度级rk之间的关系曲线: 如P151图5.2(b)所示。 从P150表5.1中可以看出原图像给定的rk是等间隔的(每个间隔为1/7),而经过T(rk)求得的sk就不一定是等间隔的,从图5.2(b)中可以很清楚地看到,为了不改变原图像的量化值,必须对每一个变换的sk取最靠近的量化值,P151表5.2中
10、列出了重新量化后得到的新灰度s0,s1,s2,s3,s4,将计算出来的sk与量化级数相比较,即可得到:,表5.2 直方图均匀化过程,图5.2 图像直方图均衡化示例 (a)原始图像直方图 (b)变换函数 (c)直方图均衡化后的直方图 将相同值的归并起来,即得直方图均衡化修正后的灰度变换函数,它们是:,由此可知,经过变换后的灰度级不需要8个,只需要5个就可以了。把相应原灰度级的像素数相加得到新灰度级的像素数。均匀化以后的直方图如P151图5.2(c)所示,由图可见,均衡化直方图比原直方图均匀了,但它并不能完全均匀,这是由于在均衡化的过程中,原直方图上有几个像素数较少的灰度级归并到一个新的灰度级上,
11、而像素较多的灰度级间隔被拉大了,这样有利于图像的分析和识别。这样做是减少图像的灰度级以换取对比度的扩大。,(2)直方图规定化 均匀化处理后的图像虽然增强了图像的对比度,但它并不一定适合有些应用场合,如:有时人们希望增强后的图像,其灰度级的分布是不均匀的,而且是具有规定形状的直方图,这样可以突出感兴趣的灰度范围。此时可以采用直方图的规定化实现。直方图规定化有几种不同的方法,下面分别给予介绍: 第一种方法:用一个规定的概率函数来表示所需要的直方图,如表5.3所示。也就是将原来直方图变换成某一个规定概率密度函数的直方图,这种图像直方图规定化一般是按照P148式(5.1.1)来进行计算的。,表5.3
12、几种给定形状的直方图修正变换函数,第二种方法:通过控制一组直线段来构成直方图,使其满足所希望的形状。然后再数字化并归一化。 P152图5.3 由直线段构成的直方图 P152图5.3中的直线段构成的直方图形状受m,h,L,k四个参量控制,其中:m在0,1区间内任意选定;h0;当L,k从00到900变化时,分别引起j点在(0,1)和(m,0)两点连线上移动、k点在(1,1)和(m,0)两点连线上移动,只要改变上述四个参量就可以得到许多有用的直方图。如果m=0.5,h=1,Lk0就可以得到一个矩形,即均匀直方图。,下面具体讨论如何实现直方图规定化处理。 先以连续分布的情况来讨论: 原理:设pr(r)
13、为原始图像的灰度密度函数,pz(z)为希望得到的增强图像的灰度密度函数。如果对原始图像pr(r)和期望图像pz(z)均进行直方图均衡化处理,即可得 (5.1.9) (5.1.10),经过上述变换后的灰度s及v,其密度函数是相同的,可以通过直方图均衡,实现从pr(r)到pz(z)的转换,也就是实现直方图的规定化。 具体的方法:利用, 可将原图各点的灰度r变换为s,然后根据s=v及, 就可以求出每一个r相对应的灰度值,对于离散的数字图像可进行类似的变换, 即先对原图进行直方图均衡,求出与原图像中每一个灰度级ri相对应的si值, 然后对具有规定形状直方图的期望图像也进行类似的处理,求出与期望图像灰度
14、zk相对应的vk值,再在vk和si之间找出满足vksi的点对,进而返回去找出与ri相对应的zk,实现图像按规定形状直方图作增强。,例:一幅图像有6464=4096个像素、8个灰度级,将其按直方图规定化增强。P154图5.4(a)是原图像直方图,图5.4(b)是期望图像的直方图。期望图像所对应的直方图的具体数值列于P153表5.4所示。,首先,重复前面例子的均匀化过程,计算直方图均衡化原始图像灰度ri对应的变换函数si,8个灰度级合并为5个灰度级,其结果如下:,第二步,对规定化的图像用同样的方法进行直方图均匀化处理(如P154图5.4(c)),求出给定直方图对应的灰度级,第三步,使用与vk靠近的
15、sk代替vk(由于是离散图像,所以采用“最靠近”原则),得到的结果如下:,并用 求逆变换即可得到 第四步,图像总像素点为4096,根据一系列zk求出相应的pz(zk),得到如表5.4和图5.4(d)所示的结果。,表5.4 规定直方图和结果直方图,P154图5.4 直方图规定化 (a)原直方图 (b)规定的直方图(c)变换函数 (d)结果直方图 综上所述,直方图规定化就是把直方图均衡化结果映射到设想的理想直方图上,使图像按人的意愿去变换。,5.1.3 MATLAB提供的直方图修正函数及其应用,(1) imhist函数 MATLAB图像处理工具箱提供了imhist函数来计算和显示图像的直方图,其语
16、法格式为: imhist(I,n) 其功能是:计算和显示灰度图像I的直方图,n为指定的灰度级的数目,对于灰度图像其的默认值是256,对于黑白二值图像,n的默认值是2。 imhist(X,map) 其功能是:计算和显示索引色图像X的直方图,map为调色板。 counts,ximhist() 其功能是:返回直方图数据向量counts或相应的色彩值向量x。,例:实现图像gray.bmp的灰度直方图程序清单: *I=imread(gray.bmp); imshow(I); figure,imhist(I); I=imread(rice.png); imshow(I); figure,imhist(I);,(2)histeq函数 MATLAB图像处理工具箱提供了用于直方图均匀化的函数histeq。