找出两个numpy矩阵有多相似

2024-06-24 13:35:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道两个numpy矩阵有多大的不同。Matrix1和Matrix2可能非常相似,就像80%相同的值,但只是移动了。。。我在右上角附加了两个相同数组的图像,它们的值序列略有不同

from skimage.util import compare_images
#matrix1 & matrix2 are numpy arrays
compare_images(matrix1, matrix2, method='diff')

compare_images

给我一个第一个比较,但是两个numpy矩阵呢,例如,其中一个左移了几列

from scipy.signal import correlate2d
corr = correlate2d(matrix1, matrix2)
plt.figure(figsize=(10,10))
plt.imshow(corr)
plt.grid(False)
plt.show()

打印出相关性,这似乎是一个不错的方法,但我不明白结果是如何显示的,因为差异在图像的右上角

correlate2d

否则:

picture1_norm = picture1/np.sqrt(np.sum(picture1**2))
picture2_norm = picture2/np.sqrt(np.sum(picture2**2))
print(np.sum(picture2_norm*picture1_norm))

返回相似性范围为0-1的值;例如0.9942

什么是好方法


Tags: from图像importnumpynormnpplt矩阵
1条回答
网友
1楼 · 发布于 2024-06-24 13:35:40

两个矩阵之间的相关性是衡量两者相似程度的合理标准。如果两者都包含相同的值,(标准化的)相关性将为1,您的(最大?)值0.9942已经非常接近该值。 关于结果的平移(in-)方差,请仔细查看scipy.signal.correlate2dmode参数,该参数定义了如何处理沿矩阵两个轴的不同大小,以及在计算相关性时,将一个矩阵滑动到另一个矩阵上的距离

相关问题 更多 >