SlideShare a Scribd company logo
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхности по видеозаписи
Проблематика
Реконструировать 3D модель с помощью нескольких точек
обзора:
+ +
Оглавление
1 Введение
2 Изображение и пространство
3 Игры с камерой
4 Пиксели и воксели
5 Неоднородное пространство
6 Заключение
Изображение и пространство
2 Изображение и пространство
Моделируем камеру
Позиционируем камеру
От 2D к 3D
Моделируем камеру
Стеноп (pinhole camera) в центре мира:
xw
yw
zw
c
c′
q
q′
x
y
c′
y
c′
x
f
q′
y
q′
x
Моделируем камеру
Матрица проекции:
⎡
⎣
q′
x
q′
y
1
⎤
⎦ ≡ K
⎡
⎣
qx
qy
qz
⎤
⎦ где K =
⎡
⎣
fx s c′
x
0 fy c′
y
0 0 1
⎤
⎦ (1)
Обратная проекция:
⎡
⎣
d′
x
d′
y
d′
z
⎤
⎦ ≡ K−1
⎡
⎣
q′
x
q′
y
1
⎤
⎦ (2)
⎡
⎣
dx
dy
dz
⎤
⎦ =
1
||(d′
x , d′
y , d′
z)T ||
⎡
⎣
d′
x
d′
y
d′
z
⎤
⎦ (3)
Моделируем камеру
Способы убрать оптические искажения линзы:
Работать с выправленными изображениями
Таблицей соответствий
Моделировать их полиномиальной функцией
. . .
Позиционируем камеру
Определяем две системы координат:
{xw , yw , zw } - система координат мира
{xc, yc, zc} - система координат камеры
Разница между ними определяется вектором и матрицей:
tw
c - вектор сдвига
Rw
c - матрица поворота
Позиция камеры: {Rw
c , tw
c }
Позиционируем камеру
Уравнение проекции:
⎡
⎣
q′
x
q′
y
1
⎤
⎦ ≡ KRwT
c [I3| − tw
c ]
⎡
⎢
⎢
⎣
qx
qy
qz
1
⎤
⎥
⎥
⎦ (4)
Обратная проекция:
⎡
⎣
d′
x
d′
y
d′
z
⎤
⎦ ≡ RwT
c K−1
⎡
⎣
q′
x
q′
y
1
⎤
⎦ (5)
От 2D к 3D
Метод средней точки:
c1
I1
c2
I2
q1
q2
q
d1 d2
𝛼d1 − 𝛼′d2 = c2 − c1
q = c1+𝛼d1+c2+𝛼′d2
2
Игры с камерой
3 Игры с камерой
Интересные точки
Соединяем точки
Итеративное обновление
Алгоритм SfM
Цель: найти относительные позиции камер
фотографировавших каждое изображение.
В этой секции кратко описывается алгоритм:
Etienne Mouragnon, Maxime Lhuillier, Michel Dhome, Fabien
Dekeyser and P. Sayd. Generic and real-time structure from motion
using local bundle adjustment. In Image and Vision Computing
(IVC), vol. 27(8), pp. 1178–1193, july 2009.
Интересные точки
Детектор углов Харриса:
Интересные точки
Принцип работы:
Нет изменений во
всех направлениях:
плоский регион
Изменения в одном
направлении: грань
Изменения во всех
направлениях: угол
Соединяем точки
Можно использовать кросс-корреляцию ZNCC:
Соединяем точки
Получаем набор дорожек:
Iki−1 Iki
. . .
Ij−1 Ij
qki−1 qki
qj−1 qi
q′
ki−1
q′
ki q′
j−1
Итеративное обновление
Поддерживаем в памяти:
Позиции камер
Облако точек
Для каждого нового изображения (кроме первых трёх):
1 Рассчитываем позицию камеры
2 Рассчитываем координаты новых точек
Позиция камеры
1 Мы знаем 3D координаты некоторых
2 Мы знаем их 2D координаты в текущем изображении
3 Трех достаточно что-бы рассчитать позицию камеры
⎡
⎣
q′
x
q′
y
1
⎤
⎦ ≡ KRwT
c [I3| − tw
c ]
⎡
⎢
⎢
⎣
qx
qy
qz
1
⎤
⎥
⎥
⎦ (6)
Вводим понятие ошибки
Разница между теоретическим и реальным результатом:
c
q′
q
d′
q dq
𝛼q
Добавим надёжность
Используем RANSAC:
Выбираем 3 случайных точки
Рассчитываем позицию камеры
Рассчитываем ошибку для всех 3D точек
Их сумма в квадрате очки этого результата
Повторяем N раз
Оставляем результат с наименьшим количеством очков
Считаем точки и оптимизируем
Считаем координаты 3D точек:
Рассчитываем 3D координаты точек видимых как
минимум в 3 кадрах
Используем третий кадр для проверки
Оптимизируем результат при помощи алгоритма
Levenberg-Maquard:
Улучшаем позицию 3 последних камер
Улучшаем точки видимые в 10 последних кадрах
Инициализация процесса
Мы работаем с 3 первыми кадрами
Если мы знаем соответствия между 5 точками в двух
кадрах:
Мы можем рассчитать позиции камер
И 3D координаты этих точек
Мы рассчитываем координаты первой и третьей камеры
Потом мы рассчитываем координаты второй
Используем RANSAC для надёжности
Пиксели и воксели
4 Пиксели и воксели
Метод и его ограничения
Разделяем и сортируем
Красим воксели
Результаты
Плюсы и минусы
Voxel coloring
Рассмотрим метод описанный в
Steven M. Seitz, Charles R. Dyer. Photorealistic scene
reconstruction by voxel coloring. In International Journal of
Computer Vision (IJCV), vol. 35(2), pp. 151–173, november 1999
Ограничения
Объем занимаемый камерами должен быть вне
реконструироемой сцены.
Разделяем пространство
Равномерно делим пространство на воксели:
Сортируем воксели
Сортируем воксели по дальности от камеры:
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
4
4
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
5
5
5
6
6
6
6
6
6
6
6
6
6
7
7
7
7
7
7
7
7
7
7
8
8
8
8
8
8
8
8
8
8
9
9
9
9
9
9
9
9
9
9
10
10
10
10
10
10
10
10
10
10
Красим воксели
Обрабатываем слой за слоем:
Для каждого вокселя:
Для каждой камеры Ci :
Проецируем воксель в камеру
Проверяем что луч от вокселя к камере не пересекает
заполненных вокселей
Запоминаем цвет ci соответствующего пикселя
Считаем корреляцию между цветами c1,. . . ,cn:
Если корреляция  заданного значения:
Помечаем воксель как заполненный
Цвет вокселя, среднее между c1,. . . ,cn
Если меньше: воксель отмечается как пустой
Заполненный воксель
Пример заполненного вокселя:
Пустой воксель
Пример пустого вокселя:
Результат: динозавр
Результат: роза
Плюсы и минусы
Плюсы:
Простота реализации
Хорошие результаты
Минусы:
Объект должен быть цветастым
Большое количество вычислений
Огромное потребление памяти с ростом размера модели
Неоднородное пространство
5 Неоднородное пространство
Описание метода
Делим пространство
Экстрагируем поверхность
Результаты
Плюсы и минусы
Space carving
Рассмотрим метод описанный в
Maxime Lhuillier, Shuda Yu. Manifold surface reconstruction of an
environment from sparse Structure-from-Motion data. In Computer
Vision and Image Understanding (CVIU), vol. 117(11), pp.
1628–1644, november 2013.
На вход он принимает позиции камер и облако точек и связи
между ними
Делим пространство
Этап 1: Рассчитываем триангуляцию Делоне
Делим пространство
Этап 2: Сортируем тетраэдры на пустые и полные
00
2
0
2
0
2
3
2
0
2
0
0
0
0
0
0
c1
c2
Экстрагируем поверхность
Если использовать границу между свободным и заполненным
пространством из предыдущего этапа, то поверхность будет
некорректна.
Корректно Артефакт
Экстрагируем поверхность
Этап 3: Наращивание пространства
0
1
1
2
0
2
2
0
3
2
2
3
3
1
0
1
0
3
3
0
Экстрагируем поверхность
Этап 3: Наращивание пространства
0
1
1
2
0
2
2
0
3
2
2
3
3
1
0
1
0
3
3
0
Экстрагируем поверхность
Этап 3: Наращивание пространства
0
1
1
2
0
2
2
0
3
2
2
3
3
1
0
1
0
3
3
0
Экстрагируем поверхность
Этап 3: Наращивание пространства
0
1
1
2
0
2
2
0
3
2
2
3
3
1
0
1
0
3
3
0
Экстрагируем поверхность
Этап 3: Наращивание пространства
0
1
1
2
0
2
2
0
3
2
2
3
3
1
0
1
0
3
3
0
Экстрагируем поверхность
Этап 3: Наращивание пространства
0
1
1
2
0
2
2
0
3
2
2
3
3
1
0
1
0
3
3
0
Экстрагируем поверхность
Этап 3: Наращивание пространства
0
1
1
2
0
2
2
0
3
2
2
3
3
1
0
1
0
3
3
0
Экстрагируем поверхность
Этап 3: Наращивание пространства
0
1
1
2
0
2
2
0
3
2
2
3
3
1
0
1
0
3
3
0
Экстрагируем поверхность
Этап 4: Наращивание пакетами
Мы хотим добавить два оставшихся тетраэдра
Экстрагируем поверхность
Этап 4: Наращивание пакетами
Если добавить один из двух, получим артефакт
Экстрагируем поверхность
Этап 4: Наращивание пакетами
Но можно добавить сразу два
Экстрагируем поверхность
Резюме алгоритма:
1 Добавляем тетраэдры по одному, пока возможно
2 Для каждой вершины поверхности:
1 Пытаемся добавить тетраэдры содержащие вершину
одновременно
2 Если получилось, останавливаем цикл
3 Если пустое пространство увеличилось, goto 1
Результат: Церковь
Результат: Город
Плюсы и минусы
Плюсы:
Быстрота вычислений
Возможность работать с большими пространствами
Минусы:
Визуальный результат среднего качества
Заключение
Надеюсь что реконструкция поверхностей больше не кажется
вам черной магией.
Полезные инструменты:
OpenCV - http://opencv.org
Ceres - http://ceres-solver.org
CGAL - http://www.cgal.org
Для связи со мной: vadim_litvinov (Гав-гав!) fastmail.com

More Related Content

PPT
20111204 computer graphics_galinsky_lecture12_real_time
Computer Science Club
 
PPT
интегралы
tomik1044
 
PDF
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
Омские ИТ-субботники
 
PDF
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
Омские ИТ-субботники
 
PDF
2017-02-04 02 Яков Лило. Решение задач
Омские ИТ-субботники
 
PDF
Trademark Violations Corey L. Harris United States Trademark.
Corey L. Harris Sr.
 
PPTX
Powerpoint1
Irene Bugtong
 
PDF
adaptation-future-ROV
Myung Jin(MJ) Kim
 
20111204 computer graphics_galinsky_lecture12_real_time
Computer Science Club
 
интегралы
tomik1044
 
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
Омские ИТ-субботники
 
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
Омские ИТ-субботники
 
2017-02-04 02 Яков Лило. Решение задач
Омские ИТ-субботники
 
Trademark Violations Corey L. Harris United States Trademark.
Corey L. Harris Sr.
 
Powerpoint1
Irene Bugtong
 
adaptation-future-ROV
Myung Jin(MJ) Kim
 

Viewers also liked (17)

PPTX
Evaluation question 4
SammyCondo
 
PDF
媒體好色:如何陪孩子談心、談性(Mass media influences on sexuality: How to talk about sex wit...
Sabrina Huang
 
PDF
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
Омские ИТ-субботники
 
PDF
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
Омские ИТ-субботники
 
PPTX
SUMBER ILMU DALAM FILSAFAT ILMU
IFTITAH INDRIANI
 
PDF
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
Омские ИТ-субботники
 
PDF
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
Омские ИТ-субботники
 
PDF
2016-12-03 03 Евгений Тюменцев. DSL на коленке
Омские ИТ-субботники
 
PDF
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
Омские ИТ-субботники
 
PDF
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
Омские ИТ-субботники
 
PDF
2016-09-17 03 Василий Полозов. WebRTC
Омские ИТ-субботники
 
PDF
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
Омские ИТ-субботники
 
PDF
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
Омские ИТ-субботники
 
PPTX
Peranan Rakyat dalam upaya Bela Negara
mulyana Ahmad
 
PPT
1008461 7 wahyu sebagai sumber ilmu yang azali
Mufakkirah Sumayyah
 
PDF
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
Омские ИТ-субботники
 
PPTX
The EU Data Protection Regulation and what it means for your organization
Sophos Benelux
 
Evaluation question 4
SammyCondo
 
媒體好色:如何陪孩子談心、談性(Mass media influences on sexuality: How to talk about sex wit...
Sabrina Huang
 
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
Омские ИТ-субботники
 
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
Омские ИТ-субботники
 
SUMBER ILMU DALAM FILSAFAT ILMU
IFTITAH INDRIANI
 
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
Омские ИТ-субботники
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
Омские ИТ-субботники
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
Омские ИТ-субботники
 
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
Омские ИТ-субботники
 
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
Омские ИТ-субботники
 
2016-09-17 03 Василий Полозов. WebRTC
Омские ИТ-субботники
 
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
Омские ИТ-субботники
 
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
Омские ИТ-субботники
 
Peranan Rakyat dalam upaya Bela Negara
mulyana Ahmad
 
1008461 7 wahyu sebagai sumber ilmu yang azali
Mufakkirah Sumayyah
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
Омские ИТ-субботники
 
The EU Data Protection Regulation and what it means for your organization
Sophos Benelux
 
Ad

Similar to 2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхности по видеозаписи (20)

PDF
Методы удаления артефактов в видео
MSU GML VideoGroup
 
PDF
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Dmitry Kornev
 
PDF
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Bitworks Software
 
PDF
CV2011-2. Lecture 09. Single view reconstructin.
Anton Konushin
 
PPTX
Tomato Engine: Как мы создавали онлайн шутер с авторитарным сервером
DevGAMM Conference
 
PPTX
Лекция 8 Основы 3D обработки
Victor Kulikov
 
PPT
Презентация на тему: Повторение курса информатики 7 класс
2berkas
 
PDF
Ренессанс графики на клиенте
Anton Korzunov
 
PPT
29. Сжатие изображений.ppt
MisterTom1
 
PPT
Поиск объектов
LiloSEA
 
PPT
якобовский - введение в параллельное программирование (3)
Michael Karpov
 
PDF
V ray2
guest062370d
 
PDF
CV2011-2. Lecture 07. Binocular stereo.
Anton Konushin
 
PPT
FaceDetection+GenderRecognition_review
Khryashchev
 
PPT
Presentation Diplom
guestc80a581
 
PPTX
Расчетная работа Цифровой коллаж
sheplyakov
 
PDF
Лекция 12. Быстрее, Python, ещё быстрее.
Roman Brovko
 
PDF
Расчёт дифракционных картин
Timur Shaporev
 
Методы удаления артефактов в видео
MSU GML VideoGroup
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Dmitry Kornev
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Bitworks Software
 
CV2011-2. Lecture 09. Single view reconstructin.
Anton Konushin
 
Tomato Engine: Как мы создавали онлайн шутер с авторитарным сервером
DevGAMM Conference
 
Лекция 8 Основы 3D обработки
Victor Kulikov
 
Презентация на тему: Повторение курса информатики 7 класс
2berkas
 
Ренессанс графики на клиенте
Anton Korzunov
 
29. Сжатие изображений.ppt
MisterTom1
 
Поиск объектов
LiloSEA
 
якобовский - введение в параллельное программирование (3)
Michael Karpov
 
V ray2
guest062370d
 
CV2011-2. Lecture 07. Binocular stereo.
Anton Konushin
 
FaceDetection+GenderRecognition_review
Khryashchev
 
Presentation Diplom
guestc80a581
 
Расчетная работа Цифровой коллаж
sheplyakov
 
Лекция 12. Быстрее, Python, ещё быстрее.
Roman Brovko
 
Расчёт дифракционных картин
Timur Shaporev
 
Ad

More from Омские ИТ-субботники (16)

PDF
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
Омские ИТ-субботники
 
PDF
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
Омские ИТ-субботники
 
PDF
2017-05-06 02 Илья Сиганов. Зачем учить машины?
Омские ИТ-субботники
 
PDF
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
Омские ИТ-субботники
 
PDF
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
Омские ИТ-субботники
 
PDF
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
Омские ИТ-субботники
 
PDF
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
Омские ИТ-субботники
 
PDF
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
Омские ИТ-субботники
 
PDF
2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS
Омские ИТ-субботники
 
PDF
2016-08-20 03 Сергей Горбачев. Planning poker в Scrum
Омские ИТ-субботники
 
PDF
2016 06-11 Елена Гальцина. Дизайнер и разработчик. От неловких встреч к долго...
Омские ИТ-субботники
 
PDF
2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...
Омские ИТ-субботники
 
PDF
2016 06-11 Дмитрий Алексеенков. Android Data Binding
Омские ИТ-субботники
 
PDF
2016 06-11 Данил Перевалов. Создание простых анимаций на андроид
Омские ИТ-субботники
 
PDF
2016-04-30 05 Даниил Валов. Apiary - где-то между фронтендом и бэкэндом
Омские ИТ-субботники
 
PPTX
2016-04-30 04 Ольга Конорева. Взлеты и падения идеального внутреннего проекта
Омские ИТ-субботники
 
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
Омские ИТ-субботники
 
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
Омские ИТ-субботники
 
2017-05-06 02 Илья Сиганов. Зачем учить машины?
Омские ИТ-субботники
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
Омские ИТ-субботники
 
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
Омские ИТ-субботники
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
Омские ИТ-субботники
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
Омские ИТ-субботники
 
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
Омские ИТ-субботники
 
2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS
Омские ИТ-субботники
 
2016-08-20 03 Сергей Горбачев. Planning poker в Scrum
Омские ИТ-субботники
 
2016 06-11 Елена Гальцина. Дизайнер и разработчик. От неловких встреч к долго...
Омские ИТ-субботники
 
2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...
Омские ИТ-субботники
 
2016 06-11 Дмитрий Алексеенков. Android Data Binding
Омские ИТ-субботники
 
2016 06-11 Данил Перевалов. Создание простых анимаций на андроид
Омские ИТ-субботники
 
2016-04-30 05 Даниил Валов. Apiary - где-то между фронтендом и бэкэндом
Омские ИТ-субботники
 
2016-04-30 04 Ольга Конорева. Взлеты и падения идеального внутреннего проекта
Омские ИТ-субботники
 

2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхности по видеозаписи