CropHull недостающие очки и добавление дополнительных очков - PullRequest
0 голосов
/ 10 апреля 2020

При применении обрезки на трехмерном вогнутом корпусе я получаю пропущенные точки и дополнительные точки в отфильтрованном результате.

Контекст Я использую оболочку сферы и облако точек рука в качестве входа алгоритма. setCropOutside имеет значение true, так как я хочу получить точки облака, которые находятся внутри корпуса.

Текущее поведение Полученное отфильтрованное облако имеет недостающие точки и дополнительные точки. На рисунке ниже изображен корпус из облака точек сферы и облака точек руки с точками снаружи корпуса зеленого цвета и точками внутри корпуса красным цветом. result crpp hull

Вот ссылка на файлы, используемые для воспроизведения проблемы:

  • polygon.ply содержит информацию об оболочке
  • test_hand_downsampled_1000_2.obj - это облако входных точек, которое мы хотим протестировать
  • Ожидаемый_фильтрованный_результат.obj - это результат, который мы получим sh (полученный путем ручной обрезки с помощью Blender).
  • Filter_result.ply содержит результат алгоритма

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

  • 237 точек ожидаются на пересечении (см. Ожидаемый_фильтрованный_результат.obj)
  • 236 точек являются общими
  • 1 точка отсутствует (237-236)
  • есть 42 дополнительных балла
  • , следовательно, 278 баллов находятся в результирующем облаке точек (см. Filter_result.ply

Примечание: обратите внимание, что есть одно незначительное различие между ожидаемым и заданные точки облаков после 3 десятичных знаков. Например, точка с координатой (-118.585701, -163.048050, 138.409943) в ожидаемом результате равна (-118.5857, -163.04803, 138.40997) в полученном результате.

...