User Tools

Site Tools


ece4580:module_pcd:normalizepose

Point Cloud Pose Normalization Using SVD

Sometimes a point cloud is living off in the wilderness, but we need it to be centered at the origina and possibly also oriented in some canonical manner. Turns out the the singular value decomposition can do that. Consider a matrix of points $P$ (given column-wise), and its singular value decomposition, $$ P = U \Sigma V.$$ The interesting fact is that $U$ is a 3×3 orthogonal matrix. That means it is effectively a rotation matrix. But then what do the rest of the SVD matrices represent? Well, $\Sigma V$ is the set of points prior to application of the rotation matrix, which would be the coordinate values of the points in a different reference frame. This reference frame is the pose normalizing reference frame.

However, the points can be anywhere in space. Normalization involves transforming them to be centered at the origin and with a canonical orientation. That means, the point cloud needs to be offset by its mean value, so that the new mean value is the origin (or the zero vector). Supposing that $\bar p$ is the mean of the set of points $P$, then each point $p_i$ needs to be shifted: $$ p_i' = p_i - \bar p.$$ After the shifting, all of the points are now “centered.” With this centered set $\bar{P}$, perform SVD $$ \bar P = U \Sigma V,$$ then collect $\bar p$ and $U$ into a transformation matrix $g$, $$ g = \left[ \begin{matrix} U & \bar p \\ 0 & 1 \end{matrix} \right].$$ Also perform the multiplication of the remaining SVD components, to get the pose normalized points $$ P_n = \Sigma V.$$

Voila, you are done. You have both the pose normalized points $P_n$ and the transformation $g$ that maps these points back to their original location in the world. In brief, $P = g \cdot P_n$ (where the product is of points represented in homogeneous form).


Return

ece4580/module_pcd/normalizepose.txt · Last modified: 2024/08/20 21:38 by 127.0.0.1