설인환뼈대 구조와 군집 분석을 이용한 사용자 정의 삼차원 인체 계측User-Defined Three-Dimensional Human Body Measurement Using Bone Structure and Cluster AnalysisIn Hwan SulAbstract: Recent advancements in deep learning technology have automated human body measurement, particularly the generation of skeletal information. Among various free technologies for generating skeletal information, this study investigated a method to easily obtain diverse human body measurement data using Adobe Mixamo. For the experimental verification, SizeKorea 6th Edition data for 20s women and men with low and high mesh resolutions were used. Landmarks and cross-sectional curves were found based on bilinear interpolation of bone endpoints. Moreover, the system was designed to allow users to define landmarks easily via simple Python-based scripts. Girth sizes and feature vertical positions showed a maximal 10.7% of errors compared to the SizeKorea manual measurement. The errors are mainly from the noise in the clustering process. However, the proposed method had an advantage in that it can be applied to shapes with arbitrary poses. Keywords: bone structure , cluster analysis , feature points , user defined , body measurement 1. 서 론인체 치수 측정은 평면재단법과 같은 의복 제작에 있어서 필수적인 과정으로서, 섬유 및 의류 분야에서는 과거로부터 많은 연구가 이루어졌다[1]. 대표적으로 Kim 등[2]은 인체 계측을 마틴 계측자 등을 사용해 인체를 직접 계측하는 직접계측과, 사진이나 3D 장비를 이용해 간접적으로 계측하는 간접계측으로 분류한 바 있다. 직접계측의 대표적인 사례로는 기술표준원의 SizeKorea 사업[3]을 들 수 있다. 이는 인체 표준 치수 정보뿐만 아니라 3차원 인체 형상 파일도 제공함으로써 의류 관련 연구자들에게 많은 도움이 되고 있다. 간접계측에 대해서는 Han 등[4]이 5차 SizeKorea 데이터를 기반으로 통계기법을 이용해 계측점을 자동 탐색하는 연구를 수행한 바 있고, 본 연구진도 과거 삼차원 스캔 데이터를 수직 방향으로 절단한 뒤 단면의 개수를 이용해 특징점과 인체 치수를 측정한 바 있다[5]. 이들 연구는 실용적인 결과를 가져다 주었지만, 구현에 있어서 일반인이 접근하기가 다소 어렵다는 단점이 있다. 한편 SW 공학 분야에서는 모션 인식, 모션 캡쳐 등의 자동화를 위해 인체 계측을 연구해 왔다. 과거 1980년대에는 고가의 모션 캡쳐 장비를 이용해 실연자의 동작을 측정하고, 이후 오토데스크(Autodesk)의 모션빌더(MotionBuilder)와 같은 전용 SW를 이용해 후처리를 한 다음 오토데스크의 마야(Maya) 등과 같은 렌더링 SW에서 최종 캐릭터에 모션을 인식하는 방식을 사용하였다[6]. 이로 인해 모션빌더의 자체 파일 포맷인 .fbx은 아직까지도 삼차원 파일 포맷 중에서 큰 비중을 차지하고 있기도 하다. 그러나 최근 딥러닝 기술의 발달로 인해 이들 분야에도 많은 변화가 생겼다. 3차원 데이터가 아닌 2차원 그림 파일로도 인체 관절 구조를 파악[7]할 수 있게 되었고, 이로 인해 고가의 전문적인 SW가 굳이 필요하지 않게 된 것이다. 인체 관절 구조 파악 또는 모션 파악을 위한 툴로는 로코코(Rokoko)와 같은 스마트폰 앱 형태를 비롯해서 딥러닝을 이용한 PC 기반 시스템 등 다양한 플랫폼들이 존재한다. 그 중 특히 Adobe사의 믹사모(Mixamo) 홈페이지는 일반인도 무료로 사용할 수 있으며, 인체 형상 데이터를 업로드하면 뼈대 정보를 자동으로 생성해 주는 기능을 갖추고 있다. 따라서 본 연구에서는 섬유의류 분야 종사자가 전문적인 지식이 없이도 파이썬 언어를 이용해 간단히 믹사모에서 얻은 뼈대 정보를 활용해 인체 계측을 쉽게 구현할 수 있는 시스템을 연구하였다. SizeKorea 6차 20대 남,여 메쉬 데이터를 대상으로 알고리즘을 적용하였으며, 실제 계측값과 비교하여 그 한계점을 분석하여 보았다. 2. 실 험2.1. 삼차원 인체 데이터SizeKorea 홈페이지(https://sizekorea.kr/)에서 20대 남, 여의 3차원 형상 데이터와 계측치 엑셀 파일을 다운로드하였다. 형상 데이터는 삼각형이 각각 87,206개, 10,678개였으나, 삼각형 개수에 의한 영향도 살펴보기 위해 MeshLab (버전 2025.07) SW에서 각각 4,300개짜리로 삼각형을 줄여 따로 저장하였다. Table 1은 네 가지 메쉬 데이터의 세부 정보를 나타내고 있다. Figure 1은 이들 메쉬를 파이썬의 polyscope 패지지로 렌더링한 것이다. Table 1. Mesh data information
2.2. 믹사모를 이용한 뼈대 정보 추출믹사모 홈페이지(https://www.mixamo.com/)에 Table 1의 메쉬 파일들을 업로드하고, Figure 2와 같이 턱, 팔꿈치, 손목, 가랑이, 무릎 등의 8개 기준점을 마우스로 클릭하여 지정하였다. 모션 데이터는 첫 페이지에 있는 예제들 중 Jumping Down을 선택하였다. 뼈대정보와 모션 정보가 들어있는 파일을 .fbx로 저장하여, Blender (버전 4.4)에서 .gltf 포맷으로 변환하였다. 이 포맷은 OpenGL의 협의체인 Khronos 그룹에서 2012년 3차원 파일 포맷의 표준으로 제안한 것[8]으로서, Figure 3과 같이 다양한 형태의 데이터를 다룰 수 있도록 그래프 형태의 헤더 정보를 가지고 있다. 이 중 mesh 데이터와 material, texture, sampler, image 등 텍스쳐에 관한 부분은 일반적인 3D 파일에서도 다루던 것이지만, 최근 디지털 트윈의 활성화[9]에 대응하기 위해 인체 뼈대 정보 및 모션에 대한 정보를 담을 수 있는 skin, animation 노드가 더 포함되어 있는 것이 특징이다. 특히 이진 파일 형태로 저장하면 파일 크기를 더 줄일 수 있으며, 이 경우는 확장자를 .GLB를 사용한다. 깃허브에 Khronos 그룹의 공식 파이썬 glTF 파이썬 패키지가 공개되어 있기는 하나, 뼈대 및 모션 부분의 구현이 빠져 있어서 본 연구에서는 highfestiva[10]의 소스코드를 개조해 파일 입출력을 구현하였다. Figure 4은 Table 1의 메쉬 파일에 대한 세부 내역을 그림으로 나타내고 있다. 뼈대구조는 Amature라는 노드 아래에 위치하고 있고, 꼭지점 및 삼각형 형상 정보는 model이라는 노드에 기록되어 있다. 참고로 실제 뼈 이름들에는 각각 mixamorig::라는 접두사가 붙어 있으나, Figure 4에는 편의상 접두사는 생략하고 간단히 기재하였다. Figure 4. Bone structure of the Adobe Mixamo® no-fingered data; (a) graph view and (b) 3D view at rest pose. 2.3. 통계 기법을 이용한 초기 분할치수 측정을 원활히 하기 위해 원본 인체 형상을 여러 개의 조각으로 분리하였다. 이전 연구에서 사용했던 통계 기법 중 k-means, k-medoids, 병합 군집(agglomerative clustering) 함수를 목표 군집 수를 6개로 하여 사용하였고, 뼈대 기반 쌍간 거리(pairwise-distance) 함수, 뼈대 기반 점-뼈대 거리(point-to-bone-distance) 기반 분할 함수는 Figure 4의 뼈대 노드 중 양 손(LeftArm, RightArm), 양 발목(LeftLeg, RightLeg), 등뼈1(Spine1), 머리끝(HeadTop_End)의 좌표값을 초기 무게중심으로 하여 입력하였다. 2.4. 신체 치수 계측둘레선과 특징점 정의: 신체 치수 계측을 위해 뼈대 정보를 기준으로 여러 둘레선과 특징점을 정의하였다. Figure 5는 허리 둘레선([TeX:] $$\mathrm{G}_{\text {waist }}$$)과 왼쪽 허리점([TeX:] $$\mathrm{F}_{\mathrm{L} \_ \text {waist }}$$)을 찾는 과정을 그림으로 나타낸 것이다. 둘레선은 기준이 되는 두 뼈대 점([TeX:] $$\mathrm{B}_0, \mathrm{~B}_1$$)에 대해 양선형 보간법(bilinear interpolation)으로 중간점을 찾고, 이 점과 뼈대의 방향 벡터([TeX:] $$\mathrm{V}_{\text {bone }}=\mathrm{B}_{1^{-}}\mathrm{B}_0$$)가 이루는 평면이 몸통 조각과 만나는 곡선을 뼈대선으로 정의하였다. 또한 특징점은 이 뼈대선 중에서 특정 방향에 놓은 것으로 정하였다. Figure 5의 경우 몸통 기준 왼쪽 방향([TeX:] $$\mathrm{V}_\text{left}$$)을 방향 벡터로 사용하여 왼쪽 허리점을 찾고 있다. Figure 5. Example of waist girth ( [TeX:] $$\mathrm{G}_{\text {waist }}$$) and left waist feature point ( [TeX:] $$\mathrm{F}_{\mathrm{L} \_ \text {waist }}$$) search using bilinear interpolation between bone points ( [TeX:] $$\mathrm{B}_0, \mathrm{~B}_1$$). Figure 5의 왼쪽 허리점과 같이 계측의 기준이 되는 피부 표면의 주요 기준점을 특징점(feature point)이라고 명명하였다. Table 2와 같이 SizeKorea의 여러 계측치 중 일부를 검증용으로 선택하였고, 이에 대응하는 본 알고리즘의 특징점을 정의하였다. Table 2. Feature points defined corresponding to the SizeKorea data
2.5. SW 및 HW하드웨어는 AMD Ryzen 9950X3D CPU와 NVIDIA 5070 Ti GPU가 장착된 PC를 이용하였다. 소프트웨어는 MS Windows (버전 11) 환경 하에서 Microsoft Visual Studio Code (버전 1. 103.1)에서 파이썬 기반으로 소스코드를 작성하되, 3D 렌더링과 Heat method 연산은 polyscope 패키지를, 군집 분석은 sklearn, scipy, trimesh 패키지를 이용하였다. 개발된 소스코드는 Microsoft의 Github (https://github.com/cfms-lab/Tomo_Shell2025)를 통해 공유하였다. 3. 결과 및 고찰3.1. 초기 인체 분할Figure 6은 겨드랑이 둘레선을 검색하는 사례이다. 인체를 사전 분할하지 않고 전신(whole body)에 대해 절단선을 찾을 경우 Figure 6a와 같이 여러 개의 선이 생길 수 있다. 이를 방지하기 위해 사전 군집분석을 통해 Figure 7과 같이 인체를 머리, 몸통, 팔, 다리 등 여섯 개의 조각으로 분할하였다. k-means(Figure 7a)는 특성 상 군집 결과가 양호하지 않았고, k-medoids(Figure 7b)와 병합군집 (Figure 7c)은 초기 무게중심을 좌우 대칭으로 입력하였음에도 불구하고 군집이 비대칭으로 얻어졌다. 또한 목둘레선, 겨드랑이 둘레선도 Figure 6b와 같이 메쉬 절단 경계면이 모호하여, 이 부분들에 대해서는 쌍간거리(Figure 7d)에서 얻은 토르소(torso) 부분을 이용해 Figure 6c와 같이 검색을 진행하였다. 마지막 점-뼈대 거리(Figure 7e)가 가장 양호한 분할 결과를 보여, 여기서는 여섯 가지 인체 조각을 모두 계측에 활용하였다. Figure 6. Results of armfit girth finding for different body parts; (a) whole body of the original F20/4k mesh, (b) bodice part of the bonebased point-to-bone distance, and (c) torso part of the bone-based pairwise clustering. Figure 7. Effect of different clustering statistical methods for F20/10k data; (a) k-means, (b) k-medoids, (c) agglomerative clustering, (d) pairwise clustering, and (f) point-to-bone distance. 계측 결과 얻어진 특징점의 경우 z 좌표를 높이값으로 사용하였고, 둘레선의 경우 선의 총 길이를 결과치로 이용하였다. Table 2의 길이 측정 항목들에 대해서는 Figure 8a와 같이 trimesh 패키지의 최단 경로 알고리즘을 이용할 경우 삼각형 메쉬의 선분을 따라 최적 경로를 찾는 한계가 있기 때문에, 타원으로 표시한 부위와 같이 검색된 경로가 매끄럽지 않은 오류가 발생하였다. 따라서 열 전달 현상을 모사하여 메쉬 표면 거리를 측정하는 heat method을 이용하여 Figure 8b와 같이 길이 측정을 실시하였고, 이를 통해 삼각형 메쉬 형상에 상관없이 최단 거리를 구할 수 있었다. Figure 9는 이 과정을 거쳐 F20/10k 데이터에 대해 둘레선(Figure 9a), 특징점(Figure 9b), 표면 길이(Figure 9c)와 전체 데이터(Figure 9d)를 도시한 것이다. 3.2. 인체 계측 결과와 정량적 분석Figure 10은 네 가지 입력 메쉬의 계측 결과를 가시적으로 나타낸 것이다. 메쉬 해상도가 낮은 Figure 10a의 경우는 특징점들이 정상적으로 검출되었으나, Figure 10b,d의 경우는 유두점이 잘못된 위치에서 검출되었고, Figure 10d의 경우 허벅지 둘레선 등이 아예 검출되지 못하였다. 이는 Figure 7의 점-뼈대 거리를 이용한 인체 조각에 일부 노이즈가 있었기 때문이다. 이들은 추가적으로 k-medoids 처리 등을 통해 제거할 수도 있으나, 함수별 장단점을 분석하기 위해 이번 연구에서는 후처리 없이 그대로 이용하였다. Figure 10. Measurement result for the four data; (a) F20/4k, (b) F20/ 10k, (c) M20/4k, and (d) M20/87k. Table 3은 여성 인체 데이터에 대해 계측치를 정량적으로 비교한 것이다. 특징점의 높이값의 경우 믹사모의 뼈대 정보에 별다른 가공을 하지 않았음에도 불구하고 3.3% 이하의 작은 오차를 보였다. 반면 둘레선의 경우 엉덩이 둘레값에서 최대 10.7%의 오차가 나타났다. 유두점의 경우 최대 곡률을 갖는 점을 이용해 검출한 데 반해, 엉덩이는 단순히 뼈대의 중점 위치를 기준으로 특징점을 찾았기 때문이다. 또 해상도가 높은 W20/10k 데이터의 경우 허벅지 오차가 9.7%로 W20/4k 데이터의 5.6%보다 더 크게 나타났다. 이는 Figure 7e의 점-뼈대 거리 계산법에 있어서 인접한 삼각형들 간에도 법선 벡터 방향에 따라 엉뚱한 뼈대 근처로 분류되었기 때문이며, 이는 향후 개선이 필요해 보인다. 체표 길이의 경우 최대 26.1%의 큰 오차를 보였는데, 이는 이들 계측치가 주로 뼈 촉진에 의해 검출되는 것이라는 차이점도 있고, heat method으로 계산한 기하학적 최단 경로가 실제 줄자를 이용한 경로와 다른 데서 발생하는 원인도 있을 것으로 보인다. Table 3. Size measurement results for the SizeKorea 6th female 20’s body (unit: cm)
Table 4는 마찬가지로 남성 인체 데이터에 대한 측정치를 나타낸 것이다. 전체적인 경향성은 Table 3과 유사하나, 유두점의 경우 가슴 부위의 곡률차이가 크지 않아 오차가 최대 15.1%로 나타났다. 특히 M20/87k의 경우 엉덩이 둘레선을 아예 찾지 못하였는데, 이는 앞에서 언급한 바와 같이 점-뼈대 거리 함수 적용으로 인한 노이즈로 인해 폐곡선을 찾지 못하였기 때문이다. M20/4k에도 노이즈가 발견되기는 하지만, 삼각형 개수가 적다보니 확률적으로 영향을 덜 미친 것으로 보인다. Table 4. Size measurement results for the SizeKorea 6th male 20’s data (unit: cm)
인체 측정에 대한 ISO 표준[11]에서는 어깨점, 뒷목점, 팔꿈치, 소매점 등 관절의 촉진(palpaltion)에 의해 치수를 정의하고 있다. 이에 반해 본 알고리즘은 인체 관절을 직접 촉진하지 못하는 간접계측법의 한계로 인해 계측값의 정확도가 다소 떨어지기는 하지만, 믹사모 등에서 얻은 뼈대 정보를 이용해 간편하게 특징점을 정의하고 파이썬 언어를 통해 치수를 계측할 수 있는 장점이 있다. 특히 뼈대 정보를 활용하는 경우 A-포즈와 같이 정적인 포즈뿐만 아니라 Figure 11과 같이 임의의 자세를 가진 인체 형상에 대해서도 제한적이지만 계측이 가능하다. Figure 11은 믹사모의 Jumping Down 동작 중 첫 프레임에 대해 동일한 계측을 실시한 것이다. 동작의 특성 상 겨드랑이 부분은 겹쳐져 있어 잘 검출되지 않았지만, 나머지 특징점과 둘레선은 어느정도 인체 형상에 맞게 검출된 것을 볼 수 있다. 특히 이를 이용하면 실제 모델이 없어도 삼차원 데이터상에서 동작에 따라 다른 체표 길이를 계측할 수 있는 장점이 있다. 마지막으로 Table 5는 파이썬 소스코드 실행시간을 나타낸다. 대부분의 연산이 잘 알려진 통계기법들만을 이용하고 있으므로 10여초 안에 연산이 가능하였다. 믹사모는 현재 무료이므로 일반인이 쉽게 접근할 수 있는 점이 장점이다. 다만 사용자가 원하는 모션을 업로드하거나 외부 플러그인을 이용해 실시간 모션 캡쳐하는 등의 기능은 아직 구현되어있지 않다. 4. 결 론본 연구에서는 섬유 및 의류분야의 종사자가 간단한 파이썬 스크립트를 이용해 인체 계측점을 쉽게 정의하고 계측치를 얻을 수 있는 시스템을 연구하였다. 뼈대 정보는 아도비의 믹사모 홈페이지에서 딥러닝을 통해 생성된 결과를 그대로 이용하였으며, 양선형 보간법을 이용해 뼈대 사이의 필요한 곳에 임시점을 형성한 후 이 점을 중심으로 인체 단면을 잘라 둘레선을 획득하였다. 여러 개의 둘레선이 생성되는 것을 방지하기 위해 통계학의 군집분석을 이용해 사전에 인체를 6개의 조각으로 분리하였다. 사이즈코리아 6차 20대 남녀 형상 데이터를 대상으로 계측한 결과, 별다른 가공을 가하지 않았음에도 불구하고 계측점의 높이값은 최대 10.7%, 둘레선은 최대 정상적으로 검출된 곳을 기준으로 할 때 11.8%의 오차를 보였다. 또한 A-자 포즈가 아닌 임의의 포즈에 대해서도 일부이지만 계측이 가능하였다. 그러나 유두점 등 곡률 기반으로 검출해야 하는 곳에서 오류가 있었고, 체표 길이와 같이 촉진이 필요한 부분에 있어서는 오차가 크게 나타났다. 특히 점-뼈대 거리 기반 군집 분석에 있어서 발생한 노이즈로 인해 둘레선 검출이 되지 않는 사례도 있었으며, 이는 향후 연구에서 개선해야 될 사항으로 생각된다. References
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||