R&E 연구노트 ⑬ (2026) MediaPipe로 키 추정해 높이 맞추기
연구노트 시리즈. 2026년(2년 차) 초, 경기도과학전람회 출품작을 준비하며 시도한 초기 탐색이다. 최종 출품작에는 포함되지 않았지만 과정으로 남긴다.
화면 내용에서 화면 위치로
1년 차의 적응형 키오스크는 화면 내용(글자, 버튼, 음성)을 사용자에 맞췄다. 2년 차에는 한 걸음 더 나아가 화면의 물리적 위치도 맞추기로 했다. 키가 큰 사람, 작은 사람, 휠체어 사용자에게 같은 높이의 화면은 불편하다. 그래서 사용자의 키를 추정해 키오스크 높이를 조절하는 기능을 더했다.
문제는 카메라 영상만으로 실제 키를 어떻게 재느냐였다.
MediaPipe Pose
핵심 엔진은 구글의 MediaPipe Pose다. 영상 속 사람을 보면 즉각 33개의 주요 관절(랜드마크) 위치를 잡아낸다. 코, 어깨, 골반, 발목 등을 프레임마다 추적한다.
화면 좌표가 아니라 3D 월드 좌표
일반적인 자세 추정은 화면 좌표(픽셀)만 준다. 픽셀로는 실제 길이를 알 수 없다. 그래서 MediaPipe의 pose_world_landmarks를 사용했다. AI가 추정한 실제 미터 단위의 3D 좌표 (x, y, z)로, z는 카메라와의 거리(깊이)를 뜻한다.
3차원 거리 계산
화면에서의 높이 차(y값 차)만 쓰면 사람이 다가올 때 키가 커 보인다. 대신 (x, y, z) 좌표로 3차원 유클리드 거리를 구하면 공간상의 실제 길이를 얻는다.
distance = √( (x₂-x₁)² + (y₂-y₁)² + (z₂-z₁)² )
신체 구조 보정
MediaPipe가 머리에서 주로 잡는 지점은 코다. 하지만 실제 키는 정수리부터 재야 한다. 그래서 계산된 값에 한국인 평균 두상 크기, 즉 코에서 정수리까지의 비율(대략 10~15cm)을 오프셋 상수로 더해 최종 키를 산출했다.
원근법 보정
이 작업의 가장 큰 골칫거리는 원근법이었다. 화면에서 100픽셀이면 170cm처럼 픽셀 기준을 고정하면 사람이 다가올수록 픽셀이 늘어나 키가 커진다. 대신 AI가 내부적으로 재구성한 3D 모델의 상대적 미터 값을 사용하면, 사람이 가까워져 z값이 작아져도 실제 팔다리 길이는 그대로라는 점을 반영할 수 있다. 이미지상의 크기가 아니라 3D 공간에서 재구성한 신체의 크기를 재는 것이다.
이렇게 하면 사용자가 가까이 오든 멀리 서든 추정 키가 일정하게 유지된다. 같은 카메라 입력에서 출발하지만 무엇을 측정 대상으로 삼느냐를 바꾼 것만으로 정확도가 크게 달라졌다. 영상 인식에서 좌표계 선택이 얼마나 중요한지 배운 부분이다.