Google Patent | Enhanced Specular Reflections For Inserted Content
Publication Number: 20190311467
Publication Date: 20191010
Systems and methods for enhanced specular reflections are provided. An example method may include determining a first portion of a specular reflection associated with a computer-generated object based on a first contribution from an environment map component at a shading point of the computer-generated object and determining a second portion of the specular reflection associated with the computer-generated object based on a second contribution from a camera feed component at an intersection point of a camera feed and a reflection vector associated with the environment map component. The example method may further include determining the specular reflection, at the shading point, associated with the computer-generated object based on a blending of the first and second portions of the specular reflection.
CROSS-REFERENCE TO RELATED APPLICATION
 This application is a Continuation of, and claims priority to, U.S. Provisional Patent Application No. 62/653,889, filed on Apr. 6, 2018, entitled “ENHANCED SPECULAR REFLECTIONS FOR INSERTED CONTENT,” the disclosure of which is incorporated by reference herein in its entirety.
 Content may be inserted into an image or a user’s field of view. For example, an augmented reality (AR) system may generate an immersive augmented environment for a user by inserting content. The immersive augmented environment can be generated by superimposing computer-generated content in a user’s field of view of the real world. For example, the computer-generated content can include three-dimensional entities, labels, textual information, images, sprites, etc. These images may be displayed at a position in the user’s field of view so as to appear to overlay an object in the real world. Similarly, the computer-generated content may be overlaid on a displayed image. The lighting applied to the inserted content may impact how well the inserted content fits with the rest of the image.
 This disclosure describes systems and methods for enhanced specular reflections for inserted content. In one implementation, the example method may include determining a first portion of a specular reflection associated with a computer-generated object based on a first contribution from an environment map component at a shading point of the computer-generated object and determining a second portion of the specular reflection associated with the computer-generated object based on a second contribution from a camera feed component at an intersection point of a camera feed and a reflection vector associated with the environment map component. The example method may further include determining the specular reflection, at the shading point, associated with the computer-generated object based on a blending of the first and second portions of the specular reflection.
 The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
 The accompanying drawings, which are included to provide further understanding of the subject technology and are incorporated in and constitute a part of this specification, illustrate disclosed aspects of the subject technology and together with the description serve to explain the principles of the subject technology.
 FIG. 1 is a block diagram illustrating a system according to an example implementation.
 FIG. 2 is a third person view of an example physical space, in which a user is experiencing an AR environment through the example HMD of FIG. 1.
 FIGS. 3A, 3B, and 3C are diagrams depicting an example head-mounted display device and controller, in accordance with implementations as described herein.
 FIG. 4 is a schematic view of a user experiencing the AR environment via an example portable electronic device.
 FIG. 5 is a diagram of an example implementation of enhanced specular reflections, in accordance with implementations described herein.
 FIG. 6 illustrates a flowchart of an example method of determining specular reflections, in accordance with implementations described herein.
 FIG. 7 shows an example of a computer device and a mobile computer device that can be used to implement the techniques described herein.
 Reference will now be made in detail to non-limiting examples of this disclosure, examples of which are illustrated in the accompanying drawings. The examples are described below by referring to the drawings, wherein like reference numerals refer to like elements. When like reference numerals are shown, corresponding description(s) are not repeated and the interested reader is referred to the previously discussed figure(s) for a description of the like element(s).
 Augmented reality (AR) systems include systems that insert computer-generated (CG) content into a user’s perception of the physical space surrounding the user. The computer-generated content may include three-dimensional entities, labels, textual information, images, sprites, three-dimensional entities, etc. In some implementations, the content is inserted for entertainment, educational, or informational purposes.
 An example AR system is a portable electronic device, such as a smartphone, that includes a camera and a display device. The portable electronic device may capture images using the camera and show AR images on the display device that include computer-generated content overlaid upon the images captured by the camera. Another example AR system includes a head-mounted display (HMD) that is worn by a user. The HMD includes a display device that is positioned in front of a user’s eyes. For example, the HMD may occlude the user’s entire field of view so that the user can only see the content displayed by the display device. In some examples, the display device is configured to display two different images, one that is viewable by each of the user’s eyes. For example, at least some of the content in one of the images may be slightly offset relative to the same content in the other image so as to generate the perception of a three-dimensional scene due to parallax. In some implementations, the HMD includes a chamber in which a portable electronic device, such as a smartphone, may be placed so as to permit viewing of the display device of the portable electronic device through the HMD.
 An additional example AR system includes a HMD that permits the user to see the physical space while the HMD is being worn. The HMD may include a micro-display device that displays computer-generated content that is overlaid on the user’s field of view. For example, the HMD may include an at least partially transparent visor that includes a combiner that permits light from the physical space to reach the user’s eye while also reflecting images displayed by the micro-display device toward the user’s eye.
 When computer-generated content is inserted into an image, lighting may be applied to the content so that the content more closely matches the rest of the image. For example, a three-dimensional model may be rendered using light sources or an environmental light map that approximates the light conditions captured in the image. AR systems may need to refresh images displayed to a user in real time at a high rate, for example, 24 frames per second (FPS), 30 FPS, 60 FPS, or another rate. Traditional techniques for determining or estimating lighting in a scene from an image may require so many computations (or processor cycles) that it cannot be performed in an AR system. Some traditional techniques require prior information about the lighting in an environment, which may not be available for many of the environments in which an AR system is used.
 The techniques described herein incorporate details from a camera feed into specular reflections to improve realism of inserted content, e.g., a computer-generated (CG) object. In other words, the techniques describe incorporating details from the camera feed of a device to improve the appearance of an inserted object. In one implementation, the improvements or enhancements may be achieved by using the camera feed (e.g., images, videos, etc.) captured by a device’s camera and incorporating the camera feed (e.g., at least portions of the camera feed) into specular reflections that are rendered on inserted CG objects to enhance the rendered appearance of surfaces that are commonly found in nature.
 A specular reflection may be defined as a type of surface reflection where the angle of reflection is equal to the angle of incidence and where the incident light is reflected (mostly) into a single outgoing direction. Specular reflection occurs for most smooth and polished surfaces, e.g., mirrors, glossy surfaces, and metallic surfaces when light reflects from a surface without absorption and without significant scattering and often revealing visual details from a region of space that is reflected. In order to convincingly render shiny computer-generated objects inserted into a camera feed (e.g., image or video feed), the specular reflections on the surface of the computer-generated object may be captured and the details from the camera feed may be incorporated into the specular reflections to noticeably improve realism of the inserted computer-generated object. This may enhance user immersion and experience, as described in detail below.
 The accurate rendering of specular reflections requires knowledge of incoming light from all directions in the surrounding environment at high angular resolution. As a typical camera on a device covers only a narrow solid angle (e.g., 75.degree. by 35.degree.), all the information that is required or needed (e.g., on which to base reflected radiance) may not be available. However, the information that is available from the camera feed may be blended with a synthetic representation of the lighting environment (e.g., environment map) to improve realism beyond what would otherwise be possible without the techniques described in this disclosure. For instance, the specular reflection may be split or partitioned into two components (e.g., at least two components), an environment map component and a camera feed component. The two components are then blended (e.g., combined) based on a function of an angle between a negated view vector (e.g., a vector in a direction opposite to a view vector) and a surface normal vector. For example, in one implementation, specular reflection for enhancing user experience may be based on determining an environment map component at a shading point of a computer-generated object, determining a camera feed component at an intersection point of a reflection vector associated with the environment map component and a camera feed, and determining a specular reflection (or enhanced specular reflection) at the shading point based on a blending of the environment map component and the camera feed component.
 FIG. 1 is a block diagram illustrating a system 100 according to an example implementation. The system 100 generates an augmented reality (AR) environment for a user of the system 100. In some implementations, the system 100 includes a computing device 102, a head-mounted display device (HMD) 104, and an AR content source 106. Also shown is a network 108 over which the computing device 102 may communicate with the AR content source 106.
 The computing device 102 may include a memory 110, a processor assembly 112, a communication module 114, a sensor system 116, and a display device 118. The memory 110 may include an AR application 120, an AR content 122, an image buffer 124, an image analyzer 126, a lighting engine 128, and a render engine 130. The computing device 102 may also include various user input components (not shown) such as a controller that communicates with the computing device 102 using a wireless communications protocol. In some implementations, the computing device 102 may be a mobile device (e.g., a smart phone) configured to provide or output AR content to a user via the HMD 104. For example, the computing device 102 and the HMD 104 may communicate via a wired connection (e.g., a Universal Serial Bus (USB) cable) or via a wireless communication protocol (e.g., Wi-Fi, BlueTooth, Zigbee, etc.). Additionally or alternatively, the computing device 102 may be a component of the HMD 104 and may be contained within a housing of the HMD 104.
 The memory 110 may include one or more non-transitory computer-readable storage media. The memory 110 may store instructions and data that are usable to generate an AR environment for a user.
 The processor assembly 112 includes one or more devices that are capable of executing instructions, such as instructions stored by the memory 110, to perform various tasks associated with generating an AR environment. For example, the processor assembly 112 may include a central processing unit (CPU) and/or a graphics processor unit (GPU). In some implementations, for example, if a GPU is present, some image/video rendering tasks, such as shading content based on determined lighting parameters, may be offloaded to the GPU.
 The communication module 114 includes one or more devices for communicating with other computing devices, such as the AR content source 106. The communication module 114 may communicate via wireless or wired networks, such as the network 108.
 The sensor system 116 may include various sensors, such as a camera assembly 132. Implementations of the sensor system 116 may also include other sensors, including, for example, an inertial motion unit (IMU) 134, a light sensor, an audio sensor, an image sensor, a distance and/or proximity sensor, a contact sensor such as a capacitive sensor, a timer, and/or other sensors and/or different combination(s) of sensors.
 The IMU 134 detects motion, movement, and/or acceleration of the computing device 102 and/or the HMD 104. The IMU 134 may include various different types of sensors such as, for example, an accelerometer, a gyroscope, a magnetometer, and other such sensors. A position and orientation of the HMD 104 may be detected and tracked based on data provided by the sensors included in the IMU 134. The detected position and orientation of the HMD 104 may allow the system to in turn, detect and track the user’s gaze direction and head movement.
 In some implementations, the AR application may use the sensor system 116 to determine a location and orientation of a user within a physical space and/or to recognize features or objects within the physical space.
 The camera assembly 132 captures images and/or videos of the physical space around the computing device 102. The camera assembly 132 may include one or more cameras. The camera assembly 132 may also include an infrared camera.
 The AR application 120 may present or provide the AR content to a user via the HMD and/or one or more output devices of the computing device 102 such as the display device 118, speakers, and/or other output devices. In some implementations, the AR application 120 includes instructions stored in the memory 110 that, when executed by the processor assembly 112, cause the processor assembly 112 to perform the operations described herein. For example, the AR application 120 may generate and present an AR environment to the user based on, for example, AR content, such as the AR content 122 and/or AR content received from the AR content source 106. The AR content 122 may include content such as images or videos that may be displayed on a portion of the user’s field of view in the HMD 104. For example, the content may be generated with lighting that substantially matches the physical space in which the user is located. The content may include objects that overlay various portions of the physical space. The content may be rendered as flat images or as three-dimensional (3D) objects. The 3D objects may include one or more objects represented as polygonal meshes. The polygonal meshes may be associated with various surface textures, such as colors and images. The polygonal meshes may be shaded based on various lighting parameters.
 The AR application 120 may use the image buffer 124, image analyzer 126, lighting engine 128, and/or render engine 130 to generate images for display via the HMD 104 based on the AR content 122. For example, the AR application 120 may use the image buffer 124, image analyzer 126, lighting engine 128, and/or render engine 130 to determine an environment map component at a shading point of a computer-generated object, determine a camera feed component at an intersection of a reflection vector associated with the environment map component and a camera feed, and determine a specular reflection at the shading point based on a blending of the environment map component and the camera feed component.
 In some implementations, the image buffer 124 is a region of the memory 110 that is configured to store one or more images. In some implementations, the computing device 102 stores images captured by the camera assembly 132 as a texture within the image buffer 124. Alternatively or additionally, the image buffer may also include a memory location that is integral with the processor assembly 112, such as a dedicated random access memory (RAM) on a GPU.
 In some implementations, the image analyzer 126, lighting engine 128, and render engine 130 may include instructions stored in the memory 110 that, when executed by the processor assembly 112, cause the processor assembly 112 to perform operations described herein to generate an image or a series images that are displayed to the user (e.g., via the HMD 104).
 The AR application 120 may update the AR environment based on input received from the camera assembly 132, the IMU 134, and/or other components of the sensor system 116. A position and orientation of the HMD 104 may be detected and tracked based on data provided by the sensors included in the IMU 134. The detected position and orientation of the HMD 104 may allow the system to in turn, detect and track the user’s position and orientation within a physical space. Based on the detected position and orientation, the AR application 120 may update the AR environment to reflect a changed orientation and/or position of the user within the environment.
 Although the computing device 102 and the HMD 104 are shown as separate devices in FIG. 1, in some implementations, the computing device 102 may include the HMD 104. In some implementations, the computing device 102 communicates with the HMD 104 via a cable, as shown in FIG. 1. For example, the computing device 102 may transmit video signals and/or audio signals to the HMD 104 for display for the user, and the HMD 104 may transmit motion, position, and/or orientation information to the computing device 102.
 The AR content source 106 may generate and output AR content, which may be distributed or sent to one or more computing devices, such as the computing device 102, via the network 108. In an example implementation, the AR content includes three-dimensional scenes and/or images. Additionally, the AR content may include audio/video signals that are streamed or distributed to one or more computing devices. The AR content may also include an AR application that runs on the computing device 102 to generate 3D scenes, audio signals, and/or video signals.
 The network 108 may be the Internet, a local area network (LAN), a wireless local area network (WLAN), and/or any other network. A computing device 102, for example, may receive the audio/video signals, which may be provided as part of AR content in an illustrative example implementation, via the network.
 FIG. 2 is a third person view of an example physical space 200, in which a user is experiencing an AR environment 202 through the example HMD 104. The AR environment 202 is generated by the AR application 120 of the computing device 102 and displayed to the user through the HMD 104.
 The AR environment 202 includes inserted content 204 that is displayed over an image of the physical space 200. In an example implementation, the content 204 may be a sphere that is inserted into the AR environment 202. In such an example implementation, a subtle reflection along silhouette edges of shiny surfaces of the sphere that is driven by the camera feed may be introduced to enhance the specular reflections. This works well as the reflection vectors are not too far from the view vector and thereby allowing them to be reasonably approximated from the visible pixels of the camera feed and blended with a synthetic environment map.
 In some implementations, the AR environment 202 is provided to the user as a single image or a pair of stereoscopic images that occupy substantially all of the user’s field of view and are displayed to the user via the HMD 104. In other implementations, the AR environment is provided to the user by displaying/projecting the inserted content 204 on an at least partly transparent combiner that occupies at least a portion of the user’s field of view. For example, portions of the HMD 104 may be transparent, and the user may be able to see the physical space 200 through those portions while the HMD 104 is being worn.
 FIGS. 3A and 3B are perspective views of an example HMD 300, such as, for example, the HMD 104 worn by the user in FIG. 2, and FIG. 3C illustrates an example handheld electronic device 302 for controlling and/or interacting with the HMD 300.