![](https://habrastorage.org/webt/cd/y3/ep/cdy3epcwmj1kjozbojililkdon0.jpeg)
В тестовой версии заработал онлайн сервис, который показывает текущую скорость интересующих нас объектов (автомобилей и других средств передвижения) по записям с видеокамер на перекрестках.
С проблемой визуализации дистанции при движении автомобиля и его текущей скорости сталкиваются как ученики в автошколах, так и достаточно опытные водители.
Но есть решение — анализ этих данных по записанным ранее видеокадрам и их обработка в разных платных и бесплатных, доступных и закрытых сервисах.
![](https://habrastorage.org/webt/b3/z2/0w/b3z20wxe8mcembonf9sw2px9xem.png)
Об одном таком недавно появившемся сервисе и пойдет далее речь.
Ссылка на онлайн сервис «Анализ скорости при ДТП по видеозаписи».
Главная страница сервиса (пока что очень простая):
![](https://habrastorage.org/webt/tw/qq/0b/twqq0bdt0xrihcn6ktmpdt7nys0.png)
Автор идеи и реализации — российский программист и хабровчанин — Илья Александрович Волков.
Данная публикация написана на Хабре с его разрешения.
На данный момент сервис работает не в автоматическом режиме, каждую видеозапись сначала нужно подготовить для обработки вручную оператором сервиса (сейчас это автор в одном лице или новый пользователь, инструкция по работе с сервисом в конце публикации).
![](https://habrastorage.org/webt/rs/ak/pb/rsakpbaljurajefuvisofzuyk8i.png)
![](https://habrastorage.org/webt/to/bj/wc/tobjwcfgqttpubwibnrjcftacec.png)
Этапы обработки видеокадров:
— на первом этапе компенсируются оптические искажения от видеокамеры, то есть все прямые линии реального мира должны быть прямыми и на обрабатываемом сервисом видео (коррекция искажений от камеры уже работает в автоматическом режиме в сервисе);
— на втором этапе осуществляется локационная привязка к плоскости дороги, для этого оператору необходимо отметить на кадре прямоугольник как в реальном мире и ввести два (и более) отрезка с измеренными ранее длинами (обычно это: ширина дороги, ширина отдельной полосы между линиями разметки, расстояние между проезжими частями или знаками, колесная база автомобилей);
![](https://habrastorage.org/webt/df/bk/6d/dfbk6d_d0kny9bcrrteizlb6zjy.png)
![](https://habrastorage.org/webt/nb/x4/ov/nbx4ov9cbsabg8gme2yxrepo8_i.png)
![](https://habrastorage.org/webt/xs/rt/up/xsrtupaoqnlm8dcwpl0ymbi2nkg.png)
![](https://habrastorage.org/webt/uy/de/7n/uyde7npko3rmxzggip5yg7dzglk.png)
— на третьем этапе оператору сервиса на каждом кадре необходимо установить точку, где находится интересуемый объект (отметить его траекторию движения), а в итоге сервис покажет нам текущую скорость объекта и ее изменение в процессе движения.
![](https://habrastorage.org/webt/ut/kp/wh/utkpwhc4ssd9i9k520ktzwvv_8e.png)
![](https://habrastorage.org/webt/jy/oc/bv/jyocbvnl3p5hvv5r6zob3zuiaco.png)
![](https://habrastorage.org/webt/4u/at/gu/4uatgutthy3k02humdk7xkrccik.png)
![](https://habrastorage.org/webt/za/rh/jk/zarhjkpwodswoxtim4nnrc74tpq.png)
В плеере сервиса есть инструмент «Линейка», с помощью которого можено измерить расстояния на видео:
![](https://habrastorage.org/webt/2q/rb/ie/2qrbiet7eqx1irqzzbdj286a-bi.png)
Точность работы сервиса достаточно сильно зависит от качества и параметров видеозаписи.
![](https://habrastorage.org/webt/l6/_d/rm/l6_drmwsc4kwedrhzzdj5-cpdza.png)
Сейчас сервис работает только с видеокадрами, полученными с помощью неподвижных (статичных) видеокамер, база этих записей дополняется и нарабатывается.
В процессе доработки функционала сервиса автором планируется добавить анализ записей, полученных с помощью видеорегистраторов в двигающихся и останавливающихся автомобилях.
Автор сервиса планирует проанализировать большое количество видеозаписей с ДТП с участием пешеходов и проанализировать статистику данных скоростей транспорта в момент столкновений.
![](https://habrastorage.org/webt/7r/jj/4y/7rjj4ygwewm84l9xpqy3n_zbjza.png)
![](https://habrastorage.org/webt/uf/rv/ze/ufrvzezefnk4nc4cdwcorayd9ju.png)
Вот что еще планирует сделать автор для развития данного сервиса:
- добавить автоматическое слежение за точками;
- добавить геотеги;
- внедрить фильтр Калмана для сглаживания ошибок наблюдения;
- использовать компьютерное зрение;
- добавить функционал вычисления скорости нескольких объектов;
- планируется внедрить для сервиса машинное обучение, чтобы минимизировать работу оператора для подготовки видеозаписи.
![](https://habrastorage.org/webt/qi/kh/mu/qikhmup6wwntngxudette8rkziq.png)
Очень надеюсь, что данная публикация заинтересует хабровчан и поможет автору сервиса в его развитии и текущей работе.
Мне удалось связаться с автором этого сервиса Ильей Волковым, пообщаться с ним о функционале сервиса и получить ответы на несколько вопросов по этому проекту специально для Хабра.
Интервью с автором сервиса «Анализ скорости при ДТП по видеозаписи»:
Вопрос: Давно ли возникла идея о реализации такого сервиса?
Ответ Ильи: Месяца четыре назад увидел видео с ДТП и стало интересно, с какой (хотя бы примерно) скоростью двигался один из участников. Интересно стало не только мне — в комментариях к видео было много споров, и назывались самые разные оценки. Тут-то я и подумал, что такой инструмент был бы полезен.
Вопрос: Сколько прошло времени от мысли, что «можно сделать это» до первого рабочего запуска сервиса?
Ответ Ильи: Ну вот четыре месяца и прошло примерно. Но я бы не торопился называть текущую версию рабочей — пока сыровата :)
Вопрос: Какие языки и платформы Вы используются в сервисе и какие планируете использовать далее?
Ответ Ильи: Проект хостится на Firebase, это отличная штука для быстрого старта практически любого проекта. Авторизация, хостинг, база данных, файловое хранилище — всё «из коробки». Удобный API, полная бесплатность на первых порах.
Фронтенд — Vue.js, тоже несложный для освоения с нуля инструмент. Отрисовка на канве с помощью Konva.js, за искажения оптики отвечают шейдеры.
Практически весь код (за исключением шейдеров) написан на JavaScript. Особых претензий к стеку нет, буду продолжать работать с ним.
Вопрос: Когда можно будет обычным пользователям загружать свое видео и работать с сервисом?
Ответ Ильи: В принципе, это можно сделать уже сейчас, я написал инструкцию, как это сделать.
Вопрос: Вы один занимаетесь проектом или есть команда программистов?
Ответ Ильи: Команда пока небольшая — я да мой товарищ, у которого есть компетенции во фронтенд-разработке.
Вопрос: Планируете Вы продолжать развитие сервиса и ждете ли помощи от коллег\форумчан по этому проекту?
Ответ Ильи: Развитие сервиса однозначно планируется, поскольку прототип выглядит очень даже любопытно. Идей по развитию полно, желание также присутствует.
Помощь всегда приветствуется — особенно советы.
Вопрос: Это будет бесплатный сервис или монетизация тоже в планах есть?
Ответ Ильи: Перспективы монетизации пока довольно туманные. Возможно, они прояснятся в дальнейшем.
Вопрос: Появились ли организации или сообщества, которые заинтересовались сервисом? Например, мотоклубы или обучающие вождению школы?
Ответ Ильи: Сообщества мне не писали, но некоторых автоэкспертов проект заинтересовал.
Вопрос: Какая сейчас точность определения скорости с помощью сервиса? Насколько эти данные будут разниться, если нужные параметры введены по измерению рулеткой с реальной дороги или используя геосервисы, в которых ширина проезжей части измерена встроенной линейкой?
Ответ Ильи: На видео очень хорошего качества и без искажений оптики точность неплохая, тесты на открытом датасете показывают погрешность до 3%. Точность уменьшается с ухудшением качества видео и нестабильной частотой кадров.
Насчет измерений рулеткой и с помощью геосервисов — рулетка, конечно же, надёжнее. Данным от геосервиса нельзя слепо верить, но их можно и нужно перепроверять.
Вообще, у меня есть большое желание отказаться от привязки местности по ориентирам и привязываться на основе колесных баз автомобилей и других точно известных расстояний.
Вопрос: Будет ли возможность выбирать единицы измерения (км\ч, м\с, миль\час) и сохранять данные скоростной телеметрии в отдельный лог-файл?
Ответ Ильи: Да, благо это не так сложно сделать. Но когда это будет реализовано — не могу сказать.
Вопрос: Видеозаписи в зимние время ведь сложнее будет в Вашем сервисе обрабатывать из-за снежного покрова на дороге?
Ответ Ильи: Да, снег добавляет трудностей — некоторые ориентиры становится не видно, иногда изменяется даже геометрия дороги. Но в принципе, скорость вычисляется и на «снежных» видео.
Вопрос: Планируется в сервисе использовать нейросети?
Ответ Ильи: Это точно не перспектива ближайшего времени, но тема однозначно очень интересная. Было бы круто обучить нейросеть подбирать коэффициенты искажения камеры. Много идей по использованию готовых нейросетей. Но пока и без них много чего делать :)
Вопрос: Сейчас сервис хостится на Firebase, ищите ли вы альтернативу?
Ответ Ильи: Единственное, что не очень нравится в Firebase — это цены. Например, цена 1 ГБ трафика из файлового хранилища составляет около 7 рублей, в то время как у Яндекс.Облака — всего лишь рубль. Пока это не очень большая проблема, но в дальнейшем я буду искать пути для оптимизации. Сейчас же я проектирую архитектуру таким образом, чтобы не сильно привязываться к поставщику услуг.
Большое спасибо Илье за интересные и развернутые ответы!
Автор по возможности добавляет в сервис новые ролики:
![](https://habrastorage.org/webt/oe/w4/lv/oew4lvxzzdc7gsdfhqxq9hfawbu.png)
![](https://habrastorage.org/webt/_k/ej/ea/_kejeaixqmznjnok48na-a42y_u.png)
![](https://habrastorage.org/webt/q0/5u/rl/q05urldstpbfdrdgabqylet5axk.png)
Инструкция по работе с сервисом находится тут.
1. Для создания своего проекта необходимо залогиниться. Пока доступна авторизация через аккаунты Google и Facebook. После авторизации у вас будет доступна кнопка «Создать проект».
![](https://habrastorage.org/webt/ee/fo/hb/eefohborji2katvo1yr3ebz9ajk.jpeg)
2. Нажимаем кнопку «Создать проект», появляется страница создания нового проекта, на которой предлагается загрузить видеофайл. Пока максимальный размер видеофайла — 3 мегабайта. Обрезать видео можно с помощью этого видеосервиса.
![](https://habrastorage.org/webt/e6/bo/zu/e6bozuunrocmj0ei5vrqomcgnni.jpeg)
3. Загружаем файл, после успешной загрузки автоматически откроется страница проекта.
![](https://habrastorage.org/webt/en/ts/q1/entsq1mygqxlfw0wajward-tjss.jpeg)
4. Для начала убираем искажения оптики камеры: с помощью ползунков k3, k4, Scale регулируем искажения таким образом, чтобы все прямые линии реального мира были прямыми и на картинке.
![](https://habrastorage.org/webt/ff/fz/7e/fffz7etxpszvok9ffzn74yuhi_g.jpeg)
5. Перемещаем четырёхугольник так, чтобы он соответствовал прямоугольнику реального мира и указываем 2 расстояния (отрезки не должны быть параллельными).
![](https://habrastorage.org/webt/iy/uy/km/iyuykmbg_hekpav5_767i0omjbs.jpeg)
6. Для поиска расстояний можно воспользоваться Яндекс.Картами.
![](https://habrastorage.org/webt/n9/au/rr/n9aurr2jqr1qq61r1yrvjlfhykc.jpeg)
7. Так как расстояния на Яндекс.Картах могут быть не совсем точными, нам необходимо убедиться в адекватности полученной привязки с помощью линейки. Обычно мы знаем колесные базы автомобилей. Например, у ВАЗ-2114 база составляет 2,46 метра, у нас получается 2,45.
![](https://habrastorage.org/webt/1o/ee/ar/1oeearwoyktukryafhu14cj5nhe.jpeg)
8. Длина трамвая получилась около 16 метров, что тоже недалеко от истинной длины.
![](https://habrastorage.org/webt/oq/qx/hr/oqqxhr9wpxej0xotr90ijpz1zyk.jpeg)
9. Теперь мы готовы заняться непосредственно вычислением скорости авто. Переходим в режим редактирования точек объекта и отмечаем точку объекта на каждом кадре. Отмечать точки вручную на каждом кадре может быть утомительно, поэтому существует инструмент интерполяции: отмечаем точку на одном кадре, затем отмечаем точку через 5-15 кадров, выделяем промежуток между кадрами на таймлайне и жмём кнопку «I»: Теперь точка между кадрами движется равномерно прямолинейно.
![](https://habrastorage.org/webt/pg/pf/kr/pgpfkri7rcpcox6gifap8kuzi8q.jpeg)
10. Таким образом, мы посчитали скорость объекта.
![](https://habrastorage.org/webt/vn/jc/cw/vnjccwwmbc0uuankjpuqj4amhty.jpeg)