Разработанный сервис позволяет построить 3D-реконструкцию помещения или объекта на основании представленного видеоряда.
Для получения 3D-реконструкции необходим отснятый видеоряд, в котором будет отснято помещение (или объект) с разных сторон и в разных перспективах. В результате обработки видео на выходе мы получаем 3D-модель, состоящую из облака точек, которую можно посмотреть в любом 3D-просмотрщике (Blender, MeshLab и пр.).
Для реализации потребностей, например для инженеров строй-контроля в системе реализован следующий функционал:
Модуль реконструкции - микросервис преобразующий видео 360 в облако точек и проводящий сравнение с историей фиксации для просмотра изменений.
Модуль включает в себя
Далее на каждом кадре извлекаются ключевые точки, на которые мы можем ориентироваться и отличать их от кадра к кадру. Набор полученных ключевых точек позволяет определить физическое расположение камер на каждом извлеченном кадре, а также уточнить набор внутренних параметров камер, таких как фокальное расстояние и координаты оптического центра. Метод, который используется для этой операции чаще всего называется Structure From Motion (или SFM).
Полученное физическое расположение камер, по сути, представляет собой массив координат камер в некотором 3D-пространстве. Здесь имеется в виду локальная система координат, которая представляет собой масштабированную версию реальных мировых координат, масштаб которой нам подлинно неизвестен, но в результате работы метода, мы можем знать как именно располагаются контрольные точки и камеры относительно друг друга.
Знание о физическом расположении камер позволяет нам дальше использовать извлеченные кадры в методе Multi View Stereo (или MVS), который построен на обработке этой информации нейронной сетью.
Нейронная сеть принимает в себя массив координат камер и матрицы их внешних и внутренних параметров, включая матрицу поворота. Кроме этого, нейронная сеть принимает в себя кадры, извлеченные из видеоряда. Каждому кадру подбирается от 4 до 10 других кадров из общего набора, имеющие большее число совпадений ключевых точек. Также при подборе подходящих кадров учитывается и близость физического расположения их камер. Т.е. каждому изображению соответствуют некоторые камеры и мы знаем это физическое расположение
Затем нейронная сеть обрабатывает полученную информацию и строит карту глубин относительно каждого изображения. Карта глубин - это, по сути, тепловая карта, где можно отследить размерность исходного изображения, где каждый пиксель - это расстояние между точкой наблюдения (оптический центр камеры) до конкретной точки в пространстве.
Также помимо этого нейронная сеть выдает карту вероятности, то есть, насколько сеть уверена в том, что именно этот пиксель имеет такое расстояние. По этой карте вероятности мы фильтруем полученные карты глубин.
.Также стоит упомянуть, что карты глубин являются полными, а не разряженными, другими словами, мы знаем больше пикселей, чем не знаем. Расстояний, которые нам известны, достаточно для того, воссоздать полную 3D-модель. Дальше происходит слияние этих карт глубин, которое осуществляется относительно расположения камер, поэтому мы можем дедуцировать координаты точек в пространстве, получив облако точек в 3D-пространств, которое можно представить в 3D-модели.
После получения плотного облака точек, после слияния карт глубин, мы делаем фильтрацию видимых точек, которые камеры действительно видят, т.е. если у нас, например, 16 кадров, то у нас есть 16 камер в пространстве - мы можем отфильтровать точки, которые видят четыре или больше камер.
Таким образом после этой фильтрации мы получаем более четкое, более чистое облако точек, которые уже можно отобразить пользователю.
В качестве интерфейса для этого метода был написан Telegram-бот, который принимает видео и может прислать в ходе работы пайплайна, после его окончания, PLY-файл с 3D-моделью помещения или объекта.
Время обработки видео Telegram-ботом составляет около 15 минут, также пользователь может отслеживать статусы обработки видео.
На данный момент сервис апробировался только на строительстве жилых помещений
В планах реализовать:
Оставьте заявку и менеджер свяжется с вами для уточнения подробностей