直方图均衡化

来源:互联网 发布:联盟与协会的区别知乎 编辑:程序博客网 时间:2024/05/22 07:53

一般情况下,如果图像的灰度分别集中在比较窄的区间,从而引起图像细节的模糊,为了使图像细节清晰,并使目标得到突出,达到图像增强的目的,可通过改善各部分亮度的比例关系,即通过直方图的方法来实现.直方图的方法是以概率论为基础的.常用的方法有直方图均衡化和直方图规定化.

    直方图均衡化

直方图均衡化又称直方图平坦化,是将一已知灰度概率密度分布的图像经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像.其结果是扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果.

直方图均衡化实现函数 

Histgram(imgData,hist,xsize,ysize);//统计灰度值
        HistProbabilityCount(p,c,hist,xsize,ysize);//计算频度
        StatImageRange(imgData,xsize,ysize,&fmax,&fmin);//图像数据最大最小值统计
        ImageEQ(imgData,newImageData,c,fmax,fmin,xsize,ysize);  //常用的图像均衡化方法  效果可以

/************************************************************************/
/*函数功能:求解图像均衡化
void ImageEQ(
        LPBYTE image_in,
  LPBYTE image_out,
  double c[256],
  int fmax,
  int fmin,
  int xsize,
  int ysize
  )
*/
/************************************************************************/
void ImageEQ(LPBYTE image_in,LPBYTE image_out,double c[256],int fmax,int fmin,int xsize,int ysize)
{
 int i,j;
 for (i=0;i<ysize;i++)
 {
  for (j=0;j<xsize;j++)
  {
   *(image_out+i*xsize+j)=(BYTE)(c[*(image_in+i*xsize+j)]*(fmax-fmin)+fmin);  //均衡公式
  }
 }
}