Computer Vision: Models, Learning, and Inference