A scene captured from video frames from an Android mobile device camera are to be analyzed in real-time. The scene will contain up to 12 distinct photos. The library images to be matched will number only 48 items. The library images and the scene photos are exact duplicates, but of course alterned by the process of capturing the video frames. The photos in the scene can be rotated 0, 90, 180, 270 degrees, plus or minus a few degrees. The scene containing the photos will have at least a little bit of perspective variance (resulting in keystone shape, rather than perfect rectangles). Alternatively, if the matching approach would benefit, the library might contain 192 items (for all 4 possible rotations).
This question is about what approach should be used, given the very small number of match possibilities and the fact that it will be running on a mobile device. The
SIFT algorithm would work, but it's more difficult to build the
opencv library on Android if it has the
SIFT code, and also that algorithm might be more complex to implement. Are there other well-regarded matching algorithms, whether implementable through
opencv or other libraries (maybe Google has a library?), that would suit this kind of image matching problem? The domain of image matching is so expansive, and there are so many different approaches to matching that it seems like this very narrow problem might have an efficient algorithm that really would excel beyond a more general algorithm.