Patent Description:
Developments in the fields of computer technology and communication systems have been seen as a way to fulfill the wish for efficient and natural long-distance communication. Video conferencing systems have been introduced in attempts to provide a natural person-to-person interaction between two or more people. However, they generally rely on two-dimensional (2D) images being presented on a display, which can mean the interaction is not sufficiently lifelike.

The advent of three-dimensional (3D) technology, moreover, has not resulted in a sufficient improvement over the existing 2D approaches. For example, 3D systems can require very complex hardware, such as for capturing the content to be broadcast and/or for processing the content.

<CIT> describes a privacy camera, such as a light field camera that includes an array of cameras or an RGBZ camera(s)) is used to capture images and display images according to a selected privacy mode. The privacy mode may include a blur background mode and a background replacement mode and can be automatically selected based on the meeting type, participants, location, and device type.

The invention is set forth in the independent claims. Specific embodiments are presented in the dependent claims.

Implementations can include any or all of the following features. The criterion includes that the first image content is beyond a predefined depth in the scene. Applying the first shading comprises causing the first image content to be rendered as black. Use of the predefined depth, and applying the first shading, comprises causing a background of the images to be rendered as black. The first shading is dependent on a depth value of the first image content. The criterion includes that the first image content is closer than a predefined depth in the scene. Applying the second shading comprises determining a dot product between the surface normal and a camera vector, and selecting the second shading based on the determined dot product. Applying the second shading comprises fading the second image content to black based on the second image content facing away in the images. The scene contains an object in the images and a first portion of the object has a greater depth value in the depth data than a second portion of the object, and wherein generating the modified 3D information further comprises applying second shading regarding a portion of the images where second image content corresponding to the second portion is located. Applying the second shading comprises selecting the portion of the images based on a portion of a display for presentation of the images. The object comprises a person, the first portion of the object comprises a face of the person, the second portion of the object comprises a torso of the person, and the portion of the display comprises a bottom of the display. The method further comprises identifying a hole in at least one of the images, wherein generating the modified 3D information comprises applying second shading regarding the hole. Generating the modified 3D information further comprises hiding a depth error in the 3D information. The depth data is based on infrared (IR) signals returned from the scene, and wherein generating the modified 3D information comprises applying second shading proportional to a strength of the IR signals. The method further comprises stereoscopically presenting the modified 3D information at the second 3D system, wherein the first image content has the first shading. Stereoscopically presenting the modified 3D information comprises additively rendering the images.

Implementations can include any or all of the following features. The scene contains an object in the images and a first portion of the object has a greater depth value than a second portion of the object, and generating the modified 3D information further comprises applying second shading regarding a portion of the images where second image content corresponding to the second portion is located.

This document describes examples relating to shading of images in a 3D system. Shading can be provided to provide a more lifelike, natural and intuitive appearance of people or other subjects on a 3D display. An artificially created lighting mode can be provided that renders a scene with a natural and intuitive appearance while providing useful technical advantages and improvements. Some implementations can address parallax problems that tend to make backgrounds in 3D images look unnatural. Some implementations can address the amount of hardware required for delivering a quality 3D experience. For example, the practice of using multiple independent 3D content pods in capturing a scene can be addressed. For example, the practice of physically blocking a portion of the 3D screen with a wall can be addressed. For example, the practice of requiring special lighting for capturing a scene in 3D format can be addressed. Some implementations can facilitate high-quality 3D telepresence. Some implementations can provide a true hang-on-the-wall formfactor for a 3D display.

Some implementation can address the amount or complexity of data processing required for delivering a quality 3D experience. For example, the scene that is to be represented in 3D can be provided with a larger capture volume. For example, the need to perform volumetric fusion in 3D data can be reduced or eliminated. For example, the processing relating to secondary aspects of a displayed scene, such as its background, can be reduced or eliminated by shading the background. For example, the amount of bandwidth needed for processing 3D information, such as for providing 3D teleconferencing, can be reduced.

<FIG> shows an example of a 3D content system <NUM>. The 3D content system <NUM> can be used by multiple people. Here, the 3D content system <NUM> is being used by a person <NUM> and a person <NUM>. For example, the persons <NUM> and <NUM> are using the 3D content system <NUM> to engage in a 3D telepresence session. In such an example, the 3D content system <NUM> can allow each of the persons <NUM> and <NUM> to see a highly realistic and visually congruent representation of the other, thereby facilitating them to interact with each other similar to them being in the physical presence of each other.

Each of the persons <NUM> and <NUM> can have a corresponding 3D pod. Here, the person <NUM> has a pod <NUM> and the person <NUM> has a pod <NUM>. The pods <NUM> and <NUM> can provide functionality relating to 3D content, including, but not limited to: capturing images for 3D display, processing and presenting image information, and processing and presenting audio information. The pod <NUM> and/or <NUM> can constitute a collection of sensing devices integrated as one unit. The pod <NUM> and/or <NUM> can include some or all components described with reference to <FIG>.

The 3D content system <NUM> can include one or more 3D displays. Here, a 3D display <NUM> is provided for the pod <NUM>, and a 3D display <NUM> is provided for the pod <NUM>. The 3D display <NUM> and/or <NUM> can use any of multiple types of 3D display technology to provide a stereoscopic view for the respective viewer (here, the person <NUM> or <NUM>, for example). In some implementations, the 3D display <NUM> and/or <NUM> can include a standalone unit (e.g., self-supported or suspended on a wall). In some implementations, the 3D display <NUM> and/or <NUM> can include wearable technology (e.g., a head-mounted display).

The 3D content system <NUM> can be connected to one or more networks. Here, a network <NUM> is connected to the pod <NUM> and to the pod <NUM>. The network <NUM> can be a publicly available network (e.g., the intemet), or a private network, to name just two examples. The network <NUM> can be wired, or wireless, or a combination of the two. The network <NUM> can include, or make use of, one or more other devices or systems, including, but not limited to, one or more servers (not shown).

The pod <NUM> and/or <NUM> can include multiple components relating to the capture, processing, transmission or reception of 3D information, and/or to the presentation of 3D content. The pods <NUM> and <NUM> can include one or more cameras for capturing image content for images to be included in a 3D presentation. Here, the pod <NUM> includes cameras <NUM> and <NUM>. For example, the camera <NUM> and/or <NUM> can be disposed essentially within a housing of the pod <NUM>, so that an objective or lens of the respective camera <NUM> and/or <NUM> captured image content by way of one or more openings in the housing. In some implementations, the camera <NUM> and/or <NUM> can be separate from the housing, such as in form of a standalone device (e.g., with a wired and/or wireless connection to the pod <NUM>). The cameras <NUM> and <NUM> can be positioned and/or oriented so as to capture a sufficiently representative view of (here) the person <NUM>. While the cameras <NUM> and <NUM> should preferably not obscure the view of the 3D display <NUM> for the person <NUM>, the placement of the cameras <NUM> and <NUM> can generally be arbitrarily selected. For example, one of the cameras <NUM> and <NUM> can be positioned somewhere above the face of the person <NUM> and the other can be positioned somewhere below the face. For example, one of the cameras <NUM> and <NUM> can be positioned somewhere to the right of the face of the person <NUM> and the other can be positioned somewhere to the left of the face. The pod <NUM> can in an analogous way include cameras <NUM> and <NUM>, for example.

The pod <NUM> and/or <NUM> can include one or more depth sensors to capture depth data to be used in a 3D presentation. Such depth sensors can be considered part of a depth capturing component in the 3D content system <NUM> to be used for characterizing the scenes captured by the pods <NUM> and/or <NUM> in order to correctly represent them on a 3D display. Also, the system can track the position and orientation of the viewer's head, so that the 3D presentation can be rendered with the appearance corresponding to the viewer's current point of view. Here, the pod <NUM> includes a depth sensor <NUM>. In an analogous way, the pod <NUM> can include a depth sensor <NUM>. Any of multiple types of depth sensing or depth capture can be used for generating depth data. In some implementations, an assisted-stereo depth capture is performed. The scene can be illuminated using dots of lights, and stereomatching can be performed between two respective cameras. This illumination can be done using waves of a selected wavelength or range of wavelengths. For example, infrared (IR) light can be used. Here, the depth sensor <NUM> operates, by way of illustration, using beams 128A and <NUM>. The beams 128A and 128B can travel from the pod <NUM> toward structure or other objects (e.g., the person <NUM>) in the scene that is being 3D captured, and/or from such structures/objects to the corresponding detector in the pod <NUM>, as the case may be. The detected signal(s) can be processed to generate depth data corresponding to some or the entire scene. As such, the beams 128A-B can be considered as relating to the signals on which the 3D content system <NUM> relies in order to characterize the scene(s) for purposes of 3D representation. For example, the beams 128A-B can include IR signals. Analogously, the pod <NUM> can operate, by way of illustration, using beams 130A-B.

Depth data can include or be based on any information regarding a scene that reflects the distance between a depth sensor (e.g., the depth sensor <NUM>) and an object in the scene. The depth data reflects, for content in an image corresponding to an object in the scene, the distance (or depth) to the object. For example, the spatial relationship between the camera(s) and the depth sensor can be known, and can be used for correlating the images from the camera(s) with signals from the depth sensor to generate depth data for the images.

In some implementations, depth capturing can include an approach that is based on structured light or coded light. A striped pattern of light can be distributed onto the scene at a relatively high frame rate. For example, the frame rate can be considered high when the light signals are temporally sufficiently close to each other that the scene is not expected to change in a significant way in between consecutive signals, even if people or objects are in motion. The resulting pattern(s) can be used for determining what row of the projector is implicated by the respective structures. The camera(s) can then pick up the resulting pattern and triangulation can be performed to determine the geometry of the scene in one or more regards.

The images captured by the 3D content system <NUM> can be processed and thereafter displayed as a 3D presentation. Here, 3D image <NUM>' is presented on the 3D display <NUM>. As such, the person <NUM> can perceive the 3D image <NUM>' as a 3D representation of the person <NUM>, who may be remotely located from the person <NUM>. 3D image <NUM>' is presented on the 3D display <NUM>. As such, the person <NUM> can perceive the 3D image <NUM>' as a 3D representation of the person <NUM>. Examples of 3D information processing are described below.

The 3D content system <NUM> can allow participants (e.g., the persons <NUM> and <NUM>) to engage in audio communication with each other and/or others. In some implementations, the pod <NUM> includes a speaker and microphone (not shown). For example, the pod <NUM> can similarly include a speaker and a microphone. As such, the 3D content system <NUM> can allow the persons <NUM> and <NUM> to engage in a 3D telepresence session with each other and/or others.

<FIG> shows an example of a 3D content system <NUM>. The 3D content system <NUM> can serve as or be included within one or more implementations described herein, and/or can be used to perform the operation(s) of one or more examples of 3D processing or presentation described herein. The overall 3D content system <NUM> and/or one or more of its individual components, can be implemented according to one or more examples described below with reference to <FIG>.

The 3D content system <NUM> includes one or more 3D systems <NUM>. Here, 3D systems 202A, 202B through 202N are shown, where the index N indicates an arbitrary number. The 3D system <NUM> can provide for capturing of visual and audio information for a 3D presentation, and forward the 3D information for processing. Such 3D information can include images of a scene, depth data about the scene, and audio from the scene, to name just a few examples. For example, the 3D system <NUM> can serve as, or be included within, the pod <NUM> and 3D display <NUM> (<FIG>).

The 3D content system <NUM> includes multiple cameras <NUM>. Any type of light-sensing technology can be used for capturing images, such as the types of images sensors used in common digital cameras. The cameras <NUM> can be of the same type or different types.

The 3D content system <NUM> includes a depth sensor <NUM>. In some implementations, the depth sensor <NUM> operates by way of propagating IR signals onto the scene and detecting the responding signals. For example, the depth sensor <NUM> can generate and/or detect the beams 128A-B.

The 3D content system <NUM> includes at least one microphone <NUM> and a speaker <NUM>. For example, these can be integrated into a head-mounted display worn by the user.

The 3D content system <NUM> includes a 3D display <NUM> that can present 3D images in a stereoscopic fashion. In some implementations, the 3D display <NUM> can be a standalone display and in some other implementations the 3D display <NUM> can be included in a head-mounted display unit configured to be work by a user to experience a 3D presentation. Such implementations can operate in accordance with examples described with reference to <FIG>.

In some implementations, the 3D display <NUM> operates using parallax barrier technology. For example, a parallax barrier can include parallel vertical stripes of an essentially non-transparent material (e.g., an opaque film) that are placed between the screen and the viewer. Because of the parallax between the respective eyes of the viewer, different portions of the screen (e.g., different pixels) are viewed by the respective left and right eyes.

In some implementations, the 3D display <NUM> operates using lenticular lenses. For example, alternating rows of lenses can be placed in front of the screen, the rows aiming light from the screen toward the viewer's left and right eyes, respectively.

In some implementations, the 3D display <NUM> can include a head-mounted display (e.g., as described with reference to <FIG>). For example, the head-mounted display can use different displays for, or different parts of a display directed toward, the respective eyes, thereby providing a stereoscopic view of 3D images.

The 3D content system <NUM> can include a server <NUM> that can perform certain tasks of data processing, coordination and/or data transmission. The server <NUM> and/or components thereof can include some or all components described with reference to <FIG>.

The server <NUM> includes a 3D content module <NUM> that can be responsible for handling 3D information in one or more ways. This can include receiving 3D content (e.g., from the 3D system 202A), processing the 3D content and/or forwarding the (processed) 3D content to another participant (e.g., to another of the 3D systems <NUM>).

Some aspects of the functions performed by the 3D content module <NUM> can be implemented for performance by a shading module <NUM>. The shading module <NUM> can be responsible for applying shading regarding certain portions of images (e.g., to cause a background to be rendered as black), and also performing other services relating to images that have been, or are to be, provided with shading. For example, the shading module <NUM> can be utilized to counteract or hide some artifacts that may otherwise be generated by the 3D system(s) <NUM>.

Shading refers to one or more parameters that define the appearance of image content, including, but not limited to, the color of an object, surface, and/or a polygon in the image. In some implementations, shading can be applied to, or adjusted for, one or more portions of image content to change how those image content portion(s) will appear to a viewer. For example, shading can be applied/adjusted in order to make the image content portion(s) darker or black.

The shading module <NUM> can include a depth processing component <NUM>. In some implementations, the depth processing component <NUM> can apply shading to image content based on one or more depth values associated with that content. For example, shading can be applied to all content having depth values beyond a predetermined depth. This can allow the depth processing component <NUM> to cause essentially an entire background (e.g., the scene behind the person <NUM> (<FIG>) to be rendered as black, to name one example.

The shading module <NUM> can include an angle processing component <NUM>. In some implementations, the angle processing component <NUM> can apply shading to image content based on that content's orientation (e.g., angle) with respect to the camera capturing the image content. For example, shading can be applied to content that faces away from the camera angle by more than a predetermined degree. This can allow the angle processing component <NUM> to cause brightness to be reduced and faded out as a surface turns away from the camera, to name just one example.

The shading module <NUM> can include a bottom processing component <NUM>. In some implementations, the bottom processing component <NUM> can apply shading to image content based on that content's placement on the 3D display. For example, shading can be applied to content toward the bottom of the 3D display (hence the name bottom). This can allow the bottom processing component <NUM> to fade out, say, the lower torso of a person (e.g., the person <NUM> in <FIG>) before the bottom end of the 3D display, to name just one example. Shading can also or instead be performed toward any other portion of the 3D display, such as toward the top, the right side, and/or the left side.

The shading module <NUM> can include a hole filling component <NUM>. In some implementations, the hole filling component <NUM> can detect and apply shading to one or more holes in the image content to give a better 3D experience. Shading can be applied where image content is missing. A hole can exist in an image because image content is absent or does not exist in a part of the image. When images representing different views of a scene are stitched together the resulting image may have one or more holes where neither of the cameras has captured image content. As such, the hole filling component <NUM> can compensate for holes that occur because the cameras did not have sufficient views of the subject, to name just one example.

The shading module <NUM> can include a depth error component <NUM>. In some implementations, the depth error component <NUM> can detect and apply shading to one or more areas of the image content where depth information is insufficient or missing. For example, shading can be applied to image content having poor IR reflectance. This can allow the depth error component <NUM> to compensate for shiny objects in the scene, to name just one example.

The shading module <NUM> can include a rendering component <NUM>. In some implementations, the rendering component <NUM> can cause image content to be additively rendered on the 3D display. This can allow the rendering component <NUM> to avoid anomalous renderings where some image information is missing, to name just one example.

The exemplary components above are here described as being implemented in the server <NUM>, which can communicate with one or more of the 3D systems <NUM> by way of a network <NUM> (which can be similar or identical to the network <NUM> in <FIG>). In some implementations, the 3D content module <NUM>, the shading module <NUM> and/or the components thereof, can instead or in addition be implemented in some or all of the 3D systems <NUM>. For example, the above-described processing can be performed by the system that originates the 3D information before forwarding the 3D information to one or more receiving systems. As another example, an originating system can forward images, depth data and/or corresponding information to one or more receiving systems, which can perform the above-described processing. Combinations of these approaches can be used.

As such, the 3D content system <NUM> is an example of a system that includes cameras (e.g., the cameras <NUM>); a depth sensor (e.g., the depth sensor <NUM>); and a 3D content module (e.g., the 3D content module <NUM>) having a processor executing instructions stored in a memory. Such instructions can cause the processor to identify, using depth data included in 3D information (e.g., by way of the depth processing component <NUM>), first image content in images of a scene included in the 3D information. The first image content can be identified as being associated with a depth value that satisfies a criterion. The processor can generate modified 3D information by applying first shading regarding the identified first image content.

As such, the 3D content system <NUM> is an example of a system that includes cameras (e.g., the cameras <NUM>); a depth sensor (e.g., the depth sensor <NUM>); and a 3D content module (e.g., the 3D content module <NUM>) having a processor executing instructions stored in a memory (e.g., the angle processing component <NUM>), the memory having stored therein 3D information including images and depth data of a scene, the images including an object, the instructions causing the processor to determine a surface normal for first image content of the object, and to generate modified 3D information by applying first shading regarding the first image content based on the determined surface normal.

As such, the 3D content system <NUM> is an example of a system that includes cameras (e.g., the cameras <NUM>); a depth sensor (e.g., the depth sensor <NUM>); and a 3D content module (e.g., the 3D content module <NUM>) having a processor executing instructions stored in a memory (e.g., the bottom processing component <NUM>), the memory having stored therein 3D information including images and depth data of a scene, the images including an object, wherein a first portion of the object has a greater depth value than a second portion of the object, the instructions causing the processor to generate modified 3D information by applying first shading regarding a portion of the images where first image content corresponding to the first portion is located.

<FIG> shows an example of shading based on depth. This example involves images captured of a scene which are being used to make a 3D presentation on a 3D display. Here, a plane <NUM> of the 3D display is indicated. Persons <NUM>, <NUM> and <NUM> in the scene are also indicated for purposes of explaining how the image content representing the scene can be processed in order to make the 3D presentation in the plane <NUM> of the 3D display. The persons <NUM>-<NUM> can be any other type of object or structure in another example.

Here, a portion <NUM>' of the torso of the person <NUM> is seen to be closer to a viewer than the plane <NUM> of the 3D display. The 3D image is here rendered so that the viewer perceives the portion <NUM>' to be in front of the plane <NUM>. For example, a portion <NUM>" of the torso of the person <NUM> can be said to have a depth value <NUM> (depth values are here schematically indicated as arrows) relative to the plane <NUM>. The person <NUM>, moreover, can be said to have (at least one) depth value <NUM> relative to the plane <NUM>. Strictly speaking, various parts of the person <NUM> have different depth values relative to the plane <NUM>, but only the depth value <NUM> is shown here for simplicity. Finally, the person <NUM> can in a similarly simplified sense be considered as having (at least) a depth value <NUM> relative to the plane <NUM>. The person <NUM> can here be said to be at the forefront of the scene depicted on the 3D display, and the persons <NUM> and <NUM> can be said to be in the background thereof. Image content in the background can be processed differently in a 3D presentation, which will be described in examples below.

To make a quality 3D presentation, the parallax based on the viewer's current position is taken into account. As such, the rendering of the 3D images changes based on whether the viewer moves his or head to the left or right, or up or down, to name just a few examples. However, the head-tracking technology may not represent the position of the viewer's eyes perfectly, but rather as an approximation. Also, some latency can be introduced as certain calculations are made before the 3D presentation can be updated. Some existing systems have therefore been associated with what can be referred to as "swimminess" in the background or a shakiness in the perceived location. For example, while a viewer who moves relative to the 3D display may expect the background to remain relative fixed, due to the above imperfect head-tracking and/or the latency the viewer may instead see movement in the background. This can be somewhat distracting to the viewer and their experience of the 3D presentation can suffer as a result.

These and/or other shortcomings can be addressed, for example using the depth processing component <NUM> (<FIG>). In some implementations, a threshold value <NUM> is defined (e.g., a predefined depth) for applying shading. Image content corresponding to objects exceeding the threshold value can be shaded in one or more ways. The depth can be measured in either or both directions with regard to the plane <NUM>. Applying the shading can involve rendering everything located beyond the threshold value <NUM> as black, to name one example. As such, the parts of the scene that are behind the person <NUM> from the viewer's perspective, including the persons <NUM> and <NUM>, can be rendered black.

In some implementations, different shadings can be applied based on the respective depth values. For example, the person <NUM> having the depth value <NUM> can be provided with a different shading (e.g., darker shading or black shading) than the person <NUM> having the depth value <NUM>. As such, the shading of a given image content can be dependent on the depth value associated with that image content. This can address the "swimminess" situation in a way that creates a natural appearance of the scene in the 3D image, akin to, say, if the person <NUM> were illuminated by a bright spotlight that left the rest of the scene dark or shadowed.

<FIG> shows an example of shading based on surface orientation. Here, a person <NUM> is presented in relation to the plane <NUM> of the 3D display. In another example, any other object or structure than a person can instead or additionally be involved. Some portions of the image of the person <NUM> will be discussed as examples. Here, the person <NUM> includes an image portion <NUM> (e.g., on the front of the torso of the person <NUM>) and an image portion <NUM> (e.g., on the shoulder of the person <NUM>). Each image portion of the person <NUM>, including the image portions <NUM> and <NUM>, is associated with a direction from where the capturing camera received the light that came to form the respective image portions. Assuming that the image of the person <NUM> is captured by a single camera, the image portion <NUM> can be said to be associated with a camera vector <NUM> and the image portion <NUM> can be said to be associated with a camera vector <NUM>, the camera vectors <NUM> and <NUM> being directed toward the same point in space (i.e., towards the light sensor of the camera.

Each image portion of the person <NUM>, including the image portions <NUM> and <NUM>, is associated with a surface normal which is perpendicular to the plane of the surface at that image portion. The image portion <NUM> can be said to be associated with a surface normal <NUM> and the image portion <NUM> can be said to be associated with a surface normal <NUM>. Here, the surface normals <NUM> and <NUM> indicate that the image portion <NUM> faces away from the camera more than what the image portion <NUM> does.

Shading can be applied to an image portion based on the surface normal of that image portion. In some implementations, a dot product can be evaluated. The shading can be added in the texture (e.g., in an RGB texture) by modifying one or more values. For example, if the dot product of the camera vector <NUM> and the surface normal <NUM> is (close to) zero, then the image portion <NUM> can be rendered (essential) as black. For example, if the dot product of the camera vector <NUM> and the surface normal <NUM> is (close to) one, then the image portion <NUM> can be rendered with (essentially) no fading. As such, in some implementations image portions can be faded to a greater extent the more they face away from the direction of the camera. This can create the lighting effect that an object becomes gradually less bright (e.g., is shaded more toward black) at its periphery (e.g., toward the silhouette of a person). In some implementations, the angle processing component <NUM> (<FIG>) can perform these operations. The application of shading can be based on a threshold (e.g., shade only if the dot product is below a certain value) or it can be progressive (e.g., shade more the lower the dot product is). This can simplify the data processing and can reduce the need to have many cameras to capture different perspectives. This lighting protocol can create natural impression for the viewer, for example when the background is rendered in a particular shading (e.g., as black).

<FIG> shows an example of shading based on display position. It has been mentioned in other examples that image portions can be associated with depth values based on where in the scene the corresponding object (or part of the object) is located. The 3D presentation can then give the viewer the impression of depth based on such depth values. In some situations, however, unintuitive or seemingly paradoxal effects can result.

Here, a person <NUM> is shown relative to the plane <NUM> of the 3D display. The 3D presentation may be performed in such a way that a face <NUM> of the person <NUM> (here schematically illustrated as an oval) lies in the plane <NUM> of the 3D display. That is, the viewer looking at the 3D presentation will see the face <NUM> at the depth of the plane <NUM>, which corresponds to the physical surface of the 3D display (e.g., approximately where the light-emitting elements are in certain types of display technology). Some other portion of the scene may, however, be positioned at a lesser depth than the face <NUM>. Here, a portion <NUM> of the torso of the person <NUM> is positioned further forward (i.e., closer toward the viewer) than both the face <NUM> and the plane <NUM> of the 3D display.

The 3D presentation of the person <NUM> is however limited by the size of the 3D display. As such, a lower edge <NUM> of the 3D display will serve as the lower boundary of all image content in the 3D presentation. Particularly, a portion <NUM>' of the lower edge <NUM> effectively cuts off the lowermost region of the portion <NUM> of the torso of the person <NUM> so that only the regions of the portion <NUM> that are above the portion <NUM>' are visible. The problem arises because the portion <NUM>' by definition is situated in the plane <NUM> of the 3D display, and a lowermost region <NUM>' of the portion <NUM> is situated in front of the plane <NUM>. That is, the lowermost region <NUM>' is being blocked by the portion <NUM>' although the portion <NUM>' appears as if it is behind the lowermost region <NUM>' in the 3D display. This can be visually unintuitive and therefore distracting to the viewer. In some existing approaches, a physical wall has been placed between the viewer and the 3D display to counteract this problem.

Shading can be applied to image content in one or more portions of the 3D image. This can be done by the bottom processing component <NUM>, for example. In some implementations, shading can be applied according to a direction <NUM>. For example, the 3D image of the person <NUM> can be faded (e.g., toward black) toward the bottom of the 3D display. This can address the above-described problem in that the lowermost region <NUM>' may no longer be visible and no contradiction appears to the viewer between the lowermost region <NUM>' and the portion <NUM>' of the lower edge <NUM>. As such, some approaches can provide a quality 3D experience without a physical wall blocking portions of the 3D display. The 3D display can therefore be implemented with a hang-on-the-wall formfactor.

<FIG> show an example of shading a background of a 3D image <NUM>. Here, the scene as shown in <FIG> includes a person <NUM> (in the foreground) having a lower torso region <NUM>', and objects <NUM> and <NUM> (in the background). Processing of the captured image(s) can be performed so that the 3D presentation is visually pleasing and free of anomalies. For example, such processing can be done by the 3D content module <NUM> in <FIG> (e.g., by the shading module <NUM> thereof).

<FIG> shows an example of a 3D image <NUM>' that can be presented after processing of the 3D image <NUM> in <FIG>. The 3D image <NUM>' shows the person <NUM> against a background <NUM> that can be based on applied shading. For example, the background <NUM> can be rendered as black, leaving only the person <NUM> (and not the objects <NUM> and <NUM>) visible in the 3D image <NUM>'. In particular, the lower torso region <NUM>' has here been faded to avoid inconsistencies with the edges of the 3D image <NUM>'. This result can be visually consistent to the viewer, for example in that the impression can be given that the person <NUM> is appearing in spotlight illumination, whereas certain areas (e.g., the background and the bottom of the torso) are not covered by the spotlight and therefore appear as black.

The present example and other descriptions herein sometime refer to an operation as adding a particular shading to image content as part of processing 3D information. To add shading to image content can mean to change one or more shading values of the image content. In some situations, to add shading can involve modifying a texture to have a different shading value (e.g., to make the texture appear black). In other situations, existing image content that is to be modified (e.g., to make the image content black) can be removed from the image and be replaced by content having the desired characteristic (e.g., non-black content such as a background can be replaced with black content in order to hide the background).

The processing that generates the 3D image <NUM>' based on the 3D image <NUM> can provide other advantages. In existing systems for providing 3D presentations where multiple systems of cameras has been applied, volumetric fusion has been performed to generate a visually consistent scene that can be rendered on a 3D display. The volumetric fusion has served to logically fuse the image contents from multiple 3D systems into a coherent unit, which has required the definition of a fusion volume within which objects and structures should be confined in order to be rendered in the 3D image. As such, the capture volume of the cameras (of multiple 3D systems) have generally needed to be confined to the fusion volume. This may have caused the effect that if someone, say, extended their arm outside the fusion volume, the arm may have "disappeared" in the 3D rendering because it went outside the capture volume.

When anomalies and other complexities in the image content of the 3D presentation are addressed according to one or more of the examples described herein, this can also reduce or eliminate the need to perform volumetric fusion. For example, only one pod (e.g., the pod <NUM> in <FIG>) may be needed for capturing image content and depth data to generate a quality 3D presentation. The spatial locations and/or orientations of the cameras of that pod can all be known with certainty (e.g., because the cameras are fixed within a housing) and so there may be no need to perform the complex operations of volumetric fusion in order to properly render the 3D images. As such, the capture volume need no longer conform to any fusion volume and can therefore be larger than before. One advantageous result is that a person's arm that is being extended may no longer "disappear" from view and perhaps cause a hole to appear in the image. For example, the arm may instead be rendered as dark or black, which can appear natural if the rest of the person is rendered as if illuminated by a spotlight.

<FIG> shows an example of hole-filling in a 3D image. When the cameras captures the images of a person <NUM> for a 3D presentation, at least one hole <NUM> can result. Holes can appear in various parts of an image, but may generally be more common in areas that are more difficult for the cameras to "see," such as in crevices, folds and in an open mouth, to name a few examples. The hole <NUM> is here located between the head and shoulder of the person <NUM>.

When the 3D image is being rendered to a viewer, the hole <NUM> can give rise to an anomalous result. For example, image content that is spatially behind the hole <NUM>, such as part of the background in the scene, can instead appear in the place of the hole <NUM>. The hole <NUM> can be the result of not having enough coverage in the capture of the scene. In existing systems, this sometimes leads to the use of a larger number of cameras.

Processing of 3D information can be performed, such as by the hole filling component <NUM> in <FIG>) to address the above or other situations. In some implementations, the hole <NUM> can be provided with shading. For example, the hole <NUM> can be rendered as black in the 3D image. This can provide a quality 3D experience for the viewer, for example in that it may appear as if the (now-darkened) area of the hole <NUM> is merely shadowed (e.g., hidden in darkness) due to some relatively intense spotlight illumination of the person <NUM>. As such, the problem of spatially rearward content (e.g., background) unintentionally appearing through the hole <NUM> can be eliminated. As another example, the need to introduce more cameras to provide better coverage of a 3D scene can be reduced or eliminated.

<FIG> shows an example of correcting depth error in a 3D image. The 3D image includes a person <NUM> shown in reference to the plane <NUM> of the 3D display. The depth capture within a scene for a 3D presentation can make use of technology such as the depth sensor <NUM> (<FIG>), which can operate by way of IR signals (e.g., the beams 128A-B in <FIG>). The depth sensing can be based on the ability to reflect IR waves off the surfaces of objects in the scene and detect the returning signals. Different materials can have different reflectivity for IR signals. Some materials can have a relatively good reflectance for IR signals and the depth capture for them may be straightforward. Here, a portion <NUM> (e.g., on the clothing of the person <NUM>) has relatively good IR reflectivity. Other materials, however, can have poor reflectivity for IR signals. Hair, shiny metal and leather are just a few examples. As a result, such materials may provide only a poor (or no) depth data. As such, the confidence in the validity of the determined depth value(s) may be low (or no result may be obtained). Here, a portion <NUM> (e.g., on the hair of the person <NUM>) can have relatively poor IR reflectivity.

3D information can be processed to address these and/or other situations. For example, depth errors can be hidden through operations performed by the depth error component <NUM> (<FIG>). In some implementations, shading can be applied based on a strength of the returned IR signal. For example, a weighting of the shading can be caused to drop off until zero for areas with poor IR reflectivity. In some implementations, shading can be applied based on the confidence in the determined depth value. For example, areas with poor (or no) depth values can be rendered as black. As another example, areas with poor (or no) depth values can be rendered transparent. Here, the portion <NUM> can be rendered as black/transparent. The portion <NUM>, by contrast, can be rendered in accordance with the captured image information.

<FIG>show an example of additively rendering a 3D image <NUM>. In some situations, image content captured from a scene can have characteristics that present challenges in generating a quality 3D presentation, as has also been illustrated in other examples herein. For example, if a particular structure in the scene is not sufficiently illuminated or is otherwise not fully captured by the camera(s), the result can be that only little or no geometry can be determined for that structure. This means that the 3D system may not have a meaningful way of determining what is present at that location, which in turn raises the question of how content should be rendered in such a situation. For example, if only the rearward content be rendered-that is, the structure that is positioned behind the missing feature-this may be unintuitive to the viewer and as a result not provide a natural appearance.

Here, the 3D image <NUM> in <FIG> includes an object <NUM> which is positioned in front of an object <NUM>, which in turn is positioned in front of an object <NUM>. The 3D image <NUM> is schematically illustrated in a perspective view for clarity of the spatial arrangement. Assume, for example, that image content corresponding to the object <NUM> is partially missing. This situation can be addressed in an advantageous way by additively rendering the objects <NUM>-<NUM>. For example, this can be done by way of processing performed by the rendering component <NUM> (<FIG>).

<FIG> shows a 3D image <NUM>' rendered based on the 3D image <NUM>. The 3D image <NUM>' is here shown in a plan view for purpose of illustration. The 3D image <NUM>' includes an object <NUM>' ' positioned in front of an object <NUM>' positioned in front of an object <NUM>'. The objects <NUM>', <NUM>' and <NUM>' are rendered additively. That is, the (available) image content of the objects <NUM>-<NUM> (<FIG>) have been added to each other in generating the 3D image <NUM>'. As such, occlusions are not accounted for in rendering the 3D image <NUM>'. Rather depth values can be ignored. Also, the rendering of the objects <NUM>', <NUM>' and <NUM>' can be done in any order. The appearance of the 3D image <NUM>' can be more appealing to a viewer. For example, the viewer may simply accept the fact that objects appear transparently.

Some examples described herein can be combined. In some implementations, two or more of the approaches described herein with reference to <FIG>, <FIG>, <FIG>, <FIG> and/or 9B can be combined. For example, shading based on depth (e.g., as described with regard to <FIG>) can be combined with shading based on surface orientation (e.g., as described with regard to <FIG>). For example, shading based on depth (e.g., as described with regard to <FIG>) can be combined with shading based on display position (e.g., as described with regard to <FIG>). For example, shading based on surface orientation (e.g., as described with regard to <FIG>) can be combined with shading based on display position (e.g., as described with regard to <FIG>). For example, hole-filling (e.g., as described with regard to <FIG>) can be combined with shading based on depth, with shading based on surface orientation, and/or with shading based on display position. For example, correcting depth error (e.g., as described with regard to <FIG>) can be combined with shading based on depth, with shading based on surface orientation, and/or with shading based on display position. For example, additive rendering (e.g., as described with regard to <FIG>) can be combined with shading based on depth, with shading based on surface orientation, and/or with shading based on display position.

<FIG> show examples of methods <NUM>, <NUM> and <NUM>, respectively. The methods <NUM>, <NUM> and/or <NUM> can be performed by way of a processor executing instructions stored in a non-transitory storage medium. For example, some or all of the components described with reference to <FIG> can be used. More or fewer operations than shown can be performed. Two or more of the operations can be performed in a different order. In the following, some features from other figures herein are referred to as illustrative examples.

Beginning with the method <NUM>, at <NUM>3D information can be received. For example, the 3D content module <NUM> can receive images and depth data from the pod <NUM>.

At <NUM>, image content can be identified. In some implementations, image content is identified as being associated with a depth value that satisfies a criterion. For example, the depth sensor <NUM> can indicate that the objects <NUM> and <NUM> are in the background.

At <NUM>, modified 3D information can be generated. In some implementations, the shading module <NUM> can apply one or more modules to modify 3D information. For example, the modified 3D information can correspond to the image <NUM>', in which the background and part of the person <NUM> have been provided with shading to be rendered as black or dark.

At <NUM>, the modified 3D information can be provided to one or more other systems or entities. For example, the server <NUM> or the 3D system 202A can provide the modified 3D information to the 3D system 202B.

At <NUM>, 3D images can be stereoscopically presented based on the modified 3D information. In some implementations, the pod <NUM> can make a 3D presentation in which the person in the 3D image <NUM>' appears as if illuminated by spotlight against a black background. For example, this can be done as part of a 3D telepresence session in which the persons <NUM> and <NUM> participate.

Turning now to the method <NUM>, at <NUM>3D information can be received. For example, this can be done in analogy with the corresponding operation in the method <NUM>.

At <NUM>, a surface normal can be determined. For example, the shading module <NUM> can determine the surface normal <NUM> and/or <NUM>.

At <NUM>, modified 3D information can be generated by applying shading to image content based on the determined surface normal. For example, the image portion <NUM> can be shaded so as to be rendered as black.

At <NUM>, the modified 3D information can be provided, and at <NUM>3D images can be stereoscopically presented. For example, this can be done in analogy with the corresponding operations in the method <NUM>.

Finally in the method <NUM>, at <NUM>3D information can be received. For example, this can be done in analogy with the corresponding operation in the method <NUM>.

At <NUM>, modified 3D information can be generated by applying shading to a portion of an image where image content corresponding to a certain portion is located. In some implementations, this can involve shading toward a particular side or area of the 3D display. For example, shading can be applied so that image content fades out toward the bottom of the 3D display.

<FIG> shows an example of a computer device <NUM> and a mobile computer device <NUM>, which may be used with the described techniques. Computing device <NUM> can include a processor <NUM>, memory <NUM>, a storage device <NUM>, a high-speed interface <NUM> connecting to memory <NUM> and high-speed expansion ports <NUM>, and a low speed interface <NUM> connecting to low speed bus <NUM> and storage device <NUM>. Components <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>, are interconnected using various busses, and can be mounted on a common motherboard or in other manners as appropriate. Processor <NUM> can process instructions for execution within the computing device <NUM>, including instructions stored in the memory <NUM> or on storage device <NUM> to display graphical information for a GUI on an external input/output device, such as display <NUM> coupled to high speed interface <NUM>. In some embodiments, multiple processors and/or multiple buses can be used, as appropriate, along with multiple memories and types of memory. In addition, multiple computing devices <NUM> can be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).

Memory <NUM> stores information within computing device <NUM>. In one embodiment, memory <NUM> is a volatile memory unit or units. In another embodiment, memory <NUM> is a non-volatile memory unit or units. Memory <NUM> may also be another form of computer-readable medium, such as a magnetic or optical disk.

Storage device <NUM> is capable of providing mass storage for the computing device <NUM>. In one embodiment, storage device <NUM> can be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. The computer program product may also contain instructions that, when executed, perform one or more methods, such as those described herein. The information carrier is a computer- or machine-readable medium, such as memory <NUM>, storage device <NUM>, or memory on processor <NUM>.

High speed controller <NUM> manages bandwidth-intensive operations for computing device <NUM>, while low speed controller <NUM> manages lower bandwidth-intensive operations. In one embodiment, high-speed controller <NUM> is coupled to memory <NUM>, display <NUM> (e.g., through a graphics processor or accelerator), and to high-speed expansion ports <NUM>, which may accept various expansion cards (not shown). Low-speed controller <NUM> can be coupled to storage device <NUM> and low-speed expansion port <NUM>. The low-speed expansion port, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) can be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.

Computing device <NUM> can be implemented in a number of different forms, as shown in the figure. For example, it can be implemented as a standard server <NUM>, or multiple times in a group of such servers. It can also be implemented as part of a rack server system <NUM>. In addition, it can be implemented in a personal computer such as a laptop computer <NUM>. Alternatively, components from computing device <NUM> can be combined with other components in a mobile device (not shown), such as device <NUM>.

Computing device <NUM> includes processor <NUM>, memory <NUM>, an input/output device such as display <NUM>, communication interface <NUM>, and transceiver <NUM>, among other components. Device <NUM> may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of components <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.

Processor <NUM> can execute instructions within the computing device <NUM>, including instructions stored in memory <NUM>.

Processor <NUM> may communicate with a user through control interface <NUM> and display interface <NUM> coupled to display <NUM>. Display <NUM> may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. Display interface <NUM> may comprise appropriate circuitry for driving display <NUM> to present graphical and other information to a user. Control interface <NUM> may receive commands from a user and convert them for submission to processor <NUM>. In addition, external interface <NUM> may communicate with processor <NUM>, so as to enable near area communication of device <NUM> with other devices. External interface <NUM> can provide, for example, for wired or wireless communication in some embodiments multiple interfaces can be used.

Memory <NUM> stores information within computing device <NUM>. Memory <NUM> can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. Thus, for example, expansion memory <NUM> can be a security module for device <NUM>, and can be programmed with instructions that permit secure use of device <NUM>.

The memory can include, for example, flash memory and/or NVRAM memory, as discussed below. In one embodiment, a computer program product is tangibly embodied in an information carrier. The information carrier is a computer- or machine-readable medium, such as the memory <NUM>, expansion memory <NUM>, or memory on processor <NUM> that may be received, for example, over transceiver <NUM> or external interface <NUM>.

Device <NUM> can communicate wirelessly through communication interface <NUM>, which can include digital signal processing circuitry where necessary. Communication interface <NUM> can provide communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication can occur, for example, through radiofrequency transceiver <NUM>. In addition, short-range communication can occur, such as using a Bluetooth, Wi-Fi, or other such transceiver (not shown). In addition, GPS (Global Positioning System) receiver module <NUM> can provide additional navigation- and location-related wireless data to device <NUM>, which can be used as appropriate by applications running on device <NUM>.

Device <NUM> can also communicate audibly using audio codec <NUM>, which may receive spoken information from a user and convert it to usable digital information. Audio codec <NUM> may likewise generate audible sounds for a user, such as through a speaker, e.g., in a handset of device <NUM>. Such sound can include sound from voice telephone calls, can include recorded sound (e.g., voice messages, music files, etc.) and can also include sound generated by applications operating on device <NUM>.

Computing device <NUM> can be implemented in a number of different forms, as shown in the figure. For example, it can be implemented as cellular telephone <NUM>. It can also be implemented as part of smart phone <NUM>, a personal digital assistant, or other similar mobile device.

The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an embodiment of the systems and techniques described here), or any combination of such back end, middleware, or front end components.

In some embodiments, the computing devices depicted in <FIG> can include sensors that interface with a virtual reality headset (VR headset/HMD device <NUM>). For example, one or more sensors included on computing device <NUM> or other computing device depicted in <FIG>, can provide input to VR headset <NUM> or in general, provide input to a VR space. The sensors can include, but are not limited to, a touchscreen, accelerometers, gyroscopes, pressure sensors, biometric sensors, temperature sensors, humidity sensors, and ambient light sensors. Computing device <NUM> can use the sensors to determine an absolute position and/or a detected rotation of the computing device in the VR space that can then be used as input to the VR space. For example, computing device <NUM> may be incorporated into the VR space as a virtual object, such as a controller, a laser pointer, a keyboard, a weapon, etc. Positioning of the computing device/virtual object by the user when incorporated into the VR space can allow the user to position the computing device to view the virtual object in certain manners in the VR space.

In some embodiments, one or more input devices included on, or connect to, the computing device <NUM> can be used as input to the VR space. The input devices can include, but are not limited to, a touchscreen, a keyboard, one or more buttons, a trackpad, a touchpad, a pointing device, a mouse, a trackball, a joystick, a camera, a microphone, earphones or buds with input functionality, a gaming controller, or other connectable input device. A user interacting with an input device included on the computing device <NUM> when the computing device is incorporated into the VR space can cause a particular action to occur in the VR space.

In some embodiments, one or more output devices included on the computing device <NUM> can provide output and/or feedback to a user of the VR headset <NUM> in the VR space. The output and feedback can be visual, tactical, or audio. The output and/or feedback can include, but is not limited to, rendering the VR space or the virtual environment, vibrations, tuming on and off or blinking and/or flashing of one or more lights or strobes, sounding an alarm, playing a chime, playing a song, and playing of an audio file. The output devices can include, but are not limited to, vibration motors, vibration coils, piezoelectric devices, electrostatic devices, light emitting diodes (LEDs), strobes, and speakers.

In some embodiments, computing device <NUM> can be placed within VR headset <NUM> to create a VR system. VR headset <NUM> can include one or more positioning elements that allow for the placement of computing device <NUM>, such as smart phone <NUM>, in the appropriate position within VR headset <NUM>. In such embodiments, the display of smart phone <NUM> can render stereoscopic images representing the VR space or virtual environment.

In some embodiments, the computing device <NUM> may appear as another object in a computer-generated, 3D environment. Interactions by the user with the computing device <NUM> (e.g., rotating, shaking, touching a touchscreen, swiping a finger across a touch screen) can be interpreted as interactions with the object in the VR space. As just one example, computing device can be a laser pointer. In such an example, computing device <NUM> appears as a virtual laser pointer in the computer-generated, 3D environment. As the user manipulates computing device <NUM>, the user in the VR space sees movement of the laser pointer. The user receives feedback from interactions with the computing device <NUM> in the VR environment on the computing device <NUM> or on the VR headset <NUM>.

In some embodiments, a computing device <NUM> may include a touchscreen. For example, a user can interact with the touchscreen in a particular manner that can mimic what happens on the touchscreen with what happens in the VR space. For example, a user may use a pinching-type motion to zoom content displayed on the touchscreen. This pinching-type motion on the touchscreen can cause information provided in the VR space to be zoomed. In another example, the computing device may be rendered as a virtual book in a computer-generated, 3D environment. In the VR space, the pages of the book can be displayed in the VR space and the swiping of a finger of the user across the touchscreen can be interpreted as turning/flipping a page of the virtual book. As each page is turned/flipped, in addition to seeing the page contents change, the user may be provided with audio feedback, such as the sound of the turning of a page in a book.

In some embodiments, one or more input devices in addition to the computing device (e.g., a mouse, a keyboard) can be rendered in a computer-generated, 3D environment. The rendered input devices (e.g., the rendered mouse, the rendered keyboard) can be used as rendered in the VR space to control objects in the VR space.

Claim 1:
A method comprising:
receiving (<NUM>) three-dimensional, 3D, information generated by a first 3D system (202A), the 3D information including images of a scene and depth data about the scene;
identifying (<NUM>), using the depth data, first image content in the images associated with a depth value that satisfies a criterion;
generating (<NUM>) modified 3D information by applying first shading regarding the identified first image content, wherein the scene contains an object in the images, and characterised in that generating the modified 3D information further comprises determining a surface normal (<NUM>, <NUM>) for second image content of the object, and applying second shading regarding the second image content based on the determined surface normal (<NUM>, <NUM>); and
providing (<NUM>) the modified 3D information to a second 3D system (202B), wherein each of the first and second 3D systems (202A, 202B) is adapted to make a 3D presentation on a 3D display (<NUM>, <NUM>; <NUM>).