Мы пытаемся обнаружить линии дорожек на беговой дорожке (и с этой информацией о предстоящем направлении).
В настоящее время мы используем следующие (упрощенные) шаги:
Двоичный: преобразование ввода с двоичным порогом
Обрезано: обрезать интересующую область (в настоящее время только нижняя половина изображения)
Canny: обнаруживает ребра и группирует их с помощью HoughLinesP
Восходящие линии и закрытие: сохраняйте только линии с экстремальным наклоном - игнорируйте горизонтальные линии
Результат: найдите подключенные компоненты и установите квадратичную функцию через каждую линию
Это работает в целом (примеры: direct.png, left.png), но имеет проблемы, если, например, горизонтальная линия соединения не была удалена (пример: problem.png - внизу справа и внизу слева).В таком случае две линии и соединение интерпретируются как один подключенный компонент.
Поскольку наша точка зрения может сильно отклоняться слева направо (камера установлена на бегущем человеке), определить довольно сложнопорог наклона для линий, указывающих вверх.
Есть ли лучший способ избавиться от линий треков, не указывающих вверх?Поскольку текущее решение с canny, грубым преобразованием и фильтрацией наклона не является оптимальным для кривых и иногда вообще не работает (как описано выше).
Можно ли было бы перейти от обрезанного изображения прямо кразделенные линии с помощью операций морфологии?Аналогично этому примеру .Я знаю, что у нас нет строгих горизонтальных линий, которые делают любое подходящее ядро намного более сложным (я полагаю).
В настоящее время мы пытаемся использовать перспективные преобразования, чтобы получить вид птицы на дорожке.Это должно помочь различить горизонтальные и направленные вверх линии.
Другая небольшая проблема - слишком короткие линии, которые приводят к неточным приближенным квадратичным функциям (большинство левых строк в problem.png и direct.png).Это может быть легко решаемо (требуя минимального количества пикселей для компонента, который будет считаться линией дорожки) и не должно быть частью этого вопроса.
РЕДАКТИРОВАТЬ (ответить на вопросы из vlad_tepesch)
Что с кривыми?должны ли они быть частью ваших моделей дорожек или нет?
Мы явно хотим определить кривые беговой дорожки - так как это необходимо для оценки направления.Но мы хотим игнорировать (убрать) горизонтальную кривую подключения в нижней части файла problem.png.
4. / 6.выпрямление - искажение камеры
Я еще раз посмотрю на исправление, до сих пор я откладывал его, так как думал, что это не так важно.
7.3 сколько пикселейесли перекрытие между сегментами игнорируется (количество пикселей в группе)
Просто нарисуйте все линии из группы и проверьте ненулевое количество пикселей?
10.дорожки, как правило, не являются квадратичными - вместо этого смотрите int clothoids - это может перебить, поэтому вместо этого можно использовать полином 3-го порядка
Я понимаю вашу точку зрения.Клотоиды в настоящий момент находятся вне поля зрения, но я буду помнить о них.Как бы вы пошли с оценкой направления, если мы используем более сложную подгонку?В настоящее время мы просто берем первый коэффициент 2-го полинома Одера, чтобы оценить направление изгиба (и степень кривизны, чтобы различать кривые и прямые части).
необязательно более расширенный
Хороший вопрос, мы уже думали об усреднении результатов по нескольким кадрам.Я также держу это предложение в глубине души.
Прямое
![straight](https://i.stack.imgur.com/Omhcz.png)
Слева
![left](https://i.stack.imgur.com/g87oG.png)
Проблемы
![problems](https://i.stack.imgur.com/4Jl2V.png)