WO2019234290A1 - 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
WO2019234290A1
WO2019234290A1 PCT/FI2019/050392 FI2019050392W WO2019234290A1 WO 2019234290 A1 WO2019234290 A1 WO 2019234290A1 FI 2019050392 W FI2019050392 W FI 2019050392W WO 2019234290 A1 WO2019234290 A1 WO 2019234290A1
Authority
WO
WIPO (PCT)
Prior art keywords
occupancy map
image
geometry
original
texture
Prior art date
Application number
PCT/FI2019/050392
Other languages
French (fr)
Inventor
Payman Aflaki Beni
Sebastian Schwarz
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 EP19814492.5A priority Critical patent/EP3804334A4/en
Publication of WO2019234290A1 publication Critical patent/WO2019234290A1/en

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/004Predictors, e.g. intraframe, interframe coding
    • 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
    • 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
    • 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
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • H04N1/413Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
    • H04N1/417Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information using predictive or differential encoding

Definitions

  • the present invention relates to an apparatus, a method and a computer program for volumetric video coding and decoding.
  • a video coding system may comprise an encoder that transforms an input video into a compressed representation suited for storage/transmission and a decoder that can decompress the compressed video representation back into a viewable form.
  • the encoder may discard some information in the original video sequence in order to represent the video in a more compact form, for example, to enable the storage/transmission of the video information at a lower bitrate than otherwise might be needed.
  • 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 attribute, 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 attribute and other 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
  • Typical representation formats for such volumetric data are triangle meshes, point clouds (PCs), or voxel arrays.
  • Temporal information about the scene can be included in the form of individual capture instances, i.e.“frames” in 2D video, or other means, e.g. position of an object as a function of time.
  • Identifying correspondences for motion-compensation in 3D-space may be an ill- defined problem, as both the geometry and respective attributes may change. For example, temporal successive“frames” do not necessarily have the same number of meshes, points or voxel. Therefore, compression of dynamic 3D scenes may be inefficient. 2D-video based approaches for compressing volumetric data, i.e. multiview + depth, may have better compression efficiency, but rarely cover the full scene. Therefore, they provide only limited six degrees of freedom (6DOF) capabilities.
  • 6DOF degrees of freedom
  • volumetric video describes a 3D scene (or object), such data can be viewed from any viewpoint. Therefore, volumetric video may be an important format for any AR, VR, or MR applications, especially for providing 6DOF viewing capabilities.
  • Infrared, lasers, time-of-flight and structured light are all examples of devices that can be used to construct 3D video data. Representation of the 3D data depends on how the 3D data is used. Dense Voxel arrays have been used to represent volumetric medical data ln 3D graphics, polygonal meshes are extensively used. Point clouds on the other hand are well suited for applications such as capturing real world 3D scenes where the topology is not necessarily a 2D manifold. Another way to represent 3D data is coding this 3D data as set of texture and depth map as is the case in the multi- view plus depth. Closely related to the techniques used in multi- view plus depth is the use of elevation maps, and multi-level surface maps.
  • the reconstructed 3D scene may contain tens or even hundreds of millions of points lf such representations are to be stored or interchanged between entities, then efficient compression may become essential.
  • An occupancy map may be estimated based on encoded/decoded (reconstructed) texture and/or geometry images. This may guarantee that similar estimation can be performed also in the decoder side after the geometry and texture images have been decoded. Then the estimated occupancy map (EOM) may be compared with the original occupancy map (OOM) in the encoder side, where the original occupancy map is available, and the difference is created. In such comparison, several criteria may be considered. The difference may be encoded and transmitted for updating the estimated occupancy map in the decoder side. The amount of bitrate required to encode and represent the difference may be far less than bitrate required to encode the original occupancy map. A rate- distortion decision (RDO) may be applied to decide if the transmission of the difference is beneficial.
  • RDO rate- distortion decision
  • a volumetric video may comprise three-dimensional scenes represented as, for example, dynamic point clouds, arrays of voxels or mesh models or a combination of such.
  • the three-dimensional scenes may be projected onto a number of projection surfaces having simple geometries, for example sphere(s), cylinder(s), cube(s), polyhedron(s) and/or plane(s).
  • a three- dimensional scene contains at least one three-dimensional object.
  • a projection surface may be a piece-wise continuous and smooth surface in three-dimensional space. Piece-wise smoothness may be understood so that there are regions of the surface where the direction of the surface normal does not change abruptly (i.e. the values of the coefficients of the surface normal’s coordinate components are continuous).
  • a projection surface may comprise pieces of simple geometric surfaces.
  • a projection surface may also evolve (change) over time.
  • the texture and geometry of point clouds, voxel arrays or mesh models may form pixel images, e.g. texture images and depth images (indicative of distance from the projection surface). These two images represent the same object projected onto the same geometry, therefore object boundaries are aligned in texture and depth image.
  • Such projection surfaces may be unfolded onto two-dimensional (2D) planes, e.g. resulting in a two-dimensional pixel image.
  • Standard 2D video coding may be applied for each projection to code the pixel information resulting from the texture data.
  • relevant projection geometry information comprising e.g. projection or projection surface type, location and orientation of the projection surface in 3D space, and/or size of the projection surface, may be transmitted either in the same bitstream or separately along with the bitstream.
  • the bitstream may be decoded and volumetric video may be reconstructed from decoded 2D projections and projection geometry information.
  • Two-dimensional images may be projected from different parts of scene objects to form several patches.
  • patches may be projections onto one of three orthogonal planes (front, side, top). Patches are derived by analysing surface normals and clustering related 3D data points. The projection plane for each such patch is the one of the above mentioned three planes with the closest surface normal to the average patch normal. All patches may be packed into a 2D grid for compression. For each patch a 3D vector is signalled to specify the patch location in 3D space for reprojection at the decoder side.
  • Such patches may be gathered together to create a 2D grid which will later be encoded using conventional video codecs.
  • the phrase along with 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 with 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 with the bitstream may refer to metadata in a container file that encapsulates the bitstream.
  • the phrase in the bitstream or into the bitstream may be defined to refer to data transmission, signalling, or storage in a manner that the data is inserted into the bitstream.
  • the phrase decoding from the bitstream or alike may refer to decoding the referred data (which may be obtained from the transmission, signalling, or storage) that is encoded within the bitstream.
  • Some embodiments provide a method for encoding and decoding volumetric video information.
  • a method, apparatus and computer program product for volumetric video coding as well as decoding is provided.
  • An apparatus comprises at least one processor and at least one memory, said at least one memory stored with code thereon, which when executed by said at least one processor, causes the apparatus to perform at least:
  • a computer readable storage medium comprises code for use by an apparatus, which when executed by a processor, causes the apparatus to perform:
  • a method comprising:
  • an apparatus comprising at least one processor and at least one memory, said at least one memory stored with code thereon, which when executed by said at least one processor, causes the apparatus to perform at least:
  • a computer readable storage medium comprising code for use by an apparatus, which when executed by a processor, causes the apparatus to perform:
  • an apparatus comprising:
  • 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
  • Figs. 4a, 4b, 4c and 4d show a setup for forming a stereo image of a scene to a user
  • FIGs. 5a and 5b illustrate projection of source volumes in a scene and parts of an object to projection surfaces
  • Fig. 6 shows a projection of a source volume to a projection surface, and inpainting of a sparse projection
  • Fig. 7 shows an example of a block divided into sub-blocks
  • Figs. 8a to 8d show examples of traversal orders for the sub-blocks of a TxT block, in accordance with an embodiment
  • Fig. 9a illustrates an example of an encoding element
  • Fig. 9b illustrates an example of a decoding element.
  • FIG. 10a shows a simplified flow diagram of a processing chain to encode information regarding an occupancy map, in accordance with an embodiment
  • Fig. lOb shows a simplified flow diagram of a processing chain to decode an occupancy map, in accordance with an embodiment
  • Fig. 11 illustrates an example of patch packing
  • Fig. 12 illustrates an example of forming a grid for patches and arranging the patches in the grid.
  • Point clouds are commonly used data structures for storing volumetric content.
  • sparse voxel octrees describe a recursive subdivision of a finite volume with solid voxels of varying sizes
  • point clouds describe an unorganized set of separate points limited only by the precision of the used coordinate values.
  • a volumetric video frame is a sparse voxel octree or a point cloud that models the world at a specific point in time, similar to a frame in a 2D video sequence.
  • Voxel or point 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) or point clouds, but can also be stored separately.
  • 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 the number of cameras. 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 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.
  • two camera sources are used.
  • the human auditory system can 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.
  • 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, ...,
  • 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 ft 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 memory
  • PROGR2 shown computer program 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.
  • 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 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 V1EWER1 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 V1EWER2 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 V1EWER2 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 CAM1.
  • 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 CP1 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 CP1 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 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.
  • 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 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.
  • 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, respectively, 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 (I n ); a predicted representation of an image block (P m ); a prediction error signal (D n ); a reconstructed prediction error signal (D m ); a preliminary reconstructed image (I m ); a final reconstructed image (R m ); 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 (Pmter); intra prediction (P intra) ; mode selection (MS) and filtering (F).
  • Figure 3b illustrates a predicted representation of an image block (P m ); a reconstructed prediction error signal (D m ); a preliminary reconstructed image (I m ); a final reconstructed image (R' n ); an inverse transform 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).
  • 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 ln
  • Fig. 4a a situation is shown where a human being is viewing two spheres Al and A2 using both eyes El and E2.
  • the sphere Al 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 di 2 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) D1R1 and D1R2 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 Al 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 F C 2.
  • the "left eye” image Fci shows the image S A 2 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.
  • the images Fci and Fc 2 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 Fc 2 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 Fc 2 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 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.
  • the images Fci and Fc 2 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 Fx 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 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.
  • 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.
  • 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.
  • 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.
  • 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).
  • FIGs. 5a and 5b illustrate projection of source volumes in a digital scene model SCE and parts of an object model OBJ1, OBJ2, OBJ3, BG4 to projection surfaces Sl, S2, S3, S4, as well as determining depth information for the purpose of encoding volumetric video.
  • 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 Sl.
  • the scene model SCE may comprise further source volumes SV2, SV3, SV4.
  • the projection of source volumes SV1, 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:
  • a projection centre such as a projection centre point, axis, or plane
  • 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 Sl, 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 centre axis and a spherical surface has a centre point.
  • a cubical or rectangular surface may have centre planes or a centre axis and the projection of the geometry primitives may take place either orthogonally to the sides of the surface or from the centre axis 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.
  • projection surfaces need not be rectangular but may be arranged or located spatially on a rectangular picture. 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 a 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 lO-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.
  • 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.
  • 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.
  • Texture picture(s) and the respective geometry picture(s) may have the same or different chroma format.
  • a pixel may be defined to 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.
  • a single object may be composed of different parts and thus different source volumes VI 1, V12, V13, V14 and corresponding projection surfaces Sl 1, S12,
  • S13, S14 may be used for these different parts.
  • 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 more 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 ln 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.
  • lnformation 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
  • cube projection to represent the chair
  • another cube for the screen e.g. a cylinder for the person's torso
  • a sphere for a detailed representation of the person's head e.g. 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.
  • 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
  • classification of each object as static/dynamic may be signalled
  • channel(s) e.g. quantisation method, depth ranges, bit depth, etc. may be signalled
  • signalling may, for example, be as follows:
  • NUM OBJECTS4 // folding-chair, TV, person body, person head
  • PROJ GEO // geometry, e.g. 0: cube, 1 : cylinder, 2: sphere,
  • PROJ CENTRE X/Y/Z // projection centre in real world coordinates
  • PROJ_SIZE_ X/Y/Z // projection dimensions in real world units
  • DEPTH QUANT // depth quantisation, i.e. 0 for linear, ...
  • 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. 6 shows a projection of a source volume to a cylindrical projection surface, and inpainting of the sparse projection areas.
  • a three-dimensional (3D) scene model represented as objects OBJ1 comprising geometry primitives such as mesh elements, points, and/or voxel, may be projected onto one, or more, projection surfaces, as described earlier.
  • these projection surface geometries may be "unfolded" onto 2D planes (two planes per projected source volume: one for texture TP1, one for depth GP1), which may then be encoded using standard 2D video compression technologies.
  • Relevant projection geometry information may be transmitted alongside the encoded video files to the decoder.
  • the decoder may then decode the video and performs the inverse projection to regenerate the 3D scene model object ROBJ1 in any desired representation format, which may be different from the starting format e.g. reconstructing a point cloud from original mesh model data.
  • auxiliary pictures related to one or more said texture pictures and the pixels thereof may be encoded into or along with the bitstream.
  • the auxiliary pictures may e.g. represent texture surface properties related to one or more of the source volumes. Such texture surface properties may be e.g. surface normal information (e.g. with respect to the projection direction), reflectance and opacity (e.g. an alpha channel value).
  • An encoder may encode, in or along with the bitstream, indication(s) of the type(s) of texture surface properties represented by the auxiliary pictures, and a decoder may decode, from or along the bitstream, indication(s) of the type(s) of texture surface properties represented by the auxiliary pictures.
  • Mechanisms to represent an auxiliary picture may include but are not limited to the following:
  • a colour component sample array such as a chroma sample array, of the geometry picture.
  • a constituent frame of a frame-packed picture that may also comprise texture picture(s) and/or geometry picture(s).
  • auxiliary picture included in specific data units in the bitstream.
  • H.264/AVC Advanced Video Coding
  • NAL network abstraction layer
  • An auxiliary picture layer within a layered bitstream comprises the feature of including auxiliary picture layers in the bitstream.
  • An auxiliary picture layer comprises auxiliary pictures.
  • auxiliary picture bitstream separate from the bitstream(s) for the texture picture(s) and geometry picture(s).
  • the auxiliary picture bitstream may be indicated, for example in a container file, to be associated with the bitstream(s) for the texture pictures(s) and geometry picture(s).
  • the mechanism(s) to be used for auxiliary pictures may be pre-defined e.g. in a coding standard, or the mechanism(s) may be selected e.g. by an encoder and indicated in or along the bitstream.
  • the decoder may decode the mechanism(s) used for auxiliary pictures from or along the bitstream.
  • the projection surface of a source volume may encompass the source volume, and there may be a model of an object in that source volume. Encompassing may be understood so that the object (model) is inside the surface such that when looking from the centre axis or centre point of the surface, the object's points are closer to the centre than the points of the projection surface are.
  • the model may be made of geometry primitives, as described.
  • the geometry primitives of the model may be projected onto the projection surface to obtain projected pixels of the texture picture. This projection may happen from inside-out. Alternatively, or in addition, the projection may happen from outside-in.
  • Projecting 3D data onto 2D planes is independent from the 3D scene model representation format.
  • Encoding the projection information may be performed, for example, as follows.
  • the projected texture planes of a point cloud for one time instant can all be collected and frame-packed and similarly the depth and the possible auxiliary planes are frame-packed such that the frame packing is consistent across all the planes for one time instant.
  • Each of the planes are then coded using traditional 2D video coders using layered video coding or coded independently and related to each other using some form of higher level signalling (for e.g. using tracks and track references of ISO Base Media File Format).
  • each texture, depth and auxiliary planes of a single time instant of a point cloud could be considered independent of each other in that time instant and coded serially one after the other. For example, if there are nine projection surfaces identified of a point cloud, then for that time instant, first the nine texture planes are coded, followed by nine depth planes and the followed by nine planes that carry surface normal and so on until all the auxiliary data planes are coded.
  • Figures 9a and 9b provide an overview of an example of encoding and decoding processes, respectively, Figure 10a depicts a simplified flow diagram for a possible processing chain to encode occupancy map information, in accordance with an embodiment, and Fig. lOb shows a simplified flow diagram of a processing chain to decode the occupancy map information, in accordance with an embodiment.
  • a point cloud is received by a patch generator 902 in which a patch generation process aims at decomposing the point cloud into a minimum number of patches with smooth boundaries, while also minimizing the reconstruction error. This may be performed by, for example, the following approach.
  • each point is associated with the plane that has the closest normal (e.g. maximizes the dot product of the point normal and the plane normal).
  • the initial clustering is then refined by iteratively updating the cluster index associated with each point based on its normal and the cluster indices of its nearest neighbors.
  • the final step consists of extracting patches by applying a connected component extraction procedure.
  • the extracted patches are provided to a packing element 904 in which the packing process aims at mapping the extracted patches onto a 2D grid ( Figure 12), while trying to minimize the unused space, and trying to guarantee that every TxT (e.g., 16x16) block of the grid is associated with a unique patch.
  • the parameter T may be a user-defined parameter that is encoded in the bitstream and sent to the decoder.
  • Figure 11 illustrates an example of packing. In Figure 11 white areas illustrate empty pixels.
  • the packing element 904 outputs an occupancy map.
  • occupancy map refers to a binary image where the occupied pixels and non-occupied pixels are distinguished and depicted respectively.
  • a packing strategy may iteratively try to insert patches into a
  • WxH grid W (width) and H (height) are, for example, user defined parameters, which correspond to the resolution of the geometry/texture images that will be encoded.
  • the patch location may be determined through an exhaustive search that is performed in a raster scan order. The first location that may provide an overlapping- free insertion of the patch is selected and the grid cells covered by the patch are marked as used. If no empty space in the current resolution image can fit a patch, then the height H of the grid is temporarily doubled, and search is applied again. At the end of the process, the H parameter is clipped so as to fit the used grid cells.
  • An image generation process performs both a geometry image generation 906 and a texture image generation 908 by applying the 3D to 2D mapping computed during the packing process to store the geometry and texture of the point cloud as images.
  • Each patch is projected onto one image, which may also be referred to as a layer. More precisely, let H(u,v) be the set of points of the current patch that get projected to the same pixel (u, v). If more than one 3D point is projected to the same location on the current patch, a single value for that location H(u,v) may be selected.
  • the layer stores the point of H(u,v) with the closest distance to its projection surface, e.g. the lowest depth DO.
  • the generated videos may have the following characteristics, for example:
  • geometry video may be monochromatic.
  • the geometry image and/or the texture image may be padded by an image padding element 910.
  • Padding aims at filling the empty space between patches in order to generate a piecewise smooth image suited for video compression.
  • the image padding element 910 may consider keeping the compression high as well as enabling estimating of occupancy map (EOM) with enough accuracy as compared to the original occupancy map (OOM).
  • Each block of TxT (e.g., 16x16) pixels is processed independently. If the block is empty (i.e., all its pixels belong to an empty space), then the pixels of the block are filled by copying either the last row or column of the previous TxT block in raster order. If the block is full (i.e., no empty pixels), nothing is done. If the block has both empty and filled pixels, then the empty pixels are iteratively filled with the average value of their non-empty neighbors.
  • the generated images/layers may be stored as video frames and compressed.
  • the padded geometry image and the padded texture image are provided to a video compression element 912 for compressing the padded geometry image and the padded texture image, from which the compressed geometry and texture images are provided, for example, to a multiplexer 914 which multiplexes the input data to a compressed bitstream(s).
  • the compressed geometry and texture images are also provided, for example, to an occupancy map estimator 918 which generates an estimated occupancy map (block 602 in Figure lOa). This step refers to estimation of the occupancy map based on the reconstructed geometry and/or texture images.
  • an algorithm may be used to find the borders of geometry and/or texture images. It is noted that the borders are aligned with each other in general and prior to encoding. However, maybe after encoding, the edges are a bit misaligned which can be corrected based on the original occupancy map and in the following steps.
  • the occupancy map may consist of a binary map that indicates for each cell of the grid whether it belongs to the empty space or to the point cloud.
  • One cell of the 2D grid would produce a pixel during the image generation process.
  • the estimated occupancy generation step based on the embodiment used in the padding step, different processes between respective padded geometry, Y, U, and/or V components may be considered. Based on such processes, an estimation of edges (i.e. contours defining the occupancy map) will be created. Such estimation may be fine tuned in the cases where more than one component/image are to be used for estimating the occupancy map.
  • An example of an edge detection algorithm is a multiscale edge detection algorithm, which is based on wavelet domain vector hidden Markov tree model. However, some other algorithm may be applied in this context.
  • the algorithm may be more aligned with the pattern that has been used in the padding process of different images.
  • algorithms may be designed to recognize the following:
  • a contour image may be estimated for the current texture/geometry images. This is referred to as estimated occupancy map (EOM) and will be used in a comparison step in which the original occupancy map and the estimated occupancy map will be compared with each other.
  • EOM estimated occupancy map
  • the encoder may make the decision which algorithm to use for creating the estimated occupancy map (block 604).
  • a codeword may be assigned to different estimation processes and this codeword may be communicated with the decoder so that decoder chooses the same algorithm to estimate the occupancy map.
  • Such signalling may be per patch, per frame, per GOP, per sequence, etc.
  • the amount of overhead for this signal may be negligible as it will be e.g. 3 bits (for 8 different estimation algorithms) per patch, per frame, per GOP, per sequence, etc.
  • Such codeword may be used based on a shared look-up table between the encoder and the decoder.
  • the codeword refers to the index in which the respective algorithm to estimate the occupancy map is stored.
  • Such codeword may be entropy coded to reduce the overhead further.
  • An occupancy map comparator 922 receives the original occupancy map (block 605) from the packing element 904 and the estimated occupancy map from the occupancy map estimator 920.
  • the occupancy map comparator 922 compares the estimated occupancy map and the original occupancy map (block 606).
  • the comparison will be flexible to small misalignments between contours of the estimated occupancy map and the original occupancy map.
  • any misalignment which is smaller than M pixels may be ignored.
  • M may be a predetermined threshold selected so that such small changes do not affect the visual quality of the output rendered 3D content subjectively.
  • the texture and geometry images will be aligned with the new occupancy map by either shrinking or padding the texture and geometry images, respectively.
  • the decoder reconstructs an occupancy map based on its estimated occupancy map and the received residual data.
  • rate-distortion optimisation (RDO) algorithm is applied to determine if the required bit rate to transmit the difference brings sufficient quality improvements.
  • simplified, e.g. downsampled/sub-sampled difference signals may be considered as alternative with lower bit rate requirements.
  • an RDO algorithm is needed to decide whether this OM estimation algorithm is to be used or not. This algorithm will define if another OM estimation algorithm should be used or any conventional OM compression algorithms e.g. run length algorithm should be used.
  • the estimated occupancy map and the original occupancy map are provided to a difference signal generator 924.
  • the difference signal generator 924 defines the residual data based on the estimated occupancy map by finding differences between the estimated occupancy map and the original occupancy map. On the basis of the differences, the difference signal generator 924 generates a corresponding difference signal (block 608).
  • the difference may be in a form of pixel value relocation compared to what already exists in the estimated occupancy map. Alternatively, it may define the difference between the two estimated occupancy maps and the original occupancy map. Any method by which the estimated occupancy map can be converted to be as close as possible to the original occupancy map may be utilized here.
  • the difference signal may define which estimation to use e.g. if there exist two OM estimations from geometry and texture images, then based on the difference signal it is decided which one to be used.
  • the difference signal may define how to combine the two estimation images to create the closest estimation to the original OM.
  • Said combining may comprise weighted averaging from one estimation to another estimation or defining spatial areas for which a specific estimation image may be used.
  • the residual may be encoded with any compression approach e.g. arithmetic coding, compression of the difference image, etc. (block 610).
  • auxiliary patch information compression element 918 for compressing auxiliary patch information before providing the compressed auxiliary patch information to the multiplexer 914.
  • Auxiliary patch information may also be coded for example as follows.
  • the signalling structure of the auxiliary per-patch information may be as follows:
  • mapping information providing for each TxT block its associated patch index may be encoded as follows:
  • L an ordered list of the indexes of the patches such that their 2D bounding box contains that block.
  • the order in the list is the same as the order used to encode the 2D bounding boxes.
  • L is called the list of candidate patches.
  • the empty space between patches is considered as a patch and is assigned the special index 0, which is added to the candidate patches list of all the blocks.
  • I an index of the patch to which the current TxT block belongs and let J be the position of I in L. Instead of explicitly encoding the index I, its position J is arithmetically encoded instead, which may lead to better compression efficiency.
  • the occupancy map may consist of a binary map that indicates for each cell of the grid whether it belongs to the empty space or to the point cloud.
  • One cell of the 2D grid would produce a pixel during the image generation process.
  • An occupancy map compression may leverage the auxiliary information described above in order to detect the empty TxT blocks (i.e., blocks with the patch index 0).
  • the remaining blocks may be encoded as follows.
  • the occupancy map could be encoded with a precision of a BOxBO blocks.
  • FIG. 7 illustrates an example of the TxT block 710 divided into 16 BOxBO sub-blocks 712.
  • the compression process may proceed as follows: [0151] Binary values are associated with BOxBO sub-blocks 712 belonging to the same TxT block 710. A value 1 is associated with a sub-block, if it contains at least a non-padded pixel, and 0 otherwise. If a sub-block has a value of 1 it is said to be full, otherwise it is an empty sub-block. If all the sub-blocks of a TxT block are full (i.e., have value 1). The block is said to be full.
  • a binary information is encoded for each TxT block to indicate whether it is full or not. If the block is non- full, an extra information indicating the location of the full/empty sub-blocks may be encoded, for example, as follows:
  • FIG. 8a to 8d show the four considered traversal orders 714, in accordance with an embodiment.
  • the encoder chooses one of the traversal orders 714 and explicitly signals its index in the bitstream.
  • the binary values associated with the sub-blocks may be encoded by using a run-length encoding strategy, for example as follows:
  • the binary value of the initial sub-block is encoded. Continuous runs of 0s and ls are detected, while following the traversal order selected by the encoder. The number of detected runs is encoded and the length of each run, except of the last one, is also encoded.
  • the point cloud geometry reconstruction process exploits the occupancy map information in order to detect non-empty pixels in the geometry/texture images/layers.
  • the 3D positions of the points associated with those pixels are computed by levering the auxiliary patch information and the geometry images. More precisely, in accordance with an approach, the geometry reconstruction process may comprise the following.
  • P be the point associated with the pixel (u, v) and let (dq, sO, rO) be the 3D location of the patch to which it belongs and (uO, vO, ul, vl) its 2D bounding box.
  • P could be expressed in terms of depth 5(u, v), tangential shift s(u, v) and bi-tangential shift r(u, v) as follows:
  • g(u, v) is the luma component of the geometry image.
  • the smoothing procedure 919 aims at alleviating potential discontinuities that may arise at the patch boundaries due to compression artifacts. According to an approach boundary points are moved to the centroid of their nearest neighbours.
  • texture values may be directly read from the texture images.
  • One way to compress a time-varying volumetric scene/object is to project 3D surfaces on to some number of pre-defmed 2D planes. Regular 2D video compression algorithms can then be used to compress various aspects of the projected surfaces. For example, a time-varying 3D point cloud, with spatial and texture coordinates, can be mapped into a sequence of at least two sets of planes, where one of the two sets carry the texture data and the other carries the distance of the mapped 3D surface points from the projection planes. Aligned with this, an occupancy map informs the decoder which pixels are valid and which pixels are the padded areas in between the patches.
  • the geometry image is padded conventionally while the texture image is padded differently.
  • One chroma component (either U or V components, representing Cr and Cb) of the texture image is to pad the un-occupied pixels all to a minimum or to a maximum signal value. For the rest of this description, 255 is assumed as the maximum and 0 as the minimum signal value, but also other values may be used in different embodiments.
  • a conventional padding is used for the geometry image while for chroma components of the texture image one of the chroma components is padded towards 0. This means that the pixels in the un-occupied pixels are padded towards 0. Alternatively, one chroma component may be padded towards 255.
  • going towards 0 or 255 means that the distance between the border of patches should go from one value to the respective 0 or 255 and going back again to the value of the other border. This means that between the edges of the patches, there exist so called hills or canyons where the values go up and come back down or go down and come back up, respectively.
  • one chroma component of the texture image is to be padded towards 0 and the other to be padded towards 255. This may enable the estimation of borders easier while tracking opposite behaviour in chroma components of the texture images.
  • geometry image is padded in one direction e.g. horizontally, and the texture image is padded in the other direction e.g. vertically.
  • the values in each row will be interpolated from one value to another one.
  • the next row is independent of the previous row and similar interpolation happens horizontally.
  • a structure of row-based changes may become visible in e.g. geometry image.
  • Similar process happens for texture but in the other direction e.g. vertical direction.
  • each column will be interpolated between the patches vertically and each column will be interpolated independently from other columns. Therefore, combining these two padded images, an overlapping boundary for texture/geometry images may be detectable.
  • any other direction e.g. diagonal from top-left to bottom-right or diagonal from top-right to bottom-left may be used ft should be noted that the direction should be different in the two chosen padding processes e.g. 45 or 90 degrees. The more the difference between the padding directions, the maximum difference being 90 degrees, the easier it may be to estimate the occupancy map.
  • the interpolation algorithm applied between each two patch boundaries is to have special pattern to make it more
  • an interpolation pattern to both geometry and texture images are introduced.
  • interpolation may be applied using a step size of a multiple of one pre- fixed step value, e.g. 3 or 5, and having a fixed number of pixels for which the padded value remains constant and then changes with a multiply of the pre-fixed step value.
  • pre-fixed step size e.g. 3 or 5
  • constant fixed pixels e.g. 2
  • the algorithm to interpolate can be simple and flexible for the middle parts when the beginning and last part is fixed to have a larger step.
  • the distribution of pixel values in the interpolation area may differ from one case to another case.
  • the pre fixed step size is taken into account every time that the pixel values change and the number of pixels having the same value follow the fixed defined number, it will introduce a pattern which may be used when estimating the occupancy map.
  • the minimum changes may be allocated to the middle part of the row/column to be interpolated just to clarify that the borders exist in the places where the differences are larger.
  • a rate distortion optimization (RDO) algorithm may be used in the encoder side to decide which padding performs better along with the occupancy map estimation algorithm used.
  • the algorithm which shows to perform better may then be used in the padding process.
  • the selection of padding may affect the algorithm that should be used in the decoder to find the edges. Therefore, the padding method used should be communicated between encoder and decoder enabling decoder to make the correct decision on the edge detection of geometry images and texture images.
  • a codeword accompanied with a look-up-table may be used for signalling the padding method used.
  • different padding methods are used for geometry images and texture images, wherein the selected padding methods may be signalled to the decoder.
  • a default padding method may have been defined, wherein if the selected padding method(s) differ(s) from the default padding method, the selected padding method(s) may be signalled to the decoder.
  • a decoder 720 receives a bitstream (the block 670 in Figure lOb) and a decoding element 721 decodes 672 the bitstream to reconstruct the encoded information from the bitstream.
  • the decoded information may comprise information of the geographical shape of the grid, unless a predetermined shape is used, the size (e.g.
  • a patch parser 722 uses this information to reconstruct 676 the patches from the grids. Reconstructed patches may then be converted 678 to point clouds and further to volumetric video by an image reconstructor 723.
  • Figure 9b depicts some elements of a decoder 930, in accordance with an embodiment.
  • a demultiplexer 932 demultiplexes different information streams to correct decoding elements.
  • the compressed geometry image and the compressed texture images are provided to a video decompression element 934 for decompressing to obtain decompressed geometry image and decompressed texture image.
  • a difference signal decoding element 936 is provided with the encoded information of differences between the estimated occupancy map and the original occupancy map and outputs a decoded difference signal.
  • the difference signal and information of the estimation process used in encoding are input to an occupancy map creator 946 for
  • the occupancy map creator 946 also receives the decompressed geometry image and decompressed texture image from the video decompression element 934 to be used in the reconstruction of the occupancy map.
  • the compressed auxiliary patch information is provided to an auxiliary patch information decompressing element 938 to obtain decompressed auxiliary patch information.
  • a geometry reconstruction element 940 uses the reconstructed occupancy map, decompressed geometry image and the decompressed auxiliary patch information to reconstruct the geometry image.
  • the reconstructed geometry image may be smoothened by a smoothing element 942.
  • a texture reconstruction element 944 uses the decompressed video information and geometry information to reconstruct the texture image. [0181] In the following, occupancy map reconstruction operations at the decoder side will shortly be described.
  • Similar occupancy map estimation process which has been used in the encoder is also performed in the decoder. Considering that the occupancy map estimation in the encoder has been performed on reconstructed geometry and/or texture images, then while applying the same process to decoded geometry and/or texture, identical estimated occupancy map may be achieved.
  • the information of the estimation process used in encoding which may have been transmitted by the encoder and received by the decoder, such as a predetermined codeword, which may represent an index to a look-up table of padding methods, may be used to find which type of estimation process/algorithm is to be used for creating the estimated occupancy map.
  • the estimated occupancy map may then be fine-tuned based on the residual information transmitted from encoder. Therefore, the occupancy map will be created in the decoder side.
  • the decoded texture and geometry images may be shrunk or padded to have aligned edges as contours defining the occupancy map.
  • the padding may be any algorithm like mirroring or extrapolation of pixel values.
  • the occupancy map is not required to be encoded anymore. Therefore, a bitrate reduction may be achieved as the required bitrate to encode the residual information may be considerably lower than the amount of bitrate required to encode the occupancy map.
  • the rate- distortion decision application may make the transmission of the occupancy map flexible and adjustable to the content for best performance.
  • a partitioning may be defined as a division of a set into subsets such that each element of the set is in exactly one of the subsets.
  • 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 CU consists of one or more prediction units (PU) defining the prediction process for the samples within the CU and one or more transform units (TU) defining the prediction error coding process for the samples in the said CU.
  • PU prediction units
  • TU transform units
  • a CU consists of a square block of samples with a size selectable from a predefined set of possible CU sizes.
  • Each PU and TU can be further split into smaller PUs and TUs in order to increase granularity of the prediction and prediction error coding processes, respectively.
  • Each PU has prediction information associated with it defining what kind of a prediction is to be applied for the pixels within that PU (e.g. motion vector information for inter predicted PUs and intra prediction directionality information for intra predicted PUs).
  • Each TU can be associated with information describing the prediction error decoding process for the samples within the said TU (including e.g. DCT coefficient information). It is typically signalled at CU level whether prediction error coding is applied or not for each CU. In the case there is no prediction error residual associated with the CU, it can be considered there are no TUs for the said CU.
  • the division of the image into CUs, and division of CUs into PUs and TUs is typically signalled in the bitstream allowing the decoder to reproduce the intended structure of these units.
  • 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.
  • a motion-constrained tile set is such that the inter prediction process is constrained in encoding such that no sample value outside the motion-constrained tile set, and no sample value at a fractional sample position that is derived using one or more sample values outside the motion-constrained tile set, is used for inter prediction of any sample within the motion- constrained tile set. Additionally, the encoding of an MCTS is constrained in a manner that motion vector candidates are not derived from blocks outside the MCTS.
  • an MCTS may be defined to be a tile set that is independent of any sample values and coded data, such as motion vectors, that are outside the MCTS.
  • an MCTS may be required to form a rectangular area ft should be understood that depending on the context, an MCTS may refer to the tile set within a picture or to the respective tile set in a sequence of pictures. The respective tile set may be, but in general need not be, collocated in the sequence of pictures.
  • sample locations used in inter prediction may be saturated by the encoding and/or decoding process so that a location that would be outside the picture otherwise is saturated to point to the corresponding boundary sample of the picture.
  • encoders may allow motion vectors to effectively cross that boundary or a motion vector to effectively cause fractional sample interpolation that would refer to a location outside that boundary, since the sample locations are saturated onto the boundary.
  • encoders may constrain the motion vectors on picture boundaries similarly to any MCTS boundaries.
  • the temporal motion-constrained tile sets SEI message of HEVC can be used to indicate the presence of motion-constrained tile sets in the bitstream.
  • the decoder reconstructs the output video by applying prediction means similar to the encoder to form a predicted representation of the pixel blocks (using the motion or spatial information created by the encoder and stored in the compressed representation) and prediction error decoding (inverse operation of the prediction error coding recovering the quantized prediction error signal in spatial pixel domain). After applying prediction and prediction error decoding means the decoder sums up the prediction and prediction error signals (pixel values) to form the output video frame.
  • the decoder (and encoder) can also apply additional filtering means to improve the quality of the output video before passing it for display and/or storing it as prediction reference for the forthcoming frames in the video sequence.
  • the filtering may for example include one more of the following: deblocking, sample adaptive offset (SAO), and/or adaptive loop filtering (ALF).
  • deblocking sample adaptive offset (SAO)
  • ALF adaptive loop filtering
  • H.264/AVC includes a deblocking
  • HEVC includes both deblocking and SAO.
  • the motion information is indicated with motion vectors associated with each motion compensated image block, such as a prediction unit.
  • Each of these motion vectors represents the displacement of the image block in the picture to be coded (in the encoder side) or decoded (in the decoder side) and the prediction source block in one of the previously coded or decoded pictures.
  • those are typically coded differentially with respect to block specific predicted motion vectors.
  • the predicted motion vectors are created in a predefined way, for example calculating the median of the encoded or decoded motion vectors of the adjacent blocks.
  • Another way to create motion vector predictions is to generate a list of candidate predictions from adjacent blocks and/or co-located blocks in temporal reference pictures and signalling the chosen candidate as the motion vector predictor.
  • this prediction information may be represented for example by a reference index of previously coded/decoded picture.
  • the reference index is typically predicted from adjacent blocks and/or co-located blocks in temporal reference picture.
  • typical high efficiency video codecs employ an additional motion information coding/decoding mechanism, often called merging/merge mode, where all the motion field information, which includes motion vector and corresponding reference picture index for each available reference picture list, is predicted and used without any modification/correction.
  • predicting the motion field information is carried out using the motion field information of adjacent blocks and/or co-located blocks in temporal reference pictures and the used motion field information is signalled among a list of motion field candidate list filled with motion field information of available adjacent/co- located blocks.
  • Typical video encoders utilize Lagrangian cost functions to find optimal coding modes, e.g. the desired coding mode for a block and associated motion vectors.
  • This kind of cost function uses a weighting factor l to tie together the (exact or estimated) image distortion due to lossy coding methods and the (exact or estimated) amount of information that is required to represent the pixel values in an image area:
  • C D + LR, (1)
  • C the Lagrangian cost to be minimized
  • D the image distortion (e.g. Mean Squared Error) with the mode and motion vectors considered
  • R the number of bits needed to represent the required data to reconstruct the image block in the decoder (including the amount of data to represent the candidate motion vectors).
  • Video coding standards and specifications may allow encoders to divide a coded picture to coded slices or alike. In-picture prediction is typically disabled across slice boundaries. Thus, slices can be regarded as a way to split a coded picture to independently decodable pieces. In H.264/AVC and HEVC, in-picture prediction may be disabled across slice boundaries. Thus, slices can be regarded as a way to split a coded picture into independently decodable pieces, and slices are therefore often regarded as elementary units for transmission. In many cases, encoders may indicate in the bitstream which types of in-picture prediction are turned off across slice boundaries, and the decoder operation takes this information into account for example when concluding which prediction sources are available. For example, samples from a neighboring CU may be regarded as unavailable for infra prediction, if the neighboring CU resides in a different slice.
  • NAL Network Abstraction Layer
  • the bytestream format separates NAL units from each other by attaching a start code in front of each NAL unit.
  • encoders run a byte- oriented start code emulation prevention algorithm, which adds an emulation prevention byte to the NAL unit payload if a start code would have occurred otherwise ln order to enable straightforward gateway operation between packet- and stream-oriented systems, start code emulation prevention may always be performed regardless of whether the bytestream format is in use or not.
  • a NAL unit may be defined as a syntax structure containing an indication of the type of data to follow and bytes containing that data in the form of an RBSP interspersed as necessary with emulation prevention bytes.
  • a raw byte sequence payload (RBSP) may be defined as a syntax structure containing an integer number of bytes that is encapsulated in a NAL unit.
  • An RBSP is either empty or has the form of a string of data bits containing syntax elements followed by an RBSP stop bit and followed by zero or more subsequent bits equal to 0.
  • NAL units consist of a header and payload ln H.264/AVC and HEVC, the NAL unit header indicates the type of the NAL unit
  • a two-byte NAL unit header is used for all specified NAL unit types.
  • the NAL unit header contains one reserved bit, a six-bit NAL unit type indication, a three-bit nuh_temporal_id_plusl indication for temporal level (may be required to be greater than or equal to 1) and a six-bit nuh layer id syntax element.
  • the abbreviation T1D may be used to interchangeably with the Temporalld variable.
  • Temporalld 0 corresponds to the lowest temporal level.
  • the value of temporal_id_plusl is required to be non-zero in order to avoid start code emulation involving the two NAL unit header bytes.
  • the bitstream created by excluding all VCL NAL units having a Temporalld greater than or equal to a selected value and including all other VCL NAL units remains conforming. Consequently, a picture having Temporalld equal to tid value does not use any picture having a Temporalld greater than tid value as inter prediction reference.
  • NAL units can be categorized into Video Coding Layer (VCL) NAL units and non-VCL NAL units.
  • VCL NAL units are typically coded slice NAL units.
  • VCL NAL units contain syntax elements representing one or more CU.
  • a non-VCL NAL unit may be for example one of the following types: a sequence parameter set, a picture parameter set, a supplemental enhancement information (SEI) NAL unit, an access unit delimiter, an end of sequence NAL unit, an end of bitstream NAL unit, or a filler data NAL unit.
  • SEI Supplemental Enhancement Information
  • Parameter sets may be needed for the reconstruction of decoded pictures, whereas many of the other non-VCL NAL units are not necessary for the reconstruction of decoded sample values.
  • Parameters that remain unchanged through a coded video sequence may be included in a sequence parameter set.
  • the sequence parameter set may optionally contain video usability information (VUI), which includes parameters that may be important for buffering, picture output timing, rendering, and resource reservation.
  • VUI video usability information
  • a sequence parameter set RBSP includes parameters that can be referred to by one or more picture parameter set RBSPs or one or more SEI NAL units containing a buffering period SEI message.
  • a picture parameter set contains such parameters that are likely to be unchanged in several coded pictures.
  • a picture parameter set RBSP may include parameters that can be referred to by the coded slice NAL units of one or more coded pictures.
  • a video parameter set may be defined as a syntax structure containing syntax elements that apply to zero or more entire coded video sequences as determined by the content of a syntax element found in the SPS referred to by a syntax element found in the PPS referred to by a syntax element found in each slice segment header.
  • a video parameter set RBSP may include parameters that can be referred to by one or more sequence parameter set RBSPs.
  • Out-of-band transmission, signaling or storage can additionally or alternatively be used for other purposes than tolerance against transmission errors, such as ease of access or session negotiation.
  • 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.
  • a SEI NAL unit may contain one or more SEI messages, which are not required for the decoding of output pictures but may assist in related processes, such as picture output timing, rendering, error detection, error concealment, and resource reservation.
  • SEI messages are specified in H.264/AVC and HEVC, and the user data SEI messages enable organizations and companies to specify SEI messages for their own use.
  • H.264/AVC and HEVC contain the syntax and semantics for the specified SEI messages but no process for handling the messages in the recipient is defined.
  • encoders are required to follow the H.264/AVC standard or the HEVC standard when they create SEI messages, and decoders conforming to the H.264/AVC standard or the HEVC standard, respectively, are not required to process SEI messages for output order conformance.
  • One of the reasons to include the syntax and semantics of SEI messages in H.264/AVC and HEVC is to allow different system specifications to interpret the supplemental information identically and hence interoperate. It is intended that system specifications can require the use of particular SEI messages both in the encoding end and in the decoding end, and additionally the process for handling particular SEI messages in the recipient can be specified.
  • SEI NAL units there are two types, namely the suffix SEI NAL unit and the prefix SEI NAL unit, having a different nal unit type value from each other.
  • the SEI message(s) contained in a suffix SEI NAL unit are associated with the VCL NAL unit preceding, in decoding order, the suffix SEI NAL unit.
  • the SEI message(s) contained in a prefix SEI NAL unit are associated with the VCL NAL unit following, in decoding order, the prefix SEI NAL unit.
  • a coded picture is a coded representation of a picture.
  • a coded picture may be defined as a coded representation of a picture containing all coding tree units of the picture.
  • an access unit (AU) may be defined as a set of NAL units that are associated with each other according to a specified classification rule, are consecutive in decoding order, and contain at most one picture with any specific value of nuh layer id.
  • an access unit may also contain non-VCL NAL units. Said specified classification rule may for example associate pictures with the same output time or picture output count value into the same access unit.
  • a bitstream may be defined as a sequence of bits, in the form of a NAL unit stream or a byte stream, that forms the representation of coded pictures and associated data forming one or more coded video sequences.
  • a first bitstream may be followed by a second bitstream in the same logical channel, such as in the same file or in the same connection of a communication protocol.
  • An elementary stream (in the context of video coding) may be defined as a sequence of one or more bitstreams.
  • the end of the first bitstream may be indicated by a specific NAL unit, which may be referred to as the end of bitstream (EOB) NAL unit and which is the last NAL unit of the bitstream.
  • EOB NAL unit In HEVC and its current draft extensions, the EOB NAL unit is required to have nuh layer id equal to 0.
  • a coded video sequence is defined to be a sequence of consecutive access units in decoding order from an IDR access unit, inclusive, to the next IDR access unit, exclusive, or to the end of the bitstream, whichever appears earlier.
  • a coded video sequence may be defined, for example, as a sequence of access units that consists, in decoding order, of an IRAP access unit with NoRaslOutputFlag equal to 1, followed by zero or more access units that are not IRAP access units with NoRaslOutputFlag equal to 1 , including all subsequent access units up to but not including any subsequent access unit that is an IRAP access unit with NoRaslOutputFlag equal to 1.
  • An IRAP access unit may be defined as an access unit in which the base layer picture is an IRAP picture. The value of
  • NoRaslOutputFlag is equal to 1 for each IDR picture, each BLA picture, and each IRAP picture that is the first picture in that particular layer in the bitstream in decoding order, is the first IRAP picture that follows an end of sequence NAL unit having the same value of nuh layer id in decoding order.
  • HandleCraAsBlaFlag may be set to 1 for example by a player that seeks to a new position in a bitstream or tunes into a broadcast and starts decoding and then starts decoding from a CRA picture.
  • HandleCraAsBlaFlag is equal to 1 for a CRA picture, the CRA picture is handled and decoded as if it were a BLA picture.
  • a coded video sequence may additionally or alternatively (to the specification above) be specified to end, when a specific NAL unit, which may be referred to as an end of sequence (EOS) NAL unit, appears in the bitstream and has nuh layer id equal to 0.
  • EOS end of sequence
  • a group of pictures (GOP) and its characteristics may be defined as follows.
  • a GOP can be decoded regardless of whether any previous pictures were decoded.
  • An open GOP is such a group of pictures in which pictures preceding the initial intra picture in output order might not be correctly decodable when the decoding starts from the initial intra picture of the open GOP.
  • pictures of an open GOP may refer (in inter prediction) to pictures belonging to a previous GOP.
  • An HEVC decoder can recognize an intra picture starting an open GOP, because a specific NAL unit type, CRA NAL unit type, may be used for its coded slices.
  • a closed GOP is such a group of pictures in which all pictures can be correctly decoded when the decoding starts from the initial intra picture of the closed GOP.
  • no picture in a closed GOP refers to any pictures in previous GOPs.
  • a closed GOP may start from an IDR picture.
  • a closed GOP may also start from a BLA W RADL or a BLA N LP picture.
  • An open GOP coding structure is potentially more efficient in the compression compared to a closed GOP coding structure, due to a larger flexibility in selection of reference pictures.
  • a Decoded Picture Buffer may be used in the encoder and/or in the decoder. There are two reasons to buffer decoded pictures, for references in inter prediction and for reordering decoded pictures into output order. As H.264/AVC and HEVC provide a great deal of flexibility for both reference picture marking and output reordering, separate buffers for reference picture buffering and output picture buffering may waste memory resources. Hence, the DPB may include a unified decoded picture buffering process for reference pictures and output reordering. A decoded picture may be removed from the DPB when it is no longer used as a reference and is not needed for output.
  • the reference picture for inter prediction is indicated with an index to a reference picture list.
  • the index may be coded with variable length coding, which usually causes a smaller index to have a shorter value for the corresponding syntax element ln H.264/AVC and HEVC, two reference picture lists (reference picture list 0 and reference picture list 1) are generated for each bi-predictive (B) slice, and one reference picture list (reference picture list 0) is formed for each inter-coded (P) slice.
  • a reference picture index may be coded by an encoder into the bitstream is some inter coding modes or it may be derived (by an encoder and a decoder) for example using neighboring blocks in some other inter coding modes.
  • motion vector prediction HEVC includes two motion vector prediction schemes, namely the advanced motion vector prediction (AMVP) and the merge mode ln the AMVP or the merge mode, a list of motion vector candidates is derived for a PU.
  • AMVP advanced motion vector prediction
  • merge mode ln the AMVP or the merge mode a list of motion vector candidates is derived for a PU.
  • candidates spatial candidates and temporal candidates, where temporal candidates may also be referred to as TMVP candidates.
  • a candidate list derivation may be performed for example as follows, while it should be understood that other possibilities may exist for candidate list derivation lf the occupancy of the candidate list is not at maximum, the spatial candidates are included in the candidate list first if they are available and not already exist in the candidate list. After that, if occupancy of the candidate list is not yet at maximum, a temporal candidate is included in the candidate list. If the number of candidates still does not reach the maximum allowed number, the combined bi- predictive candidates (for B slices) and a zero motion vector are added in.
  • the encoder decides the final motion information from candidates for example based on a rate-distortion optimization (RDO) decision and encodes the index of the selected candidate into the bitstream.
  • RDO rate-distortion optimization
  • the decoder decodes the index of the selected candidate from the bitstream, constructs the candidate list, and uses the decoded index to select a motion vector predictor from the candidate list.
  • AMYP and the merge mode may be characterized as follows.
  • the encoder indicates whether uni-prediction or bi-prediction is used and which reference pictures are used as well as encodes a motion vector difference.
  • the merge mode only the chosen candidate from the candidate list is encoded into the bitstream indicating the current prediction unit has the same motion information as that of the indicated predictor.
  • the merge mode creates regions composed of neighbouring prediction blocks sharing identical motion information, which is only signalled once for each region.
  • Texture picture(s) and the respective geometry picture(s) may have the same or different chroma format.
  • a pixel may be defined to 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.
  • Projecting 3D data onto 2D planes is independent from the 3D scene model representation format.
  • said encoding may comprise one or more of the following: encoding source image data into a bitstream, encapsulating the encoded bitstream in a container file and/or in packet(s) or stream(s) of a communication protocol, and announcing or describing the bitstream in a content description, such as the Media Presentation Description (MPD) of ISO/IEC 23009-1 (known as MPEG-DASH) or the IETF Session Description Protocol (SDP).
  • MPD Media Presentation Description
  • SDP IETF Session Description Protocol
  • said decoding may comprise one or more of the following: decoding image data from a bitstream, decapsulating the bitstream from a container file and/or from packet(s) or stream(s) of a communication protocol, and parsing a content description of the bitstream,
  • the communication devices may communicate using various transmission technologies including, but not limited to, code division multiple access (CDMA), global systems for mobile communications (GSM), universal mobile telecommunications system (UMTS), time divisional multiple access (TDMA), frequency division multiple access (FDMA), transmission control protocol- internet protocol (TCP-IP), short messaging service (SMS), multimedia messaging service (MMS), email, instant messaging service (IMS), Bluetooth, IEEE 802.11, Long Term Evolution wireless communication technique (LTE) and any similar wireless communication technology.
  • CDMA code division multiple access
  • GSM global systems for mobile communications
  • UMTS universal mobile telecommunications system
  • TDMA time divisional multiple access
  • FDMA frequency division multiple access
  • TCP-IP transmission control protocol- internet protocol
  • SMS short messaging service
  • MMS multimedia messaging service
  • email instant messaging service
  • Bluetooth IEEE 802.11, Long Term Evolution wireless communication technique (LTE) and any similar wireless communication technology.
  • LTE Long Term Evolution wireless communication technique
  • embodiments of the invention operating within a wireless communication device
  • the invention as described above may be implemented as a part of any apparatus comprising a circuitry in which radio frequency signals are transmitted and received.
  • embodiments of the invention may be implemented in a mobile phone, in a base station, in a computer such as a desktop computer or a tablet computer comprising radio frequency communication means (e.g. wireless local area network, cellular radio, etc.).
  • radio frequency communication means e.g. wireless local area network, cellular radio, etc.
  • 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.
  • 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 standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a standardized electronic format (e.g., Opus, GDSII, or the like) to a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a standardized electronic format (e.g., Opus, GDS

Abstract

There are disclosed various methods, apparatuses and computer program products for volumetric video encoding and decoding. In some embodiments of a method for encoding, one or more patches formed from a three-dimensional image information are obtained.The one or more patches are packed into a binary image. an original occupancy map is generated from the one or more patches, said original occupancy map comprising information of occupied and non-occupied pixels of the binary image. An estimated occupancy map is also generated, wherein the estimated occupancy map and the original occupancy map are compared to form a difference signal, which is encoded into or along a bitstream. In some embodiments of a method for decoding a texture image and a geometry image are received. Also a difference signal indicative of differences between an estimated occupancy map and an original occupancy map is received; wherein the original occupancy map is reconstructed by using the texture image, the geometry image and the difference signal.

Description

AN APPARATUS, A METHOD AND A COMPUTER PROGRAM FOR VOLUMETRIC VIDEO
TECHNICAL FIELD
[00 1] The present invention relates to an apparatus, a method and a computer program for volumetric video coding and decoding.
BACKGROUND
[0002] This section is intended to provide a background or context to the invention that is recited in the claims. The description herein may include concepts that could be pursued, but are not necessarily ones that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, what is described in this section is not prior art to the description and claims in this application and is not admitted to be prior art by inclusion in this section.
[0003] A video coding system may comprise an encoder that transforms an input video into a compressed representation suited for storage/transmission and a decoder that can decompress the compressed video representation back into a viewable form. The encoder may discard some information in the original video sequence in order to represent the video in a more compact form, for example, to enable the storage/transmission of the video information at a lower bitrate than otherwise might be needed.
[0004] 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 attribute, 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 attribute and other 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.
[0005] Typical representation formats for such volumetric data are triangle meshes, point clouds (PCs), or voxel arrays. Temporal information about the scene can be included in the form of individual capture instances, i.e.“frames” in 2D video, or other means, e.g. position of an object as a function of time.
[0006] Identifying correspondences for motion-compensation in 3D-space may be an ill- defined problem, as both the geometry and respective attributes may change. For example, temporal successive“frames” do not necessarily have the same number of meshes, points or voxel. Therefore, compression of dynamic 3D scenes may be inefficient. 2D-video based approaches for compressing volumetric data, i.e. multiview + depth, may have better compression efficiency, but rarely cover the full scene. Therefore, they provide only limited six degrees of freedom (6DOF) capabilities.
[0007] Because volumetric video describes a 3D scene (or object), such data can be viewed from any viewpoint. Therefore, volumetric video may be an important format for any AR, VR, or MR applications, especially for providing 6DOF viewing capabilities.
[0008] lncreasing computational resources and advances in 3D data acquisition devices has enabled reconstruction of highly detailed volumetric video representations of natural scenes.
Infrared, lasers, time-of-flight and structured light are all examples of devices that can be used to construct 3D video data. Representation of the 3D data depends on how the 3D data is used. Dense Voxel arrays have been used to represent volumetric medical data ln 3D graphics, polygonal meshes are extensively used. Point clouds on the other hand are well suited for applications such as capturing real world 3D scenes where the topology is not necessarily a 2D manifold. Another way to represent 3D data is coding this 3D data as set of texture and depth map as is the case in the multi- view plus depth. Closely related to the techniques used in multi- view plus depth is the use of elevation maps, and multi-level surface maps.
[0009] ln dense point clouds or voxel arrays, the reconstructed 3D scene may contain tens or even hundreds of millions of points lf such representations are to be stored or interchanged between entities, then efficient compression may become essential.
SUMMARY
[0010] Now there has been invented an improved method and technical equipment implementing the method, by which e.g. real-time rendering may be enabled with lower performance hardware, flexibility for representing larger, more complex scenes/objects with limited system resources may be increased, and decoder memory/buffer requirements may be reduced. Various aspects of the invention include a method, an apparatus (an encoder and/or a decoder), a system and a computer readable medium comprising a computer program or a signal stored therein, which are characterized by what is stated in the independent claims. Various details of the invention are disclosed in the dependent claims and in the corresponding images and description. [001 1] In accordance with an embodiment, an algorithm to encode occupancy maps (OMs) is introduced. An occupancy map may be estimated based on encoded/decoded (reconstructed) texture and/or geometry images. This may guarantee that similar estimation can be performed also in the decoder side after the geometry and texture images have been decoded. Then the estimated occupancy map (EOM) may be compared with the original occupancy map (OOM) in the encoder side, where the original occupancy map is available, and the difference is created. In such comparison, several criteria may be considered. The difference may be encoded and transmitted for updating the estimated occupancy map in the decoder side. The amount of bitrate required to encode and represent the difference may be far less than bitrate required to encode the original occupancy map. A rate- distortion decision (RDO) may be applied to decide if the transmission of the difference is beneficial.
[0012] A volumetric video may comprise three-dimensional scenes represented as, for example, dynamic point clouds, arrays of voxels or mesh models or a combination of such. The three-dimensional scenes may be projected onto a number of projection surfaces having simple geometries, for example sphere(s), cylinder(s), cube(s), polyhedron(s) and/or plane(s). A three- dimensional scene contains at least one three-dimensional object. In this context, a projection surface may be a piece-wise continuous and smooth surface in three-dimensional space. Piece-wise smoothness may be understood so that there are regions of the surface where the direction of the surface normal does not change abruptly (i.e. the values of the coefficients of the surface normal’s coordinate components are continuous). A projection surface may comprise pieces of simple geometric surfaces. A projection surface may also evolve (change) over time. On such surfaces, the texture and geometry of point clouds, voxel arrays or mesh models may form pixel images, e.g. texture images and depth images (indicative of distance from the projection surface). These two images represent the same object projected onto the same geometry, therefore object boundaries are aligned in texture and depth image.
[0013] Such projection surfaces may be unfolded onto two-dimensional (2D) planes, e.g. resulting in a two-dimensional pixel image. Standard 2D video coding may be applied for each projection to code the pixel information resulting from the texture data. In connection with the texture information, relevant projection geometry information (geometry attributes), comprising e.g. projection or projection surface type, location and orientation of the projection surface in 3D space, and/or size of the projection surface, may be transmitted either in the same bitstream or separately along with the bitstream. At the receiver side, the bitstream may be decoded and volumetric video may be reconstructed from decoded 2D projections and projection geometry information.
[0014] Two-dimensional images may be projected from different parts of scene objects to form several patches. Such patches may be projections onto one of three orthogonal planes (front, side, top). Patches are derived by analysing surface normals and clustering related 3D data points. The projection plane for each such patch is the one of the above mentioned three planes with the closest surface normal to the average patch normal. All patches may be packed into a 2D grid for compression. For each patch a 3D vector is signalled to specify the patch location in 3D space for reprojection at the decoder side.
[0015] Such patches may be gathered together to create a 2D grid which will later be encoded using conventional video codecs.
[0 16] The phrase along with the bitstream (e.g. indicating along with 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 with 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 with the bitstream may refer to metadata in a container file that encapsulates the bitstream.
[0017] The phrase in the bitstream or into the bitstream may be defined to refer to data transmission, signalling, or storage in a manner that the data is inserted into the bitstream. The phrase decoding from the bitstream or alike may refer to decoding the referred data (which may be obtained from the transmission, signalling, or storage) that is encoded within the bitstream.
[0018] Some embodiments provide a method for encoding and decoding volumetric video information. In some embodiments of the present invention there is provided a method, apparatus and computer program product for volumetric video coding as well as decoding.
[0019] Various aspects of examples of the invention are provided in the detailed description.
[0020] According to a first aspect, there is provided a method comprising:
obtaining one or more patches formed from a three-dimensional scene;
packing the one or more patches into a binary image;
generating an original occupancy map from the one or more patches, said original occupancy map comprising information of occupied and non-occupied pixels of the binary image;
generating an estimated occupancy map; comparing the estimated occupancy map and the original occupancy map to form a difference signal; and
encoding the difference signal into or along a bitstream.
[0021] An apparatus according to a second aspect comprises at least one processor and at least one memory, said at least one memory stored with code thereon, which when executed by said at least one processor, causes the apparatus to perform at least:
obtain one or more patches formed from a three-dimensional scene;
pack the one or more patches into a binary image;
generate an original occupancy map from the one or more patches, said original occupancy map comprising information of occupied and non-occupied pixels of the binary image;
generate an estimated occupancy map;
compare the estimated occupancy map and the original occupancy map to form a difference signal; and
encode the difference signal into or along a bitstream.
[0022] A computer readable storage medium according to a third aspect comprises code for use by an apparatus, which when executed by a processor, causes the apparatus to perform:
obtain one or more patches formed from a three-dimensional scene;
pack the one or more patches into a binary image;
generate an original occupancy map from the one or more patches, said original occupancy map comprising information of occupied and non-occupied pixels of the binary image;
generate an estimated occupancy map;
compare the estimated occupancy map and the original occupancy map to form a difference signal; and
encode the difference signal into or along a bitstream.
[0023] An apparatus according to a fourth aspect comprises:
means for obtaining one or more patches formed from a three-dimensional scene; means for packing the one or more patches into a binary image;
means for generating an original occupancy map from the one or more patches, said original occupancy map comprising information of occupied and non-occupied pixels of the binary image;
means for generating an estimated occupancy map;
means for comparing the estimated occupancy map and the original occupancy map to form a difference signal; and means for encoding the difference signal into or along a bitstream. [0024] According to a fifth aspect, there is provided a method comprising:
receiving a texture image and a geometry image;
receiving a difference signal indicative of differences between an estimated occupancy map and an original occupancy map; and
reconstructing the original occupancy map by using the texture image, the geometry image and the difference signal.
[0025] According to a sixth aspect, there is provided an apparatus comprising at least one processor and at least one memory, said at least one memory stored with code thereon, which when executed by said at least one processor, causes the apparatus to perform at least:
receive a texture image and a geometry image;
receive a difference signal indicative of differences between an estimated occupancy map and an original occupancy map; and
reconstruct the original occupancy map by using the texture image, the geometry image and the difference signal.
[0026] According to a seventh aspect, there is provided a computer readable storage medium comprising code for use by an apparatus, which when executed by a processor, causes the apparatus to perform:
receive a texture image and a geometry image;
receive a difference signal indicative of differences between an estimated occupancy map and an original occupancy map; and
reconstruct the original occupancy map by using the texture image, the geometry image and the difference signal.
[0027] According to an eighth aspect, there is provided an apparatus comprising:
means for receiving a texture image and a geometry image;
means for receiving a difference signal indicative of differences between an estimated occupancy map and an original occupancy map; and
means for reconstructing the original occupancy map by using the texture image, the geometry image and the difference signal.
[0028] Further aspects include at least apparatuses and computer program products/code stored on a non-transitory memory medium arranged to carry out the above methods. BRIEF DESCRIPTION OF THE DRAWINGS
[0029] For a more complete understanding of example embodiments of the present invention, reference is now made to the following descriptions taken in connection with the
accompanying drawings in which:
[0030] Fig. 1 shows a system for capturing, encoding, decoding, reconstructing and viewing a three-dimensional scheme;
[0031 ] Figs. 2a and 2b show a capture device and a viewing device;
[0032] Figs. 3a and 3b show an encoder and decoder for encoding and decoding texture
pictures, geometry pictures and/or auxiliary pictures;
[0033] Figs. 4a, 4b, 4c and 4d show a setup for forming a stereo image of a scene to a user;
[0034] Figs. 5a and 5b illustrate projection of source volumes in a scene and parts of an object to projection surfaces;
[0035 ] Fig. 6 shows a projection of a source volume to a projection surface, and inpainting of a sparse projection;
[0036] Fig. 7 shows an example of a block divided into sub-blocks;
[0037] Figs. 8a to 8d show examples of traversal orders for the sub-blocks of a TxT block, in accordance with an embodiment;
[0038] Fig. 9a illustrates an example of an encoding element;
[0039] Fig. 9b illustrates an example of a decoding element.
[0040] Fig. 10a shows a simplified flow diagram of a processing chain to encode information regarding an occupancy map, in accordance with an embodiment;
[0041 ] Fig. lOb shows a simplified flow diagram of a processing chain to decode an occupancy map, in accordance with an embodiment;
[0042] Fig. 11 illustrates an example of patch packing and
[0043] Fig. 12 illustrates an example of forming a grid for patches and arranging the patches in the grid.
DETAILED DESCRIPTON OF SOME EXAMPLE EMBODIMENTS
[0044 ] 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. [0045] 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.
[0046] A volumetric video frame is a sparse voxel octree or a point cloud that models the world at a specific point in time, similar to a frame in a 2D video sequence. Voxel or point 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) or point clouds, but can also be stored separately.
[0047] 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 the number of cameras. 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.
[0048] 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.
[0049] 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 ft 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.
[0050] Alternatively, or additionally 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.
[0051] 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.
[0052] 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.
[0053] 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 V1EWER1 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 V1EWER2 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 V1EWER2 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.
[0054] ft 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.
[0055] Any of the devices (SRC 1 , SRC2, SERVER, RENDERER, V1EWER1 , V1EWER2) 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.
[0056] Figs. 2a and 2b show a capture device and a viewing device, respectively. Fig. 2a illustrates a camera CAM1. 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 CP1 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 CP1 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.
[0057] 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.
[0058] 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).
[0059] Figs. 3a and 3b show an encoder and decoder, respectively, 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 (In); a predicted representation of an image block (Pm); a prediction error signal (Dn); a reconstructed prediction error signal (Dm); a preliminary reconstructed image (Im); a final reconstructed image (Rm); 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 (Pmter); intra prediction (P intra) ; mode selection (MS) and filtering (F).
[0060] An example of a decoding process is illustrated in Figure 3b. Figure 3b illustrates a predicted representation of an image block (Pm); a reconstructed prediction error signal (Dm); a preliminary reconstructed image (Im); a final reconstructed image (R'n); an inverse transform
Figure imgf000014_0001
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).
[0061 ] 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 ln Fig. 4a, a situation is shown where a human being is viewing two spheres Al and A2 using both eyes El and E2. The sphere Al 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) D1R1 and D1R2 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.
[0062] 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.
[0063] ln the setup of Fig. 4a, the spheres Al 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.
[0064] ln 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.
[0065] 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.
[0066] ft 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.
[0067] 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 SA 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.
[0068] 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 Fx 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. [0069] 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.
[0070] 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.
[0071 ] 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).
[0072] Figs. 5a and 5b illustrate projection of source volumes in a digital scene model SCE and parts of an object model OBJ1, OBJ2, OBJ3, BG4 to projection surfaces Sl, S2, S3, S4, as well as determining depth information for the purpose of encoding volumetric video.
[0073] 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 Sl. The scene model SCE may comprise further source volumes SV2, SV3, SV4.
[0074] The projection of source volumes SV1, 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
- 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
- location and/or orientation of a projection centre.
[0075] 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 Sl, 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 centre axis and a spherical surface has a centre point. A cubical or rectangular surface may have centre planes or a centre axis and the projection of the geometry primitives may take place either orthogonally to the sides of the surface or from the centre axis 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. In general, projection surfaces need not be rectangular but may be arranged or located spatially on a rectangular picture. Such rectangular shape with pixel data can be encoded and decoded with a video codec.
[0076] Alternatively, or additionally, the projection surface such as a planar surface or a sphere may be inside a 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.
[0077] In a point cloud-based scene 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 lO-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.
[0078] 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.
[0079] 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.
[0080] 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.
[0081 ] 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.
[0082] Texture picture(s) and the respective geometry picture(s) may have the same or different chroma format.
[0083] Depending on the context, a pixel may be defined to 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.
[0084] 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.
[0085] As shown in Fig. 5b, a single object may be composed of different parts and thus different source volumes VI 1, V12, V13, V14 and corresponding projection surfaces Sl 1, S12,
S13, S14 may be used for these different parts.
[0086] ln 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 more 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 ln 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] ln 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] lnformation 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 ] lf 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] ln 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] For the described example above, signalling may, for example, be as follows:
NUM OBJECTS4 // folding-chair, TV, person body, person head
FRAME PACKED 0 // individual inputs for i=0:NUM_OBJECTS // initial states for each projection
PROJ GEO // geometry, e.g. 0: cube, 1 : cylinder, 2: sphere,
PROJ CENTRE X/Y/Z // projection centre in real world coordinates
PROJ_SIZE_ X/Y/Z // projection dimensions in real world units
PROJ_ROTATION_ X/Y/Z // projection orientation
PROJ STATUS // 0: dynamic 1 : static
DEPTH QUANT // depth quantisation, i.e. 0 for linear, ...
DEPTH MIN // minimum depth in real world units
DEPTH MAX // maximum depth in real world units
end for n=0 :NUM_FRAMES
for i=0:NUM_OBJECTS
CHANGE 1 // i.e. 0=static, l=translation, 2=trans+rotation, ...
TRANS VEC// translation vector
// relevant data to represent change
end
[0100] 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.
[0101 ] Standard video encoding hardware may be utilized for real-time
compression/decompression of the projection surfaces that have been unfolded onto planes.
[0102] 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).
[0103] Fig. 6 shows a projection of a source volume to a cylindrical projection surface, and inpainting of the sparse projection areas. A three-dimensional (3D) scene model, represented as objects OBJ1 comprising geometry primitives such as mesh elements, points, and/or voxel, may be projected onto one, or more, projection surfaces, as described earlier. As shown in Fig 6, these projection surface geometries may be "unfolded" onto 2D planes (two planes per projected source volume: one for texture TP1, one for depth GP1), which may then be encoded using standard 2D video compression technologies. Relevant projection geometry information may be transmitted alongside the encoded video files to the decoder. The decoder may then decode the video and performs the inverse projection to regenerate the 3D scene model object ROBJ1 in any desired representation format, which may be different from the starting format e.g. reconstructing a point cloud from original mesh model data.
[0104] In addition to the texture picture and geometry picture shown in Fig. 6, one or more auxiliary pictures related to one or more said texture pictures and the pixels thereof may be encoded into or along with the bitstream. The auxiliary pictures may e.g. represent texture surface properties related to one or more of the source volumes. Such texture surface properties may be e.g. surface normal information (e.g. with respect to the projection direction), reflectance and opacity (e.g. an alpha channel value). An encoder may encode, in or along with the bitstream, indication(s) of the type(s) of texture surface properties represented by the auxiliary pictures, and a decoder may decode, from or along the bitstream, indication(s) of the type(s) of texture surface properties represented by the auxiliary pictures.
[0105] Mechanisms to represent an auxiliary picture may include but are not limited to the following:
A colour component sample array, such as a chroma sample array, of the geometry picture.
An additional sample array in addition to the conventional three colour component sample arrays of the texture picture or the geometry picture.
A constituent frame of a frame-packed picture that may also comprise texture picture(s) and/or geometry picture(s).
An auxiliary picture included in specific data units in the bitstream. For example, the Advanced Video Coding (H.264/AVC) standard specifies a network abstraction layer (NAL) unit for a coded slice of an auxiliary coded picture without partitioning.
An auxiliary picture layer within a layered bitstream. For example, the High Efficiency Video Coding (HEVC) standard comprises the feature of including auxiliary picture layers in the bitstream. An auxiliary picture layer comprises auxiliary pictures.
An auxiliary picture bitstream separate from the bitstream(s) for the texture picture(s) and geometry picture(s). The auxiliary picture bitstream may be indicated, for example in a container file, to be associated with the bitstream(s) for the texture pictures(s) and geometry picture(s).
[0106] The mechanism(s) to be used for auxiliary pictures may be pre-defined e.g. in a coding standard, or the mechanism(s) may be selected e.g. by an encoder and indicated in or along the bitstream. The decoder may decode the mechanism(s) used for auxiliary pictures from or along the bitstream.
[0107] The projection surface of a source volume may encompass the source volume, and there may be a model of an object in that source volume. Encompassing may be understood so that the object (model) is inside the surface such that when looking from the centre axis or centre point of the surface, the object's points are closer to the centre than the points of the projection surface are. The model may be made of geometry primitives, as described. The geometry primitives of the model may be projected onto the projection surface to obtain projected pixels of the texture picture. This projection may happen from inside-out. Alternatively, or in addition, the projection may happen from outside-in.
Projecting 3D data onto 2D planes is independent from the 3D scene model representation format. There exist several approaches for projecting 3D data onto 2D planes, with the respective signalling. For example, there exist several mappings from spherical coordinates to planar coordinates, known from map projections of the globe, and the type and parameters of such projection may be signalled. For cylindrical projections, the aspect ratio of height and width may be signalled.
[0108] Encoding the projection information may be performed, for example, as follows.
[0109 ] In accordance with an approach, the projected texture planes of a point cloud for one time instant can all be collected and frame-packed and similarly the depth and the possible auxiliary planes are frame-packed such that the frame packing is consistent across all the planes for one time instant. Each of the planes are then coded using traditional 2D video coders using layered video coding or coded independently and related to each other using some form of higher level signalling (for e.g. using tracks and track references of ISO Base Media File Format).
Alternatively, each texture, depth and auxiliary planes of a single time instant of a point cloud could be considered independent of each other in that time instant and coded serially one after the other. For example, if there are nine projection surfaces identified of a point cloud, then for that time instant, first the nine texture planes are coded, followed by nine depth planes and the followed by nine planes that carry surface normal and so on until all the auxiliary data planes are coded. [01 10] Figures 9a and 9b provide an overview of an example of encoding and decoding processes, respectively, Figure 10a depicts a simplified flow diagram for a possible processing chain to encode occupancy map information, in accordance with an embodiment, and Fig. lOb shows a simplified flow diagram of a processing chain to decode the occupancy map information, in accordance with an embodiment.
[01 1 1] A point cloud is received by a patch generator 902 in which a patch generation process aims at decomposing the point cloud into a minimum number of patches with smooth boundaries, while also minimizing the reconstruction error. This may be performed by, for example, the following approach.
[01 12] First, the normal at every point is estimated and an initial clustering of the point cloud is then obtained by associating each point with one of the following six oriented planes, defined by their normals:
(1.0, 0.0, 0.0),
(0.0, 1.0, 0.0),
(0.0, 0.0, 1.0),
(-1.0, 0.0, 0.0),
(0.0, -1.0, 0.0), and
(0.0, 0.0, -1.0).
[0113] More precisely, each point is associated with the plane that has the closest normal (e.g. maximizes the dot product of the point normal and the plane normal).
[01 14] The initial clustering is then refined by iteratively updating the cluster index associated with each point based on its normal and the cluster indices of its nearest neighbors. The final step consists of extracting patches by applying a connected component extraction procedure.
[01 15] The extracted patches are provided to a packing element 904 in which the packing process aims at mapping the extracted patches onto a 2D grid (Figure 12), while trying to minimize the unused space, and trying to guarantee that every TxT (e.g., 16x16) block of the grid is associated with a unique patch. The parameter T may be a user-defined parameter that is encoded in the bitstream and sent to the decoder. Figure 11 illustrates an example of packing. In Figure 11 white areas illustrate empty pixels. The packing element 904 outputs an occupancy map.
[01 16] The encoding of such an occupancy map may consume bitrate which may be dedicated to better encode the texture and geometry images or alternatively be used to reduce the total bitrate used to encode the content. [01 17] In the following, some embodiments are disclosed in which the occupancy map may be estimated rather than sending it completely to the decoder. In this context, the occupancy map (OM) refers to a binary image where the occupied pixels and non-occupied pixels are distinguished and depicted respectively.
[01 18] According to an approach, a packing strategy may iteratively try to insert patches into a
WxH grid. W (width) and H (height) are, for example, user defined parameters, which correspond to the resolution of the geometry/texture images that will be encoded. The patch location may be determined through an exhaustive search that is performed in a raster scan order. The first location that may provide an overlapping- free insertion of the patch is selected and the grid cells covered by the patch are marked as used. If no empty space in the current resolution image can fit a patch, then the height H of the grid is temporarily doubled, and search is applied again. At the end of the process, the H parameter is clipped so as to fit the used grid cells.
[01 19 ] An image generation process performs both a geometry image generation 906 and a texture image generation 908 by applying the 3D to 2D mapping computed during the packing process to store the geometry and texture of the point cloud as images. Each patch is projected onto one image, which may also be referred to as a layer. More precisely, let H(u,v) be the set of points of the current patch that get projected to the same pixel (u, v). If more than one 3D point is projected to the same location on the current patch, a single value for that location H(u,v) may be selected. The layer stores the point of H(u,v) with the closest distance to its projection surface, e.g. the lowest depth DO. The generated videos may have the following characteristics, for example:
Geometry: width (W) x height (H) YUV420-8bit,
Texture: width (W) x height (H) YUV420-8bit,
[0120] It should be noted that the geometry video may be monochromatic.
[0121 ] The geometry image and/or the texture image may be padded by an image padding element 910. Padding aims at filling the empty space between patches in order to generate a piecewise smooth image suited for video compression. The image padding element 910 may consider keeping the compression high as well as enabling estimating of occupancy map (EOM) with enough accuracy as compared to the original occupancy map (OOM).
[0122] According to an approach, a following padding strategy may be used:
[0123] Each block of TxT (e.g., 16x16) pixels is processed independently. If the block is empty (i.e., all its pixels belong to an empty space), then the pixels of the block are filled by copying either the last row or column of the previous TxT block in raster order. If the block is full (i.e., no empty pixels), nothing is done. If the block has both empty and filled pixels, then the empty pixels are iteratively filled with the average value of their non-empty neighbors.
[0124] Some other example embodiments how to pad the geometry and/or texture images so that the estimation of occupancy map has enough accuracy based on the padded images will be described later in this specification.
[0125] The generated images/layers may be stored as video frames and compressed. For example, the padded geometry image and the padded texture image are provided to a video compression element 912 for compressing the padded geometry image and the padded texture image, from which the compressed geometry and texture images are provided, for example, to a multiplexer 914 which multiplexes the input data to a compressed bitstream(s).
[0126] The compressed geometry and texture images are also provided, for example, to an occupancy map estimator 918 which generates an estimated occupancy map (block 602 in Figure lOa). This step refers to estimation of the occupancy map based on the reconstructed geometry and/or texture images.
[0127] In this step, an algorithm may be used to find the borders of geometry and/or texture images. It is noted that the borders are aligned with each other in general and prior to encoding. However, maybe after encoding, the edges are a bit misaligned which can be corrected based on the original occupancy map and in the following steps.
[0128] The occupancy map may consist of a binary map that indicates for each cell of the grid whether it belongs to the empty space or to the point cloud. One cell of the 2D grid would produce a pixel during the image generation process.
[0129 ] In the estimated occupancy generation step, based on the embodiment used in the padding step, different processes between respective padded geometry, Y, U, and/or V components may be considered. Based on such processes, an estimation of edges (i.e. contours defining the occupancy map) will be created. Such estimation may be fine tuned in the cases where more than one component/image are to be used for estimating the occupancy map.
[0130] An example of an edge detection algorithm is a multiscale edge detection algorithm, which is based on wavelet domain vector hidden Markov tree model. However, some other algorithm may be applied in this context.
[0131 ] Alternatively, the algorithm may be more aligned with the pattern that has been used in the padding process of different images. For example, algorithms may be designed to recognize the following:
- A pattern where the pixel values go down to minimum value and rise up again - A pattern where the pixel values rise up to maximum value and go down again
- Column by column changes
- Row by row changes
- A pattern with constant step size changes
- A pattern with fixed number of pixels having similar value
[0132] Considering all such algorithms, a contour image (occupancy map) may be estimated for the current texture/geometry images. This is referred to as estimated occupancy map (EOM) and will be used in a comparison step in which the original occupancy map and the estimated occupancy map will be compared with each other.
[0133] As the estimation process may be performed by different algorithms, the encoder may make the decision which algorithm to use for creating the estimated occupancy map (block 604). A codeword may be assigned to different estimation processes and this codeword may be communicated with the decoder so that decoder chooses the same algorithm to estimate the occupancy map. Such signalling may be per patch, per frame, per GOP, per sequence, etc. The amount of overhead for this signal may be negligible as it will be e.g. 3 bits (for 8 different estimation algorithms) per patch, per frame, per GOP, per sequence, etc. Such codeword may be used based on a shared look-up table between the encoder and the decoder. The codeword refers to the index in which the respective algorithm to estimate the occupancy map is stored. Such codeword may be entropy coded to reduce the overhead further.
[0134] An occupancy map comparator 922 receives the original occupancy map (block 605) from the packing element 904 and the estimated occupancy map from the occupancy map estimator 920. The occupancy map comparator 922 compares the estimated occupancy map and the original occupancy map (block 606). In one embodiment, the comparison will be flexible to small misalignments between contours of the estimated occupancy map and the original occupancy map. In this embodiment, any misalignment which is smaller than M pixels may be ignored. M may be a predetermined threshold selected so that such small changes do not affect the visual quality of the output rendered 3D content subjectively. In the decoder side, the texture and geometry images will be aligned with the new occupancy map by either shrinking or padding the texture and geometry images, respectively.
[0135] In the cases where the difference between the estimated occupancy map and the original occupancy map is greater than or equal to the threshold M, then this difference will be coded as residual data and is transmitted to the decoder. The decoder reconstructs an occupancy map based on its estimated occupancy map and the received residual data. [0136] In one embodiment, rate-distortion optimisation (RDO) algorithm is applied to determine if the required bit rate to transmit the difference brings sufficient quality improvements. In this embodiment, simplified, e.g. downsampled/sub-sampled difference signals may be considered as alternative with lower bit rate requirements.
[0137] In another embodiment, an RDO algorithm is needed to decide whether this OM estimation algorithm is to be used or not. This algorithm will define if another OM estimation algorithm should be used or any conventional OM compression algorithms e.g. run length algorithm should be used.
[0138] The estimated occupancy map and the original occupancy map are provided to a difference signal generator 924. The difference signal generator 924 defines the residual data based on the estimated occupancy map by finding differences between the estimated occupancy map and the original occupancy map. On the basis of the differences, the difference signal generator 924 generates a corresponding difference signal (block 608). The difference may be in a form of pixel value relocation compared to what already exists in the estimated occupancy map. Alternatively, it may define the difference between the two estimated occupancy maps and the original occupancy map. Any method by which the estimated occupancy map can be converted to be as close as possible to the original occupancy map may be utilized here. In another embodiment, the difference signal may define which estimation to use e.g. if there exist two OM estimations from geometry and texture images, then based on the difference signal it is decided which one to be used.
Alternatively, the difference signal may define how to combine the two estimation images to create the closest estimation to the original OM. Said combining may comprise weighted averaging from one estimation to another estimation or defining spatial areas for which a specific estimation image may be used.
[0139] Finally, the residual (difference signal) may be encoded with any compression approach e.g. arithmetic coding, compression of the difference image, etc. (block 610).
[0140] There may also be an auxiliary patch information compression element 918 for compressing auxiliary patch information before providing the compressed auxiliary patch information to the multiplexer 914.
[0141] Auxiliary patch information may also be coded for example as follows. The signalling structure of the auxiliary per-patch information may be as follows:
• Index of the projection plane
- Index 0 for the planes (1.0, 0.0, 0.0) and (-1.0, 0.0, 0.0)
- Index 1 for the planes (0.0, 1.0, 0.0) and (0.0, -1.0, 0.0) - Index 2 for the planes (0.0, 0.0, 1.0) and (0.0, 0.0, -1.0).
• 2D bounding box (uO, vO, ul, vl)
• 3D location (xO, yO, zO) of the patch represented in terms of depth dq, tangential shift sO and bi-tangential shift rO. According to the chosen projection planes, (dq, sO, rO) are computed as follows:
- Index 0, d0= xO, sO=zO and rO = yO
- Index 1 , d0= yO, sO=zO and rO = xO
- Index 2, d0= zO, sO=xO and rO = yO
[0142] Also, mapping information providing for each TxT block its associated patch index may be encoded as follows:
[0143] For each TxT block, let L be an ordered list of the indexes of the patches such that their 2D bounding box contains that block. The order in the list is the same as the order used to encode the 2D bounding boxes. L is called the list of candidate patches.
[0144] The empty space between patches is considered as a patch and is assigned the special index 0, which is added to the candidate patches list of all the blocks.
[0145] Let I be an index of the patch to which the current TxT block belongs and let J be the position of I in L. Instead of explicitly encoding the index I, its position J is arithmetically encoded instead, which may lead to better compression efficiency.
[0146] The occupancy map may consist of a binary map that indicates for each cell of the grid whether it belongs to the empty space or to the point cloud. One cell of the 2D grid would produce a pixel during the image generation process.
[0147] An occupancy map compression, if it were implemented, may leverage the auxiliary information described above in order to detect the empty TxT blocks (i.e., blocks with the patch index 0). The remaining blocks may be encoded as follows.
[0148] The occupancy map could be encoded with a precision of a BOxBO blocks. B0 is a user- defined parameter. In order to achieve lossless encoding, B0 may need to be set to 1. In practice the parameter values B0=2 or B0=4 may result in visually acceptable results, while significantly reducing the number of bits required to encode the occupancy map.
[0149] Figure 7 illustrates an example of the TxT block 710 divided into 16 BOxBO sub-blocks 712.
[0150] The compression process may proceed as follows: [0151] Binary values are associated with BOxBO sub-blocks 712 belonging to the same TxT block 710. A value 1 is associated with a sub-block, if it contains at least a non-padded pixel, and 0 otherwise. If a sub-block has a value of 1 it is said to be full, otherwise it is an empty sub-block. If all the sub-blocks of a TxT block are full (i.e., have value 1). The block is said to be full.
Otherwise, the block is said to be non-full. A binary information is encoded for each TxT block to indicate whether it is full or not. If the block is non- full, an extra information indicating the location of the full/empty sub-blocks may be encoded, for example, as follows:
[0152] Different traversal orders are defined for the sub-blocks. Figures 8a to 8d show the four considered traversal orders 714, in accordance with an embodiment. The encoder chooses one of the traversal orders 714 and explicitly signals its index in the bitstream. The binary values associated with the sub-blocks may be encoded by using a run-length encoding strategy, for example as follows:
[0153] The binary value of the initial sub-block is encoded. Continuous runs of 0s and ls are detected, while following the traversal order selected by the encoder. The number of detected runs is encoded and the length of each run, except of the last one, is also encoded.
[0154] The point cloud geometry reconstruction process exploits the occupancy map information in order to detect non-empty pixels in the geometry/texture images/layers. The 3D positions of the points associated with those pixels are computed by levering the auxiliary patch information and the geometry images. More precisely, in accordance with an approach, the geometry reconstruction process may comprise the following.
[0155] Let P be the point associated with the pixel (u, v) and let (dq, sO, rO) be the 3D location of the patch to which it belongs and (uO, vO, ul, vl) its 2D bounding box. P could be expressed in terms of depth 5(u, v), tangential shift s(u, v) and bi-tangential shift r(u, v) as follows:
5(u, v) = dq + g(u, v)
s(u, v) = sO - uO + u
r(u, v) = rO - vO + v
where g(u, v) is the luma component of the geometry image.
[0156] The smoothing procedure 919 aims at alleviating potential discontinuities that may arise at the patch boundaries due to compression artifacts. According to an approach boundary points are moved to the centroid of their nearest neighbours.
[0157] In a texture reconstruction stage texture values may be directly read from the texture images. [0158] One way to compress a time-varying volumetric scene/object, is to project 3D surfaces on to some number of pre-defmed 2D planes. Regular 2D video compression algorithms can then be used to compress various aspects of the projected surfaces. For example, a time-varying 3D point cloud, with spatial and texture coordinates, can be mapped into a sequence of at least two sets of planes, where one of the two sets carry the texture data and the other carries the distance of the mapped 3D surface points from the projection planes. Aligned with this, an occupancy map informs the decoder which pixels are valid and which pixels are the padded areas in between the patches.
[0159] In the following, some example embodiments of the image padding methods which may be utilized by the image padding element 910 will be described.
[0160] In one embodiment, the geometry image is padded conventionally while the texture image is padded differently. One chroma component (either U or V components, representing Cr and Cb) of the texture image is to pad the un-occupied pixels all to a minimum or to a maximum signal value. For the rest of this description, 255 is assumed as the maximum and 0 as the minimum signal value, but also other values may be used in different embodiments.
[0161 ] In another embodiment, a conventional padding is used for the geometry image while for chroma components of the texture image one of the chroma components is padded towards 0. This means that the pixels in the un-occupied pixels are padded towards 0. Alternatively, one chroma component may be padded towards 255.
[0162] It should be noted that going towards 0 or 255 means that the distance between the border of patches should go from one value to the respective 0 or 255 and going back again to the value of the other border. This means that between the edges of the patches, there exist so called hills or canyons where the values go up and come back down or go down and come back up, respectively.
[0163] In another embodiment, one chroma component of the texture image is to be padded towards 0 and the other to be padded towards 255. This may enable the estimation of borders easier while tracking opposite behaviour in chroma components of the texture images.
[0164] In another embodiment, geometry image is padded in one direction e.g. horizontally, and the texture image is padded in the other direction e.g. vertically. Between each two patches, the values in each row will be interpolated from one value to another one. The next row is independent of the previous row and similar interpolation happens horizontally. In this scenario, a structure of row-based changes may become visible in e.g. geometry image. Similar process happens for texture but in the other direction e.g. vertical direction. In this scenario, each column will be interpolated between the patches vertically and each column will be interpolated independently from other columns. Therefore, combining these two padded images, an overlapping boundary for texture/geometry images may be detectable.
[0165 ] In another embodiment, similar approach as the previous embodiment is used but instead of applying the padding to texture images and geometry, it is applied to any arbitrary two of Y, U, V, components of the geometry image.
[0166] In another embodiment, any other direction e.g. diagonal from top-left to bottom-right or diagonal from top-right to bottom-left may be used ft should be noted that the direction should be different in the two chosen padding processes e.g. 45 or 90 degrees. The more the difference between the padding directions, the maximum difference being 90 degrees, the easier it may be to estimate the occupancy map.
[0167 ] In another embodiment, the interpolation algorithm applied between each two patch boundaries (as a part of the padding process) is to have special pattern to make it more
distinguishable during the occupancy map estimation step (step 602). In accordance to one embodiment, an interpolation pattern to both geometry and texture images are introduced. For example, interpolation may be applied using a step size of a multiple of one pre- fixed step value, e.g. 3 or 5, and having a fixed number of pixels for which the padded value remains constant and then changes with a multiply of the pre-fixed step value. For example, in a row padding process with pre-fixed step size equal to 5 (so it includes 5, 10, 15, 20, ... as interpolation steps) and constant fixed pixels equal to 2, which means that there exists two pixels with similar value, except one set of pixels as the distance between the patches may not be a multiple of this constant pixel size, the following table may be obtained:
[0168]
Figure imgf000034_0001
0169] In another embodiment on top of the previous embodiment, it is to have a large step at the beginning and end of the interpolations steps, distinguishing the borders more. Using this approach, the previous example would be:
Figure imgf000034_0002
0170] In the two tables above the left-most values 10 and 56 represent left patch pixel values and the right-most values 126 and 97 represent right patch pixel values. [0171] It should be noted that the algorithm to interpolate can be simple and flexible for the middle parts when the beginning and last part is fixed to have a larger step. The distribution of pixel values in the interpolation area may differ from one case to another case. As long as the pre fixed step size is taken into account every time that the pixel values change and the number of pixels having the same value follow the fixed defined number, it will introduce a pattern which may be used when estimating the occupancy map. Alternatively, the minimum changes may be allocated to the middle part of the row/column to be interpolated just to clarify that the borders exist in the places where the differences are larger.
[0172] In yet another embodiment, similar horizontal or vertical interpolation between patch edges will be considered. However, the number of pixels between two edges are divided to N evenly sized row/column group of pixels (as evenly as possible), respectively. In this embodiment, the N group of pixels get similar value which will be defined based on the values of pixels in the beginning and the end of the row/column. One example of the table which may be utilised with this embodiment is as follows:
[0173] N = 2:
Figure imgf000035_0001
Ό174] N = 3:
Figure imgf000035_0002
0175] The underlined (and bolded) pixel values are used to show the division of the interpolation period to the desired number N = 2 or N = 3.
[0176] In accordance with an embodiment, a rate distortion optimization (RDO) algorithm may be used in the encoder side to decide which padding performs better along with the occupancy map estimation algorithm used. In such a case, the algorithm which shows to perform better may then be used in the padding process. The selection of padding may affect the algorithm that should be used in the decoder to find the edges. Therefore, the padding method used should be communicated between encoder and decoder enabling decoder to make the correct decision on the edge detection of geometry images and texture images. A codeword accompanied with a look-up-table may be used for signalling the padding method used.
[0177] In another embodiment, different padding methods are used for geometry images and texture images, wherein the selected padding methods may be signalled to the decoder. [0178] In accordance with an embodiment, a default padding method may have been defined, wherein if the selected padding method(s) differ(s) from the default padding method, the selected padding method(s) may be signalled to the decoder.
[0179] In the following, the operation at a decoder side is explained in more detail with reference to the block diagram of Figure 9b and the flow diagram of Figure lOb. A decoder 720 receives a bitstream (the block 670 in Figure lOb) and a decoding element 721 decodes 672 the bitstream to reconstruct the encoded information from the bitstream. The decoded information may comprise information of the geographical shape of the grid, unless a predetermined shape is used, the size (e.g. the width and height) of the grid, and information of the patches and their location within the grid, information of differences between the estimated occupancy map and the original occupancy map, information of the estimation process used in encoding, a codeword representing an index to a look-up table of different padding methods and possibly accompanied with the look up-table, compressed texture video, compressed geometry video, etc. A patch parser 722 uses this information to reconstruct 676 the patches from the grids. Reconstructed patches may then be converted 678 to point clouds and further to volumetric video by an image reconstructor 723.
[0180] Figure 9b depicts some elements of a decoder 930, in accordance with an embodiment. A demultiplexer 932 demultiplexes different information streams to correct decoding elements. The compressed geometry image and the compressed texture images are provided to a video decompression element 934 for decompressing to obtain decompressed geometry image and decompressed texture image. A difference signal decoding element 936 is provided with the encoded information of differences between the estimated occupancy map and the original occupancy map and outputs a decoded difference signal. The difference signal and information of the estimation process used in encoding are input to an occupancy map creator 946 for
reconstructing the occupancy map. The occupancy map creator 946 also receives the decompressed geometry image and decompressed texture image from the video decompression element 934 to be used in the reconstruction of the occupancy map. The compressed auxiliary patch information is provided to an auxiliary patch information decompressing element 938 to obtain decompressed auxiliary patch information. A geometry reconstruction element 940 uses the reconstructed occupancy map, decompressed geometry image and the decompressed auxiliary patch information to reconstruct the geometry image. The reconstructed geometry image may be smoothened by a smoothing element 942. A texture reconstruction element 944 uses the decompressed video information and geometry information to reconstruct the texture image. [0181] In the following, occupancy map reconstruction operations at the decoder side will shortly be described. In this step, similar occupancy map estimation process which has been used in the encoder is also performed in the decoder. Considering that the occupancy map estimation in the encoder has been performed on reconstructed geometry and/or texture images, then while applying the same process to decoded geometry and/or texture, identical estimated occupancy map may be achieved.
[0182] The information of the estimation process used in encoding, which may have been transmitted by the encoder and received by the decoder, such as a predetermined codeword, which may represent an index to a look-up table of padding methods, may be used to find which type of estimation process/algorithm is to be used for creating the estimated occupancy map. The estimated occupancy map may then be fine-tuned based on the residual information transmitted from encoder. Therefore, the occupancy map will be created in the decoder side. Following this, the decoded texture and geometry images may be shrunk or padded to have aligned edges as contours defining the occupancy map. The padding may be any algorithm like mirroring or extrapolation of pixel values.
[0183] When using the above described processes to avoid transmission of the original occupancy map as such, the occupancy map is not required to be encoded anymore. Therefore, a bitrate reduction may be achieved as the required bitrate to encode the residual information may be considerably lower than the amount of bitrate required to encode the occupancy map. However, in accordance with an embodiment, it may be possible to select whether to use some of the embodiments presented above or compress and transmit the original occupancy map. Hence, there may be a codeword which indicates the decoder how to reconstruct the occupancy map from the received information.
[0184] The rate- distortion decision application may make the transmission of the occupancy map flexible and adjustable to the content for best performance.
[0185] In H.264/AVC and HEVC, 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.
[0186 ] A partitioning may be defined as a division of a set into subsets such that each element of the set is in exactly one of the subsets.
[0187] When describing the operation of HEVC encoding and/or decoding, the following terms may be 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.
[0188] A CU consists of one or more prediction units (PU) defining the prediction process for the samples within the CU and one or more transform units (TU) defining the prediction error coding process for the samples in the said CU. Typically, a CU consists of a square block of samples with a size selectable from a predefined set of possible CU sizes. Each PU and TU can be further split into smaller PUs and TUs in order to increase granularity of the prediction and prediction error coding processes, respectively. Each PU has prediction information associated with it defining what kind of a prediction is to be applied for the pixels within that PU (e.g. motion vector information for inter predicted PUs and intra prediction directionality information for intra predicted PUs).
[0189] Each TU can be associated with information describing the prediction error decoding process for the samples within the said TU (including e.g. DCT coefficient information). It is typically signalled at CU level whether prediction error coding is applied or not for each CU. In the case there is no prediction error residual associated with the CU, it can be considered there are no TUs for the said CU. The division of the image into CUs, and division of CUs into PUs and TUs is typically signalled in the bitstream allowing the decoder to reproduce the intended structure of these units.
[0190] 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.
[0191] A motion-constrained tile set (MCTS) is such that the inter prediction process is constrained in encoding such that no sample value outside the motion-constrained tile set, and no sample value at a fractional sample position that is derived using one or more sample values outside the motion-constrained tile set, is used for inter prediction of any sample within the motion- constrained tile set. Additionally, the encoding of an MCTS is constrained in a manner that motion vector candidates are not derived from blocks outside the MCTS. This may be enforced by turning off temporal motion vector prediction of HEVC, or by disallowing the encoder to use the TMVP candidate or any motion vector prediction candidate following the TMVP candidate in the merge or AMVP candidate list for PUs located directly left of the right tile boundary of the MCTS except the last one at the bottom right of the MCTS. In general, an MCTS may be defined to be a tile set that is independent of any sample values and coded data, such as motion vectors, that are outside the MCTS. In some cases, an MCTS may be required to form a rectangular area ft should be understood that depending on the context, an MCTS may refer to the tile set within a picture or to the respective tile set in a sequence of pictures. The respective tile set may be, but in general need not be, collocated in the sequence of pictures.
[0192] ft is noted that sample locations used in inter prediction may be saturated by the encoding and/or decoding process so that a location that would be outside the picture otherwise is saturated to point to the corresponding boundary sample of the picture. Hence, if a tile boundary is also a picture boundary, in some use cases, encoders may allow motion vectors to effectively cross that boundary or a motion vector to effectively cause fractional sample interpolation that would refer to a location outside that boundary, since the sample locations are saturated onto the boundary. In other use cases, specifically if a coded tile may be extracted from a bitstream where it is located on a position adjacent to a picture boundary to another bitstream where the tile is located on a position that is not adjacent to a picture boundary, encoders may constrain the motion vectors on picture boundaries similarly to any MCTS boundaries.
[0193] The temporal motion-constrained tile sets SEI message of HEVC can be used to indicate the presence of motion-constrained tile sets in the bitstream.
[0194] The decoder reconstructs the output video by applying prediction means similar to the encoder to form a predicted representation of the pixel blocks (using the motion or spatial information created by the encoder and stored in the compressed representation) and prediction error decoding (inverse operation of the prediction error coding recovering the quantized prediction error signal in spatial pixel domain). After applying prediction and prediction error decoding means the decoder sums up the prediction and prediction error signals (pixel values) to form the output video frame. The decoder (and encoder) can also apply additional filtering means to improve the quality of the output video before passing it for display and/or storing it as prediction reference for the forthcoming frames in the video sequence.
[0195] The filtering may for example include one more of the following: deblocking, sample adaptive offset (SAO), and/or adaptive loop filtering (ALF). H.264/AVC includes a deblocking, whereas HEVC includes both deblocking and SAO.
[0196] In typical video codecs the motion information is indicated with motion vectors associated with each motion compensated image block, such as a prediction unit. Each of these motion vectors represents the displacement of the image block in the picture to be coded (in the encoder side) or decoded (in the decoder side) and the prediction source block in one of the previously coded or decoded pictures. In order to represent motion vectors efficiently those are typically coded differentially with respect to block specific predicted motion vectors. In typical video codecs the predicted motion vectors are created in a predefined way, for example calculating the median of the encoded or decoded motion vectors of the adjacent blocks. Another way to create motion vector predictions is to generate a list of candidate predictions from adjacent blocks and/or co-located blocks in temporal reference pictures and signalling the chosen candidate as the motion vector predictor. In addition to predicting the motion vector values, it can be predicted which reference picture(s) are used for motion-compensated prediction and this prediction information may be represented for example by a reference index of previously coded/decoded picture. The reference index is typically predicted from adjacent blocks and/or co-located blocks in temporal reference picture. Moreover, typical high efficiency video codecs employ an additional motion information coding/decoding mechanism, often called merging/merge mode, where all the motion field information, which includes motion vector and corresponding reference picture index for each available reference picture list, is predicted and used without any modification/correction.
Similarly, predicting the motion field information is carried out using the motion field information of adjacent blocks and/or co-located blocks in temporal reference pictures and the used motion field information is signalled among a list of motion field candidate list filled with motion field information of available adjacent/co- located blocks.
[0197] In typical video codecs the prediction residual after motion compensation is first transformed with a transform kernel (like DCT) and then coded. The reason for this is that often there still exists some correlation among the residual and transform can in many cases help reduce this correlation and provide more efficient coding.
[0198] Typical video encoders utilize Lagrangian cost functions to find optimal coding modes, e.g. the desired coding mode for a block and associated motion vectors. This kind of cost function uses a weighting factor l to tie together the (exact or estimated) image distortion due to lossy coding methods and the (exact or estimated) amount of information that is required to represent the pixel values in an image area:
C = D + LR, (1) where C is the Lagrangian cost to be minimized, D is the image distortion (e.g. Mean Squared Error) with the mode and motion vectors considered, and R the number of bits needed to represent the required data to reconstruct the image block in the decoder (including the amount of data to represent the candidate motion vectors).
[0199] Video coding standards and specifications may allow encoders to divide a coded picture to coded slices or alike. In-picture prediction is typically disabled across slice boundaries. Thus, slices can be regarded as a way to split a coded picture to independently decodable pieces. In H.264/AVC and HEVC, in-picture prediction may be disabled across slice boundaries. Thus, slices can be regarded as a way to split a coded picture into independently decodable pieces, and slices are therefore often regarded as elementary units for transmission. In many cases, encoders may indicate in the bitstream which types of in-picture prediction are turned off across slice boundaries, and the decoder operation takes this information into account for example when concluding which prediction sources are available. For example, samples from a neighboring CU may be regarded as unavailable for infra prediction, if the neighboring CU resides in a different slice.
[0200] An elementary unit for the output of an H.264/AVC or HEVC encoder and the input of an H.264/AVC or HEVC decoder, respectively, is a Network Abstraction Layer (NAL) unit. For transport over packet-oriented networks or storage into structured files, NAL units may be encapsulated into packets or similar structures. A bytestream format has been specified in
H.264/AVC and HEVC for transmission or storage environments that do not provide framing structures. The bytestream format separates NAL units from each other by attaching a start code in front of each NAL unit. To avoid false detection of NAL unit boundaries, encoders run a byte- oriented start code emulation prevention algorithm, which adds an emulation prevention byte to the NAL unit payload if a start code would have occurred otherwise ln order to enable straightforward gateway operation between packet- and stream-oriented systems, start code emulation prevention may always be performed regardless of whether the bytestream format is in use or not. A NAL unit may be defined as a syntax structure containing an indication of the type of data to follow and bytes containing that data in the form of an RBSP interspersed as necessary with emulation prevention bytes. A raw byte sequence payload (RBSP) may be defined as a syntax structure containing an integer number of bytes that is encapsulated in a NAL unit. An RBSP is either empty or has the form of a string of data bits containing syntax elements followed by an RBSP stop bit and followed by zero or more subsequent bits equal to 0.
[0201] NAL units consist of a header and payload ln H.264/AVC and HEVC, the NAL unit header indicates the type of the NAL unit
[0202 ] ln HEVC, a two-byte NAL unit header is used for all specified NAL unit types. The NAL unit header contains one reserved bit, a six-bit NAL unit type indication, a three-bit nuh_temporal_id_plusl indication for temporal level (may be required to be greater than or equal to 1) and a six-bit nuh layer id syntax element. The temporal_id_plusl syntax element may be regarded as a temporal identifier for the NAL unit, and a zero-based Temporalld variable may be derived as follows: Temporalld = temporal_id_plusl - 1. The abbreviation T1D may be used to interchangeably with the Temporalld variable. Temporalld equal to 0 corresponds to the lowest temporal level. The value of temporal_id_plusl is required to be non-zero in order to avoid start code emulation involving the two NAL unit header bytes. The bitstream created by excluding all VCL NAL units having a Temporalld greater than or equal to a selected value and including all other VCL NAL units remains conforming. Consequently, a picture having Temporalld equal to tid value does not use any picture having a Temporalld greater than tid value as inter prediction reference.
[0203] NAL units can be categorized into Video Coding Layer (VCL) NAL units and non-VCL NAL units. VCL NAL units are typically coded slice NAL units. In HEVC, VCL NAL units contain syntax elements representing one or more CU.
[0204] A non-VCL NAL unit may be for example one of the following types: a sequence parameter set, a picture parameter set, a supplemental enhancement information (SEI) NAL unit, an access unit delimiter, an end of sequence NAL unit, an end of bitstream NAL unit, or a filler data NAL unit. Parameter sets may be needed for the reconstruction of decoded pictures, whereas many of the other non-VCL NAL units are not necessary for the reconstruction of decoded sample values.
[0205] Parameters that remain unchanged through a coded video sequence may be included in a sequence parameter set. In addition to the parameters that may be needed by the decoding process, the sequence parameter set may optionally contain video usability information (VUI), which includes parameters that may be important for buffering, picture output timing, rendering, and resource reservation. In HEVC a sequence parameter set RBSP includes parameters that can be referred to by one or more picture parameter set RBSPs or one or more SEI NAL units containing a buffering period SEI message. A picture parameter set contains such parameters that are likely to be unchanged in several coded pictures. A picture parameter set RBSP may include parameters that can be referred to by the coded slice NAL units of one or more coded pictures.
[0206] In HEVC, a video parameter set (VPS) may be defined as a syntax structure containing syntax elements that apply to zero or more entire coded video sequences as determined by the content of a syntax element found in the SPS referred to by a syntax element found in the PPS referred to by a syntax element found in each slice segment header.
[0207] A video parameter set RBSP may include parameters that can be referred to by one or more sequence parameter set RBSPs.
[0208] Out-of-band transmission, signaling or storage can additionally or alternatively be used for other purposes than tolerance against transmission errors, 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.
[0209] A SEI NAL unit may contain one or more SEI messages, which are not required for the decoding of output pictures but may assist in related processes, such as picture output timing, rendering, error detection, error concealment, and resource reservation. Several SEI messages are specified in H.264/AVC and HEVC, and the user data SEI messages enable organizations and companies to specify SEI messages for their own use. H.264/AVC and HEVC contain the syntax and semantics for the specified SEI messages but no process for handling the messages in the recipient is defined. Consequently, encoders are required to follow the H.264/AVC standard or the HEVC standard when they create SEI messages, and decoders conforming to the H.264/AVC standard or the HEVC standard, respectively, are not required to process SEI messages for output order conformance. One of the reasons to include the syntax and semantics of SEI messages in H.264/AVC and HEVC is to allow different system specifications to interpret the supplemental information identically and hence interoperate. It is intended that system specifications can require the use of particular SEI messages both in the encoding end and in the decoding end, and additionally the process for handling particular SEI messages in the recipient can be specified.
[0210 ] In HEVC, there are two types of SEI NAL units, namely the suffix SEI NAL unit and the prefix SEI NAL unit, having a different nal unit type value from each other. The SEI message(s) contained in a suffix SEI NAL unit are associated with the VCL NAL unit preceding, in decoding order, the suffix SEI NAL unit. The SEI message(s) contained in a prefix SEI NAL unit are associated with the VCL NAL unit following, in decoding order, the prefix SEI NAL unit.
[021 3 ] A coded picture is a coded representation of a picture.
[0212] In HEVC, a coded picture may be defined as a coded representation of a picture containing all coding tree units of the picture. In HEVC, an access unit (AU) may be defined as a set of NAL units that are associated with each other according to a specified classification rule, are consecutive in decoding order, and contain at most one picture with any specific value of nuh layer id. In addition to containing the VCL NAL units of the coded picture, an access unit may also contain non-VCL NAL units. Said specified classification rule may for example associate pictures with the same output time or picture output count value into the same access unit.
[0213 ] A bitstream may be defined as a sequence of bits, in the form of a NAL unit stream or a byte stream, that forms the representation of coded pictures and associated data forming one or more coded video sequences. A first bitstream may be followed by a second bitstream in the same logical channel, such as in the same file or in the same connection of a communication protocol.
An elementary stream (in the context of video coding) may be defined as a sequence of one or more bitstreams. The end of the first bitstream may be indicated by a specific NAL unit, which may be referred to as the end of bitstream (EOB) NAL unit and which is the last NAL unit of the bitstream. In HEVC and its current draft extensions, the EOB NAL unit is required to have nuh layer id equal to 0.
[0214] In H.264/AVC, a coded video sequence is defined to be a sequence of consecutive access units in decoding order from an IDR access unit, inclusive, to the next IDR access unit, exclusive, or to the end of the bitstream, whichever appears earlier.
[0215] In HEVC, a coded video sequence (CVS) may be defined, for example, as a sequence of access units that consists, in decoding order, of an IRAP access unit with NoRaslOutputFlag equal to 1, followed by zero or more access units that are not IRAP access units with NoRaslOutputFlag equal to 1 , including all subsequent access units up to but not including any subsequent access unit that is an IRAP access unit with NoRaslOutputFlag equal to 1. An IRAP access unit may be defined as an access unit in which the base layer picture is an IRAP picture. The value of
NoRaslOutputFlag is equal to 1 for each IDR picture, each BLA picture, and each IRAP picture that is the first picture in that particular layer in the bitstream in decoding order, is the first IRAP picture that follows an end of sequence NAL unit having the same value of nuh layer id in decoding order. There may be means to provide the value of HandleCraAsBlaFlag to the decoder from an external entity, such as a player or a receiver, which may control the decoder.
HandleCraAsBlaFlag may be set to 1 for example by a player that seeks to a new position in a bitstream or tunes into a broadcast and starts decoding and then starts decoding from a CRA picture. When HandleCraAsBlaFlag is equal to 1 for a CRA picture, the CRA picture is handled and decoded as if it were a BLA picture.
[0216] In HEVC, a coded video sequence may additionally or alternatively (to the specification above) be specified to end, when a specific NAL unit, which may be referred to as an end of sequence (EOS) NAL unit, appears in the bitstream and has nuh layer id equal to 0.
[0217] A group of pictures (GOP) and its characteristics may be defined as follows. A GOP can be decoded regardless of whether any previous pictures were decoded. An open GOP is such a group of pictures in which pictures preceding the initial intra picture in output order might not be correctly decodable when the decoding starts from the initial intra picture of the open GOP. In other words, pictures of an open GOP may refer (in inter prediction) to pictures belonging to a previous GOP. An HEVC decoder can recognize an intra picture starting an open GOP, because a specific NAL unit type, CRA NAL unit type, may be used for its coded slices. A closed GOP is such a group of pictures in which all pictures can be correctly decoded when the decoding starts from the initial intra picture of the closed GOP. In other words, no picture in a closed GOP refers to any pictures in previous GOPs. In H.264/AVC and HEVC, a closed GOP may start from an IDR picture. In HEVC a closed GOP may also start from a BLA W RADL or a BLA N LP picture. An open GOP coding structure is potentially more efficient in the compression compared to a closed GOP coding structure, due to a larger flexibility in selection of reference pictures.
[0218] A Decoded Picture Buffer (DPB) may be used in the encoder and/or in the decoder. There are two reasons to buffer decoded pictures, for references in inter prediction and for reordering decoded pictures into output order. As H.264/AVC and HEVC provide a great deal of flexibility for both reference picture marking and output reordering, separate buffers for reference picture buffering and output picture buffering may waste memory resources. Hence, the DPB may include a unified decoded picture buffering process for reference pictures and output reordering. A decoded picture may be removed from the DPB when it is no longer used as a reference and is not needed for output.
[0219] ln many coding modes of H.264/AVC and HEVC, the reference picture for inter prediction is indicated with an index to a reference picture list. The index may be coded with variable length coding, which usually causes a smaller index to have a shorter value for the corresponding syntax element ln H.264/AVC and HEVC, two reference picture lists (reference picture list 0 and reference picture list 1) are generated for each bi-predictive (B) slice, and one reference picture list (reference picture list 0) is formed for each inter-coded (P) slice.
[0220] Many coding standards, including H.264/AVC and HEVC, may have decoding process to derive a reference picture index to a reference picture list, which may be used to indicate which one of the multiple reference pictures is used for inter prediction for a particular block. A reference picture index may be coded by an encoder into the bitstream is some inter coding modes or it may be derived (by an encoder and a decoder) for example using neighboring blocks in some other inter coding modes.
[0221 ] Several candidate motion vectors may be derived for a single prediction unit. For example, motion vector prediction HEVC includes two motion vector prediction schemes, namely the advanced motion vector prediction (AMVP) and the merge mode ln the AMVP or the merge mode, a list of motion vector candidates is derived for a PU. There are two kinds of candidates: spatial candidates and temporal candidates, where temporal candidates may also be referred to as TMVP candidates.
[0222] A candidate list derivation may be performed for example as follows, while it should be understood that other possibilities may exist for candidate list derivation lf the occupancy of the candidate list is not at maximum, the spatial candidates are included in the candidate list first if they are available and not already exist in the candidate list. After that, if occupancy of the candidate list is not yet at maximum, a temporal candidate is included in the candidate list. If the number of candidates still does not reach the maximum allowed number, the combined bi- predictive candidates (for B slices) and a zero motion vector are added in. After the candidate list has been constructed, the encoder decides the final motion information from candidates for example based on a rate-distortion optimization (RDO) decision and encodes the index of the selected candidate into the bitstream. Likewise, the decoder decodes the index of the selected candidate from the bitstream, constructs the candidate list, and uses the decoded index to select a motion vector predictor from the candidate list.
[0223] In HEVC, AMYP and the merge mode may be characterized as follows. In AMVP, the encoder indicates whether uni-prediction or bi-prediction is used and which reference pictures are used as well as encodes a motion vector difference. In the merge mode, only the chosen candidate from the candidate list is encoded into the bitstream indicating the current prediction unit has the same motion information as that of the indicated predictor. Thus, the merge mode creates regions composed of neighbouring prediction blocks sharing identical motion information, which is only signalled once for each region.
[0224] Texture picture(s) and the respective geometry picture(s) may have the same or different chroma format.
[0225] Depending on the context, a pixel may be defined to 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.
[0226] Projecting 3D data onto 2D planes is independent from the 3D scene model representation format. There exist several approaches for projecting 3D data onto 2D planes, with the respective signalling. For example, there exist several mappings from spherical coordinates to planar coordinates, known from map projections of the globe, and the type and parameters of such projection may be signalled. For cylindrical projections, the aspect ratio of height and width may be signalled.
[0227] In the above, some embodiments have been described with reference to encoding. It needs to be understood that said encoding may comprise one or more of the following: encoding source image data into a bitstream, encapsulating the encoded bitstream in a container file and/or in packet(s) or stream(s) of a communication protocol, and announcing or describing the bitstream in a content description, such as the Media Presentation Description (MPD) of ISO/IEC 23009-1 (known as MPEG-DASH) or the IETF Session Description Protocol (SDP). Similarly, some embodiments have been described with reference to decoding. It needs to be understood that said decoding may comprise one or more of the following: decoding image data from a bitstream, decapsulating the bitstream from a container file and/or from packet(s) or stream(s) of a communication protocol, and parsing a content description of the bitstream,
[0228] In the above, some embodiments have been described with reference to encoding or decoding texture pictures, geometry pictures (e.g. depth pictures), and/or projection geometry information into or from a single bitstream. It needs to be understood that embodiments can be similarly realized when encoding or decoding texture pictures, geometry pictures, and/or projection geometry information into or from several bitstreams that are associated with each other, e.g. by metadata in a container file or media presentation description for streaming.
[0229] The communication devices may communicate using various transmission technologies including, but not limited to, code division multiple access (CDMA), global systems for mobile communications (GSM), universal mobile telecommunications system (UMTS), time divisional multiple access (TDMA), frequency division multiple access (FDMA), transmission control protocol- internet protocol (TCP-IP), short messaging service (SMS), multimedia messaging service (MMS), email, instant messaging service (IMS), Bluetooth, IEEE 802.11, Long Term Evolution wireless communication technique (LTE) and any similar wireless communication technology. A communications device involved in implementing various embodiments of the present invention may communicate using various media including, but not limited to, radio, infrared, laser, cable connections, and any suitable connection.
[0230] Although the above examples describe embodiments of the invention operating within a wireless communication device, it would be appreciated that the invention as described above may be implemented as a part of any apparatus comprising a circuitry in which radio frequency signals are transmitted and received. Thus, for example, embodiments of the invention may be implemented in a mobile phone, in a base station, in a computer such as a desktop computer or a tablet computer comprising radio frequency communication means (e.g. wireless local area network, cellular radio, etc.).
[0231] 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. [0232] 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.
[0233] 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.
[0234] 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

Claims:
1. An apparatus comprising:
means for obtaining one or more patches formed from a three-dimensional scene; means for packing the one or more patches into a binary image;
means for generating an original occupancy map from the one or more patches, said original occupancy map comprising information of occupied and non-occupied pixels of the binary image;
means for generating an estimated occupancy map;
means for comparing the estimated occupancy map and the original occupancy map to form a difference signal; and
means for encoding the difference signal into or along a bitstream.
2. The apparatus according to claim 1 comprising:
means for examining misalignments between contours of the estimated occupancy map and the original occupancy map; and
means for ignoring misalignments which are smaller than a threshold.
3. The apparatus according to claim 2, wherein said means for encoding are configured to encode as residual data the difference between the estimated occupancy map and the original occupancy map which is greater than or equal to the threshold.
4. The apparatus according to claim 1 , 2 or 3 comprising:
means for applying rate-distortion optimisation algorithms to determine if a required bit rate to transmit the difference improves quality.
5. The apparatus according to any of the claims 1 to 4, wherein the three-dimensional scene is represented by volumetric video comprising a texture image and a geometry image, the apparatus comprising:
means for compressing the geometry image and the texture image; and
means for using the compressed geometry image and the compressed texture image in the generation of the estimated occupancy map.
6. The apparatus according to any of the claims 1 to 5, wherein the binary image comprises at least one component of a texture image, said apparatus comprising:
means for padding un-occupied pixels of said at least one component towards a maximum value or towards a minimum value.
7. The apparatus according to claim 6, wherein the at least one component is a chroma component of the texture image.
8. The apparatus according to claim 6 or 7, wherein said means for padding are configured to pad one component of the texture image towards the minimum value and another component of the texture image towards the maximum value.
9. The apparatus according to any of the claims 1 to 8 comprising:
means for padding a geometry image in a first direction; and
means for padding a texture image in a second direction different from the first direction.
10. A method comprising:
obtaining one or more patches formed from a three-dimensional scene;
packing the one or more patches into a binary image;
generating an original occupancy map from the one or more patches, said original occupancy map comprising information of occupied and non-occupied pixels of the binary image;
generating an estimated occupancy map;
comparing the estimated occupancy map and the original occupancy map to form a difference signal; and
encoding the difference signal into or along a bitstream.
11. An apparatus comprising:
means for receiving a texture image and a geometry image;
means for receiving a difference signal indicative of differences between an estimated occupancy map and an original occupancy map; and
means for reconstructing the original occupancy map by using the texture image, the geometry image and the difference signal.
12. The apparatus according to claim 11 comprising:
means for using the geometry image and the texture image to generate an estimated occupancy map; and
means for using the estimated occupancy map and the received difference signal to reconstruct the original occupancy map.
13. The apparatus according to claim 11 or 12 comprising:
means for receiving indication of an estimation process used in encoding the occupancy map; wherein said means for reconstructing the original occupancy map are configured to use the indicated estimation process in the reconstruction.
14. A method comprising:
receiving a texture image and a geometry image;
receiving a difference signal indicative of differences between an estimated occupancy map and an original occupancy map; and
reconstructing the original occupancy map by using the texture image, the geometry image and the difference signal.
15. An apparatus comprising:
a patch generator configured to obtain one or more patches formed from a three- dimensional scene;
a packing element configured to pack the one or more patches into a binary image; an occupancy map generator configured to generate an original occupancy map from the one or more patches, said original occupancy map comprising information of occupied and non- occupied pixels of the binary image;
an occupancy map estimator configured to generate an estimated occupancy map; an occupancy map comparator configured to compare the estimated occupancy map and the original occupancy map to form a difference signal; and
an encoder configured to encode the difference signal into or along a bitstream.
16. The apparatus according to claim 15, wherein the occupancy map comparator is further configured to:
examine misalignments between contours of the estimated occupancy map and the original occupancy map; and
ignore misalignments which are smaller than a threshold.
17. The apparatus according to claim 16, wherein the encoder is configured to encode as residual data the difference between the estimated occupancy map and the original occupancy map which is greater than or equal to the threshold.
18. The apparatus according to claim 15, 16 or 17, wherein the encoder is further configured to: apply rate-distortion optimisation algorithms to determine if a required bit rate to transmit the difference improves quality.
19. The apparatus according to any of the claims 15 to 18, wherein the three-dimensional scene is represented by volumetric video comprising a texture image and a geometry image, the apparatus comprising:
a compressing element configured to compress the geometry image and the texture image; and
the occupancy map estimator is configured to use the compressed geometry image and the compressed texture image in the generation of the estimated occupancy map.
20. The apparatus according to any of the claims 15 to 19, wherein the binary image comprises at least one component of a texture image, said apparatus comprising:
a padding element configured to padd un-occupied pixels of said at least one component towards a maximum value or towards a minimum value.
21. The apparatus according to claim 20, wherein the at least one component is a chroma component of the texture image.
22. The apparatus according to claim 20 or 21, wherein said padding element is configured to pad one component of the texture image towards the minimum value and another component of the texture image towards the maximum value.
23. The apparatus according to any of the claims 15 to 22, wherein the padding element is configured to:
pad a geometry image in a first direction; and
pad a texture image in a second direction different from the first direction.
24. An apparatus comprising:
a first input configured to receive a texture image and a geometry image;
a second input configured to receiving a difference signal indicative of differences between an estimated occupancy map and an original occupancy map; and
an occupancy map creator configured to reconstruct the original occupancy map by using the texture image, the geometry image and the difference signal.
25. The apparatus according to claim 24 comprising:
an estimated occupancy map creator configured to use the geometry image and the texture image to generate an estimated occupancy map; and
an occupancy map creator configured to use the estimated occupancy map and the received difference signal to reconstruct the original occupancy map.
26. The apparatus according to claim 24 or 25 comprising:
a third input configured to receive an indication of an estimation process used in encoding the occupancy map; wherein said occupancy map creator is configured to use the indicated estimation process in the reconstruction.
27. An apparatus comprising at least one processor and at least one memory, said at least one memory stored with code thereon, which when executed by said at least one processor, causes the apparatus to perform at least:
obtain one or more patches formed from a three-dimensional scene;
pack the one or more patches into a binary image; generate an original occupancy map from the one or more patches, said original occupancy map comprising information of occupied and non-occupied pixels of the binary image;
generate an estimated occupancy map;
compare the estimated occupancy map and the original occupancy map to form a difference signal; and
encode the difference signal into or along a bitstream.
28. An apparatus comprising at least one processor and at least one memory, said at least one memory stored with code thereon, which when executed by said at least one processor, causes the apparatus to perform at least:
receive a texture image and a geometry image;
receive a difference signal indicative of differences between an estimated occupancy map and an original occupancy map; and
reconstruct the original occupancy map by using the texture image, the geometry image and the difference signal.
PCT/FI2019/050392 2018-06-04 2019-05-21 An apparatus, a method and a computer program for volumetric video WO2019234290A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP19814492.5A EP3804334A4 (en) 2018-06-04 2019-05-21 An apparatus, a method and a computer program for volumetric video

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20185508 2018-06-04
FI20185508 2018-06-04

Publications (1)

Publication Number Publication Date
WO2019234290A1 true WO2019234290A1 (en) 2019-12-12

Family

ID=68769129

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FI2019/050392 WO2019234290A1 (en) 2018-06-04 2019-05-21 An apparatus, a method and a computer program for volumetric video

Country Status (2)

Country Link
EP (1) EP3804334A4 (en)
WO (1) WO2019234290A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210183110A1 (en) * 2018-07-12 2021-06-17 Huawei Technologies Co., Ltd. Point Cloud Encoding Method, Point Cloud Decoding Method, Encoder, and Decoder

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170251214A1 (en) * 2016-02-26 2017-08-31 Versitech Limited Shape-adaptive model-based codec for lossy and lossless compression of images

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170251214A1 (en) * 2016-02-26 2017-08-31 Versitech Limited Shape-adaptive model-based codec for lossy and lossless compression of images

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
MAMMOU, K. ET AL.: "Point Cloud Compression: Test Model Category 2 v 0.0", MPEG 120TH MEETING MACAU OUTPUT DOCUMENT W17248. MPEG DOCUMENT MANAGEMENT SYSTEM, 14 December 2017 (2017-12-14), XP030070262, Retrieved from the Internet <URL:<http://phenix.it-sudparis.eu/mpeg> [retrieved on 20190814] *
PESONEN, M. ET AL.: "Contour Based Occupancy Coding", MPEG 122ND MEETING SAN DIEGO INPUT DOCUMENT M42491. MPEG DOCUMENT MANAGEMENT SYSTEM, 11 April 2018 (2018-04-11), XP030070830, Retrieved from the Internet <URL:http://phenix.it-sudparis.eu/mpeg> [retrieved on 20190814] *
VALENTIN, V. ET AL.: "Video-based Occupancy Map Compression in TMC2", MPEG 122ND MEETING SAN DIEGO INPUT DOCUMENT M42639 . MPEG DOCUMENT MANAGEMENT SYSTEM, 11 April 2018 (2018-04-11), XP030070978, Retrieved from the Internet <URL:http://phenix.it-sudparis.eu/mpeg> [retrieved on 20190814] *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210183110A1 (en) * 2018-07-12 2021-06-17 Huawei Technologies Co., Ltd. Point Cloud Encoding Method, Point Cloud Decoding Method, Encoder, and Decoder

Also Published As

Publication number Publication date
EP3804334A4 (en) 2022-04-20
EP3804334A1 (en) 2021-04-14

Similar Documents

Publication Publication Date Title
US11523135B2 (en) Apparatus, a method and a computer program for volumetric video
EP3614674A1 (en) An apparatus, a method and a computer program for volumetric video
US11778171B2 (en) Apparatus, a method and a computer program for video coding and decoding
US20220239949A1 (en) An apparatus, a method and a computer program for video encoding and decoding
US11405643B2 (en) Sequential encoding and decoding of volumetric video
US11659151B2 (en) Apparatus, a method and a computer program for volumetric video
WO2019129923A1 (en) An apparatus, a method and a computer program for volumetric video
WO2019135024A1 (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
US11651523B2 (en) Apparatus, a method and a computer program for volumetric video
WO2019158821A1 (en) An apparatus, a method and a computer program for volumetric video
WO2020141260A1 (en) An apparatus, a method and a computer program for video coding and decoding
EP3698327A1 (en) An apparatus, a method and a computer program for volumetric video
WO2019185985A1 (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
WO2019115866A1 (en) An apparatus, a method and a computer program for volumetric video
WO2019115867A1 (en) An apparatus, a method and a computer program for volumetric video
WO2019197722A1 (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
EP3804334A1 (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
EP3680859A1 (en) An apparatus, a method and a computer program for volumetric video

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: 19814492

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: 2019814492

Country of ref document: EP

Effective date: 20210111