




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2002, Ver1.0任明武,南京理工大学计算机系31第二章第二章 图象增强图象增强( (Image Enhancement)Image Enhancement) 图像增强是指对图像的某些特征,如边缘、轮廓、对比度、亮度等进行强调或尖锐化,以便于观察或进一步分析处理。其手段无非是突出有价值的信息,抑止无用信息。 图像增强的主要方法可分为:基于点运算(空域)的方法、基于邻域运算(空域)的方法、基于变换域(频域)的方法等。 点运算的方法是对像素的灰度级进行变换,是一种点到点的变换,输出图象每个象素点的灰度值仅由对应的输入象素点的灰度值决定。可描述为:G(x,y)=F(g(x,y)。其中(x,y)
2、是象素的坐标,g(x,y)是象素(x,y)原来的灰度值,F是灰度值的变换函数, G(x,y)是象素(x,y)变换后(增强后)的灰度值。可以看出,点运算的关键是寻找合适的F,F的自变量是灰度值,与像素的坐标(x,y)没有任何关系。 邻域运算的方法是一种利用各象素及其邻近各象素的灰度值来判断该点是否含有噪声,并用适当的适当的方法消除噪声的方法。其自变量是坐标和灰度值。习惯上,将这部分内容单分一章讨论,并称之为图像平滑或图像滤波。我认为这种分法是合理的。2002, Ver1.0任明武,南京理工大学计算机系32 通俗地讲,线性变换即比例变换,即因变量和自变量之间存在固定的比例系数,该系数为常数。灰度变
3、换函数为线性函数: G=F(g)=ag+b 当a1时,输出图象对比度增大;当a1时,输出图象对比度降低;当a=1,b0时,仅使输出图象的灰度值上移或下移,其效果是使整个图象更亮或更暗。(举例) 基于变化域的方法属于频率域的处理方法,主要指低通和高通滤波。低通滤波用来消除噪声,高通滤波用来提升边缘、轮廓。实现过程是使用某种变换(如傅立叶变换,余弦变换、小波变换等),将图像变换到某个变换域(频域)内,对图像的变化系数值进行运算,即作某种修正,然后通过逆变换得到增强后的图像。2.1 线性变换和分段线性变换线性变换和分段线性变换( (linear Stretch)linear Stretch) 我们在
4、本章中主要讲述点运算,包括: 线性变换和分段线性变换线性变换和分段线性变换 非线性变换非线性变换 直方图均衡化直方图均衡化 直方图规定化直方图规定化2002, Ver1.0任明武,南京理工大学计算机系33 一般情况下,线性变换都是将某个较小的灰度范围拉伸到较大的灰度范围。因此常称为灰度拉伸。比如,在曝光不足或过度的情况下,图像的灰度可能局限在一个很小的范围内,此时需要线性拉伸。 设原图象的灰度变化范围为gmin , gmax,通过一个函数F,使范围扩展到Gmin, Gmax,则有线性变换:)(minminmaxminmaxminggggGGGG 即通过两个点(gmin, Gmin)和(gmax
5、, Gmax)的直线方程。例:200 150 100 50200 150 100 504 3 2 14 3 2 1 的方程为:GG = 50gFGmaxGmingminggmax02002, Ver1.0任明武,南京理工大学计算机系34GGFF2552556025518025500 观察下面方程分别实现的功能:gGg0255 分段线性拉伸是将图像区间分成两段乃至多段作线性变换。在感兴趣的区间,斜率大于1,突出有价值的信息;在不感兴趣的区域,斜率小于1 ,抑止无用信息。2.2 非线性变换线性变换 有时图像中灰度的动态范围太大,以至于计算机的显示器难以显示出(计算机只能表述256级灰度),比如CT
6、片在计算机的显示器上就难以显示,通常采用取对数的方法加以调整,即:)1lg(gcG2002, Ver1.0任明武,南京理工大学计算机系35 由于点运算在处理与显示中的重要性,图象处理系统都有专门的处理硬件与之对应,以便能够以视频速率实时完成操作,这样的部件称为查找表( LUT (LookUp Table))。通常图象处理系统都有成组的查找表供编程使用。在通用的计算机上,没有查找表可以直接利用,通过软件逐点处理来实现,这时查找表仅表现为一种数据结构。 因为在数字图像处理中,自变量g的值域是有限的,比如通常的灰度图像中,0=g=255,最多只有256种取值,因此,对于实现任意的G=F(g)而言,都
7、可以使用查表的方法实现,具体如下: BYTE LUT256; BYTE *pCur,*pEnd=Img+ImgSize; for(g = 0;g 256;g +) LUTg = F(g ); for( pCur =Img ; pCur pEnd;) *(pCur+) = LUT*pCur; 如果写成如下的形式就太费时间了 for( i = 0,pCur =Img ; i Imgsize; i +) *(pcur+) =F(*pcur); 因为在使用LUT时,F函数仅被计算256次,而在不使用时要计算ImgSize次,当图像为512x512时,F要被计算262144次。 其中,c是比例系数,式中
8、的1和绝对值是避免对负数和0取对数。2.3线性和线性和非线性变换的编程线性变换的编程2002, Ver1.0任明武,南京理工大学计算机系36注1:图像的特点和LUT表的使用 图像的特点:数据量特别大,灰度值的范围非常小。因此,任意的以图像灰度为自变量的函数,都可以使用查表的方法实现。查找表实际上是一种以空间换时间的策略。思考1:G(x,y)=F(a(x,y)-b(x,y)=|a(x,y)-b(x,y) |的使用LUT表实现。其中,a(x,y),b(x,y)分别是图像A和B中的象素(x,y)的灰度值。BYTE LUT511,*absLUT; absLUT=LUT+255; for(i=0;i25
9、6;i+) absLUTi=absLUT-i=i;注2:图像的亮度和对比度 图象亮度(brightness):即图象矩阵的平均值,其值越小越暗。NMyxgbrighnessMyNx1010),( 图象的对比度(contrast):即图象矩阵的均方差(标准差)。对比度越大,图像中黑白反差越明显。NMbrighnessyxgcontrastMyNx10102),(2002, Ver1.0任明武,南京理工大学计算机系37思考2:如何快速计算图像的亮度和对比度。例1:通过点运算使得图像的亮度为u0和对比度为d0解:设当前图像的亮度和对比度分别为u1和对比度为d1,则可分3步完成:Step.1 将图像的
10、亮度调整为0。 G1=g-u1 可知,在调整过程中,均方差不变,仍为d1 。Step.2 将图像的均方差调整为d0 G2=G1*d0/d1 可知,在调整过程中,均值不变,仍为0。Step.3 将图像的均值调整为u0 。 G3=G2+u0归纳Step.13得到:G=(d0/d1) *( g-u1 ) + u0 2002, Ver1.0任明武,南京理工大学计算机系382.4.1 直方图的基本概念直方图的基本概念 直方图(histogram)是灰度级的函数,它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率。如下图所示,灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频率,是图象
11、的最基本的统计特征。2.4 直方图均衡化直方图均衡化( (Histogram Equalize)Histogram Equalize)2002, Ver1.0任明武,南京理工大学计算机系39 从概率的观点来理解,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数(pdf (probability density function)p(r),而概率分布P(r)函数就是直方图的累积和,即概率密度函数的积分,如右图所示:rdrrprP0)()(drrdPrp)()(2002, Ver1.0任明武,南京理工大学计算机系40 若直接从代表每种灰度r的象素数目的直方图H(r)来观察,常有如下
12、的表示:rdrrHrA0)()(25500)(drrHA00/)()()(AdrrdAArHrprdrrHArP00)(1)(概率密度概率分布函数图像面积若记图像中象素的总数为n, 灰度为rk的像素总数为nk ,则有:象素分布函数nnrpkk)(kiiknnrP0)(2002, Ver1.0任明武,南京理工大学计算机系41 直方图的计算是很简单的,依据定义,若图象具有L(通常L=256,即8位灰度级)级灰度,则大小为MxN的灰度图象f(x,y)的灰度直方图hist0L-1可用如下计算获得: Step.1 初始化 histk=0 ; k=0,L-1 Step.2 统计 histg(x,y)+ ;
13、 x, y =0,M-1, 0,N-1 unsigned long hist256; unsigned char *pCur; for(int i=0;i256;i+) histi=0; for(i=0,pCur=Img;iImgSize;i+) hist*(pCur+)+; 直方图具有很多的优点,直方图能反映图象的概貌,比如图像中有几类目标,目标和背景的分布如何;通过直方图可以直接计算图像中的最大亮度、最小亮度、平均亮度、对比度以及中间亮度等。使用直方图可以完成图像分割、目标检索等。因为不同的目标具有不同的颜色分布。使用归一化直方图作目标匹配,还不易受到目标翻转和目标大小变化的影响。在图像查
14、询的系统中,直方图有很大的应用,用它存储目标的特征占有空间小,且执行速度快。 其缺点是:因其没有记录位置信息,不同的图像会具有相同或相近的直方图。2002, Ver1.0任明武,南京理工大学计算机系42例1:观察下面那个直方图最可能是一个文档图像的直方图例2:通过直方图求图像中的亮度的最大、最小和中值。for(g=0;g=0;g-) if (histg) break;maxGray=g;for(g=sum=0;g=ImgSize/2) break; medGray=g;(注:N个数据进行排列后得到一个有序序列A0An-1, 其中An-1/2称为中值)2002, Ver1.0任明武,南京理工大学
15、计算机系43例3:通过直方图求图像的亮度和对比度。for(g=sum=0;g256;g+) sum+=g*histg;brightness=1.0*sum/ImgSize;for(g=sum=0;g256;g+) sum+= (g-brightness)* (g-brightness)*histg;contrast=sqrt(sum/ImgSize);2.4.2 直方图均衡化算法直方图均衡化算法 熵理论(Entropy)是信息量的度量,其定义为:ipipHlog 其中, pi 是符号 i 出现的概率。 在图象中,rprgpHlog2550, pr 是灰度级r 出现的概率。 可以证明,当p0=p
16、1=p2=p255=1/256时,H取最大值,即图象信息量最大。 2002, Ver1.0任明武,南京理工大学计算机系44 均衡化原理:根据熵理论可知当H0,H1,Hn-1相等时,图象信息量最大均衡化的目的是使每个Hi都相等,即把原始图的直方图变换为均匀分布的形式,这样就增加了象素值的范围,增强了图象的对比效果。 算法描述:令A0是图象面积,N是有效亮度级的个数,对于一个完全平坦的直方图来说,应该在每一个亮度级上A0/N 个象素。设g是原来的灰度级,G是变换后的灰度级,则可描述为:G=F(g)。但实际应用中,有两种情况需要考虑: (1)多个 至一个:若有连续n个灰级的频数之和级等于A/N, 则
17、必导致它们合并成一个灰度级。 (2)一个到多个:若有某个灰级的频数是A/N的R倍,则必须将其分为R个不同的灰阶级,每一个上都是A/N。 情况(1)导致的灰度级的合并是简单的(是多到一的映射关系),但情况(2)时的分解是不容易的(是一到多的关系) ,因为确实难以判定g在图像的不同位置,到底如何分解才是最好。假设灰度级g要映射到GL, GR中,有 3种规则可以遵循: (1)规则1:总是将g映射为(GL+GR)/2。 (2)规则2:随机分配出GL, GR中的一个灰度级 。2002, Ver1.0任明武,南京理工大学计算机系45 (3)规则3:检查该象素的近邻象素的灰度平均值u,并分配给它一个GL,
18、GR中最接u的灰度级Gk 。 规则1是简单的,满足点运算的原则。规则2使用随机数(函数),执行速度慢,且含义不明显。规则3使用了邻域运算,其输出与象素的位置有关系,不是点运算。在实际应用中,一般仅使用规则1。 由此可以看出,均衡后的图像并不均衡,因为“只合并,不分解”;但拉大了反差,将拥有特别多的像素的灰度级变得与前与后的灰度级拉开了距离。比如1 1,1,2 2,3,4,5,6,3 7,7变成1 1,2 4,3 7。从而使得原灰度级为2的像素在均衡后的图像中特别显眼。 关于直方图均衡化的数学描述是很多的,下面我们给出一个简单的、易懂的描述。设变换前的图像的直方图为H1,要求变换后得到的图像的直
19、方图为H2。如果将原始灰度级g被变成灰度级G,则必须满足:GigiiHiH0201)()( 这是非常显然的,比如考试成绩的前5名在变换后仍然为前5名;又比如,要使1班的成绩和2班的一样,则必须将1班的第五名的成绩g变成2班的第五名的成绩G,即他们俩之前都有5个人。2002, Ver1.0任明武,南京理工大学计算机系46 在图像均衡化后,H2要求是每个灰度级上都有A0/N个象素,显然有:NAGiHiHGigi00201)()( 从而得到G=F(r):)()(0010gAANiHANGgi A(r)是累积函数。得到算法如下: Step.1 计算累积函数A(r)如下: for(g=0;g256;g+
20、) Ag=0; if (Hist0) N=1; else N=0; for(g=1,A0=Hist0;g256;g+) Ag=Ag-1+Histg; if (Histg) N+; /统计有效的灰度级的个数 Step.2 计算映射关系 for(g=0;g256;g+) LUTg=N*Ag/A255; / A0=A255 Step.3 均衡化操作 for( i = 0,pCur =Img ; i Imgsize; i +) *(pCur+) = LUT(*pCur);2002, Ver1.0任明武,南京理工大学计算机系47 在整个计算过程中,我们使用的不是归一化直方图和归一化灰度,这样在上面的算法
21、完成后,得到的最大灰度为N,而不是255。因此在Step.2中,需要构造线性拉伸。 Step.2 计算映射关系 for(g=0;g256;g+) LUTg=(255.0/N)*N*Ag/A0; 即 Step.2 for(g=0;g256;g+) LUTg=255*Ag/A0; 上面的算法已经是大家和很多教科书上采用的,但它没有使用规则1将g (GL +GR )/2,而是将g GR。导致与前个灰度级(GL-1)拉开了距离,而与后一个灰度级(GR+1)靠的很近。比如1 1,1, 2 2, 3, 4, 5,6,3 7,7变成1 1,2 6(4),3 7。具体算法,大家自己写。2002, Ver1.0任明武,南京理工大学计算机系480 1 2 3 4 5671/211/144/71/7例: 1/7 1/7 1/7 1/7 1/71/14, 1/141/21, 1/21, 1/21f灰度级g新灰度区间GL,GR12345670, 00, 00, 01, 11, 12, 3, 4, 56, 60123456666672002, Ver1.0任明武,南京理工大学计算机系4912345670001146LUT1 = 0LUT2 = 0LUT3 = 0LUT4 = 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论