【问题标题】:What is the name of this image similarity/ distance based metric?这个基于图像相似度/距离的度量的名称是什么?
【发布时间】:2021-06-06 01:39:56
【问题描述】:

我使用以下代码计算图像 1 和 2(i1 和 i2)之间的相似度。 1 = 完全相似,而 0 = 非常不同。我想知道这个算法使用的是什么方法(即欧几里得距离或..?)谢谢。

import math
i1=all_images_saved[0][1]
i2=all_images_saved[0][2]
i1_norm = i1/np.sqrt(np.sum(i1**2))
i2_norm = i2/np.sqrt(np.sum(i2**2))
np.sum(i1_norm*i2_norm)

【问题讨论】:

    标签: image numpy distance


    【解决方案1】:

    看起来像cosine similarity。您可以检查它是否给出与以下相同的结果:

    from scipy import spatial 
    cosine_distance = spatial.distance.cosine(i1.flatten(), i2.flatten()) 
    cosine_similarity = 1 - cosine_distance
    

    【讨论】:

      【解决方案2】:

      我不相信这是一个距离,否则 0 表示相同。这看起来像 2 个归一化向量的点积,在这种情况下,我会说它们是原始向量(从 -1 到 1 的值范围在下面描述的阈值之间):

      • 1 = 同向
      • 0 = 正交
      • -1 = 反方向

      鉴于geometric definition of the dot product,如果您有点积和向量的大小,您可以推导出两者之间的角度:

      a . b = ||a|| ||b|| cos θ
      

      或者我在这里完全错过了什么?

      【讨论】:

      • 有人推荐了这个指标来判断两张图片的相似程度。不是这样吗?
      • 数学上它给出了被视为矩阵的图像的相似性。但是,如果您的意思是人类如何感知图像,则它可能不合适(例如,拍摄 1 张图像,从中裁剪 2 张较小的图像,两者之间的偏移量很小:图像看起来与人类相似,但从数学上讲,所有像素都已关闭,因此数学可能会说它们是不同的。归一化可能会有所帮助(例如,特定图像的居中/重塑:stackoverflow.com/questions/44914035/…)但通常对于图像,您可以使用神经网络获得更好的结果,因为卷积的灵活性
      猜你喜欢
      • 2013-05-05
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 2018-07-18
      • 2012-05-01
      • 2016-10-12
      相关资源
      最近更新 更多