《图像处理系列----灰度图像的直方图均衡化》

《图像处理系列----灰度图像的直方图均衡化》

分类: 图像处理 178人阅读 评论(1) 收藏 举报

此文章属于原创文章,转载请注明:http://blog.csdn.net/iamsheldon   谢谢!!!大笑

首先,在进行程序设计之前我们来了解一下的直方图均衡化的原理。





其中最重要的是最后一条公式





以下是实现程序:


  1. /******************************************************* 
  2. *函数功能:灰度图像均衡化  
  3. *参数:  gray_in指向输入数据的指针   
  4.          gray_out指向输出数据的指针 
  5.          size 为图片的大小 
  6. *说明: gray_in与gray_out可以相等  
  7. *返回值:无  
  8. *********************************************************/  
  9. void  zjGrayHistQual(BYTE *gray_in,BYTE *gray_out,Size size)  
  10. {  
  11.   int i;  
  12.   int j;  
  13.   int height;  
  14.   int width;  
  15.   long hist[256];  
  16.   long pixelnum=0;  
  17.   long nnum=0;  
  18.   double pr;  
  19.   height=size.height;  
  20.   width=size.width;  
  21.   pixelnum=height*width;  
  22.   //直方图初始化   
  23.   for(i=0;i<256;i++)  
  24.    hist[i]=0;  
  25.   //计算图像的直方图  
  26.   for(i=0;i<height;i++)  
  27.    for(j=0;j<width;j++)  
  28.    {  
  29.      ++hist[*(gray_in+i*width+j)];    
  30.    }   
  31.   //计算变换后的灰度值   
  32.   for(i=0;i<256;i++)  
  33.   {  
  34.      nnum+=hist[i];  
  35.      pr=(double)nnum/pixelnum;  
  36.      hist[i]=(BYTE)255*pr;  
  37.   }  
  38.   //根据结果,替换原图像的灰度  
  39.   for(i=0;i<height;i++)  
  40.    for(j=0;j<width;j++)  
  41.    {  
  42.      *(gray_out+i*width+j)=hist[*(gray_in+i*width+j)];  
  43.    }   
  44. }   

下面是效果:





说明:左边是处理前,右边是处理后。

大家看效果是不是很明显呢,还可以偷笑,这种处理一般出现在图像处理前期,为后续的
的处理 如边缘提取之类的做准备。
   文章到此结束,其实我也是一只菜鸟,刚刚入门而已,所以献丑,希望大家可以交流交流。我们共同进步,为解放世界做贡献(开玩笑啦)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值