KR20200092215A - apparatus and method for tracking pose of multi-user - Google Patents

apparatus and method for tracking pose of multi-user Download PDF

Info

Publication number
KR20200092215A
KR20200092215A KR1020190009499A KR20190009499A KR20200092215A KR 20200092215 A KR20200092215 A KR 20200092215A KR 1020190009499 A KR1020190009499 A KR 1020190009499A KR 20190009499 A KR20190009499 A KR 20190009499A KR 20200092215 A KR20200092215 A KR 20200092215A
Authority
KR
South Korea
Prior art keywords
joint
data
user
depth
joint data
Prior art date
Application number
KR1020190009499A
Other languages
Korean (ko)
Other versions
KR102258114B1 (en
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/en
Publication of KR20200092215A publication Critical patent/KR20200092215A/en
Application granted granted Critical
Publication of KR102258114B1 publication Critical patent/KR102258114B1/en

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

Disclosed is a multi-user tracking method. The multi-user tracking method comprises the steps of: receiving 3D joint data representing joints of multiple users (hereinafter, joint data) and 3D depth data representing a shape of the multiple users (hereinafter, depth data) from each sensor; and classifying the joint data for each user by assigning a user ID to the joint data, classifying the depth data for each user by using the joint data to which the user ID is assigned, and tracking the user ID, the joint ID to which the user ID is assigned, and the depth data classified for each user in real time.

Description

다중 사용자 추적 장치 및 방법{apparatus and method for tracking pose of multi-user}Apparatus and method for tracking pose of multi-user}

본 발명은 센서를 이용하여 다중 사용자의 자세를 실시간으로 추적하는 기술에 관한 것이다.The present invention relates to a technique for tracking the posture of multiple users in real time using a sensor.

최근 가상현실(Virtual Reality: VR) 기반 체험형 콘텐츠(an activity contents based on virtual reality)에 대한 관심이 높아지면서, 사용자 동작을 추적하는 기술에 대한 연구가 활발히 진행되고 있다.Recently, as interest in virtual reality (VR)-based experience-based content (an activity contents based on virtual reality) increases, research on a technique for tracking user motion has been actively conducted.

종래의 사용자 자세 추적 방법은 센서가 사용자 동작을 실시간으로 감지하여 획득한 센서 데이터를 실시간으로 분석하여 사용자의 동작을 추적한다. In the conventional user posture tracking method, the sensor detects the user's motion in real time and analyzes the acquired sensor data in real time to track the user's motion.

종래의 사용자 자세 추적 방법에서는 다음과 같은 문제점이 있다.The conventional user posture tracking method has the following problems.

첫째, 종래의 사용자 자세 추적 방법은 사용자가 움직이는 동안, 다른 사용자 또는 다른 물체에 의해 사용자의 실체 일부가 가려지는 경우, 센서로부터 사용자의 움직임에 따른 센서 데이터를 획득할 수 없기 때문에, 사용자의 자세 추적이 불가능하다.First, in the conventional user posture tracking method, when a user moves, while a part of the user's entity is covered by another user or another object, sensor data according to the user's movement cannot be obtained from the sensor. This is impossible.

둘째, 종래의 사용자 자세 추적 방법은, 다수의 사용자 자세를 추적하는 경우, 각 사용자의 자세 추적 과정에서 생성된 중간 데이터(또는 결과 데이터)를 사용자에 따라 식별하는 과정이 없다. 이 경우, 어떤 사용자의 자세 추적 과정에서 생성된 중간 데이터(또는 결과 데이터)와 다른 사용자의 자세 추적 과정에서 생성된 중간 데이터(또는 결과 데이터)가 서로 섞이거나 바뀌는 경우가 발생할 수 있다. 이것은 다른 사용자의 자세 정보를 어떤 사용자의 자세 정보로 오인식할 수 있음을 의미한다. 따라서, 다수의 사용자 동작을 추적하는 경우, 사용자별 자세 추적 결과의 신뢰도가 낮다.Second, in the conventional user posture tracking method, when tracking multiple user postures, there is no process of identifying intermediate data (or result data) generated in the posture tracking process of each user according to the user. In this case, there may be a case in which intermediate data (or result data) generated in a user's posture tracking process is mixed or replaced with intermediate data (or result data) generated in another user's posture tracking process. This means that the posture information of another user may be misrecognized as the posture information of a certain user. Therefore, when tracking a plurality of user motions, the reliability of the posture tracking result for each user is low.

셋째, 사용자의 동작을 감지하기 위해, 사용자 전신에 IMU(Inertial Measurement Unit) 센서 등을 착용해야 하는 불편함이 있다.Third, in order to sense the user's motion, there is an inconvenience of wearing an IMU (Inertial Measurement Unit) sensor on the user's whole body.

본 발명의 목적은 깊이(depth) 데이터를 제공하는 센서를 이용하여 다중 사용자의 관절 데이터를 추적하고, 동시에 관절 데이터와 매칭 관계에 있는 사용자 ID를 추적하는 다중 사용자 자세 추적 장치 및 방법을 제공하는 데 있다.An object of the present invention is to provide a multi-user posture tracking device and method for tracking joint data of multiple users using a sensor providing depth data, and simultaneously tracking a user ID in a matching relationship with joint data. have.

상술한 목적을 달성하기 위한 본 발명의 일면에 따른 다중 사용자 추적 방법은, 수신부에서, 각 센서로부터 상기 다중 사용자의 관절을 나타내는 3차원 관절 데이터(이하, 관절 데이터)와 상기 다중 사용자의 형상을 나타내는 3차원 깊이 데이터(이하, 깊이 데이터)를 수신하는 단계; 관절 데이터 분류부에서, 상기 관절 데이터를 사용자 별로 분류하는 단계; ID 추적부에서, 상기 사용자 별로 분류된 관절 데이터에 사용자 ID를 할당하는 단계; 관절 합성부에서, 동일한 사용자 ID가 할당된 관절 데이터를 합성하고, 상기 합성된 관절 데이터를 이용하여 각 사용자의 관절 위치를 추정하는 단계; 및 깊이 데이터 분류부에서, 상기 사용자 ID가 할당된 관절 데이터의 주성분(Principal Component)을 이용하여 상기 깊이 데이터를 사용자 별로 분류하는 단계;를 포함한다.A multi-user tracking method according to an aspect of the present invention for achieving the above object, in the receiving unit, represents three-dimensional joint data (hereinafter referred to as joint data) representing the multi-user joint from each sensor and the shape of the multi-user. Receiving 3D depth data (hereinafter, depth data); In the joint data classification unit, classifying the joint data for each user; Assigning a user ID to joint data classified for each user in the ID tracking unit; A step of synthesizing joint data to which the same user ID is assigned, and estimating a joint position of each user using the synthesized joint data in the joint synthesis unit; And in the depth data classification unit, classifying the depth data for each user using a principal component of joint data to which the user ID is assigned.

본 발명의 다른 일면에 따른 다중 사용자 추적 장치는, 수신부에서, 각 센서로부터 상기 다중 사용자의 관절을 나타내는 3차원 관절 데이터(이하, 관절 데이터)와 상기 다중 사용자의 형상을 나타내는 3차원 깊이 데이터(이하, 깊이 데이터)를 수신하는 통신 인터페이스; 및 상기 관절 데이터를 사용자 별로 분류하는 제1 프로세스, 상기 사용자 별로 분류된 관절 데이터에 사용자 ID를 할당하는 제2 프로세스, 동일한 사용자 ID가 할당된 관절 데이터를 합성하고, 상기 합성된 관절 데이터를 이용하여 각 사용자의 관절 위치를 추정하는 제3 프로세스 및 상기 사용자 ID가 할당된 관절 데이터의 주성분(Principal Component)을 이용하여 상기 깊이 데이터를 사용자 별로 분류하는 제4 프로세스를 처리하는 프로세서를 포함한다.Multi-user tracking device according to another aspect of the present invention, the receiving unit, from each sensor, three-dimensional joint data representing the joint of the multi-user (hereinafter, joint data) and three-dimensional depth data representing the shape of the multi-user (hereinafter, , Depth data) communication interface; And a first process of classifying the joint data for each user, a second process of assigning a user ID to joint data classified for each user, and combining joint data to which the same user ID is assigned, and using the synthesized joint data It includes a processor for processing a third process for estimating the joint position of each user and a fourth process for classifying the depth data for each user using a principal component of joint data to which the user ID is assigned.

본 발명의 또 다른 일면에 따른 다중 사용자 추적 방법은, 통신 인터페이스에 의해, 각 센서로부터 상기 다중 사용자의 관절을 나타내는 3차원 관절 데이터(이하, 관절 데이터)와 상기 다중 사용자의 형상을 나타내는 3차원 깊이 데이터(이하, 깊이 데이터)를 수신하는 단계; 및 프로세서에 의해, 상기 관절 데이터에 사용자 ID를 할당하여 상기 관절 데이터를 사용자 별로 분류하고, 상기 사용자 ID가 할당된 관절 데이터를 이용하여 상기 깊이 데이터를 사용자 별로 분류하여, 상기 사용자 ID, 상기 사용자 ID가 할당된 관절 데이터 및 상기 사용자 별로 분류된 깊이 데이터를 실시간으로 추적하는 단계를 포함한다.According to another aspect of the present invention, a multi-user tracking method includes, through a communication interface, three-dimensional joint data (hereinafter referred to as joint data) representing the multi-user joint from each sensor and three-dimensional depth representing the shape of the multi-user. Receiving data (hereinafter, depth data); And by the processor, assigning a user ID to the joint data to classify the joint data for each user, and using the joint data to which the user ID is assigned, to classify the depth data for each user, the user ID, the user ID And tracking in real time the joint data allocated and the depth data classified for each user.

본 발명에 따르면, 센서를 이용하여 다중 사용자(2인 이상의 사용자들)의 관절 데이터 및 깊이 데이터(또는 깊이 포인트)를 추적하고, 동시에 다중 사용자의 관절 데이터에 할당된 사용자 ID를 실시간으로 추적함으로써, 사용자 별로 명확히 식별되는 연속적인 자세를 추적할 수 있다.According to the present invention, by using a sensor to track the joint data and depth data (or depth points) of multiple users (two or more users), and at the same time tracking the user ID assigned to the joint data of multiple users in real time, Continuous posture that can be clearly identified for each user can be tracked.

또한, 고가의 모션 캡쳐 장비 없이, 다중 사용자의 자세를 추적할 수 있다.In addition, it is possible to track the posture of multiple users without expensive motion capture equipment.

또한, 다중 사용자가 IMU(Inertial Measurement Unit) 센서 등을 착용해야 하는 불편함이 없이, 사용자 별로 명확히 식별되는 연속적인 자세를 추적할 수 있다. 따라서, 본 발명을 VR 기반 스포츠 게임, VR 기반 체험형 게임 등과 같은 VR 기반 체험형 콘텐츠를 제공하는 분야에 적용할 경우, 사용자들은 움직임이 자연스러운 상태에서 VR 기반 체험형 콘텐츠를 즐길 수 있다. In addition, it is possible to track a continuous posture clearly identified for each user without the inconvenience of multiple users wearing an IMU (Inertial Measurement Unit) sensor. Therefore, when the present invention is applied to fields that provide VR-based experience-type content such as VR-based sports games and VR-based experience-type games, users can enjoy VR-based experience-type content in a natural state of movement.

도 1은 본 발명의 실시 예에 따른 다중 사용자 자세 추적 장치의 구성을 도시한 블록도.
도 2는 본 발명의 실시 예에 따른 다중 센서의 배치 구조를 나타내는 도면.
도 3는 본 발명의 일 실시 예에 따른 관절 데이터와 깊이 데이터를 설명하기 위한 도면.
도 4는 본 발명의 일 실시 예에 따른 변환 행렬의 계산과정을 설명하기 위한 도면.
도 5는 본 발명의 일 실시 예에 따른 관절 데이터 분류부에서 수행되는 처리 과정을 설명하기 위한 흐름도.
도 6은 본 발명의 일 실시 예에 따른 ID 추적부에서 수행되는 사용자 ID 할당 과정을 설명하기 위한 흐름도.
도 7은 본 발명의 다른 실시 예에 따른 ID 추적부에서 수행되는 사용자 ID 할당 과정을 설명하기 위한 흐름도.
도 8은 본 발명의 일 실시 예에 따라 새로운 사용자가 스캐닝 공간 내로 진입하는 경우를 설명하기 위한 도면.
도 9는 본 발명의 일 실시 예에 따라 새로운 사용자가 스캐닝 공간 내로 진입하는 경우 상기 새로운 사용자의 관절을 나타내는 관절 데이터에 새로운 사용자 ID를 할당하는 과정을 설명하기 위한 도면.
도 10은 본 발명의 일 실시 예에 따른 관절 합성부에서 수행되는 관절 데이터의 합성 과정을 설명하기 위한 흐름도.
도 11은 본 발명의 일 실시 예에 따른 관절 데이터의 합성 과정을 도식적으로 나타내는 도면.
도 12는 본 발명의 일 실시 예에 따른 깊이 데이터 분류에서 수행되는 깊이 데이터의 분류 과정을 나타내는 흐름도.
도 13은 본 발명의 일 실시 예에 따른 2차원 평면에 투영된 관절 데이터를 설명하기 위한 도면.
도 14는 본 발명의 일 실시 예에 따른 관절 데이터 보정부에서 깊이 데이터를 이용하여 관절 데이터를 보정하는 과정을 나타내는 흐름도.
도 15는 본 발명의 일 실시 예에 따른 샘플링 과정을 설명하기 위한 도면.
도 16은 본 발명의 일 실시 예에 따른 무릎 관절 위치의 추정을 설명하기 위한 도면.
도 17은 본 발명의 일 실시 예에 따른 데이터 결합부에 의해 획득된 사용자 자세 데이터의 일 예를 설명하기 위한 도면.
도 18은 본 발명의 다중 사용자 추적 장치가 적용될 수 있는 컴퓨팅 장치의 블록도.
1 is a block diagram showing the configuration of a multi-user posture tracking device according to an embodiment of the present invention.
2 is a view showing the arrangement structure of multiple sensors according to an embodiment of the present invention.
3 is a view for explaining joint data and depth data according to an embodiment of the present invention.
4 is a view for explaining a process of calculating a transformation matrix according to an embodiment of the present invention.
5 is a flow chart for explaining the processing performed in the joint data classification unit according to an embodiment of the present invention.
6 is a flowchart illustrating a user ID allocation process performed by the ID tracking unit according to an embodiment of the present invention.
7 is a flowchart illustrating a user ID allocation process performed by the ID tracking unit according to another embodiment of the present invention.
8 is a diagram for explaining a case where a new user enters into a scanning space according to an embodiment of the present invention.
9 is a diagram for explaining a process of assigning a new user ID to joint data representing a joint of the new user when a new user enters into a scanning space according to an embodiment of the present invention.
10 is a flowchart for explaining a process of synthesizing joint data performed by the joint synthesis unit according to an embodiment of the present invention.
11 is a diagram schematically showing a process of synthesizing joint data according to an embodiment of the present invention.
12 is a flowchart illustrating a process of classifying depth data performed in classifying depth data according to an embodiment of the present invention.
13 is a view for explaining joint data projected on a two-dimensional plane according to an embodiment of the present invention.
14 is a flowchart illustrating a process of correcting joint data using depth data in the joint data correction unit according to an embodiment of the present invention.
15 is a view for explaining a sampling process according to an embodiment of the present invention.
16 is a view for explaining the estimation of the knee joint position according to an embodiment of the present invention.
17 is a view for explaining an example of user posture data obtained by a data combining unit according to an embodiment of the present invention.
18 is a block diagram of a computing device to which the multi-user tracking device of the present invention can be applied.

이하, 본 발명의 다양한 실시 예가 첨부된 도면과 연관되어 기재된다. 본 발명의 다양한 실시 예는 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는 바, 특정 실시 예들이 도면에 예시되고 관련된 상세한 설명이 기재되어 있다. 그러나, 이는 본 발명의 다양한 실시 예를 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 다양한 실시예의 사상 및 기술 범위에 포함되는 모든 변경 및/또는 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용되었다.Hereinafter, various embodiments of the present invention will be described in connection with the accompanying drawings. Various embodiments of the present invention may have various modifications and various embodiments, and specific embodiments are illustrated in the drawings and related detailed descriptions are described. However, this is not intended to limit the various embodiments of the present invention to specific embodiments, and should be understood to include all modifications and/or equivalents or substitutes included in the spirit and scope of the various embodiments of the present invention. In connection with the description of the drawings, similar reference numerals have been used for similar elements.

본 발명의 다양한 실시예에서 사용될 수 있는"포함한다" 또는 "포함할 수 있다" 등의 표현은 개시(disclosure)된 해당 기능, 동작 또는 구성요소 등의 존재를 가리키며, 추가적인 하나 이상의 기능, 동작 또는 구성요소 등을 제한하지 않는다. 또한, 본 발명의 다양한 실시예에서, "포함하다" 또는 "가지다" 등의 용어는 명세서에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.Expressions such as “comprises” or “may include” that may be used in various embodiments of the present invention indicate the existence of a corresponding function, operation, or component disclosed, and additional one or more functions, operations, or The components and the like are not limited. In addition, in various embodiments of the present invention, terms such as “include” or “have” are intended to designate the existence of features, numbers, steps, operations, components, parts, or combinations thereof described in the specification, but one Or further features or numbers, steps, actions, components, parts, or combinations thereof, should not be excluded in advance.

본 발명의 다양한 실시예에서 "또는" 등의 표현은 함께 나열된 단어들의 어떠한, 그리고 모든 조합을 포함한 다. 예를 들어, "A 또는 B"는, A를 포함할 수도, B를 포함할 수도, 또는 A 와 B 모두를 포함할 수도 있다.In various embodiments of the present invention, expressions such as “or” include any and all combinations of words listed together. For example, "A or B" may include A, may include B, or may include both A and B.

본 발명의 다양한 실시예에서 사용된 "제 1," "제2", "첫째" 또는 "둘째," 등의 표현들은 다양한 실시예들의 다양한 구성요소들을 수식할 수 있지만, 해당 구성요소들을 한정하지 않는다. 예를 들어, 상기 표현들은 해당 구성요소들의 순서 및/또는 중요도 등을 한정하지 않는다. 상기 표현들은 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 수 있다. 예를 들어, 제1 사용자 기기와 제 2 사용자 기기는 모두 사용자 기기이며, 서로 다른 사용자 기기를 나타낸다. 예를 들어, 본 발명의 다양한 실시예의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.Expressions such as "first," "second," "first," or "second," used in various embodiments of the present invention may modify various elements of various embodiments, but do not limit the elements. Does not. For example, the above expressions do not limit the order and/or importance of the components. The above expressions can be used to distinguish one component from another component. For example, both the first user device and the second user device are user devices and represent different user devices. For example, the first component may be referred to as a second component without departing from the scope of rights of various embodiments of the present invention, and similarly, the second component may also be named as the first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 새로운 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성 요소와 상기 다른 구성요소 사이에 새로운 다른 구성요소가 존재하지 않는 것으로 이해될 수 있어야 할 것이다.When a component is said to be "connected" to or "connected" to another component, any component may be directly connected to or connected to the other component, but may not It will be understood that other new components may exist between the other components. On the other hand, when a component is said to be "directly connected" or "directly connected" to another component, it will be understood that no other new component exists between the component and the other components. You should be able to.

본 발명의 실시예에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명의 실시 예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.The terms used in the embodiments of the present invention are only used to describe specific embodiments, and are not intended to limit the embodiments of the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise.

도 1은 본 발명의 일 실시 예에 따른 다중 사용자 추적 장치를 도시한 블록도이다.1 is a block diagram illustrating a multi-user tracking device according to an embodiment of the present invention.

도 1을 참조하면, 전체 시스템(300)은 인체 모델 추출 장치(100) 및 사용자 자세 추적 장치(200)를 포함한다.Referring to FIG. 1, the entire system 300 includes a human body model extraction device 100 and a user posture tracking device 200.

인체 모델 추출 장치(100)는 유선 또는 무선 통신 기능을 갖는 컴퓨팅 장치일 수 있다. 인체 모델 추출 장치(100)는 다수의 사용자를 스캐닝하여 획득한 3차원 깊이 이미지로부터 3차원 인체 모델 데이터를 추출하고, 추출한 3차원 인체 모델 데이터를 유선 또는 무선 통신을 이용하여 사용자 자세 추적 장치(200)로 송신한다.The human body model extraction device 100 may be a computing device having a wired or wireless communication function. The human body model extracting device 100 extracts 3D human body model data from a 3D depth image obtained by scanning a plurality of users, and uses the wired or wireless communication to extract the 3D human body model data to track the user's posture (200) ).

이를 위해, 인체 모델 데이터 추출 장치(100)는, 다중 센서(110), 데이터 추출부(120), 송신부(130)를 포함한다.To this end, the human body model data extraction apparatus 100 includes a multi-sensor 110, a data extraction unit 120, and a transmission unit 130.

다중 센서(110)는, 다수의 사용자를 스캐닝하는 다수의 센서를 포함한다.The multiple sensors 110 include multiple sensors that scan multiple users.

각 센서는 다수의 사용자를 스캐닝하여, 다수의 사용자의 3차원 깊이 데이터를 포함하는 깊이 이미지를 생성한다. Each sensor scans multiple users to generate a depth image including 3D depth data of multiple users.

깊이 이미지를 생성하기 위해, 각 센서는, 예를 들면, RGB-Depth(RGB-D) 센서일 수 있다. RGB-D 센서는 키넥트(kinect) 센서로 불릴 수 있다. RGB-D 센서는 널리 알려진 센서로서, 이의 내부 구성 및 동작 방법에 대한 설명은 생략한다. To generate the depth image, each sensor can be, for example, an RGB-Depth (RGB-D) sensor. The RGB-D sensor can be called a kinect sensor. The RGB-D sensor is a well-known sensor, and a description of its internal configuration and operation method is omitted.

센서들의 개수나 배치 위치는 특별히 제한하지 않는다. 다만, 어떤 센서가 다른 사용자의 신체 부위에 의해 가려진 어떤 사용자의 신체 부위를 스캐닝하지 못할 때, 다른 센서가 어떤 사용자의 신체 부위를 스캐닝하도록 다수의 센서들이 균일한 간격으로 배치되는 것이 바람직하다. 예를 들면, 도 2에 도시된 바와 같이, 6개의 센서들(S1~S6)이 5명의 사용자들을 스캐닝하는 경우, 6개의 센서들(S1~S6)은 도 2에서 점선으로 표시된 정육각형의 꼭지점을 나타내는 위치에 배치된다. There is no particular limitation on the number of sensors or the placement of the sensors. However, when a sensor fails to scan a body part of a user obscured by a body part of another user, it is preferable that a plurality of sensors are arranged at uniform intervals so that the other sensor scans a body part of a user. For example, as illustrated in FIG. 2, when six sensors S1 to S6 scan five users, the six sensors S1 to S6 indicate an apex of a regular hexagon indicated by a dotted line in FIG. 2. It is placed at the indicated position.

데이터 추출부(120)는 각 센서로부터 입력된 3차원 깊이 이미지(이하, '깊이 이미지'라 함)로부터 3차원 인체 모델 데이터를 추출한다. 3차원 인체 모델 데이터는 도 3에 도시된 바와 같이, 사용자의 신체 형상을 깊이 포인트로 나타내는 3차원 깊이 데이터(이하, '깊이 데이터'라 함)와 사용자의 관절을 나타내는 3차원 관절 데이터(이하, '관절 데이터'라 함)를 포함한다. The data extraction unit 120 extracts 3D human body model data from a 3D depth image (hereinafter referred to as a “depth image”) input from each sensor. As shown in FIG. 3, the 3D human body model data includes 3D depth data (hereinafter referred to as “depth data”) representing a user's body shape as a depth point and 3D joint data (hereinafter, referred to as “depth data”). 'Joint data').

도 3에 도시된 바와 같이, 깊이 데이터는 관절을 둘러싸는 다수의 깊이 포인트로 나타낼 수 있다. 이러한 깊이 데이터는 사용자 깊이 이미지로부터 추출될 수 있다. 사용자 깊이 이미지는 사용자와 배경을 포함하는 깊이 이미지에서 상기 배경을 포함하는 배경 이미지를 제거하여 획득할 수 있다. As illustrated in FIG. 3, depth data may be represented by a number of depth points surrounding the joint. This depth data can be extracted from the user depth image. The user depth image may be obtained by removing a background image including the background from a depth image including the user and the background.

배경 이미지는 각 센서가 사용자가 없는 공간을 스캐닝하여 사전에 획득한 이미지일 수 있다. 깊이 이미지에서 배경 이미지를 제거하는 방법으로, 배경 제거 알고리즘 또는 객체 추출 알고리즘으로 알려진 다양한 영상 처리 알고리즘이 이용될 수 있다. 이러한 영상 처리 알고리즘은 공지된 것이므로, 이에 대한 설명은 생략한다. The background image may be an image previously acquired by scanning each sensor-less space. As a method of removing the background image from the depth image, various image processing algorithms known as a background removal algorithm or an object extraction algorithm can be used. Since such an image processing algorithm is known, a description thereof is omitted.

관절 데이터는 사용자를 나타내는 깊이 이미지(또는 사용자 깊이 데이터)로부터 획득할 수 있다. 예를 들면, 사전에 설정된 인체의 골격정보(skeleton information)를 기반으로 사용자 깊이 이미지로부터 관절로 연결된 신체 부위별 깊이 화소들의 3차원 좌표들을 획득하고, 획득한 3차원 좌표들을 기반으로 상기 관절 위치를 나타내는 관절 데이터를 획득할 수 있다. 사전에 설정된 인체의 골격정보(skeleton information)는, 예를 들면, 키넥트 SDK(Software Development Kit)로부터 획득할 수 있다.The joint data can be obtained from a depth image (or user depth data) representing the user. For example, based on predetermined skeleton information of a human body, 3D coordinates of depth pixels for each body part connected to a joint are obtained from a user's depth image, and the joint position is determined based on the obtained 3D coordinates. Indicating joint data can be obtained. Skeleton information of the human body set in advance may be obtained, for example, from Kinect SDK (Software Development Kit).

관절 데이터는 인체를 구성하는 다수의 관절들의 3차원 위치값들과 관절과 관절을 연결하는 관절 벡터를 포함하는 데이터일 수 있다. 관절은 명칭에 따라, 머리(head) 관절, 목(neck) 관절, 어깨(shoulder) 관절, 팔꿈치(elbow) 관절, 어깨 중심(shoulder center) 관절, 손목(wrist) 관절, 손(hand) 관절, 척추 중간(spine mid) 관절, 척추 받침(spine base) 관절, 무릎(knee) 관절, 발목(Ankle) 관절 등을 포함할 수 있다.The joint data may be data including a 3D position value of a plurality of joints constituting a human body and a joint vector connecting joints and joints. According to the name, the head joint, head joint, neck joint, shoulder joint, elbow joint, shoulder center joint, wrist joint, hand joint, It may include a spine mid joint, a spine base joint, a knee joint, and an ankle joint.

도 3에 도시된 바와 같이, 깊이 데이터는 인체의 외곽 라인과 그 내부에 분포하는 깊이 포인트들로 나타낼 수 있으며, 관절 데이터는 깊이 포인트들이 분포하는 영역 내에 존재하는 관절을 나타낸다. As illustrated in FIG. 3, the depth data may be represented by an outer line of the human body and depth points distributed therein, and the joint data indicate a joint existing in an area in which the depth points are distributed.

송신부(130)는 관절 데이터와 깊이 데이터를 포함하는 3차원 인체 모델 데이터를 유선 또는 무선 통신 방식에 따라 사용자 자세 추정 장치(200)로 송신한다. 송신부(130)는 통신 인터페이스 또는 네트워크 인터페이스일 수 있다. 이하에서는 깊이 데이터라는 용어가 '깊이 포인트'라는 용어로 대체될 수 있다. 깊이 포인트는 '깊이 포인트의 3차원 좌표'라는 용어로 대체될 수 있다. 따라서, 깊이 데이터, 깊이 포인트 및 깊이 포인트의 3차원 좌표는 특별히 언급하지 않는 한 동일한 용어로 간주한다.The transmitter 130 transmits 3D human body model data including joint data and depth data to the user posture estimation apparatus 200 according to a wired or wireless communication method. The transmitter 130 may be a communication interface or a network interface. Hereinafter, the term depth data may be replaced with the term'depth point'. The depth point can be replaced with the term'three-dimensional coordinates of the depth point'. Therefore, depth data, depth points and three-dimensional coordinates of depth points are regarded as the same terms unless otherwise specified.

사용자 자세 추적 장치(200)는 유선 또는 무선 통신 기능을 갖는 컴퓨팅 장치일 수 있다. 사용자 자세 추적 장치(200)는 인체 모델 추출 장치(100)로부터 수신된 3차원 인체 모델 데이터를 이용하여 다수의 사용자의 관절 데이터를 추적하고, 동시에 관절 데이터와 매칭 관계에 있는 사용자 ID를 추적하여, 사용자 별로 명확히 식별되는 연속적인 자세를 추적한다.The user posture tracking device 200 may be a computing device having a wired or wireless communication function. The user posture tracking apparatus 200 tracks the joint data of a plurality of users using the 3D human body model data received from the human body model extraction apparatus 100, and at the same time tracks the user ID in a matching relationship with the joint data, It tracks a continuous posture that is clearly identified for each user.

이를 위해, 사용자 자세 추적 장치(200)는, 수신부(210), 좌표계 변환부(220), 관절 데이터 분류부(230), ID 추척부(240), 관절 혼합부(250), 깊이 데이터 분류부(260), 관절 데이터 보정부(270), 데이터 결합부(280) 및 메모리(290)를 포함한다.To this end, the user posture tracking apparatus 200 includes a receiving unit 210, a coordinate system conversion unit 220, a joint data classification unit 230, an ID tracking unit 240, a joint mixing unit 250, and a depth data classification unit 260, a joint data correction unit 270, a data combining unit 280 and a memory 290.

수신부(210)Receiver 210

수신부(210)는, 인체 모델 추출 장치(100)로부터, 깊이 데이터와 관절 데이터를 포함하는 3차원 인체 모델 데이터를 유선 또는 무선 통신을 이용하여 수신한다. 수신부(210)는, 예를 들면, 유선 또는 무선 통신을 지원하는 통신 인터페이스 또는 네트워크 인터페이스일 수 있다.The reception unit 210 receives 3D human body model data including depth data and joint data from the human body model extraction apparatus 100 using wired or wireless communication. The reception unit 210 may be, for example, a communication interface or a network interface supporting wired or wireless communication.

좌표계 변환부(220)Coordinate system conversion unit 220

센서들은 각자의 센서 좌표계에서 표현되는 깊이 이미지들을 생성하기 때문에, 이러한 깊이 이미지들로부터 추출된 인체 모델 데이터들(관절 데이터 및 깊이 데이터)은 서로 일치하지 않는다. 따라서, 인체 모델 데이터들을 하나의 가상 좌표계에서 표현되는 데이터로 각각 변환할 필요가 있으며, 이러한 과정을 수행하는 구성이 좌표계 변환부(220)이다. Since the sensors generate depth images represented in their respective sensor coordinate systems, the human body model data (joint data and depth data) extracted from these depth images do not match each other. Therefore, it is necessary to convert human body model data into data represented in one virtual coordinate system, and the configuration for performing this process is the coordinate system conversion unit 220.

좌표계 변환부(220)는, 서로 다른 센서 좌표계에서 표현되는 인체 모델 데이터의 위치 좌표를 하나의 가상 좌표계에서 표현되는 위치 좌표로 변환한다. 이때, 가상 좌표계는 다수의 센서들 중에서 어느 하나의 센서 좌표계일 수 있다. The coordinate system conversion unit 220 converts position coordinates of human body model data expressed in different sensor coordinate systems into position coordinates expressed in one virtual coordinate system. In this case, the virtual coordinate system may be any one of a plurality of sensors.

3차원 인체 모델 데이터들의 위치 좌표를 가상 좌표계에서 표현되는 위치 좌표로 변환하기 위해, 좌표계 변환부(220)는 각 센서에 대한 변환 행렬을 계산한다.In order to convert the position coordinates of the 3D human body model data into position coordinates expressed in a virtual coordinate system, the coordinate system conversion unit 220 calculates a transformation matrix for each sensor.

좌표계 변환부(220)는 상기 계산된 변환 행렬을 이용하여 인체 모델 데이터의 위치 좌표를 회전 및 이동시켜 가상 좌표계에서 표현되는 위치 좌표로 변환한다.The coordinate system transformation unit 220 rotates and moves the position coordinates of the human body model data using the calculated transformation matrix to convert it to position coordinates expressed in the virtual coordinate system.

상기 변환 행렬을 계산하는 과정은 도 4를 참조하여 설명하기로 한다. The process of calculating the transformation matrix will be described with reference to FIG. 4.

변환 행렬을 계산하기에 앞서, 먼저, 사용자가 캘리브레이션 도구(tool)를 준비한다. 캘리브레이션 도구는, 예를 들면, 얇고 긴 막대기와 긴 막대기의 끝부분에 큐브 형태의 물체가 형성된 것일 수 있다. Before calculating the transformation matrix, first, the user prepares a calibration tool. The calibration tool may be, for example, a thin long stick and a cube-shaped object formed at the end of the long stick.

캘리브레션 도구가 준비되면, 사용자가 캘리브레이션 도구(tool)의 막대기 부분을 잡은 상태에서 스캐닝 공간을 움직인다. When the calibration tool is ready, the user moves the scanning space while holding the stick portion of the calibration tool.

이후, 센서들은 상기 큐브 형태의 물체(이하, '도구'라 한다.)에 대응하는 깊이 데이터를 매 프레임 단위로 생성한다.Thereafter, the sensors generate depth data corresponding to the cube-shaped object (hereinafter, referred to as a'tool') in every frame unit.

이후, 데이터 추출부(120)가, 도 4에 도시된 바와 같이, 각 프레임에서 센서들(S1~Sn)로부터 획득한 도구를 나타내는 깊이 데이터로부터 계산되는 평균 위치를 계산하여 메모리(도시하지 않음)에 저장한다. 여기서, 평균 위치는 도구(큐빅 형태의 물체)를 나타내는 깊이 데이터를 구성하는 깊이 화소들의 위치값들의 평균을 의미한다.Thereafter, the data extracting unit 120 calculates an average position calculated from depth data representing tools obtained from the sensors S1 to Sn in each frame, as shown in FIG. 4, and memory (not shown) To save. Here, the average position means an average of position values of depth pixels constituting depth data representing a tool (cubic object).

프레임 1~N 동안 계산된 도구의 평균 위치는 일부 프레임에서 장애물에 의해 가려지는 원인으로 인해 획득하지 못할 수도 있기 때문에, 매 프레임에서 획득된 평균 위치에 대한 데이터(K1, K2, …, Kn)만이 변환 행렬을 계산하는데 이용된다.Since the average position of the tool calculated during frames 1 to N may not be obtained due to the reason that is obscured by obstacles in some frames, data on the average position obtained in each frame (K 1 , K 2 , …, K Only n ) is used to compute the transformation matrix.

이후, 포인트 매칭 알고리즘(42)에 따라, 획득된 평균 위치에 대한 데이터(K1, K2, …, Kn)에 대해 포인트 매칭을 수행하여, 각 센서의 센서 좌표계에서 표현되는 인체 모델 데이터를 하나의 가상 좌표계에서 표현 가능한 인체 모델 데이터로 변환하기 위한 변환 행렬(44)이 계산된다. 여기서, 포인트 매칭 알고리즘(42)은, 예를 들면, ICP(iterative closest points)일 수 있다.Subsequently, according to the point matching algorithm 42, point matching is performed on the obtained data (K 1 , K 2 , …, K n ) for the average position, and human body model data expressed in the sensor coordinate system of each sensor is obtained. A transformation matrix 44 for converting human body model data that can be represented in one virtual coordinate system is calculated. Here, the point matching algorithm 42 may be, for example, iterative closest points (ICP).

관절 데이터 Joint data 분류부Classification (230)(230)

관절 데이터 분류부(230)는, 하나의 가상 좌표계에서 표현 가능하도록 변환된 관절 데이터를 사용자 별로 분류한다. 관절 데이터 분류부(230)에 대해서는 도 5를 참조하여 설명하기로 한다.The joint data classification unit 230 classifies the joint data converted to be representable in one virtual coordinate system for each user. The joint data classification unit 230 will be described with reference to FIG. 5.

도 5는 본 발명의 일 실시 예에 따른 관절 데이터 분류부에서 관절 데이터를 분류하는 방법을 나타내는 흐름도이다.5 is a flowchart illustrating a method of classifying joint data in a joint data classification unit according to an embodiment of the present invention.

도 5를 참조하면, 하나의 가상 좌표계에서 표현되도록 캘리브레이션된 다수의 사용자에 대한 관절 데이터가 좌표계 변환부(220)로부터 관절 데이터 분류부(230)로 순차적으로 입력된다. Referring to FIG. 5, joint data for a plurality of users calibrated to be represented in one virtual coordinate system is sequentially input from the coordinate system transformation unit 220 to the joint data classification unit 230.

단계 S510에서, 다수의 사용자에 대한 관절 데이터 중에서 제일 먼저 입력되는 제1 관절 데이터를 제1 관절 저장소에 저장하는 과정이 수행된다. In step S510, a process of storing the first joint data that is input first among the joint data for a plurality of users in the first joint storage is performed.

이어, 단계 S520에서, 상기 제1 관절 저장소에 저장된 제1 관절 데이터에 의해 나타나는 관절 위치값과 제1 관절 데이터에 이어 두 번째로 입력되는 제2 관절 데이터에 의해 나타나는 관절 위치값 사이의 거리값을 계산하는 과정이 수행된다. 여기서, 제2 관절 데이터는 상기 제1 관절 데이터를 제공하는 센서와 다른 센서로부터 획득한 관절 데이터일 수 있으며, 상기 제1 관절 데이터에 대응하는 사용자와 동일한 사용자 또는 다른 사용자의 관절 데이터일 수 있다.Subsequently, in step S520, the distance value between the joint position value indicated by the first joint data stored in the first joint store and the joint position value indicated by the second joint data input second after the first joint data is determined. The calculation process is performed. Here, the second joint data may be joint data obtained from a sensor different from the sensor providing the first joint data, and may be joint data of the same user or another user as the user corresponding to the first joint data.

이어, 단계 S530에서, 상기 거리값과 기준값(δ)을 비교하는 과정이 수행된다. 이러한 비교 과정을 통해, 제1 센서에 의해 획득된 상기 제1 관절 데이터와 제2 센서에 의해 획득된 상기 제2 관절 데이터가 동일한 사용자의 관절을 나타내는 것인지 서로 다른 사용자의 관절을 나타내는 것인지를 판단할 수 있다. 여기서, 기준값(δ)은 상기 제1 관절 데이터와 상기 제2 관절 데이터 간의 유사도를 판단하기 위해 사전에 설정한 값으로써, 설계에 따라 다양하게 변경될 수 있다.Subsequently, in step S530, a process of comparing the distance value and the reference value δ is performed. Through this comparison process, it is determined whether the first joint data obtained by the first sensor and the second joint data acquired by the second sensor indicate joints of the same user or joints of different users. Can. Here, the reference value δ is a value set in advance to determine the similarity between the first joint data and the second joint data, and may be variously changed according to design.

이어, 단계 S540에서, 상기 거리값이 상기 기준값(δ) 이하인 경우, 상기 제2 관절 데이터를 제1 관절 데이터가 저장된 상기 제1 관절 저장소에 저장하여, 상기 제1 관절 데이터와 상기 제2 관절 데이터를 동일한 사용자의 관절을 나타내는 관절 데이터로 분류한다. Subsequently, in step S540, when the distance value is equal to or less than the reference value (δ), the second joint data is stored in the first joint storage in which the first joint data is stored, so that the first joint data and the second joint data are stored. Is classified as joint data representing joints of the same user.

반대로, 단계 S550에서, 상기 거리값이 기준값(δ)을 초과한 경우, 상기 제2 관절 데이터를 제2 관절 저장소에 저장하여, 상기 제1 관절 데이터와 상기 제2 관절 데이터가 서로 다른 사용자의 관절을 나타내는 관절 데이터로 분류한다.Conversely, in step S550, when the distance value exceeds the reference value (δ), the second joint data is stored in a second joint storage, so that the first joint data and the second joint data are different from each other of the user's joint It is classified as joint data.

이어, 단계 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) 내에서 서로 논리적으로 구분되는 저장 영역들로 정의할 수 있다. Subsequently, in step S560, steps S510 to S540 are repeatedly performed for the remaining joint data. For example, when it is assumed that the first joint data is stored in the first joint storage and the second joint data is stored in the second joint storage, the third joint data input next to the second joint data is described above. According to one method (S520 and S530), after comparing with the first and second joint data, respectively, if the third joint data is similar to the first joint data, and stored in the first joint storage, if the second joint data is similar , It is stored in the second joint storage. At this time, if the third joint data is not similar to both the first and second joint data, the third joint data is stored in the third joint storage. Here, the first to third joint storages may be defined as storage areas logically separated from each other in the memory 290.

이와 같이, 순차적으로 입력되는 나머지 모든 관절 데이터에 대해 단계 S510 내지 S540의 반복 수행이 완료되면, 각 관절 저장소에 사용자 별로 분류된 관절 데이터가 저장된다.As described above, when repetition of steps S510 to S540 is completed for all remaining joint data sequentially input, joint data classified for each user is stored in each joint storage.

ID ID 추척부Vertebra (240)(240)

ID 추적부(240)는, 관절 데이터 분류부(230)에 의해, 사용자 별로 분류된 관절 데이터에 사용자 ID를 할당, 삭제 및 업데이트하여, 관절 데이터에 할당된 사용자 ID를 실시간으로 추적한다.The ID tracking unit 240 allocates, deletes and updates the user ID to the joint data classified for each user by the joint data classification unit 230 to track the user ID assigned to the joint data in real time.

ID 추적부(240)의 처리 과정은 도 6을 참조하여 설명하기로 한다.The process of processing the ID tracking unit 240 will be described with reference to FIG. 6.

도 6은 본 발명의 일 실시 예에 따른 ID 추적부의 처리 과정을 설명하기 위한 순서도이다.6 is a flowchart illustrating a process of an ID tracking unit according to an embodiment of the present invention.

도 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 저장소에 저장한다.Referring to FIG. 6, in step S610, a process of allocating a user ID to joint data (hereinafter, previous joint data) classified by the joint data classification unit 230 in the previous frame and storing the ID in the ID storage is performed. For example, the joint data classification unit 230, in the previous frame, previous joint data (J1 n -1 ) generated by the first sensor S1 and previous joint data generated by the second sensor S2. The previous joint data (J3 n-1 ) generated by (J2 n -1 ) and the third sensor S3 are classified as joint data representing the joint of the same user, and the previous joint data (J1 n-1 , J2 n) When -1 , J3 n - 1 ) is stored in the first joint storage, the ID tracker 240, in the previous frame, previous joint data (J1 n -1 , J2 n -1 , stored in the first joint storage) ID 0 is assigned to J3 n - 1 ), and the previous joint data (J1 n -1 , J2 n -1 , J3 n - 1 ) to which ID 0 is assigned is stored in the ID storage.

이어, 단계 S620에서, 현재 프레임에서 관절 데이터 분류부(230)에 의해 분류된 현재 관절 데이터와 이전 프레임에서 상기 ID 저장소에 저장된 이전 관절 데이터 간의 매칭 관계를 계산하는 과정이 수행된다. 여기서, 매칭 관계를 계산하는 방법으로, 예를 들면, 그래프 이론에 따른 최소 가중치 이분 매칭(Minimum-Cost Bipartite Matching) 기법이 이용될 수 있다.Subsequently, in step S620, a process of calculating a matching relationship between the current joint data classified by the joint data classification unit 230 in the current frame and the previous joint data stored in the ID storage in the previous frame is performed. Here, as a method of calculating the matching relationship, for example, a minimum-weighted bipartite matching technique according to graph theory may be used.

이어, 단계 S630에서, 상기 매칭 관계를 계산한 결과에 따라, 상기 이전 관절 데이터와 상기 현재 관절 데이터가 매칭되면, 상기 이전 관절 데이터에 할당된 사용자 ID와 동일한 사용자 ID를 상기 현재 관절 데이터에 할당하는 과정이 수행된다. 단계 S630을 하나의 센서(S1)에 의해 생성된 관절 데이터를 기준으로 설명하면, 제1 센서(S1)에 의해 생성된 이전 관절 데이터(J1n - 1)와 제1 센서(S1)에 의해 생성된 현재 관절 데이터(J1n)가 매칭되면, ID 추적부(240)가 이전 관절 데이터(J1n - 1)에 할당된 ID0를 현재 관절 데이터(J1n)에 할당한다.Subsequently, in step S630, when the previous joint data and the current joint data are matched according to the result of calculating the matching relationship, the same user ID assigned to the previous joint data is allocated to the current joint data. The process is carried out. If step S630 is described based on the joint data generated by one sensor S1, the previous joint data J1 n 1 generated by the first sensor S1 and the first sensor S1 are generated. When the current joint data J1 n is matched, the ID tracking unit 240 allocates ID 0 allocated to the previous joint data J1 n - 1 to the current joint data J1 n .

이어, 단계 S640에서, 상기 이전 관절 데이터에 할당된 사용자 ID와 동일한 사용자 ID가 할당된 상기 현재 관절 데이터를 상기 이전 관절 데이터를 업데이트한 관절 데이터로서 상기 ID 저장소에 저장하는 과정이 수행된다. 즉, 이전 관절 데이터(J1n-1)에 할당된 ID0와 동일한 ID0가 할당된 현재 관절 데이터(J1n)를, 이전 관절 데이터(J1n-1)를 업데이트한 관절 데이터로서, 상기 ID 저장소에 저장한다. Subsequently, in step S640, a process of storing the current joint data in which the same user ID as the user ID allocated to the previous joint data is allocated as the updated joint data in the ID storage is performed. That is, the previous joint data (J1 n-1) the current joint data, the same ID 0 and the ID 0 is assigned is assigned to (J1 n) a, as joint data, updating the previous joint data (J1 n-1), the ID Store in storage.

한편, ID 저장소는 메모리(290) 내에서 관절 저장소와 논리적으로 구분되는 저장 영역일 수 있다. Meanwhile, the ID storage may be a storage area logically separated from the joint storage in the memory 290.

도 7은 본 발명의 다른 실시 예에 따른 ID 추적부의 처리 과정을 설명하기 위한 순서도이고, 도 8은 본 발명의 일 실시 예에 따른 새로운 사용자가 스캐닝 공간 내로 진입하는 경우를 설명하기 위한 도면이고, 도 9는 본 발명의 일 실시 예에 따른 새로운 사용자가 스캐닝 공간 내로 진입하는 경우 상기 새로운 사용자의 관절을 나타내는 관절 데이터에 새로운 사용자 ID를 할당하는 과정을 설명하기 위한 도면이다.7 is a flowchart for explaining a process of an ID tracking unit according to another embodiment of the present invention, and FIG. 8 is a view for explaining a case where a new user enters into a scanning space according to an embodiment of the present invention, FIG. 9 is a diagram for explaining a process of assigning a new user ID to joint data representing a joint of the new user when a new user enters the scanning space according to an embodiment of the present invention.

본 발명의 다른 실시 예에 따른 ID 추적부의 처리 과정은 현재 프레임에서 추적해야 하는 사용자의 수(KUSER)가 이전 프레임에서 생성된(또는 할당된) 서로 다른 사용자 ID의 개수(KID) 보다 많은 경우에서 관절 데이터에 사용자 ID를 할당하는 과정을 설명하는 점에서 현재 프레임에서의 추적해야 하는 사용자의 수(KUSER)와 이전 프레임에서 생성된(또는 할당된) 서로 다른 사용자 ID의 수(KID)가 동일한 경우에서 관절 데이터에 사용자 ID를 할당하는 과정을 설명하는 전술한 실시 예에 따른 ID 추적부의 처리 과정과 차이가 있다.In the process of processing the ID tracking unit according to another embodiment of the present invention, the number of users to be tracked in the current frame (K USER ) is greater than the number of different user IDs (K ID ) generated (or allocated) in the previous frame. The number of users to be tracked in the current frame (K USER ) and the number of different user IDs created (or assigned) in the previous frame (K ID ) in the case of explaining the process of assigning a user ID to joint data in a case ) Is different from the process of the ID tracking unit according to the above-described embodiment, which describes the process of assigning the user ID to the joint data in the same case.

현재 프레임에서 추적해야 하는 사용자의 수(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를 삭제할 필요가 있다.An example in which the number of users (K USER ) to be tracked in the current frame is greater than the number (K ID ) of different user IDs generated (or allocated) in the previous frame is illustrated in FIG. 8. As illustrated in FIG. 8, assuming a situation in which two sensors S1 and S2 track two user postures in the previous frame, the ID tracking unit 240 first sensor S1 in the previous frame the joint data showing the joint of the user a obtained by (J a _S1) and a second sensor (S2) assigned to the ID 0 in the joint data (J a _S2) represents the joint of the user a acquired by, the first ID 1 will be assigned to the joint data (J B_S1 ) representing the joint of the user B obtained by the sensor S1 and the joint data (J B_S2 ) representing the joint of the user B acquired by the second sensor S2. . At this time, when the user C enters the space 90 in which the first and second sensors S1 and S2 scan the user in the current frame (hereinafter referred to as a'scanning space'), the first and second sensors S1 , It is necessary to assign a new user ID to the joint data representing the joint of user C obtained by S2). Conversely, when the user C leaves the scanning space 90 in the next frame, it is necessary to delete the user ID assigned to the joint data for the user C.

이하, 새로운 사용자가 스캐닝 공간 내로 진입하거나 어떤 사용자가 스캐닝 공간 밖으로 이탈하는 경우에서 사용자 ID를 할당 및 삭제하는 방법을 도 7을 참조하여 상세히 기술한다.Hereinafter, a method for allocating and deleting a user ID when a new user enters into a scanning space or when a user leaves the scanning space will be described in detail with reference to FIG. 7.

도 7을 참조하면, 먼저, 단계 S710에서, 이전 프레임에서 이전 관절 데이터에 할당된 서로 다른 사용자 ID의 수(KID)와 현재 프레임에서 추적해야 하는 사용자의 수(KUser)를 비교하는 과정이 수행된다. 여기서, 현재 프레임에서 추적해야 하는 사용자의 수(KUser)는, 관절 데이터 분류부(230)가 현재 프레임에서 사용자 별로 관절 데이터를 분류하기 위해, 관절 데이터 분류부(230)의 저장 명령에 따라 메모리(290)가 내부에 할당한 저장 공간(관절 저장소)의 개수 또는 사용자 별로 관절 데이터를 분류한 분류 개수로부터 획득될 수 있다.Referring to FIG. 7, first, in step S710, a process of comparing the number of different user IDs (K ID ) allocated to the previous joint data in the previous frame with the number of users (K User ) to be tracked in the current frame Is performed. Here, the number of users to be tracked in the current frame (K User ), the joint data classification unit 230 in order to classify the joint data for each user in the current frame, the memory according to the storage command of the joint data classification unit 230 It may be obtained from the number of storage spaces (joint storage) allocated to the inside by 290 or the number of classifications that classify joint data for each user.

이어, 단계 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이다.Subsequently, in step S720, when K USER > K ID , it is determined that a new user has entered the scanning space of the plurality of sensors (90 in FIG. 8), and the ID tracking unit 240 joint data classification unit 230 ), a process of assigning a new user ID to joint data further classified according to the new user is performed. Thereafter, a process of storing the new user ID and the joint data for the new user in the ID storage is performed. 9 shows a process in which a new user ID is assigned to joint data for a new user. In FIG. 9, reference symbols J C _S1 and J C _S2 are joint data representing the joint of the new user (user C) scanned by the first sensor S1 in the current frame, and the new user scanned by the second sensor S2 ( Represents the joint data representing the joint of the user C), and reference symbol ID 2 is a new user ID assigned to J C _S1 and J C _S2 .

반대로, KUser < KID인 경우, 단계 S730에서, 현재 프레임에서 상기 다수의 센서의 스캐닝 공간(도 8의 90) 밖으로 기존 사용자가 이탈한 것으로 판단하여, 이전 프레임에서 생성된 상기 기존 사용자에 대한 관절 데이터와 상기 기존 사용자의 관절을 나타내는 관절 데이터에 할당된 사용자 ID를 상기 ID 저장소에서 삭제하는 과정이 수행된다.Conversely, if K User <K ID , in step S730, it is determined that an existing user has left the scanning space of the plurality of sensors in the current frame (90 in FIG. 8), and for the existing user generated in the previous frame. The process of deleting the user ID assigned to the joint data and the joint data representing the joint of the existing user from the ID storage is performed.

이상 도 7 내지 8를 참조하여 설명한 바와 같이, ID 추적부(240)는 관절 데이터 분류부(230)에 의해 사용자 별로 분류된 관절 데이터에 사용자 ID를 실시간으로 할당, 업데이트 및 삭제함으로써, 매프레임 단위로 각 사용자에 대한 관절 데이터에 할당된 사용자 ID의 추적이 가능하다. 동시에 ID 추적부(240)에 의해, 관절 데이터에 할당된 사용자 ID를 실시간으로 추적함으로써, 사용자 별로 명확히 식별되는 연속적인 자세를 추적할 수 있다.As described above with reference to FIGS. 7 to 8, the ID tracking unit 240 allocates, updates and deletes user IDs in real time to joint data classified for each user by the joint data classification unit 230, in units of every frame. It is possible to track the user ID assigned to the joint data for each user. At the same time, by tracking the user ID assigned to the joint data in real time by the ID tracking unit 240, it is possible to track a continuous posture clearly identified for each user.

관절 joint 합성부Synthesis (250)(250)

관절 합성부(250)는 ID 추적부(240)에 의해 동일한 사용자 ID로 분류된 관절 데이터를 합성하고, 상기 합성한 관절 데이터를 이용하여 각 사용자의 관절 위치를 실시간으로 추정한다. The joint synthesis unit 250 synthesizes joint data classified by the ID tracking unit 240 into the same user ID, and estimates the joint position of each user in real time using the synthesized joint data.

도 10은 본 발명의 일 실시 예에 따른 관절 합성부에서 수행되는 관절 데이터의 합성 과정을 설명하기 위한 흐름도이다.10 is a flowchart illustrating a process of synthesizing joint data performed by the joint synthesis unit according to an embodiment of the present invention.

도 10을 참조하면, 단계 S1010에서, 동일한 사용자 ID가 할당된 관절 데이터가 k(2이상의 자연수)개의 관절 데이터를 포함하는 경우, k개의 관절 데이터 각각에 의해 생성되는 이전 관절 벡터와 현재 관절 벡터를 이용하여, 상기 k개의 관절 데이터에 대응하는 k개의 가중치들을 계산하는 과정이 수행된다. 여기서, 관절 벡터는 관절 벡터의 크기값과 관절 벡터 방향값을 포함한다. 관절 벡터 크기값은 관절과 관절 사이의 거리값이고, 관절 벡터의 방향값은 관절과 관절을 연결하는 벡터의 방향값일 수 있다. 이전 관절 벡터는 이전 프레임에서 획득된 관절 데이터로부터 생성되는 벡터이고, 현재 관절 벡터는 현재 프레임에서 획득된 관절 데이터로부터 생성되는 벡터로 정의한다. 가중치들 각각은 아래의 수학식 1에 의해 계산될 수 있다.Referring to FIG. 10, in step S1010, when the joint data to which the same user ID is assigned includes k (natural numbers of 2 or more) joint data, the previous joint vector and the current joint vector generated by each of the k joint data are used. Using, a process of calculating k weights corresponding to the k joint data is performed. Here, the joint vector includes a size value of the joint vector and a direction value of the joint vector. The joint vector size value is a distance value between the joint and the joint, and the direction value of the joint vector may be a direction value of the vector connecting the joint and the joint. The previous joint vector is a vector generated from joint data obtained in the previous frame, and the current joint vector is defined as a vector generated from joint data obtained in the current frame. Each of the weights can be calculated by Equation 1 below.

Figure pat00001
Figure pat00001

여기서,

Figure pat00002
는 가중치이고,
Figure pat00003
는 이전 프레임에서 획득한 i 번째 관절 데이터로부터 생성된 이전 관절 벡터이고,
Figure pat00004
는 현재 프레임에서 획득한 i 번째 관절 데이터로부터 생성된 현재 관절 벡터이고,
Figure pat00005
는 상기
Figure pat00006
와 상기
Figure pat00007
의 벡터 내적을 나타내는 연산기호이다.here,
Figure pat00002
Is the weight,
Figure pat00003
Is the previous joint vector generated from the i-th joint data obtained in the previous frame,
Figure pat00004
Is the current joint vector generated from the i-th joint data obtained in the current frame,
Figure pat00005
The above
Figure pat00006
And remind
Figure pat00007
It is an operation symbol representing the vector dot product of.

이어, 단계 S1020에서, 전단계에 의해 계산된 상기 k개의 가중치들의 가중치 평균을 계산하는 과정이 수행된다. 가중치 평균은 아래의 수학식 2에 의해 계산될 수 있다.Subsequently, in step S1020, a process of calculating a weighted average of the k weights calculated by the previous step is performed. The weight average can be calculated by Equation 2 below.

Figure pat00008
Figure pat00008

여기서,

Figure pat00009
은 가중치 평균이고, k 는 동일한 사용자 ID가 할당된 관절 데이터의 개수이다.here,
Figure pat00009
Is a weighted average, and k is the number of joint data to which the same user ID is assigned.

이어, 단계 S1030에서, 상기 수학식 1에 의해 계산된 k개의 가중치들 중에서 상기 수학식 2에 의해 계산된 가중치 평균보다 크거나 같은 가중치들(

Figure pat00010
)을 선정하는 과정이 수행된다. Subsequently, in step S1030, among the k weights calculated by Equation 1, weights greater than or equal to a weight average calculated by Equation 2 (
Figure pat00010
) Is selected.

이어, 단계 S1040에서, 전단계 S1030의 수행에 따라 선정된 가중치들에 각각 대응하는 관절 데이터를 합성하는 과정이 수행된다. 이러한 합성과정은 아래의 수학식 3에 의해 계산될 수 있다.Subsequently, in step S1040, a process of synthesizing joint data respectively corresponding to the weights selected according to the performance of the previous step S1030 is performed. This synthesis process can be calculated by Equation 3 below.

Figure pat00011
Figure pat00011

Figure pat00012
Figure pat00012

여기서,

Figure pat00013
는 각 사용자의 최적의 관절 위치를 나타내는 관절 벡터이고,
Figure pat00014
는 현재 프레임에서 획득한 i 번째 관절 데이터의 관절 벡터이다. here,
Figure pat00013
Is a joint vector representing the optimal joint position of each user,
Figure pat00014
Is a joint vector of i-th joint data obtained in the current frame.

수학식 3에 따르면,

Figure pat00015
에 의해, 가중치 평균(
Figure pat00016
) 이상인 가중치(
Figure pat00017
)에 대응하는 현재 관절 벡터들에 대해서만 합성이 진행됨을 알 수 있다.According to Equation 3,
Figure pat00015
By, weighted average (
Figure pat00016
) Or higher weight (
Figure pat00017
It can be seen that synthesis is performed only for the current joint vectors corresponding to ).

각 센서로부터 획득되는 관절 데이터는 바라보는 방향에 따라 좌/우가 바뀔 수 있고, 가려짐 등을 이유로, 관절 위치를 정확하게 추적하지 못하는 경우가 있을 수 있다. 또한, 관절 데이터에 포함된 노이즈로 인해, 관절 위치를 정확하게 추적하지 못하는 경우가 있을 수 있다. 그러므로 단순히 관절 위치에 대한 평균 값을 계산하는 방법에는 문제가 있다. The joint data obtained from each sensor may change left/right depending on the viewing direction, and may be unable to accurately track the joint position due to occlusion or the like. In addition, due to noise included in the joint data, there may be cases where the joint position cannot be accurately tracked. Therefore, there is a problem with the method of simply calculating the average value for the joint position.

이에 본 발명의 일 실시 예에서는, 최적의 관절 위치를 추정하기 위해, 입력된 관절 데이터로부터 최적의 관절 위치를 추정하기 위해, 상기 수학식 1에 의해, 이전 관절 벡터와의 각도 변화량이 최소인 현재 관절 벡터에 대해 높은 가중치(

Figure pat00018
)를 설정하여, 수학식 3의
Figure pat00019
에 따라, 가중치 평균(
Figure pat00020
) 이상인 가중치(
Figure pat00021
)가 설정된 현재 관절 벡터들(신뢰할 수 있는 관절 데이터들)만을 수학식 3의
Figure pat00022
에 따라 합성함으로써, 각 사용자의 관절 위치가 정확하게 추정될 수 있다. 즉, 가중치 평균(
Figure pat00023
) 미만의 가중치(
Figure pat00024
)와 관련된 현재 관절 벡터들은 신뢰할 수 없는 관절 데이터들로 판단하여 수학식 3의 계산과정에 따라 수행되는 관절 합성 과정에서 제외된다.Accordingly, in one embodiment of the present invention, in order to estimate the optimal joint position, and to estimate the optimal joint position from the input joint data, by the equation (1), the current angle change with the previous joint vector is the minimum High weight for joint vectors (
Figure pat00018
) By setting
Figure pat00019
According to the weighted average (
Figure pat00020
) Or higher weight (
Figure pat00021
) Is set only the current joint vectors (trusted joint data) of Equation 3
Figure pat00022
By synthesizing according to, the joint position of each user can be accurately estimated. That is, the weighted average (
Figure pat00023
Weight less than)
Figure pat00024
), the current joint vectors related to) are judged as unreliable joint data and are excluded from the joint synthesis process performed according to the calculation process of Equation 3.

이하, 수학식 1 내지 3의 이해를 돕기 위해, 도 11을 참조하여 관절 합성 과정의 일 예를 설명하기로 한다. Hereinafter, an example of a joint synthesis process will be described with reference to FIG. 11 to help understanding of Equations 1 to 3.

도 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 라 가정한다. Prior to description with reference to FIG. 11, it is assumed that three joint data to which ID 0 is allocated is stored in the ID storage. At this time, three current joint vectors generated by three joint data allocated with ID 0 in the current frame are denoted as J 1 v cur , J 2 v cur , and J 3 v cur , respectively, and ID 0 is allocated in the previous frame. It is assumed that three previous joint vectors generated by the three joint data are J 1 v prev , J 2 v prev , and J 3 v prev , respectively.

도 11을 참조하면, 관절 합성부(250)는 전술한 수학식 1에 따른 가중치 연산을 수행하는 제1 연산 블록(1110), 전술한 수학식 2에 따른 가중치 평균 연산을 수행하는 제2 연산 블록(1120), 가중치 평균과 가중치 간의 비교 연산을 수행하는 제3 연산 블록(1130) 및 수학식 3에 따른 관절 벡터의 합성 연산을 수행하는 제4 연산 블록(1140)을 포함하도록 구성될 수 있다.Referring to FIG. 11, the joint synthesis unit 250 includes a first calculation block 1110 performing weight calculation according to Equation 1 above, and a second calculation block performing weight average calculation according to Equation 2 described above. 1120, a third operation block 1130 performing a comparison operation between a weighted average and a weight, and a fourth operation block 1140 performing a composite operation of a joint vector according to Equation (3).

제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 )를 계산한다. The first operation block 1110 is generated by the previous joint vector ( J 1 v prev ) generated by the first joint data indicating the previous joint position in the previous frame and the first joint data indicating the current joint position in the current frame. current joint vector previously joint vector (J 2 v prev) generated by the second joint data representing a previous joint position first weight (w 1) calculate, and in the previous frame using the (J 1 v cur) is And the current joint vector ( J 2 v cur ) generated by the second joint data representing the current joint position in the current frame, to calculate the second weight ( w 2 ), and the third to indicate the previous joint position in the previous frame. A third weight ( w ) using the previous joint vector ( J 3 v prev ) generated by the joint data and the current joint vector ( J 3 v cur ) generated by the third joint data representing the current joint position in the current frame. 3 ) is calculated.

제2 연산 블록(1120)은 제1 연산 블록(1110)에 의해 계산된 상기 제1 내지 제3 가중치(w 1 , w 2 , w 3 )를 이용하여, 가중치 평균(w avg )을 계산한다. The second calculation block 1120 calculates the weighted average w avg using the first to third weights w 1 , w 2 , and w 3 calculated by the first calculation block 1110.

제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)에 의해 수행되는 관절 합성 연산에 제외된다. The third calculation block 1130 includes the first to third weights w 1 , w 2 , and w 3 calculated by the first calculation block 1110 and the weights calculated by the second calculation block 1120. By comparing the averages ( w avg ), weights equal to or greater than the weighted average ( w avg ) among the first to third weights ( w 1 , w 2 , w 3 ) are selected, and the current joints associated with the selected weights Vectors are input to the fourth operation block 1140. In this embodiment, it is assumed that the first weight w 1 and the third weight w 3 are greater than or equal to the weight average w avg . According to this assumption, the third calculation block 1130 comprises a first weighting current joint vector associated with (w 1) (J 1 v cur) and the third weight are joint vector (J 3 v cur) concerning (w 3) Is selected and input to the fourth operation block 1140. According to this selection, the second joint data related to the current joint vector J 2 v cur is determined to be unreliable data including noise, and is used for joint synthesis calculation performed by the fourth calculation block 1140 below. Is excluded.

제4 연산 블록(1140)은, 전술한 수학식 3에 따라, 제3 연산 블록(1130)으로부터 입력된 현재 관절 벡터(J 1 v cur )와 현재 관절 벡터(J 3 v cur )를 합성한다. 이후, 제4 연산 블록(1140)에 의해 합성된 관절 벡터를 이용하여 현재 프레임에서의 각 사용자의 관절 위치(J p )가 추정된다. 여기서, 관절 위치는 '관절 자세'라는 용어로 대체될 수 있다.The fourth calculation block 1140 synthesizes the current joint vector J 1 v cur and the current joint vector J 3 v cur input from the third calculation block 1130 according to Equation 3 above. Thereafter, the joint position J p of each user in the current frame is estimated using the joint vector synthesized by the fourth operation block 1140. Here, the joint position may be replaced with the term'joint posture'.

깊이 데이터 Depth data 분류부Classification (260)(260)

본 발명의 특징은 다수의 사용자의 관절 데이터, 각 사용자의 관절 데이터에 할당된 사용자 ID 및 깊이 데이터를 매 프레임 단위로 추적하여 관절 데이터, 사용자 ID 및 깊이 데이터를 포함하도록 구성된 사용자 자세를 추적하는 것이다. A feature of the present invention is tracking user posture configured to include joint data, user ID and depth data by tracking joint data of multiple users, user ID and depth data assigned to each user's joint data every frame. .

깊이 데이터의 실시간 추적을 위해, 관절 데이터를 사용자 별로 분류하는 것과 유사하게 깊이 데이터를 사용자 별로 분류해야 한다.For real-time tracking of depth data, depth data must be classified by user, similar to classifying joint data by user.

본 발명의 일 실시 예에 따른 깊이 데이터 분류부(260)는 사용자 ID가 할당된 관절 데이터의 주성분을 이용하여 깊이 데이터를 사용자 별로 분류한다. The depth data classification unit 260 according to an embodiment of the present invention classifies depth data for each user using a main component of joint data to which a user ID is assigned.

이하, 도 12를 참조하여, 깊이 데이터 분류부(260)에서 수행되는 깊이 데이터의 분류 과정에 대해 상세히 기술한다. 아울러, 이하에서는 특별하게 언급하지 않는 하, 깊이 데이터와 깊이 포인트를 동일한 의미를 갖는 용어로 사용한다.Hereinafter, a classification process of depth data performed by the depth data classification unit 260 will be described in detail with reference to FIG. 12. In addition, the depth data and the depth point are used as terms having the same meaning, unless specifically mentioned below.

도 12는 본 발명의 일 실시 예에 따른 깊이 데이터 분류에서 수행되는 깊이 데이터의 분류 과정을 나타내는 흐름도이고, 도 13은 본 발명의 일 실시 예에 따른 2차원 평면에 투영된 관절 데이터를 설명하기 위한 도면이다.12 is a flowchart illustrating a process of classifying depth data performed in classifying depth data according to an embodiment of the present invention, and FIG. 13 is for describing joint data projected on a 2D plane according to an embodiment of the present invention. It is a drawing.

도 12 및 13을 참조하면, 단계 S1210에서, 관절 합성부(250)에 의해 합성된(또는 복원된) 관절 데이터를 2차원 평면에 투영하는 과정이 수행된다. 이때, 관절 합성부(250)에 의해 합성된 관절 데이터는 3차원 공간에 표현되는 3차원 관절 데이터이다.12 and 13, in step S1210, a process of projecting joint data synthesized (or reconstructed) by the joint synthesis unit 250 into a two-dimensional plane is performed. At this time, the joint data synthesized by the joint synthesis unit 250 is 3D joint data expressed in a 3D space.

이어, 단계 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) 기법이 이용될 수 있다.Subsequently, in step S1220, a process of calculating a principal axis representing a principal component of the joint data projected on the 2D plane is performed. Referring to FIG. 13, when the joint data projected on the 2D plane is represented by a plurality of points 1310, the main axis is a direction vector that best represents the distribution characteristic of the plurality of points. As shown in FIG. 13, when the direction vector that best represents the distribution characteristic of a plurality of points is composed of two direction vectors (PCA X , PCA Y ) perpendicular to each other, the main axis is a direction vector (PCA X ). It consists of a shaft corresponding to the response in the direction perpendicular to the axis and the direction vector (X PCA), which vector (PCA Y). As a method of calculating the principal axis, a principal component analysis (PCA) technique, which is widely known as a dimensionality reduction and feature extraction technique, may be used.

이어, 단계 S1230에서, 전 단계 S1220에서 계산된 주축을 이용하여 2차원 평면에 타원체들(ellipsoids)을 생성하는 과정이 수행된다. 예를 들면, 2차원 평면에 투영된 관절 데이터를 다수의 포인트들(도 13의 1310)로 나타낼 때, 전 단계 S1220에서 계산된 주축(PCAX, PCAY)과 주축(PCAX, PCAY)으로부터 가장 멀리 떨어져 있는 포인트의 위치값을 이용하여, 타원체에서 정의하는 장축(a)과 단축(b)이 계산되고, 계산된 장축(a)과 단축(b)에 의해 도 13에 도시한 타원체(1320)가 생성될 수 있다. 생성된 타원체는 아래의 수학식 4와 같은 타원 방정식으로 표현될 수 있다.Subsequently, in step S1230, a process of generating ellipsoids in a two-dimensional plane using the main axis calculated in the previous step S1220 is performed. For example, when representing joint data projected on a 2D plane as a plurality of points (1310 in FIG. 13), the main axes (PCA X , PCA Y ) and the main axes (PCA X , PCA Y ) calculated in the previous step S1220 are represented. The long axis (a) and the short axis (b) defined by the ellipsoid are calculated using the position values of the points farthest from the ellipsoid ((11)) by the calculated long axis (a) and short axis (b). 1320) may be generated. The generated ellipsoid can be expressed by an elliptic equation such as Equation 4 below.

Figure pat00025
Figure pat00025

Figure pat00026
Figure pat00026

Figure pat00027
Figure pat00027

여기서,

Figure pat00028
는 2차원 평면에 투영된 관절 데이터의 위치값,
Figure pat00029
는 2차원 평면에 투영된 관절 위치의 중심 좌표이며, Max() 함수는 가장 큰 값을 반환하는 함수로써, 벡터의 내적에 의해 축에서 가장 멀리 있는 값을 반환하게 된다.here,
Figure pat00028
Is the position value of the joint data projected on the 2D plane,
Figure pat00029
Is the center coordinate of the joint position projected on the 2D plane, and the Max() function returns the largest value, and returns the value farthest from the axis by the dot product of the vector.

사용자의 동작에 따라 타원체의 크기가 변하며, 이때, a와 b는 사용자가 포함될 수 있는 최소 값 이상이 되어야 한다. a와 b에 대한 최소값은 인체 측정 데이터(anthropometric data)를 이용하여 설정될 수 있다.The size of the ellipsoid changes according to the user's motion. At this time, a and b should be more than the minimum value that the user can include. The minimum values for a and b can be set using anthropometric data.

이어, 단계 S1240에서, 전단계 S1230에 의해 생성된 타원체들 중에서 상기 깊이 데이터가 포함되는 타원체를 결정하는 과정이 수행된다. 예를 들면, 상기 깊이 데이터에 의해 표현되는 x축 좌표값과 y축 좌표값을 다수의 타원체들 중 어느 하나의 타원체를 표현하는 타원 방정식(수학식 4)에 대입했을 때, 그 결과값이 1이하인 경우, 상기 깊이 데이터에 의해 표현되는 x축 좌표값과 y축 좌표값이 상기 어느 하나의 타원체에 의해 정의되는 영역 내에 존재하는 것으로 판단하여, 상기 깊이 데이터가 상기 어느 하나의 타원체 포함되는 것으로 결정할 수 있다.Subsequently, in step S1240, a process of determining an ellipsoid containing the depth data among the ellipsoids generated by the previous step S1230 is performed. For example, when the x-axis coordinate value and y-axis coordinate value represented by the depth data are substituted into an elliptic equation (Equation 4) representing any one of the ellipsoids, the result is 1 In the following case, it is determined that the x-axis coordinate value and the y-axis coordinate value represented by the depth data exist within an area defined by the one ellipsoid, and the depth data is determined to be included in the one ellipsoid. Can.

이어, 단계 S1250에서, 상기 깊이 데이터를 전단계 S1240에 의해 결정된 타원체와 관련된 상기 합성된 관절 데이터에 대응하는 사용자로 분류하는 과정이 수행된다. 전술한 바와 같이, 사용자 ID가 할당된 관절 데이터를 기반으로 타원체가 생성되기 때문에, 생성된 타원체는 사용자 ID에의 사용자 별로 분류된 것이다. 그러므로, 상기 깊이 데이터를 포함하는 타원체가 결정되면, 상기 결정된 타원체에 의해 상기 깊이 데이터를 사용자 별로 분류할 수 있게 된다.Subsequently, in step S1250, a process of classifying the depth data into a user corresponding to the synthesized joint data related to the ellipsoid determined in step S1240 is performed. As described above, since the ellipsoid is generated based on the joint data to which the user ID is assigned, the generated ellipsoid is classified for each user in the user ID. Therefore, when an ellipsoid containing the depth data is determined, it is possible to classify the depth data for each user by the determined ellipsoid.

이와 같이, 2차원 평면 상에 생성된 타원체를 이용하면, 깊이 데이터(또는 깊이 포인트)가 어느 타원체에 속하는지 쉽고 빠르게 구분이 가능하다. 만일, 깊이 데이터가 어느 타원체에도 속하지 않는 경우에는, 상기 깊이 데이터에 의해 표현되는 좌표를 각 타원체를 표현하는 타원 방정식에 대입했을 때, 상기 깊이 데이터가 가장 작은 결과값을 반환하는 타원 방정식에 대응하는 타원체에 할당된다.As described above, when the ellipsoid generated on the 2D plane is used, it is possible to quickly and easily distinguish which ellipsoid the depth data (or depth point) belongs to. If the depth data does not belong to any ellipsoid, when the coordinates represented by the depth data are substituted into an elliptic equation representing each ellipsoid, the depth data corresponds to an elliptic equation that returns the smallest result. It is assigned to the ellipsoid.

관절 데이터 Joint data 보정부Correction (270)(270)

전술한 바와 같이, 사용자 별로 분류된 관절 데이터에 사용자 ID를 매 프레임 단위로 할당하고, 사용자 ID가 할당된 관절 데이터를 이용하여 깊이 데이터를 사용자 별로 분류함으로써, 각 사용자의 자세 추적이 실시간으로 가능하다.As described above, by assigning the user ID to the joint data classified by the user in units of every frame, and by classifying the depth data for each user using the joint data to which the user ID is assigned, posture tracking of each user is possible in real time. .

한편, 관절 데이터는 전술한 바와 같이, 사용자를 나타내는 깊이 데이터에 대한 처리 과정으로부터 생성된다. 즉, 관절 데이터는 각 센서로부터 직접 획득할 수 있는 데이터가 아니다. 이러한 처리 과정에 의해 관절 데이터는 깊이 이미지에 비해 상대적으로 노이즈 성분을 포함할 수 있다.On the other hand, as described above, the joint data is generated from a processing process for depth data representing the user. That is, the joint data is not data that can be directly obtained from each sensor. By this processing, the joint data may include noise components relative to the depth image.

이와 같이, 관절 데이터는 노이즈 성분을 포함할 수 있기 때문에, 전술한 관절 합성부(250)에 의해 합성된 관절 데이터로부터 추정된 각 사용자의 관절 위치는 상기 노이즈 성분에 따른 오차를 포함할 수 있다. 특히, 상기 합성된 관절 데이터에 의해 복원된 전신 관절 중에서 하반신 관절(발끝, 발목, 무릎 관절)에서 큰 오차가 발생하는 경향이 있다. As described above, since the joint data may include noise components, the joint position of each user estimated from the joint data synthesized by the joint synthesis unit 250 described above may include an error according to the noise component. In particular, a large error tends to occur in the lower body joint (toe, ankle, knee joint) among the whole body joints restored by the synthesized joint data.

이에, 본 발명에서는 깊이 데이터가 관절 데이터에 비해 오차가 상대적으로 작다는 점을 착안하여, 깊이 데이터를 이용하여 관절 합성부에 의해 합성된(또는 복원된) 관절 데이터를 보정하는 방법이 제시된다.Accordingly, in the present invention, a method of correcting joint data synthesized (or reconstructed) by a joint synthesizing unit using depth data is proposed by considering that the depth data has a relatively small error compared to joint data.

이하, 도 14를 참조하여, 깊이 데이터를 이용하여 관절 데이터를 보정하는 방법에 대해 상세히 기술한다.Hereinafter, a method of correcting joint data using depth data will be described in detail with reference to FIG. 14.

도 14는 본 발명의 일 실시 예에 따른 관절 데이터 보정부에서 깊이 데이터를 이용하여 관절 데이터를 보정하는 과정을 나타내는 흐름도이다.14 is a flowchart illustrating a process of correcting joint data using depth data in the joint data correction unit according to an embodiment of the present invention.

깊이 데이터를 이용하여 관절 합성부(250)에 의해 합성된(또는 복원된) 관절 데이터(이하, 하반신 관절 데이터)를 보정하기 위해, 먼저, 깊이 데이터 분류부(260)에 의해 사용자 별로 분류된 깊이 데이터로부터 하반신 관절의 관절 위치를 추정해야 한다. 특별히 한정하는 것은 아니지만, 하반신 관절은 발끝 관절, 발목 관절, 무릎 관절을 포함하는 것으로 가정한다. 따라서, 본 실시 예에 따른 하반신 관절의 관절 위치 추정은 발끝 관절의 관절 위치 추정, 발목 관절의 관절 위치 추정 및 무릎 관절의 관절 위치 추정을 포함한다.In order to correct the joint data synthesized (or reconstructed) by the joint synthesis unit 250 (hereinafter, lower body joint data) using the depth data, first, the depth classified for each user by the depth data classification unit 260 The joint position of the lower body joint should be estimated from the data. Although not particularly limited, the lower body joint is assumed to include a toe joint, ankle joint, and knee joint. Accordingly, the joint position estimation of the lower extremity joint according to the present embodiment includes the joint position estimation of the toe joint, the joint position estimation of the ankle joint, and the joint position estimation of the knee joint.

도 14를 참조하면, 단계 S1410에서, 깊이 데이터 분류부(260)로부터 입력된 사용자 별로 분류된 깊이 데이터에 대해 샘플링 과정이 수행된다. 이러한 샘플링 과정은 사용자 별로 분류된 깊이 데이터에 대한 계산량을 줄이기 위함이다. 샘플링 과정은, 예를 들면, 도 15에 도시된 바와 같이, 3차원 공간에 깊이 데이터를 나타내는 포인트들(1520)을 포함하는 육면체 형상의 라운딩 박스(1510)를 생성하는 과정과 라운딩 박스(1510)를 다수의 복셀(voxel)들로 분할하는 과정을 포함할 수 있다. 도 15에서는 라운딩 박스(1510)가 27개의 복셀들로 분할된 예가 도시된다. Referring to FIG. 14, in step S1410, a sampling process is performed on depth data classified for each user input from the depth data classification unit 260. This sampling process is intended to reduce the calculation amount for depth data classified for each user. The sampling process is, for example, as shown in FIG. 15, a process of generating a cube-shaped rounding box 1510 including points 1520 representing depth data in a three-dimensional space and a rounding box 1510. It may include the process of dividing the V into multiple voxels. 15 shows an example in which the rounding box 1510 is divided into 27 voxels.

이어, 단계 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에 의해 지시되는 복셀들은 다른 복셀들에 의해 가려져 나타나지 않는다.Subsequently, in step S1420, a process of extracting feature points from the depth data sampled by step S1410 is performed. In the process of extracting the feature points, for example, a plurality of voxels generated by the previous step (S1410) are defined as an upper layer, an intermediate layer, and a lower layer, as shown in FIG. 15, and center the voxels located at the center of the intermediate layer When defined as a voxel, 4 voxels (V6 Middle , V7 Middle , V8 Middle , V9 Middle ) around the center voxel in the middle layer, and 5 voxels (V1 TOP , V2 TOP , V3 TOP , V4 TOP , V5 TOP in the upper layer) ) And a total of 14 voxels composed of 5 voxels (V10 TOP , V11 TOP , V12 TOP , V13 TOP , V14 TOP ) and lower layer are analyzed, and there is no point among 14 voxels and the number of empty voxels is determined. If the number is more than the number, the central voxel is registered as a feature point. In this case, the location of the feature point may be an average location of points existing in the central voxel. In FIG. 15, the voxels indicated by V8 Middle , V9 Middle V12 TOP , V13 TOP , and V14 TOP are not obscured by other voxels.

이어, 단계 S1430에서, 전 단계(S1420)에 의해 특징점들을 획득하면, 획득한 특징점들를 이용하여 발끝 관절을 추정하는 과정이 수행된다. 발끝 관절은 발의 특성상 중심 관절(SpineBase)(도 3의 32)에서 가장 멀리 있는 부분이다. 따라서, 양 발 끝을 찾기 위해 전 단계(S1420)에서 획득한 특징점들을 오른쪽 다리 영역에 대응하는 특징점들과 왼쪽 다리 영역에 대응하는 특징점들로 분할한 한 후, 각 다리 영역에서 중심 관절(도 3의 32)로부터 가장 멀리 있는 특징점을 선택한다. 선택한 특징점 주변의 샘플링 데이터(특징점 주변의 샘플링된 점들) 중에서 발 길이 범위 이내에 있는 샘플링 데이터를 획득한 후 획득한 샘플 데이터의 평균 위치를 구한다. 구해진 포인트들은 아래 수학식 5와 같이 중심 관절과의 거리 및 이전 데이터를 참조하여 발목에서 발끝으로 가는 노말 벡터에 의해 가중치를 계산하고, 이를 이용하여 발끝 관절의 위치(

Figure pat00030
)를 추정한다. Subsequently, in step S1430, if the feature points are obtained by the previous step (S1420), a process of estimating the toe joint using the acquired feature points is performed. The toe joint is the most distant part of the central joint (SpineBase) (32 in FIG. 3) due to the nature of the foot. Therefore, in order to find the ends of both feet, after dividing the feature points acquired in the previous step (S1420) into feature points corresponding to the right leg region and feature points corresponding to the left leg region, the central joint in each leg region (FIG. 3) Select the feature point farthest from 32). After obtaining the sampling data within the foot length range from the sampling data around the selected feature point (sampled points around the feature point), an average position of the acquired sample data is obtained. The obtained points are weighted by the normal vector from the ankle to the toe, referring to the distance from the central joint and the previous data, as shown in Equation 5 below, and using this, the position of the toe joint (
Figure pat00030
).

Figure pat00031
Figure pat00031

Figure pat00032
Figure pat00032

Figure pat00033
Figure pat00033

여기서

Figure pat00034
는 선택된 특징점 주변의 발 길이 이내 샘플링 데이터이며,
Figure pat00035
은 중심 관절의 위치,
Figure pat00036
는 주변 샘플링 데이터의 평균 위치,
Figure pat00037
은 이전 데이터에서 발목-발끝 관절 벡터에 대한 노말 벡터를 의미한다.here
Figure pat00034
Is sampling data within the foot length around the selected feature point,
Figure pat00035
Is the location of the central joint,
Figure pat00036
Is the average location of the surrounding sampling data,
Figure pat00037
In the previous data, we mean the normal vector for the ankle-toe joint vector.

이어, 단계 S1440에서, 전단계 S1430에 의해 추정된 발끝 관절의 위치(

Figure pat00038
)를 이용하여 발목 관절을 추정하는 과정이 수행된다. 예를 들면, 인체 계측 데이터(anthropometric data)로 알 수 있는 발끝과 발목 사이의 거리 범위를 참조하여, 전단계 S1430에 의해 추정된 발끝 관절의 위치(
Figure pat00039
)로부터 상기 거리 범위에 속하는 샘플링된 점들의 평균값을 발목 관절의 관절 위치로 추정할 수 있다.Subsequently, in step S1440, the position of the toe joint estimated by the previous step S1430 (
Figure pat00038
) Is performed to estimate the ankle joint. For example, the position of the toe joint estimated by the previous step S1430 with reference to the distance range between the toe and the ankle, which can be known by anthropometric data (
Figure pat00039
), the average value of the sampled points belonging to the distance range can be estimated as the joint position of the ankle joint.

이어, 단계 S1450에서, 전단계 S1440에서 추정된 발목 관절의 위치를 이용하여 무릎 관절의 위치를 추정하는 과정이 수행된다. 무릎 관절 위치의 추정의 일 예를 도 16을 참조하여 설명하면, 전단계 S1440에서 추정된 발목 관절(1610)에서 힙 관절 방향(1630)으로 올라가면서 정강이 길이, 즉, 발목 관절(1610)에서 무릎 관절(1620)까지의 길이 내에서 미리 정해진 값 α1 ~ α2에 해당하는 영역들(1612, 1614 및 1616)에 포함된 점들의 평균 위치를 계산한다. 본 발명에서는 정강이 길이 내에서 최소 3개 포인트 영역들(1612, 1614 및 1616)을 추출하기 위해, α1 은 0.15, α2는 0.4로 정의할 수 있다.Next, in step S1450, a process of estimating the position of the knee joint is performed using the position of the ankle joint estimated in the previous step S1440. An example of the estimation of the knee joint position will be described with reference to FIG. 16, as the shank length increases from the ankle joint 1610 estimated in the previous step S1440 to the hip joint direction 1630, that is, the knee joint at the ankle joint 1610. The average position of the points included in the regions 1612, 1614 and 1616 corresponding to the predetermined values α1 to α2 within the length up to (1620) is calculated. In the present invention, in order to extract at least three point regions 1612, 1614 and 1616 within the shank length, α1 may be defined as 0.15 and α2 as 0.4.

발목 관절에 가장 인접한 첫 번째 영역(1612)에서 평균 위치가 계산되면, 첫 번째 영역(1612)에서 무릎 관절(1620)까지의 길이 내에서 다시 α1 ~ α2에 해당하는 영역 내의 점들의 평균 위치를 계산한다. 이 과정을 3번 반복하여 얻어진 3개의 평균 위치들을 연결하는 선상에서 대퇴부 길이(힙 관절에서 무릎까지의 길이, L1)와 정강이 길이(L2)의 비에 이용하여 무릎 관절의 위치가 계산된다.When the average position is calculated in the first area 1612 closest to the ankle joint, the average position of the points in the area corresponding to α1 to α2 is calculated again within the length from the first area 1612 to the knee joint 1620. do. The position of the knee joint is calculated using the ratio of the length of the thigh (the length from the hip joint to the knee, L1) and the shank length (L2) on the line connecting the three average positions obtained by repeating this process three times.

전단계들 S1440~S1450에 의해 발끝 관절, 발목 관절 및 무릎 관절의 관절 위치 추정이 모두 완료되면, 깊이 데이터를 이용하여 하반신 관절에 대한 위치 추정이 완료된다.When all of the joint position estimation of the toe joint, ankle joint, and knee joint is completed by the previous steps S1440 to S1450, the position estimation for the lower extremity joint is completed using depth data.

이어, 단계 S1460에서, 깊이 데이터를 이용하여 추정된 하반신 관절의 관절 위치를 이용하여 관절 합성부(250)로부터 입력되는 하반 관절 데이터(Jlower)를 보정한다. Subsequently, in step S1460, the lower joint data J lower inputted from the joint synthesis unit 250 is corrected using the joint position of the lower extremity joint estimated using the depth data.

데이터 결합부(280)Data coupling unit (280)

데이터 결합부(280)는 관절 데이터 보정부(270)에 의해 보정된 하반신관절 데이터(Jlower'), 관절 합성부(250)로부터 입력되는 상반신 관절 데이터(Jupper) 및 깊이 데이터 분류부(260)에 의해 사용자 별로 분류된 깊이 데이터를 포함하도록 구성된 사용자 자세 데이터를 출력한다.The data combining unit 280 is the lower extremity joint data (J lower ') corrected by the joint data correction unit 270, the upper extremity joint data (J upper ) and the depth data classification unit 260 input from the joint synthesis unit 250 ) To output user posture data configured to include depth data classified for each user.

보정된 하반신 관절 데이터(Jlower') 및 상반신 관절 데이터(Jupper)는 모두 사용자 ID가 할당된 데이터이고, 깊이 데이터 분류부(260)로부터 입력되는 깊이 데이터도 사용자 ID가 할당된 관절 데이터를 기반으로 분류된 상태이다. 따라서, 데이터 결합부로부터 출력되는 사용자 자세 데이터는 사용자 ID가 할당된 데이터이다.The corrected lower body joint data (J lower ') and upper body joint data (J upper ) are both user ID assigned data, and the depth data input from the depth data classification unit 260 is also based on the joint data to which the user ID is assigned. It is classified as. Therefore, the user posture data output from the data combining unit is data to which the user ID is assigned.

도 17은 본 발명의 일 실시 예에 따른 데이터 결합부(280)에 의해 획득된 사용자 자세 데이터의 일 예를 설명하기 위한 도면이다.17 is a view for explaining an example of the user posture data obtained by the data combining unit 280 according to an embodiment of the present invention.

도 17에서, (a)는 스캔 공간에 존재하는 사용자 1인에 대한 사용자 ID(ID_0), 관절 데이터 및 깊이 데이터를 포함하는 사용자 자세 데이터를 나타낸 것이다. In FIG. 17, (a) shows user posture data including a user ID (ID_0), joint data, and depth data for one user existing in the scan space.

(b)는 스캔 공간으로 다른 사용자가 진입한 경우에서 사용자 자세 데이터를 시각적으로 나타낸 것이다. (c)는 (b)에서 스캔 공간으로 진입한 다른 사용자의 관절 데이터에 다른 사용자 ID(ID_1)가 할당된 경우에서 사용자 자세 데이터를 시각적으로 나타낸 것이다. (d)는 스캔 공간에서 사용자 ID_0으로 할당된 기존 사용자가 이탈된 경우에서 사용자 자세 데이터를 나타낸 것이다. (e)는 스캔 공간에서 또 다른 사용자가 진입한 경우에서 사용자 자세 데이터를 나타낸 것이다. (f)는 (e)에서 또 다른 사용자에게 의 관절 데이터에 이전에 이탈한 사용자에 대한 사용자 ID(ID_0)가 할당된 경우에서 사용자 자세 데이터를 나타낸 것이다. (b) is a visual representation of user posture data when another user enters the scan space. (c) is a visual representation of user posture data in a case in which another user ID (ID_1) is assigned to joint data of another user entering the scan space in (b). (d) shows the user posture data when the existing user assigned as user ID_0 in the scan space deviates. (e) shows user posture data when another user enters the scan space. (f) shows the user posture data when the user ID (ID_0) for a user who has previously deviated is assigned to the joint data to another user in (e).

이상 설명한 바와 같이, 본 발명은 2인 이상의 사용자에 대해 실시간으로 자세를 추정하고, 각 사용자에 대해 ID를 추적함으로써 연속적이 자세 추적이 가능하다. 또한, RGB-D 센서를 이용함으로써, 기존 전문가용으로 활용되던 고가의 모션 캡쳐 장비에 비해 상대적으로 저렴하게 설계가 가능하다. 또한, 사용자에게 특정 장비를 착용시키거나 부착시키는 것 없이, 자연스러운 상태에서 가상스포츠 게임, VR 체험용 게임 등을 진행할 수 있으며, 사용자 동작 훈련에 적용이 가능하므로 활용 범위가 크다고 할 수 있다.As described above, the present invention estimates the posture in real time for two or more users, and it is possible to continuously track the posture by tracking the ID for each user. In addition, by using the RGB-D sensor, it is possible to design relatively inexpensively compared to expensive motion capture equipment that was used for existing experts. In addition, without wearing or attaching specific equipment to a user, a virtual sports game, a VR experience game, etc. can be performed in a natural state, and since it can be applied to user motion training, it can be said that the utilization range is large.

도 18은 본 발명의 다중 사용자 추적 장치가 적용될 수 있는 컴퓨팅 장치의 블록도이다.18 is a block diagram of a computing device to which the multi-user tracking device of the present invention can be applied.

도 18을 참조하면, 본 발명의 다중 사용자 추적 장치가 적용될 수 있는 컴퓨팅 장치는 버스(620)를 통해 연결되는 적어도 하나의 프로세서(610), 메모리(630), 사용자 인터페이스 입력 장치(640), 사용자 인터페이스 출력 장치(650), 스토리지(660), 및 네트워크 인터페이스(670)를 포함할 수 있다.Referring to FIG. 18, a computing device to which the multi-user tracking device of the present invention can be applied includes at least one processor 610, a memory 630, a user interface input device 640, and a user connected through a bus 620 It may include an interface output device 650, a storage 660, and a network interface 670.

프로세서(610)는 중앙 처리 장치(CPU) 또는 메모리(630) 및/또는 스토리지(660)에 저장된 명령어들에 대한 처리를 실행하는 반도체 장치일 수 있다. The processor 610 may be a central processing unit (CPU) or a semiconductor device that executes processing for instructions stored in the memory 630 and/or storage 660.

프로세서(610)의 실행에 따라, 하나의 메모리 블록이 저장할 수 있는 공간의 크기와 상기 송수신 데이터의 크기에 따라 상기 메모리 블록의 일정 개수가 계산될 수 있다. 메모리 블록은 관절 저장소 또는 ID 저장소를 의미할 수 있다. Depending on the execution of the processor 610, a certain number of the memory blocks may be calculated according to the size of the space that can be stored by one memory block and the size of the transmission and reception data. The memory block may refer to joint storage or ID storage.

프로세서(610)는 도 1에 도시한 좌표계 변환부(220)에 의한 프로세스를 처리하는 연산 로직, 관절 데이터 분류부(230)에 의한 프로세스를 처리하는 연산 로직, ID 추적부(240)에 의한 프로세스를 처리하는 연산 로직, 관절 합성부(250)에 의한 프로세스를 처리하는 연산 로직, 깊이 데이터 분류부(260)에 의한 프로세스를 처리하는 연산 로직, 관절 데이터 보정부(270)에 의한 프로세스를 처리하는 연산 로직 및 데이터 결합부(280)에서 의한 프로세스를 처리하는 연산 로직을 포함하도록 설계될 수 있다. The processor 610 is a calculation logic for processing the process by the coordinate system conversion unit 220 shown in FIG. 1, a calculation logic for processing the process by the joint data classification unit 230, a process by the ID tracking unit 240 The processing logic to process, the processing logic by the joint synthesis unit 250, the processing logic by the depth data classification unit 260, the processing logic, and the processing process by the joint data correction unit 270 It may be designed to include arithmetic logic and arithmetic logic to process the process by the data combining unit 280.

메모리(630) 및 스토리지(660)는 다양한 종류의 휘발성 또는 불휘발성 저장 매체를 포함할 수 있다. 메모리(630) 및 스토리지(660)는 프로세서(610)에 의해 처리된 중간 데이터 또는 결과 데이터를 저장하며, 중간 데이터 또는 결과 데이터는 예를 들면, 관절 데이터 분류부(230)에 의해 사용자 별로 분류된 관절 데이터, 사용자 ID 추적부(240)에 의해 생성된 사용자 ID, 관절 데이터 보정부(270)에 의해 보정된 하반신 관절 데이터, 데이터 결합부에 의해 생성된 사용자 자세 데이터 등을 포함할 수 있다. 메모리(630)는 ROM(Read Only Memory) 및 RAM(Random Access Memory)을 포함할 수 있다.The memory 630 and the storage 660 may include various types of volatile or nonvolatile storage media. The memory 630 and the storage 660 store the intermediate data or result data processed by the processor 610, and the intermediate data or the result data are classified by user, for example, by the joint data classification unit 230 It may include joint data, a user ID generated by the user ID tracking unit 240, lower body joint data corrected by the joint data correction unit 270, user posture data generated by the data combining unit, and the like. The memory 630 may include read only memory (ROM) and random access memory (RAM).

본 명세서에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서(610)에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. The steps of the method or algorithm described in connection with the embodiments disclosed herein may be directly implemented by hardware, software modules, or a combination of the two, executed by processor 610.

소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM과 같은 저장 매체(즉, 메모리(630) 및/또는 스토리지(660))에 상주할 수도 있다. The software modules reside in storage media (ie, memory 630 and/or storage 660) such as RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, removable disk, CD-ROM. You may.

예시적인 저장 매체는 프로세서(610)에 연결되며, 그 프로세서(610)는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서(610)와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로(ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.An exemplary storage medium is coupled to the processor 610, which can read information from and write information to the storage medium. Alternatively, the storage medium may be integral with the processor 610. Processors and storage media may reside within an application specific integrated circuit (ASIC). The ASIC may reside within a user terminal. Alternatively, the processor and storage medium may reside as separate components within the user terminal.

본 개시의 예시적인 방법들은 설명의 명확성을 위해서 동작의 시리즈로 표현되어 있지만, 이는 단계가 수행되는 순서를 제한하기 위한 것은 아니며, 필요한 경우에는 각각의 단계가 동시에 또는 상이한 순서로 수행될 수도 있다. 본개시에 따른 방법을 구현하기 위해서, 예시하는 단계에 추가적으로 다른 단계를 포함하거나, 일부의 단계를 제외하고 나머지 단계를 포함하거나, 또는 일부의 단계를 제외하고 추가적인 다른 단계를 포함할 수도 있다.Exemplary methods of the present disclosure are expressed as a series of operations for clarity of description, but are not intended to limit the order in which the steps are performed, and each step may be performed simultaneously or in a different order if necessary. In order to implement the method according to the present disclosure, the steps illustrated may include other steps in addition, some steps may be excluded to include other steps, or some other steps may be included to include additional other steps.

본 개시의 다양한 실시 예는 모든 가능한 조합을 나열한 것이 아니고 본 개시의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시 예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다Various embodiments of the present disclosure are not intended to list all possible combinations, but are intended to describe representative aspects of the present disclosure, and the items described in various embodiments may be applied independently or in combination of two or more.

또한, 본 개시의 다양한 실시 예는 하드웨어, 펌웨어(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), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.In addition, various embodiments of the present disclosure may be implemented by hardware, firmware, software, or a combination thereof. For implementation by hardware, one or more Application Specific Integrated Circuits (ASICs), Digital Signal Processors (DSPs), Digital Signal Processing Devices (DSPDs), Programmable Logic Devices (PLDs), Field Programmable Gate Arrays (FPGAs), Universal It can be implemented by a processor (general processor), a controller, a microcontroller, a microprocessor.

본 개시의 범위는 다양한 실시 예의 방법에 따른 동작이 장치 또는 컴퓨터 상에서 실행되도록 하는 소프트웨어 또는 머신-실행 가능한 명령들(예를 들어, 운영체제, 애플리케이션, 펌웨어(firmware), 프로그램 등), 및 이러한 소프트웨어 또는 명령 등이 저장되어 장치 또는 컴퓨터 상에서 실행 가능한 비-일시적 컴퓨터-판독가능 매체(non-transitory computer-readable medium)를 포함한다.The scope of the present disclosure includes software or machine-executable instructions (eg, operating systems, applications, firmware, programs, etc.) that cause an operation according to various embodiment methods to be executed on a device or computer, and such software or It includes a non-transitory computer-readable medium in which instructions and the like are stored and executable on a device or computer.

이상에서 본 발명에 대하여 실시예를 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 발명의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 본 발명의 실시 예에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.In the above, the present invention has been mainly described with reference to examples, but this is merely an example, and is not intended to limit the present invention, and those skilled in the art to which the present invention pertains are not limited to the essential characteristics of the present invention. It will be appreciated that various modifications and applications not illustrated in FIG. For example, each component specifically shown in the embodiments of the present invention can be implemented by modification. And differences related to these modifications and applications should be construed as being included in the scope of the invention defined in the appended claims.

Claims (1)

다수의 센서를 이용하여 다중 사용자를 추적하는 방법에서,
수신부에서, 각 센서로부터 상기 다중 사용자의 관절을 나타내는 3차원 관절 데이터(이하, 관절 데이터)와 상기 다중 사용자의 형상을 나타내는 3차원 깊이 데이터(이하, 깊이 데이터)를 수신하는 단계;
관절 데이터 분류부에서, 상기 관절 데이터를 사용자 별로 분류하는 단계;
ID 추적부에서, 상기 사용자 별로 분류된 관절 데이터에 사용자 ID를 할당하는 단계;
관절 합성부에서, 동일한 사용자 ID가 할당된 관절 데이터를 합성하고, 상기 합성된 관절 데이터를 이용하여 각 사용자의 관절 위치를 추정하는 단계; 및
깊이 데이터 분류부에서, 상기 사용자 ID가 할당된 관절 데이터의 주성분(Principal Component)을 이용하여 상기 깊이 데이터를 사용자 별로 분류하는 단계;
를 포함하는 다중 사용자 추적 방법.
In a method of tracking multiple users using multiple sensors,
Receiving, from each sensor, three-dimensional joint data (hereinafter, joint data) representing the multi-user joint and three-dimensional depth data (hereinafter, depth data) representing the shape of the multi-user from each sensor;
In the joint data classification unit, classifying the joint data for each user;
Assigning a user ID to joint data classified for each user in the ID tracking unit;
A step of synthesizing joint data to which the same user ID is assigned, and estimating a joint position of each user using the synthesized joint data in the joint synthesis unit; And
Classifying the depth data for each user by using a principal component of joint data to which the user ID is assigned in the depth data classification unit;
Multi-user tracking method comprising a.
KR1020190009499A 2019-01-24 2019-01-24 apparatus and method for tracking pose of multi-user KR102258114B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190009499A KR102258114B1 (en) 2019-01-24 2019-01-24 apparatus and method for tracking pose of multi-user

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190009499A KR102258114B1 (en) 2019-01-24 2019-01-24 apparatus and method for tracking pose of multi-user

Publications (2)

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

Family

ID=72042971

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190009499A KR102258114B1 (en) 2019-01-24 2019-01-24 apparatus and method for tracking pose of multi-user

Country Status (1)

Country Link
KR (1) KR102258114B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022145595A1 (en) * 2020-12-29 2022-07-07 광주과학기술원 Calibration system and method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130098770A (en) * 2012-02-28 2013-09-05 한국전자통신연구원 Expanded 3d space based virtual sports simulation system
KR20130111248A (en) * 2010-06-29 2013-10-10 마이크로소프트 코포레이션 Skeletal joint recognition and tracking system
KR20150010193A (en) * 2013-07-18 2015-01-28 전자부품연구원 Depth information based Head detection apparatus and method thereof
KR101892093B1 (en) * 2016-11-08 2018-08-28 한국전자통신연구원 Apparatus and method for estimating of user pointing gesture

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130111248A (en) * 2010-06-29 2013-10-10 마이크로소프트 코포레이션 Skeletal joint recognition and tracking system
KR20130098770A (en) * 2012-02-28 2013-09-05 한국전자통신연구원 Expanded 3d space based virtual sports simulation system
KR20150010193A (en) * 2013-07-18 2015-01-28 전자부품연구원 Depth information based Head detection apparatus and method thereof
KR101892093B1 (en) * 2016-11-08 2018-08-28 한국전자통신연구원 Apparatus and method for estimating of user pointing gesture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022145595A1 (en) * 2020-12-29 2022-07-07 광주과학기술원 Calibration system and method

Also Published As

Publication number Publication date
KR102258114B1 (en) 2021-05-31

Similar Documents

Publication Publication Date Title
JP6522060B2 (en) Object recognition device, classification tree learning device and operation method thereof
US11967101B2 (en) Method and system for obtaining joint positions, and method and system for motion capture
US9317741B2 (en) Three-dimensional object modeling fitting and tracking
Liu et al. Estimation of missing markers in human motion capture
JP5848551B2 (en) Learning device, learning device control method, detection device, detection device control method, and program
US10830584B2 (en) Body posture tracking
US9098740B2 (en) Apparatus, method, and medium detecting object pose
Ding et al. STFC: Spatio-temporal feature chain for skeleton-based human action recognition
CN110363817B (en) Target pose estimation method, electronic device, and medium
KR101789071B1 (en) Apparatus and method for extracting feature of depth image
US11126831B2 (en) Object recognition method, device, system, and program
JP2016099982A (en) Behavior recognition device, behaviour learning device, method, and program
JP2019096113A (en) Processing device, method and program relating to keypoint data
KR101925879B1 (en) Method of tracking motion using depth image and device thereof
JP5837860B2 (en) Motion similarity calculation device, motion similarity calculation method, and computer program
JP2014085933A (en) Three-dimensional posture estimation apparatus, three-dimensional posture estimation method, and program
JP6381368B2 (en) Image processing apparatus, image processing method, and program
CN111598995B (en) Prototype analysis-based self-supervision multi-view three-dimensional human body posture estimation method
KR101586007B1 (en) Data processing apparatus and method
KR102258114B1 (en) apparatus and method for tracking pose of multi-user
JP6579353B1 (en) Information processing apparatus, information processing method, dimension data calculation apparatus, and product manufacturing apparatus
KR20150144179A (en) The Method and Apparatus of Object Part Position Estimation
KR20210076559A (en) Apparatus, method and computer program for generating training data of human model
JP6593830B1 (en) Information processing apparatus, information processing method, dimension data calculation apparatus, and product manufacturing apparatus
JP7302741B2 (en) Image selection device, image selection method, and program

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