Imagine a plain rectangular bitmap of, say, 1024×768 pixels filled with white. There are a few (non-overlapping) sprites drawn onto the bitmap: circles, squares and triangles.
Is there an algorithm (possibly even a C++ implementation) which, given the bitmap and the color which is the background color (white, in the above example), yields a list containing the smallest bounding rectangles for each of the sprites?
Here’s some sample: On the left side you can see a sample bitmap which my code is given (together with the information that the ‘background’ is white). On the right side you can see the same image together with the bounding rectangles of the four shapes (in red); the algorithm I’m looking for computes the geometry of these rectangles.
Some painting programs have a similiar feature for selecting shapes: they can even compute seemingly arbitrary bounding polygons. Instead of dragging a selection rectangle manually, you can click the ‘background’ (what’s background and what’s not is determined by some threshold) and then the tool automatically computes the shape of the object drawn onto the background. I need something like this, except that I’m perfectly fine if I just have the rectangular bounding areas for objects.
I became aware of OpenCV; it appears to be relevant (it seems to be a library which includes every graphics algorithm I can think of – and then some) but in the fast amount of information I couldn’t find the way to the algorithm I’m thinking of. I would be surprised if OpenCV couldn’t do this, but I fear you’ve got to have a PhD to use it. 🙂


Here is the great article on the subject:
http://softsurfer.com/Archive/algorithm_0107/algorithm_0107.htm
I think that PhD is not required here 🙂