픽셀에서 물리치료까지: MediaPipe와 React를 활용한 실시간 포즈 교정 시스템 구축

발행: (2026년 4월 22일 AM 09:12 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

아키텍처: 프레임에서 피드백까지

브라우저에서 “실시간”(30+ FPS) 성능을 달성하려면 지연 시간을 최소화하는 파이프라인이 필요합니다. WebAssembly (WASM) 를 사용하면 MediaPipe 가 비디오 프레임을 거의 네이티브 속도로 처리할 수 있습니다.

graph TD
    A[Webcam Stream] --> B[React Camera Component]
    B --> C[MediaPipe Pose Engine]
    C --> D{Keypoint Detection}
    D --> E[Angle Calculation Logic]
    E --> F[Visual Overlay / Canvas]
    E --> G[Speech Synthesis Feedback]
    G --> H[User: "Straighten your back!"]

사전 요구 사항

  • MediaPipe Pose – 고정밀 바디 트래킹.
  • React – UI 레이어.
  • WebAssembly – 브라우저 내에서 머신러닝 모델을 효율적으로 실행.

Step 1: 포즈 엔진 초기화

인체에 33개의 3D 랜드마크를 감지하는 MediaPipe Pose 리스너를 설정합니다.

import { Pose } from "@mediapipe/pose";
import * as cam from "@mediapipe/camera_utils";

const pose = new Pose({
  locateFile: (file) => `https://cdn.jsdelivr.net/npm/@mediapipe/pose/${file}`,
});

pose.setOptions({
  modelComplexity: 1,
  smoothLandmarks: true,
  minDetectionConfidence: 0.5,
  minTrackingConfidence: 0.5,
});

Step 2: 수학 – 관절 각도 계산

물리 치료에서는 관절 각도가 필요합니다. 스쿼트의 경우, 엉덩이‑무릎‑발목 사이의 각도를 계산합니다.

/**
 * Calculates the angle between three points (A, B, C)
 * B is the vertex (e.g., the knee)
 */
function calculateAngle(a, b, c) {
  const radians =
    Math.atan2(c.y - b.y, c.x - b.x) - Math.atan2(a.y - b.y, a.x - b.x);
  let angle = Math.abs((radians * 180.0) / Math.PI);
  if (angle > 180.0) angle = 360 - angle;
  return angle;
}

// Example usage in the MediaPipe results callback:
const kneeAngle = calculateAngle(
  results.poseLandmarks[24], // Hip
  results.poseLandmarks[26], // Knee
  results.poseLandmarks[28]  // Ankle
);

Step 3: 실시간 피드백 로직

각도 값을 행동 가능한 음성 피드백으로 변환합니다.

const provideFeedback = (angle) => {
  const synth = window.speechSynthesis;

  if (angle > 160) {
    // Standing up too early
    return "Lower your hips more.";
  } else if (angle < 90) {
    // Too deep for some patients
    const utter = new SpeechSynthesisUtterance(
      "Great depth, keep your back straight!"
    );
    synth.speak(utter);
  }
};

프로덕션으로 확장하기

주말에 만든 프로토타입은 좋은 시작이지만, 프로덕션 수준의 원격 물리치료 플랫폼에는 다음이 필요합니다:

  • 데이터 영속성 및 분석.
  • HIPAA‑준수 스토리지와 전송.
  • 소음이 많은 환경을 위한 고급 필터링.
  • 다중 인물 트래킹 또는 HL7/FHIR 표준과의 통합.

자세한 가이드는 wellally.tech/blog 의 글들을 참고하세요.

결론: 브라우저가 바로 운동 전문가

MediaPipe 의 스켈레톤 트래킹과 간단한 삼각함수를 결합하면, 브라우저에서 직접 인간 움직임을 “보고” “교정”하는 시스템을 만들 수 있습니다. 이는 최신 Vision AI 의 힘을 보여주며, 웹캠만 있으면 누구든지 전문 지식을 활용할 수 있게 합니다.

다음 단계는?

  • 상태 머신을 이용해 반복 횟수 카운터 추가.
  • Chart.js 대시보드를 통합해 무릎 가동성을 시간에 따라 추적.
  • 커뮤니티와 진행 상황을 공유!
0 조회
Back to Blog

관련 글

더 보기 »