WO2016037064A1 - Using a video stream to detect the changing position of a face to move and rotate a game object and to perspective crop the face and display the face - Google Patents

Using a video stream to detect the changing position of a face to move and rotate a game object and to perspective crop the face and display the face Download PDF

Info

Publication number
WO2016037064A1
WO2016037064A1 PCT/US2015/048552 US2015048552W WO2016037064A1 WO 2016037064 A1 WO2016037064 A1 WO 2016037064A1 US 2015048552 W US2015048552 W US 2015048552W WO 2016037064 A1 WO2016037064 A1 WO 2016037064A1
Authority
WO
WIPO (PCT)
Prior art keywords
face
user
perspective
video
game object
Prior art date
Application number
PCT/US2015/048552
Other languages
French (fr)
Inventor
Philip Tolk
Daniel Mosquera
Anne STALLONE
Original Assignee
Ballcraft, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ballcraft, Llc filed Critical Ballcraft, Llc
Publication of WO2016037064A1 publication Critical patent/WO2016037064A1/en

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/213Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/428Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving motion or position input signals, e.g. signals representing the rotation of an input controller or a player's arm motions sensed by accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/65Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor automatically by game devices or servers from real world data, e.g. measurement in live racing competition
    • A63F13/655Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor automatically by game devices or servers from real world data, e.g. measurement in live racing competition by importing photos, e.g. of the player
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping

Definitions

  • This invention relates to methods and computer programs that use existing portable devices and displays with a front facing camera and current face detection algorithms.
  • a virtual environment is a computer-simulated environment, whether that environment is a simulation of the real world or an ima0inary world, where users can interact with a virtual environment or virtual artifacts either through the use of standard input devices or specialized multidirectional devices.
  • Virtual environments are used to describe a wide variety of applications commonly associated with its immersive, highly visual three-dimensional environments including 2D, 3D, Virtual Reality, Augmented Reality, and game environments.
  • CAD Computer Aided Design
  • Portable Device is a generic name that encapsulates general purpose devices that can be wearable such as smart watches and those that can be carried comfortably by the user like smart phones, tablets and mp4 players with Android or iOS systems, and dedicated devices.
  • Display is a generic name for devices also known as computer monitors (desktops and laptops) and televisions that remain in one position most of the time.
  • the displays mentioned here either have an embedded camera or serve as mounts for camera peripherals / accessories.
  • Face detection is a technology that uses image processing algorithms to detect the face of the user with the common software already in mobile devices. Any other technology in hardware and software that achieves the same solution is also covered.
  • Video chat is referred to as the technology where users can talk to and see each other no matter the distance or time zones as a result of the real-time transmission of audio and video data over the Internet.
  • UV coordinates is known as a normalized coordinate 2D system that represents all points of a texture or image from one of its corners to its opposite corner. This describes how the texture covers a 3D object in space.
  • Game objects are the core building block in virtual environments and serve as 2D or 3D elements, game characters such as avatars, or background rendering sprites or game cameras which render the virtual environment of the other game objects within the virtual environment from the game camera's perspective.
  • Game objects can be controlled within 2D and 3D virtual environments via setting the position, rotation and scale of their transform.
  • Game objects have at least a transform component attached (to represent position and orientation).
  • a game object may contain other components which provide additional functionality such as rendering the graphics of the game object, rigid bodies, colliders, particles
  • a network refers to the network of the mobile device's transmission of the video which is operating within a networked environment using a communication connection to connect to one or more remote computers.
  • the remote computer may include a mobile device such as a smartphone, personal computer (PC), server, router, network node, or the like.
  • the communication connection may include a Local Area Network (LAN), a Wide Area Network (WAN), or other networks such as cellular networks commonly termed 3G and 4G.
  • An app refers to a self-contained program or piece of software designed to fulfil a particular purpose; an application, especially as downloaded by a user to a mobile device.
  • a gyroscope is commonly equipped on mobile devices to provide orientation by giving a 3D position of the devices rotation and orientation.
  • a gyroscope is a sensor commonly equipped in mobile devices to detect orientation of the device by measuring the angular rotational velocity and rate of lateral and tilt change of the device.
  • An accelerometer is a sensor commonly equipped in mobile devices that measures the linear acceleration of movement relative to a frame of reference to sense orientation of the device.
  • a perspective correction is a process of straightening and leveling objects within a photograph or video frame. This is done by performing a perspective transformation to the image. The method herein performs the perspective correction based on the gyroscope's sensor's determination of the three dimensional position of the device's rotation compared to the user's designated correct rotation.
  • a perspective crop is performing a perspective correction and a crop of the image or video frame.
  • Perspective projection distortion is the inevitable distortion of three-dimensional space when projected onto a two-dimensional surface.
  • One or more embodiments described herein are developed to transmit over the network a video and optional audio feed containing a perspective cropped user's face which is displayed as 2D texture on a 2D or 3D game object within a virtual environment.
  • the user's face is shown with a corrected perspective and only the face and head are shown within the video stream, no matter the relative position of the user's face in reference to the camera.
  • 2D refers to two-dimensional and 3D refers to three-dimensional.
  • a system for detecting the position of the face of the user and if either their mobile device moves and/or the user's face moves the use of the detected change of position of the face is applied to a game object to move and rotate the game object.
  • the method of utilizing face tracking can also be used as a game object controller for any object in the virtual environment by using the position and rotation of the detected face in relation to the device and the reference frame
  • UV coordinates to calculate the new position and rotation of any designated object in the virtual environment.
  • the user wants to use the current position of the mobile device as the origin for re-centering and re-orienting, the user touches the screen to take a picture and then the face detection and its location from that picture is used as the reference for the origin. Additionally, the gyroscopes rotation and orientation data is saved at this time as the base quaternion which serves as the reference data.
  • a method that allows for a perspective cropping of user's face within a video stream to be textured onto a 2D texture on a 2D or 3D game object.
  • This perspective cropping of the user's face will always show the users face as centered regardless of the relative position of the user's face in reference to a device's camera.
  • Current face detection technology locates a user's face within a video feed and the video feed remains unchanged.
  • the method described herein uses the video stream to crop the video frames and remove the areas where the face is not detected, leaving the user's centered face always visible. Additionally, the rotation of the device will skew the face within the video stream creating a perspective projection distortion when the user has rotated the device in relation to their face.
  • the method described herein is to detect the rotation difference relative to the user's specified reference rotation of the device and to then apply a perspective correction on the video frame. Additionally, the location of the face within the video stream is detected and the other areas of the video stream are cropped away.
  • the face is displayed centered and perspective corrected within the video feed.
  • the video feed can come from any standard or specialized camera.
  • the receiver of the video feed will then apply it as a dynamic 2D texture for any defined 2D or 3D object to give the illusion of a constantly centered feed of the user's face. Even though the user's face is moving in reference to the device's camera, the face being displayed is centered.
  • FIG. 1 Describes a common knowledge of the three linear and rotational axes present in any common portable device that exists in the market and a reference for real and virtual environments.
  • FIG. 2 Illustrates the constant tracking of the user's face no matter the position or rotation of the portable device In reference to the user.
  • FIG. 3 Illustrates the constant tracking of the user's face no matter the position or rotation of the user in reference to a static device such as monitors or televisions.
  • FIG. 4 Explains the detection of the user's face that was perspective cropped and then displayed on a 2D texture on a game object in a virtual environment. This occurs on every frame of a video feed which has a face detected. If no face is detected the last frame of the video with the user's face detected remains displayed on the 2D texture.
  • FIG. 5 Contains the flowchart of the algorithm that uses the video stream, face detection data, and gyroscopic data to perform a perspective crop of the video feed and the transmission of it over a network or internet.
  • FIG. 6 Contains the flowchart of the algorithm that uses the received video and audio feed to update the 2D texture which is displaying the users face on a 2D or 3D game object in a virtual world.
  • FIG. 7 Contains the flowchart of the algorithm that uses the video feed to perspective correct the image and then to detect the face and calculate the UV data of the user's face and transmit this data over the network.
  • FIG. 8 Contains the flowchart of the algorithm that uses the received perspective corrected video feed and U V coordinates to update the 2D texture which is displaying the user's
  • FIG. 9 Illustrates how face tracking is used as a game object controller
  • FIG. 10 Contains the flowchart of the process in which face tracking from a video stream is used to control objects in a virtual environment.
  • FIG. 11 Illustrates a way to calibrate the face tracking for any given application by taking a reference picture in which the face is captured for base calculations as well as the gyroscopes rotational data which serves as the base quaternion.
  • FIG. 12 illustrates an example on how face tracking is used to adjust the data from the gyroscope and accelerometers.
  • FIG. 13 Contains a flow chart that shows how the face tracking is used to adjust the data of the gyroscope and accelerometers.
  • FIG. 1 Describes a common knowledge of the three linear and rotational axes present in any common portable device that exists in the market which are used as reference in both virtual and real worlds. These axes are y or yaw 102, x or pitch 103 and z or roll 104 axes for linear or rotational movement respectively.
  • FIG. 2 Illustrates the representation of the portable device shown as 202 with a front facing camera 203.
  • a rectangular area 205 will be created containing the video stream of the face of the user 206.
  • the detection is regardless of the linear or rotational movement of the portable device shown as 207 and 208 respectively, where the movement of the device changes the location of the face within the video stream however, the perspective cropping makes the rendering of the face appear as though the face has not moved within the video stream.
  • FIG. 3 302 shows a display device with its own camera (embedded or peripheral) that will never move that will use the invention and face detection technology described in Fig. 2 to calculate the UV points which represent the rectangular area of the user's face regardless of the changing position of the player as described in 304 as long as the face remains in the field of vision of the camera.
  • FIG. 4 Is a visual representation of how the method in this invention is used along with the face detection technology on a standard frame of a video stream 402 to calculate the UV coordinates 404 centered on the user's face 403. The method only calculates two UV points like 405 that are enough to create the rectangular area of coordinates.
  • the two points are transmitted with the video feed in its entirety or cropped to the receiving device that will use these points UV coordinates needed to crop the video stream and apply it as a 2D texture 409 to a 3D game object 408 that will be displayed in a virtual environment 407 displayed on any screen 406. Or only the perspective cropped video stream is transmitted and it is applied as a 2D texture 409 to a 3D game object 408 that is displayed in a virtual environment 407 displayed on any screen 406.
  • FIG. 5 Displays the flow chart of the use of the perspective cropping and face detection technology to transmit over the network the portion of the images that contain the perspective cropped face.
  • the algorithm that accomplishes this is as follows:
  • Quaternion current GyroUtlls.CurrentQuaternion
  • Quaternion inverseBase Quaternion.inverse(GyroUtils.BaseQuaternion);
  • videoFeedTexture ImageCompensator.RotatelmagefvideoFeedTexture ,compensation.eulerAngles);
  • Texture2D croppedlmage new Texture2D(width , height); croppedlmage.SetPixels(videoFeedTexture.GetPixeis(
  • mHeadPosition is a structure given to the algorithm that will help determine the size of the rectangular area centered on the user's face that is desired to be used in the virtual environment.
  • GyroUtils.BaseQuaternion is the reference rotation of the device when the user designates the device to be in the normal and correct position.
  • FIG. 6 Describes the process that obtains the perspective corrected video stream and UV coordinate data and applies it to a 2D texture on any 2D or 3D game object in the virtual world.
  • mVideoTexture new Texure2D(); mVideoTexture.ReadBytes(vldeoData);
  • FIG. 7 Displays the flow chart of the use of the face detection technology and perspective correction to calculate the location of the two UV points necessary for cropping.
  • the algorithm that accomplishes this is as follows:
  • Iffprofifemode - ProfileMode.Video && mHeadTracker.FaceFound
  • Quaternion current GyroUtils.CurrentQuaternion
  • Quaternion inverseBase Quaternion.lnverse(GyroUtils.BaseQuaternlon);
  • mHeadPosltlon mHeadTracker.GetHeadCoordinates()
  • Vector2 uvl new Vector2 (mHeadPosition.xMin / Screen.videoFeedTexture ,
  • Vector2 uv2 new Vector2 (mHeadPosition.xMax / Screen.videoFeedTexture ,
  • FIG. 8 Describes the process that crops the video stream on the receiving end using the UV points transmitted with the video frame data.
  • the UV points for the rectangular area are calculated and applied on the 2D texture so that the texturing remains centered on the other user's face.
  • FIG. 9 Shows a typical case where face tracking is used as a game object controller 902 in 3D space 903 by knowing the position and rotation of the face 205 detected by the front facing camera or a device such as 202. Face tracking also detects the depth by using the ratio of the size of the area that contains the face compared to the size of the entire captured frame. This is achieved in both portable devices and static displays.
  • FIG. 10 Displays the flow chart of the use of face tracing technology that uses the portable device's front facing camera to change position and rotation of game objects.
  • the face is detected, it is compared to the orientation of the device for rotation calculations, and the size of the face is compared to the size of the captured image frame for depth positioning.
  • the vertical and horizontal positions of the face are obtained based on the pixel positioning of the face area and referenced to the center of the image frame.
  • Vector3 paddlePosition new vector3(facePo$ftlonx facePosition.y, faceDistance);
  • Vector3 angles new Vector3(HeadTracker.headYaw, HeadTracker.headPitch,
  • paddleTransform.rotation Quaternion.Slerp(paddleTransform.rotation, paddleRotation,
  • Vector2 facePosition -HeadTracker.newPosition * scaleFactor
  • Vector3 paddlePosition new Vector3(facePosition.x, facePosition.y, faceDistance);
  • Vector3 direction paddlePosition - paddleTransform.position
  • moveSpeed direction.magnltude * lOf; //constant for scaling speed
  • paddleTransform.Translatefdirectlon * Tlme.deltaTime * moveSpeed); paddleTransformsotation Quatemion.RotateTowards(paddleTransform.rotation,
  • FIG. 11 Illustrates a way to calibrate the face tracking for any given application.
  • a reference frame which serves as the origin is created by the app so that the user can position the portable device 202 such that a detected moving face of the user 205 by the front facing camera 203 is centered.
  • the calculated size of the rectangular area containing the face in the reference frame is a distance of zero along the Z axis.
  • the detected face's rectangular area will be compared to the reference frame's rectangular size and the change in size will be used to compute the distance along the Z axis to move a game object.
  • the reference frame with the face detection's center of the rectangle is considered the origin.
  • the change of position of the calculated center of the rectangle of the detected face is used for panning a game object in both the vertical Y axis direction and the horizontal X axis direction.
  • Vector2 ImageSIze HeadTracker.imageSize; faceSize / ImageSize.magnitude; //normalize the size
  • baseScale faceSize.magnitude
  • faceCenter -HeadTracker.newPosltion * scaleFactor
  • FIG. 12 Shows an example in which motion controls only can provide a wrong input for a game when an action was registered properly. If a user 1202 walks on a sidewalk and turns into a corner, the device 202 will detect a rotation 1204 that will result in a rotation of a game object 1203 in the virtual space. However, since the face tracking has detected that the user has not rotated the device relatively to that face, the code can nullify the influence of the motion controls. This also applies to the case when it is desired to compensate the rotation of the face relative to the portable device so that the texture that is displayed during the video feed always shows the user's face looking at the portable device to give the effect that the user has not moved at all.
  • Face detection is used to determine if the user's whole body is turning in which case the code will negate the turn input from the accelerometers and gyroscopes based on the positioning of the hand relative to the face. It can also serve as a constant compensator when both motions are detected correctly and correct the speed of rotation of game objects in the virtual space.
  • FIG. 13 Contains the flow chart that explains how the process is working.
  • Transform.rotatlon deviceRotatlon * Quaternion.lnverseffaceRotatlon);
  • there is provided methods and computer algorithms for a mobile device with a front facing camera to use the detected position of the face of the user as a game controller as well as a method of displaying a live stream of only the face with audio within the video within a virtual environment.
  • a reference frame which serves as the origin
  • the subsequent frames of the video are then used to calculate the change of the position of the face which is detected within the video frame, and the calculations of the position, rotation, speed and distance are used to position a game object.
  • this is a method for having a live video and audio stream textured onto 2D and 3D objects within a virtual environment with only the cropped and centered face being displayed.
  • the video, audio and data may be transmitted to other users within the virtual environment allowing the recipient of the live video and data to texture a 2D and 3D object with only the face being displayed from the live video stream.
  • our methods compute a rectangular area from a frame captured from the front facing camera of a mobile device to create a texture that will always show the face of the user live streaming with live audio as long as it is within the camera's field of vision.
  • the face of the user will be applied as a live video and audio stream texture with the centered user's face rendering onto a designated 2D or 3D object for use in any application or game, either inside the same user's device or any other user's device that is connected in the same network.
  • the relative position and rotation of the face in relation to the entire picture can then serve as a way to obtain precise position and rotation values for game objects in a virtual environment, making the face a 2D or 3D game object controller within a virtual environment.

Abstract

Methods for a mobile device with a front facing camera to use the detected position of the user's face as a game controller as well as a method of displaying the live streaming face within the video with audio within a virtual environment. Using a reference frame which serves as the origin, the subsequent frames of the live streaming video are used to calculate the change in position of the face detected within the video frame, and calculations of position, rotation, speed and distance are used to position a game object. Additionally this is a method for having a live video stream with live audio textured onto 2D / 3D objects within a virtual environment with only the perspective cropped face displayed. This provides the appearance of the face as stable and unmoving even when the device's camera and/or user's face are moving relative to each other.

Description

USING A VIDEO STREAM TO DETECT THE CHANGING POSITION OF A FACE TO MOVE AND ROTATE A GAME OBJECT AND TO PERSPECTIVE CROP THE FACE AND DISPLAY THE FACE
CROSS REFERENCE TO RELATED APPLICATIONS
[01] The present application claims priority to US Patent Application 624346,608 filed September 5, 2014.
FIELD OF THE INVENTION
[02] This invention relates to methods and computer programs that use existing portable devices and displays with a front facing camera and current face detection algorithms.
BACKGROUND OF THE INVENTION
[03] A virtual environment is a computer-simulated environment, whether that environment is a simulation of the real world or an ima0inary world, where users can interact with a virtual environment or virtual artifacts either through the use of standard input devices or specialized multidirectional devices. Virtual environments are used to describe a wide variety of applications commonly associated with its immersive, highly visual three-dimensional environments including 2D, 3D, Virtual Reality, Augmented Reality, and game environments. The development of Computer Aided Design (CAD) software, graphics hardware acceleration, head- mounted displays, database gloves, and miniaturization have helped popularize the notion.
[04] Portable Device is a generic name that encapsulates general purpose devices that can be wearable such as smart watches and those that can be carried comfortably by the user like smart phones, tablets and mp4 players with Android or iOS systems, and dedicated devices. The portable devices mentioned that our invention makes use of contain front facing cameras.
[05] Display is a generic name for devices also known as computer monitors (desktops and laptops) and televisions that remain in one position most of the time. The displays mentioned here either have an embedded camera or serve as mounts for camera peripherals / accessories.
[06] Face detection is a technology that uses image processing algorithms to detect the face of the user with the common software already in mobile devices. Any other technology in hardware and software that achieves the same solution is also covered.
[07] Video chat is referred to as the technology where users can talk to and see each other no matter the distance or time zones as a result of the real-time transmission of audio and video data over the Internet.
[08] UV coordinates is known as a normalized coordinate 2D system that represents all points of a texture or image from one of its corners to its opposite corner. This describes how the texture covers a 3D object in space.
[09] Game objects are the core building block in virtual environments and serve as 2D or 3D elements, game characters such as avatars, or background rendering sprites or game cameras which render the virtual environment of the other game objects within the virtual environment from the game camera's perspective. Game objects can be controlled within 2D and 3D virtual environments via setting the position, rotation and scale of their transform. Game objects have at least a transform component attached (to represent position and orientation).
[010] Additionally, a game object may contain other components which provide additional functionality such as rendering the graphics of the game object, rigid bodies, colliders, particles
2 and audio are all examples of different components (or combinations of components) that can be added to any given game object.
[oil] A network refers to the network of the mobile device's transmission of the video which is operating within a networked environment using a communication connection to connect to one or more remote computers. The remote computer may include a mobile device such as a smartphone, personal computer (PC), server, router, network node, or the like. The communication connection may include a Local Area Network (LAN), a Wide Area Network (WAN), or other networks such as cellular networks commonly termed 3G and 4G.
[012] An app refers to a self-contained program or piece of software designed to fulfil a particular purpose; an application, especially as downloaded by a user to a mobile device.
[013] A gyroscope is commonly equipped on mobile devices to provide orientation by giving a 3D position of the devices rotation and orientation. A gyroscope is a sensor commonly equipped in mobile devices to detect orientation of the device by measuring the angular rotational velocity and rate of lateral and tilt change of the device.
[014] An accelerometer is a sensor commonly equipped in mobile devices that measures the linear acceleration of movement relative to a frame of reference to sense orientation of the device.
[015] A perspective correction is a process of straightening and leveling objects within a photograph or video frame. This is done by performing a perspective transformation to the image. The method herein performs the perspective correction based on the gyroscope's sensor's determination of the three dimensional position of the device's rotation compared to the user's designated correct rotation.
3 [016] A perspective crop is performing a perspective correction and a crop of the image or video frame.
[017] Perspective projection distortion is the inevitable distortion of three-dimensional space when projected onto a two-dimensional surface.
[018] One or more embodiments described herein are developed to transmit over the network a video and optional audio feed containing a perspective cropped user's face which is displayed as 2D texture on a 2D or 3D game object within a virtual environment. The user's face is shown with a corrected perspective and only the face and head are shown within the video stream, no matter the relative position of the user's face in reference to the camera.
[019] 2D refers to two-dimensional and 3D refers to three-dimensional.
SUMMARY OF THE INVENTION
[020] As provided in one or more embodiments, there is provided a system for detecting the position of the face of the user and if either their mobile device moves and/or the user's face moves the use of the detected change of position of the face is applied to a game object to move and rotate the game object.
[021] In other aspects of the one or more embodiments, the method of utilizing face tracking can also be used as a game object controller for any object in the virtual environment by using the position and rotation of the detected face in relation to the device and the reference frame
4 UV coordinates to calculate the new position and rotation of any designated object in the virtual environment. When the user wants to use the current position of the mobile device as the origin for re-centering and re-orienting, the user touches the screen to take a picture and then the face detection and its location from that picture is used as the reference for the origin. Additionally, the gyroscopes rotation and orientation data is saved at this time as the base quaternion which serves as the reference data.
[022] In another embodiment there is provided a method that allows for a perspective cropping of user's face within a video stream to be textured onto a 2D texture on a 2D or 3D game object. This perspective cropping of the user's face will always show the users face as centered regardless of the relative position of the user's face in reference to a device's camera. Current face detection technology locates a user's face within a video feed and the video feed remains unchanged. The method described herein uses the video stream to crop the video frames and remove the areas where the face is not detected, leaving the user's centered face always visible. Additionally, the rotation of the device will skew the face within the video stream creating a perspective projection distortion when the user has rotated the device in relation to their face. The method described herein is to detect the rotation difference relative to the user's specified reference rotation of the device and to then apply a perspective correction on the video frame. Additionally, the location of the face within the video stream is detected and the other areas of the video stream are cropped away. When receiving the video and optionally audio stream over the Internet or network for use as a type of video chat and/or to texture onto a game object within a virtual environment either on an avatar of the user where the user's real face is then rendered onto the avatar's face within the virtual environment or onto any other
5 designated game object or in a 2D video chat system, the face is displayed centered and perspective corrected within the video feed. The video feed can come from any standard or specialized camera. The receiver of the video feed will then apply it as a dynamic 2D texture for any defined 2D or 3D object to give the illusion of a constantly centered feed of the user's face. Even though the user's face is moving in reference to the device's camera, the face being displayed is centered.
[023] This effect is that a video stream containing a user's face appears stable and centered even though the device's camera and/or user's face may be moving and rotating 3 dimensionally relative to each other. Thus, the movements of the face within the perspective- cropped frame are seen but the movements and rotations relative to the device's camera position are not seen because a perspective correction is applied and then the areas not containing the face are cropped away. Additionally, another use of this system is that the relative position and rotation of the face in relation to the entire picture serves as a way to obtain precise position and rotation values which are applied to designated game objects functioning as a game object controller.
[024] Numerous other advantages and features of the invention will become readily apparent from the following detailed description of the invention and the embodiments thereof, from the claims, and from the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[025] A fuller understanding of the foregoing may be had by reference to the accompanying drawings, wherein:
6 [026] FIG. 1 Describes a common knowledge of the three linear and rotational axes present in any common portable device that exists in the market and a reference for real and virtual environments.
[027] FIG. 2 Illustrates the constant tracking of the user's face no matter the position or rotation of the portable device In reference to the user.
[028] FIG. 3 Illustrates the constant tracking of the user's face no matter the position or rotation of the user in reference to a static device such as monitors or televisions.
[029] FIG. 4 Explains the detection of the user's face that was perspective cropped and then displayed on a 2D texture on a game object in a virtual environment. This occurs on every frame of a video feed which has a face detected. If no face is detected the last frame of the video with the user's face detected remains displayed on the 2D texture.
[030] FIG. 5 Contains the flowchart of the algorithm that uses the video stream, face detection data, and gyroscopic data to perform a perspective crop of the video feed and the transmission of it over a network or internet.
[031] FIG. 6 Contains the flowchart of the algorithm that uses the received video and audio feed to update the 2D texture which is displaying the users face on a 2D or 3D game object in a virtual world.
[032] FIG. 7 Contains the flowchart of the algorithm that uses the video feed to perspective correct the image and then to detect the face and calculate the UV data of the user's face and transmit this data over the network.
[033] FIG. 8 Contains the flowchart of the algorithm that uses the received perspective corrected video feed and U V coordinates to update the 2D texture which is displaying the user's
7 face on a 2D or 3D game object in a virtual world.
[034] FIG. 9 Illustrates how face tracking is used as a game object controller
[035] FIG. 10 Contains the flowchart of the process in which face tracking from a video stream is used to control objects in a virtual environment.
[036] FIG. 11 Illustrates a way to calibrate the face tracking for any given application by taking a reference picture in which the face is captured for base calculations as well as the gyroscopes rotational data which serves as the base quaternion.
[037] FIG. 12 illustrates an example on how face tracking is used to adjust the data from the gyroscope and accelerometers.
[038] FIG. 13 Contains a flow chart that shows how the face tracking is used to adjust the data of the gyroscope and accelerometers.
DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
[039] While the invention is susceptible to embodiments in many different forms, there are shown in the drawings and will be described in detail herein the preferred embodiments of the present invention. It should be understood, however, that the present disclosure is to be considered an exemplification of the principles of the invention and is not intended to limit the spirit or scope of the invention and/or claims of the embodiments illustrated.
[040] The following descriptions and diagrams and figures describe a method that allows the cropping of the display of the video feed received over the network using the UV coordinates. This method contains a program that can be adapted to any existing face detecting technology that uses any standard or specialized camera for portable and display devices.
8 [041] FIG. 1 Describes a common knowledge of the three linear and rotational axes present in any common portable device that exists in the market which are used as reference in both virtual and real worlds. These axes are y or yaw 102, x or pitch 103 and z or roll 104 axes for linear or rotational movement respectively.
[042] FIG. 2 Illustrates the representation of the portable device shown as 202 with a front facing camera 203. When used with the invention and face detection technology shown in 204 a rectangular area 205 will be created containing the video stream of the face of the user 206. The detection is regardless of the linear or rotational movement of the portable device shown as 207 and 208 respectively, where the movement of the device changes the location of the face within the video stream however, the perspective cropping makes the rendering of the face appear as though the face has not moved within the video stream.
[043] FIG. 3 302 shows a display device with its own camera (embedded or peripheral) that will never move that will use the invention and face detection technology described in Fig. 2 to calculate the UV points which represent the rectangular area of the user's face regardless of the changing position of the player as described in 304 as long as the face remains in the field of vision of the camera.
[044] FIG. 4 Is a visual representation of how the method in this invention is used along with the face detection technology on a standard frame of a video stream 402 to calculate the UV coordinates 404 centered on the user's face 403. The method only calculates two UV points like 405 that are enough to create the rectangular area of coordinates.
9 [045] The two points are transmitted with the video feed in its entirety or cropped to the receiving device that will use these points UV coordinates needed to crop the video stream and apply it as a 2D texture 409 to a 3D game object 408 that will be displayed in a virtual environment 407 displayed on any screen 406. Or only the perspective cropped video stream is transmitted and it is applied as a 2D texture 409 to a 3D game object 408 that is displayed in a virtual environment 407 displayed on any screen 406.
[046] FIG. 5 Displays the flow chart of the use of the perspective cropping and face detection technology to transmit over the network the portion of the images that contain the perspective cropped face. The algorithm that accomplishes this is as follows:
[047]
void Update()
{
Iffprofilemode == ProfileMode.Video && mHeadTracker.FaceFound)
//when face is detected, transmit video
{
Quaternion current = GyroUtlls.CurrentQuaternion;
Quaternion inverseBase = Quaternion.inverse(GyroUtils.BaseQuaternion);
Quaternion compensation = current * inverseBase;
videoFeedTexture = ImageCompensator.RotatelmagefvideoFeedTexture ,compensation.eulerAngles);
videoFeedTexture = mHeadTracker.GetFrameTextureO;
mHeadPositlon = mHeadTracker.GetHeadCoordinatesQ; int width = mHeadPosition.xMax - mHeadPosition.xMin; int height= mHeadPosltion.yMax - mHeadPosition.yMin;
Texture2D croppedlmage = new Texture2D(width , height); croppedlmage.SetPixels(videoFeedTexture.GetPixeis(
mHeadPosition.xMin, mHeadPosition.yMin, width , height
));
croppedlmage.Apply();
SendToNetwork("VideoUpdate", croppedlmage.EncodeToPngO);
}
}
[048] mHeadPosition is a structure given to the algorithm that will help determine the size of the rectangular area centered on the user's face that is desired to be used in the virtual environment.
[049] GyroUtils.BaseQuaternion is the reference rotation of the device when the user designates the device to be in the normal and correct position.
[050] FIG. 6 Describes the process that obtains the perspective corrected video stream and UV coordinate data and applies it to a 2D texture on any 2D or 3D game object in the virtual world.
[051]
void VideoUpdate(byte[] videoData)
{
mVideoTexture = new Texure2D(); mVideoTexture.ReadBytes(vldeoData);
mVideoTexture.Apply(); objectRenderer.material.mainTexture = mVideoTexture;
}
[052] FIG. 7 Displays the flow chart of the use of the face detection technology and perspective correction to calculate the location of the two UV points necessary for cropping. The algorithm that accomplishes this is as follows:
[053]
void Updatef)
{
Iffprofifemode =- ProfileMode.Video && mHeadTracker.FaceFound)
//when face is detected, transmit video
{
Quaternion current = GyroUtils.CurrentQuaternion;
Quaternion inverseBase = Quaternion.lnverse(GyroUtils.BaseQuaternlon);
Quaternion compensation = current * inverseBase;
videoFeedTexture = lmageCompensator.Rotatelmage(compensation.eulerAngles); videoFeedData = mHeadTracker.GetFrameData();
mHeadPosltlon = mHeadTracker.GetHeadCoordinates();
Vector2 uvl = new Vector2 (mHeadPosition.xMin / Screen.videoFeedTexture ,
mHeadPosition.yMin /Screen.videoFeedTexture );
Vector2 uv2 = new Vector2 (mHeadPosition.xMax / Screen.videoFeedTexture ,
mHeadPosition.yMax / Screen.videoFeedTexture );
SendToNetworkCVideoUpdate", videoFeedDota, uvl, uv2);
}
} [054] FIG. 8 Describes the process that crops the video stream on the receiving end using the UV points transmitted with the video frame data. The UV points for the rectangular area are calculated and applied on the 2D texture so that the texturing remains centered on the other user's face.
[055]
void VideoUpdate(byte[] videoData, Vector2 coordl, Vector2 coord!)
{
mVideoTexture = new Texure2D();
mVideoTexture.ReadBytes(videoData);
mVideoTexture.Apply(); objectRenderer.mesh.uvs = new Vector2[} {coordl, coord2}; objectRenderer.materiaf.mainTextore = mVideoTexture;
}
[056] FIG. 9 Shows a typical case where face tracking is used as a game object controller 902 in 3D space 903 by knowing the position and rotation of the face 205 detected by the front facing camera or a device such as 202. Face tracking also detects the depth by using the ratio of the size of the area that contains the face compared to the size of the entire captured frame. This is achieved in both portable devices and static displays.
[057] FIG. 10 Displays the flow chart of the use of face tracing technology that uses the portable device's front facing camera to change position and rotation of game objects.
[058] When the face is detected, it is compared to the orientation of the device for rotation calculations, and the size of the face is compared to the size of the captured image frame for depth positioning. The vertical and horizontal positions of the face are obtained based on the pixel positioning of the face area and referenced to the center of the image frame.
[059] When face tracking is used as a game object controller in a virtual environment, the following code controls the panning of a paddle or any 3D object as well as its rotation and distance from the reference frame.
[060] float scaleFactor = If;
float moveSpeed = 20f;
float rotationSpeed = ISf; void Updatef)
{
Vector2 facePositlon = -HeadTracker.newPosltion * scaleFactor;
Vector2 faceSize - HeadTracker.headSize;
Vector2 ImageSize = HeadTracker.imageSize; faceSize = faceSize / ImageSize.magnitude; //normalize the size
float faceDistance = (lf-faceStze.magnitude) * scaleFactor;
Vector3 paddlePosition = new vector3(facePo$ftlonx facePosition.y, faceDistance);
//Headtrackers can detect the angle of the face to a certain degree and we will obtain the //values here.
Vector3 angles = new Vector3(HeadTracker.headYaw, HeadTracker.headPitch,
HeadTracker.headRoll);
Quaternion paddleRotatlon = Quaternion.Euler(angles); //We update the paddle transform data paddleTransform.position = Vector3.Lerp(paddlePosition, paddleTransform.position,
Time.deltaTime * moveSpeed);
paddleTransform.rotation = Quaternion.Slerp(paddleTransform.rotation, paddleRotation,
Time.deltaTime * rotationSpeed);
}
[061] Besides using interpolation methods, it is also calculated using linear vector and quaternion mathematics which calculate the position and rotation.
[062] float scaleFactor = if;
float moveSpeed;
float rotationSpeed; void Updated
{
Vector2 facePosition = -HeadTracker.newPosition * scaleFactor;
Vector2 faceSize = HeadTracker.headSIze;
Vector2 ImageSize = HeadTracker.imageSize; faceSize = faceSize / ImageSize.magnitude; //normalize the size
float faceDistance = (lf-faceSize.magnltude) * scaleFactor;
Vector3 paddlePosition = new Vector3(facePosition.x, facePosition.y, faceDistance);
Vector3 direction = paddlePosition - paddleTransform.position;
moveSpeed = direction.magnltude * lOf; //constant for scaling speed
direction.NormalizeO; //Normalize the direction vector
//Headtrackers can detect the angle of the face to a certain degree and we will obtain the //values here. Vectors angles = new Vector3(HeadTracker.headYaw, HeadTracker.headPitch,
HeadTracker. headRoll);
Quaternion paddleRotation = Quaternion.Euler(angles);
float angle = Quatemion.AnglefpaddleTransform.rotation, paddleRotation);
rotationSpeed = angle * 5f ////constant for scaling rotation speed
//We update the paddle transform data
paddleTransform.Translatefdirectlon * Tlme.deltaTime * moveSpeed); paddleTransformsotation = Quatemion.RotateTowards(paddleTransform.rotation,
paddleRotation, Tlme.deltaTime * rotationSpeed);
}
[063] FIG. 11 Illustrates a way to calibrate the face tracking for any given application. A reference frame which serves as the origin is created by the app so that the user can position the portable device 202 such that a detected moving face of the user 205 by the front facing camera 203 is centered. The calculated size of the rectangular area containing the face in the reference frame is a distance of zero along the Z axis. When moving forward or backward, the detected face's rectangular area will be compared to the reference frame's rectangular size and the change in size will be used to compute the distance along the Z axis to move a game object. Similarly, the reference frame with the face detection's center of the rectangle is considered the origin. The change of position of the calculated center of the rectangle of the detected face is used for panning a game object in both the vertical Y axis direction and the horizontal X axis direction.
[064] To establish a reference frame to be used as the origin in both the perspective correction and the game object controller, the user has to touch the screen 1102 and a picture is taken that will be used as the origin for all movements. Also, the gyroscopes rotation is saved as the quaternion base. A front facing camera with a face within the cameras view is always required for rotation calculations and is already covered in the face detection technologies which are commonly available in standard Apple and Android SDK available for use in this invention. The calibration presented can be customized so that the center and origin point can be anywhere within cameras field of view and devices orientation.
[065] private float baseScale
private Vector! faceCenter;
float scaleFactor = lf; public void Calibratef)
<
Vector2 faceSIze = HeadTracker.headSize;
Vector2 ImageSIze = HeadTracker.imageSize; faceSize / ImageSize.magnitude; //normalize the size
baseScale = faceSize.magnitude; faceCenter = -HeadTracker.newPosltion * scaleFactor;
}
[066] FIG. 12 Shows an example in which motion controls only can provide a wrong input for a game when an action was registered properly. If a user 1202 walks on a sidewalk and turns into a corner, the device 202 will detect a rotation 1204 that will result in a rotation of a game object 1203 in the virtual space. However, since the face tracking has detected that the user has not rotated the device relatively to that face, the code can nullify the influence of the motion controls. This also applies to the case when it is desired to compensate the rotation of the face relative to the portable device so that the texture that is displayed during the video feed always shows the user's face looking at the portable device to give the effect that the user has not moved at all.
[067] Face detection is used to determine if the user's whole body is turning in which case the code will negate the turn input from the accelerometers and gyroscopes based on the positioning of the hand relative to the face. It can also serve as a constant compensator when both motions are detected correctly and correct the speed of rotation of game objects in the virtual space.
[068] FIG. 13 Contains the flow chart that explains how the process is working.
[069] private HeadTracker headTracker;
private MotionDetector motionDetector;
private Quaternion previousRotation;
Void Updatef)
{
Quaternion faceRotation = headTracker.faceRotatbn;
float angles = Quaternion.Angles(faceRotation , previousRotation);
//(angles > 10) // a considerable ammount of rotation of the face
{
Quaternion deviceRotatlon = motionDetector.GetRotationQ;
Transform.rotatlon = deviceRotatlon * Quaternion.lnverseffaceRotatlon);
}
} [070] In one or more embodiments of the present invention there is provided methods and computer algorithms for a mobile device with a front facing camera to use the detected position of the face of the user as a game controller as well as a method of displaying a live stream of only the face with audio within the video within a virtual environment. Using a reference frame which serves as the origin, the subsequent frames of the video are then used to calculate the change of the position of the face which is detected within the video frame, and the calculations of the position, rotation, speed and distance are used to position a game object. Additionally this is a method for having a live video and audio stream textured onto 2D and 3D objects within a virtual environment with only the cropped and centered face being displayed. This provides the viewer of the video stream the appearance of the face as stable and unmoving even when the device's camera and/or user's face are moving relative to each other. Simultaneously, the video, audio and data may be transmitted to other users within the virtual environment allowing the recipient of the live video and data to texture a 2D and 3D object with only the face being displayed from the live video stream. Using existing face detection technologies, our methods compute a rectangular area from a frame captured from the front facing camera of a mobile device to create a texture that will always show the face of the user live streaming with live audio as long as it is within the camera's field of vision. The face of the user will be applied as a live video and audio stream texture with the centered user's face rendering onto a designated 2D or 3D object for use in any application or game, either inside the same user's device or any other user's device that is connected in the same network. The relative position and rotation of the face in relation to the entire picture can then serve as a way to obtain precise position and rotation values for game objects in a virtual environment, making the face a 2D or 3D game object controller within a virtual environment.
[071] From the foregoing and as mentioned above, it is observed that numerous variations and modifications may be effected without departing from the spirit and scope of the novel concept of the invention. It is to be understood that no limitation with respect to the embodiments illustrated herein is intended or should be inferred. It is intended to cover, by the appended claims, all such modifications within the scope of the appended claims.

Claims

We Claim:
1. A method for using a mobile device's front facing camera's video stream which contains a face and performing a perspective crop such that the face is stabilized when the device and camera are moving and then rendering the perspective-cropped face onto a texture of a 2D or 3D game object within a virtual environment.
2. The method of Claim 1, to have the designate reference rotation of the gyroscope's data as the centered position and the perspective crop uses the reference rotation to calculate the offset of the current device's rotation from the reference rotation for use in the perspective crop.
3. The method of Claim 2, further including a method of transmitting the perspective cropped video feed to another device over a network.
4. The method of Claim 3, further including a method of receiving the transmitted perspective cropped video feeds and optionally audio feeds and displaying/rendering them onto the designated texture of the 2D or 3D game object within the virtual environment.
5. The method of Claim 4, wherein the game object may be the virtual avatar of the user with the user's perspective cropped face rendered onto the avatar's face.
6. A method wherein the use of the UV coordinates from the live streaming face detection data function as a joystick or game controller to control the 2D or 3D virtual game objects within a virtual environment.
7. The method of Claim 8, including the step for creating the reference frame and UV coordinates which specify the face detected within the reference frame wherein this data is subsequently used to serve as the origin point for use within the game controller.
8, A method for adjusting the accelerometer and gyroscopic data by using face detection to detect if the user's whole body is moving and calculating a constant compensator to adjust the accelerometer and gyroscopic data relative to the change of position of the device to the user by keeping track of the user's whole bodies' changing position within the world.
PCT/US2015/048552 2014-09-05 2015-09-04 Using a video stream to detect the changing position of a face to move and rotate a game object and to perspective crop the face and display the face WO2016037064A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201462046608P 2014-09-05 2014-09-05
US62/046,608 2014-09-05

Publications (1)

Publication Number Publication Date
WO2016037064A1 true WO2016037064A1 (en) 2016-03-10

Family

ID=55436588

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/US2015/028493 WO2016036425A1 (en) 2014-09-05 2015-04-30 Motion detection for portable devices
PCT/US2015/048552 WO2016037064A1 (en) 2014-09-05 2015-09-04 Using a video stream to detect the changing position of a face to move and rotate a game object and to perspective crop the face and display the face

Family Applications Before (1)

Application Number Title Priority Date Filing Date
PCT/US2015/028493 WO2016036425A1 (en) 2014-09-05 2015-04-30 Motion detection for portable devices

Country Status (3)

Country Link
US (1) US10080956B2 (en)
EP (1) EP3189400A4 (en)
WO (2) WO2016036425A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018140397A1 (en) * 2017-01-25 2018-08-02 Furment Odile Aimee System for interactive image based game
WO2021096982A1 (en) * 2019-11-11 2021-05-20 Manticore Games, Inc. Programmatically configuring materials

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648091A (en) * 2016-12-16 2017-05-10 飞狐信息技术(天津)有限公司 Method and device of simultaneously and accurately responding to gyro and gesture dragging interaction and mobile phone
US10534082B2 (en) 2018-03-29 2020-01-14 International Business Machines Corporation Accessibility of virtual environments via echolocation
US10929982B2 (en) * 2019-01-25 2021-02-23 Google Llc Face pose correction based on depth information
JP7204511B2 (en) * 2019-02-12 2023-01-16 キヤノン株式会社 Electronic device, electronic device control method, program
US11948208B1 (en) 2023-01-19 2024-04-02 Microsoft Technology Licensing, Llc Variable graphical representations based upon graph-node distance

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110049024A (en) * 2009-11-04 2011-05-12 박면진 Charactor controll apparatus
US20110304611A1 (en) * 2010-06-10 2011-12-15 Nintendo Co., Ltd. Storage medium having stored thereon image processing program, image processing apparatus, image processing system, and image processing method
JP2012531658A (en) * 2009-06-25 2012-12-10 サムスン エレクトロニクス カンパニー リミテッド Virtual world processing apparatus and method
US20130016102A1 (en) * 2011-07-12 2013-01-17 Amazon Technologies, Inc. Simulating three-dimensional features
US20130249894A1 (en) * 2012-03-21 2013-09-26 Google Inc. Using Camera Input to Determine Axis of Rotation and Navigation

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3561463B2 (en) * 2000-08-11 2004-09-02 コナミ株式会社 Virtual camera viewpoint movement control method and 3D video game apparatus in 3D video game
KR100469727B1 (en) * 2003-03-07 2005-02-02 삼성전자주식회사 Communication terminal and method capable of displaying face image of user at the middle part of screen
US7489341B2 (en) * 2005-01-18 2009-02-10 Primax Electronics Ltd. Method to stabilize digital video motion
US20090066641A1 (en) * 2005-03-10 2009-03-12 Motus Corporation Methods and Systems for Interpretation and Processing of Data Streams
US7755619B2 (en) * 2005-10-13 2010-07-13 Microsoft Corporation Automatic 3D face-modeling from video
US8182339B2 (en) * 2006-11-14 2012-05-22 Wms Gaming Inc. Wagering game machine with three-dimensional wagering game effects
US8952832B2 (en) * 2008-01-18 2015-02-10 Invensense, Inc. Interfacing application programs and motion sensors of a device
US8696458B2 (en) * 2008-02-15 2014-04-15 Thales Visionix, Inc. Motion tracking system and method using camera and non-camera sensors
US20090219224A1 (en) * 2008-02-28 2009-09-03 Johannes Elg Head tracking for enhanced 3d experience using face detection
US9446308B2 (en) * 2008-10-31 2016-09-20 Gearbox, Llc System and method for game playing using vestibular stimulation
JP5453038B2 (en) * 2008-11-25 2014-03-26 株式会社ジャパンディスプレイ Power supply circuit for display device and display device using the same
US8303412B2 (en) * 2009-03-31 2012-11-06 Nintendo Co., Ltd. Game apparatus and game program
US9174123B2 (en) * 2009-11-09 2015-11-03 Invensense, Inc. Handheld computer systems and techniques for character and command recognition related to human movements
US8416277B2 (en) * 2009-12-10 2013-04-09 Apple Inc. Face detection as a metric to stabilize video during video chat session
US8760392B2 (en) * 2010-04-20 2014-06-24 Invensense, Inc. Wireless motion processing sensor systems suitable for mobile and battery operation
JP5632693B2 (en) * 2010-09-28 2014-11-26 任天堂株式会社 Information processing program, information processing apparatus, information processing method, and information processing system
US8456298B2 (en) * 2010-11-02 2013-06-04 Timo Valtonen Apparatus and method for portable tracking
US8957858B2 (en) * 2011-05-27 2015-02-17 Microsoft Technology Licensing, Llc Multi-platform motion-based computer interactions
US20130107064A1 (en) * 2011-10-27 2013-05-02 Qualcomm Incorporated Sensor aided image stabilization
EP2587416A1 (en) 2011-10-31 2013-05-01 Hewlett-Packard Development Company, L.P. Systems and methods for monitoring compliance status based on time-ordered reference periods
US9022870B2 (en) * 2012-05-02 2015-05-05 Aquimo, Llc Web-based game platform with mobile device motion sensor input

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012531658A (en) * 2009-06-25 2012-12-10 サムスン エレクトロニクス カンパニー リミテッド Virtual world processing apparatus and method
KR20110049024A (en) * 2009-11-04 2011-05-12 박면진 Charactor controll apparatus
US20110304611A1 (en) * 2010-06-10 2011-12-15 Nintendo Co., Ltd. Storage medium having stored thereon image processing program, image processing apparatus, image processing system, and image processing method
US20130016102A1 (en) * 2011-07-12 2013-01-17 Amazon Technologies, Inc. Simulating three-dimensional features
US20130249894A1 (en) * 2012-03-21 2013-09-26 Google Inc. Using Camera Input to Determine Axis of Rotation and Navigation

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018140397A1 (en) * 2017-01-25 2018-08-02 Furment Odile Aimee System for interactive image based game
WO2021096982A1 (en) * 2019-11-11 2021-05-20 Manticore Games, Inc. Programmatically configuring materials
US11043021B2 (en) 2019-11-11 2021-06-22 Manticore Games, Inc. Programmatically configuring materials

Also Published As

Publication number Publication date
EP3189400A1 (en) 2017-07-12
US10080956B2 (en) 2018-09-25
WO2016036425A1 (en) 2016-03-10
US20160067617A1 (en) 2016-03-10
EP3189400A4 (en) 2018-07-04

Similar Documents

Publication Publication Date Title
US10080956B2 (en) Detecting the changing position of a face to move and rotate a game object in a virtual environment
US11592668B2 (en) Image generation apparatus and image generation method using frequency lower than display frame rate
EP3379525B1 (en) Image processing device and image generation method
US8310537B2 (en) Detecting ego-motion on a mobile device displaying three-dimensional content
US9041743B2 (en) System and method for presenting virtual and augmented reality scenes to a user
US11184597B2 (en) Information processing device, image generation method, and head-mounted display
US10969591B2 (en) Image correction apparatus, image correction method and program
US10681276B2 (en) Virtual reality video processing to compensate for movement of a camera during capture
JP2013258614A (en) Image generation device and image generation method
JP2016527583A (en) Method for facilitating computer vision application initialization
US20180224945A1 (en) Updating a Virtual Environment
JP6576536B2 (en) Information processing device
WO2018002882A1 (en) Method and apparatus for rotation and switching of video content
GB2525232A (en) A device orientation correction method for panorama images
WO2019006650A1 (en) Method and device for displaying virtual reality content
JP2007047294A (en) Stereoscopic image display device
US20100253679A1 (en) System for pseudo 3d-information display on a two-dimensional display
KR20170044451A (en) System and Method for Controlling Remote Camera using Head mount display
KR102503337B1 (en) Image display method, apparatus and system
JP7196089B2 (en) Virtual reality video playback method and program using the same
JP6621565B2 (en) Display control apparatus, display control method, and program
JP6518645B2 (en) INFORMATION PROCESSING APPARATUS AND IMAGE GENERATION METHOD
WO2019078833A1 (en) Stabalized and tracked enhanced reality images
CN106257924B (en) Multi-visual angle filming device and multi-visual angle filming method
CN112738404B (en) Electronic equipment control method and electronic equipment

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: 15837821

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 30/06/17)

122 Ep: pct application non-entry in european phase

Ref document number: 15837821

Country of ref document: EP

Kind code of ref document: A1