OpenCV直方图比较方法

时间:2015-05-15 11:15:10

标签: opencv image-processing comparison histogram

查看Histogram Documentation,有4(5)种不同的比较方法:

  1. CV_COMP_CORREL 相关
  2. CV_COMP_CHISQR 卡方
  3. CV_COMP_INTERSECT 交叉点
  4. CV_COMP_BHATTACHARYYA Bhattacharyya距离
  5. CV_COMP_HELLINGER 的同义词 CV_COMP_BHATTACHARYYA
  6. 它们都提供不同的输出,这些输出的读取方式与Compare Histogram Documentation中所示的不同。但我找不到任何能说明每种方法相互比较的效果的方法。当然每种方法都有优点和缺点,否则为什么有多种方法?

    即使是OpenCV 2 Computer Vision Application Programming Cookbook也没有什么可说的差异:

      

    对cv :: compareHist的调用非常简单。你只需输入两个   直方图和函数返回测量的距离。该   您要使用的特定测量方法是使用标志指定的。   在ImageComparator类中,使用交叉方法(with   flag CV_COMP_INTERSECT)。这个方法简单地比较每个箱子,   每个直方图中的两个值,并保持最小值。该   然后,相似性度量就是这些最小值的总和。   因此,两个图像具有没有共同颜色的直方图   将获得0的交集值,而两个相同的直方图   会得到一个等于总像素数的值。

         

    其他可用的方法是卡方(旗帜CV_COMP_CHISQR)   它总结了箱子之间的归一化方差   相关方法(标志CV_COMP_CORREL),它基于   用于信号处理的归一化互相关算子   测量两个信号和Bhattacharyya之间的相似性   衡量统计中使用的(标志CV_COMP_BHATTACHARYYA)来估算   两个概率分布之间的相似性。

    这些方法之间肯定存在差异,所以我的问题是它们是什么?在什么情况下它们效果最好?

1 个答案:

答案 0 :(得分:1)

CV_COMP_INTERSECT计算速度很快,因为您只需要每个bin的最小值。但它不会告诉你很多差异的分布。在关于像素分布的不同假设下,其他方法试图获得更好和更连续的得分作为匹配。

您可以在

找到不同方法中使用的公式

http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_comparison/histogram_comparison.html

有关匹配算法的更多详细信息,请参阅:

http://siri.lmao.sk/fiit/DSO/Prednasky/7%20a%20Histogram%20based%20methods/7%20a%20Histogram%20based%20methods.pdf