Обнаружение полосы в искусственной среде
Я пишу приложение, которое может обнаружить полосы в симуляторе. Окружающая среда относительно проста, ее в основном прямые многополосные дороги и почти нет кривизны вообще. На данный момент я могу успешно обнаружить линии, используя (классическое) преобразование Hough, но проблема в том, что HT естественно также обнаруживает линии, которые не являются полосами.
Как я могу быть более избирательным? Я не рисую горизонтальные линии уже, но все же некоторые линии ползутся дюйма В идеале я хотел бы определить границы полосы движения, в которой движется автомобиль. Ниже приведен типичный образ среды
![Окружающая среда]()
Вот что я делаю до сих пор:
-
1. Поскольку окружающая среда более или менее одинакова везде, где я вожу, я задал интересующую область (RoI), чтобы исключить горизонт и что-то выше него.
- 2. Порог изображения (я объясню причину порога в бит)
- 3. Canny Edge Detection
- 4. Примените преобразование Hough
- 5. Нарисуйте обнаруженные линии, исключая те, которые имеют градиент 0.0 или почти 0.0
Причиной порога изображения является следующее. Если вы посмотрите на фотографию окружающей среды, указанную выше, вы увидите сероватую линию, идущую параллельно дороге. Потому что его непрерывная линия - в отличие от маркеров полосы - HT заканчивает ее обнаружение. Я не могу исключить его на основе градиента, поскольку он имеет тот же градиент, что и маркеры полосы. С пороговым значением я могу удалить это и, следовательно, только обнаруживать линии, которые являются фактическими маркерами полосы.
Вот результат вышеуказанных операций
![Преобразовать грудь]()
Я понимаю, что есть много решений этой проблемы, и я прочитал бесчисленное количество статей об этом, но все они, похоже, обрабатывают среды, намного более сложные, чем это, и/или просто на моей голове. Для чего его стоит, чуть больше месяца назад, у меня не было опыта в ComputerVision, и поэтому все это для меня очень ново.
ОБНОВЛЕНИЕ 1:
Я предполагаю, что это лучше, я ищу способ моделирования полос, чтобы линии, не соответствующие модели, не включались. К сожалению, я не знаю, с чего начать с моделей. Любые предложения?
Для чего это стоит, мне удалось идентифицировать полосы, по которым движется автомобиль, и, если можно так выразиться, исключить лишние линии, которые не являются частью "активной" полосы. Надеюсь, эта фотография поможет
![Снимок экрана]()
Это не идеальное, но это то, что я думаю. Моя конечная цель, после моделирования, состоит в том, чтобы создать заголовок/позицию транспортного средства. Но я просто хочу получить, относительно, надежное обнаружение полосы движения сначала. Я надеюсь, что существует относительно простой метод, который может помочь в достижении этого (что не зависит от параметров системы, таких как фокусное расстояние поля зрения).
Ответы
Ответ 1
Один из способов - использовать предварительное знание сцены, на которую вы смотрите. У вас может быть модель со скрытым состоянием, содержащая более или менее статические параметры, такие как высота камеры, угол наклона камеры или ширина полосы и динамические параметры, такие как рывка камеры, боковое смещение камеры внутри полосы, кривизны дороги и т.д. Вы может обрабатывать такую модель в рамках фильтра Kalman. Преимуществом такой модели было бы умение переносить другие дорожные знаки, такие как стрелки направления, зебры и т.д. Удачи!
Ответ 2
Возможно, вы могли бы попытаться найти только линии на краях, найденные на серо-белых переходах, а не на всех краях всего изображения?