RANSAC для прямоугольного параллелепипеда

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

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

Например, я в конечном итоге хочу оценить 6 граней куба. Я мог бы просто оценить три и взять их параллельные зеркала, чтобы получить все 6. Каждая грань предположительно будет представлена ​​​​как плоскость, для определения которой нужна точка и нормаль (или, альтернативно, 3 точки). Однако существуют ограничения на нормали каждой плоскости, поскольку все они должны быть ортогональны друг другу. Я не уверен, как включить ограничения в оценку модели, и если это даже правильный способ сделать это.

Любые идеи очень приветствуются. В настоящее время я использую реализацию набора инструментов «RANSAC для чайников» Марко Зулиани, если это вообще актуально.


person user26302    schedule 28.10.2014    source источник


Ответы (1)


Если бы мне нужно было разработать алгоритм для решения этой задачи (сопоставление куба с облаком точек куба), я бы разделил его на два этапа:

  1. Используйте некоторый алгоритм кластеризации, чтобы найти шесть кластеров, по одному для каждой грани. Во время выполнения алгоритма мне потребуется шесть «кандидатных» областей, и каждая точка будет считаться относящейся к одному из кластеров лиц или быть выбросом. Некоторая модифицированная форма DBSCAN кажется подходящим вариантом;
  2. Примените некоторую подгонку к каждому лицу, скорее всего, RANSAC, поскольку это то, что вы уже используете.

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

person heltonbiker    schedule 28.10.2014