java - 通过测量颜色和边缘距离来组合欧几里得距离

标签 java distance euclidean-distance

假设我已经使用颜色作为特征计算了两个图像之间的欧几里德距离,并且还使用边缘计算了两个图像之间的距离。我想测试一下组合这两个距离值是否可以更好地表示图像的相似程度。将这两个距离测量结合起来是不是像 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/

相关文章:

java - UML 序列图中的隐式工厂?

java - error.java.lang.ClassNotFoundException : com. microsoft.sqlserver.jdbc.SQLServerDriver

algorithm - 你如何计算完整机器人的行进距离和角度?

python - 处理大数据的 Pycuda block 和网格

python - 计算数据帧所有行之间的成对欧几里得距离

c++ - 在 CUDA 中增加每个线程的工作量的示例

java - Commons DBUtils Oracle 11g 准备语句

java - SQL批量更新-回滚 "CREATE TABLE"?

java - 在android中获取两个lat lng之间的道路距离

algorithm - 是否可以找到次二次时间所有点的最近点?