Я пытаюсь понять логику алгоритма итеративного аппроксимации cv :: undisortPoints().OpenCV - cv :: undistortPoints() - описание итеративного алгоритма
Реализация доступна по адресу: https://github.com/Itseez/opencv/blob/master/modules/imgproc/src/undistort.cpp (строки 361-368).
Как я вижу это:
- используя последний лучше угадали позиции пикселя (х, у), попытаться найти лучшее предположение, применяя инверсию «искажения в текущей лучшей догадкой», а также настроить пиксель позиция в отношении первоначального искаженного положения (x0, y0)
- использования начального искажаются положение (x0, y0) в качестве первого «лучшего предположения»
Но выше на самом деле не сказать почему это можно сделать ...
Один из пользователей, разместивших (здесь: Understanding of openCV undistortion), что это своего рода «алгоритм нелинейного решения (например, .. Метод Ньютона, алгоритм Левенберга-Марквардт, и т.д.)»И от того, что я видел там, по крайней мере, несколько возможных решений такого рода undistorting проблемы
Вопросы:
- Что итеративный алгоритм точно реализуется в Cv :: undistortPoints()?
- есть ли белая бумага показывает (и [что более важно] объяснить «как я пять») идея позади него?
- Как мы узнаем, что этот алгоритм будет сходиться (по крайней мере, до локального минимума)?
- Зачем мы исправляем исходное положение (x0, y0)?