Fit maximum convex hull to interior of a set of points

Tag: circle , curve-fitting , convex-hull Author: helloxxx007 Date: 2013-04-15

I'd like to find the largest convex hull which fits in the interior of a set of points. I have a set of points which are roughly circular, with a large number of outlier points outside of the circle I'd like to fit. Imagine a circle with "solar flares"... I want to fit the circle and completely ignore the flares. I've tried various fit and culling strategies, but they aren't working well.

I've searched quite a bit and not found a solution. Thanks in advance.

Could you post a sample or two of what the points might look like?
You might want to look Gabriel graph. That should at least be able to limit you to the most relevant edges. If you answer the above question, I can probably extend this into an answer.
I've posted an image for reference - it isn't exactly as I described, but similar enough. I ended up not using alpha shapes, as the connectivity between points is dependent on the alpha chosen. Too small an alpha may not close the shape. Too large an alpha will exclude valid points. What I ended up doing was masking out the data I didn't want by multiplying by an annular mask, mirroring the points about the outer edge of the annulus, fitting a convex hull, then mirroring that convex hull about the annular ring again. Works perfectly.
Ah, that's about the worst case I could think of for something like that. I would have suggested a different approach, but unless I missed something, it doesn't sound like mine would be more efficient (O(N log N)). Also it may not have given exactly what you seek. That said, you may want to consider answering your own question with a more detailed explanation of your approach as it may be beneficial to others.

Other Answer1

The notion you need may be alpha shapes. The convex hull is a sub-set of the alpha-shape for an extreme value for alpha. The alpha shape is fitting a set of point closer than the convex hull with some values for alpha.

Theory has been developed by Edelbrunner. This is a good start:

For computation, you must: compute delaunay triangulation and/or voronoi diagram, then select points that observe one condition.

Example alpha shape:

enter image description here

This is in fact a concave hull, and it may disregard outliers.


Not exactly what I was looking for, but I was able to use this strategy to get something close-enough to what I need. Thank you very much for steering me in this direction. I found the following website truly invaluable for understanding alpha shapes - the Java applet shows you how thing work quite nicely.…