Мені потрібен простий і швидкий спосіб порівняння двох зображень для подібності. Тобто я хочу отримати високе значення, якщо вони містять абсолютно одне і те ж, але можуть мати дещо інший фон і можуть бути переміщені / змінені на кілька пікселів.
(Більш конкретно, якщо це має значення. Одне зображення є піктограмою, а інше зображення - підмайданчиком скріншота, і я хочу знати, чи саме ця підподра - це значок чи ні.)
У мене є OpenCV під рукою, але я все ще не такий, як звик.
Один з варіантів, про який я думав поки що: розділіть обидва зображення на 10х10 комірок і для кожної з цих 100 комірок порівняйте кольорову гістограму. Тоді я можу встановити деяке складене порогове значення, і якщо отримане значення вище цього порогу, я вважаю, що вони схожі.
Я ще не пробував це, як добре це працює, але я думаю, це було б досить добре. Зображення вже майже схожі (у моєму випадку використання), тому я можу використовувати досить високе порогове значення.
Я думаю, для цього є десятки інших можливих рішень, які працювали б більш-менш (оскільки сама задача є досить простою, тому що я хочу виявити подібність лише у тому випадку, якщо вони справді дуже схожі). Що б ти запропонував?
Є кілька дуже пов'язаних / подібних питань щодо отримання підпису / відбитка пальця / хешу від зображення:
- OpenCV / SURF Як генерувати хеш / відбиток пальців / підпис із дескрипторів?
- Відбиток зображення для порівняння подібності багатьох зображень
- Виявлення майже повторюваних зображень
- OpenCV: зображення відбитків пальців і порівняння з базою даних .
- більше , більше , більше , більше , більше , більше , більше
Також я натрапив на такі реалізації, які мають такі функції отримати відбиток пальців:
- pHash
- imgSeek ( GitHub repo ) (GPL) на основі паперу Швидкий запит зображень на багато роздільних можливостей
- зображення-відповідність . Дуже схоже на те, що я шукав. Аналогічно pHash, заснованому на підписі зображення для будь-якого зображення, Goldberg та ін . Використовує Python та Elasticsearch.
- iqdb
- ImageHash . підтримує pHash.
- Дедуплікатор зображення (Imagededup) . Підтримує CNN, PHash, DHash, WHash, AHash.
Деякі дискусії з приводу сприйняття зображень: тут
Трохи офтопік: Існує багато методів створення аудіовідбитків. MusicBrainz , веб-сервіс, що забезпечує пошук пісень на основі відбитків пальців, має хороший огляд у своїй вікі . Зараз вони використовують AcoustID . Це для пошуку точних (або переважно точних) збігів. Щоб знайти подібні збіги (або якщо у вас є лише фрагменти або високий рівень шуму), подивіться на Echoprint . Пов'язаний з цим питання ТАК тут . Тож здається, що це вирішено для аудіо. Всі ці рішення працюють досить добре.
Дещо більш загальне питання про нечіткий пошук взагалі є тут . Наприклад, є хеш-чутливість до локалізації та пошук найближчого сусіда .