In this problem, I have few 3D point cloud. the measurement of these points is erroneous. one of the interesting features we would like to measure for geometrical representation and matching is "surface normal".
simply, if these points are coming from a small patch in space, we may assume that this patch is almost planner. we are interested in modeling this plane, that is, finding the normalized vector perpendicular to this plane: "surface normal".
I generated 25 3D points on XY plane and added some noise to them.
I demonstrate 2 approaches to find the surface normal:
1. using SVD: surface normal is the Eigen vector with smallest Eigen value
2. using linear algebra: any 2 vectors formed by any 3 points will only exist in their plane (XY plane). thus, surface normal can be found by cross product. to minimize error, we can take average of multiple sampled estimation. there might be better ways than just average, but I think it's suitable enough for an example
![]() |
|
![]() |
![]() |
![]() |
|