【发布时间】:2015-07-27 07:06:55
【问题描述】:
查看Histogram Documentation,有4(5)种不同的比较方法:
- CV_COMP_CORREL 相关性
- CV_COMP_CHISQR 卡方
- CV_COMP_INTERSECT 交叉路口
- CV_COMP_BHATTACHARYYA Bhattacharyya 距离
- CV_COMP_HELLINGER 同义词 CV_COMP_BHATTACHARYYA
它们都提供不同的输出,读取方式不同,如Compare Histogram Documentation 所示。但是我找不到任何可以说明每种方法相互比较的有效性的信息。每种方法肯定各有利弊,不然为什么要多种方法呢?
即使是OpenCV 2 Computer Vision Application Programming Cookbook 也没有什么可说的:
对 cv::compareHist 的调用很简单。你只需输入这两个 直方图和函数返回测量的距离。这 您要使用的特定测量方法是使用标志指定的。 在 ImageComparator 类中,使用了交集方法 (与 标记 CV_COMP_INTERSECT)。这种方法只是比较,对于每个 bin, 每个直方图中的两个值,并保持最小值。这 相似性度量就是这些最小值的总和。 因此,两个图像的直方图没有共同的颜色 将得到 0 的交集值,而两个相同的直方图 会得到一个等于总像素数的值。
其他可用的方法是卡方(标志 CV_COMP_CHISQR) 将 bin 之间的归一化平方差相加,即 相关方法(flag CV_COMP_CORREL),它基于 信号处理中使用的归一化互相关算子 测量两个信号之间的相似性,以及 Bhattacharyya 测量 (flag CV_COMP_BHATTACHARYYA) 在统计中用于估计 两个概率分布之间的相似性。
这些方法之间肯定存在差异,所以我的问题是它们是什么?它们在什么情况下效果最好?
【问题讨论】:
-
我会试试维基百科。这就像问是沿着街道测量距离还是在乌鸦飞翔时测量距离更好……您可能需要了解要测量的内容。但也许真的有某种“何时使用哪个距离度量”的烹饪书,所以祝你好运。
-
我只是想了解一些可用方法的差异。
标签: opencv image-processing comparison histogram