Three-dimensional computer vision: a geometric viewpoint