WO2020157376A1 - An apparatus, a method and a computer program for volumetric video - Google Patents

An apparatus, a method and a computer program for volumetric video Download PDF

Info

Publication number
WO2020157376A1
WO2020157376A1 PCT/FI2020/050034 FI2020050034W WO2020157376A1 WO 2020157376 A1 WO2020157376 A1 WO 2020157376A1 FI 2020050034 W FI2020050034 W FI 2020050034W WO 2020157376 A1 WO2020157376 A1 WO 2020157376A1
Authority
WO
WIPO (PCT)
Prior art keywords
point cloud
scene
frames
video
projection
Prior art date
Application number
PCT/FI2020/050034
Other languages
French (fr)
Inventor
Kimmo Roimela
Jaakko KERÄNEN
Vinod Kumar Malamal Vadakital
Lauri ILOLA
Original Assignee
Nokia Technologies Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Technologies Oy filed Critical Nokia Technologies Oy
Priority to EP20748861.0A priority Critical patent/EP3918793A4/en
Publication of WO2020157376A1 publication Critical patent/WO2020157376A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/194Transmission of image signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/275Image signal generators from 3D object models, e.g. computer-generated stereoscopic image signals
    • H04N13/279Image signal generators from 3D object models, e.g. computer-generated stereoscopic image signals the virtual viewpoint locations being selected by the viewers or determined by tracking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/30Image reproducers
    • H04N13/332Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
    • H04N13/344Displays for viewing with the aid of special glasses or head-mounted displays [HMD] with head-mounted left-right displays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234318Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into objects, e.g. MPEG-4 objects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/816Monomedia components thereof involving special video data, e.g 3D video
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/56Particle system, point based geometry or rendering

Definitions

  • the present invention relates to an apparatus, a method and a computer program for volumetric video coding and decoding.
  • Volumetric video data represents a three-dimensional scene or object and can be used as input for virtual reality (VR), augmented reality (AR) and mixed reality (MR) applications.
  • Such data describes the geometry, e.g. shape, size, position in three-dimensional (3D) space, and respective attributes, e.g. colour, opacity, reflectance and any possible temporal changes of the geometry and attributes at given time instances.
  • Volumetric video is either generated from 3D models through computer-generated imagery (CGI), or captured from real-world scenes using a variety of capture solutions, e.g. multi-camera, laser scan, combination of video and dedicated depth sensors, and more. Also, a combination of CGI and real-world data is possible.
  • CGI computer-generated imagery
  • a volumetric video compression pipeline used for generating 3D content for real time viewing comprises a plurality of processing steps, typically including at least input conversion for converting the input 3D scene into an internal representation, such as a point cloud, representing the spatial 3D samples of the input scene, view optimizing for creating a segmentation of the scene into segments optimized for the specified viewing conditions, pre rendering of the segments, producing an optimal 2D layout of the rendered segments and packing the pre-rendered segments into video frames. Finally, the video frames are compressed into the final compressed data representation.
  • a method comprising obtaining a plurality of frames of a three-dimensional (3D) video stream, wherein each of said frames comprises a point cloud representation of spatial samples of a 3D input scene; combining the point cloud representations of said frames into an accumulated point cloud model; and providing, in response to the number of said frames combined in said accumulated point cloud model reaching a predetermined threshold value, said accumulated point cloud model into a view optimization process for segmenting the 3D scene.
  • the predetermined threshold value corresponds to a size of Group-of-Pictures (GoP).
  • the predetermined threshold value is 32.
  • the method further comprises checking, prior to combining any frame into said accumulated point cloud model, content of the frame; and ignoring frames providing no relevant data for the view optimization process.
  • the method further comprises creating metadata relating to the accumulated point cloud model, said metadata comprising position and size of each tile and view-projection parameters of each tile.
  • An apparatus comprises means for obtaining a plurality of frames of a three-dimensional (3D) video stream, wherein each of said frames comprises a point cloud representation of spatial samples of a 3D input scene; means for combining the point cloud representations of said frames into an accumulated point cloud model; and means for providing, responsive to the number of said frames combined in said accumulated point cloud model reaching a predetermined threshold value, said accumulated point cloud model into a view optimization process for segmenting the 3D scene.
  • Apparatuses comprise at least one processor and at least one memory, said at least one memory stored with code thereon, when executed by said at least one processor, causes the apparatus to perform the above methods.
  • Computer readable storage media comprise code for use by an apparatus, which when executed by a processor, causes the apparatus to perform the above methods.
  • FIG. 1 shows a system for capturing, encoding, decoding, reconstructing and viewing a three-dimensional scheme
  • FIGs. 2a and 2b show a capture device and a viewing device
  • Figs. 3a and 3b show an encoder and decoder for encoding and decoding texture pictures, geometry pictures and/or auxiliary pictures;
  • Figs. 4a, 4b, 4c and 4d show a setup for forming a stereo image of a scene to a user
  • Figs. 5a illustrates projection of source volumes in a scene and parts of an object to projection surfaces, as well as determining depth information
  • Fig. 5b shows an example of projecting an object using a cube map projection format
  • Fig. 6 shows an example of volumetric video compression pipeline
  • Fig. 7 shows a flow chart for temporal accumulation of scene geometry according to an embodiment
  • Fig. 8 shows a block chart of temporal accumulation steps according to an embodiment
  • Fig. 9 shows an example of the effects of the temporally accumulated point cloud model according to an embodiment.
  • Voxel of a three-dimensional world corresponds to a pixel of a two-dimensional world. Voxels exist in a three-dimensional grid layout.
  • An octree is a tree data structure used to partition a three-dimensional space. Octrees are the three-dimensional analog of quadtrees.
  • a sparse voxel octree (SVO) describes a volume of a space containing a set of solid voxels of varying sizes. Empty areas within the volume are absent from the tree, which is why it is called“sparse”.
  • a three-dimensional volumetric representation of a scene is determined as a plurality of voxels on the basis of input streams of at least one multicamera device.
  • at least one but preferably a plurality (i.e. 2, 3, 4, 5 or more) of multicamera devices are used to capture 3D video representation of a scene.
  • the multicamera devices are distributed in different locations in respect to the scene, and therefore each multicamera device captures a different 3D video representation of the scene.
  • the 3D video representations captured by each multicamera device may be used as input streams for creating a 3D volumetric representation of the scene, said 3D volumetric representation comprising a plurality of voxels.
  • Voxels may be formed from the captured 3D points e.g.
  • Voxels may also be formed through the construction of the sparse voxel octree. Each leaf of such a tree represents a solid voxel in world space; the root node of the tree represents the bounds of the world.
  • the sparse voxel octree construction may have the following steps: 1) map each input depth map to a world space point cloud, where each pixel of the depth map is mapped to one or more 3D points; 2) determine voxel attributes such as colour and surface normal vector by examining the neighbourhood of the source pixel(s) in the camera images and the depth map; 3) determine the size of the voxel based on the depth value from the depth map and the resolution of the depth map; 4) determine the SVO level for the solid voxel as a function of its size relative to the world bounds; 5) determine the voxel coordinates on that level relative to the world bounds; 6) create new and/or traversing existing SVO nodes until arriving at the determined voxel coordinates; 7) insert the solid voxel as a leaf of the tree, possibly replacing or merging attributes from a previously existing voxel at those coordinates. Nevertheless, the size of voxel within the 3D volumetric
  • a volumetric video frame is a complete sparse voxel octree that models the world at a specific point in time in a video sequence.
  • Voxel attributes contain information like colour, opacity, surface normal vectors, and surface material properties. These are referenced in the sparse voxel octrees (e.g. colour of a solid voxel), but can also be stored separately.
  • Point clouds are commonly used data structures for storing volumetric content. Compared to point clouds, sparse voxel octrees describe a recursive subdivision of a finite volume with solid voxels of varying sizes, while point clouds describe an unorganized set of separate points limited only by the precision of the used coordinate values.
  • each frame may produce several hundred megabytes or several gigabytes of voxel data which needs to be converted to a format that can be streamed to the viewer, and rendered in real-time.
  • the amount of data depends on the world complexity and volume. The larger impact comes in a multi-device recording setup with a number of separate locations where the cameras are recording. Such a setup produces more information than a camera at a single location.
  • Fig. 1 shows a system for capturing, encoding, decoding, reconstructing and viewing a three-dimensional scheme, that is, for 3D video and 3D audio digital creation and playback.
  • the task of the system is that of capturing sufficient visual and auditory
  • the system of Fig. 1 may consist of three main parts: image sources, a server and a rendering device.
  • a video source SRC1 may comprise multiple cameras CAM1, CAM2, ..., CAMN with overlapping field of view so that regions of the view around the video capture device is captured from at least two cameras.
  • the video source SRC1 may comprise multiple microphones to capture the timing and phase differences of audio originating from different directions.
  • the video source SRC1 may comprise a high-resolution orientation sensor so that the orientation (direction of view) of the plurality of cameras CAM1, CAM2, ..., CAMN can be detected and recorded.
  • the cameras or the computers may also comprise or be functionally connected to means for forming distance information corresponding to the captured images, for example so that the pixels have corresponding depth data.
  • Such depth data may be formed by scanning the depth or it may be computed from the different images captured by the cameras.
  • the video source SRC1 comprises or is functionally connected to, or each of the plurality of cameras CAM1, CAM2, ..., CAMN comprises or is functionally connected to a computer processor and memory, the memory comprising computer program code for controlling the source and/or the plurality of cameras.
  • the image stream captured by the video source i.e. the plurality of the cameras, may be stored on a memory device for use in another device, e.g. a viewer, and/or transmitted to a server using a communication interface. It needs to be understood that although a video source comprising three cameras is described here as part of the system, another amount of camera devices may be used instead as part of the system.
  • one or more sources SRC2 of synthetic imagery may be present in the system, comprising a scene model. Such sources may be used to create and transmit the scene model and its development over time, e.g. instantaneous states of the model.
  • the model can be created or provided by the source SRC1 and/or SRC2, or by the server SERVER. Such sources may also use the model of the scene to compute various video bitstreams for transmission.
  • One or more two-dimensional video bitstreams may be computed at the server SERVER or a device RENDERER used for rendering, or another device at the receiving end.
  • the devices SRC1 and SRC2 may comprise or be functionally connected to one or more computer processors (PROC2 shown) and memory (MEM2 shown), the memory comprising computer program (PROGR2 shown) code for controlling the source device SRC1/SRC2.
  • PROC2 computer processors
  • MEM2 computer program
  • the image stream captured by the device and the scene model may be stored on a memory device for use in another device, e.g.
  • a viewer or transmitted to a server or the viewer using a communication interface COMM2.
  • a server SERVER or a plurality of servers storing the output from the capture device SRC1 or device SRC2 and/or to form a scene model from the data from devices SRC1, SRC2.
  • the device SERVER comprises or is functionally connected to a computer processor PROC3 and memory MEM3, the memory comprising computer program PROGR3 code for controlling the server.
  • the device SERVER may be connected by a wired or wireless network connection, or both, to sources SRC1 and/or SRC2, as well as the viewer devices VIEWER1 and VIEWER2 over the communication interface COMM3.
  • the creation of a three-dimensional scene model may take place at the server SERVER or another device by using the images captured by the devices SRC1.
  • the scene model may be a model created from captured image data (a real-world model), or a synthetic model such as on device SRC2, or a combination of such.
  • the scene model may be encoded to reduce its size and transmitted to a decoder, for example viewer devices.
  • the viewer devices may have a rendering module and a display module, or these functionalities may be combined in a single device.
  • the devices may comprise or be functionally connected to a computer processor PROC4 and memory MEM4, the memory comprising computer program PROG4 code for controlling the viewing devices.
  • the viewer (playback) devices may consist of a data stream receiver for receiving a video data stream and for decoding the video data stream.
  • the video data stream may be received from the server SERVER or from some other entity, such as a proxy server, an edge server of a content delivery network, or a file available locally in the viewer device.
  • the data stream may be received over a network connection through communications interface COMM4, or from a memory device MEM6 like a memory card CARD2.
  • the viewer devices may have a graphics processing unit for processing of the data to a suitable format for viewing.
  • the viewer VIEWER1 may comprise a high-resolution stereo-image head-mounted display for viewing the rendered stereo video sequence.
  • the head-mounted display may have an orientation sensor DET1 and stereo audio headphones.
  • the viewer VIEWER2 may comprise a display (either two-dimensional or a display enabled with 3D technology for displaying stereo video), and the rendering device may have an orientation detector DET2 connected to it.
  • the viewer VIEWER2 may comprise a 2D display, since the volumetric video rendering can be done in 2D by rendering the viewpoint from a single eye instead of a stereo eye pair.
  • Fig. 1 depicts one SRC1 device and one SRC2 device, but generally the system may comprise more than one SRC1 device and/or SRC2 device.
  • Any of the devices may be a computer or a portable computing device, or be connected to such or configured to be connected to such.
  • the devices SRC1, SRC2, SERVER, RENDERER, VIEWER1, VIEWER2
  • the devices may comprise multiple parts or may be comprised of multiple connected devices.
  • SERVER may comprise several devices, some of which may be used for editing the content produced by SRC1 and/or SRC2 devices, some others for compressing the edited content, and a third set of devices may be used for transmitting the compressed content.
  • Such devices may have computer program code for carrying out methods according to various examples described in this text.
  • Figs. 2a and 2b show a capture device and a viewing device, respectively.
  • Fig. 2a illustrates a camera CAMl.
  • the camera has a camera detector CAMDET1, comprising a plurality of sensor elements for sensing intensity of the light hitting the sensor element.
  • the camera has a lens OBJ1 (or a lens arrangement of a plurality of lenses), the lens being positioned so that the light hitting the sensor elements travels through the lens to the sensor elements.
  • the camera detector CAMDET1 has a nominal centre point CPI that is a middle point of the plurality of sensor elements, for example for a rectangular sensor the crossing point of diagonals of the rectangular sensor.
  • the lens has a nominal centre point PP1, as well, lying for example on the axis of symmetry of the lens.
  • the direction of orientation of the camera is defined by the line passing through the centre point CPI of the camera sensor and the centre point PP1 of the lens.
  • the direction of the camera is a vector along this line pointing in the direction from the camera sensor to the lens.
  • the optical axis of the camera is understood to be this line CP1-PP1.
  • the optical path from the lens to the camera detector need not always be a straight line but there may be mirrors and/or some other elements which may affect the optical path between the lens and the camera detector.
  • Fig. 2b shows a head-mounted display (HMD) for stereo viewing.
  • the head- mounted display comprises two screen sections or two screens DISP1 and DISP2 for displaying the left and right eye images.
  • the displays are close to the eyes, and therefore lenses are used to make the images easily viewable and for spreading the images to cover as much as possible of the eyes' field of view.
  • the device When the device will be used by a user, the user may put the device on her/his head so that it will be attached to the head of the user so that it stays in place even when the user turns his head.
  • the device may have an orientation detecting module ORDET1 for determining the head movements and direction of the head.
  • the head-mounted display gives a three-dimensional (3D) perception of the
  • Time-synchronized video and orientation data is first recorded with the capture devices. This can consist of multiple concurrent video streams as described above.
  • One or more time-synchronized audio streams may also be recorded with the capture devices.
  • the different capture devices may form image and geometry information of the scene from different directions. For example, there may be three, four, five, six or more cameras capturing the scene from different sides, like front, back, left and right, and/or at directions between these, as well as from the top or bottom, or any combination of these.
  • the cameras may be at different distances, for example some of the cameras may capture the whole scene and some of the cameras may be capturing one or more objects in the scene.
  • the cameras may be directed towards an object, looking onto the object from different directions, where the object is e.g. in the middle of the cameras. In this manner, the texture and geometry of the scene and the objects within the scene may be captured adequately.
  • the cameras or the system may comprise means for determining geometry
  • a computer model of a scene may be created.
  • a synthetic computer model of a virtual scene may be used.
  • the models (at successive time instances) are then transmitted immediately or later to the storage and processing network for processing and conversion into a format suitable for subsequent delivery to playback devices.
  • the conversion may involve processing and coding to improve the quality and/or reduce the quantity of the scene model data while preserving the quality at a desired level.
  • Each playback device receives a stream of the data (either computed video data or scene model data) from the network, and renders it into a viewing reproduction of the original location which can be experienced by a user.
  • the reproduction may be two- dimensional or three-dimensional (stereo image pairs).
  • FIGs. 3a and 3b show an encoder and decoder for encoding and decoding texture pictures, geometry pictures and/or auxiliary pictures.
  • a video codec consists of an encoder that transforms an input video into a compressed representation suited for storage/transmission and a decoder that can uncompress the compressed video representation back into a viewable form. Typically, the encoder discards and/or loses some information in the original video sequence in order to represent the video in a more compact form (that is, at lower bitrate).
  • An example of an encoding process is illustrated in Figure 3a.
  • Figure 3a illustrates an image to be encoded (P); a predicted representation of an image block (P' n ); a prediction error signal (D n ); a reconstructed prediction error signal (D' n ); a preliminary reconstructed image (I' n ); a final reconstructed image (R' n ); a transform (T) and inverse transform (T 1 ); a quantization (Q) and inverse quantization (Q 1 ); entropy encoding (E); a reference frame memory (RFM); inter prediction (Pinter); intra prediction (Pmtra); mode selection (MS) and filtering (F).
  • Figure 3b illustrates a predicted representation of an image block (P' n ); a reconstructed prediction error signal (D' n ); a preliminary reconstructed image (I' n ); a final reconstructed image (R' n ); an inverse transform (T 1 ); an inverse quantization (Q 1 ); an entropy decoding (E 1 ); a reference frame memory (RFM); a prediction (either inter or intra) (P); and filtering (F).
  • pixel values in a certain picture area are predicted for example by motion compensation means (finding and indicating an area in one of the previously coded video frames that corresponds closely to the block being coded) or by spatial means (using the pixel values around the block to be coded in a specified manner).
  • the prediction error i.e. the difference between the predicted block of pixels and the original block of pixels. This is typically done by transforming the difference in pixel values using a specified transform (e.g. Discrete Cosine Transform (DCT) or a variant of it), quantizing the coefficients and entropy coding the quantized coefficients.
  • DCT Discrete Cosine Transform
  • Video codecs may also provide a transform skip mode, which the encoders may choose to use.
  • the prediction error is coded in a sample domain, for example by deriving a sample- wise difference value relative to certain adjacent samples and coding the sample-wise difference value with an entropy coder.
  • a coding block may be defined as an NxN block of samples for some value of N such that the division of a coding tree block into coding blocks is a partitioning.
  • a coding tree block may be defined as an NxN block of samples for some value of N such that the division of a component into coding tree blocks is a partitioning.
  • a coding tree unit may be defined as a coding tree block of luma samples, two corresponding coding tree blocks of chroma samples of a picture that has three sample arrays, or a coding tree block of samples of a monochrome picture or a picture that is coded using three separate color planes and syntax structures used to code the samples.
  • a coding unit may be defined as a coding block of luma samples, two corresponding coding blocks of chroma samples of a picture that has three sample arrays, or a coding block of samples of a monochrome picture or a picture that is coded using three separate color planes and syntax structures used to code the samples.
  • a CU with the maximum allowed size may be named as LCU (largest coding unit) or coding tree unit (CTU) and the video picture is divided into non overlapping LCUs.
  • a picture can be partitioned in tiles, which are rectangular and contain an integer number of LCUs.
  • the partitioning to tiles forms a regular grid, where heights and widths of tiles differ from each other by one LCU at the maximum.
  • a slice is defined to be an integer number of coding tree units contained in one independent slice segment and all subsequent dependent slice segments (if any) that precede the next independent slice segment (if any) within the same access unit.
  • a slice segment is defined to be an integer number of coding tree units ordered consecutively in the tile scan and contained in a single NAL unit. The division of each picture into slice segments is a partitioning.
  • an independent slice segment is defined to be a slice segment for which the values of the syntax elements of the slice segment header are not inferred from the values for a preceding slice segment
  • a dependent slice segment is defined to be a slice segment for which the values of some syntax elements of the slice segment header are inferred from the values for the preceding independent slice segment in decoding order.
  • a slice header is defined to be the slice segment header of the independent slice segment that is a current slice segment or is the independent slice segment that precedes a current dependent slice segment
  • a slice segment header is defined to be a part of a coded slice segment containing the data elements pertaining to the first or all coding tree units represented in the slice segment.
  • the CUs are scanned in the raster scan order of LCUs within tiles or within a picture, if tiles are not in use. Within an LCU, the CUs have a specific scan order.
  • Entropy coding/decoding may be performed in many ways. For example, context- based coding/decoding may be applied, where in both the encoder and the decoder modify the context state of a coding parameter based on previously coded/decoded coding parameters. Context-based coding may for example be context adaptive binary arithmetic coding
  • CABAC context-based variable length coding
  • Entropy coding/decoding may alternatively or additionally be performed using a variable length coding scheme, such as Huffman coding/decoding or Exp-Golomb coding/decoding.
  • Decoding of coding parameters from an entropy-coded bitstream or codewords may be referred to as parsing.
  • Available media file format standards include ISO base media file format (ISO/IEC 14496-12, which may be abbreviated ISOBMFF).
  • ISOBMFF ISO base media file format
  • HEIF High Efficiency Image File Format
  • Out-of-band transmission, signaling or storage can be used for tolerance against transmission errors as well as for other purposes, such as ease of access or session
  • a sample entry of a track in a file conforming to the ISO Base Media File Format may comprise parameter sets, while the coded data in the bitstream is stored elsewhere in the file or in another file.
  • the phrase along the bitstream (e.g. indicating along the bitstream) or along a coded unit of a bitstream (e.g. indicating along a coded tile) may be used in claims and described embodiments to refer to out-of-band transmission, signaling, or storage in a manner that the out-of-band data is associated with the bitstream or the coded unit, respectively.
  • decoding along the bitstream or along a coded unit of a bitstream or alike may refer to decoding the referred out-of-band data (which may be obtained from out-of-band transmission, signaling, or storage) that is associated with the bitstream or the coded unit, respectively.
  • the phrase along the bitstream may be used when the bitstream is contained in a file, such as a file conforming to the ISO Base Media File Format, and certain file metadata is stored in the file in a manner that associates the metadata to the bitstream, such as boxes in the sample entry for a track containing the bitstream, a sample group for the track containing the bitstream, or a timed metadata track associated with the track containing the bitstream.
  • ISOBMFF Some concepts, structures, and specifications of ISOBMFF are described below as an example of a container file format, based on which the embodiments may be implemented.
  • the aspects of the invention are not limited to ISOBMFF, but rather the description is given for one possible basis on top of which the invention may be partly or fully realized.
  • a basic building block in the ISO base media file format is called a box.
  • Each box has a header and a payload.
  • the box header indicates the type of the box and the size of the box in terms of bytes.
  • a box may enclose other boxes, and the ISO file format specifies which box types are allowed within a box of a certain type. Furthermore, the presence of some boxes may be mandatory in each file, while the presence of other boxes may be optional. Additionally, for some box types, it may be allowable to have more than one box present in a file. Thus, the ISO base media file format may be considered to specify a hierarchical structure of boxes.
  • a file includes media data and metadata that are encapsulated into boxes. Each box is identified by a four character code (4CC) and starts with a header which informs about the type and size of the box.
  • 4CC four character code
  • the media data may be provided in a media data‘mdat‘ box and the movie‘moov’ box may be used to enclose the metadata.
  • the movie‘moov’ box may include one or more tracks, and each track may reside in one corresponding track‘trak’ box.
  • a track may be one of the many types, including a media track that refers to samples formatted according to a media compression format (and its encapsulation to the ISO base media file format).
  • the Matroska file format is capable of (but not limited to) storing any of video, audio, picture, or subtitle tracks in one file.
  • Matroska may be used as a basis format for derived file formats, such as WebM.
  • Matroska uses Extensible Binary Meta Language (EBML) as basis.
  • EBML specifies a binary and octet (byte) aligned format inspired by the principle of XML.
  • EBML itself is a generalized description of the technique of binary markup.
  • a Matroska file consists of Elements that make up an EBML "document.” Elements incorporate an Element ID, a descriptor for the size of the element, and the binary data itself. Elements can be nested.
  • a Segment Element of Matroska is a container for other top-level (level 1) elements.
  • a Matroska file may comprise (but is not limited to be composed of) one Segment.
  • Multimedia data in Matroska files is organized in Clusters (or Cluster Elements), each containing typically a few seconds of multimedia data.
  • a Cluster comprises BlockGroup elements, which in turn comprise Block Elements.
  • a Cues Element comprises metadata which may assist in random access or seeking and may include file pointers or respective timestamps for seek points.
  • Figs. 4a, 4b, 4c and 4d show a setup for forming a stereo image of a scene to a user, for example a video frame of a 3D video. In Fig.
  • a situation is shown where a human being is viewing two spheres A1 and A2 using both eyes El and E2.
  • the sphere A1 is closer to the viewer than the sphere A2, the respective distances to the first eye El being LEI,AI and LEI,A2.
  • the different objects reside in space at their respective (x,y,z) coordinates, defined by the coordinate system SZ, SY and SZ.
  • the distance di2 between the eyes of a human being may be approximately 62-64 mm on average, and varying from person to person between 55 and 74 mm. This distance is referred to as the parallax, on which stereoscopic view of the human vision is based on.
  • the viewing directions (optical axes) DIR1 and DIR2 are typically essentially parallel, possibly having a small deviation from being parallel, and define the field of view for the eyes.
  • the head of the user has an orientation (head orientation) in relation to the surroundings, most easily defined by the common direction of the eyes when the eyes are looking straight ahead. That is, the head orientation tells the yaw, pitch and roll of the head in respect of a coordinate system of the scene where the user is.
  • the spheres A1 and A2 are in the field of view of both eyes.
  • the centre-point O12 between the eyes and the spheres are on the same line. That is, from the centre-point, the sphere A2 is behind the sphere Al.
  • each eye sees part of sphere A2 from behind Al, because the spheres are not on the same line of view from either of the eyes.
  • Fig. 4b there is a setup shown, where the eyes have been replaced by cameras Cl and C2, positioned at the location where the eyes were in Fig. 4a.
  • the distances and directions of the setup are otherwise the same.
  • the purpose of the setup of Fig. 4b is to be able to take a stereo image of the spheres Al and A2.
  • the two images resulting from image capture are Fci and Fc2.
  • the "left eye” image Fci shows the image SA2 of the sphere A2 partly visible on the left side of the image SAI of the sphere Al .
  • the "right eye” image Fc2 shows the image SA2 of the sphere A2 partly visible on the right side of the image SAI of the sphere Al.
  • This difference between the right and left images is called disparity, and this disparity, being the basic mechanism with which the HVS determines depth information and creates a 3D view of the scene, can be used to create an illusion of a 3D image.
  • the camera pair Cl and C2 has a natural parallax, that is, it has the property of creating natural disparity in the two images of the cameras. Natural disparity may be understood to be created even though the distance between the two cameras forming the stereo camera pair is somewhat smaller or larger than the normal distance (parallax) between the human eyes, e.g. essentially between 40 mm and 100 mm or even 30 mm and 120 mm.
  • the images Fci and Fc2 may be captured by cameras Cl and C2, where the cameras Cl and C2 may be real-world cameras or they may be virtual cameras.
  • the images Fci and Fc2 may be computed from a computer model of a scene by setting the direction, orientation and viewport of the cameras Cl and C2 appropriately such that a stereo image pair suitable for viewing by the human visual system (HVS) is created.
  • HVS human visual system
  • Fig. 4c the creating of this 3D illusion is shown.
  • the images Fci and Fc2 captured or computed by the cameras Cl and C2 are displayed to the eyes El and E2, using displays D1 and D2, respectively.
  • the disparity between the images is processed by the human visual system so that an understanding of depth is created. That is, when the left eye sees the image S A 2 of the sphere A2 on the left side of the image S AI of sphere Al, and respectively the right eye sees the image S A 2 of the sphere A2 on the right side, the human visual system creates an understanding that there is a sphere V2 behind the sphere VI in a three-dimensional world.
  • the images Fci and Fc2 can also be synthetic, that is, created by a computer. If they carry the disparity information, synthetic images will also be seen as three-dimensional by the human visual system. That is, a pair of computer-generated images can be formed so that they can be used as a stereo image.
  • Fig. 4d illustrates how the principle of displaying stereo images to the eyes can be used to create 3D movies or virtual reality scenes having an illusion of being three- dimensional.
  • the images Fxi and Fx2 are either captured with a stereo camera or computed from a model so that the images have the appropriate disparity.
  • a large number e.g. 30
  • the human visual system will create a cognition of a moving, three-dimensional image.
  • the field of view represented by the content may be greater than the displayed field of view e.g. in an arrangement depicted in Fig. 4d. Consequently, only a part of the content along the direction of view (a.k.a. viewing orientation) is displayed at a single time.
  • This direction of view that is, the head orientation
  • This direction of view may be determined as a real orientation of the head e.g. by an orientation detector mounted on the head, or as a virtual orientation determined by a control device such as a joystick or mouse that can be used to manipulate the direction of view without the user actually moving his head.
  • head orientation may be used to refer to the actual, physical orientation of the user's head and changes in the same, or it may be used to refer to the virtual direction of the user's view that is determined by a computer program or a computer input device.
  • the content may enable viewing from several viewing positions within the 3D space.
  • the texture picture(s), the geometry picture(s) and the geometry information may be used to synthesize the images Fxi and/or Fx2 as if the displayed content was captured by camera(s) located at the viewing position.
  • volumetric video describes a 3D scene or object at different (successive) time instances, such data can be viewed from any viewpoint. Therefore, volumetric video is an important format for any augmented reality, virtual reality and mixed reality applications, especially for providing viewing capabilities having six degrees of freedom (so-called 6DOF viewing).
  • FIG. 5a illustrates projection of source volumes in a digital scene model SCE and parts of an object model OBJ1, OBJ2, OBJ3, BG4 to projection surfaces SI, S2, S3, S4, as well as determining depth information for the purpose of encoding volumetric video.
  • the projection of source volumes SV 1 , SV2, SV3, SV4 may result in texture pictures and geometry pictures, and there may be geometry information related to the projection source volumes and/or projection surfaces.
  • Texture pictures, geometry pictures and projection geometry information may be encoded into a bitstream.
  • a texture picture may comprise information on the colour data of the source of the projection. Through the projection, such colour data may result in pixel colour information in the texture picture. Pixels may be coded in groups, e.g. coding units of rectangular shape.
  • the projection geometry information may comprise but is not limited to one or more of the following:
  • - projection surface type such as a cube, sphere, cylinder, polyhedron
  • a projection centre such as a projection centre point, axis, or plane, from which a geometry primitive is projected onto the projection surface
  • the projection may take place by projecting the geometry primitives (points of a point could, triangles of a triangle mesh or voxels of a voxel array) of a source volume SV1, SV2, SV3, SV4 (or an object OBJ1, OBJ2, OBJ3, BG4) onto a projection surface SI, S2, S3, S4.
  • the geometry primitives may comprise information on the texture, for example a colour value or values of a point, a triangle or a voxel.
  • the projection surface may surround the source volume at least partially such that projection of the geometry primitives happens from the centre of the projection surface outwards to the surface.
  • a cylindrical surface has a projection centre axis and a spherical surface has a projection centre point.
  • a cubical or rectangular surface may have projection centre planes or a projection centre axis or point and the projection of the geometry primitives may take place either orthogonally to the sides of the surface or from the projection centre axis or point outwards to the surface.
  • the projection surfaces e.g. cylindrical and rectangular, may be open from the top and the bottom such that when the surface is cut and rolled out on a two-dimensional plane, it forms a rectangular shape.
  • Such rectangular shape with pixel data can be encoded and decoded with a video codec.
  • the projection surface such as a planar surface or a sphere may be inside group of geometry primitives, e.g. inside a point cloud that defines a surface.
  • the projection may take place from outside in towards the centre and may result in sub-sampling of the texture data of the source.
  • points may be represented with any floating point coordinates.
  • a quantized point cloud may be used to reduce the amount of data, whereby the coordinate values of the point cloud are represented e.g. with 10-bit, 12-bit or 16-bit integers. Integers may be used because hardware accelerators may be able to operate on integers more efficiently.
  • the points in the point cloud may have associated colour, reflectance, opacity etc. texture values.
  • the points in the point cloud may also have a size, or a size may be the same for all points. The size of the points may be understood as indicating how large an object the point appears to be in the model in the projection.
  • the point cloud is projected by ray casting from the projection surface to find out the pixel values of the projection surface. In such a manner, the topmost point remains visible in the projection, while points closer to the centre of the projection surface may be occluded.
  • the original point cloud, meshes, voxels, or any other model is projected outwards to a simple geometrical shape, this simple geometrical shape being the projection surface.
  • MPEG-I PCC point cloud compression
  • MPEG-I PCC is standardization activity of Moving Picture Experts Group to develop standardized 3D point cloud compression (PCC).
  • the aim is to support efficient and interoperable storage and exchange of 3D point clouds with the specified requirements for lossless and/or lossy coding of geometry coordinates, lossless and/or lossy coding of point cloud attributes data and support for time varying point clouds.
  • Different projection surfaces may have different characteristics in terms of projection and reconstruction.
  • a projection to a cubical surface may be the most efficient, and a cylindrical projection surface may provide accurate results efficiently.
  • cones, polyhedron-based parallelepipeds (hexagonal or octagonal, for example) and spheres or a simple plane may be used as projection surfaces.
  • the phrase along the bitstream may be defined to refer to out-of-band transmission, signalling, or storage in a manner that the out-of-band data is associated with the bitstream.
  • the phrase decoding along the bitstream or alike may refer to decoding the referred out-of-band data (which may be obtained from out-of-band transmission, signalling, or storage) that is associated with the bitstream.
  • an indication along the bitstream may refer to metadata in a container file that encapsulates the bitstream.
  • a first texture picture may be encoded into a bitstream, and the first texture picture may comprise a first projection of texture data of a first source volume SV1 of a scene model SCE onto a first projection surface SI.
  • the scene model SCE may comprise a number of further source volumes SV2, SV3, SV4.
  • data on the position of the originating geometry primitive may also be determined, and based on this determination, a geometry picture may be formed. This may happen for example so that depth data is determined for each or some of the texture pixels of the texture picture. Depth data is formed such that the distance from the originating geometry primitive such as a point to the projection surface is determined for the pixels. Such depth data may be represented as a depth picture, and similarly to the texture picture, such geometry picture (in this example, depth picture) may be encoded and decoded with a video codec.
  • This first geometry picture may be seen to represent a mapping of the first projection surface to the first source volume, and the decoder may use this information to determine the location of geometry primitives in the model to be reconstructed.
  • a picture may be defined to be either a frame or a field.
  • a frame may be defined to comprise a matrix of luma samples and possibly the corresponding chroma samples.
  • a field may be defined to be a set of alternate sample rows of a frame. Fields may be used as encoder input for example when the source signal is interlaced. Chroma sample arrays may be absent (and hence monochrome sampling may be in use) or may be subsampled when compared to luma sample arrays.
  • each of the two chroma arrays has half the height and half the width of the luma array.
  • each of the two chroma arrays has the same height and half the width of the luma array.
  • each of the two chroma arrays has the same height and width as the luma array.
  • An attribute picture may be defined as a picture that comprises additional information related to an associated texture picture.
  • An attribute picture may for example comprise surface normal, opacity, or reflectance information for a texture picture.
  • a geometry picture may be regarded as one type of an attribute picture, although a geometry picture may be treated as its own picture type, separate from an attribute picture.
  • Texture picture(s) and the respective geometry picture(s), if any, and the respective attribute picture(s) may have the same or different chroma format.
  • Terms texture image and texture picture may be used interchangeably.
  • Terms geometry image and geometry picture may be used interchangeably.
  • a specific type of a geometry image is a depth image. Embodiments described in relation to a geometry image equally apply to a depth image, and embodiments described in relation to a depth image equally apply to a geometry image.
  • Terms attribute image and attribute picture may be used interchangeably.
  • a geometry picture and/or an attribute picture may be treated as an auxiliary picture in video/image encoding and/or decoding.
  • a pixel may be defined to a be a sample of one of the sample arrays of the picture or may be defined to comprise the collocated samples of all the sample arrays of the picture.
  • multiple source volumes may be encoded as texture pictures, geometry pictures and projection geometry information into the bitstream in a similar manner. That is, as in Fig. 5a, the scene model SCE may comprise multiple objects OBJ1, OBJ2, OBJ3, OBJ4, and these may be treated as source volumes SV1, SV2, SV3, SV4 and each object may be coded as a texture picture, geometry picture and projection geometry information.
  • the first texture picture of the first source volume SV1 and further texture pictures of the other source volumes SV2, SV3, SV4 may represent the same time instance. That is, there may be a plurality of texture and geometry pictures and projection geometry information for one time instance, and the other time instances may be coded in a similar manner. Since the various source volumes are in this way producing sequences of texture pictures and sequences of geometry pictures, as well as sequences of projection geometry information, the inter-picture redundancy in the picture sequences can be used to encode the texture and geometry data for the source volumes efficiently, compared to the presently known ways of encoding volume data.
  • An object OBJ3 (source volume SV3) may be projected onto a projection surface S3 and encoded into the bitstream as a texture picture, geometry picture and projection geometry information as described above. Furthermore, such source volume may be indicated to be static by encoding information into said bitstream on said fourth projection geometry being static.
  • a static source volume or object may be understood to be an object whose position with respect to the scene model remains the same over two or more or all time instances of the video sequence.
  • the geometry data may also stay the same, that is, the object's shape remains the same over two or more time instances.
  • some or all of the texture data may stay the same over two or more time instances.
  • the decoder By encoding information into the bitstream of the static nature of the source volume the encoding efficiency may further be improved, as the same information may not need to be coded multiple times. In this manner, the decoder will also be able to use the same reconstruction or partially same reconstruction of the source volume (object) over multiple time instances.
  • the different source volumes may be coded into the bitstream with different frame rates.
  • a slow-moving or relatively unchanging object may be encoded with a first frame rate
  • a fast-moving and/or changing object may be coded with a second frame rate.
  • the first frame rate may be slower than the second frame rate, for example one half or one quarter of the second frame rate, or even slower.
  • the second frame rate may be 15 frames per second, or 1 frame per second.
  • the first and second object (source volumes) may be "sampled" in synchrony such that some frames of the faster frame rate coincide with frames of the slower frame rate.
  • the scene model may have a coordinate system and one or more of the objects (source volumes) in the scene model may have their local coordinate systems.
  • the shape, size, location and orientation of one or more projection surfaces may be encoded into or along the bitstream with respect to the scene model coordinates.
  • the encoding may be done with respect to coordinates of the scene model or said first source volume. The choice of coordinate systems may improve the coding efficiency.
  • Information on temporal changes in location, orientation and size of one or more said projection surfaces may be encoded into or along the bitstream. For example, if one or more of the objects (source volumes) being encoded is moving or rotating with respect to the scene model, the projection surface moves or rotates with the object to preserve the projection as similar as possible.
  • the projection surfaces may be sub-divided respectively. Therefore, information on sub division of one or more of the source volumes and respective changes in one or more of the projection surfaces may be encoded into or along the bitstream.
  • the resulting bitstream may then be output to be stored or transmitted for later decoding and reconstruction of the scene model.
  • a first texture picture may be decoded from a bitstream to obtain first decoded texture data, where the first texture picture comprises a first projection of texture data of a first source volume of the scene model to be reconstructed onto a first projection surface.
  • the scene model may comprise a number of further source volumes.
  • a first geometry picture may be decoded from the bitstream to obtain first decoded scene model geometry data.
  • the first geometry picture may represent a mapping of the first projection surface to the first source volume.
  • First projection geometry information of the first projection may be decoded from the bitstream, the first projection geometry information comprising information of position of the first projection surface in the scene model.
  • a reconstructed scene model may be formed by projecting the first decoded texture data to a first destination volume using the first decoded scene model geometry data and said first projection geometry information to determine where the decoded texture information is to be placed in the scene model.
  • a 3D scene model may be classified into two parts: first all dynamic parts, and second all static parts.
  • the dynamic part of the 3D scene model may further be sub-divided into separate parts, each representing objects (or parts of) an object in the scene model, that is, source volumes.
  • the static parts of the scene model may include e.g. static room geometry (walls, ceiling, fixed furniture) and may be compressed either by known volumetric data compression solutions, or, similar to the dynamic part, sub-divided into individual objects for projection-based compression as described earlier, to be encoded into the bitstream.
  • some objects may be a chair (static), a television screen (static geometry, dynamic texture), a moving person (dynamic).
  • a suitable projection geometry surface
  • the 3D data of each object may then be projected onto the respective projection surface and 2D planes are derived by "unfolding" the projections from three dimensions to two dimensions (plane).
  • the unfolded planes will have several channels, typically three for the colour representation of the texture, e.g. RGB, YUV, and one additional plane for the geometry (depth) of each projected point for later
  • Frame packing may be defined to comprise arranging more than one input picture, which may be referred to as (input) constituent frames, into an output picture.
  • frame packing is not limited to any particular type of constituent frames or the constituent frames need not have a particular relation with each other.
  • frame packing is used for arranging constituent frames of a stereoscopic video clip into a single picture sequence.
  • the arranging may include placing the input pictures in spatially non-overlapping areas within the output picture. For example, in a side-by-side arrangement, two input pictures are placed within an output picture horizontally adjacently to each other.
  • the arranging may also include partitioning of one or more input pictures into two or more constituent frame partitions and placing the constituent frame partitions in spatially non-overlapping areas within the output picture.
  • the output picture or a sequence of frame-packed output pictures may be encoded into a bitstream e.g. by a video encoder.
  • the bitstream may be decoded e.g. by a video decoder.
  • the decoder or a post-processing operation after decoding may extract the decoded constituent frames from the decoded picture(s) e.g. for displaying.
  • a standard 2D video encoder may then receive the planes as inputs, either as individual layers per object, or as a frame-packed representation of all objects.
  • the texture picture may thus comprise a plurality of projections of texture data from further source volumes and the geometry picture may represent a plurality of mappings of projection surfaces to the source volume.
  • separation boundaries may be signalled to recreate the individual planes for each object
  • classification of each object as static/dynamic may be signalled
  • the decoder may receive the static 3D scene model data together with the video bitstreams representing the dynamic parts of the scene model. Based on the signalled information on the projection geometries, each object may be reconstructed in 3D space and the decoded scene model is created by fusing all reconstructed parts (objects or source volumes) together.
  • Standard video encoding hardware may be utilized for real-time
  • FIG. 5b shows an example of projecting an object OBJ1 using a cube map projection format, wherein there are six projection surfaces PS 1 , ... ,PS6 of the proj ection cube PC 1.
  • the projection surfaces are one on the left side PS1, one in front PS2, one on the right side PS3, one in the back PS4, one in the bottom PS5, and one in the top PS6 of the cube PCI in the setup of Figure 5b.
  • Figure 6 shows an example of a volumetric video compression pipeline and processing steps relating to real-time viewing of the 3D content.
  • a dynamic 3D scene 600 is input to the content pre-processing pipeline.
  • each frame of the input 3D scene is processed separately.
  • the input 3D scene is converted into a canonical representation for processing.
  • each frame of the input is converted into a collection of 3D samples of the scene geometry, at a specified internal processing resolution. Depending on the input, this may involve e.g. voxelizing a mesh model, or down-sampling a more highly detailed point cloud into the processing resolution.
  • the internal representation is then a point cloud representing the spatial 3D samples of the input scene.
  • the View Optimizer unit 604 takes the internal point cloud format and creates a segmentation of the scene optimized for the specified viewing conditions. This involves creating view-tiles that have sufficient coverage and resolution for representing the original input scene at minimal quality degradation within the given viewing constraints.
  • the View Optimizer unit 604 makes use of the 3D position of the scene samples, but additional attributes such as surface normal, color, or material attributes may also be considered.
  • the resulting view-tiles are then pre-rendered in the View-tile Rendering unit 608. This may involve resampling an input point cloud into 2D tile projections, or calling an external path tracing Tenderer to render views of the original input scene.
  • the rendered tiles are fed to the Atlas Packer unit 610, which produces an optimal 2D layout of the rendered view-tiles and packs the pre-rendered tiles into video frames.
  • the video frames are piped to Video Compression unit 612 for generating the final compressed data representation. It is noted all these stages handle the video data as per- frame basis.
  • the compressed view-tiles are stored as video bitstreams, represented by the Compressed View-tile unit 614.
  • the compressed video frame bitstreams and the view-tile metadata bitstreams are used in the View Synthesis unit 616 for creating novel views of the scene.
  • the view-tile metadata contains the necessary information for the view synthesizer to employ rendering methods, such as point cloud rendering, mesh rendering, or ray-casting to reconstruct a view of the scene from any given 3D viewpoint (assuming the originally specified viewing constraints). Consequently, real-time 3D viewing 618 of the volumetric video can be achieved.
  • a method which is disclosed in Figure 7, comprises obtaining (700) a plurality of frames of a three-dimensional (3D) video stream, wherein each of said frames comprises a point cloud representation of spatial samples of a 3D input scene; combining (702) the point cloud representations of said frames into an accumulated point cloud model; and providing (704), in response to the number of said frames combined in said accumulated point cloud model reaching a predetermined threshold value, said accumulated point cloud model into a view optimization process for segmenting the 3D scene.
  • additional processing steps are provided in the underlying video codec to be carried out before the view segmentation process, wherein the processing steps provide temporal accumulation of scene geometry over a period of a predetermined number of volumetric frames.
  • the temporally accumulated scene is input to the view segmentation process instead of the per-frame input of the original scene frames.
  • This enables to handle any kind of dynamic scenes, not constrained to meshes, and to generate a static view layout optimized for the temporal flow of the scene in addition to the per-frame geometry.
  • the amount of view metadata to be coded is significantly reduced, and the video compression efficiency is increased in terms of bitrate and reducing artefacts due to temporal incoherency.
  • the predetermined threshold value corresponds to a size of Group-of-Pictures (GoP).
  • Group-of-Pictures (GoP) is a sub-sequence of an encoded video stream comprising a plurality of frames. GoP is recognized by most of the
  • the size of GoP in terms of the number of frames, provides a good basis for the temporally accumulated point cloud model to be supplied in and processed by the view segmentation process.
  • the predetermined threshold value is 32. Assuming a GoP size is 32 frames, then the view segmentation process is only run for every 32 frames, in contrast to per- frame approach. This makes the view optimization process much faster in addition to producing temporal stability.
  • Figure 8 illustrates some processing steps, which may be carried out according to various embodiments.
  • the processing steps of Figure 8 are carried out between the Input Conversion 602 and the View Optimizer 604 stages.
  • the processing step illustrated in Figure 8 may be referred to as Temporal Fusion. This changes the processing so that a sub-sequence of multiple input frames, typically aligned with the video GoP length, is first read in and combined into a 4D representation of the sub-sequence.
  • the Input Conversion provides the frames 800 comprising the internal point cloud representations.
  • the internal point cloud is not fed into the View Optimizer 604 immediately. Instead, the frame is read 802 and its samples are added 804 to the accumulated internal point cloud model 806. Then, a subsequent frame is read and added to the accumulated internal point cloud model 806. After adding a frame, it is checked 808 whether the number of added frames has reached the predetermined threshold value, such as the GoP size. If not, the loop of reading and adding a new frame is continued until the predetermined threshold value has been reached. This triggers the accumulated internal point cloud model 806 to be fed into the View Optimizer 604.
  • the predetermined threshold value such as the GoP size
  • the method further comprises checking, prior to combining any frame into said accumulated point cloud model, content of the frame; and ignoring frames providing no relevant data for the view optimization process.
  • it is checked whether similar samples already exist in the accumulated point cloud model, so that the new sample may only be added if it adds new data relevant for the View Optimizer.
  • Figure 9 shows an example of the effects of the temporally accumulated point cloud model on the view optimization process for a sub-region of a scene.
  • Figure 9a shows a simplified view tile generated for a piece of content (the arc) from a single frame.
  • Figure 9b shows the predetermined number of the accumulated frames of the moving content, and the resulting view tiles.
  • Figure 9b only the content rendered inside each tile changes per frame.
  • the Temporal Fusion i.e. the accumulation process, adds multiple copies of all scene elements together, and the View Optimizer then produces a tiling of the scene that captures the joint scene samples efficiently.
  • the method further comprises creating metadata relating to the accumulated point cloud model, said metadata comprising position and size of each tile and view-projection parameters of each tile.
  • certain metadata is preferably coded into the video stream.
  • the tile positions and sizes inside the video atlas, as well as the view-projection parameters associated with each tile, may be included. After temporal fusion, such data will be required only once per each unit of temporal fusion, typically one GoP.
  • An apparatus comprises at least one processor and at least one memory, said at least one memory stored with computer program code thereon, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus at least to perform: obtaining a plurality of frames of a three- dimensional (3D) video stream, wherein each of said frames comprises a point cloud representation of spatial samples of a 3D input scene; combining the point cloud
  • the various embodiments of the invention may be implemented in hardware or special purpose circuits or any combination thereof. While various aspects of the invention may be illustrated and described as block diagrams or using some other pictorial representation, it is well understood that these blocks, apparatus, systems, techniques or methods described herein may be implemented in, as non-limiting examples, hardware, software, firmware, special purpose circuits or logic, general purpose hardware or controller or other computing devices, or some combination thereof.
  • Embodiments of the inventions may be practiced in various components such as integrated circuit modules. The design of integrated circuits is by and large a highly automated process. Complex and powerful software tools are available for converting a logic level design into a semiconductor circuit design ready to be etched and formed on a semiconductor substrate.
  • Programs such as those provided by Synopsys, Inc. of Mountain View, California and Cadence Design, of San Jose, California automatically route conductors and locate components on a semiconductor chip using well established rules of design as well as libraries of pre-stored design modules.
  • the resultant design in a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a semiconductor fabrication facility or "fab" for fabrication.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)

Abstract

There are disclosed amethodand anapparatus for video encoding.A method comprises obtaining a plurality of frames of a three-dimensional (3D) video stream, wherein each of said frames comprises a point cloud representation of spatial samples of a 3D input scene;combining the point cloud representations of said frames into an accumulated point cloud model; and providing, in response to the number of said frames combined in said accumulated point cloud model reaching a predetermined threshold value, said accumulated point cloud model into a view optimization process for segmenting the 3D scene.

Description

AN APPARATUS, A METHOD AND A COMPUTER PROGRAM FOR
VOLUMETRIC VIDEO
TECHNICAL FIELD
[0001] The present invention relates to an apparatus, a method and a computer program for volumetric video coding and decoding.
BACKGROUND
[0002] Volumetric video data represents a three-dimensional scene or object and can be used as input for virtual reality (VR), augmented reality (AR) and mixed reality (MR) applications. Such data describes the geometry, e.g. shape, size, position in three-dimensional (3D) space, and respective attributes, e.g. colour, opacity, reflectance and any possible temporal changes of the geometry and attributes at given time instances. Volumetric video is either generated from 3D models through computer-generated imagery (CGI), or captured from real-world scenes using a variety of capture solutions, e.g. multi-camera, laser scan, combination of video and dedicated depth sensors, and more. Also, a combination of CGI and real-world data is possible.
[0003] A volumetric video compression pipeline used for generating 3D content for real time viewing comprises a plurality of processing steps, typically including at least input conversion for converting the input 3D scene into an internal representation, such as a point cloud, representing the spatial 3D samples of the input scene, view optimizing for creating a segmentation of the scene into segments optimized for the specified viewing conditions, pre rendering of the segments, producing an optimal 2D layout of the rendered segments and packing the pre-rendered segments into video frames. Finally, the video frames are compressed into the final compressed data representation.
[0004] However, all these stages handle the video data as per-frame basis, which may cause problems relating to temporal coherency in volumetric video compression. As the segmentation of the 3D scene depends on the content of the scene, for dynamic content, the segmentation can change on a per-frame basis. Since video compression in turn relies on compressing temporal redundancy, a rapidly changing tile atlas is poorly suited for video compression. SUMMARY
[0005] Now, an improved method and technical equipment implementing the method has been invented, by which the above problems are alleviated. Various aspects include a method and an apparatus, which are characterized by what is stated in the independent claims.
Various details of the embodiments are disclosed in the dependent claims and in the corresponding images and description.
[0006] According to a first aspect, there is provided a method comprising obtaining a plurality of frames of a three-dimensional (3D) video stream, wherein each of said frames comprises a point cloud representation of spatial samples of a 3D input scene; combining the point cloud representations of said frames into an accumulated point cloud model; and providing, in response to the number of said frames combined in said accumulated point cloud model reaching a predetermined threshold value, said accumulated point cloud model into a view optimization process for segmenting the 3D scene.
[0007] According to an embodiment, the predetermined threshold value corresponds to a size of Group-of-Pictures (GoP).
[0008] According to an embodiment, the predetermined threshold value is 32.
[0009] According to an embodiment, the method further comprises checking, prior to combining any frame into said accumulated point cloud model, content of the frame; and ignoring frames providing no relevant data for the view optimization process.
[0010] According to an embodiment, the method further comprises creating metadata relating to the accumulated point cloud model, said metadata comprising position and size of each tile and view-projection parameters of each tile.
[0011] An apparatus according to a second aspect comprises means for obtaining a plurality of frames of a three-dimensional (3D) video stream, wherein each of said frames comprises a point cloud representation of spatial samples of a 3D input scene; means for combining the point cloud representations of said frames into an accumulated point cloud model; and means for providing, responsive to the number of said frames combined in said accumulated point cloud model reaching a predetermined threshold value, said accumulated point cloud model into a view optimization process for segmenting the 3D scene. [0012] Apparatuses according to further aspects comprise at least one processor and at least one memory, said at least one memory stored with code thereon, when executed by said at least one processor, causes the apparatus to perform the above methods.
[0013] Computer readable storage media according to further aspects comprise code for use by an apparatus, which when executed by a processor, causes the apparatus to perform the above methods.
[0014] Further aspects relate at least to an apparatus and computer readable storage medium with computer program code comprising means for performing the above methods and embodiments related thereto.
BRIEF DESCRIPTION OF THE DRAWINGS
[0015] For a more complete understanding of the example embodiments, reference is now made to the following descriptions taken in connection with the accompanying drawings in which:
[0016] Fig. 1 shows a system for capturing, encoding, decoding, reconstructing and viewing a three-dimensional scheme;
[0017] Figs. 2a and 2b show a capture device and a viewing device;
[0018] Figs. 3a and 3b show an encoder and decoder for encoding and decoding texture pictures, geometry pictures and/or auxiliary pictures;
[0019] Figs. 4a, 4b, 4c and 4d show a setup for forming a stereo image of a scene to a user;
[0020] Figs. 5a illustrates projection of source volumes in a scene and parts of an object to projection surfaces, as well as determining depth information;
[0021] Fig. 5b shows an example of projecting an object using a cube map projection format;
[0022] Fig. 6 shows an example of volumetric video compression pipeline;
[0023] Fig. 7 shows a flow chart for temporal accumulation of scene geometry according to an embodiment;
[0024] Fig. 8 shows a block chart of temporal accumulation steps according to an embodiment; and
[0025] Fig. 9 shows an example of the effects of the temporally accumulated point cloud model according to an embodiment. DETAILED DESCRIPTON OF SOME EXAMPLE EMBODIMENTS
[0026] In the following, several embodiments of the invention will be described in the context of point cloud, voxel or mesh scene models for three-dimensional volumetric video and pixel and picture based two-dimensional video coding. It is to be noted, however, that the invention is not limited to specific scene models or specific coding technologies. In fact, the different embodiments have applications in any environment where coding of volumetric scene data is required.
[0027] “Voxel” of a three-dimensional world corresponds to a pixel of a two-dimensional world. Voxels exist in a three-dimensional grid layout. An octree is a tree data structure used to partition a three-dimensional space. Octrees are the three-dimensional analog of quadtrees. A sparse voxel octree (SVO) describes a volume of a space containing a set of solid voxels of varying sizes. Empty areas within the volume are absent from the tree, which is why it is called“sparse”.
[0028] A three-dimensional volumetric representation of a scene is determined as a plurality of voxels on the basis of input streams of at least one multicamera device. Thus, at least one but preferably a plurality (i.e. 2, 3, 4, 5 or more) of multicamera devices are used to capture 3D video representation of a scene. The multicamera devices are distributed in different locations in respect to the scene, and therefore each multicamera device captures a different 3D video representation of the scene. The 3D video representations captured by each multicamera device may be used as input streams for creating a 3D volumetric representation of the scene, said 3D volumetric representation comprising a plurality of voxels. Voxels may be formed from the captured 3D points e.g. by merging the 3D points into voxels comprising a plurality of 3D points such that for a selected 3D point, all neighbouring 3D points within a predefined threshold from the selected 3D point are merged into a voxel without exceeding a maximum number of 3D points in a voxel.
[0029] Voxels may also be formed through the construction of the sparse voxel octree. Each leaf of such a tree represents a solid voxel in world space; the root node of the tree represents the bounds of the world. The sparse voxel octree construction may have the following steps: 1) map each input depth map to a world space point cloud, where each pixel of the depth map is mapped to one or more 3D points; 2) determine voxel attributes such as colour and surface normal vector by examining the neighbourhood of the source pixel(s) in the camera images and the depth map; 3) determine the size of the voxel based on the depth value from the depth map and the resolution of the depth map; 4) determine the SVO level for the solid voxel as a function of its size relative to the world bounds; 5) determine the voxel coordinates on that level relative to the world bounds; 6) create new and/or traversing existing SVO nodes until arriving at the determined voxel coordinates; 7) insert the solid voxel as a leaf of the tree, possibly replacing or merging attributes from a previously existing voxel at those coordinates. Nevertheless, the size of voxel within the 3D volumetric representation of the scene may differ from each other. The voxels of the 3D volumetric representation thus represent the spatial locations within the scene.
[0030] A volumetric video frame is a complete sparse voxel octree that models the world at a specific point in time in a video sequence. Voxel attributes contain information like colour, opacity, surface normal vectors, and surface material properties. These are referenced in the sparse voxel octrees (e.g. colour of a solid voxel), but can also be stored separately.
[0031] Point clouds are commonly used data structures for storing volumetric content. Compared to point clouds, sparse voxel octrees describe a recursive subdivision of a finite volume with solid voxels of varying sizes, while point clouds describe an unorganized set of separate points limited only by the precision of the used coordinate values.
[0032] When encoding a volumetric video, each frame may produce several hundred megabytes or several gigabytes of voxel data which needs to be converted to a format that can be streamed to the viewer, and rendered in real-time. The amount of data depends on the world complexity and volume. The larger impact comes in a multi-device recording setup with a number of separate locations where the cameras are recording. Such a setup produces more information than a camera at a single location.
[0033] Fig. 1 shows a system for capturing, encoding, decoding, reconstructing and viewing a three-dimensional scheme, that is, for 3D video and 3D audio digital creation and playback. The task of the system is that of capturing sufficient visual and auditory
information from a specific scene to be able to create a scene model such that a convincing reproduction of the experience, or presence, of being in that location can be achieved by one or more viewers physically located in different locations and optionally at a time later in the future. Such reproduction requires more information that can be captured by a single camera or microphone, in order that a viewer can determine the distance and location of objects within the scene using their eyes and their ears. To create a pair of images with disparity, two camera sources are used. In a similar manner, for the human auditory system to be able to sense the direction of sound, at least two microphones are used (the commonly known stereo sound is created by recording two audio channels). The human auditory system can detect the cues, e.g. in timing difference of the audio signals to detect the direction of sound. [0034] The system of Fig. 1 may consist of three main parts: image sources, a server and a rendering device. A video source SRC1 may comprise multiple cameras CAM1, CAM2, ..., CAMN with overlapping field of view so that regions of the view around the video capture device is captured from at least two cameras. The video source SRC1 may comprise multiple microphones to capture the timing and phase differences of audio originating from different directions. The video source SRC1 may comprise a high-resolution orientation sensor so that the orientation (direction of view) of the plurality of cameras CAM1, CAM2, ..., CAMN can be detected and recorded. The cameras or the computers may also comprise or be functionally connected to means for forming distance information corresponding to the captured images, for example so that the pixels have corresponding depth data. Such depth data may be formed by scanning the depth or it may be computed from the different images captured by the cameras. The video source SRC1 comprises or is functionally connected to, or each of the plurality of cameras CAM1, CAM2, ..., CAMN comprises or is functionally connected to a computer processor and memory, the memory comprising computer program code for controlling the source and/or the plurality of cameras. The image stream captured by the video source, i.e. the plurality of the cameras, may be stored on a memory device for use in another device, e.g. a viewer, and/or transmitted to a server using a communication interface. It needs to be understood that although a video source comprising three cameras is described here as part of the system, another amount of camera devices may be used instead as part of the system.
[0035] Alternatively or in addition to the source device SRC1 creating information for forming a scene model, one or more sources SRC2 of synthetic imagery may be present in the system, comprising a scene model. Such sources may be used to create and transmit the scene model and its development over time, e.g. instantaneous states of the model. The model can be created or provided by the source SRC1 and/or SRC2, or by the server SERVER. Such sources may also use the model of the scene to compute various video bitstreams for transmission.
[0036] One or more two-dimensional video bitstreams may be computed at the server SERVER or a device RENDERER used for rendering, or another device at the receiving end. When such computed video streams are used for viewing, the viewer may see a three- dimensional virtual world as described in the context of Figs 4a— 4d. The devices SRC1 and SRC2 may comprise or be functionally connected to one or more computer processors (PROC2 shown) and memory (MEM2 shown), the memory comprising computer program (PROGR2 shown) code for controlling the source device SRC1/SRC2. The image stream captured by the device and the scene model may be stored on a memory device for use in another device, e.g. a viewer, or transmitted to a server or the viewer using a communication interface COMM2. There may be a storage, processing and data stream serving network in addition to the capture device SRC1. For example, there may be a server SERVER or a plurality of servers storing the output from the capture device SRC1 or device SRC2 and/or to form a scene model from the data from devices SRC1, SRC2. The device SERVER comprises or is functionally connected to a computer processor PROC3 and memory MEM3, the memory comprising computer program PROGR3 code for controlling the server. The device SERVER may be connected by a wired or wireless network connection, or both, to sources SRC1 and/or SRC2, as well as the viewer devices VIEWER1 and VIEWER2 over the communication interface COMM3.
[0037] The creation of a three-dimensional scene model may take place at the server SERVER or another device by using the images captured by the devices SRC1. The scene model may be a model created from captured image data (a real-world model), or a synthetic model such as on device SRC2, or a combination of such. As described later, the scene model may be encoded to reduce its size and transmitted to a decoder, for example viewer devices.
[0038] For viewing the captured or created video content, there may be one or more viewer devices VIEWER1 and VIEWER2. These devices may have a rendering module and a display module, or these functionalities may be combined in a single device. The devices may comprise or be functionally connected to a computer processor PROC4 and memory MEM4, the memory comprising computer program PROG4 code for controlling the viewing devices. The viewer (playback) devices may consist of a data stream receiver for receiving a video data stream and for decoding the video data stream. The video data stream may be received from the server SERVER or from some other entity, such as a proxy server, an edge server of a content delivery network, or a file available locally in the viewer device. The data stream may be received over a network connection through communications interface COMM4, or from a memory device MEM6 like a memory card CARD2. The viewer devices may have a graphics processing unit for processing of the data to a suitable format for viewing. The viewer VIEWER1 may comprise a high-resolution stereo-image head-mounted display for viewing the rendered stereo video sequence. The head-mounted display may have an orientation sensor DET1 and stereo audio headphones. The viewer VIEWER2 may comprise a display (either two-dimensional or a display enabled with 3D technology for displaying stereo video), and the rendering device may have an orientation detector DET2 connected to it. Alternatively, the viewer VIEWER2 may comprise a 2D display, since the volumetric video rendering can be done in 2D by rendering the viewpoint from a single eye instead of a stereo eye pair.
[0039] It needs to be understood that Fig. 1 depicts one SRC1 device and one SRC2 device, but generally the system may comprise more than one SRC1 device and/or SRC2 device.
[0040] Any of the devices (SRC1, SRC2, SERVER, RENDERER, VIEWER1, VIEWER2) may be a computer or a portable computing device, or be connected to such or configured to be connected to such. Moreover, even if the devices (SRC1, SRC2, SERVER, RENDERER, VIEWER1, VIEWER2) are depicted as a single device in Fig. 1, they may comprise multiple parts or may be comprised of multiple connected devices. For example, it needs to be understood that SERVER may comprise several devices, some of which may be used for editing the content produced by SRC1 and/or SRC2 devices, some others for compressing the edited content, and a third set of devices may be used for transmitting the compressed content. Such devices may have computer program code for carrying out methods according to various examples described in this text.
[0041] Figs. 2a and 2b show a capture device and a viewing device, respectively. Fig. 2a illustrates a camera CAMl. The camera has a camera detector CAMDET1, comprising a plurality of sensor elements for sensing intensity of the light hitting the sensor element. The camera has a lens OBJ1 (or a lens arrangement of a plurality of lenses), the lens being positioned so that the light hitting the sensor elements travels through the lens to the sensor elements. The camera detector CAMDET1 has a nominal centre point CPI that is a middle point of the plurality of sensor elements, for example for a rectangular sensor the crossing point of diagonals of the rectangular sensor. The lens has a nominal centre point PP1, as well, lying for example on the axis of symmetry of the lens. The direction of orientation of the camera is defined by the line passing through the centre point CPI of the camera sensor and the centre point PP1 of the lens. The direction of the camera is a vector along this line pointing in the direction from the camera sensor to the lens. The optical axis of the camera is understood to be this line CP1-PP1. However, the optical path from the lens to the camera detector need not always be a straight line but there may be mirrors and/or some other elements which may affect the optical path between the lens and the camera detector.
[0042] Fig. 2b shows a head-mounted display (HMD) for stereo viewing. The head- mounted display comprises two screen sections or two screens DISP1 and DISP2 for displaying the left and right eye images. The displays are close to the eyes, and therefore lenses are used to make the images easily viewable and for spreading the images to cover as much as possible of the eyes' field of view. When the device will be used by a user, the user may put the device on her/his head so that it will be attached to the head of the user so that it stays in place even when the user turns his head. The device may have an orientation detecting module ORDET1 for determining the head movements and direction of the head. The head-mounted display gives a three-dimensional (3D) perception of the
recorded/streamed content to a user.
[0043] The system described above may function as follows. Time-synchronized video and orientation data is first recorded with the capture devices. This can consist of multiple concurrent video streams as described above. One or more time-synchronized audio streams may also be recorded with the capture devices. The different capture devices may form image and geometry information of the scene from different directions. For example, there may be three, four, five, six or more cameras capturing the scene from different sides, like front, back, left and right, and/or at directions between these, as well as from the top or bottom, or any combination of these. The cameras may be at different distances, for example some of the cameras may capture the whole scene and some of the cameras may be capturing one or more objects in the scene. In an arrangement used for capturing volumetric video data, several cameras may be directed towards an object, looking onto the object from different directions, where the object is e.g. in the middle of the cameras. In this manner, the texture and geometry of the scene and the objects within the scene may be captured adequately. As mentioned earlier, the cameras or the system may comprise means for determining geometry
information, e.g. depth data, related to the captured video streams. From these concurrent video and audio streams, a computer model of a scene may be created. Alternatively or additionally, a synthetic computer model of a virtual scene may be used. The models (at successive time instances) are then transmitted immediately or later to the storage and processing network for processing and conversion into a format suitable for subsequent delivery to playback devices. The conversion may involve processing and coding to improve the quality and/or reduce the quantity of the scene model data while preserving the quality at a desired level. Each playback device receives a stream of the data (either computed video data or scene model data) from the network, and renders it into a viewing reproduction of the original location which can be experienced by a user. The reproduction may be two- dimensional or three-dimensional (stereo image pairs).
[0044] Figs. 3a and 3b show an encoder and decoder for encoding and decoding texture pictures, geometry pictures and/or auxiliary pictures. A video codec consists of an encoder that transforms an input video into a compressed representation suited for storage/transmission and a decoder that can uncompress the compressed video representation back into a viewable form. Typically, the encoder discards and/or loses some information in the original video sequence in order to represent the video in a more compact form (that is, at lower bitrate). An example of an encoding process is illustrated in Figure 3a. Figure 3a illustrates an image to be encoded (P); a predicted representation of an image block (P'n); a prediction error signal (Dn); a reconstructed prediction error signal (D'n); a preliminary reconstructed image (I'n); a final reconstructed image (R'n); a transform (T) and inverse transform (T 1); a quantization (Q) and inverse quantization (Q 1); entropy encoding (E); a reference frame memory (RFM); inter prediction (Pinter); intra prediction (Pmtra); mode selection (MS) and filtering (F).
[0045] An example of a decoding process is illustrated in Figure 3b. Figure 3b illustrates a predicted representation of an image block (P'n); a reconstructed prediction error signal (D'n); a preliminary reconstructed image (I'n); a final reconstructed image (R'n); an inverse transform (T 1); an inverse quantization (Q 1); an entropy decoding (E 1); a reference frame memory (RFM); a prediction (either inter or intra) (P); and filtering (F).
[0046] Many hybrid video encoders encode the video information in two phases. Firstly pixel values in a certain picture area (or“block”) are predicted for example by motion compensation means (finding and indicating an area in one of the previously coded video frames that corresponds closely to the block being coded) or by spatial means (using the pixel values around the block to be coded in a specified manner). Secondly the prediction error, i.e. the difference between the predicted block of pixels and the original block of pixels, is coded. This is typically done by transforming the difference in pixel values using a specified transform (e.g. Discrete Cosine Transform (DCT) or a variant of it), quantizing the coefficients and entropy coding the quantized coefficients. By varying the fidelity of the quantization process, encoder can control the balance between the accuracy of the pixel representation (picture quality) and size of the resulting coded video representation (file size or transmission bitrate). Video codecs may also provide a transform skip mode, which the encoders may choose to use. In the transform skip mode, the prediction error is coded in a sample domain, for example by deriving a sample- wise difference value relative to certain adjacent samples and coding the sample-wise difference value with an entropy coder.
[0047] Many video encoders partition a picture into blocks along a block grid. For example, in the High Efficiency Video Coding (HEVC) standard, the following partitioning and definitions are used. A coding block may be defined as an NxN block of samples for some value of N such that the division of a coding tree block into coding blocks is a partitioning. A coding tree block (CTB) may be defined as an NxN block of samples for some value of N such that the division of a component into coding tree blocks is a partitioning. A coding tree unit (CTU) may be defined as a coding tree block of luma samples, two corresponding coding tree blocks of chroma samples of a picture that has three sample arrays, or a coding tree block of samples of a monochrome picture or a picture that is coded using three separate color planes and syntax structures used to code the samples. A coding unit (CU) may be defined as a coding block of luma samples, two corresponding coding blocks of chroma samples of a picture that has three sample arrays, or a coding block of samples of a monochrome picture or a picture that is coded using three separate color planes and syntax structures used to code the samples. A CU with the maximum allowed size may be named as LCU (largest coding unit) or coding tree unit (CTU) and the video picture is divided into non overlapping LCUs.
[0048] In HEVC, a picture can be partitioned in tiles, which are rectangular and contain an integer number of LCUs. In HEVC, the partitioning to tiles forms a regular grid, where heights and widths of tiles differ from each other by one LCU at the maximum. In HEVC, a slice is defined to be an integer number of coding tree units contained in one independent slice segment and all subsequent dependent slice segments (if any) that precede the next independent slice segment (if any) within the same access unit. In HEVC, a slice segment is defined to be an integer number of coding tree units ordered consecutively in the tile scan and contained in a single NAL unit. The division of each picture into slice segments is a partitioning. In HEVC, an independent slice segment is defined to be a slice segment for which the values of the syntax elements of the slice segment header are not inferred from the values for a preceding slice segment, and a dependent slice segment is defined to be a slice segment for which the values of some syntax elements of the slice segment header are inferred from the values for the preceding independent slice segment in decoding order. In HEVC, a slice header is defined to be the slice segment header of the independent slice segment that is a current slice segment or is the independent slice segment that precedes a current dependent slice segment, and a slice segment header is defined to be a part of a coded slice segment containing the data elements pertaining to the first or all coding tree units represented in the slice segment. The CUs are scanned in the raster scan order of LCUs within tiles or within a picture, if tiles are not in use. Within an LCU, the CUs have a specific scan order.
[0049] Entropy coding/decoding may be performed in many ways. For example, context- based coding/decoding may be applied, where in both the encoder and the decoder modify the context state of a coding parameter based on previously coded/decoded coding parameters. Context-based coding may for example be context adaptive binary arithmetic coding
(CABAC) or context-based variable length coding (CAVLC) or any similar entropy coding. Entropy coding/decoding may alternatively or additionally be performed using a variable length coding scheme, such as Huffman coding/decoding or Exp-Golomb coding/decoding. Decoding of coding parameters from an entropy-coded bitstream or codewords may be referred to as parsing.
[0050] Available media file format standards include ISO base media file format (ISO/IEC 14496-12, which may be abbreviated ISOBMFF). The file format for NAL unit structured video (ISO/IEC 14496-15) and the High Efficiency Image File Format (ISO/IEC 23008-12, which may be abbreviated HEIF) both derive from the ISOBMFF.
[0051] Out-of-band transmission, signaling or storage can be used for tolerance against transmission errors as well as for other purposes, such as ease of access or session
negotiation. For example, a sample entry of a track in a file conforming to the ISO Base Media File Format may comprise parameter sets, while the coded data in the bitstream is stored elsewhere in the file or in another file. The phrase along the bitstream (e.g. indicating along the bitstream) or along a coded unit of a bitstream (e.g. indicating along a coded tile) may be used in claims and described embodiments to refer to out-of-band transmission, signaling, or storage in a manner that the out-of-band data is associated with the bitstream or the coded unit, respectively. The phrase decoding along the bitstream or along a coded unit of a bitstream or alike may refer to decoding the referred out-of-band data (which may be obtained from out-of-band transmission, signaling, or storage) that is associated with the bitstream or the coded unit, respectively. For example, the phrase along the bitstream may be used when the bitstream is contained in a file, such as a file conforming to the ISO Base Media File Format, and certain file metadata is stored in the file in a manner that associates the metadata to the bitstream, such as boxes in the sample entry for a track containing the bitstream, a sample group for the track containing the bitstream, or a timed metadata track associated with the track containing the bitstream.
[0052] Some concepts, structures, and specifications of ISOBMFF are described below as an example of a container file format, based on which the embodiments may be implemented. The aspects of the invention are not limited to ISOBMFF, but rather the description is given for one possible basis on top of which the invention may be partly or fully realized.
[0053] A basic building block in the ISO base media file format is called a box. Each box has a header and a payload. The box header indicates the type of the box and the size of the box in terms of bytes. A box may enclose other boxes, and the ISO file format specifies which box types are allowed within a box of a certain type. Furthermore, the presence of some boxes may be mandatory in each file, while the presence of other boxes may be optional. Additionally, for some box types, it may be allowable to have more than one box present in a file. Thus, the ISO base media file format may be considered to specify a hierarchical structure of boxes.
[0054] According to the ISO family of file formats, a file includes media data and metadata that are encapsulated into boxes. Each box is identified by a four character code (4CC) and starts with a header which informs about the type and size of the box.
[0055] In files conforming to the ISO base media file format, the media data may be provided in a media data‘mdat‘ box and the movie‘moov’ box may be used to enclose the metadata. In some cases, for a file to be operable, both of the‘mdat’ and‘moov’ boxes may be required to be present. The movie‘moov’ box may include one or more tracks, and each track may reside in one corresponding track‘trak’ box. A track may be one of the many types, including a media track that refers to samples formatted according to a media compression format (and its encapsulation to the ISO base media file format).
[0056] In HEIF, still images are stored as items. All image items are independently coded and do not depend on any other item in their decoding. Any number of image items can be included in the same file.
[0057] The Matroska file format is capable of (but not limited to) storing any of video, audio, picture, or subtitle tracks in one file. Matroska may be used as a basis format for derived file formats, such as WebM. Matroska uses Extensible Binary Meta Language (EBML) as basis. EBML specifies a binary and octet (byte) aligned format inspired by the principle of XML. EBML itself is a generalized description of the technique of binary markup. A Matroska file consists of Elements that make up an EBML "document." Elements incorporate an Element ID, a descriptor for the size of the element, and the binary data itself. Elements can be nested. A Segment Element of Matroska is a container for other top-level (level 1) elements. A Matroska file may comprise (but is not limited to be composed of) one Segment. Multimedia data in Matroska files is organized in Clusters (or Cluster Elements), each containing typically a few seconds of multimedia data. A Cluster comprises BlockGroup elements, which in turn comprise Block Elements. A Cues Element comprises metadata which may assist in random access or seeking and may include file pointers or respective timestamps for seek points. [0058] Figs. 4a, 4b, 4c and 4d show a setup for forming a stereo image of a scene to a user, for example a video frame of a 3D video. In Fig. 4a, a situation is shown where a human being is viewing two spheres A1 and A2 using both eyes El and E2. The sphere A1 is closer to the viewer than the sphere A2, the respective distances to the first eye El being LEI,AI and LEI,A2. The different objects reside in space at their respective (x,y,z) coordinates, defined by the coordinate system SZ, SY and SZ. The distance di2 between the eyes of a human being may be approximately 62-64 mm on average, and varying from person to person between 55 and 74 mm. This distance is referred to as the parallax, on which stereoscopic view of the human vision is based on. The viewing directions (optical axes) DIR1 and DIR2 are typically essentially parallel, possibly having a small deviation from being parallel, and define the field of view for the eyes. The head of the user has an orientation (head orientation) in relation to the surroundings, most easily defined by the common direction of the eyes when the eyes are looking straight ahead. That is, the head orientation tells the yaw, pitch and roll of the head in respect of a coordinate system of the scene where the user is.
[0059] When the viewer's body (thorax) is not moving, the viewer's head orientation is restricted by the normal anatomical ranges of movement of the cervical spine.
[0060] In the setup of Fig. 4a, the spheres A1 and A2 are in the field of view of both eyes. The centre-point O12 between the eyes and the spheres are on the same line. That is, from the centre-point, the sphere A2 is behind the sphere Al. However, each eye sees part of sphere A2 from behind Al, because the spheres are not on the same line of view from either of the eyes.
[0061] In Fig. 4b, there is a setup shown, where the eyes have been replaced by cameras Cl and C2, positioned at the location where the eyes were in Fig. 4a. The distances and directions of the setup are otherwise the same. Naturally, the purpose of the setup of Fig. 4b is to be able to take a stereo image of the spheres Al and A2. The two images resulting from image capture are Fci and Fc2. The "left eye” image Fci shows the image SA2 of the sphere A2 partly visible on the left side of the image SAI of the sphere Al . The "right eye" image Fc2 shows the image SA2 of the sphere A2 partly visible on the right side of the image SAI of the sphere Al. This difference between the right and left images is called disparity, and this disparity, being the basic mechanism with which the HVS determines depth information and creates a 3D view of the scene, can be used to create an illusion of a 3D image.
[0062] In this setup of Fig. 4b, where the inter-eye distances correspond to those of the eyes in Fig. 4a, the camera pair Cl and C2 has a natural parallax, that is, it has the property of creating natural disparity in the two images of the cameras. Natural disparity may be understood to be created even though the distance between the two cameras forming the stereo camera pair is somewhat smaller or larger than the normal distance (parallax) between the human eyes, e.g. essentially between 40 mm and 100 mm or even 30 mm and 120 mm.
[0063] It needs to be understood here that the images Fci and Fc2 may be captured by cameras Cl and C2, where the cameras Cl and C2 may be real-world cameras or they may be virtual cameras. In the case of virtual cameras, the images Fci and Fc2 may be computed from a computer model of a scene by setting the direction, orientation and viewport of the cameras Cl and C2 appropriately such that a stereo image pair suitable for viewing by the human visual system (HVS) is created.
[0064] In Fig. 4c, the creating of this 3D illusion is shown. The images Fci and Fc2 captured or computed by the cameras Cl and C2 are displayed to the eyes El and E2, using displays D1 and D2, respectively. The disparity between the images is processed by the human visual system so that an understanding of depth is created. That is, when the left eye sees the image SA2 of the sphere A2 on the left side of the image SAI of sphere Al, and respectively the right eye sees the image SA2 of the sphere A2 on the right side, the human visual system creates an understanding that there is a sphere V2 behind the sphere VI in a three-dimensional world. Here, it needs to be understood that the images Fci and Fc2 can also be synthetic, that is, created by a computer. If they carry the disparity information, synthetic images will also be seen as three-dimensional by the human visual system. That is, a pair of computer-generated images can be formed so that they can be used as a stereo image.
[0065] Fig. 4d illustrates how the principle of displaying stereo images to the eyes can be used to create 3D movies or virtual reality scenes having an illusion of being three- dimensional. The images Fxi and Fx2 are either captured with a stereo camera or computed from a model so that the images have the appropriate disparity. By displaying a large number (e.g. 30) frames per second to both eyes using display D1 and D2 so that the images between the left and the right eye have disparity, the human visual system will create a cognition of a moving, three-dimensional image.
[0066] The field of view represented by the content may be greater than the displayed field of view e.g. in an arrangement depicted in Fig. 4d. Consequently, only a part of the content along the direction of view (a.k.a. viewing orientation) is displayed at a single time. This direction of view, that is, the head orientation, may be determined as a real orientation of the head e.g. by an orientation detector mounted on the head, or as a virtual orientation determined by a control device such as a joystick or mouse that can be used to manipulate the direction of view without the user actually moving his head. That is, the term "head orientation" may be used to refer to the actual, physical orientation of the user's head and changes in the same, or it may be used to refer to the virtual direction of the user's view that is determined by a computer program or a computer input device.
[0067] The content may enable viewing from several viewing positions within the 3D space. The texture picture(s), the geometry picture(s) and the geometry information may be used to synthesize the images Fxi and/or Fx2 as if the displayed content was captured by camera(s) located at the viewing position.
[0068] The principle illustrated in Figs. 4a-4d may be used to create three-dimensional images to a viewer from a three-dimensional scene model (volumetric video) after the scene model has been encoded at the sender and decoded and reconstructed at the receiver. Because volumetric video describes a 3D scene or object at different (successive) time instances, such data can be viewed from any viewpoint. Therefore, volumetric video is an important format for any augmented reality, virtual reality and mixed reality applications, especially for providing viewing capabilities having six degrees of freedom (so-called 6DOF viewing).
[0069] Fig. 5a illustrates projection of source volumes in a digital scene model SCE and parts of an object model OBJ1, OBJ2, OBJ3, BG4 to projection surfaces SI, S2, S3, S4, as well as determining depth information for the purpose of encoding volumetric video.
[0070] The projection of source volumes SV 1 , SV2, SV3, SV4 may result in texture pictures and geometry pictures, and there may be geometry information related to the projection source volumes and/or projection surfaces. Texture pictures, geometry pictures and projection geometry information may be encoded into a bitstream. A texture picture may comprise information on the colour data of the source of the projection. Through the projection, such colour data may result in pixel colour information in the texture picture. Pixels may be coded in groups, e.g. coding units of rectangular shape. The projection geometry information may comprise but is not limited to one or more of the following:
- projection type, such as planar projection or equirectangular projection
- projection surface type, such as a cube, sphere, cylinder, polyhedron
- location of the projection surface in 3D space
- orientation of the projection surface in 3D space
- size of the projection surface in 3D space
- type of a projection centre, such as a projection centre point, axis, or plane, from which a geometry primitive is projected onto the projection surface
- location and/or orientation of a projection centre. [0071] The projection may take place by projecting the geometry primitives (points of a point could, triangles of a triangle mesh or voxels of a voxel array) of a source volume SV1, SV2, SV3, SV4 (or an object OBJ1, OBJ2, OBJ3, BG4) onto a projection surface SI, S2, S3, S4. The geometry primitives may comprise information on the texture, for example a colour value or values of a point, a triangle or a voxel. The projection surface may surround the source volume at least partially such that projection of the geometry primitives happens from the centre of the projection surface outwards to the surface. For example, a cylindrical surface has a projection centre axis and a spherical surface has a projection centre point. A cubical or rectangular surface may have projection centre planes or a projection centre axis or point and the projection of the geometry primitives may take place either orthogonally to the sides of the surface or from the projection centre axis or point outwards to the surface. The projection surfaces, e.g. cylindrical and rectangular, may be open from the top and the bottom such that when the surface is cut and rolled out on a two-dimensional plane, it forms a rectangular shape. Such rectangular shape with pixel data can be encoded and decoded with a video codec.
[0072] Alternatively or in addition, the projection surface such as a planar surface or a sphere may be inside group of geometry primitives, e.g. inside a point cloud that defines a surface. In the case of an inside projection surface, the projection may take place from outside in towards the centre and may result in sub-sampling of the texture data of the source.
[0073] In a point cloud based scene model or object model, points may be represented with any floating point coordinates. A quantized point cloud may be used to reduce the amount of data, whereby the coordinate values of the point cloud are represented e.g. with 10-bit, 12-bit or 16-bit integers. Integers may be used because hardware accelerators may be able to operate on integers more efficiently. The points in the point cloud may have associated colour, reflectance, opacity etc. texture values. The points in the point cloud may also have a size, or a size may be the same for all points. The size of the points may be understood as indicating how large an object the point appears to be in the model in the projection. The point cloud is projected by ray casting from the projection surface to find out the pixel values of the projection surface. In such a manner, the topmost point remains visible in the projection, while points closer to the centre of the projection surface may be occluded. In other words, in general, the original point cloud, meshes, voxels, or any other model is projected outwards to a simple geometrical shape, this simple geometrical shape being the projection surface.
[0074] As for the point cloud compression (PCC), for example the principles of the MPEG-I PCC may be used. MPEG-I PCC is standardization activity of Moving Picture Experts Group to develop standardized 3D point cloud compression (PCC). The aim is to support efficient and interoperable storage and exchange of 3D point clouds with the specified requirements for lossless and/or lossy coding of geometry coordinates, lossless and/or lossy coding of point cloud attributes data and support for time varying point clouds.
[0075] Different projection surfaces may have different characteristics in terms of projection and reconstruction. In the sense of computational complexity, a projection to a cubical surface may be the most efficient, and a cylindrical projection surface may provide accurate results efficiently. Also cones, polyhedron-based parallelepipeds (hexagonal or octagonal, for example) and spheres or a simple plane may be used as projection surfaces.
[0076] The phrase along the bitstream (e.g. indicating along the bitstream) may be defined to refer to out-of-band transmission, signalling, or storage in a manner that the out-of-band data is associated with the bitstream. The phrase decoding along the bitstream or alike may refer to decoding the referred out-of-band data (which may be obtained from out-of-band transmission, signalling, or storage) that is associated with the bitstream. For example, an indication along the bitstream may refer to metadata in a container file that encapsulates the bitstream.
[0077] As illustrated in Fig. 5a, a first texture picture may be encoded into a bitstream, and the first texture picture may comprise a first projection of texture data of a first source volume SV1 of a scene model SCE onto a first projection surface SI. The scene model SCE may comprise a number of further source volumes SV2, SV3, SV4.
[0078] In the projection, data on the position of the originating geometry primitive may also be determined, and based on this determination, a geometry picture may be formed. This may happen for example so that depth data is determined for each or some of the texture pixels of the texture picture. Depth data is formed such that the distance from the originating geometry primitive such as a point to the projection surface is determined for the pixels. Such depth data may be represented as a depth picture, and similarly to the texture picture, such geometry picture (in this example, depth picture) may be encoded and decoded with a video codec. This first geometry picture may be seen to represent a mapping of the first projection surface to the first source volume, and the decoder may use this information to determine the location of geometry primitives in the model to be reconstructed. In order to determine the position of the first source volume and/or the first projection surface and/or the first projection in the scene model, there may be first geometry information encoded into or along the bitstream. [0079] A picture may be defined to be either a frame or a field. A frame may be defined to comprise a matrix of luma samples and possibly the corresponding chroma samples. A field may be defined to be a set of alternate sample rows of a frame. Fields may be used as encoder input for example when the source signal is interlaced. Chroma sample arrays may be absent (and hence monochrome sampling may be in use) or may be subsampled when compared to luma sample arrays. Some chroma formats may be summarized as follows:
- In monochrome sampling there is only one sample array, which may be nominally
considered the luma array.
- In 4:2:0 sampling, each of the two chroma arrays has half the height and half the width of the luma array.
- In 4:2:2 sampling, each of the two chroma arrays has the same height and half the width of the luma array.
- In 4:4:4 sampling when no separate colour planes are in use, each of the two chroma arrays has the same height and width as the luma array.
[0080] It is possible to code sample arrays as separate colour planes into the bitstream and respectively decode separately coded colour planes from the bitstream. When separate colour planes are in use, each one of them is separately processed (by the encoder and/or the decoder) as a picture with monochrome sampling.
[0081] An attribute picture may be defined as a picture that comprises additional information related to an associated texture picture. An attribute picture may for example comprise surface normal, opacity, or reflectance information for a texture picture. A geometry picture may be regarded as one type of an attribute picture, although a geometry picture may be treated as its own picture type, separate from an attribute picture.
[0082] Texture picture(s) and the respective geometry picture(s), if any, and the respective attribute picture(s) may have the same or different chroma format.
[0083] Terms texture image and texture picture may be used interchangeably. Terms geometry image and geometry picture may be used interchangeably. A specific type of a geometry image is a depth image. Embodiments described in relation to a geometry image equally apply to a depth image, and embodiments described in relation to a depth image equally apply to a geometry image. Terms attribute image and attribute picture may be used interchangeably. A geometry picture and/or an attribute picture may be treated as an auxiliary picture in video/image encoding and/or decoding. [0084] Depending on the context, a pixel may be defined to a be a sample of one of the sample arrays of the picture or may be defined to comprise the collocated samples of all the sample arrays of the picture.
[0085] Multiple source volumes (objects) may be encoded as texture pictures, geometry pictures and projection geometry information into the bitstream in a similar manner. That is, as in Fig. 5a, the scene model SCE may comprise multiple objects OBJ1, OBJ2, OBJ3, OBJ4, and these may be treated as source volumes SV1, SV2, SV3, SV4 and each object may be coded as a texture picture, geometry picture and projection geometry information.
[0086] In the above, the first texture picture of the first source volume SV1 and further texture pictures of the other source volumes SV2, SV3, SV4 may represent the same time instance. That is, there may be a plurality of texture and geometry pictures and projection geometry information for one time instance, and the other time instances may be coded in a similar manner. Since the various source volumes are in this way producing sequences of texture pictures and sequences of geometry pictures, as well as sequences of projection geometry information, the inter-picture redundancy in the picture sequences can be used to encode the texture and geometry data for the source volumes efficiently, compared to the presently known ways of encoding volume data.
[0087] An object OBJ3 (source volume SV3) may be projected onto a projection surface S3 and encoded into the bitstream as a texture picture, geometry picture and projection geometry information as described above. Furthermore, such source volume may be indicated to be static by encoding information into said bitstream on said fourth projection geometry being static. A static source volume or object may be understood to be an object whose position with respect to the scene model remains the same over two or more or all time instances of the video sequence. For such static source volume, the geometry data (geometry pictures) may also stay the same, that is, the object's shape remains the same over two or more time instances. For such static source volume, some or all of the texture data (texture pictures) may stay the same over two or more time instances. By encoding information into the bitstream of the static nature of the source volume the encoding efficiency may further be improved, as the same information may not need to be coded multiple times. In this manner, the decoder will also be able to use the same reconstruction or partially same reconstruction of the source volume (object) over multiple time instances.
[0088] In an analogous manner, the different source volumes may be coded into the bitstream with different frame rates. For example, a slow-moving or relatively unchanging object (source volume) may be encoded with a first frame rate, and a fast-moving and/or changing object (source volume) may be coded with a second frame rate. The first frame rate may be slower than the second frame rate, for example one half or one quarter of the second frame rate, or even slower. For example, if the second frame rate is 30 frames per second, the second frame rate may be 15 frames per second, or 1 frame per second. The first and second object (source volumes) may be "sampled" in synchrony such that some frames of the faster frame rate coincide with frames of the slower frame rate.
[0089] There may be one or more coordinate systems in the scene model. The scene model may have a coordinate system and one or more of the objects (source volumes) in the scene model may have their local coordinate systems. The shape, size, location and orientation of one or more projection surfaces may be encoded into or along the bitstream with respect to the scene model coordinates. Alternatively or in addition, the encoding may be done with respect to coordinates of the scene model or said first source volume. The choice of coordinate systems may improve the coding efficiency.
[0090] Information on temporal changes in location, orientation and size of one or more said projection surfaces may be encoded into or along the bitstream. For example, if one or more of the objects (source volumes) being encoded is moving or rotating with respect to the scene model, the projection surface moves or rotates with the object to preserve the projection as similar as possible.
[0091] If the projection volumes are changing, for example splitting or bending into two parts, the projection surfaces may be sub-divided respectively. Therefore, information on sub division of one or more of the source volumes and respective changes in one or more of the projection surfaces may be encoded into or along the bitstream.
[0092] The resulting bitstream may then be output to be stored or transmitted for later decoding and reconstruction of the scene model.
[0093] Decoding of the information from the bitstream may happen in analogous manner. A first texture picture may be decoded from a bitstream to obtain first decoded texture data, where the first texture picture comprises a first projection of texture data of a first source volume of the scene model to be reconstructed onto a first projection surface. The scene model may comprise a number of further source volumes. Then, a first geometry picture may be decoded from the bitstream to obtain first decoded scene model geometry data. The first geometry picture may represent a mapping of the first projection surface to the first source volume. First projection geometry information of the first projection may be decoded from the bitstream, the first projection geometry information comprising information of position of the first projection surface in the scene model. Using this information, a reconstructed scene model may be formed by projecting the first decoded texture data to a first destination volume using the first decoded scene model geometry data and said first projection geometry information to determine where the decoded texture information is to be placed in the scene model.
[0094] A 3D scene model may be classified into two parts: first all dynamic parts, and second all static parts. The dynamic part of the 3D scene model may further be sub-divided into separate parts, each representing objects (or parts of) an object in the scene model, that is, source volumes. The static parts of the scene model may include e.g. static room geometry (walls, ceiling, fixed furniture) and may be compressed either by known volumetric data compression solutions, or, similar to the dynamic part, sub-divided into individual objects for projection-based compression as described earlier, to be encoded into the bitstream.
[0095] In an example, some objects may be a chair (static), a television screen (static geometry, dynamic texture), a moving person (dynamic). For each object, a suitable projection geometry (surface) may be found, e.g. cube projection to represent the chair, another cube for the screen, a cylinder for the person's torso, a sphere for a detailed representation of the person's head, and so on. The 3D data of each object may then be projected onto the respective projection surface and 2D planes are derived by "unfolding" the projections from three dimensions to two dimensions (plane). The unfolded planes will have several channels, typically three for the colour representation of the texture, e.g. RGB, YUV, and one additional plane for the geometry (depth) of each projected point for later
reconstruction.
[0096] Frame packing may be defined to comprise arranging more than one input picture, which may be referred to as (input) constituent frames, into an output picture. In general, frame packing is not limited to any particular type of constituent frames or the constituent frames need not have a particular relation with each other. In many cases, frame packing is used for arranging constituent frames of a stereoscopic video clip into a single picture sequence. The arranging may include placing the input pictures in spatially non-overlapping areas within the output picture. For example, in a side-by-side arrangement, two input pictures are placed within an output picture horizontally adjacently to each other. The arranging may also include partitioning of one or more input pictures into two or more constituent frame partitions and placing the constituent frame partitions in spatially non-overlapping areas within the output picture. The output picture or a sequence of frame-packed output pictures may be encoded into a bitstream e.g. by a video encoder. The bitstream may be decoded e.g. by a video decoder. The decoder or a post-processing operation after decoding may extract the decoded constituent frames from the decoded picture(s) e.g. for displaying.
[0097] A standard 2D video encoder may then receive the planes as inputs, either as individual layers per object, or as a frame-packed representation of all objects. The texture picture may thus comprise a plurality of projections of texture data from further source volumes and the geometry picture may represent a plurality of mappings of projection surfaces to the source volume.
[0098] For each object, additional information may be signalled to allow for reconstruction at the decoder side:
- in the case of a frame-packed representation: separation boundaries may be signalled to recreate the individual planes for each object,
- in the case of projection-based compression of static content: classification of each object as static/dynamic may be signalled,
- relevant data to create real-world geometry data from the decoded (quantised) geometry channel(s), e.g. quantisation method, depth ranges, bit depth, etc. may be signalled,
- initial state of each object: geometry shape, location, orientation, size may be signalled,
- temporal changes for each object, either as changes to the initial state on a per-picture level, or as a function of time may be signalled, and
- nature of any additional auxiliary data may be signalled.
[0099] The decoder may receive the static 3D scene model data together with the video bitstreams representing the dynamic parts of the scene model. Based on the signalled information on the projection geometries, each object may be reconstructed in 3D space and the decoded scene model is created by fusing all reconstructed parts (objects or source volumes) together.
[0100] Standard video encoding hardware may be utilized for real-time
compression/decompression of the projection surfaces that have been unfolded onto planes.
[0101] Single projection surfaces might suffice for the projection of very simple objects. Complex objects or larger scenes may require several (different) projections. The relative geometry of the object/scene may remain constant over a volumetric video sequence, but the location and orientation of the projection surfaces in space can change (and can be possibly predicted in the encoding, wherein the difference from the prediction is encoded).
[0102] Depth may be coded "outside-in" (indicating the distance from the projection surface to the 3D point), or "inside-out” (indicating the distance from the 3D point to the projection surface). In inside-out coding, depth of each projected point may be positive (with positive distance PD1) or negative (with negative distance). Fig. 5b shows an example of projecting an object OBJ1 using a cube map projection format, wherein there are six projection surfaces PS 1 , ... ,PS6 of the proj ection cube PC 1. In this example, the projection surfaces are one on the left side PS1, one in front PS2, one on the right side PS3, one in the back PS4, one in the bottom PS5, and one in the top PS6 of the cube PCI in the setup of Figure 5b.
[0103] Figure 6 shows an example of a volumetric video compression pipeline and processing steps relating to real-time viewing of the 3D content. Herein, a dynamic 3D scene 600 is input to the content pre-processing pipeline. Fundamentally, in the content pre processing pipeline each frame of the input 3D scene is processed separately.
[0104] In the Input Conversion unit 602 the input 3D scene is converted into a canonical representation for processing. As described above, each frame of the input is converted into a collection of 3D samples of the scene geometry, at a specified internal processing resolution. Depending on the input, this may involve e.g. voxelizing a mesh model, or down-sampling a more highly detailed point cloud into the processing resolution. The internal representation is then a point cloud representing the spatial 3D samples of the input scene.
[0105] The View Optimizer unit 604 takes the internal point cloud format and creates a segmentation of the scene optimized for the specified viewing conditions. This involves creating view-tiles that have sufficient coverage and resolution for representing the original input scene at minimal quality degradation within the given viewing constraints. The View Optimizer unit 604 makes use of the 3D position of the scene samples, but additional attributes such as surface normal, color, or material attributes may also be considered.
Information describing the properties of the view-tiles is stored in a View-tile Metadata unit 606.
[0106] The resulting view-tiles are then pre-rendered in the View-tile Rendering unit 608. This may involve resampling an input point cloud into 2D tile projections, or calling an external path tracing Tenderer to render views of the original input scene.
[0107] The rendered tiles are fed to the Atlas Packer unit 610, which produces an optimal 2D layout of the rendered view-tiles and packs the pre-rendered tiles into video frames. The video frames are piped to Video Compression unit 612 for generating the final compressed data representation. It is noted all these stages handle the video data as per- frame basis.
[0108] The compressed view-tiles are stored as video bitstreams, represented by the Compressed View-tile unit 614. For viewing the tiles, the compressed video frame bitstreams and the view-tile metadata bitstreams are used in the View Synthesis unit 616 for creating novel views of the scene. The view-tile metadata contains the necessary information for the view synthesizer to employ rendering methods, such as point cloud rendering, mesh rendering, or ray-casting to reconstruct a view of the scene from any given 3D viewpoint (assuming the originally specified viewing constraints). Consequently, real-time 3D viewing 618 of the volumetric video can be achieved.
[0109] However, the above-described per- frame processing may cause problems relating to temporal coherency in volumetric video compression. As the segmentation of the 3D scene depends on the content of the scene, for dynamic content, the segmentation can change on a per- frame basis. Since video compression in turn relies on compressing temporal redundancy, a rapidly changing tile atlas is poorly suited for video compression.
[01 10] In the following, an enhanced method for volumetric video compression will be described in more detail, in accordance with various embodiments.
[0111] A method, which is disclosed in Figure 7, comprises obtaining (700) a plurality of frames of a three-dimensional (3D) video stream, wherein each of said frames comprises a point cloud representation of spatial samples of a 3D input scene; combining (702) the point cloud representations of said frames into an accumulated point cloud model; and providing (704), in response to the number of said frames combined in said accumulated point cloud model reaching a predetermined threshold value, said accumulated point cloud model into a view optimization process for segmenting the 3D scene.
[01 12] Thus, additional processing steps are provided in the underlying video codec to be carried out before the view segmentation process, wherein the processing steps provide temporal accumulation of scene geometry over a period of a predetermined number of volumetric frames. The temporally accumulated scene is input to the view segmentation process instead of the per-frame input of the original scene frames. This enables to handle any kind of dynamic scenes, not constrained to meshes, and to generate a static view layout optimized for the temporal flow of the scene in addition to the per-frame geometry. As a result, the amount of view metadata to be coded is significantly reduced, and the video compression efficiency is increased in terms of bitrate and reducing artefacts due to temporal incoherency.
[0113] According to an embodiment, the predetermined threshold value corresponds to a size of Group-of-Pictures (GoP). Group-of-Pictures (GoP) is a sub-sequence of an encoded video stream comprising a plurality of frames. GoP is recognized by most of the
contemporary video coding standards and specific syntax elements are provided for utilising GoP in various processing steps of a video codec. Thus, the size of GoP, in terms of the number of frames, provides a good basis for the temporally accumulated point cloud model to be supplied in and processed by the view segmentation process.
[0114] According to an embodiment, the predetermined threshold value is 32. Assuming a GoP size is 32 frames, then the view segmentation process is only run for every 32 frames, in contrast to per- frame approach. This makes the view optimization process much faster in addition to producing temporal stability.
[0115] Figure 8 illustrates some processing steps, which may be carried out according to various embodiments. When considering the volumetric video compression pipeline shown in Figure 6, the processing steps of Figure 8 are carried out between the Input Conversion 602 and the View Optimizer 604 stages. The processing step illustrated in Figure 8 may be referred to as Temporal Fusion. This changes the processing so that a sub-sequence of multiple input frames, typically aligned with the video GoP length, is first read in and combined into a 4D representation of the sub-sequence.
[01 16] As shown in Figure 8, the Input Conversion provides the frames 800 comprising the internal point cloud representations. In contrast to the basic pipeline of Figure 6, however, the internal point cloud is not fed into the View Optimizer 604 immediately. Instead, the frame is read 802 and its samples are added 804 to the accumulated internal point cloud model 806. Then, a subsequent frame is read and added to the accumulated internal point cloud model 806. After adding a frame, it is checked 808 whether the number of added frames has reached the predetermined threshold value, such as the GoP size. If not, the loop of reading and adding a new frame is continued until the predetermined threshold value has been reached. This triggers the accumulated internal point cloud model 806 to be fed into the View Optimizer 604.
[01 17] According to an embodiment, the method further comprises checking, prior to combining any frame into said accumulated point cloud model, content of the frame; and ignoring frames providing no relevant data for the view optimization process. Thus, in order to save memory, it is checked whether similar samples already exist in the accumulated point cloud model, so that the new sample may only be added if it adds new data relevant for the View Optimizer.
[0118] Figure 9 shows an example of the effects of the temporally accumulated point cloud model on the view optimization process for a sub-region of a scene. Figure 9a shows a simplified view tile generated for a piece of content (the arc) from a single frame. Figure 9b shows the predetermined number of the accumulated frames of the moving content, and the resulting view tiles. In Figure 9b, only the content rendered inside each tile changes per frame. In practice, the Temporal Fusion, i.e. the accumulation process, adds multiple copies of all scene elements together, and the View Optimizer then produces a tiling of the scene that captures the joint scene samples efficiently.
[0119] According to an embodiment, the method further comprises creating metadata relating to the accumulated point cloud model, said metadata comprising position and size of each tile and view-projection parameters of each tile. Thus, for facilitating the decoding process, certain metadata is preferably coded into the video stream. The tile positions and sizes inside the video atlas, as well as the view-projection parameters associated with each tile, may be included. After temporal fusion, such data will be required only once per each unit of temporal fusion, typically one GoP.
[0120] An apparatus according to an aspect comprises at least one processor and at least one memory, said at least one memory stored with computer program code thereon, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus at least to perform: obtaining a plurality of frames of a three- dimensional (3D) video stream, wherein each of said frames comprises a point cloud representation of spatial samples of a 3D input scene; combining the point cloud
representations of said frames into an accumulated point cloud model; and providing, in response to the number of said frames combined in said accumulated point cloud model reaching a predetermined threshold value, said accumulated point cloud model into a view optimization process for segmenting the 3D scene.
[0121] In the above, where the example embodiments have been described with reference to an encoder or an encoding method, it needs to be understood that the resulting bitstream and the decoder or the decoding method may have corresponding elements in them. Likewise, where the example embodiments have been described with reference to a decoder, it needs to be understood that the encoder may have structure and/or computer program for generating the bitstream to be decoded by the decoder.
[0122] In general, the various embodiments of the invention may be implemented in hardware or special purpose circuits or any combination thereof. While various aspects of the invention may be illustrated and described as block diagrams or using some other pictorial representation, it is well understood that these blocks, apparatus, systems, techniques or methods described herein may be implemented in, as non-limiting examples, hardware, software, firmware, special purpose circuits or logic, general purpose hardware or controller or other computing devices, or some combination thereof. [0123] Embodiments of the inventions may be practiced in various components such as integrated circuit modules. The design of integrated circuits is by and large a highly automated process. Complex and powerful software tools are available for converting a logic level design into a semiconductor circuit design ready to be etched and formed on a semiconductor substrate.
[0124] Programs, such as those provided by Synopsys, Inc. of Mountain View, California and Cadence Design, of San Jose, California automatically route conductors and locate components on a semiconductor chip using well established rules of design as well as libraries of pre-stored design modules. Once the design for a semiconductor circuit has been completed, the resultant design, in a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a semiconductor fabrication facility or "fab" for fabrication.
[0125] The foregoing description has provided by way of exemplary and non-limiting examples a full and informative description of the exemplary embodiment of this invention. However, various modifications and adaptations may become apparent to those skilled in the relevant arts in view of the foregoing description, when read in conjunction with the accompanying drawings and the appended claims. However, all such and similar
modifications of the teachings of this invention will still fall within the scope of this invention.

Claims

1. A method comprising:
obtaining a plurality of frames of a three-dimensional (3D) video stream, wherein each of said frames comprises a point cloud representation of spatial samples of a 3D input scene;
combining the point cloud representations of said frames into an accumulated point cloud model; and
providing, in response to the number of said frames combined in said accumulated point cloud model reaching a predetermined threshold value, said accumulated point cloud model into a view optimization process for segmenting the 3D scene.
2. The method according to claim 1, wherein the predetermined threshold value corresponds to a size of Group-of-Pictures (GoP).
3. The method according to claim 2, wherein the predetermined threshold value is 32.
4. The method according to any preceding claim, further comprising
checking, prior to combining any frame into said accumulated point cloud model, content of the frame; and
ignoring frames providing no relevant data for the view optimization process.
5. The method according to any preceding claim, further comprising
creating metadata relating to the accumulated point cloud model, said metadata comprising position and size of each tile and view-projection parameters of each tile.
6. An apparatus comprising:
means for obtaining a plurality of frames of a three-dimensional (3D) video stream, wherein each of said frames comprises a point cloud representation of spatial samples of a 3D input scene;
means for combining the point cloud representations of said frames into an accumulated point cloud model; and means for providing, responsive to the number of said frames combined in said accumulated point cloud model reaching a predetermined threshold value, said accumulated point cloud model into a view optimization process for segmenting the 3D scene.
7. The apparatus according to claim 6, wherein the predetermined threshold value corresponds to a size of Group-of-Pictures (GoP).
8. The apparatus according to claim 7, wherein the predetermined threshold value is 32.
9. The apparatus according to any of claims 6 - 8, further comprising
checking, prior to combining any frame into said accumulated point cloud model, content of the frame; and
ignoring frames providing no relevant data for the view optimization process.
10. The apparatus according to any of claims 6 - 9, further comprising
creating metadata relating to the accumulated point cloud model, said metadata comprising position and size of each tile and view-projection parameters of each tile.
PCT/FI2020/050034 2019-01-30 2020-01-23 An apparatus, a method and a computer program for volumetric video WO2020157376A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP20748861.0A EP3918793A4 (en) 2019-01-30 2020-01-23 An apparatus, a method and a computer program for volumetric video

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20195057 2019-01-30
FI20195057 2019-01-30

Publications (1)

Publication Number Publication Date
WO2020157376A1 true WO2020157376A1 (en) 2020-08-06

Family

ID=71842026

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FI2020/050034 WO2020157376A1 (en) 2019-01-30 2020-01-23 An apparatus, a method and a computer program for volumetric video

Country Status (2)

Country Link
EP (1) EP3918793A4 (en)
WO (1) WO2020157376A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3855398A4 (en) * 2018-09-21 2021-10-20 Panasonic Intellectual Property Corporation of America Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170347120A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Motion-compensated compression of dynamic voxelized point clouds
US20180278956A1 (en) * 2015-12-14 2018-09-27 Panasonic Intellectual Property Corporation Of America Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180278956A1 (en) * 2015-12-14 2018-09-27 Panasonic Intellectual Property Corporation Of America Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
US20170347120A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Motion-compensated compression of dynamic voxelized point clouds

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
HAN, CHUNG DEAN ET AL.: "G-PCC] CE13.5 Report on combine frame coding in TMC13. MPEG2018/m46101", MPEG DOCUMENT MANAGEMENT SYSTEM. 125TH MPEG MEETING, MARRAKECH: ISO/IEC JTC1/SC29/WG11, 9 January 2019 (2019-01-09), pages 1 - 7, XP030214599, Retrieved from the Internet <URL:http://wg11.sc29.org> [retrieved on 20200401] *
HAN, CHUNG DEAN ET AL.: "PCC] TMC13 new proposal on Combine Frame Coding. MPEG2018/m44813", MPEG DOCUMENT MANAGEMENT SYSTEM. 124TH MPEG MEETING, MACAO: ISO/IEC JTC1/SC29/WG11, 4 October 2018 (2018-10-04), pages 1 - 6, XP030192444, Retrieved from the Internet <URL:http://wg11.sc29.org> [retrieved on 20200401] *
JANG, EUEE S. ET AL.: "Description of PCC Core Experiment 2.19 on tiles and slices. MPEG2018/N18012", MPEG DOCUMENT MANAGEMENT SYSTEM. 124TH MPEG MEETING, MACAO: ISO/IEC JTC1/SC29/WG11, 20 November 2018 (2018-11-20), pages 1 - 11, XP030195474, Retrieved from the Internet <URL:http://wg11.sc29.org> [retrieved on 20190904] *
LASSERRE , SEBASTIEN: "Point Cloud Compression Core Experiment 13.5 on inter-prediction on geometry coding in TMC13. MPEG2018/ w17779", MPEG DOCUMENT MANAGEMENT SYSTEM. 123RD MPEG MEETING, LJUBLJANA: ISO/IEC JTC1/SC29/WG11, 16 August 2018 (2018-08-16), pages 1 - 4, XP030190650, Retrieved from the Internet <URL:http://wg11.sc29.org> [retrieved on 20200401] *
LIN, XAO ET AL.: "Temporally Coherent 3D Point Cloud Video Segmentation in Generic Scenes", IEEE TRANS. ON IMAGE PROCESSING, vol. 27, no. 6, June 2018 (2018-06-01), pages 1 - 13, XP011682328, Retrieved from the Internet <URL:https://ieeexplore.ieee.org/document/8306148> [retrieved on 20190820] *
NGUYEN, ANH ET AL.: "3D Point Cloud Segmentation: A survey", CONF. ON ROBOTICS, AUTOMATION AND MECHATRONICS, 12 November 2013 (2013-11-12), pages 1 - 6, XP032576054, Retrieved from the Internet <URL:https://ieeexplore.ieee.org/document/6758588> [retrieved on 20190902] *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3855398A4 (en) * 2018-09-21 2021-10-20 Panasonic Intellectual Property Corporation of America Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device

Also Published As

Publication number Publication date
EP3918793A1 (en) 2021-12-08
EP3918793A4 (en) 2022-11-30

Similar Documents

Publication Publication Date Title
EP3669333B1 (en) Sequential encoding and decoding of volymetric video
WO2019135024A1 (en) An apparatus, a method and a computer program for volumetric video
US11599968B2 (en) Apparatus, a method and a computer program for volumetric video
JP7506077B2 (en) Apparatus, method, and computer program for video encoding and decoding
EP3614674A1 (en) An apparatus, a method and a computer program for volumetric video
US11659151B2 (en) Apparatus, a method and a computer program for volumetric video
US20200153885A1 (en) Apparatus for transmitting point cloud data, a method for transmitting point cloud data, an apparatus for receiving point cloud data and/or a method for receiving point cloud data
US20200244993A1 (en) Encoding and decoding of volumetric video
US11202086B2 (en) Apparatus, a method and a computer program for volumetric video
US11430156B2 (en) Apparatus, a method and a computer program for volumetric video
WO2019158821A1 (en) An apparatus, a method and a computer program for volumetric video
WO2019229293A1 (en) An apparatus, a method and a computer program for volumetric video
WO2019243663A1 (en) An apparatus, a method and a computer program for volumetric video
US11463681B2 (en) Encoding and decoding of volumetric video
WO2019115867A1 (en) An apparatus, a method and a computer program for volumetric video
WO2019115866A1 (en) An apparatus, a method and a computer program for volumetric video
US12047604B2 (en) Apparatus, a method and a computer program for volumetric video
WO2019077199A1 (en) An apparatus, a method and a computer program for volumetric video
WO2020070378A1 (en) An apparatus, a method and a computer program for volumetric video
WO2020157376A1 (en) An apparatus, a method and a computer program for volumetric video
WO2019162564A1 (en) An apparatus, a method and a computer program for volumetric video
WO2019234290A1 (en) An apparatus, a method and a computer program for volumetric video
US20240236352A1 (en) Bitstream syntax for mesh motion field coding
CN117280388A (en) Vertex prediction based on mesh triangularization derivation

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20748861

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020748861

Country of ref document: EP

Effective date: 20210830