@@ -39,8 +39,9 @@ Updater::Updater(const cv::FileStorage& fsSettings)
39
39
{
40
40
mnCamRate = fsSettings[" Camera.fps" ];
41
41
42
- msigmaImageNoiseX = fsSettings[" Camera.sigma_px" ];
43
- msigmaImageNoiseY = fsSettings[" Camera.sigma_py" ];
42
+ const float nImageNoiseSigmaX = fsSettings[" Camera.sigma_px" ];
43
+ const float nImageNoiseSigmaY = fsSettings[" Camera.sigma_py" ];
44
+ mnImageNoiseSigma = std::max (nImageNoiseSigmaX, nImageNoiseSigmaY);
44
45
45
46
cv::Mat T (4 ,4 ,CV_32F);
46
47
fsSettings[" Camera.T_BC0" ] >> T;
@@ -170,8 +171,8 @@ void Updater::update(Eigen::VectorXd& xk1k,
170
171
-sin (phi)*cos (psi), -cos (phi)*sin (psi);
171
172
172
173
Eigen::Matrix2d Rinv;
173
- Rinv << 1 /pow (msigmaImageNoiseX ,2 ), 0 ,
174
- 0 , 1 /pow (msigmaImageNoiseY ,2 );
174
+ Rinv << 1 . /pow (mnImageNoiseSigma ,2 ), 0 ,
175
+ 0 , 1 . /pow (mnImageNoiseSigma ,2 );
175
176
176
177
int maxIter = 10 ;
177
178
double lambda = 0.01 ;
@@ -201,7 +202,6 @@ void Updater::update(Eigen::VectorXd& xk1k,
201
202
e1 << (ptFirst-pt1).x , (ptFirst-pt1).y ;
202
203
203
204
cost += e1 .transpose ()*Rinv*e1 ;
204
-
205
205
HTRinvH.noalias () += H1.transpose ()*Rinv*H1;
206
206
HTRinve.noalias () += H1.transpose ()*Rinv*e1 ;
207
207
@@ -228,7 +228,6 @@ void Updater::update(Eigen::VectorXd& xk1k,
228
228
e << ((*lit)-pt).x , ((*lit)-pt).y ;
229
229
230
230
cost += e.transpose ()*Rinv*e;
231
-
232
231
HTRinvH.noalias () += H.transpose ()*Rinv*H;
233
232
HTRinve.noalias () += H.transpose ()*Rinv*e;
234
233
}
@@ -249,7 +248,7 @@ void Updater::update(Eigen::VectorXd& xk1k,
249
248
cos (phi), 0 ,
250
249
-sin (phi)*cos (psi), -cos (phi)*sin (psi);
251
250
252
- if (fabs (lastCost-cost)<1e-6 || dpfinv. norm ( )<1e-6 )
251
+ if (fabs (lastCost-cost)<1e-6 && dpfinv ( 2 )<1e-6 )
253
252
break ;
254
253
255
254
lambda *= .1 ;
@@ -411,7 +410,7 @@ void Updater::update(Eigen::VectorXd& xk1k,
411
410
412
411
Eigen::VectorXd tempR;
413
412
tempR.setOnes (nDOF,1 );
414
- tempR *= pow (msigmaImageNoiseX>msigmaImageNoiseY ? msigmaImageNoiseX:msigmaImageNoiseY, 2 );
413
+ tempR *= pow (mnImageNoiseSigma, 2 );
415
414
416
415
Eigen::MatrixXd tempS;
417
416
tempS = tempHx_*Pk1k.block (24 ,24 ,6 *nCloneStates,6 *nCloneStates)*(tempHx_.transpose ());
@@ -465,7 +464,7 @@ void Updater::update(Eigen::VectorXd& xk1k,
465
464
466
465
Eigen::VectorXd Ro;
467
466
Ro.setOnes (nRowCount,1 );
468
- Ro *= pow (msigmaImageNoiseX>msigmaImageNoiseY ? msigmaImageNoiseX:msigmaImageNoiseY, 2 );
467
+ Ro *= pow (mnImageNoiseSigma, 2 );
469
468
470
469
// Model compression
471
470
Eigen::VectorXd rn;
@@ -526,7 +525,7 @@ void Updater::update(Eigen::VectorXd& xk1k,
526
525
rn = ro.block (0 ,0 ,nRank,1 );
527
526
Hn = Ho.block (0 ,0 ,nRank,Ho.cols ());
528
527
Rn.setOnes (nRank,1 );
529
- Rn *= pow (msigmaImageNoiseX>msigmaImageNoiseY ? msigmaImageNoiseX:msigmaImageNoiseY, 2 );
528
+ Rn *= pow (mnImageNoiseSigma, 2 );
530
529
}
531
530
else
532
531
{
0 commit comments