WO2023063570A1 - 손 동작에 관한 이미지 데이터를 획득하는 전자 장치 및 그 동작 방법 - Google Patents
손 동작에 관한 이미지 데이터를 획득하는 전자 장치 및 그 동작 방법 Download PDFInfo
- Publication number
- WO2023063570A1 WO2023063570A1 PCT/KR2022/012884 KR2022012884W WO2023063570A1 WO 2023063570 A1 WO2023063570 A1 WO 2023063570A1 KR 2022012884 W KR2022012884 W KR 2022012884W WO 2023063570 A1 WO2023063570 A1 WO 2023063570A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- joint
- posture
- value
- electronic device
- values
- Prior art date
Links
- 230000033001 locomotion Effects 0.000 title claims abstract description 77
- 238000000034 method Methods 0.000 title claims abstract description 47
- 239000013598 vector Substances 0.000 claims abstract description 181
- 230000003190 augmentative effect Effects 0.000 claims abstract description 72
- 210000002346 musculoskeletal system Anatomy 0.000 claims abstract description 22
- 230000036544 posture Effects 0.000 claims description 230
- 230000015654 memory Effects 0.000 claims description 56
- 238000009877 rendering Methods 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 21
- 230000002194 synthesizing effect Effects 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 9
- 210000001503 joint Anatomy 0.000 description 80
- 210000003811 finger Anatomy 0.000 description 38
- 210000000707 wrist Anatomy 0.000 description 25
- 210000003813 thumb Anatomy 0.000 description 20
- 238000010586 diagram Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 7
- 210000004247 hand Anatomy 0.000 description 6
- 210000001145 finger joint Anatomy 0.000 description 5
- 238000011017 operating method Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 210000003857 wrist joint Anatomy 0.000 description 5
- 210000002310 elbow joint Anatomy 0.000 description 4
- 210000000323 shoulder joint Anatomy 0.000 description 4
- 208000035217 Ring chromosome 1 syndrome Diseases 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000004984 smart glass Substances 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 208000032825 Ring chromosome 2 syndrome Diseases 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
Definitions
- the present disclosure relates to an electronic device for acquiring image data related to a user's hand gesture used as an input means in an augmented reality (AR) device and an operating method thereof.
- AR augmented reality
- Augmented Reality is a technology that overlays a virtual image on a physical environment space or real world object in the real world and shows it together.
- An augmented reality device using augmented reality technology for example, Smart glasses are usefully used in daily life, such as information retrieval, route guidance, and camera photography, etc.
- smart glasses are worn as fashion items and are mainly used for outdoor activities.
- a general augmented reality device does not use a separate external input device to ensure the freedom of both hands of the user, but uses a camera mounted on the augmented reality device to recognize the user's hand from a photographed image. (Vision-based hand tracking) technology.
- AI artificial intelligence
- image data is obtained by directly photographing a real person's hand posture or hand motion using a camera, and the obtained image data has a label value related to a specific function or interaction. Entering (label) takes a lot of time and money, and requires a lot of data.
- An electronic device for obtaining image data representing a hand motion.
- An electronic device may include a memory for storing a designated joint value for at least one preset joint among joint values for a plurality of joints constituting a hand posture, and at least one processor. there is.
- the at least one processor may obtain a designated joint value from the memory.
- the at least one processor may determine whether a joint value is generated based on a corresponding relationship between the obtained specified joint value and joint values related to the plurality of joints.
- the at least one processor may generate arbitrary joint values for the remaining joints except for at least one preset joint based on restriction information according to the musculoskeletal system of the human body.
- the at least one processor may obtain a pose vector corresponding to a key image frame using a designated joint value and a generated random joint value.
- the at least one processor may obtain a plurality of pose vectors by performing interpolation using the obtained pose vectors.
- the at least one processor may obtain a plurality of image frames representing hand motions by rendering a 3D character image using the obtained plurality of posture vectors.
- a method of operating an electronic device may include obtaining a designated joint value for at least one preset joint among joint values for a plurality of joints constituting a hand posture.
- the operating method may include determining whether joint values are generated based on a corresponding relationship between the acquired specified joint values and joint values related to a plurality of joints.
- the operation method may include generating arbitrary joint values for joints other than at least one predetermined joint based on constraint information according to the musculoskeletal system of the human body according to a result of the determination.
- the operation method may include acquiring a posture vector corresponding to a key image frame using a designated joint value and a generated arbitrary joint value.
- the operation method may include acquiring a plurality of pose vectors by performing interpolation using the acquired pose vectors.
- the operation method may include acquiring a plurality of image frames representing hand motions by rendering a 3D character image using the acquired posture vectors.
- another aspect of the present disclosure provides a computer program product including a computer-readable storage medium recording a program for execution on a computer.
- FIG. 1 is a conceptual diagram illustrating an operation in which an electronic device according to an embodiment of the present disclosure obtains image data representing a hand motion by using joint value information of an upper body including a hand.
- FIG. 2 is a block diagram illustrating components of an electronic device according to an embodiment of the present disclosure.
- FIG. 3 is a flowchart illustrating a method of operating an electronic device according to an embodiment of the present disclosure.
- FIG. 4 is a diagram for explaining an operation of obtaining a posture vector including designated joint values and arbitrary joint values by an electronic device according to an embodiment of the present disclosure.
- FIG. 5 is a flowchart illustrating a method for obtaining a plurality of pose vectors through interpolation by an electronic device according to an embodiment of the present disclosure.
- FIG. 6 is a diagram for explaining an operation of obtaining a plurality of pose vectors through interpolation by an electronic device according to an embodiment of the present disclosure.
- FIG. 7 is a flowchart illustrating a method of acquiring video data indicating a hand motion by an electronic device according to an embodiment of the present disclosure.
- FIG. 8 is a diagram illustrating an operation of acquiring a plurality of image frames representing successive hand postures by an electronic device according to an embodiment of the present disclosure.
- FIG. 9 is a diagram illustrating an operation of acquiring video data indicating a hand motion by an electronic device according to an embodiment of the present disclosure.
- FIG. 10 is a flowchart illustrating a method of modifying image data based on information about a camera location and specifications of an augmented reality device by an electronic device according to an embodiment of the present disclosure.
- 11A is a diagram illustrating an operation of photographing a user's hand according to a camera position and configuration of an augmented reality device.
- 11B is a diagram for explaining an operation of modifying image data based on information about a camera location and specifications of an augmented reality device by an electronic device according to an embodiment of the present disclosure.
- FIG. 12 is a flowchart illustrating a method of determining whether joint values are generated and acquiring video data representing hand motions according to whether joint values are generated, by an electronic device according to an embodiment of the present disclosure.
- a processor configured (or configured) to perform A, B, and C may include a dedicated processor (e.g., an embedded processor) to perform those operations, or by executing one or more software programs stored in memory; It may mean a general-purpose processor (eg, CPU or application processor) capable of performing corresponding operations.
- a dedicated processor e.g., an embedded processor
- It may mean a general-purpose processor (eg, CPU or application processor) capable of performing corresponding operations.
- an element when referred to as “connected” or “connected” to another element, the element may be directly connected or directly connected to the other element, but in particular the opposite It should be understood that, as long as no description exists, it may be connected or connected via another component in the middle.
- a 'joint' is a part of the human body in which bones are connected to each other, and represents one or more parts included in the upper body, such as the neck, arms, and shoulders, as well as hands, such as fingers, wrists, and palms.
- a 'joint value' represents a feature value related to a plurality of joints included in the body.
- joint values may refer to joint angle values of a plurality of joints included in a finger, a wrist, a palm, a neck, an arm, an elbow, and a shoulder.
- the joint value may include not only joint angle values for a plurality of joints included in the upper body, but also 3D positional coordinate values of the joints.
- a 'designated joint value' refers to a joint angle value previously set with respect to at least one joint constituting a specific hand posture among a plurality of joints.
- information on designated joint values may be pre-stored in a memory of an electronic device, but is not limited thereto.
- 'arbitrary joint value' refers to joint angle values of joints other than a designated joint value among joint angle values of a plurality of joints.
- an arbitrary joint value may be generated as an arbitrary angle value by an electronic device. However, it is not limited thereto, and in another embodiment of the present disclosure, an arbitrary joint value may not be generated by an electronic device.
- FIG. 1 is a conceptual diagram illustrating an operation in which an electronic device according to an embodiment of the present disclosure obtains image data representing a hand motion by using joint value information of an upper body including a hand.
- the electronic device 100 obtains a posture vector 10 including a plurality of joint values (operation 1).
- the posture vector 10 may be composed of a plurality of joint values representing a plurality of different hand postures ( ⁇ pose1 to ⁇ pose n ).
- 'values of a plurality of joints' represent feature values related to a plurality of joints included in the human upper body.
- a plurality of joint values may mean joint angle values of a plurality of joints.
- the plurality of joint values include, for example, wrist joint angle values ( ⁇ wrist ), finger joint angle values ( ⁇ thumb , ⁇ index , ⁇ middle , ⁇ ring , ⁇ little ), and neck joint angle values ( ⁇ neck ). , an elbow joint angle value ( ⁇ elbow ), and a shoulder joint angle value ( ⁇ shoulder ).
- the electronic device 100 includes a plurality of joint values ( ⁇ wrist , ⁇ thumb , ⁇ index , ⁇ middle , ⁇ ring , ⁇ little , ⁇ neck , ⁇ shoulder , ⁇ elbow ) related to a plurality of joints constituting a specific hand posture.
- At least one specified joint value ( ⁇ wrist , ⁇ thumb , ⁇ index , ⁇ middle , ⁇ ring , ⁇ little ) for at least one preset joint among the preset joints may be obtained.
- At least one joint having a designated joint value may be preset by a user.
- the at least one joint may include, for example, a wrist joint and a finger joint including a thumb, index finger, middle finger, ring finger, and small finger, but is not limited thereto.
- information about designated joint values is stored in the memory 120 (see FIG. 2 ) of the electronic device 100 in advance. may be stored.
- the electronic device 100 accesses the memory 120 and retrieves information about designated joint values ( ⁇ wrist , ⁇ thumb , ⁇ index , ⁇ middle , ⁇ ring , ⁇ little ) constituting a specific hand posture.
- designated joint values ⁇ wrist , ⁇ thumb , ⁇ index , ⁇ middle , ⁇ ring , ⁇ little .
- the electronic device 100 determines additional joint values based on a corresponding relationship between the obtained specified joint values ( ⁇ wrist , ⁇ thumb , ⁇ index , ⁇ middle , ⁇ ring , ⁇ little ) and joint values of a plurality of joints. creation can be determined.
- the obtained specified joint values ( ⁇ wrist , ⁇ thumb , ⁇ index , ⁇ middle , ⁇ ring , ⁇ little ) correspond to some of the joint values for all joints constituting the hand posture, , when additional joint values for the remaining joints are needed, the electronic device 100 may determine that additional joint values need to be generated.
- the electronic device 100 may generate arbitrary joint values ( ⁇ neck , ⁇ shoulder , ⁇ elbow ) for the remaining joints except for at least one preset joint among the plurality of joints.
- the arbitrary joint values ( ⁇ neck , ⁇ shoulder , ⁇ elbow ) may be, for example, a joint angle value for a joint included in the neck, shoulder, elbow, or arm among the joints of the upper body, but is not limited thereto.
- the electronic device 100 may generate at least one arbitrary joint value ( ⁇ neck , ⁇ shoulder , ⁇ elbow ) based on restriction information according to the musculoskeletal system of the human body.
- the 'restriction information' may include information about a range of motion for each of a plurality of joints according to anatomical characteristics of the human musculoskeletal system.
- the movable angle range for each joint means, for example, a range of angular values in which each of the joints included in the shoulder, arm, or neck can move.
- constraint information may be previously stored in the memory 120 of the electronic device 100, but is not limited thereto. In another embodiment of the present disclosure, constraint information may be input by a user.
- the electronic device 100 may generate at least one random joint value ( ⁇ neck , ⁇ shoulder , ⁇ elbow ) as a random value based on constraint information. For example, the electronic device 100 may generate an arbitrary angular value within a range of motion angles for each of at least one joint included in the shoulder as the joint value ⁇ shoulder .
- a specified joint value ( ⁇ wrist , ⁇ thumb , ⁇ index , ⁇ middle , ⁇ ring , ⁇ little ) may be a plurality of joint values constituting a specific hand posture ( ⁇ wrist , ⁇ thumb , ⁇ index , ⁇ middle , ⁇ ring , ⁇ little , ⁇ neck , ⁇ shoulder , ⁇ elbow ), the electronic device 100 may determine that it is not necessary to generate arbitrary joint values ( ⁇ neck , ⁇ shoulder , ⁇ elbow ). . In this case, arbitrary joint values ( ⁇ neck , ⁇ shoulder , ⁇ elbow ) may not be generated and may be zero.
- the electronic device 100 may render the 3D character image 20 using the posture vector 10 (operation 2).
- the electronic device 100 may perform image rendering in which a plurality of joint values included in the posture vector 10 are applied to the 3D character image 20 .
- the 3D character image 20 according to an embodiment of the present disclosure may be a virtual 3D image configured to be rendered in a specific posture through a plurality of joint angle values.
- the electronic device 100 may obtain a plurality of image frames f 1 to f n by rendering the 3D character image 20 using a plurality of joint values included in each of the plurality of posture vectors 10 . there is.
- the plurality of image frames (f 1 to f n ) may be images rendered as if obtained by photographing the 3D character image 20 through a virtual camera.
- a plurality of image frames (f 1 to f n ) may include a field of view (FOV) of a virtual camera, a lens configuration (eg, an RGB camera, a mono camera, a depth camera, etc.), or a camera position. It may be a simulated image as if acquired by directly photographing by reflecting the .
- Each of the plurality of image frames f 1 to f n may represent a plurality of consecutive hand postures.
- the electronic device 100 renders a 3D character image 20 using a plurality of posture vectors 10 and synthesizes a background image to form a plurality of image frames f 1 to f n ) can be obtained.
- the background image may be a pre-photographed image or an image selected by the user.
- the electronic device 100 obtains video data 30 representing hand motions by sequentially arranging a plurality of image frames f 1 to f n (operation 3).
- a general augmented reality device does not use a separate external input device to ensure the freedom of both hands of the user, but uses a camera mounted on the augmented reality device to recognize the user's hand from a photographed image. (Vision-based hand tracking) technology.
- image data corresponding to a specific hand posture or hand motion is used as input data and trained through a hand tracking artificial intelligence (AI) model.
- AI artificial intelligence
- a lot of image data is needed to learn an artificial intelligence model, but it takes a lot of time and money to directly acquire a lot of image data by photographing a real person's hand posture or hand motion using a camera, and data requirements increase.
- the present disclosure is directed to learning a hand tracking artificial intelligence model for reducing data requirements and improving recognition accuracy when an augmented reality device recognizes a hand motion using vision-based hand tracking technology.
- An object of the present invention is to provide an electronic device 100 that acquires image data used as input data and an operating method thereof.
- the electronic device 100 includes designated joint values ( ⁇ wrist , ⁇ thumb , ⁇ index , ⁇ middle , ⁇ ring , ⁇ little ) and arbitrary joint values ( ⁇ neck , ⁇ shoulder , ⁇ elbow ).
- the 3D character image 20 is rendered using the posture vector 10 including a, a plurality of image frames f 1 to f n are obtained as a rendering result, and a plurality of image frames f 1 to f n Since video data representing hand motions are obtained by sequentially listing the hand postures or motions of the hands to acquire a lot of image data, it is possible to prevent the occurrence of time and cost and reduce the amount of data required. It provides possible technical effects.
- the electronic device 100 generates arbitrary joint values ( ⁇ neck , ⁇ shoulder , ⁇ elbow ) using restriction information according to anatomical characteristics of the human musculoskeletal system. It is possible to prevent generation of image data representing a posture that cannot be taken due to structure in advance, and to obtain image data representing a more natural and realistic hand posture or hand motion.
- the electronic device 100 according to an embodiment of the present disclosure performs rendering using a virtual 3D image character 20, which is customized according to the race, height, weight, skin color, etc. desired by the user ( customized) image data can be obtained.
- FIG. 2 is a block diagram illustrating components of an electronic device 100 according to an embodiment of the present disclosure.
- the electronic device 100 may include a processor 110 and a memory 120 .
- Processor 110 and memory 120 may be electrically and/or physically connected to each other.
- the electronic device 100 may further include components not shown in FIG. 2 .
- the electronic device 100 may further include a data storage for storing specified joint values and constraint information.
- the electronic device 100 may further include a communication interface configured to perform data communication with a web-based database or an external server. Communication interfaces include, for example, wired LAN, wireless LAN, Wi-Fi, Bluetooth, zigbee, WFD (Wi-Fi Direct), infrared communication (IrDA, Infrared Data Association).
- Bluetooth Low Energy BLE
- NFC Near Field Communication
- Wibro Wireless Broadband Internet
- WiMAX World Interoperability for Microwave Access
- SWAP Shared Wireless Access Protocol
- Wireless Gigabit Data communication with a web-based database or an external server may be performed using at least one of data communication methods including Alliance, WiGig, and RF communication.
- the processor 110 may execute one or more instructions of a program stored in the memory 120 .
- the processor 110 may be composed of hardware components that perform arithmetic, logic and input/output operations and signal processing.
- the processor 110 may include, for example, a central processing unit, a microprocessor, a graphic processing unit, application specific integrated circuits (ASICs), digital signal processors (DSPs), and digital signal processors (DSPDs). Signal Processing Devices), PLDs (Programmable Logic Devices), and FPGAs (Field Programmable Gate Arrays).
- processor 110 is shown as one element in FIG. 2, it is not limited thereto. In one embodiment, the processor 110 may be composed of one or a plurality of one or more.
- the memory 120 may be, for example, a flash memory type, a hard disk type, a multimedia card micro type, or a card type memory (eg SD or XD memory). etc.), RAM (RAM, Random Access Memory) SRAM (Static Random Access Memory), ROM (ROM, Read-Only Memory), EEPROM (Electrically Erasable Programmable Read-Only Memory), PROM (Programmable Read-Only Memory), or It may be composed of at least one type of storage medium among optical disks.
- the memory 120 may store instructions related to a function or operations for the electronic device 100 to acquire image data representing hand motions.
- memory 120 includes instructions, algorithms, data structures, program code, and applications readable by processor 110 . At least one of the application programs may be stored. Instructions, algorithms, data structures, and program codes stored in memory 120 may be implemented in a programming or scripting language, such as C, C++, Java, assembler, or the like, for example.
- Memory 120 may store instructions, algorithms, data structures, or program codes related to pose vector module 122 , interpolation module 124 , and rendering module 126 .
- a 'module' included in the memory 120 refers to a unit that processes functions or operations performed by the processor 110, and may be implemented as software such as instructions, algorithms, data structures, or program codes. .
- the processor 110 may be implemented by executing instructions or program codes stored in the memory 120 .
- the posture vector module 122 includes instructions or program codes related to a function and/or operation of obtaining a posture vector including a plurality of joint values constituting a hand posture.
- 'a plurality of joint values' indicates characteristic values related to a plurality of joints included in a human upper body, and the characteristic values may refer to joint angle values.
- the plurality of joint values may include, for example, a wrist joint angle value, a finger joint angle value, a neck joint angle value, an elbow joint angle value, and a shoulder joint angle value, but are not limited thereto. .
- the posture vector module 122 includes commands or program codes related to a function and/or operation of obtaining a posture vector using a designated joint value and an arbitrary joint value.
- the 'designated joint value' refers to at least one joint angle value previously set with respect to a joint constituting a specific hand posture among a plurality of joints.
- the at least one joint may include, for example, a wrist joint and a finger joint including a thumb, index finger, middle finger, ring finger, and small finger, but is not limited thereto. However, it is not limited thereto, and none of the plurality of joints may be preset, and in this case, the designated joint value may be zero.
- the posture vector module 122 may include a designated joint value storage unit 122a. At least one joint having a designated joint value may be previously set by a user and previously stored in the designated joint value storage unit 122a. A plurality of designated joint values corresponding to a plurality of different hand postures may be stored in the designated joint value storage unit 122a. In one embodiment of the present disclosure, a plurality of designated joint values may be paired with a plurality of different hand postures and stored in the designated joint value storage unit 122a. In one embodiment of the present disclosure, a plurality of hand postures and a plurality of designated joint values may be stored in the designated joint value storage unit 122a in a key-value format.
- a plurality of hand postures may be stored as keys, and a plurality of corresponding designated joint values may be stored as values in the designated joint value storage unit 122a.
- a plurality of hand postures may be stored as keys, and a plurality of corresponding designated joint values may be stored as values in the designated joint value storage unit 122a.
- no data may be stored in the designated joint value storage unit 122a.
- the designated joint values stored in the designated joint value storage unit 122a will be described in detail with reference to FIG. 4 .
- the processor 110 may acquire a posture vector including a plurality of joint values corresponding to a specific hand posture to be obtained by executing commands or program codes related to the posture vector module 122 .
- the processor 110 accesses the designated joint value storage unit 122a of the posture vector module 122, searches for designated joint values constituting a specific hand posture, and imports ( load), it is possible to obtain information on the searched designated joint values (eg, joint angle values related to at least one designated joint).
- the processor 110 selects at least one designated joint value (eg, joint angles of the wrist, thumb, index finger, middle finger, ring finger, and small finger) corresponding to a clenched fist posture from the designated joint value storage unit 122a. value), and information on at least one designated joint value may be extracted from the designated joint value storage unit 122a according to the search result.
- the processor 110 may determine whether to generate joint values according to a correspondence relationship between the specified joint values acquired from the specified joint value storage unit 122a and joint values related to a plurality of joints constituting a specific hand posture. In one embodiment of the present disclosure, when a designated joint value corresponds to some of joint values for a plurality of joints, the processor 110 may determine that it is necessary to generate joint values. In this case, the processor 110 may generate an arbitrary joint value using information stored in the constraint information storage unit 122b included in the pose vector module 122 .
- the constraint information storage unit 122b may store constraint information on the remaining joints except for at least one joint among a plurality of joints included in the upper body.
- 'Restriction information' may include information about a range of motion for each joint according to anatomical characteristics of the musculoskeletal system of the human body.
- the movable angle range for each joint means, for example, a range of angular values in which joints included in the shoulder, arm, or neck can move by swing or spin with respect to a rotation axis of each joint.
- the processor 110 may generate arbitrary joint values for joints other than at least one designated joint value based on constraint information stored in the constraint information storage unit 122b of the posture vector module 122 .
- the arbitrary joint value may be, for example, a joint angle value of a joint included in the neck, shoulder, elbow, or arm, excluding at least one designated joint among the joints of the upper body, but is not limited thereto.
- the processor 110 obtains a random value within a range of movement angles for each joint according to the musculoskeletal system of the human body acquired from the constraint information storage unit 122b, and obtains a random value obtained from the random value storage unit 122b.
- An arbitrary joint value can be generated using the value of .
- the processor 110 may obtain a posture vector using joint angle values included in the designated joint value and the arbitrary joint value, respectively.
- the processor 110 may obtain a posture vector including a plurality of joint angle values for each image frame.
- a specific embodiment in which the processor 110 obtains a posture vector corresponding to a specific hand posture using the posture vector module 122 will be described in detail with reference to FIG. 4 .
- the designated joint value storage unit 122a and the constraint information storage unit 122b are illustrated as components included in the posture vector module 122 of the memory 120, but are not limited thereto.
- the designated joint value storage unit 122a and the constraint information storage unit 122b may be components separate from the memory 120 .
- the designated joint value storage unit 122a and the restriction item information storage unit 122b may be composed of non-volatile memories.
- Non-volatile memory refers to a storage medium that stores and maintains information even when power is not supplied and can use the stored information again when power is supplied.
- Non-volatile memory includes, for example, a flash memory, a hard disk, a solid state drive (SSD), a multimedia card micro type, and a card-type external memory (eg, SD). or XD memory, etc.), a read only memory (ROM), a magnetic disk, or an optical disk.
- SSD solid state drive
- ROM read only memory
- magnetic disk or an optical disk.
- the designated joint value storage unit 122a and the restriction information storage unit 122b are implemented in the form of an external memory not included in the electronic device 100, or It may also be implemented as a web-based storage medium connected to a wired/wireless network through a communication interface. In this case, the electronic device 100 may receive designated joint value information and constraint information stored in a web-based storage medium through a communication interface.
- the interpolation module 124 includes instructions or program codes related to a function and/or operation of acquiring a plurality of posture vectors by performing interpolation using a plurality of posture vectors representing different hand postures.
- the interpolation module 124 may obtain a plurality of pose vectors by performing spherical linear interpolation (SLERP).
- the processor 110 obtains a plurality of posture vectors representing different hand postures as posture vectors corresponding to a plurality of key image frames, and executes instructions or program codes related to the interpolation module 124, thereby Interpolation using pose vectors corresponding to a plurality of key image frames may be performed.
- the processor 110 may obtain a plurality of pose vectors respectively corresponding to the plurality of image frames from the pose vectors of the plurality of key image frames by performing spherical linear interpolation (SLERP).
- SLERP spherical linear interpolation
- the rendering module 126 is composed of instructions or program codes related to a function and/or operation of rendering a 3D character image using a posture vector.
- the processor 110 may perform image rendering in which a plurality of joint values included in a posture vector are applied to a 3D character image by executing commands or program codes related to the rendering module 126 .
- a 3D character image according to an embodiment of the present disclosure may be a virtual 3D image configured to be rendered in a specific posture through a plurality of joint angle values.
- the processor 110 may obtain a plurality of image frames by rendering a 3D character image using a plurality of joint values included in each of a plurality of posture vectors.
- the processor 110 may obtain a plurality of image frames by combining the rendered 3D character image with the background image.
- the background image may be a pre-photographed image or an image selected by the user.
- the processor 110 may acquire moving picture data representing hand motions composed of consecutive hand postures by arranging a plurality of image frames representing different hand postures in the acquired order.
- a specific embodiment in which the processor 110 renders a plurality of image frames and acquires video data using the plurality of image frames will be described in detail with reference to FIGS. 7 to 9 .
- the plurality of image frames obtained by the processor 110 may be rendered images obtained by taking a 3D character image through a virtual camera.
- the plurality of image frames are simulated as if they were obtained by direct shooting by reflecting the field of view (FOV) of the virtual camera, lens configuration (eg, RGB camera, mono camera, depth camera, etc.), or camera position. It can be an image.
- the processor 110 obtains location information and spec information of a camera of an augmented reality device or a head mounted device (HMD), and obtains location information and spec information of the camera. Based on the information, at least one of the position, size, angle, color, texture, and depth value of the 3D character image in the plurality of image frames may be modified.
- processor 110 changes 3D character images of a plurality of image frames based on location information and specification information of a camera included in an augmented reality device or a head-mounted device (HMD). 11a and FIG. 11b will be described in detail.
- the processor 110 obtains a pose vector including a designated joint value and an arbitrary joint value using the pose vector module 122 and performs interpolation using the interpolation module 124 to obtain a key image frame.
- a plurality of posture vectors are obtained from the posture vector and a plurality of image frames are obtained from the plurality of posture vectors by rendering a 3D character image using the rendering module 126
- the embodiment of the present disclosure is limited in this way. it is not going to be In another embodiment of the present disclosure, the processor 110 may not generate any joint values.
- the electronic device 100 may determine that generation of joint values is not necessary.
- the processor 110 does not generate any joint values, and the random joint values may be zero.
- the processor 110 may obtain video data representing a hand motion by performing image rendering using a posture vector sequence composed of designated joint values.
- a specific embodiment in which the processor 110 determines whether to generate a joint value based on a correspondence between a designated joint value and a plurality of joint values and obtains video data according to the determination result will be described in detail with reference to FIG. 12 . do.
- FIG. 3 is a flowchart illustrating an operating method of the electronic device 100 according to an embodiment of the present disclosure.
- step S310 the electronic device 100 obtains a designated joint value for a preset joint among a plurality of joints constituting the hand posture.
- the 'specified joint value' refers to a joint angle value previously set with respect to at least one joint constituting a specific hand posture among a plurality of joints.
- At least one joint having a designated joint value may be preset by a user.
- the at least one joint may include, for example, a wrist joint and a finger joint including a thumb, index finger, middle finger, ring finger, and small finger, but is not limited thereto.
- information about the designated joint value may be previously stored in the memory 120 .
- a plurality of designated joint values respectively corresponding to a plurality of different hand postures may be stored in the memory 120 .
- the electronic device 100 accesses the memory 120, searches for a hand posture to be acquired, and loads information about a designated joint value corresponding to the searched hand posture to designate it from the memory 120.
- Joint values can be obtained.
- the designated joint value may be zero. In this case, the designated joint values may not be stored in the memory 120 .
- step S320 the electronic device 100 determines whether to generate joint values based on a corresponding relationship between the obtained specified joint values and joint values for a plurality of joints.
- the electronic device 100 may determine that it is necessary to generate joint values.
- the electronic device 100 may determine that generation of joint values is not necessary. In this case, the electronic device 100 does not generate any joint values, and the random joint values may be zero.
- step S330 the electronic device 100 generates arbitrary joint values for the remaining joints except for the preset joints based on the constraint information according to the musculoskeletal system of the human body according to the determination result.
- the electronic device 100 may generate arbitrary joint values for the remaining joints except for at least one joint having a designated joint value among a plurality of joints constituting a specific hand posture.
- the arbitrary joint value may be, for example, a joint angle value for a joint included in the neck, shoulder, elbow, or arm among the joints of the upper body, but is not limited thereto.
- the electronic device 100 may generate an arbitrary joint value based on constraint information according to the musculoskeletal system of the human body.
- the 'restriction information' may include information about a range of motion for each of a plurality of joints according to anatomical characteristics of the human musculoskeletal system.
- the movable angle range for each joint means, for example, a range of angular values in which each of the joints included in the shoulder, arm, or neck can move.
- the constraint information may be previously stored in the memory 120, but is not limited thereto.
- constraint information may be input by a user.
- the electronic device 100 may obtain a random value within the movable angle range for each joint included in the constraint information, and generate a random joint value using the obtained random value. For example, the electronic device 100 may generate an arbitrary angular value within a movable angle range for each at least one joint included in the shoulder as a joint value of the shoulder.
- step S340 the electronic device 100 obtains a posture vector corresponding to the key image frame using the designated joint value and the arbitrary joint value.
- the electronic device 100 may obtain a posture vector representing a specific hand posture by using joint angle values included in the designated joint value and the arbitrary joint value.
- the electronic device 100 may acquire joint angle values constituting a specific hand posture as a posture vector corresponding to a key image frame.
- the electronic device 100 may obtain a plurality of posture vectors corresponding to a plurality of key image frames constituting different hand postures.
- step S350 the electronic device 100 obtains a plurality of pose vectors by performing interpolation using the obtained pose vectors corresponding to the key image frames.
- the electronic device 100 acquires a plurality of posture vectors constituting different hand postures as posture vectors corresponding to a plurality of key image frames, and obtains a plurality of posture vectors corresponding to a plurality of key image frames. Interpolation can be performed using In an embodiment of the present disclosure, the electronic device 100 may perform spherical linear interpolation (SLERP).
- SLERP spherical linear interpolation
- the electronic device 100 may obtain a plurality of posture vectors respectively corresponding to a plurality of image frames by performing spherical linear interpolation using the posture vectors corresponding to the key image frames.
- step S360 the electronic device 100 obtains a plurality of image frames representing hand motions by rendering a 3D character image using the obtained plurality of posture vectors.
- the electronic device 100 may render a 3D image using a plurality of joint values included in each of a plurality of posture vectors.
- a 3D character image according to an embodiment of the present disclosure may be a virtual 3D image configured to be rendered in a specific posture through a plurality of joint angle values.
- the electronic device 100 may acquire a plurality of image frames by combining the rendered 3D character image with the background image.
- the background image may be a pre-photographed image or an image selected by the user.
- the electronic device 100 may obtain video data representing hand motions by successively arranging a plurality of image frames representing different hand postures.
- FIG. 4 is a diagram for explaining an operation of acquiring a posture vector including designated joint values and arbitrary joint values by the electronic device 100 according to an embodiment of the present disclosure.
- the posture vector module 122 may include a designated joint value storage unit 122a and a constraint information storage unit 122b.
- the processor 110 may obtain a specified joint value using the specified joint value information included in the pose vector module 122 and generate an arbitrary joint value using constraint information.
- the designated joint value storage unit 122a may store a plurality of designated joint values 420-1 to 420-n respectively corresponding to a plurality of different hand postures 410-1 to 410-n.
- the plurality of designated joint values 420-1 to 420-n may include preset joint angle values for at least one joint constituting a specific hand posture among a plurality of joints included in the human body.
- the first designated joint value 420-1 is a first joint angle value of the wrist constituting the first posture 410-1 ( ⁇ wrist1 ), a first joint angle value of the thumb ( ⁇ thumb1 ), Including the first joint angle value of the index finger ( ⁇ index1 ), the first joint angle value of the middle finger ( ⁇ middle1 ), the first joint angle value of the ring finger ( ⁇ ring1 ), and the first joint angle value of the small finger ( ⁇ little1 ). can do.
- the second designated joint value 420-2 is the second joint angle value of the wrist constituting the second posture 410-2 ( ⁇ wrist2 ), the second joint angle value of the thumb ( ⁇ thumb2 ), and the second joint angle value of the index finger It may include a second joint angle value ( ⁇ index2 ), a second joint angle value ( ⁇ middle2 ) of the middle finger, a second joint angle value ( ⁇ ring2 ) of the ring finger, and a second joint angle value ( ⁇ little2 ) of the small finger.
- FIG. 4 shows that the plurality of designated joint values 420-1 to 420-n include joint angle values for the wrist and fingers, the present invention is not limited thereto. In another embodiment of the present disclosure, the plurality of designated joint values 420-1 to 420-n may further include joint angle values for joints other than the wrist and fingers.
- the plurality of hand postures 410-1 to 410-n and the plurality of designated joint values 420-1 to 420-n are stored in a key-value format in a designated joint value storage unit 122a.
- the plurality of hand postures 410-1 to 410-n are keys, and the corresponding plurality of designated joint values 420-1 to 420-n are values, and the designated joint values are stored It may be stored in part 122a.
- the first posture 410-1 representing a clenched fist posture may be paired and stored as a key and the first designated joint value 420-1 as a value.
- the second posture 410-2 which is a posture with fingers open, is paired with the second designated joint value 420-2
- the n-th posture 410-n which is a V (v) posture, is paired with the n-th designated joint value. It can be paired with (420-n) and stored.
- step S410 the processor 110 searches for the designated joint values related to the first hand posture 410-1 stored in the designated joint value storage unit 122a of the posture vector module 122.
- the processor 110 accesses the memory 120 (see FIG. 2 ), thereby storing a plurality of hand postures 410-1 to 410-n stored in the designated joint value storage unit 122a. ), the first hand posture 410-1 may be retrieved.
- step S420 the processor 110 loads the first designated joint value 420-1 from the designated joint value storage unit 122a.
- the processor 110 determines the first hand posture 410-1 among the plurality of designated joint values 420-1 to 420-n stored in the designated joint value storage unit 122a and key- A first designated joint value 420-1 paired in a value format may be identified.
- the processor 110 may obtain information about the identified first designated joint value 420-1 from the designated joint value storage unit 122a.
- the processor 110 obtains information about constraints from the constraint information storage unit 122b.
- the constraint information storage unit 122b may store constraint information about joints other than joints having a plurality of designated joint values 420-1 to 420-n among a plurality of joints included in the human body.
- the 'restriction information' may include information about the movable angle range for each joint according to the anatomical characteristics of the human musculoskeletal system.
- the movable angle range for each joint means, for example, a range of angular values in which joints included in the shoulder, arm, or neck can move by swing or spin with respect to a rotation axis of each joint.
- the constraint information storage unit 122b includes a movable angle range 430-1 of a shoulder joint angle value ( ⁇ shoulder ) and a movable angle range 430-2 of an elbow joint angle value ( ⁇ elbow ). information about can be stored.
- step S440 the processor 110 performs arbitrary joint values ( ⁇ neck , ⁇ shoulder , ⁇ elbow , ).
- the processor 110 calculates random joint values ( ⁇ neck , ⁇ shoulder , ⁇ elbow , ...) can be created.
- the processor 110 obtains information about the movable angle range 430-1 for the shoulder joint included in the constraint information, and uses an arbitrary angle value within the movable angle range 430-1 A joint angle value ( ⁇ shoulder ) of the shoulder may be generated, and the joint angle value ( ⁇ elbow ) of the elbow may be generated using an arbitrary angle value within the movable angle range 430 - 2 for the elbow joint.
- the processor 110 may generate a joint angle value ( ⁇ neck ) of the neck.
- the constraint information storage unit 122b stores information on the movable angle ranges of joints other than the neck, shoulder, and elbow, and the processor 110 receives information from the constraint information storage unit 122b.
- An arbitrary joint value may be generated by using an arbitrary value within the obtained range of motion angles.
- the processor 110 uses designated joint values ( ⁇ wrist1 , ⁇ thumb1 , ⁇ index1 , ⁇ middle1 , ⁇ ring1 , ⁇ little1 ) and arbitrary joint values ( ⁇ neck , ⁇ shoulder , A posture vector 440 including ⁇ elbow , ...) may be obtained.
- FIG. 5 is a flowchart illustrating a method of acquiring a plurality of pose vectors through interpolation by the electronic device 100 according to an embodiment of the present disclosure.
- Steps S510 and S520 shown in FIG. 5 are steps that embody step S340 shown in FIG. 3 .
- Steps S530 and S540 shown in FIG. 5 are steps that embody step S350 shown in FIG. 3 .
- Step S510 of FIG. 5 may be performed after step S330 shown in FIG. 3 is performed.
- step S360 shown in FIG. 3 may be performed.
- FIG. 6 is a diagram for explaining an operation of obtaining a plurality of posture vectors 620 through interpolation by the electronic device 100 according to an embodiment of the present disclosure.
- the electronic device 100 obtains a first posture vector including a plurality of joint values constituting a first hand posture.
- the plurality of joint values may include a designated joint value and an arbitrary joint value.
- the first posture vector 610-1 includes a first joint angle value of the wrist constituting the first hand posture ( ⁇ wrist1 ), a first joint angle value of the thumb ( ⁇ thumb1 ), and a first joint angle value of the index finger ( ⁇ wrist1 ).
- Designation including the first joint angle value ( ⁇ index1 ), the first joint angle value of the middle finger ( ⁇ middle1 ), the first joint angle value of the ring finger ( ⁇ ring1 ), and the first joint angle value of the small finger ( ⁇ little1 ). It may include joint values, arbitrary joint values including the first joint angle value of the neck ( ⁇ neck1 ), the first joint angle value of the shoulder ( ⁇ shoulder1 ), and the first joint angle value of the elbow ( ⁇ elbow1 ). .
- the electronic device 100 obtains a second posture vector including a plurality of joint values constituting the second hand posture.
- the second posture vector 610-2 includes the 30th joint angle value of the wrist constituting the second hand posture ( ⁇ wrist30 ), the 30th joint angle value of the thumb ( ⁇ thumb30 ), and the index finger Designation including the 30th joint angle value ( ⁇ index30 ), the 30th joint angle value of the middle finger ( ⁇ middle30 ), the 30th joint angle value of the ring finger ( ⁇ ring30 ), and the 30th joint angle value of the small finger ( ⁇ little30 ) It may include joint values and arbitrary joint values including the 30th joint angle value of the neck ( ⁇ neck30 ), the 30th joint angle value of the shoulder ( ⁇ shoulder30 ), and the 30th joint angle value of the elbow ( ⁇ elbow30 ). .
- the first pose vector 610-1 may correspond to a first key image frame
- the second pose vector 610-2 may correspond to a thirtieth key image frame.
- 'corresponding' means that a corresponding key image frame is acquired by performing rendering using a specific posture vector.
- a first key image frame is obtained by rendering a 3D character image using a first posture vector 610-1
- a 3D character image is rendered using a second posture vector 610-2.
- the step of acquiring the second posture vector 610-2 (S520) is shown to be performed sequentially after the step of acquiring the first posture vector 610-1 (S510), but is limited to this. it is not going to be In another embodiment of the present disclosure, the electronic device 100 may simultaneously acquire the first posture vector 610 - 1 and the second posture vector 610 - 2 regardless of the order.
- step S530 of FIG. 5 the electronic device 100 performs interpolation using a first pose vector corresponding to the first key image frame and a second pose vector corresponding to the second key image frame.
- the interpolation module 124 may obtain a plurality of posture vectors 620 by performing interpolation using the first posture vector 610-1 and the second posture vector 610-2. there is.
- the processor 110 (see FIG. 2 ) of the electronic device 100 inputs the first pose vector 610 - 1 and the second pose vector 610 - 2 to the interpolation module 124 .
- Spherical linear interpolation is a method of interpolating joint angles between a plurality of joint angles ( ⁇ a , ⁇ b ) according to an interpolation ratio (t) as shown in the following formula.
- Equation 1 q represents a Rotational Quaternion for a 3D joint angle value of each joint, and t represents an interpolation ratio.
- step S540 of FIG. 5 the electronic device 100 obtains a plurality of pose vectors corresponding to each of the image frames between the first key image frame and the second key image frame through interpolation.
- the interpolation module 124 may obtain the joint angle value ⁇ pose i of the ith pose vector by using the following equation.
- the processor 110 transmits the joint angle value ⁇ pose 1 of the first pose vector 610-1 and the joint angle value of the second pose vector 610-2 to the interpolation module 124.
- ( ⁇ pose 30 ) is input, and the joint angle value ( ⁇ pose i ) of the ith posture vector can be obtained using the input joint angle values ( ⁇ pose 1 , ⁇ pose 30 ) and the interpolation ratio value (i/30).
- SLERP spherical linear interpolation
- the electronic device 100 performs interpolation using a first posture vector 610-1 and a second posture vector 610-2 indicating different hand postures.
- a plurality of image frames (second image frame to 29th image frame) representing successive hand postures naturally connected between the first key image frame representing the first hand posture and the 30th key image frame representing the second hand posture. ) can be obtained.
- FIG. 7 is a flowchart illustrating a method of acquiring video data indicating a hand motion by the electronic device 100 according to an embodiment of the present disclosure.
- Steps S710 to S730 shown in FIG. 7 are steps incorporating step S360 shown in FIG. 3 .
- Step S710 shown in FIG. 7 may be performed after step S350 shown in FIG. 3 is performed.
- FIG. 8 is a diagram illustrating an operation of acquiring a plurality of image frames 820-1 to 820-n representing successive hand postures by the electronic device 100 according to an embodiment of the present disclosure.
- the electronic device 100 renders a 3D character image using joint values included in a plurality of posture vectors.
- the processor 110 of the electronic device 100 inputs a plurality of posture vectors 810-1 to 810-n to the rendering module 126, and inputs a plurality of posture vectors ( 810-1 to 810-n) may be used to render the 3D character image 126a.
- the processor 110 includes the joint angle values ⁇ pose 1 to ⁇ pose n included in the plurality of pose vectors 810-1 to 810-n in the 3D character image 126a. Image rendering applied to a plurality of joints may be performed.
- the 3D character image 126a is configured to be rendered in a specific posture corresponding to the joint angle values ⁇ pose 1 to ⁇ pose n through the joint angle values ⁇ pose 1 to ⁇ pose n . It may be a 3D image of
- the electronic device 100 obtains a plurality of image frames by combining the rendered 3D character image with the background image.
- the background image may be a previously captured image or an image selected by a user.
- the processor 110 of the electronic device 100 uses the joint angle values ⁇ pose 1 included in the first pose vector 810-1 through the rendering module 126 to create a 3D 3D image.
- the first image frame 820 - 1 may be obtained by rendering the character image 126a and combining the rendered 3D character image 126a with the background image 126b.
- the processor 110 renders the 3D character image 126a using the joint angle value ⁇ pose 2 included in the second posture vector 810-2 through the rendering module 126, and renders the 3D character image 126a.
- the second image frame 820-2 may be obtained.
- the processor 110 generates third image frames 820-3 to n-th image frames 820-n using the third pose vectors 810-3 to n-th pose vectors 810-n. can be obtained.
- the first image frame 820-1 to the n-th image frame 820-n may be simulated images rendered as if obtained by capturing the 3D character image 126a through a virtual camera.
- step S730 of FIG. 7 the electronic device 100 obtains video data representing hand motions by successively arranging a plurality of image frames.
- the processor 110 sequentially streams a first image frame 820-1 to an n-th image frame 820-n representing continuously changing hand postures, thereby performing hand motions.
- Video data representing can be obtained.
- An embodiment in which the processor 110 obtains video data representing a hand motion will be described in detail with reference to FIG. 9 .
- FIG. 9 is a diagram illustrating an operation of acquiring video data 900 indicating a hand motion by the electronic device 100 according to an embodiment of the present disclosure.
- the electronic device 100 may acquire a first image frame 900-1 to an n-th image frame 900-n.
- the first image frame 900-1 is an image frame generated through rendering using the first posture vector constituting the first hand posture
- the second image frame 900-2 constitutes the second hand posture.
- It is an image frame generated through rendering using 2 posture vectors
- the n th image frame 900-n may be an image frame generated through rendering using an n th posture vector constituting an n th hand posture.
- the first to nth posture vectors may be composed of joint angle values constituting continuously changing hand postures.
- the processor 110 of the electronic device 100 sequentially arranges the first image frame 900-1 to the n-th image frame 900-n to display a video showing hand motions composed of continuous hand postures.
- Data 900 may be obtained.
- the processor 110 may adjust the play speed of the video data 900 including the first image frame 900-1 to the n-th image frame 900-n.
- the electronic device 100 may further include a user input unit that receives a user input for adjusting the play speed of the video data 900 .
- the processor 110 controls the play time of the first image frame 900-1 to the n-th image frame 900-n according to the play speed determined by the user input received through the user input unit, Through this, the play speed of the video data 900 can be adjusted.
- FIG. 10 is a flowchart illustrating a method of modifying image data based on information about a camera location and specifications of an augmented reality device by the electronic device 100 according to an embodiment of the present disclosure.
- the electronic device 100 obtains location information and spec information of a camera included in the augmented reality device.
- An augmented reality device is a device that recognizes hand gestures such as a hand motion for selecting from video data obtained by the electronic device 100, a pointing hand motion, and a grasping motion, and uses them as input means.
- the augmented reality device may perform training by mapping a hand motion included in video data obtained by the electronic device 100 to a label value related to a specific input.
- the electronic device 100 may obtain location information about where a camera included in the augmented reality device is installed in the augmented reality device.
- the electronic device 100 may transmit information about at least one of a field of view (FOV) of a lens of a camera included in an augmented reality device and a camera configuration (eg, an RGB camera, a mono camera, a depth camera, etc.) It is possible to obtain camera specification information including
- the electronic device 100 may obtain camera location information and specification information of the augmented reality device from the augmented reality device or server. However, it is not limited thereto, and in another embodiment of the present disclosure, the electronic device 100 may further include a user input unit, and obtain camera location information and specification information of the augmented reality device from a user input received through the user input unit. can
- the electronic device 100 selects at least one of the position, size, angle, color, texture, and depth value of the 3D character image within the plurality of image frames based on the acquired position information and specification information of the camera. Modify one.
- the electronic device 100 generates a 3D character image according to camera position information of an augmented reality device to which a 3D character image included in video data consisting of a plurality of image frames is to be used as an input means. You can change the displayed position, size, and angle.
- the electronic device 100 may change the location, size, and angle of the background image according to camera location information of the augmented reality device.
- the electronic device 100 may change the position, size, and angle of a 3D character image in a plurality of image frames according to the FOV of a camera included in the augmented reality device.
- the electronic device 100 may change the color of the 3D character image in the plurality of image frames according to whether the camera included in the augmented reality device is an RGB camera or a mono camera. For example, when the camera included in the augmented reality device is an RGB camera, the electronic device 100 displays a 3D character image and a background image included in a plurality of image frames in RGB color, and includes When the camera is a mono camera, the electronic device 100 may display 3D character images and background images in a plurality of image frames in the form of black and white images.
- the electronic device 100 when a camera included in an augmented reality device is a depth camera, the electronic device 100 provides a depth value for each pixel constituting a 3D character image and a background image in a plurality of image frames. It can be changed to the form of a depth map representing .
- 11A is a diagram illustrating an operation of photographing a user's hand according to the location and configuration of the cameras 210L and 210R of the augmented reality device 200. Referring to FIG.
- the augmented reality device 200 may be glasses-shaped augmented reality glasses worn on a user's face.
- the augmented reality device 200 may be implemented as a device such as a Head Mounted Display Apparatus (HMD) worn on the user's head or an augmented reality helmet.
- HMD Head Mounted Display Apparatus
- the augmented reality device 200 is, for example, a mobile device, a smart phone, a laptop computer, a desktop, a tablet PC, an e-book reader, a digital broadcasting terminal, and a PDA.
- PMP Portable Multimedia Player
- navigation MP3 player
- camcorder IPTV (Internet Protocol Television), DTV (Digital Television), wearable device, etc. .
- the augmented reality device 200 may include a plurality of cameras 210L and 210R.
- the augmented reality device 200 may obtain a plurality of image frames by photographing the user's hands using the plurality of cameras 210L and 210R.
- the augmented reality device 200 is illustrated as including a plurality of cameras including a left eye camera 210L and a right eye camera 210R, but is not limited thereto.
- the augmented reality device 200 may include a single camera, or may include three or more multi-cameras.
- the augmented reality device 200 uses the depth values of the plurality of joints included in the hand from the left eye image acquired through the left eye camera 210L and the right eye image acquired through the right eye camera 210R through stereo mapping. It is possible to obtain a z-axis position coordinate value that is (depth value).
- the augmented reality device 200 may recognize a user's hand motion from a plurality of image frames using an artificial intelligent model (AI model).
- AI model may be composed of a deep learning-based object recognition model.
- the augmented reality device 200 may recognize a hand motion from a plurality of image frames through reasoning using an object recognition model and identify a user input indicated by the hand motion.
- the augmented reality device 200 simulates a hand motion included in a left eye image and a right eye image acquired by using the left eye camera 210L and the right eye camera 210R, respectively. Data may be provided to the augmented reality device 200 .
- the augmented reality device 200 uses the simulated image data provided from the electronic device 100 as learning data, and converts a hand motion included in the image data into a corresponding user input (eg, a selection input, a pointing input, and a gripping input). input, etc.) can be trained.
- the electronic device 100 may change the position, size, and angle of the 3D character image included in the image data based on the location information and specification information of the cameras 210L and 210R included in the augmented reality device 200.
- can A specific embodiment in which the electronic device 100 changes the position, size, and angle of a 3D character included in image data will be described in detail with reference to FIG. 11B.
- 11B is an image data based on information about the location and configuration of the cameras 210L and 210R (see FIG. 11A) of the augmented reality device 200 (see FIG. 11A) by the electronic device 100 according to an embodiment of the present disclosure. It is a drawing for explaining the operation of modifying.
- the electronic device 100 may modify an image frame 1110 including a 3D character image based on location and property information of a camera of the augmented reality device 200.
- the augmented reality device 200 includes a stereo camera composed of a left eye camera 210L and a right eye camera 210R, and the left eye camera 210L and the right eye camera 210R may be RGB cameras.
- the processor 110 of the electronic device 100 (see FIG. 11A )
- a left eye image frame 1120L and a right eye image frame 1120R may be obtained from the image frame 1110 based on the specification information.
- the processor 110 may frame an image based on information about the position and specifications (eg, FOV, RGB camera, etc.) of the left-eye camera 210L of the augmented reality device 200. 1110) may change the position, size, and angle of both hands images.
- the processor 110 may obtain the left eye image frame 1120L by modifying the image frame 1110 so that more wrists and arms are included in the image frame 1110 and less images of the right hand are included.
- the processor 110 may include both hand images included in the image frame 1110 based on information about the location and specifications (eg, FOV, RGB camera, etc.) of the right eye camera 210R of the augmented reality device 200.
- the processor 110 modifies the image frame 1110 so that the wrist and arm parts of the left hand image are not included, and corrects the image frame 1110 to include more wrist and arm parts of the right hand image, so that the right eye image frame 1120R ) can be obtained.
- the electronic device 100 converts a 3D character image included in a plurality of acquired image frames into location information of a camera included in the augmented reality device 200 and Since the change is made based on the specification information, existing image data can be processed and reconstructed without the need to acquire the image data again. Accordingly, the electronic device 100 according to an embodiment of the present disclosure provides technical effects of reducing time and cost consumed when newly acquiring image data suitable for other devices and improving utilization of previously acquired image data. do.
- FIG. 12 is a flowchart illustrating a method of determining whether joint values are generated and acquiring video data representing hand motions according to whether joint values are generated, by the electronic device 100 according to an embodiment of the present disclosure.
- Steps S1210 to S1240 shown in FIG. 12 are steps performed before step S330 shown in FIG. 3 is performed.
- step S1210 the electronic device 100 selects a 3D character image and a background image based on a user input.
- the electronic device 100 obtains configuration information of the augmented reality device.
- the electronic device 100 may obtain camera location information and specification information included in the augmented reality device from the augmented reality device or server.
- the electronic device 100 may further include a user input unit, and obtain camera location information and specification information of the augmented reality device from a user input received through the user input unit.
- step S1230 the electronic device 100 acquires a designated joint value for a preset joint among a plurality of joints. Since step S1230 is the same as step S310 shown in FIG. 3, duplicate descriptions will be omitted.
- step S1240 the electronic device 100 determines whether to generate a joint value based on a correspondence between a designated joint value and a plurality of joint values. In one embodiment of the present disclosure, it may be determined whether a specified joint value completely corresponds to a joint value of a plurality of joints constituting a specific hand posture.
- the electronic device 100 determines to generate the joint value.
- the electronic device 100 generates an arbitrary joint value based on constraint information pre-stored in the memory 120 (see FIG. 2) in step S330.
- the electronic device 100 determines not to generate joint values.
- the electronic device 100 obtains a posture vector sequence using designated joint values constituting successive hand postures.
- the electronic device 100 may acquire a posture vector sequence using designated joint values pre-stored in the memory 120, but is not limited thereto.
- the electronic device 100 may obtain a posture vector sequence from an external server or external device.
- the electronic device 100 may obtain a posture vector sequence through a user input of information about joint values constituting continuous hand postures.
- step S1260 the electronic device 100 obtains video data representing a hand motion by performing image rendering using the posture vector sequence.
- the electronic device 100 renders a 3D character image by using a plurality of joint values included in a posture vector sequence, and synthesizes the rendered 3D character image with a background image to generate a plurality of images. frame can be obtained.
- the electronic device 100 may acquire video data representing a hand motion by sequentially arranging a plurality of image frames.
- An electronic device may include a memory for storing a designated joint value for at least one preset joint among joint values for a plurality of joints constituting a hand posture, and at least one processor. there is.
- the at least one processor may obtain a designated joint value from the memory.
- the at least one processor may determine whether a joint value is generated based on a corresponding relationship between the obtained specified joint value and joint values related to the plurality of joints. According to the determination result, the at least one processor may generate arbitrary joint values for the remaining joints except for at least one preset joint based on restriction information according to the musculoskeletal system of the human body.
- the at least one processor may obtain a pose vector corresponding to a key image frame using a designated joint value and a generated random joint value.
- the at least one processor may obtain a plurality of pose vectors by performing interpolation using the obtained pose vectors.
- the at least one processor may obtain a plurality of image frames representing hand motions by rendering a 3D character image using the obtained plurality of posture vectors.
- the joint values may be joint angle values of a plurality of joints included in a finger, wrist, palm, neck, arm, and shoulder.
- the designated joint value may be at least one joint angle value previously set with respect to at least one joint constituting a specific hand posture among a plurality of joints.
- the restriction information may include information about a range of motion for each joint according to anatomical characteristics of the musculoskeletal system of the human body.
- the at least one processor may generate a random joint value using a random value within a range of motion angles for each joint.
- the at least one processor may include a first posture vector including a plurality of joint values constituting a first hand posture and a second posture including a plurality of joint values constituting a second hand posture. vector can be obtained.
- the at least one processor may perform interpolation using a first pose vector corresponding to a first key image frame and a second pose vector corresponding to a second key image frame.
- the at least one processor may obtain a plurality of posture vectors including joint values respectively corresponding to image frames between the first key image frame and the second key image frame through interpolation.
- the at least one processor may obtain a plurality of pose vectors by performing spherical linear interpolation (Slerp).
- the at least one processor may acquire a plurality of image frames by synthesizing the rendered 3D character image with a background image.
- the at least one processor obtains the plurality of image frames representing different hand postures by rendering a 3D character image using joint values included in the obtained plurality of posture vectors, and , It is possible to obtain moving picture data representing a hand motion by sequentially enumerating a plurality of acquired image frames.
- the at least one processor may obtain location information and camera spec information of a camera included in an augmented reality device.
- the at least one processor changes at least one of the position, size, angle, color, texture, and depth value of the 3D character image in a plurality of image frames based on the obtained position information and specification information of the camera.
- a method of operating an electronic device may include obtaining a designated joint value for at least one preset joint among joint values for a plurality of joints constituting a hand posture.
- the operating method may include determining whether joint values are generated based on a corresponding relationship between the acquired specified joint values and joint values related to a plurality of joints.
- the operation method may include generating arbitrary joint values for joints other than at least one predetermined joint based on constraint information according to the musculoskeletal system of the human body according to a result of the determination.
- the operation method may include acquiring a posture vector corresponding to a key image frame using a designated joint value and a generated arbitrary joint value.
- the operation method may include acquiring a plurality of pose vectors by performing interpolation using the acquired pose vectors.
- the operation method may include acquiring a plurality of image frames representing hand motions by rendering a 3D character image using the acquired posture vectors.
- the designated joint value may be at least one joint angle value previously set with respect to at least one joint constituting a specific hand posture among a plurality of joints.
- information about the specified joint value may be stored in memory in advance.
- information about the designated joint values stored in the memory may be called by accessing a memory.
- the restriction information may include information about a range of motion angles for each of a plurality of joints according to anatomical characteristics of the musculoskeletal system of the human body.
- the obtaining of the posture vector may include obtaining a first posture vector including a plurality of joint values constituting a first hand posture, and a plurality of joints constituting a second hand posture. It may include obtaining a second posture vector including values.
- the obtaining of the plurality of pose vectors may include performing interpolation using a first pose vector corresponding to a first key image frame and a second pose vector corresponding to a second key image frame.
- the obtaining of the plurality of posture vectors may include obtaining a plurality of posture vectors including joint values respectively corresponding to image frames between the first key image frame and the second key image frame through interpolation. there is.
- the electronic device in the acquiring of the plurality of posture vectors, may obtain the plurality of posture vectors by performing spherical linear interpolation (Slerp).
- Serp spherical linear interpolation
- acquiring a plurality of image frames representing the hand motion may include acquiring a plurality of image frames by synthesizing a rendered 3D character image with a background image.
- the obtaining of a plurality of image frames representing hand motions may include rendering a 3D character image using joint values included in the obtained plurality of posture vectors, thereby representing different hand postures.
- the method may include acquiring a plurality of image frames, and obtaining video data representing hand motions by successively arranging the obtained plurality of image frames.
- the method may include acquiring location information and spec information of a camera included in an augmented reality device.
- the method changes at least one of the position, size, angle, color, texture, and depth value of the 3D character image in a plurality of image frames based on the obtained position information and specification information of the camera ( modify) step may be further included.
- a computer program product including a computer-readable storage medium recording a program to be executed on a computer.
- the storage medium may include instructions for obtaining a designated joint value for at least one preset joint among joint values for a plurality of joints constituting a hand posture.
- the storage medium may include instructions related to an operation of determining whether a joint value is generated based on a correspondence between the acquired specified joint value and joint values of a plurality of joints.
- the storage medium may include instructions related to an operation of generating arbitrary joint values for joints other than at least one preset joint based on restriction information according to the musculoskeletal system of the human body according to a result of the determination. there is.
- the storage medium may include instructions related to an operation of obtaining a posture vector corresponding to a key image frame using a designated joint value and a generated arbitrary joint value.
- the storage medium may include instructions for obtaining a plurality of pose vectors by performing interpolation using the obtained pose vectors.
- the storage medium may include instructions related to an operation of obtaining a plurality of image frames representing hand motions by rendering a 3D character image using the acquired posture vectors.
- a program executed by the electronic device 100 described in this disclosure may be implemented as a hardware component, a software component, and/or a combination of hardware components and software components.
- a program can be executed by any system capable of executing computer readable instructions.
- Software may include a computer program, code, instructions, or a combination of one or more of the foregoing, which configures a processing device to operate as desired or processes independently or collectively. You can command the device.
- Computer-readable recording media include, for example, magnetic storage media (e.g., read-only memory (ROM), random-access memory (RAM), floppy disk, hard disk, etc.) and optical reading media (e.g., CD-ROM) (CD-ROM) and DVD (Digital Versatile Disc).
- ROM read-only memory
- RAM random-access memory
- CD-ROM CD-ROM
- DVD Digital Versatile Disc
- a computer-readable recording medium may be distributed among computer systems connected through a network, and computer-readable codes may be stored and executed in a distributed manner. The medium may be readable by a computer, stored in a memory, and executed by a processor.
- a computer-readable storage medium may be provided in the form of a non-transitory storage medium.
- 'non-temporary' only means that the storage medium does not contain a signal and is tangible, but does not distinguish whether data is stored semi-permanently or temporarily in the storage medium.
- the 'non-temporary storage medium' may include a buffer in which data is temporarily stored.
- program according to the embodiments disclosed in this specification may be included in a computer program product and provided.
- Computer program products may be traded between sellers and buyers as commodities.
- a computer program product may include a software program and a computer-readable storage medium in which the software program is stored.
- the computer program product is a product in the form of a software program electronically distributed through a manufacturer of the electronic device 100 or an electronic market (eg, Samsung Galaxy Store) (eg, a downloadable application). ) may be included.
- an electronic market eg, Samsung Galaxy Store
- at least a portion of the software program may be stored on a storage medium or may be temporarily created.
- the storage medium may be a storage medium of a manufacturer's server of the electronic device 100, a server of an electronic market, or a relay server temporarily storing a software program.
- the computer program product may include a storage medium of a server or a storage medium of the electronic device 100 in a system including the electronic device 100 , the augmented reality device 200 , and/or a server.
- the computer program product may include a storage medium of the third device.
- the computer program product may include a software program itself transmitted from the electronic device 100 to the third device or from the third device to the electronic device.
- one of the electronic device 100 , the augmented reality device 200 , and the third device may execute the computer program product to perform the method according to the disclosed embodiments.
- at least one of the electronic device 100, the augmented reality device 200, and the third device may execute the computer program product to implement the method according to the disclosed embodiments in a distributed manner.
- the electronic device 100 executes a computer program product stored in the memory 120 (see FIG. 2)
- another electronic device eg, a mobile device communicatively connected to the electronic device 100 is disclosed. It can be controlled to perform the method according to them.
- the third device may execute a computer program product to control an electronic device communicatively connected to the third device to perform the method according to the disclosed embodiment.
- the third device may download the computer program product from the electronic device 100 and execute the downloaded computer program product.
- the third device may perform the method according to the disclosed embodiments by executing a computer program product provided in a pre-loaded state.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Optics & Photonics (AREA)
- Multimedia (AREA)
- Processing Or Creating Images (AREA)
Abstract
증강 현실 디바이스가 비젼 기반 핸드 트래킹(Vision-based Hand tracking) 기술을 이용하여 손 동작에 대응되는 입력 수단을 인식하기 위한 학습 데이터로서 사용되는 이미지 데이터를 획득하는 전자 장치 및 그 동작 방법을 제공한다. 본 개시의 일 실시예에 따른 전자 장치는 손 자세를 구성하는 복수의 관절에 관한 관절값 중 적어도 하나의 기 설정된 관절에 관한 지정 관절값을 획득하고, 인체의 근골격계에 따른 제약 사항 정보에 기초하여 임의 관절값을 생성하고, 지정 관절값 및 임의 관절값을 이용하여 키 이미지 프레임(key image frame)에 대응되는 자세 벡터를 획득하고, 획득된 자세 벡터를 이용하여 보간(interpolation)을 수행함으로써 복수의 자세 벡터를 획득하고, 복수의 자세 벡터를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써 손 동작을 나타내는 복수의 이미지 프레임을 획득할 수 있다.
Description
본 개시는 증강 현실(Augmented Reality, AR) 디바이스에서 입력 수단으로 사용되는 사용자의 손 동작(hand gesture)에 관한 이미지 데이터를 획득하는 전자 장치 및 그 동작 방법에 관한 것이다.
증강 현실(Augmented Reality)은 현실 세계의 물리적 환경 공간이나 현실 객체(real world object) 상에 가상 이미지를 오버레이(overlay)하여 함께 보여주는 기술로서, 증강 현실 기술을 활용한 증강 현실 디바이스(예를 들어, 스마트 글래스(Smart Glass)가 정보 검색, 길 안내, 카메라 촬영과 같이 일상 생활에서 유용하게 사용되고 있다. 특히, 스마트 글래스는 패션 아이템으로도 착용되고, 실외 활동에 주로 사용되고 있다.
증강 현실 디바이스는 특성 상 터치 조작이 불가능하므로, 증강 현실 서비스를 제공하기 위해서는 입력 수단으로써 사용자의 손의 3차원적 자세(pose)와 손 동작(hand gesture)를 이용하는 핸드 인터랙션(hand interaction)이 입력 인터페이스로서 중요하다. 따라서, 보다 실감나는 증강 현실 기술의 구현을 위해서는 손에 포함되는 관절의 3차원 위치 정보를 획득하고, 3차원 위치 정보를 통해 손의 자세(형태)를 추적하고, 손 동작을 인식하는 기술이 요구된다.
일반적인 증강 현실 디바이스는 사용자의 양 손의 자유로움을 보장하기 위하여 별도의 외부 입력 장치를 사용하지 않고, 증강 현실 디바이스에 탑재되는 카메라를 이용하여 촬영된 이미지로부터 사용자의 손을 인식하는 비젼 기반 핸드 트래킹(Vision-based Hand tracking) 기술을 사용하고 있다. 증강 현실 디바이스가 사용자의 손 자세 또는 손 동작을 인식하도록 하기 위해서는, 특정 손 자세 또는 손 동작에 해당되는 이미지 데이터를 입력 데이터로서 이용하여 인공지능(Artificial Intelligence, AI) 모델을 통한 학습(training)을 수행하여야 한다. 인공지능 모델의 학습을 위해서는 수많은 이미지 데이터들이 필요하지만, 실제 사람의 손의 자세 또는 손 동작을 카메라를 이용하여 직접 촬영하여 이미지 데이터를 획득하고, 획득된 이미지 데이터에 특정 기능 또는 인터랙션에 관한 라벨값(label)을 입력하는 것은 시간 및 비용이 많이 소요되고, 많은 데이터가 요구된다.
상술한 기술적 과제를 해결하기 위하여 본 개시의 일 측면(aspect)은 손 동작을 나타내는 이미지 데이터를 획득하는 전자 장치를 제공한다. 본 개시의 일 실시예에 따른 전자 장치는 손 자세를 구성하는 복수의 관절에 관한 관절값들 중 적어도 하나의 기 설정된 관절에 관한 지정 관절값을 저장하는 메모리, 및 적어도 하나의 프로세서를 포함할 수 있다. 본 개시의 일 실시예에서, 상기 적어도 하나의 프로세서는 상기 메모리로부터 지정 관절값을 획득할 수 있다. 상기 적어도 하나의 프로세서는 획득된 지정 관절값과 상기 복수의 관절에 관한 관절값들 간의 대응 관계에 기초하여 관절값의 생성 여부를 판단할 수 있다. 상기 적어도 하나의 프로세서는 판단 결과에 따라 인체의 근골격계에 따른 제약 사항 정보에 기초하여 적어도 하나의 기 설정된 관절을 제외한 나머지 관절에 관한 임의 관절값을 생성할 수 있다. 상기 적어도 하나의 프로세서는 지정 관절값 및 생성된 임의 관절값을 이용하여 키 이미지 프레임(key image frame)에 대응되는 자세 벡터를 획득할 수 있다. 상기 적어도 하나의 프로세서는 획득된 자세 벡터를 이용하여 보간(interpolation)을 수행함으로써, 복수의 자세 벡터를 획득할 수 있다. 상기 적어도 하나의 프로세서는 획득된 복수의 자세 벡터를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써 손 동작을 나타내는 복수의 이미지 프레임을 획득할 수 있다.
상술한 기술적 과제를 해결하기 위하여 본 개시의 다른 측면(another aspect)은 전자 장치가 손 동작을 나타내는 이미지 데이터를 획득하는 방법을 제공한다. 본 개시의 일 실시예에서 전자 장치의 동작 방법은 손 자세를 구성하는 복수의 관절에 관한 관절값들 중 적어도 하나의 기 설정된 관절에 관한 지정 관절값을 획득하는 단계를 포함할 수 있다. 상기 동작 방법은 획득된 지정 관절값과 복수의 관절에 관한 관절값들 간의 대응 관계에 기초하여 관절값의 생성 여부를 판단하는 단계를 포함할 수 있다. 상기 동작 방법은 판단 결과에 따라 인체의 근골격계에 따른 제약 사항 정보에 기초하여 적어도 하나의 기 설정된 관절을 제외한 나머지 관절에 관한 임의 관절값을 생성하는 단계를 포함할 수 있다. 상기 동작 방법은 지정 관절값 및 생성된 임의 관절값을 이용하여 키 이미지 프레임(key image frame)에 대응되는 자세 벡터를 획득하는 단계를 포함할 수 있다. 상기 동작 방법은 획득된 자세 벡터를 이용하여 보간(interpolation)을 수행함으로써, 복수의 자세 벡터를 획득하는 단계를 포함할 수 있다. 상기 동작 방법은 획득된 복수의 자세 벡터를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써, 손 동작을 나타내는 복수의 이미지 프레임을 획득하는 단계를 포함할 수 있다.
상술한 기술적 과제를 해결하기 위하여, 본 개시의 다른 측면은 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 저장 매체를 포함하는 컴퓨터 프로그램 제품(Computer Program Product)을 제공한다.
본 개시는, 다음의 자세한 설명과 그에 수반되는 도면들의 결합으로 쉽게 이해될 수 있으며, 참조 번호(reference numerals)들은 구조적 구성요소(structural elements)를 의미한다.
도 1은 본 개시의 일 실시예에 따른 전자 장치가 손을 포함한 상체의 관절값 정보를 이용하여 손 동작을 나타내는 이미지 데이터를 획득하는 동작을 도시한 개념도이다.
도 2는 본 개시의 일 실시예에 따른 전자 장치의 구성 요소를 도시한 블록도이다.
도 3은 본 개시의 일 실시예에 따른 전자 장치의 동작 방법을 도시한 흐름도이다.
도 4는 본 개시의 일 실시예에 따른 전자 장치가 지정 관절값 및 임의 관절값을 포함하는 자세 벡터를 획득하는 동작을 설명하기 위한 도면이다.
도 5는 본 개시의 일 실시예에 따른 전자 장치가 보간(interpolation)을 통해 복수의 자세 벡터를 획득하는 방법을 도시한 흐름도이다.
도 6은 본 개시의 일 실시예에 따른 전자 장치가 보간(interpolation)을 통해 복수의 자세 벡터를 획득하는 동작을 설명하기 위한 도면이다.
도 7은 본 개시의 일 실시예에 따른 전자 장치가 손 동작을 나타내는 동영상 데이터를 획득하는 방법을 도시한 흐름도이다.
도 8은 본 개시의 일 실시예에 따른 전자 장치가 연속적인 손 자세를 나타내는 복수의 이미지 프레임을 획득하는 동작을 도시한 도면이다.
도 9는 본 개시의 일 실시예에 따른 전자 장치가 손 동작을 나타내는 동영상 데이터를 획득하는 동작을 도시한 도면이다.
도 10은 본 개시의 일 실시예에 따른 전자 장치가 증강 현실 디바이스의 카메라 위치 및 사양에 관한 정보에 기초하여 이미지 데이터를 변경(modify)하는 방법을 도시한 흐름도이다.
도 11a는 증강 현실 디바이스의 카메라 위치 및 구성에 따라 사용자의 손을 촬영하는 동작을 도시한 도면이다.
도 11b는 본 개시의 일 실시예에 따른 전자 장치가 증강 현실 디바이스의 카메라 위치 및 사양에 관한 정보에 기초하여 이미지 데이터를 변경(modify)하는 동작을 설명하기 위한 도면이다.
도 12는 본 개시의 일 실시예에 따른 전자 장치가 관절값 생성 여부를 판단하고, 관절값 생성 여부에 따라 손 동작을 나타내는 동영상 데이터를 획득하는 방법을 도시한 흐름도이다.
본 명세서의 실시예들에서 사용되는 용어는 본 개시의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 명세서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다.
본 개시 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 본 명세서에 기재된 "...부", "...모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
본 개시에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)", "~하는 능력을 가지는(having the capacity to)", "~하도록 설계된(designed to)", "~하도록 변경된(adapted to)", "~하도록 만들어진(made to)", 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 시스템"이라는 표현은, 그 시스템이 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
또한, 본 개시에서 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.
본 개시에서, '관절(joint)'은 뼈와 뼈가 서로 연결되는 인체의 부분으로서, 손가락, 손목, 손바닥 등 손 뿐만 아니라, 목, 팔, 어깨 등 상체에 포함되는 하나 이상의 부위를 나타낸다.
본 개시에서, '관절값'은 신체에 포함되는 복수의 관절에 관한 특징값을 나타낸다. 본 개시의 일 실시예에서, 관절값은 손가락, 손목, 손바닥, 목, 팔, 팔꿈치, 및 어깨에 포함되는 복수의 관절에 관한 관절 각도값을 의미할 수 있다. 그러나, 이에 한정되는 것은 아니고, 다른 실시예에서 관절값은 상체에 포함되는 복수의 관절에 관한 관절 각도값 뿐만 아니라, 관절의 3차원 위치 좌표값을 포함할 수도 있다.
본 개시에서, '지정 관절값'은 복수의 관절들 중 특정 손 자세를 구성하는 적어도 하나의 관절에 관하여 미리 설정된 관절 각도값을 의미한다. 본 개시의 일 실시예에서, 지정 관절값에 관한 정보는 전자 장치의 메모리에 미리 저장되어 있을 수 있으나, 이에 한정되는 것은 아니다.
본 개시에서, '임의 관절값'은 복수의 관절들에 관한 관절 각도값 중 지정 관절값을 제외한 나머지 관절에 관한 관절 각도값을 의미한다. 본 개시의 일 실시예에서, 임의 관절값은 전자 장치에 의해 임의의 각도값으로 생성될 수 있다. 그러나 이에 한정되는 것은 아니고, 본 개시의 다른 실시예에서, 임의 관절값은 전자 장치에 의해 생성되지 않을 수도 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 본 개시의 실시예들을 상세하게 설명한다.
도 1은 본 개시의 일 실시예에 따른 전자 장치가 손을 포함한 상체의 관절값 정보를 이용하여 손 동작을 나타내는 이미지 데이터를 획득하는 동작을 도시한 개념도이다.
도 1을 참조하면, 전자 장치(100, 도 2 참조)는 복수의 관절값을 포함하는 자세 벡터(10)를 획득한다(동작 ①). 자세 벡터(10)는 복수의 서로 다른 손 자세(θpose1 내지 θpose n)를 나타내는 복수의 관절값으로 구성될 수 있다. 본 개시에서 '복수의 관절값'은 사람의 상체에 포함되는 복수의 관절에 관한 특징값을 나타낸다. 본 개시의 일 실시예에 따르면, 복수의 관절값은 복수의 관절에 관한 관절 각도값을 의미할 수 있다. 복수의 관절값은 예를 들어, 손목의 관절 각도값(θwrist), 손가락의 관절 각도값(θthumb, θindex, θmiddle, θring, θlittle), 목의 관절 각도값(θneck), 팔꿈치의 관절 각도값(θelbow), 및 어깨의 관절 각도값(θshoulder)을 포함할 수 있다.
전자 장치(100)는 특정 손 자세를 구성하는 복수의 관절에 관한 복수의 관절값들(θwrist, θthumb, θindex, θmiddle, θring, θlittle, θneck, θshoulder, θelbow) 중 적어도 하나의 기 설정된 관절에 관한 적어도 하나의 지정 관절값(θwrist, θthumb, θindex, θmiddle, θring, θlittle)을 획득할 수 있다. '지정 관절값(θwrist, θthumb, θindex, θmiddle, θring, θlittle)'은 복수의 관절들 중 특정 손 자세를 구성하는 적어도 하나의 관절에 관하여 미리 설정된 관절 각도값을 의미한다. 지정 관절값을 갖는 적어도 하나의 관절은 사용자에 의해 미리 설정될 수 있다. 적어도 하나의 관절은 예를 들어, 손목 관절과 엄지, 검지, 중지, 약지, 및 소지를 포함하는 손가락 관절을 포함할 수 있으나, 이에 한정되는 것은 아니다. 본 개시의 일 실시예에서, 지정 관절값(θwrist, θthumb, θindex, θmiddle, θring, θlittle)에 관한 정보는 전자 장치(100)의 메모리(120, 도 2 참조)에 미리 저장되어 있을 수 있다. 전자 장치(100)는 메모리(120)에 액세스(access)하고, 특정 손 자세를 구성하는 지정 관절값(θwrist, θthumb, θindex, θmiddle, θring, θlittle)에 관한 정보를 불러오기(load)함으로써, 지정 관절값(θwrist, θthumb, θindex, θmiddle, θring, θlittle)을 획득할 수 있다.
전자 장치(100)는 획득된 지정 관절값(θwrist, θthumb, θindex, θmiddle, θring, θlittle)과 복수의 관절들에 관한 관절값들 간의 대응 관계에 기초하여 추가 관절값의 생성 여부를 판단할 수 있다. 본 개시의 일 실시예에서, 획득된 지정 관절값(θwrist, θthumb, θindex, θmiddle, θring, θlittle)이 손 자세를 구성하는 모든 관절에 관한 관절값들 중 일부와 대응되고, 나머지 관절에 관한 관절값이 더 필요한 경우, 전자 장치(100)는 추가 관절값의 생성이 필요하다고 판단할 수 있다. 전자 장치(100)는 복수의 관절들 중 기 설정된 적어도 하나의 관절을 제외한 나머지 관절에 관한 임의 관절값(θneck, θshoulder, θelbow)을 생성할 수 있다. '임의 관절값(θneck, θshoulder, θelbow)'은 복수의 관절들에 관한 관절 각도값 중 지정 관절값을 제외한 나머지 관절에 관한 관절 각도값을 의미한다. 임의 관절값(θneck, θshoulder, θelbow)은 예를 들어, 상체의 관절들 중 목, 어깨, 팔꿈치, 또는 팔에 포함된 관절에 관한 관절 각도값일 수 있으나, 이에 한정되는 것은 아니다.
본 개시의 일 실시예에서, 전자 장치(100)는 인체의 근골격계에 따른 제약 사항 정보에 기초하여 적어도 하나의 임의 관절값(θneck, θshoulder, θelbow)을 생성할 수 있다. '제약 사항 정보'는 인체의 근골격계의 해부학적 특징에 따른 복수의 관절 별 가동 각도 범위(Range of Motion)에 관한 정보를 포함할 수 있다. 관절 별 가동 각도 범위는 예를 들어, 어깨, 팔, 또는 목에 포함되는 관절들 각각이 움직일 수 있는 각도값 범위를 의미한다. 본 개시의 일 실시예에서, 제약 사항 정보는 전자 장치(100)의 메모리(120)에 미리 저장되어 있을 수 있지만, 이에 한정되는 것은 아니다. 본 개시의 다른 실시예에서, 제약 사항 정보는 사용자에 의해 입력될 수도 있다. 전자 장치(100)는 제약 사항 정보에 기초하여 적어도 하나의 임의 관절값(θneck, θshoulder, θelbow)을 임의의 값(random value)으로 생성할 수 있다. 예를 들어, 전자 장치(100)는 어깨에 포함되는 적어도 하나의 관절 별 가동 각도 범위 내에서 임의의 각도값을 어깨의 관절값(θshoulder)으로 생성할 수 있다.
도 1에서는 전자 장치(100)가 임의 관절값(θneck, θshoulder, θelbow)을 생성하는 것으로 도시되고 설명되었으나, 이에 한정되는 것은 아니다. 예를 들어, 지정 관절값(θwrist, θthumb, θindex, θmiddle, θring, θlittle)이 특정 손 자세를 구성하는 복수의 관절값(θwrist, θthumb, θindex, θmiddle, θring, θlittle, θneck, θshoulder, θelbow)과 완전히 대응되는 경우, 전자 장치(100)는 임의 관절값(θneck, θshoulder, θelbow)의 생성이 필요하지 않다고 판단할 수 있다. 이 경우, 임의 관절값(θneck, θshoulder, θelbow)은 생성되지 않고, 0개일 수 있다.
전자 장치(100)는 자세 벡터(10)를 이용하여 3차원 캐릭터 이미지(20)를 렌더링(rendering)할 수 있다 (동작 ②). 본 개시의 일 실시예에서, 전자 장치(100)는 자세 벡터(10)에 포함된 복수의 관절값을 3차원 캐릭터 이미지(20)에 적용하는 이미지 렌더링을 수행할 수 있다. 본 개시의 일 실시예에 따른 3차원 캐릭터 이미지(20)는 복수의 관절 각도값을 통해 특정 자세로 렌더링되도록 구성된 가상의 3차원 이미지일 수 있다. 전자 장치(100)는 복수의 자세 벡터(10) 각각에 포함된 복수의 관절값을 이용하여 3차원 캐릭터 이미지(20)를 렌더링함으로써, 복수의 이미지 프레임(f1 내지 fn)을 획득할 수 있다. 복수의 이미지 프레임(f1 내지 fn)은 3차원 캐릭터 이미지(20)를 가상의 카메라를 통해 촬영하여 획득한 것처럼 렌더링된 이미지일 수 있다. 예를 들어, 복수의 이미지 프레임(f1 내지 fn)은 가상 카메라의 화각(Field of View, FOV), 렌즈 구성(예를 들어, RGB 카메라, 모노 카메라, 깊이 카메라 등), 또는 카메라의 위치를 반영하여 직접 촬영하여 획득된 것처럼 시뮬레이션된 이미지일 수 있다. 복수의 이미지 프레임(f1 내지 fn) 각각은 연속적인 복수의 손 자세를 나타낼 수 있다.
본 개시의 일 실시예에서, 전자 장치(100)는 복수의 자세 벡터(10)를 이용하여 3차원 캐릭터 이미지(20)를 렌더링하고, 배경 이미지를 합성하여 복수의 이미지 프레임(f1 내지 fn)을 획득할 수 있다. 배경 이미지는 사전에 촬영된 이미지이거나, 또는 사용자에 의해 선택된 이미지일 수 있다.
전자 장치(100)는 복수의 이미지 프레임(f1 내지 fn)을 연속적으로 나열함으로써, 손 동작을 나타내는 동영상 데이터(30)를 획득한다 (동작 ③).
일반적인 증강 현실 디바이스는 사용자의 양 손의 자유로움을 보장하기 위하여 별도의 외부 입력 장치를 사용하지 않고, 증강 현실 디바이스에 탑재되는 카메라를 이용하여 촬영된 이미지로부터 사용자의 손을 인식하는 비젼 기반 핸드 트래킹(Vision-based Hand tracking) 기술을 사용하고 있다. 증강 현실 디바이스가 사용자의 손 자세 또는 손 동작을 인식하도록 하기 위해서는, 특정 손 자세 또는 손 동작에 해당되는 이미지 데이터를 입력 데이터로서 이용하여 핸드 트래킹 인공지능(Artificial Intelligence, AI) 모델을 통한 학습(training)이 선행되어야 한다. 인공지능 모델의 학습을 위해서는 수많은 이미지 데이터들이 필요하지만, 실제 사람의 손의 자세 또는 손 동작을 카메라를 이용하여 촬영하여 수많은 이미지 데이터를 직접 획득하기에는 시간 및 비용이 많이 소요되고, 데이터 요구량이 높아지는 문제점이 있다.
본 개시는 증강 현실 디바이스가 비젼 기반 핸드 트래킹(Vision-based Hand tracking) 기술을 이용하여 손 동작을 인식하는 경우에서의 데이터 요구량을 절감하고, 인식 정확도를 향상시키기 위한 핸드 트래킹 인공지능 모델의 학습에 입력 데이터로서 이용되는 이미지 데이터를 획득하는 전자 장치(100) 및 그 동작 방법을 제공하는 것을 목적으로 한다.
본 개시의 일 실시예에 따른 전자 장치(100)는 지정 관절값(θwrist, θthumb, θindex, θmiddle, θring, θlittle)과 임의 관절값(θneck, θshoulder, θelbow)을 포함하는 자세 벡터(10)를 이용하여 3차원 캐릭터 이미지(20)를 렌더링하고, 렌더링 결과 복수의 이미지 프레임(f1 내지 fn)을 획득하며, 복수의 이미지 프레임(f1 내지 fn)을 연속적으로 나열하여 손 동작을 나타내는 동영상 데이터를 획득하는 바, 직접 손 자세 또는 손 동작을 촬영하여 수많은 이미지 데이터를 획득하는 경우 소모되는 시간 및 비용의 발생을 방지할 수 있고, 데이터 요구량을 감소시킬 수 있는 기술적 효과를 제공한다. 또한, 본 개시의 일 실시예에 따른 전자 장치(100)는 인체의 근골격계의 해부학적 특징에 따른 제약 사항 정보를 이용하여 임의 관절값(θneck, θshoulder, θelbow)을 생성하는 바, 인체 구조 상 취할 수 없는 자세를 나타내는 이미지 데이터의 생성을 미연에 방지하고, 보다 자연스럽고, 사실적인 손 자세 또는 손 동작을 나타내는 이미지 데이터를 획득할 수 있다. 또한, 본 개시의 일 실시예에 따른 전자 장치(100)는 가상의 3차원 이미지 캐릭터(20)를 이용하여 렌더링을 수행하는 바, 사용자가 원하는 인종, 키, 몸무게, 피부 색깔 등에 따라 커스텀된(customized) 이미지 데이터를 획득할 수 있다.
도 2는 본 개시의 일 실시예에 따른 전자 장치(100)의 구성 요소를 도시한 블록도이다.
도 2를 참조하면, 전자 장치(100)는 프로세서(110) 및 메모리(120)를 포함할 수 있다. 프로세서(110)와 메모리(120)는 전기적 및/또는 물리적으로 서로 연결될 수 있다.
도 2에 도시된 구성 요소는 본 개시의 일 실시예에 따른 것일 뿐, 전자 장치(100)가 포함하고 있는 구성 요소가 도 2에 도시된 것으로 한정되는 것은 아니다. 전자 장치(100)는 도 2에 도시되지 않은 구성 요소를 더 포함할 수 있다. 본 개시의 일 실시예에서, 전자 장치(100)는 지정 관절값 및 제약 사항 정보를 저장하는 데이터 스토리지(Data storage)를 더 포함할 수 있다. 본 개시의 다른 실시예에서, 전자 장치(100)는 웹 기반 데이터베이스 또는 외부 서버와 데이터 통신을 수행하도록 구성되는 통신 인터페이스를 더 포함할 수 있다. 통신 인터페이스는 예를 들어, 유선 랜, 무선 랜(Wireless LAN), 와이파이(Wi-Fi), 블루투스(Bluetooth), 지그비(zigbee), WFD(Wi-Fi Direct), 적외선 통신(IrDA, infrared Data Association), BLE (Bluetooth Low Energy), NFC(Near Field Communication), 와이브로(Wireless Broadband Internet, Wibro), 와이맥스(World Interoperability for Microwave Access, WiMAX), SWAP(Shared Wireless Access Protocol), 와이기그(Wireless Gigabit Allicance, WiGig) 및 RF 통신을 포함하는 데이터 통신 방식 중 적어도 하나를 이용하여 웹 기반 데이터베이스 또는 외부 서버와 데이터 통신을 수행할 수 있다.
프로세서(110)는 메모리(120)에 저장된 프로그램의 하나 이상의 명령어들(instructions)을 실행할 수 있다. 프로세서(110)는 산술, 로직 및 입출력 연산과 시그널 프로세싱을 수행하는 하드웨어 구성 요소로 구성될 수 있다. 프로세서(110)는 예를 들어, 중앙 처리 장치(Central Processing Unit), 마이크로 프로세서(microprocessor), 그래픽 프로세서(Graphic Processing Unit), ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), 및 FPGAs(Field Programmable Gate Arrays) 중 적어도 하나로 구성될 수 있으나, 이에 한정되는 것은 아니다.
도 2에는 프로세서(110)가 하나의 엘리먼트로 도시되었으나, 이에 한정되는 것은 아니다. 일 실시예에서, 프로세서(110)는 하나 또는 하나 이상의 복수 개로 구성될 수 있다.
메모리(120)는 예를 들어, 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(RAM, Random Access Memory) SRAM(Static Random Access Memory), 롬(ROM, Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 또는 광 디스크 중 적어도 하나의 타입의 저장매체로 구성될 수 있다.
메모리(120)에는 전자 장치(100)가 손 동작을 나타내는 이미지 데이터를 획득하는 기능 또는 동작들과 관련된 명령어들(instructions)이 저장될 수 있다. 본 개시의 일 실시예에서, 본 개시의 일 실시예에서, 메모리(120)에는 프로세서(110)가 판독할 수 있는 명령어들, 알고리즘(algorithm), 데이터 구조, 프로그램 코드(program code), 및 애플리케이션 프로그램(application program) 중 적어도 하나가 저장될 수 있다. 메모리(120)에 저장되는 명령어들, 알고리즘, 데이터 구조, 및 프로그램 코드는 예를 들어, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다.
메모리(120)에는 자세 벡터 모듈(122), 보간 모듈(124), 및 렌더링 모듈(126)에 관한 명령어들, 알고리즘, 데이터 구조, 또는 프로그램 코드가 저장되어 있을 수 있다. 메모리(120)에 포함되는 '모듈'은 프로세서(110)에 의해 수행되는 기능이나 동작을 처리하는 단위를 의미하고, 이는 명령어들, 알고리즘, 데이터 구조, 또는 프로그램 코드와 같은 소프트웨어로 구현될 수 있다.
이하의 실시예에서, 프로세서(110)는 메모리(120)에 저장된 명령어들 또는 프로그램 코드들을 실행함으로써 구현될 수 있다.
자세 벡터 모듈(122)은 손 자세를 구성하는 복수의 관절값을 포함하는 자세 벡터를 획득하는 기능 및/또는 동작과 관련된 명령어들 또는 프로그램 코드로 구성된다. 본 개시의 일 실시예에서, '복수의 관절값'은 사람의 상체에 포함되는 복수의 관절에 관한 특징값을 나타내고, 특징값은 관절 각도값을 의미할 수 있다. 복수의 관절값은 예를 들어, 손목의 관절 각도값, 손가락의 관절 각도값, 목의 관절 각도값, 팔꿈치의 관절 각도값, 및 어개의 관절 각도값을 포함할 수 있으나, 이에 한정되는 것은 아니다.
자세 벡터 모듈(122)은 지정 관절값과 임의 관절값을 이용하여 자세 벡터를 획득하는 기능 및/또는 동작과 관련된 명령어들 또는 프로그램 코드로 구성된다. '지정 관절값'은 복수의 관절들 중 특정 손 자세를 구성하는 관절에 관하여 미리 설정된 적어도 하나의 관절 각도값을 의미한다. 적어도 하나의 관절은 예를 들어, 손목 관절과 엄지, 검지, 중지, 약지, 및 소지를 포함하는 손가락 관절을 포함할 수 있으나, 이에 한정되는 것은 아니다. 그러나 이에 한정되는 것은 아니고, 복수의 관절들 중 어느 하나도 미리 설정되지 않을 수 있고, 이 경우 지정 관절값은 0개일 수 있다.
자세 벡터 모듈(122)은 지정 관절값 저장부(122a)를 포함할 수 있다. 지정 관절값을 갖는 적어도 하나의 관절은 사용자에 의해 미리 설정되고, 지정 관절값 저장부(122a)에 미리 저장되어 있을 수 있다. 지정 관절값 저장부(122a)에는 서로 다른 복수의 손 자세에 대응되는 복수의 지정 관절값이 저장되어 있을 수 있다. 본 개시의 일 실시예에서, 복수의 지정 관절값은 서로 다른 복수의 손 자세와 페어링(pairing)되어 지정 관절값 저장부(122a)에 저장될 수 있다. 본 개시의 일 실시예에서, 복수의 손 자세와 복수의 지정 관절값은 키-밸류 포맷으로 지정 관절값 저장부(122a)에 저장될 수 있다. 예를 들어, 복수의 손 자세는 키(key)로서, 대응되는 복수의 지정 관절값은 밸류(value)로서, 지정 관절값 저장부(122a)에 저장될 수 있다. 그러나 이에 한정되는 것은 아니고, 지정 관절값 저장부(122a)에는 아무런 데이터가 저장되어 있지 않을 수 있다.
지정 관절값 저장부(122a)에 저장된 지정 관절값에 대해서는 도 4에서 상세하게 설명하기로 한다.
프로세서(110)는 자세 벡터 모듈(122)와 관련된 명령어들 또는 프로그램 코드를 실행함으로써, 획득하고자 하는 특정 손 자세에 대응되는 복수의 관절값을 포함하는 자세 벡터를 획득할 수 있다. 본 개시의 일 실시예에서, 프로세서(110)는 자세 벡터 모듈(122)의 지정 관절값 저장부(122a)에 액세스(access)하여 특정 손 자세를 구성하는 지정 관절값을 검색하고, 불러오기(load)를 수행함으로써 검색된 지정 관절값에 관한 정보(예를 들어, 적어도 하나의 지정 관절에 관한 관절 각도값)를 획득할 수 있다. 예를 들어, 프로세서(110)는 지정 관절값 저장부(122a)로부터 주먹 쥔 자세에 대응되는 적어도 하나의 지정 관절값(예를 들어, 손목, 엄지, 검지, 중지, 약지, 및 소지의 관절 각도값)을 검색하고, 검색 결과에 따라 지정 관절값 저장부(122a)로부터 적어도 하나의 지정 관절값의 정보를 추출할 수 있다.
프로세서(110)는 지정 관절값 저장부(122a)로부터 획득된 지정 관절값과 특정 손 자세를 구성하는 복수의 관절에 관한 관절값들 간의 대응 관계에 따라 관절값 생성 여부를 판단할 수 있다. 본 개시의 일 실시예에서, 지정 관절값이 복수의 관절에 관한 관절값들 중 일부와 대응되는 경우, 프로세서(110)는 관절값의 생성이 필요하다고 판단할 수 있다. 이 경우, 프로세서(110)는 자세 벡터 모듈(122)에 포함된 제약 사항 정보 저장부(122b)에 저장된 정보를 이용하여 임의 관절값을 생성할 수 있다.
제약 사항 정보 저장부(122b)는 상체에 포함되는 복수의 관절 중 적어도 하나의 관절을 제외한 나머지 관절에 관한 제약 사항 정보를 저장할 수 있다. '제약 사항 정보'는 인체의 근골격계의 해부학적 특징에 따른 관절 별 가동 각도 범위(Range of Motion)에 관한 정보를 포함할 수 있다. 관절 별 가동 각도 범위는 예를 들어, 어깨, 팔, 또는 목에 포함되는 관절들 각각의 회전축에 관한 스윙 동작(swing) 또는 스핀 동작(spin)에 의해 움직일 수 있는 각도값 범위를 의미한다.
프로세서(110)는 자세 벡터 모듈(122)의 제약 사항 정보 저장부(122b)에 저장된 제약 사항 정보에 기초하여, 적어도 하나의 지정 관절값을 제외한 나머지 관절에 관한 임의 관절값을 생성할 수 있다. 임의 관절값은 예를 들어, 상체의 관절들 중 적어도 하나의 지정 관절을 제외한 목, 어깨, 팔꿈치, 또는 팔에 포함된 관절에 관한 관절 각도값일 수 있으나, 이에 한정되는 것은 아니다. 본 개시의 일 실시예에서, 프로세서(110)는 제약 사항 정보 저장부(122b)로부터 획득한 인체의 근골격계에 따른 관절 별 가동 각도 범위 내에서 임의의 값(random value)을 획득하고, 획득된 임의의 값을 이용하여 임의 관절값을 생성할 수 있다. 프로세서(110)는 지정 관절값 및 임의 관절값에 각각 포함된 관절 각도값을 이용하여 자세 벡터를 획득할 수 있다. 본 개시의 일 실시예에서, 프로세서(110)는 이미지 프레임 별로 복수의 관절 각도값을 포함하는 자세 벡터를 획득할 수 있다. 프로세서(110)가 자세 벡터 모듈(122)을 이용하여 특정 손 자세에 대응되는 자세 벡터를 획득하는 구체적인 실시예에 대해서는 도 4에서 상세하게 설명하기로 한다.
도 2에서 지정 관절값 저장부(122a) 및 제약 사항 정보 저장부(122b)는 메모리(120)의 자세 벡터 모듈(122)에 포함되는 구성 요소로 도시되었지만, 이에 한정되는 것은 아니다. 본 개시의 일 실시예에서, 지정 관절값 저장부(122a) 및 제약 사항 정보 저장부(122b)는 메모리(120)와는 별개의 구성 요소일 수도 있다. 이 경우, 지정 관절값 저장부(122a) 및 제약 사항 정보 저장부(122b)는 비휘발성 메모리로 구성될 수 있다. 비휘발성 메모리(Non-volatile memory)는 전원이 공급되지 않은 상태에서도 정보를 저장 및 유지하고, 전원이 공급되면 다시 저장된 정보를 사용할 수 있는 기억 매체를 의미한다. 비휘발성 메모리는 예를 들어, 플래시 메모리(flash memory), 하드디스크(hard disk), SSD(Solid State Drive), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 외장 메모리(예를 들어 SD 또는 XD 메모리 등), 롬(Read Only Memory; ROM), 자기 디스크, 또는 광디스크 중 적어도 하나로 구성될 수 있다.
그러나 이에 한정되는 것은 아니고, 본 개시의 다른 실시예에서, 지정 관절값 저장부(122a) 및 제약 사항 정보 저장부(122b)는 전자 장치(100)에 포함되지 않는 외장 메모리 형태로 구현되거나, 또는 통신 인터페이스를 통해 유무선 네트워크로 연결되는 웹 기반 저장 매체로 구현될 수도 있다. 이 경우, 전자 장치(100)는 웹 기반 저장 매체에 저장된 지정 관절값 정보 및 제약 사항 정보를 통신 인터페이스를 통해 수신할 수 있다.
보간 모듈(124)은 서로 다른 손 자세를 나타내는 복수의 자세 벡터를 이용하여 보간(interpolation)을 수행함으로써, 복수의 자세 벡터를 획득하는 기능 및/또는 동작에 관한 명령어들 또는 프로그램 코드로 구성된다. 본 개시의 일 실시예에서, 보간 모듈(124)은 구면 선형 보간(Spherical Linear Interpolation, SLERP)을 수행함으로써, 복수의 자세 벡터를 획득할 수 있다. 프로세서(110)는 서로 다른 손 자세를 나타내는 복수의 자세 벡터를 복수의 키 이미지 프레임(key image frame)에 대응되는 자세 벡터로서 획득하고, 보간 모듈(124)과 관련된 명령어들 또는 프로그램 코드를 실행함으로써 복수의 키 이미지 프레임에 대응되는 자세 벡터를 이용하는 보간을 수행할 수 있다. 본 개시의 일 실시예에서, 프로세서(110)는 구면 선형 보간(SLERP)을 수행함으로써, 복수의 키 이미지 프레임의 자세 벡터로부터 복수의 이미지 프레임에 각각 대응되는 복수의 자세 벡터를 획득할 수 있다. 프로세서(110)가 보간을 수행함으로써, 복수의 이미지 프레임에 대응되는 복수의 자세 벡터를 획득하는 구체적인 실시예에 대해서는 도 5 및 도 6에서 상세하게 설명하기로 한다.
렌더링 모듈(126)은 자세 벡터를 이용하여 3차원 캐릭터 이미지를 렌더링하는 기능 및/또는 동작에 관한 명령어들 또는 프로그램 코드로 구성된다. 프로세서(110)는 렌더링 모듈(126)과 관련된 명령어들 또는 프로그램 코드를 실행함으로써, 자세 벡터에 포함된 복수의 관절값을 3차원 캐릭터 이미지에 적용하는 이미지 렌더링을 수행할 수 있다. 본 개시의 일 실시예에 따른 3차원 캐릭터 이미지는 복수의 관절 각도값을 통해 특정 자세로 렌더링되도록 구성된 가상의 3차원 이미지일 수 있다.
프로세서(110)는 복수의 자세 벡터 각각에 포함된 복수의 관절값을 이용하여 3차원 캐릭터 이미지를 렌더링함으로써, 복수의 이미지 프레임을 획득할 수 있다. 본 개시의 일 실시예에서, 프로세서(110)는 렌더링된 3차원 캐릭터 이미지를 배경 이미지와 합성하여 복수의 이미지 프레임을 획득할 수 있다. 배경 이미지는 사전에 촬영된 이미지이거나, 또는 사용자에 의해 선택된 이미지일 수 있다.
프로세서(110)는 서로 다른 손 자세를 나타내는 복수의 이미지 프레임을 획득된 순서대로 나열함으로써, 연속적인 손 자세로 구성된 손 동작을 나타내는 동영상 데이터를 획득할 수 있다. 프로세서(110)가 복수의 이미지 프레임을 렌더링하고, 복수의 이미지 프레임을 이용하여 동영상 데이터를 획득하는 구체적인 실시예에 대해서는 도 7 내지 도 9에서 상세하게 설명하기로 한다.
프로세서(110)에 의해 획득된 복수의 이미지 프레임은, 3차원 캐릭터 이미지를 가상의 카메라를 통해 촬영하여 획득한 것처럼 렌더링된 이미지일 수 있다. 예를 들어, 복수의 이미지 프레임은 가상 카메라의 화각(FOV), 렌즈 구성(예를 들어, RGB 카메라, 모노 카메라, 깊이 카메라 등), 또는 카메라의 위치를 반영하여 직접 촬영하여 획득된 것처럼 시뮬레이션된 이미지일 수 있다. 본 개시의 일 실시예에서, 프로세서(110)는 증강 현실 디바이스 또는 머리 착용형 디바이스(Head Mounted Device, HMD)의 카메라의 위치 정보 및 사양 정보(spec information)를 획득하고, 카메라의 위치 정보 및 사양 정보에 기초하여 복수의 이미지 프레임 내의 3차원 캐릭터 이미지의 위치, 크기, 각도, 컬러, 텍스쳐(texture), 및 깊이 값 중 적어도 하나를 변경(modify)할 수 있다. 프로세서(110)가 증강 현실 디바이스 또는 머리 착용형 디바이스(HMD)에 포함된 카메라의 위치 정보 및 사양 정보에 기초하여 복수의 이미지 프레임의 3차원 캐릭터 이미지를 변경하는 구체적인 실시예에 대해서는 도 10, 도 11a, 및 도 11b에서 상세하게 설명하기로 한다.
도 2에서, 프로세서(110)는 자세 벡터 모듈(122)을 이용하여 지정 관절값 및 임의 관절값을 포함하는 자세 벡터를 획득하고, 보간 모듈(124)을 이용하여 보간을 수행함으로써 키 이미지 프레임의 자세 벡터로부터 복수의 자세 벡터를 획득하며, 렌더링 모듈(126)을 이용하여 3차원 캐릭터 이미지를 렌더링함으로써 복수의 자세 벡터로부터 복수의 이미지 프레임을 획득하는 것으로 설명되었지만, 본 개시의 실시예가 이와 같이 한정되는 것은 아니다. 본 개시의 다른 실시예에서, 프로세서(110)는 임의 관절값을 생성하지 않을 수도 있다. 지정 관절값과 손 자세를 구성하는 복수의 관절에 관한 관절값들이 완전히 대응되는 경우, 전자 장치(100)는 관절값의 생성이 필요하지 않다고 판단할 수 있다. 이 경우, 프로세서(110)는 임의 관절값을 생성하지 않고, 임의 관절값은 0개일 수 있다. 프로세서(110)는 지정 관절값으로 구성된 자세 벡터 시퀀스를 이용하여 이미지 렌더링을 수행함으로써, 손 동작을 나타내는 동영상 데이터를 획득할 수도 있다. 프로세서(110)가 지정 관절값과 복수의 관절값들 간의 대응 관계에 기초하여 관절값 생성 여부를 판단하고, 판단 결과에 따라 동영상 데이터를 획득하는 구체적인 실시예에 대해서는 도 12에서 상세하게 설명하기로 한다.
도 3은 본 개시의 일 실시예에 따른 전자 장치(100)의 동작 방법을 도시한 흐름도이다.
단계 S310에서, 전자 장치(100)는 손 자세를 구성하는 복수의 관절 중 기 설정된 관절에 관한 지정 관절값을 획득한다. '지정 관절값'은 복수의 관절들 중 특정 손 자세를 구성하는 적어도 하나의 관절에 관하여 미리 설정된 관절 각도값을 의미한다. 지정 관절값을 갖는 적어도 하나의 관절은 사용자에 의해 미리 설정될 수 있다. 적어도 하나의 관절은 예를 들어, 손목 관절과 엄지, 검지, 중지, 약지, 및 소지를 포함하는 손가락 관절을 포함할 수 있으나, 이에 한정되는 것은 아니다. 본 개시의 일 실시예에서, 지정 관절값에 관한 정보는 메모리(120)에 미리 저장되어 있을 수 있다. 메모리(120)에는 서로 다른 복수의 손 자세에 각각 대응되는 복수의 지정 관절값이 저장되어 있을 수 있다. 전자 장치(100)는 메모리(120)에 액세스(access)하여 획득하고자 하는 손 자세를 검색하고, 검색된 손 자세에 대응되는 지정 관절값에 관한 정보를 불러오기(load)함으로써 메모리(120)로부터 지정 관절값을 획득할 수 있다. 그러나 이에 한정되는 것은 아니고, 지정 관절값은 0개일 수 있다. 이 경우, 지정 관절값은 메모리(120)에 저장되지 않을 수 있다.
단계 S320에서, 전자 장치(100)는 획득된 지정 관절값과 복수의 관절에 관한 관절값들 간의 대응 관계에 기초하여 관절값 생성 여부를 판단한다. 본 개시의 일 실시예에서, 지정 관절값이 손 자세를 구성하는 복수의 관절에 관한 관절값들 중 일부와 대응되는 경우, 전자 장치(100)는 관절값의 생성이 필요하다고 판단할 수 있다. 본 개시의 다른 실시예에서, 지정 관절값과 손 자세를 구성하는 복수의 관절에 관한 관절값들이 완전히 대응되는 경우, 전자 장치(100)는 관절값의 생성이 필요하지 않다고 판단할 수 있다. 이 경우, 전자 장치(100)는 임의 관절값을 생성하지 않고, 임의 관절값은 0개일 수 있다.
단계 S330에서, 전자 장치(100)는 판단 결과에 따라, 인체의 근골격계에 따른 제약 사항 정보에 기초하여, 기 설정된 관절을 제외한 나머지 관절에 관한 임의 관절값을 생성한다. 전자 장치(100)는 특정 손 자세를 구성하는 복수의 관절 중 지정 관절값을 갖는 적어도 하나의 관절을 제외한 나머지 관절들에 대하여 임의 관절값을 생성할 수 있다. 임의 관절값은 예를 들어, 상체의 관절들 중 목, 어깨, 팔꿈치, 또는 팔에 포함된 관절에 관한 관절 각도값일 수 있으나, 이에 한정되는 것은 아니다.
본 개시의 일 실시예에서, 전자 장치(100)는 인체의 근골격계에 따른 제약 사항 정보에 기초하여 임의 관절값을 생성할 수 있다. '제약 사항 정보'는 인체의 근골격계의 해부학적 특징에 따른 복수의 관절 별 가동 각도 범위(Range of Motion)에 관한 정보를 포함할 수 있다. 관절 별 가동 각도 범위는 예를 들어, 어깨, 팔, 또는 목에 포함되는 관절들 각각이 움직일 수 있는 각도값 범위를 의미한다. 본 개시의 일 실시예에서, 제약 사항 정보는 메모리(120)에 미리 저장되어 있을 수 있지만, 이에 한정되는 것은 아니다. 본 개시의 다른 실시예에서, 제약 사항 정보는 사용자에 의해 입력될 수도 있다. 전자 장치(100)는 제약 사항 정보에 포함된 관절 별 가동 각도 범위 내의 임의의 값(random value)을 획득하고, 획득된 임의의 값을 이용하여 임의 관절값을 생성할 수 있다. 예를 들어, 전자 장치(100)는 어깨에 포함되는 적어도 하나의 관절 별 가동 각도 범위 내의 임의의 각도값을 어깨의 관절값으로 생성할 수 있다.
단계 S340에서, 전자 장치(100)는 지정 관절값 및 임의 관절값을 이용하여 키 이미지 프레임에 대응되는 자세 벡터를 획득한다. 전자 장치(100)는 지정 관절값 및 임의 관절값에 각각 포함된 관절 각도값들을 이용하여 특정 손 자세를 나타내는 자세 벡터를 획득할 수 있다. 전자 장치(100)는 특정 손 자세를 구성하는 관절 각도값들을 키 이미지 프레임(key image frame)에 대응되는 자세 벡터로서 획득할 수 있다. 본 개시의 일 실시예에서, 전자 장치(100)는 서로 다른 손 자세를 구성하는 복수의 키 이미지 프레임에 대응되는 복수의 자세 벡터를 획득할 수 있다.
단계 S350에서, 전자 장치(100)는 획득된 키 이미지 프레임에 대응되는 자세 벡터를 이용하여 보간(interpolation)을 수행함으로서, 복수의 자세 벡터를 획득한다. 전자 장치(100)는 서로 다른 손 자세를 구성하는 복수의 자세 벡터를 복수의 키 이미지 프레임(key image frame)에 대응되는 자세 벡터로서 획득하고, 복수의 키 이미지 프레임에 대응되는 복수의 자세 벡터를 이용하여 보간을 수행할 수 있다. 본 개시의 일 실시예에서, 전자 장치(100)는 구면 선형 보간(SLERP)을 수행할 수 있다. 전자 장치(100)는 키 이미지 프레임에 대응되는 자세 벡터를 이용하여 구면 선형 보간을 수행함으로써, 복수의 이미지 프레임에 각각 대응되는 복수의 자세 벡터를 획득할 수 있다.
단계 S360에서, 전자 장치(100)는 획득된 복수의 자세 벡터를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써, 손 동작을 나타내는 복수의 이미지 프레임을 획득한다. 전자 장치(100)는 복수의 자세 벡터 각각에 포함된 복수의 관절값을 이용하여 3차원 이미지를 렌더링할 수 있다. 본 개시의 일 실시예에 따른 3차원 캐릭터 이미지는 복수의 관절 각도값을 통해 특정 자세로 렌더링되도록 구성된 가상의 3차원 이미지일 수 있다. 본 개시의 일 실시예에서, 전자 장치(100)는 렌더링된 3차원 캐릭터 이미지를 배경 이미지와 합성하여 복수의 이미지 프레임을 획득할 수 있다. 배경 이미지는 사전에 촬영된 이미지이거나, 또는 사용자에 의해 선택된 이미지일 수 있다.
전자 장치(100)는 서로 다른 손 자세를 나타내는 복수의 이미지 프레임을 연속적으로 나열함으로써, 손 동작을 나타내는 동영상 데이터를 획득할 수 있다.
도 4는 본 개시의 일 실시예에 따른 전자 장치(100)가 지정 관절값 및 임의 관절값을 포함하는 자세 벡터를 획득하는 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 자세 벡터 모듈(122)은 지정 관절값 저장부(122a) 및 제약 사항 정보 저장부(122b)를 포함할 수 있다. 프로세서(110)는 자세 벡터 모듈(122)에 포함된 지정 관절값 정보를 이용하여 지정 관절값을 획득하고, 제약 사항 정보를 이용하여 임의 관절값을 생성할 수 있다.
지정 관절값 저장부(122a)는 서로 다른 복수의 손 자세(410-1 내지 410-n)에 각각 대응되는 복수의 지정 관절값(420-1 내지 420-n)이 저장되어 있을 수 있다. 복수의 지정 관절값(420-1 내지 420-n)은 인체에 포함된 복수의 관절 중 특정 손 자세를 구성하는 적어도 하나의 관절에 대하여 미리 설정된 관절 각도값을 포함할 수 있다. 예를 들어, 제1 지정 관절값(420-1)은 제1 자세(410-1)를 구성하는 손목의 제1 관절 각도값(θwrist1), 엄지의 제1 관절 각도값(θthumb1), 검지의 제1 관절 각도값(θindex1), 중지의 제1 관절 각도값(θmiddle1), 약지의 제1 관절 각도값(θring1), 및 소지의 제1 관절 각도값(θlittle1)을 포함할 수 있다. 마찬가지로, 제2 지정 관절값(420-2)은 제2 자세(410-2)를 구성하는 손목의 제2 관절 각도값(θwrist2), 엄지의 제2 관절 각도값(θthumb2), 검지의 제2 관절 각도값(θindex2), 중지의 제2 관절 각도값(θmiddle2), 약지의 제2 관절 각도값(θring2), 및 소지의 제2 관절 각도값(θlittle2)을 포함할 수 있다. 도 4에는 복수의 지정 관절값(420-1 내지 420-n)이 손목 및 손가락에 관한 관절 각도값을 포함하는 것으로 도시되었으나, 이에 한정되는 것은 아니다. 본 개시의 다른 실시예에서, 복수의 지정 관절값(420-1 내지 420-n)은 손목과 손가락 이외의 다른 관절에 관한 관절 각도값을 더 포함할 수도 있다.
본 개시의 일 실시예에서, 복수의 손 자세(410-1 내지 410-n)와 복수의 지정 관절값(420-1 내지 420-n)은 키-밸류 포맷으로 지정 관절값 저장부(122a)에 저장될 수 있다. 이 경우, 복수의 손 자세(410-1 내지 410-n)는 키(key)로서, 대응되는 복수의 지정 관절값(420-1 내지 420-n)은 밸류(value)로서, 지정 관절값 저장부(122a)에 저장될 수 있다. 예를 들어, 주먹 쥔 자세를 나타내는 제1 자세(410-1)는 키로서, 제1 지정 관절값(420-1)은 밸류로서 페어링되어 저장될 수 있다. 마찬가지로, 손가락을 편 자세인 제2 자세(410-2)는 제2 지정 관절값(420-2)과 페어링되고, 브이(v) 자세인 제n 자세(410-n)는 제n 지정 관절값(420-n)과 페어링되어 저장될 수 있다.
단계 S410에서, 프로세서(110)는 자세 벡터 모듈(122)의 지정 관절값 저장부(122a)에 저장된 제1 손 자세(410-1)에 관한 지정 관절값을 검색한다. 본 개시의 일 실시예에서, 프로세서(110)는 메모리(120, 도 2 참조)에 액세스(access)함으로써, 지정 관절값 저장부(122a)에 저장된 복수의 손 자세(410-1 내지 410-n) 중 제1 손 자세(410-1)를 검색할 수 있다.
단계 S420에서, 프로세서(110)는 지정 관절값 저장부(122a)로부터 제1 지정 관절값(420-1)을 불러온다(load). 본 개시의 일 실시예에서, 프로세서(110)는 지정 관절값 저장부(122a)에 저장된 복수의 지정 관절값(420-1 내지 420-n) 중 제1 손 자세(410-1)와 키-밸류 포맷으로 페어링된 제1 지정 관절값(420-1)을 식별할 수 있다. 프로세서(110)는 지정 관절값 저장부(122a)로부터 식별된 제1 지정 관절값(420-1)에 관한 정보를 획득할 수 있다.
단계 S430에서, 프로세서(110)는 제약 사항 정보 저장부(122b)로부터 제약 사항에 관한 정보를 획득한다. 제약 사항 정보 저장부(122b)는 인체에 포함되는 복수의 관절 중 복수의 지정 관절값(420-1 내지 420-n)을 갖는 관절들을 제외한 나머지 관절에 관한 제약 사항 정보를 저장할 수 있다. '제약 사항 정보'는 인체의 근골격계의 해부학적 특징에 따른 관절 별 가동 각도 범위에 관한 정보를 포함할 수 있다. 관절 별 가동 각도 범위는 예를 들어, 어깨, 팔, 또는 목에 포함되는 관절들 각각의 회전축에 관한 스윙 동작(swing) 또는 스핀 동작(spin)에 의해 움직일 수 있는 각도값 범위를 의미한다. 예를 들어, 제약 사항 정보 저장부(122b)는 어깨의 관절 각도값(θshoulder)의 가동 각도 범위(430-1) 및 팔꿈치의 관절 각도값(θelbow)의 가동 각도 범위(430-2)에 관한 정보를 저장할 수 있다.
단계 S440에서, 프로세서(110)는 획득된 제약 사항 정보에 기초하여, 임의 관절값(θneck, θshoulder, θelbow, ...)을 생성한다. 본 개시의 일 실시예에서, 프로세서(110)는 제약 사항 정보에 포함된 관절 별 가동 각도 범위 내의 임의의 값(random value)을 이용하여 임의 관절값(θneck, θshoulder, θelbow, ...)을 생성할 수 있다. 예를 들어, 프로세서(110)는 제약 사항 정보에 포함된 어깨 관절에 관한 가동 각도 범위(430-1)에 관한 정보를 획득하고, 가동 각도 범위(430-1) 내의 임의의 각도값을 이용하여 어깨의 관절 각도값(θshoulder)을 생성하고, 팔꿈치 관절에 관한 가동 각도 범위(430-2) 내의 임의의 각도값을 이용하여 팔꿈치의 관절 각도값(θelbow)을 생성할 수 있다. 마찬가지 방법을 통해, 프로세서(110)는 목의 관절 각도값(θneck)을 생성할 수 있다. 도면에는 도시되지 않았지만, 제약 사항 정보 저장부(122b)는 목, 어깨, 및 팔꿈치 이외의 관절에 관한 가동 각도 범위에 관한 정보를 저장하고, 프로세서(110)는 제약 사항 정보 저장부(122b)로부터 획득된 가동 각도 범위 내에서 임의의 값을 이용하여 임의 관절값을 생성할 수 있다.
프로세서(110)는 지정 관절값(θwrist1, θthumb1, θindex1, θmiddle1, θring1, θlittle1)과 임의 관절값(θneck, θshoulder, θelbow, ...)을 포함하는 자세 벡터(440)를 획득할 수 있다.
도 5는 본 개시의 일 실시예에 따른 전자 장치(100)가 보간(interpolation)을 통해 복수의 자세 벡터를 획득하는 방법을 도시한 흐름도이다.
도 5에 도시된 단계 S510 및 S520은 도 3에 도시된 단계 S340을 구체화한 단계들이다. 도 5에 도시된 단계 S530 및 S540은 도 3에 도시된 단계 S350을 구체화한 단계들이다. 도 5의 단계 S510은 도 3에 도시된 단계 S330이 수행된 이후에 수행될 수 있다. 도 5의 단계 S540이 수행된 이후에는 도 3에 도시된 단계 S360이 수행될 수 있다.
도 6은 본 개시의 일 실시예에 따른 전자 장치(100)가 보간(interpolation)을 통해 복수의 자세 벡터(620)를 획득하는 동작을 설명하기 위한 도면이다.
이하에서는, 도 5 및 도 6을 함께 참조하여, 전자 장치(100)가 복수의 자세 벡터(620)를 획득하는 동작을 설명하기로 한다.
도 5를 참조하면, 단계 S510에서 전자 장치(100)는 제1 손 자세를 구성하는 복수의 관절값들을 포함하는 제1 자세 벡터를 획득한다. 본 개시의 일 실시예에서, 복수의 관절값들은 지정 관절값 및 임의 관절값을 포함할 수 있다. 도 6을 함께 참조하면, 제1 자세 벡터(610-1)는 제1 손 자세를 구성하는 손목의 제1 관절 각도값(θwrist1), 엄지의 제1 관절 각도값(θthumb1), 검지의 제1 관절 각도값(θindex1), 중지의 제1 관절 각도값(θmiddle1), 약지의 제1 관절 각도값(θring1), 및 소지의 제1 관절 각도값(θlittle1)을 포함하는 지정 관절값과 목의 제1 관절 각도값(θneck1), 어깨의 제1 관절 각도값(θshoulder1), 및 팔꿈치의 제1 관절 각도값(θelbow1)을 포함하는 임의 관절값을 포함할 수 있다.
다시 도 5를 참조하면, 단계 S520에서 전자 장치(100)는 제2 손 자세를 구성하는 복수의 관절값들을 포함하는 제2 자세 벡터를 획득한다. 도 6을 함께 참조하면, 제2 자세 벡터(610-2)는 제2 손 자세를 구성하는 손목의 제30 관절 각도값(θwrist30), 엄지의 제30 관절 각도값(θthumb30), 검지의 제30 관절 각도값(θindex30), 중지의 제30 관절 각도값(θmiddle30), 약지의 제30 관절 각도값(θring30), 및 소지의 제30 관절 각도값(θlittle30)을 포함하는 지정 관절값과 목의 제30 관절 각도값(θneck30), 어깨의 제30 관절 각도값(θshoulder30), 및 팔꿈치의 제30 관절 각도값(θelbow30)을 포함하는 임의 관절값을 포함할 수 있다.
본 개시의 일 실시예에서, 제1 자세 벡터(610-1)는 제1 키 이미지 프레임에 대응되고, 제2 자세 벡터(610-2)는 제30 키 이미지 프레임에 대응될 수 있다. 여기서, '대응되는'은 특정 자세 벡터를 이용하는 렌더링을 수행하여 해당 키 이미지 프레임이 획득되는 것을 의미한다. 예를 들어, 제1 자세 벡터(610-1)를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써 제1 키 이미지 프레임이 획득되고, 제2 자세 벡터(610-2)를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써 제30 키 이미지 프레임이 획득될 수 있다.
도 5에서 제2 자세 벡터(610-2)를 획득하는 단계(S520)는 제1 자세 벡터(610-1)를 획득하는 단계(S510)가 수행된 이후 순차적으로 수행되는 것으로 도시되었으나, 이에 한정되는 것은 아니다. 본 개시의 다른 실시예에서, 전자 장치(100)는 제1 자세 벡터(610-1)와 제2 자세 벡터(610-2)를 순서와 상관없이 동시에 획득할 수도 있다.
도 5의 단계 S530에서, 전자 장치(100)는 제1 키 이미지 프레임에 대응되는 제1 자세 벡터 및 제2 키 이미지 프레임에 대응되는 제2 자세 벡터를 이용하여 보간(interpolation)을 수행한다. 도 6을 함께 참조하면, 보간 모듈(124)은 제1 자세 벡터(610-1) 및 제2 자세 벡터(610-2)를 이용하는 보간을 수행함으로써, 복수의 자세 벡터(620)를 획득할 수 있다. 본 개시의 일 실시예에서, 전자 장치(100)의 프로세서(110, 도 2 참조)는 보간 모듈(124)에 제1 자세 벡터(610-1) 및 제2 자세 벡터(610-2)를 입력하고, 입력된 제1 자세 벡터(610-1)의 관절 각도값(θpose1) 및 제2 자세 벡터(610-2)의 관절 각도값(θpose30)을 이용하여 구면 선형 보간(SLERP)을 수행할 수 있다. 구면 선형 보간은 하기의 수식과 같이 복수의 관절 각도(θa, θb) 사이의 관절 각도를 보간 비율(t)에 따라 보간하는 방식이다.
상기 수학식 1에서 q는 각 관절의 3차원 관절 각도값에 대한 Rotational Quaternion을 나타내고, t는 보간 비율을 나타낸다.
도 5의 단계 S540에서, 전자 장치(100)는 보간을 통해 제1 키 이미지 프레임과 제2 키 이미지 프레임 사이의 이미지 프레임들 각각에 대응되는 복수의 자세 벡터를 획득한다. 도 6을 함께 참조하면, 보간 모듈(124)은 하기의 수식을 이용하여 i번째 자세 벡터의 관절 각도값(θposei)을 획득할 수 있다.
본 개시의 일 실시예에서, 프로세서(110)는 보간 모듈(124)에 제1 자세 벡터(610-1)의 관절 각도값(θpose1) 및 제2 자세 벡터(610-2)의 관절 각도값(θpose30)을 입력하고, 입력된 관절 각도값(θpose1, θpose30)과 보간 비율값(i/30)을 이용하여 i번째 자세 벡터의 관절 각도값(θposei)을 획득할 수 있다. 예를 들어, 프로세서(110)는 상기 수학식 2의 i에 5를 대입(i=5)하는 구면 선형 보간(SLERP)을 수행함으로써, 제5 자세 벡터의 관절 각도값(θpose5)을 획득할 수 있다. 마찬가지로, 프로세서(110)는 수학식 2의 i에 2 내지 29를 각각 대입하여 제2 이미지 프레임 내지 제29 이미지 프레임에 각각 대응되는 복수의 자세 벡터(620)의 관절 각도값(θposei, i=2, 3, ... , 29)을 획득할 수 있다.
도 5 및 도 6에 도시된 실시예에 따른 전자 장치(100)는 서로 다른 손 자세를 나타내는 제1 자세 벡터(610-1) 및 제2 자세 벡터(610-2)를 이용하는 보간(interpolation)을 수행함으로써, 제1 손 자세를 나타내는 제1 키 이미지 프레임과 제2 손 자세를 나타내는 제30 키 이미지 프레임 사이에서 자연스럽게 이어지는 연속적인 손 자세를 나타내는 복수의 이미지 프레임(제2 이미지 프레임 내지 제29 이미지 프레임)을 획득할 수 있다.
도 7은 본 개시의 일 실시예에 따른 전자 장치(100)가 손 동작을 나타내는 동영상 데이터를 획득하는 방법을 도시한 흐름도이다.
도 7에 도시된 단계 S710 내지 S730은 도 3에 도시된 단계 S360을 구체화한 단계들이다. 도 7에 도시된 단계 S710은 도 3에 도시된 단계 S350이 수행된 이후에 수행될 수 있다.
도 8은 본 개시의 일 실시예에 따른 전자 장치(100)가 연속적인 손 자세를 나타내는 복수의 이미지 프레임(820-1 내지 820-n)을 획득하는 동작을 도시한 도면이다.
이하에서는, 도 7 및 도 8을 함께 참조하여, 전자 장치(100)가 연속적인 손 자세를 나타내는 복수의 이미지 프레임(820-1 내지 820-n)을 획득하는 동작을 설명하기로 한다.
도 7을 참조하면, 단계 S710에서 전자 장치(100)는 복수의 자세 벡터에 포함된 관절값들을 이용하여 3차원 캐릭터 이미지를 렌더링한다. 도 8을 함께 참조하면, 전자 장치(100)의 프로세서(110, 도 2 참조)는 복수의 자세 벡터(810-1 내지 810-n)를 렌더링 모듈(126)에 입력하고, 복수의 자세 벡터(810-1 내지 810-n)를 이용하여 3차원 캐릭터 이미지(126a)를 렌더링할 수 있다. 본 개시의 일 실시예에서, 프로세서(110)는 복수의 자세 벡터(810-1 내지 810-n)에 포함된 관절 각도값들(θpose 1 내지 θpose n)을 3차원 캐릭터 이미지(126a)에 포함된 복수의 관절에 적용하는 이미지 렌더링을 수행할 수 있다. 본 개시의 일 실시예에서, 3차원 캐릭터 이미지(126a)는 관절 각도값들(θpose 1 내지 θpose n)을 통해 관절 각도값들(θpose 1 내지 θpose n)에 대응되는 특정 자세로 렌더링되도록 구성된 가상의 3차원 이미지일 수 있다.
도 7의 단계 S720에서, 전자 장치(100)는 렌더링된 3차원 캐릭터 이미지를 배경 이미지와 합성하여 복수의 이미지 프레임을 획득한다. 본 개시의 일 실시예에서, 배경 이미지는 사전에 촬영된 이미지이거나, 또는 사용자에 의해 선택된 이미지일 수 있다. 도 8을 함께 참조하면, 전자 장치(100)의 프로세서(110)는 렌더링 모듈(126)을 통해, 제1 자세 벡터(810-1)에 포함되는 관절 각도값(θpose 1)을 이용하여 3차원 캐릭터 이미지(126a)를 렌더링하고, 렌더링된 3차원 캐릭터 이미지(126a)를 배경 이미지(126b)와 합성함으로써, 제1 이미지 프레임(820-1)을 획득할 수 있다. 또한, 프로세서(110)는 렌더링 모듈(126)을 통해 제2 자세 벡터(810-2)에 포함되는 관절 각도값(θpose 2)을 이용하여 3차원 캐릭터 이미지(126a)를 렌더링하고, 렌더링된 3차원 캐릭터 이미지(126a)를 배경 이미지(126b)와 합성함으로써, 제2 이미지 프레임(820-2)을 획득할 수 있다. 동일한 방식으로, 프로세서(110)는 제3 자세 벡터(810-3) 내지 제n 자세 벡터(810-n)를 이용하여 제3 이미지 프레임(820-3) 내지 제n 이미지 프레임(820-n)을 획득할 수 있다.
제1 이미지 프레임(820-1) 내지 제n 이미지 프레임(820-n)은 3차원 캐릭터 이미지(126a)를 가상의 카메라를 통해 촬영하여 획득된 것처럼 렌더링된 시뮬레이션 이미지일 수 있다.
도 7의 단계 S730에서, 전자 장치(100)는 복수의 이미지 프레임을 연속적으로 나열하여 손 동작을 나타내는 동영상 데이터를 획득한다. 도 8을 함께 참조하면, 프로세서(110)는 연속적으로 변화되는 손 자세를 나타내는 제1 이미지 프레임(820-1) 내지 제n 이미지 프레임(820-n)을 순서대로 스트리밍(streaming)함으로써, 손 동작을 나타내는 동영상 데이터를 획득할 수 있다. 프로세서(110)가 손 동작을 나타내는 동영상 데이터를 획득하는 실시예는 도 9에서 상세하게 설명하기로 한다.
도 9는 본 개시의 일 실시예에 따른 전자 장치(100)가 손 동작을 나타내는 동영상 데이터(900)를 획득하는 동작을 도시한 도면이다.
도 9를 참조하면, 전자 장치(100)는 제1 이미지 프레임(900-1) 내지 제n 이미지 프레임(900-n)을 획득할 수 있다. 제1 이미지 프레임(900-1)은 제1 손 자세를 구성하는 제1 자세 벡터를 이용한 렌더링을 통해 생성된 이미지 프레임이고, 제2 이미지 프레임(900-2)은 제2 손 자세를 구성하는 제2 자세 벡터를 이용한 렌더링을 통해 생성된 이미지 프레임이며, 제n 이미지 프레임(900-n)은 제n 손 자세를 구성하는 제n 자세 벡터를 이용한 렌더링을 통해 생성된 이미지 프레임일 수 있다. 제1 자세 벡터 내지 제n 자세 벡터는 연속적으로 변경되는 손 자세를 구성하는 관절 각도값들로 구성될 수 있다.
전자 장치(100)의 프로세서(110, 도 2 참조)는 제1 이미지 프레임(900-1) 내지 제n 이미지 프레임(900-n)을 순서대로 나열함으로써 연속적인 손 자세로 구성된 손 동작을 나타내는 동영상 데이터(900)를 획득할 수 있다. 본 개시의 일 실시예에서, 프로세서(110)는 제1 이미지 프레임(900-1) 내지 제n 이미지 프레임(900-n)을 포함하는 동영상 데이터(900)의 플레이 속도를 조절할 수 있다. 전자 장치(100)는 동영상 데이터(900)의 플레이 속도를 조절하는 사용자 입력을 수신하는 사용자 입력부를 더 포함할 수 있다. 이 경우, 프로세서(110)는 사용자 입력부를 통해 수신된 사용자 입력에 의해 결정된 플레이 속도에 따라 제1 이미지 프레임(900-1) 내지 제n 이미지 프레임(900-n)의 플레이 시간을 제어하고, 이를 통해 동영상 데이터(900)의 플레이 속도를 조절할 수 있다.
도 10은 본 개시의 일 실시예에 따른 전자 장치(100)가 증강 현실 디바이스의 카메라 위치 및 사양에 관한 정보에 기초하여 이미지 데이터를 변경(modify)하는 방법을 도시한 흐름도이다.
단계 S1010에서, 전자 장치(100)는 증강 현실 디바이스에 포함된 카메라의 위치 정보 및 사양(spec) 정보를 획득한다. 증강 현실 디바이스는, 전자 장치(100)에 의해 획득된 동영상 데이터로부터 선택하는 손 동작, 가리키는 손 동작, 손으로 잡는 동작 등 핸드 제스처를 인식하여 입력 수단으로 이용하는 디바이스이다. 증강 현실 디바이스는 전자 장치(100)에 의해 획득된 동영상 데이터에 포함된 손 동작을 특정 입력에 관한 라벨 값(label)으로 매핑하여 학습(training)할 수 있다. 전자 장치(100)는 증강 현실 디바이스에 포함된 카메라가 증강 현실 디바이스의 어느 위치에 설치되어 있는지에 관한 위치 정보를 획득할 수 있다. 또한, 전자 장치(100)는 증강 현실 디바이스에 포함된 카메라의 렌즈의 화각(Field Of View, FOV) 및 카메라 구성(예를 들어 RGB 카메라, 모노 카메라, 깊이 카메라 등) 중 적어도 하나에 관한 정보를 포함하는 카메라 사양 정보를 획득할 수 있다.
본 개시의 일 실시예에서, 전자 장치(100)는 증강 현실 디바이스 또는 서버로부터 증강 현실 디바이스의 카메라 위치 정보 및 사양 정보를 획득할 수 있다. 그러나, 이에 한정되는 것은 아니고, 본 개시의 다른 실시예에서 전자 장치(100)는 사용자 입력부를 더 포함하고, 사용자 입력부를 통해 수신된 사용자 입력으로부터 증강 현실 디바이스의 카메라 위치 정보 및 사양 정보를 획득할 수 있다.
단계 S1020에서, 전자 장치(100)는 획득된 카메라의 위치 정보 및 사양 정보에 기초하여 복수의 이미지 프레임 내의 3차원 캐릭터 이미지의 위치, 크기, 각도, 컬러, 텍스쳐(texture), 및 깊이 값 중 적어도 하나를 변경(modify)한다. 본 개시의 일 실시예에서, 전자 장치(100)는 복수의 이미지 프레임으로 구성되는 동영상 데이터에 포함되는 3차원 캐릭터 이미지가 입력 수단으로 이용될 증강 현실 디바이스의 카메라 위치 정보에 따라 3차원 캐릭터 이미지가 표시되는 위치, 크기, 및 각도를 변경할 수 있다. 또한, 전자 장치(100)는 증강 현실 디바이스의 카메라 위치 정보에 따라 배경 이미지의 위치, 크기, 및 각도를 변경할 수도 있다. 본 개시의 일 실시예에서, 전자 장치(100)는 증강 현실 디바이스에 포함되는 카메라의 화각(FOV)에 따라 복수의 이미지 프레임 내의 3차원 캐릭터 이미지의 위치, 크기, 및 각도를 변경할 수 있다.
본 개시의 일 실시예에서, 전자 장치(100)는 증강 현실 디바이스에 포함되는 카메라가 RGB 카메라인지 또는 모노 카메라인지 여부에 따라 복수의 이미지 프레임 내의 3차원 캐릭터 이미지의 컬러를 변경할 수 있다. 예를 들어, 증강 현실 디바이스에 포함되는 카메라가 RGB 카메라인 경우, 전자 장치(100)는 복수의 이미지 프레임 내에 포함되는 3차원 캐릭터 이미지 및 배경 이미지를 RGB 컬러로 표시하고, 증강 현실 디바이스에 포함되는 카메라가 모노 카메라인 경우, 전자 장치(100)는 복수의 이미지 프레임 내의 3차원 캐릭터 이미지 및 배경 이미지를 흑백 이미지 형태로 표시할 수 있다. 본 개시의 일 실시예에서, 증강 현실 디바이스에 포함되는 카메라가 깊이 카메라(depth camera)인 경우, 전자 장치(100)는 복수의 이미지 프레임 내의 3차원 캐릭터 이미지 및 배경 이미지를 구성하는 픽셀 별 깊이 값을 나타내는 깊이 맵(depth map) 형태로 변경할 수 있다.
도 11a는 증강 현실 디바이스(200)의 카메라(210L, 210R)의 위치 및 구성에 따라 사용자의 손을 촬영하는 동작을 도시한 도면이다.
도 11a를 참조하면, 증강 현실 디바이스(200)는 사용자의 안면부(顔面部)에 착용하는 안경 형상의 증강 현실 안경 장치(Augmented Reality Glasses)일 수 있다. 본 개시의 다른 실시예에서, 증강 현실 디바이스(200)는 사용자의 두부(頭部)에 착용하는 헤드 마운트 디스플레이 장치 (HMD : Head Mounted Display Apparatus) 또는 증강 현실 헬멧 등 장치로 구현될 수 있다. 그러나 이에 한정되는 것은 아니고, 증강 현실 디바이스(200)는 예를 들어, 모바일 디바이스, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 데스크 탑, 태블릿 PC, 전자책 단말기, 디지털 방송용 단말기, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 네비게이션, MP3 플레이어, 캠코더, IPTV(Internet Protocol Television), DTV(Digital Television), 착용형 기기(wearable device) 등과 같은 다양한 전자 장치로 구현될 수 있다.
증강 현실 디바이스(200)는 복수의 카메라(210L, 210R)를 포함할 수 있다. 증강 현실 디바이스(200)는 복수의 카메라(210L, 210R)를 이용하여 사용자의 손을 촬영함으로써, 복수의 이미지 프레임을 획득할 수 있다. 도 11a에는 증강 현실 디바이스(200)가 좌안 카메라(210L) 및 우안 카메라(210R)로 구성된 복수의 카메라를 포함하는 것으로 도시되었으나, 도시된 바와 같이 한정되는 것은 아니다. 본 개시의 다른 실시예에서, 증강 현실 디바이스(200)는 단일 카메라를 포함하거나, 또는 3개 이상의 멀티 카메라를 포함할 수도 있다.
증강 현실 디바이스(200)는 스테레오 매핑(Stereo mapping)을 통해, 좌안 카메라(210L)를 통해 획득한 좌안 이미지 및 우안 카메라(210R)를 통해 획득한 우안 이미지로부터 손에 포함된 복수의 관절의 깊이 값(depth value)인 z축 위치 좌표값을 획득할 수 있다.
증강 현실 디바이스(200)는 인공지능 모델(Artificial Intelligent model, AI model)을 이용하여 복수의 이미지 프레임으로부터 사용자의 손 동작을 인식할 수 있다. 인공지능 모델은 딥 러닝(Deep Learning) 기반의 객체 인식 모델로 구성될 수 있다. 본 개시의 일 실시예에서, 증강 현실 디바이스(200)는 객체 인식 모델을 이용한 추론을 통해 복수의 이미지 프레임으로부터 손 동작을 인식하며, 손 동작이 가리키는 사용자 입력을 식별할 수 있다.
본 개시의 전자 장치(100)는, 증강 현실 디바이스(200)가 좌안 카메라(210L) 및 우안 카메라(210R) 각각을 이용하여 획득하는 좌안 이미지 및 우안 이미지에 포함되는 손 동작을 나타내도록 시뮬레이션된 이미지 데이터를 증강 현실 디바이스(200)에 제공할 수 있다. 증강 현실 디바이스(200)는, 전자 장치(100)로부터 제공된 시뮬레이션된 이미지 데이터를 학습 데이터로 이용하여, 이미지 데이터에 포함된 손 동작을 대응되는 사용자 입력(예를 들어, 선택 입력, 가리키는 입력, 잡는 입력 등)을 학습(training)할 수 있다. 전자 장치(100)는, 증강 현실 디바이스(200)에 포함된 카메라(210L, 210R)의 위치 정보 및 사양 정보에 기초하여, 이미지 데이터에 포함된 3차원 캐릭터 이미지의 위치, 크기, 및 각도를 변경할 수 있다. 전자 장치(100)가 이미지 데이터에 포함된 3차원 캐릭터의 위치, 크기, 및 각도를 변경하는 구체적인 실시예에 대해서는 도 11b에서 상세하게 설명하기로 한다.
도 11b은 본 개시의 일 실시예에 따른 전자 장치(100)가 증강 현실 디바이스(200, 도 11a 참조)의 카메라(210L, 210R, 도 11a 참조)의 위치 및 구성에 관한 정보에 기초하여 이미지 데이터를 변경(modify)하는 동작을 설명하기 위한 도면이다.
도 11b를 참조하면, 전자 장치(100)는 3차원 캐릭터 이미지를 포함하는 이미지 프레임(1110)을 증강 현실 디바이스(200)의 카메라의 위치 및 속성 정보에 기초하여 변경(modify)할 수 있다. 도 11a를 함께 참조하면, 증강 현실 디바이스(200)는 좌안 카메라(210L) 및 우안 카메라(210R)로 구성된 스테레오 카메라를 포함하고, 좌안 카메라(210L) 및 우안 카메라(210R)는 RGB 카메라일 수 있다. 전자 장치(100)의 프로세서(110, 도 2 참조)는 증강 현실 디바이스(200)의 카메라(210L, 210R)의 위치 정보 및 사양 정보를 획득하고, 획득된 카메라(210L, 210R)의 위치 정보 및 사양 정보에 기초하여 이미지 프레임(1110)으로부터 좌안 이미지 프레임(1120L) 및 우안 이미지 프레임(1120R)을 획득할 수 있다.
도 11b에 도시된 실시예에서, 프로세서(110)는 증강 현실 디바이스(200)의 좌안 카메라(210L)의 위치 및 사양(예를 들어, FOV, RGB 카메라 등)에 관한 정보에 기초하여 이미지 프레임(1110)에 포함된 양손 이미지의 위치, 크기, 및 각도를 변경할 수 있다. 예를 들어, 프로세서(110)는 이미지 프레임(1110)에 포함된 왼손 이미지 중 손목과 팔 부분이 더 많이 포함되고, 오른손 이미지는 더 적게 포함되도록 수정하여 좌안 이미지 프레임(1120L)을 획득할 수 있다. 또한, 프로세서(110)는 증강 현실 디바이스(200)의 우안 카메라(210R)의 위치 및 사양(예를 들어, FOV, RGB 카메라 등)에 관한 정보에 기초하여 이미지 프레임(1110)에 포함된 양손 이미지의 위치, 크기, 및 각도를 변경할 수 있다. 예를 들어, 프로세서(110)는 이미지 프레임(1110)에 포함된 왼손 이미지의 손목과 팔 부분이 포함되지 않도록 수정하고, 오른손 이미지의 손목 및 팔 부분이 더 많이 포함되도록 수정하여 우안 이미지 프레임(1120R)을 획득할 수 있다.
종래 기술의 경우, 손 동작을 나타내는 복수의 이미지 데이터를 생성하였다고 하더라도, 복수의 이미지 데이터를 적용할 타 디바이스(예를 들어, 증강 현실 디바이스(200))의 카메라의 위치 또는 사양에 적합하지 않는 경우 활용할 수 없어서 타 디바이스에 적합하도록 이미지 데이터를 다시 획득하여야 하는 문제점이 있었다. 도 10, 도 11a, 및 도 11b에 도시된 실시예에 따른 전자 장치(100)는 획득한 복수의 이미지 프레임에 포함된 3차원 캐릭터 이미지를 증강 현실 디바이스(200)에 포함되는 카메라의 위치 정보 및 사양 정보에 기초하여 변경하는 바, 이미지 데이터를 다시 획득할 필요없이 기존 이미지 데이터를 가공하여 재구성할 수 있다. 따라서, 본 개시의 일 실시예에 따른 전자 장치(100)는 타 디바이스에 적합한 이미지 데이터를 새로 획득하는 경우 소비되는 시간 및 비용을 절감하고, 기 획득된 이미지 데이터의 활용도를 향상시키는 기술적 효과를 제공한다.
도 12는 본 개시의 일 실시예에 따른 전자 장치(100)가 관절값 생성 여부를 판단하고, 관절값 생성 여부에 따라 손 동작을 나타내는 동영상 데이터를 획득하는 방법을 도시한 흐름도이다.
도 12에 도시된 단계들 S1210 내지 S1240은 도 3에 도시된 단계 S330이 수행되기 전에 수행되는 단계들이다.
단계 S1210에서, 전자 장치(100)는 사용자 입력에 기초하여 3차원 캐릭터 이미지 및 배경 이미지를 선택한다.
단계 S1220에서, 전자 장치(100)는 증강 현실 디바이스의 구성 정보를 획득한다. 본 개시의 일 실시예에서, 전자 장치(100)는 증강 현실 디바이스 또는 서버로부터 증강 현실 디바이스에 포함된 카메라 위치 정보 및 사양 정보를 획득할 수 있다. 그러나, 이에 한정되는 것은 아니고, 본 개시의 다른 실시예에서 전자 장치(100)는 사용자 입력부를 더 포함하고, 사용자 입력부를 통해 수신된 사용자 입력으로부터 증강 현실 디바이스의 카메라 위치 정보 및 사양 정보를 획득할 수 있다.
단계 S1230에서, 전자 장치(100)는 복수의 관절 중 기 설정된 관절에 관한 지정 관절값을 획득한다. 단계 S1230은 도 3에 도시된 단계 S310과 동일하므로, 중복되는 설명은 생략한다.
단계 S1240에서, 전자 장치(100)는 지정 관절값과 복수의 관절값 간의 대응 관계에 기초하여, 관절값 생성 여부를 판단한다. 본 개시의 일 실시예에서, 지정 관절값과 특정 손 자세를 구성하는 복수의 관절에 관한 관절값이 완전히 대응되는지 여부를 판단할 수 있다.
판단 결과, 지정 관절값과 복수의 관절에 관한 관절값이 완전히 대응되는 경우(S330), 전자 장치(100)는 관절값을 생성하는 것으로 결정한다. 이 경우, 전자 장치(100)는 단계 S330에 따라 메모리(120, 도 2 참조)에 기 저장된 제약 사항 정보에 기초하여 임의 관절값을 생성한다.
판단 결과, 지정 관절값이 복수의 관절에 관한 관절값들 중 일부에만 대응되는 경우(S1250), 전자 장치(100)는 관절값을 생성하지 않기로 결정한다. 단계 S1250에서, 전자 장치(100)는 연속적인 손 자세를 구성하는 지정 관절값들을 이용하여 자세 벡터 시퀀스(sequence)를 획득한다. 본 개시의 일 실시예에서, 전자 장치(100)는 메모리(120)에 기 저장된 지정 관절값을 이용하여 자세 벡터 시퀀스를 획득할 수 있지만, 이에 한정되는 것은 아니다. 본 개시의 다른 실시예에서, 전자 장치(100)는 외부 서버 또는 외부 디바이스로부터 자세 벡터 시퀀스를 획득할 수 있다. 본 개시의 또 다른 실시예에서 전자 장치(100)는 연속적인 손 자세를 구성하는 관절값들에 관한 정보를 입력하는 사용자 입력을 통해 자세 벡터 시퀀스를 획득할 수 있다.
단계 S1260에서, 전자 장치(100)는 자세 벡터 시퀀스를 이용하여 이미지 렌더링을 수행함으로써, 손 동작을 나타내는 동영상 데이터를 획득한다. 본 개시의 일 실시예에서, 전자 장치(100)는 자세 벡터 시퀀스에 포함되는 복수의 관절값들을 이용하여 3차원 캐릭터 이미지를 렌더링하고, 렌더링된 3차원 캐릭터 이미지를 배경 이미지와 합성함으로써 복수의 이미지 프레임을 획득할 수 있다. 전자 장치(100)는 복수의 이미지 프레임을 연속적으로 나열하여 손 동작을 나타내는 동영상 데이터를 획득할 수 있다.
본 개시의 일 실시예에 따른 전자 장치는 손 자세를 구성하는 복수의 관절에 관한 관절값들 중 적어도 하나의 기 설정된 관절에 관한 지정 관절값을 저장하는 메모리, 및 적어도 하나의 프로세서를 포함할 수 있다. 본 개시의 일 실시예에서, 상기 적어도 하나의 프로세서는 상기 메모리로부터 지정 관절값을 획득할 수 있다. 상기 적어도 하나의 프로세서는 획득된 지정 관절값과 상기 복수의 관절에 관한 관절값들 간의 대응 관계에 기초하여 관절값의 생성 여부를 판단할 수 있다. 상기 적어도 하나의 프로세서는 판단 결과에 따라 인체의 근골격계에 따른 제약 사항 정보에 기초하여 적어도 하나의 기 설정된 관절을 제외한 나머지 관절에 관한 임의 관절값을 생성할 수 있다. 상기 적어도 하나의 프로세서는 지정 관절값 및 생성된 임의 관절값을 이용하여 키 이미지 프레임(key image frame)에 대응되는 자세 벡터를 획득할 수 있다. 상기 적어도 하나의 프로세서는 획득된 자세 벡터를 이용하여 보간(interpolation)을 수행함으로써, 복수의 자세 벡터를 획득할 수 있다. 상기 적어도 하나의 프로세서는 획득된 복수의 자세 벡터를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써 손 동작을 나타내는 복수의 이미지 프레임을 획득할 수 있다.
본 개시의 일 실시예에서, 상기 관절값들은 손가락, 손목, 손바닥, 목, 팔, 및 어깨에 포함되는 복수의 관절들의 관절 각도값일 수 있다.
본 개시의 일 실시예에서, 상기 지정 관절값은 복수의 관절들 중 특정 손 자세를 구성하는 적어도 하나의 관절에 관하여 미리 설정된 적어도 하나의 관절 각도값일 수 있다.
본 개시의 일 실시예에서, 제약 사항 정보는 인체의 근골격계의 해부학적 특징에 따른 관절 별 가동 각도 범위(Range of Motion)에 관한 정보를 포함할 수 있다.
본 개시의 일 실시예에서, 상기 적어도 하나의 프로세서는 관절 별 가동 각도 범위 내의 임의의 값(random value)을 이용하여 임의 관절값을 생성할 수 있다.
본 개시의 일 실시예에서, 상기 적어도 하나의 프로세서는 제1 손 자세를 구성하는 복수의 관절값들을 포함하는 제1 자세 벡터 및 제2 손 자세를 구성하는 복수의 관절값들을 포함하는 제2 자세 벡터를 획득할 수 있다. 상기 적어도 하나의 프로세서는 제1 키 이미지 프레임에 대응되는 제1 자세 벡터 및 제2 키 이미지 프레임에 대응되는 제2 자세 벡터를 이용하여 보간을 수행할 수 있다. 상기 적어도 하나의 프로세서는 보간을 통해 제1 키 이미지 프레임과 제2 키 이미지 프레임 사이의 이미지 프레임들에 각각 대응되는 관절값들을 포함하는 복수의 자세 벡터를 획득할 수 있다.
본 개시의 일 실시예에서, 상기 적어도 하나의 프로세서는 구면 선형 보간(Spherical Linear Interpolation, Slerp)을 수행함으로써 복수의 자세 벡터를 획득할 수 있다.
본 개시의 일 실시예에서, 상기 적어도 하나의 프로세서는 렌더링된 3차원 캐릭터 이미지를 배경 이미지와 합성함으로써 복수의 이미지 프레임을 획득할 수 있다.
본 개시의 일 실시예에서, 상기 적어도 하나의 프로세서는 획득된 복수의 자세 벡터에 포함된 관절값들을 이용하여 3차원 캐릭터 이미지를 렌더링함으로써, 서로 다른 손 자세를 나타내는 상기 복수의 이미지 프레임을 획득하고, 획득된 복수의 이미지 프레임을 연속적으로 나열하여 손 동작을 나타내는 동영상 데이터를 획득할 수 있다.
본 개시의 일 실시예에서, 상기 적어도 하나의 프로세서는 증강 현실 디바이스(Augmented device)에 포함된 카메라의 위치 정보 및 카메라의 사양(spec) 정보를 획득할 수 있다. 상기 적어도 하나의 프로세서는 획득된 카메라의 위치 정보 및 사양 정보에 기초하여, 복수의 이미지 프레임 내의 3차원 캐릭터 이미지의 위치, 크기, 각도, 컬러, 텍스쳐(texture), 및 깊이 값 중 적어도 하나를 변경할 수 있다.
상술한 기술적 과제를 해결하기 위하여 본 개시의 다른 측면(another aspect)은 전자 장치가 손 동작을 나타내는 이미지 데이터를 획득하는 방법을 제공한다. 본 개시의 일 실시예에서 전자 장치의 동작 방법은 손 자세를 구성하는 복수의 관절에 관한 관절값들 중 적어도 하나의 기 설정된 관절에 관한 지정 관절값을 획득하는 단계를 포함할 수 있다. 상기 동작 방법은 획득된 지정 관절값과 복수의 관절에 관한 관절값들 간의 대응 관계에 기초하여 관절값의 생성 여부를 판단하는 단계를 포함할 수 있다. 상기 동작 방법은 판단 결과에 따라 인체의 근골격계에 따른 제약 사항 정보에 기초하여 적어도 하나의 기 설정된 관절을 제외한 나머지 관절에 관한 임의 관절값을 생성하는 단계를 포함할 수 있다. 상기 동작 방법은 지정 관절값 및 생성된 임의 관절값을 이용하여 키 이미지 프레임(key image frame)에 대응되는 자세 벡터를 획득하는 단계를 포함할 수 있다. 상기 동작 방법은 획득된 자세 벡터를 이용하여 보간(interpolation)을 수행함으로써, 복수의 자세 벡터를 획득하는 단계를 포함할 수 있다. 상기 동작 방법은 획득된 복수의 자세 벡터를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써, 손 동작을 나타내는 복수의 이미지 프레임을 획득하는 단계를 포함할 수 있다.
본 개시의 일 실시예에서, 상기 지정 관절값은 복수의 관절들 중 특정 손 자세를 구성하는 적어도 하나의 관절에 관하여 미리 설정된 적어도 하나의 관절 각도값일 수 있다.
본 개시의 일 실시예에서, 상기 지정 관절값에 관한 정보는 메모리에 미리 저장되어 있을 수 있다. 상기 지정 관절값을 획득하는 단계는, 메모리에 액세스하여, 메모리에 저장된 지정 관절값에 관한 정보를 불러올 수 있다.
본 개시의 일 실시예에서, 상기 제약 사항 정보는 인체의 근골격계의 해부학적 특징에 따른 복수의 관절 별 가동 각도 범위에 관한 정보를 포함할 수 있다.
본 개시의 일 실시예에서, 상기 자세 벡터를 획득하는 단계는 제1 손 자세를 구성하는 복수의 관절값들을 포함하는 제1 자세 벡터를 획득하는 단계, 및 제2 손 자세를 구성하는 복수의 관절값들을 포함하는 제2 자세 벡터를 획득하는 단계를 포함할 수 있다. 상기 복수의 자세 벡터를 획득하는 단계는 제1 키 이미지 프레임에 대응되는 제1 자세 벡터 및 제2 키 이미지 프레임에 대응되는 제2 자세 벡터를 이용하여 보간을 수행하는 단계를 포함할 수 있다. 상기 복수의 자세 벡터를 획득하는 단계는 보간을 통해 제1 키 이미지 프레임과 제2 키 이미지 프레임 사이의 이미지 프레임들에 각각 대응되는 관절값들을 포함하는 복수의 자세 벡터를 획득하는 단계를 포함할 수 있다.
본 개시의 일 실시예에서, 상기 복수의 자세 벡터를 획득하는 단계에서 전자 장치는 구면 선형 보간(Spherical Linear Interpolation, Slerp)을 수행함으로써, 복수의 자세 벡터를 획득할 수 있다.
본 개시의 일 실시예에서, 상기 손 동작을 나타내는 복수의 이미지 프레임을 획득하는 단계는 렌더링된 3차원 캐릭터 이미지를 배경 이미지와 합성함으로써, 복수의 이미지 프레임을 획득하는 단계를 포함할 수 있다.
본 개시의 일 실시예에서, 상기 손 동작을 나타내는 복수의 이미지 프레임을 획득하는 단계는 획득된 복수의 자세 벡터에 포함된 관절값들을 이용하여 3차원 캐릭터 이미지를 렌더링함으로써, 서로 다른 손 자세를 나타내는 복수의 이미지 프레임을 획득하는 단계, 및 획득된 복수의 이미지 프레임을 연속적으로 나열하여 손 동작을 나타내는 동영상 데이터를 획득하는 단계를 포함할 수 있다.
본 개시의 일 실시예에서, 상기 방법은 증강 현실 디바이스(Augmented device)에 포함된 카메라의 위치 정보 및 카메라의 사양(spec) 정보를 획득하는 단계를 포함할 수 있다. 상기 방법은 획득된 카메라의 위치 정보 및 사양 정보에 기초하여, 복수의 이미지 프레임 내의 상기 3차원 캐릭터 이미지의 위치, 크기, 각도, 컬러, 텍스쳐(texture), 및 깊이 값 중 적어도 하나를 변경하는(modify) 단계를 더 포함할 수 있다.
상술한 기술적 과제를 해결하기 위하여, 본 개시의 다른 실시예는 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 저장 매체를 포함하는 컴퓨터 프로그램 제품(Computer Program Product)을 제공한다. 상기 저장 매체는 손 자세를 구성하는 복수의 관절에 관한 관절값들 중 적어도 하나의 기 설정된 관절에 관한 지정 관절값을 획득하는 동작에 관한 명령어들(instructions)을 포함할 수 있다. 상기 저장 매체는 획득된 지정 관절값과 복수의 관절에 관한 관절값들 간의 대응 관계에 기초하여 관절값의 생성 여부를 판단하는 동작에 관한 명령어들(instructions)을 포함할 수 있다. 상기 저장 매체는 판단 결과에 따라, 인체의 근골격계에 따른 제약 사항 정보에 기초하여 적어도 하나의 기 설정된 관절을 제외한 나머지 관절에 관한 임의 관절값을 생성하는 동작에 관한 명령어들(instructions)을 포함할 수 있다. 상기 저장 매체는 지정 관절값 및 생성된 임의 관절값을 이용하여 키 이미지 프레임(key image frame)에 대응되는 자세 벡터를 획득하는 동작에 관한 명령어들(instructions)을 포함할 수 있다. 상기 저장 매체는 획득된 자세 벡터를 이용하여 보간(interpolation)을 수행함으로써, 복수의 자세 벡터를 획득하는 동작에 관한 명령어들(instructions)을 포함할 수 있다. 상기 저장 매체는 획득된 복수의 자세 벡터를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써, 손 동작을 나타내는 복수의 이미지 프레임을 획득하는 동작에 관한 명령어들(instructions)을 포함할 수 있다.
본 개시에서 설명된 전자 장치(100)에 의해 실행되는 프로그램은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 프로그램은 컴퓨터로 읽을 수 있는 명령어들을 수행할 수 있는 모든 시스템에 의해 수행될 수 있다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령어(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다.
소프트웨어는, 컴퓨터로 읽을 수 있는 저장 매체(computer-readable storage media)에 저장된 명령어를 포함하는 컴퓨터 프로그램으로 구현될 수 있다. 컴퓨터가 읽을 수 있는 기록 매체로는, 예를 들어 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독 가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
컴퓨터로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다. 예를 들어, '비일시적 저장매체'는 데이터가 임시적으로 저장되는 버퍼를 포함할 수 있다.
또한, 본 명세서에 개시된 실시예들에 따른 프로그램은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다.
컴퓨터 프로그램 제품은 소프트웨어 프로그램, 소프트웨어 프로그램이 저장된 컴퓨터로 읽을 수 있는 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 프로그램 제품은 전자 장치(100)의 제조사 또는 전자 마켓(예를 들어, 삼성 갤럭시 스토어)을 통해 전자적으로 배포되는 소프트웨어 프로그램 형태의 상품(예를 들어, 다운로드 가능한 애플리케이션(downloadable application))을 포함할 수 있다. 전자적 배포를 위하여, 소프트웨어 프로그램의 적어도 일부는 저장 매체에 저장되거나, 임시적으로 생성될 수 있다. 이 경우, 저장 매체는 전자 장치(100)의 제조사의 서버, 전자 마켓의 서버, 또는 소프트웨어 프로그램을 임시적으로 저장하는 중계 서버의 저장 매체가 될 수 있다.
컴퓨터 프로그램 제품은, 전자 장치(100), 증강 현실 디바이스(200), 및/또는 서버로 구성되는 시스템에서, 서버의 저장매체 또는 전자 장치(100)의 저장매체를 포함할 수 있다. 또는, 전자 장치(100)와 통신 연결되는 제3 장치(예를 들어, 모바일 디바이스)가 존재하는 경우, 컴퓨터 프로그램 제품은 제3 장치의 저장매체를 포함할 수 있다. 또는, 컴퓨터 프로그램 제품은 전자 장치(100)으로부터 제3 장치로 전송되거나, 제3 장치로부터 전자 장치로 전송되는 소프트웨어 프로그램 자체를 포함할 수 있다.
이 경우, 전자 장치(100), 증강 현실 디바이스(200), 및 제3 장치 중 하나가 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 수행할 수 있다. 또는, 전자 장치(100), 증강 현실 디바이스(200), 및 제3 장치 중 적어도 하나 이상이 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 분산하여 실시할 수 있다.
예를 들면, 전자 장치(100)가 메모리(120, 도 2 참조)에 저장된 컴퓨터 프로그램 제품을 실행하여, 전자 장치(100)와 통신 연결된 타 전자 장치(예를 들어, 모바일 디바이스)가 개시된 실시예들에 따른 방법을 수행하도록 제어할 수 있다.
또 다른 예로, 제3 장치가 컴퓨터 프로그램 제품을 실행하여, 제3 장치와 통신 연결된 전자 장치가 개시된 실시예에 따른 방법을 수행하도록 제어할 수 있다.
제3 장치가 컴퓨터 프로그램 제품을 실행하는 경우, 제3 장치는 전자 장치(100)로부터 컴퓨터 프로그램 제품을 다운로드하고, 다운로드된 컴퓨터 프로그램 제품을 실행할 수 있다. 또는, 제3 장치는 프리로드(pre-load)된 상태로 제공된 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 수행할 수도 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 컴퓨터 시스템 또는 모듈 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
Claims (15)
- 손 동작을 나타내는 이미지 데이터를 획득하는 전자 장치에 있어서,손 자세를 구성하는 복수의 관절에 관한 관절값들 중 적어도 하나의 기 설정된 관절에 관한 지정 관절값을 저장하는 메모리; 및적어도 하나의 프로세서;를 포함하고,상기 적어도 하나의 프로세서는,상기 메모리로부터 상기 지정 관절값을 획득하고,상기 획득된 지정 관절값과 상기 복수의 관절에 관한 관절값들 간의 대응 관계에 기초하여 관절값의 생성 여부를 판단하고, 판단 결과에 따라, 인체의 근골격계에 따른 제약 사항 정보에 기초하여 상기 적어도 하나의 기 설정된 관절을 제외한 나머지 관절에 관한 임의 관절값을 생성하고,상기 지정 관절값 및 상기 생성된 임의 관절값을 이용하여 키 이미지 프레임(key image frame)에 대응되는 자세 벡터를 획득하고,상기 획득된 자세 벡터를 이용하여 보간(interpolation)을 수행함으로써, 복수의 자세 벡터를 획득하고,상기 획득된 복수의 자세 벡터를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써 손 동작을 나타내는 복수의 이미지 프레임을 획득하는, 전자 장치.
- 제1 항에 있어서,상기 제약 사항 정보는, 인체의 근골격계의 해부학적 특징에 따른 관절 별 가동 각도 범위(Range of Motion)에 관한 정보를 포함하는, 전자 장치.
- 제2 항에 있어서,상기 적어도 하나의 프로세서는,상기 관절 별 가동 각도 범위 내의 임의의 값(random value)을 이용하여 상기 임의 관절값을 생성하는, 전자 장치.
- 제1 항에 있어서,상기 적어도 하나의 프로세서는,제1 손 자세를 구성하는 복수의 관절값들을 포함하는 제1 자세 벡터 및 제2 손 자세를 구성하는 복수의 관절값들을 포함하는 제2 자세 벡터를 획득하고,제1 키 이미지 프레임에 대응되는 상기 제1 자세 벡터 및 제2 키 이미지 프레임에 대응되는 상기 제2 자세 벡터를 이용하여 보간을 수행하고,상기 보간을 통해 상기 제1 키 이미지 프레임과 상기 제2 키 이미지 프레임 사이의 이미지 프레임들에 각각 대응되는 관절값들을 포함하는 상기 복수의 자세 벡터를 획득하는, 전자 장치.
- 제1 항에 있어서,상기 적어도 하나의 프로세서는,상기 렌더링된 3차원 캐릭터 이미지를 배경 이미지와 합성함으로써 상기 복수의 이미지 프레임을 획득하는, 전자 장치.
- 제1 항에 있어서,상기 적어도 하나의 프로세서는,상기 획득된 복수의 자세 벡터에 포함된 관절값들을 이용하여 상기 3차원 캐릭터 이미지를 렌더링함으로써, 서로 다른 손 자세를 나타내는 상기 복수의 이미지 프레임을 획득하고,상기 획득된 복수의 이미지 프레임을 연속적으로 나열하여 손 동작을 나타내는 동영상 데이터를 획득하는, 전자 장치.
- 제1 항에 있어서,상기 적어도 하나의 프로세서는,증강 현실 디바이스(Augmented device)에 포함된 카메라의 위치 정보 및 상기 카메라의 사양(spec) 정보를 획득하고,상기 획득된 카메라의 위치 정보 및 사양 정보에 기초하여, 상기 복수의 이미지 프레임 내의 상기 3차원 캐릭터 이미지의 위치, 크기, 각도, 컬러, 텍스쳐(texture), 및 깊이 값 중 적어도 하나를 변경하는(modify), 전자 장치.
- 전자 장치가 손 동작을 나타내는 이미지 데이터를 획득하는 방법에 있어서,손 자세를 구성하는 복수의 관절에 관한 관절값들 중 적어도 하나의 기 설정된 관절에 관한 지정 관절값을 획득하는 단계;상기 획득된 지정 관절값과 상기 복수의 관절에 관한 관절값들 간의 대응 관계에 기초하여 관절값의 생성 여부를 판단하는 단계;판단 결과에 따라, 인체의 근골격계에 따른 제약 사항 정보에 기초하여 상기 적어도 하나의 기 설정된 관절을 제외한 나머지 관절에 관한 임의 관절값을 생성하는 단계;상기 지정 관절값 및 상기 생성된 임의 관절값을 이용하여 키 이미지 프레임(key image frame)에 대응되는 자세 벡터를 획득하는 단계;상기 획득된 자세 벡터를 이용하여 보간(interpolation)을 수행함으로써, 복수의 자세 벡터를 획득하는 단계; 및상기 획득된 복수의 자세 벡터를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써, 손 동작을 나타내는 복수의 이미지 프레임을 획득하는 단계;를 포함하는, 방법.
- 제8 항에 있어서,상기 지정 관절값에 관한 정보는 메모리에 미리 저장되어 있고,상기 지정 관절값을 획득하는 단계는, 상기 메모리에 액세스하여, 상기 메모리에 저장된 상기 지정 관절값에 관한 정보를 불러오는, 방법.
- 제8 항에 있어서,상기 제약 사항 정보는, 인체의 근골격계의 해부학적 특징에 따른 복수의 관절 별 가동 각도 범위에 관한 정보를 포함하는, 방법.
- 제8 항에 있어서,상기 자세 벡터를 획득하는 단계는,제1 손 자세를 구성하는 복수의 관절값들을 포함하는 제1 자세 벡터를 획득하는 단계; 및제2 손 자세를 구성하는 복수의 관절값들을 포함하는 제2 자세 벡터를 획득하는 단계;를 포함하고,상기 복수의 자세 벡터를 획득하는 단계는,제1 키 이미지 프레임에 대응되는 상기 제1 자세 벡터 및 제2 키 이미지 프레임에 대응되는 상기 제2 자세 벡터를 이용하여 보간을 수행하는 단계; 및상기 보간을 통해 상기 제1 키 이미지 프레임과 상기 제2 키 이미지 프레임 사이의 이미지 프레임들에 각각 대응되는 관절값들을 포함하는 상기 복수의 자세 벡터를 획득하는 단계;를 포함하는, 방법.
- 제8 항에 있어서,상기 손 동작을 나타내는 복수의 이미지 프레임을 획득하는 단계는,상기 렌더링된 3차원 캐릭터 이미지를 배경 이미지와 합성함으로써, 상기 복수의 이미지 프레임을 획득하는 단계;를 포함하는, 방법.
- 제8 항에 있어서,상기 손 동작을 나타내는 복수의 이미지 프레임을 획득하는 단계는,상기 획득된 복수의 자세 벡터에 포함된 관절값들을 이용하여 상기 3차원 캐릭터 이미지를 렌더링함으로써, 서로 다른 손 자세를 나타내는 상기 복수의 이미지 프레임을 획득하는 단계; 및상기 획득된 복수의 이미지 프레임을 연속적으로 나열하여 손 동작을 나타내는 동영상 데이터를 획득하는 단계;를 포함하는, 방법.
- 제8 항에 있어서,증강 현실 디바이스(Augmented device)에 포함된 카메라의 위치 정보 및 상기 카메라의 사양(spec) 정보를 획득하는 단계; 및상기 획득된 카메라의 위치 정보 및 사양 정보에 기초하여, 상기 복수의 이미지 프레임 내의 상기 3차원 캐릭터 이미지의 위치, 크기, 각도, 컬러, 텍스쳐(texture), 및 깊이 값 중 적어도 하나를 변경하는(modify) 단계;를 더 포함하는, 방법.
- 컴퓨터로 판독 가능한 저장 매체를 포함하는 컴퓨터 프로그램 제품(Computer Program Product)에 있어서,상기 저장 매체는손 자세를 구성하는 복수의 관절에 관한 관절값들 중 적어도 하나의 기 설정된 관절에 관한 지정 관절값을 획득하는 동작;상기 획득된 지정 관절값과 상기 복수의 관절에 관한 관절값들 간의 대응 관계에 기초하여 관절값의 생성 여부를 판단하는 동작;판단 결과에 따라, 인체의 근골격계에 따른 제약 사항 정보에 기초하여 상기 적어도 하나의 기 설정된 관절을 제외한 나머지 관절에 관한 임의 관절값을 생성하는 동작;상기 지정 관절값 및 상기 생성된 임의 관절값을 이용하여 키 이미지 프레임(key image frame)에 대응되는 자세 벡터를 획득하는 동작;상기 획득된 자세 벡터를 이용하여 보간(interpolation)을 수행함으로써, 복수의 자세 벡터를 획득하는 동작; 및상기 획득된 복수의 자세 벡터를 이용하여 3차원 캐릭터 이미지를 렌더링함으로써, 손 동작을 나타내는 복수의 이미지 프레임을 획득하는 동작;을 포함하는, 전자 장치가 손 동작을 나타내는 이미지 데이터를 획득하는 방법에 관한 명령어들(instructions)을 포함하는 컴퓨터 프로그램 제품.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20210136900 | 2021-10-14 | ||
KR10-2021-0136900 | 2021-10-14 | ||
KR1020220047625A KR20230053492A (ko) | 2021-10-14 | 2022-04-18 | 손 동작에 관한 이미지 데이터를 획득하는 전자 장치 및 그 동작 방법 |
KR10-2022-0047625 | 2022-04-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2023063570A1 true WO2023063570A1 (ko) | 2023-04-20 |
Family
ID=85987880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2022/012884 WO2023063570A1 (ko) | 2021-10-14 | 2022-08-29 | 손 동작에 관한 이미지 데이터를 획득하는 전자 장치 및 그 동작 방법 |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2023063570A1 (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120071281A (ko) * | 2010-12-22 | 2012-07-02 | 한국전자통신연구원 | 모바일에서 현실환경과 가상환경을 융합하여 제공하는 장치 및 방법 |
KR20160001699A (ko) * | 2014-06-26 | 2016-01-06 | 한국과학기술원 | 증강현실 상호 작용 서비스 제공 장치 및 방법 |
KR20210045898A (ko) * | 2019-10-17 | 2021-04-27 | 한국전자통신연구원 | 혼합현실에서의 손 자세 기반 가상 메뉴 제어 장치 및 방법 |
KR20210069491A (ko) * | 2019-12-03 | 2021-06-11 | 삼성전자주식회사 | 전자 장치 및 이의 제어 방법 |
US20210201551A1 (en) * | 2018-05-22 | 2021-07-01 | Magic Leap, Inc. | Skeletal systems for animating virtual avatars |
-
2022
- 2022-08-29 WO PCT/KR2022/012884 patent/WO2023063570A1/ko unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120071281A (ko) * | 2010-12-22 | 2012-07-02 | 한국전자통신연구원 | 모바일에서 현실환경과 가상환경을 융합하여 제공하는 장치 및 방법 |
KR20160001699A (ko) * | 2014-06-26 | 2016-01-06 | 한국과학기술원 | 증강현실 상호 작용 서비스 제공 장치 및 방법 |
US20210201551A1 (en) * | 2018-05-22 | 2021-07-01 | Magic Leap, Inc. | Skeletal systems for animating virtual avatars |
KR20210045898A (ko) * | 2019-10-17 | 2021-04-27 | 한국전자통신연구원 | 혼합현실에서의 손 자세 기반 가상 메뉴 제어 장치 및 방법 |
KR20210069491A (ko) * | 2019-12-03 | 2021-06-11 | 삼성전자주식회사 | 전자 장치 및 이의 제어 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019164373A1 (en) | Electronic device displaying avatar motion-performed as per movement of facial feature point and method for operating same | |
WO2020149581A1 (en) | Electronic device for generating avatar and method thereof | |
WO2019164266A1 (en) | Electronic device for generating image including 3d avatar reflecting face motion through 3d avatar corresponding to face and method of operating same | |
WO2018199701A1 (en) | Method for providing content and apparatus therefor | |
WO2015183033A1 (en) | Data processing method and electronic device thereof | |
WO2017126741A1 (ko) | Hmd 디바이스 및 그 제어 방법 | |
WO2020138602A1 (ko) | 진정 사용자의 손을 식별하는 방법 및 이를 위한 웨어러블 기기 | |
WO2019164092A1 (ko) | 디스플레이를 통해 표시된 제 1 콘텐트에 대해 제 2 콘텐트를 외부 객체의 움직임에 따라 제공하기 위한 전자 장치 및 그의 동작 방법 | |
WO2020159302A1 (ko) | 증강 현실 환경에서 다양한 기능을 수행하는 전자 장치 및 그 동작 방법 | |
WO2020130691A1 (en) | Electronic device and method for providing information thereof | |
WO2019231130A1 (ko) | 전자 장치 및 그의 제어방법 | |
WO2022158820A1 (en) | Systems and methods for manipulating views and shared objects in xr space | |
WO2022035027A1 (ko) | 모션 신호와 마우스 신호를 사용하여 호스트 장치를 제어하기 위한 전자 장치 | |
WO2019172642A1 (ko) | 심장 박동을 측정하기 위한 전자 장치 및 방법 | |
WO2021221490A1 (en) | System and method for robust image-query understanding based on contextual features | |
WO2018076454A1 (zh) | 一种数据处理方法及其相关设备 | |
WO2021221436A1 (ko) | 카메라를 이용하여 공간의 깊이를 획득하는 디바이스 및 방법 | |
WO2020122513A1 (ko) | 2차원 이미지 처리 방법 및 이 방법을 실행하는 디바이스 | |
WO2023063570A1 (ko) | 손 동작에 관한 이미지 데이터를 획득하는 전자 장치 및 그 동작 방법 | |
WO2020027417A1 (en) | Electronic device and method for providing virtual input tool | |
WO2023239035A1 (ko) | 손 동작에 관한 이미지 데이터를 획득하는 전자 장치 및 그 동작 방법 | |
WO2020130274A1 (ko) | 영상에서 오브젝트를 인식하는 전자 장치 및 그 동작 방법 | |
WO2022108001A1 (ko) | 카메라 시야(fov) 가장자리에서 움직임을 인식하여 전자 장치를 제어하는 방법 및 그 전자 장치 | |
WO2020204572A1 (en) | Electronic device and control method thereof | |
WO2020175760A1 (en) | Electronic device and content generation method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 22881200 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |