WO2024205193A2 - 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 - Google Patents
포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 Download PDFInfo
- Publication number
- WO2024205193A2 WO2024205193A2 PCT/KR2024/003771 KR2024003771W WO2024205193A2 WO 2024205193 A2 WO2024205193 A2 WO 2024205193A2 KR 2024003771 W KR2024003771 W KR 2024003771W WO 2024205193 A2 WO2024205193 A2 WO 2024205193A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- mesh
- channel
- displacement vector
- values
- packing
- Prior art date
- Legal status (The legal status 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 status listed.)
- Ceased
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/537—Motion estimation other than block-based
- H04N19/54—Motion estimation other than block-based using feature points or meshes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Definitions
- the embodiments provide a method for providing Point Cloud content to provide various services to users, such as Virtual Reality (VR), Augmented Reality (AR), Mixed Reality (MR), and autonomous driving services.
- VR Virtual Reality
- AR Augmented Reality
- MR Mixed Reality
- autonomous driving services such as autonomous driving services.
- a point cloud is a collection of points in 3D space. There is a problem in that it is difficult to create point cloud data because there are a large number of points in 3D space.
- the technical problem according to the embodiments is to provide a point cloud data transmission device, a transmission method, a point cloud data reception device, and a reception method for efficiently transmitting and receiving point clouds in order to solve the problems described above.
- Technical problems according to embodiments are directed to providing a point cloud data transmission device, a transmission method, a point cloud data reception device, and a reception method for resolving latency and encoding/decoding complexity.
- a method for transmitting mesh data may include a step of encoding mesh data; and a step of transmitting a bitstream including mesh data.
- a method for receiving mesh data may include a step of receiving a bitstream including mesh data; and a step of decoding mesh data.
- the point cloud data transmission method, transmission device, point cloud data reception method, and reception device can provide a quality point cloud service.
- the point cloud data transmission method, transmission device, point cloud data reception method, and reception device can achieve various video codec methods.
- the point cloud data transmission method, transmission device, point cloud data reception method, and reception device can provide general-purpose point cloud content such as autonomous driving services.
- Figure 1 illustrates a system for providing dynamic mesh content according to embodiments.
- Figure 2 illustrates a V-MESH compression method according to embodiments.
- FIG. 3 illustrates pre-processing of V-MESH compression according to embodiments.
- Figure 4 illustrates a mid-edge subdivision method according to embodiments.
- Figure 5 shows a displacement generation process according to embodiments.
- Figure 6 illustrates an intra-frame encoding process of a V-MESH compression method according to embodiments.
- Figure 7 illustrates an inter-frame encoding process of a V-MESH compression method according to embodiments.
- Figure 8 shows a lifting conversion process for displacement according to embodiments.
- Figure 9 illustrates a process of packing transformation coefficients according to embodiments into a 2D image.
- Figure 10 illustrates an attribute transfer process of a V-MESH compression method according to embodiments.
- Figure 11 illustrates an intra frame decoding process of a V-MESH compression method according to embodiments.
- Fig. 12 shows a V-MES and Fig. 13 shows a point cloud data transmission device according to embodiments.
- Fig. 13 shows a point cloud data transmission device according to embodiments.
- Fig. 14 shows a point cloud data receiving device according to embodiments.
- Figure 15 illustrates a dynamic mesh encoder according to embodiments.
- Figure 16 shows a displacement vector encoding unit according to embodiments.
- Figure 17 shows the structure of displacement vector coefficients according to embodiments.
- Figure 18 shows displacement vector coefficient 2D image packing according to embodiments.
- Figure 19 shows the 2D image packing of displacement vector coefficients by LoD (Level of Detail) according to embodiments.
- Figure 20 shows a 2D Moulton code-based packing according to embodiments.
- Figure 21 shows a displacement vector coefficient packing method according to embodiments.
- Figure 22 shows a displacement vector coefficient packing method according to embodiments.
- Figure 23 shows a displacement vector coefficient packing method according to embodiments.
- Figure 24 shows the overall level packing frame configuration according to embodiments.
- Figure 25 shows a packing frame configuration by level according to embodiments.
- Fig. 26 shows a dynamic mesh decoder according to embodiments.
- Figure 27 shows a displacement vector decoding unit according to embodiments.
- Figure 28 shows a displacement vector coefficient inverse packing method according to embodiments.
- Figure 29 shows a displacement vector coefficient inverse packing method according to embodiments.
- Figure 30 shows a displacement vector coefficient inverse packing method according to embodiments.
- Figure 31 shows a displacement vector coefficient inverse packing method according to embodiments.
- Figure 32 shows a displacement vector coefficient inverse packing method according to embodiments.
- Figure 33 shows a set of atlas sequence parameters in a bitstream according to embodiments.
- Figure 34 shows a set of atlas sequence parameters in a bitstream according to embodiments.
- Figure 35 shows displacement vector coefficient packing and inverse packing according to embodiments.
- Figure 36 shows a sampling method and sampling values of displacement vector coefficient components according to embodiments.
- Figure 37 shows a mesh data transmission method according to embodiments.
- Figure 38 shows a method for receiving mesh data according to embodiments.
- Figure 1 illustrates a system for providing dynamic mesh content according to embodiments.
- the system of FIG. 1 includes a point cloud data transmission device (100) and a point cloud data reception device (110) according to embodiments.
- the point cloud data transmission device may include a dynamic mesh video acquisition unit (101), a dynamic mesh video encoder (102), a file/segment encapsulator (103), and a transmitter (104).
- the point cloud data reception device (110) may include a reception unit (111), a file/segment decapsulator (112), a dynamic mesh video decoder (113), and a renderer (114).
- Each component of FIG. 1 may correspond to hardware, software, a processor, and/or a combination thereof.
- the point cloud data transmission device may be interpreted as a term referring to the transmission device (100) or a dynamic mesh video encoder (hereinafter, referred to as an encoder) (102).
- the point cloud data receiving device according to the embodiments may be interpreted as a term referring to a receiving device (110) or a dynamic mesh video decoder (hereinafter, decoder) (113).
- the system of Fig. 1 can perform video-based dynamic mesh compression and decompression.
- 3D content such as AR, XR, metaverse, and holograms
- 3D contents express objects more precisely and realistically so that users can enjoy immersive experiences, and for this purpose, a large amount of data is required to create and use 3D models.
- 3D mesh is widely used for efficient data utilization and realistic object expression. Embodiments include a series of processing processes in a system that uses such mesh content.
- V-PCC Video-based point cloud compression
- Point cloud data is data that has color information in the vertex coordinates (X, Y, Z).
- Mesh data refers to the vertex information to which connectivity information between vertices is added. When creating content, it can be created in the form of mesh data from the beginning. Connectivity information can be added to point cloud data and converted into mesh data for use.
- the MPEG standards body defines the data types of dynamic mesh data as the following two types.
- Category 1 Mesh data with texture maps as color information.
- Category 2 Mesh data with vertex colors as color information.
- the entire process for providing a Mesh content service may include an acquisition process, an encoding process, a transmission process, a decoding process, a rendering process, and/or a feedback process, as shown in Fig. 1.
- 3D data acquired through multiple cameras or special cameras can be processed into a mesh data type through a series of processes and then generated as a video.
- the generated mesh video is transmitted through a series of processes, and the receiving end can process the received data again into a mesh video and render it.
- a mesh video is provided to the user, and the user can use the mesh content according to his/her intention through interaction.
- a mesh compression system may include a transmitting device and a receiving device.
- the transmitting device may encode mesh video to output a bitstream, which may be transmitted to a receiving device via a digital storage medium or a network in the form of a file or streaming (streaming segment).
- the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc.
- the transmitting device may roughly include a mesh video acquisition unit, a mesh video encoder, and a transmitting unit.
- the receiving device may roughly include a receiving unit, a mesh video decoder, and a renderer.
- the encoder may be called a mesh video/video/picture/frame encoding device
- the decoder may be called a mesh video/video/picture/frame decoding device.
- the transmitter may be included in the mesh video encoder.
- the receiver may be included in the mesh video decoder.
- the renderer may include a display unit, and the renderer and/or the display unit may be configured as separate devices or external components.
- the transmitting device and the receiving device may further include separate internal or external modules/units/components for a feedback process.
- Mesh data represents the surface of an object as a number of polygons. Each polygon is defined by a vertex in 3D space and connection information that describes how the vertices are connected. It can also include vertex properties such as vertex color, normal, etc. Mapping information that allows the surface of the mesh to be mapped to a 2D planar area can also be included as a mesh property. The mapping can be described as a set of parameter coordinates, commonly called UV coordinates or texture coordinates, associated with the mesh vertices. Meshes contain 2D attribute maps, which can be used to store high-resolution attribute information such as textures, normals, displacement, etc.
- the mesh video acquisition unit may include processing 3D object data acquired through a camera, etc. into a mesh data type having the properties described above through a series of processes and generating a video composed of such mesh data.
- the mesh video may have properties of the mesh, such as vertices, polygons, connection information between vertices, colors, normals, etc., that may change over time.
- a mesh video having properties and connection information that change over time in this way may be expressed as a dynamic mesh video.
- a mesh video encoder can encode an input mesh video into one or more video streams.
- a single video can include multiple frames, and a single frame can correspond to a still image/picture.
- a mesh video can include a mesh image/frame/picture, and a mesh video can be used interchangeably with a mesh image/frame/picture.
- a mesh video encoder can perform a Video-based Dynamic Mesh (V-Mesh) Compression procedure.
- V-Mesh Video-based Dynamic Mesh
- a mesh video encoder can perform a series of procedures such as prediction, transformation, quantization, and entropy coding for compression and coding efficiency.
- Encoded data encoded video/image information
- An encapsulation processing unit can encapsulate encoded mesh video data and/or mesh video related metadata in the form of a file, etc.
- the mesh video related metadata may be received from a metadata processing unit, etc.
- the metadata processing unit may be included in the mesh video encoder, or may be configured as a separate component/module.
- the encapsulation processing unit may encapsulate the corresponding data in a file format such as ISOBMFF, or process it in the form of other DASH segments, etc.
- the encapsulation processing unit may include mesh video related metadata in the file format according to an embodiment.
- the mesh video metadata may be included in boxes at various levels in the ISOBMFF file format, for example, or may be included as data in a separate track within a file.
- the encapsulation processing unit may encapsulate mesh video related metadata itself in a file.
- the transmission processing unit can process encapsulated mesh video data for transmission according to a file format.
- the transmission processing unit can be included in the transmission unit, or can be configured as a separate component/module.
- the transmission processing unit can process mesh video data according to any transmission protocol.
- the processing for transmission can include processing for transmission through a broadcast network and processing for transmission through broadband.
- the transmission processing unit can receive not only mesh video data, but also mesh video-related metadata from the metadata processing unit, and process this for transmission.
- the transmission unit can transmit encoded video/image information or data output in the form of a bitstream to the reception unit of the receiving device through a digital storage medium or network in the form of a file or streaming.
- the digital storage medium can include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc.
- the transmission unit can include an element for generating a media file through a predetermined file format and can include an element for transmission through a broadcasting/communication network.
- the reception unit can extract the bitstream and transmit it to a decoding device.
- the receiver can receive mesh video data transmitted by the mesh video transmission device. Depending on the channel through which it is transmitted, the receiver can receive mesh video data through a broadcast network, through a broadband, or through a digital storage medium.
- the receiving processing unit can perform processing according to a transmission protocol on the received mesh video data.
- the receiving processing unit can be included in the receiving unit, or can be configured as a separate component/module. In order to correspond to the processing performed for transmission on the transmitting side, the receiving processing unit can perform the reverse process of the aforementioned transmitting processing unit.
- the receiving processing unit can transfer the acquired mesh video data to the decapsulation processing unit, and transfer the acquired mesh video-related metadata to the metadata parser.
- the mesh video-related metadata acquired by the receiving processing unit can be in the form of a signaling table.
- a decapsulation processing unit can decapsulate mesh video data in a file format received from a receiving processing unit.
- the decapsulation processing unit can decapsulate files according to ISOBMFF, etc., to obtain a mesh video bitstream or mesh video related metadata (metadata bitstream).
- the obtained mesh video bitstream can be transmitted to a mesh video decoder, and the obtained mesh video related metadata (metadata bitstream) can be transmitted to a metadata processing unit.
- the mesh video bitstream may include metadata (metadata bitstream).
- the metadata processing unit may be included in the mesh video decoder, or may be configured as a separate component/module.
- the mesh video related metadata obtained by the decapsulation processing unit may be in the form of a box or track within a file format. If necessary, the decapsulation processing unit may receive metadata required for decapsulation from the metadata processing unit.
- Mesh video related metadata can be passed to a Mesh video decoder for use in the Mesh video decoding process, or passed to a renderer for use in the Mesh video rendering process.
- the mesh video decoder can receive a bitstream as input and perform operations corresponding to the operations of the mesh video encoder to decode the video/image.
- the decoded mesh video can be displayed through the display unit.
- the user can view all or part of the rendered result through a VR/AR display or a general display.
- the feedback process may include a process of transmitting various feedback information that may be acquired during the rendering/display process to the transmitter or to the decoder of the receiver. Interactivity may be provided in mesh video consumption through the feedback process. According to an embodiment, head orientation information, viewport information indicating an area that the user is currently viewing, etc. may be transmitted during the feedback process. According to an embodiment, the user may interact with things implemented in the VR/AR/MR/autonomous driving environment, in which case information related to the interaction may be transmitted to the transmitter or the service provider during the feedback process. Depending on the embodiment, the feedback process may not be performed.
- Head orientation information can mean information about the user's head position, angle, movement, etc. Based on this information, information about the area the user is currently viewing within the mesh video, i.e. viewport information, can be calculated.
- Viewport information can be information about the area that the current user is viewing in the Mesh video. This can be used to perform gaze analysis to determine how the user consumes the Mesh video, which area of the Mesh video they gaze at and for how long. The gaze analysis can be performed on the receiving side and transmitted to the transmitting side through a feedback channel.
- Devices such as VR/AR/MR displays can extract the viewport area based on the user's head position/orientation, the vertical or horizontal FOV supported by the device, etc.
- the aforementioned feedback information may be consumed by the receiver as well as transmitted to the transmitter. That is, the decoding, rendering, etc. processes of the receiver may be performed using the aforementioned feedback information. For example, only the mesh video for the area currently being viewed by the user may be preferentially decoded and rendered using head orientation information and/or viewport information.
- Dynamic mesh video compression is a method for processing mesh connection information and properties that change over time, and it can perform lossy and lossless compression for various applications such as real-time communication, storage, free-viewpoint video, and AR/VR.
- the dynamic mesh video compression method described below is based on MPEG's V-Mesh method.
- picture/frame can generally mean a unit representing one video image of a specific time period.
- a pixel or pel can mean the smallest unit that constitutes a picture (or image).
- a 'sample' can be used as a term corresponding to a pixel.
- a sample can generally represent a pixel or a pixel value, and can represent only a pixel/pixel value of a luma component, only a pixel/pixel value of a chroma component, or only a pixel/pixel value of a depth component.
- a unit may represent a basic unit of image processing.
- a unit may include at least one of a specific region of a picture and information related to the region.
- a unit may be used interchangeably with terms such as block or area, depending on the case.
- an MxN block may include a set (or array) of samples (or sample array) or transform coefficients consisting of M columns and N rows.
- Video-based dynamic mesh compression (V-Mesh) compression method can provide a method of compressing dynamic mesh video data based on 2D video codecs such as HEVC and VVC.
- V-Mesh compression process the following data is received as input and compression is performed.
- Input mesh Contains the 3D coordinates (geometry) of the vertices that make up the mesh, normal information for each vertex, mapping information that maps the mesh surface to a 2D plane, connection information between the vertices that make up the surface, etc.
- the mesh surface can be expressed as triangles or more polygons, and connection information between the vertices that make up each surface is stored according to a set shape.
- the input mesh can be saved in the OBJ file format.
- Attribute map (Hereinafter, texture map is also used with the same meaning): Contains information on the properties (color, normal, displacement, etc.) of the mesh, and stores data in the form of mapping the surface of the mesh onto a 2D image. Mapping which part (surface or vertex) of the mesh each data of this attribute map corresponds to is based on the mapping information included in the input mesh. Since the attribute map has data for each frame of the mesh video, it can also be expressed as an attribute map video (or attribute for short).
- the attribute map in the V-Mesh compression method mainly contains the color information of the mesh, and is stored in an image file format (PNG, BMP, etc.).
- Material Library File Contains information about the material properties used in the mesh, and in particular, information that links the input mesh to its corresponding attribute map. It is saved in the Wavefront Material Template Library (MTL) file format.
- TTL Wavefront Material Template Library
- the following data and information can be generated through the compression process.
- Base mesh The input mesh is simplified (decimated) through a preprocessing process to express the objects of the input mesh using the minimum number of vertices determined by the user's criteria.
- Displacement This is displacement information used to express the input mesh as similarly as possible to the base mesh, and is expressed in the form of three-dimensional coordinates.
- Atlas information This is metadata required to reconstruct the mesh using the base mesh, displacement, and attribute map information. This can be created and utilized as a sub-unit (sub-mesh, patch, etc.) that constitutes the mesh.
- FIGS. 2 to 7 a method for encoding mesh location information (vertex) is described, and referring to FIGS. 6-10, etc., a method for encoding attribute information (attribute map) by restoring mesh location information is described.
- Figure 2 illustrates a V-MESH compression method according to embodiments.
- Fig. 2 shows the encoding process of Fig. 1, and the encoding process may include a pre-processing and an encoding process.
- the encoder of Fig. 1 may include a pre-processor (200) and an encoder (201) as in Fig. 2.
- the transmitting device of Fig. 1 may be broadly referred to as an encoder, and the dynamic mesh video encoder of Fig. 1 may be referred to as an encoder.
- the V-Mesh compression method may include a pre-processing (200) and an encoding (201) process as in Fig. 2.
- the pre-processor of Fig. 2 may be located in front of the encoder of Fig. 2.
- the pre-processor and the encoder of Fig. 2 may be referred to as one encoder.
- the pre-processor can receive a static dynamic mesh and/or an attribute map.
- the pre-processor can generate a base mesh and/or displacement through preprocessing.
- the pre-processor can receive feedback information from an encoder and generate the base mesh and/or displacement based on the feedback information.
- An encoder can receive a base mesh, a displacement mesh, a static dynamic mesh, and/or an attribute map.
- the encoder can encode mesh-related data to generate a compressed bitstream.
- FIG. 3 illustrates pre-processing of V-MESH compression according to embodiments.
- Figure 3 shows the configuration and operation of the pre-processor of Figure 2.
- Fig. 3 shows a process of performing preprocessing on an input mesh.
- the preprocessing process (200) can largely include four steps: 1) GoF (Group of Frame) generation, 2) Mesh Decimation, 3) UV parameterization, and 4) Fitting subdivision surface (300).
- the preprocessor (200) can receive an input mesh, generate a displacement and/or base mesh, and transmit the generated mesh to the encoder (201).
- the preprocessor (200) can transmit GoF information related to GoF generation to the encoder (201).
- GoF Generation This is the process of generating a reference structure for mesh data. If the number of vertices, the number of texture coordinates, the vertex connection information, and the texture coordinate connection information of the mesh of the previous frame and the current mesh are all the same, the previous frame can be set as the reference frame. In other words, if only the vertex coordinate values are different between the current input mesh and the reference input mesh, inter frame encoding can be performed. Otherwise, the frame performs intra frame encoding.
- Mesh Decimation This is the process of simplifying the input mesh to create a simplified mesh, or base mesh. After selecting vertices to be removed from the original mesh based on criteria defined by the user, the selected vertices and triangles connected to the selected vertices can be removed.
- the input mesh (voxelized), target triangle ratio (TTR), and minimum triangle component (CCCount) information are passed as input, and the simplified mesh (decimated mesh) can be obtained as output.
- the simplified mesh (decimated mesh) can be obtained as output.
- connected triangle components smaller than the set minimum triangle component (CCCount) can be removed.
- UV parameterization This is the process of mapping a 3D surface to a texture domain for a decimated mesh. Parameterization can be performed using the UVAtlas tool. Through this process, mapping information is generated that shows where each vertex of the decimated mesh can be mapped to on a 2D image. The mapping information is expressed and saved as texture coordinates, and the final base mesh is generated through this process.
- Fitting subdivision surface This is the process of performing subdivision on a simplified mesh.
- a user-defined method such as the mid-edge method, can be applied as the subdivision method.
- the fitting process is performed so that the input mesh and the mesh on which subdivision is performed are similar to each other.
- Figure 4 illustrates a mid-edge subdivision method according to embodiments.
- Figure 4 shows the mid-edge method of the fitting subdivision surface described in Figure 3.
- an original mesh including four vertices is subdivided to create a sub-mesh.
- a sub-mesh can be created by creating a new vertex in the middle of an edge between vertices.
- the fitted subdivided mesh When a fitted subdivided mesh (hereinafter referred to as the fitted subdivided mesh) is generated, displacement is calculated using this result and a pre-compressed and decoded base mesh (hereinafter referred to as the reconstructed base mesh). That is, the reconstructed base mesh is subdivided in the same way as the fitting subdivision surface.
- the difference in position of each vertex between this result and the fitted subdivided mesh is the displacement for each vertex. Since the displacement represents the position difference in three-dimensional space, it is also expressed as a value in the (x, y, z) space of the Cartesian coordinate system.
- the (x, y, z) coordinate values can be converted to (normal, tangential, bi-tangential) coordinate values in the local coordinate system.
- Figure 5 shows a displacement generation process according to embodiments.
- Fig. 5 illustrates in detail the displacement calculation method of the fitting subdivision surface (300) as described in Fig. 4.
- An encoder and/or pre-processor may include 1) a subdivision unit, 2) a local coordinate system calculation unit, and 3) a displacement calculation unit.
- the subdivision unit may receive a reconstructed base mesh and generate a subdivided reconstructed base mesh.
- the local coordinate system calculation unit may receive a fitted subdivision mesh and a subdivided reconstructed base mesh, and transform a coordinate system of the meshes into a local coordinate system.
- the local coordinate system calculation operation may be optional.
- the displacement calculation unit may calculate a positional difference between the fitted subdivision mesh and the subdivided reconstructed base mesh. For example, a positional difference value between vertices of two input meshes may be generated. The vertex positional difference value becomes a displacement.
- the method and device for transmitting point cloud data can encode the point cloud as follows.
- the point cloud data (which may be referred to as point cloud for short) according to the embodiments can refer to data including vertex coordinates and color information.
- the point cloud is a term including mesh data, and in this document, the point cloud and mesh data can be used interchangeably.
- the V-Mesh compression (decompression) method may include intra frame encoding (Fig. 6) and inter frame encoding (Fig. 7).
- intra frame encoding or inter frame encoding is performed.
- the data to be compressed can be a base mesh, displacement, attribute map, etc.
- the data to be compressed can be a displacement, an attribute map, and a motion field between a reference base mesh and a current base mesh.
- Figure 6 illustrates an intra-frame encoding process of a V-MESH compression method according to embodiments.
- the encoding process of Fig. 6 details the encoding of Fig. 1. That is, it shows the configuration of an encoder when the encoding of Fig. 1 is an intra-frame method.
- the encoder of Fig. 6 may include a preprocessor (200) and/or an encoder (201).
- the preprocessor can receive an input mesh and perform the preprocessing described above.
- the preprocessing can generate a base mesh and/or a fitted subdivided mesh.
- the quantizer can quantize the base mesh and/or the fitted subdivided mesh.
- the static mesh encoder can encode the static mesh.
- the static mesh encoder can generate a bitstream including the encoded base mesh.
- the static mesh decoder can decode the encoded static mesh.
- the inverse quantizer can inversely quantize the quantized static mesh.
- the displacement calculation unit can receive the restored static mesh and generate displacement, which is a position difference, based on the fitted subdivided mesh.
- the forward linear lifting unit can receive the displacement and generate lifting coefficients.
- the quantizer can quantize the lifting coefficients.
- the image packing unit can pack an image based on the quantized lifting coefficients.
- a video encoder can encode a packed image.
- a video decoder decodes an encoded video.
- An image unpacker can unpack a packed image.
- An inverse quantizer can inversely quantize an image.
- An inverse linear lifting unit applies inverse lifting to an image to generate a reconstructed displacement.
- a mesh restoration unit restores a warped mesh using the reconstructed displacement and the reconstructed base mesh.
- An attribute transfer unit receives an input mesh and/or an input attribute map, and generates an attribute map based on the reconstructed warped mesh.
- a push-pull padding unit can pad data in an attribute map based on a push-pull method.
- a color space transformation unit can transform a space of a color component, which is an attribute.
- a video encoder can encode an attribute.
- a multiplexer can generate a bitstream by multiplexing a compressed base mesh, a compressed displacement, and
- Figure 7 illustrates an inter-frame encoding process of a V-MESH compression method according to embodiments.
- the encoding process of Fig. 7 illustrates the encoding of Fig. 1 in detail. That is, it illustrates the configuration of an encoder when the encoding of Fig. 1 is in an inter-frame manner.
- the encoder of Fig. 7 may include a preprocessor (200) and/or an encoder (201).
- the motion encoder can encode motion based on the restored quantized reference base mesh.
- the base mesh restoration unit can restore the base mesh based on the restored quantized reference base mesh.
- the encoder of Fig. 6 generates a bitstream by compressing the base mesh, displacement, and attributes within a frame
- the encoder of Fig. 7 generates a bitstream by compressing the motion, displacement, and attributes between the current frame and the reference frame.
- the encoding method includes base mesh encoding (intra encoding).
- base mesh encoding intra frame encoding
- a base mesh generated in a preprocessing process can be encoded using a static mesh compression technique after going through a quantization process.
- V-Mesh compression method for example, Draco technology is applied, and vertex position information, mapping information (texture coordinates), vertex connection information, etc. of the base mesh become compression targets.
- the encoding method may include motion field encoding (inter encoding).
- Inter frame encoding may be performed when a reference mesh and a current input mesh have a one-to-one correspondence of vertices and only the position information of the vertices is different.
- the difference between the vertices of the reference base mesh and the current base mesh, i.e., the motion field may be calculated and this information may be encoded.
- the reference base mesh is the result of quantizing the already decoded base mesh data and is determined according to the reference frame index determined in the GoF generation.
- the motion field may be encoded as a value.
- the motion fields of the restored vertices among the vertices connected to the current vertex may be averaged to calculate the predicted motion field, and this predicted motion field
- the residual motion field which is the difference between the value and the motion field value of the current vertex, can be encoded. This value can be encoded using entropy coding.
- the process of encoding the displacement and attribute map, excluding the motion field encoding process of the inter frame encoding, is the same as the structure of the intra frame encoding method except for the base mesh encoding.
- Figure 8 shows a lifting conversion process for displacement according to embodiments.
- Figure 9 illustrates a process of packing transformation coefficients according to embodiments into a 2D image.
- Figures 8-9 illustrate the process of transforming the displacement of the encoding process of Figure 6-7 and the process of packing the transform coefficients, respectively.
- the encoding method according to the embodiments includes displacement encoding.
- a reconstructed base mesh is generated through restoration and dequantization, and the displacement between the result of performing subdivision on the reconstructed base mesh and the fitted subdivided mesh generated through the fitting subdivision surface can be calculated.
- a data transform process such as wavelet transform can be applied to the displacement information.
- Fig. 8 shows a process of transforming displacement information using a lifting transform in V-Mesh.
- the transform coefficients generated through the transform process are quantized and then packed into a 2D image as shown in Fig. 9.
- the horizontal number of blocks is fixed to 16, but the vertical number of blocks can be determined according to the number of vertices of the subdivided base mesh.
- the transform coefficients can be packed by sorting them with a Morton code within a block.
- the packed images generate a displacement video for every GoF unit, and the displacement video can be encoded using an existing video compression codec.
- the base mesh (original) may include vertices and edges for LoD0.
- the first sub-division mesh generated by dividing the base mesh includes vertices generated by further dividing edges of the base mesh.
- the first sub-division mesh includes vertices for LoD0 and vertices for LoD1.
- LoD1 includes the sub-divided vertices and the vertices (LoD0) of the base mesh.
- the first sub-division mesh may be generated by dividing the first sub-division mesh.
- the second sub-division mesh includes LoD2.
- LoD2 includes the base mesh vertices (LoD0), LoD1 including vertices additionally generated from LoD0, and vertices additionally divided from LoD1.
- LoD is a level indicating the degree of detail (Level of Detail), and as the index of the level increases, the distance between vertices becomes closer and the level of detail increases.
- LoD N includes the vertices included in the previous LoDN-1 as they are.
- the mesh can be encoded based on a prediction and/or update method. Instead of still encoding information about the current LoD N, a residual value between the previous LoD N-1 can be generated, and the mesh can be encoded using the residual value to reduce the size of the bitstream.
- the prediction process means the operation of predicting the current vertex v through the previous vertices v1, v2. Since adjacent subdivision meshes have similar data, efficient encoding can be achieved by utilizing this property.
- the current vertex position information is predicted as the residual for the previous vertex position information, and the previous vertex position information is updated through the residual.
- the vertices have coefficients generated through lifting transformation.
- the coefficients of the vertices related to lifting transformation can be packed into an image and encoded.
- Figure 10 illustrates an attribute transfer process of a V-MESH compression method according to embodiments.
- Figure 10 shows the detailed operation of attribute transfer of encoding such as Figure 6-7.
- Encoding according to the embodiments includes attribute map encoding.
- Information about the input mesh is compressed through base mesh encoding, motion field encoding, and displacement encoding.
- the compressed input mesh is restored through base mesh decoding (intra frame), motion field decoding (inter frame), and displacement video decoding, and the restored result, the reconstructed deformed mesh (hereinafter referred to as Recon. deformed mesh), is used to compress the input attribute map as shown in FIGS. 6 and 7.
- the reconstructed deformed mesh (Recon. deformed mesh) has position information of vertices, texture coordinates, and corresponding connection information, but does not have color information corresponding to the texture coordinates. Therefore, as shown in Fig. 10, in the V-Mesh compression method, a new attribute map having color information corresponding to the texture coordinates of the reconstructed deformed mesh is created through the attribute transfer process.
- Attribute transfer first checks whether each point P(u, v) in the 2D texture domain belongs to the texture triangle of the reconstructed deformed mesh, and if it exists in the texture triangle T, calculates the barycentric coordinate ( ⁇ , ⁇ ⁇ ) of P(u, v) according to the triangle T. Then, using the 3D vertex position and ( ⁇ , ⁇ ⁇ ) of triangle T, calculate the 3D coordinate M(x, y, z) of P(u, v). Find the vertex coordinate M'(x', y', z') that corresponds to the position most similar to the calculated M(x, y, z) in the input mesh domain and the triangle T' that contains this point.
- the center of mass coordinates ( ⁇ ', ⁇ ', ⁇ ') of M'(x', y', z') are calculated in this triangle T'.
- the texture coordinates (u', v') are calculated, and the color information corresponding to these coordinates is searched for in the input attribute map.
- the color information found in this way is immediately assigned to the (u, v) pixel location in the new attribute map. If P(u, v) does not belong to any triangle, the pixel at that location in the new attribute map can be filled with a color value using a padding algorithm such as the push-pull algorithm.
- the new attribute map generated through attribute transfer is grouped into GoF units to form an attribute map video, which is then compressed using a video codec.
- the decoding process of Fig. 1 can perform the reverse process of the corresponding process of the encoding process of Fig. 1.
- the specific decoding process is as follows.
- Figure 11 illustrates an intra frame decoding process of a V-MESH compression method according to embodiments.
- Fig. 11 shows the configuration and operation of a decoder of a receiving device such as Fig. 1.
- Fig. 11 shows the intra decoding process of V-Mesh technology.
- the input bitstream can be separated into a mesh sub-stream, a displacement sub-stream, an attribute map sub-stream, and a sub-stream containing patch information of the mesh such as V3C/V-PCC.
- the mesh sub-stream is decoded by a decoder of a static mesh codec used in encoding, such as Google Draco, so that the connection information, vertex geometry information, and vertex texture coordinates of the base mesh can be restored.
- the displacement sub-stream is decoded into a displacement video by a decoder of a video compression codec used in encoding, and goes through image unpacking, inverse quantization, and inverse transform processes to restore displacement information for each vertex. Inverse quantization is applied to the restored base mesh, and this result is combined with the restored displacement information to generate the final decoded mesh.
- the attribute map sub-stream is decoded through the decoder of the video compression codec used in encoding, and then restored to the final attribute map through processes such as color format conversion.
- the restored decoded mesh and decoded attribute map can be utilized by the receiver as final mesh data that can be utilized by the user.
- the bitstream includes patch information, a mesh substream, a displacement substream, and an attribute map substream.
- the substream is interpreted as a term referring to some bitstreams included in the bitstream.
- the bitstream includes patch information (data), mesh information (data), displacement information (data), and attribute cap information (data).
- the decoder performs the following decoding operations within a frame.
- the static mesh decoder decodes the mesh to generate a reconstructed quantized base mesh, and the inverse quantizer inversely applies the quantization parameters of the quantizer to generate the reconstructed base mesh.
- the video decoder decodes the displacement, the unpacker unpacks the decoded video image, and the inverse quantizer inversely quantizes the quantized image.
- the linear lifting inverse transform applies a lifting transform in the reverse process of the encoder to generate the reconstructed displacement.
- the mesh restoration unit generates a warped mesh based on the base mesh and the displacement.
- the video decoder decodes an attribute map, and the color transformation unit transforms a color format and/or space to generate a decoded attribute map.
- Figure 12 shows the inter-frame decoding process of the V-MESH compression method.
- Fig. 12 shows the configuration and operation of a decoder of a receiving device such as Fig. 1.
- Fig. 12 shows the inter decoding process of V-Mesh technology.
- the input bitstream can be separated into a motion sub-stream, a displacement sub-stream, an attribute sub-stream, and a sub-stream containing patch information of the mesh such as V3C/V-PCC.
- the motion sub-stream is decoded through the entropy decoding and inverse prediction processes, and the reconstructed motion information is combined with the already reconstructed reference base mesh to generate a reconstructed quantized base mesh for the current frame.
- the result of applying inverse quantization to this is combined with the displacement information reconstructed in the same way as the intra decoding described above to generate the final decoded mesh.
- the attribute map sub-stream is decoded in the same way as the intra decoding.
- the reconstructed decoded mesh and the decoded attribute map can be utilized by the receiver as the final mesh data that can be utilized by the user.
- the bitstream includes motion, displacement, and attribute maps. Since inter-frame decoding is performed, a process of decoding inter-frame motion information is further included. The motion is decoded, and a restored quantized base mesh for the motion is generated based on the reference base mesh to generate the restored base mesh.
- Fig. 12 which is the same as Fig. 11, refer to the description of Fig. 11.
- Fig. 13 shows a point cloud data transmission device according to embodiments.
- Fig. 13 corresponds to the transmitting device (100), the dynamic mesh video encoder (102), the Fig. 2 encoder (pre-processor and encoder), and/or the transmitting encoding device corresponding thereto of Fig. 1.
- Each component of Fig. 13 corresponds to hardware, software, a processor, and/or a combination thereof.
- the operation process of a transmitter for compressing and transmitting dynamic mesh data using V-Mesh compression technology can be as shown in Fig. 13.
- the mesh preprocessor receives the original mesh as input and generates a simplified mesh (decimated mesh). Simplification can be performed based on the target number of vertices or the target number of polygons that constitute the mesh. Parameterization can be performed to generate texture coordinates and texture connection information per vertex for the simplified mesh. In addition, a task of quantizing floating-point type mesh information into fixed-point type can be performed. This result can be encoded as a base mesh through a static mesh encoding unit. The mesh preprocessor can perform mesh subdivision on the base mesh to generate additional vertices. Depending on the subdivision method, vertex connection information, texture coordinates, and texture coordinate connection information including the added vertices can be generated. The subdivided mesh can be fitted by adjusting the vertex positions to be similar to the original mesh, thereby generating a fitted subdivided mesh.
- the base mesh generated through the mesh preprocessing unit can be compressed through the static mesh encoding unit.
- encoding can be performed on the connection information, vertex geometry information, vertex texture information, normal information, etc. of the base mesh.
- the base mesh bitstream generated through encoding is transmitted to the multiplexing unit.
- a motion vector encoding unit When performing inter encoding for the corresponding mesh frame, a motion vector encoding unit is performed, which can calculate a motion vector between the two meshes using a base mesh and a reference reconstruction base mesh as inputs, and encode the value.
- the motion vector encoding unit can perform prediction based on connection information using a previously encoded/decoded motion vector as a predictor, and encode a residual motion vector obtained by subtracting the predicted motion vector from the current motion vector.
- the motion vector bitstream generated through encoding is transmitted to the multiplexing unit.
- the encoded base mesh and motion vectors can be used to generate a restored base mesh through the base mesh restoration unit.
- the displacement vector calculator can perform mesh refinement on the restored base mesh.
- the displacement vector can be calculated as the difference value of the vertex position between the refined restored base mesh and the fitted subdivision mesh generated in the preprocessing unit. As a result, the displacement vector can be calculated as many as the number of vertices of the refined mesh.
- the displacement vector calculation unit can convert the displacement vector calculated in the 3D Cartesian coordinate system into the local coordinate system based on the normal vector of each vertex.
- the displacement vector video generator can transform the displacement vector for effective encoding.
- the transform can be performed by a lifting transform, a wavelet transform, etc., depending on the embodiment.
- quantization can be performed on the transformed displacement vector value, that is, the transform coefficient. Different quantization parameters can be applied to each axis of the transform coefficient, and the quantization parameters can be derived by the promise of the encoder/decoder.
- the transformed and quantized displacement vector information can be packed into a 2D image.
- the packed 2D images can be bundled for each frame to generate a displacement vector video, and the displacement vector video can be generated for each GoF (Group of Frame) unit of the input mesh.
- GoF Group of Frame
- a displacement vector video encoder can encode the generated displacement vector video using a video compression codec.
- the generated displacement vector video bitstream is transmitted to a multiplexer.
- the displacement vector restored through the displacement vector restorer and the base mesh restored through the base mesh restorer and refined are restored through the mesh restorer, and the restored mesh has restored vertices, connection information between vertices, texture coordinates, and connection information between texture coordinates.
- the texture map of the original mesh can be regenerated as a texture map for the restored mesh through the texture map video generation unit.
- the color information per vertex of the texture map of the original mesh can be assigned to the texture coordinates of the restored mesh.
- the regenerated texture maps for each frame can be grouped by GoF unit to generate a texture map video.
- the generated texture map video can be encoded using a video compression codec through a texture map video encoding unit.
- the texture map video bitstream generated through encoding is transmitted to a multiplexing unit.
- the generated motion vector bitstream, base mesh bitstream, displacement vector bitstream and texture map bitstream may be multiplexed into a single bitstream and transmitted to a receiver through a transmitter.
- the generated motion vector bitstream, base mesh bitstream, displacement vector bitstream and texture map bitstream may be generated into a file with one or more track data or encapsulated into segments and transmitted to a receiver through a transmitter.
- a transmitting device can encode a mesh in an intra-frame or inter-frame manner.
- a transmitting device according to intra-encoding can generate a base mesh, a displacement vector (displacement), and a texture map (attribute map).
- a transmitting device according to inter-encoding can generate a motion vector (motion), a base mesh, a displacement vector (displacement), and a texture map (attribute map).
- a texture map obtained from a data input unit is generated and encoded based on a restored mesh.
- Displacement is generated and encoded through a difference in vertex positions between the base mesh and the divided mesh.
- the base mesh is generated by preprocessing, simplifying, and encoding an original mesh.
- Motion is generated as a motion vector for a mesh of a current frame based on a reference base mesh of a previous frame.
- Fig. 14 shows a point cloud data receiving device according to embodiments.
- Fig. 14 corresponds to the receiving device (110) of Fig. 1, the dynamic mesh video decoder (113), the decoder of Figs. 11-12, and/or the receiving decoding device corresponding thereto.
- Each component of Fig. 14 corresponds to hardware, software, a processor, and/or a combination thereof.
- the receiving (decoding) operation of Fig. 14 can follow the reverse process of the corresponding process of the transmitting (encoding) operation of Fig. 13.
- the received Mesh bitstream is demultiplexed into a compressed motion vector bitstream or base mesh bitstream, displacement vector bitstream, and texture map bitstream after file/segment decapsulation.
- the motion vector decoding unit can perform decoding on the motion vector bitstream.
- the final motion vector can be reconstructed by adding the previously decoded motion vector to the residual motion vector decoded from the bitstream using the previously decoded motion vector as a predictor.
- the base mesh bitstream can restore the connection information, vertex geometry information, texture coordinates, normal information, etc. of the base mesh through the static mesh encoding unit.
- the base mesh restoration unit if the current mesh has inter-screen encoding applied, the current base mesh can be restored by adding the decoded motion vector to the reference base mesh and then performing inverse quantization. If the current mesh has intra-screen encoding applied, the decoded mesh can be dequantized through the static mesh decoding unit to generate a restored base mesh.
- the displacement vector bitstream can be decoded as a video bitstream using a video codec in a displacement vector video decoder.
- displacement vector transformation coefficients are extracted from the decoded displacement vector video, and the displacement vector is restored through the inverse quantization and inverse transformation processes. If the restored displacement vector is a value in the local coordinate system, a process of inverse transformation to the Cartesian coordinate system can be performed.
- additional vertices can be generated by performing subdivision on the restored base mesh.
- vertex connection information including the added vertices, texture coordinates, and texture coordinate connection information can be generated.
- the subdivided restored base mesh can be combined with the restored displacement vector to generate the final restored mesh.
- the texture map bitstream can be decoded as a video bitstream using a video codec in a texture map video decoding unit.
- the restored texture map has color information for each vertex contained in the restored mesh, and the color value of each vertex can be obtained from the texture map using the texture coordinates of each vertex.
- the restored mesh and texture map are shown to the user through a rendering process using a mesh data renderer, etc.
- a receiving device can decode a mesh in an intra-frame or inter-frame manner.
- a receiving device according to intra-decoding can receive a base mesh, a displacement vector (displacement), and a texture map (attribute map), and can decode a restoration mesh and a restoration texture map to render mesh data.
- a receiving device according to inter-decoding can receive a motion vector (motion), a base mesh, a displacement vector (displacement), and a texture map (attribute map), and can decode a restoration mesh and a restoration texture map to render mesh data.
- the point cloud data transmission device and method according to the embodiments can encode mesh data and transmit a bitstream including the encoded mesh data.
- the point cloud data reception device and method according to the embodiments can receive a bitstream including mesh data and decode the mesh data.
- the point cloud data transmission and reception method/device according to the embodiments may be referred to as the method/device according to the embodiments.
- the point cloud data transmission and reception method/device according to the embodiments may also be referred to as the mesh data transmission and reception method/device according to the embodiments.
- the point cloud data transmission method/device is interpreted as a term including a Fig. 1 transmitting device (100), a dynamic mesh video acquisition unit (101), a dynamic mesh video encoder (102), a file/segment encapsulator (103), a transmitter (104), a Fig. 2 pre-processor (200), an encoder (201), a Fig. 6-7 encoder, a Fig. 13 transmitting device, a Fig. 15-16 encoder, a Fig. 37 transmitting method, etc.
- the point cloud data receiving method/device is interpreted as a term including a receiving device (110) of Fig. 1, a receiver (111), a file/segment decapsulator (112), a dynamic mesh video decoder (113), a renderer (114), a decoder of Figs. 11-12, a receiving device of Fig. 14, a decoder of Figs. 26-27, a receiving method of Fig. 38, etc.
- the method/device according to the embodiments can include and perform a method for displacement video packing with YUV 420 format.
- the embodiments relate to Video-based Dynamic Mesh Compression (V-DMC), a method for compressing 3D dynamic mesh data using an existing 2D video codec.
- V-DMC decoder a displacement vector between a Mesh restored from a Base Mesh and a Mesh fitted in a preprocessing step is calculated, transformed and quantized, and then encoded/decoded as a displacement vector bitstream.
- the embodiments propose a method using the YUV 4:2:0 format in the image packing step for encoding/decoding the transformed displacement vector using a video codec in the above process.
- a sampling method and a signaling method are proposed so that points at optimized positions for each component of the transformed displacement vector can be sampled and transmitted. Since the YUV 4:2:0 format is used in most video codec profiles, not only is compatibility good, but also efficient bit savings and better image quality mesh data can be obtained in terms of performance.
- the embodiments relate to Video-based Dynamic Mesh Compression (V-DMC), a method of compressing 3D dynamic mesh data using an existing 2D video codec.
- V-DMC Video-based Dynamic Mesh Compression
- the embodiments propose a method of encoding/decoding displacement vector units in displacement vector transformation and quantization steps, as well as syntax and semantics information related thereto.
- the operations of a transmitter and receiver to which this is applied are described.
- V-DMC technology has been actively standardized since the CfP Response in April 2022.
- displacement vector information is expressed in the form of a 3D vector or a 1D vector, compressed, and transmitted.
- images are packed in the YUV 4:4:4 format or the YUV 4:0:0 format. If the YUV 4:4:4 format is used in the image packing process, it has the disadvantage of large capacity because subsampling is not performed.
- the YUV 4:0:0 format is used, the capacity is greatly reduced, but the image quality is poor because the U, V (tangential, bi-tangential) components are not used and are discarded. Therefore, we propose a method of packing images using the YUV 4:2:0 format, which is efficient in terms of both capacity and image quality compared to the two formats currently used in the V-DMC technology and is the most widely used format in the current video codec.
- the sampling method of U, V Components may be fixed to one method at present. This may be inefficient because a better sampling method may exist depending on the content or the sampling area. Therefore, we propose a method to perform sampling by selecting the optimal value in the process of mapping each tangent, bi-tangent component to the U, V channel.
- the embodiments include, as a solution for solving these technical problems, a method of using the YUV 4:2:0 format in the image packing step for video encoding/decoding of a displacement vector, and/or a method of sampling data per component of a displacement vector and a signaling method.
- V-DMC can also be referred to as the term V-Mesh and is an expression used with the same meaning.
- Figure 15 illustrates a dynamic mesh encoder according to embodiments.
- Fig. 15 shows the configuration of a dynamic mesh encoder corresponding to a Fig. 1 transmitting device (100), a dynamic mesh video obtaining unit (101), a dynamic mesh video encoder (102), a file/segment encapsulator (103), a transmitter (104), a Fig. 2 pre-processor (200), an encoder (201), Figs. 6-7 encoders, Fig. 13 transmitting device, Figs. 15-16 encoders, Fig. 37 transmitting method, etc.
- Each component of Fig. 15 may correspond to hardware, software, a processor, and/or a combination thereof.
- the base mesh is generated by simplifying and parameterizing the original mesh.
- the generated base mesh is quantized, passes through a static mesh encoder, and is transmitted as a base mesh bit stream.
- the mesh data after the process of refining and fitting the simplified mesh from the original mesh and the mesh data that restores the previously encoded mesh are compared to calculate the displacement vector, which is the difference between each vertex.
- the displacement vector coordinate system is transformed into a local coordinate system, and the transformed vector is transformed and quantized into a displacement vector coefficient, and then encoded to transmit the displacement vector bitstream.
- the embodiments include a method of using the YUV 4:2:0 format in the displacement vector image packing unit as shown in Fig. 15, a method of sampling each component of the displacement vector, and a signaling method. The principle performed at each step is described in detail below.
- the displacement vector calculation unit calculates the vector between the fitted subdivided mesh and the restored base mesh, which is the mesh on which subdivision was performed. At this time, the displacement vectors can be calculated as many as the number of vertices of the subdivided mesh.
- the dynamic mesh video acquisition unit (101) can acquire the original mesh.
- the mesh simplification unit can simplify the vertices and connections between the vertices in the original mesh.
- the simplified original mesh can be called the base mesh.
- the mesh parameterization unit can generate texture coordinates and texture connection information for each vertex within the mesh.
- the mesh quantization unit quantizes the base mesh based on the quantization parameters.
- a dynamic mesh encoder can encode a base mesh using either an intra-frame method or an intra-frame method.
- the intra-frame method can generate a prediction value for a current mesh by referencing a mesh included in a frame, generate a residual value, and encode only the residual value to generate a base mesh bitstream.
- the mesh can be a static mesh that does not change over time.
- the inter-frame method can generate a prediction value by referencing a reference frame for the current frame, find a similar base mesh within the reference frame, generate a prediction value, generate a residual value, and encode only the residual value to generate a base mesh bitstream.
- the mesh is a dynamic mesh that changes over time, and a motion vector can be predicted and encoded. In order to encode detailed vertex-related data like an original mesh other than the base mesh separately from the base mesh, the following procedure is performed.
- the mesh subdivision unit further subdivides the simple base mesh into detailed vertices.
- the mesh fitting unit can reconstruct the mesh based on mesh connection information.
- the displacement vector coordinate system transformation part can use the previously calculated vertex displacement vector as is in the canonical coordinate system (x, y, z) or can be used by transforming it into a local coordinate system (normal, tangential, bi-tangential).
- the displacement vector coordinate system transformation part can determine the transformation coordinate system by the encoder/decoder agreement, and can signal the displacement vector coordinate system transformation flag (asps_vmc_ext_displacement_coordinate_system). If the syntax value is 0, the canonical coordinate system is used as is, and if it is 1, the transformation can be performed to the local coordinate system.
- Figure 16 shows a displacement vector encoding unit according to embodiments.
- Figure 16 illustrates the displacement vector encoding unit in Figure 15 in detail.
- the displacement vector encoding unit can perform displacement vector encoding for 2D video encoders such as H.264, HEVC, and VVC. Displacement vector transformation is performed, and the transformed displacement vector coefficients are quantized and packed into a 2D image so that encoding can be performed with a video codec.
- 2D video encoders such as H.264, HEVC, and VVC.
- Displacement vector transformation is performed, and the transformed displacement vector coefficients are quantized and packed into a 2D image so that encoding can be performed with a video codec.
- Fig. 16 The detailed process in Fig. 16 is described in detail below.
- the displacement vector transformation unit can transform the calculated vertex displacement vector (x, y, z) or the coordinate system transformed displacement vector (n, t, b) into displacement vector coefficients by performing linear lifting transformation, butterfly lifting transformation, etc.
- the displacement vector coefficient quantization unit can perform quantization on the displacement vector coefficient that has been converted by performing the displacement vector transformation unit in advance. Quantization can derive a quantized value (quant) for each channel by multiplying the displacement vector coefficient (value) by a scale and adding an offset, as in Equation 1. At this time, each channel can be x, y, z or n, t, b, respectively, according to the coordinate system of the displacement vector.
- the offset in Equation 1 is in units of sequence or frame, and can use a fixed value for each channel.
- the scale of Equation 1 can be determined by the quantization parameter (QP) and the level-specific scale (level_scale), as in Equation 2.
- Level_scale in Equation 2 can use values determined by frame or sequence unit for each level. Also, ⁇ , ⁇ , can be a parameter constant value determined in the encoder.
- the scale can have individual values set for each channel of the displacement vector.
- Figure 17 shows the structure of displacement vector coefficients according to embodiments.
- Figure 17 illustrates the structure of the displacement vector coefficient converted in Figure 16.
- the displacement vector coefficient packing part packs the quantized displacement vector coefficients into a 2D image of the size of W x H. Lifting transformation is performed from the vertices of the LoD of the high layer, so that the displacement vector coefficients of the low LoD are stored in the front of the packing image, and the displacement vector coefficients of the high LoD are stored in the back of the packing image.
- Figure 18 shows the displacement vector coefficient 2D image packing according to embodiments.
- the displacement vector coefficient of the 1D form of Fig. 17 can be configured as in Fig. 18.
- the size of bx ⁇ by can be configured as one block, and can be configured as L ⁇ M blocks determined according to the number of displacement vector coefficients N.
- packing can be performed as a 2D image of the size of W ⁇ H according to the 2D Morton code, zig-zag scan order, etc.
- the L ⁇ M displacement vector coefficient blocks can be packed into an image of the size of (bx*L) ⁇ (by*M) according to the order defined in the encoder/decoder.
- the packing can be performed sequentially in the scanning order from the R_0 (LoD 0) displacement vector coefficient block, and if the total size of the displacement vector coefficients is smaller than L ⁇ M, padding can be performed so that the displacement vector has the size of (bx*L) ⁇ (by*M) and filled as shown in Figure 4.
- the packing and padding can be performed in the reverse order of Figure 4 to pack a 2D image.
- L and M are determined based on the number of displacement vector coefficients (N), or L (or M) can be defined by the encoder/decoder agreement, and then M (or L) can be derived based on the number of displacement vector coefficients (N) as in Equation 3.
- Figure 19 shows the 2D image packing of displacement vector coefficients by LoD (Level of Detail) according to embodiments.
- packing of displacement vector coefficient blocks (bx ⁇ by) may be performed as in 19 to fit the CTU size of a 2D video encoder encoded for each LoD level. At this time, packing may be performed using the median value or the last displacement vector coefficient value of the image to fit the CTU size for each LoD.
- Figure 20 shows a 2D Moulton code-based packing according to embodiments.
- a single displacement vector coefficient block can have bx ⁇ by displacement vector coefficients packed within the block through a zig-zag scan sequence or a 2D Morton code sequence such as in Fig. 20.
- the displacement vector coefficients converted to the local coordinate system can configure a packing frame with Y, U, and V channels for each of the Normal, Tangential, and Bi-tangential components.
- formats such as YUV 4:4:4, YUV 4:2:0, and YUV 4:0:0 can be selected to perform image packing, and the displacement vector coefficients can be configured according to each format.
- the image packing format information ColdSpace_displacement_video
- Displacement vector coefficients per 4 vertex units for each format The sampling process can be performed, and the details can be as follows.
- Figure 21 shows a displacement vector coefficient packing method according to embodiments.
- Figure 21 illustrates a displacement vector coefficient packing method when using the YUV 4:4:4 format.
- the displacement vector coefficient packing section performs packing of the values of the normal, tangential, and bi-tangential components into the Y, U, and V channels, respectively.
- the N component includes N1 to N4, the N1 to N4 components are packed as is in the Y channel. If the T component is T1 to T4, the T1 to T4 components are packed as is in the U channel. If the B component is B1 to B4, the B1 to B4 components are packed as is in the V channel.
- Figure 22 shows a displacement vector coefficient packing method according to embodiments.
- Figure 22 illustrates a displacement vector coefficient packing method when using the YUV 4:0:0 format.
- Figure 23 shows a displacement vector coefficient packing method according to embodiments.
- Figure 23 illustrates a displacement vector coefficient packing method when using the YUV 4:2:0 format.
- Tangential and bi-tangential components can sample only one component out of four into the U and V channels, respectively.
- the encoder may select one component based on judgment, or sample the partial sum average of some components or the average value of all components. Alternatively, the values at fixed positions of each component may be sampled.
- sampling methods for tangential and bi-tangential components into U and V channels can be as follows: 1) selecting one optimal component, 2) selecting by the average of the optimal partial sums of components, 3) selecting by the average of all components.
- each T, B component the most optimal component can be selected and sampled as U, V channels.
- the optimal vertex can be determined by the encoder or can be a pre-arranged position.
- the average of the four vertices of each T, B component can be sampled as U, V channels.
- the sampled T, B of Fig. 23 are
- T can be (T1+T2+T3+T4)/4
- B can be (B1+B2+B3+B4)/4.
- the sampling method can be selected independently. Or, once the sampling method of the tangential component is determined, sampling of the bi-tangential component can be performed using the same sampling method.
- Figure 24 shows the overall level packing frame configuration according to embodiments.
- Displacement vector coefficients for each channel can be visualized to form an encoding unit in the form of a packing frame.
- the entire level in a mesh frame can be packed into one packing frame, or each LoD in the mesh frame can be packed into each packing frame.
- the asps_vmc_ext_displacement_LoD_packing_method syntax which means the index of the packing method in mesh sequence units, can be signaled, and the forms of the packing frame and channel derived from one mesh frame according to the packing method can be as follows: entire level packing frame configuration (Fig. 24), level-by-level packing frame configuration (Fig. 25).
- Each geometric axis (normal, tangential, bi-tangential) of the displacement vector coefficients of the entire level can be packed for each channel (Y Channel, U Channel, V Channel), and the entire packed channel can form a packing frame.
- Figure 25 shows a packing frame configuration by level according to embodiments.
- Each geometric axis (normal, tangential, bi-tangential) of the displacement vector coefficients at one level can be packed for each channel (Y Channel, U Channel, V Channel), and the channels packed at one level can form a packing frame.
- the size (w, h) packed for each channel of Y, U, and V may vary depending on the format in the same way as the method of configuring the overall frame packing above.
- the displacement vector image/video encoding unit can encode a 2D image packed through a displacement vector coefficient packing unit using a 2D video encoder such as H.264, HEVC, or VVC.
- Fig. 26 shows a dynamic mesh decoder according to embodiments.
- Fig. 26 shows the configuration of a dynamic mesh decoder corresponding to a Fig. 1 receiving device (110), a receiver (111), a file/segment decapsulator (112), a dynamic mesh video decoder (113), a renderer (114), a Fig. 11-12 decoder, a Fig. 14 receiving device, a Fig. 26-27 decoder, and a Fig. 38 receiving method.
- Each component of Fig. 26 may correspond to hardware, software, a processor, and/or a combination thereof.
- the decoder goes through a process of decoding each bitstream to restore the mesh.
- the base mesh is decoded by a motion vector or static mesh decoding unit depending on whether it is an inter or intra frame, and is then segmented to restore geometric information together with the decoded displacement vector information.
- the embodiments include a method of decoding a 2D image frame transmitted in a YUV 4:2:0 format by a displacement vector coefficient decoding unit by parsing a sampling method for each component of the displacement vector. The principle performed at each step is described in detail below.
- Figure 27 shows a displacement vector decoding unit according to embodiments.
- the displacement vector decoding unit of Fig. 26 receives a displacement vector bitstream in which a displacement vector is encoded from an encoding unit, performs decoding, and can restore a displacement vector through the process of Fig. 27.
- the process of Fig. 27 is described in detail below.
- the video decoding unit receives a displacement vector bitstream as input and performs decoding on a displacement vector coefficient image/video through a 2D video codec.
- the restored displacement vector coefficient video restored through the video decoding unit can perform displacement vector coefficient assignment corresponding to each vertex of the restored mesh by performing a displacement vector coefficient depacking unit for each frame.
- the displacement vector coefficient inverse packing part can perform inverse packing according to the scanning order defined by the decoder/subscriber agreement or the parsed scanning order in upper-level units (such as sequences, frames, etc.) from the restored displacement vector coefficient image corresponding to the current mesh frame.
- the displacement vector coefficient block packed according to a specific scanning order in units of bx X by, and the displacement vector coefficient packed according to a specific order (such as 2D Morton Code or Zig-zag scan) within one block can derive the displacement vector transformation coefficient of the k-th vertex according to the decoder/subscriber agreement or the sizes bx, by and L, M of the parsed block and the scanning order.
- Figure 28 shows a displacement vector coefficient inverse packing method according to embodiments.
- Figure 28 shows an example of a displacement vector coefficient inverse packing method using the YUV 4:4:4 format.
- the displacement vector coefficients of the restored Y, U, and V channels can be restored as Normal, Tangential, and Bi-tangential components, respectively, according to a specific order (displacement_scan_method) within the block.
- the data before encoding and the decoded result can be the same.
- Figure 29 shows a displacement vector coefficient inverse packing method according to embodiments.
- Figure 29 shows an example of a displacement vector coefficient inverse packing method using the YUV 4:0:0 format.
- the displacement vector coefficients of the restored Y channel can be restored as normal components according to a specific order (displacement_scan_method) within the block.
- Figure 30 shows a displacement vector coefficient inverse packing method according to embodiments.
- Figure 30 illustrates an example of a displacement vector coefficient inverse packing method using the YUV 4:2:0 format.
- the displacement vector coefficients of the restored Y, U, and V channels can be restored as Normal, Tangential, and Bi-tangential components, respectively, according to a specific order (displacement_scan_method) within the block.
- the t_smaple, b_sample syntax which indicates the optimal component sampling method selected by the encoder, can be parsed to perform restoration according to the values of the tangential and bi-tangential components and the restoration positions within the T, B channels.
- the displacement vector coefficients can be restored by performing depacking for each channel as in Fig. 30.
- the combination of each component before quantization of the displacement vector coordinates (n, t, b) for the four vertices restored in this way can be V1 (N1, 0, 0), V2 (N2, T2, 0), V3 (N3, 0, B3), and V4 (N4, 0, 0).
- Figure 31 shows a displacement vector coefficient inverse packing method according to embodiments.
- Figure 31 illustrates an example of a displacement vector coefficient inverse packing method using the YUV 4:2:0 format.
- the transmitted average value (T or B) can be positioned at the position of the components used for the partial sum by referring to the syntax table.
- the combination of each component before quantization of the displacement vector coordinates (n, t, b) for the four vertices restored in this way can be V1 (N1, T, 0), V2 (N2, T, 0), V3 (N3, 0, B), and V4 (N4, 0, B).
- Figure 32 shows a displacement vector coefficient inverse packing method according to embodiments.
- Figure 32 illustrates an example of a displacement vector coefficient inverse packing method using the YUV 4:2:0 format.
- the displacement vector coefficient inverse quantization unit of Fig. 27 performs inverse quantization of displacement vector coefficients allocated per vertex through the displacement vector coefficient inverse packing unit.
- displacement vector coefficients can be quantized through different quantization parameters for each axis, and the quantization rate can be determined for each LoD level by deriving quantization parameters or scaling parameters by a decoder/encoder agreement.
- the displacement vector inverse transformation part of Fig. 27 A reconstructed displacement vector is calculated by performing an inverse transformation on the displacement vector coefficients on which inverse quantization has been performed.
- the transformation may be a linear lifting transformation, a butterfly lifting transformation, etc.
- an average or distance-based weighted average prediction can be performed on n nearby points based on connection information among vertices at a lower level of detail than the current vertex.
- prediction can be performed based on the displacement vector of n vertices used to generate the current vertex in the mesh refinement step.
- a process of updating the displacement vector of the vertex used for prediction in the encoder can be performed through the parsed residual signal .
- the coordinate system transformation flag (asps_vmc_ext_displacement_coordinate_system) is parsed by frame sequence or GOF (Group of Frames) or frame or submesh unit, and if the value is 1, the inverse quantized restored displacement vector can be inversely transformed from the local coordinate system (n, t, b) to the canonical coordinate system (x, y, z).
- a normal vector per vertex is calculated, and for the vertices additionally generated through the subdivision process, the normal values of the newly generated vertices can be assigned by interpolating through the calculated vertex normal vector of the restored base mesh.
- interpolation can be performed by averaging or distance-based weighting the normal information of the base mesh used for subdivision.
- the normal information of the base mesh can be used as is for the subdivided vertices on the same plane.
- Equation 4 dispn[0], dispn[1], and dispn[2] in Equation 4 represent the results of the n, t, and b components that performed inverse quantization and inverse transformation for each Y, U, and V channel.
- the coordinate system inversion equation 4 When packed in YUV 4:0:0 format, the coordinate system inversion equation 4 is can be expressed as .
- the coordinate system inverse transformation can be performed by multiplying the result of performing inverse quantization and inverse transformation of the n component by the calculated normal vector per vertex.
- the mesh restoration unit of Fig. 26 can calculate and restore vertex geometric information of the restoration mesh by adding a restoration displacement vector to vertices generated through a subdivision process in the mesh subdivision unit.
- the point cloud data transmission method/device can encode mesh data and transmit it in the form of a bitstream.
- parameter information related to encoding can be generated and transmitted by including it in a bitstream.
- a method/device for receiving point cloud data can receive a bitstream and decode mesh data based on parameters in the bitstream.
- FIGS. 33 to 36 describe the syntax and semantics of parameters included in the bitstream.
- Figure 33 shows a set of atlas sequence parameters in a bitstream according to embodiments.
- Fig. 33 shows the syntax of an Atlas Sequence Parameter Set (ASPS) included in a bitstream.
- ASPS is extended from the Atlas Sequence Parameter Set to include additional parameters related to mesh data encoding.
- Displacement vector coordinate system (asps_vmc_ext_displacement_coordinate_system): Indicates the type of coordinate system for encoding displacement vectors. For example, if this value is 0: Canonical, if this value is 1: Local, the displacement vector coordinate system of the mesh data is encoded by transforming it based on the coordinate system.
- Displacement vector transformation method (asps_vmc_ext_transform_method): Indicates how to transform the displacement vector. For example, if this value is 0: None, if this value is 1: Linear_Lifting.
- Displacement vector coefficient packing method (ext_packing_method): Indicates the packing method of the displacement vector coefficients. For example, if this value is 0: the displacement vector coefficients are packed in ascending order, and if it is 1: the displacement vector coefficients are packed in descending order.
- Displacement vector encoding method (asps_vmc_ext_displacement_method): Indicates the encoding coding method of the displacement vector. For example, if this value is 0: None (no displacement vector encoding), 1: Arithmetic Coding, and 2: Video Coding.
- LoD-specific displacement vector packing method (asps_vmc_ext_displacement_LoD_packing_method): Indicates the LoD-specific packing method of displacement vectors. For example, if this value is 0: it indicates that the displacement vectors are packed based on the global packing frame configuration, and if it is 1: it indicates that the displacement vectors are packed based on the level-specific packing frame configuration.
- Displacement vector transformation method (asps_vmc_ext_transform_method): Indicates the transformation method of the displacement vector. For example, if this value is 0: None (no transformation for the displacement vector), if it is 1: the displacement vector was transformed by linear lifting.
- Figure 34 shows a set of atlas sequence parameters in a bitstream according to embodiments.
- Displacement_scan_method Indicates the scan order method when packing displacement vectors. For example, if it is 0: it indicates that the displacement vectors are scanned using 2D Morton Code, and if it is 1: it indicates that the displacement vectors are scanned using Zig-zag scan order.
- geometryVideoBlockSize Indicates the displacement vector video image block size. For example, this value can indicate the number of bx ⁇ by blocks, and the default value can be 16.
- geometryVideoBitDepth Indicates the displacement vector video image bit depth unit.
- the default value can be 10 bits.
- ColorSpace_displacement_video Indicates the displacement vector video packing image format. For example, if this value is 0: None (there is no image format for displacement vector video packing), 1: yuv400, 2: yuv420, 3: yuv444, it indicates that the displacement vector is packed based on this.
- Sampling method and sampling value of tangential component (t_sample): Indicates the sampling method of tangential component and the location information of the displacement vector coefficient used for sampling.
- Sampling method and sampling value of bi-tangential component (b_sample): Indicates the sampling method of bi-tangential component and the location information of the displacement vector coefficient used for sampling.
- Figure 35 shows displacement vector coefficient packing and inverse packing according to embodiments.
- Fig. 35 shows the operation of packing and reverse packing displacement vector coefficients according to Figs. 23 and 32.
- the transmission method/device packs the components of the NTB channel into a YUV channel as described in FIG. 23, etc., and with reference to FIG. 35, the packing method may be a YUV 4:2:0 format. If the packed displacement vector coefficient video image is reverse-packed as in FIG. 32, etc., the components of the NTB channel can be restored from the YUV components again, as illustrated in FIG. 35.
- This sampling method and sampling value are signaled by t_sample and b_sample of FIG. 34, and the details of the values are as shown in FIGS. 36 and 37.
- Figure 36 shows a sampling method and sampling values of displacement vector coefficient components according to embodiments.
- t_sample is 0: When packing T components, sample the average value of each T component and pack it into the U channel component, and when reverse packing from the U channel to the T channel, restore each T component with the average value.
- t_sample is 1: When packing T components, sample with T1 (the first T value) and pack it into the U channel components, and when reverse packing from the U channel to the T channel, restore the first value of the T channel with T1 (the first T value), and restore the second to fourth values to 0.
- t_sample is 2: When packing T components, sample with T1 (the second T value) and pack it into the U channel components, and when reverse packing from U channel to T channel, restore the second value of T channel with T1 (the second T value), and restore the first, third, and fourth values to 0.
- t_sample is 3: When packing T components, sample with T1 (the third T value) and pack it into the U channel components, and when reverse packing from U channel to T channel, restore the third value of T channel with T1 (the third T value), and restore the first, second, and fourth values to 0.
- t_sample is 4: When packing T components, sample with T1 (the 4th T value) and pack it as a component of the U channel, and when reverse packing from the U channel to the T channel, restore the 4th value of the T channel with T1 (the 4th T value), and restore the 1st, 2nd, and 3rd values to 0.
- t_sample is 5: When packing T components, sample by the average value of T1 (the first T value) and T2 (the second T value) and pack it as a component of the U channel, and when reverse packing from the U channel to the T channel, restore the first and second values by the average value of T1 (the first T value) and T2 (the second T value), and restore the third and fourth values to 0.
- t_sample is 6: When packing T components, sample with the average value of T1 (the first T value) and T3 (the third T value) and pack it as a component of the U channel, and when reverse packing from the U channel to the T channel, restore the first and third values with the average value of T1 (the first T value) and T3 (the third T value), and restore the second and fourth values to 0.
- t_sample is 7: When packing T components, sample with the average value of T1 (the first T value) and T4 (the fourth T value) and pack it as a component of the U channel, and when reverse packing from the U channel to the T channel, restore the first and fourth values with the average value of T1 (the first T value) and T4 (the fourth T value), and restore the second and third values to 0.
- t_sample is 8: When packing T components, sample with the average value of T2 (the second T value) and T3 (the third T value) and pack it as a component of the U channel, and when reverse packing from the U channel to the T channel, restore the second and third values with the average value of T2 (the second T value) and T3 (the third T value), and restore the first and fourth values to 0.
- t_sample is 9: When packing T components, sample with the average value of T2 (the second T value) and T4 (the fourth T value) and pack it as a component of the U channel, and when reverse packing from the U channel to the T channel, restore the second and fourth values with the average value of T2 (the second T value) and T4 (the fourth T value), and restore the first and third values to 0.
- t_sample is 10: When packing T components, sample with the average value of T3 (the third T value) and T4 (the fourth T value) and pack it as a component of the U channel, and when reverse packing from the U channel to the T channel, restore the third and fourth values with the average value of T3 (the third T value) and T4 (the fourth T value), and restore the first and second values to 0.
- t_sample is 11: When packing T components, sample by the average value of T1 (the first T value), T2 (the second T value), and T3 (the third T value) and pack it as a component of the U channel, and when reverse packing from the U channel to the T channel, restore the first, second, and third values by the average value of T1 (the first T value), T2 (the second T value), and T3 (the third T value), and restore the fourth value to 0.
- t_sample is 12: When packing T components, sample by the average value of T1 (the first T value), T2 (the second T value), and T4 (the fourth T value) and pack it as a component of the U channel, and when reverse packing from the U channel to the T channel, restore the first, second, and fourth values by the average value of T1 (the first T value), T2 (the second T value), and T4 (the fourth T value), and restore the third value to 0.
- t_sample is 13: When packing T components, sample by the average value of T2 (the second T value), T3 (the third T value), and T4 (the fourth T value) and pack it as a component of the U channel, and when reverse packing from the U channel to the T channel, restore the second, third, and fourth values by the average value of T2 (the second T value), T3 (the third T value), and T4 (the fourth T value), and restore the first value to 0.
- b_sample is 0: When packing B components, sample the average value of each B component and pack it into the U channel components, and when reverse packing from the V channel to the B channel, restore each B component with the average value.
- b_sample is 1: When packing the B component, sample with B1 (the first B value) and pack it into the V channel component, and when reverse packing from the V channel to the B channel, restore the first value of the B channel with B1 (the first B value), and restore the second to fourth values to 0.
- b_sample is 2: When packing the B component, sample with B1 (the second B value) and pack it into the V channel component, and when reverse packing from the V channel to the B channel, restore the second value of the B channel with B1 (the second B value), and restore the 1st, 3rd, and 4th values to 0.
- b_sample is 3: When packing the B component, sample with B1 (the third B value) and pack it into the V channel component, and when reverse packing from the V channel to the B channel, restore the third value of the B channel with B1 (the third B value), and restore the first, second, and fourth values to 0.
- b_sample is 4: When packing the B component, sample with B1 (the 4th B value) and pack it into the V channel component, and when reverse packing from the V channel to the B channel, restore the 4th value of the B channel with B1 (the 4th B value), and restore the 1st, 2nd, and 3rd values to 0.
- b_sample is 5: When packing the B components, sample the average value of B1 (the first B value) and B2 (the second B value) and pack it as a component of the V channel, and when reverse packing from the V channel to the B channel, restore the first and second values as the average value of B1 (the first B value) and B2 (the second B value), and restore the third and fourth values to 0.
- b_sample is 6: When packing the B components, sample the average value of B1 (the first B value) and B3 (the third B value) and pack it as a component of the V channel, and when reverse packing from the V channel to the B channel, restore the first and third values as the average value of B1 (the first B value) and B3 (the third B value), and restore the second and fourth values to 0.
- b_sample is 7: When packing the B components, sample the average value of B1 (the first B value) and B4 (the fourth B value) and pack it as a component of the V channel, and when reverse packing from the V channel to the B channel, restore the first and fourth values as the average value of B1 (the first B value) and B4 (the fourth B value), and restore the second and third values to 0.
- b_sample is 8: When packing the B components, sample the average value of B2 (the second B value) and B3 (the third B value) and pack it as a component of the V channel, and when reverse packing from the V channel to the B channel, restore the second and third values as the average value of BT2 (the second B value) and B3 (the third B value), and restore the first and fourth values to 0.
- b_sample is 9: When packing the B components, sample the average value of B2 (the second B value) and B4 (the fourth B value) and pack it as a component of the V channel, and when reverse packing from the V channel to the B channel, restore the second and fourth values as the average value of B2 (the second B value) and B4 (the fourth B value), and restore the first and third values to 0.
- b_sample is 10: When packing the B components, sample the average value of B3 (the third B value) and B4 (the fourth B value) and pack it as a component of the V channel, and when reverse packing from the V channel to the B channel, restore the third and fourth values as the average value of B3 (the third B value) and B4 (the fourth B value), and restore the first and second values to 0.
- b_sample is 11: When packing the B components, sample the average value of B1 (the first B value), B2 (the second B value), and B3 (the third B value) and pack it as a component of the V channel. When reverse packing from the V channel to the B channel, restore the first, second, and third values as the average value of B1 (the first B value), B2 (the second B value), and B3 (the third B value), and restore the fourth value to 0.
- b_sample is 12: When packing the B components, sample the average value of B1 (the first B value), B2 (the second B value), and B4 (the fourth B value) and pack it as a component of the V channel. When reverse packing from the V channel to the B channel, restore the first, second, and fourth values as the average value of B1 (the first B value), B2 (the second B value), and B4 (the fourth B value), and restore the third value to 0.
- b_sample is 13: When packing the B components, sample the average value of B2 (the second B value), B3 (the third B value), and B4 (the fourth B value) and pack it as a component of the V channel, and when reverse packing from the V channel to the B channel, restore the second, third, and fourth values as the average value of B2 (the second B value), B3 (the third B value), and B4 (the fourth B value), and restore the first value to 0.
- a transmitting device generates a base mesh from an original mesh to be transmitted through a simplification unit and a parameterization unit.
- the generated base mesh is quantized, and in the case of an inter-frame, a motion vector is calculated from a previously referenced restored base mesh and the motion vector is encoded, and in the case of an intra-frame, a base mesh bitstream is transmitted through a static mesh encoding unit. Then, a displacement vector is calculated between mesh data obtained by subdividing and fitting a mesh that has gone through the mesh simplification unit and mesh data restored from the previously encoded base mesh.
- the displacement vector coordinate system can be converted to a local coordinate system, and a displacement vector conversion unit converts and quantizes the displacement vector into a displacement vector coefficient and encodes the displacement vector into a displacement vector bitstream.
- a displacement vector coefficient image packing process is performed in a displacement vector encoding unit using a YUV 4:2:0 format according to embodiments.
- the displacement vector encoding unit can be divided into detailed modules as shown in Fig. 15.
- the transformed displacement vectors can be converted into displacement vector coefficients by performing linear lifting transformation, butterfly lifting transformation, etc.
- the displacement vectors of (n, t, b) expressed in the local coordinate system can be converted for each n, t, b component.
- the displacement vector conversion unit can be performed to quantize the converted displacement vector coefficients, and quantize them into individual values for each channel.
- the displacement vector coefficient packing unit the quantized displacement vector coefficients are packed into a 2D image of the size of W X H. As shown in Fig. 17, the displacement vector coefficients composed of a 1D LoD ascending order are packed into a 2D image as shown in Fig. 18.
- the size of bx X by can be configured as one block, and L X M blocks determined according to the number N of displacement vector coefficients can be configured.
- the basic unit size information (geometryVideoBlockSize) and bit depth information (geometryVideoBitDepth) of the block can be signaled so that L and M can be derived.
- displacement vector coefficients can be packed inside the block in a zig-zag scan order or a 2D Morton code order, and displacement vector packing order information (displacement_scan_method) can be signaled. Padding can be performed with the median value or the last displacement vector coefficient value of the image to match the size of the basic block or the entire 2D video image for each LoD.
- the displacement vector coefficients converted to the local coordinate system can configure the packing frame of the Y, U, and V channels for each Normal, Tangential, and Bi-tangential component, respectively.
- the image packing format information (ColourSpace_displacement_video) can be signaled by selecting a format such as YUV 4:4:4, YUV 4:2:0, or YUV 4:0:0.
- YUV 4:4:4 format the values of the Normal, Tangential, and Bi-tangential components are packed as they are into the Y, U, and V channels, respectively.
- the values of the Normal component can all be packed as they are into the Y channel, and the Tangential and Bi-tangential components may not be sampled.
- the values of the Normal component can all be packed as they are into the Y channel, and the Tangential and Bi-tangential components may be sampled as the U and V channels for some or all of every four vertices, depending on the sampling method of each component.
- Displacement vector coefficients can be imaged for each channel to form an encoding unit in the form of a packing frame.
- the entire level in a mesh frame can be packed into one packing frame, or each LoD in the mesh frame can be packed into a separate packing frame, and the asps_vmc_ext_displacement_LoD_packing_method syntax indicating the packing method can be signaled for each mesh sequence unit.
- a 2D image packed by the displacement vector coefficient packing unit is encoded by a 2D video encoder such as H.264, HEVC, or VVC to generate a displacement vector bitstream.
- the texture map generation unit generates a new texture map with color information corresponding to the texture coordinates of the restored mesh, and encodes the texture map through a 2D video encoder and transmits it as a texture bitstream.
- the base mesh bitstream, displacement vector bitstream, and texture bitstream generated through the entire process described above at the transmitter are generated into a single bitstream through a multiplexer and transmitted through the transmitter.
- a receiving device receives a bitstream transmitted from a transmitter and performs a process of decoding a base mesh bitstream, a displacement vector bitstream, and a texture map bitstream, respectively, through a demultiplexer.
- the base mesh bitstream is decoded through a motion vector decoding unit for inter-frames and a static mesh decoding unit for intra-frames.
- the decoded base mesh then passes through a restoration unit to perform mesh refinement.
- the displacement vector bitstream is decoded in the reverse order of encoding to decode displacement vector coefficients, performs inverse quantization and inverse transformation, and then is inversely transformed to the coordinate system to restore mesh geometric information together with the base mesh data.
- the displacement vector decoding process proposed in the present invention is described in detail by module as shown in Fig. 27.
- the video decoding unit receives a displacement vector bitstream as input and performs decoding on a displacement vector coefficient image/video through a 2D video codec.
- Reverse packing can be performed from a restored displacement vector coefficient image corresponding to the current mesh frame.
- Scan order information (displacement_scan_method), block size information (geometryVideoBlockSize), and bit depth information (geometryVideoBitDepth) at the time of displacement vector packing are parsed to derive block and packing frame sizes (bx, by, and L, M), and reverse packing is performed on the packed displacement vector coefficients.
- packing image format information ColdSpace_displacement_video
- the method of deriving transformation coefficients may differ depending on the transmitted image packing format.
- the Normal component of the Y channel can be fully restored, but some or all of the Tangent and Bi-tangent components of the U and V channels may be restored depending on the sampling method.
- the displacement vector coefficients can be restored according to the sampling method of the T and B components by parsing the t_sample and b_sample syntax.
- b_sample syntax values are 1 to 4, one optimal component is sampled, and restoration can be performed according to each sampling position.
- the T_sample, b_sample syntax values are 5 to 13, two or three optimal components are selected and sampled as an average value, and restoration can be performed according to the selected component positions.
- the displacement vector coefficient inverse quantization unit performs inverse quantization on the displacement vector coefficients assigned to each vertex through the displacement vector coefficient inverse packing unit. Displacement vector coefficients can be quantized through different quantization parameters for each axis, and the quantization rate can be determined for each LoD level by deriving the quantization parameter or scaling parameter.
- the displacement vector inverse transform unit calculates the restored displacement vector by performing inverse transformation on the displacement vector coefficients on which inverse quantization was performed using the transformation method parsed in asps_vmc_ext_transform_method.
- asps_vmc_ext_displacement_coordinate_system is parsed, and if the value is 1, the restored displacement vector can be inversely transformed from the local coordinate system (n, t, b) to the canonical coordinate system (x, y, z).
- the normal vector per vertex is calculated based on the restored vertex position information of the restored base mesh, and the tangential and bi-tangential vectors orthogonal to the normal vector are calculated through the calculated normal vector per vertex to perform the inverse transformation of the displacement vector coordinate system. If the value is 0, the calculated restoration displacement vector can become the final restored displacement vector as it is. If there are multiple results of performing inverse transformation on the same vertex coordinates, the sum of all values can become the value of the final displacement vector.
- the vertex geometry information of the restoration mesh can be calculated by adding the restoration displacement vector to the vertices generated through the subdivision process in the mesh subdivision unit, and the final geometry information can be restored.
- the received texture map bitstream is decoded through the texture map decoding unit, and the final restoration mesh is generated together with the previously restored geometry information.
- Figure 37 shows a mesh data transmission method according to embodiments.
- FIG. 37 illustrates mesh data transmission operations of a FIG. 1 transmitting device (100), a dynamic mesh video acquisition unit (101), a dynamic mesh video encoder (102), a file/segment encapsulator (103), a transmitter (104), a FIG. 2 pre-processor (200), an encoder (201), an FIG. 6-7 encoder, a FIG. 13 transmitting device, and a FIG. 15-16 encoder.
- the mesh data transmission method may further include a step (S3701) of transmitting a bitstream including mesh data.
- the encoding step (S3700), referring to FIG. 15, may include: a step of generating a base mesh by simplifying (decimating) mesh data; a step of encoding the base mesh based on at least one of an inter-frame and an intra-frame method; a step of decoding the base mesh; a step of subdividing the base mesh; a step of generating a displacement vector based on the restored base mesh and the subdivided base mesh; and a step of encoding the displacement vector.
- the step of encoding a displacement vector may include a step of converting a displacement vector into a displacement vector coefficient, and a step of packing the displacement vector coefficient into an image, with reference to FIGS. 16 to 20.
- the step of packing displacement vector coefficients into an image may include sampling values included in the first component (Normal), the second component (Tangential), and the third component (Bi-tangential) of the local coordinate system of the displacement vector coefficients and packing them into the first channel (Y), the second channel (U), and the third channel (V), respectively, with reference to FIGS. 21 to 23.
- All values of the first component of the local coordinate system can be packed into the first channel, only one value of the values of the second component of the local coordinate system can be packed into the second channel, and only one value of the values of the third component of the local coordinate system can be packed into the third channel. That is, an optimal one of the values can be used during packing.
- All values of the first component of the local coordinate system may be packed into a first channel, an average of at least two values of the second component of the local coordinate system may be packed into a second channel, and an average of at least two values of the third component of the local coordinate system may be packed into a third channel. That is, a partial sum average or a full sum average of the values may be used in packing.
- the method of FIG. 37 can be performed by a transmitting device, and the transmitting device includes, with reference to FIG. 1, a memory; and a processor that performs one or more instructions stored in the memory; and the processor can perform: encoding mesh data; and transmitting a bitstream including the mesh data.
- Figure 38 shows a method for receiving mesh data according to embodiments.
- FIG. 38 illustrates mesh data reception operations of the FIG. 1 receiving device (110), receiver (111), file/segment decapsulator (112), dynamic mesh video decoder (113), renderer (114), FIG. 11-12 decoder, FIG. 14 receiving device, and FIG. 26-27 decoder.
- a method for receiving mesh data may include a step (S3800) of receiving a bitstream including mesh data.
- the method for receiving mesh data may further include a step (S3801) of decoding mesh data.
- the received bitstream may include at least one of information indicating an encoding type of a displacement vector (asps_vmc_ext_displacement_method), a method indicating a packing type by LoD of a displacement vector (asps_vmc_ext_displacement_LoD_packing_method), information indicating a scan order of displacement vector packing (displacement_scan_method), information indicating a displacement vector video packing format (ColourSpace_displacement_video), or information indicating a position of a displacement vector coefficient on a local coordinate system (t_sample, b_sample).
- the decoding step (S3801) may include, with reference to FIG. 26, a step of decoding a base mesh for mesh data based on at least one of an inter-frame and an intra-frame method; a step of decoding a displacement vector in a bitstream;
- the step of decoding a displacement vector may include, with reference to FIG. 27, decoding a displacement vector based on a video format to restore a displacement vector coefficient, and packing the displacement vector coefficient backward from the frame.
- the step of depacking displacement vector coefficients may include, with reference to FIG. 30, depacking values in a first channel with values of the depacked first channel, depacking values in a second channel with first values of the depacked second channel, and the second values of the depacked second channel may become zero, depacking values in a third channel with first values of the depacked third channel, and the second values of the depacked third channel may become zero. That is, this is a depacking operation when t_sample: 2, b_sample: 3.
- the step of depacking displacement vector coefficients may include, with reference to FIG. 31, depacking values in a first channel with values of the depacked first channel, depacking values in a second channel with first and second values of the depacked second channel, and third values of the depacked second channel may become zero, depacking values in a third channel with first and second values of the depacked third channel, and third values of the depacked third channel may become zero. That is, this is a depacking operation when t_sample: 5, b_sample: 10.
- the step of depacking displacement vector coefficients may include, with reference to FIG. 32, depacking values in a first channel with values of the depacked first channel, depacking values in a second channel with values of the depacked second channel, and depacking values in a third channel with values of the depacked third channel. That is, this is a depacking operation when t_sample: 0, b_sample: 0.
- the method of FIG. 38 is performed by a receiving device, the receiving device including a memory; and a processor that performs one or more instructions stored in the memory; wherein the processor can perform: receiving a bitstream including mesh data; and decoding the mesh data.
- displacement vector information is expressed in the form of a 3D or 1D vector, compressed, and transmitted.
- the YUV 4:4:4 or YUV 4:0:0 format must be used for image packing. If the YUV 4:4:4 format is used, all component data of the displacement vector can be transmitted, but there is a disadvantage in that the capacity is large. If the YUV 4:0:0 format is used, only the Normal component is transmitted without transmitting the tangential and bi-tangential components, so the capacity is greatly reduced, but the image quality is somewhat degraded.
- the present embodiments solve this problem by packing the displacement vector image using the YUV 4:2:0 format.
- it can be efficient in terms of capacity and image quality, and is also much more advantageous in terms of compatibility because it uses the YUV 4:2:0 format, which is currently the most widely used 2D video codec.
- it has a technical effect in that it provides an efficient and effective sampling method of tangential and bi-tangential components of U and V channels when applying the YUV 4:2:0 format to V-DMC technology.
- a method that can perform sampling by selecting the optimal component of each tangential and bi-tangential component and a signaling method that can restore the sampling value at the location of the component involved in sampling, it has the effect of transmitting more efficient and high-quality images.
- each drawing has been described separately, but it is also possible to design a new embodiment by combining the embodiments described in each drawing.
- designing a computer-readable recording medium in which a program for executing the previously described embodiments is recorded according to the needs of a person skilled in the art also falls within the scope of the embodiments.
- the devices and methods according to the embodiments are not limited to the configurations and methods of the embodiments described above, but the embodiments may be configured by selectively combining all or part of the embodiments so that various modifications can be made.
- the various components of the device of the embodiments may be performed by hardware, software, firmware, or a combination thereof.
- the various components of the embodiments may be implemented as one chip, for example, one hardware circuit.
- the components according to the embodiments may be implemented as separate chips, respectively.
- at least one of the components of the device of the embodiments may be configured with one or more processors capable of executing one or more programs, and the one or more programs may perform, or include instructions for performing, one or more of the operations/methods according to the embodiments.
- the executable instructions for performing the methods/operations of the device of the embodiments may be stored in non-transitory CRMs or other computer program products configured to be executed by one or more processors, or may be stored in temporary CRMs or other computer program products configured to be executed by one or more processors.
- the memory according to the embodiments may be used as a concept including not only volatile memory (e.g., RAM, etc.), but also non-volatile memory, flash memory, PROM, etc. Additionally, it may include implementations in the form of carrier waves, such as transmission over the Internet. Additionally, the processor-readable recording medium may be distributed across network-connected computer systems, so that the processor-readable code may be stored and executed in a distributed manner.
- first, second, etc. may be used to describe various components of the embodiments. However, the various components according to the embodiments should not be limited in their interpretation by the above terms. These terms are merely used to distinguish one component from another. For example, a first user input signal may be referred to as a second user input signal. Similarly, a second user input signal may be referred to as a first user input signal. The use of these terms should be construed as not departing from the scope of the various embodiments. Although the first user input signal and the second user input signal are both user input signals, they do not mean the same user input signals unless the context clearly indicates otherwise.
- the operations according to the embodiments described in this document may be performed by a transceiver device including a memory and/or a processor according to the embodiments.
- the memory may store programs for processing/controlling the operations according to the embodiments, and the processor may control various operations described in this document.
- the processor may be referred to as a controller, etc.
- the operations according to the embodiments may be performed by firmware, software, and/or a combination thereof, and the firmware, software, and/or a combination thereof may be stored in the processor or in the memory.
- the transmitting/receiving device may include a transmitting/receiving unit for transmitting and receiving media data, a memory for storing instructions (program codes, algorithms, flowcharts, and/or data) for a process according to the embodiments, and a processor for controlling operations of the transmitting/receiving device.
- the processor may be referred to as a controller, etc., and may correspond to, for example, hardware, software, and/or a combination thereof.
- the operations according to the embodiments described above may be performed by the processor.
- the processor may be implemented as an encoder/decoder, etc. for the operations of the embodiments described above.
- the embodiments can be applied in whole or in part to a point cloud data transmission and reception device and system.
- Embodiments may include modifications/changes, which do not depart from the scope of the claims and their equivalents.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
실시예들에 따른 메쉬 데이터 송신 방법은 메쉬 데이터를 인코딩하는 단계; 및 메쉬 데이터를 포함하는 비트스트림을 전송하는 단계; 를 포함할 수 있다. 실시예들에 따른 메쉬 데이터 수신 방법은 메쉬 데이터를 포함하는 비트스트림을 수신하는 단계; 및 메쉬 데이터를 디코딩하는 단계; 를 포함할 수 있다.
Description
실시예들은 사용자에게 VR (Virtual Reality, 가상현실), AR (Augmented Reality, 증강현실), MR (Mixed Reality, 혼합현실), 및 자율 주행 서비스 등의 다양한 서비스를 제공하기 위하여 Point Cloud 콘텐츠를 제공하는 방안을 제공한다.
포인트 클라우드는 3D공간 상의 포인트들의 집합이다. 3D공간 상의 포인트들의 양이 많아서 포인트 클라우드 데이터를 생성하기 어려운 문제점이 있다.
포인트 클라우드의 데이터를 전송하고 수신하기 위해서 많은 처리량이 요구되는 문제점이 있다.
실시예들에 따른 기술적 과제는, 전술한 문제점 등을 해결하기 위해서, 포인트 클라우드를 효율적으로 송수신하기 위한 포인트 클라우드 데이터 전송 장치, 전송 방법, 포인트 클라우드 데이터 수신 장치 및 수신 방법을 제공하는데 있다.
실시예들에 따른 기술적 과제는, 지연시간(latency) 및 인코딩/디코딩 복잡도를 해결하기 위한 포인트 클라우드 데이터 전송 장치, 전송 방법, 포인트 클라우드 데이터 수신 장치 및 수신 방법을 제공하는데 있다.
다만, 전술한 기술적 과제만으로 제한되는 것은 아니고, 본 문서 전체 내용에 기초하여 당업자가 유추할 수 있는 다른 기술적 과제로 실시예들의 권리범위가 확장될 수 있다.
실시예들에 따른 메쉬 데이터 송신 방법은 메쉬 데이터를 인코딩하는 단계; 및 메쉬 데이터를 포함하는 비트스트림을 전송하는 단계; 를 포함할 수 있다. 실시예들에 따른 메쉬 데이터 수신 방법은 메쉬 데이터를 포함하는 비트스트림을 수신하는 단계; 및 메쉬 데이터를 디코딩하는 단계; 를 포함할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법, 송신 장치, 포인트 클라우드 데이터 수신 방법, 수신 장치는 퀄리티 있는 포인트 클라우드 서비스를 제공할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법, 송신 장치, 포인트 클라우드 데이터 수신 방법, 수신 장치는 다양한 비디오 코덱 방식을 달성할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법, 송신 장치, 포인트 클라우드 데이터 수신 방법, 수신 장치는 자율주행 서비스 등 범용적인 포인트 클라우드 콘텐츠를 제공할 수 있다.
도면은 실시예들을 더욱 이해하기 위해서 포함되며, 도면은 실시예들에 관련된 설명과 함께 실시예들을 나타낸다. 이하에서 설명하는 다양한 실시예들의 보다 나은 이해를 위하여, 하기 도면들에 걸쳐 유사한 참조 번호들이 대응하는 부분들을 포함하는 다음의 도면들과 관련하여 이하의 실시예들의 설명을 반드시 참조해야 한다.
도1은 실시예들에 따른 다이나믹 메쉬(Dynamic Mesh) 콘텐츠 제공을 위한 시스템을 나타낸다.
도2는 실시예들에 따른 V-MESH 압축 방법을 나타낸다.
도3은 실시예들에 따른 V-MESH 압축의 프리-프로세싱을 나타낸다.
도4는 실시예들에 따른 미드-엣지 서브디비전 방식을 나타낸다.
도5는 실시예들에 따른 디스플레이스먼트 생성 과정을 나타낸다.
도6은 실시예들에 따른 V-MESH 압축 방법의 인트라 프레임 인코딩 프로세스를 나타낸다.
도7은 실시예들에 따른 V-MESH압축 방법의 인터 프레임 인코딩 프로세스를 나타낸다.
도8은 실시예들에 따른 디스플레이스먼트에 대한 리프팅 변환 과정을 나타낸다.
도9는 실시예들에 따른 변환 계수를 2D 이미지에 패킹하는 과정을 나타낸다.
도10은 실시예들에 따른 V-MESH 압축 방법의 어트리뷰트 트랜스퍼 과정을 나타낸다.
도11은 실시예들에 따른 V-MESH 압축 방법의 인트라 프레임 디코딩 프로세스를 나타낸다.
도12는 V-MES 도13은 실시예들에 따른 포인트 클라우드 데이터 송신 장치를 나타낸다.
도13은 실시예들에 따른 포인트 클라우드 데이터 송신 장치를 나타낸다.
도14는 실시예들에 따른 포인트 클라우드 데이터 수신 장치를 나타낸다.
도15는 실시예들에 따른 다이나믹(동적) 메쉬 부호화기를 나타낸다.
도16은 실시예들에 따른 변위벡터 부호화부를 나타낸다.
도17은 실시예들에 따른 변위벡터계수의 구조를 나타낸다.
도18은 실시예들에 따른 변위벡터계수 2D 이미지 패킹을 나타낸다.
도19는 실시예들에 따른 LoD(Level of Detail) 별 변위벡터계수 2D 이미지 패킹을 나타낸다.
도20은 실시예들에 따른 2D 몰톤 코드 기반 패킹을 나타낸다.
도21은 실시예들에 따른 변위벡터계수 패킹 방법을 나타낸다.
도22는 실시예들에 따른 변위벡터계수 패킹 방법을 나타낸다.
도23은 실시예들에 따른 변위벡터계수 패킹 방법을 나타낸다.
도24는 실시예들에 따른 전체 레벨 패킹 프레임 구성을 나타낸다.
도25는 실시예들에 따른 레벨별 패킹 프레임 구성을 나타낸다.
도26은 실시예들에 따른 동적 메쉬 복호화기를 나타낸다.
도27은 실시예들에 따른 변위벡터 복호화부를 나타낸다.
도28은 실시예들에 따른 변위벡터계수 역패킹 방법을 나타낸다.
도29는 실시예들에 따른 변위벡터계수 역패킹 방법을 나타낸다.
도30은 실시예들에 따른 변위벡터계수 역패킹 방법을 나타낸다.
도31은 실시예들에 따른 변위벡터계수 역패킹 방법을 나타낸다.
도32는 실시예들에 따른 변위벡터계수 역패킹 방법을 나타낸다.
도33은 실시예들에 따른 비트스트림 내 아틀라스 시퀀스 파라미터 세트를 나타낸다.
도34는 실시예들에 따른 비트스트림 내 아틀라스 시퀀스 파라미터 세트를 나타낸다.
도35는 실시예들에 따른 변위벡터계수 패킹 및 역패킹을 나타낸다.
도36은 실시예들에 따른 변위벡터계수 성분의 샘플링 방법 및 샘플링 값을 나타낸다.
도37은 실시예들에 따른 메쉬 데이터 송신 방법을 나타낸다.
도38은 실시예들에 따른 메쉬 데이터 수신 방법을 나타낸다.
실시예들의 바람직한 실시예에 대해 구체적으로 설명하며, 그 예는 첨부된 도면에 나타낸다. 첨부된 도면을 참조한 아래의 상세한 설명은 실시예들의 실시예에 따라 구현될 수 있는 실시예만을 나타내기보다는 실시예들의 바람직한 실시예를 설명하기 위한 것이다. 다음의 상세한 설명은 실시예들에 대한 철저한 이해를 제공하기 위해 세부 사항을 포함한다. 그러나 실시예들이 이러한 세부 사항 없이 실행될 수 있다는 것은 당업자에게 자명하다.
실시예들에서 사용되는 대부분의 용어는 해당 분야에서 널리 사용되는 일반적인 것들에서 선택되지만, 일부 용어는 출원인에 의해 임의로 선택되며 그 의미는 필요에 따라 다음 설명에서 자세히 서술한다. 따라서 실시예들은 용어의 단순한 명칭이나 의미가 아닌 용어의 의도된 의미에 근거하여 이해되어야 한다.
도1은 실시예들에 따른 다이나믹 메쉬(Dynamic Mesh) 콘텐츠 제공을 위한 시스템을 나타낸다.
도1의 시스템은 실시예들에 따른 포인트 클라우드 데이터 송신 장치(100) 및 포인트 클라우드 데이터 수신 장치(110)를 포함한다. 포인트 클라우드 데이터 송신 장치는 다이나믹 메쉬 비디오 획득부(101), 다이나믹 메쉬 비디오 인코더(102), 파일/세그먼트 인캡슐레이터(103), 트랜스미터(104)를 포함할 수 있다. 포인트 클라우드 데이터 수신 장치(110)는 수신부(111), 파일/세그먼트 디캡슐레이터(112), 다이나믹 메쉬 비디오 디코더(113), 렌더러(114)를 포함할 수 있다. 도1의 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응할 수 있다. 이하에서, 실시예들에 따른 포인트 클라우드 데이터 송신 장치는 송신 장치(100)를 지칭하거나, 다이나믹 메쉬 비디오 인코더(이하, 인코더)(102)를 지칭하는 용어로 해석될 수 있다. 실시예들에 따른 포인트 클라우드 데이터 수신 장치는 수신 장치(110)를 지칭하거나, 다이나믹 메쉬 비디오 디코더(이하, 디코더)(113)를 지칭하는 용어로 해석될 수 있다.
도1의 시스템은 비디오 기반 다이나믹 메쉬 컴프레션(Video-based Dynamic Mesh Compression) 및 디컴프레션을 수행할 수 있다.
3D 캡처, 모델링 및 렌더링의 발전으로, 사용자는 여러 플랫폼과 장치에서 AR, XR, 메타버스, 홀로그램과 같이 다양한 형태의 3D 콘텐츠를 사용할 수 있다. 3D 콘텐츠들은 사용자가 몰입형 경험을 즐길 수 있도록 보다 정교하고 리얼하게 대상을 표현하고 있으며, 이를 위해 3D 모델의 생성 및 사용에는 많은 양의 데이터가 필요하다. 여러가지 형태의 3D 콘텐츠 타입들 중 3D 메쉬(Mesh)는 효율적인 데이터 활용 및 실감 있는 객체 표현을 위해 널리 사용된다. 실시예들은 이러한 메쉬(Mesh) 콘텐츠를 사용하는 시스템에서의 일련의 처리 과정을 포함한다.
먼저, 다이나믹 메쉬(dynamic mesh) 데이터를 압축하는 방법은 V-PCC (Video-based point cloud compression) 표준 기술에서 시작된다. 포인트 클라우드(Point cloud) 데이터는 정점 (vertex) 좌표 (X, Y, Z)에 색상 정보를 가지고 있는 데이터들이다. 이 정점 정보에 정점들간의 연결성 정보가 추가되어 있는 것이 메쉬(mesh) 데이터를 의미한다. 콘텐츠를 생성할 때 처음부터 메쉬(mesh) 데이터 형태로 만들어질 수 있다. 포인트 클라우드(point cloud) 데이터에서 연결성 정보를 추가하여 메쉬(mesh) 데이터로 변환하여 사용될 수 있다.
현재 MPEG 표준 단체에서 다이나믹 메쉬(dynamic mesh) 데이터의 데이터 타입은 아래의 두 가지 타입으로 정의되어 있다. 카테고리1: 색상정보로 텍스처맵을 갖는 메쉬(mesh) 데이터. 카테고리2: 색상정보로 정점 색상을 갖는 메쉬(mesh) 데이터.
카테고리1 데이터에 대한 메쉬 코딩(Mesh coding) 표준이 진행되고 있고, 카테고리2 데이터 표준 작업도 추후 진행될 예정이다. 메쉬(Mesh) 콘텐츠 서비스를 제공하기 위한 전체의 과정은 도1에서 보이는 바와 같이 획득 과정, 인코딩 과정, 전송 과정, 디코딩 과정, 렌더링 과정 및/또는 피드백 과정을 포함할 수 있다.
메쉬(Mesh) 콘텐츠 서비스를 제공하기 위해, 다수의 카메라 혹은 특수 카메라를 통해 획득된 3차원 데이터는 일련의 과정을 통해 메쉬(Mesh) 데이터 타입으로 가공된 후 비디오로 생성될 수 있다. 생성된 메쉬(Mesh) 비디오는 일련의 과정을 거쳐 전송되고, 수신단에서는 수신된 데이터를 다시 메쉬(Mesh) 비디오로 가공하여 렌더링 할 수 있다. 이를 통해 메쉬(Mesh) 비디오가 사용자에게 제공되며 사용자는 상호작용을 통해 의도에 따라 메쉬(Mesh) 콘텐츠를 사용할 수 있다.
메쉬 컴프레션(Mesh compression) 시스템은 전송 디바이스 및 수신 디바이스를 포함할 수 있다. 전송 디바이스는 메쉬(Mesh) 비디오를 인코딩하여 비트스트림을 출력할 수 있으며, 이를 파일 또는 스트리밍 (스트리밍 세그먼트) 형태로 디지털 저장매체 또는 네트워크를 통해 수신 디바이스로 전달할 수 있다. 디지털 저장 매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장 매체를 포함할 수 있다.
전송 디바이스는 개략적으로 메쉬(Mesh) 비디오 획득부, 메쉬(Mesh) 비디오 인코더, 전송부를 포함할 수 있다. 상기 수신 디바이스는 개략적으로 수신부, 메쉬(Mesh) 비디오 디코더 및 렌더러를 포함할 수 있다. 상기 인코더는 메쉬(Mesh) 비디오/영상/픽처/프레임 인코딩 장치라고 불릴 수 있고, 상기 디코더는 메쉬(Mesh) 비디오/영상/픽처/프레임 디코딩 장치라고 불릴 수 있다. 송신기는 메쉬(Mesh) 비디오 인코더에 포함될 수 있다. 수신기는 메쉬(Mesh) 비디오 디코더에 포함될 수 있다. 렌더러는 디스플레이부를 포함할 수도 있고, 렌더러 및/또는 디스플레이부는 별개의 디바이스 또는 외부 컴포넌트로 구성될 수도 있다. 상기 전송 디바이스 및 상기 수신 디바이스는 피드백 과정을 위한 별도의 내부 또는 외부의 모듈/유닛/컴포넌트를 더 포함할 수도 있다.
메쉬(Mesh) 데이터는 객체의 표면을 다수의 다각형으로 표현한다. 각 다각형은 3차원 공간에서의 정점과, 그 정점들이 어떻게 연결되어 있는 지를 나타내는 연결 정보로 정의된다. 또한 정점의 컬러, 법선 등과 같은 정점 속성들도 포함할 수 있다. 메쉬(Mesh)의 표면을 2D 평면 영역에 매핑(mapping)할 수 있도록 하는 매핑 정보 역시 메쉬(Mesh)의 속성으로 포함될 수 있다. 매핑은 일반적으로 메쉬(Mesh) 정점과 관련된 UV 좌표 또는 텍스처 좌표라고 하는 매개변수 좌표 세트로 설명될 수 있다. 메쉬(Mesh) 는 2D 속성 맵을 포함하고 있는데, 이것은 텍스처, 법선, 변위 등과 같은 고해상도 속성 정보를 저장하는 데 사용될 수 있다.
메쉬(Mesh) 비디오 획득부에서는 카메라 등을 통해 획득된 3차원 객체 데이터를 일련의 과정을 통해 위에서 설명한 속성을 갖는 메쉬(Mesh) 데이터 타입으로 가공하고 이러한 메쉬(Mesh) 데이터로 구성된 비디오를 생성하는 것을 포함할 수 있다. 메쉬(Mesh) 비디오는 시간에 따라 메쉬(Mesh) 의 속성, 즉 정점, 다각형, 정점 간 연결 정보, 색상, 법선 등의 정보가 변할 수 있다. 이렇게 시간에 따라 변하는 속성 및 연결 정보를 갖는 메쉬(Mesh) 비디오를 동적 메쉬(Mesh) 비디오라고 표현할 수 있다.
메쉬(Mesh) 비디오 인코더는 입력 메쉬(Mesh) 비디오를 하나 이상의 비디오 스트림으로 인코딩할 수 있다. 하나의 비디오는 다수의 프레임을 포함할 수 있으며, 하나의 프레임은 정지 영상/픽처에 대응될 수 있다. 본 문서에서, 메쉬(Mesh) 비디오라 함은 메쉬(Mesh) 영상/프레임/픽처를 포함할 수 있으며, 메쉬(Mesh) 비디오는 메쉬(Mesh) 영상/프레임/픽처와 혼용되어 사용될 수 있다. 메쉬(Mesh) 비디오 인코더는 Video-based Dynamic Mesh (V-Mesh) Compression 절차를 수행할 수 있다. 메쉬(Mesh) 비디오 인코더는 압축 및 코딩 효율을 위하여 예측, 변환, 양자화, 엔트로피 코딩 등의 일련의 절차를 수행할 수 있다. 인코딩된 데이터 (인코딩된 비디오/영상 정보)는 비트스트림 (bitstream) 형태로 출력될 수 있다.
인캡슐레이션 처리부 (file/segment encapsulation module)는 인코딩된 메쉬(Mesh) 비디오 데이터 및/ 메쉬(Mesh) Mesh 비디오 관련 메타데이터를 파일 등의 형태로 인캡슐레이션할 수 있다. 여기서 메쉬(Mesh) 비디오 관련 메타데이터는 메타데이터 처리부 등으로부터 전달받은 것일 수 있다. 메타데이터 처리부는 메쉬(Mesh) 비디오 인코더에 포함될 수도 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 인캡슐레이션 처리부는 해당 데이터들을 ISOBMFF 등의 파일 포맷으로 인캡슐레이션하거나, 기타 DASH 세그먼트 등의 형태로 처리할 수 있다. 인캡슐레이션 처리부는 실시예에 따라 메쉬(Mesh) 비디오 관련 메타데이터를 파일 포맷 상에 포함시킬 수 있다. 메쉬(Mesh) 비디오 메타데이터는 예를 들어 ISOBMFF 파일 포맷 상의 다양한 레벨의 박스 (box)에 포함되거나 파일 내에서 별도의 트랙내의 데이터로 포함될 수 있다. 실시예에 따라, 인캡슐레이션 처리부는 메쉬(Mesh) 비디오 관련 메타데이터 자체를 파일로 인캡슐레이션할 수 있다.
전송 처리부는 파일 포맷에 따라 인캡슐레이션된 메쉬(Mesh) 비디오 데이터에 전송을 위한 처리를 가할 수 있다. 전송 처리부는 전송부에 포함될 수도 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 전송 처리부는 임의의 전송 프로토콜에 따라 메쉬(Mesh) 비디오 데이터를 처리할 수 있다. 전송을 위한 처리에는 방송망을 통한 전달을 위한 처리, 브로드밴드를 통한 전달을 위한 처리를 포함할 수 있다. 실시예에 따라 전송 처리부는 메쉬(Mesh) 비디오 데이터뿐 아니라, 메타데이터 처리부로부터 메쉬(Mesh) 비디오 관련 메타데이터를 전달받아, 이 것에 전송을 위한 처리를 가할 수도 있다.
전송부는 비트스트림 형태로 출력된 인코딩된 비디오/영상 정보 또는 데이터를 파일 또는 스트리밍 형태로 디지털 저장매체 또는 네트워크를 통하여 수신 디바이스의 수신부로 전달할 수 있다. 디지털 저장 매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장 매체를 포함할 수 있다. 전송부는 미리 정해진 파일 포멧을 통하여 미디어 파일을 생성하기 위한 엘리먼트를 포함할 수 있고, 방송/통신 네트워크를 통한 전송을 위한 엘레멘트를 포함할 수 있다. 수신부는 상기 비트스트림을 추출하여 디코딩 장치로 전달할 수 있다.
수신부는 메쉬(Mesh) 비디오 전송 장치가 전송한 메쉬(Mesh) 비디오 데이터를 수신할 수 있다. 전송되는 채널에 따라 수신부는 방송망을 통하여 메쉬(Mesh) 비디오 데이터를 수신할 수도 있고, 브로드밴드를 통하여 메쉬(Mesh) 비디오 데이터를 수신할 수도 있다. 혹은 디지털 저장 매체를 통하여 메쉬(Mesh) 비디오 데이터를 수신할 수도 있다.
수신 처리부는 수신된 메쉬(Mesh) 비디오 데이터에 대해 전송 프로토콜에 따른 처리를 수행할 수 있다. 수신 처리부는 수신부에 포함될 수 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 전송측에서 전송을 위한 처리가 수행된 것에 대응되도록, 수신 처리부는 전술한 전송 처리부의 역과정을 수행할 수 있다. 수신 처리부는 획득한 메쉬(Mesh) 비디오 데이터는 디캡슐레이션 처리부로 전달하고, 획득한 메쉬(Mesh) 비디오 관련 메타데이터는 메타데이터 파서로 전달할 수 있다. 수신 처리부가 획득하는 메쉬(Mesh) 비디오 관련 메타데이터는 시그널링 테이블의 형태일 수 있다.
디캡슐레이션 처리부(file/segment decapsulation module)는 수신 처리부로부터 전달받은 파일 형태의 메쉬(Mesh) 비디오 데이터를 디캡슐레이션할 수 있다. 디캡슐레이션 처리부는 ISOBMFF 등에 따른 파일들을 디캡슐레이션하여, Mesh 비디오 비트스트림 내지 메쉬(Mesh) 비디오 관련 메타데이터 (메타데이터 비트스트림)를 획득할 수 있다. 획득된 메쉬(Mesh) 비디오 비트스트림은 메쉬(Mesh) 비디오 디코더로, 획득된 메쉬(Mesh) 비디오 관련 메타데이터 (메타데이터 비트스트림)는 메타데이터 처리부로 전달할 수 있다. 메쉬(Mesh) 비디오 비트스트림은 메타데이터(메타데이터 비트스트림)를 포함할 수도 있다. 메타데이터 처리부는 메쉬(Mesh) 비디오 디코더에 포함될 수도 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 디캡슐레이션 처리부가 획득하는 메쉬(Mesh) 비디오 관련 메타데이터는 파일 포맷 내의 박스 혹은 트랙 형태일 수 있다. 디캡슐레이션 처리부는 필요한 경우 메타데이터 처리부로부터 디캡슐레이션에 필요한 메타데이터를 전달받을 수도 있다. 메쉬(Mesh) 비디오 관련 메타데이터는 메쉬(Mesh) 비디오 디코더에 전달되어 메쉬(Mesh) 비디오 디코딩 절차에 사용될 수도 있고, 또는 렌더러에 전달되어 메쉬(Mesh) 비디오 렌더링 절차에 사용될 수도 있다.
메쉬(Mesh) 비디오 디코더는 비트스트림을 입력받아 메쉬(Mesh) 비디오 인코더의 동작에 대응하는 동작을 수행하여 비디오/영상을 디코딩할 수 있다. 디코딩된 메쉬(Mesh) 비디오는 비디오/영상은 디스플레이부를 통하여 디스플레이될 수 있다. 사용자는 VR/AR 디스플레이 또는 일반 디스플레이 등을 통하여 렌더링 된 결과의 전부 또는 일부 영역을 볼 수 있다.
피드백 과정은 렌더링/디스플레이 과정에서 획득될 수 있는 다양한 피드백 정보들을 송신측으로 전달하거나 수신측의 디코더에 전달하는 과정을 포함할 수 있다. 피드백 과정을 통해 메쉬(Mesh) 비디오 소비에 있어 인터랙티비티 (interactivity) 가 제공될 수 있다. 실시예에 따라, 피드백 과정에서 헤드 오리엔테이션 (Head Orientation) 정보, 사용자가 현재 보고 있는 영역을 나타내는 뷰포트 (Viewport) 정보 등이 전달될 수 있다. 실시예에 따라, 사용자는 VR/AR/MR/자율주행 환경 상에 구현된 것들과 상호작용 할 수도 있는데, 이 경우 그 상호작용과 관련된 정보가 피드백 과정에서 송신측 내지 서비스 프로바이더 측으로 전달될 수도 있다. 실시예에 따라 피드백 과정은 수행되지 않을 수도 있다.
헤드 오리엔테이션 정보는 사용자의 머리 위치, 각도, 움직임 등에 대한 정보를 의미할 수 있다. 이 정보를 기반으로 사용자가 현재 메쉬(Mesh) 비디오 내에서 보고 있는 영역에 대한 정보, 즉 뷰포트 정보가 계산될 수 있다.
뷰포트 정보는 현재 사용자가 메쉬(Mesh) 메쉬(Mesh) 비디오에서 보고 있는 영역에 대한 정보일 수 있다. 이를 통해 게이즈 분석 (Gaze Analysis) 이 수행되어, 사용자가 어떠한 방식으로 메쉬(Mesh) 비디오를 소비하는지, 메쉬(Mesh) 비디오의 어느 영역을 얼마나 응시하는지 등을 확인할 수도 있다. 게이즈 분석은 수신측에서 수행되어 송신측으로 피드백 채널을 통해 전달될 수도 있다. VR/AR/MR 디스플레이 등의 장치는 사용자의 머리 위치/방향, 장치가 지원하는 수직 (vertical) 혹은 수평 (horizontal) FOV 등에 근거하여 뷰포트 영역을 추출할 수 있다.
실시예에 따라, 전술한 피드백 정보는 송신측으로 전달되는 것뿐 아니라, 수신측에서 소비될 수도 있다. 즉, 전술한 피드백 정보를 이용하여 수신측의 디코딩, 렌더링 과정 등이 수행될 수 있다. 예를 들어, 헤드 오리엔테이션 정보 및/또는 뷰포트 정보를 이용하여 현재 사용자가 보고 있는 영역에 대한 메쉬(Mesh) 비디오만 우선적으로 디코딩 및 렌더링 될 수도 있다.
이 문서는 상술한 바와 같이 동적 메쉬(Mesh) 비디오 압축에 관한 것이다. 이 문서에서 개시된 방법/실시예는 MPEG (Moving Picture Experts Group)의 Video-based Dynamic Mesh 압축 방법 (V-Mesh) 표준 또는 차세대 비디오/이미지 코딩 표준에 적용될 수 있다. 동적 메쉬(Mesh) 비디오 압축은 시간에 따라 변하는 Mesh 연결 정보 및 속성들을 처리하기 위한 방법이며, 이것은 실시간 통신, 저장, 자유 시점 비디오, AR/VR과 같은 다양한 어플리케이션을 위한 손실 및 무손실 압축을 수행할 수 있다.
이하에 기술된 동적 메쉬 비디오 압축 방법은 MPEG의 V-Mesh 방법에 기반한다.
이 문서에서 픽처(picture)/프레임(frame)은 일반적으로 특정 시간대의 하나의 영상을 나타내는 단위를 의미할 수 있다.
픽셀(pixel) 또는 펠(pel)은 하나의 픽처(또는 영상)을 구성하는 최소의 단위를 의미할 수 있다. 또한, 픽셀에 대응하는 용어로서 '샘플(sample)'이 사용될 수 있다. 샘플은 일반적으로 픽셀 또는 픽셀의 값을 나타낼 수 있으며, 루마(luma) 성분의 픽셀/픽셀값만을 나타낼 수도 있고, 크로마(chroma) 성분의 픽셀/픽셀 값만을 나타낼 수도 있고, 또는 뎁스(depth) 성분의 픽셀/픽셀값만을 나타낼 수도 있다.
유닛(unit)은 영상 처리의 기본 단위를 나타낼 수 있다. 유닛은 픽처의 특정 영역 및 해당 영역에 관련된 정보 중 적어도 하나를 포함할 수 있다. 유닛은 경우에 따라서 블록(block) 또는 영역(area) 등의 용어와 혼용하여 사용될 수 있다. 일반적인 경우, MxN 블록은 M개의 열과 N개의 행으로 이루어진 샘플들(또는 샘플 어레이) 또는 변환 계수(transform coefficient)들의 집합(또는 어레이)을 포함할 수 있다.
도1의 인코딩 프로세스(Encoding Process)는 다음과 같다.
비디오 기반 다이나믹 메쉬 컴프레션(Video-based dynamic mesh compression)(V-Mesh) 압축 방법은 HEVC, VVC 등의 2D 비디오 코덱을 기반으로 동적 메쉬(Mesh) 비디오 데이터를 압축하는 방법을 제공할 수 있다. V-Mesh 압축 과정에서는 다음과 같은 데이터를 입력으로 받아 압축을 수행한다.
인풋 메쉬(Input mesh): 메쉬(Mesh)를 구성하는 정점들의 3차원 좌표(지오메트리), 각 정점의 법선 정보, 메쉬(Mesh) 표면을 2D 평면에 매핑하는 매핑 정보, 표면을 구성하는 정점들 간의 연결 정보 등을 포함하고 있다. 메쉬(Mesh)의 표면은 삼각형 또는 그 이상의 다각형으로 표현될 수 있으며 정해진 형태에 따라 각 표면을 구성하는 정점들 간 연결 정보가 저장되어 있다. 인풋 메쉬(Input mesh)는 OBJ 파일 포맷으로 저장될 수 있다.
어트리뷰트 맵(Attribute map): (이하 텍스쳐 맵(Texture map)도 같은 의미로 사용됨): 메쉬(Mesh)의 속성 (색상, 법선, 변위 등) 정보를 포함하고 있으며, 메쉬(Mesh)의 표면을 2D 이미지 상에 매핑한 형태로 데이터를 저장하고 있다. 이 어트리뷰트 맵(Attribute map)의 각 데이터가 메쉬(Mesh)의 어느 부분(표면 혹은 정점)에 해당되는지 매핑하는 것은 인풋 메쉬(Input mesh)에 포함되어 있는 매핑 정보를 바탕으로 한다. 어트리뷰트 맵(Attribute map)은 메쉬(Mesh) 비디오의 각 프레임에 대한 데이터를 갖고 있기 때문에 어트리뷰트 맵(Attribute map) 비디오(혹은 줄여서 어트리뷰트)라고도 표현할 수 있다. V-Mesh 압축 방법에서의 어트리뷰트 맵(Attribute map)은 메쉬(Mesh)의 색상 정보를 주로 갖고 있으며, 이미지 파일 포맷 (PNG, BMP 등)으로 저장된다.
머터리얼 라이브러리 파일(Material Library File): 메쉬(Mesh)에서 사용되는 머터리얼(Material) 속성 정보를 포함하고 있으며, 특히 입력 메쉬(Mesh)와 이에 대응하는 어트리뷰트 맵(Attribute map)을 연결해주는 정보를 포함한다. 이것은 웨이브프론트 머터리얼 템플릿 라이브러리(Wavefront Material Template Library) (MTL) 파일 포맷으로 저장된다.
V-Mesh 압축 방법에서 압축 과정을 통해 다음과 같은 데이터 및 정보들이 생성될 수 있다.
베이스 메쉬(Base mesh): 전처리 과정을 거쳐 인풋 메쉬(Input mesh)를 단순화 (Decimation)함으로써, 사용자의 기준에 따라 정해진 최소한의 정점을 이용하여 인풋 메쉬(Input mesh)의 객체를 표현한다.
디스플레이스먼트(Displacement): 베이스 메쉬(Base mesh)를 이용하여 인풋 매쉬(Input mesh)를 최대한 유사하게 하기 표현하기 위해 사용되는 변위 정보로, 3차원 좌표 형태로 표현된다.
아틀라스 정보(Atlas information): 베이스 메쉬(Base mesh), 디스플레이스먼트(Displacement) 및 어트리뷰트 맵(Attribute map) 정보를 이용하여 메쉬(Mesh)를 재구성하기 위해 필요한 메타데이터이다. 이것은 메쉬(Mesh)를 구성하는 서브 단위(sub-mesh, patch 등)로 생성되고 활용될 수 있다.
도2 내지 도7을 참조하여, 메쉬 위치 정보(버텍스)를 부호화하는 방법을 설명하고, 도6-10 등을 참조하여 메쉬 위치 정보를 복원하여 어트리뷰트 정보(어트리뷰트 맵)을 부호화하는 방법을 설명한다.
도2는 실시예들에 따른 V-MESH 압축 방법을 나타낸다.
도2는 도1의 인코딩 과정을 나타내며, 인코딩 과정은 프리-프로세싱 및 인코딩 과정을 포함할 수 있다. 도1의 인코더는 도2와 같이 프리-프로세서(200) 및 인코더(201)를 포함할 수 있다. 도1의 송신 장치가 넓게 인코더로 지칭될 수 있고, 도1의 다이나믹 메쉬 비디오 인코더가 인코더로 지칭될 수 있다. V-Mesh 압축 방법은 도2와 같이 전처리(Pre-processing, 200)와 인코딩(Encoding, 201) 과정을 포함할 수 있다. 도2의 프리-프로세서는 도2의 인코더 앞 단에 위치할 수 있다. 도2의 프리-프로세서 및 인코더를 포함하여 하나의 인코더로 지칭할 수 있다.
프리-프로세서는 스태틱 다이나믹 메쉬 및/또는 어트리뷰트 맵을 수신할 수 있다. 프리-프로세서는 전처리를 통해 베이스 메쉬 및/또는 디스플레이스먼트를 생성할 수 있다. 프리-프로세서는 인코더로부터 피드백 정보를 수신하여, 피드백 정보에 기초하여 베이스 메쉬 및/또는 디스플레이스먼트를 생성할 수 있다.
인코더는 베이스 메쉬, 디스플레이스먼트, 스태틱 다이나믹 메쉬, 및/또는 어트리뷰트 맵을 수신할 수 있다. 인코더는 메쉬 관련 데이터를 인코딩하여 압축된 비트스트림을 생성할 수 있다.
도3은 실시예들에 따른 V-MESH 압축의 프리-프로세싱을 나타낸다.
도3은 도2의 프리-프로세서의 구성 및 동작을 나타낸다.
도3은 입력 메쉬(mesh)에 대해 전처리를 수행하는 과정을 보여준다. 전처리 과정(200)은 크게 4단계로, 1) GoF (Group of Frame) 생성(generation), 2) 메쉬 단순화(Mesh Decimation), 3) UV 파라미터제이션(parameterization), 4) 피팅 서브디비전 서페이스(Fitting subdivision surface, 300)를 포함할 수 있다. 프리-프로세서(200)은 입력 메쉬를 수신하고 디스플레이스먼트 및/또는 베이스 메쉬를 생성하여, 인코더(201)로 전달할 수 있다. 프리-프로세서(200)는 GoF생성과 연관된 GoF정보를 인코더(201)로 전달할 수 있다.
이하에서, 도3의 각 단계를 설명한다.
GoF 제너레이션(Generation): 메쉬(Mesh) 데이터의 참조 구조를 생성하는 과정이다. 이전 프레임의 메쉬(mesh)와 현재 메쉬(mesh)의 정점 개수, 텍스처 좌표 개수, 정점 연결 정보, 텍스처 좌표 연결 정보가 모두 동일한 경우에는 이전 프레임을 참조 프레임으로 설정할 수 있다. 즉, 현재 입력 메쉬(Input mesh)와 참조 입력 메쉬(Input mesh)간 정점 좌표 값만 다른 경우에는 인터 프레임 인코딩(inter frame encoding)을 수행할 수 있다. 그렇지 않으면 해당 프레임은 인트라 프레임 인코딩(Intra frame encoding)을 수행한다.
메쉬 단순화(Mesh Decimation): 입력 메쉬(Input mesh)를 단순화시켜 간략화된 메쉬(mesh), 즉 베이스 메쉬(Base mesh)를 생성하는 과정이다. 원본 메쉬(mesh)에서 사용자가 정의한 기준에 따라 제거할 정점을 선택한 후, 선택된 정점 및 선택된 정점과 연결된 삼각형들을 제거할 수 있다.
메쉬 단순화(Mesh decimation)를 수행하는 과정에서 복셀화된 입력 메쉬(Input mesh (voxelized)), 타겟 트라이앵글 비율(Target triangle ratio (TTR)), 미니멈 트라이앵글 컴포넌트(Minimum triangle component (CCCount))정보가 입력으로 전달되고, 출력으로 단순화된 메쉬(Decimated mesh)를 구할 수 있다. 이 과정에서 설정된 미니멈 트라이앵글 컴포넌트(CCCount)보다 작은 연결된 트라이앵글 컴포넌트(connected triangle components)를 제거할 수 있다.
UV 파라미터제이션(parameterization): 단순화된 메쉬(Decimated mesh)에 대해 3D 곡면을 텍스쳐 도메인(Texture domain)으로 매핑하는 과정이다. UV아틀라스 툴(UVAtlas tool)을 사용하여 파라미터제이션(Parameterization)을 수행할 수 있다. 이 과정을 통해 단순화된 메쉬(Decimated mesh)의 각 정점들이 2D 이미지 상의 어느 위치로 매핑될 수 있는지 매핑 정보가 생성된다. 매핑 정보는 텍스처 좌표로 표현되어 저장되며, 이 과정을 통해 최종 베이스 메쉬(Base mesh)가 생성된다.
핏팅 서브디비전 서페이스(Fitting subdivision surface): 단순화된 메쉬(Decimated mesh)에 대해 세분화(Subdivision)를 수행하는 과정이다. 서브디비전(Subdivision) 방법으로 미드-엣지(Mid-edge) 방식 등 사용자가 정한 방법이 적용될 수 있다. 입력 메쉬(Input mesh)와 서브디비전(Subdivision)을 수행한 메쉬(mesh) 간 서로 유사해지도록 핏팅(fitting)을 하는 과정이 수행된다.
도4는 실시예들에 따른 미드-엣지 서브디비전 방식을 나타낸다.
도4는 도3에서 설명한 핏팅 서브디비전 서페이스의 미드-엣지(Mid-edge) 방식을 나타낸다. 도4를 참조하면, 버텍스 4개를 포함하는 오리지널 메쉬가 서브디비전되어 서브-메쉬가 생성된다. 버텍스 간 엣지의 중간을 새로운 버텍스로 생성하여 서브 메쉬를 생성할 수 있다.
핏팅(Fitting)된 서브디비전된 메쉬(subdivided mesh) (이하, 핏팅 서브디비전된 메쉬(fitted subdivided mesh))가 생성되면 이 결과와 미리 압축 및 복호화된 베이스 메쉬(Base mesh) (이하, 복원된 베이스 메쉬(reconstructed base mesh))를 이용하여 디스플레이스먼트(Displacement)가 계산된다. 즉, 복원된 베이스 메쉬(Reconstructed base mesh)는 핏팅 서브디비전 서페이스(Fitting subdivision surface)의 방법과 동일하게 서브디비전(Subdivision)된다. 이 결과와 핏팅 서브디비전된 메쉬(Fitted subdivided mesh)의 각 정점 별 위치 차이는 곧 각 정점에 대한 디스플레이스먼트(Displacement)가 된다. 디스플레이스먼트(Displacement)는 3차원 공간 상의 위치 차이를 나타내기 때문에 역시 데카르트(Cartesian) 좌표계의 (x, y, z) 공간에서의 값으로 표현된다. 사용자 입력 파라미터에 따라 (x, y, z) 좌표값은 로컬 좌표 시스템(Local coordinate system)의 (노멀, 탄젠셜, 바이-탄젠셜((normal, tangential, bi-tangential)) 좌표값으로 변환될 수 있다.
도5는 실시예들에 따른 디스플레이스먼트 생성 과정을 나타낸다.
도5는 도4에서 설명한 바와 같이, 핏팅 서브디비전 서페이스(Fitting subdivision surface, 300)의 디스플레이스먼트 계산 방식을 상세히 나타낸다.
실시예들에 따른 인코더 및/또는 프리-프로세서는 1) 서브디비전부, 2) 로컬 좌표 시스템 계산부, 3) 디스플레이스먼트 계산부를 포함할 수 있다. 서브디비전부는 복원된 베이스 메쉬를 수신하고, 서브디비전된 복원된 베이스 메쉬를 생성할 수 있다. 로컬 좌표 시스템 계산부는 핏팅된 서브디비전된 메쉬 및 서브디비전된 복원된 베이스 메쉬를 수신하고, 메쉬에 관한 좌표 시스템을 로컬 좌표 시스템으로 변환할 수 있다. 로컬 좌표 시스템 계산 동작은 선택적일 수 있다. 디스플레이스먼트 계산부는 핏팅된 서브디비전 메쉬 및 서브디비전된 복원된 베이스 메쉬 간 위치 차이를 계산한다. 예를 들어, 입력한 두 가지 메쉬의 정점 간 위치 차이 값을 생성할 수 있다. 정점 위치 차이값이 디스플레이스먼트가 된다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법 및 장치는 포인트 클라우드를 다음과 같이 인코딩할 수 있다. 실시예들에 따른 포인트 클라우드 데이터(줄여서 포인트 클라우드로 지칭 가능함)는 정점 좌표 및 색상 정보를 포함하는 데이터를 지칭할 수 있다. 포인트 클라우드는 메쉬 데이터를 포함하는 용어이고, 본 문서에서 포인트 클라우드 및 메쉬 데이터는 서로 혼용되어 사용될 수 있다.
실시예들에 따른 V-Mesh 압축(복원) 방법은 인트라 프레임 인코딩(Intra frame encoding) (도6)과 인터 프레임 인코딩(Inter frame encoding) (도7)을 포함할 수 있다.
전술한 GoF 제너레이션의 결과를 바탕으로 인트라 프레임 인코딩(Intra frame encoding) 혹은 인터 프레임 인코딩(Inter frame encoding)이 수행된다. 인트라 인코딩(Intra encoding)인 경우 압축 대상 데이터는 베이스 메쉬(Base mesh), 디스플레이스먼트(Displacement), 어트리뷰트 맵(Attribute map) 등이 될 수 있다. 인터 인코딩(Inter encoding)인 경우 압축 대상 데이터는 디스플레이스먼트(Displacement), 어트리뷰트 맵(Attribute map), 그리고 참조 베이스 메쉬(base mesh)와 현재 베이스 메쉬(base mesh) 간의 모션 필드(motion field) 등이 될 수 있다.
도6은 실시예들에 따른 V-MESH 압축 방법의 인트라 프레임 인코딩 프로세스를 나타낸다.
도6의 인코딩 프로세스는 도1의 인코딩을 상세하게 나타낸다. 즉, 도1의 인코딩이 인트라 프레임 방식인 경우 인코더의 구성을 나타낸다. 도6의 인코더는 프리프로세서(200) 및/또는 인코더(201)을 포함할 수 있다.
프리-프로세서는 입력 메쉬를 수신하고, 전술한 전처리를 수행할 수 있다. 전처리를 통해 베이스 메쉬 및/또는 핏팅된 서브디비전된 메쉬를 생성할 수 있다. 양자화기는 베이스 메쉬 및/또는 핏팅된 서브디비전된 메쉬를 양자화할 수 있다. 스태틱 메쉬 인코더는 스태틱 메쉬를 인코딩할 수 있다. 스태틱 메쉬 인코더는 부호화된 베이스 메쉬를 포함하는 비트스트림을 생성할 수 있다. 스태틱 매쉬 디코더는 부호화된 스태틱 메쉬를 복호화할 수 있다. 역양자화기는 양자화된 스태틱 메쉬를 역으로 양자화할 수 있다. 디스플레이스먼트 계산부는 복원된 스태틱 메쉬를 수신하고, 핏팅된 서브디비전된 메쉬에 기초하여, 위치 차이인 디스플레이스먼트를 생성할 수 있다. 포워드 리니어 리프팅부는 디스플레이스먼트를 수신하여 리프팅 계수를 생성할 수 있다. 양자화기는 리프팅 계수를 양자화할 수 있다. 이미지 패킹부는 양자화된 리프팅 계수에 기초하여 이미지를 패킹할 수 있다. 비디오 인코더는 패킹된 이미지를 부호화할 수 있다. 비디오 디코더는 부호화된 비디오를 복호화한다. 이미지 언패커는 패킹된 이미지를 언패킹할 수 있다. 역양자화기는 이미지를 역으로 양자화할 수 있다. 역 리니어 리프팅부는 이미지에 역으로 리프팅을 적용하여 복원왼 디스플레이스먼트를 생성한다. 메쉬 복워부는 복원된 디스플레이스먼트를 및 복원된 베이스 메쉬를 통해 변형된 메쉬를 복원한다. 어트리뷰트 트랜스퍼는 입력 메쉬 및/또는 입력 어트리뷰트 맵을 수신하고, 복원된 변형된 메쉬에 기초하여 어트리뷰트 맵을 생성한다. 푸쉬-풀 패딩은 푸쉬-풀 방식에 기초하여 어트리뷰트 맵에 데이터를 패딩할 수 있다. 컬러 스페이스 변환부는 어트리뷰트인 컬러 성분의 스페이스를 변환할 수 있다. 비디오 인코더는 어트리뷰트를 인코딩할 수 있다. 멀티플렉서는 압축된 베이스 메쉬, 압축된 디스플레이스먼트, 압축된 어트리뷰트를 멀티플렉싱하여 비트스트림을 생성할 수 있다.
도7은 실시예들에 따른 V-MESH압축 방법의 인터 프레임 인코딩 프로세스를 나타낸다.
도7의 인코딩 프로세스는 도1의 인코딩을 상세하게 나타낸다. 즉, 도1의 인코딩이 인터 프레임 방식인 경우 인코더의 구성을 나타낸다. 도7의 인코더는 프리프로세서(200) 및/또는 인코더(201)을 포함할 수 있다.
도7의 인코딩 동작 중 도6의 인코딩 동작과 대응하는 구성은 도7의 설명을 참조한다. 도7의 인터 프레임 기반 인코딩을 위해서, 모션 인코더는 복원된 양자화된 참조 베이스 메쉬에 기초하여 모션을 인코딩할 수 있다. 베이스 메쉬 복원부는 복원된 양자화된 참조 베이스 메쉬에 기초하여 베이스 메쉬를 복원할 수 있다.
도6의 인코더는 프레임 내 베이스 메쉬, 디스플레이스먼트, 어트리뷰트를 압축하여 비트스트림을 생성하고, 도7의 인코더는 현재 프레임 및 참조 프레임 간 모션, 디스플레이스먼트, 어트리뷰트를 압축하여 비트스트림을 생성한다.
실시예들에 따른 인코딩 방법은 베이스 메쉬 인코딩(Base mesh encoding) (인트라 인코딩(Intra encoding))을 포함한다. 현재 입력 메쉬(Input mesh) 프레임에 대해 인트라 프레임 인코딩(Intra frame encoding)을 수행하는 경우, 전처리 과정에서 생성된 베이스 메쉬(Base mesh)를 양자화 과정을 거친 후 정적 메쉬(Mesh) 압축 기술을 사용하여 부호화할 수 있다. V-Mesh 압축 방법에서, 예를 들어, 드라코(Draco) 기술이 적용되었으며, 베이스 메쉬(Base mesh)의 정점 위치 정보, 매핑 정보(텍스처 좌표), 정점 연결 정보 등이 압축 대상이 된다.
실시예들에 따른 인코딩 방법은 모션 필드 인코딩(Motion field encoding)(인터 인코딩((Inter encoding))을 포함할 수 있다. 인터 프레임 인코딩(Inter frame encoding)은 참조 메쉬(Mesh)와 현재 입력 메쉬(Input mesh)가 정점의 일대일 대응 관계가 성립되고, 정점의 위치 정보만 다를 경우에 수행될 수 있다. 인터 프레임 인코딩(Inter frame encoding)을 수행하는 경우, 베이스 메쉬(Base mesh)를 압축하는 대신 참조 베이스 메쉬(Base mesh)와 현재 베이스 메쉬(Base mesh)의 정점 간 차이, 즉 모션 필드(motion field)를 계산하여 이 정보를 부호화할 수 있다. 참조 베이스 메쉬(Base mesh)는 이미 복호화된 베이스 메쉬(Base mesh) 데이터를 양자화한 결과이며 GoF 제너레이션에서 결정된 참조 프레임 인덱스에 따라 결정된다. 모션 필드(Motion field)는 값 그대로 부호화 될 수도 있다. 또는, 현재 정점과 연결된 정점들 중 복원된 정점들의 모션 필드(Motion field)를 평균하여 예측된 모션 필드(Predicted motion field)를 계산하고, 이 예측된 모션 필드(Predicted motion field) 값과 현재 정점의 모션 필드(Motion field) 값의 차이인 잔차 모션 필드(Residual motion field)를 부호화할 수 있다. 이 값은 엔트로피 코딩(Entropy coding)을 이용하여 부호화될 수 있다. 인터 프레임 인코딩(Inter frame encoding)의 모션 필드 인코딩(Motion field encoding) 과정을 제외한 디스플레이스먼트(Displacement) 및 어트리뷰트 맵(Attribute map)을 부호화하는 과정은 인트라 프레임 인코딩(Intra frame encoding) 방식에서 베이스 메쉬 인코딩(Base mesh encoding)을 제외한 나머지 구조와 동일하다.
도8은 실시예들에 따른 디스플레이스먼트에 대한 리프팅 변환 과정을 나타낸다.
도9는 실시예들에 따른 변환 계수를 2D 이미지에 패킹하는 과정을 나타낸다.
도8-9는 도6-7의 인코딩 프로세스의 디스플레이스먼트를 변환하는 과정 및 변환 계수를 패킹하는 과정을 각각 나타낸다.
실시예들에 따른 인코딩 방법은 디스플레이스먼트 인코딩(Displacement encoding)을 포함한다.
베이스 메쉬 인코딩 및/또는 모션 필드 인코딩을 통해 베이스 메쉬(Base mesh) 부호화 후 복원 및 역양자화를 거쳐 복원된 베이스 메쉬(Recon. base mesh)가 생성되고 이에 대해 서브디비전(Subdivision)을 수행한 결과와, 핏팅 서브디비전 서페이스를 통해 생성된 핏팅된 서브디비전된 메쉬(Fitted subdivided mesh)간의 디스플레이스먼트(Displacement)를 계산할 수 있다. 효과적인 부호화를 위해 웨이브릿 변환(Wavelet transform)과 같은 데이터 변환(Data transform) 과정이 디스플레이스먼트(Displacement) 정보에 적용될 수 있다.
도8은 V-Mesh에서 리프팅 변환(Lifting transform)을 사용하여 디스플레이스먼트(Displacement) 정보를 변환하는 과정을 보여준다. 변환 과정을 거쳐 생성된 변환 계수들은 양자화 후, 도9에서와 같이 2D 이미지에 패킹 (Packing)된다. 변환 계수들은 256 (=16×16)개 단위마다 하나의 블록으로 구성되고, 각 블록은 z스캔 순서(z-scan order)로 패킹될 수 있다. 블록의 가로 개수는 16개로 고정하되, 블록의 세로 개수는 서브디비전된 베이스 메쉬(Subdivided base mesh)의 정점 개수에 따라 결정될 수 있다. 하나의 블록 내에서 몰톤 코드(Morton code)로 정렬하여 변환 계수를 패킹할 수 있다. 패킹 된 이미지들은 GoF 단위마다 디스플레이스먼트 비디오(Displacement video)를 생성하고, 이 디스플레이스먼트 비디오(Displacement video)를 기존의 비디오 압축 코덱을 이용하여 부호화할 수 있다.
도8을 참조하면, 베이스 메쉬(original)는 LoD0에 대한 버텍스 및 엣지를 포함할 수 있다. 베이스 메쉬를 분할하여 생성된 제1서브디비전 메쉬는 베이스 메쉬의 엣지를 추가분할하여 생성된 버텍스를 포함한다. 제1서브디비전 메쉬는 LoD0에 대한 버텍스 및 LoD1에 대한 버텍스를 포함한다. LoD1은 서브디비전된 버텍스 및 베이스 메쉬의 버텍스(LoD0)를 포함한다. 제1서브디비전 메쉬를 분할하여 제2서브디비전 메쉬를 생성할 수 있다 제2서브디비전 메쉬는 LoD2를 포함한다. LoD2는 베이스 메쉬 버텍스(LoD0), LoD0에서 추가로 생성된 버텍스를 포함하는 LoD1, LoD1에서 추가로 분할된 버텍스를 포함한다. LoD는 상세한 정도를 나타내는 레벨(Level of Detail)이고, 레벨의 인덱스가 커질수록 버텍스 간 거리는 가까워지고, 상세도 레벨은 증가한다. LoD N는 이전 LoDN-1에 포함된 버텍스를 그대로 포함한다. 서브디비전을 통해 버텍스가 추가로 분할되는 경우, 이전 버텍스v1, v2 및 서브디비전된 버텍스v를 고려하면, 메쉬를 예측 및/또는 업데이트 방식에 기초하여 인코딩할 수 있다. 현재 LoD N에 대한 정보를 그래도 부호화하는 대신에 이전 LoD N-1 간 잔차값(Residual)을 생성하여 잔차값을 통해 메쉬를 부호화하여 비트스트림의 사이즈를 줄일 수 있다. 프레딕션 프로세스는 이전 버텍스v1, v2를 통해서 현재 버텍스v를 예측하는 동작을 의미한다. 인접한 서브디비전 메쉬 간 서로 유사한 데이터를 가지기 때문에 이러한 속성을 이용하여 효율적인 부호화를 할 수 있다 현재 버텍스 위치 정보를 이전 버텍스 위치 정보에 대한 잔차로 예측하고, 잔차를 통해 이전 베텍 위치 정보를 업데이트한다.
도9를 참조하면, 버텍스는 리프팅 변환을 통해 생성된 계수를 가진다. 리프팅 변환 관련 버텍스의 계수를 이미지에 패킹하여 부호화할 수 있다.
도10은 실시예들에 따른 V-MESH 압축 방법의 어트리뷰트 트랜스퍼 과정을 나타낸다.
도10은 도6-7 등의 인코딩의 어트리뷰트 트랜스퍼의 상세 동작을 나타낸다.
실시예들에 따른 인코딩은 어트리뷰트 맵 인코딩(Attribute map encoding)을 포함한다.
베이스 메쉬 인코딩, 모션 필드 인코딩, 디스플레이스먼트 인코딩을 통해 입력 메쉬(Input mesh)에 대한 정보를 압축한다. 인코딩(Encoding) 과정에서 압축된 입력 메쉬(Input mesh)는 베이스 메쉬 디코딩(인트라 프레임)(Base mesh decoding (Intra frame)), 모션 필드 인코딩(인터 프레임))(Motion field decoding (Inter frame)), 디스플레이스먼트 비디오 디코딩(Displacement video decoding) 과정을 거쳐 복원되며, 그 복원된 결과인 복원된 변형된 메쉬(Reconstructed deformed mesh) (이하 Recon. deformed mesh로 표현)는 도6 및 도7과 같이 입력 어트리뷰트 맵(Input attribute map)을 압축하는 데에 사용된다. 복원된 변형된 메쉬(Recon. deformed mesh)는 정점의 위치 정보와 텍스처 좌표, 그에 대응하는 연결 정보는 갖고 있지만 텍스처 좌표에 대응하는 색상 정보는 갖고 있지 않은 상태이다. 따라서 도10과 같이, V-Mesh 압축 방법에서 어트리뷰트 트랜스퍼(Attribute transfer) 과정을 통해, 복원된 변형된 메쉬(Recon. deformed mesh)의 텍스처 좌표에 상응하는 색상 정보를 갖는 새로운 어트리뷰트 맵(Attribute map)을 생성한다.
어트리뷰트 트랜스퍼(Attribute transfer)는 먼저 2D 텍스쳐 도메인(Texture domain)의 모든 포인트 P(u, v) 에 대해 해당 점이 복원된 변형된 메쉬(Recon. deformed mesh)의 텍스쳐 트라이앵글(texture triangle) 안에 속해 있는지 확인하고, 텍스쳐 트라이앵글 T(texture triangle T) 안에 존재한다면 그 트라이앵글 T(triangle T)에 따른 P(u, v)의 질량중심 좌표 (barycentric coordinate) (α, β γ)를 계산한다. 그리고 트라이앵글 T(triangle T)의 3D 정점 위치와 (α, β γ)를 사용하여 P(u, v)의 3D 좌표 M(x, y, z)를 계산한다. 입력 메쉬 도메인(Input mesh domain)에서 계산된 M(x, y, z)와 가장 유사한 위치에 해당하는 정점 좌표 M'(x', y', z')과 이 점을 포함하는 triangle T' 을 찾는다. 그리고 이 triangle T' 에서 M'(x', y', z')의 질량중심 좌표 (α', β', γ')을 계산한다. Triangle T' 의 세 정점에 대응하는 텍스처 좌표들과 (α', β', γ') 을 이용하여 텍스처 좌표 (u', v')를 계산하고, 이 좌표에 해당하는 색상 정보를 입력 어트리뷰트 맵(Input attribute map)에서 찾는다. 이렇게 찾아진 색상 정보는 곧 새로운 어트리뷰트 맵(Input attribute map)의 (u, v) 픽셀 위치에 할당된다. 만약 P(u, v)가 어느 트라이앵글(triangle)에도 속하지 않는다면 새로운 어트리뷰트 맵(Input attribute map)에서 해당 위치 픽셀은 푸쉬-풀 알고리즘(Push-Pull algorithm)과 같이 패딩 알고리즘(padding algorithm)을 이용하여 색상 값이 채워질 수 있다.
어트리뷰트 트랜스퍼(Attribute transfer)를 통해 생성된 새로운 어트리뷰트 맵(Attribute map)은 GoF 단위로 묶여 어트리뷰트 맵 비디오(Attribute map video)를 구성하고, 이것은 비디오 코덱을 이용하여 압축된다.
도10을 참조하면, 입력 메쉬, 입력 어트리뷰트 맵, 복원된 메쉬, 생성된 어트리뷰트 맵 간 참조 관계를 알 수 있다.
도1의 디코딩 프로세싱(Decoding process)은 도1의 인코딩 프로세스의 대응하는 과정의 역과정을 수행할 수 잇다. 구체적 디코딩 프로세스는 다음과 같다.
도11은 실시예들에 따른 V-MESH 압축 방법의 인트라 프레임 디코딩 프로세스를 나타낸다.
도11은 도1등의 수신 장치의 디코더의 구성 및 동작을 나타낸다.
도11은 V-Mesh 기술의 인트라 디코딩(intra decoding) 과정을 보여준다. 먼저 입력 비트스트림은 메쉬 서브 스트림(Mesh sub-stream), 디스플레이스먼트 서브 스트림(Displacement sub-stream), 어트리뷰트 맵 서브 스트림(Attribute map sub-stream), 그리고 V3C/V-PCC와 같이 메쉬(Mesh)의 패치(patch) 정보를 포함하는 서브 스트림(Sub-stream)으로 분리될 수 있다.
메쉬 서브 스트림(Mesh sub-stream)은 예를 들어, 구글 드라코(Google Draco)와 같은 인코딩(Encoding)에서 사용한 정적 메쉬(Mesh) 코덱의 디코더를 통해 복호화되어, 그 결과 베이스 메쉬(Base mesh)의 연결 정보, 정점 기하정보, 정점 텍스처 좌표 등을 복원할 수 있다. 디스플레이스먼트 서브 스트림(Displacement sub-stream)은 인코딩(Encoding)에서 사용한 비디오 압축 코덱의 디코더를 통해 디스플레이스먼트 비디오(Displacement video)로 복호화되고, 이미지 언패킹(Image unpacking), 역 양자화(Inverse quantization), 역 변환(Inverse transform) 과정을 거쳐 각 정점에 대한 디스플레이스먼트(Displacement) 정보로 복원된다. 복원된 베이스 메쉬(Base mesh)에 대해 역양자화(Inverse quantization)가 적용된 후 이 결과는 복원된 디스플레이스먼트(Displacement) 정보와 결합되어 최종 복호화된 메쉬(Decoded mesh)를 생성한다.
어트리뷰트 맵 서브 스트림(Attribute map sub-stream)은 인코딩(Encoding)에서 사용한 비디오 압축 코덱의 디코더를 통해 복호화된 후, 색상 포맷 변환 등의 과정을 거쳐 최종적인 어트리뷰트 맵(Attribute map)으로 복원된다.
복원된 복호화된 메쉬(Decoded mesh)와 복호화된 어트리뷰트 맵(Decoded attribute map)은 사용자가 활용할 수 있는 최종적인 메쉬 데이터(Mesh data)로써 수신단에서 활용될 수 있다.
도11을 참조하면, 비트스트림은 패치 정보, 메쉬 서브 스트림, 디스플레이스먼트 서브 스트림, 어트리뷰트 맵 서브 스트림을 포함한다. 서브 스트림은 비트스트림에 포함된 일부 비트스트림을 지칭하는 용어로 해석된다. 비트스트림은 패치 정보(데이터), 메쉬 정보(데이터), 디스플레이스먼트 정보(데이터), 어트리뷰트 캡 정보(데이터)를 포함한다.
디코더는 프레임 내 다음 디코딩 동작을 수행한다. 스태틱 메쉬 디코더는 메쉬를 복호화하여 복원된 양자호된 베이스 메쉬를 생서앟고, 역양자화기는 양자화기의 양자화 파라미터를 역으로 적용하여, 복원된 베이스 메쉬를 생성한다. 비디도 디코더는 디스플레이스먼트를 복호화하고, 언패커는 복호호된 비디오 이미지를 언패킹하고, 역양자화기는 양자화되었던 이미지를 역으로 양자화한다. 리니어 리프팅 역변환부는 인코더의 역과정으로 리프팅 변환을 적용하여 복원된 디스플레이스먼트를 생성한다. 메쉬 복원부는 베이스 메쉬 및 디스플레이스먼트에 기초하여 변형된 메쉬를 생성한다. 비디오 디코더는 어트리뷰트 맵을 복호화하고, 컬러 변환부는 컬러 포맷 및/또는 스페이스를 변환하여 복호화된 어트리뷰트 맵을 생성한다.
도12는 V-MESH 압축 방법의 인터 프레임 디코딩 프로세스를 나타낸다.
도12는 도1등의 수신 장치의 디코더의 구성 및 동작을 나타낸다.
도12는 V-Mesh 기술의 인터 디코딩(Inter decoding) 과정을 보여준다. 먼저 입력 비트스트림은 모션 서브 스트림(Motion sub-stream), 디스플레이스먼트 서브 스트림(Displacement sub-stream), 어트리뷰트 서브 스트림(Attribute sub-stream), 그리고 V3C/V-PCC와 같이 메쉬(Mesh)의 패치(patch) 정보를 포함하는 서브 스트림(sub-stream)으로 분리될 수 있다.
모션 서브 스트림(Motion sub-stream)은 엔트로피 디코딩(Entropy decoding)과 인버스 프레딕션(Inverse prediction) 과정을 통해 복호화되고, 복원된 모션(Motion) 정보는 이미 복원된 참조 베이스 메쉬(Base mesh)와 결합하여 현재 프레임에 대한 복원된 양자화된 베이스 메쉬(Reconstructed quantized base mesh)를 생성한다. 이에 대해 인버스 양자화(Inverse quantization)을 적용한 결과와, 전술한 인트라 디코딩과 동일한 방법으로 복원된 디스플레이스먼트(Displacement) 정보를 결합하여 최종 복호화된 메쉬(Decoded mesh)를 생성한다. 어트리뷰트 맵 서브 스트림(Attribute map sub-stream)은 인트라 디코딩과 동일한 방법으로 디코딩(Decoding) 된다. 복원된 복호화된 메쉬(Decoded mesh)와 복호화된 어트리뷰트 맵(Decoded attribute map)은 사용자가 활용할 수 있는 최종적인 메쉬 데이터(Mesh data)로써 수신단에서 활용될 수 있다.
도12를 참조하면, 비트스트림은 모션, 디스플레이스먼트, 어트리뷰트 맵을 포함한다. 프레임 간 디코딩을 수행하기 때문에, 프레임 간 모션 정보를 디코딩하는 과정을 더 포함한다. 모션을 복호화하고, 참조 베이스 메쉬에 기초하여 모션에 대한 복원된 양자화된 베이스 메쉬를 생성하여 복원된 베이스 메쉬를 생성한다. 도11과 동일한 도12 동작의 설명은 도11 설명을 참조한다.
도13은 실시예들에 따른 포인트 클라우드 데이터 송신 장치를 나타낸다.
도13은 도1의 송신 장치(100), 다이나믹 메쉬 비디오 인코더(102), 도2 인코더(프리 프로세서 및 인코더), 및/또는 그에 대응하는 송신 인코딩 장치에 대응한다. 도13 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응한다.
V-Mesh 압축 기술을 이용한 동적 메쉬(Mesh) 데이터의 압축 및 전송을 위한 송신단의 동작 과정은 도13과 같을 수 있다.
메쉬 전처리기는 원본 메쉬를 입력받아 단순화된 메쉬 (Decimated mesh)를 생성한다. 단순화는 메쉬를 구성하는 타겟 정점 개수 또는 타겟 다각형 개수를 기준으로 수행할 수 있다. 단순화된 메쉬에 대해 정점 당 텍스처 좌표 및 텍스처 연결정보를 생성하는 매개변수화 (parameterization)가 수행될 수 있다. 또한 부동 소수점 형태의 메쉬 정보들을 고정 소수점 형태로 양자화하는 작업을 수행할 수 있다. 이 결과는 베이스 메쉬로서 정적 메쉬 부호화부를 통해 부호화될 수 있다. 메쉬 전처리부에서는 베이스 메쉬에 대해 메쉬 세분화 (Subdivision)를 수행하여 추가적인 정점을 생성할 수 있다. 세분화 방법에 따라 추가된 정점들을 포함하는 정점 연결 정보, 텍스처 좌표 및 텍스처 좌표의 연결 정보들이 생성될 수 있다. 세분화된 메쉬는 원본 메쉬와 유사해지도록 정점 위치 조정을 통해 피팅 (Fitting)되어 피팅된 세분 메쉬 (Fitted subdivided mesh)를 생성할 수 있다.
해당 메쉬 프레임에 대해 화면내 부호화 (Intra encoding)을 수행하는 경우 메쉬 전처리부를 통해 생성된 베이스 메쉬는 정적 메쉬 부호화부를 통해 압축될 수 있다. 이 경우 베이스 메쉬의 연결 정보, 정점 기하정보, 정점 텍스처 정보, 노말 정보 등에 대해 부호화를 수행할 수 있다. 부호화를 통해 생성된 베이스 메쉬 비트스트림은 다중화부로 전송된다.
해당 메쉬 프레임에 대해 화면간 부호화 (Inter encoding)을 수행하는 경우 움직임 벡터 부호화부가 수행되는데, 베이스 메쉬와 참조 복원 베이스 메쉬를 입력으로 하여 두 메쉬 간의 움직임 벡터를 계산하고 그 값을 부호화할 수 있다. 움직임 벡터 부호화부는 이전에 부/복호화 된 움직임 벡터를 예측자로 사용하여 연결 정보 기반의 예측을 수행하고, 현재 움직임 벡터에서 예측 움직임 벡터를 뺀 잔차 움직임 벡터를 부호화할 수 있다. 부호화를 통해 생성된 움직임 벡터 비트스트림은 다중화부로 전송된다.
부호화 된 베이스 메쉬와 움직임 벡터는 베이스 메쉬 복원부를 통해 복원 베이스 메쉬를 생성할수 있다.
변위 벡터 계산기는 복원된 베이스 메쉬에 대해서 메쉬 세분화를 수행할 수 있다. 변위 벡터는 세분화된 복원 베이스 메쉬와 전처리부에서 생성된 피팅된 세분 메쉬 간의 정점 위치 차이값으로 계산될 수 있다. 그 결과 세분화된 메쉬의 정점 개수만큼 변위 벡터가 계산될 수 있다. 변위 벡터 계산부에서는 3차원 데카르트(Cartesian) 좌표계에서 계산된 변위 벡터를 각 정점의 노말 (Normal) 벡터를 기반으로 한 Local 좌표계로 변환할 수 있다.
변위 벡터 비디오 생성기는 효과적인 부호화를 위해 변위 벡터를 변환 (Transform)할 수 있다. 변환은 실시예에 따라 Lifting 변환, Wavelet 변환 등이 수행될 수 있다. 또한 변환된 변위 벡터 값, 곧 변환 계수에 대해 양자화를 수행할 수 있다. 변환 계수의 각 축마다 다른 양자화 파라미터를 적용할 수 있으며, 부/복호화기의 약속에 의해 양자화 파라미터를 유도할 수 있다. 변환 및 양자화를 거친 변위 벡터 정보들은 2D 이미지로 패킹 (Packing)될 수 있다. 매 프레임마다 패킹된 2D 이미지들을 묶어 변위 벡터 비디오를 생성할 수 있고, 변위 벡터 비디오는 입력 메쉬의 GoF (Group of Frame) 단위마다 생성될 수 있다.
변위 벡터 비디오 부호화기는 생성된 변위 벡터 비디오를 비디오 압축 코덱을 이용하여 부호화할 수 있다. 생성된 변위 벡터 비디오 비트스트림은 다중화부로 전송된다.
변위 벡터 복원기를 통해 복원된 변위 벡터와 베이스 메쉬 복원부를 통해 복원되어 세분화를 거친 베이스 메쉬는 메쉬 복원부를 통해 복원되며, 복원된 메쉬는 복원된 정점, 정점 간 연결 정보, 텍스처 좌표 및 텍스처 좌표 간 연결 정보 등을 갖고 있다.
원본 메쉬의 텍스처 맵은 텍스처 맵 비디오 생성부를 통해 복원된 메쉬에 대한 텍스처 맵으로 재생성될 수 있다. 복원된 메쉬의 텍스처 좌표에 대해 원본 메쉬의 텍스처 맵이 갖고 있는 정점 별 색상 정보를 할당할 수 있다. 매 프레임마다 재생성된 텍스처 맵들은 GoF 단위마다 묶여 텍스처 맵 비디오를 생성할 수 있다.
생성된 텍스처 맵 비디오는 텍스처 맵 비디오 부호화부를 통해 비디오 압축 코덱을 이용하여 부호화될 수 있다. 부호화를 통해 생성된 텍스처 맵 비디오 비트스트림은 다중화부로 전송된다.
생성된 움직임 벡터 비트스트림, 베이스 메쉬 비트스트림, 변위 벡터 비트스트림 및 텍스처 맵 비티스트림은 하나의 비트스트림으로 다중화되어 송신부를 통해 수신단으로 전송될 수 있다. 또는 생성된 움직임 벡터 비트스트림, 베이스 메쉬 비트스트림, 변위 벡터 비트스트림 및 텍스처 맵 비티스트림은 하나 이상의 트랙 데이터로 파일이 생성되거나 세그먼트로 인캡슐레이션 되어 송신부를 통해 수신단에 전송될 수 있다.
도13을 참조하면, 송신 장치(인코더)는 인트라 프레임 혹은 인터 프레임 방식으로 메쉬를 부호화할 수 있다. 인트라 인코딩에 따른 송신 장치는 베이스 메쉬, 변위 벡터(디스플레이스먼트), 텍스쳐 맵(어트리뷰트 맵)을 생성할 수 있다. 인터 인코딩에 따른 송신 장치는 움직임 벡터(모션), 베이스 메쉬, 변위 벡터(디스플레이스먼트), 텍스쳐 맵(어트리뷰트 맵)을 생성할 수 있다. 데이터 입력부로부터 획득된 텍스쳐 맵은 복원된 메쉬에 기초하여 생성되고 부호화된다. 디스플레이스먼트는 베이스 메쉬 및 분할된 메쉬 간 정점 위치 차이를 통해 생성되고 부호화된다. 베이스 메쉬는 원본 메쉬를 전처리하고 단순화하고 부호화하여 생성된다. 모션은 이전 프레임의 참조 베이스 메쉬에 기초하여 현재 프레임의 메쉬에 대한 움직임 벡터로 생성된다.
도14는 실시예들에 따른 포인트 클라우드 데이터 수신 장치를 나타낸다.
도14는 도1의 수신 장치(110), 다이나믹 메쉬 비디오 디코더(113), 도11-12 디코더, 및/또는 그에 대응하는 수신 디코딩 장치에 대응한다. 도14 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응한다. 도14의 수신(디코딩) 동작은 도13의 송신(인코딩) 동작의 대응하는 과정의 역과정을 따를 수 있다.
수신된 Mesh의 비트스트림은 파일/세그먼트 디캡슐레이션 후 압축된 움직임 벡터 비트스트림 혹은 베이스 메쉬 비트스트림, 변위 벡터 비트스트림, 그리고 텍스처 맵 비트스트림으로 역다중화된다.
프레임 헤더 정보에 따라 현재 메쉬가 화면간 부호화가 적용된 경우라면 움직임 벡터 비트스트림에 대해 움직임 벡터 복호화부에서 복호화를 수행할 수 있다. 이전의 복호화된 움직임 벡터를 예측자로 사용하여 비트스트림으로부터 복호화된 잔차 움직임 벡터와 더하여 최종 움직임 벡터를 복원할 수 있다.
프레임 헤더 정보에 따라 현재 메쉬가 화면내 부호화가 적용된 경우라면 베이스 메쉬 비트스트림은 정적 메쉬 부호화부를 통해 베이스 메쉬의 연결 정보, 정점 기하정보, 텍스처 좌표, 노말 정보 등을 복원할 수 있다.
베이스 메쉬 복원부에서는 현재 메쉬가 화면간 부호화가 적용된 경우라면 참조 베이스 메쉬에 복호화 된 움직임 벡터를 더한 후 역양자화를 수행하여 현재 베이스 메쉬를 복원할 수 있다. 현재 메쉬가 화면내 부호화가 적용된 경우라면 정적 메쉬 복호화부를 통해 복호화 된 메쉬에 대해 역양자화를 수행하여 복원 베이스 메쉬를 생성할 수 있다.
변위 벡터 비트스트림은 비디오 비트스트림으로서 변위 벡터 비디오 복호화부에서 비디오 코덱을 이용하여 복호화될 수 있다.
변위 벡터 복원부에서는 복호화 된 변위 벡터 비디오로부터 변위 벡터 변환 계수가 추출하고, 역양자화와 역변환 과정을 거쳐 변위 벡터를 복원한다. 복원된 변위 벡터가 Local 좌표계의 값이라면 Cartesian 좌표계로 역변환하는 과정이 수행될 수 있다.
메쉬 복원부에서는 복원된 베이스 메쉬에 대해 세분화를 수행하여 추가적인 정점을 생성할 수 있다. 세분화를 통해, 추가된 정점을 포함하는 정점 연결 정보, 텍스처 좌표 및 텍스처 좌표의 연결 정보 등을 생성할 수 있다. 세분화된 복원 베이스 메쉬는 복원된 변위 벡터와 결합하여 최종 복원된 메쉬를 생성할 수 있다.
텍스처 맵 비트스트림은 비디오 비트스트림으로서 텍스처 맵 비디오 복호화부에서 비디오 코덱을 이용하여 복호화될 수 있다. 복원된 텍스처 맵은 복원된 메쉬가 담고 있는 각 정점에 대한 색상 정보를 갖고 있으며, 각 정점의 텍스처 좌표를 이용하여 텍스처 맵으로부터 해당 정점의 색상값을 가져올 수 있다.
복원된 메쉬와 텍스처 맵은 메쉬 데이터 렌더러 등을 이용하여 렌더링 과정을 통해 사용자에게 보여진다.
도14를 참조하면, 수신 장치(디코더)는 인트라 프레임 혹은 인터 프레임 방식으로 메쉬를 복호화할 수 있다. 인트라 디코딩에 따른 수신 장치는 베이스 메쉬, 변위 벡터(디스플레이스먼트), 텍스쳐 맵(어트리뷰트 맵)을 수신하고, 복원 메쉬 및 복원 텍스쳐 맵을 복호화하여 메쉬 데이터를 렌더링할 수 있다. 인터 디코딩에 따른 수신 장치는 움직임 벡터(모션), 베이스 메쉬, 변위 벡터(디스플레이스먼트), 텍스쳐 맵(어트리뷰트 맵)을 수신하고, 복원 메쉬 및 복원 텍스쳐 맵을 복호화하여 메쉬 데이터를 렌더링할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신 장치 및 방법은 메쉬 데이터를 부호화하여, 부호화된 메쉬 데이터를 포함하는 비트스트림을 송신할 수 있다. 실시예들에 따른 포인트 클라우드 데이터 수신 장치 및 방법은 메쉬 데이터를 포함하는 비트스트림을 수신하여 메쉬 데이터를 복호화할 수 있다. 실시예들에 따른 포인트 클라우드 데이터 송수신 방법/장치는 실시예들에 따른 방법/장치로 줄여서 지칭될 수 있다. 실시예들에 따른 포인트 클라우드 데이터 송수신 방법/장치는 실시예들에 따른 메쉬 데이터 송수신 방법/장치로도 지칭될 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법/장치는 도1 송신 장치(100), 다이나믹 메쉬 비디오 획득부(101), 다이나믹 메쉬 비디오 인코더(102), 파일/세그먼트 인캡슐레이터(103), 트랜스미터(104), 도2 프리-프로세서(200), 인코더(201), 도6-7 인코더, 도13 송신 장치, 도15-16 인코더, 도37 송신 방법 등을 포함하는 용어로 해석된다.
실시예들에 따른 포인트 클라우드 데이터 수신 방법/장치는 도1 수신 장치(110), 리시버(111), 파일/세그먼트 디캡슐레이터(112), 다이나믹 메쉬 비디오 디코더(113), 렌더러(114), 도11-12 디코더, 도14 수신 장치, 도26-27 디코더, 도38 수신 방법 등을 포함하는 용어로 해석된다.
실시예들에 따른 방법/장치는 YUV420 포맷을 이용한 변위벡터 비디오 패킹 방법(Method for displacement video packing with YUV 420 format)을 포함하고 수행할 수 있다.
실시예들은 기존 2D 비디오 코덱 (Video codec)을 이용하여 3차원 동적 메쉬 (Dynamic mesh) 데이터를 압축하는 방법인 Video-based Dynamic Mesh Compression (V-DMC)에 관한 것이다. V-DMC 부/복호화기에서는 Base Mesh를 복원한 Mesh와 전 처리 단계에서 fitting된 Mesh간의 변위 벡터를 계산하고, 변환 및 양자화 하여 변위벡터 비트스트림으로 부/복호화 하는 과정을 거치게 된다. 실시예들은 상기 과정에서 변환된 변위벡터를 비디오 코덱을 사용하여 부/복호화하기 위해 이미지 패킹을 하는 단계에서 YUV 4:2:0 포맷을 이용한 방법에 대해 제안한다. 또한, 변환된 변위벡터의 component 별로 최적화된 포지션의 점을 샘플링 하여 전송할 수 있도록 샘플링 방법 및 시그널링 방법에 대해 제안한다. 대다수의 비디오 코덱 profile에서 YUV 4:2:0 포맷을 사용하고 있기 때문에, 호환성이 좋을 뿐만 아니라 성능적인 측면에서도 효율적인 비트 절감 효과와 더 나은 화질의 메쉬 데이터를 얻을 수 있다.
실시예들은 기존 2D 비디오 코덱 (Video codec)을 이용하여 3차원 동적 메쉬 (Dynamic mesh) 데이터를 압축하는 방법인 Video-based Dynamic Mesh Compression (V-DMC)에 관한 것으로, 변위벡터 변환 및 양자화 단계에서 변위벡터 단위로 부/복호화 하는 방법 및 이와 관련된 syntax 및 semantics 정보를 제안한다. 또한 이를 적용한 송신기와 수신기의 동작에 대해 설명한다.
최근 V-DMC 기술은 22년 4월 CfP Response 이후 활발한 기술 표준화 진행이 이루어 지고 있다. 현재까지 V-DMC에 적용된 기술에서 변위벡터 정보는 3D 벡터 또는 1D 벡터 형태로 표현되어 압축되고 전송된다. 2D 비디오 코덱을 사용하여 변위벡터 부/복호화를 수행할 때, YUV 4:4:4 포맷 또는 YUV 4:0:0 포맷으로 이미지 패킹이 된다. 이미지 패킹 과정에서 YUV 4:4:4 포맷을 사용하면, 서브 샘플링을 수행하지 않기 때문에 용량이 크다는 단점이 있다. 반면, YUV 4:0:0 포맷을 사용하면 용량 절감은 많이 되지만 U, V (tangential, bi-tangential) components를 사용하지 않고 버리기 때문에 화질이 안 좋아지는 단점이 있다. 이에, 현재 V-DMC 기술에서 사용되고 있는 두 가지의 포맷과 비교하여 용량과 화질 측면에서 모두 효율적일 수 있고, 현재 비디오 코덱에서 가장 널리 쓰이고 있는 YUV 4:2:0 포맷을 사용하여 이미지 패킹 하는 방법을 제안한다. 또한, YUV 4:2:0 포맷을 적용 시 U, V Components (tangential, bi-tangential)의 샘플링 방법은 현재는 한 가지로 고정되어 있을 수 있다. 이는 컨텐츠에 따라 혹은 샘플링 구역에 따라 더 나은 샘플링 방법이 존재할 수 있기 때문에 효율적이지 못할 수 있다. 이에, 각 tangent, bi-tangent 컴포넌트 별 U, V 채널로 매핑하는 과정에서 최적의 값을 선택하여 샘플링이 수행될 수 있도록 하는 방법에 대해 제안한다.
따라서, 실시예들은 이러한 기술적 문제를 해결하기 위한 해결수단으로, 변위벡터의 비디오 부/복호화를 위한 이미지 패킹 단계에서 YUV 4:2:0 포맷을 사용하는 방법, 및/또는 변위벡터의 컴포넌트 별 데이터 샘플링 방법 및 시그널링 방법 등을 포함한다.
한편, 본 문서에서, 용어V-DMC는 용어V-Mesh라고도 지칭할 수 있으며 동일한 의미로 사용되는 표현이다.
도15는 실시예들에 따른 다이나믹(동적) 메쉬 부호화기를 나타낸다.
도15는 도1 송신 장치(100), 다이나믹 메쉬 비디오 획득부(101), 다이나믹 메쉬 비디오 인코더(102), 파일/세그먼트 인캡슐레이터(103), 트랜스미터(104), 도2 프리-프로세서(200), 인코더(201), 도6-7 인코더, 도13 송신 장치, 도15-16 인코더, 도37 송신 방법 등에 대응하는 다이나믹 메쉬 부호화기의 구성을 나타낸다. 도15의 각 구성요소는 하드웨어, 소프트웨어, 프로세서 및/또는 그것들의 조합에 대응할 수 있다.
현재 V-DMC 기술에서는 원본 메쉬를 단순화하고, 매개변수화를 하는 과정을 거쳐 베이스 메쉬를 생성한다. 생성된 베이스 메쉬는 양자화 되고, 정적 메쉬 부호화부를 거쳐 베이스 메쉬 비트 스트림으로 전송된다. 또한, 원본 메쉬로부터 단순화된 메쉬를 세분화 및 피팅하는 과정을 거치고 난 후의 메쉬 데이터와 앞서 부호화 된 메쉬를 복원한 메쉬 데이터를 비교하여 각 정점들의 차이인 변위벡터를 계산한다.
계산된 변위 벡터를 효율적으로 부호화 하기 위해 변위벡터 좌표계를 로컬(local) 좌표계로 변환하고, 변환된 벡터를 변위벡터 계수로 변환 및 양자화를 수행한 후 부호화를 하여 변위벡터 비트스트림을 전송한다. 실시예들은 도15와 같이 변위벡터 이미지 패킹부에서 YUV 4:2:0 포맷을 사용하는 방법 및 변위벡터의 각 컴포넌트 별 샘플링하는 방법과 시그널링 방법을 포함한다. 각 단계별 수행되는 원리는 아래에 자세히 설명한다.
변위벡터 계산부는 피팅된 세분화된 메쉬와 복원된 베이스 메쉬를 세분화를 수행한 메쉬간의 벡위벡터를 계산한다. 이 때, 세분화된 메쉬의 정점 개수만큼의 변위벡터가 계산될 수 있다.
다이나믹 메쉬 비디오 획득부(101)는 원본 메쉬를 획득할 수 있다.
메쉬 단순화부는 원본 메쉬 내 정점들 및 정정 간 연결관계를 단순화할 수 있다. 단순호된 원본 메쉬를 베이스 메쉬라고 호칭할 수 있다.
메쉬 매개변수화부는 메쉬 내 정점별 텍스쳐 좌표 및 텍스쳐 연결정보를 생성할 수 있다.
메쉬 양자화부는 양자화 파라미터에 기초하여 베이스 메쉬를 양자화한다.
동적 메쉬 부호화기는 베이스 메쉬를 인트라 프레임 방법으로 부호화하거나, 혹은 인트 프레임 방법으로 부호화할 수 있다. 인트라 프레임 방법은 프레임 내 포함된 메쉬를 참조하여 현재 메쉬에 대한 예측값을 생성하고, 잔차값을 생성하여 잔차값만을 부호화하여 베이스 메쉬 비트스트림을 생성할 수 있다. 이때 메쉬는 시간에 따라 변하지 않는 정적 메쉬일 수 있다. 인터 프레임 방법은 현재 프레임에 대한 참조 프레임을 참조하여 참조 프레임 내 유사한 베이스 메쉬를 찾아서 예측값을 생성하여, 잔차값을 생성하여 잔차값만을 부호화하여 베이스 메쉬 비트스트림을 생성할 수 있다. 이때 메쉬는 시간에 따라 변하는 동적 메쉬이고, 움직임 벡터를 예측하여 부호화할 수 있다. 베이스 메쉬 외 원본 메쉬와 같이 상세한 정점 관련 데이터를 베이스 메쉬와 별도로 부호화하기 위해서 다음 절차를 수행한다.
메쉬 세분화부는 단순호된 베이스 메쉬를 다시 세분화하여 정점들을 상세하게 세분화한다.
메쉬 피팅부는 메쉬 연결 정보에 기초하여 메쉬를 재구성할 수 있다.
변위벡터 좌표계 변환부는 앞서 계산된 정점 변위 벡터를 canonical 좌표계 (x, y, z)를 그대로 사용하거나, 로컬(local) 좌표계 (normal, tangential, bi-tangential)로 변환하여 사용할 수 있다.
변위벡터 좌표계 변환부는 부/복호화기 약속에 의해 변환 좌표게를 결정할 수 있고, 변위벡터 좌표계 변환여부 플래그(asps_vmc_ext_displacement_coordinate_system)를 시그널링 할 수 있다. 신택스 값이 0인 경우 canonical 좌표계를 그대로 사용하며, 1인 경우에는 local 좌표계로 변환이 이루어질 수 있다.
도16은 실시예들에 따른 변위벡터 부호화부를 나타낸다.
도16은 도15 내 변위벡터 부호화부를 상세히 도시한다.
변위벡터 부호화부는 H.264, HEVC, VVC 등의 2D 비디오 부호화기를 변위벡터 부호화를 수행할 수 있다. 변위벡터 변환이 수행되며, 변환된 변위벡터계수 양자화를 거쳐 2D 이미지로 패킹하여 비디오 코덱으로 부호화가 수행될 수 있다. 도16 상세 과정은 아래에 자세히 설명한다.
변위벡터 변환부는 계산된 정점 변위 벡터 (x, y, z) 또는 좌표계 변환된 변위 벡터(n, t, b)를 linear lifting 변환, butterfly lifting 변환 등을 수행하여 변위벡터계수로 변환할 수 있다.
변위벡터계수 양자화부는 앞서 변위벡터 변환부를 수행하여 변환된 변위벡터계수에 대한 양자화를 수행할 수 있다. 양자화는 수식 1과 같이 변위벡터계수(value)에 스케일(scale)을 곱하고 오프셋(offset)을 더하여 양자화된 값(quant)을 각 channel 별로 도출할 수 있다. 이 때, 각 channel은 변위벡터의 좌표계에 따라 각각 x, y, z 또는 n, t, b 일 수 있다.
수식 1의 오프셋은 시퀀스 또는 프레임 단위로, 각 채널별로 고정된 값을 사용할 수 있다.
수식 1의 스케일은 수식 2와 같이 양자화파라미터(QP)와 level 별 스케일(level_scale)에 의해 결정될 수 있다.
수식 2의 Level_scale은 각 level에 대하여 프레임 또는 시퀀스 단위로 정해진 값을 사용할 수 있다. 또한, α, β, 는 인코더에서 정해져 있는 파라미터 상수 값일 수 있다.
스케일도 마찬가지로 변위벡터의 각 Channel별로 개별적인 값이 정해질 수 있다.
도17은 실시예들에 따른 변위벡터계수의 구조를 나타낸다.
도17은 도16에서 변환된 변위벡터계수의 구조를 도시한다.
변위벡터계수 패킹부는 양자화된 변위벡터계수를 W x H 크기의 2D 이미지로 패킹을 수행한다. 높은 layer의 LoD의 정점부터 lifting 변환 수행되어 낮은 LoD의 변위벡터계수는 패킹 이미지 내 앞쪽에, 높은 LoD의 변위벡터계수는 패킹 이미지 내 뒤쪽에 저장된다.
도18은 실시예들에 따른 변위벡터계수 2D 이미지 패킹을 나타낸다.
도17의 1D 형태의 변위벡터계수를 도18과 같이 구성할 수 있다. bx×by 크기를 하나의 블록으로 구성하고, 변위벡터계수의 개수 N에 따라 결정된 L×M 개의 블록으로 구성할 수 있다. 이 때, 2D Morton code, zig-zag scan 순서 등에 따라 W×H 크기의 2D 이미지로 패킹을 수행할 수 있다.
L×M 개의 변위벡터계수 블록은 부/복호화기에서 정의된 순서에 따라 (bx*L)×(by*M) 크기의 이미지로 블록 패킹이 수행될 수 있다. 이 때, R_0 (LoD 0) 변위벡터계수 블록부터 스캐닝 순서에 따라 순차적으로 패킹이 수행될 수 있으며, 변위벡터계수의 전체 크기가 L×M 보다 작은 경우 변위벡터 (bx*L)×(by*M) 크기가 되도록 패딩을 수행하여 그림 4와 같이 채워 넣을 수 있다. 또는 그림 4의 역순으로 패킹과 패딩을 수행하여 2D 이미지를 패킹할 수 있다.
L, M은 변위벡터계수 개수(N)에 따라 결정되거나 또는 L(또는 M)을 부/복호화기 약속의 의해 정의한 뒤 변위벡터계수의 개수(N)에 따라 수식 3과 같이 M(또는 L)을 유도할 수 있다.
다음 수식은 L이 정의된 경우 M을 유도하는 내용이다:
도19는 실시예들에 따른 LoD(Level of Detail) 별 변위벡터계수 2D 이미지 패킹을 나타낸다.
실시예에 따라 변위벡터계수 블록(bx×by) 패킹은 각 LoD 레벨별로 부호화 되는 2D 비디오 부호화기의 CTU 크기에 맞춰도19와 같이 패킹이 수행될 수 있다. 이 때, 각 LoD 별로 CTU 크기에 맞추기 위해 이미지의 중간값 또는 마지막 변위벡터계수 값 등으로 수행될 수 있다.
도20은 실시예들에 따른 2D 몰톤 코드 기반 패킹을 나타낸다.
하나의 변위벡터계수 블록은 zig-zag scan 순서 또는 도20과 같은 2D Morton코드 순서 등을 통해 bx×by 개의 변위벡터계수가 블록 내에서 패킹 될 수 있다.
Local 좌표계로 변환된 변위벡터계수는 Normal, Tangential, Bi-tangential 컴포넌트 별로 각각 Y, U, V 채널로 패킹프레임을 구성할 수 있다. 또한, 이미지 패킹을 수행하기 위해 YUV 4:4:4, YUV 4:2:0, YUV 4:0:0 등의 포맷을 선택할 수 있고, 각 포맷에 맞게 변위벡터계수를 구성할 수 있다. 또한, 정해진 변위벡터계수의 이미지 패킹 포맷 정보(ColourSpace_displacement_video)를 시그널링 할 수 있다.
도21은 실시예들에 따른 변위벡터계수 패킹 방법을 나타낸다.
도21은 YUV 4:4:4 포맷을 사용하는 경우 변위벡터계수 패킹 방법을 도시한다.
변위벡터계수 패킹부는 노멀(Normal), 탄젠셜(Tangential), Bi-tangential 성분의 값을 그대로 Y, U, V 채널로 각각 패킹을 수행한다.
예를 들어, N 성분이 N1 내지 N4를 포함하는 경우, Y채널에 N1내지 N4성분이 그대로 패킹된다. T성분이 T1내지T4인 경우, U채널에 T1내지T4성분이 그대로 패킹된다. B성분이 B1내지 B4인 경우, V채널에 B1내지 B4성분이 그대로 패킹된다.
도22는 실시예들에 따른 변위벡터계수 패킹 방법을 나타낸다.
도22는 YUV 4:0:0 포맷을 사용하는 경우 변위벡터계수 패킹 방법을 도시한다.
Normal 성분의 값은 모두 그대로 Y 채널로 패킹 과정을 수행할 수 있다. Tangential, Bi-tangential 성분은 샘플링 과정이 수행되지 않을 수 있다.
도23은 실시예들에 따른 변위벡터계수 패킹 방법을 나타낸다.
도23은 YUV 4:2:0 포맷을 사용하는 경우 변위벡터계수 패킹 방법을 도시한다.
Normal 성분은 전부 그대로 Y 채널로 패킹 수행할 수 있다.
Tangential, bi-tangential 성분은 4개 중 1개의 성분만 각각 U, V 채널로 샘플링 할 수 있다.
이 때, 부호화기에서 판단하여 하나의 성분을 선택하거나, 또는 일부 성분의 부분 합 평균 또는 전체 성분의 평균값으로 샘플링 할 수 있다. 또는 각 성분의 고정된 위치의 값이 샘플링될 수 있다.
Tangential, bi-tangential 성분을 U, V채널로 샘플링 방법은 아래와 같을 수 있다: 1) 최적의 성분 1개를 선택하는 방법, 2) 최적의 성분 부분합평균으로 선택하는 방법, 3) 성분 전체 평균으로 선택하는 방법.
1) 최적의 성분 1개를 선택하는 방법:
각 T, B 성분의 4개의 성분 중 가장 최적의 성분을 선택하여 U, V 채널로 샘플링 할 수 있다. 도23의 샘플링 된 T, B는 각각 T=T_1,T_2,T_3,T_4 그리고 B=B_1,B_2,B_3,B_4일 수 있다. 최적인 정점은 부호화기에서 판단하거나, 미리 약속된 위치일 수 있다. 최적의 성분으로 선택된 각각의 t, b 성분을 t_sample, b_sample신택스의 값(value=1,2,3,4)을 통해 최적의 성분 값과 위치 정보를 시그널링할 수 있다.
2) 최적의 성분 부분합평균으로 선택하는 방법:
각 T, B 성분의 4개의 성분 중 2개 또는 3개의 성분을 선택하고 평균의 값을 U, V 채널로 샘플링 할 수 있다. 도23의 샘플링 된 T, B는 각각 T=(T1+T2)/2, (T1+T3)/2, (T1+T4)/2, (T2+T3)/2, (T2+T4)/2, (T3+T4)/2, (T1+T2+T3)/2, (T1+T2+T4)/2, (T2+T3+T4)/2 그리고 B=(B1+B2)/2, (B1+B3)/2, (B2+B3)/2, (B2+B4)/2, (B3+B4)/2, (B1+B2+B3)/2, (B1+B2+B4)/2, (B2+B3+B4)/2일 수 있다.
최적인 정점 성분은 부호화기에서 판단하여 선택하거나, 미리 약속된 위치일 수 있다. 최적의 2개 또는 3개의 정점을 선택하고 그 값들의 평균을 의미하는 t_sample, b_sample 신택스 값(value=5,6,7,8,9,10,11,12,13)을 통해 최적의 성분 부분 합 평균값과 선택된 위치 정보를 시그널링할 수 있다.
3) 성분 전체 평균으로 선택하는 방법:
각 T, B 성분의 4개 정점의 평균값을 U, V 채널로 샘플링 할 수 있다. 도23의 샘플링 된 T, B는 각각
T=(T1+T2+T3+T4)/4, B=(B1+B2+B3+B4)/4일 수 있다. 4개 정점의 평균을 의미하는 t_sample, b_sample신택스 값 (value=0)을 시그널링 할 수 있다.
이러한 샘플링 방법들 중 1) 최적의 성분 1개 선택 방법 및 2) 최적의 성분 부분합 평균 방법으로 최적의 샘플링 값이 계산되었다 하더라도 모든 성분을 동일한 값으로 복원할 수 있도록, 인코더에서 t_sample, b_sample 신택스 값 (value=0)을 시그널링 할 수 있다.
Tangential, bi-tangential 성분을 U, V 채널로 샘플링 할 때, 각각 독립적으로 샘플링 방법을 선택할 수 있다. 또는 Tangential 성분의 샘플링 방법이 정해지면, 동일한 샘플링 방법으로 bi-tangential 성분의 샘플링이 수행 될 수 있다.
도24는 실시예들에 따른 전체 레벨 패킹 프레임 구성을 나타낸다.
각 채널 별 변위벡터계수를 이미지화하여 패킹 프레임 형태의 부호화 단위를 구성할 수 있다. 메쉬프레임 내 전체 레벨을 한 개의 패킹프레임으로 패킹하거나 메쉬프레임 내 LoD 별로 각각의 패킹프레임으로 패킹할 수 있다. 메쉬시퀀스 단위로 상기 패킹 방법의 인덱스를 의미하는 asps_vmc_ext_displacement_LoD_packing_method신택스를 시그널링할 수 있고, 패킹 방법에 따라서 한 개의 메쉬프레임에서 도출된 패킹프레임과 채널의 형태는 다음과 같을 수 있다: 전체레벨 패킹프레임 구성(도24), 레벨 별 패킹프레임 구성(도25).
전체레벨 패킹프레임 구성(도24):
전체 레벨의 변위벡터계수의 각 기하축(normal, tangential, bi-tangential)을 각 채널(Y Channel, U Channel, V Channel)별로 패킹할 수 있고, 패킹된 채널 전체가 패킹 프레임을 구성할 수 있다.
1) YUV 4:4:4 포맷을 사용하는 경우: Y, U, V각 채널의 패킹 사이즈는 hn=ht=hb, wn=wt=wb으로 동일할 수 있다.
2) YUV 4:0:0 포맷을 사용하는 경우: Y 채널에 대해서만 패킹이 수행 되고, U, V 채널의 패킹 데이터는 존재하지 않을 수 있다.
3) YUV 4:2:0 포맷을 사용하는 경우: Y채널에 대해서는 그대로 패킹이 수행되고, U, V 채널에 대해서는 4개의 정점당 1개 정점의 데이터만 샘플링 되기 때문에 ht, hb=hn/2, wt, wb=wn/2가 될 수 있다.
도25는 실시예들에 따른 레벨별 패킹 프레임 구성을 나타낸다.
레벨 별 패킹프레임 구성(도25):
한 개 레벨의 변위벡터계수의 각 기하축(normal, tangential, bi-tangential)을 각 채널(Y Channel, U Channel, V Channel)별로 패킹할 수 있고, 한 개의 레벨에서 패킹된 채널들이 패킹 프레임을 구성할 수 있다.
Y, U, V의 각 채널별로 패킹되는 사이즈(w, h)는 위의 전체 프레임패킹 구성의 방법과 동일한 방법으로 포맷별로 그 크기가 다를 수 있다.
변위벡터 이미지/비디오 부호화부는 변위벡터계수 패킹부를 통해 패킹된 2D 이미지를 H.264, HEVC, VVC 등의 2D 비디오 부호화기를 통해 부호화를 수행할 수 있다.
도26은 실시예들에 따른 동적 메쉬 복호화기를 나타낸다.
도26은 도1 수신 장치(110), 리시버(111), 파일/세그먼트 디캡슐레이터(112), 다이나믹 메쉬 비디오 디코더(113), 렌더러(114), 도11-12 디코더, 도14 수신 장치, 도26-27 디코더, 도38 수신 방법 등에 대응하는 다이나믹 메쉬 복호화기의 구성을 나타낸다. 도26의 각 구성요소는 하드웨어, 소프트웨어, 프로세서 및/또는 그것들의 조합에 대응할 수 있다.
동적 메쉬 부호화기에서 부호화 된 베이스 메쉬 비트스트림, 변위벡터 비트스트림, 텍스처 맵 비트스트림이 전송되면 복호화기에서는 각각의 비트스트림을 복호화 하는 과정을 거쳐 메쉬를 복원하게 된다. 먼저 베이스메쉬는 인터, 인트라 프레임 여부에 따라 움직임벡터 또는 정적 메쉬 복호화 부로 복호화가 되고 세분화를 거쳐 복호화 된 변위벡터 정보와 함께 기하정보를 복원하게 된다. 실시예들은 변위벡터계수 복호화부에서 YUV 4:2:0 포맷으로 패킹 되어 전송된 2D 이미지 프레임을 변위벡터의 각 컴포넌트 별 샘플링 방법을 파싱하여 복호화 하는 방법을 포함한다. 각 단계별 수행되는 원리는 아래에 자세히 설명한다.
도27은 실시예들에 따른 변위벡터 복호화부를 나타낸다.
도26의 변위벡터 복호화부는, 부호화 부에서 변위벡터가 부호화된 변위벡터 비트스트림을 입력 받아 복호화를 수행하며 도27 과정으로 변위벡터를 복원할 수 있다. 도27 수행 과정은 아래에 자세히 설명한다.
비디오 복호화부는, 변위벡터 비트스트림을 입력으로 받아 2D 비디오 코덱을 통해 변위벡터계수 이미지/비디오에 대한 복호화를 수행한다. 비디오 복호화부를 통해 복원된 복원 변위벡터계수 비디오는 각 프레임 별로 변위벡터계수 역패킹부 수행을 통해 복원메쉬의 각 정점에 대응하는 변위벡터계수 할당을 수행할 수 있다.
변위벡터계수 역패킹부는 현재 메쉬 프레임에 해당하는 복원 변위벡터계수 이미지로부터 부/복호화기 약속에 의해 정의된 스캐닝 순서 또는 상위 레벨 단위(시퀀스, 프레임 등)로 파싱 받은 스캐닝 순서에 따라 역패킹을 수행할 수 있다. 도19와 같이 bx X by단위로 특정 스캐닝 순서에 따라 패킹 된 변위벡터계수 블록과, 하나의 블록 내에서 특정 순서(2D Morton Code 또는 Zig-zag scan 등)에 따라 패킹 된 변위벡터계수는 부/복호화기 약속 또는 파싱 받은 블록의 크기 bx, by 및 L, M 그리고 스캐닝 순서에 따라 k번째 정점의 변위벡터 변환계수를 유도할 수 있다.
도28은 실시예들에 따른 변위벡터계수 역패킹 방법을 나타낸다.
도28은 YUV 4:4:4 포맷을 이용한 변위벡터계수 역패킹 방법 예시를 나타낸다.
이미지 패킹 포맷(ColourSpace_displacement_video)정보를 파싱하여 그 값이 YUV444(value=3)인 경우 YUV 4:4:4 포맷으로 Y, U, V 채널에 대해 각각 복원을 수행할 수 있다.
복원된 Y, U, V 채널의 변위벡터계수들은 각각 Normal, Tangential, Bi-tangential 성분으로 블록 내 특정순서(displacement_scan_method)에 따라 복원할 수 있다.
YUV 4:4:4 포맷의 경우 N, T, B 성분의 모든 값들을 전송하기 때문에, 부호화 이전의 데이터와 복호화 한 결과가 동일할 수 있다.
도29는 실시예들에 따른 변위벡터계수 역패킹 방법을 나타낸다.
도29는 YUV 4:0:0 포맷을 이용한 변위벡터계수 역패킹 방법 예시를 나타낸다.
이미지 패킹 포맷(ColourSpace_displacement_video)정보를 파싱하여 그 값이 YUV400(value=1)인 경우 YUV 4:0:0 포맷으로 Y 채널에 대해서만 복원을 수행할 수 있다.
복원된 Y 채널의 변위벡터계수들은 Normal 성분으로 블록 내 특정순서(displacement_scan_method)에 따라 복원할 수 있다.
YUV 4:0:0 포맷의 경우 Y채널의 N성분에 대해서는 모든 값을 전송해주기 때문에 Normal 성분의 부호화 이전의 데이터와 복호화 한 결과가 동일할 수 있다.
T, B 성분의 U, V 채널에 대해서는 전송을 하지 않는 관계로, Tangential, Bi-tangential 성분의 복호화 한 결과가 존재하지 않을 수 있다.
도30은 실시예들에 따른 변위벡터계수 역패킹 방법을 나타낸다.
도30은 YUV 4:2:0 포맷을 이용한 변위벡터계수 역패킹 방법 예시를 도시한다.
이미지 패킹 포맷(ColourSpace_displacement_video)정보를 파싱하여 그 값이 YUV420(value=2)인 경우 YUV 4:2:0 포맷으로 Y, U, V 채널의 N, T, B 성분에 대해 각각 복원을 수행할 수 있다.
복원된 Y, U, V 채널의 변위벡터계수들은 각각 Normal, Tangential, Bi-tangential 성분으로 블록 내 특정순서(displacement_scan_method)에 따라 복원할 수 있다.
Y채널의 N성분에 대해서는 모든 값을 전송해주기 때문에 Normal 성분의 부호화 이전의 데이터와 복호화 한 결과가 동일할 수 있다.
T, B 성분의 U, V 채널에 대해서는 부호화기에서 선택한 최적의 성분 샘플링 방법을 의미하는 t_smaple, b_sample 신택스를 파싱하여, Tangential, Bi-tangential 성분의 값과 T, B 채널 내 복원 위치에 맞게 복원을 수행할 수 있다.
최적의 성분 1개 선택하는 경우: 예들 들어, U 채널의 신택스 t_sample 값이 2 이고, V 채널의 신택스 b_sample 값이 3인 경우, 도30과 같이 각 채널별로 역패킹이 수행되어 변위벡터 계수가 복원될 수 있다. 이와 같이 복원된 4개의 정점에 대한 변위벡터 좌표(n,t,b)의 양자화 수행 이전의 각 성분의 조합은 V1(N1, 0, 0), V2(N2, T2, 0), V3(N3, 0, B3), V4(N4, 0, 0)일 수 있다.
도31은 실시예들에 따른 변위벡터계수 역패킹 방법을 나타낸다.
도31은 YUV 4:2:0 포맷을 이용한 변위벡터계수 역패킹 방법 예시를 도시한다.
최적의 성분 부분 합 평균의 경우: 예들 들어, U 채널의 신택스 t_sample 값이 5 이고, V 채널의 신택스 b_sample 값이 10인 경우, 아래의 도31과 같이 각 채널별로 역패킹이 수행되어 변위벡터 계수가 복원될 수 있다. 최적의 성분 부분 합 평균의 경우, 신택스 테이블을 참고하여 부분합에 이용된 성분들의 포지션에 전송된 평균 값(T 또는 B)을 위치 시킬 수 있다. 이와 같이 복원된 4개의 정점에 대한 변위벡터 좌표(n,t,b)의 양자화 수행 이전의 각 성분의 조합은 V1(N1, T, 0), V2(N2, T, 0), V3(N3, 0, B), V4(N4, 0, B)일 수 있다.
도32는 실시예들에 따른 변위벡터계수 역패킹 방법을 나타낸다.
도32는 YUV 4:2:0 포맷을 이용한 변위벡터계수 역패킹 방법 예시를 도시한다.
모든 성분의 평균인 경우: 예들 들어, U, V 채널의 신택스 t_sample, b_sample 값이 모두 0인 경우, 도32와 같이 각 채널별로 역패킹이 수행되어 변위벡터 계수가 복원될 수 있다. 모든 성분의 평균인 경우, 그 평균값(T, B)을 모든 성분의 포지션에 위치시킬 수 있다. 이와 같이 복원된 4개의 정점에 대한 변위벡터 좌표(n,t,b)의 양자화 수행 이전의 각 성분의 조합은 V1(N1, T, B), V2(N2, T, B), V3(N3, T, B), V4(N4, T, B)일 수 있다.
도27의 변위벡터계수 역양자화부는, 변위벡터계수 역패킹부를 통해 정점단위로 할당된 변위벡터계수의 역양자화를 수행한다. 실시예에 따라 각 축(Normal, Tangential, Bi-tangential) 별 양자화 파라미터(QP)는 시퀀스 또는 프레임 단위로 전송받을 수 있으며, Normal 성분의 변위벡터만이 부/복호화 되는 경우(ColourSpace_displacement_video=yuv400), Normal 성분에 대한 양자화 파라미터(QP) 만을 파싱하여 양자화율을 결정할 수 있다.
실시예에 따라 변위벡터계수는 각 축마다 다른 양자화 파라미터를 통해 양자화가 수행될 수 있으며 부/복호화기 약속에 의해 양자화 파라미터 또는 스케일링 파라미터를 유도하여 LoD 레벨 별로 양자화율을 결정할 수 있다.
도27의 변위벡터 역변환부는 역양자화가 수행된 변위벡터계수에 대해 역변환을 수행하여 복원 변위벡터를 계산한다. 변환은 실시예에 따라 linear lifting 변환, butterfly lifting 변환 등이 수행될 수 있다.
리프팅 역변환이 수행되는 경우 k번째 세분화 레벨의 정점 Rk를 예측 수행 시 예측자로 Rt(t<k 또는 t<=k)의 세분화 정점 변위 벡터를 통해 k번째 세분화 레벨의 변위벡터 예측을 수행할 수 있다.
실시예에 따라 변위벡터의 예측 수행 시 현재 정점보다 세분화 레벨이 낮은 정점 중 연결정보를 기반으로 가까운 n개의 점을 평균 또는 거리기반 가중평균예측을 수행할 수 있다.
실시예에 따라 메쉬 세분화 단계에서 현재 정점을 생성하기 위해 사용한 n개의 정점의 변위 벡터를 기반으로 예측을 수행할 수 있다.
리프팅 역변환이 수행되는 경우 파싱 받은 잔차 신호를 통해 부호화기에서 예측에 사용된 정점의 변위 벡터를 업데이트 하는 과정이 수행될 수 있다.
도26의 변위벡터 좌표계 역변환부에서, 프레임시퀀스 또는 GOF(Group of Frames) 또는 프레임 또는 서브메쉬 단위로 좌표계 변환 여부 플래그(asps_vmc_ext_displacement_coordinate_system)를 파싱하여 값이 1인 경우 역양자화된 복원 변위벡터를 local 좌표계(n,t,b)에서 canonical 좌표계(x,y,z)로 역변환을 수행할 수 있다.
복원 베이스 메쉬의 복원 정점 위치정보를 기반으로 정점당 노말 벡터를 계산하고, 세분화 과정을 통해 추가로 생성되는 정점에 대해 계산된 복원 베이스 메쉬의 정점 노말 벡터를 통해 보간하여 새로 생성되는 정점의 노말값을 할당할 수 있다.
보간의 경우 세분화에 사용된 베이스 메쉬의 노말정보를 평균 또는 거리기반 가중합 하여 보간을 수행할 수 있다.
또는, 동일한 평면의 세분화된 정점들에 대해 베이스 메쉬의 노말 정보를 그대로 사용할 수 있다.
계산된 정점당 노말 벡터를 통해 노말 벡터와 직교하는 tangential, bi-tangential 벡터를 계산하여 수식 4를 통해 변위벡터 좌표계 역변환을 수행할 수 있다. 수식 4의 dispn[0], dispn[1], dispn[2]은 각 Y, U, V 채널 별 역양자화 및 역변환을 수행한 n, t, b 성분의 결과를 의미한다.
YUV 4:0:0 포맷으로 패킹 된 경우에는 t, b 성분이 U, V 채널을 통해 전송되지 않기 때문에 좌표계 역변환 수식 4는 로 표현될 수 있다. 이 때는 n 성분의 역양자화 및 역변환 수행한 결과와 계산된 정점당 노말 벡터를 곱하여 좌표계 역변환을 수행할 수 있다.
동일한 정점 좌표에 대해서 역변환 수행한 결과가 여러 개 인 경우에는 모두 합산한 값이 최종 변위벡터의 값이 될 수 있다.
실시예에 따라 플래그 전송 없이 항상 좌표계 역변환을 수행할 수 있다.
도26의 메쉬 복원부는, 메쉬 세분화부에서 세분화 과정을 통해 생성된 정점들에 복원 변위벡터를 더하여 복원 메쉬의 정점 기하정보를 계산하고 복원할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법/장치(도1 송신 장치(100), 다이나믹 메쉬 비디오 획득부(101), 다이나믹 메쉬 비디오 인코더(102), 파일/세그먼트 인캡슐레이터(103), 트랜스미터(104), 도2 프리-프로세서(200), 인코더(201), 도6-7 인코더, 도13 송신 장치, 도15-16 인코더, 도37 송신 방법)는 메쉬 데이터를 부호화하고, 비트스트림의 형태로 전송할 수 있다. 또한, 부호화와 관련된 파라미터 정보를 생성하여, 비트스트림에 포함시켜서 전송할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 수신 방법/장치(도1 수신 장치(110), 리시버(111), 파일/세그먼트 디캡슐레이터(112), 다이나믹 메쉬 비디오 디코더(113), 렌더러(114), 도11-12 디코더, 도14 수신 장치, 도26-27 디코더, 도38 수신 방법)은 비트스트림을 수신하고, 비트스트림 내 파라미터에 기초하여, 메쉬 데이터를 복호화할 수 있다.
이하에서, 도33 내지 도36은 비트스트림에 포함된 파라미터들의 신택스 및 세만틱스를 설명한다.
도33은 실시예들에 따른 비트스트림 내 아틀라스 시퀀스 파라미터 세트를 나타낸다.
도33은 비트스트림에 포함된 아틀라스 파라미터 시퀀스 파라미터 세트(Atlas Sequence Parameter Set, ASPS)의 신택스를 나타낸다. ASPS는 아틀라스 시퀀스 파라미터에서 확장되어 메쉬 데이터 부호화에 관한 파라미터를 더 포함할 수 있다.
변위벡터 좌표계( asps_vmc_ext_displacement_coordinate_system): 변위벡터 부호화에 관한 좌표계의 타입을 나타낸다. 예를 들어, 이 값이 0이면: Canonical, 이 값이 1이면: Local 좌표계에 기초하여 메쉬 데이터의 변위벡터의 좌표계가 변환되어 부호화되었음을 나타낸다.
변위벡터 변환 방법(asps_vmc_ext_transform_method): 변위벡터를 변환하는 방법을 나타낸다. 예를 들어, 이 값이 0이면: None, 이 값이 1이면: Linear_Lifting이다.
변위벡터계수 패킹 방법(ext_packing_method): 변위벡터계수의 패킹 방법을 나타낸다. 예를 들어, 이 값이 0이면: 오름차순으로 변위벡터계수를 패킹하고, 1이면: 내림차순으로 변위벡터계수를 패킹한다.
변위벡터 부호화 방법(asps_vmc_ext_displacement_method): 변위벡터의 부호화 코딩 방법을 나타낸다. 예를 들어, 이 값이 0이면: None(변위벡터 부호화 없음), 1이면: 산술부호화(Arithmetic Coding), 2이면: 비디오 코딩(Video Coding) 방식에 의해 변위벡터가 부호화되었음을 나타낸다.
LoD 별 변위벡터 패킹 방법(asps_vmc_ext_displacement_LoD_packing_method): 변위벡터의 LoD 별 패킹 방법을 나타낸다. 예를 들어, 이 값이 0이면: 전체레벨 패킹 프레임 구성, 1이면: 레벨 별 패킹 프레임 구성에 기초하여 변위벡터를 패킹하였음을 나타낸다.
변위벡터 변환 방법(asps_vmc_ext_transform_method): 변위벡터의 변환 방법을 나타낸다. 예를 들어, 이 값이 0이면: None(변위벡터에 대한 변환이 없음), 1이면: 리니어 리프팅(Linear Lifting)에 의해 변위벡터를 변환하였음을 나타낸다.
도34는 실시예들에 따른 비트스트림 내 아틀라스 시퀀스 파라미터 세트를 나타낸다.
변위벡터 스캔 방법(displacement_scan_method): 변위벡터 패킹 시 스캔 순서 방법을 나타낸다. 예를 들어, 0이면: 2D Morton Code로 변위벡터를 스캔함을 나타내고, 1이면: Zig-zag scan 순서로 변위벡터를 스캔함을 나타낸다.
지오메트리 비디오 블록 크기(geometryVideoBlockSize): 변위벡터 비디오 이미지 블록 사이즈를 나타낸다. 예를 들어, 이 값은 bx×by 블록 개수를 나타낼 수 있고, default값은 16일 수 있다.
지오메트리 비디오 비트뎁스(geometryVideoBitDepth): 변위벡터 비디오 이미지 비트 뎁스 단위를 나타낸다. 디폴트 값으로 10비트일 수 있다.
변위벡터 컬러스페이스(ColourSpace_displacement_video): 변위벡터 비디오 패킹 이미지 포맷을 나타낸다. 예를 들어, 이 값이 0이면: None(변위벡터 비디오 패킹의 이미지 포맷이 없음), 1이면: yuv400, 2이면: yuv420, 3이면: yuv444에 기초하여 변위벡터를 패킹함을 나타낸다.
tangential 성분의 샘플링 방법 및 샘플링 값(t_sample): tangential 성분의 샘플링 방법 및 샘플링에 사용된 변위벡터계수의 위치 정보를 나타낸다.
bi-tangential 성분의 샘플링 방법 및 샘플링 값(b_sample): bi-tangential 성분의 샘플링 방법 및 샘플링에 사용된 변위벡터계수의 위치 정보를 나타낸다.
도35는 실시예들에 따른 변위벡터계수 패킹 및 역패킹을 나타낸다.
도35는 도23 및 도32 등에 따른 변위벡터계수를 패킹하고 역패킹하는 동작을 나타낸다.
실시예들에 따른 송신 방법/장치는 도23등에서 설명한 바와 같이, 도35를 참조하면, NTB채널의 성분을 YUV채널로 패킹하고, 이때 패킹 방법은 YUV 4:2:0 포맷일수 있다. 패킹된 변위벡터계수 비디오 이미지를 도32등과 역패킹하면, 도35 도시된 바와 같이, 다시 NTB채널의 성분을 YUV 성분으로부터 복원할 수 있다. 이러한 샘플링 방법 및 샘플링 값이 도34의 t_sample 및 b_sample에 의해 시그널링되고, 이 값의 상세 내용은 도36 및 도37과 같다.
도36은 실시예들에 따른 변위벡터계수 성분의 샘플링 방법 및 샘플링 값을 나타낸다.
전술한 바와 같이, t_sample값에 따른 샘플링 방법 및 샘플링 값을 도36이 도시한다.
t_sample이 0이면: T성분 패킹 시 각 T성분의 평균값으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 평균값으로 각 T 성분을 복원한다.
t_sample이 1이면: T성분 패킹 시 T1(제 1 T값)으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T1(제 1 T값)으로 T채널의 제1값을 복원하고, 제2 내지 제4 값은 0로 복원한다.
t_sample이 2이면: T성분 패킹 시 T1(제 2 T값)으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T1(제 2 T값)으로 T채널의 제2값을 복원하고, 제1, 제3, 제4 값은 0로 복원한다.
t_sample이 3이면: T성분 패킹 시 T1(제 3 T값)으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T1(제 3 T값)으로 T채널의 제3값을 복원하고, 제1, 제2, 제4 값은 0로 복원한다.
t_sample이 4이면: T성분 패킹 시 T1(제 4 T값)으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T1(제 4 T값)으로 T채널의 제4값을 복원하고, 제1, 제2, 제3 값은 0로 복원한다.
t_sample이 5이면: T성분 패킹 시 T1 (제1 T값) 및 T2(제 2 T값)의 평균값으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T1 (제1 T값) 및 T2(제 2 T값)의 평균값으로 제1값 내지 제2값을 복원하고, 제3값 및 제4값은 0로 복원한다.
t_sample이 6이면: T성분 패킹 시 T1 (제1 T값) 및 T3(제 3 T값)의 평균값으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T1 (제1 T값) 및 T3(제 3 T값)의 평균값으로 제1값 및 제3값을 복원하고, 제2값 및 제4값은 0로 복원한다.
t_sample이 7이면: T성분 패킹 시 T1 (제1 T값) 및 T4(제 4 T값)의 평균값으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T1 (제1 T값) 및 T4(제 4 T값)의 평균값으로 제1값 및 제4값을 복원하고, 제2값 및 제3값은 0로 복원한다.
t_sample이 8이면: T성분 패킹 시 T2 (제2 T값) 및 T3(제 3 T값)의 평균값으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T2 (제2 T값) 및 T3(제 3 T값)의 평균값으로 제2값 및 제3값을 복원하고, 제1값 및 제4값은 0로 복원한다.
t_sample이 9이면: T성분 패킹 시 T2 (제2 T값) 및 T4(제 4 T값)의 평균값으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T2 (제2 T값) 및 T4(제 4 T값)의 평균값으로 제2값 및 제4값을 복원하고, 제1값 및 제3값은 0로 복원한다.
t_sample이 10이면: T성분 패킹 시 T3 (제3 T값) 및 T4(제 4 T값)의 평균값으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T3 (제3 T값) 및 T4(제 4 T값)의 평균값으로 제3값 및 제4값을 복원하고, 제1값 및 제2값은 0로 복원한다.
t_sample이 11이면: T성분 패킹 시 T1 (제1 T값), T2 (제2 T값)및 T3(제 3 T값)의 평균값으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T1 (제1 T값), T2 (제2 T값)및 T3(제 3 T값)의 평균값으로 제1값, 제2값 및 제3값을 복원하고, 제4값은 0로 복원한다.
t_sample이 12이면: T성분 패킹 시 T1 (제1 T값), T2 (제2 T값)및 T4(제 4 T값)의 평균값으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T1 (제1 T값), T2 (제2 T값)및 T4(제 4 T값)의 평균값으로 제1값, 제2값 및 제4값을 복원하고, 제3값은 0로 복원한다.
t_sample이 13이면: T성분 패킹 시 T2 (제2 T값), T3 (제3 T값)및 T4(제 4 T값)의 평균값으로 샘플링하여 U채널의 성분으로 패킹하고, U채널로부터 T채널로 역패킹 시 T2 (제2 T값), T3 (제3 T값)및 T4(제 4 T값)의 평균값으로 제2값, 제3값 및 제4값을 복원하고, 제1값은 0로 복원한다.
b_sample이 0이면: B성분 패킹 시 각 B성분의 평균값으로 샘플링하여 U채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 평균값으로 각 B 성분을 복원한다.
b_sample이 1이면: B성분 패킹 시 B1(제 1 B값)으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B1(제 1 B값)으로 B채널의 제1값을 복원하고, 제2 내지 제4 값은 0로 복원한다.
b_sample이 2이면: B성분 패킹 시 B1(제 2 B값)으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B1(제 2 B값)으로 B채널의 제2값을 복원하고, 제1, 제3, 제4 값은 0로 복원한다.
b_sample이 3이면: B성분 패킹 시 B1(제 3 B값)으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B1(제 3 B값)으로 B채널의 제3값을 복원하고, 제1, 제2, 제4 값은 0로 복원한다.
b_sample이 4이면: B성분 패킹 시 B1(제 4 B값)으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B1(제 4 B값)으로 B채널의 제4값을 복원하고, 제1, 제2, 제3 값은 0로 복원한다.
b_sample이 5이면: B성분 패킹 시 B1 (제1 B값) 및 B2(제 2 B값)의 평균값으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B1 (제1 B값) 및 B2(제 2 B값)의 평균값으로 제1값 내지 제2값을 복원하고, 제3값 및 제4값은 0로 복원한다.
b_sample이 6이면: B성분 패킹 시 B1 (제1 B값) 및 B3(제 3 B값)의 평균값으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B1 (제1 B값) 및 B3(제 3 B값)의 평균값으로 제1값 및 제3값을 복원하고, 제2값 및 제4값은 0로 복원한다.
b_sample이 7이면: B성분 패킹 시 B1 (제1 B값) 및 B4(제 4 B값)의 평균값으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B1 (제1 B값) 및 B4(제 4 B값)의 평균값으로 제1값 및 제4값을 복원하고, 제2값 및 제3값은 0로 복원한다.
b_sample이 8이면: B성분 패킹 시 B2 (제2 B값) 및 B3(제 3 B값)의 평균값으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 BT2 (제2 B값) 및 B3(제 3 B값)의 평균값으로 제2값 및 제3값을 복원하고, 제1값 및 제4값은 0로 복원한다.
b_sample이 9이면: B성분 패킹 시 B2 (제2 B값) 및 B4(제 4 B값)의 평균값으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B2 (제2 B값) 및 B4(제 4 B값)의 평균값으로 제2값 및 제4값을 복원하고, 제1값 및 제3값은 0로 복원한다.
b_sample이 10이면: B성분 패킹 시 B3 (제3 B값) 및 B4(제 4 B값)의 평균값으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B3 (제3 B값) 및 B4(제 4 B값)의 평균값으로 제3값 및 제4값을 복원하고, 제1값 및 제2값은 0로 복원한다.
b_sample이 11이면: B성분 패킹 시 B1 (제1 B값), B2 (제2 B값)및 B3(제 3 B값)의 평균값으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B1 (제1 B값), B2 (제2 B값)및 B3(제 3 B값)의 평균값으로 제1값, 제2값 및 제3값을 복원하고, 제4값은 0로 복원한다.
b_sample이 12이면: B성분 패킹 시 B1 (제1 B값), B2 (제2 B값)및 B4(제 4 B값)의 평균값으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B1 (제1 B값), B2 (제2 B값)및 B4(제 4 B값)의 평균값으로 제1값, 제2값 및 제4값을 복원하고, 제3값은 0로 복원한다.
b_sample이 13이면: B성분 패킹 시 B2 (제2 B값), B3 (제3 B값)및 B4(제 4 B값)의 평균값으로 샘플링하여 V채널의 성분으로 패킹하고, V채널로부터 B채널로 역패킹 시 B2 (제2 B값), B3 (제3 B값)및 B4(제 4 B값)의 평균값으로 제2값, 제3값 및 제4값을 복원하고, 제1값은 0로 복원한다.
도15를 참조하면, 실시예들에 따른 송신 장치는 전송하고자 하는 원본 메쉬를 단순화부 및 매개변수화부를 거쳐 베이스 메쉬를 생성한다. 생성된 베이스 메쉬는 양자화되고, 인터 프레임인 경우에는 이전 참조 복원 베이스 메쉬로부터 움직임 벡터를 계산하여 움직임 벡터를 부호화 하며, 인트라 프레임인 경우에는 정적 메쉬 부호화부를 통해 베이스 메쉬 비트스트림으로 전송한다. 그리고 메쉬 단순화부를 거친 메쉬를 세분화 및 피팅한 메쉬 데이터와, 앞서 부호화된 베이스 메쉬로부터 복원된 메쉬 데이터 간의 변위벡터를 계산한다. 계산된 변위벡터를 효율적으로 부호화 하기 위해 변위벡터 좌표계를 로컬 좌표계로 변환할 수 있고, 변위벡터 변환부에서 변위벡터를 변위벡터계수로 변환및 양자화하여 변위벡터 비트스림으로 부호화하는 과정을 수행하게 된다. 실시예들에 따른 YUV 4:2:0 포맷을 이용한 변위벡터 부호화부에서의 변위벡터계수 이미지 패킹 과정을 수행한다.
변위벡터 부호화부는 도15와 같이 상세한 모듈로 나눌 수 있다. 먼저 변환된 변위벡터들은 linear lifting 변환, butterfly lifting 변환 등을 수행하여 변위벡터계수로 변환할 수 있다. 또한, 로컬 좌표계로 표현된 (n,t,b)의 변위 벡터들은 각각의 n, t, b 성분 별로 변환이 수행될 수 있다. 이후, 변위벡터 변환부를 수행하여 변환된 변위벡터계수에 대한 양자화가 될 수 있으며, 각 채널별로 개별적인 값으로 양자화가 될 수 있다. 변위벡터계수 패킹부에서는, 양자화된 변위벡터계수를 W X H 크기의 2D 이미지로 패킹을 수행하는 과정을 거치게 된다. 도17과 같이 1D 형태의 LoD 오름차수로 구성되어있는 변위벡터계수를 도18과 같이 2D 형태로 이미지 패킹이 수행된다. bx X by 크기를 하나의 블록으로 구성하고, 변위벡터계수의 개수 N에 따라 결정된 L X M개의 블록으로 구성할 수 있다. L과 M을 유도할 수 있도록 블록의 기본 단위 크기 정보(geometryVideoBlockSize)와 bit depth 정보 (geometryVideoBitDepth)를 시그널링 할 수 있다. 또한, 블록 내부는 zig-zag scan 순서 또는 2D Morton code 순서 등으로 변위벡터계수가 패킹 될 수 있으며, 변위벡터 패킹 순서 정보(displacement_scan_method)를 시그널링 할 수 있다. 각 LoD 별 기본 블록 또는 전체 2D 비디오 이미지의 크기를 맞추기 위해 이미지의 중간값 또는 마지막 변위벡터계수 값 등으로 패딩이 수행될 수 있다. 로컬 좌표계로 변환된 변위벡터계수는 Normal, Tangential, Bi-tangential 성분 별로 각각 Y, U, V 채널의 패킹프레임을 구성할 수 있다. 2D 이미지 패킹을 수행하기 위해 YUV 4:4:4, YUV 4:2:0, YUV 4:0:0 등의 포맷을 선택하여 이미지 패킹 포맷 정보(ColourSpace_displacement_video)를 시그널링 할 수 있다. YUV 4:4:4 포맷을 사용하는 경우에는 Normal, Tangential, Bi-tangential 성분의 값 그대로 각각 Y, U, V 채널로 패킹을 수행하게 된다. YUV 4:0:0 포맷을 사용하는 경우에는 Normal 성분의 값은 모두 그대로 Y채널로 패킹을 수행할 수 있고, Tangential, Bi-tangential 성분은 샘플링 과정이 수행되지 않을 수 있다. YUV 4:2:0 포맷을 사용하는 경우에는 Normal 성분의 값은 모두 그대로 Y채널로 패킹을 수행할 수 있고, Tangential, Bi-tangential 성분은 각 성분의 샘플링 방법에 따라 4개의 정점마다 일부 또는 전체가 각각 U, V 채널로 샘플링이 수행될 수 있다. 샘플링 방법으로 T, B 성분 중 최적의 성분 1개를 선택하는 경우에는 해당 성분의 위치와 최적의 성분 1개 샘플링을 의미하는 t_sample, b_sample 신택스의 값 (value=1,2,3,4)을 시그널링 할 수 있다. 각 T, B 성분의 4개 성분 중 2개 또는 3개의 부분합 평균을 구하는 경우에는 최적의 성분 부분합 평균값과 선택된 정점의 위치를 의미하는 t_sample, b_sample 신택스의 값 (value=5,6,7,8,9,10,11,12,13)을 시그널링 할 수 있다. 각 T, B 성분의 4개 정점의 평균값을 샘플링하는 경우에는 t_sample, b_sample 신택스의 값 (value=0) 을 시그널링 할 수 있다.
각 채널별로 변위벡터계수를 이미지화하여 패킹프레임 형태의 부호화 단위를 구성할 수 있다. 메쉬프레임 내 전체 레벨을 한 개의 패킹프레임으로 패킹하거나, 메쉬프레임 내 LoD 별로 각가의 패킹프레임으로 패킹할 수 있으며, 메쉬시퀀스 단위로 패킹방법을 의미하는 asps_vmc_ext_displacement_LoD_packing_method 신택스를 시그널링 할 수 있다. 변위벡터 이미지/부호화부에서 변위벡터계수 패킹부를 통해 패킹된 2D 이미지를 H.264, HEVC, VVC 등의 2D 비디오 부호화기를 통해 부호화를 수행하여 변위벡터 비스트림을 생성하게 된다.
마지막으로, 텍스처 맵 생성부에서는 복원된 메쉬의 텍스처 좌표에 상응하는 색상 정보를 갖는 새로운 텍스처 맵을 생성하고, 텍스처맵을 2D 비디호 부호화기를 통해 부호화하여 텍스처 비트스트림으로 전송한다.
송신단에서 상기 전체 과정을 거쳐 생성된 베이스메쉬 비트스트림, 변위벡터 비트스트림, 텍스처 비트스트림은 다중화부를 통해 하나의 비트스트림으로 생성되고, 송신부를 통해 전송이 되게 된다.
도26을 참조하면, 수신 장치는 송신기에서 전송한 비트스트림을 수신하여 역다중화부를 통해 베이스 메쉬 비트스트림, 변위벡터 비트스트림, 텍스처 맵 비트스트림을 각각 복호화하는 과정을 수행하게 된다.
먼저 베이스 메쉬 비트스트림은 인터 프레임의 경우 움직임 벡터 복호화 부, 인트라 프레임의 경우 정적 메쉬 복호화 부를 통해 복호화가 진행된다. 복호화 된 베이스 메쉬는 복원부를 거쳐 메쉬 세분화가 진행된다.
변위벡터 비트스트림은 부호화의 역순으로 변위벡터계수를 복호화하고, 역양자화 및 역변환을 수행한 후 좌표계까지 역 변환하여 베이스 메쉬 데이터와 함께 메쉬 기하정보를 복원하게 된다. 본 발명에서 제안하는 변위벡터 복호화 과정은 도27과 같이 모듈별로 상세하게 설명한다.
비디오 복호화부에서는 변위벡터 비트스트림을 입력으로 받아 2D 비디오 코덱을 통해 변위벡터계수 이미지/비디오에 대한 복호화를 수행한다. 현재 메쉬 프레임에 해당하는 복원 변위벡터계수 이미지로부터 역패킹을 수행할 수 있다. 변위벡터 패킹 시의 scan 순서 정보 (displacement_scan_method), 블록 당 사이즈 정보(geometryVideoBlockSize)와 bit depth 정보(geometryVideoBitDepth)를 파싱하여 블록 및 패킹 프레임 사이즈 (bx, by 및 L, M)을 유도하고, 패킹된 변위벡터계수에 대해 역패킹을 수행한다. 역패킹 수행 과정에서 패킹 이미지 포맷 정보(ColourSpace_displacement_video)를 파싱하여, 전송된 이미지 패킹 포맷에 따라 변환계수 유도 방법이 다를 수 있다. YUV 4:4:4 포맷을 사용하는 경우(ColourSpace_displacement_video=3)에는 Y, U, V 채널에 대해 각각 Normal, Tangential, Bi-tangential 성분을 복원할 수 있다. YUV 4:4:4 포맷의 경우 N, T, B 성분의 모든 값들을 전송하기 때문에, 부호화 이전의 데이터와 동일한 값으로 복원할 수 있다. YUV 4:0:0 포맷을 사용하는 경우(ColourSpace_displacement_video=1)에는 Y 채널에 대해 Normal 성분만 복원을 수행할 수 있다. YUV 4:2:0 포맷을 사용하는 경우(ColourSpace_displacement_video=2) 에는 Y 채널의 Normal 성분은 모두 복원이 가능하지만, U와 V 채널의 Tangent, Bi-tangent 성분에 대해서는 샘플링 방법에 따라 일부 또는 전체가 복원이 수행될 수 있다. t_sample, b_sample 신택스를 파싱하여 T, B 성분의 샘플링 방법에 맞게 변위벡터계수가 복원 될 수 있다. T_sample, b_sample 신택스 값이 1~4인 경우는, 최적의 성분 1개가 샘플링된 경우로 각각의 샘플링 포지션에 맞게 복원이 수행될 수 있다. T_sample, b_sample 신택스 값이 5~13인 경우는 최적의 성분 2개 또는 3개가 선택되어 평균낸 값으로 샘플링 된 경우이며, 선택된 성분 포지션에 맞게 복원이 수행될 수 있다. T_sample, b_sample 신택스 값이 0인 경우는 4개의 정점의 평균 값으로 샘플링 된 경우이며, 성분의 전체 포지션으로 복원이 수행될 수 있다. 또는 최적의 성분의 일부가 샘플링 되었다 하더라도 t_sample, b_sample 신택스 값이 0인 경우에는 전체 포지션으로 복원이 수행될 수 있다. 변위벡터계수 역양자화부에서는 변위벡터계수 역패킹부를 통해 정점단위로 할당된 변위벡터계수에 대해 역양자화를 수행한다. 변위벡터계수는 각 축마다 다른 양자화 파라미터를 통해 양자화가 수행될 수 있으며, 양자화 파라미터 또는 스케일링 파라미터를 유도하여 LoD 레벨 별로 양자화율을 결정할 수 있다. 변위벡터 역변환부에서는 역양자화가 수행된 변위벡터계수에 대해 asps_vmc_ext_transform_method에서 파싱한 변환 방법으로 역변환을 수행하여 복원 변위벡터를 계산한다. 변위벡터가 모두 역변환이 되면, asps_vmc_ext_displacement_coordinate_system 를 파싱하여 값이 1인 경우 복원된 변위 벡터를 local 좌표계 (n,t,b)에서 canonical 좌표계 (x,y,z)로 역변환을 수행할 수 있다. 복원 베이스 메쉬의 복원 정점 위치정보를 기반으로 정점당 노말 벡터를 계산하고, 계산된 정점당 노말 벡터를 통해 노말 벡터와 직교하는 tangential, bi-tangential 벡터를 계산하여 변위벡터 좌표계 역변환을 수행할 수 있다. 값이 0인 경우에는 계산된 복원 변위벡터가 그대로 최종 복원된 변위벡터가 될 수 있다. 동일한 정점 좌표에대해서 역변환 수행한 결과가 여러 개 인 경우에는 모두 합산한 값이 최종 변위벡터의 값이 될 수 있다. 메쉬 복원부에서는 메쉬 세분화부에서 세분화 과정을 통해 생성된 정점들에 복원 변위벡터를 더하여 복원 메쉬의 정점 기하정보를 계산하여, 최종 기하 정보를 복원할 수 있다. 전송받은 텍스처 맵 비트스트림은 텍스처 맵 복호화 부를 통해 복호화 되고, 앞서 복원된 기하정보와 함께 최종적인 복원 메쉬를 생성하게 된다.
도37은 실시예들에 따른 메쉬 데이터 송신 방법을 나타낸다.
도37은 도1 송신 장치(100), 다이나믹 메쉬 비디오 획득부(101), 다이나믹 메쉬 비디오 인코더(102), 파일/세그먼트 인캡슐레이터(103), 트랜스미터(104), 도2 프리-프로세서(200), 인코더(201), 도6-7 인코더, 도13 송신 장치, 도15-16 인코더의 메쉬 데이터 송신 동작을 나타낸다.
실시예들에 따른 메쉬 데이터 송신 방법은 메쉬 데이터를 인코딩하는 단계(S3700)를 포함할 수 있다.
실시예들에 따른 메쉬 데이터 송신 방법은 메쉬 데이터를 포함하는 비트스트림을 전송하는 단계(S3701)를 더 포함할 수 있다.
인코딩하는 단계(S3700)는, 도15를 참조하면, 메쉬 데이터를 단순화(decimation)하여 베이스 메쉬를 생성하는 단계; 베이스 메쉬를 인터 프레임 또는 인트라 프레임 중 적어도 하나의 방식에 기초하여 부호화하는 단계; 베이스 메쉬를 북원하는 단계; 베이스 메쉬를 세분화하는 단계; 복원된 베이스 메쉬 및 세분화된 베이스 메쉬에 기초하여 변위벡터를 생성하는 단계; 및 변위벡터를 부호화하는 단계; 를 포함할 수 있다.
변위벡터를 부호화하는 단계는, 도16 내지 도20을 참조하면, 변위벡터를 변위벡터계수로 변환하는 단계; 및 변위벡터계수를 이미지 내 패킹하는 단계; 를 포함할 수 있다.
변위벡터계수를 이미지 내 패킹하는 단계는, 도21 내지 도23을 참조하면, 변위벡터계수의 로컬 좌표계의 제1성분(Normal), 제2성분(Tangential), 제3성분(Bi-tangential)에 포함된 값들을 샘플링하여 제1채널(Y), 제2채널(U), 및 제3채널(V)로 각각 패킹하는 것을 포함할 수 있다.
로컬 좌표계의 제1성분의 모든 값들이 제1채널에 패킹되고, 로컬 좌표계의 제2성분의 값들 중 하나의 값만 제2채널에 패킹되고, 로컬 좌표계의 상기 제3성분의 값들 중 하나의 값만 제3채널에 패킹될 수 있다. 즉, 값들의 최적의 1개 값이 패킹 시 이용될 수 있다.
로컬 좌표계의 제1성분의 모든 값들이 제1채널에 패킹되고, 로컬 좌표계의 제2성분의 값들 중 적어도 2개 이상의 값들의 평균값이 제2채널에 패킹되고, 로컬 좌표계의 제3성분의 값들 중 적어도 2개 이상의 값들의 평균값이 제3채널에 패킹될 수 있다. 즉, 값들의 부분 합 평균 혹은 전체 합 평균이 패킹 시 이용될 수 있다.
도37 방법은 송신 장치에 의해 수행될 수 있고, 송신 장치는 도1을 참조하면, 메모리; 및 메모리에 저장된 하나 또는 하나 이상의 인스트럭션을 수행하는 프로세서; 를 포함하고, 프로세서는: 메쉬 데이터를 인코딩; 및 메쉬 데이터를 포함하는 비트스트림을 전송; 하는 것을 수행할 수 있다.
도38은 실시예들에 따른 메쉬 데이터 수신 방법을 나타낸다.
도38은 도1 수신 장치(110), 리시버(111), 파일/세그먼트 디캡슐레이터(112), 다이나믹 메쉬 비디오 디코더(113), 렌더러(114), 도11-12 디코더, 도14 수신 장치, 도26-27 디코더의 메쉬 데이터 수신 동작을 나타낸다.
실시예들에 따른 메쉬 데이터 수신 방법은 메쉬 데이터를 포함하는 비트스트림을 수신하는 단계(S3800)를 포함할 수 있다.
실시예들에 따른 메쉬 데이터 수신 방법은 메쉬 데이터를 디코딩하는 단계(S3801)를 더 포함할 수 있다.
수신하는 단계(S3800)에서 수신된 비트스트림은, 도33-34를 참조하면, 비트스트림은 변위벡터의 부호화 타입을 나타내는 정보(asps_vmc_ext_displacement_method), 변위벡터의 LoD별 패킹 타입을 나타내는 방법(asps_vmc_ext_displacement_LoD_packing_method), 변위벡터 패킹의 스캔 순서를 나타내는 정보(displacement_scan_method), 변위벡터 비디오 패킹 포맷을 나타내는 정보(ColourSpace_displacement_video), 또는 로컬 좌표계 상 변위벡터계수의 위치를 나타내는 정보(t_sample, b_sample) 중 적어도 하나를 포함할 수 있다.
디코딩하는 단계(S3801)는, 도26을 참조하면, 메쉬 데이터에 관한 베이스 메쉬를 인터 프레임 또는 인트라 프레임 중 적어도 하나의 방식에 기초하여 복호화하는 단계; 비트스트림 내 변위벡터를 복호화하는 단계; 를 포함할 수 있다.
변위벡터를 복호화하는 단계는, 도27을 참조하면, 변위벡터를 비디오 방식에 기초하여 복호화하여 변위벡터계수를 복원하고, 변위벡터계수를 프레임으로부터 역으로 패킹하는 것을 포함할 수 있다.
변위벡터계수를 역패킹하는 단계는, 도30을 참조하면, 제1채널 내 값들을 역패킹된 제1채널의 값들로 역패킹하고, 제2채널 내 값을 역패킹된 제2채널의 제1값으로 역패킹하고, 상기 역패킹된 제2채널의 제2값들은 제로가 되고, 제3채널 내 값을 역패킹된 제3채널의 제1값으로 역패킹하고, 상기 역패킹된 제3채널의 제2값들은 제로가 될 수 있다. 즉, t_sample: 2, b_sample: 3 인 경우의 역패킹 동작이다.
변위벡터계수를 역패킹하는 단계는, 도31을 참조하면, 제1채널 내 값들을 역패킹된 제1채널의 값들로 역패킹하고, 제2채널 내 값을 역패킹된 제2채널의 제1값 및 제2값으로 역패킹하고, 상기 역패킹된 제2채널의 제3값들은 제로가 되고, 제3채널 내 값을 역패킹된 제3채널의 제1값 및 제2값으로 역패킹하고, 상기 역패킹된 제3채널의 제3값들은 제로가 될 수 있다. 즉, t_sample: 5, b_sample: 10인 경우의 역패킹 동작이다.
변위벡터계수를 역패킹하는 단계는, 도32를 참조하면, 제1채널 내 값들을 역패킹된 제1채널의 값들로 역패킹하고, 제2채널 내 값을 역패킹된 제2채널의 값들로 역패킹하고, 제3채널 내 값을 역패킹된 제3채널의 값들로 역패킹하는 것을 포함할 수 있다. 즉, t_sample: 0, b_sample: 0인 경우의 역패킹 동작이다.
도38 방법은 수신 장치에 의해 수행되고, 수신 장치는 메모리; 및 메모리에 저장된 하나 또는 하나 이상의 인스트럭션을 수행하는 프로세서; 를 포함하고, 프로세서는: 메쉬 데이터를 포함하는 비트스트림을 수신; 및 상기 메쉬 데이터를 디코딩; 을 수행할 수 있다.
실시예들은 다음과 같은 기술적 문제점을 해결하고 기술적 효과를 제공한다. 구체적으로, 기존의 V-DMC에 적용된 메쉬 압축 기술에서 변위벡터 정보는 3D 또는 1D 벡터 형태로 표현되어 압축되고 전송된다. 이러한 방식은 2D 비디오 코덱을 사용하여 변위벡터를 부/복호화 수행할 때, 이미지 패킹을 위해 YUV 4:4:4 또는 YUV 4:0:0 포맷을 사용해야 한다. YUV 4:4:4포맷을 사용하면, 변위벡터의 모든 성분 데이터를 전송할 수 있지만, 용량이 크다는 단점이 있다. YUV 4:0:0 포맷을 사용하면, tangential, bi-tangential 성분은 전송하지 않고 오직 Normal 성분만 전송하기 때문에 용량은 많이 절감하는 반면 화질이 다소 떨어진다는 단점이 있다. 이에 본 실시예들은 YUV 4:2:0 포맷을 사용하여 변위벡터 이미지 패킹함으로써 이러한 문제점을 해결한다. V-DMC 기술에서 사용하고 있는 두 가지 포맷과 비교하여 용량과 화질 측면에서 효율적일 수 있고, 현재 2D 비디오 코덱에서 가장 널리 쓰이고 있는 YUV 4:2:0포맷을 사용하여 호환성 측면에서도 훨씬 유리하다. 또한, YUV 4:2:0 포맷을 V-DMC 기술에 적용시에 U, V 채널의 tangential, bi-tangential 성분의 효율적이고 효과적인 샘플링 방법을 제공한다는 점에서 기술적 효과가 있다. 각 tangential, bi-tangential 컴포넌트의 최적의 성분을 선택하여 샘플링을 수행할 수 있는 방법과 샘플링에 관여한 성분의 위치에 샘플링 값을 복원할 수 있는 시그널링 방법을 이용함으로써 보다 효율적이고 고화질의 영상을 전송할 수 있는 효과가 있다.
실시예들은 방법 및/또는 장치 관점에서 설명되었으며, 방법의 설명 및 장치의 설명은 상호 보완하여 적용될 수 있다.
설명의 편의를 위하여 각 도면을 나누어 설명하였으나, 각 도면에 서술되어 있는 실시 예들을 병합하여 새로운 실시 예를 구현하도록 설계하는 것도 가능하다. 그리고, 통상의 기술자의 필요에 따라, 이전에 설명된 실시 예들을 실행하기 위한 프로그램이 기록되어 있는 컴퓨터에서 판독 가능한 기록 매체를 설계하는 것도 실시예들의 권리범위에 속한다. 실시예들에 따른 장치 및 방법은 상술한 바와 같이 설명된 실시 예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 실시 예들은 다양한 변형이 이루어질 수 있도록 각 실시 예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다. 실시예들의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 실시예들은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 실시예들의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 실시예들의 기술적 사상이나 전망으로부터 개별적으로 이해돼서는 안 될 것이다.
실시예들의 장치의 다양한 구성요소들은 하드웨어, 소프트웨어, 펌웨어 또는 그것들의 조합에 의해 수행될 수 있다. 실시예들의 다양한 구성요소들은 하나의 칩, 예를 들면 하나의 하드웨어 서킷으로 구현될 수 있다 실시예들에 따라, 실시예들에 따른 구성요소들은 각각 별도의 칩들로 구현될 수 있다. 실시예들에 따라, 실시예들에 따른 장치의 구성요소들 중 적어도 하나 이상은 하나 또는 그 이상의 프로그램들을 실행 할 수 있는 하나 또는 그 이상의 프로세서들로 구성될 수 있으며, 하나 또는 그 이상의 프로그램들은 실시예들에 따른 동작/방법들 중 어느 하나 또는 그 이상의 동작/방법들을 수행시키거나, 수행시키기 위한 인스트럭션들을 포함할 수 있다. 실시예들에 따른 장치의 방법/동작들을 수행하기 위한 실행 가능한 인스트럭션들은 하나 또는 그 이상의 프로세서들에 의해 실행되기 위해 구성된 일시적이지 않은 CRM 또는 다른 컴퓨터 프로그램 제품들에 저장될 수 있거나, 하나 또는 그 이상의 프로세서들에 의해 실행되기 위해 구성된 일시적인 CRM 또는 다른 컴퓨터 프로그램 제품들에 저장될 수 있다. 또한 실시예들에 따른 메모리는 휘발성 메모리(예를 들면 RAM 등)뿐 만 아니라 비휘발성 메모리, 플래쉬 메모리, PROM등을 전부 포함하는 개념으로 사용될 수 있다. 또한, 인터넷을 통한 전송 등과 같은 캐리어 웨이브의 형태로 구현되는 것도 포함될 수 있다. 또한, 프로세서가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이 문서에서 “/”와 “,”는 “및/또는”으로 해석된다. 예를 들어, “A/B”는 “A 및/또는 B”로 해석되고, “A, B”는 “A 및/또는 B”로 해석된다. 추가적으로, “A/B/C”는 “A, B 및/또는 C 중 적어도 하나”를 의미한다. 또한, “A, B, C”도 “A, B 및/또는 C 중 적어도 하나”를 의미한다. 추가적으로, 이 문서에서 “또는”는 “및/또는”으로 해석된다. 예를 들어, “A 또는 B”은, 1) “A” 만을 의미하고, 2) “B” 만을 의미하거나, 3) “A 및 B”를 의미할 수 있다. 달리 표현하면, 본 문서의 “또는”은 “추가적으로 또는 대체적으로(additionally or alternatively)”를 의미할 수 있다.
제1, 제2 등과 같은 용어는 실시예들의 다양한 구성요소들을 설명하기 위해 사용될 수 있다. 하지만 실시예들에 따른 다양한 구성요소들은 위 용어들에 의해 해석이 제한되어서는 안된다. 이러한 용어는 하나의 구성요소를 다른 구성요소와 구별하기 위해 사욛외는 것에 불과하다. 것에 불과하다. 예를 들어, 제1 사용자 인풋 시그널은 제2사용자 인풋 시그널로 지칭될 수 있다. 이와 유사하게, 제2사용자 인풋 시그널은 제1사용자 인풋시그널로 지칭될 수 있다. 이러한 용어의 사용은 다양한 실시예들의 범위 내에서 벗어나지 않는 것으로 해석되어야만 한다. 제1사용자 인풋 시그널 및 제2사용자 인풋 시그널은 모두 사용자 인풋 시그널들이지만, 문맥 상 명확하게 나타내지 않는 한 동일한 사용자 인풋 시그널들을 의미하지 않는다.
실시예들을 설명하기 위해 사용된 용어는 특정 실시예들을 설명하기 위한 목적으로 사용되고, 실시예들을 제한하기 위해서 의도되지 않는다. 실시예들의 설명 및 청구항에서 사용된 바와 같이, 문맥 상 명확하게 지칭하지 않는 한 단수는 복수를 포함하는 것으로 의도된다. 및/또는 표현은 용어 간의 모든 가능한 결합을 포함하는 의미로 사용된다. 포함한다 표현은 특징들, 수들, 단계들, 엘리먼트들, 및/또는 컴포넌트들이 존재하는 것을 설명하고, 추가적인 특징들, 수들, 단계들, 엘리먼트들, 및/또는 컴포넌트들을 포함하지 않는 것을 의미하지 않는다. 실시예들을 설명하기 위해 사용되는, ~인 경우, ~때 등의 조건 표현은 선택적인 경우로만 제한 해석되지 않는다. 특정 조건을 만족하는 때, 특정 조건에 대응하여 관련 동작을 수행하거나, 관련 정의가 해석되도록 의도되었다.
또한, 본 문서에서 설명하는 실시예들에 따른 동작은 실시예들에 따라서 메모리 및/또는 프로세서를 포함하는 송수신 장치에 의해 수행될 수 있다. 메모리는 실시예들에 따른 동작을 처리/제어하기 위한 프로그램들을 저장할 수 있고, 프로세서는 본 문서에서 설명한 다양한 동작을 제어할 수 있다. 프로세서는 컨트롤러 등으로 지칭가능하다. 실시예들에 동작들은 펌웨어, 소프트웨어, 및/또는 그것들의 조합에 의해 수행될 수 있고, 펌웨어, 소프트웨어, 및/또는 그것들의 조합은 프로세서에 저장되거나 메모리에 저장될 수 있다.
한편, 상술한 실시예들에 따른 동작은 실시예들 따른 송신 장치 및/또는 수신 장치에 의해서 수행될 수 있다. 송수신 장치는 미디어 데이터를 송수신하는 송수신부, 실시예들에 따른 프로세스에 대한 인스트럭션(프로그램 코드, 알고리즘, flowchart 및/또는 데이터)을 저장하는 메모리, 송/수신 장치의 동작들을 제어하는 프로세서를 포함할 수 있다.
프로세서는 컨트롤러 등으로 지칭될 수 있고, 예를 들어, 하드웨어, 소프트웨어, 및/또는 그것들의 조합에 대응할 수 있다. 상술한 실시예들에 따른 동작은 프로세서에 의해 수행될 수 있다. 또한, 프로세서는 상술한 실시예들의 동작을 위한 인코더/디코더 등으로 구현될 수 있다.
상술한 바와 같이, 실시예들을 실시하기 위한 최선의 형태에서 관련 내용을 설명하였다.
상술한 바와 같이, 실시예들은 포인트 클라우드 데이터 송수신 장치 및 시스템에 전체적 또는 부분적으로 적용될 수 있다.
당업자는 실시예들의 범위 내에서 실시예들을 다양하게 변경 또는 변형할 수 있다.
실시예들은 변경/변형들을 포함할 수 있고, 변경/변형은 청구항들 및 그 와 동일한 것들의 범위를 벗어나지 않는다.
Claims (15)
- 메쉬 데이터를 인코딩하는 단계; 및상기 메쉬 데이터를 포함하는 비트스트림을 전송하는 단계; 를 포함하는,메쉬 데이터 송신 방법.
- 제1항에 있어서,상기 메쉬 데이터를 인코딩하는 단계는:상기 메쉬 데이터를 단순화(decimation)하여 베이스 메쉬를 생성하는 단계;상기 베이스 메쉬를 인터 프레임 또는 인트라 프레임 중 적어도 하나의 방식에 기초하여 부호화하는 단계;상기 베이스 메쉬를 북원하는 단계;상기 베이스 메쉬를 세분화하는 단계;상기 복원된 베이스 메쉬 및 상기 세분화된 베이스 메쉬에 기초하여 변위벡터를 생성하는 단계; 및상기 변위벡터를 부호화하는 단계; 를 포함하는,메쉬 데이터 송신 방법.
- 제2항에 있어서,상기 변위벡터를 부호화하는 단계는:상기 변위벡터를 변위벡터계수로 변환하는 단계; 및상기 변위벡터계수를 이미지 내 패킹하는 단계; 를 포함하고,메쉬 데이터 송신 방법.
- 제3항에 있어서,상기 변위벡터계수를 이미지 내 패킹하는 단계는:상기 변위벡터계수의 로컬 좌표계의 제1성분, 제2성분, 제3성분에 포함된 값들을 샘플링하여 제1채널, 제2채널, 및 제3채널로 각각 패킹하는 것을 포함하고,메쉬 데이터 송신 방법.
- 제4항에 있어서,상기 로컬 좌표계의 상기 제1성분의 모든 값들이 상기 제1채널에 패킹되고, 상기 로컬 좌표계의 상기 제2성분의 값들 중 하나의 값만 상기 제2채널에 패킹되고, 상기 로컬 좌표계의 상기 제3성분의 값들 중 하나의 값만 상기 제3채널에 패킹되는,메쉬 데이터 송신 방법.
- 제4항에 있어서,상기 로컬 좌표계의 상기 제1성분의 모든 값들이 상기 제1채널에 패킹되고, 상기 로컬 좌표계의 상기 제2성분의 값들 중 적어도 2개 이상의 값들의 평균값이 상기 제2채널에 패킹되고, 상기 로컬 좌표계의 상기 제3성분의 값들 중 적어도 2개 이상의 값들의 평균값이 상기 제3채널에 패킹되는,메쉬 데이터 송신 방법.
- 메모리; 및상기 메모리에 저장된 하나 또는 하나 이상의 인스트럭션을 수행하는 프로세서; 를 포함하고, 상기 프로세서는:메쉬 데이터를 인코딩; 및상기 메쉬 데이터를 포함하는 비트스트림을 전송; 하는 것을 수행하는,메쉬 데이터 송신 장치.
- 메쉬 데이터를 포함하는 비트스트림을 수신하는 단계; 및상기 메쉬 데이터를 디코딩하는 단계; 를 포함하는,메쉬 데이터 수신 방법.
- 제8항에 있어서,상기 메쉬 데이터를 디코딩하는 단계는:상기 메쉬 데이터에 관한 베이스 메쉬를 인터 프레임 또는 인트라 프레임 중 적어도 하나의 방식에 기초하여 복호화하는 단계;상기 비트스트림 내 변위벡터를 복호화하는 단계; 를 포함하는,메쉬 데이터 수신 방법.
- 제9항에 있어서,상기 변위벡터를 복호화하는 단계는:상기 변위벡터를 비디오 방식에 기초하여 복호화하여 변위벡터계수를 복원하고,상기 변위벡터계수를 프레임으로부터 역으로 패킹하는 것을 포함하는,메쉬 데이터 수신 방법.
- 제10항에 있어서상기 변위벡터계수를 역패킹하는 단계는:제1채널 내 값들을 역패킹된 제1채널의 값들로 역패킹하고,제2채널 내 값을 역패킹된 제2채널의 제1값으로 역패킹하고, 상기 역패킹된 제2채널의 제2값들은 제로가 되고,제3채널 내 값을 역패킹된 제3채널의 제1값으로 역패킹하고, 상기 역패킹된 제3채널의 제2값들은 제로가 되는,메쉬 데이터 수신 방법.
- 제10항에 있어서상기 변위벡터계수를 역패킹하는 단계는:제1채널 내 값들을 역패킹된 제1채널의 값들로 역패킹하고,제2채널 내 값을 역패킹된 제2채널의 제1값 및 제2값으로 역패킹하고, 상기 역패킹된 제2채널의 제3값들은 제로가 되고,제3채널 내 값을 역패킹된 제3채널의 제1값 및 제2값으로 역패킹하고, 상기 역패킹된 제3채널의 제3값들은 제로가 되는,메쉬 데이터 수신 방법.
- 제10항에 있어서상기 변위벡터계수를 역패킹하는 단계는:제1채널 내 값들을 역패킹된 제1채널의 값들로 역패킹하고,제2채널 내 값을 역패킹된 제2채널의 값들로 역패킹하고,제3채널 내 값을 역패킹된 제3채널의 값들로 역패킹하는 것을 포함하는,메쉬 데이터 수신 방법.
- 제8항에 있어서,상기 비트스트림은 변위벡터의 부호화 타입을 나타내는 정보, 변위벡터의 LoD별 패킹 타입을 나타내는 방법, 변위벡터 패킹의 스캔 순서를 나타내는 정보, 변위벡터 비디오 패킹 포맷을 나타내는 정보, 또는 로컬 좌표계 상 변위벡터계수의 위치를 나타내는 정보 중 적어도 하나를 포함하는,메쉬 데이터 수신 방법.
- 메모리; 및상기 메모리에 저장된 하나 또는 하나 이상의 인스트럭션을 수행하는 프로세서; 를 포함하고, 상기 프로세서는:메쉬 데이터를 포함하는 비트스트림을 수신; 및상기 메쉬 데이터를 디코딩; 을 수행하는,메쉬 데이터 수신 장치.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020257029113A KR20250141787A (ko) | 2023-03-31 | 2024-03-26 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR20230042880 | 2023-03-31 | ||
| KR10-2023-0042880 | 2023-03-31 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| WO2024205193A2 true WO2024205193A2 (ko) | 2024-10-03 |
| WO2024205193A3 WO2024205193A3 (ko) | 2025-06-19 |
Family
ID=92906306
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/KR2024/003771 Ceased WO2024205193A2 (ko) | 2023-03-31 | 2024-03-26 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
Country Status (2)
| Country | Link |
|---|---|
| KR (1) | KR20250141787A (ko) |
| WO (1) | WO2024205193A2 (ko) |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101669873B1 (ko) * | 2009-10-16 | 2016-10-27 | 삼성전자주식회사 | 삼차원 메쉬 압축장치 및 방법 |
| KR101815979B1 (ko) * | 2011-01-21 | 2018-01-08 | 삼성전자주식회사 | 3차원 메쉬 부호화 장치 및 방법, 그리고 3차원 메쉬 복호화 장치 및 방법 |
| US12340468B2 (en) * | 2020-03-15 | 2025-06-24 | Intel Corporation | Apparatus and method for displaced mesh compression |
| US12530809B2 (en) * | 2021-07-19 | 2026-01-20 | Tencent America LLC | Methods and apparatuses for dynamic mesh compression |
| US20240373063A1 (en) * | 2021-08-03 | 2024-11-07 | Lg Electronics Inc. | 3d data transmission device, 3d data transmission method, 3d data reception device, and 3d data reception method |
-
2024
- 2024-03-26 WO PCT/KR2024/003771 patent/WO2024205193A2/ko not_active Ceased
- 2024-03-26 KR KR1020257029113A patent/KR20250141787A/ko active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| KR20250141787A (ko) | 2025-09-29 |
| WO2024205193A3 (ko) | 2025-06-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2020190093A1 (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
| WO2024063544A1 (ko) | 3d 데이터 송신 장치, 3d 데이터 송신 방법, 3d 데이터 수신 장치 및 3d 데이터 수신 방법 | |
| WO2020190090A1 (ko) | 포인트 클라우드 데이터 전송 장치, 포인트 클라우드 데이터 전송 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
| WO2020242244A1 (ko) | 포인트 클라우드 데이터 처리 방법 및 장치 | |
| WO2022050650A1 (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
| WO2020246689A1 (ko) | 포인트 클라우드 데이터 전송 장치, 포인트 클라우드 데이터 전송 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
| WO2024049197A1 (ko) | 3d 데이터 송신 장치, 3d 데이터 송신 방법, 3d 데이터 수신 장치 및 3d 데이터 수신 방법 | |
| WO2021002592A1 (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
| WO2021029511A1 (ko) | 포인트 클라우드 데이터 전송 장치, 포인트 클라우드 데이터 전송 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
| WO2022225333A1 (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
| WO2023182762A1 (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
| WO2020190097A1 (ko) | 포인트 클라우드 데이터 수신 장치, 포인트 클라우드 데이터 수신 방법, 포인트 클라우드 데이터 처리 장치 및 포인트 클라우드 데이터 처리 방법 | |
| WO2025048542A1 (ko) | 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법 | |
| WO2024215096A1 (ko) | 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법 | |
| WO2022098140A1 (ko) | 포인트 클라우드 데이터 전송 방법, 포인트 클라우드 데이터 전송 장치, 포인트 클라우드 데이터 수신 방법 및 포인트 클라우드 데이터 수신 장치 | |
| WO2022119254A1 (ko) | 포인트 클라우드 데이터 전송 방법, 포인트 클라우드 데이터 전송 장치, 포인트 클라우드 데이터 수신 방법 및 포인트 클라우드 데이터 수신 장치 | |
| WO2024123039A1 (ko) | 3d 데이터 송신 장치, 3d 데이터 송신 방법, 3d 데이터 수신 장치 및 3d 데이터 수신 방법 | |
| WO2024205193A2 (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
| WO2025071298A1 (ko) | 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법 | |
| WO2025005646A1 (ko) | 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법 | |
| WO2024191192A1 (ko) | 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법 | |
| WO2025216593A1 (ko) | 메쉬 데이터 부호화 장치, 메쉬 데이터 부호화 방법, 메쉬 데이터 복호화 장치 및 메쉬 데이터 복호화 방법 | |
| WO2025244421A1 (ko) | 메쉬 데이터 부호화 장치, 메쉬 데이터 부호화 방법, 메쉬 데이터 복호화 장치 및 메쉬 데이터 복호화 방법 | |
| WO2025155084A1 (ko) | 메쉬 데이터 부호화 장치, 메쉬 데이터 부호화 방법, 메쉬 데이터 복호화 장치 및 메쉬 데이터 복호화 방법 | |
| WO2024186127A1 (ko) | 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법 |
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: 24781184 Country of ref document: EP Kind code of ref document: A2 |
|
| ENP | Entry into the national phase |
Ref document number: 1020257029113 Country of ref document: KR Free format text: ST27 STATUS EVENT CODE: A-0-1-A10-A15-NAP-PA0105 (AS PROVIDED BY THE NATIONAL OFFICE) |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |