There's a mistake in geork's solutions as well. He increments both the X and Y coordinates in a single loop, so the code actually only checks along the diagonal of the region. In order to check every single pixel, you need two loops, an inner loop that goes through all the X coordinates (for example), and an outer loop that goes through all the Y coordinates (running the inner X loop for each of them).
However, this will probably be hideously slow. I would use Crimson Wizard's solution and check whether the object sprite bounding boxes intersect with the region. If that's not good enough, you could then run through only the intersecting regions using (a corrected version of) geork's solution.
Isn't there already a function or module for pixel-perfect collision detection, though? That's essentially what you're trying to do, so maybe you can use that.
The other way to go about this is to rethink your approach. You say every object has to be in one of the regions? Then can you not just keep track of which one you place them in initially (e.g. storing it in a custom object property) and update it whenever they move? Also, how do you ensure that an object isn't in two areas at the same time?