Введение 3
1 Постановка задач 4
1.1 Загрузка, обработка и отображение изображений сервером 4
1.2 Создание плавного перехода между панорамами 6
2 Графический движок Night Rain 7
2.1 Описание движка 7
2.2 Описание функционала 8
3 Проект построения фотореалистичной виртуальной реальности Night Vision
10
3.1 Алгоритм morphing 10
3.2 Барицентрические координаты 12
3.3 Триангуляция Делоне 13
3.4 Улучшенный алгоритм morphing 15
3.5 Применение улучшенного алгоритма morphing к нашей задаче 16
3.6 Задачи нахождения общих точек 17
Заключение 19
Список использованных источников 20
Приложения 21
В настоящий момент, широко используются панорамы для показа либо демонстрации общественных и публичных мест, таких как музеи, выставки, праздники. Часто панорамы используют для коммерческих целей, при продаже недвижимости либо рекламе. Панорамы используют на картах для удобного отображения местности и достопримечательностей. Сейчас это целое направление в виде 3D туров по городам с видом с воздуха. Начинается распространение интерактивных развлечений, где используют панорамы и VR очки. Существует много других направлений, в которых используются панорамы, в том числе фотографии в космосе, на других планетах и космических тел.
Панорамы это очень удобный инструмент для погружения в виртуальную реальность, так как качество компьютерной графики ещё далеко от фотореалистичной. Мы можем получать информацию об интересующих местах и мероприятиях дистанционно. Так же мы можем изучать те же музеи в любое время дня и ночи, даже когда они уже закрыты. Так же изучать старые выставки, при этом мы будем чувствовать, что мы находимся прямо там. Так же, это позволяет нам самим удобно предоставлять информацию любым пользователям.
Из данного направления следует несколько задач. Первая, автоматизация получения фотографий для панорам. Так как даже профессиональное оборудование необходимо долго настраивать и снимать панораму со всех ракурсов. То на съёмку даже небольшого количества помещений может уйти целый день. После чего будет необходимо корректно склеить панорамы и обработать их. На что может уйти ещё несколько дней обработки. Из чего вытекает задача автоматизации, так как затрачивается огромное количество человеческих ресурсов.
Данная проблема является тривиальной и решается использованием робота или машину с автопилотом для фотографий на больших дистанциях, к примеру, панорам сделанных для карт. В данной работе был использован несложный робот и веб камера для получения данных. Для создания панорам и их дальнейшей обработки. Так как мы имеем погрешности оборудования, таких, как движения робота, повороты робота, точность съёмки веб камеры. Мы будим рассматривать эти данные как худший случай, если пользователь ограничен в ресурсах и использует не профессиональное оборудование. Так же мы рассматриваем идеальный случай, когда мы имеем более мощного робота и профессиональную камеру с возможностью съёмки на 360 градусов. Для этого мы получили фото с профессиональной студии. И вручную 4
склеили панорамы в программе ptgui. В конечном счёте, мы получили два набора изображений из которых потом будут строиться панорамные кубы.
Второй задачей является, загрузка изображений на сервер их обработка и отображение посредством универсальных кроссплатформенных инструментов. Так как не многие сервисы имеют такую возможность.
Третей задачей является создания возможности плавного перехода между панорамами, что создаёт иллюзию нахождения в фотореалистичной виртуальной реальности.
Четвёртая задача это хранение, кодировка и сжатие полученных данных, так как даже при создании 20 панорам, мы имеем 16-18 гигабайт изображений, которые нужно обрабатывать в видео памяти, хранить на жёстком диске, отправлять и обрабатывать на сервере и загружать обратно пользователю. Если использовать изображения без сжатий и дополнительных алгоритмов хранения, то понадобиться непозволительно большие ресурсы компьютера и большое количество времени на обработку данных. Но, в данной бакалаврской работе эта задача не ставиться и мы используем небольшое количество данных.
Так же для пользователей было бы необходимо разработать удобный веб интерфейс, на который люди бы могли отправлять свои изображения и получать панорамы, так же просматривать чужие панорамы.
Было бы желательно дополнительно разработать удобный интерфейс для операторов, которые следят за роботом и получают панорамы с него. С возможностью редактирования, удаления и настрой, прямо во время съёмки роботом, для более быстрой и эффективной работы.
Было изучено API робота и написана программа взаимодействия с роботом, управлением роботом и его автоматизация для получения изображений. Был получен набор тестовых изображений посредством робота для использования их в построении панорам. Так же была проведена профессиональная фотосьёмка для получения высококачественных изображений и панорам для проверки алгоритмов на худшем и идеальном случаи.
Был написан графический движок Night Rain использующий последние технологии, такие как SDL 2.0, OpenGL 4.0, стандарты языка C++ 14. На основе этого движка написан проект Night Vision, который из исходных изображений строит панорамы и создаёт промежуточные панорамы создавая эффект плавного перехода между ними. Для этого были изучены и реализованы алгоритм morphing и его улучшенная версия посредством триангуляции Делоне.
В бакалаврской работе были исследованы библиотека OpenCV, алгоритмы нахождения общих точек, такие как SIFT, SURF, Harris Corner Detection. Было проведено сравнение на тестовых изображениях и написана программа использующая данные алгоритмы.
Основные задачи, которые были поставлены в начале работы были выполнены и мы получили программный продукт, который можно использовать для создания панорам и плавного перехода между ними.
Результаты бакалаврской работы докладывались на конференциях:
«Международная научная конференция студентов, аспирантов и молодых ученых «Молодежь и наука: проспект Свободный-2016» (Красноярск, 2016)».
1. Балк, М. Б. Геометрия масс / М.Б. Балк, В. Г. Болтянский — Москва: Наука, 1987. — 160 с.
2. Скворцов, А. В. Триангуляция Делоне и её применение. / А. В. Скворцов. — Томск: Изд-во Томского университета, 2002. — 128 с.
3. Learn Opencv [Электронный ресурс] : Face Morph Using OpenCV Режим доступа: http:// learnopencv.com/face-morph-using-opencv-cpp- python.
4. OpenGL programming guide : the official guide to learning OpenGL, version 4.3 / D. Shreiner, G. Sellers, J. Kessenich, B. Licea-Kane . — Michigan: the Khronos OpenGL ARB Working Group, 2013. — 919 c.
5. Luc Van Gool [Электронный ресурс] : Computer vision lab, SURF: Speeded Up Robust Features, Herbert Bay, Tinne Tuytelaars : Режим доступа: http://www.vision.ee.ethz.ch/~surf/eccv06.pdf
6. Harris Corner Detector, Robert Collins [Электронный ресурс] Penn State College of engineering Режим доступа: http://www.cse.psu.edu/~rtc12/CSE486/lecture06.pdf