如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第6卷第2期漯河职业技术学院学报Vo.l6No122007年4月JournalofLuoheVocationalTechnologyCollegeApr12007VC++编程实现直方图均衡化图像增强算法李志梅(桂林航天工业高等专科学校计算机系,广西桂林541004)摘要:对数字图像空间域增强方法中的直方图均衡进行分析,并用VC++6.0进行算法实现。实验表明,该程序可以快速、准确地对灰度图像进行均衡化,达到了使图像对比度增强、图像质量提高的预期目的。关键词:VisualC++;图像增强;直方图均衡化;DIB文件中图分类号:TN911173文献标识码:A文章编号:1671-7864(2007)02-0003-03y)处的灰度f映射为g。在灰度直方图均衡化处理0引言中,对图像的映射函数可定义为:g=EQ(f),这个图像增强是图像处理的最基本手段,它往住是映射函数EQ(f)必须满足两个条件(其中L为图像各种图像分析与处理时的预处理过程。直方图均衡的灰度级数):化也叫直方图均匀化,就是把给定图像的直方图分(1)EQ(f)在0[f[L-1范围内是一个单值增布改变成均匀分布的直方图,直方图均衡化算法是加函数。这是为了保证增强处理没有打乱原始图像图像增强空间域方法中的最常用、最重要的算法之的灰度排列次序,原图各灰度级在变换后仍保持从一。黑到白(或从白到黑)的排列。目前图像处理在算法实现中主要应用Matlab(2)对于0[f[L-1,有0[g[L-1,这个条仿真工具但运行效率较低且可移植性和,Matlab,件保证了变换前后灰度值动态范围的一致性。实用性均不太理想。VC++在程序运行效率、内存累计分布函数(cumulativedistributionfunction,使用的可控性和编程的灵活性上均具有较大的优CDF)可以满足上述两个条件,并且通过该函数可以势。本文主要对空间域增强法中的直方图均衡进行完成将原图像f的分布转换成g的均匀分布。此时分析并用VC++6.0进行算法实现。采用VC++的直方图均衡化映射函数为6.0集成开发环境,以达到算法能够快速有效地执行,同时增强算法的可移植性。gk=EQ(fk)=(ni/n)=pf(fi),kk灰度图像直方图均衡化算法分析gk=EQ(fk)=(ni/n)=Pf(fi)1Ei=0Ei=0直方图均衡化的基本思想是把原始图像的直方(k=0,1,2,,,,L-1)图变换为均匀分布的形式,这样就增加了像素灰度上述求和区间为0到k,根据方程可以由原始值的动态范围,从而达到了增强图像整体对比度的图像的各像素灰度值直接得到直方图均衡化后各像效果。设原始图像在(x,y)处的灰度为,f而改变后素的灰度值。在实际处理变换时,一般先对原始图的图像为g,则对图像增强的方法可表述为将在(x,像的灰度情况进行统计分析,并计算出原始直方图收稿日期:2007-01-14作者简介:李志梅(1972-),女,宁夏陶乐人,桂林航天工业高等专科学校讲师,湖南大学硕士研究生。4漯河职业技术学院学报2007年分布,然后根据计算出的累计直方图分布求出fk到LONGlLineBytes;//图像每行的字节数gk的灰度映射关系。在重复上述步骤得到原始图lLineBytes=WIDTHBYTES(Wlidth*8);//计像所有灰度级到目标图像灰度级的映射关系后,按算图像每行的字节数照这个映射关系对原始图像各点像素进行灰度转for(t=0;t<256;t++)换,即可完成对原始图像的直方图均衡化。{lDegreeCount[i]=0;}for(t=0;t<Hleigh;tt++)2算法的实现{for(s=0;s<Wlidth;s++)//计算各个利用VC++实现的灰度图像均衡化处理的流灰度值的计数程如图1所示。{lpSource=(unsignedchar*)lpDIBs+lLineBytes*t+s;lDegreeCount[*(lpSource)]++;//该灰度值的计数加1}}for(t=0;t<256;t++)//计算灰度映射表{lTmp=0;//初始为0for(s=0;sj<=t;s++){lTmp+=lDegreeCount[s];}bMaptable[t]=(BYTE)(lTmp*255/Hleight/Wlidth);//计算灰度值新的映射表}for(t=0;t<Hleigh;tt++)//每行图1灰度图像均衡化处理流程{for(s=0;s<Wlidth;s++)//每列{lpSource=(unsignedchar*)lpDIBs+根据上述的算法描述要实现灰度图像的直方,lLine