opencv中直方图均衡函数cv::equalizeHist()的使用!!严格用程序进行了验证!

最近开始学习OPENCV,通过验证书中的例程,从网上寻找别人的例程和解释,我发现人们多半都是不负责的,各种转载!你们有没有真正验证过????????


先给一个别人关于cv::equalizeHist()的使用  找了很多博客 都是如下写的  然后给个例程! 可是你真的有验证过嘛?你得到的均衡的直方图真的能按照这个公式算出来嘛???

qualizeHist

灰度图象直方图均衡化

void cvEqualizeHist( const CvArr* src, CvArr* dst );

src

输入的 8-比特 单信道图像

dst

输出的图像与输入图像大小与数据类型相同

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


1. 计算输入图像的直方图 H

2.  直方图归一化,因此直方块和为255

3. 计算直方图积分: 

4. 采用H'作为查询表:dst(x,y)=H'(src(x,y))进行图像变换。

-------------------------------


我的例子!8X9的矩阵  得到直方图 

135  25

158 15

255 32

归一化累积直方图

135   25/72

158    40/72

255    72/72

乘上255得到对应的像素

135  88

158  141

255  255

按照别人博客里的方法 得到的新的图像矩阵为:

255 255 255 255 141 141 141 141  141

255 255 255 255 141 141 141 141  141

255 255 255 255 141 141 141 141  141

255 255 255 255   88   88    88   88   88

255 255 255 255   88   88    88   88   88

255 255 255 255   88   88    88   88   88

255 255 255 255   88   88    88   88   88

255 255 255 255   88   88    88   88   88

但是!很明显!我们得到的均衡后的矩阵并不是这个!而是

我找了很久的资料! 原来是把

给拉伸到了0-255的范围里!!!!所有人都没有讲!!!!导致走了很多弯路想明白!!!不过也印象深刻

方法:

拉伸后灰度=(当前灰度-最小灰度)×255/(255-最小灰度)  所以 88对应的灰度=(88-88)×255/(255-88)=0

141对应的灰度=(141-88)×255/(255-88)=81;

255对应的灰度=(255-88)×255/(255-88)=255;

所以得到的最终的均衡图像矩阵为


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值