获取2张图像之间的差异并将结果标准化

时间:2019-01-20 11:07:21

标签: python opencv image-processing opencv3.0

我想得到两个图像之间的差异,并对结果数组进行归一化并缩放以适合[0,255]。

我正在尝试以下操作:

import cv2

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

cv2.subtract(img1, img2)

但是我不确定这是否是正确的方法吗?我如何规范化结果数组并缩放以适合[0,255?]

1 个答案:

答案 0 :(得分:0)

首先,您需要定义“ 2张图像之间的差异”的含义。重要的是要注意cv2.subtract执行饱和,这意味着,如果您的图像位于例如np.uint8,所有负值都将被裁剪为0(请参见this answer中的更多详细信息)。也许那不是您想要的。但是让我们说 是您想要的。然后,您可以按照评论中的@Tilman进行操作(您也需要减去分钟数,请参见下文)。如果您不明白为什么,可以在this answer中查看更多详细信息。基本上,您的代码将是这样的(为了帮助您理解,我逐步进行了此操作):

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]