public void set(CvMat setH, boolean inverse) { if (projectiveParameters.length == 8 && referencePoints1 != null) { if (inverse) { cvInvert(setH, H); } else if (setH != H) { cvCopy(setH, H); } if (referencePoints1.length == 0) { // direct homography parameterization for (int i = 0; i < 8; i++) { projectiveParameters[i] = H.get(i)/H.get(8); } } else { // 4 point parametrization CvMat pts = pts4x1.get().put(referencePoints1); cvPerspectiveTransform(pts, pts, H); pts.get(projectiveParameters); } setUpdateNeeded(true); } else { throw new UnsupportedOperationException("Set homography operation not supported."); } } public void compose(ImageTransformer.Parameters p1, boolean inverse1,
public void reset(boolean asIdentity) { setUpdateNeeded(true); if (referencePoints1 != null && (referencePoints1.length == 0 || referencePoints1.length == 8)) { if (referencePoints1.length == 0) { // if (K2 != null && invK1 != null && n == null) { // projectiveParameters = new double[] { 1, 0, 0, 0, 1, 0, 0, 0 /*, 1*/, 0, 0, 0}; // } else { projectiveParameters = new double[] { 1, 0, 0, 0, 1, 0, 0, 0 /*, 1*/ }; // } } else { // if (K2 != null && invK1 != null && n == null) { // projectiveParameters = Arrays.copyOf(referencePoints, 11); // } else { projectiveParameters = referencePoints1.clone(); // } } } else if (K2 != null && invK1 != null) { if (R != null && t != null) { // no identity available for this one, so... //projectiveParameters = new double[] { 0, 0, 0 }; projectiveParameters = new double[] { referencePoints1[0], referencePoints1[2], referencePoints1[4] }; } else if (n != null) { projectiveParameters = new double[] { 0, 0, 0, 0, 0, 0 }; } else { projectiveParameters = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0}; } } }
public void set(int i, double p) { if (projectiveParameters[i] != p) { projectiveParameters[i] = p; setUpdateNeeded(true); } } public void set(ImageTransformer.Parameters p) {