Я пытаюсь сделать скрипт для сравнения изображений. Проблема в маркировке воды.
Я уже пробовал некоторые сценарии, которые прекрасно работают без воды марки. Пример:
def rmsdiff(im1, im2):
"Calculate the root-mean-square difference between two images"
h = ImageChops.difference(im1, im2).histogram()
# calculate rms
return math.sqrt(reduce(operator.add,
map(lambda h, i: h*(i**2), h, range(256))
) / (float(im1.size[0]) * im1.size[1]))
def rmsdiff2(img1, img2):
return imagehash.average_hash(img1) - imagehash.average_hash(img2)
def compare_images(img1, img2):
# normalize to compensate for exposure difference, this may be unnecessary
# consider disabling it
img1 = normalize(img1)
img2 = normalize(img2)
# calculate the difference and its norms
diff = img1 - img2 # elementwise for scipy arrays
m_norm = sum(abs(diff)) # Manhattan norm
z_norm = norm(diff.ravel(), 0) # Zero norm
return (m_norm, z_norm)
Я думаю, мне нужен фильтр или дескриптор перед выполнением сравнения. Но ПОЧЕМУ / КАК?
Пример изображения: