/** * Computes the difference between the two parameters. */ protected double computeDiff(Model modelA, Model modelB ) { double paramA[] = new double[ codec.getParamLength() ]; double paramB[] = new double[ codec.getParamLength() ]; codec.encode(modelA,paramA); codec.encode(modelB,paramB); double total = 0; for (int i = 0; i < paramA.length; i++) { total += Math.abs(paramA[i] - paramB[i]); } return total / paramA.length; }
/** * Computes the difference between the two parameters. */ protected double computeDiff(Model modelA, Model modelB ) { double paramA[] = new double[ codec.getParamLength() ]; double paramB[] = new double[ codec.getParamLength() ]; codec.encode(modelA,paramA); codec.encode(modelB,paramB); double total = 0; for (int i = 0; i < paramA.length; i++) { total += Math.abs(paramA[i] - paramB[i]); } return total / paramA.length; }
@Override public boolean fitModel(List<AssociatedPair> obs, DMatrixRMaj F, DMatrixRMaj refinedF) { func.setObservations(obs); paramModel.encode(F, param); minimizer.setFunction(func,null); minimizer.initialize(param,0,convergenceTol*obs.size()); for( int i = 0; i < maxIterations; i++ ) { if( minimizer.iterate() ) break; } paramModel.decode(minimizer.getParameters(), refinedF); return true; }
@Override public boolean fitModel(List<AssociatedPair> obs, DenseMatrix64F F, DenseMatrix64F refinedF) { func.setObservations(obs); paramModel.encode(F, param); minimizer.setFunction(func,null); minimizer.initialize(param,0,convergenceTol*obs.size()); for( int i = 0; i < maxIterations; i++ ) { if( minimizer.iterate() ) break; } paramModel.decode(minimizer.getParameters(), refinedF); return true; } }
@Override public boolean fitModel(List<Point2D3D> obs, Se3_F64 worldToCamera, Se3_F64 refinedWorldToCamera) { paramModel.encode(worldToCamera, param); func.setObservations(obs); jacobian.setObservations(obs); minimizer.setFunction(func,jacobian); minimizer.initialize(param,0,convergenceTol*obs.size()); boolean updated = false; for( int i = 0; i < maxIterations; i++ ) { boolean converged = minimizer.iterate(); if( converged || minimizer.isUpdated() ) { // save the results paramModel.decode(minimizer.getParameters(), refinedWorldToCamera); updated = true; } if( converged ) { if( i == 0 ) { // if it converted on the first iteration then that means it already // meet convergence. use input to avoid introduction of small numerical errors refinedWorldToCamera.set(worldToCamera); } break; } } return updated; }
@Override public boolean fitModel(List<Point2D3D> obs, Se3_F64 worldToCamera, Se3_F64 refinedWorldToCamera) { paramModel.encode(worldToCamera, param);