Сравнение изображений настроено на восприятие человека
Скажем, у меня есть две системы, которые принимают одинаковые команды рисования и начинают рисовать на своих соответствующих платформах (например, HTML Canvas). После того, как это будет сделано, я хочу сохранить и сравнить эти два изображения, чтобы убедиться, что они воспринимаются одинаково, даже если формы и цвета могут быть очень незначительными (незаметные различия).
Я пытался использовать перцептивные хэши, но, к сожалению, они не кажутся достаточно чувствительными для этой задачи. Так, например, если вы установите 1000 пикселей полностью черными (для изображения с разрешением 1920x1080) на одном и сравните его с другим, это будет очень очевидно для восприятия, но алгоритм pHash по-прежнему будет возвращать 100% совпадение.
Я попытался использовать усреднение ближайшего соседа для всех пикселей. По сути, для каждого пикселя я усреднял его значение со значением числа его соседей и устанавливал это значение обратно в пиксель. Похоже, что это хорошо работает с фигурами, имеющими твердые края и прямые линии, потому что требуется лишь очень небольшое локализованное изменение, чтобы оно заметно различалось. Для длинных кривых это не так хорошо, так как могут быть умеренные изменения по всей кривой, при этом они все равно воспринимаются одинаково.
Существует ли алгоритм, который может обрабатывать воспринимаемые небольшие изменения во многих возможных формах / кривых? Должен ли я использовать несколько алгоритмов для решения этой задачи?