Бінарні стійкі незалежні елементарні особливості (“КОРОТКИ”) розуміння


14

Як дескриптори в алгоритмі BRIEF співпадають один з одним?

Як зображення шаблону знайдено в іншому зображенні? Як ми порівнюємо дескриптори? Я прочитав цю статтю, але не зрозумів, як вони це зробили.

Вони писали, що порівнювали дескриптори, використовуючи відстань Хеммінга, але як досягається інваріантність змін освітленості, розміру тощо?

Відповіді:


15

Перш за все, у цьому документі немає такого поняття, як "шаблон" - слово "шаблон (и)" має інше значення в "Комп'ютерному баченні".

Метод, використаний у цій роботі, є відносно прямим. Дозвольте мені розбити це для вас. Є три важливі речі, які потрібно зробити, виконуючи такі завдання, як розпізнавання об'єктів, відповідність зображень, зшивання зображень тощо), використовуючи локальні функції

Перша важлива річ - виявлення; на цьому кроці ви хочете виявити цікаві точки або ключові точки, і що це означає, що ви хочете вибрати локальні точки (в основному невеликі патчі), які, на вашу думку, є цікавими на зображенні, є багато способів зробити це; ця стаття не сприяє цій галузі. Однак, здається, вони використовують детектор функцій SURF та ключові точки CenSurE (ви можете шукати їх, якщо хочете дізнатися більше про них, я не буду говорити про цей крок, за винятком того, що вони використовують такі функції, як градієнти і так. Це означає, що якщо у вас є фото, навряд чи точка в середині неба була б обрана як точка інтересу, це тому, що пікселі навколо цієї точки мають однакову інтенсивність, речі, які "зайняті", як правило, обираються як точки інтересу (наприклад, краї / кути будівельних конструкцій).

Після того, як виявлено, Опис функціївипливає. Ви знаєте цікаві моменти на зображенні, і тепер ви хочете описати їх (в основному ви хочете описати точки / патч навколо цікавих точок). SIFT - один популярний дескриптор функцій. У цьому документі вони виходять з новим під назвою BRIEF. BRIEF заснований на порівняннях, тому скажімо, у нас є патч (50 пікселів на 50 пікселів), ми вибираємо дві точки і порівнюємо інтенсивність двох точок, якщо перша точка більша за другу точку, ми присвоюємо значення ' 1 ', інакше' 0 ', ми робимо це для декількох пар і закінчуємо рядом булевих значень. Тепер велике питання: «як ви вибираєте пару балів?», У роботі вони пояснили 5 способів, відносно схожих, я опишу перший. Що ви робите, ви рівномірно (з однаковою ймовірністю) вибираєте точку від -S / 2 до S / 2, у нашому прикладі ми говорили, що розмір пластиру становить 50, тому ми вибираємо точку від -25 до 25. Припускаючи, що координата 0,0 розташована в центрі патча. Отже ось приклад;

Ми хочемо вибрати першу пару, кожна точка складається з (X, Y) координат, тому ми рівномірно вибираємо X-координату першої точки, потім Y-координату першої точки, припустимо, що це (10, -1) , тепер другий пункт; ми рівномірно вибираємо координату X для другої точки, а координату Y для другої точки, припустимо, що це (-2,20), тепер ми отримуємо значення інтенсивності для кожної точки і бачимо, яка з них має великі значення інтенсивності - якщо спочатку більше, ми присвоюємо перше булеве значення "1", якщо ні, то присвоюємо "0". Ми робимо це для багатьох пар, і закінчуємо вектор булевих значень.

* Дуже важливий момент: я припускаю, що це спрацює, вам доведеться вказати значення насіння перед випадковим генератором. Це означає, що ви хочете вибрати однакові значення для кожного патча - це надзвичайно важливо, тому що при порівнянні / співпадінні патчів вся система вийде з ладу, якщо вони не вибрані точно таким же способом. - сподіваємось, це матиме сенс, коли ви читаєте відповідні кроки.

Отже, ми робимо це для кожної точки інтересу, яку виявив детектор. Для кожної точки інтересу ми отримаємо вектор булевих значень.


Тепер, щоб відповідати двом зображенням ( третій крок; відповідність ), робимо абсолютно те саме, що і для іншого зображення, ми виявляємо, а потім описуємо за допомогою КОРОТКОГО. Наприклад, скажімо, що ми маємо 10 балів у кожному зображенні (це завжди може спрацювати, якщо ми отримаємо 10 найцікавіших точок у кожному зображенні), ми використовуємо BRIEF для опису кожного виправлення, наприклад, 50 пар, тому кожне зображення буде описане 10 векторів 50 булевих значень.

Для порівняння двох зображень ми знаходимо найближчого сусіда кожного вектора від першого зображення до кожного другого вектора від другого зображення. Ми використовуємо дистанцію Хеммінга, яка є досить швидкою, наприклад приклад дистанції

забивання відстані ((0, 1, 1), (0, 0, 0)) = 2

відбійний відстань ((0, 1, 1), (0, 1, 1)) = 0

відбійний відстань ((0, 1, 1), (1, 0, 0)) = 3

забиваннявідстань ((0, 1, 1), (1, 1, 1)) = 1

В основному, скільки неправильних листувань

Сподіваюся, що це допомагає


Дуже дякую, я міг зрозуміти алгоритм. Але у мене є ще питання, як щодо афінних, перспективних змін та змін освітленості? Чи буде бітовий рядок подібним у разі зміни освітленості чи точки зору?
максимум

Якщо кількість змін-освітленості дорівнює для всіх пікселів, так, вона все одно працюватиме, якщо вона відрізняється від пікселя до пікселя (деякі пікселі збільшуються, інші зменшуються), то це проблема. Схоже, що афінність працює просто чудово (виходячи з їх результатів), але вона безумовно досягне точки, коли вона перестає працювати (насправді за їх результатами (рис. 3) вони показують, що ви можете завантажити зображення і подивитися, що таке стіна 1 | 2, Стіна 1 | 3 відповідають). Їх метод не є інваріантним обертанням (це не так важко помітити), і вони прямо говорять про це.
Roronoa Zoro

Дякую y за ваше пояснення. Я дуже добре розумію КРАТИЙ дескриптор.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.