Обнаружение полос в искусственной среде

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

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

Environment

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

    1. Поскольку окружающая среда более или менее одинакова, где бы я ни ехал, я установил интересующую область (RoI), чтобы исключить горизонт и все, что над ним.
    2. Порог изображения (я немного объясню причину порога)
    3. Обнаружение Canny Edge
    4. Примените преобразование Хафа
    5. Нарисуйте обнаруженные линии, исключая те, которые имеют градиент 0,0 или почти 0,0

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

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

Hough Transform

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

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

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

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

Screenshot

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

14
задан Adaline Simonian 13 August 2017 в 09:08
поделиться