1 | initial version |
As @sammy pointed out, you must understand that what you are trying to accomplish here is a hard and open computer vision problem.
Having said that, if you still interested in the problem then I would look for combination of scene categorization algorithms (for example [1]) and object detection algorithms (for example [2]) for the simple cases. Annotations such as "ground" or "sky" can be done by using the spatial location of the object and it's color. Other annotation such as "hill" and "water" seems very hard and it's not clear (at least, not to me) how to approach them.
[1]Lazebnik, Svetlana, Cordelia Schmid, and Jean Ponce. "Beyond bags of features: Spatial pyramid matching for recognizing natural scene categories." Computer Vision and Pattern Recognition, 2006 IEEE Computer Society Conference on. Vol. 2. IEEE, 2006.
[2]Felzenszwalb, Pedro F., et al. "Object detection with discriminatively trained part-based models." Pattern Analysis and Machine Intelligence, IEEE Transactions on 32.9 (2010): 1627-1645.