ece4580:module_pcd:localnormals
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
ece4580:module_pcd:localnormals [2017/02/04 13:23] – [Visualizing in Matlab] pvela | ece4580:module_pcd:localnormals [2024/08/20 21:38] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Local surface | + | ====== Local Surface |
- | For some applications, | + | For some applications, |
+ | First, though, it is important to note that we are talking about local neighborhoods to the points in question. | ||
+ | ===== Getting a Local Neighborhood ===== | ||
+ | |||
+ | There are actually many ways to get a local neighborhood. | ||
+ | |||
+ | Some ideas are: | ||
+ | * Using the connectivity matrix. | ||
+ | * Using Matlab' | ||
+ | * Using evenly chosen points from the point cloud list, then creating their neighborhoods. | ||
+ | More details on the underlying algorithms go [[ECE4580: | ||
===== PCA ===== | ===== PCA ===== | ||
- | The principal component analysis, or PCA, approach does not really perform principal component analysis, however it does share that same processing up to a certain point. | + | The principal component analysis, or PCA, approach does not really perform principal component analysis, however it does share that same processing up to a certain point. |
+ | the eigenvalue decomposition of the covariance matrix is | ||
+ | $$ \Sigma = V \Lambda V^T, \ \ \text{where}\ \ \Lambda = \text{diag}(\lambda_1, | ||
+ | The eigenvalue $\lambda_i$ reflects the variance associated to the data along the direction given by its associated eigenvector $\vec e_i$. Recall that the matrix $V$ consists of the eigenvectors | ||
+ | $$ V = \left[ \begin{matrix} | & | & | \\ \vec e_i & \vec e_2 & \vec e_3 \\ | & | & | \end{matrix} \right].$$ | ||
+ | If the set $P$ is truly planar, then the normal vector to the points in $P$ should be aligned with the eigenvector with no variance (the eigenvalue such that $\lambda_i = 0$). In practice there will be noise or some curvature, so what is sought is the minimal eigenvalue and eigenvector. | ||
- | NOTES HERE. | + | Finding the smallest of the non-negative, |
+ | |||
+ | //Matlab Notes:// Implementation will involve proper use of the '' | ||
===== SVD ===== | ===== SVD ===== | ||
Line 21: | Line 38: | ||
Naturally, if we are given a small set $P$ and would like to compute its normal, then the first step would be to center the data. After that computation of the SVD followed by extraction of the smallest singular vector gives the necessary estimate. By definition of the SVD, this vector is already unit length, so we've got the answer. | Naturally, if we are given a small set $P$ and would like to compute its normal, then the first step would be to center the data. After that computation of the SVD followed by extraction of the smallest singular vector gives the necessary estimate. By definition of the SVD, this vector is already unit length, so we've got the answer. | ||
+ | |||
+ | //Matlab Notes:// In slightly older Matlab versions, implementation will involve proper use of '' | ||
===== Visualizing in Matlab ===== | ===== Visualizing in Matlab ===== | ||
Line 31: | Line 50: | ||
===== Matlab Version ===== | ===== Matlab Version ===== | ||
- | Matlab has its own internal routine for performing the same operation. It is called '' | + | Matlab has its own internal routine for performing the same operation. It is called '' |
--------------------- | --------------------- |
ece4580/module_pcd/localnormals.1486232637.txt.gz · Last modified: 2024/08/20 21:38 (external edit)