Да, вы могли бы сделать это, но это может не работать с желаемым качеством, если это все, что вы делаете. Задача не простая, нет «простого» алгоритма, который бы просто определял «дорогу» или «курс» на основе изображений. Кроме того, существуют реализации на нескольких языках, вот одна на C ++ .
Одна вещь, которую вы должны учитывать, это то, что дороги не всегда прямые, поэтому точка схода может быть на повороте дороги ...
Стэнфордские машины DARPA Grand Challenge и DARPA Urban Challenge использовали обнаружение на основе цвета для обнаружения управляемой поверхности (например, дороги), а затем использовали какой-то алгоритм обнаружения краев и формирования линий (неясно, был ли он основан на преобразовании Хафа) «прогнозная» оценка направления дороги. Я верю, что они использовали какую-то систему для обнаружения точки схода, и они определенно учитывали повороты на дороге.
Я полагаю, что вам действительно нужно обнаружить кромки дороги, превратить их в линии (не обязательно прямые), а затем найти точки схождения. Это предполагает, что может быть решен ряд других трудных задач: (1) ваши изображения имеют надлежащее качество; (2) вы можете обнаружить дорогу или как минимум ее края; (3) вы можете обрабатывать изображения достаточно быстро, чтобы не отставать от движения автомобиля.
Если все, что вы делаете, это анализирует существующее видео, я бы начал с очень простого подхода:
- Определение поверхности дороги в видео - это задача сегментации, найти все пиксели на изображении, которые являются дорогой; здесь будет полезно выделить три класса: дорога, не-дорога и небо.
- Найдите горизонт (это примерно то, где ваши классы дороги / не-дороги и неба встречаются
- Используйте простой детектор краев (скажем, детектор краев Собеля), чтобы различать грани между дорогой и бездорожьем
- Примените преобразование Хафа к краям Собеля, чтобы нарисовать "линии" для края дороги
- Найдите, где линии дороги встречаются на горизонте