2016-01-13 4 views
0

Я сделал странное наблюдение, и я спрашиваю себя, есть ли у кого-то объяснения.Каноническая поза PointCloud

Предположим, что у нас есть PointCloud, например идеальный цилиндр. Этот цилиндр каким-то образом размещен и повернут в пространстве. Теперь для этого цилиндра мы вычисляем его центроид и собственные векторы с анализом главных компонент.

Теперь я могу описать это позой как аффинное преобразование вида:

Eigen::Affine3d pose; 
pose.translation << centroid[0], centroid[1], centroid[2]; 
pose.linear() = evecs; 

Теперь давайте предположим, что я хочу, чтобы преобразовать объект в его недвусмысленная, каноническая позе, то я хотел бы сделать следующее:

obj.transform(obj.getPose().inverse()); 

Под этим я бы превратил объект в его локальную систему координат и, следовательно, это каноническая поза. И obj.getPose() создаст мне новую позу, опять же после пересчета новых собственных векторов и положения центра тяжести (которые тогда должны быть в (0,0,0)).

После того как я сделал это, однако в конечном итоге новая, каноническая поза объекта иногда это:

1 0 0 0 
0 1 0 0 
0 0 1 0 
0 0 0 1 

Таким образом, единичной матрице. Я ожидал бы это, но иногда я получил это:

-1 0 0 0 
0 -1 0 0 
0 0 1 0 
0 0 0 1 

Я не могу объяснить это поведение для себя, и я это вызывает проблемы для меня, как я сравниваю позах. У вас есть идея, почему это происходит?

ответ

1

Собственные векторы не определены однозначно, если v является собственным вектором, тогда -v также является собственным вектором. Это именно то, что вы наблюдаете.

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

+0

Да, у меня был более глубокий вид, и вы правы. Правильно ли можно просто назначить Identity-Matrix после преобразования в канонической позе? Чтобы избавиться от этой проблемы? – Chris

+0

да конечно! Но в более общем случае, когда вы хотите сравнить две позы, вы должны быть осторожны с вышеупомянутыми двусмысленностями. – ggael

Смежные вопросы