Detect Abnormal Points in Point Cloud

590 Views Asked by At

Given a list of point cloud in terms of $(x,y,z)$ how to determine abnormal points?

The motivation is this. We need to reconstruct a terrain surface out from those point cloud, which the surveyors obtain when doing field survey. The surveyors would take an equipment and record a sufficient sample of the $x,y,z$ of a terrain. Those points will be recorded into a CAD program.

The problem is that the CAD file can be corrupted from time to time with the introduction of "abnormal" points. Those points do not fit into the terrain surface generally, and tend to have erroneous $z$ value ( i.e., the $z$ value is outside of the normal range).

I am aware that the definition of abnormal points is a bit loose; and I can't come up with a rigorous definition of it. However, I know what is an abnormal point when I see the drawing.

Given all these constraint, is there any algorithm to detect these kinds of abnormal points?

1

There are 1 best solutions below

4
On BEST ANSWER

The answer is largely determined by your surface reconstruction technique (simple triangulation, marching cubes, and the characteristics of the noise. If the noise points are infrequent and uncorrelated, then the problem is easier.

  1. You can presume the surface is locally planar and fit a plane to some small region. A simple "averaging" fit is straightforward and computationally efficient. Once the fit plane is known, you can reject points outside of some tolerance. You can choose to keep the "good" points as they are - or you might consider obtaining new "average" points by projecting the good points onto the fit plane to obtain new samples.
  2. An iterative technique (like a re-weighted least squares) is better if you have the time to perform a few iterations on each region.
  3. There are other, more robust, surface reconstruction techniques like marching cubes, etc., that can perform limited artifact rejection.

Regardless, a good characterization of the spurious points is needed.