【问题标题】:OpenCV Histogram Comparison MethodsOpenCV 直方图比较方法
【发布时间】:2015-07-27 07:06:55
【问题描述】:

查看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

它们都提供不同的输出,读取方式不同,如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


【解决方案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

【讨论】:

  • 您的第一个链接与我的第一个链接相同,但第二个链接很有趣。话虽如此,它仍然只说明了我发现的所有其他链接:不同方法的评分方式不同。
  • 从数学上讲,归一化直方图是概率密度函数 (PDF)。当我们匹配两个直方图时,我们基本上看到了两个分布是如何相互匹配的。回答您的问题的最佳方法是阅读有关统计模式识别的教科书(Duda 和 Hart 非常好),或像 citeseerx.ist.psu.edu/viewdoc/… 这样的出版物。我学会了但忘记了大部分这些东西;-(。
猜你喜欢
  • 2013-03-24
  • 1970-01-01
  • 2013-10-13
  • 2017-10-24
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
相关资源
最近更新 更多