直方图均衡法,图像增强算法实现:
//功能:使用直方图均衡算法,实现图像的增强
//参数:
// pData :图像数据(一个像素点使用2个字节表示,即WORD的长度,灰度级只使用低十位)
// m_iWidth :图像的宽度
// m_iHeight :图像的高度
//返回值:空(由于pData是指针,所以当对pData处理完,相当于返回处理后的pData)
void EnhanceContrast(WORD *pData, int m_iWidth,int m_iHeight)
{
//获取图像像素值
float probability[1024],newgray[1024],grayNum[1024];
int i,j;
for(i=0;i<1024;i++)//清空三个数组;
{
grayNum[i]=0.0f;
probability[i]=0.0f;
newgray[i]=0.0f;
}
//grayNum[]存放图象各个灰度级出现的次数;
int Height=m_iHeight;
int Width=m_iWidth;
for(i=0;i<Height;i++)
{
for(j=0;j<Width;j++)
{
grayNum[pData[Width*i+j]]++;
}
}
//probability[]存放图像各个灰度级的出现概率;
for(i=0;i<1024;i++)
{
probability[i]=grayNum[i]/(Width*Height);
}
//newgray[]存放各个灰度级之前的概率和,用于直方图变换;
for(i=0;i<1024;i++)
{
for(j=0;j<=i;j++)
{
newgray[i]+=probability[j];
}
}
//直方图变换;
for(i=0;i<Height;i++)
{
for(j=0;j<Width;j++)
{
pData[Width*i+j]=(newgray[pData[Width*i+j]]*255+0.5);
}
}
return;
}