KR102258114B1 - 다중 사용자 추적 장치 및 방법 - Google Patents

다중 사용자 추적 장치 및 방법 Download PDF

Info

Publication number
KR102258114B1
KR102258114B1 KR1020190009499A KR20190009499A KR102258114B1 KR 102258114 B1 KR102258114 B1 KR 102258114B1 KR 1020190009499 A KR1020190009499 A KR 1020190009499A KR 20190009499 A KR20190009499 A KR 20190009499A KR 102258114 B1 KR102258114 B1 KR 102258114B1
Authority
KR
South Korea
Prior art keywords
joint
user
data
joint data
previous
Prior art date
Application number
KR1020190009499A
Other languages
English (en)
Other versions
KR20200092215A (ko
Inventor
백성민
김명규
김우석
김종성
서상우
홍성진
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020190009499A priority Critical patent/KR102258114B1/ko
Publication of KR20200092215A publication Critical patent/KR20200092215A/ko
Application granted granted Critical
Publication of KR102258114B1 publication Critical patent/KR102258114B1/ko

Links

Images

Classifications

    • G06K9/00892
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/70Multimodal biometrics, e.g. combining information from different biometric modalities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06K9/6267

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Multimedia (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Analysis (AREA)

Abstract

다중 사용자 추적 방법이 개시된다. 다중 사용자 추적 방법은, 각 센서로부터 상기 다중 사용자의 관절을 나타내는 3차원 관절 데이터(이하, 관절 데이터)와 상기 다중 사용자의 형상을 나타내는 3차원 깊이 데이터(이하, 깊이 데이터)를 수신하는 단계와, 상기 관절 데이터에 사용자 ID를 할당하여 상기 관절 데이터를 사용자 별로 분류하고, 상기 사용자 ID가 할당된 관절 데이터를 이용하여 상기 깊이 데이터를 사용자 별로 분류하여, 상기 사용자 ID, 상기 사용자 ID가 할당된 관절 데이터 및 상기 사용자 별로 분류된 깊이 데이터를 실시간으로 추적하는 단계를 포함한다.

Description

다중 사용자 추적 장치 및 방법{apparatus and method for tracking pose of multi-user}
본 발명은 센서를 이용하여 다중 사용자의 자세를 실시간으로 추적하는 기술에 관한 것이다.
최근 가상현실(Virtual Reality: VR) 기반 체험형 콘텐츠(an activity contents based on virtual reality)에 대한 관심이 높아지면서, 사용자 동작을 추적하는 기술에 대한 연구가 활발히 진행되고 있다.
종래의 사용자 자세 추적 방법은 센서가 사용자 동작을 실시간으로 감지하여 획득한 센서 데이터를 실시간으로 분석하여 사용자의 동작을 추적한다.
종래의 사용자 자세 추적 방법에서는 다음과 같은 문제점이 있다.
첫째, 종래의 사용자 자세 추적 방법은 사용자가 움직이는 동안, 다른 사용자 또는 다른 물체에 의해 사용자의 실체 일부가 가려지는 경우, 센서로부터 사용자의 움직임에 따른 센서 데이터를 획득할 수 없기 때문에, 사용자의 자세 추적이 불가능하다.
둘째, 종래의 사용자 자세 추적 방법은, 다수의 사용자 자세를 추적하는 경우, 각 사용자의 자세 추적 과정에서 생성된 중간 데이터(또는 결과 데이터)를 사용자에 따라 식별하는 과정이 없다. 이 경우, 어떤 사용자의 자세 추적 과정에서 생성된 중간 데이터(또는 결과 데이터)와 다른 사용자의 자세 추적 과정에서 생성된 중간 데이터(또는 결과 데이터)가 서로 섞이거나 바뀌는 경우가 발생할 수 있다. 이것은 다른 사용자의 자세 정보를 어떤 사용자의 자세 정보로 오인식할 수 있음을 의미한다. 따라서, 다수의 사용자 동작을 추적하는 경우, 사용자별 자세 추적 결과의 신뢰도가 낮다.
셋째, 사용자의 동작을 감지하기 위해, 사용자 전신에 IMU(Inertial Measurement Unit) 센서 등을 착용해야 하는 불편함이 있다.
[선행문헌]
출원인: 한국전자통신연구원
발명의 명칭: 3차원 사용자 자세 추정 방법 및 장치
출원번호: 10-2013-0145691
본 발명의 목적은 깊이(depth) 데이터를 제공하는 센서를 이용하여 다중 사용자의 관절 데이터를 추적하고, 동시에 관절 데이터와 매칭 관계에 있는 사용자 ID를 추적하는 다중 사용자 자세 추적 장치 및 방법을 제공하는 데 있다.
상술한 목적을 달성하기 위한 본 발명의 일면에 따른 다중 사용자 추적 방법은, 수신부에서, 각 센서로부터 상기 다중 사용자의 관절을 나타내는 3차원 관절 데이터(이하, 관절 데이터)와 상기 다중 사용자의 형상을 나타내는 3차원 깊이 데이터(이하, 깊이 데이터)를 수신하는 단계; 관절 데이터 분류부에서, 상기 관절 데이터를 사용자 별로 분류하는 단계; ID 추적부에서, 상기 사용자 별로 분류된 관절 데이터에 사용자 ID를 할당하는 단계; 관절 합성부에서, 동일한 사용자 ID가 할당된 관절 데이터를 합성하고, 상기 합성된 관절 데이터를 이용하여 각 사용자의 관절 위치를 추정하는 단계; 및 깊이 데이터 분류부에서, 상기 사용자 ID가 할당된 관절 데이터의 주성분(Principal Component)을 이용하여 상기 깊이 데이터를 사용자 별로 분류하는 단계;를 포함한다.
본 발명의 다른 일면에 따른 다중 사용자 추적 장치는, 수신부에서, 각 센서로부터 상기 다중 사용자의 관절을 나타내는 3차원 관절 데이터(이하, 관절 데이터)와 상기 다중 사용자의 형상을 나타내는 3차원 깊이 데이터(이하, 깊이 데이터)를 수신하는 통신 인터페이스; 및 상기 관절 데이터를 사용자 별로 분류하는 제1 프로세스, 상기 사용자 별로 분류된 관절 데이터에 사용자 ID를 할당하는 제2 프로세스, 동일한 사용자 ID가 할당된 관절 데이터를 합성하고, 상기 합성된 관절 데이터를 이용하여 각 사용자의 관절 위치를 추정하는 제3 프로세스 및 상기 사용자 ID가 할당된 관절 데이터의 주성분(Principal Component)을 이용하여 상기 깊이 데이터를 사용자 별로 분류하는 제4 프로세스를 처리하는 프로세서를 포함한다.
본 발명의 또 다른 일면에 따른 다중 사용자 추적 방법은, 통신 인터페이스에 의해, 각 센서로부터 상기 다중 사용자의 관절을 나타내는 3차원 관절 데이터(이하, 관절 데이터)와 상기 다중 사용자의 형상을 나타내는 3차원 깊이 데이터(이하, 깊이 데이터)를 수신하는 단계; 및 프로세서에 의해, 상기 관절 데이터에 사용자 ID를 할당하여 상기 관절 데이터를 사용자 별로 분류하고, 상기 사용자 ID가 할당된 관절 데이터를 이용하여 상기 깊이 데이터를 사용자 별로 분류하여, 상기 사용자 ID, 상기 사용자 ID가 할당된 관절 데이터 및 상기 사용자 별로 분류된 깊이 데이터를 실시간으로 추적하는 단계를 포함한다.
본 발명에 따르면, 센서를 이용하여 다중 사용자(2인 이상의 사용자들)의 관절 데이터 및 깊이 데이터(또는 깊이 포인트)를 추적하고, 동시에 다중 사용자의 관절 데이터에 할당된 사용자 ID를 실시간으로 추적함으로써, 사용자 별로 명확히 식별되는 연속적인 자세를 추적할 수 있다.
또한, 고가의 모션 캡쳐 장비 없이, 다중 사용자의 자세를 추적할 수 있다.
또한, 다중 사용자가 IMU(Inertial Measurement Unit) 센서 등을 착용해야 하는 불편함이 없이, 사용자 별로 명확히 식별되는 연속적인 자세를 추적할 수 있다. 따라서, 본 발명을 VR 기반 스포츠 게임, VR 기반 체험형 게임 등과 같은 VR 기반 체험형 콘텐츠를 제공하는 분야에 적용할 경우, 사용자들은 움직임이 자연스러운 상태에서 VR 기반 체험형 콘텐츠를 즐길 수 있다.
도 1은 본 발명의 실시 예에 따른 다중 사용자 자세 추적 장치의 구성을 도시한 블록도.
도 2는 본 발명의 실시 예에 따른 다중 센서의 배치 구조를 나타내는 도면.
도 3는 본 발명의 일 실시 예에 따른 관절 데이터와 깊이 데이터를 설명하기 위한 도면.
도 4는 본 발명의 일 실시 예에 따른 변환 행렬의 계산과정을 설명하기 위한 도면.
도 5는 본 발명의 일 실시 예에 따른 관절 데이터 분류부에서 수행되는 처리 과정을 설명하기 위한 흐름도.
도 6은 본 발명의 일 실시 예에 따른 ID 추적부에서 수행되는 사용자 ID 할당 과정을 설명하기 위한 흐름도.
도 7은 본 발명의 다른 실시 예에 따른 ID 추적부에서 수행되는 사용자 ID 할당 과정을 설명하기 위한 흐름도.
도 8은 본 발명의 일 실시 예에 따라 새로운 사용자가 스캐닝 공간 내로 진입하는 경우를 설명하기 위한 도면.
도 9는 본 발명의 일 실시 예에 따라 새로운 사용자가 스캐닝 공간 내로 진입하는 경우 상기 새로운 사용자의 관절을 나타내는 관절 데이터에 새로운 사용자 ID를 할당하는 과정을 설명하기 위한 도면.
도 10은 본 발명의 일 실시 예에 따른 관절 합성부에서 수행되는 관절 데이터의 합성 과정을 설명하기 위한 흐름도.
도 11은 본 발명의 일 실시 예에 따른 관절 데이터의 합성 과정을 도식적으로 나타내는 도면.
도 12는 본 발명의 일 실시 예에 따른 깊이 데이터 분류에서 수행되는 깊이 데이터의 분류 과정을 나타내는 흐름도.
도 13은 본 발명의 일 실시 예에 따른 2차원 평면에 투영된 관절 데이터를 설명하기 위한 도면.
도 14는 본 발명의 일 실시 예에 따른 관절 데이터 보정부에서 깊이 데이터를 이용하여 관절 데이터를 보정하는 과정을 나타내는 흐름도.
도 15는 본 발명의 일 실시 예에 따른 샘플링 과정을 설명하기 위한 도면.
도 16은 본 발명의 일 실시 예에 따른 무릎 관절 위치의 추정을 설명하기 위한 도면.
도 17은 본 발명의 일 실시 예에 따른 데이터 결합부에 의해 획득된 사용자 자세 데이터의 일 예를 설명하기 위한 도면.
도 18은 본 발명의 다중 사용자 추적 장치가 적용될 수 있는 컴퓨팅 장치의 블록도.
이하, 본 발명의 다양한 실시 예가 첨부된 도면과 연관되어 기재된다. 본 발명의 다양한 실시 예는 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는 바, 특정 실시 예들이 도면에 예시되고 관련된 상세한 설명이 기재되어 있다. 그러나, 이는 본 발명의 다양한 실시 예를 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 다양한 실시예의 사상 및 기술 범위에 포함되는 모든 변경 및/또는 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용되었다.
본 발명의 다양한 실시예에서 사용될 수 있는"포함한다" 또는 "포함할 수 있다" 등의 표현은 개시(disclosure)된 해당 기능, 동작 또는 구성요소 등의 존재를 가리키며, 추가적인 하나 이상의 기능, 동작 또는 구성요소 등을 제한하지 않는다. 또한, 본 발명의 다양한 실시예에서, "포함하다" 또는 "가지다" 등의 용어는 명세서에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 발명의 다양한 실시예에서 "또는" 등의 표현은 함께 나열된 단어들의 어떠한, 그리고 모든 조합을 포함한 다. 예를 들어, "A 또는 B"는, A를 포함할 수도, B를 포함할 수도, 또는 A 와 B 모두를 포함할 수도 있다.
본 발명의 다양한 실시예에서 사용된 "제 1," "제2", "첫째" 또는 "둘째," 등의 표현들은 다양한 실시예들의 다양한 구성요소들을 수식할 수 있지만, 해당 구성요소들을 한정하지 않는다. 예를 들어, 상기 표현들은 해당 구성요소들의 순서 및/또는 중요도 등을 한정하지 않는다. 상기 표현들은 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 수 있다. 예를 들어, 제1 사용자 기기와 제 2 사용자 기기는 모두 사용자 기기이며, 서로 다른 사용자 기기를 나타낸다. 예를 들어, 본 발명의 다양한 실시예의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 새로운 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성 요소와 상기 다른 구성요소 사이에 새로운 다른 구성요소가 존재하지 않는 것으로 이해될 수 있어야 할 것이다.
본 발명의 실시예에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명의 실시 예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
도 1은 본 발명의 일 실시 예에 따른 다중 사용자 추적 장치를 도시한 블록도이다.
도 1을 참조하면, 전체 시스템(300)은 인체 모델 추출 장치(100) 및 사용자 자세 추적 장치(200)를 포함한다.
인체 모델 추출 장치(100)는 유선 또는 무선 통신 기능을 갖는 컴퓨팅 장치일 수 있다. 인체 모델 추출 장치(100)는 다수의 사용자를 스캐닝하여 획득한 3차원 깊이 이미지로부터 3차원 인체 모델 데이터를 추출하고, 추출한 3차원 인체 모델 데이터를 유선 또는 무선 통신을 이용하여 사용자 자세 추적 장치(200)로 송신한다.
이를 위해, 인체 모델 데이터 추출 장치(100)는, 다중 센서(110), 데이터 추출부(120), 송신부(130)를 포함한다.
다중 센서(110)는, 다수의 사용자를 스캐닝하는 다수의 센서를 포함한다.
각 센서는 다수의 사용자를 스캐닝하여, 다수의 사용자의 3차원 깊이 데이터를 포함하는 깊이 이미지를 생성한다.
깊이 이미지를 생성하기 위해, 각 센서는, 예를 들면, RGB-Depth(RGB-D) 센서일 수 있다. RGB-D 센서는 키넥트(kinect) 센서로 불릴 수 있다. RGB-D 센서는 널리 알려진 센서로서, 이의 내부 구성 및 동작 방법에 대한 설명은 생략한다.
센서들의 개수나 배치 위치는 특별히 제한하지 않는다. 다만, 어떤 센서가 다른 사용자의 신체 부위에 의해 가려진 어떤 사용자의 신체 부위를 스캐닝하지 못할 때, 다른 센서가 어떤 사용자의 신체 부위를 스캐닝하도록 다수의 센서들이 균일한 간격으로 배치되는 것이 바람직하다. 예를 들면, 도 2에 도시된 바와 같이, 6개의 센서들(S1~S6)이 5명의 사용자들을 스캐닝하는 경우, 6개의 센서들(S1~S6)은 도 2에서 점선으로 표시된 정육각형의 꼭지점을 나타내는 위치에 배치된다.
데이터 추출부(120)는 각 센서로부터 입력된 3차원 깊이 이미지(이하, '깊이 이미지'라 함)로부터 3차원 인체 모델 데이터를 추출한다. 3차원 인체 모델 데이터는 도 3에 도시된 바와 같이, 사용자의 신체 형상을 깊이 포인트로 나타내는 3차원 깊이 데이터(이하, '깊이 데이터'라 함)와 사용자의 관절을 나타내는 3차원 관절 데이터(이하, '관절 데이터'라 함)를 포함한다.
도 3에 도시된 바와 같이, 깊이 데이터는 관절을 둘러싸는 다수의 깊이 포인트로 나타낼 수 있다. 이러한 깊이 데이터는 사용자 깊이 이미지로부터 추출될 수 있다. 사용자 깊이 이미지는 사용자와 배경을 포함하는 깊이 이미지에서 상기 배경을 포함하는 배경 이미지를 제거하여 획득할 수 있다.
배경 이미지는 각 센서가 사용자가 없는 공간을 스캐닝하여 사전에 획득한 이미지일 수 있다. 깊이 이미지에서 배경 이미지를 제거하는 방법으로, 배경 제거 알고리즘 또는 객체 추출 알고리즘으로 알려진 다양한 영상 처리 알고리즘이 이용될 수 있다. 이러한 영상 처리 알고리즘은 공지된 것이므로, 이에 대한 설명은 생략한다.
관절 데이터는 사용자를 나타내는 깊이 이미지(또는 사용자 깊이 데이터)로부터 획득할 수 있다. 예를 들면, 사전에 설정된 인체의 골격정보(skeleton information)를 기반으로 사용자 깊이 이미지로부터 관절로 연결된 신체 부위별 깊이 화소들의 3차원 좌표들을 획득하고, 획득한 3차원 좌표들을 기반으로 상기 관절 위치를 나타내는 관절 데이터를 획득할 수 있다. 사전에 설정된 인체의 골격정보(skeleton information)는, 예를 들면, 키넥트 SDK(Software Development Kit)로부터 획득할 수 있다.
관절 데이터는 인체를 구성하는 다수의 관절들의 3차원 위치값들과 관절과 관절을 연결하는 관절 벡터를 포함하는 데이터일 수 있다. 관절은 명칭에 따라, 머리(head) 관절, 목(neck) 관절, 어깨(shoulder) 관절, 팔꿈치(elbow) 관절, 어깨 중심(shoulder center) 관절, 손목(wrist) 관절, 손(hand) 관절, 척추 중간(spine mid) 관절, 척추 받침(spine base) 관절, 무릎(knee) 관절, 발목(Ankle) 관절 등을 포함할 수 있다.
도 3에 도시된 바와 같이, 깊이 데이터는 인체의 외곽 라인과 그 내부에 분포하는 깊이 포인트들로 나타낼 수 있으며, 관절 데이터는 깊이 포인트들이 분포하는 영역 내에 존재하는 관절을 나타낸다.
송신부(130)는 관절 데이터와 깊이 데이터를 포함하는 3차원 인체 모델 데이터를 유선 또는 무선 통신 방식에 따라 사용자 자세 추정 장치(200)로 송신한다. 송신부(130)는 통신 인터페이스 또는 네트워크 인터페이스일 수 있다. 이하에서는 깊이 데이터라는 용어가 '깊이 포인트'라는 용어로 대체될 수 있다. 깊이 포인트는 '깊이 포인트의 3차원 좌표'라는 용어로 대체될 수 있다. 따라서, 깊이 데이터, 깊이 포인트 및 깊이 포인트의 3차원 좌표는 특별히 언급하지 않는 한 동일한 용어로 간주한다.
사용자 자세 추적 장치(200)는 유선 또는 무선 통신 기능을 갖는 컴퓨팅 장치일 수 있다. 사용자 자세 추적 장치(200)는 인체 모델 추출 장치(100)로부터 수신된 3차원 인체 모델 데이터를 이용하여 다수의 사용자의 관절 데이터를 추적하고, 동시에 관절 데이터와 매칭 관계에 있는 사용자 ID를 추적하여, 사용자 별로 명확히 식별되는 연속적인 자세를 추적한다.
이를 위해, 사용자 자세 추적 장치(200)는, 수신부(210), 좌표계 변환부(220), 관절 데이터 분류부(230), ID 추척부(240), 관절 혼합부(250), 깊이 데이터 분류부(260), 관절 데이터 보정부(270), 데이터 결합부(280) 및 메모리(290)를 포함한다.
수신부(210)
수신부(210)는, 인체 모델 추출 장치(100)로부터, 깊이 데이터와 관절 데이터를 포함하는 3차원 인체 모델 데이터를 유선 또는 무선 통신을 이용하여 수신한다. 수신부(210)는, 예를 들면, 유선 또는 무선 통신을 지원하는 통신 인터페이스 또는 네트워크 인터페이스일 수 있다.
좌표계 변환부(220)
센서들은 각자의 센서 좌표계에서 표현되는 깊이 이미지들을 생성하기 때문에, 이러한 깊이 이미지들로부터 추출된 인체 모델 데이터들(관절 데이터 및 깊이 데이터)은 서로 일치하지 않는다. 따라서, 인체 모델 데이터들을 하나의 가상 좌표계에서 표현되는 데이터로 각각 변환할 필요가 있으며, 이러한 과정을 수행하는 구성이 좌표계 변환부(220)이다.
좌표계 변환부(220)는, 서로 다른 센서 좌표계에서 표현되는 인체 모델 데이터의 위치 좌표를 하나의 가상 좌표계에서 표현되는 위치 좌표로 변환한다. 이때, 가상 좌표계는 다수의 센서들 중에서 어느 하나의 센서 좌표계일 수 있다.
3차원 인체 모델 데이터들의 위치 좌표를 가상 좌표계에서 표현되는 위치 좌표로 변환하기 위해, 좌표계 변환부(220)는 각 센서에 대한 변환 행렬을 계산한다.
좌표계 변환부(220)는 상기 계산된 변환 행렬을 이용하여 인체 모델 데이터의 위치 좌표를 회전 및 이동시켜 가상 좌표계에서 표현되는 위치 좌표로 변환한다.
상기 변환 행렬을 계산하는 과정은 도 4를 참조하여 설명하기로 한다.
변환 행렬을 계산하기에 앞서, 먼저, 사용자가 캘리브레이션 도구(tool)를 준비한다. 캘리브레이션 도구는, 예를 들면, 얇고 긴 막대기와 긴 막대기의 끝부분에 큐브 형태의 물체가 형성된 것일 수 있다.
캘리브레션 도구가 준비되면, 사용자가 캘리브레이션 도구(tool)의 막대기 부분을 잡은 상태에서 스캐닝 공간을 움직인다.
이후, 센서들은 상기 큐브 형태의 물체(이하, '도구'라 한다.)에 대응하는 깊이 데이터를 매 프레임 단위로 생성한다.
이후, 데이터 추출부(120)가, 도 4에 도시된 바와 같이, 각 프레임에서 센서들(S1~Sn)로부터 획득한 도구를 나타내는 깊이 데이터로부터 계산되는 평균 위치를 계산하여 메모리(도시하지 않음)에 저장한다. 여기서, 평균 위치는 도구(큐빅 형태의 물체)를 나타내는 깊이 데이터를 구성하는 깊이 화소들의 위치값들의 평균을 의미한다.
프레임 1~N 동안 계산된 도구의 평균 위치는 일부 프레임에서 장애물에 의해 가려지는 원인으로 인해 획득하지 못할 수도 있기 때문에, 매 프레임에서 획득된 평균 위치에 대한 데이터(K1, K2, …, Kn)만이 변환 행렬을 계산하는데 이용된다.
이후, 포인트 매칭 알고리즘(42)에 따라, 획득된 평균 위치에 대한 데이터(K1, K2, …, Kn)에 대해 포인트 매칭을 수행하여, 각 센서의 센서 좌표계에서 표현되는 인체 모델 데이터를 하나의 가상 좌표계에서 표현 가능한 인체 모델 데이터로 변환하기 위한 변환 행렬(44)이 계산된다. 여기서, 포인트 매칭 알고리즘(42)은, 예를 들면, ICP(iterative closest points)일 수 있다.
관절 데이터 분류부 (230)
관절 데이터 분류부(230)는, 하나의 가상 좌표계에서 표현 가능하도록 변환된 관절 데이터를 사용자 별로 분류한다. 관절 데이터 분류부(230)에 대해서는 도 5를 참조하여 설명하기로 한다.
도 5는 본 발명의 일 실시 예에 따른 관절 데이터 분류부에서 관절 데이터를 분류하는 방법을 나타내는 흐름도이다.
도 5를 참조하면, 하나의 가상 좌표계에서 표현되도록 캘리브레이션된 다수의 사용자에 대한 관절 데이터가 좌표계 변환부(220)로부터 관절 데이터 분류부(230)로 순차적으로 입력된다.
단계 S510에서, 다수의 사용자에 대한 관절 데이터 중에서 제일 먼저 입력되는 제1 관절 데이터를 제1 관절 저장소에 저장하는 과정이 수행된다.
이어, 단계 S520에서, 상기 제1 관절 저장소에 저장된 제1 관절 데이터에 의해 나타나는 관절 위치값과 제1 관절 데이터에 이어 두 번째로 입력되는 제2 관절 데이터에 의해 나타나는 관절 위치값 사이의 거리값을 계산하는 과정이 수행된다. 여기서, 제2 관절 데이터는 상기 제1 관절 데이터를 제공하는 센서와 다른 센서로부터 획득한 관절 데이터일 수 있으며, 상기 제1 관절 데이터에 대응하는 사용자와 동일한 사용자 또는 다른 사용자의 관절 데이터일 수 있다.
이어, 단계 S530에서, 상기 거리값과 기준값(δ)을 비교하는 과정이 수행된다. 이러한 비교 과정을 통해, 제1 센서에 의해 획득된 상기 제1 관절 데이터와 제2 센서에 의해 획득된 상기 제2 관절 데이터가 동일한 사용자의 관절을 나타내는 것인지 서로 다른 사용자의 관절을 나타내는 것인지를 판단할 수 있다. 여기서, 기준값(δ)은 상기 제1 관절 데이터와 상기 제2 관절 데이터 간의 유사도를 판단하기 위해 사전에 설정한 값으로써, 설계에 따라 다양하게 변경될 수 있다.
이어, 단계 S540에서, 상기 거리값이 상기 기준값(δ) 이하인 경우, 상기 제2 관절 데이터를 제1 관절 데이터가 저장된 상기 제1 관절 저장소에 저장하여, 상기 제1 관절 데이터와 상기 제2 관절 데이터를 동일한 사용자의 관절을 나타내는 관절 데이터로 분류한다.
반대로, 단계 S550에서, 상기 거리값이 기준값(δ)을 초과한 경우, 상기 제2 관절 데이터를 제2 관절 저장소에 저장하여, 상기 제1 관절 데이터와 상기 제2 관절 데이터가 서로 다른 사용자의 관절을 나타내는 관절 데이터로 분류한다.
이어, 단계 S560에서, 나머지 관절 데이터에 대해 단계 S510 내지 S540가 반복 수행된다. 예를 들면, 제1 관절 데이터가 제1 관절 저장소에 저장되고, 제2 관절 데이터가 제2 관절 저장소에 저장된 경우를 가정할 때, 제2 관절 데이터에 이어 다음으로 입력되는 제3 관절 데이터를 전술한 방법(S520 및 S530)에 따라 제1 및 제2 관절 데이터와 각각 비교한 후, 제3 관절 데이터가 제1 관절 데이터와 유사하면, 제1 관절 저장소에 저장하고, 제2 관절 데이터와 유사하면, 제2 관절 저장소에 저장한다. 이때, 제3 관절 데이터가 제1 및 제2 관절 데이터 모두와 유사하지 않으면, 제3 관절 데이터를 제3 관절 저장소에 저장한다. 여기서, 제1 내지 제3 관절 저장소는 메모리(290) 내에서 서로 논리적으로 구분되는 저장 영역들로 정의할 수 있다.
이와 같이, 순차적으로 입력되는 나머지 모든 관절 데이터에 대해 단계 S510 내지 S540의 반복 수행이 완료되면, 각 관절 저장소에 사용자 별로 분류된 관절 데이터가 저장된다.
ID 추척부 (240)
ID 추적부(240)는, 관절 데이터 분류부(230)에 의해, 사용자 별로 분류된 관절 데이터에 사용자 ID를 할당, 삭제 및 업데이트하여, 관절 데이터에 할당된 사용자 ID를 실시간으로 추적한다.
ID 추적부(240)의 처리 과정은 도 6을 참조하여 설명하기로 한다.
도 6은 본 발명의 일 실시 예에 따른 ID 추적부의 처리 과정을 설명하기 위한 순서도이다.
도 6을 참조하면, 단계 S610에서, 이전 프레임에서 관절 데이터 분류부(230)에 의해 분류된 관절 데이터(이하, 이전 관절 데이터)에 사용자 ID를 할당하여 ID 저장소에 저장하는 과정이 수행된다. 예를 들면, 관절 데이터 분류부(230)가, 이전 프레임에서, 제1 센서(S1)에 의해 생성된 이전 관절 데이터(J1n -1), 제2 센서(S2)에 의해 생성된 이전 관절 데이터(J2n -1) 및 제3 센서(S3)에 의해 생성된 이전 관절 데이터(J3n-1)를 동일한 사용자의 관절을 나타내는 관절 데이터로 분류하여, 이전 관절 데이터(J1n-1, J2n -1, J3n - 1)를 제1 관절 저장소에 저장하는 경우, ID 추적부(240)가, 이전 프레임에서, 제1 관절 저장소에 저장된 이전 관절 데이터(J1n -1, J2n -1, J3n - 1)에 ID0을 할당하고, ID0가 할당된 이전 관절 데이터(J1n -1, J2n -1, J3n - 1)를 ID 저장소에 저장한다.
이어, 단계 S620에서, 현재 프레임에서 관절 데이터 분류부(230)에 의해 분류된 현재 관절 데이터와 이전 프레임에서 상기 ID 저장소에 저장된 이전 관절 데이터 간의 매칭 관계를 계산하는 과정이 수행된다. 여기서, 매칭 관계를 계산하는 방법으로, 예를 들면, 그래프 이론에 따른 최소 가중치 이분 매칭(Minimum-Cost Bipartite Matching) 기법이 이용될 수 있다.
이어, 단계 S630에서, 상기 매칭 관계를 계산한 결과에 따라, 상기 이전 관절 데이터와 상기 현재 관절 데이터가 매칭되면, 상기 이전 관절 데이터에 할당된 사용자 ID와 동일한 사용자 ID를 상기 현재 관절 데이터에 할당하는 과정이 수행된다. 단계 S630을 하나의 센서(S1)에 의해 생성된 관절 데이터를 기준으로 설명하면, 제1 센서(S1)에 의해 생성된 이전 관절 데이터(J1n - 1)와 제1 센서(S1)에 의해 생성된 현재 관절 데이터(J1n)가 매칭되면, ID 추적부(240)가 이전 관절 데이터(J1n - 1)에 할당된 ID0를 현재 관절 데이터(J1n)에 할당한다.
이어, 단계 S640에서, 상기 이전 관절 데이터에 할당된 사용자 ID와 동일한 사용자 ID가 할당된 상기 현재 관절 데이터를 상기 이전 관절 데이터를 업데이트한 관절 데이터로서 상기 ID 저장소에 저장하는 과정이 수행된다. 즉, 이전 관절 데이터(J1n-1)에 할당된 ID0와 동일한 ID0가 할당된 현재 관절 데이터(J1n)를, 이전 관절 데이터(J1n-1)를 업데이트한 관절 데이터로서, 상기 ID 저장소에 저장한다.
한편, ID 저장소는 메모리(290) 내에서 관절 저장소와 논리적으로 구분되는 저장 영역일 수 있다.
도 7은 본 발명의 다른 실시 예에 따른 ID 추적부의 처리 과정을 설명하기 위한 순서도이고, 도 8은 본 발명의 일 실시 예에 따른 새로운 사용자가 스캐닝 공간 내로 진입하는 경우를 설명하기 위한 도면이고, 도 9는 본 발명의 일 실시 예에 따른 새로운 사용자가 스캐닝 공간 내로 진입하는 경우 상기 새로운 사용자의 관절을 나타내는 관절 데이터에 새로운 사용자 ID를 할당하는 과정을 설명하기 위한 도면이다.
본 발명의 다른 실시 예에 따른 ID 추적부의 처리 과정은 현재 프레임에서 추적해야 하는 사용자의 수(KUSER)가 이전 프레임에서 생성된(또는 할당된) 서로 다른 사용자 ID의 개수(KID) 보다 많은 경우에서 관절 데이터에 사용자 ID를 할당하는 과정을 설명하는 점에서 현재 프레임에서의 추적해야 하는 사용자의 수(KUSER)와 이전 프레임에서 생성된(또는 할당된) 서로 다른 사용자 ID의 수(KID)가 동일한 경우에서 관절 데이터에 사용자 ID를 할당하는 과정을 설명하는 전술한 실시 예에 따른 ID 추적부의 처리 과정과 차이가 있다.
현재 프레임에서 추적해야 하는 사용자의 수(KUSER)가 이전 프레임에서 생성된(또는 할당된) 서로 다른 사용자 ID의 개수(KID)보다 많은 경우의 일 예가 도 8에 도시된다. 도 8에 도시된 바와 같이, 2개의 센서들(S1, S2)이 이전 프레임에서 2명의 사용자 자세를 추적하는 상황을 가정할 때, ID 추적부(240)는 이전 프레임에서 제1 센서(S1)에 의해 획득된 사용자 A의 관절을 나타내는 관절 데이터(JA _S1)와 제2 센서(S2)에 의해 획득된 사용자 A의 관절을 나타내는 관절 데이터(JA _S2)에 ID0를 할당하고, 제1 센서(S1)에 의해 획득된 사용자 B의 관절을 나타내는 관절 데이터(JB_S1)와 제2 센서(S2)에 의해 획득된 사용자 B의 관절을 나타내는 관절 데이터(JB_S2)에 ID1을 할당할 것이다. 이때, 현재 프레임에서 사용자 C가 제1 및 제2 센서(S1, S2)가 사용자를 스캐닝하는 공간(90)(이하, '스캐닝 공간'이라 함)으로 진입하면, 제1 및 제2 센서(S1, S2)에 의해 획득되는 사용자 C의 관절을 나타내는 관절 데이터에 새로운 사용자 ID를 할당할 필요가 있다. 반대로, 다음 프레임에서 사용자 C가 스캐닝 공간(90)을 이탈하는 경우, 사용자 C에 대한 관절 데이터에 할당된 사용자 ID를 삭제할 필요가 있다.
이하, 새로운 사용자가 스캐닝 공간 내로 진입하거나 어떤 사용자가 스캐닝 공간 밖으로 이탈하는 경우에서 사용자 ID를 할당 및 삭제하는 방법을 도 7을 참조하여 상세히 기술한다.
도 7을 참조하면, 먼저, 단계 S710에서, 이전 프레임에서 이전 관절 데이터에 할당된 서로 다른 사용자 ID의 수(KID)와 현재 프레임에서 추적해야 하는 사용자의 수(KUser)를 비교하는 과정이 수행된다. 여기서, 현재 프레임에서 추적해야 하는 사용자의 수(KUser)는, 관절 데이터 분류부(230)가 현재 프레임에서 사용자 별로 관절 데이터를 분류하기 위해, 관절 데이터 분류부(230)의 저장 명령에 따라 메모리(290)가 내부에 할당한 저장 공간(관절 저장소)의 개수 또는 사용자 별로 관절 데이터를 분류한 분류 개수로부터 획득될 수 있다.
이어, 단계 S720에서, KUSER > KID인 경우, 상기 다수의 센서의 스캐닝 공간(도 8의 90) 내로 새로운 사용자가 진입한 것으로 판단하여, ID 추적부(240)가 관절 데이터 분류부(230)에 의해 상기 새로운 사용자에 따라 추가로 분류된 관절 데이터에 새로운 사용자 ID를 할당하는 과정이 수행된다. 이후, 새로운 사용자 ID와 새로운 사용자에 대한 관절 데이터를 ID 저장소에 저장하는 과정이 수행된다. 새로운 사용자에 대한 관절 데이터에 새로운 사용자 ID가 할당되는 과정이 도 9에 도시된다. 도 9에서 참조 기호 JC _S1와 JC _S2는 현재 프레임에서 제1 센서(S1)가 스캐닝한 새로운 사용자(사용자 C)의 관절을 나타내는 관절 데이터 및 제2 센서(S2)가 스캐닝한 새로운 사용자(사용자 C)의 관절을 나타내는 관절 데이터를 각각 나타내며, 참조 기호 ID2는 JC _S1와 JC _S2에 할당된 새로운 사용자 ID이다.
반대로, KUser < KID인 경우, 단계 S730에서, 현재 프레임에서 상기 다수의 센서의 스캐닝 공간(도 8의 90) 밖으로 기존 사용자가 이탈한 것으로 판단하여, 이전 프레임에서 생성된 상기 기존 사용자에 대한 관절 데이터와 상기 기존 사용자의 관절을 나타내는 관절 데이터에 할당된 사용자 ID를 상기 ID 저장소에서 삭제하는 과정이 수행된다.
이상 도 7 내지 8를 참조하여 설명한 바와 같이, ID 추적부(240)는 관절 데이터 분류부(230)에 의해 사용자 별로 분류된 관절 데이터에 사용자 ID를 실시간으로 할당, 업데이트 및 삭제함으로써, 매프레임 단위로 각 사용자에 대한 관절 데이터에 할당된 사용자 ID의 추적이 가능하다. 동시에 ID 추적부(240)에 의해, 관절 데이터에 할당된 사용자 ID를 실시간으로 추적함으로써, 사용자 별로 명확히 식별되는 연속적인 자세를 추적할 수 있다.
관절 합성부 (250)
관절 합성부(250)는 ID 추적부(240)에 의해 동일한 사용자 ID로 분류된 관절 데이터를 합성하고, 상기 합성한 관절 데이터를 이용하여 각 사용자의 관절 위치를 실시간으로 추정한다.
도 10은 본 발명의 일 실시 예에 따른 관절 합성부에서 수행되는 관절 데이터의 합성 과정을 설명하기 위한 흐름도이다.
도 10을 참조하면, 단계 S1010에서, 동일한 사용자 ID가 할당된 관절 데이터가 k(2이상의 자연수)개의 관절 데이터를 포함하는 경우, k개의 관절 데이터 각각에 의해 생성되는 이전 관절 벡터와 현재 관절 벡터를 이용하여, 상기 k개의 관절 데이터에 대응하는 k개의 가중치들을 계산하는 과정이 수행된다. 여기서, 관절 벡터는 관절 벡터의 크기값과 관절 벡터 방향값을 포함한다. 관절 벡터 크기값은 관절과 관절 사이의 거리값이고, 관절 벡터의 방향값은 관절과 관절을 연결하는 벡터의 방향값일 수 있다. 이전 관절 벡터는 이전 프레임에서 획득된 관절 데이터로부터 생성되는 벡터이고, 현재 관절 벡터는 현재 프레임에서 획득된 관절 데이터로부터 생성되는 벡터로 정의한다. 가중치들 각각은 아래의 수학식 1에 의해 계산될 수 있다.
Figure 112019008904139-pat00001
여기서,
Figure 112019008904139-pat00002
는 가중치이고,
Figure 112019008904139-pat00003
는 이전 프레임에서 획득한 i 번째 관절 데이터로부터 생성된 이전 관절 벡터이고,
Figure 112019008904139-pat00004
는 현재 프레임에서 획득한 i 번째 관절 데이터로부터 생성된 현재 관절 벡터이고,
Figure 112019008904139-pat00005
는 상기
Figure 112019008904139-pat00006
와 상기
Figure 112019008904139-pat00007
의 벡터 내적을 나타내는 연산기호이다.
이어, 단계 S1020에서, 전단계에 의해 계산된 상기 k개의 가중치들의 가중치 평균을 계산하는 과정이 수행된다. 가중치 평균은 아래의 수학식 2에 의해 계산될 수 있다.
Figure 112019008904139-pat00008
여기서,
Figure 112019008904139-pat00009
은 가중치 평균이고, k 는 동일한 사용자 ID가 할당된 관절 데이터의 개수이다.
이어, 단계 S1030에서, 상기 수학식 1에 의해 계산된 k개의 가중치들 중에서 상기 수학식 2에 의해 계산된 가중치 평균보다 크거나 같은 가중치들(
Figure 112019008904139-pat00010
)을 선정하는 과정이 수행된다.
이어, 단계 S1040에서, 전단계 S1030의 수행에 따라 선정된 가중치들에 각각 대응하는 관절 데이터를 합성하는 과정이 수행된다. 이러한 합성과정은 아래의 수학식 3에 의해 계산될 수 있다.
Figure 112019008904139-pat00011
Figure 112019008904139-pat00012
여기서,
Figure 112019008904139-pat00013
는 각 사용자의 최적의 관절 위치를 나타내는 관절 벡터이고,
Figure 112019008904139-pat00014
는 현재 프레임에서 획득한 i 번째 관절 데이터의 관절 벡터이다.
수학식 3에 따르면,
Figure 112019008904139-pat00015
에 의해, 가중치 평균(
Figure 112019008904139-pat00016
) 이상인 가중치(
Figure 112019008904139-pat00017
)에 대응하는 현재 관절 벡터들에 대해서만 합성이 진행됨을 알 수 있다.
각 센서로부터 획득되는 관절 데이터는 바라보는 방향에 따라 좌/우가 바뀔 수 있고, 가려짐 등을 이유로, 관절 위치를 정확하게 추적하지 못하는 경우가 있을 수 있다. 또한, 관절 데이터에 포함된 노이즈로 인해, 관절 위치를 정확하게 추적하지 못하는 경우가 있을 수 있다. 그러므로 단순히 관절 위치에 대한 평균 값을 계산하는 방법에는 문제가 있다.
이에 본 발명의 일 실시 예에서는, 최적의 관절 위치를 추정하기 위해, 입력된 관절 데이터로부터 최적의 관절 위치를 추정하기 위해, 상기 수학식 1에 의해, 이전 관절 벡터와의 각도 변화량이 최소인 현재 관절 벡터에 대해 높은 가중치(
Figure 112019008904139-pat00018
)를 설정하여, 수학식 3의
Figure 112019008904139-pat00019
에 따라, 가중치 평균(
Figure 112019008904139-pat00020
) 이상인 가중치(
Figure 112019008904139-pat00021
)가 설정된 현재 관절 벡터들(신뢰할 수 있는 관절 데이터들)만을 수학식 3의
Figure 112019008904139-pat00022
에 따라 합성함으로써, 각 사용자의 관절 위치가 정확하게 추정될 수 있다. 즉, 가중치 평균(
Figure 112019008904139-pat00023
) 미만의 가중치(
Figure 112019008904139-pat00024
)와 관련된 현재 관절 벡터들은 신뢰할 수 없는 관절 데이터들로 판단하여 수학식 3의 계산과정에 따라 수행되는 관절 합성 과정에서 제외된다.
이하, 수학식 1 내지 3의 이해를 돕기 위해, 도 11을 참조하여 관절 합성 과정의 일 예를 설명하기로 한다.
도 11을 참조하여 설명하기에 앞서, ID 저장소에 ID0가 할당된 3개의 관절 데이터가 저장되어 있는 것으로 가정한다. 이때, 현재 프레임에서 ID0가 할당된 3개의 관절 데이터에 의해 생성되는 3개의 현재 관절 벡터를 각각 J 1 v cur , J 2 v cur , J 3 v cur 라 표기하고, 이전 프레임에서 ID0가 할당된 3개의 관절 데이터에 의해 생성되는 3개의 이전 관절 벡터를 각각 J 1 v prev , J 2 v prev , J 3 v prev 라 가정한다.
도 11을 참조하면, 관절 합성부(250)는 전술한 수학식 1에 따른 가중치 연산을 수행하는 제1 연산 블록(1110), 전술한 수학식 2에 따른 가중치 평균 연산을 수행하는 제2 연산 블록(1120), 가중치 평균과 가중치 간의 비교 연산을 수행하는 제3 연산 블록(1130) 및 수학식 3에 따른 관절 벡터의 합성 연산을 수행하는 제4 연산 블록(1140)을 포함하도록 구성될 수 있다.
제1 연산 블록(1110)은 이전 프레임에서 이전 관절 위치를 나타내는 제1 관절 데이터에 의해 생성되는 이전 관절 벡터(J 1 v prev )와 현재 프레임에서 상기 현재 관절 위치를 나타내는 제1 관절 데이터에 의해 생성되는 현재 관절 벡터(J 1 v cur )를 이용하여 제1 가중치(w 1 )를 계산하고, 이전 프레임에서 이전 관절 위치를 나타내는 상기 제2 관절 데이터에 의해 생성되는 이전 관절 벡터(J 2 v prev )와 현재 프레임에서 현재 관절 위치를 나타내는 제2 관절 데이터에 의해 생성되는 현재 관절 벡터(J 2 v cur )를 이용하여 제2 가중치(w 2 )를 계산하고, 이전 프레임에서 이전 관절 위치를 나타내는 제3 관절 데이터에 의해 생성되는 이전 관절 벡터(J 3 v prev )와 현재 프레임에서 현재 관절 위치를 나타내는 상기 제3 관절 데이터에 의해 생성되는 현재 관절 벡터(J 3 v cur )를 이용하여 제3 가중치(w 3 )를 계산한다.
제2 연산 블록(1120)은 제1 연산 블록(1110)에 의해 계산된 상기 제1 내지 제3 가중치(w 1 , w 2 , w 3 )를 이용하여, 가중치 평균(w avg )을 계산한다.
제3 연산 블록(1130)은 제1 연산 블록(1110)에 의해 계산된 상기 제1 내지 제3 가중치(w 1 , w 2 , w 3 )와 제2 연산 블록(1120)에 의해 계산된 상기 가중치 평균(w avg )을 각각 비교하여, 상기 제1 내지 제3 가중치(w 1 , w 2 , w 3 ) 중에서 상기 가중치 평균(w avg ) 이상의 가중치들을 선정하고, 상기 선정된 가중치들과 관련된 현재 관절 벡터들을 제4 연산 블록(1140)으로 입력한다. 본 실시 예에서는 제1 가중치(w 1 )와 제3 가중치(w 3 )가 가중치 평균(w avg )이상인 것으로 가정한다. 이러한 가정에 따라, 제3 연산 블록(1130)은 제1 가중치(w 1 )와 관련된 현재 관절 벡터(J 1 v cur )와 제3 가중치(w 3 )와 관련된 현재 관절 벡터(J 3 v cur )를 선정하여 이를 제4 연산 블록(1140)으로 입력한다. 이러한 선정에 따라, 현재 관절 벡터(J 2 v cur )와 관련된 제2 관절 데이터는 노이즈가 포함된 신뢰할 수 없는 데이터로 판단하여, 아래의 제4 연산 블록(1140)에 의해 수행되는 관절 합성 연산에 제외된다.
제4 연산 블록(1140)은, 전술한 수학식 3에 따라, 제3 연산 블록(1130)으로부터 입력된 현재 관절 벡터(J 1 v cur )와 현재 관절 벡터(J 3 v cur )를 합성한다. 이후, 제4 연산 블록(1140)에 의해 합성된 관절 벡터를 이용하여 현재 프레임에서의 각 사용자의 관절 위치(J p )가 추정된다. 여기서, 관절 위치는 '관절 자세'라는 용어로 대체될 수 있다.
깊이 데이터 분류부 (260)
본 발명의 특징은 다수의 사용자의 관절 데이터, 각 사용자의 관절 데이터에 할당된 사용자 ID 및 깊이 데이터를 매 프레임 단위로 추적하여 관절 데이터, 사용자 ID 및 깊이 데이터를 포함하도록 구성된 사용자 자세를 추적하는 것이다.
깊이 데이터의 실시간 추적을 위해, 관절 데이터를 사용자 별로 분류하는 것과 유사하게 깊이 데이터를 사용자 별로 분류해야 한다.
본 발명의 일 실시 예에 따른 깊이 데이터 분류부(260)는 사용자 ID가 할당된 관절 데이터의 주성분을 이용하여 깊이 데이터를 사용자 별로 분류한다.
이하, 도 12를 참조하여, 깊이 데이터 분류부(260)에서 수행되는 깊이 데이터의 분류 과정에 대해 상세히 기술한다. 아울러, 이하에서는 특별하게 언급하지 않는 하, 깊이 데이터와 깊이 포인트를 동일한 의미를 갖는 용어로 사용한다.
도 12는 본 발명의 일 실시 예에 따른 깊이 데이터 분류에서 수행되는 깊이 데이터의 분류 과정을 나타내는 흐름도이고, 도 13은 본 발명의 일 실시 예에 따른 2차원 평면에 투영된 관절 데이터를 설명하기 위한 도면이다.
도 12 및 13을 참조하면, 단계 S1210에서, 관절 합성부(250)에 의해 합성된(또는 복원된) 관절 데이터를 2차원 평면에 투영하는 과정이 수행된다. 이때, 관절 합성부(250)에 의해 합성된 관절 데이터는 3차원 공간에 표현되는 3차원 관절 데이터이다.
이어, 단계 S1220에서, 2차원 평면에 투영된 관절 데이터의 주성분(principal component)을 나타내는 주축(principal axis)을 계산하는 과정이 수행된다. 도 13을 참조하면, 주축은 2차원 평면에 투영된 관절 데이터를 다수의 포인트들(1310)로 나타낼 때, 다수의 포인트들의 분포 특성을 가장 잘 나타내는 방향 벡터이다. 도 13에 도시된 바와 같이, 다수의 포인트들의 분포 특성을 가장 잘 나타내는 방향 벡터가 서로 수직인 2개의 방향 벡터들(PCAX, PCAY)로 구성되는 경우, 주축은 방향 벡터(PCAX)에 대응하는 축과 방향 벡터(PCAX)에 수직한 방향 벡터(PCAY)에 대응하는 축으로 구성된다. 이러한 주축(principal axis)을 계산하는 방법으로, 차원 축소(dimensionality reduction)와 변수 추출(feature extraction) 기법으로 널리 알려진 주성분 분석(Principal Component Analysis: PCA) 기법이 이용될 수 있다.
이어, 단계 S1230에서, 전 단계 S1220에서 계산된 주축을 이용하여 2차원 평면에 타원체들(ellipsoids)을 생성하는 과정이 수행된다. 예를 들면, 2차원 평면에 투영된 관절 데이터를 다수의 포인트들(도 13의 1310)로 나타낼 때, 전 단계 S1220에서 계산된 주축(PCAX, PCAY)과 주축(PCAX, PCAY)으로부터 가장 멀리 떨어져 있는 포인트의 위치값을 이용하여, 타원체에서 정의하는 장축(a)과 단축(b)이 계산되고, 계산된 장축(a)과 단축(b)에 의해 도 13에 도시한 타원체(1320)가 생성될 수 있다. 생성된 타원체는 아래의 수학식 4와 같은 타원 방정식으로 표현될 수 있다.
Figure 112019008904139-pat00025
Figure 112019008904139-pat00026
Figure 112019008904139-pat00027
여기서,
Figure 112019008904139-pat00028
는 2차원 평면에 투영된 관절 데이터의 위치값,
Figure 112019008904139-pat00029
는 2차원 평면에 투영된 관절 위치의 중심 좌표이며, Max() 함수는 가장 큰 값을 반환하는 함수로써, 벡터의 내적에 의해 축에서 가장 멀리 있는 값을 반환하게 된다.
사용자의 동작에 따라 타원체의 크기가 변하며, 이때, a와 b는 사용자가 포함될 수 있는 최소 값 이상이 되어야 한다. a와 b에 대한 최소값은 인체 측정 데이터(anthropometric data)를 이용하여 설정될 수 있다.
이어, 단계 S1240에서, 전단계 S1230에 의해 생성된 타원체들 중에서 상기 깊이 데이터가 포함되는 타원체를 결정하는 과정이 수행된다. 예를 들면, 상기 깊이 데이터에 의해 표현되는 x축 좌표값과 y축 좌표값을 다수의 타원체들 중 어느 하나의 타원체를 표현하는 타원 방정식(수학식 4)에 대입했을 때, 그 결과값이 1이하인 경우, 상기 깊이 데이터에 의해 표현되는 x축 좌표값과 y축 좌표값이 상기 어느 하나의 타원체에 의해 정의되는 영역 내에 존재하는 것으로 판단하여, 상기 깊이 데이터가 상기 어느 하나의 타원체 포함되는 것으로 결정할 수 있다.
이어, 단계 S1250에서, 상기 깊이 데이터를 전단계 S1240에 의해 결정된 타원체와 관련된 상기 합성된 관절 데이터에 대응하는 사용자로 분류하는 과정이 수행된다. 전술한 바와 같이, 사용자 ID가 할당된 관절 데이터를 기반으로 타원체가 생성되기 때문에, 생성된 타원체는 사용자 ID에의 사용자 별로 분류된 것이다. 그러므로, 상기 깊이 데이터를 포함하는 타원체가 결정되면, 상기 결정된 타원체에 의해 상기 깊이 데이터를 사용자 별로 분류할 수 있게 된다.
이와 같이, 2차원 평면 상에 생성된 타원체를 이용하면, 깊이 데이터(또는 깊이 포인트)가 어느 타원체에 속하는지 쉽고 빠르게 구분이 가능하다. 만일, 깊이 데이터가 어느 타원체에도 속하지 않는 경우에는, 상기 깊이 데이터에 의해 표현되는 좌표를 각 타원체를 표현하는 타원 방정식에 대입했을 때, 상기 깊이 데이터가 가장 작은 결과값을 반환하는 타원 방정식에 대응하는 타원체에 할당된다.
관절 데이터 보정부 (270)
전술한 바와 같이, 사용자 별로 분류된 관절 데이터에 사용자 ID를 매 프레임 단위로 할당하고, 사용자 ID가 할당된 관절 데이터를 이용하여 깊이 데이터를 사용자 별로 분류함으로써, 각 사용자의 자세 추적이 실시간으로 가능하다.
한편, 관절 데이터는 전술한 바와 같이, 사용자를 나타내는 깊이 데이터에 대한 처리 과정으로부터 생성된다. 즉, 관절 데이터는 각 센서로부터 직접 획득할 수 있는 데이터가 아니다. 이러한 처리 과정에 의해 관절 데이터는 깊이 이미지에 비해 상대적으로 노이즈 성분을 포함할 수 있다.
이와 같이, 관절 데이터는 노이즈 성분을 포함할 수 있기 때문에, 전술한 관절 합성부(250)에 의해 합성된 관절 데이터로부터 추정된 각 사용자의 관절 위치는 상기 노이즈 성분에 따른 오차를 포함할 수 있다. 특히, 상기 합성된 관절 데이터에 의해 복원된 전신 관절 중에서 하반신 관절(발끝, 발목, 무릎 관절)에서 큰 오차가 발생하는 경향이 있다.
이에, 본 발명에서는 깊이 데이터가 관절 데이터에 비해 오차가 상대적으로 작다는 점을 착안하여, 깊이 데이터를 이용하여 관절 합성부에 의해 합성된(또는 복원된) 관절 데이터를 보정하는 방법이 제시된다.
이하, 도 14를 참조하여, 깊이 데이터를 이용하여 관절 데이터를 보정하는 방법에 대해 상세히 기술한다.
도 14는 본 발명의 일 실시 예에 따른 관절 데이터 보정부에서 깊이 데이터를 이용하여 관절 데이터를 보정하는 과정을 나타내는 흐름도이다.
깊이 데이터를 이용하여 관절 합성부(250)에 의해 합성된(또는 복원된) 관절 데이터(이하, 하반신 관절 데이터)를 보정하기 위해, 먼저, 깊이 데이터 분류부(260)에 의해 사용자 별로 분류된 깊이 데이터로부터 하반신 관절의 관절 위치를 추정해야 한다. 특별히 한정하는 것은 아니지만, 하반신 관절은 발끝 관절, 발목 관절, 무릎 관절을 포함하는 것으로 가정한다. 따라서, 본 실시 예에 따른 하반신 관절의 관절 위치 추정은 발끝 관절의 관절 위치 추정, 발목 관절의 관절 위치 추정 및 무릎 관절의 관절 위치 추정을 포함한다.
도 14를 참조하면, 단계 S1410에서, 깊이 데이터 분류부(260)로부터 입력된 사용자 별로 분류된 깊이 데이터에 대해 샘플링 과정이 수행된다. 이러한 샘플링 과정은 사용자 별로 분류된 깊이 데이터에 대한 계산량을 줄이기 위함이다. 샘플링 과정은, 예를 들면, 도 15에 도시된 바와 같이, 3차원 공간에 깊이 데이터를 나타내는 포인트들(1520)을 포함하는 육면체 형상의 라운딩 박스(1510)를 생성하는 과정과 라운딩 박스(1510)를 다수의 복셀(voxel)들로 분할하는 과정을 포함할 수 있다. 도 15에서는 라운딩 박스(1510)가 27개의 복셀들로 분할된 예가 도시된다.
이어, 단계 S1420에서, 단계 S1410에 의해 샘플링된 깊이 데이터로부터 특징점들을 추출하는 과정이 수행된다. 특징점들의 추출 과정은, 예를 들면, 전 단계(S1410)에 의해 생성된 다수의 복셀을, 도 15에 도시한 바와 같이, 상부층, 중간층 및 하부층으로 정의하고, 중간층의 중심에 위치하는 복셀을 중심 복셀로 정의할 때, 중간층에서 중심 복셀의 주변 4개 복셀(V6Middle, V7Middle , V8Middle , V9Middle), 상부층의 5개의 복셀들(V1TOP, V2TOP, V3TOP, V4TOP, V5TOP) 및 하부층 5개의 복셀들(V10TOP, V11TOP, V12TOP, V13TOP, V14TOP)로 이루어진 총 14개의 복셀들을 분석하여, 14개의 복셀들 중에서 포인트가 존재하지 않고 비어있는 복셀들의 개수가 정해진 개수 이상이면, 상기 중심 복셀을 특징점으로 등록한다. 이때, 특징점의 위치는 중심 복셀에 존재하는 포인트들의 평균 위치일 수 있다. 도 15에서는, V8Middle , V9Middle V12TOP, V13TOP, V14TOP에 의해 지시되는 복셀들은 다른 복셀들에 의해 가려져 나타나지 않는다.
이어, 단계 S1430에서, 전 단계(S1420)에 의해 특징점들을 획득하면, 획득한 특징점들를 이용하여 발끝 관절을 추정하는 과정이 수행된다. 발끝 관절은 발의 특성상 중심 관절(SpineBase)(도 3의 32)에서 가장 멀리 있는 부분이다. 따라서, 양 발 끝을 찾기 위해 전 단계(S1420)에서 획득한 특징점들을 오른쪽 다리 영역에 대응하는 특징점들과 왼쪽 다리 영역에 대응하는 특징점들로 분할한 한 후, 각 다리 영역에서 중심 관절(도 3의 32)로부터 가장 멀리 있는 특징점을 선택한다. 선택한 특징점 주변의 샘플링 데이터(특징점 주변의 샘플링된 점들) 중에서 발 길이 범위 이내에 있는 샘플링 데이터를 획득한 후 획득한 샘플 데이터의 평균 위치를 구한다. 구해진 포인트들은 아래 수학식 5와 같이 중심 관절과의 거리 및 이전 데이터를 참조하여 발목에서 발끝으로 가는 노말 벡터에 의해 가중치를 계산하고, 이를 이용하여 발끝 관절의 위치(
Figure 112019008904139-pat00030
)를 추정한다.
Figure 112019008904139-pat00031
Figure 112019008904139-pat00032
Figure 112019008904139-pat00033
여기서
Figure 112019008904139-pat00034
는 선택된 특징점 주변의 발 길이 이내 샘플링 데이터이며,
Figure 112019008904139-pat00035
은 중심 관절의 위치,
Figure 112019008904139-pat00036
는 주변 샘플링 데이터의 평균 위치,
Figure 112019008904139-pat00037
은 이전 데이터에서 발목-발끝 관절 벡터에 대한 노말 벡터를 의미한다.
이어, 단계 S1440에서, 전단계 S1430에 의해 추정된 발끝 관절의 위치(
Figure 112019008904139-pat00038
)를 이용하여 발목 관절을 추정하는 과정이 수행된다. 예를 들면, 인체 계측 데이터(anthropometric data)로 알 수 있는 발끝과 발목 사이의 거리 범위를 참조하여, 전단계 S1430에 의해 추정된 발끝 관절의 위치(
Figure 112019008904139-pat00039
)로부터 상기 거리 범위에 속하는 샘플링된 점들의 평균값을 발목 관절의 관절 위치로 추정할 수 있다.
이어, 단계 S1450에서, 전단계 S1440에서 추정된 발목 관절의 위치를 이용하여 무릎 관절의 위치를 추정하는 과정이 수행된다. 무릎 관절 위치의 추정의 일 예를 도 16을 참조하여 설명하면, 전단계 S1440에서 추정된 발목 관절(1610)에서 힙 관절 방향(1630)으로 올라가면서 정강이 길이, 즉, 발목 관절(1610)에서 무릎 관절(1620)까지의 길이 내에서 미리 정해진 값 α1 ~ α2에 해당하는 영역들(1612, 1614 및 1616)에 포함된 점들의 평균 위치를 계산한다. 본 발명에서는 정강이 길이 내에서 최소 3개 포인트 영역들(1612, 1614 및 1616)을 추출하기 위해, α1 은 0.15, α2는 0.4로 정의할 수 있다.
발목 관절에 가장 인접한 첫 번째 영역(1612)에서 평균 위치가 계산되면, 첫 번째 영역(1612)에서 무릎 관절(1620)까지의 길이 내에서 다시 α1 ~ α2에 해당하는 영역 내의 점들의 평균 위치를 계산한다. 이 과정을 3번 반복하여 얻어진 3개의 평균 위치들을 연결하는 선상에서 대퇴부 길이(힙 관절에서 무릎까지의 길이, L1)와 정강이 길이(L2)의 비에 이용하여 무릎 관절의 위치가 계산된다.
전단계들 S1440~S1450에 의해 발끝 관절, 발목 관절 및 무릎 관절의 관절 위치 추정이 모두 완료되면, 깊이 데이터를 이용하여 하반신 관절에 대한 위치 추정이 완료된다.
이어, 단계 S1460에서, 깊이 데이터를 이용하여 추정된 하반신 관절의 관절 위치를 이용하여 관절 합성부(250)로부터 입력되는 하반 관절 데이터(Jlower)를 보정한다.
데이터 결합부(280)
데이터 결합부(280)는 관절 데이터 보정부(270)에 의해 보정된 하반신관절 데이터(Jlower'), 관절 합성부(250)로부터 입력되는 상반신 관절 데이터(Jupper) 및 깊이 데이터 분류부(260)에 의해 사용자 별로 분류된 깊이 데이터를 포함하도록 구성된 사용자 자세 데이터를 출력한다.
보정된 하반신 관절 데이터(Jlower') 및 상반신 관절 데이터(Jupper)는 모두 사용자 ID가 할당된 데이터이고, 깊이 데이터 분류부(260)로부터 입력되는 깊이 데이터도 사용자 ID가 할당된 관절 데이터를 기반으로 분류된 상태이다. 따라서, 데이터 결합부로부터 출력되는 사용자 자세 데이터는 사용자 ID가 할당된 데이터이다.
도 17은 본 발명의 일 실시 예에 따른 데이터 결합부(280)에 의해 획득된 사용자 자세 데이터의 일 예를 설명하기 위한 도면이다.
도 17에서, (a)는 스캔 공간에 존재하는 사용자 1인에 대한 사용자 ID(ID_0), 관절 데이터 및 깊이 데이터를 포함하는 사용자 자세 데이터를 나타낸 것이다.
(b)는 스캔 공간으로 다른 사용자가 진입한 경우에서 사용자 자세 데이터를 시각적으로 나타낸 것이다. (c)는 (b)에서 스캔 공간으로 진입한 다른 사용자의 관절 데이터에 다른 사용자 ID(ID_1)가 할당된 경우에서 사용자 자세 데이터를 시각적으로 나타낸 것이다. (d)는 스캔 공간에서 사용자 ID_0으로 할당된 기존 사용자가 이탈된 경우에서 사용자 자세 데이터를 나타낸 것이다. (e)는 스캔 공간에서 또 다른 사용자가 진입한 경우에서 사용자 자세 데이터를 나타낸 것이다. (f)는 (e)에서 또 다른 사용자에게 의 관절 데이터에 이전에 이탈한 사용자에 대한 사용자 ID(ID_0)가 할당된 경우에서 사용자 자세 데이터를 나타낸 것이다.
이상 설명한 바와 같이, 본 발명은 2인 이상의 사용자에 대해 실시간으로 자세를 추정하고, 각 사용자에 대해 ID를 추적함으로써 연속적이 자세 추적이 가능하다. 또한, RGB-D 센서를 이용함으로써, 기존 전문가용으로 활용되던 고가의 모션 캡쳐 장비에 비해 상대적으로 저렴하게 설계가 가능하다. 또한, 사용자에게 특정 장비를 착용시키거나 부착시키는 것 없이, 자연스러운 상태에서 가상스포츠 게임, VR 체험용 게임 등을 진행할 수 있으며, 사용자 동작 훈련에 적용이 가능하므로 활용 범위가 크다고 할 수 있다.
도 18은 본 발명의 다중 사용자 추적 장치가 적용될 수 있는 컴퓨팅 장치의 블록도이다.
도 18을 참조하면, 본 발명의 다중 사용자 추적 장치가 적용될 수 있는 컴퓨팅 장치는 버스(620)를 통해 연결되는 적어도 하나의 프로세서(610), 메모리(630), 사용자 인터페이스 입력 장치(640), 사용자 인터페이스 출력 장치(650), 스토리지(660), 및 네트워크 인터페이스(670)를 포함할 수 있다.
프로세서(610)는 중앙 처리 장치(CPU) 또는 메모리(630) 및/또는 스토리지(660)에 저장된 명령어들에 대한 처리를 실행하는 반도체 장치일 수 있다.
프로세서(610)의 실행에 따라, 하나의 메모리 블록이 저장할 수 있는 공간의 크기와 상기 송수신 데이터의 크기에 따라 상기 메모리 블록의 일정 개수가 계산될 수 있다. 메모리 블록은 관절 저장소 또는 ID 저장소를 의미할 수 있다.
프로세서(610)는 도 1에 도시한 좌표계 변환부(220)에 의한 프로세스를 처리하는 연산 로직, 관절 데이터 분류부(230)에 의한 프로세스를 처리하는 연산 로직, ID 추적부(240)에 의한 프로세스를 처리하는 연산 로직, 관절 합성부(250)에 의한 프로세스를 처리하는 연산 로직, 깊이 데이터 분류부(260)에 의한 프로세스를 처리하는 연산 로직, 관절 데이터 보정부(270)에 의한 프로세스를 처리하는 연산 로직 및 데이터 결합부(280)에서 의한 프로세스를 처리하는 연산 로직을 포함하도록 설계될 수 있다.
메모리(630) 및 스토리지(660)는 다양한 종류의 휘발성 또는 불휘발성 저장 매체를 포함할 수 있다. 메모리(630) 및 스토리지(660)는 프로세서(610)에 의해 처리된 중간 데이터 또는 결과 데이터를 저장하며, 중간 데이터 또는 결과 데이터는 예를 들면, 관절 데이터 분류부(230)에 의해 사용자 별로 분류된 관절 데이터, 사용자 ID 추적부(240)에 의해 생성된 사용자 ID, 관절 데이터 보정부(270)에 의해 보정된 하반신 관절 데이터, 데이터 결합부에 의해 생성된 사용자 자세 데이터 등을 포함할 수 있다. 메모리(630)는 ROM(Read Only Memory) 및 RAM(Random Access Memory)을 포함할 수 있다.
본 명세서에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서(610)에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다.
소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM과 같은 저장 매체(즉, 메모리(630) 및/또는 스토리지(660))에 상주할 수도 있다.
예시적인 저장 매체는 프로세서(610)에 연결되며, 그 프로세서(610)는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서(610)와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로(ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.
본 개시의 예시적인 방법들은 설명의 명확성을 위해서 동작의 시리즈로 표현되어 있지만, 이는 단계가 수행되는 순서를 제한하기 위한 것은 아니며, 필요한 경우에는 각각의 단계가 동시에 또는 상이한 순서로 수행될 수도 있다. 본개시에 따른 방법을 구현하기 위해서, 예시하는 단계에 추가적으로 다른 단계를 포함하거나, 일부의 단계를 제외하고 나머지 단계를 포함하거나, 또는 일부의 단계를 제외하고 추가적인 다른 단계를 포함할 수도 있다.
본 개시의 다양한 실시 예는 모든 가능한 조합을 나열한 것이 아니고 본 개시의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시 예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다
또한, 본 개시의 다양한 실시 예는 하드웨어, 펌웨어(firmware), 소프트웨어, 또는 그들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 범용프로세서(general processor), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
본 개시의 범위는 다양한 실시 예의 방법에 따른 동작이 장치 또는 컴퓨터 상에서 실행되도록 하는 소프트웨어 또는 머신-실행 가능한 명령들(예를 들어, 운영체제, 애플리케이션, 펌웨어(firmware), 프로그램 등), 및 이러한 소프트웨어 또는 명령 등이 저장되어 장치 또는 컴퓨터 상에서 실행 가능한 비-일시적 컴퓨터-판독가능 매체(non-transitory computer-readable medium)를 포함한다.
이상에서 본 발명에 대하여 실시예를 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 발명의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 본 발명의 실시 예에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (11)

  1. 다수의 센서를 이용하여 다중 사용자를 추적하는 방법에서,
    수신부에서, 각 센서로부터 상기 다중 사용자의 관절을 나타내는 3차원 관절 데이터(이하, 관절 데이터)와 상기 다중 사용자의 형상을 나타내는 3차원 깊이 데이터(이하, 깊이 데이터)를 수신하는 단계;
    관절 데이터 분류부에서, 상기 관절 데이터를 사용자 별로 분류하는 단계;
    ID 추적부에서, 상기 사용자 별로 분류된 관절 데이터에 사용자 ID를 할당하는 단계;
    관절 합성부에서, 동일한 사용자 ID가 할당된 관절 데이터를 합성하고, 상기 합성된 관절 데이터를 이용하여 각 사용자의 관절 위치를 추정하는 단계;
    깊이 데이터 분류부에서, 상기 사용자 ID가 할당된 관절 데이터의 주성분(Principal Component)을 이용하여 상기 깊이 데이터를 사용자 별로 분류하는 단계; 및
    관절 데이터 보정부에서, 상기 추정된 각 사용자의 관절 위치에 포함된 오차를 보정하기 위해 상기 사용자 별로 분류된 상기 깊이 데이터를 이용하여 상기 관절 합성부에 의해 상기 합성된 관절 데이터를 보정하는 단계
    를 포함하는 다중 사용자 추적 방법.
  2. 제1항에서, 상기 관절 데이터를 사용자 별로 분류하는 단계는,
    상기 수신부로부터 입력되는 관절 데이터를 저장소에 저장하는 단계;
    상기 저장소에 저장된 관절 데이터에 의해 나타나는 관절 위치값과 상기 수신부로부터 입력되는 다른 관절 데이터에 나타나는 관절 위치값 사이의 거리값을 계산하는 단계;
    상기 거리값과 기준값(δ)을 비교하는 단계;
    상기 거리값이 상기 기준값(δ) 이하인 경우, 상기 다른 관절 데이터를 상기 저장소에 저장하여, 상기 관절 데이터와 상기 다른 관절 데이터를 동일한 사용자의 관절 데이터로 분류하는 단계; 및
    상기 거리값이 기준값(δ)을 초과한 경우, 상기 다른 관절 데이터를 다른 저장소에 저장하여, 상기 관절 데이터와 상기 다른 관절 데이터를 서로 다른 사용자의 관절 데이터로 분류하는 단계;
    를 포함하는 것인 다중 사용자 추적 방법.
  3. 제1항에서, 상기 사용자 ID를 할당하는 단계는,
    이전 프레임에서 분류된 관절 데이터(이하, 이전 관절 데이터)에 사용자 ID를 할당하여 ID 저장소에 저장하는 단계;
    현재 프레임에서 분류된 관절 데이터(이하, 현재 관절 데이터)와 상기 ID 저장소에 저장된 이전 관절 데이터 간의 매칭 관계를 계산하는 단계; 및
    상기 매칭 관계의 계산 결과에 따라, 상기 이전 관절 데이터와 상기 현재 관절 데이터가 매칭되면, 상기 이전 관절 데이터에 할당된 사용자 ID와 동일한 사용자 ID를 상기 현재 관절 데이터에 할당하여, 상기 현재 관절 데이터를 상기 이전 관절 데이터를 업데이트한 관절 데이터로서 상기 ID 저장소에 저장하는 단계;
    를 포함하는 것인 다중 사용자 추적 방법.
  4. 제1항에서, 상기 사용자 ID를 할당하는 단계는,
    이전 프레임에서 이전 관절 데이터에 할당된 서로 다른 사용자 ID의 수(KID)와 현재 프레임에서 추적해야 하는 사용자의 수(KUSER)를 비교하는 단계;
    KUSER > KID인 경우, 상기 다수의 센서의 스캐닝 공간 내로 새로운 사용자가 진입한 것으로 판단하여, 상기 새로운 사용자에 따라 추가로 분류된 관절 데이터에 새로운 사용자 ID를 할당하는 단계;
    상기 새로운 사용자 ID가 할당된 관절 데이터를 ID 저장소에 저장하는 단계;
    이전 프레임에서 이전 관절 데이터에 할당된 서로 다른 사용자 ID의 수(KID)와 현재 프레임에서 추적해야 하는 사용자의 수(KUSER)를 비교하는 단계; 및
    KUSER < KID인 경우, 현재 프레임에서 상기 다수의 센서의 스캐닝 공간 밖으로 기존 사용자가 이탈한 것으로 판단하여, 이전 프레임에서 상기 기존 사용자의 관절을 나타내는 이전 관절 데이터와 상기 이전 관절 데이터에 할당된 사용자 ID를 상기 ID 저장소에서 삭제하는 단계;
    를 포함하는 것인 다중 사용자 추적 방법.
  5. 제1항에서, 각 사용자의 관절 위치를 추정하는 단계는,
    상기 동일한 사용자 ID가 할당된 관절 데이터가 k(2이상의 자연수)개의 관절 데이터를 포함하는 경우, k개의 관절 데이터 각각에 의해 생성되는 이전 관절 벡터와 현재 관절 벡터를 이용하여, 상기 k개의 관절 데이터에 대응하는 k개의 가중치들을 계산하는 단계;
    상기 k개의 가중치들의 가중치 평균을 계산하는 단계;
    상기 k개의 가중치들 중에서 상기 가중치 평균보다 크거나 같은 가중치들을 선정하는 단계; 및
    상기 k개의 관절 데이터 중에서 상기 선정된 가중치들과 각각 관련된 관절 데이터를 합성하는 단계;
    를 포함하는 것인 다중 사용자 추적 방법.
  6. 제1항에서, 상기 깊이 데이터를 사용자 별로 분류하는 단계는,
    상기 관절 합성부에 의해 합성된 관절 데이터를 2차원 평면에 투영하는 단계;
    주성분 분석(Principal Component Analysis)에 따라, 상기 2차원 평면에 투영된 관절 데이터의 주성분(principal component)을 나타내는 주축(principal axis)을 계산하는 단계;
    상기 계산된 주축을 이용하여 2차원 평면에 타원체들을 생성하는 단계;
    상기 생성된 타원체들 중에서 상기 깊이 데이터가 포함되는 타원체를 결정하는 단계; 및
    상기 깊이 데이터를 상기 결정된 타원체와 관련된 상기 합성된 관절 데이터에 대응하는 사용자로 분류하는 단계;
    를 포함하는 다중 사용자 추적 방법.
  7. 다수의 센서를 이용하여 다중 사용자를 추적하기 위한 다중 사용자 추적 장치에서,
    수신부에서, 각 센서로부터 상기 다중 사용자의 관절을 나타내는 3차원 관절 데이터(이하, 관절 데이터)와 상기 다중 사용자의 형상을 나타내는 3차원 깊이 데이터(이하, 깊이 데이터)를 수신하는 통신 인터페이스; 및
    상기 관절 데이터를 사용자 별로 분류하는 제1 프로세스, 상기 사용자 별로 분류된 관절 데이터에 사용자 ID를 할당하는 제2 프로세스, 동일한 사용자 ID가 할당된 관절 데이터를 합성하고, 상기 합성된 관절 데이터를 이용하여 각 사용자의 관절 위치를 추정하는 제3 프로세스, 상기 사용자 ID가 할당된 관절 데이터의 주성분(Principal Component)을 이용하여 상기 깊이 데이터를 사용자 별로 분류하는 제4 프로세스 및 상기 추정된 각 사용자의 관절 위치에 포함된 오차를 보정하기 위해 상기 사용자 별로 분류된 상기 깊이 데이터를 이용하여 상기 합성된 관절 데이터를 보정하는 제5 프로세스를 처리하는 프로세서
    를 포함하는 다중 사용자 추적 장치.
  8. 제7항에서, 상기 프로세서는,
    이전 프레임에서 분류된 관절 데이터(이하, 이전 관절 데이터)에 사용자 ID를 할당하여 ID 저장소에 저장하는 프로세스;
    현재 프레임에서 분류된 관절 데이터(이하, 현재 관절 데이터)와 상기 ID 저장소에 저장된 이전 관절 데이터 간의 매칭 관계를 계산하는 프로세스; 및
    상기 매칭 관계의 계산 결과에 따라, 상기 이전 관절 데이터와 상기 현재 관절 데이터가 매칭되면, 상기 이전 관절 데이터에 할당된 사용자 ID와 동일한 사용자 ID를 상기 현재 관절 데이터에 할당하여, 상기 현재 관절 데이터를 상기 이전 관절 데이터를 업데이트한 관절 데이터로서 상기 ID 저장소에 저장하는 프로세스
    를 포함하는 상기 제2 프로세스를 수행하는 것인 다중 사용자 추적 장치.
  9. 제7항에서, 상기 프로세서는,
    상기 동일한 사용자 ID가 할당된 관절 데이터가 k(2이상의 자연수)개의 관절 데이터를 포함하는 경우, k개의 관절 데이터 각각에 의해 생성되는 이전 관절 벡터와 현재 관절 벡터를 이용하여, 상기 k개의 관절 데이터에 대응하는 k개의 가중치들을 계산하는 프로세스;
    상기 k개의 가중치들의 가중치 평균을 계산하는 프로세스;
    상기 k개의 가중치들 중에서 상기 가중치 평균보다 크거나 같은 가중치들을 선정하는 프로세스; 및
    상기 k개의 관절 데이터 중에서 상기 선정된 가중치들과 각각 관련된 관절 데이터를 합성하는 프로세스
    를 포함하는 상기 제3 프로세스를 수행하는 것인 다중 사용자 추적 장치.
  10. 제7항에서, 상기 프로세서는,
    관절 합성부에 의해 합성된 관절 데이터를 2차원 평면에 투영하는 프로세스;
    주성분 분석(Principal Component Analysis)에 따라, 상기 2차원 평면에 투영된 관절 데이터의 주성분(principal component)을 나타내는 주축(principal axis)을 계산하는 프로세스;
    상기 계산된 주축을 이용하여 2차원 평면에 타원체들을 생성하는 프로세스;
    상기 생성된 타원체들 중에서 상기 깊이 데이터가 포함되는 타원체를 결정하는 프로세스; 및
    상기 깊이 데이터를 상기 결정된 타원체와 관련된 상기 합성된 관절 데이터에 대응하는 사용자로 분류하는 프로세스
    를 포함하는 상기 제4 프로세스를 수행하는 것인 다중 사용자 추적 장치.
  11. 제7항에서, 상기 제5 프로세스는,
    상기 사용자 별로 분류된 깊이 데이터로부터 각 사용자의 관절 위치를 추정하고, 상기 깊이 데이터로부터 추정된 관절 위치를 이용하여 상기 제3 프로세스에 의해 합성된 관절 데이터를 보정하는 것인 다중 사용자 추적 장치.








KR1020190009499A 2019-01-24 2019-01-24 다중 사용자 추적 장치 및 방법 KR102258114B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190009499A KR102258114B1 (ko) 2019-01-24 2019-01-24 다중 사용자 추적 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190009499A KR102258114B1 (ko) 2019-01-24 2019-01-24 다중 사용자 추적 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200092215A KR20200092215A (ko) 2020-08-03
KR102258114B1 true KR102258114B1 (ko) 2021-05-31

Family

ID=72042971

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190009499A KR102258114B1 (ko) 2019-01-24 2019-01-24 다중 사용자 추적 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102258114B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102460361B1 (ko) * 2020-12-29 2022-11-01 광주과학기술원 캘리브레이션 시스템 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101892093B1 (ko) 2016-11-08 2018-08-28 한국전자통신연구원 사용자의 지시 위치 추정 장치 및 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110317871A1 (en) * 2010-06-29 2011-12-29 Microsoft Corporation Skeletal joint recognition and tracking system
KR20130098770A (ko) * 2012-02-28 2013-09-05 한국전자통신연구원 입체감 확장형 가상 스포츠 체험 시스템
KR101501487B1 (ko) * 2013-07-18 2015-03-12 전자부품연구원 깊이 영상 기반 머리 검출방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101892093B1 (ko) 2016-11-08 2018-08-28 한국전자통신연구원 사용자의 지시 위치 추정 장치 및 방법

Also Published As

Publication number Publication date
KR20200092215A (ko) 2020-08-03

Similar Documents

Publication Publication Date Title
JP6522060B2 (ja) オブジェクト認識装置、分類ツリー学習装置及びその動作方法
US9317741B2 (en) Three-dimensional object modeling fitting and tracking
Liu et al. Estimation of missing markers in human motion capture
US8086027B2 (en) Image processing apparatus and method
JP6025845B2 (ja) オブジェクト姿勢検索装置及び方法
JP4653606B2 (ja) 画像認識装置、方法およびプログラム
CN106600626B (zh) 三维人体运动捕获方法与系统
CN102682452A (zh) 基于产生式和判别式结合的人体运动跟踪方法
Ding et al. STFC: Spatio-temporal feature chain for skeleton-based human action recognition
KR101789071B1 (ko) 깊이 영상의 특징 추출 방법 및 장치
JP2019096113A (ja) キーポイントデータに関する加工装置、方法及びプログラム
JP6996557B2 (ja) 対象物認識方法、装置、システム、プログラム
JP2016099982A (ja) 行動認識装置、行動学習装置、方法、及びプログラム
CN108875586B (zh) 一种基于深度图像与骨骼数据多特征融合的功能性肢体康复训练检测方法
KR101925879B1 (ko) 깊이 영상을 이용하는 동작 추정 방법 및 장치
KR102371127B1 (ko) 골격의 길이 정보를 이용한 제스쳐 인식 방법 및 처리 시스템
JP2014085933A (ja) 3次元姿勢推定装置、3次元姿勢推定方法、及びプログラム
US20210081716A1 (en) Training system and analysis system
JP6381368B2 (ja) 画像処理装置、画像処理方法、およびプログラム
JP6579353B1 (ja) 情報処理装置、情報処理方法、寸法データ算出装置、及び製品製造装置
KR102258114B1 (ko) 다중 사용자 추적 장치 및 방법
WO2022018811A1 (ja) 被写体の3次元姿勢推定装置、3次元姿勢推定方法、及びプログラム
JP6792273B2 (ja) 寸法データ算出装置、製品製造装置、及びシルエット画像生成装置
US20230068731A1 (en) Image processing device and moving image data generation method
KR20210076559A (ko) 인체 모델의 학습 데이터를 생성하는 장치, 방법 및 컴퓨터 프로그램

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant