I have a 3D point cloud. I want to divide these point set on the basis of curvature. i.e. I want to divide them as set of points in a convex region, concave region etc. Can anyone suggest a solution to this problem
Can you show some examples, snapshots, etc? Are your points clouds more like 2.5D (kind of height fields) or more general 3D point clouds? The answer to these questions might change the tools and complexity of the possible approaches...
If the 3D points are part of a convex structure, the 'convex hull' can be calculated. However, you said there are concavities...
In that case, I suggest you use 'alpha shapes':
https://en.wikipedia.org/wiki/Alpha_shape
It comes down to this: if an edge of a triangle mesh of the convex hull, is larger than a threshold value, then a concavity is allowed in that spot. The smaller the distance is between your points, the smaller the concavities are allowed to be.
Be warned that computation can take a while (Delaunay triangulation).
If you finally get a smooth triangle surface, you could calculate angular deficits (very fast) at each vertex, and perform segmentation based on those values. A noisy surface needs to be smoothed first; local vertex averaging for example but compensate for volume shrinking.