A light field is a vector function that describes an amount of light flowing in every direction through every point in space. For a given spatial volume, a light field can be represented by a four-dimensional (4D) function. Using light field vector information, one may render views of the light from various arbitrary positions and orientations within the spatial volume.
Memory size requirements for 4D light field data are often much larger than for a two-dimensional (2D) photo, which poses challenges to storage, compression, and transmission of such light field information.
Systems and methods disclosed herein relate to a view-optimized streaming solution that may stream light field images and videos more efficiently than conventional systems. Namely, example embodiments may stream a portion of the light field that a user is currently looking at (as opposed to the entire light field). Furthermore, methods and systems described herein may reduce the latency to stream and render another portion when the user changes viewing orientation.
In an aspect, a system is provided. The system includes a plurality of cameras disposed so as to capture images of a light field. The system also includes a controller having at least one processor and a memory. The at least one processor executes instructions stored in the memory so as to carry out operations. The operations include causing the plurality of cameras to capture light field image data. The light field image data includes a plurality of sample data points. The operations include determining a viewpoint position and a viewpoint pose and determining a nearest neighbor set based on the sample data points, the viewpoint position, and the viewpoint pose. The operations further include interpolating within the nearest neighbor set so as to form a set of resampled data points. The operations yet further include rendering a 360° image from the resampled data points. The 360° image includes a representation of the light field based on the viewpoint position and the viewpoint pose.
In a further aspect, a method is provided. The method includes capturing light field image data with a plurality of cameras. The light field image data includes a plurality of sample data points. The method also includes determining a viewpoint position and a viewpoint pose and determining a nearest neighbor set based on the sample data points, the viewpoint position, and the viewpoint pose. The method yet further includes interpolating within the nearest neighbor set so as to form a set of resampled data points. The method includes rendering a 360° image from the resampled data points. The 360° image includes a representation of the light field based on the viewpoint position and the viewpoint pose.
In another aspect, a system is provided. The system includes various means for carrying out the operations of the other respective aspects described herein.
These as well as other embodiments, aspects, advantages, and alternatives will become apparent to those of ordinary skill in the art by reading the following detailed description, with reference where appropriate to the accompanying drawings. Further, it should be understood that this summary and other descriptions and figures provided herein are intended to illustrate embodiments by way of example only and, as such, that numerous variations are possible. For instance, structural elements and process steps can be rearranged, combined, distributed, eliminated, or otherwise changed, while remaining within the scope of the embodiments as claimed.
Example methods, devices, and systems are described herein. It should be understood that the words “example” and “exemplary” are used herein to mean “serving as an example, instance, or illustration.” Any embodiment or feature described herein as being an “example” or “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments or features. Other embodiments can be utilized, and other changes can be made, without departing from the scope of the subject matter presented herein.
Thus, the example embodiments described herein are not meant to be limiting. Aspects of the present disclosure, as generally described herein, and illustrated in the figures, can be arranged, substituted, combined, separated, and designed in a wide variety of different configurations, all of which are contemplated herein.
Further, unless context suggests otherwise, the features illustrated in each of the figures may be used in combination with one another. Thus, the figures should be generally viewed as component aspects of one or more overall embodiments, with the understanding that not all illustrated features are necessary for each embodiment.
A. 360° Light Field Representation
B. 360° Light Field Capturing or Sampling
Optionally, instead of using a (θ, Φ) coordinate along the sphere, a position index, i, may be used to indicate camera positions. In such a scenario, the sampled light field can be represented by: (i, α, β) and a (θ, Φ) value may be obtained (e.g., via a lookup table) for each camera based on the value of i.
C. 360° Light Field Resampling
The system 200 may provide image information that may be combined to form a light field of limited sampling points F(i, α, β), where i is an integer=1 , . . . , k; α=(1, 2 , . . . , integer M)/M×360°; (β=(1, 2 , . . . , integer N)/N×180°−90°. In such a scenario, to render a 360° image from an arbitrary viewpoint location (x0, y0) and an arbitrary viewpoint pose (a, b), the image information may be resampled.
For example, consider a given arbitrary viewpoint location and viewpoint pose given by ray (x0, y0, a, b) (e.g., ray 134 in
A 360° light field image or video may include huge amounts of environmental information. However in virtual reality (VR) applications, a user may only look at a limited field of view for a short amount of time. For example, a user may explore the environment by adjusting a field of view and/or adjusting a viewing position. In example embodiments, the viewing position of the user and/or a head-mountable VR device could be determined based on information received from a sensor, such as an accelerometer, an inertial measurement unit, or another type of positioning or pose-determining system. In other words, the sensor may be configured to provide information indicative of a current viewpoint position and/or a current viewpoint pose of the head-mountable VR device or other information indicative of the user's viewing position.
In an example embodiment, methods and systems may stream a high resolution representation (e.g., high resolution image information) related to a visible portion of the light field, which may be based on the user's viewing position and/or field of view. That is, methods herein may stream only the visible portion of light field to the user at high resolution, which may greatly reduce the bandwidth required to stream light field data. Furthermore, when a user moves viewpoints (e.g., shifts to a different viewpoint location), the present disclosure may provide a reduced time to stream new data as compared to conventional methods, which may significantly improve a user experience.
In one embodiment, the light field may be partitioned or divided into a plurality of tiles. For a given user viewpoint, only a small number of tiles are needed to render the frame. That is, only a small subset of tiles, corresponding to the viewpoint location and viewpoint pose of the user, are needed to render a 360° image frame. For example, in scenario 310, the camera positions 312 may provide image data to form a sampled light field. Furthermore, viewpoint location 314 may represent a desired view position to simulate in a VR environment. A field of view 316 may be determined based on a viewpoint pose of the user. In such a scenario, only a portion of light field data captured by the plurality of cameras is required to render what the user may desire to view in VR.
When the user turns head to another direction as in scenario 330, the method may provide (e.g., stream to the client device) another portion of light field data for rendering. However, in virtual all cases, the portion of light field data needed for rendering will be much less than the entire amount light field information.
A. Light Field Tiling
Consider a light field L(θ, Φ, α, β) that may be discretized (e.g., pixelated in 4D) in each of four dimensions, for example, 20×20×1200×1200. In one embodiment, one may divide the light field into a number of four-dimensional (4D) tiles, each of which include a plurality of discrete “pixels”. As an example, each tile may include 4×4×400×400 light field pixels. In such a scenario, there may be (5×5×3×3) tiles defined. Each tile may include light field information about a relatively small area of viewpoint and a relatively small field of view.
Additionally or alternatively, consider a light field L(i, α, β) which may be discretized in three dimensions (one dimension for each light field variable). For example, the light field may be partitioned into 100×1200×1200 light field pixels. In one embodiment, one may divide the light field into a number of three-dimensional (3D) tiles, each of which may include a plurality of light field pixels. For example, each tile may include 4×400×400 light field pixels. In such a scenario, there may be (25×4×4) tiles defined.
Consider a light field L(θ, Φ, α, β, t). In addition to the 4D tiling described above, methods and systems herein may be configured to divide the light field image information into small duration clips (e.g., t0 to t1, t1 to t2, t2 to t3, etc.).
In another embodiment, the light field image information may be partitioned based on a frequency domain. That is, the light field image information may be converted into the frequency domain via a Fourier transform or a Wavelet transform. The Fourier transform of the light field image information may provide information about the image based on a spatial frequency of image features. Subsequently, the transformed image information may be partitioned (e.g., tiled) in the frequency domain. Additionally or alternatively, in some embodiments, the light field tiles may include similar ranges of spatial frequency information. Other tiling methods are possible and contemplated herein.
B. Find Neighbor Tiles for Rendering
For efficient streaming, one may want to minimize the number of tiles that are required to cover each 2D slice. For example, to render the view as shown in scenario 330 of
C. Low-Latency Light Field Streaming
While viewing and/or interacting with VR content, a user may adjust a viewpoint location (change θ, Φ) and/or a viewpoint pose (change α, β). When either change happens, the tiles needed for image rendering may change. For example, again in reference to
In an example embodiment, a system or method may include pre-fetching neighbor tiles (like tile E) prior to (e.g., before) head motion. In some embodiments, motion prediction may be performed so that the image data is already available for rendering when a user's head moves. Motion prediction may be based on prior user movements (e.g., moving between two viewpoint poses while watching a virtual tennis match). Additionally or alternatively, motion prediction may be based on the VR content provided to the user. For example, if, while viewing a VR movie, a protagonist is not fully within the user's field of view, a motion prediction method or system may predict that the user may move his or her head so as to bring the protagonist more fully into the field of view. In such a scenario, light field tiles that relate to image information predicted to be needed (e.g., due to predicted motion such as a user head movement) may be pre-fetched (and possibly pre-rendered) so as to be ready for display to the user immediately upon the predicted head movement.
In an example embodiment, light field tiles that are within a user's field of view may be termed viewable light field tiles while light field tiles that are outside a user's field of view could be termed unviewable light field tiles. Furthermore, light field tiles that are needed due to predicted user movement may be termed predicted viewable light field tiles. In such a scenario, a low resolution version of the predicted viewable light field tiles could be streamed and/or presented to the user while a high resolution version of the predicted viewable light field tiles are fetched in parallel and presented upon availability.
In another embodiment, a low resolution representation of the light field may be persistently available. That is, the low resolution representation of the light field, or a portion thereof, may be always available to the user. In such a scenario, when head motion occurs, a low-resolution frame may be rendered with almost no latency. In parallel (e.g., at the same time), a high-resolution representation of the light field may be fetched from a media server. As such, the high-resolution may be rendered with a finite latency. In such scenarios, users may be more tolerant to low-res-to-high-res latency compared to waiting for a blank screen to display high-resolution images. That is, in a “worst” case scenario, a user will always be able to view a low resolution image with low latency, with some delay for high resolution content.
To perform light field tiling, similar techniques and methods may be applied as those described in the U.S. provisional patent application 62/320,451 “View-Aware 360° VR video streaming.”
A. View-Optimized Light Field Projection
In an example embodiment, a number of views may be pre-rendered before streaming. Each view may be pre-rendered from high-resolution image data for the currently visible portions of the respective view. Furthermore, some views may be rendered based on lower resolution image information in the cases where the respective view corresponds to a portion of the light field that is not near the visible portion.
In some embodiments, a number of viewpoints may be selected within the view sphere. For each viewpoint, a number of directions (α, β) may be selected. For an arbitrary view from point (θ, Φ) to direction (α, β), a small light field, L′ may be pre-sampled from the original sampled light field, L. In some embodiments, L may be pre-sampled with higher sample density for areas near the current viewpoint location (θ, Φ) and viewpoint pose (α, β). This may include a scaled amount of image information that increases in density near the viewpoint location and viewpoint pose. In other words, the plurality of sample data points may include a variable sample density based at least on the viewpoint position and the viewpoint pose.
In one embodiment, L(i, α0, β0) of radius r may represent a current viewpoint location and viewpoint pose. In such a scenario, originally sampled L may be resampled as follows:
In VR, a user may change/adjust a viewpoint pose (e.g., change alpha and beta), or move viewpoint location (e.g., change θ, Φ). When the change is larger than a certain threshold amount (for example, >15° orientation/pose change or >1 cm location change), a method or system described herein may request a new portion of the light field information. For example, a rendered image may be provided by a first portion of the light field. However, if a user moves his or her head by more than the threshold amount, a second portion of the light field may be responsively requested/streamed/rendered.
In one embodiment, the process goes as:
1. Let (r0, θ0, Φ0, α0, β0) be the current view of VR user, which corresponds to light field L0.
2. When head motion is detected, compare the new view to (r0, θ0, Φ0, α0, β0), if the distance is larger than threshold T, then compute a tentative new view as (r1, θ1, Φ1, α1, β1).
3. Continue to stream the old light field (r0, θ0, Φ0, α0, β0) from media server until the buffer is over a certain size, and then switch streaming source to the new light field of (r1, θ1, Φ1, α1, β1).
4. Before new data from the new view arrives, frames from the previous view may be rendered and displayed to the user at least until the new view data is ready for user presentation.
5. Once new data from the new view arrives, go to Step 1.
In some cases, switching from View 1 to View 2 may relate to a special type of track switching as in typical adaptive bitrate (ABR) streaming. As such, the same technology in ABR can be applied here.
Although embodiments herein relate to 360° light field image or video streaming, the same technology may also be applied to other large field of view light field data as well. That is, methods and systems described herein may relate to light field information with 180° or 300° maximum field of view. Generally, the methods and systems described herein may relate to providing rendered representations of any type of light field information from arbitrary viewpoint locations and viewpoint poses.
It is understood that the systems and methods described herein may be applied to augmented reality (AR) scenarios as well as VR scenarios. That is, the video images presently described may be superimposed over a live direct or indirect view of a physical, real-world environment. Furthermore, although some embodiments herein describe 360° virtual reality video content, delivery, and/or services, it is understood that video content corresponding to smaller portions of a viewing sphere may be used within the context of the present disclosure.
The particular arrangements shown in the Figures should not be viewed as limiting. It should be understood that other embodiments may include more or less of each element shown in a given Figure. Further, some of the illustrated elements may be combined or omitted. Yet further, an illustrative embodiment may include elements that are not illustrated in the Figures.
A step or block that represents a processing of information can correspond to circuitry that can be configured to perform the specific logical functions of a herein-described method or technique. Alternatively or additionally, a step or block that represents a processing of information can correspond to a module, a segment, or a portion of program code (including related data). The program code can include one or more instructions executable by a processor for implementing specific logical functions or actions in the method or technique. The program code and/or related data can be stored on any type of computer readable medium such as a storage device including a disk, hard drive, or other storage medium.
The computer readable medium can also include non-transitory computer readable media such as computer-readable media that store data for short periods of time like register memory, processor cache, and random access memory (RAM). The computer readable media can also include non-transitory computer readable media that store program code and/or data for longer periods of time. Thus, the computer readable media may include secondary or persistent long term storage, like read only memory (ROM), optical or magnetic disks, compact-disc read only memory (CD-ROM), for example. The computer readable media can also be any other volatile or non-volatile storage systems. A computer readable medium can be considered a computer readable storage medium, for example, or a tangible storage device.
While various examples and embodiments have been disclosed, other examples and embodiments will be apparent to those skilled in the art. The various disclosed examples and embodiments are for purposes of illustration and are not intended to be limiting, with the true scope being indicated by the following claims.
The present application claims the benefit of U.S. Patent Application No. 62/402,854, filed Sep. 30, 2016, the content of which is herewith incorporated by reference.
Number | Date | Country | |
---|---|---|---|
62402854 | Sep 2016 | US |