2009-09-30 2 views
2

У меня есть массив точек. Я ЗНАЮ, что эти точки представляют собой много строк на моей странице.Найти строки в облаке точек

Как их найти? Нужно ли находить расстояние между облаками точек?

Благодаря Джонатан

ответ

4

Может быть Hough Transform является то, что вы ищете? Или linear regression?

[EDIT] Как выясняется, проблема состоит в том, чтобы идентифицировать строки внутри списка координат 2d. Я бы продолжил этот путь.

Линейная регрессия может использоваться только для обеспечения наилучшей линейной регулировки для набора точек, а не для обнаружения многих линий. Возможно, используйте hough, чтобы получить грубые строки, проверьте, много точек, выровненных по этим линиям. Посмотрите на оставшиеся моменты. Должны ли они принадлежать к линии?

Использование аккумулятора для определения линий кажется мне хорошим решением в целом, но если ваши точки следуют некоторым отношениям, попробуйте адаптировать аккумулятор к нему, чтобы он лучше соответствовал.

Определение проблемы не так специфично, трудно точно сказать, как действовать. Использование аккумулятора для таких проблем кажется основой для меня, которая должна быть сохранена.

По крайней мере, проблема !

+0

Я попытался преобразование хафа, но он пропускает много линий ... – 2009-09-30 19:27:39

+0

В прошлом у меня было обнаружить дорожные знаки внутри картины (которые содержат обычные формы, такие как треугольники и круги, ...) Он работал очень хорошо. Ваш массив точек - это не изображение, не так ли? Я имею в виду, что это набор/список координат двух точек или изображение? – jdehaan

+0

да точно.только очки. У вас есть код C# для этого? – 2009-09-30 20:06:44

1

Это то же самое, что и рассмотрение того, что все перекрывающиеся линии между двумя точками.

  1. Перейти по всем линиям точка-точка и преобразовать его в структуру, которая содержит:

    а) у перехватывают

    б) наклон

    с) нижний х переплете

    д) верхние х переплете

  2. Сортировка по y-intercept и slop.

Теперь вы знаете, что две линии могут перекрываться, только если они имеют один и тот же перехват и тот же наклон.

  1. Для каждого набора линий с одинаковым y-перехватом и наклоном проверьте, перекрываются ли границы x. Если они это сделают, у вас нет отдельных строк, у вас есть 1 линия с более чем 2 очками.

  2. Обращайтесь с вертикальными линиями как особым случаем.