网站大量收购独家精品文档,联系QQ:2885784924

图像处理上机实验报告.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图像处理上机实验报告

图像处理上机实验报告 姓名:沈浩 学号 班级: 030713 直方图均衡化。    1、灰度图像直方图处理方法   图像的直方图是图像处理中一种十分重要且实用的工具,它概括了一副图像的灰度级内容。从数学上来说图像直方图是图像各灰度值统计特性与图像灰度值的函数,它统计一幅图像中各个灰度级出现的次数或概率。实际上,灰度图像直方图是一个离散函数:   pf(fk)=nk/n k=0,1,…,L-1   其中fk为图像f(x,y)的第k级灰度,nk是图像f(x,y)中具有灰度值fk的象素个数,n是图像象素总数,L是图像的灰度级数。因为pf(fk)给出了对各个fk出现概率的一个统计,所以直方图提供了图像的灰度值分布情况。在灰度直方图坐标系中,横坐标表示图像中各个像素点的灰度级,纵坐标为各个灰度级上图像各个像素点出现的次数或概率。在对灰度数字图像的增强处理方法中,灰度均衡化和灰度规定化应用较为广泛,但后者需要根据具体的图像人为规定好适当的期望直方图才能得到满意的效果,如果期望直方图规定不当则处理效果会很差,因此后者的通用性不好。而前者在处理时只需要将当前的灰度分布重新均衡地分布于整个灰度区间即可,虽然对于某一幅特定的图象处理效果可能不及灰度规定化,但通用性却要好的多,对任意图象均可获得相当不错的处理效果。   2、灰度图像直方图均衡化算法分析   直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态范围从而可达到增强图像整体对比度的效果。设原始图像在(x,y)处的灰度为f,而改变后的图像为g,则对图像增强的方法可表述为将在(x,y)处的灰度f映射为g。在灰度直方图均衡化处理中对图像的映射函数可定义为:g = EQ (f),这个映射函数EQ(f)必须满足两个条件(其中L为图像的灰度级数):   (1)EQ(f)在0≤f≤L-1范围内是一个单值单增函数。这是为了保证增强处理没有打乱原始图像的灰度排列次序,原图各灰度级在变换后仍保持从黑到白(或从白到黑)的排列。   (2)对于0≤f≤L-1有0≤g≤L-1,这个条件保证了变换前后灰度值动态范围的一致性。   累计分布函数(cumulative distribution function,CDF)即可以满足上述两个条件,并且通过该函数可以完成将原图像f的分布转换成g的均匀分布。此时的直方图均衡化映射函数为:   gk = EQ(fk) = (ni/n) = pf(fi) ,       (k=0,1,2,……,L-1)   上述求和区间为0到k,根据该方程可以由源图像的各像素灰度值直接得到直方图均衡化后各像素的灰度值。在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分布,然后根据计算出的累计直方图分布求出fk到gk的灰度映射关系。在重复上述步骤得到源图像所有灰度级到目标图像灰度级的映射关系后,按照这个映射关系对源图像各点像素进行灰度转换,即可完成对源图的直方图均衡化。 算法的实现 1:程序代码: BOOL WINAPI Equalize(LPSTR lpDIBs, LONG lWidth, LONG lHeight) {  unsigned char* lpSource; // 指向源图像的指针  LONG lTmp; // 临时变量  LONG t,s; // 循环变量  BYTE bMaptable[256]; // 灰度映射表  LONG lDegreeCount[256]; // 灰度计数表  LONG lLineBytes; // 图像每行的字节数  lLineBytes = WIDTHBYTES(lWidth * 8); // 计算图像每行的字节数  // 重置计数为0  for (t = 0; t 256; t ++)  { lDegreeCount[i] = 0; }  for (t = 0;t lHeight; t ++)   {for (s = 0; s lWidth; s++)/ /计算各个灰度值的计数   { lpSource = (unsigned char *)lpDIBs + lLineBytes * t + s;   lDegreeCount[*(lpSource)]++; // 该灰度值的计数加1  } } for (t = 0; t 256; t++)// 计算灰度映射表 { lTmp = 0; // 初始为0  for (s = 0; sj = t ; s++)  { lTmp += lDegreeCount[s]; }   bMaptab

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档