Стерео-реконструкция Антон Конушин, Ольга Баринова, Вадим Конушин, Антон Якубенко, Александр Велижев МГУ ВМК, Graphics & Media Lab, Весна 2008 15.05.2008 http://courses.graphicon.ru 1 Подсказки На какие подсказки мы опираемся при вычислении формы наблюдаемых объектов? • • • • Затенение Текстура Фокус Движение 15.05.2008 http://courses.graphicon.ru 2 Движение • При движении камеры разные точки сцены передвигаются на разное расстояние 15.05.2008 http://courses.graphicon.ru 3 Стерео Точка сцены изображение изображение Центр проекции Центр проекции • • Два (и более) изображения одной и той же сцены • Два изображения называются «стереопарой» • Отрезок между оптическими центрами называется стереобазой Определяются проекции одной и той же точки сцены на оба (все) изображения 15.05.2008 http://courses.graphicon.ru 4 Виды стерео • Пассивное стерео • Используются обычные изображения, полученные в естественных условиях освещения • Активное стерео • Объект подсвечивается специально структурированным светом – Лазер – Проектор 15.05.2008 http://courses.graphicon.ru 5 Стерео Основной подход - триангуляция • Точка сцена находится как пересечение двух лучей – Луч проходит через оптический центр и точку изображения • Требуется – Калибровка камеры – Пара соответствующих точек 15.05.2008 http://courses.graphicon.ru 6 Метод средней точки • В общем случае лучи не пересекаются • Ошибки в калибровке камеры • Ошибки в измерении координат проекции • Общий перпендикуляр к лучам • Средняя точка 15.05.2008 http://courses.graphicon.ru 7 Линейный метод A m1 m2 P2 P1 • Исходные данные • Калибровки камер P1 и P2 • Известные проекции m1 и m2 • Надо найти: • Точку А 15.05.2008 http://courses.graphicon.ru 8 Линейная триангуляция X wu Y wv ≅ P Z w 1 wu = p A T 1 wv = p2T A w= p A T 3 X p Y = p Z p 1 T 1 T 2 T 3 p1T T = p2 A p3T up A = p A T 3 T 1 vp3T A = p2T A 2 уравнения на 3-и неизвестные координаты A 15.05.2008 http://courses.graphicon.ru 9 Варианты стерео-реконструкции Исходное уравнение для каждой точки на изображении m=P·A P = K⋅ I ⋅ C Матрица проекции Внутренняя калибровка −1 Внешняя калибровка У каждого изображения своя матрица проекции В общем случае все параметры в уравнении неизвестны! 15.05.2008 http://courses.graphicon.ru 10 Поиск соответствующих точек • «Соответствующие точки» (point match) • Пара (и более) точек на 2-х (и более) изображениях, которые соответствуют одной и той же точке сцены • Соответствующие пиксели • Задача поиска соответствующих точек • Для пикселей изображений N*M • В общем случае N*N*M*M вариантов • Одна из самых сложных задач в области машинного зрения 15.05.2008 http://courses.graphicon.ru 11 Эпиполярная геометрия Эпиполярная линия Эпиполярная плоскость Эпиполярная линия • Два центра проекций и точка сцены – эпиполярная плоскость • Эпиполярные линии – пересечение эпиполярной плоскости и плоскости изображений 15.05.2008 http://courses.graphicon.ru 12 Эпиполярная геометрия Эпиполярная линия Эпиполярная плоскость Эпиполярная линия Эпиполярное ограничение • Соответствующая точка на втором изображении должна лежать на эпиполярной линии • Снижает размерность задачи по поиску соответствующих точек • Вместо 2-х мерного поиска по всему изображению • 1-мерный поиск вдоль соответствующих эпиполярных линий 15.05.2008 http://courses.graphicon.ru 13 Общий случай • Два изображения обычно произвольным образом располагаются друг относительно друга • Эпиполярные линии проходят под произвольным углом в изображении • Поиск даже вдоль линии достаточно сложен 15.05.2008 http://courses.graphicon.ru 14 Ректификация стерео пары • Проецируем оба изображения на одну плоскость, параллельную стереобазе • Строки изображений параллельны стереобазы • Эпиполярные линии теперь совпадают со строчками изображения • Соответствующие точки лежат на одной и той же строчке изображения! 15.05.2008 http://courses.graphicon.ru 15 Пример ректификации стереопары 15.05.2008 http://courses.graphicon.ru 16 Алгоритмы поиска соответствий Поиск соответствий (stereo matching) на соответствующих эпиполярных линиях • Предполагается постоянная яркость всех точек сцены • Очень сложная задача • Множество подходов и алгоритмов – Хороший обзор доступен по адресу 15.05.2008 http://courses.graphicon.ru http://www.middlebury.edu/stereo/ 17 Подсказка «движение» X y Рассмотрим задачу на плоскости Y x z f C f baseline C’ x,y – cмещение проекции от принципиальной точки • Чем дальше точка от камеры, тем ее смещение – меньше • Разница между смещением точки на обоих кадрах называется «диспаритетом» 15.05.2008 http://courses.graphicon.ru 18 Диспаритет X • (x – x’) – диспаритет • x, x’ – разных знаков на примере! z • Чем больше диспаритет – тем x x’ f меньше глубина (z) f baseline C C’ X z x f b1 b2 C X’ x’ f C’ Вывести формулу просто Baseline = b1 + b2 19 Результаты стерео сопоставления • Данные из университета Цукубы • Яркость пикселя задает диспаритет – Чем ярче – тем больше диспаритет – Можно записывать просто смещение Сцена 15.05.2008 Контрольные данные http://courses.graphicon.ru 20 (ground truth) Простейшие стерео-алгоритм Для каждой эпиполярной линии Для каждого пикселя в левом изображении • Сопоставим его с каждым пикселем правого изображения • Выберем наиболее похожий пиксель (по некоторой мере) Развитие метода – сравнение окон (регионов) • • Окна должны быть похожими в некоторой метрике Обычно перебираются всевозможные варианты 21 Размер окна поиска – первый параметр! W=3 W = 20 Размер влияет на качество • Маленькое окно + Много шума – Высокая детализация • Большое окно + Мало шума – Низкая детализация 22 Результаты простейшего метода Сопоставление окон (лучший размер окна) 15.05.2008 http://courses.graphicon.ru Ground truth 23 Существуют методы получше Лучший результат Ground truth Boykov et al., Fast Approximate Energy Minimization via Graph Cuts, International Conference on Computer Vision, September 1999. Обзор и рейтинг методов: http://www.middlebury.edu/stereo/ 24 Карта глубины • Матрица, в каждой ячейке которой записано расстояние от фокуса до поверхности объекта • Описывает только одну сторону поверхности модели! 15.05.2008 http://courses.graphicon.ru 25 Глубина из диспаритета Изображение (1 of 2) Карта глубины [Szeliski & Kang ‘95] 3D-вид X z x x’ f C f baseline C’ • Чем больше диспаритет – тем меньше глубина (z) 26 Выбор стереобазы Все точки из этой области проецируются в один пиксель Размер пикселя Большая стереобаза Маленькая стереобаза Какая стереобаза будет оптимальной? • Слишком маленькая: низкая точность • Слишком большая: сложная проблема поиска соответствий 15.05.2008 http://courses.graphicon.ru 27 Карта глубины • Низкая точность реконструкции сцены • Сцена лишь разделяется на слои по глубине 15.05.2008 http://courses.graphicon.ru 28 Стерео по более чем 2-м кадрам Основной подход • Выбираем опорный кадр • Используем практически любой метод поиска соответствий – Заменяем меру ошибки сопоставления 2-х кадров на меру по всем кадрам Ограничения • Должны выбирать опорный кадр • Проблема видимости 15.05.2008 http://courses.graphicon.ru 29 Проблема видимости (visibility) Какие точки сцены видны на каких изображениях? Известная сцена Неизвестная сцена Прямая задача Обратная задача Известная сцена Известные изображения 15.05.2008 http://courses.graphicon.ru 30 Стерео по более чем 2-м кадрам • Невозможно сразу определить, виден пиксель или нет • Приходится использовать оценку «достоверности» соответствия точек • Порог на «похожесть» окон – Если наиболее похожие пикселы слишком непохожи – отбрасываем соответствие • Порог на изменение положения точки – Если при добавлении нового кадра координаты точки слишком сильно изменяются – отбрасываем соответствие • Специальные фильтры (например, фильтр Кальмана ) 15.05.2008 http://courses.graphicon.ru 31 Стерео по более чем 2-м кадрам • Pk – опорный кадр, P(k+1), Pn – используются для уточнения 15.05.2008 http://courses.graphicon.ru 32 Стерео по более чем 2-м кадрам • Pk – опорный кадр • При использовании кадра P(k+2) смещение выходит за порог Общая схема алгоритма Этапы • • • • Откалибровать камеры Ректифицировать изображения Вычислить диспаритет (стерео-сопоставление) Оценить глубину Что вызывает ошибки? Ошибки калибровки камеры Низкое разрешение изображений Перекрытия Нарушения предположения о постоянной яркости пикселей (отражения) • Движущиеся объекты • Области изображения с низким контрастом • • • • 15.05.2008 http://courses.graphicon.ru 34 Стерео в реальном времени Робот «Кочевник» ищет метиориты в Антарктиде http://www.frc.ri.cmu.edu/projects/meteorobot/index.html Стерео используется для навигации роботов • Существует несколько программных реализаций стереореконструкции в реальном времени (опираются на простейший перебор) 35 Активное стерео (структурированный свет) Стерео по одному кадру Камера 1 Проектор Камера 1 Проектор Камера 2 С помощью проектора специальный шаблон проецируется на объект («структурированный свет») • Это упрощает проблему поиска соответствий 36 Активное стерео Объект Лазер Камера Лазер проецирует на объект полоску света (или точку) 15.05.2008 http://courses.graphicon.ru 37 Активное стерео Объект Лазер (x,y) Камера • Глубину каждой точки линии можно вычислить с помощью триангуляции • Как пересечение луча и плоскости 15.05.2008 http://courses.graphicon.ru 38 Лазерное сканирование Object Direction of travel Laser sheet CCD image plane Cylindrical lens Laser CCD Digital Michelangelo Project http://graphics.stanford.edu/projects/mich/ • С помощью лазера на объект проецируется полоска • Полоска «сканирует» всю поверхность объекта • Одна из наиболее точных схем на базе структурированного света 39 Лазерное сканирование Специальные приборы, сканирующие поверхность путем непосредственного измерения координат каждой точки на поверхности сцены. Достоинства: Не зависят от освещения Скорость >10 000 точек/сек Сканируют сцены разного размера Высокая точность Недостатки Высокая цена 40 Совмещение облаков точек • С каждой точки зрения получается карта глубины объекта • Модель только видимой части поверхности! • Карта глубины – облако точек • Для построения всей модели объекта необходимо • Объединить карты глубины в общую модель • Построить сеточную модель • Вычислить текстуру 15.05.2008 41 Два подхода к построению модели • Первый подход • Совмещение карт глубины в одно большое облако точек • Построение сеточной модели по облаку • Второй подход • Построение сеток для каждой карты глубины • Совмещение сеток в одну большую сеточную модель 15.05.2008 http://courses.graphicon.ru 42 Совмещение облаков точек • Пусть взаимное расположение карт глубины неизвестно • Если известны соответствия точек, тогда можно совместить карты глубины • Вычисление относительного поворота и сдвига • Кватернионы! 15.05.2008 http://courses.graphicon.ru 43 Совмещение облаков точек Если нет известных соответствий? Предположение • Пусть ближайшие точки соответствуют друг другу • Вычислить наилучшее преобразование 15.05.2008 http://courses.graphicon.ru 44 Совмещение облаков точек … повторяем процесс до тех пор, пока облака не совместятся • Iterated Closest Points (ICP) Сходится, если начальное положение достаточно близко к истинному результату 15.05.2008 http://courses.graphicon.ru 45 Совмещение облаков точек Недостатки • Требуется хорошее начальное приближение • Очень долго искать ближайшую точку • Выбросы (ошибки сканирования) • Существуют различные подходы к ускорению алгоритма Хороший обзор методов ускорения: http://www.cs.princeton.edu/~smr/papers/fasticp/ 15.05.2008 http://courses.graphicon.ru 46 Поиск начального приближения • Если известно положение всех исходных камер – Элементарно! • Точное измерение положения камер специальными устройствами • Специальные контрастные метки или шаблоны • «Общие подходы» - исследуются в настоящий момент • Поиск и сопоставление «характерных особенностей» в картах глубины 15.05.2008 http://courses.graphicon.ru 47 Построение сеточной модели J. C. Carr et al. Reconstruction and Representation of 3D Objects with Radial Basis Functions, Siggraph 2001 15.05.2008 http://courses.graphicon.ru 48 Триангуляция карты глубины • • • • Каждому пикселю изображения сопоставляется вершина Соседние вершины объединяются Глубина вершины берется из карты глубины Слишком узкие и наклоненные треугольники отбрасываются 15.05.2008 http://courses.graphicon.ru 49 Пример Текстурированная по одной карте глубины сетка 15.05.2008 http://courses.graphicon.ru 50 Объединение сеток • Воксельный подход • Пространство разбивается на воксели • Все сетки помещаются в воксельное пространство • Если несколько сеток попадают в один воксель – они объединяются 15.05.2008 http://courses.graphicon.ru 51 Текстурирование Входные данные: • Трехмерная полигональная модель • Набор изображений с калиброванных камер Выходные данные • Текстурированная модель • Изображение-текстура • Каждой вершине назначаются текстурные координаты 15.05.2008 http://courses.graphicon.ru 52 Модели, полученные лазерным сканером 15.05.2008 The Digital Michelangelo Project, Levoy et al. 53 Модели, полученные лазерным сканером 15.05.2008 The Digital Michelangelo Project, Levoy et al. 54 Модели, полученные лазерным сканером 15.05.2008 The Digital Michelangelo Project, Levoy et al. 55 Модели, полученные лазерным сканером 15.05.2008 The Digital Michelangelo Project, Levoy et al. 56 Модели, полученные лазерным сканером 15.05.2008 The Digital Michelangelo Project, Levoy et al. 57 Движущиеся объекты 15.05.2008 http://courses.graphicon.ru 58 Пространственно-временное стерео Черно-белые камеры Цветные камеры Видео-проекторы 15.05.2008 http://courses.graphicon.ru 59 15.05.2008 http://courses.graphicon.ru 60 время 15.05.2008 http://courses.graphicon.ru 61 время поверхность 62 время 63 время стерео 64 время стерео Активное стерео 65 время стерео Активное стерео «spacetime» стерео время движение time=1 67 время движение time=2 68 время движение time=3 69 время движение time=4 70 время движение time=5 71 время движение time Преимущества • разрешение • стабильность во времени 72 Пример стерео-реконструкции Исходные видео-потоки 15.05.2008 http://courses.graphicon.ru Реконструкция 73 Пример стерео-реконструкции Исходные видео-потоки 15.05.2008 http://courses.graphicon.ru Реконструкция 74 Объемное стерео Объем сцены V Калиброванные изображения Цель:: Цель Определить «занятость» и «цвет» точек в V http://courses.graphicon.ru 75 Дискретный алгоритм: Расскраска вокселей Дискретизированный Воксельный объем Калиброванные изображения Цель: Назначить цвет и прозрачность каждому вокселю в V так, чтобы он был согласован по цветам с изображениями 15.05.2008 http://courses.graphicon.ru 76 Фото-согласование Условие согласования по цветам (фото-согласование) - Воксель согласован по цвету, если он виден на всех изображениях под одним цветом ? 15.05.2008 http://courses.graphicon.ru 77 Согласованные по цветам сцены Дискретизированный Воксельный объем N 3 вокселей C цветов Истинная сцена 15.05.2008 Фото--согласованные Фото сцены 3 N Все сцены (C ) 78 Алгоритмы раскраски вокселей 1. Цветов=2 (Силуэты) • Пересечение объемов 2. Кол-во цветов не ограничено • ограничение на точки обзора 3. Общий случай 15.05.2008 http://courses.graphicon.ru 79 Реконструкция по силуэтам (Цветов 2) Бинарные изображения Подход • Построить конус видимости по каждому силуэту • Пересечь конусы видимости 15.05.2008 http://courses.graphicon.ru 80 Пересечение объемов Результат содержит исходную сцену • В общем случае не совпадает с исходной сценой • В пределе (по всевозможным изображениям) результат называется видимой оболочкой 15.05.2008 http://courses.graphicon.ru 81 Воксельный алгоритм пересечения объемов • Раскрасим воксель черным, если он проецируется внутрь силуэта на каждом изображении • Удалим воксель, если он попадает вне силуэта хотя бы на 1-м изображении http://courses.graphicon.ru 82 Свойства пересечения объемов Преимущества • Легок в реализации • Быстрый • Можно ускорить с помощью окто-деревьев Недостатки • Невозможно моделировать полости объекта • Реконструкция не согласована по цветам • Необходимо определить силуэты объекта 15.05.2008 http://courses.graphicon.ru 83 Алгоритмы раскраски вокселей 1. Цветов=2 (Силуэты) • Пересечение объемов 2. Кол-во цветов не ограничено • ограничение на точки обзора 3. Общий случай 15.05.2008 http://courses.graphicon.ru 84 Раскраска вокселей 1. Выбрать воксель 2. Спроецировать и сравнить 3. Раскрасить, если согласован (разница меньше порога) Проблема видимости: На каких изображениях воксель виден? 85 Упорядоченный обход по глубине Слои Обход сцены Аналогично расчету видимости в визуализации! • Воксели на следующих плоскостях могут быть закрыты только вокселями предыдущих плоскостей 86 Порядок обхода для панорам • Камеры направленные в разные стороны • Плоский порядок обхода по глубине не подходит 15.05.2008 http://courses.graphicon.ru 87 Порядок обхода для панорам Слои расходятся по направлению «от центра» 88 Порядок обхода для панорам Слои направлению «от центра» 89 15.05.2008расходятся по http://courses.graphicon.ru Порядок обхода для панорам Слои направлению «от центра» 90 15.05.2008расходятся по http://courses.graphicon.ru Возможные конфигурации камер Ограничение • Сцена расположена вне выпуклой оболочки камеры Камеры направлены внутрь Камеры направлены вовне Камеры выше сцены Камеры внутри сцены 15.05.2008 http://courses.graphicon.ru 91 Получение калиброванных изображений Динозавр Поворотный стол 360°(21 фотка) 15.05.2008 http://courses.graphicon.ru Цветок 92 Раскраска вокселей Динозавр Цветов 70 K вокселей раскрашено 72 K вокселей раскрашено 7.6 M вокселей проверено 7.6 M вокселей проверено 7 мин вычислений 7 мин вычислений 15.05.2008 http://courses.graphicon.ru на 250MHz SGI 93 на 250MHz SGI Ограничения подхода Может не существовать порядка обхода вокселей по глубине для всех изображений! p q Требуется более общий алгоритм • Без ограничений на положение камеры • Без ограничений на топологию сцены 15.05.2008 http://courses.graphicon.ru 94 Алгоритмы раскраски вокселей 1. Цветов=2 (Силуэты) • Пересечение объемов 2. Кол-во цветов не ограничено • ограничение на точки обзора 3. Общий случай • Space carving [Kutulakos & Seitz 98] 15.05.2008 http://courses.graphicon.ru 95 Алгоритм Space Carving Изображение 1 Изображение N …... • • • • • Инициализация объема V содержащего в себе сцену Выбрать любой воксель на текущей поверхности Спроецировать на все видимые изображения Удалить, если он не согласован по цветам Повторить до сходимости 96 Фотооболочка V V Истинная сцена Фотооболочка Фотооболочка это объединение всех фото-согласованных сцен в V • Согласованная по цветам реконструкция сцены • Наименьшая фото-согласованная реконструкция 15.05.2008 http://courses.graphicon.ru 97 Алгоритм Space Carving Базовый алгоритм неудобен • Сложная процедура обхода Многопроходное «заметание» плоскостей • «Эффективный», можно использовать алгоритмы наложения текстуры • Быстро сходится 15.05.2008 http://courses.graphicon.ru 98 «Заметание плоскости» • Рассматривает воксели на 1-ой плоскости • Рассматриваем только камеры по одну сторону от плоскости 15.05.2008 http://courses.graphicon.ru 99 «Заметание плоскости» • Берем пересечение плоскости П и текущей модели V • Для каждого вокселя v из пересечения • Проецируем его на изображения • Если соответствующие пиксели не помечены – Проверяем фотосогласованность » Если не согласован – удаляем » Если согласован – помечаем пиксель 100 «Заметание плоскости» • Двигаем плоскость вдоль объема • Постепенно добавляем новые камеры • Можем проецировать всю плоскость целиком • Используя GPU или просто визуализируя плоскость с текстурой 15.05.2008 http://courses.graphicon.ru 101 Многопроходное заметание плоскостей • • 15.05.2008 «Заметаем» плоскости в каждом из 6и основных направлений Рассматриваем камеры, лежащие по одну сторону от плоскости True Scene http://courses.graphicon.ru Reconstruction 102 Многопроходное заметание плоскостей • • 15.05.2008 «Заметаем» плоскости в каждом из 6и основных направлений Рассматриваем камеры, лежащие по одну сторону от плоскости http://courses.graphicon.ru 103 Многопроходное заметание плоскостей • • 15.05.2008 «Заметаем» плоскости в каждом из 6и основных направлений Рассматриваем камеры, лежащие по одну сторону от плоскости http://courses.graphicon.ru 104 Многопроходное заметание плоскостей • • 15.05.2008 «Заметаем» плоскости в каждом из 6и основных направлений Рассматриваем камеры, лежащие по одну сторону от плоскости http://courses.graphicon.ru 105 Многопроходное заметание плоскостей • • 15.05.2008 «Заметаем» плоскости в каждом из 6и основных направлений Рассматриваем камеры, лежащие по одну сторону от плоскости http://courses.graphicon.ru 106 Многопроходное заметание плоскостей • После заметания во всех 6-и направлениях • Проверяем воксели, согласованность которых проверялась более чем на 1-м проходе • Проверяем их фотосогласование по всем изображениям, использовавшихся хотя бы на 1-м проходе • Если хотя бы 1 воксель дополнительный был удален – повторяем процесс с начала 15.05.2008 http://courses.graphicon.ru 107 Результаты Изображение (1 of 45) Реконструкция 108 Реконструкция Реконструкция Недостатки методов • Требуется постоянная освещенность • Проекция вокселя – не пиксель • Как ее правильно считать? • Сложно вычислить само согласование цветов 15.05.2008 http://courses.graphicon.ru 109