@Override public void process(double[] input, double[] output) { codec.decode(input,model); process(model,output); }
@Override public void process(double[] input, double[] output) { param.decode(input, pose); residual.setModel(pose); int index = 0; for( int i = 0; i < obs.size(); i++ ) { index = residual.computeResiduals(obs.get(i),output,index); } } }
@Override public void process(double[] input, double[] output) { param.decode(input, pose); residual.setModel(pose); int index = 0; for( int i = 0; i < obs.size(); i++ ) { index = residual.computeResiduals(obs.get(i),output,index); } } }
@Override public void process(double[] input, double[] output) { param.decode(input, F); residual.setModel(F); int index = 0; for( int i = 0; i < obs.size(); i++ ) { AssociatedPair p = obs.get(i); index = residual.computeResiduals(p,output,index); } } }
@Override public void process(double[] input, double[] output) { param.decode(input, F); residual.setModel(F); for( int i = 0; i < obs.size(); i++ ) { AssociatedPair p = obs.get(i); output[i] = residual.computeResidual(p); } } }
@Override public void process(double[] input, double[] output) { param.decode(input, F); residual.setModel(F); int index = 0; for( int i = 0; i < obs.size(); i++ ) { AssociatedPair p = obs.get(i); index = residual.computeResiduals(p,output,index); } } }
@Override public void process(double[] input, double[] output) { param.decode(input, F); residual.setModel(F); for( int i = 0; i < obs.size(); i++ ) { AssociatedPair p = obs.get(i); output[i] = residual.computeResidual(p); } } }
@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; }
if( converged || minimizer.isUpdated() ) { paramModel.decode(minimizer.getParameters(), refinedWorldToCamera); updated = true;