Locate cropped area: feature detection with scale but not rotation invariance

asked 2014-09-18 03:40:56 -0500

Yan gravatar image

I have a picture and a square crop taken from it (examples below). The crop has been uniformly scaled to a constant size (130x130 px). I wish to locate the area of the crop within the original picture. I can't use the opencv matchTemplate() function, as the cropped area has been scaled.

I've got something working using SIFT to locate and match points between the two images, but this fails in some cases when it can't find enough feature points, such as the examples below.

This seems like it should be an easier problem than SURF/SIFT/BRISK etc normally deal with, since the search object hasn't been rotated, the scaling is uniform in all directions, and there are no obscured areas of the source or target images. Also this don't have to happen in real-time, so I am not worried about speed.

Are there any feature detectors (or algorithms) that would work better than SIFT for this use case? I thought perhaps there are some detectors which are (uniform) scale invariant but not rotation invariant?

original square crop original crop

Thanks for any pointers.


edit retag flag offensive close merge delete