查看Histogram Documentation,有4(5)种不同的比较方法:
它们都提供不同的输出,这些输出的读取方式与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)来估算 两个概率分布之间的相似性。
这些方法之间肯定存在差异,所以我的问题是它们是什么?在什么情况下它们效果最好?
答案 0 :(得分:1)
CV_COMP_INTERSECT计算速度很快,因为您只需要每个bin的最小值。但它不会告诉你很多差异的分布。在关于像素分布的不同假设下,其他方法试图获得更好和更连续的得分作为匹配。
您可以在
找到不同方法中使用的公式有关匹配算法的更多详细信息,请参阅: