1. A method for estimating a 3D pose of a 3D object in an environment, comprising the steps of: rendering a set of pairs of 2D reference images using a 3D model of the object, wherein the object has a specular surface, and a set of poses of the object, wherein each pair of reference images is associated with one of the poses; acquiring a pair of 2D input images of the object; and estimating a 3D pose of the object by comparing features in the pair of 2D input images and features in each pair of 2D reference images using a cost function matching the features, wherein the features are specular flows, wherein the steps are performed in a processor.