I wrote a bundle adjustment routine to solve an N-view reconstruction problem
using vnl_levenberg_marquardt. My vnl_least_squares subclass takes a vector
that is the serialization of the projection matrices and returns the vector
whose elements are geometric distances dist(PX, x), where X and x are world and
image points that are kept unchanged. There are about 20*N image points and N
is only 3 or 4 right now. I am not supplying a gradient. The initial guess is
Most of the time, the solver responds with something like:
vnl_levenberg_marquardt: too many iterations
vnl_levenberg_marquardt: 390 iterations, 14403 evaluations, 177 residuals. RMS
error start/end 1.8665/0.422231
and then fails.
From intermediate measurements I know the solution is converging, albeit slowly
and not strictly monotonically, but the solver cuts off and throws away the
incomplete but improved results. Can I change the convergence criteria or at
least recover the last parameter vector?
Also, if you see a way by which I can improve the general algorithm I've
described, I'd be interested. On the rare times it does terminate, the error
from external reprojection tests isn't always better, sometimes a little worse.
Do You Yahoo!?
Try FREE Yahoo! Mail - the world's greatest free email!