Pull to refresh

Наша «Street View» — история создания kartamania.ru

Self Promo
Перед тем как рассказать, как мы создавали наш ответ гуглу, Street View по-русски,  в ответ на замечания, прозвучавшие в комментариях к нашему первому посту, хотим сообщить, что проект неспешно развивается, и мы сделали новую версию обозревателя панорам.

Главное новшество, требующее обсуждения — перспективные искажения.

При просмотре панорам на основе кубической проекции мы реализовали так называемые перспективные искажения, которые при вращении панорамы создают эффект глубины или объема. Кроме того, добавили эффект «смешения» при замещении панорам во время движения.

История о том, как мы это делали.


Перед нами было два пути: купить готовое решение на западе, например, у Immersive Media, или же сделать все самим.

Мы выбрали второй вариант по нескольким причинам.

Первая причина — мы хотели попробовать это сделать хоть в каком-то виде. Необходимо было пройти все технические этапы для того, чтобы осознать на собственном опыте проблемы и нюансы. Мы не планировали сделать из этого какой-то коммерческий проект, для нас это было нечто вроде хобби.

Вторая причина — это различные непрогнозируемые препятствия (офлайнового характера). Например, что будет, если вы будете целый день кружить по центру Москвы с камерами на крыше автомобиля? Могу сказать, что поначалу ощущения были не самые приятные. :-)

Третья причина — это отсутствие на рынке готового решения, полностью удовлетворяющего нашим требованиям. Например, доступная и известная на западе система от «Immersive Media», которую вначале использовал Google (и как мы понимаем, отказался от нее потом), не обеспечивает того качества, которого мы хотели, если бы после пилотного проекта решили продолжить заниматься этим всерьез. Их система имеет 12 камер с разрешением всего 640×480 или 360×290 градусов. Этого мало, и качество такое же, как у нашей «пилотной» установки (только вертикальный охват больше и, может, стичер и оптика получше). Другие устройства — видеорегистраторы, доступные в продаже, также не подходят по целому ряду причин.

Оценив затраты и риски при создании системы с качественной съемкой, мы решили сделать пилотный проект с облегченной головной установкой, а по его результатам, если мы решим продолжить, собрать установку, которая будет снимать панорамы высокого качества.

Какие же минимальные требования были к пилотной системе?
  1. Возможность делать круговой снимок хотя бы раз в секунду с минимальным разрешением одного кадра 640×480. То есть, двигаясь со скоростью в 50 км/ч, мы должны получать снимки каждые 15 метров.
  2. Делать снимки, пригодные для склейки в панораму, на скорости до 60-70 км/ч.
    Тут надо пояснить, что при движении на скорости в 50 км/ч машина проходит приблизительно 14 м/c секунду и если камеры, которые расположены по кругу, делают снимок с разницей хотя бы в ½ секунды, то точки съемки могут отличаться на 7 метров. Если мы снимаем широкий проспект, то это может не сказаться на качестве панорамы, но если мы снимаем небольшие улицы или в поле зрения камеры есть близкие объекты, то разница в 7 метров может быть очень существенна.
    На наших панорамах есть такие бракованные снимки, из-за сбоев в работе системы и из-за наглого нарушения скоростного режима — мы пробовали снимать на скорости до 100 км/ч.
  3. Работа системы от бортовой сети автомобиля.

Сказано — сделано. Мы подобрали web-камеры (USB) с максимально широким углом (52 градуса по горизонтали) с автоэкспозицией и позволяющей снимать видео с разрешением 640×480. Для получения панорамы с учетом перекрытия соседних кадров (это необходимо для склейки) и с учетом возможной временной разсинхронизации камер при движении нам понадобилось 8 таких камер. Мы разобрали готовые камеры и собрали из них и подручных материалов (лома и паяльника) вот такую штуку.


Следующая проблема — крепление устройства к автомобилю. Наш админ, ученик старой школы, собрал конструкцию:


Вся конструкция для защиты от дождя, ветра и прочих неприятностей была спрятана в кофр:


А это уже на крыше автомобиля:



Далее мы разработали программное обеспечение, которое позволяло синхронизировать и сохранять снимки с привязкой к GPS координатам. Вся система работала на двух ноутбуках от бортовой сети автомобиля.
По ходу мы обошли две серьезные проблемы:
  • Ограничение пропускной способности USB 2.0 на ноутбуках при подключении многих камер.
  • Максимальную синхронизацию кадров на разных камерах и более того, на разных ноутбуках.
Для склейки панорам мы использовали абсолютно простой стичер безо всяких ручных настроек.

Планы на будущее


Итак, что дальше? После того как мы изобрели велосипед в пилотном проекте, у нас появились новые требования к головной системе. Конечно, требований намного больше, но вот основные:
  1. 16 камер с разрешением 1280×1024;
  2. хардверная синхронизация камер;
  3. качественная оптика.

По нашему мнению, такое устройство позволит делать панорамы не хуже чем у Google (новой его версии). Чем мы неспешно и занимаемся … все-таки хобби :-)

Всем спасибо, надеюсь было интересно.
Tags:
Hubs:
Total votes 71: ↑63 and ↓8 +55
Views 606
Comments Comments 32