Похоже, среди различных корпораций, тема роботизированных автомобилей, способных самостоятельно ориентироваться в обстановке на дороге (избегать препятствия: пешеходов, другие автомобили и т.п.), более чем популярна.
Самый известный пример подобной разработки — робот-автомобиль от Google.
Теперь и BMW подготовила свой вариант робота-автомобиля.
В отличие, от других подобных разработок, где различные датчики (камеры и лазерные дальномеры) навешиваются на готовый автомобиль, автомобиль от BMW скрывает умную начинку внутри корпуса, что делает робо-мобиль почти неотличимым от обычного.
Кажется, роботы-автомобили уже действительно стали одним из трендов развития автомобильной промышленности. Компания BMW уверена, что подобные автомобили станут доступны на рынке, в течении 10 лет.
http://www.youtube.com/watch?v=vNzNt7bsuUg
В принципе, технологии, лежащие в основе роботов-автомобилей более чем доступны.
Например, вот прототип «Lane Departure Warning» (отслеживание позиции автомобиля в своей полосе), реализованный при помощи web-камеры, OpenCV и питона:
Прототип Lane Departure Warning или как напомнить водителю о том, что жить ему осталось не очень долго.
Для реализации, автор использовал следующий алгоритм:
0) обрезаем изображение до области, где видна дорога ( позволяет улучшить производительность и уменьшить ложные срабатывания)
1) применяем Canny
2) Поиск элементов разметки:
2.1) ищем все замкнутые регионы (участки, ограниченные с обеих сторон границами)
2.2) ищем те регионы у которых ширина равна ширине полосы
2.3) если таких регионов несколько (из-за теней и т.п.), то считаем средний цвет региона и его расстояние от нашей цветовой модели разделительной полосы и выбираем наиболее похожий.
Далее, модель разделительной полосы вблизи машины можно представить просто отрезком прямой.
Остаётся добавить зоны контроля и найти точки пересечения прямой разделительной полосы и отрезков зон контроля. Эти точки пересечения, теперь можно использовать для определения позиции автомобиля в пределах полосы:
видео работы:
исходники системы:
https://github.com/Akson/LaneDepartureWarning
Разумеется эта система только прототип — её использование существенно ограничено и многое можно попробовать улучшить (например, попробовать использовать для поиска полос преобразование Хафа), но, думаю, она вполне показывает принцип разработки подобных систем.