class CvLevMarq
#include <calib3d_c.h>
class CvLevMarq
{
public:
// enums
enum
{
DONE =0,
STARTED =1,
CALC_J =2,
CHECK_ERR =3,
};
// fields
bool completeSymmFlag;
CvTermCriteria criteria;
cv::Ptr<CvMat> err;
double errNorm;
int iters;
cv::Ptr<CvMat> J;
cv::Ptr<CvMat> JtErr;
cv::Ptr<CvMat> JtJ;
cv::Ptr<CvMat> JtJN;
cv::Ptr<CvMat> JtJV;
cv::Ptr<CvMat> JtJW;
int lambdaLg10;
cv::Ptr<CvMat> mask;
cv::Ptr<CvMat> param;
double prevErrNorm;
cv::Ptr<CvMat> prevParam;
int solveMethod;
int state;
// construction
CvLevMarq();
CvLevMarq(
int nparams,
int nerrs,
CvTermCriteria criteria = cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 30, DBL_EPSILON),
bool completeSymmFlag = false
);
// methods
void
clear();
void
init(
int nparams,
int nerrs,
CvTermCriteria criteria = cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 30, DBL_EPSILON),
bool completeSymmFlag = false
);
void
step();
bool
update(
const CvMat*& param,
CvMat*& J,
CvMat*& err
);
bool
updateAlt(
const CvMat*& param,
CvMat*& JtJ,
CvMat*& JtErr,
double*& errNorm
);
};