fixed interpolation points

This commit is contained in:
Mautisim Munir 2022-11-08 13:55:43 +05:00
parent e1b867c420
commit 13874094f8
4 changed files with 16 additions and 8 deletions

View File

@ -82,7 +82,7 @@ public class MainActivity extends AppCompatActivity {
lindera = new Lindera(plugin);
List<String> cameras = lindera.getAvailableCameras();
// FRONT or BACK
lindera.setCamera("FRONT");
lindera.setCamera("BACK");
lindera.setCameraRotation(CameraRotation.AUTOMATIC);
lindera.fpsHelper.onFpsUpdate = new Consumer<Double>() {

View File

@ -194,7 +194,7 @@ public class Lindera {
}
private void landmarksToBodyJoints(ImmutableList<LandmarkProto.Landmark> 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);

View File

@ -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<LandmarkProto.Landmark> 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<LandmarkProto.Landmark> getAdditionalLandmarksByInterpolation(ImmutableList<LandmarkProto.Landmark> originalLandmarks) {
@ -155,13 +162,14 @@ public class PoseTrackingResult extends ImageSolutionResult {
List<LandmarkProto.Landmark> 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);

View File

@ -95,7 +95,7 @@ public class PoseTrackingResultGlRenderer implements ResultGlRenderer<PoseTracki
GLES20.glUniform1f(pointSizeHandle, KEYPOINT_SIZE);
ImmutableList<LandmarkProto.Landmark> originalLandmarks = result.multiPoseLandmarks();
List<LandmarkProto.Landmark> 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());