Сappasity 3D Scan – 3D сканирование с использованием Intel RealSense. Опыт разработки
В 2014 году нами было принято решение запустить софтверный стартап, где мы могли бы использовать наш пятилетний опыт в 3D-технологиях, накопленный при разработке игр. Тематика 3D реконструкции интересовала нас давно, и на протяжении 2013 года мы проводили многочисленные эксперименты с решениями других компаний — так исподволь накапливалось желание создать собственное. Как вы уже, наверное, поняли, наша мечта была успешно воплощена в реальность; хроника этого воплощения — под катом. Там же история наших взаимоотношений с Intel RealSense.Стерео реконструкцией мы занимались и ранее для собственных нужд, поскольку искали оптимальный способ производства 3D моделей, и использование решений по 3D захвату представлялось вполне логичным. 3D сканирование с использованием ручного сканера казалось нам самым доступным вариантом. В рекламе все выглядело просто, но оказалось, что процесс занимает много времени: часто теряется трекинг и приходится начинать с самого начала. Но больше всего огорчала размытая текстура. То есть, такой контент для игр нам не годился.Мы приценились к фотограмметрии и поняли, что лишних $100,000 долларов у нас нет. К тому же, требовались специальные навыки настройки камер и затем долгая постобработка высокополигональных данных. Получалось, что мы точно ничего не экономим, а, наоборот, все становилось значительно дороже, учитывая наши объемы производства контента. Именно в этот момент появилась мысль попробовать сделать что-то свое.
Изначально нами были продуманы требования к системе, которая была бы удобна для производства контента:
Стационарность системы — откалибровал один раз и можно снимать. Моментальная съемка — нажал и готово. Возможность подключать зеркальные камеры для фотореалистичного качества текстуры. Независимость системы от типа сенсоров — технологии не стоят на месте, и появляются новые сенсоры. Полная реализация технологии «клиент-сервер». Каждый клиент — это компьютер с сенсором. Отсутствие ограничений по количеству устройств — нам может понадобится моментально захватывать объекты разного размера и, следовательно, любые ограничения повлекут за собой проблемы. Возможность вывести модель на 3D печать. Наличие плагина для показа в браузере и SDK для интеграции в мобильные приложения. Вот такая система мечты. Аналогов мы не нашли, поэтому все писали сами. Прошел почти год и осенью 2014 года наконец-то появилась возможность рассказать про наши наработки потенциальным инвесторам. А уже в начале 2015 года мы продемонстрировали систему, собранную с использованием сенсоров Intel RealSense, на CES 2015.
Но что было до этого?
Написание сетевого кода с собственным протоколом передачи данных сразу же оправдало себя. Мы вели работу с сенсорами PrimeSense, однако, если при наличии более двух сенсоров на одном ПК, функционировали они крайне нестабильно. В тот момент мы и не задумывались, что компании Intel, Google и другие лидеры рынка уже работают над новыми сенсорами, но по привычке спроектировали расширяемую архитектуру. Соответственно, наша система легко поддерживала любое из этого оборудования.
Больше всего времени ушло на написание калибровки. Известные тулкиты для калибровки не были идеальными, так как никто глубоко не разбирал анатомию сенсоров PrimeSense и калибровались далеко не все нужные нам параметры. Мы отказались от заводской калибровки PrimeSense и написали собственную, основываясь на IR данных. Попутно было проведено множество исследований функционирования сенсоров и алгоритмов построения и текстурирования меша. Многое переписывалось и переделывалось. В результате мы заставили все сенсоры в нашей системе снимать одинаково. А заставив, сразу подали на патент и в настоящий момент имеем U.S. Patent Pending.
После того, как PrimeSense купила компания Apple, стало понятно, что стоит переключить внимание на других производителей. Благодаря уже имеющимся на тот момент наработкам, софт с сенсорами Intel RealSense заработал всего через две недели после получения сенсоров от компании Intel. Теперь мы используем Intel RealSense, а для съемок на больших дистанциях — Microsoft Kinect 2. Недавно смотрели CES keynote Intel на тему сенсоров для роботов. Возможно, они заменят нам Kinect 2, если станут доступны разработчикам.
При переходе на RealSense с новой силой заявила о себе проблема калибровки. Для того, чтобы окрасить точки облака в соответствующие цвета или затекстурить полученный из облака меш необходимо знать положения RGB и Depth камеры относительно друг друга. На RealSense планировалось вначале использовать ту же самую собственную ручную схему, что и на PrimeSense, но мы столкнулись с ограничением сенсоров — данные приходили уже после обработки фильтрами, а работа с RAW требует иного подхода. К счастью Intel RealSense SDK имеет функционал по преобразованию координат из одного пространство в другое, например, из Depth Space в Color Space, из Color в Depth Space, из Camera в Color и т.д. Поэтому, чтобы не для тратить время на разработку альтернативных методов калибровки было принято решение воспользоваться данным функционалом, который, на удивление, очень хорошо работает. Если сравнивать окрашенные облака точек с Primesense и c RealSense, то облака с RealSense окрашиваются более качественно.
[embedded content]
Что же у нас получилось? Сенсоры и камеры стоят по кругу вокруг снимаемого объекта. Мы их калибруем и находим позиции сенсоров, камер и их углы наклона относительно друг друга. Опционально мы используем камеры Canon Rebel для текстурирования как оптимальные по цене/качеству. Однако каких-либо ограничений тут нет, поскольку мы сами калибруем все оптические параметры, включая искажения.
Текстуры проецируются и блендятся сразу на 3D модель. Поэтому результат очень четкий.
3D модель строится из облаков точек, которые мы формируем из N сенсоров. Скорость захвата данных составляет от 5 до 10 секунд (зависит от типа и количества сенсоров). И мы получаем полную модель объекта!
Посмотреть 3D модель
Превью 3D модели:
В этом году мы планируем выпустить сразу 4 продукта: Сappasity Human 3D Scan для сканирования людей, Сappasity Room 3D Scan для помещений, Сappasity Furniture 3D Scan для мебели и Cappasity Portable 3D Scan для сканирования с использованием одного сенсора.
Cappasity Portable 3D Scan выйдет буквально через пару месяцев для ноутбуков с Intel RealSense. Мы ее представим на конференции GDC 2015, проводимой 4 го марта в Сан-Франциско. Вы сможете создавать качественные 3D модели с использованием поворотного столика или же вращая модель вручную. Причем, если у вас есть и фотоаппарат, то мы предоставим вам возможность создавать текстуры высокого разрешения.
[embedded content]
Почему мы выбрали Intel RealSense? Мы решили сфокусироваться на технологии компании Intel по нескольким причинам:
уже около 15 моделей ноутбуков поддерживают RealSense; планируется выход планшетов с RealSense; открывается путь к B2C продажам — новое направление монетизации наших продуктов; имеется качественное SDK; сенсоры отличаются высокой скоростью работы. Не последнюю роль также играет хорошая техническая, маркетинговая и бизнес-поддержка со стороны самой компании. Мы плотно сотрудничаем с 2007 года, и никогда не было ситуаций, когда мы не могли бы получить ответ на наши вопросы от коллег из компании Intel.Если рассматривать технологию RealSense с точки зрения 3D сканирования на расстоянии до одного метра, то можно смело назвать компанию Intel лидером в данной области.
Несомненно, современные технологии открывают широкие возможности для работы с глубиной окружающего нас мира!
Мы регулярно выкладываем новые материалы о нашем прогрессе на наших страницах в Facebook и в Twitter.