Patent Description:
<NUM>-degree video or spherical video is a new way of experiencing immersive video using devices such as head-mounted displays (HMD). This technique can provide an immersive "being there" experience for consumers by capturing a full panoramic view of the world. <NUM>-degree video is typically recorded using a special rig of multiple cameras, or using a dedicated virtual reality (VR) camera that contains multiple embedded camera lenses. The resulting footage is then stitched to form a single video. This process may be done by the camera itself, or by using video editing software that can analyze common visuals to synchronize and link the different camera feeds together to represent the full viewing sphere surrounding the camera rig. Essentially, the camera or the camera system maps a <NUM>° scene onto a sphere.

The stitched image (i.e. the image on the surface of the sphere) is then mapped (or unfolded) from spherical into a two-dimensional (2D) rectangular representation based on projection (such as equirectangular projection), and then encoded using e.g., standard video codecs such as H. <NUM>/AVC (Advanced Video Coding) and HEVC/H. <NUM> (High Efficiency Video Coding).

At the viewing end, after decoding the video is mapped onto a virtual sphere with the viewer located at the center of the virtual sphere. The viewer can navigate inside the virtual sphere to see a view of the <NUM>-degree world as desired and thereby have an immersive experience.

To reduce the bit-rate of video signals, the International Organization for Standardization (ISO) and International Telecommunication Union (ITU) coding standards apply hybrid video coding with inter-frame prediction and intra-frame prediction combined with transform coding of a prediction error. For example, intra-block prediction based on the intensity values of reference pixels from already encoded surrounding blocks may be used. Then, the intensity difference between the original block and a predicted block (called residual) may be transformed to the frequency domain using, e.g., discrete cosine transform (DCT) or discrete sine transform (DST), quantized, and coded with entropy coding.

Currently, the intra-frame prediction mechanism in video coding uses reference pixels located next to or near a block that needs to be encoded and generates a prediction signal for that block based on the intensity values of the reference pixels. The prediction signal is generated using a prediction mode which is signaled in the bitstream. The current video coding standards may use several (e.g., <NUM>) directional modes (used to represent blocks containing edges and lines) as well as a DC mode and a planar mode. Accordingly, directional intra-frame prediction may be performed along a straight line of one of the possible (e.g., <NUM>) directions.

In other words, the directional intra-prediction is currently performed along straight lines. During capturing of a 2D video, lines remain straight and having a prediction mechanism that takes advantage of this fact is reasonable. But during capturing of a <NUM>-degree video and by unfolding to projection, straight lines may become distorted. , for equirectangular projection straight lines become curved. Accordingly, conventional intra-frame prediction mechanisms may be inefficient for <NUM>-degree or spherical video.

Effectiveness of the prediction influences the amount of residuals that need to be coded and transmitted. Accordingly, improving quality of prediction can reduce the amount of residual information and reduce the overall bit rate of a coded video sequence.

The expression "pixel value" means an intensity value of a pixel, i.e. an indication of an intensity of the pixel.

<CIT> introduces a motion compensation scheme for a inter prediction process. <NPL> discloses intra prediction of 2D projected 3D spherical video whereby the prediction blocks are transformed to compensate for the transformation.

It is an object of the invention to provide improved video coding.

The intra-prediction is adjusted to the geometry of spherical video, thereby allowing more efficient intra-prediction for spherical video. More efficient intra-prediction allows reducing the amount of residual information that needs to be encoded and transmitted, thus reducing the overall bit rate of an associated bit stream.

More efficient intra-prediction allows reducing the amount of residual information that needs to be encoded and transmitted, thus reducing the overall bit rate of an associated bit stream. Furthermore, there is no need to represent a curved line as a set of small straight lines, thus allowing savings in signaling overhead due to larger prediction blocks.

Furthermore, curved intra prediction can be achieved without explicit signaling of curvature parameters, thus further reducing the overall bit rate of the associated bit stream.

Many of the attendant features will be more readily appreciated as they become better understood by reference to the following detailed description considered in connection with the accompanying drawings.

The detailed description provided below in connection with the appended drawings is intended as a description of the embodiments and is not intended to represent the only forms in which the embodiment may be constructed or utilized. However, the same or equivalent functions and structures may be accomplished by different embodiments.

In the following description, video coding arrangements and schemes are discussed in which at least a portion of intra-prediction operations are performed along a geodesic curve.

As illustrated in <FIG>, a geodesic curve 421A is a projection of a straight line <NUM> of a scene <NUM> on a viewing sphere <NUM>. More specifically, a geodesic curve is a part (i.e. arc <NUM>) of a great circle <NUM>. Great circle <NUM> is the intersection of the sphere and the plane defined by the straight line <NUM> and the sphere's center <NUM>. <FIG> shows an example of great circles <NUM> with a spacing of <NUM> degrees, after unfolding from sphere to equirectangular projection. As shown in <FIG>, straight lines become distorted in the equirectangular projected image.

From mathematics it is known that an infinite number of lines (or parts of circles or arcs) may pass through two points on a sphere. Only one of them is lying on a great circle. That means that once the position of two points of a line on a viewing sphere is known, one and only one geodesic curve can be determined coming through these two points. Parameters of curvature of this geodesic curve in the equirectangular projection (or any other type of sphere-to-2D projection) are completely defined by these two points and can be derived without explicit signaling.

In the following descriptions, a straight line is defined in a three-dimensional (3D) scene and projected onto a viewing sphere, thereby transforming the straight line into a curved intra-prediction line, i.e. a geodesic curve. Intra-prediction is performed along the intra-prediction line. More specifically, for each pixel to be predicted, a corresponding position in a reference area is obtained. This is done by passing the intra-prediction line over a current pixel to the reference area. Once the position of the current pixel is known and intra-prediction line is defined, the position in the reference area and a corresponding reference pixel value can be obtained. The reference pixel value can be taken as a predicted value (also referred to as the prediction value). Predicted values are used for subtracting from source values to obtain residuals that are then transformed and coded. It is to be noted that a reference position may be fractional in which case the prediction value may be interpolated from surrounding reference pixels on integer positions using a suitable interpolation method.

More generally, a straight line in the 3D scene may be projected onto any desired 2D projection of the 3D scene, e.g., onto a flat 2D map of the surface of the viewing sphere. Intra-prediction can thus be performed in any 2D representation of the surface of the viewing sphere.

Neighboring reference pixels, e.g., on the edge of a prediction block may be handled such that the same intra-prediction line (with the same curvature but just shifted) is also used for intra-prediction for all pixels (or for a group of pixels) in the prediction block. Alternatively, intra-prediction from a neighboring reference pixel may be done using an intra-prediction line derived from another straight line in the 3D scene.

<FIG> is a block diagram that illustrates a video encoder <NUM> according to an example. The video encoder <NUM> may be implemented as a standalone device or it may be implemented as a part of another device, such as a digital video camera (including, e.g., <NUM>-degree cameras and camera rigs) or the like. Furthermore, the video encoder <NUM> may be implemented as hardware (including but not limited to: a processor and/or a memory, and the like), software, or any combination of hardware and software.

The video encoder <NUM> comprises an input unit <NUM> that is configured to receive frames of spherical video. Each of the frames comprises blocks of pixels.

The video encoder <NUM> further comprises an intra-prediction unit <NUM> that is configured to generate a set of residuals for a current block to be encoded, by performing intra-prediction along a geodesic curve for the current block to be encoded.

The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction unit <NUM> is configured to perform the intra-prediction for a planar projection of the spherical video. Herein, a planar projection refers to a projection onto a plane, i.e. a projection onto a flat, non-curved surface.

The video encoder <NUM> further comprises an output unit <NUM> that is configured to provide an encoded bitstream based on sets of residuals generated by the intra-prediction performed on the blocks to be encoded. In addition to residuals related data, the bitstream may comprise, e.g., partitioning flags, prediction parameters, and the like.

Geodesic curves of different defined curvatures may be used in the intra-prediction for different pixels of the current block to be encoded. Additionally or alternatively, geodesic curves of identical defined curvatures may be used in the intra-prediction for different pixels of the current block to be encoded.

The intra-prediction unit <NUM> may be further configured to use a directional intra-prediction mode for choosing one or more parameters of the geodesic curve.

The intra-prediction unit <NUM> may be further configured to use a flag to indicate whether to perform the intra-prediction along the geodesic curve.

For example, a one-bit flag may be used to signal whether straight or geodesic prediction is used for a given directional mode. Such a scheme may be applied for all directional modes or for a restricted subset (e.g., by excluding vertical and horizontal directions).

In another example, for some modes from a predefined set (e.g., all modes except DC, planar, vertical and horizontal) intra-prediction is switched from straight lines to the geodesic prediction. Accordingly, no additional modifications in signaling mechanism are needed. Instead, interpretation of the existing signaling may be changed. For example, all angular modes (except DC and planar) may be replaced by the geodesic prediction.

<FIG> is a block diagram that illustrates a video decoder <NUM> according to an example. The video decoder <NUM> may be implemented as a standalone device or it may be implemented as a part of another device, such as a display device (including, e.g., a head-mounted display suitable for displaying virtual reality content) or the like. Furthermore, the video decoder <NUM> may be implemented as hardware (including but not limited to: a processor and/or a memory, and the like), software, or any combination of hardware and software.

The video decoder <NUM> comprises an input unit <NUM> that is configured to receive an encoded bitstream representing frames of spherical video. Each of the frames comprises blocks of pixels.

The video decoder <NUM> further comprises an intra-prediction unit <NUM> that is configured to determine a set of pixel values for a current block to be decoded, by performing intra-prediction along a geodesic curve for the current block to be decoded.

The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction unit <NUM> configured to perform the intra-prediction for a planar projection of the spherical video.

The video decoder <NUM> further comprises an output unit <NUM> that is configured to provide decoded video based on the sets of pixel values determined by the intra-prediction performed on the blocks to be decoded.

Geodesic curves of different defined curvatures may be used in the intra-prediction for different pixels of the current block to be decoded. Additionally or alternatively, geodesic curves of identical defined curvatures may be used in the intra-prediction for different pixels of the current block to be decoded.

In the following examples of <FIG>, the video encoder may comprise the video encoder <NUM> of <FIG>. Furthermore, in the examples of <FIG>, the video decoder may comprise the video decoder <NUM> of <FIG>. Some of the features of the described devices are optional features which provide further advantages.

<FIG> is a flow chart illustrating a method of encoding video according to an example. At operation <NUM>, an input unit of a video encoder receives frames of spherical video. Each of the frames comprises blocks of pixels.

At operation 202A, an intra-prediction unit of the video encoder generates a set of residuals for a current block to be encoded, by performing intra-prediction along a geodesic curve for the current block to be encoded. The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction is performed for a planar projection of the spherical video.

At operation <NUM>, an output unit of the video encoder provides an encoded bitstream based on sets of residuals generated by the intra-prediction performed on the blocks to be encoded.

At operation 202B, an intra-prediction unit of the video encoder generates a set of residuals for a current block to be encoded, by performing intra-prediction along a geodesic curve for the current block to be encoded, and by using geodesic curves of different defined curvatures in the intra-prediction for different pixels of the current block to be encoded. The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction is performed for a planar projection of the spherical video.

At operation 202C, an intra-prediction unit of the video encoder generates a set of residuals for a current block to be encoded, by performing intra-prediction along a geodesic curve for the current block to be encoded, and by using geodesic curves of identical defined curvatures in the intra-prediction for different pixels of the current block to be encoded. The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction is performed for a planar projection of the spherical video.

At operation 202D, an intra-prediction unit of the video encoder generates a set of residuals for a current block to be encoded, by performing intra-prediction along a geodesic curve for the current block to be encoded, and by using a directional intra-prediction mode for choosing one or more parameters of the geodesic curve. The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction is performed for a planar projection of the spherical video.

At operation 202E, an intra-prediction unit of the video encoder generates a set of residuals for a current block to be encoded, by performing intra-prediction along a geodesic curve for the current block to be encoded, and using a flag to indicate whether to perform the intra-prediction along the geodesic curve. The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction is performed for a planar projection of the spherical video.

<FIG> is a flow chart illustrating a method of decoding video according to an example. At operation <NUM>, an input unit of a video decoder receives an encoded bitstream representing frames of spherical video. Each of the frames comprises blocks of pixels.

At operation 302A, an intra-prediction unit of the video decoder determines a set of pixel values for a current block to be decoded, by performing intra-prediction along a geodesic curve for the current block to be decoded. The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction is performed for a planar projection of the spherical video.

At operation <NUM>, an output unit of the video decoder provides decoded video based on the sets of pixel values determined by the intra-prediction performed on the blocks to be decoded.

At operation 302B, an intra-prediction unit of the video decoder determines a set of pixel values for a current block to be decoded, by performing intra-prediction along a geodesic curve for the current block to be decoded, and by using geodesic curves of different defined curvatures in the intra-prediction for different pixels of the current block to be encoded. The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction is performed for a planar projection of the spherical video.

At operation 302C, an intra-prediction unit of the video decoder determines a set of pixel values for a current block to be decoded, by performing intra-prediction along a geodesic curve for the current block to be decoded, and by using geodesic curves of identical defined curvatures in the intra-prediction for different pixels of the current block to be encoded. The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction is performed for a planar projection of the spherical video.

At operation 302D, an intra-prediction unit of the video decoder determines a set of pixel values for a current block to be decoded, by performing intra-prediction along a geodesic curve for the current block to be decoded, and by using a directional intra-prediction mode for choosing one or more parameters of the geodesic curve. The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction is performed for a planar projection of the spherical video.

At operation 302E, an intra-prediction unit of the video decoder determines a set of pixel values for a current block to be decoded, by performing intra-prediction along a geodesic curve for the current block to be decoded in response to a flag indicating that intra-prediction along the geodesic curve is to be performed. The geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video. Furthermore, the intra-prediction is be performed for a planar projection of the spherical video.

<FIG> further illustrates an example <NUM> of intra-prediction along geodesic curves in accordance with the examples of <FIG>.

As discussed above, a geodesic curve is a part of a great circle. The great circle is a circle on the viewing sphere inside the plane defined by the straight line and the sphere's center. When the elevation angle of an azimuth angle of <NUM> is Θ, the great circle can be expressed as: <MAT>.

Equirectangular projection has the following equations for forward projection: <MAT> <MAT>.

Unfolding from the spherical to equirectangular projection transforms the great circles (i.e. the intra-prediction lines on the viewing sphere) into curves, as shown in <FIG>. As discussed above, prediction may be performed along these curves.

As discussed above in connection with <FIG>, an infinite number of lines (or parts of circles or arcs) may pass through two points on a sphere. Only one of them is lying on a great circle. That means that once the position of two points of a line on a viewing sphere is known, one and only one geodesic curve can be determined coming through these two points. Here, one of the points may be a current pixel to be predicted. The other point may vary depending on the implementation. For example, the starting point of the coordinate system may be shifted to this other point. The shifting of the starting point may be applied, e.g., during the conversion from the equirectangular projection to the spherical coordinates, and vice versa. Alternatively, the starting shift may be taken directly in equations. In that case, the great circle equation will be: <MAT>.

It is to be understood that the starting point may alternatively be defined in picture projection coordinates instead of spherical coordinates.

Again referring to <FIG>, the intra-prediction along geodesic curves may include operations in which for each pixel to be predicted with picture position x,y :.

By applying different 2D-to-sphere conversion formulas on the above operations <NUM> and <NUM>, this can be adopted to any type of sphere-to-2D projection rather than only to equirectangular projection.

<FIG> further illustrates an example <NUM> of using directional intra-prediction modes together with intra-prediction along geodesic curves in accordance with the examples of <FIG>.

Here, a straight line <NUM> goes across the block <NUM> (e.g., through block center) with an angle that corresponds to a directional intra-prediction mode. Two points inside the current block and lying on this line <NUM> are selected, e.g., the points <NUM>, <NUM> in which the line <NUM> crosses the border of the block <NUM>. Alternatively, e.g., the center of the block <NUM> may be chosen as the first point, and another point located at a distance of, e.g., <NUM> pixel from the first one may be chosen as the second point. In other words, an angular or directional intra-prediction mode is used as a tangent to a geodesic curve <NUM>. By choosing different angular intra-prediction modes it is possible to select geodesic curves of different parameters.

Furthermore, here parallel lines 611A, 611B are projected into two great circles 621A, 621B on a unit sphere <NUM> crossing in some point on the equator with coordinates φ = <NUM>, λ = λc, as shown in the example of <FIG>. This point may be chosen by a given angular direction, and all geodesic curves for the current block may be drawn through this point. Thus, the associated intra-prediction operations may include:.

The above operations B1-B5 allow geodesic intra-prediction in different directions using a signaling mechanism based on angular prediction intra-prediction modes.

Claim 1:
A video encoder (<NUM>), comprising:
an input unit (<NUM>) configured to receive frames of spherical video, each of the frames comprising blocks of pixels;
an intra-prediction unit (<NUM>) configured to generate a set of residuals for a current block to be encoded, by performing intra-prediction along a geodesic curve for the current block to be encoded, wherein the geodesic curve with its curvature corresponds to a straight line in a three-dimensional scene represented by the spherical video, wherein the intra-prediction unit (<NUM>) is configured to perform the intra-prediction for a planar projection of the spherical video by using a directional intra-prediction mode defining a tangent to the geodesic curve; and
an output unit (<NUM>) configured to provide an encoded bitstream based on sets of residuals generated by the intra-prediction performed on the blocks to be encoded and including the directional intra-prediction mode.