diff --git a/src/main/java/object_detection/ObjectDetector.java b/src/main/java/object_detection/ObjectDetector.java index 220c76676517e709b31a4c971940c83187148952..8e2cd2c0fd918fb02ee5d1e7a4b737caefef65c5 100644 --- a/src/main/java/object_detection/ObjectDetector.java +++ b/src/main/java/object_detection/ObjectDetector.java @@ -58,6 +58,7 @@ public class ObjectDetector { // printing final object set for sanity System.out.println(objSet); + System.out.println("====> Finished Object Mapping"); } /** diff --git a/src/main/java/object_detection/types/ObjectSet.java b/src/main/java/object_detection/types/ObjectSet.java index 2b7898e1ed338d1cdb2cbe74f7e1d0608fc02ee6..1dccaa7c8c783edf2ccc3588cee642aa5c09c3c7 100644 --- a/src/main/java/object_detection/types/ObjectSet.java +++ b/src/main/java/object_detection/types/ObjectSet.java @@ -42,24 +42,21 @@ public class ObjectSet { Point[] r1 = this.objects.get(i).getPoints(); Point[] r2 = this.objects.get(j).getPoints(); - // O(n) - Set s = new HashSet<>(); - for(Point r : r1){ - if(r != null){ - s.add(r); - } - } - - // O(n) int count = 0; - for(Point p : r2){ - if(p!=null && s.contains(p)){ - count++; + + // O(n^2) + for (Point point : r1) { + for (Point value : r2) { + if (point.equals(value)) { + // we found point r1[x], now find next, and so on + count++; + break; + } } } - // in this line, if the reps are 80% similar, assume this is the same set. - return (count) > (r1.length*0.8); + // in this line, if the reps are 20% similar, assume this is the same set. + return (count) > (Math.max(r1.length, r2.length)*0.1); } /** @@ -88,7 +85,7 @@ public class ObjectSet { public List> processFrame(File featCsv, File bboxCsv) throws FileNotFoundException { // Print the name of the file being processed - System.out.println("Processing " + featCsv.getName() + " and " + bboxCsv.getName()); + //System.out.println("Processing " + featCsv.getName() + " and " + bboxCsv.getName()); // Read bounding boxes List boundingBoxes = readBoundingBoxes(bboxCsv); @@ -145,7 +142,6 @@ public class ObjectSet { continue; } if (compareObjects(objIdx, j)) { - System.out.println("COMBINING"); combineObjects(j, objIdx); break; } @@ -188,11 +184,6 @@ public class ObjectSet { */ @Override public String toString(){ - StringBuilder res = new StringBuilder("ObjectSet:"); - for(PointSet p : this.objects){ - res.append("\n\t - Object with ").append(p.pset.size()).append(" points"); - } - - return res.toString(); + return "ObjectSet of : " + this.objects.size() + " objects"; } } \ No newline at end of file diff --git a/src/main/java/object_detection/types/Point.java b/src/main/java/object_detection/types/Point.java index 3f80abdf0c467b86a498a41a42cc4b4ad5dd0fae..506cea3c2f647ba9509a3398cb880018e1fe9f81 100644 --- a/src/main/java/object_detection/types/Point.java +++ b/src/main/java/object_detection/types/Point.java @@ -31,7 +31,7 @@ public class Point { * @return true if points are close enough */ public static boolean equals(Point aa, Point bb, float err){ - return (aa.x - bb.x < err) && (aa.y - bb.y < err) && (aa.z - bb.z < err); + return (Math.abs(aa.x - bb.x) < err) && (Math.abs(aa.y - bb.y) < err) && (Math.abs(aa.z - bb.z) < err); } @Override @@ -40,7 +40,7 @@ public class Point { return false; } Point p = (Point) o; - return Point.equals(this, p, (float) 0.05); + return Point.equals(this, p, (float) 2); } @Override diff --git a/target/classes/object_detection/ObjectDetector.class b/target/classes/object_detection/ObjectDetector.class index 24629bf2dab10220a81351c5c3bc78fd41947d4a..8d453240c05f8f3297412c07d90bb3e9a23d91f3 100644 Binary files a/target/classes/object_detection/ObjectDetector.class and b/target/classes/object_detection/ObjectDetector.class differ diff --git a/target/classes/object_detection/types/ObjectSet.class b/target/classes/object_detection/types/ObjectSet.class index 7bd7a712f2cc5b4d5c2952ca6245711f65843f00..1a4a499f1a7cf6b98a659a25cd4ce2957ea7211b 100644 Binary files a/target/classes/object_detection/types/ObjectSet.class and b/target/classes/object_detection/types/ObjectSet.class differ diff --git a/target/classes/object_detection/types/Point.class b/target/classes/object_detection/types/Point.class index 38546151261ece1810059816a872c6aa68dc1381..e87a155236fa4ddaea6679413bf22f9bf261a2e8 100644 Binary files a/target/classes/object_detection/types/Point.class and b/target/classes/object_detection/types/Point.class differ