opencv(9)直方图均衡化,对比,匹配

1 直方图均衡化

void cvEqualizeHist( const CvArr* src, CvArr* dst );//输入 输出,8位单通道图像  
opencv直方图采用的方法:
  1. 计算输入图像的直方图 H
  2. 直方图归一化,因此直方块和为255
  3. 计算直方图积分
  4. 采用H'作为查询表:dst(x,y)=H'(src(x,y))进行图像变换。

测试1   直方图均衡化

直方图均衡化


测试图像:

4

2 .直方图对比

double cvCompareHist( const CvHistogram* hist1, const CvHistogram* hist2, int method );

对比的的方法用method表示,主要由以下几种办法:

CV_COMP_CORREL 相关方法:完全匹配为1,完全不匹配为-1,0是无关联

CV_COMP_CHISQR 卡尔:完全匹配是0 ,完全不匹配为无限值

CV_COMP_INTERSECT 直方图相交:完全匹配为1,完全不匹配为-1,0是无关联

CV_COMP_BHATTACHARYYA   Bhattacharyya距离,Bhattacharyya 距离只能应用到规一化后的直方图,完全匹配是0 ,完全不匹配为1

在直方图对比前,都应该进行归一化操作,直方图相交的方法效果最好,卡尔和Bhattacharyya距离速度最慢也较精确。

测试代码:

直方图对比

输出结果:

8 

也就是这两张图像 并没什么相关,如果和源图像对比,输出结果如下:

7

原文地址:https://www.cnblogs.com/zsb517/p/2552317.html