Я пытаюсь уместить более одной линии в список точек в 2D. У меня довольно мало очков (16 или 32).
Эти точки поступают из моделируемой среды робота с прикрепленными к нему лазерными дальномерами . Если точки лежат на линии, это означает, что они обнаружили стену , если нет, это значит, что они обнаружили препятствие . Я пытаюсь обнаружить стены и вычислить их пересечение, и для этого я подумал, что лучше всего подобрать линии в наборе данных.
Подобрать одну линию к набору точек не проблема, если мы знаем, что все эти точки находятся на линии или вокруг нее.
Моя проблема в том, что я не знаю, как определить, какие наборы точек следует классифицировать для размещения на одной линии , а какие нет для каждой строки. Кроме того, я даже сейчас не знаю количество точек на линии, хотя, естественно, было бы лучше определить максимально длинный отрезок линии.
Как бы вы решили эту проблему? Если я посмотрю на все возможности, например, для групп из 5 баллов для всех 32 баллов, то получится 32 варианта выбора 5 = 201376 возможностей. Я думаю слишком много времени уходит на то, чтобы опробовать все возможности и попытаться подогнать строку ко всем пяти кортежам.
Итак какой алгоритм был бы лучше , который работал бы намного быстрее? Я мог соединять точки в пределах лимита и создавать полилинии. Но даже соединить точки - сложная задача, так как расстояния до краев меняются даже в пределах одной линии.
Как вы думаете, можно ли выполнить какое-то преобразование Хафа для дискретного набора данных с таким малым количеством записей?
Примечание: если эту проблему слишком сложно решить, я был думать об использовании порядка датчиков и использовать его для фильтрации. Таким образом, алгоритм может быть проще, но если есть небольшое препятствие перед стеной, это нарушит непрерывность линии и, таким образом, сломает стену на две половины.