mirror of
https://github.com/PhotonVision/photonvision
synced 2026-07-05 03:21:40 +00:00
Prepare for config.json renaming cameraExtrinsics to distCoeffs (#612)
Doesn't actually rename in the JSON file yet, but fixes the name everywhere else
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Point>();
|
||||
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];
|
||||
|
||||
@@ -48,7 +48,7 @@ public class SolvePNPPipe
|
||||
protected List<TrackedTarget> process(List<TrackedTarget> 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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user