Хотите знать, находятся ли два массива 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))
-1
Muhammed Saeed 11 Сен 2018 в 23:42

1 ответ

Лучший ответ

Хорошо, это должно делать то, что вы описываете.

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 этот код вычитает пиксель за пикселем, затем принимает абсолютное значение перед делением на максимальное значение между изображениями в каждом канале каждого пикселя. Это немного сбивает с толку, но это то, что вы описали. Вы можете разобрать одну подкладку, чтобы увидеть, что делает каждая деталь.

Ключевой момент: ваши изображения должны иметь плавающий тип данных, чтобы это работало.

1
kevinkayaks 11 Сен 2018 в 21:46