From 13874094f8d19508637a9864bf401d75b8dec074 Mon Sep 17 00:00:00 2001 From: Mautisim Munir Date: Tue, 8 Nov 2022 13:55:43 +0500 Subject: [PATCH] fixed interpolation points --- .../posetracking_lindera/MainActivity.java | 2 +- .../mediapipe/solutions/lindera/Lindera.java | 2 +- .../posetracking/PoseTrackingResult.java | 18 +++++++++++++----- .../PoseTrackingResultGlRenderer.java | 2 +- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/java/com/google/mediapipe/examples/posetracking_lindera/MainActivity.java b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/java/com/google/mediapipe/examples/posetracking_lindera/MainActivity.java index f4d55641d..cf183c471 100644 --- a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/java/com/google/mediapipe/examples/posetracking_lindera/MainActivity.java +++ b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/java/com/google/mediapipe/examples/posetracking_lindera/MainActivity.java @@ -82,7 +82,7 @@ public class MainActivity extends AppCompatActivity { lindera = new Lindera(plugin); List cameras = lindera.getAvailableCameras(); // FRONT or BACK - lindera.setCamera("FRONT"); + lindera.setCamera("BACK"); lindera.setCameraRotation(CameraRotation.AUTOMATIC); lindera.fpsHelper.onFpsUpdate = new Consumer() { diff --git a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-lindera/src/main/java/com/google/mediapipe/solutions/lindera/Lindera.java b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-lindera/src/main/java/com/google/mediapipe/solutions/lindera/Lindera.java index 3e861efec..2ceab016e 100644 --- a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-lindera/src/main/java/com/google/mediapipe/solutions/lindera/Lindera.java +++ b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-lindera/src/main/java/com/google/mediapipe/solutions/lindera/Lindera.java @@ -194,7 +194,7 @@ public class Lindera { } private void landmarksToBodyJoints(ImmutableList landmarks , BodyJoints bodyJoints){ - landmarkToXYZPointWithConfidence(landmarks.get(PoseTrackingResult.NOSE), bodyJoints.neckNose); + landmarkToXYZPointWithConfidence(landmarks.get(PoseTrackingResult.NECK), bodyJoints.neckNose); landmarkToXYZPointWithConfidence(landmarks.get(PoseTrackingResult.LEFT_EYE_INNER), bodyJoints.leftEyeInner); landmarkToXYZPointWithConfidence(landmarks.get(PoseTrackingResult.LEFT_EYE), bodyJoints.leftEye); diff --git a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-pose-api/src/main/java/com/google/mediapipe/solutions/posetracking/PoseTrackingResult.java b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-pose-api/src/main/java/com/google/mediapipe/solutions/posetracking/PoseTrackingResult.java index 7d22b0901..1e4569cd7 100644 --- a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-pose-api/src/main/java/com/google/mediapipe/solutions/posetracking/PoseTrackingResult.java +++ b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-pose-api/src/main/java/com/google/mediapipe/solutions/posetracking/PoseTrackingResult.java @@ -80,6 +80,7 @@ public class PoseTrackingResult extends ImageSolutionResult { public static final int SPINE = 34; public static final int THORAX = 35; public static final int HEAD_TOP = 36; + public static final int NECK = 37; PoseTrackingResult( @@ -148,6 +149,12 @@ public class PoseTrackingResult extends ImageSolutionResult { // 2 times the distance b/w nose and eyes return getJointBetweenPoints(midlower, midupper, 2.5f); } + LandmarkProto.Landmark getNeck(ImmutableList landmarks){ + LandmarkProto.Landmark midLips = getJointBetweenPoints(landmarks.get(LEFT_EAR), landmarks.get(RIGHT_EAR), 0.5f); + LandmarkProto.Landmark midShoulders= getJointBetweenPoints(landmarks.get(LEFT_SHOULDER),landmarks.get(RIGHT_SHOULDER),0.5f); + return getJointBetweenPoints(midShoulders,midLips,0.6f); + + } ImmutableList getAdditionalLandmarksByInterpolation(ImmutableList originalLandmarks) { @@ -155,13 +162,14 @@ public class PoseTrackingResult extends ImageSolutionResult { List landmarks = new ArrayList<>(originalLandmarks); // pelvis landmarks.add(getPelvis(originalLandmarks)); - // spine assuming it is 2/3rd of distance b/w shoulders and pelvis - landmarks.add(getSpinePoint(originalLandmarks, 2 / 3f)); - // thorax assuming it is b/w shoulders - landmarks.add(getJointBetweenPoints(landmarks.get(LEFT_SHOULDER),landmarks.get(RIGHT_SHOULDER),0.5f)); + // spine + landmarks.add(getSpinePoint(originalLandmarks, 0.45f)); + // thorax assuming it is slightly above shoulders + landmarks.add(getSpinePoint(originalLandmarks,-0.1f)); // head top landmarks.add(getHeadTop(originalLandmarks)); - + // neck + landmarks.add(getNeck(originalLandmarks)); return ImmutableList.copyOf(landmarks); diff --git a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-pose-api/src/main/java/com/google/mediapipe/solutions/posetracking/PoseTrackingResultGlRenderer.java b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-pose-api/src/main/java/com/google/mediapipe/solutions/posetracking/PoseTrackingResultGlRenderer.java index b85e21420..26a741d99 100644 --- a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-pose-api/src/main/java/com/google/mediapipe/solutions/posetracking/PoseTrackingResultGlRenderer.java +++ b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-pose-api/src/main/java/com/google/mediapipe/solutions/posetracking/PoseTrackingResultGlRenderer.java @@ -95,7 +95,7 @@ public class PoseTrackingResultGlRenderer implements ResultGlRenderer originalLandmarks = result.multiPoseLandmarks(); List landmarks = originalLandmarks.stream().filter((landmark -> { - return landmark.getVisibility() > 0.25 || landmark.getPresence()>0.25; + return landmark.getVisibility() > 0.35 || landmark.getPresence()>0.35; })).collect(Collectors.toList());