Image 这个基于图像相似性/距离的度量的名称是什么?
我使用以下代码来计算图像1和图像2(i1和i2)之间的相似性。1=完全相似,而0=非常不同。我想知道这个算法使用的是什么方法(例如欧几里德距离或…?),谢谢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) 我不相信这是距离,否
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
a . b = ||a|| ||b|| cos θ
还是我完全错过了什么?看起来像。您可以检查它是否给出与以下相同的结果:
from scipy import spatial
cosine_distance = spatial.distance.cosine(i1.flatten(), i2.flatten())
cosine_similarity = 1 - cosine_distance
有人建议用这个指标来判断两幅图像有多相似。它不是这样做的吗?从数学上讲,它给出了被视为矩阵的图像的相似性。但是,如果你是指人类如何感知图像,那么这可能不合适(例如,拍摄一幅图像,从中裁剪两幅较小的图像,两幅图像之间有一个较小的偏移:图像看起来与人类相似,但从数学上讲,所有像素都是不相似的,因此数学上可能会说它们不同。标准化可能会有所帮助(例如,对特定图像进行定心/重塑:)但通常对于图像,使用神经网络可以获得更好的结果,因为它具有卷积的灵活性