我想知道两个numpy矩阵有多大的不同。Matrix1和Matrix2可能非常相似,就像80%相同的值,但只是移动了。。。我在右上角附加了两个相同数组的图像,它们的值序列略有不同
from skimage.util import compare_images
#matrix1 & matrix2 are numpy arrays
compare_images(matrix1, matrix2, method='diff')
给我一个第一个比较,但是两个numpy矩阵呢,例如,其中一个左移了几列
from scipy.signal import correlate2d
corr = correlate2d(matrix1, matrix2)
plt.figure(figsize=(10,10))
plt.imshow(corr)
plt.grid(False)
plt.show()
打印出相关性,这似乎是一个不错的方法,但我不明白结果是如何显示的,因为差异在图像的右上角
否则:
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
什么是好方法
两个矩阵之间的相关性是衡量两者相似程度的合理标准。如果两者都包含相同的值,(标准化的)相关性将为1,您的(最大?)值0.9942已经非常接近该值。 关于结果的平移(in-)方差,请仔细查看
scipy.signal.correlate2d
的mode
参数,该参数定义了如何处理沿矩阵两个轴的不同大小,以及在计算相关性时,将一个矩阵滑动到另一个矩阵上的距离相关问题 更多 >
编程相关推荐