alchemist95
alchemist95

Reputation: 804

Using Levenberg-Marquardt optimization algorithm via opencv projectPoints() to estimate Calibration Errors

In camera calibration, i have used calibrateCamera() to find the camera parameters from several views of a calibration pattern. It precisely does two things:

1) Estimate the Initial Camera Parameters in closed form, assuming lens distortion as zero.

2) Run the global Levenberg-Marquardt optimization algorithm to minimize the reprojection error, which is done using projectPoints()

Now, i don't just want to compute the Minimized Reprojection Error but the fit parameters which caused it. There is currently no function which would return the error-free parameters. So, what i thought was i would use projectPoints() to get the reprojected image points and then use the reprojected image points and world points to calibrate again and obtain the error-free parameters. Problem is this is not something i am sure would give me output. Can anybody tell me whether it is? Any help would be appreciated.

Upvotes: 3

Views: 1290

Answers (1)

Derza Arsad
Derza Arsad

Reputation: 51

Levenberg-Marquardt will give you the best estimate of what your model and data are capable of. You can't get an error free parameters unless your input data is noise free and your model complexity matches the complexity of your real model.

For example, your model is: x * 2 + y = z, with x > 0 and x is an integer number

Input data z = { 3 }

Depending on your initial value, Levenberg-Marquardt will give you: (x = 1, y = 1) or (x=2,y=-1) or ... which are error free

However, with the same input z, if your model is: x * 2 = z, with x > 0 and x is an integer number

There is no way that you will get an error free parameters

Upvotes: 0

Related Questions