# Finding point distribution by eigen vectors

First of all I want to tell that my mathematics is poor, so I can’t use correct terms. Sorry for that. I have a point data set. This data represents some cylindrical objects surfaces (not exactly cylindrical due to occlusion part of the surfaces, represent by point data. ). In addition to cylindrical objects there are noisy data. What I want is to extract points represent cylindrical surfaces out of the other points. My idea is to use eigen vector analysis for that. So I already computed relevant eigen values (x0, x1, x2) and their eigen vectors (v0, v1, v2) for each point. For this, I used neighbor points, i.e., within given distance (for example 0.2m), of each point. I roughly aware of the vector (v2), relevant to eigen value two (x2), represents the direction of point distribution along the surface.

My question is how can i compare each 3d vector (v2) with other neighbor vectors in order to extract points which have similar point distribution direction (having nearly equal vectors). I’m poor in vector analysis. I am not sure the dot product between any two adjacent vectors is enough for this.

You might want to use least-squares for this. A cylinder is given by $x^2+y^2=r^2$, where the $xy$-plane is in the base of the cylinder, and the $z$-axis is along the center. Using that constraint, you could transform your data to get a cylinder, and then remove the $z$-coordinate. From there, I would think the cylinder constraint above would allow least-squares to work. This would get you an "average" for the cylinder, and then you could determine the distances of points from that average, and choose points where the distance is small enough to your liking. Is this like what you want? –  Eric Stucky Jun 3 '12 at 20:50