Loading FaceEngines/src/main/java/cz/fidentis/analyst/engines/face/FaceStateServices.java +0 −13 Original line number Diff line number Diff line Loading @@ -4,7 +4,6 @@ import cz.fidentis.analyst.data.face.HumanFace; import cz.fidentis.analyst.data.mesh.measurement.MeshDistances; import cz.fidentis.analyst.engines.AcaGeometryEngines; import cz.fidentis.analyst.engines.face.impl.FaceStateServicesImpl; import cz.fidentis.analyst.engines.sampling.PointSamplingConfig; /** * Services for managing a state (internal elements) of a single human face. Loading Loading @@ -65,18 +64,6 @@ public interface FaceStateServices { impl().updateBoundingBox(face, mode); } /** * Manages glyphs of the given human face. * * @param face Human face * @param mode Operation to be performed * @param method Sub-sampling method. Used only if new glyphs are computed. * @param maxSamples Maximum number of glyphs. Used only if new glyphs are computed. */ static void updateGlyphs(HumanFace face, Mode mode, PointSamplingConfig.Method method, int maxSamples) { impl().updateGlyphs(face, mode, method, maxSamples); } /** * Manages curvature values of the given human face. * Loading FaceEngines/src/main/java/cz/fidentis/analyst/engines/face/impl/FaceStateServicesImpl.java +1 −33 Original line number Diff line number Diff line Loading @@ -19,8 +19,6 @@ import cz.fidentis.analyst.engines.distance.MeshDistanceConfig; import cz.fidentis.analyst.engines.face.FaceDistanceServices; import cz.fidentis.analyst.engines.face.FaceFrontalDirectionServices; import cz.fidentis.analyst.engines.face.FaceStateServices; import cz.fidentis.analyst.engines.glyphs.GlyphServices; import cz.fidentis.analyst.engines.glyphs.GlyphsConfig; import cz.fidentis.analyst.engines.icp.IcpConfig; import cz.fidentis.analyst.engines.icp.IcpServices; import cz.fidentis.analyst.engines.point2surface.PointToSurfaceDistanceConfig; Loading @@ -40,12 +38,10 @@ import java.util.Collection; public class FaceStateServicesImpl implements FaceStateServices { private IcpServices icpServices; private GlyphServices glyphServices; @Autowired public FaceStateServicesImpl(IcpServices icpServices, GlyphServices glyphServices) { public FaceStateServicesImpl(IcpServices icpServices) { this.icpServices = icpServices; this.glyphServices = glyphServices; } /** Loading Loading @@ -145,34 +141,6 @@ public class FaceStateServicesImpl implements FaceStateServices { } } /** * Manages glyphs of the given human face. * * @param face Human face * @param mode Operation to be performed * @param method Sub-sampling method * @param maxSamples Maximum number of glyphs */ public void updateGlyphs(HumanFace face, Mode mode, PointSamplingConfig.Method method, int maxSamples) { var config = new GlyphsConfig(new PointSamplingConfig(method, maxSamples)); switch (mode) { case RECOMPUTE_IF_PRESENT -> { if (face.hasGlyphs()) { face.setGlyphs(glyphServices.calculateGlyphs(face.getMeshModel(), config)); } } case COMPUTE_IF_ABSENT -> { if (!face.hasGlyphs()) { face.setGlyphs(glyphServices.calculateGlyphs(face.getMeshModel(), config)); } } case COMPUTE_ALWAYS -> face.setGlyphs(glyphServices.calculateGlyphs(face.getMeshModel(), config)); case DELETE -> face.setGlyphs(null); default -> throw new IllegalStateException("Unexpected value: " + mode); } } /** * Manages curvature values of the given human face. * Loading GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/FaceFrontalDirectionStats.java +2 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ import cz.fidentis.analyst.engines.face.FaceFrontalDirectionServices; import cz.fidentis.analyst.engines.sampling.PointSamplingConfig; import cz.fidentis.analyst.engines.symmetry.SymmetryConfig; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.managers.enums.FaceStateUpdateMode; import cz.fidentis.analyst.managers.symmetry.SymmetryManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; Loading Loading @@ -408,7 +409,7 @@ public class FaceFrontalDirectionStats implements CommandLineRunner { new PointSamplingConfig(PointSamplingConfig.Method.UNIFORM_SPACE, 200), 1000 ); symmetryManager.estimate(face, symmetryConfig, SymmetryManager.Method.ROBUST_MESH, SymmetryManager.UpdateMode.COMPUTE_ALWAYS); symmetryManager.estimate(face, symmetryConfig, SymmetryManager.Method.ROBUST_MESH, FaceStateUpdateMode.COMPUTE_ALWAYS); } private static Point3d getPronasaleCorrect(HumanFace face) { Loading GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/SymmetryComputationStats.java +2 −1 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import cz.fidentis.analyst.engines.face.FaceStateServices; import cz.fidentis.analyst.engines.sampling.PointSamplingConfig; import cz.fidentis.analyst.engines.symmetry.SymmetryConfig; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.managers.enums.FaceStateUpdateMode; import cz.fidentis.analyst.managers.symmetry.SymmetryManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; Loading Loading @@ -177,7 +178,7 @@ public class SymmetryComputationStats implements CommandLineRunner { COMPUTATION_TIME_SW.start(); // Computation of symmetry plane symmetryManager.estimate(face, estimator0, SYMMETRY_METHOD, SymmetryManager.UpdateMode.COMPUTE_IF_ABSENT); symmetryManager.estimate(face, estimator0, SYMMETRY_METHOD, FaceStateUpdateMode.COMPUTE_IF_ABSENT); COMPUTATION_TIME_SW.stop(); // Computation of average plane Loading GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/SymmetryOfChildren.java +2 −1 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ import cz.fidentis.analyst.engines.icp.IcpServices; import cz.fidentis.analyst.engines.landmarks.LandmarkServices; import cz.fidentis.analyst.engines.sampling.PointSamplingConfig; import cz.fidentis.analyst.engines.symmetry.SymmetryConfig; import cz.fidentis.analyst.managers.enums.FaceStateUpdateMode; import cz.fidentis.analyst.managers.symmetry.SymmetryManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; Loading Loading @@ -158,7 +159,7 @@ public class SymmetryOfChildren implements CommandLineRunner { protected double computeSymmetry(HumanFace face, SymmetryConfig config, SymmetryManager.Method symmetryMethod) { Plane plane = null; if (config != null) { symmetryManager.estimate(face, config, symmetryMethod, SymmetryManager.UpdateMode.COMPUTE_ALWAYS); symmetryManager.estimate(face, config, symmetryMethod, FaceStateUpdateMode.COMPUTE_ALWAYS); plane = face.getSymmetryPlane(); } else { plane = LandmarkServices.computeSymmetryPlane(face.getLandmarks().getAllLandmarks().stream().filter(fp -> Loading Loading
FaceEngines/src/main/java/cz/fidentis/analyst/engines/face/FaceStateServices.java +0 −13 Original line number Diff line number Diff line Loading @@ -4,7 +4,6 @@ import cz.fidentis.analyst.data.face.HumanFace; import cz.fidentis.analyst.data.mesh.measurement.MeshDistances; import cz.fidentis.analyst.engines.AcaGeometryEngines; import cz.fidentis.analyst.engines.face.impl.FaceStateServicesImpl; import cz.fidentis.analyst.engines.sampling.PointSamplingConfig; /** * Services for managing a state (internal elements) of a single human face. Loading Loading @@ -65,18 +64,6 @@ public interface FaceStateServices { impl().updateBoundingBox(face, mode); } /** * Manages glyphs of the given human face. * * @param face Human face * @param mode Operation to be performed * @param method Sub-sampling method. Used only if new glyphs are computed. * @param maxSamples Maximum number of glyphs. Used only if new glyphs are computed. */ static void updateGlyphs(HumanFace face, Mode mode, PointSamplingConfig.Method method, int maxSamples) { impl().updateGlyphs(face, mode, method, maxSamples); } /** * Manages curvature values of the given human face. * Loading
FaceEngines/src/main/java/cz/fidentis/analyst/engines/face/impl/FaceStateServicesImpl.java +1 −33 Original line number Diff line number Diff line Loading @@ -19,8 +19,6 @@ import cz.fidentis.analyst.engines.distance.MeshDistanceConfig; import cz.fidentis.analyst.engines.face.FaceDistanceServices; import cz.fidentis.analyst.engines.face.FaceFrontalDirectionServices; import cz.fidentis.analyst.engines.face.FaceStateServices; import cz.fidentis.analyst.engines.glyphs.GlyphServices; import cz.fidentis.analyst.engines.glyphs.GlyphsConfig; import cz.fidentis.analyst.engines.icp.IcpConfig; import cz.fidentis.analyst.engines.icp.IcpServices; import cz.fidentis.analyst.engines.point2surface.PointToSurfaceDistanceConfig; Loading @@ -40,12 +38,10 @@ import java.util.Collection; public class FaceStateServicesImpl implements FaceStateServices { private IcpServices icpServices; private GlyphServices glyphServices; @Autowired public FaceStateServicesImpl(IcpServices icpServices, GlyphServices glyphServices) { public FaceStateServicesImpl(IcpServices icpServices) { this.icpServices = icpServices; this.glyphServices = glyphServices; } /** Loading Loading @@ -145,34 +141,6 @@ public class FaceStateServicesImpl implements FaceStateServices { } } /** * Manages glyphs of the given human face. * * @param face Human face * @param mode Operation to be performed * @param method Sub-sampling method * @param maxSamples Maximum number of glyphs */ public void updateGlyphs(HumanFace face, Mode mode, PointSamplingConfig.Method method, int maxSamples) { var config = new GlyphsConfig(new PointSamplingConfig(method, maxSamples)); switch (mode) { case RECOMPUTE_IF_PRESENT -> { if (face.hasGlyphs()) { face.setGlyphs(glyphServices.calculateGlyphs(face.getMeshModel(), config)); } } case COMPUTE_IF_ABSENT -> { if (!face.hasGlyphs()) { face.setGlyphs(glyphServices.calculateGlyphs(face.getMeshModel(), config)); } } case COMPUTE_ALWAYS -> face.setGlyphs(glyphServices.calculateGlyphs(face.getMeshModel(), config)); case DELETE -> face.setGlyphs(null); default -> throw new IllegalStateException("Unexpected value: " + mode); } } /** * Manages curvature values of the given human face. * Loading
GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/FaceFrontalDirectionStats.java +2 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ import cz.fidentis.analyst.engines.face.FaceFrontalDirectionServices; import cz.fidentis.analyst.engines.sampling.PointSamplingConfig; import cz.fidentis.analyst.engines.symmetry.SymmetryConfig; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.managers.enums.FaceStateUpdateMode; import cz.fidentis.analyst.managers.symmetry.SymmetryManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; Loading Loading @@ -408,7 +409,7 @@ public class FaceFrontalDirectionStats implements CommandLineRunner { new PointSamplingConfig(PointSamplingConfig.Method.UNIFORM_SPACE, 200), 1000 ); symmetryManager.estimate(face, symmetryConfig, SymmetryManager.Method.ROBUST_MESH, SymmetryManager.UpdateMode.COMPUTE_ALWAYS); symmetryManager.estimate(face, symmetryConfig, SymmetryManager.Method.ROBUST_MESH, FaceStateUpdateMode.COMPUTE_ALWAYS); } private static Point3d getPronasaleCorrect(HumanFace face) { Loading
GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/SymmetryComputationStats.java +2 −1 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import cz.fidentis.analyst.engines.face.FaceStateServices; import cz.fidentis.analyst.engines.sampling.PointSamplingConfig; import cz.fidentis.analyst.engines.symmetry.SymmetryConfig; import cz.fidentis.analyst.gui.task.batch.Stopwatch; import cz.fidentis.analyst.managers.enums.FaceStateUpdateMode; import cz.fidentis.analyst.managers.symmetry.SymmetryManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; Loading Loading @@ -177,7 +178,7 @@ public class SymmetryComputationStats implements CommandLineRunner { COMPUTATION_TIME_SW.start(); // Computation of symmetry plane symmetryManager.estimate(face, estimator0, SYMMETRY_METHOD, SymmetryManager.UpdateMode.COMPUTE_IF_ABSENT); symmetryManager.estimate(face, estimator0, SYMMETRY_METHOD, FaceStateUpdateMode.COMPUTE_IF_ABSENT); COMPUTATION_TIME_SW.stop(); // Computation of average plane Loading
GUI/src/main/java/cz/fidentis/analyst/gui/app/tools/SymmetryOfChildren.java +2 −1 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ import cz.fidentis.analyst.engines.icp.IcpServices; import cz.fidentis.analyst.engines.landmarks.LandmarkServices; import cz.fidentis.analyst.engines.sampling.PointSamplingConfig; import cz.fidentis.analyst.engines.symmetry.SymmetryConfig; import cz.fidentis.analyst.managers.enums.FaceStateUpdateMode; import cz.fidentis.analyst.managers.symmetry.SymmetryManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; Loading Loading @@ -158,7 +159,7 @@ public class SymmetryOfChildren implements CommandLineRunner { protected double computeSymmetry(HumanFace face, SymmetryConfig config, SymmetryManager.Method symmetryMethod) { Plane plane = null; if (config != null) { symmetryManager.estimate(face, config, symmetryMethod, SymmetryManager.UpdateMode.COMPUTE_ALWAYS); symmetryManager.estimate(face, config, symmetryMethod, FaceStateUpdateMode.COMPUTE_ALWAYS); plane = face.getSymmetryPlane(); } else { plane = LandmarkServices.computeSymmetryPlane(face.getLandmarks().getAllLandmarks().stream().filter(fp -> Loading