This paper proposes a method of determining human head poses from a sequence of images. The main idea is to use some features in a 3D head model to generate a virtual fronto-parallel projection that satisfies conditions of affine approximation. Then the affine parameters between the virtual projection and input view are calculated. After that, rotation and translation parameters of the head are roughly estimated by a circle-ellipse correspondence technique based on the affine parameters. Finally, an iterative optimization algorithm is utilized further to refine the results. The accuracy is maintained by estimating reliability of the 2D-3D feature correspondences and weighting each factor of the optimization objective function. The system performance is also improved by applying a modified KLT technique to speed up the convergence during the face feature tracking process. Experimental results show that our method can accurately recover head poses in a wide range of head motion.