Eigen::Vector3f PhotoCamera::unproject(const Eigen::Vector2f &pixel) { Eigen::Vector3f pixelH; pixelH << pixel(0), pixel(1), 1; Eigen::MatrixXf pseudoInverse = getPseudoInverse(); Eigen::Vector4f XH = pseudoInverse*pixelH; Eigen::Vector3f p = XH.hnormalized(); Eigen::Vector3f ray = p - cameraCenter.hnormalized(); ray /= ray.norm(); return ray; }