直方图均衡化—图像增强

void HistogramEqualization(unsigned char *pGrey,int nWidth, int nHeight)
{
	unsigned char* pData,pInResult[256];
	int			   pHist[256],i,j,nMulti;
	float		   pIntensity[256];
	pData = (unsigned char*)malloc(nWidth*nHeight*sizeof(unsigned char));
	memcpy(pData, pGrey, nWidth*nHeight*sizeof(unsigned char));
	memset(pHist, 0, sizeof(int)*256);
	nMulti = nWidth * nHeight;

	//统计原始输入图像各灰度级的像素数目
	for (i=0; i<nMulti; i++)
	{
		pHist[pData[i]]++;
	}
	//计算原始图像直方图,即各灰度级的概率密度,并计算累积分布函数
	memset(pIntensity, 0, sizeof(float)*256);
	pIntensity[0] = (float)pHist[0] / (float)nMulti;
	for (i=1; i<256; i++)
	{
		pIntensity[i] = (float)pHist[i] / (float)nMulti;
		pIntensity[i] += pIntensity[i-1];
	}
	//计算最后的输出灰度级

	for (i=0; i<256; i++)
	{
		pInResult[i] = (int)(255*pIntensity[i] + 0.5);
	}

	//修改原图像的灰度级,获得输出图像,其直方图为近似均匀分布
	for(i=0; i<nMulti; i++)
	{
		pGrey[i] = pInResult[pData[i]];
	}

	free(pData);

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值