Нахожу в тесте вопросы, которые в принципе не освещаются в лекции. Нужно гуглить на других ресурсах, чтобы решить тест, или же он всё же должен испытывать знания, полученные в ходе лекции? |
Проективная геометрия в компьютерном зрении
1. Проективная геометрия в компьютерном зрении
Презентацию к лекции Вы можете скачать здесь.
Данный раздел посвящен проективной геометрии в компьютерном зрении. Начнем с примера использования проективной геометрии. На рисунке можно увидеть интересный эффект: фотографию можно проинтерпретировать как будто перед вами дыра в асфальте и вы смотрите в нее. Понятно, что на самом деле на асфальте лишь изображение, нарисованное с помощью законов проективной геометрии.
Предположим, что для этого рисунка мы попытаемся решить задачу компьютерного зрения, т. е. по данному изображению понять, что здесь: картина, нарисованная на асфальте, или дыра в асфальте. Если не использовать знания об окружающем мире (вс?-таки маловероятно, что это отверстие в асфальте из которого пытаются выбраться люди), то по одному изображению эту задачу сложно разрешить и восстановить реальную трехмерную структуру. С такими двусмысленностями мы в настоящем разделе будем часто сталкиваться. Для их разрешения мы будем использовать второе изображение сцены и, уже имея два изображения сцены, мы сможем понять, какова же ситуация на самом деле.
Прежде всего, необходимо сказать о литературе. В проективной геометрии есть своя библия – источник, в котором вы сможете найти ответ почти на любой вопрос по проективной геометрии – Richard Hartley and Andrew Zisserman "Multiple View Geometry in Computer Vision".
1.1. Приложения
Поговорим о приложениях и мотивации – зачем вообще используется геометрия в компьютерном зрении. Рассмотрим одно из приложений. Вы хотите сконструировать машину, которая могла бы ездить без водителя, используя компьютерное зрение: она ориентировалась бы в мире по изображению. Или, говоря более обще, вы хотите, чтобы робот мог автоматически определять курс в пространстве, и перемещаться из точки A в точку B. Такой машине или роботу нужно не просто знать изображения – нужно понимать, какая структура мира за этими изображениями стоит: где дорога и можно ехать, а где уже дома и ехать нельзя. Нужно восстановить трехмерную структуру. Если не так глобально рассматривать задачу навигации, а только ситуацию, когда робот работает в ограниченных условиях, то все равно нужно понимать, как устроен трехмерный мир. Если мы хотим, чтобы робот мог распознать объект, взять его, отнести и что-нибудь с ним сделать, то недостаточно просто найти его на двумерном изображении – нужно понять, где этот объект расположен в пространстве.
Нужно знать его трехмерные координаты, его ориентацию. Только после этого робот сможет понять, как двигать рукой в пространстве для того, чтобы этот объект взять. Для этого нужно понимать, по каким законам мир отображается в изображение и обратно, чтобы восстановить эту трехмерную структуру.
Вот еще один пример – мы хотим сконструировать систему помощи водителю, которая автоматически детектирует пешеходов, и если пешеход оказался достаточно близко к машине – впереди нее, то она начинает автоматически тормозить.
Требуется не просто продетектировать пешехода и остановиться – вновь необходимо восстановить трехмерную структуру – определить на каком расстоянии находится пешеход, оценить, что произойдет кризис, если мы не остановимся и только после этого уже начать тормозить.
Еще один пример – встраивание в изображение виртуальных объектов. Мы не можем просто нарисовать их поверх всего: как правило, это будет выглядеть весьма неестественно. Мы должны встроить его с учетом геометрии сцены для того, чтобы этот объект был физически корректно расположен.
Кот Гарфилд на рисунке не просто нарисован поверх всего изображения, он корректно встроен в сцену.
Существует целая технология – дополненная реальность: вы снимаете картинку с мобильного телефона и у вас на эту картинку встраивается какой-нибудь виртуальный объект. Для того чтобы это все было естественно – нужно использовать геометрию сцены. Сначала мы снимаем сцену и восстанавливаем ее трехмерную структуру, например, используя детекторы ключевых точек и дескрипторы. Для более правильного восстановления трехмерной структуры используется много изображений. После этого шага можно встраивать виртуальные объекты с уч?том этой трехмерной структуры.