diff --git a/applications/src/main/java/boofcv/app/SceneReconstruction.java b/applications/src/main/java/boofcv/app/SceneReconstruction.java index 67ec539f8f..4bf300f3f7 100644 --- a/applications/src/main/java/boofcv/app/SceneReconstruction.java +++ b/applications/src/main/java/boofcv/app/SceneReconstruction.java @@ -620,7 +620,7 @@ public void handleFused( String name, GrayF32 inverseDepth ) { } private void saveSparseCloudToDisk( File outputDirectory ) { - checkTrue(scene.isHomogenous()); + checkTrue(scene.isHomogeneous()); List cloudXyz = new ArrayList<>(); Point4D_F64 world = new Point4D_F64(); diff --git a/change.txt b/change.txt index 43c4ec20ab..5312c65578 100644 --- a/change.txt +++ b/change.txt @@ -8,6 +8,12 @@ Version Meaning: .. --------------------- Date : 2024/XXX/XX +Version : 1.1.6 + +- Homogenous -> Homogeneous (Wide spread spelling error) + +--------------------- +Date : 2024/Jun/27 Version : 1.1.5 - PerspectiveOps diff --git a/examples/src/main/java/boofcv/examples/reconstruction/ExampleMultiViewSparseReconstruction.java b/examples/src/main/java/boofcv/examples/reconstruction/ExampleMultiViewSparseReconstruction.java index 35b5850781..5dd93b7b5a 100644 --- a/examples/src/main/java/boofcv/examples/reconstruction/ExampleMultiViewSparseReconstruction.java +++ b/examples/src/main/java/boofcv/examples/reconstruction/ExampleMultiViewSparseReconstruction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -348,7 +348,7 @@ public void bundleAdjustmentRefine() { * scene. */ public void visualizeSparseCloud() { - checkTrue(scene.isHomogenous()); + checkTrue(scene.isHomogeneous()); List cloudXyz = new ArrayList<>(); Point4D_F64 world = new Point4D_F64(); @@ -365,7 +365,7 @@ public void visualizeSparseCloud() { ( viewIdx ) -> viewIdx + "", // String encodes the image's index ( pointIdx, r, g, b ) -> rgb.set(pointIdx, (r << 16) | (g << 8) | b)); // Assign the RGB color - // Convert the structure into regular 3D points from homogenous + // Convert the structure into regular 3D points from homogeneous for (int i = 0; i < scene.points.size; i++) { scene.points.get(i).get(world); // If the point is at infinity it's not clear what to do. It would be best to skip it then the color diff --git a/examples/src/main/java/boofcv/examples/sfm/ExampleBundleAdjustmentGraph.java b/examples/src/main/java/boofcv/examples/sfm/ExampleBundleAdjustmentGraph.java index e44f32ab53..b3bb7312c4 100644 --- a/examples/src/main/java/boofcv/examples/sfm/ExampleBundleAdjustmentGraph.java +++ b/examples/src/main/java/boofcv/examples/sfm/ExampleBundleAdjustmentGraph.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -55,8 +55,8 @@ public static void main( String[] args ) { var view0_to_view1 = eulerXyz(-0.15, 0.05, 0, 0, 0, 0.05, null); // Initialize data structures by telling it the number of features, cameras, views, motions - // Homogenous coordinates will be used since they can handle points at infinity - var structure = new SceneStructureMetric(/*homogenous*/ true); + // Homogeneous coordinates will be used since they can handle points at infinity + var structure = new SceneStructureMetric(/*homogeneous*/ true); var observations = new SceneObservations(); // Index of the motion where the stereo baseline is stored diff --git a/examples/src/main/java/boofcv/examples/sfm/ExampleTrifocalTensorUses.java b/examples/src/main/java/boofcv/examples/sfm/ExampleTrifocalTensorUses.java index fae3fdb980..366d1baa9e 100644 --- a/examples/src/main/java/boofcv/examples/sfm/ExampleTrifocalTensorUses.java +++ b/examples/src/main/java/boofcv/examples/sfm/ExampleTrifocalTensorUses.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -62,7 +62,7 @@ public static void main( String[] args ) { // One thing that you can do with a trifocal tensor is transfer points from one view onto another // Similar to what you would do with a homography. AssociatedTriple match = inliers.get(4); - Point3D_F64 predicted3 = new Point3D_F64(); // pixel, but in homogenous coordinates + Point3D_F64 predicted3 = new Point3D_F64(); // pixel, but in homogeneous coordinates MultiViewOps.transfer_1_to_3(tensor, match.p1, match.p2, predicted3); System.out.printf("Predicted x3=(%.1f, %.1f) actual=(%.1f, %.1f)\n", diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/Estimate1ofPrNP.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/Estimate1ofPrNP.java index ef34b7816b..13f2d0ff88 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/Estimate1ofPrNP.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/Estimate1ofPrNP.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -25,7 +25,7 @@ /** *

* Interface for computing multiple solution to the Projective N-Point (PrNP) problem. Given a set of - * observations from a single view and the known 3D homogenous location of the points being observed, estimate + * observations from a single view and the known 3D homogeneous location of the points being observed, estimate * the projective camera transform. *

*

diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/EstimateNofPrNP.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/EstimateNofPrNP.java index 85851eb0a8..01ec34d9d2 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/EstimateNofPrNP.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/EstimateNofPrNP.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -25,7 +25,7 @@ /** *

* Interface for computing multiple solution to the Projective N-Point (PrNP) problem. Given a set of - * observations from a single view and the known 3D homogenous location of the points being observed, estimate + * observations from a single view and the known 3D homogeneous location of the points being observed, estimate * the projective camera transform. *

*

diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/RefineTriangulateMetricH.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/RefineTriangulateMetricH.java index ed5eee23e5..7d9e8cf526 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/RefineTriangulateMetricH.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/RefineTriangulateMetricH.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -25,7 +25,7 @@ import java.util.List; /** - * Refines a triangulated point's (homogenous coordinate) location using non-linear optimization. A calibrated + * Refines a triangulated point's (homogeneous coordinate) location using non-linear optimization. A calibrated * camera is assumed. All observations are in normalized image coordinates. * * @author Peter Abeles @@ -37,8 +37,8 @@ public interface RefineTriangulateMetricH { * * @param observations Observations of feature in N views. Normalized image coordinates. * @param listWorldToView Coordinate transforms for each view. World to View. - * @param worldPt Initial estimate of point in world coordinates. Homogenous. - * @param refinedPt The refined estimated point position. Homogenous. + * @param worldPt Initial estimate of point in world coordinates. Homogeneous. + * @param refinedPt The refined estimated point position. Homogeneous. * @return if successful or not */ boolean process( List observations, diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2PointingMetricH.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2PointingMetricH.java index ec28a2984c..37901c9afc 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2PointingMetricH.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2PointingMetricH.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -23,7 +23,7 @@ import georegression.struct.se.Se3_F64; /** - * Triangulate the location of a homogenous 3D point from two views of a feature given a 3D pointing vector. + * Triangulate the location of a homogeneous 3D point from two views of a feature given a 3D pointing vector. * * @author Peter Abeles */ diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2ViewsMetricH.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2ViewsMetricH.java index 1751361764..9a21abaf2c 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2ViewsMetricH.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2ViewsMetricH.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -23,7 +23,7 @@ import georegression.struct.se.Se3_F64; /** - * Triangulate the location of a homogenous 3D point from two views of a feature given a calibrated + * Triangulate the location of a homogeneous 3D point from two views of a feature given a calibrated * camera and known camera motion. * * @author Peter Abeles diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2ViewsProjective.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2ViewsProjective.java index f38a6b7325..e0f0886888 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2ViewsProjective.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/Triangulate2ViewsProjective.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -37,7 +37,7 @@ public interface Triangulate2ViewsProjective { * @param obsB View from position B in pixels * @param projectionA Camera matrix for view A. x = P*X * @param projectionB Camera matrix for view B. x = P*X - * @param foundInA The found triangulated 3D point in A's reference frame. Homogenous coordinates. + * @param foundInA The found triangulated 3D point in A's reference frame. Homogeneous coordinates. * @return true if successful, false otherwise. */ boolean triangulate( Point2D_F64 obsA, Point2D_F64 obsB, diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/TriangulateNViewsMetricH.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/TriangulateNViewsMetricH.java index 47d7c4ec1f..ee2d55f2a9 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/TriangulateNViewsMetricH.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/TriangulateNViewsMetricH.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2020, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -25,7 +25,7 @@ import java.util.List; /** - * Triangulate the location of a 3D point in homogenous coordinates from N views a calibrated camera and known poses. + * Triangulate the location of a 3D point in homogeneous coordinates from N views a calibrated camera and known poses. * * @author Peter Abeles */ diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/TriangulateNViewsProjective.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/TriangulateNViewsProjective.java index 8123b90c56..fcce059417 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/TriangulateNViewsProjective.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/TriangulateNViewsProjective.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -37,7 +37,7 @@ public interface TriangulateNViewsProjective { * * @param observations (Input) Observations of the 3D point in pixel coordinates from different camera views * @param cameraMatrices (Input) Camera projection matrices. x = A*X - * @param location (Output) Homogenous coordinate of 3D feature in world coordinates. + * @param location (Output) Homogeneous coordinate of 3D feature in world coordinates. * @return true if successful, false otherwise. */ boolean triangulate( List observations, List cameraMatrices, Point4D_F64 location ); diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/MetricBundleAdjustmentUtils.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/MetricBundleAdjustmentUtils.java index 2d7c559a44..69c7351b0b 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/MetricBundleAdjustmentUtils.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/MetricBundleAdjustmentUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -56,9 +56,9 @@ public class MetricBundleAdjustmentUtils implements VerbosePrint { @Nullable PrintStream verbose; - public MetricBundleAdjustmentUtils( @Nullable ConfigTriangulation triangulation, boolean homogenous ) { + public MetricBundleAdjustmentUtils( @Nullable ConfigTriangulation triangulation, boolean homogeneous ) { triangulator = FactoryMultiView.triangulateNViewMetricH(triangulation); - structure = new SceneStructureMetric(homogenous); + structure = new SceneStructureMetric(homogeneous); var configSba = new ConfigBundleAdjustment(); configSba.optimizer.type = ConfigNonLinearLeastSquares.Type.LEVENBERG_MARQUARDT; diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/PruneStructureFromSceneProjective.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/PruneStructureFromSceneProjective.java index 45503397a2..2518f27f35 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/PruneStructureFromSceneProjective.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/PruneStructureFromSceneProjective.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -72,7 +72,7 @@ public void pruneObservationsByErrorRank( double inlierFraction ) { v.getPixel(indexInView, observation); // Get feature location in world and predict the pixel observation - if (structure.homogenous) { + if (structure.homogeneous) { f.get(X4); PerspectiveOps.renderPixel(view.worldToView, X4, predicted); } else { diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/ScaleSceneStructure.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/ScaleSceneStructure.java index 20a89b1b91..1dabc9c8d0 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/ScaleSceneStructure.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/ScaleSceneStructure.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -31,10 +31,10 @@ /** * Normalizes variables in the scene to improve optimization performance. Different normalization is applied - * depending on the points being homogenous or not, metric or projective. + * depending on the points being homogeneous or not, metric or projective. * *

- * Homogenous:
+ * Homogeneous:
* Each point is normalized such that the F-norm is equal to 1. Same goes for translation if metric. *

*

@@ -92,8 +92,8 @@ public ScaleSceneStructure() { public void applyScale( SceneStructureMetric structure, SceneObservations observations ) { - if (structure.homogenous) { - applyScaleToPointsHomogenous(structure); + if (structure.homogeneous) { + applyScaleToPointsHomogeneous(structure); } else { computePointStatistics(structure.points); applyScaleToPoints3D(structure); @@ -111,8 +111,8 @@ public void applyScale( SceneStructureMetric structure, */ public void applyScale( SceneStructureProjective structure, SceneObservations observations ) { - if (structure.homogenous) { - applyScaleToPointsHomogenous(structure); + if (structure.homogeneous) { + applyScaleToPointsHomogeneous(structure); } else { computePointStatistics(structure.points); applyScaleToPoints3D(structure); @@ -278,7 +278,7 @@ private void applyScaleTranslation3D( SceneStructureProjective structure ) { public void undoScale( SceneStructureMetric structure, SceneObservations observations ) { - if (structure.homogenous) + if (structure.homogeneous) return; double scale = desiredDistancePoint/medianDistancePoint; @@ -312,7 +312,7 @@ public void undoScale( SceneStructureMetric structure, public void undoScale( SceneStructureProjective structure, SceneObservations observations ) { - if (!structure.homogenous) { + if (!structure.homogeneous) { double scale = desiredDistancePoint/medianDistancePoint; @@ -388,7 +388,7 @@ void applyScaleToPoints3D( SceneStructureCommon structure ) { } } - void applyScaleToPointsHomogenous( SceneStructureCommon structure ) { + void applyScaleToPointsHomogeneous( SceneStructureCommon structure ) { Point4D_F64 p = new Point4D_F64(); for (int i = 0; i < structure.points.size; i++) { diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructure.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructure.java index c6874e6d47..30f787da4a 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructure.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructure.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2018, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -25,11 +25,11 @@ */ public interface SceneStructure { /** - * If true then homogenous coordinates are being used. + * If true then homogeneous coordinates are being used. * - * @return true if homogenous coordinates + * @return true if homogeneous coordinates */ - boolean isHomogenous(); + boolean isHomogeneous(); int getParameterCount(); } diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureCommon.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureCommon.java index 99bf1f5745..e82538ae09 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureCommon.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureCommon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -44,24 +44,24 @@ public abstract class SceneStructureCommon implements SceneStructure { public final DogArray cameras = new DogArray<>(Camera::new, Camera::reset); public DogArray points; - /** True if homogenous coordinates are being used */ - protected boolean homogenous; + /** True if homogeneous coordinates are being used */ + protected boolean homogeneous; /** number of elements in a point. Will be 3 or 4 */ protected @Getter int pointSize; - protected SceneStructureCommon( boolean homogenous ) { - setHomogenous(homogenous); + protected SceneStructureCommon( boolean homogeneous ) { + setHomogeneous(homogeneous); } /** - * Used to change if homogenous coordinates are used or not. All past points are discarded when this function is + * Used to change if homogeneous coordinates are used or not. All past points are discarded when this function is * called * - * @param homogenous true for homogenous coordinates or false for 3D cartesian + * @param homogeneous true for homogeneous coordinates or false for 3D cartesian */ - public void setHomogenous( boolean homogenous ) { - this.homogenous = homogenous; - pointSize = homogenous ? 4 : 3; + public void setHomogeneous( boolean homogeneous ) { + this.homogeneous = homogeneous; + pointSize = homogeneous ? 4 : 3; points = new DogArray<>(() -> new Point(pointSize), Point::reset); } @@ -78,7 +78,7 @@ public void setPoint( int which, double x, double y, double z ) { } /** - * Specifies the location of a point as a 3D homogenous coordinate + * Specifies the location of a point as a 3D homogeneous coordinate * * @param which Which point is being specified * @param x coordinate along x-axis @@ -290,7 +290,7 @@ public double distanceSq( Point3D_F64 p ) { } /** - * Normalize a point in homogenous coordinate so that it's f-norm is 1 + * Normalize a point in homogeneous coordinate so that it's f-norm is 1 */ public void normalizeH() { double n = 0; @@ -325,8 +325,8 @@ public double distance( Point p ) { } @Override - public boolean isHomogenous() { - return homogenous; + public boolean isHomogeneous() { + return homogeneous; } public int getObservationCount() { diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureMetric.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureMetric.java index 75cbe96b35..89cbd3e747 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureMetric.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureMetric.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -60,10 +60,10 @@ public class SceneStructureMetric extends SceneStructureCommon { /** * Configure bundle adjustment * - * @param homogenous if true then homogeneous coordinates are used + * @param homogeneous if true then homogeneous coordinates are used */ - public SceneStructureMetric( boolean homogenous ) { - super(homogenous); + public SceneStructureMetric( boolean homogeneous ) { + super(homogeneous); } /** @@ -371,13 +371,13 @@ public boolean projectToPixel( int pointIdx, int viewIdx, View view = views.get(viewIdx); getWorldToView(view, world_to_view, tmpSE); - // extract the coordinate for 3D and homogenous case + // extract the coordinate for 3D and homogeneous case Point p = points.get(pointIdx); double x, y, z, w; x = p.coordinate[0]; y = p.coordinate[1]; z = p.coordinate[2]; - w = homogenous ? p.coordinate[3] : 1.0; + w = homogeneous ? p.coordinate[3] : 1.0; // Project the pixel while being careful of points at infinity BundleAdjustmentCamera camera = Objects.requireNonNull(getViewCamera(view).model); @@ -428,7 +428,7 @@ public Rigid getRigid(int rigidIdx ) { * @return true if identical to within specified float tolerance and false if not */ public boolean isIdentical( SceneStructureMetric m, double tol ) { - if (isHomogenous() != m.isHomogenous()) + if (isHomogeneous() != m.isHomogeneous()) return false; if (views.size != m.views.size) return false; diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureProjective.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureProjective.java index f31017e9bd..579a6d0d16 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureProjective.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/bundle/SceneStructureProjective.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -25,7 +25,7 @@ /** * Specifies a scene in an arbitrary projective geometry for Bundle Adjustment. Each view * is specified using a 3x4 projective camera matrix. Points for the scene can be 3D or 4D - * homogenous coordinates. + * homogeneous coordinates. * * @author Peter Abeles */ @@ -35,10 +35,10 @@ public class SceneStructureProjective extends SceneStructureCommon { /** * Configure bundle adjustment * - * @param homogenous if true then homogeneous coordinates are used + * @param homogeneous if true then homogeneous coordinates are used */ - public SceneStructureProjective( boolean homogenous ) { - super(homogenous); + public SceneStructureProjective( boolean homogeneous ) { + super(homogeneous); } /** diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/triangulate/TriangulateRefineProjectiveLS.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/triangulate/TriangulateRefineProjectiveLS.java index 3245835de2..58f2abc01d 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/triangulate/TriangulateRefineProjectiveLS.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/triangulate/TriangulateRefineProjectiveLS.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -32,7 +32,7 @@ import java.util.List; /** - * Nonlinear least-squares triangulation for projective geometry in homogenous coordinates. + * Nonlinear least-squares triangulation for projective geometry in homogeneous coordinates. * * @author Peter Abeles */ diff --git a/main/boofcv-geo/src/main/java/boofcv/abst/geo/triangulate/WrapNViewsTriangulateMetricDLT.java b/main/boofcv-geo/src/main/java/boofcv/abst/geo/triangulate/WrapNViewsTriangulateMetricDLT.java index c0a362b898..3adb6afc7f 100644 --- a/main/boofcv-geo/src/main/java/boofcv/abst/geo/triangulate/WrapNViewsTriangulateMetricDLT.java +++ b/main/boofcv-geo/src/main/java/boofcv/abst/geo/triangulate/WrapNViewsTriangulateMetricDLT.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -50,7 +50,7 @@ public boolean triangulate( List observations, List listWo return false; } - PerspectiveOps.homogenousTo3dPositiveZ(pointH, 1e20, UtilEjml.EPS, location); + PerspectiveOps.homogeneousTo3dPositiveZ(pointH, 1e20, UtilEjml.EPS, location); return true; } } diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/distort/NarrowToWidePtoP_F64.java b/main/boofcv-geo/src/main/java/boofcv/alg/distort/NarrowToWidePtoP_F64.java index b1165a3a46..d2c818472f 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/distort/NarrowToWidePtoP_F64.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/distort/NarrowToWidePtoP_F64.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -76,7 +76,7 @@ public void setRotationWideToNarrow( DMatrixRMaj R ) { public void compute( double x, double y, Point2D_F64 out ) { narrowToNorm.compute(x, y, norm); - // Convert from 2D homogenous to 3D + // Convert from 2D homogeneous to 3D unit.setTo(norm.x, norm.y, 1.0); // Rotate then make it a unit vector diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/DecomposeEssential.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/DecomposeEssential.java index eccef49c54..c0507bc265 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/DecomposeEssential.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/DecomposeEssential.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -66,7 +66,7 @@ public class DecomposeEssential { DMatrixRMaj W = new DMatrixRMaj(3, 3); /** - * Essential matrix can be viewed as a homogenous quantity (scale invariant) or not. If Viewed as the former then + * Essential matrix can be viewed as a homogeneous quantity (scale invariant) or not. If Viewed as the former then * this is the length of the translation vector */ @Getter double translationLength; diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/MultiViewOps.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/MultiViewOps.java index 58300ffa8f..cdb98559a5 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/MultiViewOps.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/MultiViewOps.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -849,7 +849,7 @@ public static void extractEpipoles( DMatrixRMaj F, Point3D_F64 e1, Point3D_F64 e /** *

* Given a fundamental matrix a pair of camera matrices P and P1' are extracted. The camera matrices - * are 3 by 4 and used to project a 3D homogenous point onto the image plane. These camera matrices will only + * are 3 by 4 and used to project a 3D homogeneous point onto the image plane. These camera matrices will only * be known up to a projective transform, thus there are multiple solutions, The canonical camera * matrix is defined as:
*

@@ -1249,7 +1249,7 @@ public static void errorsHomographySymm( List observations,
 	 * @param x1 (Input) point (pixel) in first view
 	 * @param l2 (Input) line in second view
 	 * @param T (Input) Trifocal tensor
-	 * @param x3 (Output) Induced point (pixel) in third view. Homogenous coordinates.
+	 * @param x3 (Output) Induced point (pixel) in third view. Homogeneous coordinates.
 	 * @return induced point.
 	 */
 	public static Point3D_F64 transfer_1_to_3( TrifocalTensor T, Point2D_F64 x1, Vector3D_F64 l2,
@@ -1296,7 +1296,7 @@ public static Point3D_F64 transfer_1_to_3( TrifocalTensor T, Point2D_F64 x1, Vec
 	 * @param x1 (Input) point (pixel) in first view
 	 * @param x2 (Input) point (pixel) in second view
 	 * @param T (Input) Trifocal tensor
-	 * @param x3 (Output) Induced point (pixel) in third view. Homogenous coordinates.
+	 * @param x3 (Output) Induced point (pixel) in third view. Homogeneous coordinates.
 	 * @return induced point.
 	 */
 	public static Point3D_F64 transfer_1_to_3( TrifocalTensor T, Point2D_F64 x1, Point2D_F64 x2,
@@ -1318,7 +1318,7 @@ public static Point3D_F64 transfer_1_to_3( TrifocalTensor T, Point2D_F64 x1, Poi
 	 * @param x1 (Input) point (pixel) in first view
 	 * @param l3 (Input) line in third view
 	 * @param T (Input) Trifocal tensor
-	 * @param x2 (Output) Induced point (pixel) in second view. Homogenous coordinates.
+	 * @param x2 (Output) Induced point (pixel) in second view. Homogeneous coordinates.
 	 * @return induced point.
 	 */
 	public static Point3D_F64 transfer_1_to_2( TrifocalTensor T, Point2D_F64 x1, Vector3D_F64 l3,
@@ -1349,7 +1349,7 @@ public static Point3D_F64 transfer_1_to_2( TrifocalTensor T, Point2D_F64 x1, Vec
 	 * @param x1 (Input) point (pixel) in first view
 	 * @param x3 (Input) point (pixel) in third view
 	 * @param T (Input) Trifocal tensor
-	 * @param x2 (Output) Induced point (pixel) in second view. Homogenous coordinates.
+	 * @param x2 (Output) Induced point (pixel) in second view. Homogeneous coordinates.
 	 * @return induced point.
 	 */
 	public static Point3D_F64 transfer_1_to_2( TrifocalTensor T, Point2D_F64 x1, Point2D_F64 x3,
@@ -1716,7 +1716,7 @@ public static void triangulatePoints( SceneStructureMetric structure, SceneObser
 		var normObs = new DogArray<>(Point2D_F64::new);
 		normObs.resize(3);
 
-		final boolean homogenous = structure.isHomogenous();
+		final boolean homogeneous = structure.isHomogeneous();
 		var X = new Point4D_F64();
 
 		var worldToViews = new ArrayList();
@@ -1741,7 +1741,7 @@ public static void triangulatePoints( SceneStructureMetric structure, SceneObser
 				// this should work unless the input is bad
 				throw new RuntimeException("Triangulation failed. Bad input?");
 			}
-			if (homogenous)
+			if (homogeneous)
 				sp.set(X.x, X.y, X.z, X.w);
 			else
 				sp.set(X.x/X.w, X.y/X.w, X.z/X.w);
@@ -1929,7 +1929,7 @@ public static void scenePointsToPixels( SceneStructureMetric scene, int viewIdx,
 			double x = point.coordinate[0];
 			double y = point.coordinate[1];
 			double z = point.coordinate[2];
-			double w = scene.isHomogenous() ? point.coordinate[3] : 1.0;
+			double w = scene.isHomogeneous() ? point.coordinate[3] : 1.0;
 
 			// Project the pixel while being careful for points at infinity
 			SePointOps_F64.transformV(world_to_view, x, y, z, w, camPoint);
@@ -1940,10 +1940,10 @@ public static void scenePointsToPixels( SceneStructureMetric scene, int viewIdx,
 
 	/**
 	 * Converts the points in the scene into a 3D point cloud. A lambda is used pass in the results. This function
-	 * will work if it's homogenous or 3D coordinates.
+	 * will work if it's homogeneous or 3D coordinates.
 	 *
 	 * @param scene (Input) The scene
-	 * @param tol (Input) Only used if the scene is in homogenous coordinates.
+	 * @param tol (Input) Only used if the scene is in homogeneous coordinates.
 	 * Tolerance for points being at infinity. Smaller values means more tolerant. Try 1e-8.
 	 * @param func (Output) Results are passed in to this function with their index and 3D point.
 	 */
@@ -1952,7 +1952,7 @@ public static void sceneToCloud3( SceneStructureMetric scene, double tol,
 
 		Point3D_F64 out = new Point3D_F64();
 
-		final boolean homogenous = scene.isHomogenous();
+		final boolean homogeneous = scene.isHomogeneous();
 
 		for (int pointIdx = 0; pointIdx < scene.points.size; pointIdx++) {
 			SceneStructureCommon.Point point = scene.points.get(pointIdx);
@@ -1960,7 +1960,7 @@ public static void sceneToCloud3( SceneStructureMetric scene, double tol,
 			double y = point.coordinate[1];
 			double z = point.coordinate[2];
 
-			if (homogenous) {
+			if (homogeneous) {
 				double r = Math.sqrt(x*x + y*y + z*z);
 				double w = point.coordinate[3];
 
@@ -1980,8 +1980,8 @@ public static void sceneToCloud3( SceneStructureMetric scene, double tol,
 	}
 
 	/**
-	 * Converts the points in the scene into a homogenous point cloud. Results are passed in to the lambda.
-	 * It will work with a scene in homogenous or 3D coordinates.
+	 * Converts the points in the scene into a homogeneous point cloud. Results are passed in to the lambda.
+	 * It will work with a scene in homogeneous or 3D coordinates.
 	 *
 	 * @param scene (Input) The scene
 	 * @param func (Output) Results are passed in to this function with their index and 3D point.
@@ -1990,14 +1990,14 @@ public static void sceneToCloudH( SceneStructureMetric scene, BoofLambdas.Proces
 
 		Point4D_F64 out = new Point4D_F64();
 
-		final boolean homogenous = scene.isHomogenous();
+		final boolean homogeneous = scene.isHomogeneous();
 
 		for (int pointIdx = 0; pointIdx < scene.points.size; pointIdx++) {
 			SceneStructureCommon.Point point = scene.points.get(pointIdx);
 			double x = point.coordinate[0];
 			double y = point.coordinate[1];
 			double z = point.coordinate[2];
-			double w = homogenous ? point.coordinate[3] : 1.0;
+			double w = homogeneous ? point.coordinate[3] : 1.0;
 			out.setTo(x, y, z, w);
 			func.process(pointIdx, out);
 		}
@@ -2051,7 +2051,7 @@ public static boolean homographyToFundamental( DMatrixRMaj H21, Listdistance = norm( a/norm(a) - b/norm(b) )

* @@ -1061,11 +1061,11 @@ public static double distance( Point4D_F64 a, Point4D_F64 b ) { } /** - * Returns the Euclidean distance between a 3D point a point homogenous coordinates. If the homogenous point + * Returns the Euclidean distance between a 3D point a point homogeneous coordinates. If the homogeneous point * is at infinity, within tolererance, then {@link Double#POSITIVE_INFINITY} is returned. * * @param a (Input) 3D point - * @param b (Input) Homogenous point + * @param b (Input) Homogeneous point * @param tol (Input) Tolerance for point being at infinity. Closer to zero means more strict. Try 1e-8 * @return Euclidean distance */ @@ -1074,7 +1074,7 @@ public static double distance3DvsH( Point3D_F64 a, Point4D_F64 b, double tol ) { } /** - *

Checks to see if a point in homogenous coordinates is behind the camera, including z=0. + *

Checks to see if a point in homogeneous coordinates is behind the camera, including z=0. * This is made more complex as the possibility that it's at infinity needs to be explicitly checked * and handled.

* @@ -1124,7 +1124,7 @@ public static DMatrixRMaj invertCalibrationMatrix( DMatrixRMaj K, @Nullable DMat } /** - * Applies a rotation to a homogenous 3D point + * Applies a rotation to a homogeneous 3D point * * @param R rotation matrix. * @param src (Input) point @@ -1142,7 +1142,7 @@ public static void rotateH( DMatrixRMaj R, Point4D_F64 src, Point4D_F64 dst ) { } /** - * Applies a rotation in reverse to a homogenous 3D point + * Applies a rotation in reverse to a homogeneous 3D point * * @param R rotation matrix. * @param src (Input) point diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/PositiveDepthConstraintCheckH.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/PositiveDepthConstraintCheckH.java index 8cc27736f1..991093bbf2 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/PositiveDepthConstraintCheckH.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/PositiveDepthConstraintCheckH.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -35,7 +35,7 @@ * if you use this class. *

* - *

Triangulation is done in homogenous coordinates so that points at infinity can be handled

+ *

Triangulation is done in homogeneous coordinates so that points at infinity can be handled

* *

* COORDINATE SYSTEM: Right handed coordinate system with +z is pointing along the camera's optical axis, diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/PositiveDepthConstraintCheckHPointing.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/PositiveDepthConstraintCheckHPointing.java index afe78a2957..9a569f321c 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/PositiveDepthConstraintCheckHPointing.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/PositiveDepthConstraintCheckHPointing.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -29,7 +29,7 @@ /** *

Checks positive depth constraint given observations as pointing vectors.

* - *

Triangulation is done in homogenous coordinates so that points at infinity can be handled

+ *

Triangulation is done in homogeneous coordinates so that points at infinity can be handled

* *

COORDINATE SYSTEM: Right handed coordinate system with +z is pointing along the camera's optical axis

* diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/WorldToCameraToPixel.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/WorldToCameraToPixel.java index 19c7459a75..51add901d3 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/WorldToCameraToPixel.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/WorldToCameraToPixel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -115,7 +115,7 @@ public boolean transform( Point3D_F64 worldPt, Point2D_F64 pixelPt, Point2D_F64 * Computes the observed location of the specified point in world coordinates in the camera pixel. If * the object can't be viewed because it is behind the camera then false is returned. * - * @param worldPt Location of point in world frame. Homogenous coordinates. + * @param worldPt Location of point in world frame. Homogeneous coordinates. * @param pixelPt Pixel observation of point. * @return True if visible (+z) or false if not visible (-z) */ diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentMetricResidualFunction.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentMetricResidualFunction.java index c898cc0c86..d94eca6611 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentMetricResidualFunction.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentMetricResidualFunction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -79,7 +79,7 @@ public class BundleAdjustmentMetricResidualFunction // Look up workspace by view ID when relative view private final Map mapWorldToView = new HashMap<>(); - // Storage for 3D points in Cartesian and homogenous coordinates + // Storage for 3D points in Cartesian and homogeneous coordinates private final Point3D_F64 p3 = new Point3D_F64(); private final Point4D_F64 p4 = new Point4D_F64(); @@ -125,7 +125,7 @@ public void process( double[] input, double[] output ) { codec.decode(input, structure); // Project the general scene now - if (structure.isHomogenous()) + if (structure.isHomogeneous()) project4(output); else project3(output); @@ -136,7 +136,7 @@ public void process( double[] input, double[] output ) { * compute the residuals and not optimizing */ public void process( double[] output ) { - if (structure.isHomogenous()) + if (structure.isHomogeneous()) project4(output); else project3(output); @@ -211,7 +211,7 @@ private void project3( double[] output ) { } /** - * projection from homogenous coordinates + * projection from homogeneous coordinates */ private void project4( double[] output ) { int observationIndex = 0; diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentMetricSchurJacobian.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentMetricSchurJacobian.java index 03f431e323..1b40142d51 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentMetricSchurJacobian.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentMetricSchurJacobian.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -62,7 +62,7 @@ public abstract class BundleAdjustmentMetricSchurJacobian // total number of parameters being optimized private int numParameters; - // length of a 3D point. 3 = regular, 4 = homogenous + // length of a 3D point. 3 = regular, 4 = homogeneous private int lengthPoint; /** Specifies method to parameterize rotations, i.e. Rodrigues to SO3 */ @@ -129,7 +129,7 @@ public void configure( SceneStructureMetric structure, SceneObservations observa this.structure = structure; this.observations = observations; - if (!structure.isHomogenous()) { + if (!structure.isHomogeneous()) { lengthPoint = 3; } else { lengthPoint = 4; @@ -261,7 +261,7 @@ private int computeGeneralPoints( DMatrix leftPoint, DMatrix rightView, int featureIndex = obsView.point.get(i); int columnOfPointInJac = featureIndex*lengthPoint; - if (structure.isHomogenous()) { + if (structure.isHomogeneous()) { worldPt4.x = input[columnOfPointInJac]; worldPt4.y = input[columnOfPointInJac + 1]; worldPt4.z = input[columnOfPointInJac + 2]; @@ -295,7 +295,7 @@ private int computeGeneralPoints( DMatrix leftPoint, DMatrix rightView, false, null, null); } //============ Partial of worldPt - if (structure.isHomogenous()) { + if (structure.isHomogeneous()) { partialPointH(leftPoint, rightView, strView, columnOfPointInJac); } else { partialPoint3(leftPoint, rightView, strView, columnOfPointInJac); @@ -387,7 +387,7 @@ private int computeRigidPoints( DMatrix leftPoint, DMatrix rightView, SceneStructureMetric.Rigid rigid = structure.rigids.get(rigidIndex); int pointIndex = featureIndex - rigid.indexFirst; // index of point in rigid body - if (structure.isHomogenous()) { + if (structure.isHomogeneous()) { rigid.getPoint(pointIndex, rigidPt4); SePointOps_F64.transform(rigid.object_to_world, rigidPt4, worldPt4); SePointOps_F64.transformV(world_to_view, worldPt4, cameraPt); @@ -417,7 +417,7 @@ private int computeRigidPoints( DMatrix leftPoint, DMatrix rightView, } //============ Partial of world to view - if (structure.isHomogenous()) { + if (structure.isHomogeneous()) { partialViewSE3(rightView, view, worldPt4.x, worldPt4.y, worldPt4.z, worldPt4.w); } else { partialViewSE3(rightView, view, worldPt3.x, worldPt3.y, worldPt3.z, 1); @@ -430,7 +430,7 @@ private int computeRigidPoints( DMatrix leftPoint, DMatrix rightView, // partial R1 is R2*(@R1*X) // partial T1 is R2*(@T1) if (!rigid.known) { - if (structure.isHomogenous()) { + if (structure.isHomogeneous()) { partialRigidSE3(leftPoint, rigidIndex, rigidPt4.x, rigidPt4.y, rigidPt4.z, rigidPt4.w); } else { partialRigidSE3(leftPoint, rigidIndex, rigidPt3.x, rigidPt3.y, rigidPt3.z, 1); diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentProjectiveResidualFunction.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentProjectiveResidualFunction.java index c4198d0f42..2e9bb2016a 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentProjectiveResidualFunction.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentProjectiveResidualFunction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -65,7 +65,7 @@ public class BundleAdjustmentProjectiveResidualFunction private final Point3D_F64 p3 = new Point3D_F64(); private final Point4D_F64 p4 = new Point4D_F64(); - // Pixel in homogenous image coordinate + // Pixel in homogeneous image coordinate private final Point3D_F64 pix = new Point3D_F64(); /** @@ -97,7 +97,7 @@ public void process( double[] input, double[] output ) { // write the current parameters into the scene's structure codec.decode(input, structure); - if (structure.isHomogenous()) + if (structure.isHomogeneous()) project4(output); else project3(output); @@ -121,7 +121,7 @@ private void project3( double[] output ) { // Apply projective camera to point in world coordinates PerspectiveOps.renderPixel(view.worldToView, p3, pix); - // Apply camera model to pixel in homogenous coordinates + // Apply camera model to pixel in homogeneous coordinates camera.model.project(pix.x, pix.y, pix.z, predictedPixel); // Save results @@ -134,7 +134,7 @@ private void project3( double[] output ) { } /** - * projection from homogenous coordinates + * projection from homogeneous coordinates */ private void project4( double[] output ) { int observationIndex = 0; @@ -151,7 +151,7 @@ private void project4( double[] output ) { // Apply projective camera to point in world coordinates PerspectiveOps.renderPixel(view.worldToView, p4, pix); - // Apply camera model to pixel in homogenous coordinates + // Apply camera model to pixel in homogeneous coordinates camera.model.project(pix.x, pix.y, pix.z, predictedPixel); // Save results diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentProjectiveSchurJacobian.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentProjectiveSchurJacobian.java index 9b48c99291..bcc26f9539 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentProjectiveSchurJacobian.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/BundleAdjustmentProjectiveSchurJacobian.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -50,13 +50,13 @@ public abstract class BundleAdjustmentProjectiveSchurJacobian // total number of parameters being optimized private int numParameters; - // length of a 3D point. 3 = regular, 4 = homogenous + // length of a 3D point. 3 = regular, 4 = homogeneous private int lengthPoint; // feature location in world coordinates private final Point4D_F64 worldPt = new Point4D_F64(); - // Observed pixel in homogenous coordinates. X'=P*X + // Observed pixel in homogeneous coordinates. X'=P*X private final Point3D_F64 pixelH = new Point3D_F64(); // index in parameters of the first point @@ -89,7 +89,7 @@ public void configure( SceneStructureProjective structure, SceneObservations obs this.structure = structure; this.observations = observations; - if (!structure.isHomogenous()) { + if (!structure.isHomogeneous()) { worldPt.w = 1; lengthPoint = 3; } else { @@ -179,7 +179,7 @@ public void processInternal( double[] input, DMatrix leftPoint, DMatrix rightVie worldPt.x = input[columnOfPointInJac]; worldPt.y = input[columnOfPointInJac + 1]; worldPt.z = input[columnOfPointInJac + 2]; - if (structure.isHomogenous()) { + if (structure.isHomogeneous()) { worldPt.w = input[columnOfPointInJac + 3]; } @@ -187,14 +187,14 @@ public void processInternal( double[] input, DMatrix leftPoint, DMatrix rightVie PerspectiveOps.renderPixel(worldToView, worldPt, pixelH); if (view.known) { - if (structure.isHomogenous()) + if (structure.isHomogeneous()) partialCameraMatrixH(worldPt.x, worldPt.y, worldPt.z, worldPt.w, worldToView, worldGradX, worldGradY, worldGradZ, null, null, null); else partialCameraMatrix(worldPt.x, worldPt.y, worldPt.z, worldToView, worldGradX, worldGradY, worldGradZ, null, null, null); } else { - if (structure.isHomogenous()) + if (structure.isHomogeneous()) partialCameraMatrixH(worldPt.x, worldPt.y, worldPt.z, worldPt.w, worldToView, worldGradX, worldGradY, worldGradZ, camGradX, camGradY, camGradZ); else diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/CodecSceneStructureMetric.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/CodecSceneStructureMetric.java index 00da1d57b6..2f8bb684e2 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/CodecSceneStructureMetric.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/CodecSceneStructureMetric.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -60,7 +60,7 @@ public void decode( double[] input, SceneStructureMetric structure ) { p.coordinate[0] = input[index++]; p.coordinate[1] = input[index++]; p.coordinate[2] = input[index++]; - if (structure.isHomogenous()) + if (structure.isHomogeneous()) p.coordinate[3] = input[index++]; } @@ -110,7 +110,7 @@ public void encode( SceneStructureMetric structure, double[] output ) { output[index++] = p.coordinate[0]; output[index++] = p.coordinate[1]; output[index++] = p.coordinate[2]; - if (structure.isHomogenous()) + if (structure.isHomogeneous()) output[index++] = p.coordinate[3]; // Make sure nothing blew up diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/CodecSceneStructureProjective.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/CodecSceneStructureProjective.java index 5ddb7fdd29..50ec909b4f 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/CodecSceneStructureProjective.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/bundle/CodecSceneStructureProjective.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2020, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -42,7 +42,7 @@ public void decode( double[] input, SceneStructureProjective structure ) { p.coordinate[0] = input[index++]; p.coordinate[1] = input[index++]; p.coordinate[2] = input[index++]; - if (structure.isHomogenous()) + if (structure.isHomogeneous()) p.coordinate[3] = input[index++]; } @@ -74,7 +74,7 @@ public void encode( SceneStructureProjective structure, double[] output ) { output[index++] = p.coordinate[0]; output[index++] = p.coordinate[1]; output[index++] = p.coordinate[2]; - if (structure.isHomogenous()) + if (structure.isHomogeneous()) output[index++] = p.coordinate[3]; } diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/f/FundamentalToProjective.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/f/FundamentalToProjective.java index 1912c3f751..655950f14e 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/f/FundamentalToProjective.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/f/FundamentalToProjective.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -77,7 +77,7 @@ public void twoView( DMatrixRMaj F, DMatrixRMaj cameraMatrix ) { /** *

* Given a fundamental matrix a pair of camera matrices P and P1' are extracted. The camera matrices - * are 3 by 4 and used to project a 3D homogenous point onto the image plane. These camera matrices will only + * are 3 by 4 and used to project a 3D homogeneous point onto the image plane. These camera matrices will only * be known up to a projective transform, thus there are multiple solutions, The canonical camera * matrix is defined as:
*

diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/h/HomographyDirectLinearTransform.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/h/HomographyDirectLinearTransform.java
index 6a42756475..c3dac637b1 100644
--- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/h/HomographyDirectLinearTransform.java
+++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/h/HomographyDirectLinearTransform.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, Peter Abeles. All Rights Reserved.
+ * Copyright (c) 2024, Peter Abeles. All Rights Reserved.
  *
  * This file is part of BoofCV (http://boofcv.org).
  *
@@ -150,7 +150,7 @@ public boolean process( @Nullable List points2D,
 		int numRows = computeTotalRows(num2D, num3D, numConic);
 
 		// only 2D points need to be normalzied because of the implicit z=1
-		// 3D points are homogenous or lines and the vector can be normalized to 1
+		// 3D points are homogeneous or lines and the vector can be normalized to 1
 		// same goes for the conic equation
 		shouldNormalize = false;//normalize && points2D != null;
 
diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/impl/ImplPerspectiveOps_F64.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/impl/ImplPerspectiveOps_F64.java
index aa3fb16ec3..de96149a0f 100644
--- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/impl/ImplPerspectiveOps_F64.java
+++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/impl/ImplPerspectiveOps_F64.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, Peter Abeles. All Rights Reserved.
+ * Copyright (c) 2024, Peter Abeles. All Rights Reserved.
  *
  * This file is part of BoofCV (http://boofcv.org).
  *
@@ -325,14 +325,14 @@ public static void renderPixel( DMatrixRMaj cameraMatrix, Point4D_F64 X, Point2D
 	}
 
 	public static double distance3DvsH( Point3D_F64 a, Point4D_F64 b, double tol ) {
-		// convert the homogenous point into a 3D point.
+		// convert the homogeneous point into a 3D point.
 		double x = b.x;
 		double y = b.y;
 		double z = b.z;
 
 		double r = Math.sqrt(x*x + y*y + z*z);
 
-		// See if the homogenous point is at infinity, within tolerance
+		// See if the homogeneous point is at infinity, within tolerance
 		if (r*tol > Math.abs(b.w)) {
 			return Double.POSITIVE_INFINITY;
 		}
diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/pose/PRnPDirectLinearTransform.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/pose/PRnPDirectLinearTransform.java
index 53cc5bd84e..29f23d0c06 100644
--- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/pose/PRnPDirectLinearTransform.java
+++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/pose/PRnPDirectLinearTransform.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021, Peter Abeles. All Rights Reserved.
+ * Copyright (c) 2024, Peter Abeles. All Rights Reserved.
  *
  * This file is part of BoofCV (http://boofcv.org).
  *
@@ -31,7 +31,7 @@
 /**
  * Estimates a projective camera given N points, i.e. Projective N Point (PRnP). This is the projective equivalent
  * of the perspective N Point (PnP) problem. Each point consists of a 2D pixel observations and 3D
- * homogenous coordinate. Pixels are normalized to have zero means and standard deviation of 1. 3D points are
+ * homogeneous coordinate. Pixels are normalized to have zero means and standard deviation of 1. 3D points are
  * scaled to have a f-norm of 1. See [1] for details. Each point provides 2 linearly independent equations, requiring
  * a minimum of 6 points. More points are allowed.
  *
@@ -49,7 +49,7 @@ public class PRnPDirectLinearTransform {
 	public SolveNullSpace solverNullspace = new SolveNullSpaceSvd_DDRM();
 	private DMatrixRMaj ns = new DMatrixRMaj(12, 1);
 
-	// if true it will normalize input 3D homogenous to have f-norm of 1
+	// if true it will normalize input 3D homogeneous to have f-norm of 1
 	private boolean normalize3D = true;
 
 	private DMatrixRMaj A = new DMatrixRMaj(12, 12);
@@ -57,7 +57,7 @@ public class PRnPDirectLinearTransform {
 	/**
 	 * Computes projective camera matrix.
 	 *
-	 * @param worldPts points in homogenous 3D coordinates in world frame. Might be modified.
+	 * @param worldPts points in homogeneous 3D coordinates in world frame. Might be modified.
 	 * @param observed pixel coordinates of points. not modified
 	 * @param solutionModel (Output) 3x4 camera matrix
 	 * @return true if succesfull
diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/pose/PoseFromPairLinear6.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/pose/PoseFromPairLinear6.java
index 941a8cde4b..41a43a6de1 100644
--- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/pose/PoseFromPairLinear6.java
+++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/pose/PoseFromPairLinear6.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021, Peter Abeles. All Rights Reserved.
+ * Copyright (c) 2024, Peter Abeles. All Rights Reserved.
  *
  * This file is part of BoofCV (http://boofcv.org).
  *
@@ -99,16 +99,16 @@ public boolean process( List observations, List loc
 	 * must be known. Feature locations are in calibrated image coordinates.
 	 *
 	 * @param observations List of pixel or normalized image coordinate observations
-	 * @param locations List of object locations in homogenous coordinates. One for each observation pair.
+	 * @param locations List of object locations in homogeneous coordinates. One for each observation pair.
 	 */
-	public boolean processHomogenous( List observations, List locations ) {
+	public boolean processHomogeneous( List observations, List locations ) {
 		if (observations.size() != locations.size())
 			throw new IllegalArgumentException("Number of observations and locations must match.");
 
 		if (observations.size() < 6)
 			throw new IllegalArgumentException("At least (if not more than) six points are required.");
 
-		setupHomogenousA(observations, locations);
+		setupHomogeneousA(observations, locations);
 
 		if (!solveNullspace.process(A, 1, P))
 			return false;
@@ -174,7 +174,7 @@ private void setupA( List observations, List locati
 		}
 	}
 
-	private void setupHomogenousA( List observations, List locations ) {
+	private void setupHomogeneousA( List observations, List locations ) {
 		A.reshape(2*observations.size(), 12, false);
 
 		for (int i = 0; i < observations.size(); i++) {
diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/rectify/DisparityParameters.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/rectify/DisparityParameters.java
index 452ab5a766..4ce9b0ae66 100644
--- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/rectify/DisparityParameters.java
+++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/rectify/DisparityParameters.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, Peter Abeles. All Rights Reserved.
+ * Copyright (c) 2024, Peter Abeles. All Rights Reserved.
  *
  * This file is part of BoofCV (http://boofcv.org).
  *
@@ -88,13 +88,13 @@ public boolean pixelToLeft3D( double pixelX, double pixelY, double value, Point3
 	}
 
 	/**
-	 * Give a pixel coordinate and raw disparity value, compute its homogenous location. This can handle
+	 * Give a pixel coordinate and raw disparity value, compute its homogeneous location. This can handle
 	 * points at infinity.
 	 *
 	 * @param pixelX Pixel coordinate x-axis
 	 * @param pixelY Pixel coordinate y-axis
 	 * @param value Raw disparity value. DO NOT ADD MIN.
-	 * @param location (Output) Computed homogenous coordinate
+	 * @param location (Output) Computed homogeneous coordinate
 	 * @return true if successful
 	 */
 	public boolean pixelToLeft4D( double pixelX, double pixelY, double value, Point4D_F64 location ) {
diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/robust/DistanceSe3SymmetricSq.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/robust/DistanceSe3SymmetricSq.java
index 37d8ccba4f..582f85aa5c 100644
--- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/robust/DistanceSe3SymmetricSq.java
+++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/robust/DistanceSe3SymmetricSq.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, Peter Abeles. All Rights Reserved.
+ * Copyright (c) 2024, Peter Abeles. All Rights Reserved.
  *
  * This file is part of BoofCV (http://boofcv.org).
  *
@@ -33,7 +33,7 @@
 /**
  * 

* Computes the error for a given camera motion from two calibrated views. First a point - * is triangulated in homogenous coordinates from the two views and the motion. Then the difference between + * is triangulated in homogeneous coordinates from the two views and the motion. Then the difference between * the observed and projected point is found at each view. Error is normalized pixel difference * squared. *

@@ -42,7 +42,7 @@ * Δx22 + Δy22 *

* - *

Homogenous coordinates are used so that pure/nearly pure rotation can be handled. Points will be at infinity.

+ *

Homogeneous coordinates are used so that pure/nearly pure rotation can be handled. Points will be at infinity.

* *

* Error units can be in either pixels2 or unit less (normalized pixel coordinates). To compute diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/robust/DistanceTrifocalTransferSq.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/robust/DistanceTrifocalTransferSq.java index 27803e7e76..0cc83bab0f 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/robust/DistanceTrifocalTransferSq.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/robust/DistanceTrifocalTransferSq.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2020, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -35,7 +35,7 @@ public class DistanceTrifocalTransferSq implements DistanceFromModel { TrifocalTransfer transfer = new TrifocalTransfer(); - // transferred point in homogenous coordinates + // transferred point in homogeneous coordinates Point3D_F64 c = new Point3D_F64(); @Override diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/structure/ProjectiveStructureByFactorization.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/structure/ProjectiveStructureByFactorization.java index 6673841dc0..7a9166ab7a 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/structure/ProjectiveStructureByFactorization.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/structure/ProjectiveStructureByFactorization.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -42,7 +42,7 @@ * [ ... ] = [ ... ] * [ λ[N,1]*x[1,1] , λ[N,2]*x[1,2] , ... , λ[N,M]*x[N,M] ] = [ P[M] ] *

- * where λ is the depth, x is homogenous pixel coordinate, P is 3x4 projective, X is 3D feature location in + * where λ is the depth, x is homogeneous pixel coordinate, P is 3x4 projective, X is 3D feature location in * world coordinate system. * * Procedure: @@ -232,7 +232,7 @@ public void getCameraMatrix( int view, DMatrixRMaj cameraMatrix ) { * Returns location of 3D feature for a view * * @param feature Index of feature to retrieve - * @param out (Output) Storage for 3D feature. homogenous coordinates + * @param out (Output) Storage for 3D feature. homogeneous coordinates */ public void getFeature3D( int feature, Point4D_F64 out ) { out.x = X.get(0, feature); @@ -252,7 +252,7 @@ public void assignValuesToA( DMatrixRMaj A ) { for (int pointIdx = 0; pointIdx < depths.numCols; pointIdx++) { double depth = depths.get(viewIdx, pointIdx); - // pixels are in homogenous coordinates A(:,i) = depth*(x,y,1) + // pixels are in homogeneous coordinates A(:,i) = depth*(x,y,1) A.set(rowA, pointIdx, depth*pixels.get(rowPixels, pointIdx)/pixelScale); A.set(rowA + 1, pointIdx, depth*pixels.get(rowPixels + 1, pointIdx)/pixelScale); A.set(rowA + 2, pointIdx, depth); diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/structure/ProjectiveStructureFromHomographies.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/structure/ProjectiveStructureFromHomographies.java index 9463e88467..d8c4a16fa6 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/structure/ProjectiveStructureFromHomographies.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/structure/ProjectiveStructureFromHomographies.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -228,7 +228,7 @@ void filterPointsOnPlaneAtInfinity( List homographies_view1_to_view throw new IllegalArgumentException("Feature index outside of bounds. Must be from 0 to " + (totalFeatures - 1)); GeometryMath_F64.mult(H, p.p, tmp); - // Homogenous coordinates are scale invariant. A scale + // Homogeneous coordinates are scale invariant. A scale // needs to be picked for consistency. I picked the largest x or y value double m = Math.max(Math.abs(tmp.x), Math.abs(tmp.y)); if (m == 0) m = 1; diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/ResidualsTriangulateProjective.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/ResidualsTriangulateProjective.java index ca7f768fdc..a3a96b5f09 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/ResidualsTriangulateProjective.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/ResidualsTriangulateProjective.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -28,7 +28,7 @@ /** * Residuals for a projective triangulation where the difference between predicted and observed pixels - * are minimized. The optimized point is in homogenous coordinates. + * are minimized. The optimized point is in homogeneous coordinates. * * @author Peter Abeles */ @@ -40,7 +40,7 @@ public class ResidualsTriangulateProjective implements FunctionNtoM { // Known camera motion private List cameraMatrices; - // 3D point in homogenous coordinates + // 3D point in homogeneous coordinates private final Point4D_F64 point = new Point4D_F64(); private final Point2D_F64 predicted = new Point2D_F64(); diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/Triangulate2ViewsGeometricMetric.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/Triangulate2ViewsGeometricMetric.java index 20e39ef7ea..ad395b9be7 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/Triangulate2ViewsGeometricMetric.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/Triangulate2ViewsGeometricMetric.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -71,14 +71,14 @@ public boolean triangulate( Point2D_F64 a, Point2D_F64 b, Se3_F64 a_to_b, Point3 /** *

- * Same as {@link #triangulate(Point2D_F64, Point2D_F64, Se3_F64, Point3D_F64)} but in homogenous coordinates + * Same as {@link #triangulate(Point2D_F64, Point2D_F64, Se3_F64, Point3D_F64)} but in homogeneous coordinates * and can handle points at infinity. *

* * @param a Observation from camera view 'a' in normalized coordinates. Not modified. * @param b Observation from camera view 'b' in normalized coordinates. Not modified. * @param a_to_b Transformation from camera view 'a' to 'b' Not modified. - * @param foundInA (Output) Found 3D position of the point in reference frame 'a'. Homogenous coordinates. Modified. + * @param foundInA (Output) Found 3D position of the point in reference frame 'a'. Homogeneous coordinates. Modified. */ public void triangulate( Point2D_F64 a, Point2D_F64 b, Se3_F64 a_to_b, Point4D_F64 foundInA ) { // b_to_a = R'*(X_b-T)=X_a @@ -101,13 +101,13 @@ public void triangulate( Point2D_F64 a, Point2D_F64 b, Se3_F64 a_to_b, Point4D_F /** *

* Triangulates two observations that are 3D pointing vectors and saves the results ad a 3D point in - * homogenous coordinates. + * homogeneous coordinates. *

* * @param a Observation from camera view 'a' as a 3D pointing vector. Not modified. * @param b Observation from camera view 'b' as a 3D pointing vector. Not modified. * @param a_to_b Transformation from camera view 'a' to 'b' Not modified. - * @param foundInA (Output) Found 3D position of the point in reference frame 'a'. Homogenous coordinates. Modified. + * @param foundInA (Output) Found 3D position of the point in reference frame 'a'. Homogeneous coordinates. Modified. */ public void triangulate( Point3D_F64 a, Point3D_F64 b, Se3_F64 a_to_b, Point4D_F64 foundInA ) { // b_to_a = R'*(X_b-T)=X_a diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/TriangulateMetricLinearDLT.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/TriangulateMetricLinearDLT.java index 10e17de316..841779eeb8 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/TriangulateMetricLinearDLT.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/TriangulateMetricLinearDLT.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -69,7 +69,7 @@ public class TriangulateMetricLinearDLT { * * @param observations Observation in each view in normalized coordinates. Not modified. * @param worldToView Transformations from world to the view. Not modified. - * @param found (Output) 3D point in homogenous coordinates in world reference frame. Modified. + * @param found (Output) 3D point in homogeneous coordinates in world reference frame. Modified. */ public GeometricResult triangulate( List observations, List worldToView, @@ -137,7 +137,7 @@ public GeometricResult triangulate( Point2D_F64 a, Point2D_F64 b, * * @param observations Observation in each view in 3d pointing vectors. Not modified. * @param worldToView Transformations from world to the view. Not modified. - * @param found (Output) 3D point in homogenous coordinates in world reference frame. Modified. + * @param found (Output) 3D point in homogeneous coordinates in world reference frame. Modified. */ public GeometricResult triangulateP( List observations, List worldToView, diff --git a/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/TriangulateProjectiveLinearDLT.java b/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/TriangulateProjectiveLinearDLT.java index cea9127ff4..68693b6f40 100644 --- a/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/TriangulateProjectiveLinearDLT.java +++ b/main/boofcv-geo/src/main/java/boofcv/alg/geo/triangulate/TriangulateProjectiveLinearDLT.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -67,7 +67,7 @@ public class TriangulateProjectiveLinearDLT { * * @param observations Observation in each view in pixel coordinates. Not modified. * @param cameraMatrices Camera projection matrices, e.g. x = P*X. 3 by 4 projectives. Not modified. - * @param found Output, found 3D point in homogenous coordinates. Modified. + * @param found Output, found 3D point in homogeneous coordinates. Modified. * @return true if triangulation was successful or false if it failed */ public GeometricResult triangulate( List observations, diff --git a/main/boofcv-geo/src/main/java/boofcv/factory/geo/FactoryMultiView.java b/main/boofcv-geo/src/main/java/boofcv/factory/geo/FactoryMultiView.java index b6dd970ed3..511c98ccd6 100644 --- a/main/boofcv-geo/src/main/java/boofcv/factory/geo/FactoryMultiView.java +++ b/main/boofcv-geo/src/main/java/boofcv/factory/geo/FactoryMultiView.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -607,7 +607,7 @@ public static TriangulateNViewsMetric triangulateNViewMetric( @Nullable ConfigTr } /** - * Triangulate a homogenous point from N metric views given observations in normalized image coordinates. + * Triangulate a homogeneous point from N metric views given observations in normalized image coordinates. * * @return N-view triangulation algorithm * @see TriangulateMetricLinearDLT @@ -630,7 +630,7 @@ public static TriangulateNViewsMetricH triangulateNViewMetricH( @Nullable Config } /** - * Triangulate a homogenous point from N projective views given observations in pixel coordinates. + * Triangulate a homogeneous point from N projective views given observations in pixel coordinates. * * @return N-view triangulation algorithm * @see TriangulateProjectiveLinearDLT @@ -671,7 +671,7 @@ public static Triangulate2PointingMetricH triangulate2PointingMetricH( @Nullable } /** - * Triangulate a point in homogenous coordinates from N views given observations as pointing vectors. + * Triangulate a point in homogeneous coordinates from N views given observations as pointing vectors. * * @return N-view triangulation algorithm * @see TriangulateMetricLinearDLT diff --git a/main/boofcv-geo/src/main/java/boofcv/struct/geo/AssociatedPair3D.java b/main/boofcv-geo/src/main/java/boofcv/struct/geo/AssociatedPair3D.java index 028866a3e4..d52c6ee0e2 100644 --- a/main/boofcv-geo/src/main/java/boofcv/struct/geo/AssociatedPair3D.java +++ b/main/boofcv-geo/src/main/java/boofcv/struct/geo/AssociatedPair3D.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -23,7 +23,7 @@ /** *

- * The observed location of a feature in two camera views. Typically a point in homogenous coordinates a line. + * The observed location of a feature in two camera views. Typically a point in homogeneous coordinates a line. *

* * @author Peter Abeles diff --git a/main/boofcv-geo/src/main/java/boofcv/struct/geo/Point2D4D.java b/main/boofcv-geo/src/main/java/boofcv/struct/geo/Point2D4D.java index e3fe8bda32..427e46ba9d 100644 --- a/main/boofcv-geo/src/main/java/boofcv/struct/geo/Point2D4D.java +++ b/main/boofcv-geo/src/main/java/boofcv/struct/geo/Point2D4D.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -24,7 +24,7 @@ import lombok.Setter; /** - * Observed point feature location on the image plane and its 3D homogenous position. + * Observed point feature location on the image plane and its 3D homogeneous position. * * @author Peter Abeles */ @@ -34,7 +34,7 @@ public class Point2D4D { */ @Getter @Setter public Point2D_F64 observation; /** - * 3D location of the feature in homogenous world coordinates + * 3D location of the feature in homogeneous world coordinates */ @Getter @Setter public Point4D_F64 location; diff --git a/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/GenericBundleAdjustmentMetricChecks.java b/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/GenericBundleAdjustmentMetricChecks.java index 45995ea61d..17d3c90b79 100644 --- a/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/GenericBundleAdjustmentMetricChecks.java +++ b/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/GenericBundleAdjustmentMetricChecks.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -180,7 +180,7 @@ public static void checkReprojectionError( SceneStructureMetric structure, Scene PointIndex2D_F64 o = new PointIndex2D_F64(); Point2D_F64 predicted = new Point2D_F64(); - if (structure.homogenous) { + if (structure.homogeneous) { Point4D_F64 p4 = new Point4D_F64(); Point3D_F64 p3 = new Point3D_F64(); for (int viewIndex = 0; viewIndex < observations.views.size; viewIndex++) { @@ -222,9 +222,9 @@ public static void checkReprojectionError( SceneStructureMetric structure, Scene public static void assertEquals( SceneStructureMetric a, SceneStructureMetric b, double tolCamera, double tolDistance, double tolRotation ) { - Assertions.assertEquals(a.homogenous, b.homogenous); + Assertions.assertEquals(a.homogeneous, b.homogeneous); - if (a.homogenous) { + if (a.homogeneous) { // Point4D_F64 pa = new Point4D_F64(); // Point4D_F64 pb = new Point4D_F64(); diff --git a/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/GenericBundleAdjustmentProjectiveChecks.java b/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/GenericBundleAdjustmentProjectiveChecks.java index bb9211cc34..73f22c24be 100644 --- a/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/GenericBundleAdjustmentProjectiveChecks.java +++ b/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/GenericBundleAdjustmentProjectiveChecks.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -154,7 +154,7 @@ static void checkReprojectionError( SceneStructureProjective structure, SceneObs PointIndex2D_F64 o = new PointIndex2D_F64(); Point2D_F64 predicted = new Point2D_F64(); - if (structure.homogenous) { + if (structure.homogeneous) { Point4D_F64 p4 = new Point4D_F64(); Point3D_F64 p3 = new Point3D_F64(); for (int indexView = 0; indexView < observations.views.size; indexView++) { @@ -192,9 +192,9 @@ static void checkReprojectionError( SceneStructureProjective structure, SceneObs static void assertEquals( SceneStructureProjective a, SceneStructureProjective b, double tolDistance ) { - Assertions.assertEquals(a.homogenous, b.homogenous); + Assertions.assertEquals(a.homogeneous, b.homogeneous); - if (a.homogenous) { + if (a.homogeneous) { // Point4D_F64 pa = new Point4D_F64(); // Point4D_F64 pb = new Point4D_F64(); diff --git a/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/TestScaleSceneStructure.java b/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/TestScaleSceneStructure.java index 2e4d5278db..3ed101c155 100644 --- a/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/TestScaleSceneStructure.java +++ b/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/TestScaleSceneStructure.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -53,15 +53,15 @@ class TestScaleSceneStructure extends BoofStandardJUnit { @Test void apply_undo_metric() { for (int h = 0; h < 2; h++) { - boolean homogenous = h == 1; + boolean homogeneous = h == 1; var alg = new ScaleSceneStructure(); alg.medianPoint.setTo(0.5, 0.9, 1.3); alg.medianDistancePoint = 1.2; - var expected = new SceneStructureMetric(homogenous); - var found = new SceneStructureMetric(homogenous); + var expected = new SceneStructureMetric(homogeneous); + var found = new SceneStructureMetric(homogeneous); SceneObservations obs = createProjectiveScene(found, 0xBEEF); createProjectiveScene(expected, 0xBEEF); @@ -92,14 +92,14 @@ class TestScaleSceneStructure extends BoofStandardJUnit { boolean pointsStats = p == 1; for (int h = 0; h < 2; h++) { - boolean homogenous = h == 1; + boolean homogeneous = h == 1; var alg = new ScaleSceneStructure(); alg.setScalePixelsUsingStats(pointsStats); alg.medianPoint.setTo(0.5, 0.9, 1.3); alg.medianDistancePoint = 1.2; - var expected = new SceneStructureProjective(homogenous); - var found = new SceneStructureProjective(homogenous); + var expected = new SceneStructureProjective(homogeneous); + var found = new SceneStructureProjective(homogeneous); SceneObservations obs = createProjectiveScene(found, 0xBEEF); createProjectiveScene(expected, 0xBEEF); @@ -110,7 +110,7 @@ class TestScaleSceneStructure extends BoofStandardJUnit { alg.applyScale(found, obs); // Make sure it was changed - if (!homogenous) { + if (!homogeneous) { // can't normalize camera matrix in this situation for (int i = 0; i < expected.views.size; i++) { double error = SpecializedOps_DDRM.diffNormF(expected.views.data[i].worldToView, found.views.data[i].worldToView); @@ -134,7 +134,7 @@ class TestScaleSceneStructure extends BoofStandardJUnit { * Very basic check to see if observations are scaled from -0.5 to 0.5 */ @Test void applyScaleToPixelsAndCameraMatrix() { - // homogenous or not doesn't matter + // homogeneous or not doesn't matter var structure = new SceneStructureProjective(false); SceneObservations obs = createProjectiveScene(structure, 0xBEEF); @@ -188,7 +188,7 @@ public static SceneObservations createProjectiveScene( SceneStructureMetric scen for (int i = 0; i < scene.points.size; i++) { // Point in world frame var X = new Point3D_F64(rand.nextGaussian(), rand.nextGaussian(), 3 + rand.nextGaussian()); - if (scene.homogenous) { + if (scene.homogeneous) { scene.points.data[i].set(X.x, X.y, X.z, 1); } else { scene.points.data[i].set(X.x, X.y, X.z); @@ -243,7 +243,7 @@ static SceneObservations createProjectiveScene( SceneStructureProjective scene, for (int i = 0; i < scene.points.size; i++) { // Point in world frame var X = new Point3D_F64(rand.nextGaussian(), rand.nextGaussian(), 3 + rand.nextGaussian()); - if (scene.homogenous) { + if (scene.homogeneous) { scene.points.data[i].set(X.x, X.y, X.z, 1); } else { scene.points.data[i].set(X.x, X.y, X.z); diff --git a/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/TestSceneStructureCommon.java b/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/TestSceneStructureCommon.java index 75eff092db..2c3608ac85 100644 --- a/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/TestSceneStructureCommon.java +++ b/main/boofcv-geo/src/test/java/boofcv/abst/geo/bundle/TestSceneStructureCommon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -32,7 +32,7 @@ class TestSceneStructureCommon extends BoofStandardJUnit { @Test void removePoints() { var structure = new MockSceneStructureCommon(false); - structure.homogenous = false; + structure.homogeneous = false; structure.pointSize = 3; var original = new ArrayList(); @@ -74,8 +74,8 @@ void Point_removeView() { private static class MockSceneStructureCommon extends SceneStructureCommon { - MockSceneStructureCommon( boolean homogenous ) { - super(homogenous); + MockSceneStructureCommon( boolean homogeneous ) { + super(homogeneous); } @Override public int getParameterCount() { diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/TestMultiViewOps.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/TestMultiViewOps.java index 6a207fc955..38511aedab 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/TestMultiViewOps.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/TestMultiViewOps.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -1376,8 +1376,8 @@ private void checkSplit3Lists( DogArray triples, List { assertEquals(0.0, helper.cloud3.get(idx).distance(coor), UtilEjml.TEST_F64); helper.counter++; @@ -1387,8 +1387,8 @@ private void checkSplit3Lists( DogArray triples, List { double distance = PerspectiveOps.distance3DvsH(helper.cloud3.get(idx), coor, 1e-8); assertEquals(0.0, distance, UtilEjml.TEST_F64); @@ -1485,7 +1485,7 @@ private class BundleSceneHelper { List cloud3; int counter; - public BundleSceneHelper( boolean homogenous, int numPoints ) { + public BundleSceneHelper( boolean homogeneous, int numPoints ) { world_to_view0 = SpecialEuclideanOps_F64.eulerXyz(0, 0.1, -0.2, 0.02, -0.04, 0.03, null); world_to_view1 = SpecialEuclideanOps_F64.eulerXyz(0.3, 0.1, 0.2, 0.01, -0.06, 0.02, null); @@ -1493,14 +1493,14 @@ public BundleSceneHelper( boolean homogenous, int numPoints ) { cloud3 = UtilPoint3D_F64.random(new Point3D_F64(0, 0, 2), -1, 1, -1, 1, -0.1, 0.1, numPoints, rand); - scene = new SceneStructureMetric(homogenous); + scene = new SceneStructureMetric(homogeneous); scene.initialize(1, 3, numPoints); scene.setCamera(0, true, intrinsic); scene.setView(0, 0, true, world_to_view0); scene.setView(1, 0, true, world_to_view1); for (int i = 0; i < cloud3.size(); i++) { Point3D_F64 p = cloud3.get(i); - if (homogenous) { + if (homogeneous) { double w = rand.nextDouble() + 0.1; scene.setPoint(i, p.x*w, p.y*w, p.z*w, w); } else { diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/TestPerspectiveOps.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/TestPerspectiveOps.java index 34c0799a81..fbbf960235 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/TestPerspectiveOps.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/TestPerspectiveOps.java @@ -391,7 +391,7 @@ class TestPerspectiveOps extends BoofStandardJUnit { assertEquals(expected.y, found.y, 1e-8); } - @Test void renderPixel_SE3_homogenous() { + @Test void renderPixel_SE3_homogeneous() { var X3 = new Point3D_F64(0.1, -0.05, 3); var X4 = new Point4D_F64(0.1, -0.05, 3, 1); X4.scale(1.2); @@ -719,19 +719,19 @@ DMatrix3x3 random3x3() { assertEquals(expected, found, UtilEjml.TEST_F64_SQ); } - @Test void homogenousTo3dPositiveZ() { + @Test void homogeneousTo3dPositiveZ() { Point3D_F64 found = new Point3D_F64(); - PerspectiveOps.homogenousTo3dPositiveZ(new Point4D_F64(4, 6, 8, 2), 1e8, 1e-8, found); + PerspectiveOps.homogeneousTo3dPositiveZ(new Point4D_F64(4, 6, 8, 2), 1e8, 1e-8, found); assertEquals(0.0, found.distance(2, 3, 4), UtilEjml.TEST_F64); // positive constraint is only enforced for points at infinity - PerspectiveOps.homogenousTo3dPositiveZ(new Point4D_F64(4, 6, 8, -2), 1e8, 1e-8, found); + PerspectiveOps.homogeneousTo3dPositiveZ(new Point4D_F64(4, 6, 8, -2), 1e8, 1e-8, found); assertEquals(0.0, found.distance(-2, -3, -4), UtilEjml.TEST_F64); // point at infinity. chose to put it in front with positive z double r = 1e8; double d = Math.sqrt(4.0*4.0 + 6.0*6.0 + 8.0*8.0); - PerspectiveOps.homogenousTo3dPositiveZ(new Point4D_F64(-4, -6, -8, 0), r, 1e-8, found); + PerspectiveOps.homogeneousTo3dPositiveZ(new Point4D_F64(-4, -6, -8, 0), r, 1e-8, found); assertEquals(0.0, found.distance(4*r/d, 6*r/d, 8*r/d), UtilEjml.TEST_F64); } @@ -746,13 +746,13 @@ DMatrix3x3 random3x3() { assertEquals(Double.POSITIVE_INFINITY, PerspectiveOps.distance3DvsH(a, b, 1e-8)); } - @Test void isBehindCamera_homogenous() { + @Test void isBehindCamera_homogeneous() { // Easy numerically - isBehindCamera_homogenous(1.0); + isBehindCamera_homogeneous(1.0); // Check for underflow and overflow issues - isBehindCamera_homogenous(1e20); - isBehindCamera_homogenous(1e-20); + isBehindCamera_homogeneous(1e20); + isBehindCamera_homogeneous(1e-20); // Check an edge case assertTrue(PerspectiveOps.isBehindCamera(new Point4D_F64(0, 0, 0, 0))); @@ -766,7 +766,7 @@ DMatrix3x3 random3x3() { checkBehindSwapSign(new Point4D_F64(0, 0, 1, Double.POSITIVE_INFINITY), false); } - void isBehindCamera_homogenous( double v ) { + void isBehindCamera_homogeneous( double v ) { // Standard scenarios checkBehindSwapSign(new Point4D_F64(0, 0, -v, v), true); checkBehindSwapSign(new Point4D_F64(0, 0, v, v), false); diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/CommonBundleAdjustmentMetricSchurJacobian.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/CommonBundleAdjustmentMetricSchurJacobian.java index 30ea90c886..a3be98d690 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/CommonBundleAdjustmentMetricSchurJacobian.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/CommonBundleAdjustmentMetricSchurJacobian.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -60,8 +60,8 @@ public abstract class CommonBundleAdjustmentMetricSchurJacobian alg, - boolean homogenous, boolean hasRigid, boolean hasRelative ) { - SceneStructureMetric structure = createScene(rand, homogenous, hasRigid, hasRelative); + boolean homogeneous, boolean hasRigid, boolean hasRelative ) { + SceneStructureMetric structure = createScene(rand, homogeneous, hasRigid, hasRelative); SceneObservations observations = createObservations(rand, structure); var param = new double[structure.getParameterCount()]; @@ -88,8 +88,8 @@ public void compareToNumerical( BundleAdjustmentMetricSchurJacobian alg, compareToNumerical_relative(true); } - public void compareToNumerical_relative( boolean homogenous ) { - SceneStructureMetric structure = createScene(rand, homogenous, false, true); + public void compareToNumerical_relative( boolean homogeneous ) { + SceneStructureMetric structure = createScene(rand, homogeneous, false, true); SceneObservations observations = createObservations(rand, structure); // Try different patterns of relative views and attempt to cover all the edge cases @@ -132,8 +132,8 @@ public void compareToNumerical_relative( boolean[] knownChain, twoViewsOneMotion(false, true); } - public void twoViewsOneMotion( boolean homogenous, boolean knownMotion ) { - SceneStructureMetric structure = createSceneStereo(rand, homogenous); + public void twoViewsOneMotion( boolean homogeneous, boolean knownMotion ) { + SceneStructureMetric structure = createSceneStereo(rand, homogeneous); SceneObservations observations = createObservations(rand, structure); structure.motions.forIdx(( i, m ) -> m.known = knownMotion); @@ -161,8 +161,8 @@ public void twoViewsOneMotion( boolean homogenous, boolean knownMotion ) { sameMotionInChain(true); } - public void sameMotionInChain( boolean homogenous ) { - SceneStructureMetric structure = createSceneChainSameMotion(rand, homogenous); + public void sameMotionInChain( boolean homogeneous ) { + SceneStructureMetric structure = createSceneChainSameMotion(rand, homogeneous); SceneObservations observations = createObservations(rand, structure); var param = new double[structure.getParameterCount()]; @@ -210,8 +210,8 @@ public void sameMotionInChain( boolean homogenous ) { * Create a scene where a "stereo" camera is created that moves. The right to left transform is fixed and common * across all views */ - static SceneStructureMetric createSceneChainSameMotion( Random rand, boolean homogenous ) { - SceneStructureMetric out = new SceneStructureMetric(homogenous); + static SceneStructureMetric createSceneChainSameMotion( Random rand, boolean homogeneous ) { + SceneStructureMetric out = new SceneStructureMetric(homogeneous); int numSteps = 3; out.initialize(1, numSteps, 5); @@ -222,7 +222,7 @@ static SceneStructureMetric createSceneChainSameMotion( Random rand, boolean hom // Create a fixed transform for left to right camera int motionIdx = out.addMotion(false, SpecialEuclideanOps_F64.eulerXyz(0.25, 0.01, -0.05, 0.01, 0.02, -0.1, null)); - if (homogenous) { + if (homogeneous) { for (int i = 0; i < out.points.size; i++) { double w = rand.nextDouble()*0.5 + 0.5; out.setPoint(i, w*(i + 1), w*(i + 2*rand.nextGaussian()), w*(2*i - 3*rand.nextGaussian()), w); diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentMetricResidualFunction.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentMetricResidualFunction.java index 6c17a06334..216e97e1c7 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentMetricResidualFunction.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentMetricResidualFunction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -50,8 +50,8 @@ class TestBundleAdjustmentMetricResidualFunction extends BoofStandardJUnit { multipleCalls(false, false, true); } - void multipleCalls( boolean homogenous, boolean hasRigid, boolean hasRelative ) { - SceneStructureMetric structure = createScene(rand, homogenous, hasRigid, hasRelative); + void multipleCalls( boolean homogeneous, boolean hasRigid, boolean hasRelative ) { + SceneStructureMetric structure = createScene(rand, homogeneous, hasRigid, hasRelative); SceneObservations obs = createObservations(rand, structure); var param = new double[structure.getParameterCount()]; @@ -78,8 +78,8 @@ void multipleCalls( boolean homogenous, boolean hasRigid, boolean hasRelative ) changeInParamChangesOutput(false); } - void changeInParamChangesOutput( boolean homogenous ) { - SceneStructureMetric structure = createScene(rand, homogenous, false, false); + void changeInParamChangesOutput( boolean homogeneous ) { + SceneStructureMetric structure = createScene(rand, homogeneous, false, false); var param = new double[structure.getParameterCount()]; new CodecSceneStructureMetric().encode(structure, param); @@ -120,8 +120,8 @@ void changeInParamChangesOutput( boolean homogenous ) { chainedRelativeViews(false); } - void chainedRelativeViews( boolean homogenous ) { - SceneStructureMetric structure = createScene(rand, homogenous, false, false); + void chainedRelativeViews( boolean homogeneous ) { + SceneStructureMetric structure = createScene(rand, homogeneous, false, false); // Make each view be relative to the previous view structure.views.forIdx(( i, v ) -> v.parent = i > 0 ? structure.views.data[i - 1] : null); @@ -166,8 +166,8 @@ void chainedRelativeViews( boolean homogenous ) { cameraState(false); } - void cameraState( boolean homogenous ) { - SceneStructureMetric structure = createSceneZoomState(rand, homogenous); + void cameraState( boolean homogeneous ) { + SceneStructureMetric structure = createSceneZoomState(rand, homogeneous); SceneObservations observations = createObservations(rand, structure); // Add the camera state to all observation views diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveResidualFunction.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveResidualFunction.java index 616e52ab1b..631fc1424b 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveResidualFunction.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveResidualFunction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -43,8 +43,8 @@ void multipleCalls() { multipleCalls(true); } - void multipleCalls( boolean homogenous ) { - SceneStructureProjective structure = homogenous ? createSceneH(rand) : createScene3D(rand); + void multipleCalls( boolean homogeneous ) { + SceneStructureProjective structure = homogeneous ? createSceneH(rand) : createScene3D(rand); SceneObservations obs = createObservations(rand, structure); double[] param = new double[structure.getParameterCount()]; @@ -72,8 +72,8 @@ void changeInParamChangesOutput() { changeInParamChangesOutput(true); } - void changeInParamChangesOutput( boolean homogenous ) { - SceneStructureProjective structure = homogenous ? createSceneH(rand) : createScene3D(rand); + void changeInParamChangesOutput( boolean homogeneous ) { + SceneStructureProjective structure = homogeneous ? createSceneH(rand) : createScene3D(rand); double[] param = new double[structure.getParameterCount()]; new CodecSceneStructureProjective().encode(structure, param); diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveSchurJacobian_DDRM.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveSchurJacobian_DDRM.java index a162da590a..b81bbb4e7d 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveSchurJacobian_DDRM.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveSchurJacobian_DDRM.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -54,7 +54,7 @@ void compareToNumerical_3D() { } @Test - void compareToNumerical_Homogenous() { + void compareToNumerical_Homogeneous() { SceneStructureProjective structure = createSceneH(rand); SceneObservations observations = createObservations(rand, structure); diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveSchurJacobian_DSCC.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveSchurJacobian_DSCC.java index 0175e1f60e..1576a804c1 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveSchurJacobian_DSCC.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestBundleAdjustmentProjectiveSchurJacobian_DSCC.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -54,7 +54,7 @@ void compareToNumerical_3D() { } @Test - void compareToNumerical_Homogenous() { + void compareToNumerical_Homogeneous() { SceneStructureProjective structure = createSceneH(rand); SceneObservations observations = createObservations(rand, structure); diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestCodecSceneStructureMetric.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestCodecSceneStructureMetric.java index 21a2169ef6..8505336314 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestCodecSceneStructureMetric.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/bundle/TestCodecSceneStructureMetric.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -43,22 +43,22 @@ class TestCodecSceneStructureMetric extends BoofStandardJUnit { encode_decode(false, true); } - void encode_decode( boolean homogenous, boolean hasRigid ) { - SceneStructureMetric original = createScene(rand, homogenous, hasRigid, false); + void encode_decode( boolean homogeneous, boolean hasRigid ) { + SceneStructureMetric original = createScene(rand, homogeneous, hasRigid, false); CodecSceneStructureMetric codec = new CodecSceneStructureMetric(); - int pointLength = homogenous ? 4 : 3; + int pointLength = homogeneous ? 4 : 3; int N = original.getUnknownMotionCount()*6 + original.getUnknownRigidCount()*6 + original.points.size*pointLength + original.getUnknownCameraParameterCount(); assertEquals(N, original.getParameterCount()); double[] param = new double[N]; codec.encode(original, param); - SceneStructureMetric found = createScene(rand, homogenous, hasRigid, false); + SceneStructureMetric found = createScene(rand, homogeneous, hasRigid, false); codec.decode(param, found); - assertEquals(homogenous, found.isHomogenous()); + assertEquals(homogeneous, found.isHomogeneous()); for (int i = 0; i < original.points.size; i++) { assertTrue(original.points.data[i].distance(found.points.data[i]) < UtilEjml.TEST_F64); } @@ -99,8 +99,8 @@ void encode_decode( boolean homogenous, boolean hasRigid ) { } } - static SceneStructureMetric createScene( Random rand, boolean homogenous, boolean hasRigid, boolean hasRelative ) { - var out = new SceneStructureMetric(homogenous); + static SceneStructureMetric createScene( Random rand, boolean homogeneous, boolean hasRigid, boolean hasRelative ) { + var out = new SceneStructureMetric(homogeneous); int numRigid = hasRigid ? 2 : 0; @@ -121,7 +121,7 @@ static SceneStructureMetric createScene( Random rand, boolean homogenous, boolea for (int i = 0; i < out.rigids.size; i++) { SceneStructureMetric.Rigid r = out.rigids.data[i]; - if (homogenous) { + if (homogeneous) { for (int j = 0; j < r.points.length; j++) { // sign shouldn't matter double sign = rand.nextBoolean() ? -1 : 1; @@ -150,7 +150,7 @@ static SceneStructureMetric createScene( Random rand, boolean homogenous, boolea } out.assignIDsToRigidPoints(); - if (homogenous) { + if (homogeneous) { for (int i = 0; i < out.points.size; i++) { // sign shouldn't matter double sign = rand.nextBoolean() ? -1 : 1; @@ -196,8 +196,8 @@ static SceneStructureMetric createScene( Random rand, boolean homogenous, boolea * Create a scene where a "stereo" camera is created that moves. The right to left transform is fixed and common * across all views */ - static SceneStructureMetric createSceneStereo( Random rand, boolean homogenous ) { - var out = new SceneStructureMetric(homogenous); + static SceneStructureMetric createSceneStereo( Random rand, boolean homogeneous ) { + var out = new SceneStructureMetric(homogeneous); int numSteps = 2; out.initialize(2, 2*numSteps, 10); @@ -213,7 +213,7 @@ static SceneStructureMetric createSceneStereo( Random rand, boolean homogenous ) // Create a fixed transform for left to right camera int leftToRightIdx = out.addMotion(true, SpecialEuclideanOps_F64.eulerXyz(0.25, 0.01, -0.05, 0.01, 0.02, -0.1, null)); - if (homogenous) { + if (homogeneous) { for (int i = 0; i < out.points.size; i++) { double w = rand.nextDouble()*0.5 + 0.5; out.setPoint(i, w*(i + 1), w*(i + 2*rand.nextGaussian()), w*(2*i - 3*rand.nextGaussian()), w); @@ -250,14 +250,14 @@ static SceneStructureMetric createSceneStereo( Random rand, boolean homogenous ) /** * Create a scene where the camera has an adjustable zoom */ - static SceneStructureMetric createSceneZoomState( Random rand, boolean homogenous ) { - var out = new SceneStructureMetric(homogenous); + static SceneStructureMetric createSceneZoomState( Random rand, boolean homogeneous ) { + var out = new SceneStructureMetric(homogeneous); out.initialize(1, 4, 4, 6, 0); out.setCamera(0, true, new BundleZoomSimplified(0.0, 1.0, 0.04, -0.01)); - if (homogenous) { + if (homogeneous) { for (int i = 0; i < out.points.size; i++) { double w = rand.nextDouble()*0.5 + 0.5; out.setPoint(i, w*(i + 1), w*(i + 2*rand.nextGaussian()), w*(2*i - 3*rand.nextGaussian()), w); diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/h/CommonHomographyChecks.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/h/CommonHomographyChecks.java index 35ef6c382e..bdb1e846af 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/h/CommonHomographyChecks.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/h/CommonHomographyChecks.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -77,7 +77,7 @@ public void createScene( int numPoints, boolean isPixels ) { AssociatedPair p2 = pairs2D.get(i); AssociatedPair3D p3 = new AssociatedPair3D(); - // same point but in homogenous coordinates and Z isn't always 1 + // same point but in homogeneous coordinates and Z isn't always 1 double z = 1.0 + rand.nextGaussian()*0.1; p3.p1.setTo(p2.p1.x*z, p2.p1.y*z, z); p3.p2.setTo(p2.p2.x*z, p2.p2.y*z, z); diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/ChecksMotionNPointHomogenous.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/ChecksMotionNPointHomogeneous.java similarity index 95% rename from main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/ChecksMotionNPointHomogenous.java rename to main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/ChecksMotionNPointHomogeneous.java index 98a54a7b6a..48ca07a1a1 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/ChecksMotionNPointHomogenous.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/ChecksMotionNPointHomogeneous.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -37,7 +37,7 @@ * * @author Peter Abeles */ -public abstract class ChecksMotionNPointHomogenous extends CommonMotionNPointHomogenous { +public abstract class ChecksMotionNPointHomogeneous extends CommonMotionNPointHomogeneous { public abstract DMatrixRMaj compute( List obs, List locations ); diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonMotionNPointHomogenous.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonMotionNPointHomogeneous.java similarity index 94% rename from main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonMotionNPointHomogenous.java rename to main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonMotionNPointHomogeneous.java index 49151e35fd..df1d835184 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonMotionNPointHomogenous.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonMotionNPointHomogeneous.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -37,7 +37,7 @@ * * @author Peter Abeles */ -public class CommonMotionNPointHomogenous extends BoofStandardJUnit { +public class CommonMotionNPointHomogeneous extends BoofStandardJUnit { // Projection matrix 3x4 protected DMatrixRMaj projection; diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonThreeViewHomogenous.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonThreeViewHomogeneous.java similarity index 96% rename from main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonThreeViewHomogenous.java rename to main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonThreeViewHomogeneous.java index 3b7fd15baa..bf10bfe09f 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonThreeViewHomogenous.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/CommonThreeViewHomogeneous.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -34,7 +34,7 @@ import java.util.ArrayList; import java.util.List; -public abstract class CommonThreeViewHomogenous extends BoofStandardJUnit { +public abstract class CommonThreeViewHomogeneous extends BoofStandardJUnit { protected DMatrixRMaj K = PerspectiveOps.pinholeToMatrix( new CameraPinhole(500,500,0,250,250,1000,1000),(DMatrixRMaj)null); diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestCompatibleProjectiveHomography.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestCompatibleProjectiveHomography.java index 7ef2629d27..48e835bb1a 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestCompatibleProjectiveHomography.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestCompatibleProjectiveHomography.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -42,7 +42,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -public class TestCompatibleProjectiveHomography extends CommonThreeViewHomogenous { +public class TestCompatibleProjectiveHomography extends CommonThreeViewHomogeneous { List camerasB; List sceneB; diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestPRnPDirectLinearTransform.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestPRnPDirectLinearTransform.java index af9d5bf1a8..535b527918 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestPRnPDirectLinearTransform.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestPRnPDirectLinearTransform.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -31,7 +31,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; -class TestPRnPDirectLinearTransform extends CommonMotionNPointHomogenous { +class TestPRnPDirectLinearTransform extends CommonMotionNPointHomogeneous { /** * No noise minimal case. General structure */ diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestPoseFromPairLinear6.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestPoseFromPairLinear6.java index 491a45f769..cb8f7652c3 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestPoseFromPairLinear6.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/pose/TestPoseFromPairLinear6.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -69,13 +69,13 @@ public Se3_F64 compute(List obs, List locations) { } @Nested - class Projective extends ChecksMotionNPointHomogenous + class Projective extends ChecksMotionNPointHomogeneous { @Override public DMatrixRMaj compute(List obs, List locations) { PoseFromPairLinear6 alg = new PoseFromPairLinear6(); - alg.processHomogenous(obs,locations); + alg.processHomogeneous(obs,locations); return alg.getProjective(); } diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/triangulate/CommonTriangulationChecks.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/triangulate/CommonTriangulationChecks.java index 84908691f1..fbaec8463f 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/triangulate/CommonTriangulationChecks.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/triangulate/CommonTriangulationChecks.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -69,7 +69,7 @@ public void createScene( Point3D_F64 worldPoint ) { public void createScene( Point4D_F64 point ) { worldPointH = point.copy(); - PerspectiveOps.homogenousTo3dPositiveZ(point, Double.MAX_VALUE, 1e-16, worldPoint); + PerspectiveOps.homogeneousTo3dPositiveZ(point, Double.MAX_VALUE, 1e-16, worldPoint); motionWorldToCamera = new ArrayList<>(); obsNorm = new ArrayList<>(); obsPointing = new ArrayList<>(); diff --git a/main/boofcv-geo/src/test/java/boofcv/alg/geo/triangulate/TestTriangulate2ViewsGeometricMetric.java b/main/boofcv-geo/src/test/java/boofcv/alg/geo/triangulate/TestTriangulate2ViewsGeometricMetric.java index 6da85aba07..5041b63c68 100644 --- a/main/boofcv-geo/src/test/java/boofcv/alg/geo/triangulate/TestTriangulate2ViewsGeometricMetric.java +++ b/main/boofcv-geo/src/test/java/boofcv/alg/geo/triangulate/TestTriangulate2ViewsGeometricMetric.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -45,7 +45,7 @@ public class TestTriangulate2ViewsGeometricMetric extends CommonTriangulationChe } } - @Test void triangulate_two_homogenous() { + @Test void triangulate_two_homogeneous() { createScene(); var alg = new Triangulate2ViewsGeometricMetric(); diff --git a/main/boofcv-geo/todo.txt b/main/boofcv-geo/todo.txt index 055e3d332b..e5a0109ade 100644 --- a/main/boofcv-geo/todo.txt +++ b/main/boofcv-geo/todo.txt @@ -4,7 +4,7 @@ - Compare EPnP directly to author's c code - Bundle Adjustment - * Using homogenous coordinates + * Using homogeneous coordinates * compare to opencv - Triangulation Stability diff --git a/main/boofcv-io/src/main/java/boofcv/io/geo/MultiViewIO.java b/main/boofcv-io/src/main/java/boofcv/io/geo/MultiViewIO.java index 6ffb3afdf0..f63883fc59 100644 --- a/main/boofcv-io/src/main/java/boofcv/io/geo/MultiViewIO.java +++ b/main/boofcv-io/src/main/java/boofcv/io/geo/MultiViewIO.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -252,7 +252,7 @@ public static void save( SceneStructureMetric scene, Writer outputWriter ) { data.put("rigids", rigids); data.put("cameras", cameras); data.put("points", points); - data.put("homogenous", scene.isHomogenous()); + data.put("homogeneous", scene.isHomogeneous()); data.put("data_type", "SceneStructureMetric"); data.put("version", 0); @@ -464,7 +464,7 @@ public static SceneStructureMetric load( Reader reader, @Nullable SceneStructure Map data = yaml.load(reader); try { reader.close(); - boolean homogenous = getOrThrow(data, "homogenous"); + boolean homogeneous = getOrThrow(data, "homogeneous"); List> yamlViews = getOrThrow(data, "views"); List> yamlMotions = getOrThrow(data, "motions"); @@ -472,10 +472,10 @@ public static SceneStructureMetric load( Reader reader, @Nullable SceneStructure List> yamlCameras = getOrThrow(data, "cameras"); List> yamlPoints = getOrThrow(data, "points"); - if (scene != null && scene.isHomogenous() != homogenous) + if (scene != null && scene.isHomogeneous() != homogeneous) scene = null; if (scene == null) - scene = new SceneStructureMetric(homogenous); + scene = new SceneStructureMetric(homogeneous); scene.initialize( yamlCameras.size(), yamlViews.size(), yamlMotions.size(), yamlPoints.size(), yamlRigids.size()); @@ -498,7 +498,7 @@ public static SceneStructureMetric load( Reader reader, @Nullable SceneStructure SceneStructureMetric.Rigid r = scene.rigids.get(i); Map yamlRigid = yamlRigids.get(i); List> points = getOrThrow(yamlRigid, "points"); - r.init(points.size(), scene.isHomogenous() ? 4 : 3); + r.init(points.size(), scene.isHomogeneous() ? 4 : 3); r.known = getOrThrow(yamlRigid, "known"); r.indexFirst = getOrThrow(yamlRigid, "indexFirst"); loadSE3(getOrThrow(yamlRigid, "object_to_world"), r.object_to_world); diff --git a/main/boofcv-io/src/test/java/boofcv/io/geo/TestMultiViewIO.java b/main/boofcv-io/src/test/java/boofcv/io/geo/TestMultiViewIO.java index 5d6643675a..343abc052e 100644 --- a/main/boofcv-io/src/test/java/boofcv/io/geo/TestMultiViewIO.java +++ b/main/boofcv-io/src/test/java/boofcv/io/geo/TestMultiViewIO.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -351,7 +351,7 @@ private SceneStructureMetric createSceneStructureMetric() { r.indexFirst = rand.nextInt(10); r.points = new SceneStructureCommon.Point[rand.nextInt(4)]; for (int j = 0; j < r.points.length; j++) { - r.points[j] = new SceneStructureCommon.Point(ret.isHomogenous() ? 4 : 3); + r.points[j] = new SceneStructureCommon.Point(ret.isHomogeneous() ? 4 : 3); randomizePoint(r.points[j]); } } diff --git a/main/boofcv-ip-multiview/src/main/java/boofcv/alg/mvs/MultiBaselineDisparityErrors.java b/main/boofcv-ip-multiview/src/main/java/boofcv/alg/mvs/MultiBaselineDisparityErrors.java index 01ae54e673..cb51f97292 100644 --- a/main/boofcv-ip-multiview/src/main/java/boofcv/alg/mvs/MultiBaselineDisparityErrors.java +++ b/main/boofcv-ip-multiview/src/main/java/boofcv/alg/mvs/MultiBaselineDisparityErrors.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -195,7 +195,7 @@ boolean addToFusedImage( DisparityImage image ) { // Convert the disparity from "image" into "fused image" // First compute the 3D point in the rectified coordinate system - // This is a homogenous coordinate where w = d. It can handle infinity + // This is a homogeneous coordinate where w = d. It can handle infinity double rectZ = imageBaseline*imageFocalX; double rectX = rectZ*(rectPixX - imagePinhole.cx)/imagePinhole.fx; double rectY = rectZ*(rectPixY - imagePinhole.cy)/imagePinhole.fy; diff --git a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/GenerateStereoPairGraphFromScene.java b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/GenerateStereoPairGraphFromScene.java index 9085f1d460..8b3645f133 100644 --- a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/GenerateStereoPairGraphFromScene.java +++ b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/GenerateStereoPairGraphFromScene.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -137,7 +137,7 @@ protected void matchPointsToViews( SceneStructureMetric scene ) { // use the world axis and not the local one scene.getWorldToView(scene.views.get(viewIdxA), world_to_view, tmpSE); - computePointingVector(world_to_view, p, scene.isHomogenous(), viewA.pointing.grow()); + computePointingVector(world_to_view, p, scene.isHomogeneous(), viewA.pointing.grow()); // Connect this view to the other views for (int j = i + 1; j < p.views.size; j++) { @@ -153,20 +153,20 @@ protected void matchPointsToViews( SceneStructureMetric scene ) { * @param pointing (Output) Cartesian vector pointing from the view to the point. */ protected void computePointingVector( Se3_F64 world_to_view, SceneStructureCommon.Point p, - boolean homogenous, Vector3D_F64 pointing ) { + boolean homogeneous, Vector3D_F64 pointing ) { double x = p.coordinate[0]; double y = p.coordinate[1]; double z = p.coordinate[2]; - double w = homogenous ? p.coordinate[3] : 1.0; + double w = homogeneous ? p.coordinate[3] : 1.0; - // pointing = [ I | T] h, where h is homogenous coordinates and T is view's location + // pointing = [ I | T] h, where h is homogeneous coordinates and T is view's location pointing.x = x + world_to_view.T.x*w; pointing.y = y + world_to_view.T.y*w; pointing.z = z + world_to_view.T.z*w; pointing.normalize(); - // There's a sign ambiguity in the homogenous case that needs to be resolved - if (!homogenous) + // There's a sign ambiguity in the homogeneous case that needs to be resolved + if (!homogeneous) return; // It can be resolved by assuming a camera can't see backwards. Direction of camera can be determined diff --git a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/InitializeCommonProjective.java b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/InitializeCommonProjective.java index 81e6ed920c..9910014f7c 100644 --- a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/InitializeCommonProjective.java +++ b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/InitializeCommonProjective.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -90,7 +90,7 @@ public class InitializeCommonProjective implements VerbosePrint { //-------------- Internal workspace variables protected final int[] selectedTriple = new int[2]; - // triangulated 3D homogenous points in seed reference frame + // triangulated 3D homogeneous points in seed reference frame protected final DogArray points3D = new DogArray<>(Point4D_F64::new); // Associated pixel observations protected final DogArray assocPixel = new DogArray<>(AssociatedPair::new); @@ -420,8 +420,8 @@ boolean computeCameraMatrix( View seed, Motion edge, DogArray feats assocPixel.get(i).p2.setTo(featsB.get(dstIdx)); } - // Estimate the camera matrix given homogenous pixel observations - if (utils.poseEstimator.processHomogenous(assocPixel.toList(), points3D.toList())) { + // Estimate the camera matrix given homogeneous pixel observations + if (utils.poseEstimator.processHomogeneous(assocPixel.toList(), points3D.toList())) { cameraMatrix.setTo(utils.poseEstimator.getProjective()); return true; } else { diff --git a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/MetricSanityChecks.java b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/MetricSanityChecks.java index 6db55ef26f..09784b9287 100644 --- a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/MetricSanityChecks.java +++ b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/MetricSanityChecks.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -257,7 +257,7 @@ public boolean checkPhysicalConstraints( SceneStructureMetric structure, worldP.x = p.getX(); worldP.y = p.getY(); worldP.z = p.getZ(); - if (structure.isHomogenous()) { + if (structure.isHomogeneous()) { worldP.w = p.getW(); } // worldP.w = 1 was already set for 3D points diff --git a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/PairwiseGraphUtils.java b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/PairwiseGraphUtils.java index c699c8a35a..7732d7491f 100644 --- a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/PairwiseGraphUtils.java +++ b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/PairwiseGraphUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -347,7 +347,7 @@ public InlierInfo saveRansacInliers( SceneWorkingGraph.View view, DogArray_I32 i * * 1) RANSAC to fit a trifocal tensor * 2) Extract camera matrices that have a common projective space - * 3) Triangulate location of 3D homogenous points + * 3) Triangulate location of 3D homogeneous points * * @param fixedSeed if true the seed is fixed and other views are not. If false then the inverse happens. */ @@ -365,12 +365,12 @@ public void initializeSbaSceneThreeView( boolean fixedSeed ) { structurePr.setView(1, !fixedSeed, P2, priorCamB.width, priorCamB.height); structurePr.setView(2, !fixedSeed, P3, priorCamC.width, priorCamC.height); - // triangulate homogenous coordinates for each point in the inlier set + // triangulate homogeneous coordinates for each point in the inlier set triangulateFeatures(); } /** - * Triangulates the location of each features in homogenous space and save to bundle adjustment scene + * Triangulates the location of each features in homogeneous space and save to bundle adjustment scene */ protected void triangulateFeatures() { checkTrue(structurePr.views.size > 0, "Must initialize the structure first"); diff --git a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/RefineMetricWorkingGraph.java b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/RefineMetricWorkingGraph.java index b681136cde..45d3907dc3 100644 --- a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/RefineMetricWorkingGraph.java +++ b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/RefineMetricWorkingGraph.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -101,7 +101,7 @@ public class RefineMetricWorkingGraph implements VerbosePrint { private final Point2D_F64 pixelObserved = new Point2D_F64(); // storage for predicted pixel private final Point2D_F64 pixelPredicted = new Point2D_F64(); - // storage for 3D feature in homogenous coordinates in world reference frame + // storage for 3D feature in homogeneous coordinates in world reference frame private final Point4D_F64 world3D = new Point4D_F64(); // 3D feature in camera coordinates private final Point4D_F64 camera3D = new Point4D_F64(); @@ -462,7 +462,7 @@ void triangulateAndSave( SceneWorkingGraph.InlierInfo inlierSet, int inlierIdx ) int pointID = structure.points.size; SceneStructureCommon.Point point3D = structure.points.grow(); - if (structure.isHomogenous()) + if (structure.isHomogeneous()) point3D.set(found3D.x, found3D.y, found3D.z, found3D.w); else point3D.set(found3D.x/found3D.w, found3D.y/found3D.w, found3D.z/found3D.w); diff --git a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/ThreeViewEstimateMetricScene.java b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/ThreeViewEstimateMetricScene.java index 9b1776c869..4f76660f28 100644 --- a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/ThreeViewEstimateMetricScene.java +++ b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/ThreeViewEstimateMetricScene.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -93,8 +93,8 @@ public class ThreeViewEstimateMetricScene implements VerbosePrint { public ConfigBundleAdjustment configSBA = new ConfigBundleAdjustment(); public ConfigConverge convergeSBA = new ConfigConverge(1e-6, 1e-6, 100); - /** Optimize points in homogenous coordinates */ - public boolean homogenous = false; + /** Optimize points in homogeneous coordinates */ + public boolean homogeneous = false; /** Use to specify if multiple views share a camera. Values from 0 to 2, inclusive. */ public int[] viewToCamera = new int[]{0, 0, 0}; @@ -155,7 +155,7 @@ public ThreeViewEstimateMetricScene() { public void declareAlgorithms() { // TODO let it specify image shape for each view independently ransac = FactoryMultiViewRobust.metricThreeViewRansac(configSelfCalib, configRansac); - structure = new SceneStructureMetric(homogenous); + structure = new SceneStructureMetric(homogeneous); observations = new SceneObservations(); bundleAdjustment = FactoryMultiView.bundleSparseMetric(configSBA); bundleAdjustment.configure(convergeSBA.ftol, convergeSBA.gtol, convergeSBA.maxIterations); @@ -442,7 +442,7 @@ private void averageIntrinsicParameters( MetricCameraTriple results ) { */ private boolean checkBehindCamera( SceneStructureMetric structure ) { int totalBehind = 0; - if (homogenous) { + if (homogeneous) { var X = new Point4D_F64(); for (int i = 0; i < structure.points.size; i++) { structure.points.data[i].get(X); diff --git a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/expand/EstimateViewKnownCalibration.java b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/expand/EstimateViewKnownCalibration.java index 9ce96b1e0f..9d895d971b 100644 --- a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/expand/EstimateViewKnownCalibration.java +++ b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/expand/EstimateViewKnownCalibration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -194,8 +194,8 @@ boolean estimateViewPose() { } /** - * Triangulates points. Triangulation is done in homogenous coordinates but then converted to 3D points - * since there current isn't a variant of PnP in BoofCV which can handle homogenous points. + * Triangulates points. Triangulation is done in homogeneous coordinates but then converted to 3D points + * since there current isn't a variant of PnP in BoofCV which can handle homogeneous points. * * As a results, thigns will go poorly if a point is at or very near to infinity */ @@ -218,7 +218,7 @@ private void triangulateForPnP() { // Reject points that are behind the camera or at infinity since PnP can't handle infinity if (X.w*X.z <= 0) continue; - // NOTE: In the future it would be best if we could pass in homogenous points into PNP + // NOTE: In the future it would be best if we could pass in homogeneous points into PNP // Note that this point was added to the input list inputPnP_to_inliersThreeView.add(tripleCnt); diff --git a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/expand/EstimateViewUtils.java b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/expand/EstimateViewUtils.java index dce9e2a586..16603c563b 100644 --- a/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/expand/EstimateViewUtils.java +++ b/main/boofcv-reconstruction/src/main/java/boofcv/alg/structure/expand/EstimateViewUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -211,7 +211,7 @@ public void configureSbaStructure( List inliersThreeView ) { throw new RuntimeException("Triangulation failed. Possibly bad input. Handle this problem"); } - if (structure.isHomogenous()) + if (structure.isHomogeneous()) structure.setPoint(inlierCnt, foundX.x, foundX.y, foundX.z, foundX.w); else structure.setPoint(inlierCnt, foundX.x/foundX.w, foundX.y/foundX.w, foundX.z/foundX.w); diff --git a/main/boofcv-reconstruction/src/main/java/boofcv/factory/structure/FactorySceneReconstruction.java b/main/boofcv-reconstruction/src/main/java/boofcv/factory/structure/FactorySceneReconstruction.java index 0f9aa538f8..3d5b800f18 100644 --- a/main/boofcv-reconstruction/src/main/java/boofcv/factory/structure/FactorySceneReconstruction.java +++ b/main/boofcv-reconstruction/src/main/java/boofcv/factory/structure/FactorySceneReconstruction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -71,7 +71,7 @@ public static MetricBundleAdjustmentUtils bundleUtils( @Nullable ConfigBundleUti if (config == null) config = new ConfigBundleUtils(); - var alg = new MetricBundleAdjustmentUtils(config.triangulation, config.homogenous); + var alg = new MetricBundleAdjustmentUtils(config.triangulation, config.homogeneous); alg.configConverge.setTo(config.converge); alg.configScale = config.scale; alg.keepFraction = config.keepFraction; diff --git a/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestGenerateStereoPairGraphFromScene.java b/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestGenerateStereoPairGraphFromScene.java index cea1943490..6394c66575 100644 --- a/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestGenerateStereoPairGraphFromScene.java +++ b/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestGenerateStereoPairGraphFromScene.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -136,7 +136,7 @@ class TestGenerateStereoPairGraphFromScene extends BoofStandardJUnit { assertEquals(0.0, expected.distance(found), UtilEjml.TEST_F64); } - @Test void computePointingVector_Homogenous() { + @Test void computePointingVector_Homogeneous() { var point = new Point3D_F64(0.5, -2, 31.0); var location = new Point3D_F64(0.5, -0.1, 1.6); var expected = new Vector3D_F64(location, point); diff --git a/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestInitializeCommonMetric.java b/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestInitializeCommonMetric.java index 52550df138..9d5f9915ab 100644 --- a/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestInitializeCommonMetric.java +++ b/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestInitializeCommonMetric.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -84,7 +84,7 @@ void checkReconstruction( InitializeCommonMetric alg, DogArray_I32 seedConnIdx) { final SceneStructureMetric structure = alg.getStructure(); - assertFalse(structure.isHomogenous(), "Code below assumes cartesian and not homogenous"); + assertFalse(structure.isHomogeneous(), "Code below assumes cartesian and not homogeneous"); // Sanity check the number of each type of structure assertEquals(seedConnIdx.size + 1, structure.views.size); diff --git a/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestRefineMetricWorkingGraph.java b/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestRefineMetricWorkingGraph.java index 5522cae492..ac95c864d2 100644 --- a/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestRefineMetricWorkingGraph.java +++ b/main/boofcv-reconstruction/src/test/java/boofcv/alg/structure/TestRefineMetricWorkingGraph.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -263,7 +263,7 @@ void computeReprojectionError() { var normToPixels = new LensDistortionPinhole(intrinsic).distort_F64(false, true); var observed = PerspectiveOps.renderPixel(world_to_vew, intrinsic, X, null); Objects.requireNonNull(observed); - // homogenous coordinates are scale invariant + // homogeneous coordinates are scale invariant X.scale(-5.0); var alg = new RefineMetricWorkingGraph(); diff --git a/main/boofcv-sfm/src/main/java/boofcv/abst/sfm/d3/WrapVisOdomDualTrackPnP.java b/main/boofcv-sfm/src/main/java/boofcv/abst/sfm/d3/WrapVisOdomDualTrackPnP.java index ab027e24eb..becc8510ae 100644 --- a/main/boofcv-sfm/src/main/java/boofcv/abst/sfm/d3/WrapVisOdomDualTrackPnP.java +++ b/main/boofcv-sfm/src/main/java/boofcv/abst/sfm/d3/WrapVisOdomDualTrackPnP.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -81,7 +81,7 @@ public WrapVisOdomDualTrackPnP( VisOdomDualTrackPnP visualOdometry, @Override public boolean getTrackWorld3D( int index, Point3D_F64 world ) { VisOdomDualTrackPnP.TrackInfo info = visualOdometry.getVisibleTracks().get(index); - PerspectiveOps.homogenousTo3dPositiveZ(info.worldLoc, 1e8, 1e-8, world); + PerspectiveOps.homogeneousTo3dPositiveZ(info.worldLoc, 1e8, 1e-8, world); return true; } diff --git a/main/boofcv-sfm/src/main/java/boofcv/alg/mvs/ColorizeCloudFromImage.java b/main/boofcv-sfm/src/main/java/boofcv/alg/mvs/ColorizeCloudFromImage.java index 05af010f6d..4d29e32977 100644 --- a/main/boofcv-sfm/src/main/java/boofcv/alg/mvs/ColorizeCloudFromImage.java +++ b/main/boofcv-sfm/src/main/java/boofcv/alg/mvs/ColorizeCloudFromImage.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -99,7 +99,7 @@ public void process3( T image, Iterator cloud, Se3_F64 world_t * Colorizes all the points in the specified range using the specified image. * * @param image (Input) Which image is being considered - * @param cloud (Input) The point cloud in homogenous coordinates + * @param cloud (Input) The point cloud in homogeneous coordinates * @param idx0 (Input) The first point in the point cloud that's inside this image. Inclusive. * @param idx1 (Input) The last point in the point cloud that's inside this image. Exclusive. * @param world_to_view (Input) Transform from world (cloud) into this image/view. diff --git a/main/boofcv-sfm/src/main/java/boofcv/alg/mvs/ScenePointsSetIterator.java b/main/boofcv-sfm/src/main/java/boofcv/alg/mvs/ScenePointsSetIterator.java index 5a61d5a6ec..88d4d2506e 100644 --- a/main/boofcv-sfm/src/main/java/boofcv/alg/mvs/ScenePointsSetIterator.java +++ b/main/boofcv-sfm/src/main/java/boofcv/alg/mvs/ScenePointsSetIterator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -29,7 +29,7 @@ /** * Given a {@link SceneStructureMetric scene}, this will iterate through points in that scene that are inside - * of a provided array full of indexes. This handles 3D and homogenous points. + * of a provided array full of indexes. This handles 3D and homogeneous points. * * @author Peter Abeles */ @@ -49,7 +49,7 @@ public class ScenePointsSetIterator, P extends GeoTup * * @param scene (Input) The scene which is to be iterated through * @param indexes (Input) Indexes that specify which features in the scene it should be iterating through - * @param point (Input,Output) Storage for the point. Make sure you get 3D vs homogenous correct. + * @param point (Input,Output) Storage for the point. Make sure you get 3D vs homogeneous correct. */ public ScenePointsSetIterator( SceneStructureCommon scene, DogArray_I32 indexes, T point ) { this(point); @@ -62,7 +62,7 @@ public ScenePointsSetIterator( SceneStructureCommon scene, DogArray_I32 indexes, * Re-initializes and can be used to change the scene and set of indexes */ public void initialize( SceneStructureCommon scene, DogArray_I32 indexes ) { - if (scene.isHomogenous() != point.p instanceof Point4D_F64) + if (scene.isHomogeneous() != point.p instanceof Point4D_F64) throw new IllegalArgumentException("Scene point type does not match provided point type"); this.scene = scene; @@ -84,7 +84,7 @@ public void initialize( SceneStructureCommon scene, DogArray_I32 indexes ) { @Override public T next() { // Get the index of the point in this scene int indexScene = indexes.get(index++); - if (scene.isHomogenous()) + if (scene.isHomogeneous()) scene.points.get(indexScene).get((Point4D_F64)point.p); else scene.points.get(indexScene).get((Point3D_F64)point.p); diff --git a/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d2/StitchingFromMotion2D.java b/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d2/StitchingFromMotion2D.java index 8d792a9f4f..ac5d076afb 100644 --- a/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d2/StitchingFromMotion2D.java +++ b/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d2/StitchingFromMotion2D.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -93,7 +93,7 @@ public class StitchingFromMotion2D, IT extends Invertible * * @param motion Estimates image motion * @param distorter Applies found transformation to stitch images - * @param converter Converts internal model into a homogenous transformation + * @param converter Converts internal model into a homogeneous transformation * @param maxJumpFraction If the view area changes by more than this fraction a fault is declared */ public StitchingFromMotion2D( ImageMotion2D motion, diff --git a/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomBundlePnPBase.java b/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomBundlePnPBase.java index f677393eb5..330a9aaf7e 100644 --- a/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomBundlePnPBase.java +++ b/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomBundlePnPBase.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -169,7 +169,7 @@ protected void triangulateNotSelectedBundleTracks() { // NOTE: This invert could be cached. Doesn't need to be done a million times } - // NOTE: If there is a homogenous metric triangulation added in the future replace this with that + // NOTE: If there is a homogeneous metric triangulation added in the future replace this with that if (triangulateN.triangulate(observationsNorm.toList(), listOf_world_to_frame.toList(), found3D)) { bt.worldLoc.x = found3D.x; bt.worldLoc.y = found3D.y; diff --git a/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomDualTrackPnP.java b/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomDualTrackPnP.java index e95a4b0e60..d7348a4e67 100644 --- a/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomDualTrackPnP.java +++ b/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomDualTrackPnP.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -176,7 +176,7 @@ public VisOdomDualTrackPnP( double epilolarTol, bundleViso = new VisOdomBundleAdjustment<>(TrackInfo::new); // TODO would be best if this reduced pixel error and not geometric error - // TODO remove and replace with calibrated homogenous coordinates when it exists + // TODO remove and replace with calibrated homogeneous coordinates when it exists ConfigTriangulation config = new ConfigTriangulation(); config.type = ConfigTriangulation.Type.GEOMETRIC; config.converge.maxIterations = 10; @@ -358,7 +358,7 @@ private boolean estimateMotion() { // Get the 3D coordinate of the point in the 'previous' frame SePointOps_F64.transform(world_to_prev, bt.worldLoc, prevLoc4); - PerspectiveOps.homogenousTo3dPositiveZ(prevLoc4, 1e8, 1e-8, stereo.location); + PerspectiveOps.homogeneousTo3dPositiveZ(prevLoc4, 1e8, 1e-8, stereo.location); // compute normalized image coordinate for track in left and right image leftCM.pixelToNorm.compute(l.pixel.x, l.pixel.y, stereo.leftObs); diff --git a/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomMonoDepthPnP.java b/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomMonoDepthPnP.java index 8629a38204..3f27d06a01 100644 --- a/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomMonoDepthPnP.java +++ b/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomMonoDepthPnP.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -110,7 +110,7 @@ public VisOdomMonoDepthPnP( ModelMatcher motionEstimator, this.bundleViso = new VisOdomBundleAdjustment<>(Track::new); // TODO would be best if this reduced pixel error and not geometric error - // TODO remove and replace with calibrated homogenous coordinates when it exists + // TODO remove and replace with calibrated homogeneous coordinates when it exists ConfigTriangulation config = new ConfigTriangulation(); config.type = ConfigTriangulation.Type.GEOMETRIC; config.converge.maxIterations = 10; @@ -423,8 +423,8 @@ private boolean estimateMotion( List active ) { // Go from world coordinates to the previous frame SePointOps_F64.transform(world_to_prev, bt.worldLoc, prevLoc4); - // Go from homogenous coordinates into 3D coordinates - PerspectiveOps.homogenousTo3dPositiveZ(prevLoc4, 1e8, 1e-7, p.location); + // Go from homogeneous coordinates into 3D coordinates + PerspectiveOps.homogeneousTo3dPositiveZ(prevLoc4, 1e8, 1e-7, p.location); } // estimate the motion up to a scale factor in translation diff --git a/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomStereoQuadPnP.java b/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomStereoQuadPnP.java index a5dcd3d344..c32cd89cd4 100644 --- a/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomStereoQuadPnP.java +++ b/main/boofcv-sfm/src/main/java/boofcv/alg/sfm/d3/VisOdomStereoQuadPnP.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Peter Abeles. All Rights Reserved. + * Copyright (c) 2024, Peter Abeles. All Rights Reserved. * * This file is part of BoofCV (http://boofcv.org). * @@ -149,7 +149,7 @@ public class VisOdomStereoQuadPnP, TD extends TupleDesc