Let me describe the problem as follows. I have a robot which moves across a known 2D board. The board is painted with several colors. The paintings are larger squares, circles and lines. The robot has a camera mounted so that it looks down towards the floor. As we can calibrate the camera we can reverse the perspective transformation and by doing so, we are observing a subimage of the whole board image. Given the subimage (and the board image), what would be the best strategy towards localization? I am asking only about the image processing/computer vision part, so no need to talk about Kalman filter etc. The trivial approach would be two use the subimage as a template, but as we also need rotation invariance we would need to search a 3D space (tx, ty, theta). Scale invariance is not needed as the camera will be on a constant and known height. Some subimages will have it's duplicates, but we still need to known where those duplicates are so the output should either be some probability function ( p(tx,ty,theta) ) or a set of candidates.
The algorithm should be fast, doesn't have to be realtime but should run over 5-10fps on a standard PC.
The board image is abound 6000x6000. The subimage is around 500x500. The colors are solid and known so we can easily threshold/classify them into several (4-5) classes.