获取两个 numpy 数组彼此接近的概率 python
get probability how two numpy arrays are close to each other python
想知道两个 numpy 数组是否彼此靠近...
就像如果我们有 2 个(2-d)2 个图像的 numpy 数组我想知道它们是否彼此接近(它们是否相似)也不相等,
无论如何要知道相似的概率是否接近 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,此代码逐像素减去,然后取绝对值,然后除以每个像素的每个通道的图像之间的最大值。这有点令人困惑,但这就是您所描述的。您可以拆下一个衬里,看看每一块都在做什么。
一个关键点:您的图像必须是浮动数据类型才能工作。
想知道两个 numpy 数组是否彼此靠近...
就像如果我们有 2 个(2-d)2 个图像的 numpy 数组我想知道它们是否彼此接近(它们是否相似)也不相等,
无论如何要知道相似的概率是否接近 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,此代码逐像素减去,然后取绝对值,然后除以每个像素的每个通道的图像之间的最大值。这有点令人困惑,但这就是您所描述的。您可以拆下一个衬里,看看每一块都在做什么。
一个关键点:您的图像必须是浮动数据类型才能工作。