diff --git a/photon-core/src/main/java/org/photonvision/vision/calibration/CameraCalibrationCoefficients.java b/photon-core/src/main/java/org/photonvision/vision/calibration/CameraCalibrationCoefficients.java index cf7017656..c7d29393a 100644 --- a/photon-core/src/main/java/org/photonvision/vision/calibration/CameraCalibrationCoefficients.java +++ b/photon-core/src/main/java/org/photonvision/vision/calibration/CameraCalibrationCoefficients.java @@ -17,6 +17,7 @@ package org.photonvision.vision.calibration; +import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; @@ -33,7 +34,8 @@ public class CameraCalibrationCoefficients implements Releasable { public final JsonMat cameraIntrinsics; @JsonProperty("cameraExtrinsics") - public final JsonMat cameraExtrinsics; + @JsonAlias({"cameraExtrinsics", "distCoeffs"}) + public final JsonMat distCoeffs; @JsonProperty("perViewErrors") public final double[] perViewErrors; @@ -45,12 +47,12 @@ public class CameraCalibrationCoefficients implements Releasable { public CameraCalibrationCoefficients( @JsonProperty("resolution") Size resolution, @JsonProperty("cameraIntrinsics") JsonMat cameraIntrinsics, - @JsonProperty("cameraExtrinsics") JsonMat cameraExtrinsics, + @JsonProperty("cameraExtrinsics") JsonMat distCoeffs, @JsonProperty("perViewErrors") double[] perViewErrors, @JsonProperty("standardDeviation") double standardDeviation) { this.resolution = resolution; this.cameraIntrinsics = cameraIntrinsics; - this.cameraExtrinsics = cameraExtrinsics; + this.distCoeffs = distCoeffs; this.perViewErrors = perViewErrors; this.standardDeviation = standardDeviation; } @@ -61,8 +63,8 @@ public class CameraCalibrationCoefficients implements Releasable { } @JsonIgnore - public MatOfDouble getCameraExtrinsicsMat() { - return cameraExtrinsics.getAsMatOfDouble(); + public MatOfDouble getDistCoeffsMat() { + return distCoeffs.getAsMatOfDouble(); } @JsonIgnore @@ -78,6 +80,6 @@ public class CameraCalibrationCoefficients implements Releasable { @Override public void release() { cameraIntrinsics.release(); - cameraExtrinsics.release(); + distCoeffs.release(); } } diff --git a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/Draw3dTargetsPipe.java b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/Draw3dTargetsPipe.java index e0be18d75..f0a75ca9a 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/Draw3dTargetsPipe.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/Draw3dTargetsPipe.java @@ -47,7 +47,7 @@ public class Draw3dTargetsPipe if (!params.shouldDraw) return null; if (params.cameraCalibrationCoefficients == null || params.cameraCalibrationCoefficients.getCameraIntrinsicsMat() == null - || params.cameraCalibrationCoefficients.getCameraExtrinsicsMat() == null) { + || params.cameraCalibrationCoefficients.getDistCoeffsMat() == null) { return null; } @@ -90,7 +90,7 @@ public class Draw3dTargetsPipe target.getCameraRelativeRvec(), target.getCameraRelativeTvec(), params.cameraCalibrationCoefficients.getCameraIntrinsicsMat(), - params.cameraCalibrationCoefficients.getCameraExtrinsicsMat(), + params.cameraCalibrationCoefficients.getDistCoeffsMat(), tempMat, jac); // Distort the points so they match the image they're being overlaid on @@ -101,7 +101,7 @@ public class Draw3dTargetsPipe target.getCameraRelativeRvec(), target.getCameraRelativeTvec(), params.cameraCalibrationCoefficients.getCameraIntrinsicsMat(), - params.cameraCalibrationCoefficients.getCameraExtrinsicsMat(), + params.cameraCalibrationCoefficients.getDistCoeffsMat(), tempMat, jac); var topPoints = tempMat.toList(); @@ -140,7 +140,7 @@ public class Draw3dTargetsPipe target.getCameraRelativeRvec(), target.getCameraRelativeTvec(), params.cameraCalibrationCoefficients.getCameraIntrinsicsMat(), - params.cameraCalibrationCoefficients.getCameraExtrinsicsMat(), + params.cameraCalibrationCoefficients.getDistCoeffsMat(), tempMat, jac); var axisPoints = tempMat.toList(); @@ -213,7 +213,7 @@ public class Draw3dTargetsPipe var dstList = new ArrayList(); final Mat cameraMatrix = params.cameraCalibrationCoefficients.getCameraIntrinsicsMat(); // k1, k2, p1, p2, k3 - final Mat distCoeffs = params.cameraCalibrationCoefficients.getCameraExtrinsicsMat(); + final Mat distCoeffs = params.cameraCalibrationCoefficients.getDistCoeffsMat(); var cx = cameraMatrix.get(0, 2)[0]; var cy = cameraMatrix.get(1, 2)[0]; var fx = cameraMatrix.get(0, 0)[0]; diff --git a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/SolvePNPPipe.java b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/SolvePNPPipe.java index 4b5aa51a6..db773f637 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipe/impl/SolvePNPPipe.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipe/impl/SolvePNPPipe.java @@ -48,7 +48,7 @@ public class SolvePNPPipe protected List process(List targetList) { if (params.cameraCoefficients == null || params.cameraCoefficients.getCameraIntrinsicsMat() == null - || params.cameraCoefficients.getCameraExtrinsicsMat() == null) { + || params.cameraCoefficients.getDistCoeffsMat() == null) { if (!hasWarned) { logger.warn( "Cannot perform solvePNP an uncalibrated camera! Please calibrate this resolution..."); @@ -69,7 +69,7 @@ public class SolvePNPPipe || corners.isEmpty() || params.cameraCoefficients == null || params.cameraCoefficients.getCameraIntrinsicsMat() == null - || params.cameraCoefficients.getCameraExtrinsicsMat() == null) { + || params.cameraCoefficients.getDistCoeffsMat() == null) { return; } this.imagePoints.fromList(corners); @@ -81,7 +81,7 @@ public class SolvePNPPipe params.targetModel.getRealWorldTargetCoordinates(), imagePoints, params.cameraCoefficients.getCameraIntrinsicsMat(), - params.cameraCoefficients.getCameraExtrinsicsMat(), + params.cameraCoefficients.getDistCoeffsMat(), rVec, tVec); } catch (Exception e) { diff --git a/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java b/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java index 13148d281..8d147bf0c 100644 --- a/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java +++ b/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java @@ -516,7 +516,7 @@ public class VisionModule { internalMap.put("width", c.resolution.width); internalMap.put("height", c.resolution.height); internalMap.put("intrinsics", c.cameraIntrinsics.data); - internalMap.put("extrinsics", c.cameraExtrinsics.data); + internalMap.put("distCoeffs", c.distCoeffs.data); calList.add(internalMap); } diff --git a/photon-core/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java b/photon-core/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java index fbb2349a3..e6886c8a0 100644 --- a/photon-core/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/pipeline/Calibrate3dPipeTest.java @@ -134,8 +134,8 @@ public class Calibrate3dPipeTest { assertNotNull(cal); assertNotNull(cal.perViewErrors); System.out.println("Per View Errors: " + Arrays.toString(cal.perViewErrors)); - System.out.println("Camera Intrinsics : " + cal.cameraIntrinsics.toString()); - System.out.println("Camera Extrinsics : " + cal.cameraExtrinsics.toString()); + System.out.println("Camera Intrinsics: " + cal.cameraIntrinsics.toString()); + System.out.println("Dist Coeffs: " + cal.distCoeffs.toString()); System.out.println("Standard Deviation: " + cal.standardDeviation); System.out.println( "Mean: " + Arrays.stream(calibration3dPipeline.perViewErrors()).average().toString()); @@ -300,8 +300,8 @@ public class Calibrate3dPipeTest { assertTrue(centerYErrPct < 10.0); System.out.println("Per View Errors: " + Arrays.toString(cal.perViewErrors)); - System.out.println("Camera Intrinsics : " + cal.cameraIntrinsics.toString()); - System.out.println("Camera Extrinsics : " + cal.cameraExtrinsics.toString()); + System.out.println("Camera Intrinsics: " + cal.cameraIntrinsics.toString()); + System.out.println("Dist Coeffs: " + cal.distCoeffs.toString()); System.out.println("Standard Deviation: " + cal.standardDeviation); System.out.println( "Mean: " + Arrays.stream(calibration3dPipeline.perViewErrors()).average().toString()); @@ -330,7 +330,7 @@ public class Calibrate3dPipeTest { Mat raw = Imgcodecs.imread(file.getAbsolutePath()); Mat undistorted = new Mat(new Size(imgRes.width * 2, imgRes.height * 2), raw.type()); Calib3d.undistort( - raw, undistorted, cal.cameraIntrinsics.getAsMat(), cal.cameraExtrinsics.getAsMat()); + raw, undistorted, cal.cameraIntrinsics.getAsMat(), cal.distCoeffs.getAsMat()); TestUtils.showImage(undistorted, "undistorted " + file.getName(), 1); raw.release(); undistorted.release(); diff --git a/photon-core/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java b/photon-core/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java index 5b13aed58..ed67e2dcf 100644 --- a/photon-core/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java @@ -71,14 +71,14 @@ public class CirclePNPTest { assertEquals(3, cameraCalibration.cameraIntrinsics.getAsMatOfDouble().cols()); assertEquals(3, cameraCalibration.getCameraIntrinsicsMat().rows()); assertEquals(3, cameraCalibration.getCameraIntrinsicsMat().cols()); - assertEquals(1, cameraCalibration.cameraExtrinsics.rows); - assertEquals(5, cameraCalibration.cameraExtrinsics.cols); - assertEquals(1, cameraCalibration.cameraExtrinsics.getAsMat().rows()); - assertEquals(5, cameraCalibration.cameraExtrinsics.getAsMat().cols()); - assertEquals(1, cameraCalibration.cameraExtrinsics.getAsMatOfDouble().rows()); - assertEquals(5, cameraCalibration.cameraExtrinsics.getAsMatOfDouble().cols()); - assertEquals(1, cameraCalibration.getCameraExtrinsicsMat().rows()); - assertEquals(5, cameraCalibration.getCameraExtrinsicsMat().cols()); + assertEquals(1, cameraCalibration.distCoeffs.rows); + assertEquals(5, cameraCalibration.distCoeffs.cols); + assertEquals(1, cameraCalibration.distCoeffs.getAsMat().rows()); + assertEquals(5, cameraCalibration.distCoeffs.getAsMat().cols()); + assertEquals(1, cameraCalibration.distCoeffs.getAsMatOfDouble().rows()); + assertEquals(5, cameraCalibration.distCoeffs.getAsMatOfDouble().cols()); + assertEquals(1, cameraCalibration.getDistCoeffsMat().rows()); + assertEquals(5, cameraCalibration.getDistCoeffsMat().cols()); } @Test diff --git a/photon-core/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java b/photon-core/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java index 9341e2c0d..dbf1df8d2 100644 --- a/photon-core/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/pipeline/SolvePNPTest.java @@ -74,14 +74,14 @@ public class SolvePNPTest { assertEquals(3, cameraCalibration.cameraIntrinsics.getAsMatOfDouble().cols()); assertEquals(3, cameraCalibration.getCameraIntrinsicsMat().rows()); assertEquals(3, cameraCalibration.getCameraIntrinsicsMat().cols()); - assertEquals(1, cameraCalibration.cameraExtrinsics.rows); - assertEquals(5, cameraCalibration.cameraExtrinsics.cols); - assertEquals(1, cameraCalibration.cameraExtrinsics.getAsMat().rows()); - assertEquals(5, cameraCalibration.cameraExtrinsics.getAsMat().cols()); - assertEquals(1, cameraCalibration.cameraExtrinsics.getAsMatOfDouble().rows()); - assertEquals(5, cameraCalibration.cameraExtrinsics.getAsMatOfDouble().cols()); - assertEquals(1, cameraCalibration.getCameraExtrinsicsMat().rows()); - assertEquals(5, cameraCalibration.getCameraExtrinsicsMat().cols()); + assertEquals(1, cameraCalibration.distCoeffs.rows); + assertEquals(5, cameraCalibration.distCoeffs.cols); + assertEquals(1, cameraCalibration.distCoeffs.getAsMat().rows()); + assertEquals(5, cameraCalibration.distCoeffs.getAsMat().cols()); + assertEquals(1, cameraCalibration.distCoeffs.getAsMatOfDouble().rows()); + assertEquals(5, cameraCalibration.distCoeffs.getAsMatOfDouble().cols()); + assertEquals(1, cameraCalibration.getDistCoeffsMat().rows()); + assertEquals(5, cameraCalibration.getDistCoeffsMat().cols()); } @Test