public void loop(int from, int to, int looperID) { // int looperID = 0; // for (int i = 0; i < n+m; i++) { for (int i = from; i < to; i++) { if (i < n) { Arrays.fill(subspaceJacobian[i], 0); subspaceJacobian[i][i] = scale[i]; } else { System.arraycopy(subspaceParameters, 0, tempSubspaceParameters[looperID], 0, m); tempSubspaceParameters[looperID][i-n] += stepSize; tempParameters[i-n+1].set(parameters); tempParameters[i-n+1].setSubspace(tempSubspaceParameters[looperID]); scale[i] = tempSubspaceParameters[looperID][i-n] - subspaceParameters[i-n]; for (int j = 0; j < n; j++) { subspaceJacobian[i][j] = tempParameters[0].get(j) - tempParameters[i-n+1].get(j); subspaceCorrelated[j] |= subspaceJacobian[i][j] != 0; // this may not work in parallel... } } }}});
public boolean iterate(double[] delta) { boolean converged = false; final double prevRMSE = getRMSE(); final double[] prevParameters = parameters.get(); final double[] prevSubspaceParameters = subspaceParameters == null ? null : subspaceParameters.clone(); doResidual(); final double[] resetParameters = parameters.get(); final double[] resetSubspaceParameters = subspaceParameters == null ? null : subspaceParameters.clone(); parameters.set(i, parameters.get(i) + settings.lineSearch[0]*update.get(i)*updateScale[i]); parameters.set(i, parameters.get(i) + settings.lineSearch[j]*update.get(i)*updateScale[i]);
public void set(ImageTransformer.Parameters p) { set(p.get()); fakeIdentity = ((Parameters)p).fakeIdentity; } public void reset(boolean asIdentity) {
public void loop(int from, int to, int looperID) { // for (int i = 0; i < n; i++) { for (int i = from; i < to; i++) { tempParameters[i].set(parameters); tempParameters[i].set(i, tempParameters[i].get(i) + /*(1<<pyramidLevel)**/stepSize); scale[i] = tempParameters[i].get(i) - parameters.get(i); constraintGrad[i] = tempParameters[i].getConstraintError() - constraintError; }}});
public void loop(int from, int to, int looperID) { // for (int i = 0; i < n; i++) { for (int i = from; i < to; i++) { tempParameters[i].set(parameters); tempParameters[i].set(i, tempParameters[i].get(i) + /*(1<<pyramidLevel)**/stepSize); scale[i] = tempParameters[i].get(i) - parameters.get(i); constraintGrad[i] = tempParameters[i].getConstraintError() - constraintError; }}});