Обнаружение полосы в искусственной среде - PullRequest
14 голосов
/ 22 ноября 2010

Я пишу приложение, которое может обнаруживать полосы движения в симуляторе вождения. Окружающая среда относительно проста, в основном это прямые многополосные дороги и почти нет искривления. В настоящее время я могу успешно обнаруживать линии, используя (классическое) преобразование Хафа, но проблема в том, что HT, естественно, также обнаруживает линии, которые не являются дорожками.

Как я могу быть более избирательным? Я уже не рисую горизонтальные линии, но все же некоторые линии закрадываются. В идеале я хотел бы определить границы полос движения, по которым движется транспортное средство. Ниже приведено типичное изображение окружающей среды

Environment

Вот что я делаю до сих пор:

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

Вот результат вышеуказанных операций

Hough Transform

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

ОБНОВЛЕНИЕ 1:

Полагаю, лучше сказать, я ищу способ моделирования линий, чтобы не включались линии, которые не соответствуют модели. К сожалению, я понятия не имею, с чего начать с моделей. Есть предложения?

Для чего это стоило, мне удалось идентифицировать полосы, по которым движется транспортное средство, и могу исключить дополнительные линии, которые, так сказать, не являются частью "активной" полосы. Надеюсь, это фото поможет

Screenshot

Это не идеально, но это что-то, я думаю. Моя конечная цель после моделирования - создать курс / положение транспортного средства. Но сначала я хочу получить относительно надежное обнаружение полосы. Я надеюсь, что есть относительно простой метод, который может помочь достичь этого (что не зависит от параметров системы, таких как фокусное расстояние поля зрения).

Ответы [ 2 ]

3 голосов
/ 23 ноября 2010

Один из способов - использовать предварительное знание сцены, на которую вы смотрите.У вас может быть модель со скрытым состоянием, содержащая более или менее статические параметры, такие как высота камеры, угол наклона камеры или ширина полосы движения, и динамические параметры, такие как отклонение камеры, боковое смещение камеры в пределах полосы движения, кривизна дороги и т. Д.может справиться с такой моделью в рамке фильтра Калмана .Преимуществом такой модели будет способность выдерживать другие маркировки дорожного покрытия, такие как стрелки направления, зебры и тому подобное.Удачи!

1 голос
/ 23 ноября 2010

Возможно, вы могли бы попытаться найти только линии по краям, найденным при серо-белых переходах, а не по всем краям всего изображения?

...