У меня есть N количество точек (x_N, y_N, z_N) в облаке точек. Облако точек образует объект сферической формы. Моя проблема в том, что у меня есть точки в моем облаке, которые заметно выступают вдоль оси z (это связано с тем, что булавочный объект вставлен в мой объект во время сканирования). Я хотел бы удалить эти пункты.
Один из подходов, который я выбрал, — это найти изменение наклона для набора точек в моем облаке по сравнению с ближайшим следующим набором точек. (например, я беру свои первые 10 точек, вычисляю изменение наклона и сравниваю его с изменением наклона для следующих десяти точек). Но это не так хорошо работает. Какие-либо предложения?
Любая помощь будет принята с благодарностью. Любая путаница в отношении моей проблемы, просто дайте мне знать.
Если это точно сфера, подобная объекту, и точки распределены одинаково (ни одна сторона не имеет больше точек, чем другая сторона), возьмите средние значения X, Y и Z всех точек.
Это будет рядом с center
сферы. Если этот штифт не очень толстый или очень длинный (если у него мало точек по сравнению с общим), вы можете принять это как center
,
Затем измерьте расстояние каждой точки до center
,
Снимите те, которые имеют расстояния выше среднего расстояния.
Если вам известны радиусы сферы и ее центра, просто рассчитайте расстояние каждой точки до центра и сравните с радиусами.
У меня есть наблюдение и соответствующее предложение:
Во-первых, наблюдение: вы, кажется, строите индивидуальное решение для одноразового случая. Это не будет работать, когда вы сканируете другой объект (при этом булавка снова торчит).
Теперь предложение: используйте что-то вроде meshlab, где вы можете загрузить облако точек, выбрать точки и удалить их.
Конечно, если вы увлечены написанием кода для решения этой проблемы, то это не поможет.