我试图了解OpenCV的背后的逻辑cv :: undisortPoints()'迭代逼近算法。
实施可在以下网址获得: https://github.com/Itseez/opencv/blob/master/modules/imgproc/src/undistort.cpp(第361-368行)。
我看待它的方式:
但以上并没有真正说明为什么这可以做到......
其中一位用户发布了这里(Understanding of openCV undistortion),这是一种非线性求解算法(例如Newton'方法,Levenberg-Marquardt算法等)&# 34 ;.从我所看到的,至少有一些可能的解决方案可以解决这种无法解决的问题。
问题:
答案 0 :(得分:1)
它使用false position(“regular falsi”)方法。我没有看到这个特定方程的序列收敛的证据,无论失真参数的选择(甚至是“物理上可信的”参数的每个选择)。为一些特殊情况写一个,例如,物理纯二阶桶形失真。
在实践中它似乎运作良好。如果您对它感到不舒服,可以随时更换您选择的方程求解器。对于任何阶数的纯径向失真(即,使用单个未知数),您可以使用任何多项式方程求解器,例如,老旧的SLATEC rpqr79。