- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9.6? 灰度均衡
本节介绍灰度均衡的原理和实现方法,它是增强图像的有效手段之一。
9.6.1? 基本原理
灰度均衡是以累计分布函数变换为基础的直方图修正法,它可以产生一幅灰度级分布概率均匀的图像。也就是说,经 过灰度均衡后的图像在每一级灰度上都具有相同数量的像素点,对应灰度直方图的每一级灰度具有相同的高度。灰度均衡同样也属于改进图像的方法,灰度均衡后的 图像具有最大的信息量。
图9-33显示了高亮度和低对比度图像经过灰度均 衡后的效果,可以看到灰度均衡对图像效果进行了重要的改进。从变换后图像的直方图来看,灰度分布更加均匀。
下面进行灰度均衡变换函数 的推导。
设转换前图像的密度函数为pr(r), 其中0≤r≤1;转化后图像的密度函数为ps(s),同样有0≤s≤1; 灰度均衡变换函数为s=T(r)。从概率理论可以得到如下公式:
图9-33? 利用灰度均衡处理图像
转化后图像灰度均匀分布,有ps(s)=1, 故:
两边取积分有:
这就是图像的累计分布函数。对于图像而言,密度函 数为:
其中x表 示灰度值,nx表示灰度级为x的像素个数,n表示图像总像素个数。
通过上面的公式就能推导出基于离散型的灰度均衡公 式:
其中y的取值范围是0至255。
9.6.2? 编程实现
1.灰度均衡函数
下面的GrayEqualize函数实现了灰度 均衡的功能:
/***************************************************************************
*?? 作用: 灰度均衡函数
*?? 参数:???????
*?????? pixel: ???? 原始像素数组
*?????? tempPixel: 保存变换后图像的像素数组
*?????? width: ???? 原始图像宽度
***************************************************************************/
void GrayEqualize(BYTE* pixel, BYTE* tempPixel, UINT width, UINT height)
{
??? // 灰度映射表
??? BYTE map[256];
??? long lCounts[256];
??? memset(lCounts, 0, sizeof(long) * 256);
??? // 计算各灰度值个数
??? for (UINT i = 0; i width * height; i++)
??? {
??????? int x = pixel[i * 4];
??????? lCounts[x]++;
??? }
??? // 保存运算中的临时值
??? long lTemp;
??? for (int i = 0; i 256; i++)
??? {
??????? lTemp = 0;
??????? for (int j = 0; j = i; j++)
??????????? lTemp += lCounts[j];
??????? map[i] = (BYTE)(lTemp * 255.0f / width / height);
??? }
??? // 变换后的值直接在映射表中查找
??? for (UINT i = 0; i width * height; i++)
??? {
??????? int x = pixel[i * 4];
??????? tempPixel[i*4] = tempPixel[i*4+1] = tempPixel[i*4+2] = map[x];
??????? tempPixel[i*4+3] = 255;
??? }
}
2.使用灰度均衡函数
打开“菜单栏”资源,在“点运算”菜单下添加一个 新项“灰度均衡”,其ID为ID_POINT_EQUALIZE,如图9-34所示。
图9-34? 在菜单栏资源上添加新项
最后添加响应函数,内容如下:
void CMagicHouseView::OnPointEqualize()
{
??? if (!m_bIsEditMode || m_nPos == -1)
??? {
??????? MessageBox(L请先打开图像文件,然后选择编辑模式!);
??????? return;
??? }
??? GrayEqualize(m_pImageBuffer, m_pImageTempBuffer, m_nPicWidth,
m_nPicHeight);
??? // 创建预览对话框
??? CPreviewDlg dlg;
??? dlg.m_nType = 2;??? // 对话框在关闭时提
您可能关注的文档
最近下载
- 发那科机器人DCS双重安全性检查功能说明书FANUC.pdf VIP
- 2024仁爱版七年级英语下册Unit 12 Lesson 1 Better Together每课时教学设计汇编(含8个教学设计).pdf VIP
- 泪液排出系统疾病的护理.pptx VIP
- 健康顾问:养生保健典藏本.pdf VIP
- 部编版历史八年级上册第一、二单元 测试卷(含答案).pdf VIP
- T_SCJA 9-2021_非道路车辆类型.pdf VIP
- iec61850icd模型文件属性详解.pdf VIP
- 05-03-光纤陀螺方案和技术 光纤传感原理课件.pdf VIP
- 2025江苏中职职教高考(烹饪类)讲义知识考点复习资料.pdf VIP
- 初中班会课件《突围—目标成就未来》.pptx VIP
文档评论(0)