Image 这个基于图像相似性/距离的度量的名称是什么?

Image 这个基于图像相似性/距离的度量的名称是什么?,image,numpy,distance,Image,Numpy,Distance,我使用以下代码来计算图像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) 我不相信这是距离,否

我使用以下代码来计算图像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)

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

  • 1
    =同向
  • 0
    =正交
  • -1
    =相反方向
给定,如果你有点积和向量的大小,你可以得到2:

a . b = ||a|| ||b|| cos θ
还是我完全错过了什么?

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

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

有人建议用这个指标来判断两幅图像有多相似。它不是这样做的吗?从数学上讲,它给出了被视为矩阵的图像的相似性。但是,如果你是指人类如何感知图像,那么这可能不合适(例如,拍摄一幅图像,从中裁剪两幅较小的图像,两幅图像之间有一个较小的偏移:图像看起来与人类相似,但从数学上讲,所有像素都是不相似的,因此数学上可能会说它们不同。标准化可能会有所帮助(例如,对特定图像进行定心/重塑:)但通常对于图像,使用神经网络可以获得更好的结果,因为它具有卷积的灵活性