Suppose I have two images that contain many objects that are identical, or nearly so. Specifically, say the objects are shifted and scaled, but by differing amounts, from one image to the other. Is there an efficient algorithm for matching the objects?
The prototypical example would be subsequent images from a video stream, where different objects move by a different amount relative to the camera, and we'd like to know which object went were. Coming from an astronomy, where the images are filled with point sources, one method of identifying them is to convolve the base image with the point spread function (the average point source) and look for peaks in the resulting convolution image. So, I imagine it should be possible to shift, rotate, and scale one image, compute the inner product of the results (i.e. multiply pixels, then sum them), and then look for points in the shift/rotate/scale space that are local maxima to say that something in the two images match at that point.
Can this, or something like it, be done efficiently? For instance, would it be more efficient or less efficient to locate candidate objects, cut them out, and then do the shift/rotate/scale space search than just doing it with the whole image (assuming most objects are a small shift/rotate/scale away from their prior position)?