Arrays 获取两个numpy数组彼此接近的概率

Arrays 获取两个numpy数组彼此接近的概率,arrays,numpy,computer-vision,image-recognition,cv2,Arrays,Numpy,Computer Vision,Image Recognition,Cv2,想知道两个numpy阵列是否彼此靠近。。。 比如说,如果我们有2个2-d numpy数组,由2幅图像组成,我想知道它们是否彼此接近,它们是否相似或不相等, 无论如何,我们都不知道相似性的概率是否接近1? 就像任何分类器一样,我只是希望它不需要机器学习。 假设我们有2个像素: a = [255, 250, 3] b = [255, 255, 3] err = [(bb-aa)/max(aa,bb) for aa, bb in a, b] 那么概率呢 p = 1 - np.

想知道两个numpy阵列是否彼此靠近。。。 比如说,如果我们有2个2-d numpy数组,由2幅图像组成,我想知道它们是否彼此接近,它们是否相似或不相等, 无论如何,我们都不知道相似性的概率是否接近1? 就像任何分类器一样,我只是希望它不需要机器学习。 假设我们有2个像素:

   a = [255, 250, 3]
   b = [255, 255, 3]
   err = [(bb-aa)/max(aa,bb) for aa, bb in a, b]
那么概率呢

   p = 1 - np.mean(np.array(err))

好的,这应该和你描述的一样

import numpy as np
im1 = np.random.randint(0,255,size=(2,2,3)).astype('float')
im2 = np.random.randint(0,255,size=(2,2,3)).astype('float')
p = 1 - np.mean(np.abs(im1-im2)/np.stack((im1,im2),-1).max(-1))
为了计算p,该代码逐像素减去,然后取绝对值,然后除以每个像素每个通道处图像之间的最大值。这有点令人困惑,但这正是你所描述的。您可以拆下一个衬垫,看看每个部件都在做什么


一个关键点是:您的图像必须是浮点数据类型才能工作

你打算如何衡量相似性?@kevinkayaks,比如如果我们有这些a=[255,255,0],b=[250255,1]这些是相似的,我不知道如何得到这两个的问题…?但是你说图像:你打算如何衡量相似性?像素之间的L2距离,在所有像素上求和?对于这个具体的例子,我认为有很多方法1-a[0]-b[0]/a[0]可以解决这个问题。接近度为0.98@kevinkayaksi不要忽略其他两个频道。。。但是没关系。。。谢谢我正在编辑这个问题