假设我已经使用颜色作为特征计算了两个图像之间的欧几里德距离,并且还使用边缘计算了两个图像之间的距离。我想测试一下组合这两个距离值是否可以更好地表示图像的相似程度。将这两个距离测量结合起来是不是像 colorDistance + edgeDistance/2 一样简单?或者是否有更复杂的方法来组合距离值?
最佳答案
colorDistance和edgeDistance的任何函数都可以工作。您可以将您所描述的视为测试三个可能的功能:
f1(colourDistance, edgeDistance) = colourDistance
f2(colourDistance, edgeDistance) = edgeDistance
f3(colourDistance, edgeDistance) = (colourDistance + edgeDistance) / 2
理论上,您可以测试任何其他功能。立即想到的一件事是线性组合:
g(colourDistance, edgeDistance) = w1 * colourDistance + w2 * edgeDistance
对于 w1、w2 的不同值。这将使您能够试验这两个功能的视觉重要性。您的 f3 是此函数的一种情况,其中 w1=w2=0.5
您可能会发现特征的权重不是线性的,例如,非常小的值的 1 点差异比大值的 1 点差异更显着(或更不显着)。您可以尝试以下功能:
h(colourDistance, edgeDistance) = w1 * log(colourDistance) + w2 * log(edgeDistance)
最后的建议,我不清楚你们的距离是否在同一范围内。如果一个距离度量从 0-10 变化,而另一个距离度量从 0-1000 变化,您可能需要对这些值进行标准化,或者通过选择 w1 和 w2 进行补偿。
关于java - 通过测量颜色和边缘距离来组合欧几里得距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30013172/