MLM*_*LTL 6 comparison opencv image-processing histogram
查看直方图文档,有4(5)种不同的比较方法:
它们都提供不同的输出,如比较直方图文档中所示.但我找不到任何能说明每种方法相互比较的效果的方法.当然每种方法都有优点和缺点,否则为什么有多种方法呢?
甚至OpenCV 2计算机视觉应用程序编程手册也没有什么可说的差异:
对cv :: compareHist的调用很简单.您只需输入两个直方图,该函数将返回测量的距离.要使用的特定测量方法是使用标志指定的.在ImageComparator类中,使用了交集方法(带有标志CV_COMP_INTERSECT).对于每个箱,该方法简单地比较每个直方图中的两个值,并保持最小值.然后,相似性度量就是这些最小值的总和.因此,具有没有共同颜色的直方图的两个图像将获得0的交叉值,而两个相同的直方图将获得等于总像素数的值.
可用的其他方法是卡方(标志CV_COMP_CHISQR) ,它对二进制位之间的归一化方差进行求和,相关方法(标志CV_COMP_CORREL)基于信号处理中使用的归一化互相关算子来测量两者之间的相似性.信号和Bhattacharyya度量(标志CV_COMP_BHATTACHARYYA)在统计中用于估计两个概率分布之间的相似性.
这些方法之间肯定存在差异,所以我的问题是它们是什么?什么情况下他们最好?
CV_COMP_INTERSECT 的计算速度很快,因为您只需要每个 bin 的最小值。但它不会告诉您太多有关差异分布的信息。其他方法试图在关于像素分布的不同假设下获得更好、更连续的匹配分数。
您可以在以下位置找到不同方法中使用的公式:
有关匹配算法的更多详细信息的一些参考可以在以下位置找到: