Дорисовка 3D-модели в кадр Гумин Егор Щербаков Александр

advertisement
Дорисовка 3D-модели
в кадр
Гумин Егор
Щербаков Александр
Задача
Реалистично
дорисовать в кадр
объект
Реализации
Дорисовка куба по маркеру в видео (OpenCV)
Дорисовка модели чайника на фото с коробкой
(OpenCV, OpenGL, PyGame)
Дорисовка модели на коробку в видео (OpenCV,
OpenGL)
Технологии
Python
OpenCV
PyOpenGL
PyGame
Реализация 1: видео и маркер
• Калибруем камеру по заранее сделанным фотографиям
с шахматной доской (метод Zhengyou Zhang), получаем
матрицу внутренних параметров камеры и значение
дисторсии
• Выполняем поиск черного квадрата в каждом кадре
видеопотока
• Если квадрат найден, получаем координаты его углов (в
коорд. экрана)
• Сопоставляем каждому из углов на кадре его позицию в
виртуальных трехмерных координатах, получаем вектор
поворота и сдвига виртуальной камеры
• Назначаем точки куба в виртуальном пространстве и
проецируем на экран, используя параметры
виртуальной камеры
Реализация 1: видео и маркер
Реализация 1: видео и маркер
• Калибруем камеру по заранее сделанным фотографиям
с шахматной доской (метод Zhengyou Zhang), получаем
матрицу внутренних параметров камеры и значение
дисторсии
• Выполняем поиск черного квадрата в каждом кадре
видеопотока
• Если маркер найден, получаем координаты его углов (в
коорд. экрана)
• Сопоставляем каждому из углов на кадре его позицию в
виртуальных трехмерных координатах, получаем вектор
поворота и сдвига виртуальной камеры
• Назначаем точки куба в виртуальном пространстве и
проецируем на экран, используя параметры
виртуальной камеры
Реализация 1: скриншоты
Реализация 2: фото и OpenGL
• Калибруем камеру, получаем матрицу внутренних
параметров
• Делаем фото поверхности с разных ракурсов,
включая вид сверху
• С помощью SIFT ищем ключевые точки поверхности
на двух фото (вид сверху, и фото, куда хотим
дорисовать модель)
• Находим матрицу гомографии между этими
группами точек
• Зная, что на первом фото камера сверху, получаем
векторы сдвига и поворота камеры для второго
фото, преобразуем их в матрицу внешних
параметров
Реализация 2: фото и OpenGL
Реализация 2: фото и OpenGL
• Калибруем камеру, получаем матрицу внутренних
параметров
• Делаем фото поверхности с разных ракурсов,
включая вид сверху
• С помощью SIFT ищем ключевые точки поверхности
на двух фото (вид сверху, и фото, куда хотим
дорисовать модель)
• Находим матрицу гомографии между этими
группами точек
• Зная, что на первом фото камера сверху, получаем
векторы сдвига и поворота камеры для второго
фото, преобразуем их в матрицу внешних
параметров
Реализация 2: фото и OpenGL
• Отрисовываем фон (конвертируем фото в
текстуру и натягиваем на полигон,
расположенный перед камерой)
• Зададим ModelView-матрицу OpenGL, на основе
внешних параметров камеры
• Зададим Projection-матрицу на основе
внутренних параметров
• Отрисуем объект на фото средствами OpenGL
Реализация 2: скриншот
Реализация 3: видео и OpenGL
Реализация 3: видео и OpenGL
Download