code: def unproject(self, image_points):
          
          undist_image_points = cv2.undistortPoints(image_points.T.reshape(1,-1,2), self.camera_matrix, self.dist_coefs, P=self.camera_matrix)
          world_points = np.dot(self.inv_camera_matrix, to_homogeneous(undist_image_points.reshape(-1,2).T))
          return world_points
docs: Find (up to scale) 3D coordinate of an image point
  
          This is the inverse of the `project` function.
          The resulting 3D points are only valid up to an unknown scale.
  
          Parameters
          ----------------------
          image_points : (2, N) ndarray
              Image points
  
          Returns
          ----------------------
          points : (3, N) ndarray
              3D coordinates (valid up to scale)