как совместить две сетки - PullRequest
5 голосов
/ 30 января 2012

У меня к вам очень хороший и каверзный вопрос.Мне нужно выровнять две сетки, используя очень быстрый алгоритм.Учитывая mesh1 и mesh2, я хочу найти, как мне нужно перемещать и поворачивать mesh1, чтобы находиться в той же позиции, что и mesh2.Сначала я сделал это, используя моменты инерции двух сеток, но алгоритм не работает, если вторая сетка похожа на первую, но с некоторыми отсутствующими частями.Другими словами, возьмите две идентичные сетки и отрежьте из одной и той же части.

Я хотел бы написать код на C, потому что мне нужно выполнить это на многоплатформенных машинах (linux / win) и сделатьэто очень быстро: его нужно поместить в алгоритм GA.

Эти две сетки находятся в формате STL (стереолитография) (двоичный файл или ascii), но, возможно, могут быть полезны при использовании другого типа формата файла.

У вас есть идеи, как выполнить этот материал?

обновление вопроса:

Прежде всего, я хочу поблагодарить вас, ребята, завсе ваши предложения.Я загрузил установочный PCL на свой компьютер и успешно скомпилировал алгоритм ICP (учебное пособие), взятый с веб-сайта PCL.Но теперь у меня есть несколько вопросов по этому поводу, возможно, потому что для меня это совершенно новая вещь.в чем смысл матричного вывода 4х4 для фитнеса?Я должен ожидать вращательную матрицу и траслативный вектор ..

Я надеюсь, что некоторые из вас могут мне помочь.Если вам нужна другая информация, пожалуйста, спросите.

Ответы [ 2 ]

4 голосов
/ 02 февраля 2012

Библиотека облаков точек содержит несколько ресурсов, которые могут оказаться полезными.Как говорит @ Throwback1986, ICP - это отличный алгоритм для выравнивания геометрии.Pcl также имеет другие, часто более быстрые алгоритмы выравнивания, основанные на идентификации и сопоставлении интересующих элементов в двух частях геометрии.Библиотека находит широкое применение в сообществах робототехники, которые, как и вы, очень заботятся о производительности.

Pcl написан на c ++.Хотя они и не такие портативные, как C, они предлагают инструкции по установке для Windows, нескольких * nix-версий и Mac OS.Я видел, что это работает на IOS и Android, а также.Ознакомьтесь с учебниками .

3 голосов
/ 30 января 2012

Итеративная ближайшая точка (ICP) - один из способов регистрации (выравнивания) трехмерных облаков точек с жесткими преобразованиями (Это также может применяться к сеткам.)

Вот хорошее введение: http://www.cs.duke.edu/courses/spring07/cps296.2/scribe_notes/lecture24.pdf

Вот разумное резюме: students.asl.ethz.ch / upl_pdf / 314-report.pdf

Вот реализация matlab: http://www.mathworks.com/matlabcentral/fileexchange/12627-iterative-closest-point-method

Вот некоторые потенциальные оптимизации: http://www.cs.princeton.edu/~smr/papers/fasticp/

...