Це просто ідеї, про які я думав над проблемою, ніколи не пробував її, але мені подобається думати про такі проблеми!
Перед тим як ти почнеш
Поміркуйте над нормалізацією зображень, якщо одна з роздільною здатністю більш високою, ніж інша, розгляньте варіант, коли один із них є стислим варіантом іншого, тому зменшення роздільної здатності може дати більш точні результати.
Розгляньте сканування різних перспективних областей зображення, які могли б представляти масштабовані частини зображення, а також різні положення та обертання. Починає складно, якщо одне із зображень є перекошеною іншою версією, це такі обмеження, які слід визначити та йти на компроміс.
Matlab - відмінний інструмент для тестування та оцінки зображень.
Тестування алгоритмів
Вам слід перевірити (як мінімум) великий аналізований набір людських даних тестових даних, де заздалегідь відомі відповідники. Якщо, наприклад, у тестових даних у вас є 1000 зображень, на яких 5% відповідають, тепер у вас є досить надійний орієнтир. Алгоритм, який знаходить 10% позитивних результатів, не такий хороший, як той, який виявляє 4% позитивних результатів у наших тестових даних. Однак один алгоритм може знайти всі збіги, але також має велику 20% хибну позитивну швидкість, тому існує декілька способів оцінити свої алгоритми.
Дані тестів повинні бути спробовані таким чином, щоб охопити якомога більше видів динаміки, які ви б очікували знайти в реальному світі.
Важливо зазначити, що кожен алгоритм, який корисний, повинен виконувати краще, ніж випадкові здогадки, інакше він марний для нас!
Потім ви можете контрольовано застосовувати своє програмне забезпечення в реальному світі і починати аналізувати результати, які воно дає. Це такий проект програмного забезпечення, який може тривати нескінченно, завжди можна змінити вдосконалення та вдосконалення, важливо враховувати це, розробляючи його, оскільки легко потрапити в пастку нескінченного проекту.
Кольорові відра
За допомогою двох зображень скануйте кожен піксель і порахуйте кольори. Наприклад, у вас можуть бути "відра":
white
red
blue
green
black
(Очевидно, у вас була б більша роздільна здатність лічильників). Кожен раз, коли ви знаходите «червоний» піксель, ви збільшуєте червоний лічильник. Кожне відро може бути представником спектру кольорів, чим вище роздільна здатність, тим точніше, але ви повинні експериментувати з прийнятною різницею.
Коли ви отримаєте підсумки, порівняйте їх із підсумками другого зображення. Ви можете виявити, що кожне зображення має досить унікальний слід, достатній для виявлення збігів.
Виявлення країв
Як про використання виявлення краю .
(джерело: wikimedia.org )
З двома подібними зображеннями виявлення країв має забезпечити вам корисний та досить надійний унікальний слід.
Зробіть обидві фотографії та застосуйте розпізнавання країв. Можливо, виміряйте середню товщину країв, а потім обчисліть ймовірність того, що зображення можна було б змінити, і, якщо потрібно, змінити масштаб. Нижче наводиться приклад застосованого фільтра Габора (тип виявлення ребер) у різних обертаннях.
Порівняйте піксель зображень на піксель, порахуйте відповідність та не збіги. Якщо вони знаходяться в межах певного порогу помилок, у вас є збіг. В іншому випадку ви можете спробувати зменшити роздільну здатність до певного моменту і побачити, чи покращується ймовірність відповідності.
Цікаві регіони
Деякі зображення можуть мати виразні сегменти / регіони, що цікавлять. Ці регіони, ймовірно, сильно контрастують з рештою зображення, і вони є хорошим елементом для пошуку в інших зображеннях, щоб знайти відповідність. Візьміть для прикладу це зображення:
(джерело: meetthegimp.org )
Будівельний працівник синього кольору є цікавим регіоном, і його можна використовувати як об’єкт пошуку. Ймовірно, існує кілька способів витягування властивостей / даних із цього регіону, що цікавить, та використання їх для пошуку у вашому наборі даних.
Якщо у вас є більше двох цікавих регіонів, ви можете виміряти відстані між ними. Візьміть цей спрощений приклад:
(джерело: per2000.eu )
У нас є 3 чіткі області інтересу. Відстань між областю 1 та 2 може становити 200 пікселів, між 1 та 3 400 пікселями та 2 та 3 200 пікселями.
Шукайте інші зображення за подібними регіонами, що цікавлять, нормалізуйте значення відстані та побачте, чи є у вас потенційні збіги. Цей прийом міг би добре працювати для обертових та масштабованих зображень. Чим більше цікавлять вас регіонів, тим більша ймовірність відповідності з кожним збігом вимірювання відстані.
Важливо продумати контекст набору даних. Якщо, наприклад, ваш набір даних - це сучасне мистецтво, то цікаві регіони спрацювали б досить добре, оскільки цікаві регіони, ймовірно, були розроблені як основна частина остаточного зображення. Якщо ви маєте справу із зображеннями будівельних майданчиків, нецікаві копії можуть бути розцінені нелегальними копірами як некрасиві, а їх можна обрізати / відредагувати. Пам’ятайте про загальні особливості вашого набору даних та намагайтеся використовувати ці знання.
Морфінг
Морфінг двох зображень - це процес перетворення одного зображення в інший через набір кроків:
Зауважте, це відрізняється від затінення одного зображення до іншого!
Існує багато програмних пакетів, які можуть перетворювати зображення. Це традиційно використовується як перехідний ефект, два зображення зазвичай не перетворюються на щось на півдорозі, один крайній перетворюється на інший крайній результат як кінцевий результат.
Чому це може бути корисним? Залежно від алгоритму морфінгу, який ви використовуєте, може існувати залежність між подібністю зображень та деякими параметрами алгоритму морфінгу.
Приблизно над спрощеним прикладом, один алгоритм може виконуватись швидше, коли буде внесено менше змін. Тоді ми знаємо, що існує більша ймовірність того, що ці два зображення поділяють властивості один з одним.
Ця техніка може добре працювати для обертових, спотворених, перекошених, масштабованих, усіх типів скопійованих зображень. Знову це просто ідея, яку я мав, вона не заснована на жодних досліджених наукових закладах, наскільки я знаю (я не виглядаю важко), тому це може бути для вас багато роботи з обмеженими / відсутніми результатами.
Блискавки
Відповідь Ова на це запитання відмінна, я пам’ятаю, читав про такі методики вивчення ШІ. Він досить ефективний при порівнянні лексиконів корпусу.
Однією цікавою оптимізацією при порівнянні корпусів є те, що ви можете видалити слова, які вважаються занадто поширеними, наприклад "З", "А", "І" тощо. Ці слова розбавляють наш результат, ми хочемо розібратися, наскільки два корпуси відрізняються. тому їх можна видалити перед обробкою. Можливо, є подібні поширені сигнали в зображеннях, які можна було зняти до стиснення? Це, можливо, варто заглянути.
Коефіцієнт стиснення - це дуже швидкий і досить ефективний спосіб визначити, наскільки схожі два набори даних. Читання про те, як працює компресія , дасть вам хороше уявлення, чому це може бути настільки ефективним. Для швидкого випуску алгоритму це, мабуть, буде гарною відправною точкою.
Прозорість
Знову я не впевнений, як зберігаються дані про прозорість для певних типів зображень, gif png тощо, але це буде витягнутим і послужить ефективним спрощеним вирізанням для порівняння з прозорістю набору даних.
Інвертування сигналів
Зображення - це лише сигнал. Якщо ви відтворюєте шум від динаміка, а ви чуєте протилежний шум в іншому динаміку в ідеальній синхронізації при точно такій же гучності, вони відміняють один одного.
(джерело: themotorreport.com.au )
Інвертуйте зображення та додайте їх до іншого зображення. Повторно масштабуйте положення / цикл, поки не знайдете отримане зображення там, де достатньо пікселів білого кольору (або чорного кольору? Я буду називати це нейтральним полотном), щоб забезпечити вам позитивну чи часткову відповідність.
Однак розгляньте два рівні зображення, за винятком того, що одне з них має більш яскравий ефект, застосований до нього:
(джерело: mcburrz.com )
Перевернути одну з них, а потім додати її до іншої, це не призведе до нейтрального полотна, до чого ми прагнемо. Однак, порівнюючи пікселі з обох оригінальних зображень, ми можемо однозначно побачити чітку взаємозв'язок між ними.
Я не вивчав колір вже кілька років і не впевнений, чи кольоровий спектр знаходиться в лінійній шкалі, але якщо ви визначили середній коефіцієнт різниці кольорів між обома зображеннями, ви можете використовувати це значення для нормалізації даних перед обробкою ця техніка.
Дерево структури даних
Спочатку вони, здається, не підходять до проблеми, але я думаю, що вони могли б працювати.
Можна подумати про вилучення певних властивостей зображення (наприклад, кольорових бункерів) та генерування дерева хаффмана або подібної структури даних. Можливо, ви зможете порівняти два дерева за подібністю. Це не добре підходить для фотографічних даних, наприклад, з великим кольоровим спектром, але мультфільми або інші зображення зі зменшеним кольором це можуть працювати.
Це, мабуть, не вийшло, але це ідея. Структура даних трійки чудово підходить для зберігання лексиконів, наприклад диктатури. Це дерево префіксів. Можливо, можливо побудувати образ, еквівалент лексикону (я знову можу думати лише про кольори), щоб побудувати трійку. Якщо ви зменшили, скажімо, зображення розміром 300x300 на квадрати 5x5, то розкладіть кожен 5х5 квадрат на послідовність кольорів, з яких ви могли б побудувати трійку з отриманих даних. Якщо квадрат 2х2 містить:
FFFFFF|000000|FDFD44|FFFFFF
У нас є досить унікальний код трійки, який розширює 24 рівні, збільшення / зменшення рівнів (IE зменшення / збільшення розміру нашого підквадрату) може дати більш точні результати.
Порівнювати триєдні дерева слід досить просто, і це могло б дати ефективні результати.
Більше ідей
Я натрапив на цікавий статтю про класифікацію супутникових знімків :
Розглянутими фактурними заходами є: матриці текучості, різниці на рівні сірого, аналіз текстури та тону, характеристики, отримані з спектру Фур'є та фільтри Габора. Деякі функції Фур'є та деякі фільтри Габора виявились хорошим вибором, зокрема, коли для класифікації використовувався єдиний діапазон частот.
Можливо, варто вивчити ці вимірювання більш детально, хоча деякі з них можуть не відповідати вашому набору даних.
Інші речі для розгляду
Мабуть, існує багато праць про подібні речі, тому читання деяких з них має допомогти, хоча вони можуть бути дуже технічними. Це надзвичайно важка область в обчисленні, з безліччю безрезультатних годин роботи, яку багато людей намагаються зробити подібні. Найпростішим способом було б дотримуватися простоти та будувати на цих ідеях. Створити алгоритм з кращою, ніж швидкістю випадкової відповідності, має бути досить важким завданням, і почати вдосконалюватись, що насправді починає бути досить важким.
Кожен метод, ймовірно, повинен бути ретельно перевірений і перероблений, якщо у вас є якась інформація про тип зображення, який ви будете перевіряти, це також буде корисним. Наприклад, реклама, у багатьох з них буде текст у них, тому розпізнавання тексту було б простим і, мабуть, дуже надійним способом пошуку збігів, особливо в поєднанні з іншими рішеннями. Як згадувалося раніше, намагайтеся використовувати загальні властивості вашого набору даних.
Поєднання альтернативних вимірювань та методів, кожен з яких може мати зважений голос (залежно від їх ефективності) - це один із способів створити систему, яка б дала більш точні результати.
Якщо використання декількох алгоритмів, як згадувалося на початку цієї відповіді, можна виявити всі позитивні результати, але має помилкову позитивну швидкість 20%, було б цікаво вивчити властивості / сильні / слабкі сторони інших алгоритмів, як інший алгоритм може бути ефективним у усуненні помилкових позитивних даних, повернених з іншого.
Будьте обережні, щоб не впасти в спробу завершити ніколи не закінчений проект, удачі!