《基于直方图处理的图像的增强方法研究.》由会员分享,可在线阅读,更多相关《基于直方图处理的图像的增强方法研究.(16页珍藏版)》请在金锄头文库上搜索。
1、基于直方图处理的图像的增强方法研究 中文摘要通过直方图均衡算法,使输出图像直方图近似服从均匀分布,在此算法基础上利用小波变换,对图像进行二维小波分解,突出图像中的有用信息,消减图像中的无用信息,使图像中特定信息得倒增强,并提高图像的对比度,提高图像质量。直方图规定化是基于自适应直方图规定化函数引导的动态分层图像增强算法,在对比指纹图像的灰度直方图增强的技术的基础上,针对均衡化算法的不足和现有直方图规定化算法中映射规则计算量大的情形,提出一种改进的规定化算法。直方图规定化可以将图像的直方图转化为需要的形状,有目的地增加某个灰度区间的图像,使用户获得感兴趣的信息。关键词:图像增强,直方图均衡化,小
2、波变换,直方图规定化Abstract Through the histogram equalization algorithm, make the output image histogram approximation obey uniform distribution. Based on the algorithm,using the imagine of the two dimensional wavelet decomposition, highlight the useful information and cut the useless information in the ima
3、gine. The imagine of a specific information will be enhanced, and the contrast of imagine will be improved , then the imagine quality will be improved.Key words: imagine enhancement; histogram equalization; wavelet transform一:引言图像变换是数字图像处理中的一种综合变换,如直方图变换。使用C语言对位图文件的头信息进行读取,从而对图像进行直方图均衡化处理和灰度变换。大多数原始
4、的遥感图像由于其灰度分布集中在较窄的范围内,使图像的细节不够清晰,对比度较低。为了使图像的灰度范围拉开或使灰度均匀分布,从而增大反差,使图像细节清晰,以达到增强的目的,通常采用直方图均衡化及直方图规定化两种变换。二:原理与方法直方图均衡化(Histogram Equalization)又称直方图平坦化,实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值的数量大致相等。这样,原来直方图中间的峰顶部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较平的分段直方图:如果输出数据分段值较小的话,会产生粗略分类的视觉效果。直方图均衡化理论假设灰度级为归一化至范围
5、0,1内的连续量,并令Pr (r)表示某给定图像中的灰度级的概率密度函数(PDF),其下标用来区分输入图像和输出图像的PDF。假设我们对输入灰度级执行如下变换,得到(处理后的)输出灰度级s:S=T(r)=0r Pr(w)dw式中w 是积分的哑变量。可以看出,输出灰度级的概率密度函数是均匀的,即a.当0s1 时,Ps(s)=1b.当s 为其他时,Ps(s)=0换言之,前述变换生成一幅图像,该图像的灰度级较为均衡化,且覆盖了整个范围0,1。灰度级均衡化处理的最终结果是一幅扩展了动态范围的图像,它具有较高的对比度。该变换函数只不过是一个累积分布函数(CDF)。直方图均衡化算法直方图均衡化算法将原图像
6、的直方图改变为在整个灰度范围内基本均匀地分布的形式,由此扩大了像素灰度的动态范围,从而增强了图像的对比度。直方图均衡化算法步骤为:1) 给出原始图像的所有灰度级(k=0,1,L-1)。2) 统计原始图像各灰度级的像素数。3) 根据原图像,计算灰度直方图: (k=0,1,L-1) 式中,为总像素数,为灰度级的像素数。4) 计算原始图像的累积直方图: (,k=0,1,L-1) 5) 取整计算: 6) 确定映射关系: 7) 统计新直方图各灰度级的像素数目。8) 计算新的直方图:可以用概率密度函数来表示一幅图象的灰度分布。其中,r为灰度值,的值为概率密度。实验要将原始图象R通过转换函数转换为具有规定概
7、率密度函数最终增强图象G。设原图象的概率密度函数为。变换后的图象的概率密度函数=规定的概率密度函数。由随机变量函数的概率密度公式可以得到:设 , 则有 所求得的就是从原始图象到最终增强图象的转换函数。上述推导得到的的表达式适用于在灰度级和空间上都连续的图象。为达到数字图象处理的目的,必须对上述表达式进行近似,这种离散形式的近似可以导致图象灰度级的丢失。设图象有256灰度级,该近似方法如下:, 其中,为灰度值为r的像素总数,n为总像素数。r=1,2,255。的计算方法相同。在附录所给出的源代码中,转换函数由数组SG256实现。PSNR值,即峰值信噪比,可以作为衡量输出图象的客观保真度的标准。设图
8、象有256灰度级,则它的计算公式如下:g(x,y)和f(x,y)分别代表处理后的图象和原始图象。显然,PSNR值越大,图象的保真度越高。整个过程的处理框图:读入原始图象计算原始图象的直方图存入H256并将数据输出计算原始图象的均衡直方图存入S256并将数据输出生成并保存均衡图象计算原始图象至均衡图象的PSNR值计算规定的直方图存入G256 计算规定的直方图的均衡直方图存入GS256并将数据输出计算从原始图象到最终增强图象的转换函数生成并保存最终增强图象计算最终增强图象的直方图GR256并将数据输出计算原始图象至最终增强图象的PSNR值三:仿真实验1 直方图均衡化实验过程及结果5、主要代码voi
9、d CImageView:OnDraw(CDC* pDC)CImageDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereif(m_dib.m_bLoaded=true) /判断是否加载图像/获取图像宽和高int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereif(m_dib.m_bLoaded=t
10、rue)int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();m_dib.ShowDIB(pDC,10,10,nw,nh,m_dib.m_pDIBData,m_dib.m_pBMI);m_dib.ShowDIB(pDC,400,10,nw,nh,m_dib.m_pDumpDIBData,m_dib.m_pBMI);if(m_bHist=true)/绘画直方图CString str;int nh=m_dib.GetDIBHeight();int i;/ 绘制坐标轴pDC-MoveTo(10,nh+20); /(10,nh+20 )是直方图的
11、左上角坐标 / 垂直轴pDC-LineTo(10,nh+200);/(10,nh+200 )是直方图的左下角坐标 / 水平轴pDC-LineTo(310,nh+200);/(310,nh+200 )是直方图的右下角坐标 / 写X轴刻度值str.Format(0);pDC-TextOut(10, nh+200+10, str);str.Format(50);pDC-TextOut(60, nh+200+10, str);str.Format(100);pDC-TextOut(110, nh+200+10, str);str.Format(150);pDC-TextOut(160, nh+200+
12、10, str);str.Format(200);pDC-TextOut(210, nh+200+10, str);str.Format(255);pDC-TextOut(265, nh+200+10, str);str.Format(原图直方图归一化);pDC-TextOut(100, nh+230+10, str);/ 绘制X轴刻度for ( i = 0; i MoveTo(i + 10, nh+200-2);pDC-LineTo(i + 10, nh+200+2);else/ 10的倍数pDC-MoveTo(i + 10, nh+200-2);pDC-LineTo(i + 10, nh+
13、200+2);/ 绘制X轴箭头pDC-MoveTo(305,nh+200-5);pDC-LineTo(310,nh+200);pDC-LineTo(305,nh+200+5);/ 绘制y轴箭头pDC-MoveTo(10,nh+20);pDC-LineTo(5,nh+20+5);pDC-MoveTo(10,nh+20);pDC-LineTo(15,nh+20+5);int max=0;for(i=0;imax)max=m_yuantui;for(i=0;iMoveTo(10+i,nh+200);pDC-LineTo(10+i,nh+200-(m_yuantui*160/max);/*/TEST 第二个直方图if(m_bHist=true)/绘画直方图CString str;int nh=m_dib.GetDIBHeight();int i;/ 绘制坐标轴pDC-MoveTo(160+nw,nh+20); /(10,nh+20 )是直方图的左上角坐标 / 垂直轴pDC-LineTo(160+nw,nh+200);/(10,nh+200 )是直方图的左下角坐标 / 水平轴pDC-LineTo(460+nw,nh+200);/(310,nh