Недавно мы опубликовали статью, в которой был представлен новый дескриптор функции локального изображения под названием BEBLID: усиленный эффективный двоичный дескриптор локального изображения. Мы сделали доступным его исходный код: https://github.com/iago-suarez/BEBLID Этот пост является неформальным введением к нему, и я надеюсь убедить вас в его интересе.



Если в компьютерном зрении произошла недавняя революция, то это, без сомнения, глубокое обучение. Сверточные нейронные сети (CNN) - прекрасные инструменты для автоматического изучения очень богатых функций изображения. Они мощные, сквозные, обучаемые и представляют очень абстрактные знания, но у них есть главный недостаток: они медленные! Если вы попытаетесь подключить одну из этих сетей к своему мобильному телефону, часто используя ее, вы, вероятно, увидите, как ваш мобильный телефон начинает гореть, а ваша батарея разряжается. Вот почему эффективное видение по-прежнему имеет смысл.

Есть особый случай, когда это становится более важным, если это возможно: трехмерное зрение. Большинство техник трехмерного зрения, таких как одновременная локализация и отображение (SLAM), структура из движения (SfM) или самолокация в реальном времени, зависят от быстрого сопоставления функций для реализации функций некоторой модели сцены и тех, которые камера видит прямо сейчас.

Именно в этом контексте низкоуровневые функции по-прежнему играют важную роль. Но что такое местная особенность? Ну, просто область, которую легко распознать: капля, угол, сегмент ... Если вам нужно хорошее введение, я рекомендую этот учебник от OpenCV. Дело в том, что мы обычно хотим, чтобы наш метод запоминал эти углы таким образом, чтобы в следующий раз, когда он их увидел, он сказал: Эй, я думаю, мы уже встречались раньше! Именно этим и занимается BEBLID.

BEBLID описывает небольшую часть изображения с помощью набора нулей и единиц (двоичная строка) таким образом, что в следующий раз, когда мы обнаружим ту же часть изображения с другим освещением или с другой точки зрения, обе двоичные строки будут очень похоже. Бинарная строка похожа на отпечаток пальца изображения.

По сравнению с другими аналогичными дескрипторами, такими как ORB, LATCH или BinBoost, BEBLID быстрее и точнее описывает капли и углы, менее чем за 2 миллисекунды для описания одного изображения. Подробности смотрите в газете. Здесь я просто покажу вам пример того, как его использовать:

Пример работает с OpenCV 4.1.0. По сути, он импортирует дескриптор BEBLID, который вы можете найти здесь, обнаруживает ключевые точки ORB, описывает использование BEBLID, сопоставляет с OpenCV BFMatcher и печатает совпадающие функции между обоими изображениями. У вас есть полный код в демонстрации BEBLID.

Мы планируем сделать запрос на включение, чтобы включить дескриптор в OpenCV, поэтому в ближайшем будущем мы предоставим демонстрации Python и Java. Прямо сейчас извините, но это всего лишь C ++.

Подводить итоги:

  • BEBLID - это очень эффективный двоичный дескриптор точек интереса.
  • Он извлекает 2000 дескрипторов на изображение менее чем за 2 мс в процессоре смартфона. Это здорово, если вы, как и я, занимаетесь дополненной реальностью.
  • Он так же быстр, как ORB, с лучшей картой, чем BinBoost, и близок к SIFT в тесте HPatches.