Облако точек - Основные оси - Использование инерции

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

Теперь к моему вопросу:

Пытаюсь найти "основные компоненты" объекта. Использование PCA не дает хороших результатов, поскольку повернутые примитивы могут иметь свои основные вариации в любом направлении (которое не обязательно должно быть по длине объектов).

Единственный шанс, который я вижу, - это каким-то образом использовать симметрию моих примитивов. Нет ли метода, основанного на инерции? Может быть, как-нибудь найти главную ось симметрии и две другие, перпендикулярные ей?

Можете ли вы дать мне совет или указать на документы или реализации (может быть, даже на Python)?

Большое спасибо, Мерлин.

PS: Это то, что я получу, если буду применять только PCA. Специально для шишек это не работает. Только конусы, которые почти идентичны по форме, имеют одинаковую ориентацию, но мне нужно, чтобы они все указывали в одном направлении (например, вверх).

введите описание изображения здесь


person HesselKRaymond    schedule 15.04.2015    source источник


Ответы (3)


Итак, у вас есть конусы, и вам просто нужно повернуть их все в одном направлении? Если это так, вы можете подогнать к ним треугольник и указать вершину (например, серединными перпендикулярами сторон) на вашу главную ось.

person Xref_failed    schedule 15.04.2015
comment
У меня есть все упомянутые примитивы (сфера, эллипсоид, ...). Причина, по которой на рисунке показаны только конусы, заключается в том, что в этом случае PCA не удалось больше всего (все конусы ориентированы более или менее в разных направлениях). Я только что нашел этот учебник, но не уверен, что он поможет. Похоже, что он вычисляет главные компоненты облаков точек по инерции вместо PCA. pointclouds.org/documentation/tutorials/moment_of_inertia.php Что вы думаете? - person HesselKRaymond; 16.04.2015

У вас интересная проблема. Обычно используемые дескрипторы формы (VFH), которые инвариантны к форме, но не позы (что это то, что вы действительно хотели бы) не будет инвариантным к растяжению формы.

Я думаю, чтобы добиться успеха в этом, вам нужно более четко понимать инварианты, которые вы пытаетесь сохранить при изменении формы. Это топологический инвариант? Если это так, то вот хорошая отправная точка: https://www.google.com.tr/search?q=topologic%20invariant%20shape%20descriptor

person D.J.Duff    schedule 16.04.2015
comment
Идея всего проекта состоит в том, чтобы скормить мои примитивы (после некоторой незначительной предварительной обработки) глубокому учащемуся (составной автокодировщик шумоподавления), чтобы увидеть, способен ли он изучить значимые функции. В этом случае он сможет правильно классифицировать большинство примитивов. Так что определение дескрипторов форм - это именно то, чего я пытаюсь избежать. Я не хочу применять какие-либо знания в конкретной предметной области (разработка функций) перед тем, как передать свои данные машинному обучению. Он должен быть максимально сырым. Единственное, что я хочу сделать заранее, - это выровнять все облака точек и вокселизировать их. - person HesselKRaymond; 16.04.2015
comment
Боюсь, что согласование, которое вы собираетесь сделать, - это знание предметной области. Это, конечно, не сразу доступно на основе сенсорных данных. Даже если вы используете PCA, вы делаете некоторые предположения о том, когда две разные конфигурации имеют одинаковую форму (потому что вам нужны эти предположения, чтобы мотивировать выбор выравнивания - в противном случае, как вы можете выполнить выравнивание? У вас может быть ответ, который я не думал , но я считаю, что за каждым подходом к выравниванию стоит такое предположение). - person D.J.Duff; 16.04.2015
comment
Таким образом, я бы ожидал, что выравнивание тоже будет изучено, если вы действительно не используете никаких предположений - но тогда, как мне сказали, глубокое обучение - это волшебство. - person D.J.Duff; 16.04.2015
comment
Да, это правда. Если бы я попытался найти идеальное совпадение, мне пришлось бы сделать некоторые предположения. Для примитивов, например. было бы, что все объекты обладают вращательной симметрией. Поэтому я просто буду придерживаться чистого PCA, который, по крайней мере, ориентирует похожие объекты аналогичным образом. Это полностью общий характер и может применяться к любому типу ввода (возможно, к более сложным моделям САПР, но также к любым n-мерным данным). Если остается какая-то вариация, машинное обучение должно будет позаботиться о ней. Вот для чего они предназначены ... интерпретации входных данных, которые изначально не были изучены. - person HesselKRaymond; 17.04.2015

Я решил просто придерживаться простого PCA, поскольку это единственный метод, который является полностью универсальным и не зависит от предварительных (экспертных) знаний о данных.

person HesselKRaymond    schedule 20.04.2015