1. A method for determining a pose of an object, comprising: acquiring a set of coded images of an object by a camera while scanning the object with a laser beam pattern, in which the object is semi-specular; acquiring a set of flash images of the object by the camera while illuminating the object: with a set of light sources at different locations near the camera, there being one flash image for each light source; determining 3D coordinates of points on the surface of the object from the set of coded images; determining 2D silhouettes of the object from shadows east in the set of flash images; determining surface normals of the points on the surface of the object using the 3D coordinates and photometric stereo of the 2D silhouettes; and combining the 3D coordinates, the 2D silhouettes, and the surface normals to determine a pose of the semi-specular object,