Three-Dimensional Computer Vision: A Geometric Viewpoint