直方图的学习(2)

                                                                          直方图的学习(2)——灰度直方图均衡化


       摘要直方图均衡化主要应用于灰度的变换,均匀概率密度的图像,扩展像素的取值动态范围,是图像增强处理的重要方法。

直方图均衡化是一种通过重新均匀地分布各灰度值来增强图像对比度的方法,经过直方图均衡化的图像对二值化阈值选取十分有

利。简单地说,直方图均衡化就是把一个图中密集的区域均衡到其他区域。


关键字:cvEqualizeHist

函数功能:直方图均衡化,该函数能归一化图像亮度和增强对比度

函数原型:

/* equalizes histogram of 8-bit single-channel image */

CVAPI(void)  cvEqualizeHistconst CvArrsrcCvArrdst );

函数说明:

该函数采用如下法则对输入图像进行直方图均衡化:

src输入的 8-比特 单信道图像
dst输出的图像与输入图像大小与数据类型相同
函数 cvEqualizeHist 采用如下法则对输入图像进行 直方图均衡化
1:计算输入图像的直方图 H
2:直方图 归一化,因此直方块和为255
3:计算直方图积分
4:采用H'作为查询表:dst(x,y)=H'(src(x,y))进行 图像变换

   

      其方法步骤和部分代码如下:


      方法步骤为:   画出源图像和目标图像→计算直方图→绘制srcImg直方图→绘制dstImg直方图


     部分代码: 

       //画源图像和目标图像

      equalizeHist(srcImg, dstImg);

      

      //计算直方图

calcHist(&srcImg, nimages, &channels, mask, histImg_src, dims, &histSize, ranges);//srcImg直方图  
      calcHist(&dstImg, nimages, &channels, mask, histImg_dst, dims, &histSize, ranges);//dstImg直方图


      //计算出的直方图中的最小值和最大值 

     minMaxLoc(histImg_src, &minValue, &maxValue);

 

      //绘制dstImg直方图

       for (int i = 0; i < histSize; i++)//遍历histImg  
{
float binValue = histImg_src.at<float>(i);//得到histImg中每一分组的值  
cout << "i: " << i << " ,binValue: " << binValue << endl;
float realValue = (binValue / maxValue)*height;//归一化数据,缩放到图像的height之内  
cout << "i: " << i << " ,realValue: " << realValue << endl;
//用直线方法绘制直方图
line(histShow_src, Point(i, height - 1), Point(i, height - 1 - realValue), Scalar(255, 0, 0), 1);
}



运行结果如下:










             注:图一是原图,第二张图由于运行结果中图片太大,右边的截图不完整。



             参考文献: cvEqualizeHist-百度百科

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值