Computer Vision: Algorithms and Applications