Сравните изображения с отметкой воды - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь сделать скрипт для сравнения изображений. Проблема в маркировке воды.

Я уже пробовал некоторые сценарии, которые прекрасно работают без воды марки. Пример:

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)

Я думаю, мне нужен фильтр или дескриптор перед выполнением сравнения. Но ПОЧЕМУ / КАК?

Пример изображения:

enter image description here

enter image description here

enter image description here

...