Как на картах Google создается 3D-просмотр улиц?
Время от времени мы все использовали приложение Google Maps во время путешествий или для навигации. По моему мнению, знаменитая функция просмотра улиц в Картах Google является одной из самых интересных ее частей .
Несколько лет назад Google выступил с инициативой разработать виртуальную среду для людей, с помощью которой они могли бы визуализировать и исследовать мир из любого места и в любое время.
Чтобы это стало реальностью, Предложенная идея заключалась в том, чтобы объединить несколько 2D-изображений места (обзор 360°) для формирования 3D-объекта/окружающей среды. Весь контент Street View поступает из двух источников — Google и авторов.
Даже обычный человек может внести свой вклад в программу, отправив несколько изображений места, и именно так, соединяя миллиарды панорамных изображений, мы, как пользователь, можем просматривать полную трехмерную виртуальную среду места в любом месте. в глобусе.
Как будто сижу у себя дома и мечтаю ☁️️️☁️☁️…. Я могу виртуально насладиться и посетить красивую Эйфелеву башню, Париж (в мгновение ока, без денег или чего-то еще….) или куда-нибудь еще.
Вы также можете посетить: https://www.google.com/streetview/Eiffel_Tower
Это очень увлекательно, не правда ли….
Но давайте теперь сосредоточимся на том, как на самом деле они комбинируют так много сложных 2D-изображений в последовательном порядке, чтобы сформировать идеальная 3D-среда. В чем заключается скрытая концепция и понимание алгоритма на базовом уровне для построения просмотра улиц.
Чтобы понять это, давайте сначала разберем простую задачу и поймем, как простой трехмерный объект, такой как цилиндр, конус, сфера, может быть построен с использованием их двухмерных статических изображений.
Итак, давайте рассмотрим сплошной цилиндр. У нас есть сплошной цилиндр, и мы сделали его 3 фотографии [вид спереди, вид сбоку и вид сверху, 2D-фотографии].
Таким образом, используя эти 3 изображения, мы хотим воссоздать наш твердый цилиндр.
В процессе 3D-реконструкции мы выполним следующие шаги:
- Обнаружение контура
- Обнаружение формы контура
- Обнаружение соотношения пикселей
- Объединение этих нескольких видов с использованием Алгоритмы поворота и перевода
Таким образом, Обнаружение контура — это не что иное, как определение границы заданной формы.
Как и для данного цилиндра выше, при рассмотрении вида спереди у нас будет прямоугольник на границе, поэтому обнаружение прямоугольника с использованием разницы в интенсивности называется определением контура.
Теперь у нас есть контур (граница) для определенного вида, следующим шагом будет определение формы этого контура (границы).
В качестве строительного блока используются основные фигуры: Круг, Треугольник, Квадрат, Прямоугольник, Пятиугольник и Шестиугольник.
Это легко определить по количеству сторон и длине сторон. .
Затем, после того как мы выполнили оба вышеуказанных шага для всех представлений, которые у нас были ранее, нам нужно найти соотношение пикселей , в котором они должны быть представлены в фактической 3D-модели среды.
Почему нам на самом деле нужно вычислять Pixel-ratio для каждого вида 2D-изображения?
Ответ заключается в том, что вполне возможно, что 2D-статическое изображение определенного вида (спереди/сбоку/сверху) ) не имеют точного соотношения 1:1:1. Возможно, соотношение равно x:y:z вместо 1:1:1, поэтому мы не можем предположить, что все соотношения пикселей одинаковы, поскольку это может закончиться в искаженной 3D-модели в конце.
Теперь, на последних этапах алгоритма, мы используем алгоритм вращения и перемещения, чтобы объединить эти виды в файл 3D SCAD.
Алгоритм поворота:- Расскажите нам, как реальная 3D-модель поворачивается относительно вертикальной оси.
Алгоритм перевода:- На сложных объектах оси нескольких дочерних 3D-объектов не лежат на одной оси, поэтому нам нужен алгоритм перевода, чтобы гарантировать, что дочерние объекты объединяются с перемещенная ось для формирования 3D-модели.
В итоге мы получаем 3D-модель (файл SCAD), которую можно использовать в программном обеспечении scad или представить в виде облака точек.
Но в реальном сценарии реальный объект не так прост, как твердый цилиндр. На самом деле это сложный объект, представляющий собой комбинацию этих простых 3D-объектов, поэтому здесь мы можем применить концепцию Родитель-потомок для формирования 3D-модели.
Дерево создается для каждого родителя-потомка. Здесь каждый объект класса узла формы является узлом в двоичном дереве, и каждый узел формы является дочерним узлом объекта класса пустого узла. Пустой класс узла содержит только строку синтаксиса scad, включая операцию между двумя дочерними элементами.
Итак, это проект, в котором я попытался имитировать идею просмотра улиц карты Google на базовом уровне строительных блоков, взяв только 3 вида и создав на выходе 3D-файл SCAD.
Вы можете найти более подробную информацию (код, объяснение, видео реализации) о моем проекте здесь: «https://github.com/Priyansh-15/3-D-Image-Build-from-Multiple- Изображений"
Ссылка на Google Map-Street View: https://www.google.com/streetview/