Получите разницу между двумя изображениями и нормализуйте результат - PullRequest
0 голосов
/ 20 января 2019

Я хочу получить разницу между двумя изображениями и нормализовать результирующий массив и масштабировать, чтобы уместить [0,255].

Я пытался сделать следующее:

import cv2

img1 = cv2.imread("lko.png")
img2 = cv2.imread("jum.png")

cv2.subtract(img1, img2)

Но я не уверен, что это правильный способ сделать это? Как я могу нормализовать полученный массив и масштаб, чтобы соответствовать [0,255?]

1 Ответ

0 голосов
/ 20 января 2019

Во-первых, вам нужно определить, что вы подразумеваете под «разницей между двумя изображениями». Важно отметить, что cv2.subtract выполняет насыщение, что означает, что если ваши изображения находятся, например, в. np.uint8, все отрицательные значения будут обрезаны до 0 (подробности см. В этого ответа ). Может быть, это не то, что вы хотите. Но давайте скажем, что - это , что вы хотите. Затем вы можете сделать то, что @ Tilman сказал в комментариях (вам также нужно вычесть мин, см. Ниже). Если вы не понимаете, почему, более подробную информацию можно увидеть в этом ответе . По сути, ваш код будет выглядеть следующим образом (я сделал это шаг за шагом, чтобы вы могли понять):

import cv2

img1 = cv2.imread("lko.png")
img2 = cv2.imread("jum.png")

diff = cv2.subtract(img1, img2)  # range [a, b]
diff = diff - np.min(diff)       # range [0, b-a]
diff /= np.max(diff)             # range [0, 1]
diff *= 255                      # range [0, 255]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...