- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图像处理上机实验报告
姓名:沈浩
学号班级:030713
直方图均衡化。
1、灰度图像直方图处理方法
图像的直方图是图像处理中一种十分重要且实用的工具,它概括 了一副图像的灰度级内容。从数学上来说图像直方图是图像各灰度值 统计特性与图像灰度值的函数,它统计一幅图像中各个灰度级出现的 次数或概率。实际上,灰度图像直方图是一个离散函数:
pf (fk) =nk/n k=0, 1,…,LT
其中fk为图像f(x, y)的笫k级灰度,nk是图像f (x, y)中具 有灰度值fk的象素个数,n是图像象素总数,L是图像的灰度级数。 因为pf(fk)给岀了对各个fk出现概率的一个统计,所以直方图提供 了图像的灰度值分布情况。在灰度直方图坐标系中,横坐标表示图像 中各个像素点的灰度级,纵坐标为各个灰度级上图像各个像素点出现 的次数或概率。在对灰度数字图像的增强处理方法中,灰度均衡化和 灰度规定化应用较为广泛,但后者需要根据具体的图像人为规定好适 当的期望直方图才能得到满意的效果,如果期望直方图规定不当则处 理效果会很差,因此后者的通用性不好。而前者在处理时只需要将当 前的灰度分布重新均衡地分布于整个灰度区间即可,虽然对于某一幅 特定的图象处理效果可能不及灰度规定化,但通用性却要好的多,对 任意图象均可获得相当不错的处理效果。
2、灰度图像直方图均衡化算法分析
直方图均衡化的基本思想是把原始图的直方图变换为均匀分布 的形式,这样就增加了象素灰度值的动态范围从而可达到增强图像整 体对比度的效果。设原始图像在(x, y)处的灰度为f,而改变后的图 像为g,则对图像增强的方法可表述为将在(x, y)处的灰度f映射为 go在灰度直方图均衡化处理中对图像的映射函数可定义为:g = EQ (f),这个映射函数EQ (f)必须满足两个条件(其中L为图像的灰度级 数):
EQ(f)在0WfWL-l范围内是一个单值单增函数。这是为了保 证增强处理没有打乱原始图像的灰度排列次序,原图各灰度级在变换 后仍保持从黑到口(或从口到黑)的排列。
对于OWfWL-l有OWgWL-l,这个条件保证了变换前后灰 度值动态范围的一致性。
累计分布函数(cumulative distribution function, CDF)即可 以满足上述两个条件,并且通过该函数可以完成将原图像f的分布转 换成g的均匀分布。此时的直方图均衡化映射函数为:
gk = EQ(fk) = (ni/n) = pf(fi),
(k=0, 1, 2,……,L-l)
上述求和区间为0到k,根据该方程可以由源图像的各像素灰度 值直接得到直方图均衡化后各像素的灰度值。在实际处理变换时,一 般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分 布,然后根据计算出的累计直方图分布求出fk到gk的灰度映射关系。 在重复上述步骤得到源图像所有灰度级到目标图像灰度级的映射关 系后,按照这个映射关系对源图像各点像素进行灰度转换,即可完成 对源图的直方图均衡化。
算法的实现
1:程序代码:
BOOL WINAPI Equalize(LPSTR lpDIBs, LONG lWidth, LONG lHeight) {
unsigned char* IpSource; //指向源图像的指针
LONG ITmp; //临时变量
LONG t, s; //循环变量
BYTE bMaptable[256]; // 灰度映射表
LONG IDegreeCount [256]; // 灰度计数表
LONG ILineBytes; //图像每行的字节数
ILincBytcs = WIDTIIBYTES(lWidth * 8) ; // 计算图像每行的字节数 //重置计数为0
for (t = 0; t 256; t ++)
{ IDegreeCount[i]二 0; }
for (t = 0;t lHeight; t ++)
{for (s = 0; s lWidth; s++)/ /计算各个灰度值的计数
{ IpSource = (unsigned char *)lpDIBs + ILineBytes * t + s;
IDegreeCount [* (IpSource) ] ++: // 该灰度值的计数加 1
for (t = 0; t 256; t++)//计算灰度映射表
{ ITmp = 0; // 初始为 0
for (s = 0; sj 二 t ; s++)
{ ITmp +二 IDegreeCount[s]; } bMaptable[t] = (BYTE) (ITmp * 255 / lHeight / lWidth) ;// 计 算灰度值新的映射表
}
for(t 二 0; t lHeigh
原创力文档


文档评论(0)