OpenCV Python — как реализовать RANSAC для обнаружения прямых линий?

Я пытаюсь обнаружить линии на изображении, которое содержит дорогу. Используя сглаживание по Гауссу и обнаружение границ Канни, я достиг стены, пытаясь реализовать RANSAC. Я в основном не знаю ни единого шага, как это сделать. Могу ли я получить грубую идею или рабочий код со случайным изображением «foo.png», который реализует RANSAC?


person zyrkor    schedule 01.11.2016    source источник
comment
Несколько связанных ответов: stackoverflow.com/a/40142233/798093 stackoverflow.com/questions/7227074/   -  person masad    schedule 02.11.2016
comment
Обнаружение линии обычно осуществляется с использованием преобразования Хафа. Однако, если вы все еще заинтересованы в использовании Ransac, тогда функция OpenCV fitLine уже делает это docs.opencv.org/2.4/modules/imgproc/doc/   -  person masad    schedule 02.11.2016
comment
@masad fitLine использует m-оценку.   -  person Micka    schedule 02.11.2016
comment
Примерка линии @zyrkor RANSAC: 1. Нарисуйте случайным образом 2 ребра. 2. оценить для каждого ребра, достаточно ли оно близко к линии, образованной этими двумя образцами, и считать его выбросом или выбросом. 3. сделайте это много раз, пока не будете уверены, что нашли строку с наибольшим количеством вставок. 4. вычислить окончательную строку с помощью функции fitLine (или линейной регрессии), используя только все вставки. Но для вашей задачи я бы рекомендовал использовать LineSegmentDetector из openCV   -  person Micka    schedule 02.11.2016
comment
@Micka Взгляните на это: stackoverflow.com/a/15184899/798093 . Если используется один из других distTypes (CV_DIST_L1, CV_DIST_L12, CV_DIST_FAIR, CV_DIST_WELSCH, CV_DIST_HUBER), то процедура соответствует требованиям RANSAC.   -  person masad    schedule 02.11.2016