Question in cvUndistortPoints[why we can use iterate to get the undistort pixel]

I’m not sure it is guaranteed to converge in all cases, but if you are working in a well-behaved region of the distortion function, it will converge. My understanding of how the distortion function works is that it it maps undistorted radius (distance from the image center to a given point) to a distorted radius - this tells you how much closer / further from the center the distorted point is.

The function can’t be correctly inverted by simply taking the reciprocal of the rational expression, but you can get a reasonable estimate by doing this. You then fine-tune the estimate by iterating, making smaller and smaller adjustments at each iteration. I think this works in most cases because your first estimate is a reasonable starting point for the search.

If you are looking for a proof that it will converge (or under which conditions it will/won’t converge), I don’t have anything for you. If you do find something, please share it - I would be interested to learn more.