该函数是 Kannala-Brandt 鱼眼相机模型的反投影:输入像素坐标 (u,v)(u,v),输出相机坐标系下 z=1z=1 归一化平面上的三维点。内部用牛顿迭代求解径向畸变多项式的逆。
cv::Point3f KannalaBrandt8::unproject(const cv::Point2f &p2D) { // 参数: // p2D:像素坐标 (u, v)。 // 返回: // cv::Point3f(x, y, 1):相机坐标系下 z=1 归一化平面上的点。 // 它不是单位向量;若要单位射线方向,需要再归一化。 //Use Newthon method to solve for theta with good precision (err ~ e-6) cv::Point2f pw((p2D.x - mvParameters[2]) / mvParameters[0], (p2D.y - mvParameters[3]) / mvParameters[1]); // 去主点、除焦距,得到