Прототип Lane Departure Warning или как напомнить водителю о том, что жить ему осталось не очень долго


    Почитал я немного про автовыставку в Детройте, про то, что Lane Departure Warning становится все более и более популярным и решил, что надо бы поделиться своим опытом изготовления прототипа этой системы из нехитрых компонентов в виде веб-камеры, Питона, OpenCV и пары дней усердной медитации:)

    Историю создания прототипа можно почитать и посмотреть под катом… (там картинки, много...)


    Предисловие


    Началось все с того, что мне надо было выбрать финальные проекты для двух курсов: «Автоэлектроника» и «Обработка изображений». Как человек ленивый, я не мог не скрестить оба проекта и тем самым сэкономить время, а если учесть, что нам за пару лекций до этого как раз рассказывали про Lane Departure Warning (честно говоря, я до сих пор не знаю адекватного русского, а главное короткого названия этой системы, поэтому буду использовать сокращение LDW), то мне захотелось попробовать сделать такую штуку самостоятельно.

    Немного общей информации


    Итак, что же это за зверь такой по имени «Lane Departure Warning». Начнем с того, что во время движения автомобиль чаще всего находится в своей полосе и не должен из нее выезжать, но на деле же водитель может отвлекаться от управления автомобилем и машина может начать перемещаться на соседнюю полосу, что может привести к особенно печальным последствиям в случае перемещения на встречку. По статистике National Highway Traffic Safety Administration (NHTSA) 40-60% всех аварий на трассах в США прямо или косвенно связаны с тем, что автомобиль покидает свою полосу. Для предотвращения этого люди придумали отслеживать позицию автомобиля в полосе и в случае, если он начинает уходить с нее, подавать сигнал водителю или применять более активные действия: поворачивать руль или применять тормоза на колесах противоположной стороны, чтобы не дать автомобилю покинуть свою полосу. На самом деле, такие системы не являются чем-то совсем уж новым, японцы еще лет 10 назад начали экспериментировать с ними на некоторых моделях. Причем различные компании использовали для реализации достаточно разные подходы: обычные камеры смотрящие вперед или назад, а также инфракрасные камеры смотрящие вниз.

    Реализация


    Итак, стоит задача определения положения автомобиля на трассе и подачи сигнала водителю в случае покидания полосы, причем с наименьшим количеством модификаций автомобиля. В моем случае основой системы являлась веб-камера прикрученная изолентой к креплению от GPS-приемника и расположенная на лобовом стекле около зеркала заднего вида плюс ноутбук расположенный на коленях.

    Для обработки видеопотока традиционно была выбрана библиотека OpenCV, а для реализации алгоритма Python.

    Чуть-чуть про Питон

    Тут я сделаю небольшое лирическо-рекламное отступление о Питоне. Так получилось, что я много писал на плюсах, да и много на чем еще, но вот Питон мне никогда не попадался и я искренне считал, что он достаточно медленный. Тут же требовалось в реальном времени обрабатывать видео и делать некоторое количество всяких вычислений. Но, забегая немного вперед, могу сказать, что впечатления получились только положительные: писать на нем очень и очень легко (собственно я этот проект начал писать на второй день изучения Питона), с обработкой видео он справился (не без помощи использования такой либы как NumPy, которая позволяет быстро обрабатывать массивы данных и OpenCV), а если заглянуть вперед еще немного, то сейчас я переписываю часть своего исследовательского проекта на нем и при использовании OpenGL у меня выходит 300+ fps. На этом рекламу Питона можно считать законченной, пользуйтесь им для прототипов — не пожалеете.

    Попытка первая — цветовая модель

    Итак, начал я с попытки отделить полосу от фона. Сначала попробовал простейший подход: иметь какую-то цветную модель разделительной полосы, считать евклидово расстояние от каждого пикселя до модели и применять какой-то заданный порог. В целом, идея эта смысла не лишена и дает вполне неплохой результат:

    Но только до тех пор, пока на дороге не появляется тень, а она появляется весьма и весьма часто. Тогда получается вот так:

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

    Дабы избавиться от этой проблемы пришла ко мне мысль работать с цветовым пространством HSV, мол там цвет от яркости особо не зависит, тогда тень и автоэкспозиция влиять не должны. С одной стороны мысль достаточно разумная, только вот при крайних значениях яркости, в канале тона появляется довольно много шума. В результате это выглядит так:

    В общем мучался я мучался с попытками отделить полосы от фона для любых ситуаций и понял, что затея эта не очень хорошая. Причем пытался я использовать много разных фильтров и способов обработки видео, а монитор мой был завален всякими окошками с результатами вроде таких:

    и так еще два монитора рядом:)

    Попытка вторая — виртуальные сенсоры

    После неудачной первой попытки понял я, что так дело не пойдет, но смотреть где-то готовый алгоритм не хотелось принципиально, хотелось все свое. Правда один раз я таки немного считерил и подсмотрел одну картинку на первой странице выдачи гугла:
    image
    Из этой картинки родилась идея использования нескольких «виртуальных сенсоров», которые пытаются отследить не всю полосу целиков, а ее участок в какой-то выделенной горизонтальной области.

    Тут на изображении горизонтальные красные полосы как раз и показывают рабочие области этих сенсоров. Работают все они независимо, что позволяет фильтровать их результаты относительно друг друга. Т.е. если все показывают, что полоса слева, а один справа, его результаты можно выбросить, даже если этот сенсор уверен на все 100%, что полоса там.

    Каждый сенсор достаточно умный, он содержит в себе модель разделительной полосы и пытается найти ее в своей рабочей зоне. Собственно в модели используются два свойства: уже знакомый нам цвет, который работает хорошо, но не всегда и ширина полосы (тут все не совсем просто, из-за того, что камера может быть расположена в машине по-разному и из-за перспективных искажений, мы не можем задать ширину полосы, поэтому в самом начале работы программы сенсоры обучаются ей). Таким образом для каждого кадра используется следующий алгоритм:

    0) Сначала мы обрезаем изображение только до той области, где видна дорога. Это позволяет улучшить производительность и не смущать алгоритм отражениями на капоте и небом.
    1) Затем мы применяем Canny для всего изображения. Это позволяет нам забыть об автоэкспозиции и иногда о тенях.
    2) Затем для каждого сенсора:
    2.1) ищем все замкнутые регионы (участки, ограниченные с обеих сторон границами)
    2.2) ищем те регионы у которых ширина равна ширине полосы
    2.3) если таких регионов несколько (из-за теней и подобных проблем), то считаем средний цвет региона и его расстояние от нашей цветовой модели разделительной полосы и выбираем наиболее похожий.

    Вот так выглядят результаты для каждого сенсора (черный — разделительная полоса, белый — дорога):


    Модель разделительной полосы

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


    Определение позиции автомобиля

    После того как мы узнали, где находятся разделительные полосы, настало время определить, где же находится автомобиль на полосе. Тут мне в голову пришел довольно простой способ: взять какую-то горизонтальную прямую поближе к капоту, разметить на ней несколько зон, найти точки пересечения этой прямой и разделительных линий и использовать эти точки для определения позиции авто в пределах полосы. В зависимости от того в какой зоне находится точка пересечения мы можем сказать насколько машина близка к разделительной полосе, причем даже с таким простым методом получается достаточно точно. Я использую 3 зоны: зеленая — все хорошо, машина в центре; оранжевая — мы уже близко к краю; красная — мы уже наехали на полосу. Выглядит все это дело так:


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

    Собственно это почти конец, осталось только сообщить водителю о том, что там происходит. Для этого я показываю стрелочки, которые направлены в сторону перемещения машины:


    Тестирование


    Итак, самое интересное — тесты. Для начала посмотрим на то, как разработанный прототип справится с предварительно записанным видео:


    Все не так уж плохо, кроме пары кадров, где он не смог правильно определить позицию разделительной полосы. Причем можно было обработать и такую ситуацию, в данном случае функция реализация метода наименьших квадратов из NumPy выдавала исключение и можно было бы просто использовать старое положение полосы, но на тот момент было поздно и возиться было лень:)

    Ну а теперь главное — тесты на реальной трассе:


    А вот и обещанное видео на котором можно услышать звук наезда на катафоты, которые расположены на разделительной полосе (очень кстати полезная штука, причем не только для тестов):


    Конец


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

    Еще один интересный момент: сейчас мой прототип очень плохо себя чувствует при переезде с одной полосы на другую. Сначала я думал сделать правильную операцию смену полосы и все такое, но все далеко не так очевидно: задача этой системы как раз не дать выехать на другую полосу и для того, чтобы понять, что водитель действительно туда хочет, надо иметь больше информации, например данные о включении поворотников, данные системы навигации, радаров итд итп, но это уже совсе другая история.

    И еще раз скажу, что Питон — классная штука для прототипирования, это я говорю как человек, который уже довольно много лет пишет на C++ (да и 2 дня на разработку такой штуки с нуля без знания языка подтвержают это, на Си бы я так не успел).

    PS: Извиняюсь за то, что не продолжил прошлую тему с 3хмерным чайником, как оказалось, 3д монитор хорош для 3д, но никак не подходит для работы с 2д, поэтому пришлось его поменять, но я надеюсь эта тема не хуже:)

    PS2: Забыл про исходники, они живут на гитхабе
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 101
      –8
      Это идеальный случай, сферический конь в вакууме.
      А как быть ночью или в дождь? А зимой, когда вся дорога занесена снегом, в том числе и разметка? А только что отремонтированная дорога без разметки?
      А в будущем могут ещё появиться шутники, которые положат вдоль и поперёк дороги туалетную бумагу и свернут мозг роботу за рулём…
        +26
        Так автор же и написал, что система чувствительна с внешним условиям. Прототипам это вполне свойственно.
          +3
          Про идеальный случай не спорю, но это прототип. Кстати я тестировал немного на других дорогах, если доберусь до компа и не забуду залью больше видео, основная проблема была перезд на другую полосу, а вот определение самой полосы работало неплохо. Что касается снега и новых дорог, то думаю, что в реальных системах используется много разных датчиков, которые я тут использовать не могу. Это как встроенная навигация против внешнего gps приемника. Ну а с шутниками это отдельная история. Вообще интересно было бы посмотреть как оно работает на реальных машинах, если у кого есть отпишитесь пожалуйста.
            +3
            я могу ошибаться, но многие машины имеют универсальный диагностический интерфейс obd-II, который позволит получать многочисленную статистику от автомобиля во время его движения. Возможно, это может помочь более точно распознавать намерения водителя.
              +4
              вот, кстати, python-утилита, которая работает с OBD-II: www.obdtester.com/pyobd
                0
                Честно говоря, дальше камеры идти не планировалось, а для OBD надо либо паять свое что-то, либо купить какой-нибудь OBD-BT переходник, но за ссылку на библиотеку спасибо!
                  +1
                  На ELM-327 есть и USB и Bluetooth адаптеры.
                    0
                    Интересно, буду знать!
          • НЛО прилетело и опубликовало эту надпись здесь
              0
              Я бы на это сильно не расчитывал, дорогое это удовольствие…
                0
                ну не обязательно электроникой, мне кажется достаточно добавлять в краску/материал разметки что-нибудь со специфическими электромагнитными свойствами.
                +4
                Пускай они их хотя бы отремонтируют для начала!
                +2
                Если эта штука позволит избежать хотя бы одну аварию, пусть хоть в идеальных условиях, то ей уже цены не будет.
                С другой стороны, я чаще попадал в различные ситуации (пока без последствий. 3тфьу) именно в идеальных условиях. Как-то начинаю расслабляться, больше думать о работе, семье, слушать радио или общаться с пассажирами. Поэтому считаю, что именно в идеальных условиях подобные помощники нужнее. А в экстремальных условиях и так все внимание на дороге.
                  0
                  Согласен на счет того, что в идеальных условиях как раз и расслабляются люди больше всего. Когда быстро едешь по горной дороге сильно не отвлекаешься…
                  +4
                  Если положить вдоль дороги ночью туалетную бумагу по направлению в кювет — туда и люди поедут.
                  +2
                  Отличный пост, главное тестировать аккуратно.
                    +4
                    Lane Departure Warning можно перевести как предупреждение выезда за пределы полосы.
                    Работа интересная.
                      0
                      Спасибо, хороший вариант, мне в голову както не приходил.
                        +2
                        Короче «предупреждение выезда с полосы».
                        0
                        Очень интересно и мало понятно(для меня). Хотел бы сам что-нибудь такое сделать в будущем. Вас не затруднит дать ссылку видео дороги без работы программы?
                          +1
                          Напишите завтра в личку пожалуйста, я дам ссылки на необработанное видео. Сейчас неь доступа к нему.
                          +3
                          Изображать выезд за пределы стрелочкой сомнительно.
                          GPS-навигаторы стрелочкой показывают, куда надо повернуть.
                            +3
                            Это для тестов. Чтото показывать вообще не имеет особо смысла, так как если водитель не видит, что он уезжает с полосы, то не увидит и сигнал. Обычно применяют аудио сигналы и вибрацию руля или сиденья, но у меня к такому доступа не было, а пищать и отвлекать водителя во время теста не хотелось.
                            +8
                            По видимому систему придется отключать в сложных метеоусловиях или при загруженности дорог, но этот прототип по качеству уже достаточен для коммерческой реализации в качестве видеорегистратора например. Можно подмаргивать светодиодом и попискивать при уходе с полосы.

                            Для определения того, что водитель действительно хочет перестроиться достаточно должно быть включенных поворотников. И это кстати, хороший способ ненавязчиво напомнить о том, что их надо включать. ;)

                            Кроме того, как себя помню, все это должно хорошо помогать начинающим водителям.

                            Спасибо за исходники. Попробую и себе делать…
                              0
                              На тему начинающих кстати правда, я помню пока к габаоитам не привык все не мог понять где я на полосе нахожусь, а так если забить ширину машины можно точно видеть.

                              На тему исходников там может быть не очень с комментами, все таки прототип, так что если что не ясно обращайтесь. Главное там указать как кропать изображение и начальные координаты полос (я автоопределение так и не сделал)
                              +5
                              По мне, так лучше стрелки, показывающие, куда машина скатывается, развернуть на 180 градусов, говоря о том, куда нужно вырулить.
                                +1
                                Возможно, я тут чуть выше писал о подобном, стрелки они больше для тестирования.
                                +24
                                Здорово было бы сделать «Русскую» версию, которая волшебным образом смотрела ширину дороги и делила ее на полосы, причем без линий разметки :)
                                  +10
                                  Я недавно ездил в родной Симферополь, так там раздеение полос вообще динамическое, вроде нарисованы две, а едут все как три… Боюсь до понимания такого компьютеры в ближайшем будущем не дойдут:)
                                    0
                                    Тут во многих местах вообще разметки не видно и все едут как хотят :)
                                      0
                                      Кстати, не факт, что это плохо! Читал в «Науке и жизни», вроде бы, что ставили эксперимент — при намеренно бредовой разметке дороги или ее отсутствии количество ДТП на этих участках значительно снижается! Водители, видимо. внимательнее ведут машину.
                                        0
                                        А еще добавить ям, водителей-идиотов, открытых люков… и тогда водитель уж точно не заснет за рулем и все станет безопасным, как в сказке… или в реальности…

                                        На эту тему недавно мне попадался хороший ролик: Пористые дороги
                                  0
                                  А как она ведёт себя на дорогах, где только осевая линия? Понимает, что та должна быть слева, а не справа?
                                    +1
                                    Именно текущая версия будет пытаться найти полосу, но если не получится просто не будет волноваться об уходе в ту сторону, где полосы нет
                                      0
                                      Я о том, что если едем прямо по осевой, куда она будет показывать, налево или направо?
                                        0
                                        Возможно я не совсем понимаю про едет прямо по осевой. Будет показывать в ту сторону, куда больше машина сместилась, точнее вру, в противоположную. Но я все же не понимаю. Если машина на нее наезжает с одной из сторон, то все логично, если изначально едет по ней, то я и сам не знаю, что надо показывать:)
                                    0
                                    Вот еще идея — поставить по камере на линии левых и правых колес, то есть где-то над фарами на капоте или под ними на бампере. В этом случае система будет инварианта по отношению к габаритам машины. Камеры будут определять с какой стороны находится разметка, если посередине — значит наехал на нее.
                                    Сделать их инфракрасными, так как в этом случае изображение меньше подвержено влиянию грязи и погоды.
                                    Может быть нужно будет также поставить ИК прожекторы.
                                    Систему оповещения сделать как в вертолете — такой же звуковой сигнал. Визуально можно представить полоской светодиодов над рулем, которые будут «бежать» в сторону возвращения на полосу.
                                      +1
                                      Ситроен в свое время ставила ик датчики под машиной направленные вниз, они как раз подобным образом и работали. В моем случае серьезных модификаций авто не хотелось:)
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                      +2
                                      Очень интересно, спасибо! Хорошо, что по пути Вам не попались гайцы, а то глядя на кривые, которые Вы выписываете, могли тормознуть с подозрением на нетрезвого водителя :)
                                        +2
                                        Это да, мы об этом тогда тоже думали, но продолжали тестировать:)
                                        –1
                                        а если на дороге нет разметки?
                                          0
                                          Тогда рабоать не будет:) вообще без размети задача становится гораздо веселее, если кто осилит буду рад почитать
                                            0
                                            Определить края дороги вашим методом и сделать виртуальную полосу по центру между ними? Кстати и для случая только с осевой будет полезно.
                                              0
                                              Так мой метод определяет только полосы. Если совсем нет разметки, то он уже не работает.
                                          +44
                                          Поехали)

                                            +3
                                            Ого. где это?
                                            Видимо, это шара для гаишников — куда не плюнь — двойные осевые :)
                                              0
                                              Ну хоть не поперёк дороги и то хорошо
                                                +2
                                                ничего смешного, это дешевый и эффективный способ вывести из строя навигационный компьютер вражеской бронетехники.
                                                  +4
                                                  кто-то расписывал разметочную машину
                                                    0
                                                    учебный полигон для дорожников? :)
                                                    0
                                                    Полигоны для отладки
                                                    +4
                                                    Преобразования Хафа не пробовали? В принципе я не особый сторонник Хафа, но в данном случае они наверно могут дать не самый плохой вариант. Поскольку вы ищите только линии, причем под определнном углом, то Хаф напрашивается сам собой. При этом, Хаф сможет найти эти линии, даже если они пунктиром.
                                                      0
                                                      Думал о нем, с одной стороны оно бы сработало, применить его после Canny и найти границы полос разметки. С другой же стороны частенько трава у дороги имеет такой же цвет и освещенность как разметка, появляется много шума и нужно уже больше заниматься трекингом. Но преобразование Хафа тут определенно имеет право на жизнь, возможно вместе с текущим методом.
                                                      +5
                                                      Спасибо тебе, такие как ты делают мир лучше!

                                                      Надеюсь, что в будущем, огромное внимание будут уделять вопросам безопасности, подобным этой теме, а именно: определение движения ТС ночью навстречу, ослепление водителей, системы предупреждения о животных на обочине, ямах и прочим прочим.

                                                      Сам собираюсь оформлять такие идеи, но к сожалению руки из жопы не позволяют собрать хоть насколько-нибудь рабочие прототипы.

                                                      Правда насчёт ослепления заказал для тестов готовое решение от Uwe Braun, надеюсь скоро приедет, а то никаких обзоров нет, а интересно.
                                                        –6
                                                        Гхм

                                                        Я уже год езжу на BMW, которая и пешеходов и животных определяет, полосы видит, знаки считывает, и еще много чего делает.

                                                        Имеет ли смысл изобретать велосипеды, или все же лучше (если реально хочется заняться темой) податься в инженеры к одному из ведущих автопроизводителей?

                                                          +1
                                                          Дело в том, что у меня нет BMW и не будет. Может быть будет Toyota, может что-то ещё…

                                                          Да и производить я не собираюсь, это предмет увлечения и исследования. Есть те, кто пользуется, есть те, кому интересно создавать. А по поводу стоит ли изобретать, можно сюда заглянуть. Вроде уже 21-й век на дворе, а всё изобретают.
                                                            –3
                                                            Системы уже давно стандартизированы. Производит AFAIR тот же Bosch и другие. Cтоят весьма дешево для производителей.

                                                            Тойота точно так же ставить будет такие системы (или уже ставит, не следил), ибо тот же Ниссан уже ставит вовсю например.

                                                            Насчет изобретать — есть понятие хобби, есть понятие бесполезного выхлопа. Автор статьи — молодец, он сделал работу для ВУЗа. Но воспринимать это всерьез смысла нет, ибо если что-то новое изобретать — надо изучать что сделано уже и как это работает — мировая наука в тч базируется на открытиях сделанных раньше.
                                                              0
                                                              Ну ок, пусть будет бесполезным выхлопом. Не хочу дискутировать по этому поводу. Пусть дальше стандартизируют и удешевляют.
                                                              –2
                                                              www.bosch-press.com/tbwebdb/bosch-usa/en-US/PressText.cfm?&nh=00&Search=0&id=382

                                                              Готовые системы от того же боша (который используется большинством автопроизводителей).

                                                              +1
                                                              Изобретать велосипеды в образовательных целях имеет смысл, чем я и занимался. О том, что японцы еще 10 лет назад такие системы начали делать знаю. Иначе следуя Вашей логике можно делать так:
                                                              — Вася из соседнего подъезда качок, 100 раз подтягивается, да и спортсменов уже много — не буду ходить в спортзал и заниматься спортом.
                                                              — Коля из другого подъезда диплом получил, да и много уже инженеров, врачей, ученых — не буду учиться.
                                                              — Вот уже 2млрд китайцев, вообще много людей на планете — а не застрелиться ли мне.
                                                              Утрирую конечно, но попытка решения сложной задачи с нуля — достаточно хороший способ изучить предметную область, понять какие бывают входные данные и разобраться с подводными камнями. Ну а на тему устроиться к одному из автопроизводителей, все может быть попозже, как раз на это дело и учусь, лаба наша как раз спонсирована BMW, но занимаюсь в немного другой области, а чтобы делать что-то реальное, надо знать как это делать.

                                                              Лучше бы Вы, как владелец машины, которая это умеет, рассказали как там реализована обработка ситуаций, когда полоса не видна, снег, грязь, другие машины итд итп. Будет очень интересно послушать.
                                                                0
                                                                Спасибо за топик, ликбез и действующий пример. Было очень интересно :) Но, несмотря на в целом положительное к вам отношение, не могу удержаться от того, чтобы не поворчать на аналогии выше.

                                                                Ваши примеры выше: развиваться/рожать — это действия, которые каждый обязан делать, если не хочет умереть под забором, никому не нужный.

                                                                В то время «изобретение велосипедов» — это просто один из множества способов получить нужный скилл. Далеко не так обязательно как с примерами, можно и по-другому.
                                                                  0
                                                                  Как бы было хорошо, если бы все на этой планете делали все, что они обязаны делать:). Я не спорю, что пример может быть и не самый удачный, но я поэтому и написал, что утрирую.

                                                                  А на тему велосипедостроения, честно говоря, я и сам не любитель писать велосипеды и считаю их злом, но при двух важных условиях: есть четкое понимание того, как велосипед работает и почему, а также есть возможность легко взять готовый велосипед. Вот тут то и начинается интересное. Много ли людей может сказать, что они понимают как работает система от MBW, Nissan, etc? Второй вопрос, можно ли взять готовое? Хоть у меня и находится информационный центр BMW через дорогу от офиса, я не могу пойти и сказать: «мужики, киньте мне на флэшку исходники вашей системы». Есть кучка статей о таких системах, а вот какой-нибудь хорошей готовой либы я не нашел. Кстати, все, что можно не реализовывать из серии стандартных алгоритмов я не реализовывал, в исходниках только высокоуровневые части.
                                                                  Вообще хороший пример: борьба Win VS Linux, вроде как есть винда, которую можно пойти купить и забить, ан нет, пишут линукс (бсд, макось, ...), хотя вроде как тот же велосипед. Так что не всегда велосипеды зло:)

                                                                  Ну а что касается именно этого проекта, так мне надо было придумать хороший проект (курсовик, грубо говоря), который бы подошел для курса по компьютер вижну и автоэлектронике одновременно. Просто взять чью-то разработку я не мог.
                                                            +2
                                                            Вообще очень даже интересная идея.
                                                            И достойна использования уже даже в таком виде.

                                                            А после некоторого кол-ва доработок — легко потянет на коммерческую систему.
                                                            Из мыслей-идей «чего бы добавить»:
                                                            1. Брать с машины данные о включении поворотника и не выводить нотификацию в случае их включения (причём только в нужную сторону)
                                                            2. Брать данные с датчика скорости и отключать нотификацию на скоростях ниже 10-20 км/ч
                                                            3. Поставить на машину (куда-нибудь в область боковых зеркал) датчики с парктроника и выводить нотификацию при попытке перестроиться в едущую рядом машину. Если же перестроение происходит ещё и без поворотника, то громко и противно завизжать

                                                              –4
                                                              Достойна для кого? Ровно все то что вы описали — у меня стоит в машине и работает (и с поворотников данные считывает, и скорость учитывает (ниже 40кмч воообще-то лучше), и перестроение в другие машины…

                                                              Дело в том что такие системы уже поставлены промышленно на поток. Работа автора — хороша, но чисто как дипломная.
                                                                +1
                                                                Достойна для использования в автомобилях (естественно я не про вариант «ноутбук стоящий рядом», но это уже совсем незначительный вопрос), ибо:
                                                                1. Подобная система стоит далеко не на всех автомобилях, а установка «от производителя» на автомобили старше 5 лет обычно вообще нереальна. Предложение «выкинуть все авто без подобной системы» не рассматриваем.
                                                                2. Наличие в вашей машине подобной системы не спасёт вас от зазевавшегося товарища, который может в вас въехать. Так что полезна даже вам.

                                                                Вообще первое время (после того как сел за руль) в голове довольно долго укладывалась простая истина — я могу быть самым лучшим водителем в мире, на самой технически оснащённой машине, но всё-равно это мне не поможет при лобовом столкновении с вылетевшей (по какой-либо причине — водитель уснул, умер, не рассчитал манёвр) навстречу машиной (если трасса допускает возможность лобового столкновения) даже при скорости сближения в 150 км/ч (оба едут 75 км/ч), а уж про 250+ км/ч (оба едут 120+ км/ч) вообще молчу.

                                                                А это значит, что установка любых систем безопасности на любых машинах в итоге полезна в том числе и мне, т.к. уменьшает вероятность столкновения.
                                                                  –4
                                                                  1) установка на авто более 5 лет — вы хотите стать виновником смертей людей? нет? это ничего что надо тысячи человеко-часов тратить чтобы отлаживать такие системы, а если будет глючить — то это реально смертельная опасность?

                                                                  Никто не будет ставить такие самоделки (особенно учитывая уровень необходимой интеграции с машиной) на машины, тем более старые.

                                                                  2) Про зазевавшегося товарища — тоже велосипед, ибо у меня в машине опять же стоит радар который контролирует объекты приближающиеся, и в случае слишкой большой скорости (и отсутствии замедления) прямо перед глазами загорится на лобовом огромный красный сигнал, заверещит звуковая сигнализация, перенастроятся тормоза (а если все совсем плохо — машина начнет тормозить резко сама), подтянутся ремни безопасности и тд и тп.

                                                                  Нет, я понимаю что пока такое не на всех машинах, но блин прежде чем гениальные идеи выдвигать — можно хотя бы изучить то что уже продается на рынке?
                                                                    +1
                                                                    Допустим изучили. Что дальше?
                                                                      –3
                                                                      Далее — простой фильтр.

                                                                      1) Изобретено что-то новое? — ?..
                                                                      2) Лучше ли реализация чем существующие аналоги? — ?..
                                                                      3) Хочется ли нести ответственность (вплоть до уголовной) за смерти людей, которые обязательно погибнут из-за некорректно работающей системы? — ?..
                                                                      4) Есть ли финансы на тестирование системы (полигоны, моделирование, разбитые машины и прочее), а так же сертификацию (это — миллионы долларов)? — ?

                                                                      Я лично тоже очень «за» хобби всякие, но воспринимать это серьезно — смешно. Если хочется построить космический корабль — это возможно, но надо собираться, организовывать компанию, набирать профи из аэро-космической индустрии, искать инвесторов и тд.
                                                                        +1
                                                                        А учиться на чем?
                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                0
                                                                А чем Вас не устроили варианты из первой попытки, скриншоты которых расположены в правом столбце на Вашем мониторе (3 скриншота, начиная снизу). На них вроде отчетливо видно спшлошную полосу и прерывистую. Да и изображение черное-белое, что, как мне кажется, удобнее для обработки.
                                                                  0
                                                                  Это они на данном конкретном кадре выглядят хорошо, но в других ситуациях будет много шума, хотя мой подход как раз и пользуется результатами Canny внутри «виртуальных датчиков»
                                                                  0
                                                                  А еще бы неплохо распознавать пешеходов и велосипедистов, особенно в темноте.
                                                                    +2
                                                                    Audi A6 (A7) в топовых комплектациях умеют это делать youtube
                                                                    +1
                                                                    Стрелками лучше указывать куда НУЖНО РУЛЬНУТЬ, а не куда мы УЖЕ ЗАРУЛИЛИ. Это примерно из той же серии подсознательных паттернов, что и «красный — стоп, зелёный — поехали».

                                                                    Если мы заехали не туда, например, сильно зарулили влево, то лучше слева красный крестик нарисовать, и стрелку вправо. А то получается, поощряем к дальнейшему сходу с полосы.
                                                                      –1
                                                                      На машинах которые реально оборудованы такой системой не показываются никакие стрелки, а вибрирует руль с нужной стороны (100% ощущение что наехал на ребристую поверхность — такая краска тоже бывает на дорогах) — в результате чего чисто автоматически возвращаешься в свою полосу.
                                                                        +1
                                                                        >> На машинах которые реально оборудованы такой системой
                                                                        Вы пишете во множественном числе про машины. Скажите, какими машинами вы пользовались с установленной такой системой? Это бюджетная civic-комплектация или особые опции?
                                                                      0
                                                                      В идеале для отслеживания полосы использовать краску, которая отражает излучение определенного типа/длины или изобрести датчик который встраивается в покрытие и отражает сигнал определенной категории.
                                                                        0
                                                                        Это очень круто! Вы молодец!

                                                                        Но, к сожалению, современные автомобили, на которые эта система ставится как опция, (а также еще часто вместе с разпознаванием дорожных знаков) в Россию с данными система не поставляются. Т.к. по комментариям производителей, качество дорожной разметки, и состояние дорожных знаков очень далеко от российских же гостов. Что в корне затрудняет распознавание и функционирвоание данных систем.
                                                                        Пичаль
                                                                          –4
                                                                          Неправда ваша.

                                                                          BMW спокойно себе поставляет машины с этой системой и в Россию причем уже лет 5 как.

                                                                          www.bmw.ru/ru/ru/newvehicles/6series/coupe/2007/allfacts/ergonomics_ldw.html

                                                                          Оставаться на своей полосе.
                                                                          Система предупреждения о пересечении линий разметки.
                                                                          Опциональная система предупреждения о пересечении линий разметки вызывает слабую вибрацию рулевого колеса, если автомобиль может уйти с занимаемой им полосы движения. Камера, установленная между зеркалом заднего вида и ветровым стеклом, распознает линии разметки на дороге. Система не работает, если водитель включает указатели поворота. Таким образом система не подает ненужных сигналов.
                                                                            0
                                                                            Значит BMW рискнули ) И то не факт, т.к. вы прислали ссылку на сайт BMW а не страницу дилера. Попробуйте в конфигураторе собрать себе машинку и выбрать эти системы. Вполне вероятно, что они будут недоступны.

                                                                            На новых Ford Focus III эти системы поставляются только на американский и европейский рынок.
                                                                              –2
                                                                              Скажите, ну правда сначала писать лучше а потом думать?

                                                                              Зайдите в конфигуратор той-же пятой серии. И эта и множество других систем вполне себе доступны к заказу.

                                                                              Если бы я 4 года назад не катался на BMW официальной в Мск с этими системами — я бы не писал, ибо я как раз сначала факты проверяю.
                                                                          0
                                                                          А у нас в Чехии такие полосы (может и не везде — сам не вожу, не обращал внимания), что когда на них наезжаешь — это очень слышно (покрышки по ним типа как по гравию грохочут), да и в темноте они свет фар отражают.
                                                                            –3
                                                                            Система распознавания полос в BMW как раз такие полосы и симулирует — как бы легкий гул и вибрация руля

                                                                            Я по Чехии много катаюсь, полосы не везде такие но на основных магистралях почти везде.
                                                                              +15
                                                                              Слушайте, Вы уже всем сказали, что у Вас есть БМВ, что она невменяемо крута, но спешу Вам напомнить — технологии БМВ
                                                                              1) Предналежат БМВ
                                                                              2) Закрыты
                                                                              3) Не являются истиной в последней инстанции
                                                                              4) Инженеров для БМВ не выращивают в пробирках, в лабораториях БМВ. Что бы стать инженером БМВ нужно знать и уметь очень много всего. В том числе — пытаться решить задачу своим способом, до того как он будет ознакомлен с оффициальным решением.

                                                                                0
                                                                                Кроме того, решение этой задачи полезно и для других сфер.
                                                                                Навскидку, например, можно поставить этот софт на робота и заставить его ездить по разметке. Для домашних сборщиков всяких лего-штук — самое то.
                                                                            0
                                                                            А в какой стране разворачиваются действия?
                                                                            0
                                                                            от чего ж в .gitignore не прописали:
                                                                            *.pyc
                                                                              0
                                                                              Виноват, не знал еще тогда о существовании .pyc, а так внимания не обратил.
                                                                              0
                                                                              Коллега, Вы просто начали воплощать мою мечту в жизнь! Осталось присоединить к этой системе GPS, подцепиться к управлению газом и тормозом, ну и, конечно, сделать апгрейд автомобиля — так, чтобы руль мотором поворачивался (модель с парковочным автоматом вполне должна подойти). Можно будет, скажем, новости по пути на работу читать прямо за рулём.
                                                                                +1
                                                                                Этим делом Google (да и много кто еще) давненько балуется:) На самом то деле, сделать систему, которая работает в хороших условиях не сложно, сложно сделать ту, которая работает всегда, а еще сложнее сделать так, чтобы она прошла через все законодательные и бюрократические препятствия (это кстати, как сказал один из топ-менеджеров VW на одной конференции, сложнее, чем инженерная сторона проблемы).
                                                                                +1
                                                                                Полезное дело. Хорошо, что такое изучают и делают. Спасибо.
                                                                                Я вот думаю, что может стоит показывать стрелочки, показывающие как вернуться к правильной позиции? Человеку проще руководствоваться подсказками показывающими куда крутить руль. Вот и знаки на дороге показывают то, куда поворачивает дорога, т.е. подсознательно понимаешь, что и руль туда надо крутить.
                                                                                  0
                                                                                  Мы такую систему практически довели до ума ещё в 2007м году, кучу статей написали. Жаль что она в ход не пошла…
                                                                                    0
                                                                                    А можно посмотреть? Интересно просто.
                                                                                      0
                                                                                      Я могу скинуть номера статей где это было описано.
                                                                                        0
                                                                                        Спасибо! Ссылки на популярные журналы тоже подойдут, у нашего университета есть подписка на многие издания.
                                                                                    +1
                                                                                    Думаю, уже поздно сюда писать, но все-же. На Youtube случайно наткнулся на подобный алгоритм: www.youtube.com/watch?v=Ni9nAm-Thsw&feature=related.
                                                                                      0
                                                                                      Интересно. Там достаточно много подобных роликов. Народ занимается этим серьезно, не то, что я:)

                                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                    Самое читаемое