PCL, SACSegmentation обнаруживающие сферы - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь найти сферы из облака точек с помощью pcl :: sacSegmentation Использование RANSA C. Облако сканируется точным наземным сканером с одной станции. Плотность облаков составляет около 1 см. Наилучшие результаты пока представлены на рисунке ниже. Как вы можете видеть, облако содержит 2 сферы (r = 7,25 см) и стальную балку, к которой прикреплены шарики. Я могу найти трех кандидатов в сферы, чьи внутренние точки извлечены из облака на изображении (вы можете увидеть две круговые формы на балке рядом с сферами).

Входное облако точек. Извлеченные внутренние точки

Итак, похоже, я рядом. Тем не менее, найденные сферные центры находятся слишком далеко (~ 10 см) от правды. Любое предложение, как я мог бы улучшить это? Я довольно долго настраивал параметры модели. Вот параметры для вышеупомянутых результатов:

seg.setOptimizeCoefficients(true);
seg.setModelType(pcl::SACMODEL_SPHERE);
seg.setMethodType(pcl::SAC_RANSAC);
seg.setMaxIterations(500000);       
seg.setDistanceThreshold(0.0020);    
seg.setProbability(0.99900); 
seg.setRadiusLimits(0.06, 0.08);
seg.setInputCloud(cloud);

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

Я с радостью предоставлю вам больше информации, если это необходимо.

Такс naikh0u

1 Ответ

0 голосов
/ 07 мая 2020

После некоторого исследования я пришел к выводу, что я не могу найти сферы с SACSegmentation от облака, которое содержит много других точек, которые не принадлежат ни к какой форме сферы. Как и в моем случае, луч слишком много для алгоритма. Таким образом, я должен выбрать точки, которые показывают некоторый потенциал, являющийся частью формы сферы. Также я думаю, мне нужно разделить точки, принадлежащие разным сферам. Я проверил и увидел, что мой код работает довольно хорошо, если входное облако имеет только точки сфер для одной сферы с некоторым «естественным» шумом.

Некоторые решили эту проблему, сначала извлекая все точки, принадлежащие плоскостям, а затем искали для сфер. Другие использовали цвета цели (в случае камеры), чтобы извлечь только необходимые точки.

Удаление точек плоскости должно работать для моего примера облака, но мое приложение может иметь более сложные формы, поэтому оно может быть слишком простым ..

Я продолжаю поиск и думаю, что я собираюсь опубликовать свои результаты здесь. Не стесняйтесь делиться своими мыслями!

...