C++数字图像处理(3)—直方图均衡化

本文介绍了直方图均衡化,一种非线性灰度变换技术,用于增强图像对比度。通过统计图像像素值、归一化直方图、计算累积分布函数和灰度重映射实现算法。实验证明,该方法能有效提升图像清晰度,但在噪声抑制和白化控制方面有限,常与其他增强算法结合使用。
摘要由CSDN通过智能技术生成

1、算法原理

直方图均衡化是一种非线性的灰度变换,主要是用来拉伸图像的灰度动态范围,提高图像对比度。直方图均衡化的具体数学推导这里不做介绍,这里,我们只用“白话”的形式介绍一下累积分布函数(CDF)这个概念。说到分布,肯定就会牵涉到随机变量。假如,我们把一幅图像的像素值看做是随机变量,那么为了描述整副图像的灰度的分布情况,我们可以将每个灰度等级在图像中出现的次数统计出来(即直方图),将直方图除以像素总个数,即可得到每个灰度等级出现的概率(归一化直方图),也就是随机变量的分布函数。回过头来,累积分布函数中分布函数就理解了,那么,累积就好理解了。累积即累加,在得到归一化直方图后,累积分布函数即为归一化直方图的累加和。

2、算法实现

(1)、直方图统计

//函数名:HistogramEqual
//功能:直方图均衡化功能实现
//参数:
//pInputOutputData : 输入输出图像数据指针
//nWidth:图像宽度
//nHeight:图像高度
//备注:该函数仅支持8位单通道灰度图像进行处理。
void HistogramEqual(unsigned char* pInputOutputData, int nWidth, int nHeight)
{
	const int GRAY8_MAX = 256;

	//统计直方图
	float szHistogram[GRAY8_MAX] = {0.0};
	for (int m = 0; m < nWidth*nHeight; m++)
		szHistogram[pInputOutputD
  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值