cv::undistortPoints() - iterative algorithm explanation?

I’m trying to understand the logic behind the OpenCV’s cv::undisortPoints()’ iterative approximation algorithm.

The implementation is available at: https://github.com/Itseez/opencv/blob/master/modules/imgproc/src/undistort.cpp (lines 361-368).

The way I see it:

  • using last best guessed pixel position (x, y), try to find better guess by applying inverse of the ‘distortion at current best guess’, and adjust the pixel position in regard to the initial distorted position (x0, y0)
  • use initial distorted position (x0, y0) as a first ‘best guess’

Questions:

  • What iterative algorithm exactly is implemented in cv::undistortPoints()?
    • Is there any white paper showing (and [what’s more important] explaining ‘like I’m five’) the idea behind it?
  • How do we know that this algorithm will converge (at least to the local minimum)?
  • Why do we do the correction in regard to the initial position (x0, y0)?

broken / outdated link. days of itseez are long gone :wink:
i think, it’s here instead