WO2025005646A1 - 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법 - Google Patents

메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법 Download PDF

Info

Publication number
WO2025005646A1
WO2025005646A1 PCT/KR2024/008873 KR2024008873W WO2025005646A1 WO 2025005646 A1 WO2025005646 A1 WO 2025005646A1 KR 2024008873 W KR2024008873 W KR 2024008873W WO 2025005646 A1 WO2025005646 A1 WO 2025005646A1
Authority
WO
WIPO (PCT)
Prior art keywords
mesh
displacement
displacement vector
information
bitstream
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
Application number
PCT/KR2024/008873
Other languages
English (en)
French (fr)
Inventor
김대현
서종열
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LG Electronics Inc
Original Assignee
LG Electronics Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LG Electronics Inc filed Critical LG Electronics Inc
Priority to EP24832424.6A priority Critical patent/EP4734518A1/en
Priority to CN202480042395.3A priority patent/CN121420558A/zh
Publication of WO2025005646A1 publication Critical patent/WO2025005646A1/ko
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/18Methods 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 set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

Definitions

  • the embodiments provide a method for providing 3D content to provide users with various services 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.
  • point cloud data or mesh data is a collection of points in 3D space.
  • the technical problem according to the embodiments is to provide a device and method for efficiently transmitting and receiving mesh data in order to solve the problems described above.
  • a technical problem according to embodiments is to provide a device and method for resolving latency and encoding/decoding complexity of mesh data.
  • the technical problem according to the embodiments is to provide a device and method for efficiently performing encoding and decoding of a displacement vector.
  • a mesh data encoding method may include a step of encoding an original mesh, and a step of transmitting a bitstream including the encoded mesh and signaling information.
  • the encoding step may include a base mesh processing step of encoding a base mesh generated by simplifying the original mesh to generate a base mesh bitstream, a displacement information processing step of encoding displacement information generated based on the base mesh to generate a displacement vector bitstream, a mesh restoration step of restoring a mesh based on the encoded base mesh and the encoded displacement information, and a texture map processing step of encoding a texture map generated based on the original mesh and the restored mesh to generate a texture map bitstream.
  • the displacement information processing step may include a step of converting a coordinate system of the displacement information into a local coordinate system, a step of performing packing on at least one of a normal component, a tangential component, or a bi-tangential component included in the displacement information of the local coordinate system based on one of a first format, a second format, or a third format, and a step of encoding the packed displacement information.
  • the packing step selectively performs packing on a bi-tangential component of the displacement information
  • the signaling information may include information for identifying whether packing of the bi-tangential component is skipped.
  • the signaling information may include information for identifying a format applied to the displacement information.
  • a mesh data encoding device may include an encoder that encodes an original mesh, and a transmission unit that transmits a bitstream including the encoded mesh and signaling information.
  • the encoder may include a base mesh processing unit that generates a base mesh bitstream by encoding a base mesh generated by simplifying the original mesh, a displacement information processing unit that generates a displacement vector bitstream by encoding displacement information generated based on the base mesh, a mesh restoration unit that restores a mesh based on the encoded base mesh and the encoded displacement information, and a texture map processing unit that generates a texture map bitstream by encoding a texture map generated based on the original mesh and the restored mesh.
  • the displacement information processing unit may include a displacement information coordinate system conversion unit that converts a coordinate system of the displacement information into a local coordinate system, a displacement information packing unit that performs packing based on one of the first format, the second format, and the third format for at least one of the normal component, the tangential component, or the bi-tangential component included in the displacement information of the local coordinate system, and a displacement information encoding unit that encodes the packed displacement information.
  • a displacement information coordinate system conversion unit that converts a coordinate system of the displacement information into a local coordinate system
  • a displacement information packing unit that performs packing based on one of the first format, the second format, and the third format for at least one of the normal component, the tangential component, or the bi-tangential component included in the displacement information of the local coordinate system
  • a displacement information encoding unit that encodes the packed displacement information.
  • the displacement information packing unit selectively performs packing on a bi-tangential component of the displacement information
  • the signaling information may include information for identifying whether packing of the bi-tangential component has been skipped.
  • the signaling information may include information for identifying a format applied to the displacement information.
  • a method for decoding mesh data may include a step of receiving a base mesh bitstream, a displacement vector bitstream, a texture map bitstream, and signaling information, a base mesh processing step of restoring a base mesh from the base mesh bitstream, a displacement information processing step of restoring displacement information from the displacement vector bitstream, a restoration step of restoring a mesh based on the base mesh and the displacement information, and a texture map processing step of restoring a texture map from the texture map bitstream.
  • the displacement information processing step may include a step of decoding the displacement vector bitstream into displacement information, a step of identifying a format applied to the displacement information among the first format, the second format, and the third format, a step of depacking at least one of a normal component, a tangential component, or a bi-tangential component included in the displacement information based on the identified format, and a step of detransforming a local coordinate system of the depacked displacement information into an original coordinate system.
  • the signaling information may include information for identifying a format applied to the displacement information.
  • the signaling information further includes information for identifying whether packing of the bi-tangential component is skipped, and the depacking step can determine a depacking method of at least one of the normal component, the tangential component, or the bi-tangential component based on the signaling information.
  • a mesh data decoding device may include a receiving unit that receives a base mesh bitstream, a displacement vector bitstream, a texture map bitstream, and signaling information, a base mesh processing unit that restores a base mesh from the base mesh bitstream, a displacement information processing unit that restores displacement information from the displacement vector bitstream, a restoration unit that restores a mesh based on the base mesh and the displacement information, and a texture map processing unit that restores a texture map from the texture map bitstream.
  • the displacement information processing unit may include a displacement information decoding unit that decodes the displacement vector bitstream into displacement information, a displacement information depacking unit that identifies a format applied to the displacement information among the first format, the second format, and the third format, and depacks at least one of a normal component, a tangential component, or a bi-tangential component included in the displacement information based on the identified format, and a coordinate system inverse transformation unit that inversely transforms a local coordinate system of the depacked displacement information into an original coordinate system.
  • a computer program stored on a computer-readable recording medium can be combined with a computer, which is hardware, to perform the above method.
  • a computer program stored on a computer-readable recording medium can be combined with a computer, which is hardware, to perform the above method.
  • the mesh data transmission method, mesh data transmission device, mesh data reception method, and mesh data reception device can provide a quality 3D service.
  • the mesh data transmission method, mesh data transmission device, mesh data reception method, and mesh data reception device can achieve various video codec methods.
  • the mesh data transmission method, mesh data transmission device, mesh data reception method, and mesh data reception device can provide general-purpose 3D content such as autonomous driving services.
  • the mesh data transmission method, mesh data transmission device, mesh data reception method, and mesh data reception device encode and transmit only the normal component and the tangential component excluding the bi-tangential component among the normal component, the tangential component, and the bi-tangential component converted to a local coordinate system, and cause a decoder of the receiving device to decode up to the bi-tangential component, thereby obtaining mesh data with an efficient bit saving effect and thus better image quality.
  • 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 illustrates a displacement generation process according to embodiments.
  • Figure 6 illustrates an intra frame encoding process of V-MESH data according to embodiments.
  • Figure 7 illustrates an inter-frame encoding process of V-MESH data according to embodiments.
  • Figure 8 shows a lifting conversion process for displacement according to embodiments.
  • Figure 9 illustrates a process of packing transformation coefficients into a 2D image according to embodiments.
  • Figure 10 illustrates the attribute transfer process of the V-MESH compression method according to embodiments.
  • FIG. 11 illustrates an intra-frame decoding process of V-MESH data according to embodiments.
  • Figure 12 shows an inter-frame decoding processor of V-MESH data.
  • FIG. 13 is a drawing showing an example of a transmitter device according to embodiments.
  • FIG. 14 is a drawing showing an example of a receiving device according to embodiments.
  • FIG. 15 is a drawing showing another example of a transmitter device according to embodiments.
  • Figure 16 is a detailed block diagram of a displacement vector encoder according to embodiments.
  • FIG. 17 is a diagram showing an example of a displacement vector coefficient structure according to embodiments.
  • FIG. 18 is a diagram showing an example of packing displacement vector coefficients according to embodiments.
  • FIG. 19 is a diagram showing an example of packing displacement vector coefficient blocks by LoD according to embodiments.
  • FIG. 20(a) and FIG. 20(b) are diagrams showing examples of a method for packing displacement vector coefficients in a displacement vector coefficient block according to embodiments.
  • FIG. 21(a) and FIG. 21(b) are diagrams showing an example of packing displacement vector coefficients based on the YUV 4:4:4 format according to embodiments.
  • FIG. 22(a) and FIG. 22(b) are diagrams showing another example of packing displacement vector coefficients based on the YUV 4:4:4 format according to embodiments.
  • FIG. 23(a) and FIG. 23(b) are diagrams showing an example of packing displacement vector coefficients based on the YUV 4:2:0 format according to embodiments.
  • FIG. 24(a) and FIG. 24(b) are diagrams showing another example of packing displacement vector coefficients based on the YUV 4:2:0 format according to embodiments.
  • FIG. 25(a) and FIG. 25(b) are diagrams showing an example of packing displacement vector coefficients based on the YUV 4:0:0 format according to embodiments.
  • FIG. 26(a) and FIG. 26(b) are diagrams showing another example of packing displacement vector coefficients based on the YUV 4:0:0 format according to embodiments.
  • FIG. 27 is a drawing showing another example of a receiving device according to embodiments.
  • Fig. 28 is an example of a detailed block diagram of a displacement vector decoder according to embodiments.
  • FIG. 29(a) and FIG. 29(b) are diagrams showing an example of reverse packing displacement vector coefficients based on the YUV 4:4:4 format according to embodiments.
  • FIG. 30(a) and FIG. 30(b) are diagrams showing another example of reverse packing displacement vector coefficients based on the YUV 4:4:4 format according to embodiments.
  • FIG. 31(a) and FIG. 31(b) are diagrams showing an example of reverse packing displacement vector coefficients based on the YUV 4:2:0 format according to embodiments.
  • FIG. 32(a) and FIG. 32(b) are diagrams showing another example of depacking displacement vector coefficients based on the YUV 4:2:0 format according to embodiments.
  • FIG. 33(a) and FIG. 33(b) are diagrams showing an example of reverse packing displacement vector coefficients based on the YUV 4:0:0 format according to embodiments.
  • FIG. 34(a) and FIG. 34(b) are diagrams showing another example of depacking displacement vector coefficients based on the YUV 4:0:0 format according to embodiments.
  • Figures 35(a) and 35(b) are diagrams showing another example of depacking displacement vector coefficients based on the YUV 4:0:0 format according to embodiments.
  • FIG. 36 is a diagram showing an example of a syntax structure of signaling information according to embodiments.
  • FIG. 37 is a diagram showing another example of a syntax structure of signaling information according to embodiments.
  • Figure 38 is a flowchart showing an example of a transmission method according to embodiments.
  • Figure 39 is a flowchart showing an example of a receiving method according to embodiments.
  • 3D data can be expressed as a point cloud, mesh, etc., depending on the expression format.
  • a mesh is composed of geometric information expressing the coordinate values of each vertex (vertex or point), connection information indicating the connection relationship between vertices, a texture map expressing the color information of the mesh surface as 2D image data, and texture coordinates indicating mapping information between the surface of the mesh and the texture map.
  • a mesh is defined as a dynamic mesh when at least one of the elements constituting the mesh changes over time, and a static mesh when it does not change.
  • Figure 1 illustrates a system for providing dynamic mesh content according to embodiments.
  • the system of FIG. 1 includes a transmitting device (100) and a receiving device (110) according to embodiments.
  • the transmitting device (100) may include a mesh video acquisition unit (101), a mesh video encoder (102), a file/segment encapsulator (103), and a transmitter (104).
  • the receiving device (110) may include a receiving unit (111), a file/segment decapsulator (112), a 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 mesh data transmitting device may be interpreted as a term referring to a 3D data transmitting device or the transmitting device (100), or a mesh video encoder (hereinafter, referred to as an encoder) (102).
  • the mesh data receiving device may be interpreted as a term referring to a 3D data receiving device or receiving device (110), or a 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.
  • Point cloud data is data having color information at the coordinates (X, Y, Z) of a vertex (or point).
  • the coordinates (i.e., position information) of a vertex are referred to as geometry information
  • the color information of a vertex is referred to as attribute information
  • the geometry information and the attribute information are referred to as vertex information or point cloud data.
  • the vertex information to which connectivity information between vertices is added is referred to as mesh data.
  • it can be created in the form of mesh data from the beginning. Or, it can be used by converting it into mesh data by adding connectivity information to point cloud data.
  • 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 mesh content services may include acquisition processes, encoding processes, transmission processes, decoding processes, rendering processes, and/or feedback processes, 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 transmitter (100) and a receiver (110) as shown in Fig. 1.
  • the transmitter (100) may encode a mesh video to output a bitstream, and transmit it to the receiver (110) in the form of a file or streaming (streaming segment) through a digital storage medium or a network.
  • the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, and SSD.
  • 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 a Mesh video encoder.
  • the receiver may be included in a Mesh video decoder.
  • the renderer (114) 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 (100) and the receiving device (110) 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 vertices in 3D space and connection information indicating how the vertices are connected. It can also include vertex attributes 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 in the attributes of the mesh. The mapping can be described as a set of parameter coordinates, generally called UV coordinates or texture coordinates, associated with the mesh vertices.
  • the mesh contains a 2D attribute map, which can be used to store high-resolution attribute information such as texture, normal, displacement, etc.
  • displacement can be used interchangeably with displacement, displacement information, or displacement vector (i.e., displacement vector).
  • the mesh video acquisition unit (101) may include processing 3D object data acquired through a camera, etc. into a mesh data type having the attributes described above through a series of processes and generating a video composed of such mesh data.
  • the mesh video may have attributes of the mesh, such as vertices, polygons, connection information between vertices, colors, normals, etc., that may change over time.
  • a mesh video having attributes and connection information that change over time in this way may be expressed as a dynamic mesh video.
  • the mesh video encoder (102) can encode an input mesh video into one or more video streams.
  • One video can include multiple frames, and one frame can correspond to a still image/picture.
  • the mesh video can include mesh images/frames/pictures, and the mesh video can be used interchangeably with the mesh images/frames/pictures.
  • the mesh video encoder (102) can perform a Video-based Dynamic Mesh (V-Mesh) Compression procedure.
  • the mesh video encoder (102) can perform a series of procedures such as prediction, transformation, quantization, and entropy coding for compression and coding efficiency.
  • the encoded data (encoded video/image information) can be output in the form of a bitstream.
  • the file/segment encapsulator (103) 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 (102) or may be configured as a separate component/module.
  • the file/segment encapsulator (103) can encapsulate the corresponding data in a file format such as ISOBMFF, or process it in the form of other DASH segments, etc.
  • the file/segment encapsulator (103) 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 the file.
  • the file/segment encapsulator (103) may encapsulate the mesh video related metadata itself into a file.
  • the transmission processing unit can process encapsulated mesh video data for transmission according to the file format.
  • the transmission processing unit can be included in the transmission unit (104) 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 it for transmission.
  • the transmission unit (104) can transmit encoded video/image information or data output in the form of a bitstream to the reception unit (111) of the reception device (110) 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 (104) 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 (111) can extract the bitstream and transmit it to a decoding device.
  • the receiving unit (111) can receive mesh video data transmitted by the mesh data transmitting device. Depending on the channel through which it is transmitted, the receiving unit (111) 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 (111), 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 transmission processing unit.
  • the receiving processing unit can transfer the acquired mesh video data to the file/segment decapsulator (112), 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.
  • the file/segment decapsulator (112) can decapsulate mesh video data in the form of a file received from a receiving processing unit.
  • the file/segment decapsulator (112) 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 the mesh video decoder (113), and the obtained mesh video related metadata (metadata bitstream) can be transmitted to the metadata processing unit.
  • the mesh video bitstream may include metadata (metadata bitstream).
  • the metadata processing unit may be included in the mesh video decoder (113) or may be configured as a separate component/module.
  • the mesh video related metadata obtained by the file/segment decapsulator (112) may be in the form of a box or track within a file format.
  • the file/segment decapsulator (112) may receive metadata required for decapsulation from the metadata processing unit, if necessary.
  • the mesh video related metadata may be passed to the mesh video decoder (113) and used in the mesh video decoding procedure, or may be passed to the renderer (114) and used in the mesh video rendering procedure.
  • the mesh video decoder (113) can receive a bitstream and perform a reverse operation corresponding to the operation of the mesh video encoder (102) to decode the video/image.
  • the decoded mesh video/image can be displayed through the display unit of the renderer (114).
  • 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. 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 and rendering 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 attributes 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.
  • the video-based dynamic mesh compression (V-Mesh) compression method can provide a method of compressing dynamic mesh video data based on a 2D video codec such as HEVC (High Efficiency Video Coding) and VVC (Versatile Video Coding).
  • HEVC High Efficiency Video Coding
  • VVC Very Video Coding
  • Input mesh Contains the 3D coordinates 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 attributes (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.
  • the attribute map in the V-Mesh compression method mainly contains color information of the mesh, and is stored in an image file format (PNG, BMP, etc.).
  • Material Library File Contains information about the material attributes 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 pre-processing process to express the objects of the input mesh using the minimum number of vertices determined by the user's criteria.
  • Displacement information used to express the input mesh as similarly as possible using 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 position information (or vertex position information) is described, and referring to FIGS. 6 to 10, etc., a method for encoding attribute information (attribute map) by restoring mesh position information is described.
  • Figure 2 illustrates a V-MESH compression method according to embodiments.
  • FIG. 2 illustrates the encoding process of FIG. 1, and the encoding process may include a pre-processing process and an encoding process.
  • the mesh video encoder (102) 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 mesh video encoder (102) of FIG. 1 may be referred to as an encoder.
  • the V-Mesh compression method may include a pre-processing process (Pre-processing, 200) and an encoding process (Encoding, 201) as in FIG. 2.
  • the pre-processor (200) of FIG. 2 may be located in front of the encoder (201) of FIG. 2.
  • the pre-processor (200) and the encoder (201) of FIG. 2 may be referred to as one encoder.
  • the pre-processor (200) can receive a static of a dynamic mesh (M(i)) and/or an attribute map (A(i)).
  • the pre-processor (200) can generate a base mesh (m(i)) and/or a displacement (or displacement) (d(i)) through pre-processing.
  • the pre-processor (200) can receive feedback information from an encoder (201) and generate the base mesh and/or the displacement based on the feedback information.
  • the encoder (201) can receive a base mesh (m(i)), a displacement (d(i)), a static of a dynamic mesh (M(i)), and/or an attribute map (A(i)).
  • a base mesh (m(i)), a displacement (d(i)), a static of a dynamic mesh (M(i)), and/or an attribute map (A(i)) may be referred to as mesh-related data.
  • the encoder (201) can encode the mesh-related data to generate a compressed bitstream.
  • FIG. 3 illustrates the pre-processing process of V-MESH compression according to embodiments.
  • an input mesh may include a static of a dynamic mesh (M(i)) and/or an attribute map (A(i)).
  • the input mesh may include three-dimensional coordinates of vertices constituting the mesh, normal information of each vertex, mapping information for mapping the mesh surface to a 2D plane, connection information between vertices constituting the surface, etc.
  • FIG. 3 shows a process of performing pre-processing on an input mesh.
  • the pre-processing process (200) may largely include four steps: 1) GoF (Group of Frame) generation, 2) mesh simplification (Mesh Decimation), 3) UV parameterization, and 4) fitting subdivision surface (300).
  • GoF generation may be referred to as a GoF generation process or a GoF generation unit
  • mesh simplification may be referred to as a mesh simplification process or a mesh simplification unit
  • UV parameterization may be referred to as a UV parameterization process or a UV parameterization unit
  • the fitting subdivision surface may be referred to as a fitting subdivision surface process or a fitting subdivision surface unit.
  • the pre-processor (200) can generate displacement and/or base meshes from the received input mesh and transmit them to the encoder (201).
  • the pre-processor (200) can transmit GoF information associated with 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. That is, if only the vertex coordinate values are different between the current input mesh and the reference input mesh, the encoder (201) can perform inter frame encoding. Otherwise, intra frame encoding is performed for the corresponding frame.
  • 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 (300) This is a process of performing subdivision on a decimated mesh (i.e., a simplified mesh having texture coordinates).
  • the displacement and base mesh generated through this process are output to the encoder (201).
  • a user-defined method such as a mid-edge method, may be applied as the subdivision method.
  • a fitting process is performed so that the input mesh and the mesh on which the subdivision is performed are similar to each other.
  • a mesh on which the fitting process is performed is referred to as a fitted subdivision mesh (or a fitted subdivision mesh).
  • Figure 4 illustrates a mid-edge subdivision method according to embodiments.
  • Fig. 4 shows the mid-edge method of the fitting subdivision surface described in Fig. 3.
  • an original mesh including four vertices is subdivided to generate a sub-mesh.
  • a sub-mesh can be generated by generating a new vertex in the middle of an edge between vertices. Then, a fitting process is performed so that the input mesh and the sub-mesh become similar to each other, and a fitted sub-division mesh is generated.
  • 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.
  • Fig. 5 illustrates a displacement generation process according to embodiments.
  • the displacement generation process of Fig. 5 may be performed in a pre-processor (200) or may be performed in an encoder (201).
  • FIG. 5 illustrates in detail the displacement calculation method of the fitting subdivision surface (300) as described in FIG. 4.
  • the 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 perform a subdivision on a restored base mesh to generate a subdivided restored base mesh.
  • the restoration of the base mesh may be performed in the pre-processor (200) or may be performed in the encoder (201).
  • the local coordinate system calculation unit may receive the fitted subdivision mesh and the subdivided restored base mesh, and may convert a coordinate system of the mesh into a local coordinate system based on the same.
  • the local coordinate system calculation operation may be optional.
  • the displacement calculation unit may calculate a position difference between the fitted subdivision mesh and the subdivided restored base mesh. For example, a position difference value between vertices of two input meshes may be generated. The vertex position difference value becomes a displacement.
  • the mesh data transmission method and device can encode the mesh data as follows.
  • Mesh data is a term including point cloud data.
  • 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 (or referred to as geometry information) and color information (or referred to as attribute information).
  • vertex coordinates or referred to as geometry information
  • color information or referred to as attribute information
  • patch information the geometry image, attribute image, accuracy map, and additional information generated through patch generation and packing based on the vertex coordinates and the color information
  • the point cloud data including the connection information can be referred to as mesh data.
  • 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.
  • Fig. 6 illustrates an intra-frame encoding process of a V-MESH compression method according to embodiments.
  • Each component for the intra-frame encoding process of Fig. 6 corresponds to hardware, software, a processor, and/or a combination thereof.
  • the encoding process of Fig. 6 illustrates the encoding of the mesh video encoder (102) of Fig. 1 in detail. That is, it illustrates the configuration of the mesh video encoder (102) when the encoding of Fig. 1 is an intra-frame method.
  • the encoder of Fig. 6 may include a pre-processor (200) and/or an encoder (201).
  • the pre-processor (200) and the encoder (201) of Fig. 6 may correspond to the pre-processor (200) and the encoder (201) of Fig. 3.
  • the pre-processor (200) can receive an input mesh and perform the pre-processing described above.
  • the pre-processing can generate a base mesh and/or a fitted sub-divided mesh.
  • the quantizer (411) of the encoder (201) can quantize the base mesh and/or the fitted subdivided mesh.
  • the static mesh encoder (412) can encode the static mesh (i.e., the quantized base mesh) and generate a bitstream (i.e., a compressed base mesh bitstream) including the encoded base mesh.
  • the static mesh decoder (413) can decode the encoded static mesh (i.e., the encoded base mesh).
  • the inverse quantizer (414) can inversely quantize the quantized static mesh (i.e., the base mesh) to output a reconstructed (or restored) base mesh.
  • the displacement calculation unit (415) can generate displacements (or displacements) based on the reconstructed static mesh (i.e., the base mesh) and the fitted subdivided mesh. According to embodiments, the displacement calculation unit (415) calculates displacement, which is the position difference between each vertex of the subdivided base mesh and the fitted subdivided mesh after subdividing (or refining) the restored base mesh. In other words, the displacement is a displacement vector, which is the position difference between the vertices of the two meshes so that the fitted subdivided (or refining) mesh becomes similar to the original mesh.
  • the forward linear lifting unit (416) can perform lifting transformation on the input displacement to generate lifting coefficients (or transform coefficients).
  • the quantizer (417) can quantize the lifting coefficients.
  • the image packing unit (418) can pack an image based on the quantized lifting coefficients.
  • the video encoder (419) can encode the packed image. That is, the quantized lifting coefficients are packed into one frame as a 2D image by the image packing unit (418), compressed through the video encoder (419), and output as a displacement bitstream (i.e., compressed displacement bitstream).
  • a video decoder (420) decodes a compressed displacement bitstream.
  • An image unpacking unit (421) can perform unpacking on a decoded displacement frame to output quantized lifting coefficients.
  • An inverse quantizer (422) can inverse quantize the quantized lifting coefficients.
  • An inverse linear lifting unit (423) applies inverse lifting to the inverse quantized lifting coefficients to generate restored displacement.
  • a mesh restoration unit (424) restores a reconstructed and deformed mesh through the restored displacement output from the inverse linear lifting unit (423) and the restored base mesh (or referred to as a subdivided restored base mesh) output from the inverse quantization unit (414).
  • the present disclosure refers to the reconstructed and deformed mesh as a restored deformed mesh.
  • the attribute transfer (425) receives an input mesh and/or an input attribute map, and regenerates an attribute map based on the restored deformed mesh.
  • the attribute map means a texture map corresponding to attribute information among mesh data components, and in the present disclosure, the attribute map and the texture map may be used interchangeably.
  • the push-pull padding (426) may pad data in the attribute map based on the push-pull method.
  • the color space conversion unit (427) may convert the space of the color component of the attribute map. For example, the attribute map may be converted from an RGB color space to a YUV color space.
  • the video encoder (428) may encode the attribute map and output it as a compressed attribute bitstream.
  • a multiplexer (430) can multiplex a compressed base mesh bitstream, a compressed displacement bitstream, and a compressed attribute bitstream to generate a compressed bitstream.
  • the displacement calculation unit (415) may be included in the pre-processor (200).
  • at least one of the quantizer (411), the static mesh encoder (412), the static mesh decoder (413), and the inverse quantizer (414) may be included in the pre-processor (200).
  • the intra frame encoding method includes base mesh encoding (also called static mesh encoding). That is, when performing intra frame encoding on the current input mesh frame, the base mesh generated in the pre-processing process of the pre-processor (200) may be encoded using a static mesh compression technique in a static mesh encoder (412) after undergoing a quantization process in a quantizer (411).
  • base mesh encoding also called static mesh encoding
  • Draco technology is applied to base mesh encoding, and vertex position information, mapping information (texture coordinates), vertex connection information, etc. of the base mesh become compression targets.
  • 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.
  • Fig. 7 illustrates an inter-frame encoding process of a V-MESH compression method according to embodiments.
  • Each component for the inter-frame encoding process of Fig. 7 corresponds to hardware, software, a processor, and/or a combination thereof.
  • 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 an inter-frame method.
  • the encoder of Fig. 7 may include a pre-processor (200) and/or an encoder (201).
  • the pre-processor (200) and the encoder (201) of Fig. 7 may correspond to the pre-processor (200) and the encoder (201) of Fig. 3.
  • the motion encoder (512) can obtain a motion vector between two base meshes based on the restored quantized reference base mesh and the quantized current base mesh, and then encode the motion vector to output a compressed motion bitstream.
  • the motion encoder (512) can be referred to as a motion vector encoder.
  • the base mesh restoration unit (513) can restore the base mesh based on the restored quantized reference base mesh and the encoded motion vector.
  • the restored base mesh is dequantized in the dequantizer (514) and then output to the displacement calculation unit (515).
  • the displacement calculation unit (515) may be included in the pre-processor (200). Additionally, at least one of the quantizer (511), the motion encoder (512), the base mesh restoration unit (513), and the inverse quantizer (514) may be included in the pre-processor (200).
  • the inter-frame encoding method may include motion field encoding (or motion vector 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 (or motion vector) 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 also be encoded as a value.
  • the predicted motion field may be calculated by averaging the motion fields of the restored vertices among the vertices connected to the current vertex, and the residual motion field, which is the difference between the predicted motion field value and the motion field value of the current vertex, may be encoded.
  • the residual motion field value may 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 remaining structure of the intra frame encoding method excluding 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 (or lifting coefficients) according to embodiments into a 2D image.
  • Figures 8 and 9 illustrate the process of transforming displacement and packing transform coefficients of the encoding process of Figures 6 and 7, respectively.
  • the encoding method according to the embodiments includes displacement encoding.
  • a reconstructed base mesh is generated through restoration and dequantization, and 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 (see 415 of FIG. 6 or 515 of FIG. 7).
  • a data transform process such as wavelet transform can be applied to the displacement information (see 416 of FIG. 6 or 516 of FIG. 7).
  • FIG. 8 shows a process of transforming displacement information using a lifting transform in the forward linear lifting unit (416) of FIG. 6 or the wavelet transformer (516) of FIG. 7.
  • a linear wavelet-based lifting transform may be performed.
  • the transform coefficients generated through the transform process are quantized in a quantizer (417 or 517) and then packed into a 2D image through an image packing unit (418 or 518) as 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 a subdivided base mesh.
  • Transform coefficients can be packed by aligning them with Morton code within a block.
  • the packed images generate a displacement video for each GoF unit, and the displacement video can be encoded using a conventional video compression codec in a video encoder (419 or 519).
  • a base mesh (original) may include vertices and edges for LoD0.
  • a first sub-division mesh generated by dividing (or subdividing) the base mesh includes vertices generated by further dividing (or subdividing) 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 divided (or subdivided) again to generate a second sub-division mesh.
  • the second sub-division mesh includes LoD2.
  • LoD2 includes base mesh vertices (LoD0), LoD1 including vertices further divided (or subdivided) from LoD0, and vertices further divided (or subdivided) from LoD1.
  • LoD is a level of detail of mesh data content, and as the index of the level increases, the distance between vertices becomes closer and the level of detail increases. In other words, the smaller the LoD value, the lower the detail of the mesh data content, and the larger the LoD value, the higher the detail of the mesh data content.
  • LoD N includes the vertices included in the previous LoDN-1 as they are.
  • the mesh When the mesh (or vertex) is further divided through subdivision, considering the previous vertices v1, v2 and the subdivided vertex v, the mesh can be encoded based on the prediction and/or update method. Instead of encoding the information about the current LoD N as it is, the residual value between the previous LoD N-1 can be generated and the mesh can be encoded through 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 and v2. Since adjacent subdivision meshes have similar data, efficient encoding can be performed by utilizing this property.
  • the current vertex position information is predicted as a residual for the previous vertex position information, and the previous vertex position information is updated through the residual.
  • vertex, apex, and point may be used with the same meaning.
  • LoDs may be defined in the subdivision process of the base mesh. According to embodiments, the subdivision process of the base mesh may be performed in the pre-processor (200) or may be performed in a separate component/module.
  • a vertex has a transform coefficient (or lifting coefficient) generated through a lifting transformation.
  • the transform coefficient of a vertex related to a lifting transformation can be packed into an image by an image packing unit (418 or 518) and then encoded by a video encoder (419 or 519).
  • Figure 10 illustrates the attribute transfer process of the V-MESH compression method according to embodiments.
  • FIG. 10 illustrates the detailed operation of attribute transfer (425 or 525) of encodings such as FIG. 6, FIG. 7, etc.
  • Encoding according to embodiments includes attribute map encoding.
  • attribute map encoding may be performed in the video encoder (428) of FIG. 6 or the video encoder (528) of FIG. 7.
  • the encoder compresses information about an input mesh through base mesh encoding (i.e., intra encoding), motion field encoding (i.e., inter encoding), and displacement encoding.
  • base mesh encoding i.e., intra encoding
  • motion field encoding i.e., inter encoding
  • displacement encoding the compressed input mesh is reconstructed through base mesh decoding (intra frame), motion field decoding (inter frame), and displacement video decoding, and the reconstructed result, the reconstructed deformed mesh (hereinafter referred to as Recon. deformed mesh), is used to compress an input attribute map, as shown in FIGS. 6 and 7.
  • Recon. deformed mesh is used to compress an 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 connection information corresponding thereto, 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 regenerated through the attribute transfer process of attribute transfer (425 or 525).
  • attribute transfer (425 or 525) first checks whether each point P(u, v) of a 2D texture domain belongs to a texture triangle of a reconstructed deformed mesh, and if it exists in a texture triangle T, the barycentric coordinate of P(u, v) according to the triangle T ( , , ) is calculated. And the 3D vertex positions of triangle T and ( , , ) is used to compute the 3D coordinates M(x, y, z) of P(u, v). Find the vertex coordinates M'(x', y', z') and the triangle T' containing this vertex, which corresponds to the most similar position to the computed M(x, y, z) in the input mesh domain.
  • a new attribute map generated via attribute transfer (425 or 525) is grouped into GoF units to form an attribute map video, which is compressed using the video codec of the video encoder (428 or 528).
  • the decoding processing 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 (or intra decoding) process of V-Mesh technology according to embodiments.
  • Fig. 11 illustrates the configuration and operation of the mesh video decoder (113) of the receiving device of Fig. 1.
  • Fig. 11 can restore mesh data by performing the reverse process of the intra frame encoding process of Fig. 6.
  • Each component for the intra frame decoding process of Fig. 11 corresponds to hardware, software, and/or a combination thereof.
  • the bitstream (i.e., compressed bitstream) received and input to the demultiplexer (611) of the intra frame decoding unit (610) can be separated into a mesh sub-stream, a displacement sub-stream, an attribute map sub-stream, and a sub-stream including patch information of the mesh such as V-PCC/V3C.
  • V-PCC Video-based Point Cloud Compression
  • V3C Visual Volumetric Video-based Coding
  • the mesh sub-stream may be input to a static mesh decoder (612) and decoded
  • the displacement sub-stream may be input to a video decoder (613) and decoded
  • the attribute map sub-stream may be input to a video decoder (617) and decoded.
  • the mesh sub-stream is decoded through a decoder (612) of a static mesh codec used in encoding, such as Google Draco, to thereby reconstruct a quantized base mesh, for example, connection information of the base mesh, vertex geometry information, vertex texture coordinates, etc.
  • a decoder 612 of a static mesh codec used in encoding, such as Google Draco
  • a displacement sub-stream is decoded into a displacement video through a decoder (613) of a video compression codec used in encoding, and is restored as displacement information for each vertex through an image unpacking process of an image unpacking unit (614), an inverse quantization process of an inverse quantizer (615), and an inverse transform process of an inverse linear lifting unit (616) (i.e., Recon. displacements).
  • a base mesh restored by a static mesh decoder (612) is inverse quantized by an inverse quantizer (620) and then output to a mesh restoration unit (630).
  • the mesh restoration unit (630) reconstructs and restores a deformed mesh (i.e., decoded mesh) through the restored displacement output from the inverse linear lifting unit (616) and the restored base mesh output from the inverse quantization unit (620). That is, the inverse quantized restored base mesh is combined with the restored displacement information to generate a final decoded mesh.
  • the final decoded mesh is referred to as a reconstructed deformed mesh.
  • an attribute map sub-stream is decoded through a decoder (617) corresponding to a video compression codec used in encoding, and then restored to a final attribute map (i.e., decoded attribute map) through processes such as color format conversion and color space conversion in a color conversion unit (640).
  • 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 received compressed 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 map information (data).
  • the decoder of FIG. 11 performs the following intra-frame decoding operations.
  • the static mesh decoder (612) decodes the mesh sub-stream to generate a reconstructed quantized base mesh, and the inverse quantizer (620) applies the quantization parameters of the quantizer inversely to generate the reconstructed base mesh.
  • the video decoder (613) decodes the displacement sub-stream, the image unpacking unit (614) unpacks the images of the decoded displacement video, and the inverse quantizer (615) inversely quantizes the quantized images.
  • the inverse linear lifting unit (616) applies a lifting transform in the reverse process of the encoder to generate the reconstructed displacement.
  • the mesh restoration unit (630) generates a reconstructed deformed mesh based on the reconstructed base mesh and the reconstructed displacement.
  • a video decoder (617) decodes an attribute map sub-stream, and a color converter (640) converts a color format and/or space of the decoded attribute map to generate a decoded attribute map.
  • Figure 12 illustrates the inter-frame decoding (or inter-decoding) process of V-Mesh technology.
  • Fig. 12 shows the configuration and operation of the mesh video decoder (113) of the receiving device of Fig. 1.
  • Fig. 12 can restore mesh data by performing the reverse process of the inter-frame encoding process of Fig. 7.
  • Each component for the inter-frame decoding process of Fig. 12 corresponds to hardware, software, and/or a combination thereof.
  • the bitstream received and input to the demultiplexer (711) of the intra frame decoding unit (710) can be separated into a motion sub-stream (or motion vector sub-stream), a displacement sub-stream, an attribute map sub-stream, and a sub-stream including patch information of a mesh such as V3C/V-PCC.
  • a motion sub-stream may be input to a motion decoder (712) and decoded
  • a displacement sub-stream may be input to a video decoder (713) and decoded
  • an attribute map sub-stream may be input to a video decoder (717) and decoded.
  • a motion sub-stream is decoded through an entropy decoding and inverse prediction process in a motion decoder (712) and restored into motion information (or motion vector information).
  • a base mesh restoration unit (718) generates a reconstructed quantized base mesh for a current frame by combining the reconstructed motion information and a reference base mesh that has already been restored and stored.
  • An inverse quantizer (720) generates a reconstructed base mesh by applying inverse quantization to the reconstructed quantized base mesh.
  • a video decoder (713) decodes a displacement sub-stream, an image unpacking unit (714) unpacks an image of a decoded displacement video, and an inverse quantizer (715) inversely quantizes a quantized image.
  • the inverse linear lifting unit (716) applies a lifting transformation in the reverse process of the encoder to generate a restored displacement.
  • the mesh restoration unit (730) generates a reconstructed deformed mesh, i.e., a final decoded mesh, based on the reconstructed base mesh and the restored displacement.
  • the video decoder (717) decodes an attribute map sub-stream in the same manner as intra decoding, and the color conversion unit (740) converts a color format and/or space of the decoded attribute map to generate a decoded attribute map.
  • the decoded mesh and the decoded attribute map can be utilized by the receiver as final mesh data that can be utilized by the user.
  • the bitstream includes motion information (or motion vector), displacement, and attribute map. Since Fig. 12 performs inter-frame decoding, it further includes a process of decoding inter-frame motion information.
  • the motion information is decoded, and a restored quantized base mesh for the motion information is generated based on a reference base mesh to generate a restored base mesh.
  • Fig. 12 which is identical to Fig. 11, refer to the description of Fig. 11.
  • Fig. 13 illustrates a mesh data transmission device according to embodiments.
  • FIG. 13 corresponds to the transmitting device (100) or mesh video encoder (102) of FIG. 1, the encoder (pre-processor and encoder) of FIG. 2, FIG. 6, or FIG. 7, and/or the transmitting encoding device corresponding thereto.
  • 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 may be as shown in Fig. 13.
  • the transmitter of Fig. 13 may perform an intra-frame encoding (or intra-encoding or intra-screen encoding) process and/or an inter-frame encoding (or inter-encoding or inter-screen encoding) process.
  • the pre-processor (811) receives an original mesh as input and generates a simplified mesh (or base mesh) and a fitted decimated mesh (or subdivision). Simplification can be performed based on the target number of vertices or target number of polygons constituting the mesh. Parameterization, which generates texture coordinates and texture connection information per vertex, can be performed on the simplified mesh. For example, parameterization is a process of mapping a 3D surface to a texture domain for the decimated mesh. If parameterization is performed using the UVAtlas tool, mapping information that can identify where each vertex of the decimated mesh can be mapped on a 2D image is generated. The mapping information is expressed and stored as texture coordinates, and the final base mesh is generated through this process.
  • a task of quantizing floating-point type mesh information into fixed-point type can be performed.
  • This result can be output as a base mesh to a motion vector encoder (813) or a static mesh encoder (814) through a switching unit (812).
  • mesh subdivision can be performed on the base mesh to generate additional vertices.
  • vertex connection information, texture coordinates, and texture coordinate connection information including the added vertices can be generated.
  • the pre-processor (811) can generate a fitted subdivided mesh by adjusting vertex positions so that the subdivided mesh becomes similar to the original mesh.
  • the base mesh is output to a motion vector encoder (813) through a switching unit (812) when performing inter encoding for the corresponding mesh frame, and is output to a static mesh encoder (814) through a switching unit (812) when performing intra encoding for the corresponding mesh frame.
  • the motion vector encoder (813) may be referred to as a motion encoder.
  • the base mesh when performing intra encoding or intra frame encoding for the corresponding mesh frame, can be compressed through a static mesh encoder (814).
  • encoding can be performed on 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 a multiplexer (823).
  • the motion vector encoder (813) when performing inter encoding (or inter frame encoding) for the corresponding mesh frame, can receive a base mesh and a reference reconstructed base mesh (or a reconstructed quantized reference base mesh) as inputs, calculate a motion vector between the two meshes, and encode the value. In addition, the motion vector encoder (813) 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 the encoding is transmitted to the multiplexer (823).
  • the base mesh restoration unit (815) can receive the base mesh encoded by the static mesh encoder (814) or the motion vector encoded by the motion vector encoder (813) and generate a reconstructed base mesh.
  • the base mesh restoration unit (815) can perform static mesh decoding on the base mesh encoded by the static mesh encoder (814) to restore the base mesh.
  • quantization can be applied before the static mesh decoding, and inverse quantization can be applied after the static mesh decoding.
  • the base mesh restoration unit (815) can restore the base mesh based on the reconstructed quantized reference base mesh and the motion vector encoded by the motion vector encoder (813).
  • the reconstructed base mesh is output to the displacement calculation unit (816) and the mesh restoration unit (820).
  • the displacement calculation unit (816) can perform mesh refinement on the restored base mesh.
  • the displacement calculation unit (816) can calculate a displacement vector, which is a difference value of vertex positions between the restored base mesh that has been refined and the fitted subdivision (or refined) mesh generated by the pre-processor (811). At this time, the displacement vector can be calculated as many times as the number of vertices of the refined mesh.
  • the displacement calculation unit (816) can convert the displacement vector calculated in the 3D Cartesian coordinate system into a local coordinate system based on the normal vector of each vertex.
  • the displacement vector video generation unit (817) may include a linear lifting unit, a quantizer, and an image packing unit. That is, in the displacement vector video generation unit (817), the linear lifting unit may transform the displacement vector for effective encoding. The transformation may be performed by a lifting transformation, a wavelet transformation, etc. according to embodiments. In addition, quantization may be performed on the transformed displacement vector value, that is, the transform coefficient, in a quantizer. At this time, a different quantization parameter may be applied to each axis of the transform coefficient, and the quantization parameter may be derived by a promise of the encoder/decoder.
  • the displacement vector information that has undergone transformation and quantization may be packed into a 2D image in the image packing unit.
  • the displacement vector video generation unit (817) may generate a displacement vector video by bundling packed 2D images for each frame, and the displacement vector video may be generated for each GoF (Group of Frame) unit of the input mesh.
  • GoF Group of Frame
  • the displacement vector video encoder (818) can encode the generated displacement vector video using a video compression codec.
  • the generated displacement vector video bitstream is transmitted to a multiplexer (823).
  • the displacement vector restoration unit (819) may include a video decoder, an image unpacking unit, an inverse quantizer, and an inverse linear lifting unit. That is, the displacement vector restoration unit (819) performs decoding on an encoded displacement vector in the video decoder, performs image unpacking in the image unpacking unit, performs inverse quantization in the inverse quantizer, and then performs inverse transformation in the inverse linear lifting unit to restore the displacement vector.
  • the restored displacement vector is output to the mesh restoration unit (820).
  • the mesh restoration unit (820) restores a deformed mesh based on the base mesh restored by the base mesh restoration unit (815) and the displacement vector restored by the displacement vector restoration unit (819).
  • the restored mesh (or restored deformed mesh) has restored vertices, connection information between vertices, texture coordinates, and connection information between texture coordinates.
  • the texture map video generation unit (821) can regenerate a texture map based on a texture map (or attribute map) of an original mesh and a restored deformed mesh output from a mesh restoration unit (820). According to embodiments, the texture map video generation unit (821) can assign color information per vertex of a texture map of an original mesh to texture coordinates of a restored deformed mesh. According to embodiments, the texture map video generation unit (821) can generate a texture map video by grouping regenerated texture maps by GoF units for each frame.
  • the generated texture map video can be encoded using a video compression codec of the texture map video encoder (822).
  • the texture map video bitstream generated through encoding is transmitted to a multiplexer (823).
  • a multiplexer (823) multiplexes a motion vector bitstream (e.g., in case of inter encoding), a base mesh bitstream (e.g., in case of intra encoding), a displacement vector bitstream, and a texture map bitstream into one bitstream.
  • the one bitstream can be transmitted to a receiver via a transmitter (824).
  • the motion vector bitstream, the base mesh bitstream, the displacement vector bitstream, and the texture map bitstream can be generated as a file with one or more track data or encapsulated into segments and transmitted to a receiver via the transmitter (824).
  • 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 (or referred to as displacement), and a texture map (or referred to as attribute map).
  • a transmitting device according to inter-encoding can generate a motion vector (or referred to as motion), a displacement vector (or referred to as displacement), and a texture map (or referred to as 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 vertex position difference between a base mesh and a divided (or subdivided or subdivided) mesh.
  • the displacement is a position difference between a fitted subdivided mesh and a subdivided restored base mesh, that is, a vertex position difference value between the two meshes.
  • the base mesh is generated by simplifying and encoding an original mesh through pre-processing.
  • Motion is generated as motion vectors for the mesh of the current frame based on the reference base mesh of the previous frame.
  • Fig. 14 illustrates a mesh data receiving device according to embodiments.
  • Fig. 14 corresponds to the receiving device (110) or mesh video decoder (113) of Fig. 1, the decoder of Fig. 11 or Fig. 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 bitstream of the mesh data received by the receiver (910) is demultiplexed into a compressed motion vector bitstream (e.g., inter decoding) or a base mesh bitstream (e.g., intra decoding), a displacement vector bitstream, and a texture map bitstream after file/segment decapsulation by the demultiplexer (911).
  • a compressed motion vector bitstream e.g., inter decoding
  • a base mesh bitstream e.g., intra decoding
  • a displacement vector bitstream e.g., a displacement vector bitstream
  • a texture map bitstream after file/segment decapsulation
  • the motion vector decoder (913) may be referred to as a motion decoder.
  • the motion vector decoder (913) can perform decoding on the motion vector bitstream. According to embodiments, the motion vector decoder (913) can reconstruct the final motion vector by adding the previously decoded motion vector as a predictor and the residual motion vector decoded from the bitstream.
  • the static mesh decoder (914) can decode the base mesh bitstream to restore connection information, vertex geometry information, texture coordinates, normal information, etc. of the base mesh.
  • the base mesh restoration unit (915) can restore the current base mesh based on the decoded motion vector or the decoded base mesh. For example, if the current mesh is subject to inter-screen encoding, the base mesh restoration unit (915) can generate a restored base mesh by adding the decoded motion vector to the reference base mesh and then performing inverse quantization. As another example, if the current mesh is subject to intra-screen encoding, the base mesh restoration unit (915) can generate a restored base mesh by performing inverse quantization on the decoded base mesh through the static mesh decoder (914).
  • the displacement vector video decoder (917) can decode the displacement vector bitstream as a video bitstream using a video codec.
  • the displacement vector restoration unit (918) extracts displacement vector transform coefficients from the decoded displacement vector video, and applies inverse quantization and inverse transformation processes to the extracted displacement vector transform coefficients to restore the displacement vector.
  • the displacement vector restoration unit (918) may include an image unpacking unit, an inverse quantizer, and an inverse linear lifting unit. If the restored displacement vector is a value of a local coordinate system, a process of inversely transforming it to a Cartesian coordinate system may be performed.
  • the mesh restoration unit (916) can perform subdivision on the restored base mesh to generate additional vertices. Through subdivision, vertex connection information including the added vertices, texture coordinates, and texture coordinate connection information, etc. can be generated. At this time, the mesh restoration unit (916) can combine the subdivided restored base mesh with the restored displacement vector to generate a final restored mesh (or a restored deformed mesh).
  • the texture map video decoder (919) can decode the texture map bitstream as a video bitstream using a video codec to restore the texture map.
  • 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 coordinate of each vertex.
  • the mesh restored by the mesh restoration unit (916) and the texture map restored by the texture map video decoder (919) are shown to the user through a rendering process in the mesh data renderer (920).
  • 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 (or referred to as displacement), a texture map (or referred to as attribute map), and render mesh data based on the restored mesh and the restored texture map.
  • a receiving device according to inter-decoding can receive a motion vector (or referred to as motion), a displacement vector (or referred to as displacement), a texture map (or referred to as attribute map), and render mesh data based on the restored mesh and the restored texture map.
  • a mesh data transmission device and method can pre-process mesh data, encode the pre-processed mesh data, and transmit a bitstream including the encoded mesh data.
  • a point mesh data reception device and method can receive a bitstream including mesh data and decode the mesh data.
  • the mesh data transmission and reception method/device according to embodiments may be referred to as the method/device according to embodiments.
  • the mesh data transmission and reception method/device according to embodiments may also be referred to as a 3D data transmission and reception method/device or a point cloud data transmission and reception method/device.
  • the V-Mesh method converts displacement information generated during the encoding process into a video format and then compresses it using an existing 2D video codec. Then, the compressed displacement information is restored by performing the reverse process of the 2D video codec.
  • the V-DMC encoder calculates a displacement vector which is the difference between the mesh restored from the base mesh and the mesh fitted in the pre-processing step, and converts the calculated displacement vector in the canonical coordinate system (i.e., in the form of x, y, and z) into a displacement vector in the local coordinate system (i.e., in the form of normal, tangential, and bi-tangential), and then performs lifting transform and quantization on the displacement vector in the local coordinate system to encode it into a displacement vector bitstream.
  • the V-DMC decoder (or decoder or decoding device) performs the reverse process of the V-DMC encoder to restore the displacement vector.
  • the encoder performs coordinate transformation calculations for the three components of normal, tangential, and bi-tangential, and performs a series of displacement vector encoding processes like the above for each component, which may be inefficient in terms of compression efficiency and transmission speed.
  • the present disclosure proposes a method for more efficient compression and transmission, in which an encoder of a transmitting device packs only the normal and tangential components of a displacement vector and skips packing the bi-tangential component to perform encoding and transmit the same as a bitstream, and a decoder of a receiving device calculates the bi-tangential component using the two normal and tangential components received, and decodes the bi-tangential component into a final displacement vector based on the calculated bi-tangential component.
  • the encoder of the transmitting device encodes and transmits only the normal component and the tangential component excluding the bi-tangential component among the normal, tangential, and bi-tangential components converted to the local coordinate system
  • the decoder of the receiving device proposes a method of decoding up to the bi-tangential component using the received normal and tangential components.
  • the present disclosure proposes a packing method and a signaling method according to various image packing formats. In this way, compared to transmitting all of the existing normal, tangential, and bi-tangential components, by compressing and transmitting only two components, an efficient bit saving effect and better image quality mesh data can be obtained.
  • the present disclosure relates to V-DMC, a method for compressing 3D dynamic mesh data based on an existing 2D video codec, and describes a device and method for encoding/decoding in units of displacement vectors in the displacement vector transformation and quantization steps, and syntax and semantics information related thereto.
  • the present disclosure describes a method for encoding and decoding by packing only two normal and tangential components among three normal, tangential, and bi-tangential components of a displacement vector, a 2D image packing method according to a displacement vector video format, whether to skip packing for the bi-tangential component of a displacement vector, and a signaling method according to an image packing format.
  • the operations of a transmitter and a receiver to which the same are applied are described.
  • geometry information is one of the elements constituting a mesh, and includes a vertex (or point), an edge, a polygon, etc.
  • a vertex defines a position in 3D space
  • an edge represents connection information between vertices
  • a polygon forms a surface of the mesh with a combination of edges and vertices. That is, each vertex constituting the mesh represents a position in 3D space, and is expressed as, for example, x, y, z coordinates (i.e., canonical coordinate system).
  • a polygon can be a triangle or a square. That is, geometry forms the skeleton of a 3D model, and thereby defines the shape of the model and is visually expressed when rendered.
  • vertex, apex, and point may be used with the same meaning. That is, a vertex has a coordinate in 3D space, and a polygon of a triangle or a square can be generated through a connection between a plurality of vertices.
  • V-DMC referred to in the present disclosure may also be referred to as V-mesh, and the two terms are expressions used with the same meaning.
  • displacement information can be acquired based on a refined mesh (or referred to as a sub-mesh). That is, a fitting process is performed so that the input mesh and the sub-mesh become similar to each other, and the difference in each vertex position between the fitted sub-division mesh generated by performing refinement on the restored base mesh and the generated refined restored base mesh is calculated.
  • the present disclosure calls this vertex position difference value a displacement vector.
  • the displacement vector may be used interchangeably with the same meaning as displacement or displacement information.
  • the displacement video may be used interchangeably with the same meaning as displacement vector video or displacement vector conversion coefficient video
  • the displacement vector may be used interchangeably with the same meaning as displacement vector conversion coefficient or displacement vector coefficient.
  • Fig. 15 illustrates a transmitting device according to embodiments.
  • the transmitting device of Fig. 15 may be referred to as a mesh data transmitting device or an encoder or an encoder of a transmitting device or a V-Mesh encoder or a dynamic mesh encoder.
  • FIG. 15 corresponds to the transmitting device (100) or mesh video encoder (102) of FIG. 1, the encoder (preprocessor and encoder) of FIG. 2, FIG. 6, or FIG. 7, the transmitting device of FIG. 13, and/or the transmitting encoding device corresponding thereto.
  • Each component of FIG. 15 corresponds to hardware, software, a processor, and/or a combination thereof. The execution order of each block in FIG. 15 may be changed, some blocks may be omitted, and some blocks may be newly added.
  • the operation process of a transmitter for compressing and transmitting dynamic mesh data using the V-Mesh compression technology may be as shown in FIG. 15.
  • the transmitter of FIG. 15 may support both an intra-frame encoding (or intra-encoding or intra-screen encoding) process and/or an inter-frame encoding (or inter-encoding or inter-screen encoding) process.
  • the mesh simplification unit (11011) simplifies the input original mesh through a mesh simplification algorithm to generate a base mesh (or a simplified base mesh or a simplified mesh).
  • mesh simplification can be performed based on the number of target vertices or target polygons constituting the mesh.
  • a method such as decimation can be used as a mesh simplification algorithm that simplifies the original mesh. That is, the decimation method can be a process of selecting a vertex to be removed from the original mesh with a certain reference point, and then removing the selected vertex and the triangle connected to the selected vertex.
  • the mesh simplification unit (11011) can perform simplification of the input mesh by the target number of vertices or the target number of faces. At this time, the simplification process can be performed through various methods such as triangle collapse and edge collapse.
  • a base mesh simplified in a mesh simplification unit (11011) is provided to a mesh parameterization unit (11012) and a mesh refinement unit (11018).
  • the above mesh parameterization unit (11012) performs a process of mapping a 3D surface to a texture domain for a decimated mesh. That is, the mesh parameterization unit (11012) generates texture coordinates and texture connection information of an input mesh.
  • the mesh parameterization unit (11012) may perform parameterization using a UV Atlas tool. Through this process, mapping information is generated regarding which location on a 2D image each vertex of the decimated mesh can be mapped to. The mapping information is expressed and stored as texture coordinates, and a final base mesh is generated through this process. That is, the mesh parameterization unit (11012) performs parameterization that generates texture coordinates (UV coordinates) and texture connection information per vertex of an input mesh (i.e., a simplified mesh or a simplified base mesh).
  • the final base mesh (or base mesh having a texture map) generated in the above parameterization unit (11012) is input to the mesh quantization unit (11013) and quantized.
  • the mesh quantization unit (11013) can perform a task of quantizing mesh information in a floating-point form (e.g., geometry information (x, y, z) or/and texture coordinates (u, v), normal information (nx, ny, nz), etc.) into a fixed-point form. That is, the mesh quantization unit (11013) can quantize vertex coordinates and texture coordinates of the base mesh.
  • quantization for a specific component may be omitted.
  • the above mesh subdivision unit (11018) subdivides the base mesh simplified by the mesh simplification unit (11011). That is, the mesh subdivision unit (11018) 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. At this time, depending on the subdivision method, geometry information connection information, texture coordinate connection information, and texture coordinates can be implicitly derived and generated. According to embodiments, the mesh subdivision unit (11018) can perform subdivision through a method such as mid-edge, Loop, or Catmul&Clark.
  • the mesh fitting unit (11019) can perform fitting by adjusting vertex positions so that the mesh subdivided in the mesh subdivision unit (11018) becomes similar to the original mesh, thereby generating a fitted subdivided mesh.
  • the present disclosure may be referred to as a pre-processor including a mesh simplification unit (11011), a mesh parameterization unit (11012), a mesh refinement unit (11018), and a mesh fitting unit (11019).
  • the pre-processor may further include a displacement vector calculation unit (11020).
  • the quantized base mesh in the mesh quantization unit (11013) can be output to a motion vector encoder (11015) or a static mesh encoder (11016) through a switching unit (11014).
  • the base mesh is output to a motion vector encoder (11015) through a switching unit (11014) when performing inter encoding for the corresponding mesh frame, and is output to a static mesh encoder (11016) through a switching unit (11014) when performing intra encoding for the corresponding mesh frame.
  • the motion vector encoder (11015) may be referred to as a motion encoder.
  • the base mesh when performing intra encoding or intra frame encoding for the corresponding mesh frame, can be compressed through a static mesh encoder (11016).
  • encoding can be performed on connection information, vertex geometry information, vertex texture information, normal information, etc. of the base mesh. That is, vertex coordinates, vertex connection information, texture coordinates, texture connection information, etc. of the mesh can be encoded in the static mesh encoder (11016).
  • the base mesh bitstream generated through encoding is transmitted to a multiplexer (not shown).
  • the motion vector encoder (11015) when performing inter encoding (or inter frame encoding) for the corresponding mesh frame, can receive a base mesh and a reference reconstructed base mesh (or a reconstructed quantized reference base mesh) as inputs, calculate a motion vector between the two meshes, and encode the value thereof.
  • the motion vector encoder (11015) can perform prediction based on connection information using a previously encoded/decoded motion vector as a predictor, and entropy encode a differential motion vector (or residual motion vector) obtained by subtracting the predicted motion vector from the current motion vector.
  • the motion vector bitstream generated through the encoding is transmitted to a multiplexer (not shown) as a base mesh bitstream.
  • the static mesh bitstream is input to the multiplexer as a base mesh bitstream
  • the motion vector bitstream is input to the multiplexer as a base mesh bitstream
  • the base mesh decoder (11017) can receive a base mesh encoded by a static mesh encoder (11016) or a motion vector encoded by a motion vector encoder (11015) and generate a reconstructed base mesh.
  • the base mesh decoder (11017) performs reconstruction of the base mesh according to the encoding type (inter-screen encoding or intra-screen encoding) of the current mesh.
  • the base mesh decoder (11017) can perform static mesh decoding on the base mesh encoded by the static mesh encoder (11016) to reconstruct the base mesh.
  • quantization can be applied before static mesh decoding, and inverse quantization can be applied after static mesh decoding.
  • the base mesh decoder (11017) can restore the base mesh based on the restored quantized reference base mesh and the motion vector encoded by the motion vector encoder (11015). That is, when inter-screen encoding is performed, the current base mesh can be generated by decoding the motion vector by the motion vector decoding method and then applying (i.e., adding) the decoded motion vector to the reference restored base mesh. At this time, when the motion vector is not quantized, the motion vector restoration process is omitted and the current base mesh can be restored using the motion vector calculated by the motion vector encoder (11015). The restored base mesh is output to the displacement vector calculation unit (11020) and the mesh dequantization unit (11024).
  • the displacement vector calculation unit (11020) can perform mesh refinement on the restored base mesh.
  • the displacement vector calculation unit (11020) can calculate a displacement vector, which is a difference value of vertex positions between the restored base mesh that has been refined and the fitted subdivision (or refined) mesh generated by the mesh fitting unit (11019).
  • the displacement vector can be calculated as many times as the number of vertices of the refined mesh. That is, the displacement vector of the number of vertices of the refined mesh can be calculated through the displacement vector calculation unit (11020).
  • the displacement vector coordinate system transformation unit (11021) can output a vertex displacement vector calculated in a three-dimensional Cartesian coordinate system (i.e., (x, y, z) space) (or canonical coordinate system) as it is, or can transform it into a local coordinate system (i.e., normal, tangential, bi-tangential coordinate system) based on a normal vector of each vertex.
  • a local coordinate system i.e., normal, tangential, bi-tangential coordinate system
  • the normal vector can be calculated based on the geometry information and connection information of the surrounding vertices for each subdivided vertex.
  • whether the displacement vector coordinate system is converted can be determined by an encoder (i.e., a transmitting device)/decoder (i.e., a receiving device) agreement, or a displacement vector coordinate system conversion status flag (asps_vmc_ext_displacement_coordinate_system), which is information that can identify whether the displacement vector coordinate system is converted, can be signaled to signaling information (e.g., atlas sequence parameter set, ASPS) and transmitted to the receiving device.
  • an encoder i.e., a transmitting device
  • decoder i.e., a receiving device
  • a displacement vector coordinate system conversion status flag e.g., asps_vmc_ext_displacement_coordinate_system
  • the canonical coordinate system is used as is, and if it is 1, it can indicate that the conversion to the local coordinate system is performed.
  • the displacement vector in the canocial coordinate system or the displacement vector converted into the local coordinate system in the displacement vector coordinate system transformation unit (11021) is encoded into a displacement vector bitstream (or displacement vector video bitstream) in the displacement vector encoder (11022).
  • the displacement vector encoder (11022) can encode the displacement vector in the canocial coordinate system or the displacement vector converted into the local coordinate system into the displacement vector bitstream using a 2D video encoder such as H.264, HEVC, or VVC.
  • the displacement vector encoder (11022) can perform encoding on the displacement vector or the displacement vector coefficients (or displacement vector transform coefficients).
  • the displacement vector encoder (11022) can perform encoding through a video codec-based encoder, a zero run-length encoder, an arithmetic encoder, etc.
  • the displacement vector encoder (11022) can encode the displacement vector or the displacement vector coefficients by packing them into frames.
  • the displacement vector coefficients can be packed into a 2D image and then encoded using a 2D video codec (i.e., a video compression codec), or zero run-length encoded, or arithmetic encoded to generate a displacement vector video bitstream.
  • a 2D video codec i.e., a video compression codec
  • a displacement vector video bitstream encoded and generated by a displacement vector encoder (11022) is transmitted to a multiplexer (not shown).
  • a method for selecting encoding of the displacement vector encoder (11022) may use a displacement vector encoder promised in an encoder (i.e., a transmitting side)/decoder (i.e., a receiving side), or may analyze the characteristics of a displacement vector in an encoder on the transmitting side and transmit the type of a selected displacement vector encoder to a decoder on the receiving side.
  • the displacement vector restoration unit (11023) may restore the displacement vector by performing the reverse process of displacement vector encoding on the displacement vector or displacement vector coefficient encoded by the displacement vector encoder (11022). That is, the displacement vector restoration unit (11023) may perform displacement vector depacking (or unpacking) depending on the method of encoding the displacement vector, for example, if the displacement vector is encoded based on a video codec. In addition, the displacement vector restoration unit (11023) may additionally perform dequantization, detransformation, etc. depending on whether quantization and transformation processes are performed in the displacement vector encoding process.
  • the mesh dequantization unit (11024) can dequantize vertex coordinates or texture coordinates of the restored base mesh by the reverse process of quantization. If the quantization process is omitted in the mesh quantization unit (11013), the dequantization process is also omitted in the mesh dequantization unit (11024).
  • the mesh restoration unit (11025) can restore a mesh based on a restored displacement vector output from a displacement vector restoration unit (11023) and a restored base mesh (or a dequantized restored base mesh) output from a mesh inverse quantization unit (11024). More specifically, the mesh restoration unit (11025) can perform subdivision on the restored base mesh output from the mesh inverse quantization unit (11024) and add the restored displacement vector from the displacement vector restoration unit (11023) to generate a reconstructed deformed mesh.
  • the mesh restored by the mesh restoration unit (11025) (or referred to as a restored mesh or a restored deformed mesh) has restored vertices, connection information between vertices, texture coordinates, and connection information between texture coordinates.
  • the restored mesh (or restored mesh or restored deformed mesh) generated in the above mesh restoration unit (11025) is provided to the texture map generation unit (11026).
  • the texture map generation unit (11026) can regenerate the texture map of the current mesh based on the texture map (or attribute map) of the original mesh and the mesh restored by the mesh restoration unit (11025). That is, the texture map generation unit (11026) can generate the texture map of the restored mesh through the texture map of the original mesh and the relationship between the original mesh and the restored mesh.
  • the texture map generation unit (11026) can assign color information per vertex of the texture map of the original mesh to the texture coordinates of the restored base mesh (or the restored deformed mesh). According to embodiments, the texture map generation unit (11026) can generate a texture map (or texture map video) by grouping the regenerated texture maps by GoF units for each frame.
  • the texture map generated in the above texture map generation unit (11026) can be encoded in the texture map encoder (11027).
  • the texture map encoder (11027) can encode the texture map using a 2D video codec-based encoder, a zero run length encoder, an entropy coding-based arithmetic encoder, etc.
  • the texture map encoder (11027) can further perform color space conversion of the texture map. Then, the texture map substream (or texture map video bitstream) generated through the texture map encoding is transmitted to a multiplexer (not shown).
  • the type of texture map encoder (11027) may include a video encoder (e.g., VVC, HEVC, etc.), an entropy coding-based encoder, etc.
  • a method for selecting a texture map encoder (11027) may use a texture map encoder promised in an encoder (i.e., a transmitting side)/decoder (i.e., a receiving side), or may transmit the type of a texture map encoder selected by an encoder on the transmitting side to a decoder on the receiving side.
  • a multiplexer may multiplex an input base mesh bitstream, a displacement vector bitstream, and a texture map bitstream into a single bitstream and then transmit the same to a receiving device.
  • the base mesh bitstream, the displacement vector bitstream, and the texture map bitstream may be encapsulated into a file/segment and transmitted to the receiving device.
  • the bitstream multiplexed in the multiplexer may be transmitted over a network or stored in a digital storage medium.
  • the network may include a broadcasting network and/or a communication network
  • the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc.
  • the V-DMC encoding device simplifies the original mesh and generates a base mesh through a mesh parameterization process.
  • 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, it is transmitted as a base mesh bit stream through a static mesh encoder.
  • the mesh data after the process of subdividing and fitting the simplified mesh from the original mesh and the mesh data restored from the previously encoded mesh are compared to calculate the displacement vector, which is the difference between each vertex.
  • the displacement vector coordinate system is converted to a local coordinate system, and the displacement vector converted to the local coordinate system in the displacement vector encoder (12022) is converted and quantized into displacement vector coefficients, and then encoded and transmitted as a displacement vector bit stream.
  • FIG. 16 is a block diagram showing an example of a displacement vector encoder according to embodiments.
  • the displacement vector encoder (11022) may include a displacement vector conversion unit (12011), a displacement vector coefficient quantization unit (12012), a displacement vector coefficient packing unit (12013), and a displacement vector image/video encoding unit (12014).
  • Each component of FIG. 16 corresponds to hardware, software, a processor, and/or a combination thereof.
  • the execution order of each block in FIG. 16 may be changed, some blocks may be omitted, and some blocks may be newly added.
  • the displacement vector encoder performs displacement vector coefficient image packing for each video image format and then encodes the image-packed displacement vector coefficients using a 2D video codec.
  • the displacement vector transformation unit (12011) can perform linear lifting transformation, butterfly lifting transformation, wavelet transformation, etc. on the displacement vector of the (x, y, z) or (n, t, bt) coordinate system to transform the displacement vector of the (x, y, z) or (n, t, bt) coordinate system into displacement vector coefficients.
  • n means normal
  • t means tangential
  • bt means bi-tangential.
  • an average or distance-based weighted average prediction can be performed on n points near the vertex having a lower subdivision level than the current vertex based on connection information.
  • a prediction can be performed based on a displacement vector of n vertices used to generate the current vertex in the mesh subdivision step.
  • a process of updating a displacement vector of a vertex used for prediction can be performed using a residual signal generated by the prediction.
  • the displacement vector conversion unit (12011) can perform displacement vector conversion only for the normal component and tangential component excluding the bi-tangential component.
  • the displacement vector quantization unit (12012) can perform quantization on the displacement vector value, i.e., the displacement vector or the displacement vector coefficient, converted by the displacement vector transformation unit (12011). For example, if the displacement vector transformation unit (12011) performs transformation on all of the normal component, the tangential component, and the bi-tangential component, the displacement vector quantization unit (12012) performs quantization on the displacement vector coefficients of the normal component, the tangential component, and the bi-tangential component. As another example, if the displacement vector transformation unit (12011) performs transformation on only the normal component and the tangential component, the displacement vector quantization unit (12012) performs quantization on the displacement vector coefficients of the normal component and the tangential component. In the present disclosure, the displacement vector coefficient is used interchangeably with the displacement vector transformation coefficient to have the same meaning.
  • the displacement vector quantization unit (12012) can derive a quantized value (quant) for each channel by multiplying a displacement vector coefficient (value) by a scale and adding an offset as in the following mathematical expression 1.
  • each channel can be x, y, z or n, t, b according to the coordinate system of the displacement vector.
  • displacement vector coefficient quantization can be performed only for the normal and tangential components.
  • the mathematical expression 1 below is an equation for obtaining a quantized value for each channel
  • the mathematical expression 2 is an equation for obtaining a scale value for each channel of the mathematical expression 1.
  • the offset is in units of sequence or frame, and a fixed value can be used for each channel.
  • the scale of mathematical expression 1 can be determined by the quantization parameter (QP) and the level-by-level scale (level_scale) as in mathematical expression 2.
  • the level_scale in mathematical expression 2 can use a value determined by frame or sequence unit for each level.
  • the scale can also be set as an individual value for each channel of the displacement vector.
  • the displacement vector coefficient packing unit (12013) can pack the quantized displacement vector coefficients into a 2D image of the size of WxH. That is, if the displacement vector encoder (11022) encodes the displacement vector coefficients using a video codec-based encoding method, the process of packing the displacement vector coefficients into a frame as a 2D image is performed in the displacement vector coefficient packing unit (12013). In other words, the displacement vector coefficient packing unit (12013) packs the displacement vector coefficients into a 2D image, and the displacement vector image/video encoding unit (12014) can encode the packed 2D images using a video compression codec.
  • FIG. 17 is a diagram showing an example of a displacement vector coefficient structure according to embodiments.
  • the number of displacement vector coefficients included in LoD1 is N1 (LoD1)
  • the number of displacement vector coefficients of level 0 (R 0 ) is N0
  • the number of displacement vector coefficients of level 1 (R 1 ) is N1-N0.
  • the number (N1) of displacement vector coefficients included in LoD1 is the sum of the number (N0) of displacement vector coefficients of level 0 (R 0 ) and the number (N1-N0) of displacement vector coefficients of level 1 (R 1 ).
  • the displacement vector coefficient packing unit (12013) can pack N displacement vector coefficients (e.g., N quantized displacement vector coefficients) into an image of size W ⁇ H.
  • W ⁇ H can be the size of a frame in which the displacement vector coefficients are packed as a 2D image.
  • packing can be performed separately for the normal, tangential, and bi-tangential components. Or, some components can be skipped without packing. For example, the bi-tangential component can be skipped without packing.
  • Fig. 18 is a drawing showing an example of packing displacement vector coefficients according to embodiments. That is, the displacement vector coefficients in the 1D form of Fig. 17 can be packed as a 2D image as in Fig. 18.
  • the displacement vector coefficient packing unit (12013) can configure displacement vector coefficients (or transform coefficient levels) of a 1D vector or a scalar into blocks of a bx*by size, and pack each block according to a scanning order promised in an encoder/decoder, such as a z-scan order, a zig-zag scanning order, or a 2D Morton code order. That is, L*M displacement vector coefficient blocks can be block-packed into an image of a (bx*L) ⁇ (by*M) size according to an order defined in the encoder/decoder.
  • L*M is the number of blocks having the bx*by size, and bx and by can each be 16.
  • the displacement vector coefficients are configured as one block every 256 (16*16) units, and each block can be packed in a z-scan order or a zig-zag scan order.
  • displacement vector coefficients within one block can be packed according to the z-scan order, the zig-zag scanning order, the 2D Morton code order, etc.
  • one block can be configured with the size bx*by, and can be configured with L ⁇ M blocks determined according to the number N of displacement vector coefficients. At this time, packing can be performed into a 2D image of the size W ⁇ H according to the 2D Morton code, the zig-zag scanning order, etc.
  • displacement vector coefficients of all levels are packed into one frame as a 2D image
  • the packing can be performed sequentially in the scanning order from the displacement vector coefficient block of level 0 (R 0 ).
  • the total size of the displacement vector coefficients is smaller than L * M
  • padding is performed so that the size is (bx * L) ⁇ (by * M), as shown in Fig. 18. That is, if the total number of displacement vector coefficients is smaller than (bx * L) ⁇ (by * M), padding can be performed and filled so that the displacement vector image has the size of (bx * L) ⁇ (by * M).
  • Fig. 18 shows an example in which padding is performed on five blocks.
  • padding means filling the corresponding block with a meaningless value (e.g., 0).
  • a meaningless value e.g., 0
  • the packing can be performed sequentially in the scanning order from the displacement vector coefficient block of a smaller level.
  • a 2D image can be packed by performing packing and padding in the reverse order of Fig. 18.
  • L and M are determined according to the number (N) of displacement vector coefficients, or L (or M) is defined according to a convention of an encoder/decoder, and then M (or L) can be derived according to the number (N) of displacement vector coefficients as in the following mathematical expression 3.
  • the following mathematical expression 3 is an example of deriving M when L is defined according to an encoder/decoder convention.
  • the round function is a function that rounds the number in parentheses to the nearest integer.
  • the packing method of the displacement vector coefficients of the displacement vector coefficient packing unit (12013) may be determined by a promise in the encoder/decoder, or the packing method performed in the displacement vector coefficient packing unit (12013) may be transmitted to the decoder of the receiving device.
  • the displacement vector coefficients of all levels may be packed into one image (i.e., one frame) and the displacement vector image/video encoding unit (12014) may perform encoding, or the displacement vector coefficients may be packed into each image (i.e., each frame) for each subdivision level (R) and encoding may be performed respectively.
  • the displacement vector coefficients of a specific level may be packed into one image, and the displacement vector coefficients of multiple or more different levels may be packed into another image.
  • FIG. 19 is a diagram showing an example of packing displacement vector coefficient blocks by LoD according to embodiments.
  • packing of displacement vector coefficient blocks (bx ⁇ by) may be performed as in FIG. 19 according to the CTU (Coding Tree Unit) size of a 2D video encoder encoded for each LoD level. At this time, it may be performed using an intermediate value or the last displacement vector coefficient value of an image to match the CTU size for each LoD.
  • CTU is used in the process of dividing a video frame into coding tree units, and is a unit used particularly when encoding by dividing a video frame into a tree structure.
  • Fig. 19 shows an example in which displacement vector coefficients of three levels (R 0 -R 2 ) are packed into one image. That is, it is an example in which displacement vector coefficients of R 0 , R 1 , and R 2 are packed into one frame. In this case, if the number of displacement vector coefficients of R 0 , R 1 , and R 2 is smaller than the size of the frame, a padding area may exist.
  • the displacement vector coefficients of each level When packing the displacement vector coefficients of each level into one or more frames as in Fig. 19, the displacement vector coefficients can be packed into blocks of size bx ⁇ by.
  • bx*by displacement vector coefficients within one displacement vector coefficient block may be packed according to a zig-zag scan order, or may be packed according to a 2D Moulton code order as shown in Fig. 20(a) and Fig. 20(b).
  • FIG. 20(a) and FIG. 20(b) are diagrams showing examples of a method for packing displacement vector coefficients in a displacement vector coefficient block according to embodiments.
  • the size of a frame into which displacement vector coefficients are packed can be obtained as (bx ⁇ L) ⁇ (by ⁇ M), where the bx and by parameters determine the width and height of a block, respectively, and the L and M parameters determine the number of blocks included in a row and column of the frame, respectively.
  • the L and M parameters may be determined by a convention in the encoder/decoder, or L (or M) may be defined by a convention of the encoder/decoder, and then M (or L) may be derived according to the number of displacement vector coefficients (see Equation 3), or may be derived according to a level.
  • displacement vector coefficients transformed into a local coordinate system may have normal components, tangential components, and bi-tangential components.
  • the displacement vector coefficient packing unit (12013) may select a format such as YUV 4:4:4, YUV 4:2:0, YUV 4:0:0, etc. to perform image packing, and may configure displacement vector coefficients according to each format. In this process, packing of some components may be skipped.
  • YUV 4:4:4, YUV 4:2:0, and YUV 4:0:0 formats represent formats for packing normal components, tangential components, and bi-tangential components of displacement vector coefficients into an image.
  • the present disclosure can perform sampling of displacement vector coefficients V1 (N1, T1, B1) to V4 (N4, T4, B4) differently for each format in units of four vertices.
  • the YUV 4:4:4 format means that the sizes of the Y channel (w y *h y ) , the U channel (w u *h u ), and the V channel (w v *h v ) are equal.
  • the YUV 4:2:0 format means that the sizes of the U channel (w u *h u ) and the V channel (w v *h v ) are a predetermined multiple (e.g., 4 times) smaller than the size of the Y channel (w y * h y ) .
  • the YUV 4:0:0 format means that only the size of the Y channel (w y *h y ) exists, that is, when packing is performed only in the Y channel. That is, among the Y, U, and V channels, only the Y channel exists.
  • the YUV 4:4:4 format will be used interchangeably with the first format
  • the YUV 4:2:0 format will be used interchangeably with the second format
  • the YUV 4:0:0 format will be used interchangeably with the third format.
  • the Y channel may be referred to as the first channel
  • the U channel may be referred to as the second channel
  • the V channel may be referred to as the third channel.
  • first, second, third, etc. may be used to describe various components, but the components should not be limited by the terms. The terms are used to distinguish one component from another.
  • the first component may be referred to as the second component, and similarly, the second component may also be referred to as the first component.
  • the first component may be referred to as the third component.
  • the encoder may signal image packing format information (ColourSpace_displacement_video) of a given displacement vector coefficient and information for identifying whether to skip bi-tangent component packing (Bi_tangent_skip_flag) in signaling information (e.g., ASPS) and transmit them to a receiving device (or a decoder of the receiving device).
  • Image packing format information ColdSpace_displacement_video
  • Bi_tangent_skip_flag bi-tangent component packing
  • the image packing format information (ColourSpace_displacement_video) of the displacement vector coefficients can indicate whether the format used for packing the displacement vector coefficients is a YUV 4:4:4 format (i.e., a first format), a YUV 4:2:0 format (i.e., a second format), or a YUV 4:0:0 format (i.e., a third format).
  • a YUV 4:4:4 format i.e., a first format
  • a YUV 4:2:0 format i.e., a second format
  • a YUV 4:0:0 format i.e., a third format.
  • the value of the information (Bi_tangent_skip_flag) for identifying whether to skip bi-tangential component packing is 0, it can indicate that the bi-tangential component is not skipped, and if it is 1, it can indicate that the bi-tangential component is skipped.
  • FIG. 21(a) and FIG. 21(b) are diagrams showing an example of packing displacement vector coefficients based on the YUV 4:4:4 format according to embodiments. That is, FIG. 21(a) and FIG. 21(b) are examples of not skipping packing of bi-tangential components when packing displacement vector coefficients based on the YUV 4:4:4 format.
  • the value of the information (Bi_tangent_skip_flag) for identifying whether to skip bi-tangential component packing is 0, as an embodiment.
  • the normal component of the displacement vector coefficient of each vertex is stored (or packed) in the Y channel
  • the tangential component of the displacement vector coefficient of each vertex is stored (or packed) in the U channel
  • the bi-tangential component of the displacement vector coefficient of each vertex is stored in the V channel. That is, the normal, tangential, and bi-tangential components can be stored (or packed) in order in the Y, U, and V channels, respectively.
  • 21(b) is an example in which, when the displacement vector coefficients of four vertices are taken as an example, the normal components (N 1 -N 4 ), tangential components (T 1 -T 4 ), and bi-tangential components (B 1 -B 4 ) of the displacement vector coefficients of four vertices are packed in the Y channel, the U channel, and the V channel, respectively.
  • FIG. 22(a) and FIG. 22(b) are diagrams showing other examples of packing displacement vector coefficients based on the YUV 4:4:4 format according to embodiments. That is, FIG. 22(a) and FIG. 22(b) are examples of skipping packing of bi-tangential components when packing displacement vector coefficients based on the YUV 4:4:4 format.
  • the normal component of the displacement vector coefficients is stored (or packed) in the Y channel, and the tangential component of the displacement vector coefficients is stored (or packed) in the U channel. That is, the normal component is sequentially packed in the Y channel, and the tangential component is sequentially packed in the U channel, and then transmitted to the displacement vector image/video encoding unit (12014).
  • the bi-tangential component of the displacement vector coefficient of each vertex is skipped from packing. That is, the bi-tangential component is skipped and not packed in the V channel.
  • the present disclosure can fill the V channel with an intermediate value (or a fixed value) for efficient encoding/decoding. That is, in order to maintain the YUV 4:4:4 format, the V channel is filled with the intermediate value instead of the skipped bi-tangential component.
  • FIG. 22(b) is an example in which, when displacement vector coefficients of four vertices are taken as an example, normal components (N 1 -N 4 ) and tangential components (T 1 -T 4 ) of the displacement vector coefficients of four vertices are packed into the Y channel and the U channel, respectively, and the intermediate value (M) instead of the bi-tangential component is packed into the V channel.
  • FIG. 23(a) and FIG. 23(b) are diagrams showing an example of packing displacement vector coefficients based on the YUV 4:2:0 format according to embodiments. That is, FIG. 23(a) and FIG. 23(b) are examples of not skipping packing of bi-tangential components when packing displacement vector coefficients based on the YUV 4:2:0 format.
  • the normal components of the displacement vector coefficients are stored (or packed) as they are in the Y channel.
  • the tangential components of the displacement vector coefficients of one vertex per four vertices are packed in the U channel
  • the bi-tangential components of the displacement vector coefficients of one vertex per four vertices are packed in the V channel. That is, the normal component can be stored in the Y channel, the tangential component in the U channel, and the bi-tangential component in the V channel, respectively, in that order.
  • the tangential component of the U channel and the bi-tangential component of the V channel can be sampled according to the encoder/decoder agreement.
  • 23(b) is an example in which, when displacement vector coefficients of four vertices are taken as an example, the normal components (N 1 -N 4 ) of the displacement vector coefficients of four vertices are packed into the Y channel, the tangential component (T) of the displacement vector coefficient of one vertex per four vertices is packed into the U channel, and the bi-tangential component (B) of the displacement vector coefficient of one vertex per four vertices is packed into the V channel.
  • the tangential component of the displacement vector coefficient of one vertex packed into the U channel may be the average value of the tangential components of the displacement vector coefficients of four vertices, or may be the tangential component (i.e., representative value) of a specific displacement vector coefficient among the displacement vector coefficients of the four vertices.
  • the bi-tangential component of the displacement vector coefficient of one vertex packed into the V channel may be the average of the bi-tangential components of the displacement vector coefficients of the four vertices, or may be the bi-tangential component (i.e., representative value) of a specific displacement vector coefficient among the displacement vector coefficients of the four vertices.
  • the present disclosure increases the height of the Y channel by twice the packing frame image height (H) calculated by the displacement vector coefficient packing unit (12013), and stores (i.e. packs) the normal component, the tangential component, and the bi-tangential component in the Y channel component by component.
  • the U channel and the V channel can each be filled with an intermediate value.
  • FIG. 24(a) and FIG. 24(b) are diagrams showing another example of packing displacement vector coefficients based on the YUV 4:2:0 format according to embodiments. That is, FIG. 24(a) and FIG. 24(b) are examples of skipping packing of bi-tangential components when packing displacement vector coefficients based on the YUV 4:2:0 format.
  • the height of the Y channel is increased by twice the packing frame image height (H) calculated by the displacement vector coefficient packing unit (12013), and then the displacement vector coefficients of the normal component and the displacement vector coefficients of the tangential component can be stored (i.e., packed) component-by-component in the Y channel.
  • the U and V channels can be filled with intermediate values for efficient encoding.
  • 24(b) is an example in which, when the displacement vector coefficients of four vertices are taken as an example, the normal components (N 1 -N 4 ) and the tangential components (T 1 -T 4 ) of the displacement vector coefficients of four vertices are packed in the Y channel, and the intermediate values (M) corresponding to two vertices are packed in the U and V channels respectively in order to maintain the YUV 4:2:0 format.
  • the normal components (N 1 -N 4 ) of the displacement vector coefficients of the four vertices can be packed into a Y channel
  • the tangential components (T) of the displacement vector coefficients of one vertex per four vertices can be packed into a U channel
  • the median value can be filled into the V channel.
  • FIG. 25(a) and FIG. 25(b) are diagrams showing an example of packing displacement vector coefficients based on the YUV 4:0:0 format according to embodiments. That is, FIG. 25(a) and FIG. 25(b) are examples of not skipping packing of bi-tangential components when packing displacement vector coefficients based on the YUV 4:0:0 format.
  • the height of the Y channel is increased by three times the packing frame image height (H) calculated by the displacement vector coefficient packing unit (12013), and thereafter, the normal component, tangential component, and bi-tangential component of the displacement vector coefficients can be stored (i.e., packed) component by component in the Y channel.
  • Fig. 25(b) is an example in which, when the displacement vector coefficients of four vertices are taken as an example, the normal components (N 1 -N 4 ), tangential components (T 1 -T 4 ), and bi-tangential components (B 1 -B 4 ) of the displacement vector coefficients of four vertices are packed component by component in the Y channel.
  • FIG. 26(a) and FIG. 26(b) are diagrams showing other examples of packing displacement vector coefficients based on the YUV 4:0:0 format according to embodiments. That is, FIG. 26(a) and FIG. 26(b) are examples of skipping packing of bi-tangential components when packing displacement vector coefficients based on the YUV 4:0:0 format.
  • the height of the Y channel is increased by twice the packing frame image height (H) calculated by the displacement vector coefficient packing unit (12013), and thereafter, the normal components and tangential components of the displacement vector coefficients can be stored (i.e., packed) component by component in the Y channel.
  • Fig. 26(b) is an example in which, when the displacement vector coefficients of four vertices are taken as an example, the normal components (N 1 -N 4 ) and tangential components (T 1 -T 4 ) of the displacement vector coefficients of four vertices are packed component by component in the Y channel. That is, the bi-tangential component is skipped and therefore not packed or transmitted.
  • the displacement vector image/video encoding unit (12014) can perform encoding on the packed 2D image through a 2D video encoder such as H.264, HEVC, or VVC.
  • Fig. 27 illustrates a receiving device according to embodiments.
  • the receiving device of Fig. 27 may be referred to as a mesh data receiving device or a decoder or a decoder of a receiving device or a V-Mesh decoder or a dynamic mesh decoder.
  • FIG. 27 corresponds to the receiving device (110) or mesh video decoder (113) of FIG. 1, the decoder of FIG. 11 or FIG. 12, the receiving device of FIG. 14, and/or the receiving decoding device corresponding thereto.
  • Each component of FIG. 27 corresponds to hardware, software, a processor, and/or a combination thereof.
  • the receiving (decoding) operation of FIG. 27 can follow the reverse process of the corresponding process of the transmitting (encoding) operation of FIG. 15.
  • the execution order of each block in FIG. 27 can be changed, some blocks can be omitted, and some blocks can be newly added.
  • FIG. 27 may largely include a base mesh decoding unit, a displacement information decoding unit, and a texture map decoding unit.
  • the base mesh decoding unit may include a switching unit (15011), a motion vector decoder (15012), a static mesh decoder (15013), a base mesh restoration unit (15014), a mesh subdivision unit (15015), and a mesh restoration unit (15016).
  • the displacement information decoding unit may include a displacement vector decoder (15017) and a displacement vector coordinate system inverse transformation unit (15020).
  • a bitstream of mesh data received by a receiver may be demultiplexed into a base mesh bitstream, a displacement vector bitstream, and a texture map bitstream in a demultiplexer (not shown) after file/segment decapsulation.
  • the base mesh bitstream may be a motion vector bitstream.
  • the base mesh bitstream is provided to a motion vector decoder (15012) via a switching unit (15011) or to a static mesh decoder (15013).
  • the motion vector decoder (15012) may be referred to as a motion decoder.
  • the motion vector decoder (15012) can perform decoding on a motion vector bitstream on a vertex-by-vertex basis or a subgroup basis.
  • the motion vector decoder (15012) can reconstruct a final motion vector by adding a differential motion vector (i.e., a residual motion vector) decoded from a bitstream using a previously decoded motion vector as a predictor. That is, the motion vector decoder (15012) decodes a differential motion vector (or a residual motion vector) in units of a vertex or a subgroup (or a subblock) through a motion vector bitstream, and performs prediction based on connection information using a previously decoded motion vector as a predictor to decode the motion vector by adding it to the residual motion vector.
  • a differential motion vector i.e., a residual motion vector
  • the static mesh decoder (15013) can decode the base mesh bitstream to restore connection information, vertex geometry information, texture coordinates (i.e., attribute geometry information), normal information, etc. of the base mesh.
  • the base mesh restoration unit (15014) can restore the current base mesh based on the decoded motion vector or the decoded base mesh. For example, if the current mesh is subject to inter-screen encoding, the base mesh restoration unit (15014) can add the decoded (or restored) motion vector to the reference base mesh and then perform inverse quantization to generate a restored base mesh (i.e., the current base mesh). As another example, if the current mesh is subject to intra-screen encoding, the base mesh restoration unit (15014) can perform inverse quantization on the decoded (or restored) base mesh through the static mesh decoder (15012) to generate a restored base mesh (i.e., the current base mesh).
  • the mesh subdivision unit (15015) can perform subdivision on the base mesh to generate additional vertices.
  • the present disclosure can implicitly derive and generate geometry information connection information, texture coordinate connection information, and texture coordinates according to the subdivision method.
  • the mesh subdivision unit (15015) can perform subdivision through methods such as mid-edge, Loop, Catmul&Clark, etc.
  • the displacement vector decoder may perform video codec-based decoding on the demultiplexed displacement vector bitstream as a video bitstream, or perform zero run-length decoding, or perform arithmetic decoding.
  • the displacement vector decoder may be used interchangeably with the displacement vector transform decoder.
  • the displacement vector decoder (15017) can restore the displacement vector by decoding the displacement vector in a reverse process of the displacement vector encoding method of the transmitter side.
  • the displacement vector coordinate system inversion unit (15020) can perform a process of inversion into a Cartesian (or canonical) coordinate system (x, y, z) if the displacement vector decoded by the displacement vector decoder (15017) is a value of a local coordinate system (n, t, bt).
  • the output of the displacement vector coordinate system inversion unit (15020) is provided to the mesh restoration unit (15016).
  • the vertex displacement vector calculated in the (x, y, z) space can be converted to the (normal, tangential, bi-tangential) coordinate system (or local coordinate system) based on the normal vector of each vertex.
  • the normal vector can be calculated for each subdivided vertex based on the geometry information and connection information of the surrounding vertices.
  • the mesh restoration unit (15016) restores the mesh based on the mesh refined in the mesh refinement unit (15015) and the restored displacement vector output from the displacement vector coordinate system inverse transformation unit (15020).
  • the received and demultiplexed texture map bitstream is input to a texture map decoder (15021).
  • the texture map decoder (15021) can decode the texture map through a 2D scalable decoder. That is, the texture map decoder (15021) can restore the texture map by applying 2D scalable decoding to the texture map.
  • the decoder of the receiving device goes through the process of decoding each bitstream to restore the mesh.
  • the base mesh is decoded in the motion vector or static mesh decoder depending on whether it is inter or intra frame, and the geometry information is restored together with the decoded displacement vector information through subdivision.
  • a decoding method for restoring displacement vectors of normal and tangential components and calculating bi-tangential components from a 2D image frame packed and transmitted in various formats e.g., YUV 4:4:4, YUV 4:2:0, YUV 4:0:0
  • a displacement vector coefficient decoding unit e.g., YUV 4:4:4, YUV 4:2:0, YUV 4:0:0
  • FIG. 28 is a block diagram showing an example of a displacement vector decoder according to embodiments.
  • the displacement vector decoder (15017) may include a video decoding unit (16011), a displacement vector coefficient depacking unit (16012), a displacement vector coefficient dequantization unit (16013), and a displacement vector inverse transform unit (16014).
  • Each component in FIG. 28 corresponds to hardware, software, a processor, and/or a combination thereof.
  • the execution order of each block in FIG. 28 may be changed, some blocks may be omitted, and some blocks may be newly added.
  • the video decoding unit (16011) receives a displacement vector bitstream as input and performs decoding on a displacement vector coefficient image/video through a 2D video codec. Then, the restored displacement vector coefficient video restored through the video decoding unit (16011) can perform displacement vector coefficient assignment corresponding to each vertex of the restored mesh by performing displacement vector coefficient unpacking (or unpacking) for each frame in the displacement vector coefficient unpacking unit (16012).
  • the displacement vector coefficient depacking unit (16012) can perform depacking according to a scanning order defined by an encoder/decoder agreement from a restored displacement vector coefficient image corresponding to a current mesh frame or a scanning order parsed into a higher-level unit (sequence, frame, etc.). That is, the displacement vector coefficient depacking unit (16012) can perform depacking according to a scanning order defined by an encoder/decoder agreement, or can perform depacking by deriving a scanning order according to the characteristics of displacement vector coefficients, or can receive a scanning order from an encoder of a transmitting device.
  • a displacement vector coefficient block packed in a specific scanning order in units of bx*by, and a displacement vector coefficient packed in a specific order (such as 2D Morton Code or Zig-zag scan) within a block can derive the displacement vector coefficient of the kth vertex according to the encoder/decoder promise or the sizes of the parsed block bx, by and L, M and the scanning order.
  • the following describes a method of restoring displacement vector coefficients of normal and tangential components from a 2D image frame by performing inverse packing in a displacement vector coefficient inverse packing unit (16012) when displacement vector coefficients are packed and transmitted in a 2D image frame in various formats (e.g., YUV 4:4:4, YUV 4:2:0, YUV 4:0:0) as shown in FIGS. 21 to 26, and restoring bi-tangential components based on the same.
  • the value of the information (Bi_tangent_ski
  • the displacement vector coefficient depacking unit (16012) can perform restoration on the normal, tangential, and bi-tangential components of the Y, U, and V channels, respectively, in the YUV 4:4:4 format, as shown in Fig. 29(b). That is, the restored displacement vector coefficients of the 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 transmitting device since the transmitting device transmits all values of the normal, tangential, and bi-tangential components, the data before encoding and the decoded result can be the same.
  • this is a case where packing of bi-tangential components is skipped in a transmitting device (e.g., displacement vector coefficient packing unit (12013)).
  • a transmitting device e.g., displacement vector coefficient packing unit (12013)
  • the displacement vector coefficients of four vertices are taken as an example, the normal components (N 1 -N 4 ) and tangential components (T 1 -T 4 ) of the displacement vector coefficients of the four vertices are packed into the Y channel and the U channel, respectively, and the intermediate value (M) is packed into the V channel instead of the bi-tangential component (B 1 -B 4 ).
  • the Y and U channels may be composed of the displacement vector coefficients of the normal and tangential components, respectively, as in Fig. 30(a), and the V channel may be composed of the intermediate value (M). If it is assumed that the bitDepth of the displacement vector video image is 10 bits, the intermediate value of 1024, 512, can be the M value of the V channel.
  • the displacement vector coefficient depacking unit (16012) can perform restoration on the normal, tangential, and bi-tangential components of the Y, U, and V channels, respectively, in the YUV 4:4:4 format, as shown in FIG. 30(b). That is, the displacement vector coefficients of the Y and U channels are restored as normal and tangential components, respectively, according to a specific order (displacement_scan_method) within the block, and the displacement vector coefficients having the intermediate value of the V channel can be restored as bi-tangential components with a value of 0. Alternatively, the bi-tangential component values may not be restored and may have 0 as the initial value. In addition, since the transmitting device transmits all values of the normal and tangential components, the data before encoding and the decoded results of the normal and tangential components may be identical.
  • image packing format information ColdSpace_displacement_video
  • this is a case where packing of bi-tangential components is not skipped in a transmitting device (e.g., displacement vector coefficient packing unit (12013)).
  • a transmitting device e.g., displacement vector coefficient packing unit (12013)
  • the normal components (N 1 -N 4 ) of the displacement vector coefficients of four vertices are packed into the Y channel
  • the tangential component (T) of the displacement vector coefficient of one vertex per four vertices is packed into the U channel
  • the bi-tangential component (B) of the displacement vector coefficient of one vertex per four vertices is packed into the V channel.
  • the displacement vector coefficient depacking unit (16012) can perform restoration of the normal, tangential, and bi-tangential components of the Y, U, and V channels, respectively, in the YUV 4:2:0 format, as shown in FIG. 31(b).
  • the tangential and bi-tangential components of the U and V channels are sampled and transmitted by the transmitter (e.g., 1 vertex per 4 vertices is sampled)
  • the tangential component (T' 1 -T' 4 ) of the U channel and the bi-tangential component (B' 1 -B' 4 ) of the V channel can be restored through a sampling method agreed upon in advance with the encoder.
  • all of the normal, tangential, and bi-tangential components can be restored from the Y channel by a method agreed upon in advance with the encoder.
  • the data before encoding of the normal component and the decoded result can be identical.
  • 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 transmitting device e.g., the displacement vector coefficient packing unit (12013)
  • the transmitting device increases the height of the Y channel by twice the packing frame image height (H) and then performs packing.
  • the displacement vector coefficient inverse packing unit (16012) can restore the normal component from 0 to H of the Y channel and the tangential component from H+1 to 2H using the height (H) information of the previously calculated packing frame, as shown in Fig. 32(b). Then, the displacement vector coefficients of the normal and tangential components of the Y channel can be restored according to a specific order (displacement_scan_method) within the block, respectively. At this time, the intermediate value of the U channel may not be used in the restoration process. This is because the displacement vector coefficients of the tangential component are restored from the Y channel. In addition, the displacement vector coefficients having the intermediate value of the V channel can restore the value of 0 as the bi-tangential component.
  • the bi-tangential component value may not be restored from the V channel and may have 0 as the initial value.
  • the values of the bi-tangential components may all become 0 after inverse packing.
  • the bi-tangential component whose packing is skipped in the displacement vector coefficient packing unit (12013) of the transmitter can be restored to 0 in the displacement vector coefficient depacking unit (16012) of the receiver.
  • the data before encoding and the decoded result of the normal component and the tangential component can be the same.
  • image packing format information ColdSpace_displacement_video
  • a transmitting device e.g., displacement vector coefficient packing unit (12013)
  • the displacement vector coefficients of four vertices are taken as an example, only the normal components (N 1 -N 4 ) of the displacement vector coefficients of four vertices are packed component-by-component into the Y channel. At this time, the tangential components and bi-tangential components are not packed and transmitted. Therefore, the inverse packing of the tangential and bi-tangential components is not performed.
  • the displacement vector coefficient inverse packing unit (16012) can perform restoration only on the normal component of the Y channel in the YUV 4:0:0 format as shown in Fig. 33(b). At this time, the restored displacement vector coefficients of the Y channel can be restored as normal components according to a specific order (displacement_scan_method) within the block. In addition, since all values of the normal components are transmitted from the transmitting device, the data before encoding of the normal components and the decoded results can be identical.
  • the value of the information (Bi_tangent_
  • the transmitting device e.g., the displacement vector coefficient packing unit (12013)
  • the normal components (N 1 -N 4 ), tangential components (T 1 -T 4 ), and bi-tangential components (B 1 -B 4 ) of the displacement vector coefficients of four vertices are all packed component-by-component into the Y channel.
  • the transmitting device increases the height of the Y channel by three times the packing frame image height (H) and then performs packing.
  • the displacement vector coefficient inverse packing unit (16012) can restore normal components from 0 to H of the Y channel, tangential components from H+1 to 2H, and bi-tangential components from 2H+1 to 3H using the height (H) information of the previously calculated packing frame, as shown in FIG. 34(b).
  • the displacement vector coefficients of the normal, tangential, and bi-tangential components of the Y channel can be restored according to a specific order (displacement_scan_method) within the block. That is, the normal, tangential, and bi-tangential components can be transmitted to the Y channel by agreement with the encoder, and the displacement vector coefficient inverse packing unit (16012) can restore normal, tangential, and bi-tangential components from the Y channel, respectively.
  • a transmitting device e.g., displacement vector coefficient packing unit (12013)
  • the transmitting device increases the height of the Y channel by twice the packing frame image height (H) and then performs packing.
  • the displacement vector coefficient inverse packing unit (16012) can restore the normal component from 0 to H of the Y channel and the tangential component from H+1 to 2H using the height (H) information of the previously calculated packing frame as shown in Fig. 35(b).
  • the displacement vector coefficients of the Y channel can be restored according to a specific order (displacement_scan_method) within the block. That is, the normal and tangential components can be transmitted to the Y channel by agreement with the encoder, and the displacement vector coefficient inverse packing unit (16012) can restore the normal component and the tangential component from the Y channel, respectively.
  • the data before encoding of the normal component and the tangential component and the decoded result can be the same.
  • Displacement vector coefficients depacked by at least one of the depacking methods of FIGS. 29 to 35 are provided to a displacement vector coefficient dequantization unit (16013).
  • the displacement vector coefficient inverse quantization unit (16013) can inverse quantize the displacement vector coefficients restored by the displacement vector coefficient inverse packing unit (16012).
  • the displacement vector inverse transform unit (16014) performs an inverse transform of the transform performed in the encoder of the transmitter on the inverse quantized displacement vector coefficients to output displacement vectors.
  • a lifting inverse transform, a wavelet inverse transform, etc. may be performed. If a lifting inverse transform is performed in the displacement vector inverse transform unit (16014), a process of updating a displacement vector of a vertex used for prediction in the encoder may be performed through a parsed residual signal.
  • the displacement vector inverse transform unit (16014) performs an inverse transform of the displacement vector coefficients or inverse quantized displacement vector coefficients allocated per vertex through the displacement vector coefficient inverse packing unit (16012).
  • the transform may be applied as a linear lifting transform, a butterfly lifting transform, a wavelet transform, etc. For example, if the value of asps_vmc_ext_transform_method signaled in the signaling information (ASPS) is 1, it may indicate that Linear_Lifting was used as the transform method.
  • an average or distance-based weighted average prediction can be performed on n nearby points based on connection information among vertices with 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 displacement vector coefficient inverse quantization unit (16013) performs inverse quantization on the displacement vector coefficients allocated to each vertex or the displacement vector coefficients on which inverse transformation has been performed through the displacement vector coefficient inverse packing unit (16012).
  • the quantization parameter (QP) for each component may be transmitted in units of sequences or frames to determine a quantization rate.
  • the displacement vector coefficient inverse quantization unit (16013) can perform inverse quantization only on the normal and tangential components and skip inverse quantization on the bi-tangential component.
  • 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 encoder/decoder agreement.
  • the inversely transformed displacement vector or the inversely quantized displacement vector coefficients are provided to the displacement vector coordinate system inverse transformation unit (15020).
  • the coordinate system transformation status flag (asps_vmc_ext_displacement_coordinate_system) included in the signaling information in units of frame sequence or GOF (Group of Frames) or frame or submesh is parsed, and if its value is 1, the inverse quantized (or inversely transformed) 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 based on the restored vertex position information of the restored base mesh, and normal values of newly created vertices can be assigned by interpolating the normal vector of the restored base mesh for the vertices additionally created through the subdivision process.
  • interpolation can be performed by averaging or weighting the normal information of the base mesh used for subdivision.
  • the normal information of the base mesh can be used as is for subdivided vertices on the same plane.
  • the tangential and bi-tangential vectors orthogonal to the normal vector can be calculated and the displacement vector coordinate system inverse transformation can be performed.
  • disp n [0] and disp n [1] represent the results of the normal and tangential components obtained by performing the inverse transformation and inverse quantization.
  • the displacement vector of the bi-tangential component can be calculated through the outer product of the final displacement vectors of the normal component and the tangential component.
  • the displacement vector of the bi-tangential component can be derived and calculated through a method such as Linear Regression or Multiple Regression.
  • the coordinate system inverse transformation can be performed by multiplying the result of performing inverse quantization and inverse transformation of the n component and the calculated normal vector per vertex.
  • coordinate system inverse transformation can always be performed without sending a flag.
  • the mesh restoration unit (15016) can calculate and restore vertex geometry information of the restoration mesh by adding a restoration displacement vector to vertices generated through the subdivision process in the mesh subdivision unit (15015).
  • signaling information may be generated in a metadata processing unit (not shown, may be referred to as a metadata generator, etc.) and provided to corresponding blocks in the transmitting device and/or a receiving device (or a decoder of the receiving device), and a metadata parser (not shown) of the receiving device may parse the received signaling information and provide it to the corresponding blocks.
  • a metadata processing unit not shown, may be referred to as a metadata generator, etc.
  • a metadata parser not shown
  • each block of the receiving device may perform each operation based on the signaling information.
  • FIG. 36 is a diagram showing an example of a structure of an atlas sequence parameter set (ASPS) among signaling information in a bitstream according to embodiments.
  • FIG. 36 is a diagram showing an example of an atlas sequence parameter set extension RBSP syntax and semantics structure. That is, ASPS can be extended from atlas sequence parameters to further include parameters related to displacement vector encoding.
  • the displacement vector coordinate system transformation status flag (asps_vmc_ext_displacement_coordinate_system) is information that can identify whether the displacement vector coordinate system is transformed, and indicates the type of coordinate system for displacement vector encoding. For example, if the value of the displacement vector coordinate system transformation status flag (asps_vmc_ext_displacement_coordinate_system) syntax (or field) is 0, it can indicate that the transmitter uses the canonical coordinate system as it is, and if it is 1, it can indicate that the transformation to the local coordinate system has been performed.
  • the displacement vector coordinate system inverse transformation unit 15020
  • the value of the coordinate system transformation status flag (asps_vmc_ext_displacement_coordinate_system) is 1
  • the inverse quantized (or inversely transformed) restored displacement vector can be transformed from the local coordinate system (n, t, b) to the canonical coordinate system (x, y, z).
  • the displacement vector coefficient packing method indicates the packing method of the displacement vector coefficients. For example, if this value is 0, it indicates that the displacement vector coefficients are packed in ascending order, and if it is 1, it indicates that the displacement vector coefficients are packed in descending order.
  • Displacement vector encoding method indicates the encoding method of the displacement vector. For example, if this value is 0, it indicates None (no displacement vector encoding), 1 indicates that the displacement vector is encoded using the Arithmetic Coding method, and 2 indicates that the displacement vector is encoded using the Video Coding method.
  • the displacement vector packing method for each LoD (asps_vmc_ext_displacement_LoD_packing_method) and displacement vector-related packing information (asps_vmc_ext_displacement_packing_info()) may be included.
  • LoD-specific displacement vector 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 level 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 related packing information may include, as shown in FIG. 37, a displacement vector scan method (displacement_scan_method), the number of unit blocks of displacement vector video images (displacementVideoBlockSize), unit block size information (geometryVideoBlockSize), bit depth information (geometryVideoBitDepth), image packing format information (ColourSpace_displacement_video), and information for identifying whether to skip displacement vector bi-tangential component image packing (bi_tangent_skip_flag).
  • FIG. 37 is a diagram showing another example of the structure of an atlas sequence parameter set (ASPS) among signaling information in a bitstream according to embodiments. That is, FIG. 37 is an example of the syntax structure of displacement vector related packing information (asps_vmc_ext_displacement_packing_info()) included in ASPS, which may be included in asps_vmc_extension( ) of FIG. 36.
  • ASPS atlas sequence parameter set
  • the displacement vector scan method indicates the scan order method when packing displacement vectors. For example, if the value of displacement_scan_method is 0, it indicates that the displacement vector is scanned with 2D Morton Code, and if it is 1, it indicates that the displacement vector is scanned in Zig-zag scan order.
  • geometryVideoBlockSize represents the displacement vector video image block size.
  • this value can represent the number of bx*by blocks, and the default value can be 16.
  • geometryVideoBitDepth represents the displacement vector video image bit depth unit.
  • the default value can be 10 bits. This value can determine the intermediate value when packing displacement vector coefficients.
  • Image packing format information indicates the displacement vector video packing image format. For example, if this value is 0, it indicates that displacement vector coefficients are packed based on None (there is no image format of displacement vector video packing), 1 indicates that the displacement vector coefficients are packed based on the yuv400 format, 2 indicates that the displacement vector coefficients are packed based on the yuv420 format, and 3 indicates that the displacement vector coefficients are packed based on the yuv444 format.
  • the bi-tangent component packing skip flag (Bi_tangent_skip_flag) is information for identifying whether the displacement vector bi-tangential component image packing is skipped. If this value is 0, it indicates no skipping, and if it is 1, it indicates skipping.
  • Fig. 38 is a flowchart showing an example of a transmission method according to embodiments.
  • the transmission method according to embodiments may include a step (21011) of encoding mesh data and a step (21012) of transmitting a bitstream including the encoded mesh data.
  • the bitstream transmitted in step (21012) includes a base mesh bitstream, a displacement vector bitstream, and a texture map bitstream.
  • the step of encoding mesh data (21011) may include a process of encoding a base mesh, a process of encoding displacement vectors or displacement vector transform coefficients, and a process of encoding a texture map.
  • the original mesh to be transmitted is first simplified and mesh parameterized to generate a base mesh.
  • the generated base mesh is quantized, and in the case of an inter-frame, a motion vector is calculated from the previously referenced restored base mesh to encode the motion vector, and in the case of an intra-frame, it is encoded through static mesh encoding and transmitted as a base mesh bitstream.
  • the displacement vector between the mesh data that has been simplified through mesh simplification, refined and fitted, and the mesh data restored from the previously encoded base mesh is calculated.
  • the displacement vector coordinate system is converted to a local coordinate system, and the displacement vector in the local coordinate system is converted and quantized into displacement vector coefficients, and then encoded into a displacement vector bitstream and transmitted.
  • the displacement vectors converted to the local coordinate system can be converted into displacement vector coefficients by performing linear lifting transformation, butterfly lifting transformation, etc. in the displacement vector conversion unit (12011).
  • the displacement vectors of (n, t, b) expressed in the local coordinate system can be converted for each normal, tangential, and bi-tangential component.
  • the displacement vector coefficients converted in the displacement vector conversion unit (12011) can be quantized in the displacement vector quantization unit (12012), and at this time, each channel can be quantized into an individual value.
  • bi_tangent_skip_flag is signaled and transmitted in signaling information (e.g., atlas sequence parameter set) as in FIG. 37.
  • the quantized displacement vector coefficients go through a process of packing into a 2D image of the size of W ⁇ H in the displacement vector coefficient packing unit (12013). For example, if the displacement vector coefficients are configured as a 1D LoD ascending order as shown in FIG. 17, image packing is performed in a 2D form as shown in FIG. 18. At this time, the size of Bx*by can be configured as one block, and the displacement vector video image can be configured with L*M blocks determined according to the number N of displacement vector coefficients.
  • the number of unit blocks (displacementVideoBlockSize) of the displacement vector video image, the size information of the unit block (geometryVideoBlockSize), and the bit depth information (geometryVideoBitDepth) can be signaled to signaling information (e.g., atlas sequence parameter set) as shown in FIG. 37.
  • signaling information e.g., atlas sequence parameter set
  • Displacement vector coefficients can be packed inside a block in a zig-zag scan order or a 2D Morton code order
  • displacement vector packing order information (displacement_scan_method) can be signaled in the signaling information (e.g., atlas sequence parameter set) as in Fig. 37.
  • 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.
  • Each displacement vector coefficient can be composed of a normal component, a tangential component, and a bi-tangential component, and some components can be skipped during the packing process.
  • a format such as YUV 4:4:4, YUV 4:2:0, or YUV 4:0:0 can be selected and image packing format information (ColourSpace_displacement_video) can be signaled.
  • the present disclosure refers to YUV 4:4:4 as a first format, YUV 4:2:0 as a second format, and YUV 4:0:0 as a third format.
  • packing is performed as is for the normal component value as in Fig. 23(a) and Fig. 23(b) as Y channel, and the values of the tangential and bi-tangential components can be sampled and packed according to the promise of the encoder/decoder.
  • the tangential and bi-tangential components can also be packed together in the Y channel, and packing can be performed with intermediate values in the U channel and the V channel.
  • displacement vector coefficients can be imaged for each channel to form an encoding unit in the form of a packing frame.
  • the entire level within the mesh frame can be packed into one packing frame, or each LoD within the mesh frame can be packed into a separate packing frame.
  • the asps_vmc_ext_displacement_LoD_packing_method syntax indicating the packing method for each mesh sequence unit can be signaled to signaling information (e.g., ASPS) as in Fig. 36.
  • the 2D image packed through the displacement vector coefficient packing unit (12013) is encoded by a 2D video encoder such as H.264, HEVC, or VVC in the displacement vector image/video encoding unit (12014) to generate a displacement vector bitstream.
  • a 2D video encoder such as H.264, HEVC, or VVC in the displacement vector image/video encoding unit (12014) to generate a displacement vector bitstream.
  • a new texture map having color information corresponding to the texture coordinates of the restored mesh is generated through a texture map generation unit (11026), and the generated texture map is encoded through a texture map encoder (i.e., a 2D video encoder) (11027) and transmitted as a texture bitstream.
  • a texture map encoder i.e., a 2D video encoder
  • the base mesh bitstream, displacement vector bitstream, and texture bitstream generated as described above in the step (21011) of encoding the mesh data are generated into a single bitstream through a multiplexing unit, and transmitted to a receiving device through a transmitting unit.
  • FIG. 39 is a flowchart showing an example of a receiving method according to embodiments.
  • the receiving method according to embodiments may include a step (22011) of receiving a bitstream including mesh data and a step (22012) of decoding mesh data included in the bitstream.
  • the step (22011) of receiving a bitstream including mesh data receives a bitstream including a base mesh bitstream, a displacement vector bitstream, and a texture map bitstream, as an example.
  • the step (22011) of receiving a bitstream including mesh data also receives signaling information including an atlas sequence parameter set (ASPS). At this time, the signaling information may be received while being included in the bitstream and may also be referred to as metadata.
  • ASS atlas sequence parameter set
  • the step of decoding mesh data (22012) may include a process of decoding a base mesh bitstream, a process of decoding a displacement vector bitstream, and a process of decoding a texture map bitstream.
  • the received bitstream is demultiplexed into a base mesh bitstream, a displacement vector bitstream, and a texture map bitstream through a demultiplexing unit, and then a process of decoding each of the bitstreams is performed.
  • the base mesh bitstream is decoded through a motion vector encoder (15012) for inter-frames and through a static mesh decoder (15013) for intra-frames.
  • the decoded base mesh is then subjected to mesh refinement through a base mesh restoration unit (15014).
  • the displacement vector bitstream decodes displacement vector coefficients in the reverse order of encoding, performs inverse quantization and inverse transformation, and then is inversely transformed to a coordinate system, and then mesh geometry information is restored together with the base mesh data.
  • the video decoding unit (16011) receives a displacement vector bitstream as input and performs decoding on a displacement vector coefficient image/video through a 2D video codec. Then, the displacement vector coefficient inverse packing unit (16012) can perform inverse packing from a restored displacement vector coefficient image corresponding to the current mesh frame.
  • the scan order information (displacement_scan_method) at the time of displacement vector packing, the number of unit blocks of the displacement vector video image (displacementVideoBlockSize), the size information of the unit block (geometryVideoBlockSize), and the bit depth information (geometryVideoBitDepth) are parsed from the signaling information (e.g., ASPS) of FIGS.
  • the packing image format information ColdSpace_displacement_video
  • whether to skip the bi-tangential component packing Bi_tangent_skip_flag
  • ASPS signaling information
  • the normal, tangential, and bi-tangential components can be restored from the Y, U, and V channels in sequence, as shown in Fig. 31(a) and Fig. 31(b), using the YUV 4:2:0 format.
  • the tangential and bi-tangential components of the U and V channels may be the results sampled by the encoder/decoder agreement, and the restored values or positions may also be restored in a fixed state.
  • the normal, tangential, and bi-tangential components may all be packed in the Y channel, and may be restored as each component from the Y channel, and the U and V channels may be composed of intermediate values.
  • the normal component can be restored from the Y channel using the YUV 4:0:0 format as shown in Fig. 33(a) and Fig. 33(b).
  • the normal, tangential, and bi-tangential components may all be packed in the Y channel, in which case the normal, tangential, and bi-tangential components can be restored in sequence from the Y channel as shown in Fig. 34(a) and Fig. 34(b).
  • the displacement vector coefficients on which the above inverse quantization is performed are inversely transformed in the displacement vector inverse transform unit (16014) based on the transformation method parsed in the asps_vmc_ext_transform_method signaled in the signaling information, and the restored displacement vector is calculated.
  • the inverse transform process can be performed on the inverse quantization results of the normal and tangential components excluding the bi-tangential component. Since the normal, tangential, and bi-tangential components are all orthogonal to each other, the displacement vector of the bi-tangential component can be calculated by taking the outer product of the final displacement vectors of the normal component and the tangential component.
  • the displacement vector of the bi-tangential component can be derived using a method such as Linear Regression or Multiple Regression.
  • the displacement vector coordinate system inverse transformation unit (15020) parses the asps_vmc_ext_displacement_coordinate_system signaled in the signaling information as shown in FIG. 36, and if its value is 1, the restored displacement vector is inversely transformed from the local coordinate system (n, t, b) to the canonical coordinate system (x, y, z).
  • the displacement vector coordinate system inverse transformation can be performed by calculating the normal vector per vertex based on the restored vertex position information of the restored base mesh, and calculating the tangential and bi-tangential vectors orthogonal to the normal vector through the calculated normal vector per vertex.
  • the mesh restoration unit (15016) can calculate the vertex geometry information of the restoration mesh by adding the restoration displacement vector to the vertices generated through the mesh subdivision process, thereby restoring the final geometric information.
  • the received texture map bitstream is decoded through a texture map decoder (15021).
  • the decoded texture map is used to generate a final restored mesh together with the restored geometry information in the mesh wall element (15016).
  • displacement vectors are transformed into a local coordinate system for compression efficiency, and then transformed into displacement vector coefficients in a simple form through lifting transformation and quantization before compression is performed.
  • this process is calculated in the encoder for all components of normal, tangential, and bi-tangential generated by the coordinate system transformation, and the resulting displacement vector coefficients of each component are packed into a 2D image and transmitted.
  • the present disclosure proposes a method of packing and transmitting displacement vector coefficients of two components, normal and tangential, among three components in order to transmit data quickly with more efficient capacity, and calculating bi-tangential components after decoding displacement vectors of normal and tangential components transmitted from a decoder, as described in FIGS. 15 to 39.
  • the present disclosure encodes and transmits only two components of the three displacement vector components, so that a capacity reduction effect of about two-thirds compared to the conventional displacement vector sub-bitstream can be observed.
  • Each of the parts, modules or units described above may be software, processor or hardware parts that execute sequential execution processes stored in a memory (or storage unit). Each of the steps described in the above-described embodiments may be performed by processor, software or hardware parts. Each of the modules/blocks/units described in the above-described embodiments may operate as a processor, software or hardware. In addition, the methods presented in the embodiments may be executed as code. The code may be written in a processor-readable storage medium and thus may be read by a processor provided by an apparatus.
  • 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 each embodiment 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 by one chip, for example, one hardware circuit.
  • the components according to the embodiments may be implemented by separate chips, respectively.
  • At least one of the components of the device of the embodiments may be configured by 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 via 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.
  • Various elements of the embodiments may be performed by hardware, software, firmware, or a combination thereof. Various elements of the embodiments may be performed on a single chip, such as a hardware circuit. In some embodiments, the embodiments may optionally be performed on separate chips. In some embodiments, at least one of the elements of the embodiments may be performed within one or more processors that include instructions for performing operations according to the embodiments.
  • the operations according to the embodiments described in this document may be performed by a transceiver device including one or more memories and/or one or more processors according to the embodiments.
  • the one or more memories may store programs for processing/controlling the operations according to the embodiments, and the one or more processors may control various operations described in this document.
  • the one or more processors 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 a processor or a memory.
  • 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 embodiments can be applied in whole or in part to 3D data transmission and reception devices and systems.
  • Those skilled in the art can variously change or modify the embodiments within the scope of the embodiments.
  • the embodiments can include changes/modifications, and the changes/modifications 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)

Abstract

실시예들에 따른 메쉬 데이터 디코딩 장치는 베이스 메쉬 비트스트림, 변위 벡터 비트스트림, 텍스처 맵 비트스트림, 및 시그널링 정보를 수신하는 수신부, 상기 베이스 메쉬 비트스트림으로부터 베이스 메쉬를 복원하는 베이스 메쉬 처리부, 상기 변위 벡터 비트스트림으로부터 변위 정보를 복원하는 변위 정보 처리부, 상기 베이스 메쉬와 상기 변위 정보를 기반으로 메쉬를 복원하는 복원부, 및 상기 텍스처 맵 비트스트림으로부터 텍스처 맵을 복원하는 텍스처 맵 처리부를 포함할 수 있다.

Description

메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법
실시예들은 사용자에게 VR (Virtual Reality, 가상현실), AR (Augmented Reality, 증강현실), MR (Mixed Reality, 혼합현실), 및 자율 주행 서비스 등의 다양한 서비스를 제공하기 위하여 3D 콘텐츠를 제공하는 방안을 제공한다.
3D 콘텐츠 중 포인트 클라우드 데이터나 메쉬 데이터는 3D공간 상의 포인트들의 집합이다. 그런데, 3D 공간 상의 포인트들의 양이 많아서 포인트 클라우드 데이터나 메쉬 데이터를 생성하기 어려운 문제점이 있다.
즉, 포인트 클라우드 데이터나 메쉬 데이터와 같이 포인트들의 양이 많은 3D 데이터를 전송하고 수신하기 위해서 많은 처리량이 요구되는 문제점이 있다.
실시예들에 따른 기술적 과제는, 전술한 문제점 등을 해결하기 위해서, 메쉬 데이터를 효율적으로 송수신하기 위한 장치 및 방법을 제공하는데 있다.
실시예들에 따른 기술적 과제는, 메쉬 데이터의 지연시간(latency) 및 인코딩/디코딩 복잡도를 해결하기 위한 장치 및 방법을 제공하는데 있다.
실시예들에 따른 기술적 과제는, 변위 벡터의 인코딩 및 디코딩을 효율적으로 수행하기 위한 장치 및 방법을 제공하는데 있다.
다만, 전술한 기술적 과제만으로 제한되는 것은 아니고, 본 문서 전체 내용에 기초하여 당업자가 유추할 수 있는 다른 기술적 과제로 실시예들의 권리범위가 확장될 수 있다.
상술한 목적 및 다른 이점을 달성하기 위해서 실시예들에 따른 메쉬 데이터 인코딩 방법은 원본 메쉬를 인코딩하는 단계, 및 상기 인코딩된 메쉬와 시그널링 정보를 포함하는 비트스트림을 전송하는 단계를 포함할 수 있다.
실시예들에 따르면, 상기 인코딩 단계는 상기 원본 메쉬를 단순화하여 생성된 베이스 메쉬를 인코딩하여 베이스 메쉬 비트스트림을 생성하는 베이스 메쉬 처리 단계, 상기 베이스 메쉬를 기반으로 생성된 변위 정보를 인코딩하여 변위 벡터 비트스트림을 생성하는 변위 정보 처리 단계, 상기 인코딩된 베이스 메쉬와 상기 인코딩된 변위 정보를 기반으로 메쉬를 복원하는 메쉬 복원 단계, 및 상기 원본 메쉬와 상기 복원된 메쉬를 기반으로 생성된 텍스처 맵을 인코딩하여 텍스처 맵 비트스트림을 생성하는 텍스처 맵 처리 단계를 포함할 수 있다.
실시예들에 따르면, 상기 변위 정보 처리 단계는 상기 변위 정보의 좌표계를 로컬 좌표계로 변환하는 단계, 상기 로컬 좌표계의 변위 정보에 포함된 노말 성분, 탄젠셜 성분, 또는 바이-탄젠셜 성분 중 적어도 하나의 성분에 대해 제1 포맷, 제2 포맷, 또는 제3 포맷 중 하나의 포맷을 기반으로 패킹을 수행하는 단계, 및 상기 패킹된 변위 정보를 인코딩하는 단계를 포함할 수 있다.
실시예들에 따르면, 상기 패킹 단계는 상기 변위 정보의 바이-탄젠셜 성분에 대해 선택적으로 패킹을 수행하며, 상기 시그널링 정보는 상기 바이-탄젠셜 성분의 패킹이 스킵되었는지 여부를 식별하기 위한 정보를 포함할 수 있다.
실시예들에 따르면, 상기 시그널링 정보는 상기 변위 정보에 적용된 포맷을 식별하기 위한 정보를 포함할 수 있다.
실시예들에 따르면, 메쉬 데이터 인코딩 장치는 원본 메쉬를 인코딩하는 인코더, 및 상기 인코딩된 메쉬와 시그널링 정보를 포함하는 비트스트림을 전송하는 전송부를 포함할 수 있다.
실시예들에 따르면, 상기 인코더는 상기 원본 메쉬를 단순화하여 생성된 베이스 메쉬를 인코딩하여 베이스 메쉬 비트스트림을 생성하는 베이스 메쉬 처리부, 상기 베이스 메쉬를 기반으로 생성된 변위 정보를 인코딩하여 변위 벡터 비트스트림을 생성하는 변위 정보 처리부, 상기 인코딩된 베이스 메쉬와 상기 인코딩된 변위 정보를 기반으로 메쉬를 복원하는 메쉬 복원부, 및 상기 원본 메쉬와 상기 복원된 메쉬를 기반으로 생성된 텍스처 맵을 인코딩하여 텍스처 맵 비트스트림을 생성하는 텍스처 맵 처리부를 포함할 수 있다.
실시예들에 따르면, 상기 변위 정보 처리부는 상기 변위 정보의 좌표계를 로컬 좌표계로 변환하는 변위 정보 좌표계 변환부, 상기 로컬 좌표계의 변위 정보에 포함된 노말 성분, 탄젠셜 성분, 또는 바이-탄젠셜 성분 중 적어도 하나의 성분에 대해 제1 포맷, 제2 포맷, 또는 제3 포맷 중 하나의 포맷을 기반으로 패킹을 수행하는 변위 정보 패킹부, 및 상기 패킹된 변위 정보를 인코딩하는 변위 정보 인코딩부를 포함할 수 있다.
실시예들에 따르면, 상기 변위 정보 패킹부는 상기 변위 정보의 바이-탄젠셜 성분에 대해 선택적으로 패킹을 수행하며, 상기 시그널링 정보는 상기 바이-탄젠셜 성분의 패킹이 스킵되었는지 여부를 식별하기 위한 정보를 포함할 수 있다.
실시예들에 따르면, 상기 시그널링 정보는 상기 변위 정보에 적용된 포맷을 식별하기 위한 정보를 포함할 수 있다.
실시예들에 따르면, 메쉬 데이터 디코딩 방법은 베이스 메쉬 비트스트림, 변위 벡터 비트스트림, 텍스처 맵 비트스트림, 및 시그널링 정보를 수신하는 단계, 상기 베이스 메쉬 비트스트림으로부터 베이스 메쉬를 복원하는 베이스 메쉬 처리 단계, 상기 변위 벡터 비트스트림으로부터 변위 정보를 복원하는 변위 정보 처리 단계, 상기 베이스 메쉬와 상기 변위 정보를 기반으로 메쉬를 복원하는 복원 단계, 및 상기 텍스처 맵 비트스트림으로부터 텍스처 맵을 복원하는 텍스처 맵 처리 단계를 포함할 수 있다.
실시예들에 따르면, 상기 변위 정보 처리 단계는 상기 변위 벡터 비트스트림을 변위 정보로 디코딩하는 단계, 제1 포맷, 제2 포맷, 제3 포맷 중 상기 변위 정보에 적용된 포맷을 식별하고, 상기 식별된 포맷을 기반으로 상기 변위 정보에 포함된 노말 성분, 탄젠셜 성분, 또는 바이-탄젠셜 성분 중 적어도 하나의 성분을 역패킹하는 단계, 및 상기 역패킹된 변위 정보의 로컬 좌표계를 오리지날 좌표계로 역변환하는 단계를 포함할 수 있다.
실시예들에 따르면, 상기 시그널링 정보는 상기 변위 정보에 적용된 포맷을 식별하기 위한 정보를 포함할 수 있다.
실시예들에 따르면, 상기 시그널링 정보는 상기 바이-탄젠셜 성분의 패킹이 스킵되었는지 여부를 식별하기 위한 정보를 더 포함하고, 상기 역패킹 단계는 상기 시그널링 정보를 기반으로 상기 노말 성분, 탄젠셜 성분, 또는 바이-탄젠셜 성분 중 적어도 하나의 성분의 역패킹 방법을 결정할 수 있다.
실시예들에 따르면, 메쉬 데이터 디코딩 장치는 베이스 메쉬 비트스트림, 변위 벡터 비트스트림, 텍스처 맵 비트스트림, 및 시그널링 정보를 수신하는 수신부, 상기 베이스 메쉬 비트스트림으로부터 베이스 메쉬를 복원하는 베이스 메쉬 처리부, 상기 변위 벡터 비트스트림으로부터 변위 정보를 복원하는 변위 정보 처리부, 상기 베이스 메쉬와 상기 변위 정보를 기반으로 메쉬를 복원하는 복원부, 및 상기 텍스처 맵 비트스트림으로부터 텍스처 맵을 복원하는 텍스처 맵 처리부를 포함할 수 있다.
실시예들에 따르면, 상기 변위 정보 처리부는 상기 변위 벡터 비트스트림을 변위 정보로 디코딩하는 변위 정보 디코딩부, 제1 포맷, 제2 포맷, 제3 포맷 중 상기 변위 정보에 적용된 포맷을 식별하고, 상기 식별된 포맷을 기반으로 상기 변위 정보에 포함된 노말 성분, 탄젠셜 성분, 또는 바이-탄젠셜 성분 중 적어도 하나의 성분을 역패킹하는 변위 정보 역패킹부, 및 상기 역패킹된 변위 정보의 로컬 좌표계를 오리지날 좌표계로 역변환하는 좌표계 역변환부를 포함할 수 있다.
실시예들에 따르면, 컴퓨터에서 판독 가능한 기록매체에 저장된 컴퓨터 프로그램은 하드웨어인 컴퓨터와 결합되어, 위의 방법을 수행할 수 있다.
실시예들에 따르면, 컴퓨터에서 판독 가능한 기록매체에 저장된 컴퓨터 프로그램은 하드웨어인 컴퓨터와 결합되어, 위의 방법을 수행할 수 있다.
실시예들에 따른 메쉬 데이터 송신 방법, 메쉬 데이터 송신 장치, 메쉬 데이터 수신 방법, 및 메쉬 데이터 수신 장치는 퀄리티 있는 3D 서비스를 제공할 수 있다.
실시예들에 따른 메쉬 데이터 송신 방법, 메쉬 데이터 송신 장치, 메쉬 데이터 수신 방법, 및 메쉬 데이터 수신 장치는 다양한 비디오 코덱 방식을 달성할 수 있다.
실시예들에 따른 메쉬 데이터 송신 방법, 메쉬 데이터 송신 장치, 메쉬 데이터 수신 방법, 및 메쉬 데이터 수신 장치는 자율주행 서비스 등 범용적인 3D 콘텐츠를 제공할 수 있다.
실시예들에 따른 메쉬 데이터 송신 방법, 메쉬 데이터 송신 장치, 메쉬 데이터 수신 방법, 및 메쉬 데이터 수신 장치는 로컬 좌표계로 변환된 노말 성분, 탄젠셜 성분, 바이-탄젠셜 성분 중 바이-탄젠셜 성분을 제외한 노말 성분과 탄젠셜 성분만을 인코딩하여 전송하고, 수신 장치의 디코더에서 바이-탄젠셜 성분까지 디코딩하도록 함으로써, 효율적인 비트 절감 효과와 이에 따른 더 나은 화질의 메쉬 데이터를 얻을 수 있다.
도면은 실시예들을 더욱 이해하기 위해서 포함되며, 도면은 실시예들에 관련된 설명과 함께 실시예들을 나타낸다. 이하에서 설명하는 다양한 실시예들의 보다 나은 이해를 위하여, 하기 도면들에 걸쳐 유사한 참조 번호들이 대응하는 부분들을 포함하는 다음의 도면들과 관련하여 이하의 실시예들의 설명을 반드시 참조해야 한다.
도 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-MESH 데이터의 인터 프레임 디코딩 프로세서를 나타낸다.
도 13은 실시예들에 따른 송신 장치의 일 예시를 나타낸 도면이다.
도 14는 실시예들에 따른 수신 장치의 일 예시를 나타낸 도면이다.
도 15는 실시예들에 따른 송신 장치의 다른 예시를 나타낸 도면이다.
도 16은 실시예들에 따른 변위 벡터 인코더의 상세 블록도이다.
도 17은 실시예들에 따른 변위 벡터 계수 구조의 일 예시를 보인 도면이다.
도 18은 실시예들에 따른 변위 벡터 계수들을 패킹하는 일 예를 보인 도면이다.
도 19는 실시예들에 따른 LoD별로 변위 벡터 계수 블록들을 패킹하는 일 예를 보인 도면이다.
도 20(a), 도 20(b)는 실시예들에 따른 변위 벡터 계수 블록 내 변위 벡터 계수들의 패킹 방법의 예시들을 보인 도면이다.
도 21(a), 도 21(b)는 실시예들에 따른 YUV 4:4:4 포맷을 기반으로 변위 벡터 계수를 패킹하는 일 예시를 보인 도면이다.
도 22(a), 도 22(b)는 실시예들에 따른 YUV 4:4:4 포맷을 기반으로 변위 벡터 계수를 패킹하는 다른 예시를 보인 도면이다.
도 23(a), 도 23(b)는 실시예들에 따른 YUV 4:2:0 포맷을 기반으로 변위 벡터 계수를 패킹하는 일 예시를 보인 도면이다.
도 24(a), 도 24(b)는 실시예들에 따른 YUV 4:2:0 포맷을 기반으로 변위 벡터 계수를 패킹하는 다른 예시를 보인 도면이다.
도 25(a), 도 25(b)는 실시예들에 따른 YUV 4:0:0 포맷을 기반으로 변위 벡터 계수를 패킹하는 일 예시를 보인 도면이다.
도 26(a), 도 26(b)는 실시예들에 따른 YUV 4:0:0 포맷을 기반으로 변위 벡터 계수를 패킹하는 다른 예시를 보인 도면이다.
도 27은 실시예들에 따른 수신 장치의 다른 예시를 나타낸 도면이다.
도 28은 실시예들에 따른 변위 벡터 디코더의 상세 블록도의 일 예시이다.
도 29(a), 도 29(b)는 실시예들에 따른 YUV 4:4:4 포맷을 기반으로 변위 벡터 계수를 역패킹하는 일 예시를 보인 도면이다.
도 30(a), 도 30(b)는 실시예들에 따른 YUV 4:4:4 포맷을 기반으로 변위 벡터 계수를 역패킹하는 다른 예시를 보인 도면이다.
도 31(a), 도 31(b)는 실시예들에 따른 YUV 4:2:0 포맷을 기반으로 변위 벡터 계수를 역패킹하는 일 예시를 보인 도면이다.
도 32(a), 도 32(b)는 실시예들에 따른 YUV 4:2:0 포맷을 기반으로 변위 벡터 계수를 역패킹하는 다른 예시를 보인 도면이다.
도 33(a), 도 33(b)는 실시예들에 따른 YUV 4:0:0 포맷을 기반으로 변위 벡터 계수를 역패킹하는 일 예시를 보인 도면이다.
도 34(a), 도 34(b)는 실시예들에 따른 YUV 4:0:0 포맷을 기반으로 변위 벡터 계수를 역패킹하는 다른 예시를 보인 도면이다.
도 35(a), 도 35(b)는 실시예들에 따른 YUV 4:0:0 포맷을 기반으로 변위 벡터 계수를 역패킹하는 또 다른 예시를 보인 도면이다.
도 36은 실시예들에 따른 시그널링 정보의 신택스 구조의 일 예시를 보인 도면이다.
도 37은 실시예들에 따른 시그널링 정보의 신택스 구조의 다른 예시를 보인 도면이다.
도 38은 실시예들에 따른 송신 방법의 일 예시를 보인 흐름도이다.
도 39는 실시예들에 따른 수신 방법의 일 예시를 보인 흐름도이다.
실시예들의 바람직한 실시예에 대해 구체적으로 설명하며, 그 예는 첨부된 도면에 나타낸다. 첨부된 도면을 참조한 아래의 상세한 설명은 실시예들의 실시예에 따라 구현될 수 있는 실시예만을 나타내기보다는 실시예들의 바람직한 실시예를 설명하기 위한 것이다. 다음의 상세한 설명은 실시예들에 대한 철저한 이해를 제공하기 위해 세부 사항을 포함한다. 그러나 실시예들이 이러한 세부 사항 없이 실행될 수 있다는 것은 당업자에게 자명하다.
실시예들에서 사용되는 대부분의 용어는 해당 분야에서 널리 사용되는 일반적인 것들에서 선택되지만, 일부 용어는 출원인에 의해 임의로 선택되며 그 의미는 필요에 따라 다음 설명에서 자세히 서술한다. 따라서 실시예들은 용어의 단순한 명칭이나 의미가 아닌 용어의 의도된 의미에 근거하여 이해되어야 한다.
최근 3차원 데이터 모델링 및 렌더링 기술이 발전함에 따라 가상현실 (Virtual Reality; VR), 증강현실 (Augmented Reality; AR), 자율 주행, CAD (Computer-Aided Design)/CAM (Computer-Aided Manufacturing), GIS (Geographic Information System) 등의 다양한 분야에서 3차원 데이터를 생성 및 처리하는 연구가 진행되고 있다. 3차원 데이터는 표현 형식에 따라 포인트 클라우드 (point cloud), 메쉬 (mesh) 등으로 나타낼 수 있다. 이 중 메쉬는 각 정점(vertex or point) 별의 좌표값을 표현하는 지오메트리 정보, 정점 간의 연결 관계를 나타내는 연결 정보, 메쉬 표면의 색상 정보를 2차원 영상 데이터로 표현하는 텍스처 맵, 메쉬의 표면과 텍스처 맵 간의 매핑 정보를 나타내는 텍스처 좌표 등으로 구성된다. 본 개시에서는 시간의 흐름에 따라 메쉬를 구성하는 요소 중 하나 이상이 변화하는 경우를 다이나믹(dynamic) 메쉬로 정의하고, 변화하지 않는 경우 스태틱(static) 메쉬로 정의한다.
다이나믹 메쉬 데이터는 2차원 영상 데이터 대비 메쉬를 표현하기 위해 구성하는 요소의 데이터 양이 크기 때문에 거대한 양의 메쉬 데이터를 저장 및 전송하기 위해 이를 효율적으로 압축하는 기술이 발전해왔다.
도 1은 실시예들에 따른 다이나믹 메쉬(Dynamic Mesh) 콘텐츠 제공을 위한 시스템을 나타낸다.
도 1의 시스템은 실시예들에 따른 송신 장치(100) 및 수신 장치(110)를 포함한다. 송신 장치(100)는 메쉬 비디오 획득부(101), 메쉬 비디오 인코더(102), 파일/세그먼트 인캡슐레이터(103), 및 트랜스미터(104)를 포함할 수 있다. 수신 장치(110)는 수신부(111), 파일/세그먼트 디캡슐레이터(112), 메쉬 비디오 디코더(113), 및 렌더러(114)를 포함할 수 있다. 도 1의 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응할 수 있다. 이하에서, 실시예들에 따른 메쉬 데이터 송신 장치는 3D 데이터 송신 장치 또는 송신 장치(100)를 지칭하거나, 메쉬 비디오 인코더(이하, 인코더)(102)를 지칭하는 용어로 해석될 수 있다. 실시예들에 따른 메쉬 데이터 수신 장치는 3D 데이터 수신 장치 또는 수신 장치(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 or point)의 좌표 (X, Y, Z)에 색상 정보를 가지고 있는 데이터들이다. 본 개시에서 정점의 좌표(즉, 위치 정보)는 지오메트리 정보라 칭하고, 정점의 색상 정보는 어트리뷰트 정보라 칭하며, 지오메트리 정보와 어트리뷰트 정보를 포함하여 정점 정보 또는 포인트 클라우드 데이터라 칭한다. 이 정점 정보에 정점들간의 연결 정보(connectivity information)가 추가되어 있는 것이 메쉬(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) 시스템은 도 1에서와 같이 송신 장치(100) 및 수신 장치(110)를 포함할 수 있다. 송신 장치(100)는 메쉬(Mesh) 비디오를 인코딩하여 비트스트림을 출력할 수 있으며, 이를 파일 또는 스트리밍 (스트리밍 세그먼트) 형태로 디지털 저장매체 또는 네트워크를 통해 수신 장치(110)로 전달할 수 있다. 디지털 저장 매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장 매체를 포함할 수 있다.
상기 송신 장치(100)에서 인코더는 메쉬(Mesh) 비디오/영상/픽처/프레임 인코딩 장치라고 불릴 수 있고, 상기 수신 장치(110)에서 디코더는 메쉬(Mesh) 비디오/영상/픽처/프레임 디코딩 장치라고 불릴 수 있다. 송신기는 메쉬(Mesh) 비디오 인코더에 포함될 수 있다. 수신기는 메쉬(Mesh) 비디오 디코더에 포함될 수 있다. 렌더러(114)는 디스플레이부를 포함할 수도 있고, 렌더러 및/또는 디스플레이부는 별개의 디바이스 또는 외부 컴포넌트로 구성될 수도 있다. 상기 송신 장치(100) 및 수신 장치(110)는 피드백 과정을 위한 별도의 내부 또는 외부의 모듈/유닛/컴포넌트를 더 포함할 수도 있다.
메쉬(Mesh) 데이터는 객체의 표면을 다수의 다각형으로 표현한다. 각 다각형은 3차원 공간에서의 정점과, 그 정점들이 어떻게 연결되어 있는 지를 나타내는 연결 정보로 정의된다. 또한 정점의 색상, 법선 등과 같은 정점 어트리뷰트들도 포함할 수 있다. 메쉬(Mesh)의 표면을 2D 평면 영역에 매핑(mapping)할 수 있도록 하는 매핑 정보 역시 메쉬(Mesh)의 어트리뷰트에 포함될 수 있다. 매핑은 일반적으로 메쉬(Mesh) 정점과 관련된 UV 좌표 또는 텍스처 좌표라고 하는 매개변수 좌표 세트로 설명될 수 있다. 메쉬(Mesh) 는 2D 어트리뷰트 맵을 포함하고 있는데, 이것은 텍스처, 법선(normal), 디스플레이스먼트(displacement, 변위) 등과 같은 고해상도 어트리뷰트 정보를 저장하는 데 사용될 수 있다. 여기서, 변위는 디스플레이스먼트, 또는 디스플레이스먼트 정보 또는 디스플레이스먼트 벡터(즉, 변위 벡터)와 동일한 의미로 혼용되어 사용될 수 있다.
메쉬(Mesh) 비디오 획득부(101)에서는 카메라 등을 통해 획득된 3차원 객체 데이터를 일련의 과정을 통해 위에서 설명한 어트리뷰트를 갖는 메쉬(Mesh) 데이터 타입으로 가공하고 이러한 메쉬(Mesh) 데이터로 구성된 비디오를 생성하는 것을 포함할 수 있다. 메쉬(Mesh) 비디오는 시간에 따라 메쉬(Mesh) 의 어트리뷰트, 즉 정점, 다각형, 정점 간 연결 정보, 색상, 법선 등의 정보가 변할 수 있다. 이렇게 시간에 따라 변하는 어트리뷰트 및 연결 정보를 갖는 메쉬(Mesh) 비디오를 다이나믹(dynamic) 메쉬(Mesh) 비디오라고 표현할 수 있다.
메쉬(Mesh) 비디오 인코더(102)는 입력 메쉬(Mesh) 비디오를 하나 이상의 비디오 스트림으로 인코딩할 수 있다. 하나의 비디오는 다수의 프레임을 포함할 수 있으며, 하나의 프레임은 정지 영상/픽처에 대응될 수 있다. 본 문서에서, 메쉬(Mesh) 비디오라 함은 메쉬(Mesh) 영상/프레임/픽처를 포함할 수 있으며, 메쉬(Mesh) 비디오는 메쉬(Mesh) 영상/프레임/픽처와 혼용되어 사용될 수 있다. 메쉬(Mesh) 비디오 인코더(102)는 Video-based Dynamic Mesh (V-Mesh) Compression 절차를 수행할 수 있다. 메쉬(Mesh) 비디오 인코더(102)는 압축 및 코딩 효율을 위하여 예측, 변환, 양자화, 엔트로피 코딩 등의 일련의 절차를 수행할 수 있다. 인코딩된 데이터 (인코딩된 비디오/영상 정보)는 비트스트림 (bitstream) 형태로 출력될 수 있다.
파일/세그먼트 인캡슐레이터(file/segment encapsulation module)(103)는 인코딩된 메쉬(Mesh) 비디오 데이터 및/ 메쉬(Mesh) 비디오 관련 메타데이터를 파일 등의 형태로 인캡슐레이션할 수 있다. 여기서 메쉬(Mesh) 비디오 관련 메타데이터는 메타데이터 처리부 등으로부터 전달받은 것일 수 있다. 메타데이터 처리부는 메쉬(Mesh) 비디오 인코더(102)에 포함될 수도 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 파일/세그먼트 인캡슐레이터(103)는 해당 데이터들을 ISOBMFF 등의 파일 포맷으로 인캡슐레이션하거나, 기타 DASH 세그먼트 등의 형태로 처리할 수 있다. 파일/세그먼트 인캡슐레이터(103)는 실시예에 따라 메쉬(Mesh) 비디오 관련 메타데이터를 파일 포맷 상에 포함시킬 수 있다. 메쉬(Mesh) 비디오 메타데이터는 예를 들어 ISOBMFF 파일 포맷 상의 다양한 레벨의 박스 (box)에 포함되거나 파일 내에서 별도의 트랙내의 데이터로 포함될 수 있다. 실시예에 따라, 파일/세그먼트 인캡슐레이터(103)는 메쉬(Mesh) 비디오 관련 메타데이터 자체를 파일로 인캡슐레이션할 수 있다.
전송 처리부는 파일 포맷에 따라 인캡슐레이션된 메쉬(Mesh) 비디오 데이터에 전송을 위한 처리를 가할 수 있다. 전송 처리부는 전송부(104)에 포함될 수도 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 전송 처리부는 임의의 전송 프로토콜에 따라 메쉬(Mesh) 비디오 데이터를 처리할 수 있다. 전송을 위한 처리에는 방송망을 통한 전달을 위한 처리, 브로드밴드를 통한 전달을 위한 처리를 포함할 수 있다. 실시예에 따라 전송 처리부는 메쉬(Mesh) 비디오 데이터뿐 아니라, 메타데이터 처리부로부터 메쉬(Mesh) 비디오 관련 메타데이터를 전달받아, 이것에 전송을 위한 처리를 가할 수도 있다.
전송부(104)는 비트스트림 형태로 출력된 인코딩된 비디오/영상 정보 또는 데이터를 파일 또는 스트리밍 형태로 디지털 저장매체 또는 네트워크를 통하여 수신 장치(110)의 수신부(111)로 전달할 수 있다. 디지털 저장 매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장 매체를 포함할 수 있다. 전송부(104)는 미리 정해진 파일 포멧을 통하여 미디어 파일을 생성하기 위한 엘리먼트를 포함할 수 있고, 방송/통신 네트워크를 통한 전송을 위한 엘레멘트를 포함할 수 있다. 수신부(111)는 상기 비트스트림을 추출하여 디코딩 장치로 전달할 수 있다.
수신부(111)는 메쉬(Mesh) 데이터 송신 장치가 전송한 메쉬(Mesh) 비디오 데이터를 수신할 수 있다. 전송되는 채널에 따라 수신부(111)는 방송망을 통하여 메쉬(Mesh) 비디오 데이터를 수신할 수도 있고, 브로드밴드를 통하여 메쉬(Mesh) 비디오 데이터를 수신할 수도 있다. 혹은 디지털 저장 매체를 통하여 메쉬(Mesh) 비디오 데이터를 수신할 수도 있다.
수신 처리부는 수신된 메쉬(Mesh) 비디오 데이터에 대해 전송 프로토콜에 따른 처리를 수행할 수 있다. 수신 처리부는 수신부(111)에 포함될 수 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 전송측에서 전송을 위한 처리가 수행된 것에 대응되도록, 수신 처리부는 전술한 전송 처리부의 역과정을 수행할 수 있다. 수신 처리부는 획득한 메쉬(Mesh) 비디오 데이터는 파일/세그먼트 디캡슐레이터(112)로 전달하고, 획득한 메쉬(Mesh) 비디오 관련 메타데이터는 메타데이터 파서로 전달할 수 있다. 수신 처리부가 획득하는 메쉬(Mesh) 비디오 관련 메타데이터는 시그널링 테이블의 형태일 수 있다.
파일/세그먼트 디캡슐레이터(112)는 수신 처리부로부터 전달받은 파일 형태의 메쉬(Mesh) 비디오 데이터를 디캡슐레이션할 수 있다. 파일/세그먼트 디캡슐레이터(112)는 ISOBMFF 등에 따른 파일들을 디캡슐레이션하여, Mesh 비디오 비트스트림 내지 메쉬(Mesh) 비디오 관련 메타데이터 (메타데이터 비트스트림)를 획득할 수 있다. 획득된 메쉬(Mesh) 비디오 비트스트림은 메쉬(Mesh) 비디오 디코더(113)로, 획득된 메쉬(Mesh) 비디오 관련 메타데이터 (메타데이터 비트스트림)는 메타데이터 처리부로 전달할 수 있다. 메쉬(Mesh) 비디오 비트스트림은 메타데이터(메타데이터 비트스트림)를 포함할 수도 있다. 메타데이터 처리부는 메쉬(Mesh) 비디오 디코더(113)에 포함될 수도 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 파일/세그먼트 디캡슐레이터(112)가 획득하는 메쉬(Mesh) 비디오 관련 메타데이터는 파일 포맷 내의 박스 혹은 트랙 형태일 수 있다. 파일/세그먼트 디캡슐레이터(112)는 필요한 경우 메타데이터 처리부로부터 디캡슐레이션에 필요한 메타데이터를 전달받을 수도 있다. 메쉬(Mesh) 비디오 관련 메타데이터는 메쉬(Mesh) 비디오 디코더(113)에 전달되어 메쉬(Mesh) 비디오 디코딩 절차에 사용될 수도 있고, 또는 렌더러(114)에 전달되어 메쉬(Mesh) 비디오 렌더링 절차에 사용될 수도 있다.
메쉬(Mesh) 비디오 디코더(113)는 비트스트림을 입력받아 메쉬(Mesh) 비디오 인코더(102)의 동작에 대응하는 역동작을 수행하여 비디오/영상을 디코딩할 수 있다. 디코딩된 메쉬(Mesh) 비디오/영상은 렌더러(114)의 디스플레이부를 통하여 디스플레이될 수 있다. 사용자는 VR/AR 디스플레이 또는 일반 디스플레이 등을 통하여 렌더링 된 결과의 전부 또는 일부 영역을 볼 수 있다.
피드백 과정은 렌더링/디스플레이 과정에서 획득될 수 있는 다양한 피드백 정보들을 송신측으로 전달하거나 수신측의 디코더에 전달하는 과정을 포함할 수 있다. 피드백 과정을 통해 메쉬(Mesh) 비디오 소비에 있어 인터랙티비티 (interactivity) 가 제공될 수 있다. 실시예에 따라, 피드백 과정에서 헤드 오리엔테이션 (Head Orientation) 정보, 사용자가 현재 보고 있는 영역을 나타내는 뷰포트 (Viewport) 정보 등이 전달될 수 있다. 실시예에 따라, 사용자는 VR/AR/MR/자율주행 환경 상에 구현된 것들과 상호작용 할 수도 있는데, 이 경우 그 상호작용과 관련된 정보가 피드백 과정에서 송신측 내지 서비스 프로바이더 측으로 전달될 수도 있다. 실시예에 따라 피드백 과정은 수행되지 않을 수도 있다.
헤드 오리엔테이션 정보는 사용자의 머리 위치, 각도, 움직임 등에 대한 정보를 의미할 수 있다. 이 정보를 기반으로 사용자가 현재 메쉬(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 (High Efficiency Video Coding), VVC(Versatile Video Coding) 등의 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): 프리-프로세싱(pre-processing) 과정을 거쳐 입력 메쉬(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의 메쉬 비디오 인코더(102)는 도 2와 같이 프리-프로세서(200) 및 인코더(201)를 포함할 수 있다. 또한, 도 1의 송신 장치가 넓게 인코더로 지칭될 수 있고, 도 1의 메쉬 비디오 인코더(102)가 인코더로 지칭될 수 있다. V-Mesh 압축 방법은 도 2와 같이 프리-프로세싱 과정(Pre-processing, 200)과 인코딩 과정(Encoding, 201)을 포함할 수 있다. 도 2의 프리-프로세서(200)는 도 2의 인코더(201) 앞 단에 위치할 수 있다. 도 2의 프리-프로세서(200) 및 인코더(201)를 포함하여 하나의 인코더로 지칭할 수 있다.
프리-프로세서(200)는 다이나믹 메쉬의 스태틱(static of dynamic mesh)(M(i)) 및/또는 어트리뷰트 맵(A(i))을 수신할 수 있다. 프리-프로세서(200)는 프리-프로세싱을 통해 베이스 메쉬(m(i)) 및/또는 디스플레이스먼트(또는 변위라 함)(d(i))를 생성할 수 있다. 프리-프로세서(200)는 인코더(201)로부터 피드백 정보를 수신하여, 피드백 정보에 기초하여 베이스 메쉬 및/또는 디스플레이스먼트를 생성할 수 있다.
인코더(201)는 베이스 메쉬(m(i)), 디스플레이스먼트(d(i)), 다이나믹 메쉬의 스태틱(M(i)), 및/또는 어트리뷰트 맵(A(i))을 수신할 수 있다. 본 개시에서 베이스 메쉬(m(i)), 디스플레이스먼트(d(i)), 다이나믹 메쉬의 스태틱(M(i)), 및/또는 어트리뷰트 맵(A(i)) 중 적어도 하나를 포함하여 메쉬 관련 데이터라 칭할 수 있다. 인코더(201)는 메쉬 관련 데이터를 인코딩하여 압축된 비트스트림을 생성할 수 있다.
도 3은 실시예들에 따른 V-MESH 압축의 프리-프로세싱 과정을 나타낸다.
도 3은 도 2의 프리-프로세서의 구성 및 동작을 나타낸다. 도 3에서 입력 메쉬는 다이나믹 메쉬의 스태틱(static of dynamic mesh)(M(i)) 및/또는 어트리뷰트 맵(A(i))를 포함할 수 있다. 또한, 입력 메쉬는 메쉬를 구성하는 정점들의 3차원 좌표, 각 정점의 법선 정보, Mesh 표면을 2D 평면에 매핑하는 매핑 정보, 표면을 구성하는 정점들 간의 연결 정보 등을 포함할 수 있다.
도 3은 입력 메쉬(mesh)에 대해 프리-프로세싱을 수행하는 과정을 보여준다. 프리-프로세싱 과정(200)은 크게 4단계로, 1) GoF (Group of Frame) 생성(generation), 2) 메쉬 단순화(Mesh Decimation), 3) UV 파라미터라이제이션(parameterization), 4) 핏팅 서브디비전 서페이스(Fitting subdivision surface, 300)를 포함할 수 있다. 실시예들에 따르면, GoF 생성은 GoF 생성 과정 또는 GoF 생성부라 칭하고, 메쉬 단순화는 메쉬 단순화 과정 또는 메쉬 단순화부라 칭하고, UV 파라미터라이제이션은 UV 파라미터라이제이션 과정 또는 UV 파라미터라이제이션부라 칭하며, 핏팅 서브디비전 서페이스는 핏팅 서브디비전 서페이스 과정 또는 핏팅 서브디비전 서페이스부라 칭할 수 있다. 프리-프로세서(200)는 수신되는 입력 메쉬로부터 디스플레이스먼트 및/또는 베이스 메쉬를 생성하여, 인코더(201)로 전달할 수 있다. 프리-프로세서(200)는 GoF생성과 연관된 GoF정보를 인코더(201)로 전달할 수 있다.
이하에서, 도 3의 각 단계를 설명한다.
GoF 생성(Generation): 메쉬(Mesh) 데이터의 참조 구조를 생성하는 과정이다. 이전 프레임의 메쉬(mesh)와 현재 메쉬(mesh)의 정점 개수, 텍스처 좌표 개수, 정점 연결 정보, 텍스처 좌표 연결 정보가 모두 동일한 경우에는 이전 프레임을 참조 프레임으로 설정할 수 있다. 즉, 현재 입력 메쉬(Input mesh)와 참조 입력 메쉬(Input mesh)간 정점 좌표 값만 다른 경우, 인코더(201)는 인터 프레임 인코딩(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)(300): 단순화된 메쉬(Decimated mesh)(즉, 텍스쳐 좌표를 갖는 단순화된 메쉬)에 대해 세분화(Subdivision)를 수행하는 과정이다. 이 과정을 통해 생성된 디스플레이스먼트와 베이스 메쉬가 인코더(201)로 출력된다. 서브디비전(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의 디스플레이스먼트 생성 과정은 프리-프로세서(200)에서 수행될 수도 있고, 또는 인코더(201)에서 수행될 수도 있다.
도 5는 도 4에서 설명한 바와 같이, 핏팅 서브디비전 서페이스부(Fitting subdivision surface, 300)의 디스플레이스먼트 계산 방식을 상세히 나타낸다.
실시예들에 따른 인코더 및/또는 프리-프로세서는 1) 서브디비전부, 2) 로컬 좌표 시스템 계산부, 3) 디스플레이스먼트 계산부를 포함할 수 있다. 서브디비전부는 복원된 베이스 메쉬에 서브디비전을 수행하여, 서브디비전된 복원된 베이스 메쉬를 생성할 수 있다. 여기서, 베이스 메쉬의 복원은 프리-프로세서(200)에서 수행될 수도 있고, 또는 인코더(201)에서 수행될 수도 있다. 로컬 좌표 시스템 계산부는 핏팅된 서브디비전된 메쉬 및 서브디비전된 복원된 베이스 메쉬를 수신하고, 이들을 기반으로 메쉬에 관한 좌표 시스템을 로컬 좌표 시스템으로 변환할 수 있다. 로컬 좌표 시스템 계산 동작은 선택적일 수 있다. 디스플레이스먼트 계산부는 핏팅된 서브디비전 메쉬 및 서브디비전된 복원된 베이스 메쉬 간 위치 차이를 계산한다. 예를 들어, 입력한 두 가지 메쉬의 정점 간 위치 차이 값을 생성할 수 있다. 정점 위치 차이값이 디스플레이스먼트가 된다.
실시예들에 따른 메쉬 데이터 송신 방법 및 장치는 메쉬 데이터를 다음과 같이 인코딩할 수 있다. 메쉬 데이터는 포인트 클라우드 데이터를 포함하는 용어이다. 실시예들에 따른 포인트 클라우드 데이터(줄여서 포인트 클라우드로 지칭 가능함)는 정점 좌표(또는 지오메트리 정보라 함) 및 색상 정보(또는 어트리뷰트 정보라 함)를 포함하는 데이터를 지칭할 수 있다. 또한, 정점 좌표와 색상 정보를 기반으로 패치 생성, 패킹을 통해 생성된 지오메트리 이미지, 어트리뷰트 이미지, 어큐판시 맵, 및 부가 정보(또는 패치 정보라 함)도 포인트 클라우드 데이터라 칭한다. 그러므로, 연결 정보를 포함하는 포인트 클라우드 데이터를 메쉬 데이터라 칭할 수 있다. 본 문서에서 포인트 클라우드 및 메쉬 데이터는 서로 혼용되어 사용될 수 있다.
실시예들에 따른 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의 인트라 프레임 인코딩 프로세스를 위한 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응한다.
도 6의 인코딩 프로세스는 도 1의 메쉬 비디오 인코더(102)의 인코딩을 상세하게 나타낸다. 즉, 도 1의 인코딩이 인트라 프레임 방식인 경우 메쉬 비디오 인코더(102)의 구성을 나타낸다. 도 6의 인코더는 프리-프로세서(200) 및/또는 인코더(201)을 포함할 수 있다. 도 6의 프리-프로세서(200)와 인코더(201)는 도 3의 프리-프로세서(200)와 인코더(201)에 해당할 수 있다.
프리-프로세서(200)는 입력 메쉬를 수신하고, 전술한 프리-프로세싱을 수행할 수 있다. 프리-프로세싱을 통해 베이스 메쉬 및/또는 핏팅된 서브디비전된 메쉬를 생성할 수 있다.
인코더(201)의 양자화기(411)는 베이스 메쉬 및/또는 핏팅된 서브디비전된 메쉬를 양자화할 수 있다. 스태틱 메쉬 인코더(412)는 스태틱 메쉬(즉, 양자화된 베이스 메쉬)를 인코딩하고, 인코딩된 베이스 메쉬를 포함하는 비트스트림(즉, compressed base mesh bitstream)을 생성할 수 있다. 스태틱 매쉬 디코더(413)는 인코딩된 스태틱 메쉬(즉, 인코딩된 베이스 메쉬)를 디코딩할 수 있다. 역양자화기(414)는 양자화된 스태틱 메쉬(즉, 베이스 메쉬)를 역으로 양자화하여 재구성된(reconstructed 또는 복원된) 베이스 메쉬를 출력할 수 있다. 디스플레이스먼트 계산부(415)는 복원된 스태틱 메쉬(즉, 베이스 메쉬)와 핏팅된 서브디비전된 메쉬에 기초하여, 디스플레이스먼트(displacement or displacements)를 생성할 수 있다. 실시예들에 따르면, 디스플레이스먼트 계산부(415)는 복원된 베이스 메쉬를 서브디비전(또는 세분화)한 후, 서브디비전된 베이스 메쉬와 핏팅 서브디비전된 메쉬의 각 정점 별 위치 차이인 디스플레이스먼트를 계산한다. 즉, 디스플레이스먼트는 핏팅된 서브디비전(또는 세분화)된 메쉬가 원본 메쉬와 유사해지도록 두 메쉬의 정점 간 위치 차이인 디스플레이스먼트 벡터이다. 포워드 리니어 리프팅부(416)는 입력되는 디스플레이스먼트에 대해 리프팅 변환을 수행하여 리프팅 계수(또는 변환 계수라 함)를 생성할 수 있다. 양자화기(417)는 리프팅 계수를 양자화할 수 있다. 이미지 패킹부(418)는 양자화된 리프팅 계수에 기초하여 이미지를 패킹할 수 있다. 비디오 인코더(419)는 패킹된 이미지를 인코딩할 수 있다. 즉, 양자화된 리프팅 계수는 이미지 패킹부(418)에 의해 2D 이미지로 한 프레임에 패킹되고, 비디오 인코더(419)를 통해 압축되어 디스플레이스먼트 비트스트림(즉, compressed displacement bitstream)으로 출력된다.
비디오 디코더(420)는 압축된 디스플레이스먼트 비트스트림을 디코딩한다. 이미지 언패킹부(421)는 디코딩된 디스플레이스먼트 프레임에 대해 언패킹을 수행하여 양자화된 리프팅 계수를 출력할 수 있다. 역양자화기(422)는 양자화된 리프팅 계수를 역양자화할 수 있다. 역 리니어 리프팅부(423)는 역양자화된 리프팅 계수에 역리프팅을 적용하여 복원된 디스플레이스먼트를 생성한다. 메쉬 복원부(424)는 역 리니어 리프팅부(423)에서 출력되는 복원된 디스플레이스먼트와 역양자화부(414)에서 출력되는 복원된 베이스 메쉬(또는 서브디바이드된 복원된 베이스 메쉬라 함)를 통해 재구성되고 변형된 메쉬를 복원한다. 본 개시는 재구성되고 변형된 메쉬를 복원된 변형된 메쉬라 칭한다.
어트리뷰트 트랜스퍼(425)는 입력 메쉬 및/또는 입력 어트리뷰트 맵을 수신하고, 복원된 변형된 메쉬에 기초하여 어트리뷰트 맵을 재생성한다. 어트리뷰트 맵은 메쉬 데이터 구성 요소 중 어트리뷰트 정보에 해당하는 텍스쳐 맵을 의미하며, 본 개시에서 어트리뷰트 맵과 텍스쳐 맵은 서로 혼용하여 사용될 수 있다. 푸쉬-풀 패딩(426)은 푸쉬-풀 방식에 기초하여 어트리뷰트 맵에 데이터를 패딩할 수 있다. 컬러 스페이스 변환부(427)는 어트리뷰트 맵의 컬러 성분의 스페이스를 변환할 수 있다. 예를 들어, 어트리뷰트 맵은 RGB 컬러 스페이스에서 YUV 컬러 스페이스로 변환될 수 있다. 비디오 인코더(428)는 어트리뷰트 맵을 인코딩하여 압축된 어트리뷰트 비트스트림으로 출력할 수 있다.
멀티플렉서(430)는 압축된 베이스 메쉬 비트스트림, 압축된 디스플레이스먼트 비트스트림, 압축된 어트리뷰트 비트스트림을 멀티플렉싱하여 압축된 비트스트림(compressed bitstream)을 생성할 수 있다.
도 6에서 디스플레이스먼트 계산부(415)는 프리-프로세서(200)에 포함될 수도 있다. 또한, 양자화기(411), 스태틱 메쉬 인코더(412), 스태틱 메쉬 디코더(413), 역양자화기(414) 중 적어도 하나는 프리-프로세서(200)에 포함될 수도 있다.
도 6에서 설명한 바와 같이 인트라 프레임 인코딩 방법은 베이스 메쉬 인코딩(Base mesh encoding 또는, 스태틱 메쉬 인코딩이라 함)을 포함한다. 즉, 현재 입력 메쉬(Input mesh) 프레임에 대해 인트라 프레임 인코딩(Intra frame encoding)을 수행하는 경우, 프리-프로세서(200)의 프리-프로세싱 과정에서 생성된 베이스 메쉬(Base mesh)는 양자화기(411)에서 양자화 과정을 거친 후 스태틱 메쉬 인코더(412)에서 스태틱 메쉬(Mesh) 압축 기술을 사용하여 인코딩될 수 있다. V-Mesh 압축 방법에서, 예를 들어, 드라코(Draco) 기술이 베이스 메쉬 인코딩에 적용되었으며, 베이스 메쉬(Base mesh)의 정점 위치 정보, 매핑 정보(텍스처 좌표), 정점 연결 정보 등이 압축 대상이 된다.
도 6의 인코더는 프레임 내 베이스 메쉬, 디스플레이스먼트, 어트리뷰트를 압축하여 비트스트림을 생성하고, 도 7의 인코더는 현재 프레임 및 참조 프레임 간 모션, 디스플레이스먼트, 어트리뷰트를 압축하여 비트스트림을 생성한다.
도 7은 실시예들에 따른 V-MESH 압축 방법의 인터 프레임 인코딩 프로세스를 나타낸다. 도 7의 인터 프레임 인코딩 프로세스를 위한 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응한다.
도 7의 인코딩 프로세스는 도 1의 인코딩을 상세하게 나타낸다. 즉, 도 1의 인코딩이 인터 프레임 방식인 경우 인코더의 구성을 나타낸다. 도 7의 인코더는 프리-프로세서(200) 및/또는 인코더(201)을 포함할 수 있다. 도 7의 프리-프로세서(200)와 인코더(201)는 도 3의 프리-프로세서(200)와 인코더(201)에 해당할 수 있다.
도 7의 인코딩 동작 중 도 6의 인코딩 동작과 대응하는 구성 요소의 설명은 도 6의 설명을 참조한다. 즉, 도 7의 양자화기(511), 디스플레이스먼트 계산부(515), 웨이블릿 변환기(516), 양자화기(517), 이미지 패킹부(518), 비디오 인코더(519), 비디오 디코더(520), 이미지 언패킹부(521), 역양자화기(522), 역 웨이블릿 변환기(523), 메쉬 복원부(524), 어트리뷰트 트랜스퍼(525), 푸쉬-풀 패딩(526), 컬러 스페이스 변환부(527), 비디오 인코더(528), 및 멀티플렉서(530)의 동작은 도 6의 양자화기(411), 스태틱 메쉬 인코더(412), 스태틱 메쉬 디코더(413), 역양자화기(414), 디스플레이스먼트 계산부(415), 포워드 리니어 리프팅부(416), 양자화기(417), 이미지 패킹부(418), 비디오 인코더(419), 비디오 디코더(420), 이미지 언패킹부(421), 역양자화기(422), 역 리니어 리프팅부(423), 메쉬 복원부(424), 어트리뷰트 트랜스퍼(425), 푸쉬-풀 패딩(426), 컬러 스페이스 변환부(427), 비디오 인코더(428), 및 멀티플렉서(430)에서 설명한 동작과 동일 또는 유사하므로 중복 설명을 피하기 위해 도 7에서는 상세 설명을 생략한다.
도 7에서 인터 프레임 기반 인코딩을 위해서, 모션 인코더(512)는 복원된 양자화된 참조 베이스 메쉬와 양자화된 현재 베이스 메쉬에 기초하여 두 베이스 메쉬 간의 모션 벡터를 구한 후 인코딩하여 압축된 모션 비트스트림을 출력할 수 있다. 모션 인코더(512)는 모션 벡터 인코더로 지칭할 수 있다. 베이스 메쉬 복원부(513)는 복원된 양자화된 참조 베이스 메쉬와 인코딩된 모션 벡터에 기초하여 베이스 메쉬를 복원할 수 있다. 복원된 베이스 메쉬는 역양자화기(514)에서 역양자화된 후 디스플레이스먼트 계산부(515)로 출력된다.
도 7에서 디스플레이스먼트 계산부(515)는 프리-프로세서(200)에 포함될 수도 있다. 또한, 양자화기(511), 모션 인코더(512), 베이스 메쉬 복원부(513), 및 역양자화기(514) 중 적어도 하나는 프리-프로세서(200)에 포함될 수도 있다.
도 7에서 설명한 바와 같이 인터 프레임 인코딩 방법은 모션 필드 인코딩(Motion field 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)을 포함한다.
베이스 메쉬 인코딩 및/또는 모션 필드 인코딩 후 복원 및 역양자화를 거쳐 복원된 베이스 메쉬(Recon. base mesh)가 생성되고, 이 복원된 베이스 메쉬에 서브디비전(Subdivision)을 수행한 결과와, 핏팅 서브디비전 서페이스를 통해 생성된 핏팅된 서브디비전된 메쉬(Fitted subdivided mesh)간의 디스플레이스먼트(Displacement)를 계산할 수 있다(도 6의 415 또는 도 7의 515 참조). 효과적인 인코딩을 위해 웨이브릿 변환(Wavelet transform)과 같은 데이터 변환(Data transform) 과정이 디스플레이스먼트(Displacement) 정보에 적용될 수 있다(도 6의 416 또는 도 7의 516 참조).
도 8은 도 6의 포워드 리니어 리프팅부(416) 또는 도 7의 웨이블릿 변환기(516)에서 리프팅 변환(Lifting transform)을 사용하여 디스플레이스먼트(Displacement) 정보를 변환하는 과정을 보여준다. 예를 들어, 선형 웨이블릿 기반의 리프팅 변환이 수행될 수 있다. 변환 과정을 거쳐 생성된 변환 계수들은 양자화기(417 또는 517)에서 양자화 후, 이미지 패킹부(418 또는 518)를 통해 도 9에서와 같이 2D 이미지에 패킹 (Packing)된다. 변환 계수들은 256 (=16×16)개 단위마다 하나의 블록으로 구성되고, 각 블록은 z스캔 순서(z-scan order)로 패킹될 수 있다. 블록의 가로 개수는 16개로 고정하되, 블록의 세로 개수는 서브디비전된 베이스 메쉬(Subdivided base mesh)의 정점 개수에 따라 결정될 수 있다. 하나의 블록 내에서 몰톤 코드(Morton code)로 정렬하여 변환 계수를 패킹할 수 있다. 패킹 된 이미지들은 GoF 단위마다 디스플레이스먼트 비디오(Displacement video)를 생성하고, 이 디스플레이스먼트 비디오(Displacement video)는 비디오 인코더(419 또는 519)에서 기존의 비디오 압축 코덱을 이용하여 인코딩될 수 있다.
도8을 참조하면, 베이스 메쉬(original)는 LoD0에 대한 버텍스 및 엣지를 포함할 수 있다. 베이스 메쉬를 분할(또는 세분화)하여 생성된 제1서브디비전 메쉬는 베이스 메쉬의 엣지를 추가 분할(또는 세분화)하여 생성된 버텍스를 포함한다. 제1서브디비전 메쉬는 LoD0에 대한 버텍스 및 LoD1에 대한 버텍스를 포함한다. LoD1은 서브디비전된 버텍스 및 베이스 메쉬의 버텍스(LoD0)를 포함한다. 제1서브디비전 메쉬를 다시 분할(또는 세분화)하여 제2서브디비전 메쉬를 생성할 수 있다. 제2서브디비전 메쉬는 LoD2를 포함한다. LoD2는 베이스 메쉬 버텍스(LoD0), LoD0에서 추가로 분할(또는 세분화)된 버텍스를 포함하는 LoD1, LoD1에서 추가로 분할(또는 세분화)된 버텍스를 포함한다. LoD는 메쉬 데이터 콘텐트의 상세한 정도를 나타내는 레벨(Level of Detail)이고, 레벨의 인덱스가 커질수록 버텍스 간 거리는 가까워지고, 상세도 레벨은 증가한다. 즉, LoD 값이 작을 수록 메쉬 데이터 콘텐트의 디테일이 떨어지고, LoD 값이 클 수록 메쉬 데이터 콘텐트의 디테일이 높음을 나타낸다. LoD N는 이전 LoDN-1에 포함된 버텍스들을 그대로 포함한다. 서브디비전을 통해 메쉬(또는 버텍스)가 추가로 분할되는 경우, 이전 버텍 스v1, v2 및 서브디비전된 버텍스 v를 고려하면, 메쉬를 예측 및/또는 업데이트 방식에 기초하여 인코딩할 수 있다. 현재 LoD N에 대한 정보를 그대로 인코딩하는 대신에 이전 LoD N-1 간 잔차값(Residual)을 생성하여 잔차값을 통해 메쉬를 인코딩하여 비트스트림의 사이즈를 줄일 수 있다. 예측 프로세스는 이전 버텍스 v1, v2를 통해서 현재 버텍스v를 예측하는 동작을 의미한다. 인접한 서브디비전 메쉬 간 서로 유사한 데이터를 가지기 때문에 이러한 속성을 이용하여 효율적인 인코딩을 할 수 있다. 현재 버텍스 위치 정보를 이전 버텍스 위치 정보에 대한 잔차로 예측하고, 잔차를 통해 이전 버텍스 위치 정보를 업데이트한다. 본 개시에서 버텍스, 정점, 포인트는 동일한 의미로 사용될 수 있다. 그리고, LoD들은 베이스 메쉬의 세분화 과정에서 정의될 수 있다. 실시예들에 따르면, 베이스 메쉬의 세분화 과정은 프리-프로세서(200)에서 수행되거나 또는 별도의 컴포넌트/모듈에서 수행될 수도 있다.
도 9를 참조하면, 버텍스는 리프팅 변환을 통해 생성된 변환 계수(또는 리프팅 계수라 함)를 가진다. 리프팅 변환 관련 버텍스의 변환 계수는 이미지 패킹부(418 또는 518)에 의해 이미지에 패킹된 후 비디오 인코더(419 또는 519)에 의해 인코딩될 수 있다.
도 10은 실시예들에 따른 V-MESH 압축 방법의 어트리뷰트 트랜스퍼 과정을 나타낸다.
실시예들에 따르면, 도 10은 도 6, 도 7 등의 인코딩의 어트리뷰트 트랜스퍼(425 또는 525)의 상세 동작을 나타낸다.
실시예들에 따른 인코딩은 어트리뷰트 맵 인코딩(Attribute map encoding)을 포함한다. 실시예들에 따르면, 어트리뷰트 맵 인코딩은 도 6의 비디오 인코더(428) 또는 도 7의 비디오 인코더(528)에서 수행될 수 있다.
실시예들에 따르면, 본 개시에서 인코더는 베이스 메쉬 인코딩(즉, 인트라 인코딩), 모션 필드 인코딩(즉, 인터 인코딩), 디스플레이스먼트 인코딩을 통해 입력 메쉬(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 압축 방법에서는 어트리뷰트 트랜스퍼(425 또는 525)의 어트리뷰트 트랜스퍼(Attribute transfer) 과정을 통해, 복원된 변형된 메쉬(Recon. deformed mesh)의 텍스처 좌표에 상응하는 색상 정보를 갖는 새로운 어트리뷰트 맵(Attribute map)을 재생성한다.
실시예들에 따르면, 어트리뷰트 트랜스퍼(Attribute transfer)(425 또는 525)는 먼저 2D 텍스쳐 도메인(Texture domain)의 모든 포인트 P(u, v) 에 대해 해당 정점이 복원된 변형된 메쉬(Recon. deformed mesh)의 텍스쳐 트라이앵글(texture triangle) 안에 속해 있는지 확인하고, 텍스쳐 트라이앵글 T(texture triangle T) 안에 존재한다면 그 트라이앵글 T(triangle T)에 따른 P(u, v)의 질량중심 좌표 (barycentric coordinate) (
Figure PCTKR2024008873-appb-img-000001
,
Figure PCTKR2024008873-appb-img-000002
,
Figure PCTKR2024008873-appb-img-000003
)를 계산한다. 그리고 트라이앵글 T(triangle T)의 3D 정점 위치와 (
Figure PCTKR2024008873-appb-img-000004
,
Figure PCTKR2024008873-appb-img-000005
,
Figure PCTKR2024008873-appb-img-000006
)를 사용하여 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')의 질량중심 좌표 (
Figure PCTKR2024008873-appb-img-000007
',
Figure PCTKR2024008873-appb-img-000008
',
Figure PCTKR2024008873-appb-img-000009
')을 계산한다. Triangle T' 의 세 정점에 대응하는 텍스처 좌표들과 (
Figure PCTKR2024008873-appb-img-000010
',
Figure PCTKR2024008873-appb-img-000011
',
Figure PCTKR2024008873-appb-img-000012
')을 이용하여 텍스처 좌표 (u', v')를 계산하고, 이 좌표에 해당하는 색상 정보를 입력 어트리뷰트 맵(Input attribute map)에서 찾는다. 이렇게 찾아진 색상 정보는 곧 새로운 어트리뷰트 맵(Input attribute map)의 (u, v) 픽셀 위치에 할당된다. 만약 P(u, v)가 어느 트라이앵글(triangle)에도 속하지 않는다면 새로운 어트리뷰트 맵(Input attribute map)에서 해당 위치 픽셀은 푸쉬-풀 패딩(426 또는 526)의 푸쉬-풀 알고리즘(Push-Pull algorithm)과 같이 패딩 알고리즘(padding algorithm)을 이용하여 색상 값이 채워질 수 있다.
어트리뷰트 트랜스퍼(Attribute transfer) (425 또는 525)를 통해 생성된 새로운 어트리뷰트 맵(Attribute map)은 GoF 단위로 묶여 어트리뷰트 맵 비디오(Attribute map video)를 구성하고, 이것은 비디오 인코더(428 또는 528)의 비디오 코덱을 이용하여 압축된다.
도 10을 참조하면, 입력 메쉬, 입력 어트리뷰트 맵, 복원된 변형된 메쉬(Reconstructed deformed mesh), 재생성된 어트리뷰트 맵 간 참조 관계를 알 수 있다.
도 1의 디코딩 프로세싱(Decoding process)은 도 1의 인코딩 프로세스의 대응하는 과정의 역과정을 수행할 수 있다. 구체적 디코딩 프로세스는 다음과 같다.
도 11은 실시예들에 따른 V-Mesh 기술의 인트라 프레임 디코딩(또는 인트라 디코딩이라 함) 프로세스를 나타낸다.
도 11은 도 1의 수신 장치의 메쉬 비디오 디코더(113)의 구성 및 동작을 나타낸다. 또한, 도11은 도 6의 인트라 프레임 인코딩 프로세스의 역과정을 수행하여 메쉬 데이터를 복원할 수 있다. 도 11의 인트라 프레임 디코딩 프로세스를 위한 각 구성 요소는 하드웨어, 소프트웨어 및/또는 그것들의 조합에 대응한다.
먼저, 수신되어 인트라 프레임 디코딩부(610)의 디멀티플렉서(611)로 입력된 비트스트림(즉, compressed bitstream)은 메쉬 서브 스트림(Mesh sub-stream), 디스플레이스먼트 서브 스트림(Displacement sub-stream), 어트리뷰트 맵 서브 스트림(Attribute map sub-stream), 그리고 V-PCC/V3C와 같이 메쉬(Mesh)의 패치(patch) 정보를 포함하는 서브 스트림(Sub-stream)으로 분리될 수 있다. 본 문서에서 사용하는 V-PCC (Video-based Point Cloud Compression) 용어는 V3C (Visual Volumetric Video-based Coding)와 같은 의미로 사용될 수 있으며, 두 용어는 서로 혼용되어 사용될 수 있다. 따라서, 본 문서에서 V-PCC용어는 V3C 용어로 해석될 수 있다.
실시예들에 따르면, 메쉬 서브 스트림은 스태틱 메쉬 디코더(612)로 입력되어 디코딩되고, 디스플레이스먼트 서브 스트림은 비디오 디코더(613)로 입력되어 디코딩되며, 어트리뷰트 맵 서브 스트림은 비디오 디코더(617)로 입력되어 디코딩될 수 있다.
실시예들에 따르면, 메쉬 서브 스트림(Mesh sub-stream)은 예를 들어, 구글 드라코(Google Draco)와 같은 인코딩(Encoding)에서 사용한 스태틱 메쉬(Mesh) 코덱의 디코더(612)를 통해 디코딩되어, 그 결과로서 복원된 양자화된 베이스 메쉬(recon. quantized base mesh) 예를 들어, 베이스 메쉬(Base mesh)의 연결 정보, 정점 지오메트리 정보, 정점 텍스처 좌표 등을 복원할 수 있다.
실시예들에 따르면, 디스플레이스먼트 서브 스트림(Displacement sub-stream)은 인코딩(Encoding)에서 사용한 비디오 압축 코덱의 디코더(613)를 통해 디스플레이스먼트 비디오(Displacement video)로 디코딩되고, 이미지 언패킹부(614)의 이미지 언패킹(Image unpacking), 역양자화기(615)의 역 양자화(Inverse quantization), 역 리니어 리프팅부(616)의 역 변환(Inverse transform) 과정을 거쳐 각 정점에 대한 디스플레이스먼트(Displacement) 정보로 복원된다(즉, Recon. displacements).
실시예들에 따르면, 스태틱 메쉬 디코더(612)에서 복원된 베이스 메쉬(Base mesh)는 역양자화기(620)에서 역양자화(Inverse quantization)된 후 메쉬 복원부(630)로 출력된다. 메쉬 복원부(630)는 역 리니어 리프팅부(616)에서 출력되는 복원된 디스플레이스먼트와 역양자화부(620)에서 출력되는 복원된 베이스 메쉬를 통해 재구성되고 변형된 메쉬를 복원한다(즉, decoded mesh). 즉, 역양자화된 복원된 베이스 메쉬는 복원된 디스플레이스먼트(Displacement) 정보와 결합되어 최종 디코딩된 메쉬(Decoded mesh)를 생성한다. 본 개시에서 최종 디코딩된 메쉬는 복원된 변형된 메쉬(reconstructed deformed mesh)라 칭한다.
실시예들에 따르면, 어트리뷰트 맵 서브 스트림(Attribute map sub-stream)은 인코딩(Encoding)에서 사용한 비디오 압축 코덱에 대응하는 디코더(617)를 통해 디코딩된 후, 컬러 변환부(640)에서 색상 포맷 변환, 컬러 스페이스 변환 등의 과정을 거쳐 최종적인 어트리뷰트 맵(Attribute map)으로 복원된다(즉, decoded attribute map).
실시예들에 따르면, 복원된 디코딩된 메쉬(Decoded mesh)와 디코딩된 어트리뷰트 맵(Decoded attribute map)은 사용자가 활용할 수 있는 최종적인 메쉬 데이터(Mesh data)로써 수신단에서 활용될 수 있다.
도 11을 참조하면, 수신된 압축 비트스트림(compressed bitstream)은 패치 정보, 메쉬 서브 스트림, 디스플레이스먼트 서브 스트림, 어트리뷰트 맵 서브 스트림을 포함한다. 서브 스트림은 비트스트림에 포함된 일부 비트스트림을 지칭하는 용어로 해석된다. 비트스트림은 패치 정보(데이터), 메쉬 정보(데이터), 디스플레이스먼트 정보(데이터), 어트리뷰트 맵 정보(데이터)를 포함한다.
위에서 설명한 바와 같이 도 11의 디코더는 프레임 내 디코딩 동작을 다음과 같이 수행한다. 스태틱 메쉬 디코더(612)는 메쉬 서브 스트림을 디코딩하여 복원된 양자화된 베이스 메쉬를 생성하고, 역양자화기(620)는 양자화기의 양자화 파라미터를 역으로 적용하여, 복원된 베이스 메쉬를 생성한다. 비디오 디코더(613)는 디스플레이스먼트 서브 스트림을 디코딩하고, 이미지 언패킹부(614)는 디코딩된 디스플레이스먼트 비디오의 이미지를 언패킹하고, 역양자화기(615)는 양자화되었던 이미지를 역으로 양자화한다. 역 리니어 리프팅부(616)는 인코더의 역과정으로 리프팅 변환을 적용하여 복원된 디스플레이스먼트를 생성한다. 메쉬 복원부(630)는 복원된 베이스 메쉬 및 복원된 디스플레이스먼트에 기초하여 복원된 변형된 메쉬(reconstructed deformed mesh)를 생성한다. 비디오 디코더(617)는 어트리뷰트 맵 서브 스트림을 디코딩하고, 컬러 변환부(640)는 디코딩된 어트리뷰트 맵의 컬러 포맷 및/또는 스페이스를 변환하여 디코딩된 어트리뷰트 맵을 생성한다.
도 12는 V-Mesh 기술의 인터 프레임 디코딩(또는 인터 디코딩이라 함) 프로세스를 나타낸다.
도 12는 도 1의 수신 장치의 메쉬 비디오 디코더(113)의 구성 및 동작을 나타낸다. 또한, 도 12는 도 7의 인터 프레임 인코딩 프로세스의 역과정을 수행하여 메쉬 데이터를 복원할 수 있다. 도 12의 인터 프레임 디코딩 프로세스를 위한 각 구성 요소는 하드웨어, 소프트웨어 및/또는 그것들의 조합에 대응한다.
먼저, 수신되어 인트라 프레임 디코딩부(710)의 디멀티플렉서(711)로 입력된 비트스트림은 모션 서브 스트림(Motion sub-stream 또는 모션 벡터 서브 스트림이라 함), 디스플레이스먼트 서브 스트림(Displacement sub-stream), 어트리뷰트 맵 서브 스트림(Attribute map sub-stream), 그리고 V3C/V-PCC와 같이 메쉬(Mesh)의 패치(patch) 정보를 포함하는 서브 스트림(sub-stream)으로 분리될 수 있다.
실시예들에 따르면, 모션 서브 스트림은 모션 디코더(712)로 입력되어 디코딩되고, 디스플레이스먼트 서브 스트림은 비디오 디코더(713)로 입력되어 디코딩되며, 어트리뷰트 맵 서브 스트림은 비디오 디코더(717)로 입력되어 디코딩될 수 있다.
실시예들에 따르면, 모션 서브 스트림(Motion sub-stream)은 모션 디코더(712)에서 엔트로피 디코딩(Entropy decoding)과 역 예측(Inverse prediction) 과정을 통해 디코딩되어 모션 정보(또는 모션 벡터 정보라 함)로 복원된다. 베이스 메쉬 복원부(718)는 복원된 모션(Motion) 정보와 이미 복원되어 저장된 참조 베이스 메쉬(Base mesh)를 결합하여 현재 프레임에 대한 복원된 양자화된 베이스 메쉬(Reconstructed quantized base mesh)를 생성한다. 역양자화기(720)는 복원된 양자화된 베이스 메쉬에 역양자화(Inverse quantization)를 적용하여 복원된 베이스 메쉬를 생성한다. 비디오 디코더(713)는 디스플레이스먼트 서브 스트림을 디코딩하고, 이미지 언패킹부(714)는 디코딩된 디스플레이스먼트 비디오의 이미지를 언패킹하고, 역양자화기(715)는 양자화되었던 이미지를 역으로 양자화한다. 역 리니어 리프팅부(716)는 인코더의 역과정으로 리프팅 변환을 적용하여 복원된 디스플레이스먼트를 생성한다. 메쉬 복원부(730)는 복원된 베이스 메쉬 및 복원된 디스플레이스먼트에 기초하여 복원된 변형된 메쉬(reconstructed deformed mesh) 즉, 최종 디코딩된 메쉬(decoded mesh)를 생성한다.
실시예들에 따르면, 비디오 디코더(717)는 어트리뷰트 맵 서브 스트림(Attribute map sub-stream)을 인트라 디코딩과 동일한 방법으로 디코딩(Decoding)하고, 컬러 변환부(740)는 디코딩된 어트리뷰트 맵의 컬러 포맷 및/또는 스페이스를 변환하여 디코딩된 어트리뷰트 맵을 생성한다. 디코딩된 메쉬(Decoded mesh)와 디코딩된 어트리뷰트 맵(Decoded attribute map)은 사용자가 활용할 수 있는 최종적인 메쉬 데이터(Mesh data)로써 수신단에서 활용될 수 있다.
도 12를 참조하면, 비트스트림은 모션 정보(또는 모션 벡터라 함), 디스플레이스먼트, 어트리뷰트 맵을 포함한다. 도 12는 프레임 간 디코딩을 수행하기 때문에, 프레임 간 모션 정보를 디코딩하는 과정을 더 포함한다. 모션 정보를 디코딩하고, 참조 베이스 메쉬에 기초하여 모션 정보에 대한 복원된 양자화된 베이스 메쉬를 생성하여 복원된 베이스 메쉬를 생성한다. 도 11과 동일한 도 12의 동작의 설명은 도 11의 설명을 참조한다.
도 13은 실시예들에 따른 메쉬 데이터 송신 장치를 나타낸다.
도 13은 도 1의 송신 장치(100) 또는 메쉬 비디오 인코더(102), 도 2, 도 6, 또는 도 7의 인코더(프리 프로세서 및 인코더), 및/또는 그에 대응하는 송신 인코딩 장치에 대응한다. 도 13의 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응한다.
V-Mesh 압축 기술을 이용한 다이나믹 메쉬(Mesh) 데이터의 압축 및 전송을 위한 송신단의 동작 과정은 도 13과 같을 수 있다. 도 13의 송신 장치는 인트라 프레임 인코딩(또는 인트라 인코딩 또는 화면 내 인코딩이라 함) 프로세스 및/또는 인터 프레임 인코딩(또는 인터 인코딩 또는 화면간 인코딩이라 함) 프로세스를 수행할 수 있다.
프리-프로세서(811)는 원본 메쉬를 입력받아 단순화된 메쉬 (Decimated mesh)(또는 베이스 메쉬)와 핏팅된 세분화(또는 서브디비전)된 메쉬를 생성한다. 단순화는 메쉬를 구성하는 타겟 정점 개수 또는 타겟 다각형 개수를 기준으로 수행할 수 있다. 단순화된 메쉬에 대해 정점 당 텍스처 좌표 및 텍스처 연결정보를 생성하는 파라미터라이제이션(parameterization 또는 매개변수화라 함)이 수행될 수 있다. 예를 들어, 파라미터라이제이션은 단순화된 메쉬(Decimated mesh)에 대해 3D 곡면을 텍스쳐 도메인(Texture domain)으로 매핑하는 과정이다. 만일, UV아틀라스 툴(UVAtlas tool)을 사용하여 파라미터라이제이션(Parameterization)을 수행할 경우, 단순화된 메쉬(Decimated mesh)의 각 정점들이 2D 이미지 상의 어느 위치로 매핑될 수 있는지 식별할 수 있는 매핑 정보가 생성된다. 매핑 정보는 텍스처 좌표로 표현되어 저장되며, 이 과정을 통해 최종 베이스 메쉬(Base mesh)가 생성된다. 또한 부동 소수점 형태의 메쉬 정보들을 고정 소수점 형태로 양자화하는 작업을 수행할 수 있다. 이 결과는 베이스 메쉬로서 스위칭부(812)를 통해 모션 벡터 인코더(813) 또는 스태틱 메쉬 인코더(814)로 출력될 수 있다. 프리-프로세서(811)에서는 베이스 메쉬에 대해 메쉬 세분화 (Subdivision)를 수행하여 추가적인 정점을 생성할 수 있다. 세분화 방법에 따라 추가된 정점들을 포함하는 정점 연결 정보, 텍스처 좌표 및 텍스처 좌표의 연결 정보들이 생성될 수 있다. 프리-프로세서(811)는 세분화된 메쉬가 원본 메쉬와 유사해지도록 정점 위치 조정을 통해 핏팅된 서브디비전(세분화)된 메쉬 (Fitted subdivided mesh)를 생성할 수 있다.
실시예들에 따르면, 베이스 메쉬는 해당 메쉬 프레임에 대해 화면간 인코딩 (Inter encoding)을 수행하는 경우 스위칭부(812)를 통해 모션 벡터 인코더(813)로 출력되고, 해당 메쉬 프레임에 대해 화면내 인코딩(Intra encoding)을 수행하는 경우 스위칭부(812)를 통해 스태틱 메쉬 인코더(814)로 출력된다. 모션 벡터 인코더(813)는 모션 인코더로 지칭될 수 있다.
예를 들어, 해당 메쉬 프레임에 대해 화면내 인코딩(Intra encoding or intra frame encoding)을 수행하는 경우, 베이스 메쉬는 스태틱 메쉬 인코더(814)를 통해 압축될 수 있다. 이 경우 베이스 메쉬의 연결 정보, 정점 지오메트리 정보, 정점 텍스처 정보, 노말 정보 등에 대해 인코딩이 수행될 수 있다. 인코딩을 통해 생성된 베이스 메쉬 비트스트림은 멀티플렉서(823)로 전송된다.
다른 예로, 해당 메쉬 프레임에 대해 화면간 인코딩(Inter encoding or inter frame encoding)을 수행하는 경우, 모션 벡터 인코더(813)는 베이스 메쉬와 참조 복원 베이스 메쉬(또는 복원된 양자화된 참조 베이스 메쉬)를 입력으로 받아, 두 메쉬 간의 모션 벡터를 계산하고 그 값을 인코딩할 수 있다. 또한, 모션 벡터 인코더(813)는 이전에 인코딩/디코딩 된 모션 벡터를 예측자로 사용하여 연결 정보 기반의 예측을 수행하고, 현재 모션 벡터에서 예측 모션 벡터를 뺀 잔차 모션 벡터를 인코딩할 수 있다. 인코딩을 통해 생성된 모션 벡터 비트스트림은 멀티플렉서(823)로 전송된다.
베이스 메쉬 복원부(815)는 스태틱 메쉬 인코더(814)에서 인코딩된 베이스 메쉬 또는 모션 벡터 인코더(813)에서 인코딩된 모션 벡터를 입력받아 복원된 베이스 메쉬(reconstructed base mesh)를 생성할수 있다. 예를 들어, 베이스 메쉬 복원부(815)는 스태틱 메쉬 인코더(814)에서 인코딩된 베이스 메쉬에 대해 스태틱 메쉬 디코딩을 수행하여 베이스 메쉬를 복원할 수 있다. 이때, 스태틱 메쉬 디코딩 전에 양자화를 적용하고, 스태틱 메쉬 디코딩 후에 역양자화를 적용할 수 있다. 다른 예로, 베이스 메쉬 복원부(815)는 복원된 양자화된 참조 베이스 메쉬와 모션 벡터 인코더(813)에서 인코딩된 모션 벡터에 기초하여 베이스 메쉬를 복원할 수 있다. 복원된 베이스 메쉬는 디스플레이스먼트 계산부(816)와 메쉬 복원부(820)으로 출력된다.
디스플레이스먼트 계산부(816)는 복원된 베이스 메쉬에 대해서 메쉬 세분화를 수행할 수 있다. 디스플레이스먼트 계산부(816)는 세분화된 복원된 베이스 메쉬와 프리-프로세서(811)에서 생성된 핏팅된 서브디비전(또는 세분화)된 메쉬 간의 정점 위치 차이 값인 디스플레이스먼트 벡터(displacement vector)를 계산할 수 있다. 이때, 세분화된 메쉬의 정점 개수만큼 디스플레이스먼트 벡터가 계산될 수 있다. 디스플레이스먼트 계산부(816)에서는 3차원 데카르트(Cartesian) 좌표계에서 계산된 디스플레이스먼트 벡터를 각 정점의 노말 (Normal, 법선) 벡터를 기반으로 한 Local 좌표계로 변환할 수 있다.
디스플레이스먼트 벡터 비디오 생성부(817)는 리니어 리프팅부, 양자화기, 및 이미지 패킹부를 포함할 수 있다. 즉, 디스플레이스먼트 벡터 비디오 생성부(817)에서 리니어 리프팅부는 효과적인 인코딩을 위해 디스플레이스먼트 벡터를 변환 (Transform)할 수 있다. 변환은 실시예들에 따라 Lifting 변환, Wavelet 변환 등이 수행될 수 있다. 또한 변환된 디스플레이스먼트 벡터 값, 곧 변환 계수에 대해 양자화기에서 양자화를 수행할 수 있다. 이때, 변환 계수의 각 축마다 다른 양자화 파라미터를 적용할 수 있으며, 인코더/디코더의 약속에 의해 양자화 파라미터를 유도할 수 있다. 변환 및 양자화를 거친 디스플레이스먼트 벡터 정보들은 이미지 패킹부에서 2D 이미지로 패킹 (Packing)될 수 있다. 디스플레이스먼트 벡터 비디오 생성부(817)는 매 프레임마다 패킹된 2D 이미지들을 묶어 디스플레이스먼트 벡터 비디오를 생성할 수 있고, 디스플레이스먼트 벡터 비디오는 입력 메쉬의 GoF (Group of Frame) 단위마다 생성될 수 있다.
디스플레이스먼트 벡터 비디오 인코더(818)는 생성된 디스플레이스먼트 벡터 비디오를 비디오 압축 코덱을 이용하여 인코딩할 수 있다. 생성된 디스플레이스먼트 벡터 비디오 비트스트림은 멀티플렉서(823)로 전송된다.
디스플레이스먼트 벡터 복원부(819)는 비디오 디코더, 이미지 언패킹부, 역양자화기, 역 리니어 리프팅부를 포함할 수 있다. 즉, 디스플레이스먼트 벡터 복원부(819)는 인코딩된 디스플레이스먼트 벡터에 대해 비디오 디코더에서 디코딩을 수행하고, 이미지 언패킹부에서 이미지 언패킹을 수행하며, 역양자화기에서 역양자화를 수행한 후 역 리니어 리프팅부에서 역변환을 수행하여 디스플레이스먼트 벡터를 복원한다. 복원된 디스플레이스먼트 벡터는 메쉬 복원부(820)으로 출력된다. 메쉬 복원부(820)는 베이스 메쉬 복원부(815)에서 복원된 베이스 메쉬와 디스플레이스먼트 벡터 복원부(819)에서 복원된 디스플레이스먼트 벡터를 기반으로 변형된 메쉬를 복원한다. 복원된 메쉬(또는 복원된 변형된 메쉬라 함)는 복원된 정점, 정점 간 연결 정보, 텍스처 좌표 및 텍스처 좌표 간 연결 정보 등을 갖고 있다.
텍스처 맵 비디오 생성부(821)는 원본 메쉬의 텍스처 맵(또는 어트리뷰트 맵이라 함)과 메쉬 복원부(820)에서 출력되는 복원된 변형된 메쉬를 기반으로 텍스처 맵을 재생성할 수 있다. 실시예들에 따르면, 텍스처 맵 비디오 생성부(821)는 복원된 변형된 메쉬의 텍스처 좌표에 대해 원본 메쉬의 텍스처 맵이 갖고 있는 정점 별 색상 정보를 할당할 수 있다. 실시예들에 따르면, 텍스처 맵 비디오 생성부(821)는 매 프레임마다 재생성된 텍스처 맵들을 GoF 단위마다 묶여 텍스처 맵 비디오를 생성할 수 있다.
생성된 텍스처 맵 비디오는 텍스처 맵 비디오 인코더(822)의 비디오 압축 코덱을 이용하여 인코딩될 수 있다. 인코딩을 통해 생성된 텍스처 맵 비디오 비트스트림은 멀티플렉서(823)로 전송된다.
멀티플렉서(823)는 모션 벡터 비트스트림(예, 인터 인코딩시), 베이스 메쉬 비트스트림(예, 인트라 인코딩시), 디스플레이스먼트 벡터 비트스트림 및 텍스처 맵 비트스트림을 하나의 비트스트림으로 멀티플렉싱한다. 하나의 비트스트림은 송신부(824)를 통해 수신단으로 전송될 수 있다. 또는 모션 벡터 비트스트림, 베이스 메쉬 비트스트림, 디스플레이스먼트 벡터 비트스트림 및 텍스처 맵 비트스트림은 하나 이상의 트랙 데이터로 파일이 생성되거나 세그먼트로 인캡슐레이션 되어 송신부(824)를 통해 수신단에 전송될 수 있다.
도 13을 참조하면, 송신 장치(인코더)는 인트라 프레임 혹은 인터 프레임 방식으로 메쉬를 인코딩할 수 있다. 인트라 인코딩에 따른 송신 장치는 베이스 메쉬, 디스플레이스먼트 벡터(또는 디스플레이스먼트라 함), 텍스쳐 맵(또는 어트리뷰트 맵이라 함)을 생성할 수 있다. 인터 인코딩에 따른 송신 장치는 모션 벡터(또는 모션이라 함), 디스플레이스먼트 벡터(또는 디스플레이스먼트라 함), 텍스쳐 맵(또는 어트리뷰트 맵이라 함)을 생성할 수 있다. 데이터 입력부로부터 획득된 텍스쳐 맵은 복원된 메쉬에 기초하여 생성되고 인코딩된다. 디스플레이스먼트는 베이스 메쉬 및 분할(또는 세분화 또는 서브디비전)된 메쉬 간 정점 위치 차이를 통해 생성되고 인코딩된다. 좀 더 구체적으로, 디스플레이스먼트는 핏팅된 서브디비전된 메쉬 및 서브디비전된 복원된 베이스 메쉬 간 위치 차이 즉, 두 메쉬 간 정점 위치 차이값이다. 그리고, 베이스 메쉬는 원본 메쉬를 프리-프로세싱을 통해 단순화하고 인코딩하여 생성된다. 모션은 이전 프레임의 참조 베이스 메쉬에 기초하여 현재 프레임의 메쉬에 대한 모션 벡터로 생성된다.
도 14는 실시예들에 따른 메쉬 데이터 수신 장치를 나타낸다.
도 14는 도 1의 수신 장치(110) 또는 메쉬 비디오 디코더(113), 도 11 또는 도 12의 디코더, 및/또는 그에 대응하는 수신 디코딩 장치에 대응한다. 도 14의 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응한다. 도 14의 수신(디코딩) 동작은 도 13의 송신(인코딩) 동작의 대응하는 과정의 역과정을 따를 수 있다.
수신부(910)로 수신된 메쉬 데이터의 비트스트림은 파일/세그먼트 디캡슐레이션된 후 디멀티플렉서(911)에서 압축된 모션 벡터 비트스트림(예, 인터 디코딩) 혹은 베이스 메쉬 비트스트림(예, 인트라 디코딩), 디스플레이스먼트 벡터 비트스트림, 그리고 텍스처 맵 비트스트림으로 디멀티플렉싱된다. 예를 들어, 현재 메쉬가 화면간 인코딩(즉, 인터 인코딩)이 적용된 경우라면, 모션 벡터 비트스트림이 수신되어 역다중화된 후 스위칭부(912)를 통해 모션 벡터 디코더(913)로 출력된다. 다른 예로, 현재 메쉬가 화면내 인코딩(즉, 인트라 인코딩)이 적용된 경우라면, 베이스 메쉬 비트스트림이 수신되어 역다중화된 후 스위칭부(912)를 통해 스태틱 메쉬 디코더(914)로 출력된다. 여기서, 모션 벡터 디코더(913)는 모션 디코더로 지칭될 수 있다.
실시예들에 따르면, 프레임 헤더 정보에 따라 현재 메쉬가 화면간 인코딩이 적용된 경우라면, 모션 벡터 디코더(913)는 모션 벡터 비트스트림에 대해 디코딩을 수행할 수 있다. 실시예들에 따르면, 모션 벡터 디코더(913)는 이전의 디코딩된 모션 벡터를 예측자로 사용하여 비트스트림으로부터 디코딩된 잔차 모션 벡터와 더하여 최종 모션 벡터를 복원할 수 있다.
실시예들에 따르면, 프레임 헤더 정보에 따라 현재 메쉬가 화면내 인코딩이 적용된 경우라면, 스태틱 메쉬 디코더(914)는 베이스 메쉬 비트스트림을 디코딩하여 베이스 메쉬의 연결 정보, 정점 지오메트리 정보, 텍스처 좌표, 노말 정보 등을 복원할 수 있다.
실시예들에 따르면, 베이스 메쉬 복원부(915)는 디코딩된 모션 벡터 또는 디코딩된 베이스 메쉬를 기반으로 현재 베이스 메쉬를 복원할 수 있다. 예를 들어, 현재 메쉬가 화면간 인코딩이 적용된 경우라면, 베이스 메쉬 복원부(915)에서는 참조 베이스 메쉬에 디코딩된 모션 벡터를 더한 후 역양자화를 수행하여 복원된 베이스 메쉬를 생성할 수 있다. 다른 예로, 현재 메쉬가 화면내 인코딩이 적용된 경우라면, 베이스 메쉬 복원부(915)는 스태틱 메쉬 디코더(914)를 통해 디코딩된 베이스 메쉬에 대해 역양자화를 수행하여 복원된 베이스 메쉬를 생성할 수 있다.
실시예들에 따르면, 디스플레이스먼트 벡터 비디오 디코더(917)는 디스플레이스먼트 벡터 비트스트림을 비디오 비트스트림으로서 비디오 코덱을 이용하여 디코딩할 수 있다.
실시예들에 따르면, 디스플레이스먼트 벡터 복원부(918)는 디코딩된 디스플레이스먼트 벡터 비디오로부터 디스플레이스먼트 벡터 변환 계수를 추출하고, 추출된 디스플레이스먼트 벡터 변환 계수에 역양자화와 역변환 과정을 적용하여 디스플레이스먼트 벡터를 복원한다. 이를 위해 디스플레이스먼트 벡터 복원부(918)는 이미지 언패킹부, 역양자화기, 및 역 리니어 리프팅부를 포함할 수 있다. 만일 복원된 디스플레이스먼트 벡터가 Local 좌표계의 값이라면 Cartesian 좌표계로 역변환하는 과정이 수행될 수 있다.
메쉬 복원부(916)에서는 복원된 베이스 메쉬에 대해 세분화를 수행하여 추가적인 정점을 생성할 수 있다. 세분화를 통해, 추가된 정점을 포함하는 정점 연결 정보, 텍스처 좌표 및 텍스처 좌표의 연결 정보 등을 생성할 수 있다. 이때, 메쉬 복원부(916)는 세분화된 복원 베이스 메쉬를 복원된 디스플레이스먼트 벡터와 결합하여 최종 복원된 메쉬(또는 복원된 변형된 메쉬라 함)를 생성할 수 있다.
실시예들에 따르면, 텍스처 맵 비디오 디코더(919)는 텍스처 맵 비트스트림을 비디오 비트스트림으로서 비디오 코덱을 이용하여 디코딩하여 텍스처 맵을 복원할 수 있다. 복원된 텍스처 맵은 복원된 메쉬가 담고 있는 각 정점에 대한 색상 정보를 갖고 있으며, 각 정점의 텍스처 좌표를 이용하여 텍스처 맵으로부터 해당 정점의 색상값을 가져올 수 있다.
실시예들에 따르면, 메쉬 복원부(916)에서 복원된 메쉬와 텍스처 맵 비디오 디코더(919)에서 복원된 텍스처 맵은 메쉬 데이터 렌더러(920)에서 렌더링 과정을 통해 사용자에게 보여진다.
도 14를 참조하면, 수신 장치(디코더)는 인트라 프레임 혹은 인터 프레임 방식으로 메쉬를 디코딩할 수 있다. 인트라 디코딩에 따른 수신 장치는 베이스 메쉬, 디스플레이스먼트 벡터(또는 디스플레이스먼트라 함), 텍스쳐 맵(또는 어트리뷰트 맵이라 함)을 수신하고, 복원 메쉬 및 복원 텍스쳐 맵을 기반으로 메쉬 데이터를 렌더링할 수 있다. 인터 디코딩에 따른 수신 장치는 모션 벡터(또는 모션이라 함), 디스플레이스먼트 벡터(또는 디스플레이스먼트라 함), 텍스쳐 맵(또는 어트리뷰트 맵이라 함)을 수신하고, 복원 메쉬 및 복원 텍스쳐 맵을 기반으로 메쉬 데이터를 렌더링할 수 있다.
실시예들에 따른 메쉬 데이터 송신 장치 및 방법은 메쉬 데이터를 프리-프로세싱하고, 프리-프로세싱된 메쉬 데이터를 인코딩하며, 인코딩된 메쉬 데이터를 포함하는 비트스트림을 송신할 수 있다. 실시예들에 따른 포인트 메쉬 데이터 수신 장치 및 방법은 메쉬 데이터를 포함하는 비트스트림을 수신하여 메쉬 데이터를 디코딩할 수 있다. 실시예들에 따른 메쉬 데이터 송수신 방법/장치는 실시예들에 따른 방법/장치로 줄여서 지칭될 수 있다. 실시예들에 따른 메쉬 데이터 송수신 방법/장치는 3D 데이터 송수신 방법/장치 또는 포인트 클라우드 데이터 송수신 방법/장치로도 지칭될 수 있다.
전술한 바와 같이, V-Mesh 방법은 인코딩 과정에서 생성된 변위 (Displacement) 정보를 비디오 형태로 변환한 후 기존의 2D 비디오 코덱을 이용하여 압축한다. 그리고, 압축된 변위 정보는 2D 비디오 코덱의 역과정을 수행하여 복원한다. 좀 더 구체적으로, V-DMC 인코더(또는 인코더 또는 인코딩 장치라 함)에서는 베이스 메쉬를 복원한 메쉬와 프리-프로세싱 단계에서 피팅된 메쉬 간의 차이인 변위 벡터를 계산하고, 계산된 canonical 좌표계(즉, x, y, z 형태)의 변위 벡터를 로컬 좌표계(즉, 노말(normal), 탄젠셜(tangential), 바이-탄젠셜(bi-tangential) 형태)의 변위 벡터로 변환한 후, 로컬 좌표계의 변위 벡터에 대해 리프팅 변환 및 양자화를 수행하여 변위벡터 비트스트림으로 인코딩하는 과정을 거칠 수 있다. 이 경우, V-DMC 디코더(또는 디코더 또는 디코딩 장치라 함)에서는 V-DMC 인코더의 역과정을 수행하여 변위 벡터를 복원하게 된다. 즉, 변위벡터 정보는 효율적인 압축을 위해 Canonical 좌표계의 x,y,z 형태 그대로 압축하기 보다는, 로컬 좌표계의 normal, tangential, bi-tangential 형태로 변환 후 리프팅 변환 및 양자화를 수행하고 0, 1, 2 와 같은 단순한 변위벡터계수 형태로 인코딩하여 전송하는 방식을 취하고 있다. 이때 인코더에서는 normal, tangential, bi-tangential 3가지 성분들에 대한 좌표 변환 계산을 하고, 상기와 같은 일련의 변위벡터 인코딩 과정을 각 성분들에 대해 전부 수행하게 되는데, 이는 압축 효율 및 전송 속도면에 있어 비효율 적일 수 있다.
본 개시는 보다 효율적인 압축과 전송을 위해, 송신 장치의 인코더에서는 변위벡터의 노말 성분과 탄젠셜 성분에 대해서만 패킹하고 바이-탄젠셜 성분에 대해서는 패킹을 스킵(skip) 하여 인코딩을 수행 및 비트스트림으로 전송하고, 수신 장치의 디코더에서는 전송받은 노말, 탄젠셜 2가지 성분을 이용하여 바이-탄젠셜 성분을 계산해내고 이를 기반으로 최종 변위벡터로 디코딩하는 방법을 제안한다.
즉, 본 개시에서 송신 장치의 인코더는 로컬 좌표계로 변환된 노말, 탄젠셜, 바이-탄젠셜 성분 중 바이-탄젠셜 성분을 제외한 노말 성분과 탄젠셜 성분만을 인코딩하여 전송하고, 수신 장치의 디코더는 수신된 노말 성분과 탄젠셜 성분을 이용하여 바이-탄젠셜 성분까지 디코딩하는 방법을 제안한다. 또한, 본 개시는 여러가지 이미지 패킹 포맷에 따른 패킹 방법과 시그널링 방법에 대해서도 제안한다. 이와 같이, 기존의 노말, 탄젠셜, 바이-탄젠셜 성분을 모두 전송하는 것 대비 2가지 성분만 압축하여 전송함으로써 효율적인 비트 절감 효과와 이에 따른 더 나은 화질의 메쉬 데이터를 얻을 수 있다.
이와 같이 본 개시는 기존 2D 비디오 코덱을 기반으로 3D 다이나믹 메쉬 데이터를 압축하는 방법인 V-DMC에 관한 것으로, 변위벡터 변환 및 양자화 단계에서 변위벡터 단위로 인코딩/디코딩 하는 장치 및 방법 그리고, 이와 관련된 신택스 및 시멘틱스(syntax 및 semantics) 정보에 대해 설명한다. 특히, 본 개시는 변위 벡터의 노말, 탄젠셜, 바이-탄젠셜 3가지 성분 중 노말, 탄젠셜 2가지 성분만을 패킹하여 인코딩 및 디코딩하는 방법, 변위 벡터 비디오 포맷에 따른 2D 이미지 패킹 방법, 변위 벡터의 바이-탄젠셜 성분에 대한 패킹 스킵 여부 및 이미지 패킹 포맷에 따른 시그널링 방법에 대해 설명한다. 또한 이를 적용한 송신기와 수신기의 동작에 대해 설명한다.
본 개시에서 지오메트리 정보(또는 지오메트리 또는 지오메트리 데이터라 함)는 메쉬를 구성하는 요소들 중 하나로서, 정점(vertex or point), 엣지(edge), 폴리곤 등을 포함한다. 여기서, 정점은 3D 공간에서의 위치를 정의하고, 엣지는 정점 간의 연결 정보를 나타내며, 폴리곤은 엣지와 정점의 조합으로 메쉬의 표면을 형성한다. 즉, 메쉬를 구성하는 각 정점은 3차원 공간에서의 위치를 나타내며, 예를 들어 x, y, z 좌표(즉, canonical 좌표계)로 표현된다. 그리고, 폴리곤은 삼각형이거나 사각형일 수 있다. 즉, 지오메트리는 3D 모델의 뼈대를 형성하며, 이를 통해 모델의 형태를 정의하고 렌더링될 때 시각적으로 표현된다.
본 개시에서 버텍스, 정점, 포인트는 동일한 의미로 사용될 수 있다. 즉, 정점은 3D 공간에서의 좌표를 가지고 있으며, 복수의 정점들 간의 연결을 통해 삼각형 또는 사각형의 폴리곤을 생성할 수 있다, 또한 본 개시에서 지칭하는 V-DMC는 이하 V-mesh라고도 지칭할 수 있으며, 두 용어는 동일한 의미로 사용되는 표현이다.
본 개시에서 변위 정보는 세분화된 메쉬(또는 서브 메쉬라 칭함)를 기반으로 획득될 수 있다. 즉, 입력 메쉬와 서브 메쉬가 서로 유사해지도록 핏팅 과정을 수행하여 생성된 핏팅된 서브디비전 메쉬와 복원된 베이스 메쉬에 대해 세분화가 수행되어 생성된 세분화된 복원 베이스 메쉬의 각 정점 위치 차이를 계산한다. 본 개시는 이 정점 위치 차이 값을 변위 벡터라 칭한다. 본 개시에서 변위 벡터는 변위(displacement) 또는 변위 정보와 동일한 의미로 혼용되어 사용될 수 있다. 그리고, 변위 비디오는 변위 벡터 비디오 또는 변위 벡터 변환 계수 비디오와 같은 의미로 혼용되어 사용될 수 있으며, 변위 벡터는 변위 벡터 변환 계수 또는 변위 벡터 계수와 동일한 의미로 혼용되어 사용될 수 있다.
도 15는 실시예들에 따른 송신 장치를 나타낸다. 도 15의 송신 장치는 메쉬 데이터 송신 장치 또는 인코더 또는 송신 장치의 인코더 또는 V-Mesh 인코더 또는 동적 메쉬 인코더로 호칭될 수 있다.
도 15는 도 1의 송신 장치(100) 또는 메쉬 비디오 인코더(102), 도 2, 도 6, 또는 도 7의 인코더(프리 프로세서 및 인코더), 도 13의 송신 장치 및/또는 그에 대응하는 송신 인코딩 장치에 대응한다. 도 15의 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응한다. 도 15에서 각 블록의 수행 순서는 변경될 수 있으며, 일부 블록은 생략될 수 있고, 일부 블록은 새로 추가될 수 있다.
본 개시에서 V-Mesh 압축 기술을 이용한 다이나믹 메쉬 데이터의 압축 및 전송을 위한 송신단의 동작 과정은 도 15와 같을 수 있다. 도 15의 송신 장치는 인트라 프레임 인코딩(또는 인트라 인코딩 또는 화면 내 인코딩이라 함) 프로세스 및/또는 인터 프레임 인코딩(또는 인터 인코딩 또는 화면간 인코딩이라 함) 프로세스를 모두 지원할 수 있다.
도 15에서 메쉬 단순화부(11011)는 입력되는 원본 메쉬를 메쉬 간략화 알고리즘을 통해 단순화하여 베이스 메쉬(또는 단순화된 베이스 메쉬 또는 단순화된 메쉬라 함)를 생성한다. 이때, 메쉬 단순화는 메쉬를 구성하는 타겟 정점 개수 또는 타겟 다각형 개수를 기준으로 수행할 수 있다. 예를 들어, 원본 메쉬를 단순화하는 메쉬 간략화 알고리즘으로 데시메이션 등의 방법이 사용될 수 있다. 즉, 데시메이션 방법은 원본 메쉬에서 어떠한 기준점을 갖고 제거할 정점을 선택한 후, 선택된 정점 그리고 선택된 정점과 연결된 삼각형을 제거하는 과정일 수 있다.
즉, 메쉬 단순화부(11011)는 입력 메쉬를 타겟 정점 개수 또는 타겟 페이스(face) 개수로 단순화를 수행할 수 있다. 이때, 단순화 과정은 triangle collapse, edge collapse 등 다양한 방법을 통해 수행될 수 있다.
실시예들에 따르면, 메쉬 단순화부(11011)에서 단순화된 베이스 메쉬는 메쉬 파라미터라이제션(parameerization)부(11012)와 메쉬 세분화부(11018)로 제공된다.
상기 메쉬 파라미터라이제션부(11012)는 단순화된 메쉬(Decimated mesh)에 대해 3D 곡면을 텍스쳐 도메인(Texture domain)으로 매핑하는 과정을 수행한다. 즉, 상기 메쉬 파라미터라이제션부(11012)는 입력 메쉬의 텍스처 좌표 및 텍스처 연결정보를 생성한다. 일 실시예로, 메쉬 파라미터라이제션부(11012)는 UV아틀라스 툴(UV Atlas tool)을 사용하여 파라미터라이제이션(Parameterization)을 수행할 수 있다. 이 과정을 통해 단순화된 메쉬(Decimated mesh)의 각 정점들이 2D 이미지 상의 어느 위치로 매핑될 수 있는지 매핑 정보가 생성된다. 매핑 정보는 텍스처 좌표로 표현되어 저장되며, 이 과정을 통해 최종 베이스 메쉬(Base mesh)가 생성된다. 즉, 메쉬 파라미터라이제션부(11012)는 입력 메쉬(즉, 단순화된 메쉬 또는 단순화된 베이스 메쉬)의 정점당 텍스처 좌표(UV 좌표) 및 텍스처 연결정보를 생성하는 파라미터라이제이션(parameterization)을 수행한다.
상기 파라미터라이제션부(11012)에서 생성된 최종 베이스 메쉬(또는 텍스처 맵을 갖는 베이스 메쉬라 함)는 메쉬 양자화부(11013)로 입력되어 양자화된다. 실시예들에 따르면, 메쉬 양자화부(11013)는 부동 소수점 형태의 메쉬 정보들(예, 지오메트리 정보(x,y,z) 또는/그리고 텍스처 좌표(u,v), 노말 정보(nx, ny, nz) 등)을 고정 소수점 형태로 양자화하는 작업을 수행할 수 있다. 즉, 메쉬 양자화부(11013)는 베이스 메쉬의 정점 좌표 및 텍스쳐 좌표를 양자화할 수 있다. 실시예들에 따라 특정 성분에 대한 양자화는 생략될 수 있다.
상기 메쉬 세분화부(11018)는 메쉬 단순화부(11011)에서 단순화된 베이스 메쉬를 세분화한다. 즉, 메쉬 세분화부(11018)는 베이스 메쉬에 대해 메쉬 세분화 (Subdivision)를 수행하여 추가적인 정점을 생성할 수 있다. 세분화 방법에 따라 추가된 정점들을 포함하는 정점 연결 정보, 텍스처 좌표 및 텍스처 좌표의 연결 정보들이 생성될 수 있다. 이때, 세분화 방법에 따라 지오메트리 정보 연결정보, 텍스처좌표 연결정보 및 텍스처 좌표에 대해 암시적으로 유도하여 생성할 수 있다. 실시예들에 따르면, 메쉬 세분화부(11018)는 mid-edge, Loop, Catmul&Clark 등의 방법을 통해 세분화를 수행할 수 있다.
실시예들에 따르면, 메쉬 피팅부(11019)는 메쉬 세분화부(11018)에서 세분화된 메쉬가 원본 메쉬와 유사해지도록 정점 위치 조정을 통해 핏팅을 수행하여, 핏팅된 서브디비전(세분화)된 메쉬 (Fitted subdivided mesh)를 생성할 수 있다.
본 개시는 메쉬 단순화부(11011), 메쉬 파라미터라이제션부(11012), 메쉬 세분화부(11018), 및 메쉬 피팅부(11019)를 포함하여 프리-프로세서라 지칭할 수 있다. 실시예들에 따르면, 프리-프로세서는 변위 벡터 계산부(11020)를 더 포함할 수 있다.
실시예들에 따르면, 메쉬 양자화부(11013)에서 양자화된 베이스 메쉬는 스위칭부(11014)를 통해 모션 벡터 인코더(11015) 또는 스태틱 메쉬 인코더(11016)로 출력될 수 있다.
실시예들에 따르면, 베이스 메쉬는 해당 메쉬 프레임에 대해 화면간 인코딩 (Inter encoding)을 수행하는 경우 스위칭부(11014)를 통해 모션 벡터 인코더(11015)로 출력되고, 해당 메쉬 프레임에 대해 화면내 인코딩(Intra encoding)을 수행하는 경우 스위칭부(11014)를 통해 스태틱 메쉬 인코더(11016)로 출력된다. 모션 벡터 인코더(11015)는 모션 인코더로 지칭될 수 있다.
예를 들어, 해당 메쉬 프레임에 대해 화면내 인코딩(Intra encoding or intra frame encoding)을 수행하는 경우, 베이스 메쉬는 스태틱 메쉬 인코더(11016)를 통해 압축될 수 있다. 이 경우 베이스 메쉬의 연결 정보, 정점 지오메트리 정보, 정점 텍스처 정보, 노말 정보 등에 대해 인코딩이 수행될 수 있다. 즉, 메쉬의 정점 좌표, 정점 연결 정보, 텍스처 좌표, 텍스처 연결 정보 등이 스태틱 메쉬 인코더(11016)에서 인코딩될 수 있다. 인코딩을 통해 생성된 베이스 메쉬 비트스트림은 멀티플렉서(도시되지 않음)로 전송된다.
다른 예로, 해당 메쉬 프레임에 대해 화면간 인코딩(Inter encoding or inter frame encoding)을 수행하는 경우, 모션 벡터 인코더(11015)는 베이스 메쉬와 참조 복원 베이스 메쉬(또는 복원된 양자화된 참조 베이스 메쉬)를 입력으로 받아, 두 메쉬 간의 모션 벡터를 계산하고 그 값을 인코딩할 수 있다. 또한, 모션 벡터 인코더(11015)는 이전에 인코딩/디코딩 된 모션 벡터를 예측자로 사용하여 연결 정보 기반의 예측을 수행하고, 현재 모션 벡터에서 예측 모션 벡터를 뺀 차분 모션 벡터(또는 잔차 모션 벡터라 함)를 엔트로피 인코딩할 수 있다. 인코딩을 통해 생성된 모션 벡터 비트스트림은 베이스 메쉬 비트스트림으로서 멀티플렉서(도시되지 않음)로 전송된다. 즉, 화면 내 인코딩일 경우 스태틱 메쉬 비트스트림이 베이스 메쉬 비트스트림으로서 멀티플렉서로 입력되고, 화면 간 인코딩일 경우 모션 벡터 비트스트림이 베이스 메쉬 비트스트림으로서 멀티플렉서로 입력된다.
도 15에서 베이스 메쉬 디코더(11017)는 스태틱 메쉬 인코더(11016)에서 인코딩된 베이스 메쉬 또는 모션 벡터 인코더(11015)에서 인코딩된 모션 벡터를 입력받아 복원된 베이스 메쉬(reconstructed base mesh)를 생성할수 있다. 베이스 메쉬 디코더(11017)는 현재 메쉬의 인코딩 타입(화면간 인코딩 또는 화면내 인코딩)에 따라 베이스 메쉬의 복원을 수행한다. 예를 들어, 베이스 메쉬 디코더(11017)는 스태틱 메쉬 인코더(11016)에서 인코딩된 베이스 메쉬에 대해 스태틱 메쉬 디코딩을 수행하여 베이스 메쉬를 복원할 수 있다. 이때, 스태틱 메쉬 디코딩 전에 양자화를 적용하고, 스태틱 메쉬 디코딩 후에 역양자화를 적용할 수 있다. 즉, 화면내 인코딩이 수행되는 경우 메쉬 양자화부(11013)를 통해 양자화된 베이스 메쉬에 대해 역양자화를 수행하여 현재 베이스 메쉬를 복원할 수 있다. 다른 예로, 베이스 메쉬 디코더(11017)는 복원된 양자화된 참조 베이스 메쉬와 모션 벡터 인코더(11015)에서 인코딩된 모션 벡터에 기초하여 베이스 메쉬를 복원할 수 있다. 즉, 화면간 인코딩이 수행되는 경우, 모션 벡터 디코딩 방법으로 모션 벡터를 디코딩한 후 참조 복원 베이스 메쉬에 디코딩된 모션 벡터를 적용하여(즉, 더하여) 현재 베이스 메쉬를 생성할 수 있다. 이때, 모션 벡터가 양자화 되지 않는 경우 모션 벡터 복원 과정이 생략되고 모션 벡터 인코더(11015)에서 계산된 모션 벡터를 사용하여 현재 베이스 메쉬를 복원할 수 있다. 복원된 베이스 메쉬는 변위 벡터 계산부(11020)와 메쉬 역양자화부(11024)로 출력된다.
실시예들에 따르면, 변위 벡터 계산부(11020)는 복원된 베이스 메쉬에 대해서 메쉬 세분화를 수행할 수 있다. 또한, 변위 벡터 계산부(11020)는 세분화된 복원된 베이스 메쉬와 메쉬 피팅부(11019)에서 생성된 핏팅된 서브디비전(또는 세분화)된 메쉬 간의 정점 위치 차이 값인 변위 벡터(displacement vector)를 계산할 수 있다. 이때, 세분화된 메쉬의 정점 개수만큼 변위 벡터가 계산될 수 있다. 즉, 변위 벡터 계산부(11020)를 통해 세분화된 메쉬의 정점 개수의 변위 벡터가 계산될 수 있다.
실시예들에 따르면, 변위 벡터 좌표계 변환부(11021)에서는 3차원 데카르트(Cartesian) 좌표계(즉, (x, y, z) 공간)(또는 canonical 좌표계라 함)에서 계산된 정점 변위 벡터를 그대로 출력하거나 또는 각 정점의 노말 (Normal, 법선) 벡터를 기반으로 한 Local 좌표계(즉, normal, tangential, bi-tangential 좌표계)로 변환할 수 있다. 이때, 노말 벡터는 세분화된 각 정점마다 주변 정점의 지오메트리 정보 및 연결정보를 기반으로 계산될 수 있다.
상기 변위 벡터 좌표계 변환부(11021)에서 변위 벡터 좌표계의 변환 여부는 인코더(즉, 송신 장치)/디코더(즉, 수신 장치) 약속에 의해 결정될 수 있고, 또는 변위벡터 좌표계 변환여부를 식별할 수 있는 정보인 변위벡터 좌표계 변환 여부 플래그 (asps_vmc_ext_displacement_coordinate_system)를 시그널링 정보(예, 아틀라스 시퀀스 파라미터 세트, ASPS)에 시그널링하여 수신 장치로 전송할 수도 있다. 예를 들어, 변위벡터 좌표계 변환 여부 플래그 (asps_vmc_ext_displacement_coordinate_system) 신택스(또는 필드라 함)의 값이 0이면 canonical 좌표계를 그대로 사용하고, 1이면 local 좌표계로 변환이 이루어진 것을 지시할 수 있다.
실시예들에 따르면, 변위 벡터 좌표계 변환부(11021)에서 canocial 좌표계의 변위 벡터 또는 로컬 좌표계로 변환된 변위 벡터는 변위 벡터 인코더(11022)에서 변위 벡터 비트스트림(또는 변위 벡터 비디오 비트스트림이라 함)으로 인코딩된다. 일 실시예로, 변위 벡터 인코더(11022)는 H.264, HEVC, VVC 등의 2D 비디오 인코더를 이용하여 canocial 좌표계의 변위 벡터 또는 로컬 좌표계로 변환된 변위 벡터를 변위 벡터 비트스트림으로 인코딩할 수 있다.
즉, 변위 벡터 인코더(11022)는 변위 벡터 또는 변위 벡터 계수(또는 변위 벡터 변환 계수라 함)에 대해 인코딩을 수행할 수 있다. 본 개시에서 변위 벡터 인코더(11022)는 비디오 코덱 기반 인코더, 제로 런 길이 인코더, 산술 인코더 등을 통해 인코딩을 수행할 수 있다. 예를 들어, 인코딩 방법이 비디오 코덱 기반 인코딩일 경우, 변위 벡터 인코더(11022)는 변위 벡터 또는 변위 벡터 계수를 프레임에 패킹하여 인코딩할 수 있다. 즉, 변위 벡터 인코더(11022)에서 변위 벡터 계수들은 2D 이미지로 패킹 (Packing) 후 2D 비디오 코덱(즉, 비디오 압축 코덱)을 이용하여 인코딩되거나 또는 제로 런-길이(zero run-length) 인코딩되거나 또는 산술 인코딩되어 변위 벡터 비디오 비트스트림으로 생성될 수 있다.
실시예들에 따르면, 변위 벡터 인코더(11022)에서 인코딩되어 생성된 변위 벡터 비디오 비트스트림은 멀티플렉서(도시되지 않음)로 전송된다. 실시예들에 따르면, 변위 벡터 인코더(11022)의 인코딩 선택 방법은 인코더(즉, 송신측)/디코더(즉, 수신측)에서 약속된 변위 벡터 인코더를 사용할 수도 있고, 또는 송신측의 인코더에서 변위 벡터의 특성을 분석하여 선택된 변위 벡터 인코더의 종류를 수신측의 디코더에 전송할 수도 있다.
실시예들에 따르면, 변위 벡터 복원부(11023)는 변위 벡터 인코더(11022)에서 인코딩된 변위 벡터 또는 변위 벡터 계수에 대해 변위 벡터 인코딩의 역과정을 수행하여 변위 벡터를 복원할 수 있다. 즉, 변위 벡터 복원부(11023)는 변위 벡터를 인코딩하는 방법에 따라 예를 들어, 비디오 코덱 기반으로 인코딩된 경우, 변위 벡터 역패킹(또는 언패킹이라 함)을 수행할 수 있다. 또한, 변위 벡터 복원부(11023)는 변위 벡터 인코딩 과정에서 양자화 및 변환 과정 수행 여부에 따라 역양자화, 역변환 과정 등을 추가로 수행할 수 있다.
실시예들에 따르면, 메쉬 역양자화부(11024)는 복원된 베이스 메쉬의 정점 좌표 또는 텍스쳐 좌표를 양자화의 역과정으로 역양자화할 수 있다. 만일, 메쉬 양자화부(11013)에서 양자화 과정이 생략된다면, 메쉬 역양자화부(11024)에서 역양자화 과정도 생략된다.
실시예들에 따르면, 메쉬 복원부(11025)는 변위 벡터 복원부(11023)에서 출력되는 복원된 변위 벡터와 메쉬 역양자화부(11024)에서 출력되는 복원된 베이스 메쉬(또는 역양자화된 복원된 베이스 메쉬)를 기반으로 메쉬를 복원할 수 있다. 좀 더 구체적으로, 메쉬 복원부(11025)는 메쉬 역양자화부(11024)에서 출력되는 복원 베이스 메쉬에 대해 세분화를 수행하고 변위 벡터 복원부(11023)에서 복원된 변위 벡터를 더하여 복원된 변형된 메쉬(reconstructed deformed mesh)를 생성할 수 있다. 실시예들에 따르면, 메쉬 복원부(11025)에서 복원된 메쉬(또는 복원 메쉬 또는 복원된 변형된 메쉬라 함)는 복원된 정점, 정점 간 연결 정보, 텍스처 좌표 및 텍스처 좌표 간 연결 정보 등을 갖고 있다. 상기 메쉬 복원부(11025)에서 생성된 복원 메쉬(또는 복원된 메쉬 또는 복원된 변형된 메쉬라 함)는 텍스처 맵 생성부(11026)로 제공된다.
실시예들에 따르면, 텍스처 맵 생성부(11026)는 원본 메쉬의 텍스처 맵(또는 어트리뷰트 맵이라 함)과 메쉬 복원부(11025)에서 복원된 메쉬를 기반으로 현재 메쉬의 텍스처맵을 재생성할 수 있다. 즉, 텍스처맵 생성부(11026)는 원본 메쉬의 텍스처맵, 원본 메쉬와 복원된 메쉬 간의 관계를 통해 복원된 메쉬의 텍스처 맵을 생성할 수 있다.
실시예들에 따르면, 텍스처 맵 생성부(11026)는 복원된 베이스 메쉬(또는 복원된 변형된 메쉬)의 텍스처 좌표에 대해 원본 메쉬의 텍스처 맵이 갖고 있는 정점 별 색상 정보를 할당할 수 있다. 실시예들에 따르면, 텍스처 맵 생성부(11026)는 매 프레임마다 재생성된 텍스처 맵들을 GoF 단위마다 묶여 텍스처 맵(또는 텍스처 맵 비디오라 함)를 생성할 수 있다.
상기 텍스쳐 맵 생성부(11026)에서 생성된 텍스처 맵은 텍스처 맵 인코더(11027)에서 인코딩될 수 있다. 예를 들어, 텍스처 맵 인코더(11027)는 2D 비디오 코덱 기반 인코더, 제로 런 길이 인코더, 엔트로피 코딩 기반의 산술 인코더 등을 이용하여 텍스처 맵을 인코딩할 수 있다. 또한, 텍스처 맵 인코더(11027)는 텍스처 맵의 색공간 변환을 더 수행할 수 있다. 그리고, 텍스처 맵 인코딩을 통해 생성된 텍스처 맵 서브스트림(또는 텍스처 맵 비디오 비트스트림이라 함)은 멀티플렉서(도시되지 않음)로 전송된다.
실시예들에 따르면, 텍스처 맵 인코더(11027)의 종류는 비디오 인코더 (예를 들어, VVC, HEVC 등), 엔트로피 코딩 기반의 인코더 등이 존재할 수 있다. 그리고, 텍스처 맵 인코더(11027)의 선택 방법은 인코더(즉, 송신측)/디코더(즉, 수신측)에서 약속된 텍스처 맵 인코더를 사용할 수도 있고, 또는 송신측의 인코더에서 선택된 텍스처 맵 인코더의 종류를 수신측의 디코더에 전송할 수도 있다.
실시예들에 따르면, 멀티플렉서(도시되지 않음)는 입력되는 베이스 메쉬 비트스트림, 변위 벡터 비트스트림, 및 텍스처 맵 비트스트림을 하나의 비트스트림으로 다중화한 후 수신 장치로 전송할 수 있다. 또는 베이스 메쉬 비트스트림, 변위 벡터 비트스트림, 및 텍스처 맵 비트스트림은 파일/세그먼트로 인캡슐레이션되어 수신 장치로 전송 될 수 있다.
실시예들에 따르면, 멀티플렉서에서 다중화된 비트스트림은 네트워크를 통하여 전송될 수 있고, 또는 디지털 저장매체에 저장될 수 있다. 여기서 네트워크는 방송망 및/또는 통신망 등을 포함할 수 있고, 디지털 저장매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장매체를 포함할 수 있다.
이와 같이 V-DMC 인코딩 장치(또는 송신 장치)에서는 원본 메쉬를 단순화하고, 메쉬 파라미터라이제이션 과정을 거쳐 베이스 메쉬를 생성한다. 생성된 베이스 메쉬는 양자화 되고, 인터 프레임인 경우에는 이전 참조 복원 베이스 메쉬로부터 모션 벡터를 계산하여 모션 벡터를 인코딩하며, 인트라 프레임이 경우에는 스태틱 메쉬 인코더를 거쳐 베이스 메쉬 비트 스트림으로 전송된다. 또한, 원본 메쉬로부터 단순화된 메쉬를 세분화 및 피팅하는 과정을 거치고 난 후의 메쉬 데이터와 앞서 인코딩된 메쉬를 복원한 메쉬 데이터를 비교하여 각 정점들의 차이인 변위 벡터를 계산한다. 그리고, 계산된 변위 벡터를 효율적으로 인코딩하기 위해 변위벡터 좌표계를 로컬 좌표계로 변환하고, 변위 벡터 인코더(12022)에서 로컬 좌표계로 변환된 변위 벡터를 변위 벡터 계수로 변환 및 양자화한 후 변위벡터 비트스트림으로 인코딩하여 전송한다.
다음은 변위 벡터 인코더(12022)에서 로컬 좌표계로 변환된 벡터 노말, 탄젠셜, 바이-탄젠셜 성분들 중 노말 성분과 탄젠셜 성분을 변위 벡터 계수로 리프팅 변환 및 양자화하여 인코딩하는 과정 및 비디오 이미지 패킹 포맷별 변위벡터의 컴포넌트 시그널링 방법에 대해 설명하기로 한다. 즉, 각 단계별 수행되는 원리는 아래에 자세히 설명한다.
도 16은 실시예들에 따른 변위 벡터 인코더의 일 예시를 보인 구성 블록도이다. 도 16에서 변위 벡터 인코더(11022)는 변위 벡터 변환부(12011), 변위 벡터 계수 양자화부(12012), 변위 벡터 계수 패킹부(12013), 및 변위 벡터 이미지/비디오 인코딩부(12014)를 포함할 수 있다. 도 16의 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응한다. 도 16에서 각 블록의 수행 순서는 변경될 수 있으며, 일부 블록은 생략될 수 있고, 일부 블록은 새로 추가될 수 있다. 본 개시에서 변위벡터 인코더는 비디오 이미지 포맷 별로 변위벡터계수 이미지 패킹을 수행한 후 이미지 패킹된 변위벡터계수를 2D 비디오 코덱을 이용하여 인코딩한다.
좀 더 구체적으로, 변위 벡터 변환부(12011)는 (x,y,z) 또는 (n, t, bt) 좌표계의 변위 벡터에 대해 linear lifting 변환, butterfly lifting 변환, 웨이블릿 변환 등을 수행하여 (x,y,z) 또는 (n, t, bt) 좌표계의 변위 벡터를 변위벡터계수로 변환할 수 있다. (n, t, bt) 좌표계에서 n은 normal, t는 tangential, bt는 bi-tangential을 의미한다.
예를 들어, 리프팅 변환이 수행되는 경우, k번째 세분화 레벨의 정점 Rk를 예측 수행 시 예측자로 Rt(t<k 또는 t<=k)의 세분화 정점 변위 벡터를 통해 k번째 세분화 레벨의 변위 벡터 예측을 수행할 수 있다. 실시예들에 따라 변위 벡터의 예측 수행 시 현재 정점보다 세분화 레벨이 낮은 정점 중 연결정보를 기반으로 가까운 n개의 점을 평균 또는 거리 기반 가중평균예측을 수행할 수 있다. 실시예들에 따라 메쉬 세분화 단계에서 현재 정점을 생성하기 위해 사용한 n개의 정점의 변위 벡터를 기반으로 예측을 수행할 수 있다. 그리고, 리프팅 변환이 수행되는 경우, 예측으로 생성되는 잔차 신호를 통해 예측에 사용된 정점의 변위 벡터를 업데이트 하는 과정이 수행될 수 있다.
이때, 변위 벡터의 바이-탄젠셜 성분에 대해 패킹을 스킵한다면, 변위 벡터 변환부(12011)에서는 바이-탄젠셜 성분을 제외한 노말 성분과 탄젠셜 성분에 대해서만 변위벡터 변환을 수행할 수 있다.
실시예들에 따르면, 변위 벡터 양자화부(12012)는 변위 벡터 변환부(12011)를 통해 변환된 변위 벡터 값, 즉 변위 벡터 또는 변위 벡터 계수에 대해 양자화를 수행할 수 있다. 예를 들어, 변위 벡터 변환부(12011)에서 노말 성분, 탄젠셜 성분, 바이-탄젠셜 성분 모두에 대해 변환을 수행하였다면 변위 벡터 양자화부(12012)는 노말 성분, 탄젠셜 성분, 바이-탄젠셜 성분의 변위 벡터 계수에 대해 양자화를 수행한다. 다른 예로, 변위 벡터 변환부(12011)에서 노말 성분과 탄젠셜 성분에 대해서만 변환을 수행하였다면, 변위 벡터 양자화부(12012)는 노말 성분과 탄젠셜 성분의 변위 벡터 계수에 대해 양자화를 수행한다. 본 개시에서 변위 벡터 계수는 변위 벡터 변환 계수와 동일한 의미로 혼용되어 사용된다.
실시예들에 따르면, 변위 벡터 양자화부(12012)는 하기의 수학식 1과 같이 변위벡터계수(value)에 스케일(scale)을 곱하고 오프셋(offset)을 더하여 양자화된 값(quant)을 각 채널별로 도출할 수 있다. 이때, 각 채널은 변위벡터의 좌표계에 따라 각각 x, y, z 또는 n, t, b 일 수 있다. 또한, 바이-탄젠셜 성분을 skip 하는 경우에는 노말, 탄젠셜 성분들에 대해서만 변위벡터계수 양자화를 수행할 수 있다. 아래 수학식 1은 채널별 양자화된 값을 구하는 수식이고, 수학식 2는 수학식 1의 채널별 스케일 값을 구하는 수식이다.
[수학식 1]
Figure PCTKR2024008873-appb-img-000013
[수학식 2]
Figure PCTKR2024008873-appb-img-000014
수학식 1에서 오프셋(offset)은 시퀀스 또는 프레임 단위로, 각 채널별로 고정된 값을 사용할 수 있다. 그리고, 수학식 1의 스케일은 수학식 2에서와 같이 양자화 파라미터(QP)와 레벨 별 스케일(level_scale)에 의해 결정될 수 있다.
수학식 2의 level_scale은 각 레벨에 대하여 프레임 또는 시퀀스 단위로 정해진 값을 사용할 수 있다. 또한,
Figure PCTKR2024008873-appb-img-000015
는 인코더에서 정해져 있는 파라미터 상수 값일 수 있다. 이때, 스케일도 마찬가지로 변위벡터의 각 채널별로 개별적인 값이 정해질 수 있다.
실시예들에 따르면, 변위 벡터 계수 패킹부(12013)는 양자화된 변위 벡터 계수를 WxH 크기의 2D 이미지로 패킹을 수행할 수 있다. 즉, 변위 벡터 인코더(11022)에서 비디오 코덱 기반 인코딩 방법을 이용하여 변위 벡터 계수들을 인코딩한다면, 변위 벡터 계수들을 프레임에 2D 이미지로서 패킹하는 과정이 변위 벡터 계수 패킹부(12013)에서 수행된다. 다시 말해, 변위 벡터 계수 패킹부(12013)는 변위 벡터 계수들을 2D 이미지로 패킹하고, 변위 벡터 이미지/비디오 인코딩부(12014)는 패킹된 2D 이미지들을 비디오 압축 코덱을 이용하여 인코딩할 수 있다.
도 17은 실시예들에 따른 변위 벡터 계수 구조의 일 예시를 보인 도면이다. 도 17에서 변위 벡터 계수의 전체 개수는 N, LoD0에 포함되는 변위 벡터 계수들의 개수는 N0(LoD0= R0), LoD1에 포함되는 변위 벡터 계수들의 개수는 N1(LoD1)이라고 가정하면, 레벨 0(R0)의 변위 벡터 계수들의 개수는 N0이고, 레벨 1(R1)의 변위 벡터 계수들의 개수는 N1-N0이 된다. 즉, LoD1에 포함되는 변위 벡터 계수들의 개수 (N1)는 레벨 0(R0)의 변위 벡터 계수들의 개수(N0)와 레벨 1(R1)의 변위 벡터 계수들의 개수(N1-N0)이 합이 된다.
실시예들에 따르면, 변위 벡터 계수 패킹부(12013)는 N개의 변위 벡터 계수들(예, N개의 양자화된 변위 벡터 계수들)을 W×H 크기의 이미지로 패킹을 수행할 수 있다. 본 개시에서 W×H는 변위 벡터 계수들이 2D 이미지로서 패킹되는 프레임의 크기일 수 있다.
즉, 높은 레이어의 LoD의 정점부터 리프팅 변환이 수행되어 도 17과 같이 낮은 LoD의 변위 벡터 계수는 앞쪽에, 높은 LoD의 변위벡터계수는 뒤쪽에 저장된다. 이때, 노말, 탄젠셜, 바이-탄젠셜 성분 별로 각각 패킹을 수행할 수 있다. 또는 일부 성분은 패킹하지 않고 스킵할 수 있다. 예를 들어, 바이-탄젠셜 성분은 패킹하지 않고 스킵할 수 있다.
도 18은 실시예들에 따른 변위 벡터 계수들을 패킹하는 일 예를 보인 도면이다. 즉, 도 17의 1D 형태의 변위 벡터 계수들은 도 18과 같이 2D 이미지로서 패킹이 수행될 수 있다.
실시예들에 따르면, 변위 벡터 계수 패킹부(12013)는 1D 벡터 또는 스칼라의 변위 벡터 계수(또는 변환 계수 레벨이라 함)를 bx*by 크기의 블록들로 구성하고, 각 블록을 z 스캔 순서(z-scan order) 또는 지그-재그(zig-zag) 스캐닝 순서 또는 2D 몰톤(Morton) 코드 순서 등 인코더/디코더에서 약속된 스캐닝 순서에 따라 패킹할 수 있다. 즉, L*M 개의 변위 벡터 계수 블록들은 인코더/디코더에서 정의된 순서에 따라 (bx*L)×(by*M) 크기의 이미지로 블록 패킹될 수 있다. 여기서, L*M은 bx*by 크기를 갖는 블록들의 개수이고, bx, by는 각각 16일 수 있다. 즉, 변위 벡터 계수들은 256(16*16)개 단위마다 하나의 블록으로 구성되고, 각 블록은 z 스캔 순서 또는 지그-재그 스캔 순서로 패킹될 수 있다. 다시 말해, 하나의 블록 내에서 변위 벡터 계수들은 z 스캔 순서 또는 지그-재그 스캐닝 순서 또는 2D 몰톤(Morton) 코드 순서 등에 따라 패킹될 수 있다. 다시 말해, bx*by 크기를 하나의 블록으로 구성하고, 변위벡터계수의 개수 N에 따라 결정된 L×M 개의 블록으로 구성할 수 있다. 이때, 2D 몰톤 코드, 지그-재그 스캔 순서 등에 따라 W×H 크기의 2D 이미지로 패킹이 수행될 수 있다.
만일, 모든 레벨의 변위 벡터 계수들을 하나의 프레임에 2D 이미지로서 패킹한다면, 레벨 0(R0)의 변위 벡터 계수 블록부터 스캐닝 순서에 따라 순차적으로 패킹이 수행될 수 있다. 이때, 변위 벡터 계수들의 전체 크기가 L*M 보다 작은 경우, (bx*L)×(by*M) 크기가 되도록 도 18에서와 같이 패딩이 수행된다. 즉, 총 변위 벡터 계수의 개수가 (bx*L)×(by*M)보다 작은 경우 변위 벡터 이미지가 (bx*L)×(by*M) 크기가 되도록 패딩을 수행하여 채워 넣을 수 있다. 도 18은 5개의 블록에 패딩이 수행되는 예를 보이고 있다. 여기서, 패딩이란 의미없는 값(예, 0)으로 해당 블록을 채우는 것을 의미한다. 다른 예로, 복수개의 레벨들의 변위 벡터 계수들을 하나의 프레임에 2D 이미지로서 패킹한다면, 작은 레벨의 변위 벡터 계수 블록부터 스캐닝 순서에 따라 순차적으로 패킹이 수행될 수 있다. 또 다른 예로, 도 18의 역순으로 패킹과 패딩을 수행하여 2D 이미지를 패킹할 수 있다.
실시예들에 따르면, L, M은 변위 벡터 계수들의 개수(N)에 따라 결정되거나 또는 L(또는 M)을 인코더/디코더의 약속에 의해 정의한 뒤 변위 벡터 계수들의 개수(N)에 따라 하기의 수학식 3과 같이 M(또는 L)을 유도할 수 있다. 하기의 수학식 3은 인코더/디코더 약속에 따라 L이 정의되는 경우, M을 유도하는 일 예시이다.
[수학식 3]
Figure PCTKR2024008873-appb-img-000016
수학식 3에서 round 함수는 괄호 안의 수를 가장 가까운 정수로 반올림하는 함수이다.
실시예들에 따르면, 변위 벡터 계수 패킹부(12013)의 변위 벡터 계수들의 패킹 방법은 인코더/디코더에서 약속에 의해 정해질 수도 있고, 또는 변위 벡터 계수 패킹부(12013)에서 수행된 패킹 방법을 수신 장치의 디코더로 전송할 수도 있다.
실시예들에 따르면, 모든 레벨의 변위 벡터 계수들을 하나의 이미지(즉, 하나의 프레임)로 패킹하여 변위 벡터 이미지/비디오 인코딩부(12014)에서 인코딩을 수행할 수도 있고, 또는 각 세분화 레벨(R) 별로 변위 벡터 계수들을 각 이미지(즉, 각 프레임)에 패킹하여 각각 인코딩을 수행할 수도 있다. 또는 하나의 이미지에 특정 레벨의 변위 벡터 계수들을 패킹하고, 다른 이미지에 복수개 이상의 다른 레벨들의 변위 벡터 계수들을 패킹할 수도 있다.
도 19는 실시예들에 따른 LoD별로 변위 벡터 계수 블록들을 패킹하는 일 예를 보인 도면이다. 실시예들에 따르면, 변위벡터계수 블록(bx×by)들의 패킹은 각 LoD 레벨별로 인코딩되는 2D 비디오 인코더의 CTU (Coding Tree Unit) 크기에 맞춰 도 19와 같이 수행될 수 있다. 이때, 각 LoD 별로 CTU 크기에 맞추기 위해 이미지의 중간값 또는 마지막 변위벡터계수 값 등으로 수행될 수 있다. 도 19에서 CTU은 비디오 프레임을 코딩 트리 단위로 분할하는 과정에서 사용되며, 특히 비디오 프레임을 트리 구조로 분할하여 인코딩을 진행할 때 사용되는 단위이다.
일 실시예로, 도 19는 3개의 레벨(R0-R2)의 변위 벡터 계수들이 하나의 이미지로서 패킹되는 예시를 보이고 있다. 즉, R0, R1, R2 변위 벡터 계수들이 하나의 프레임으로 패킹되는 예시이다. 이때, R0, R1, R2 변위 벡터 계수들의 개수가 프레임의 크기보다 작으면 패딩 영역이 존재할 수 있다.
도 19에서와 같이 각 레벨의 변위 벡터 계수들을 하나 이상의 프레임에 패킹할 때, 변위 벡터 계수들은 bx×by 크기의 블록으로 패킹될 수 있다.
이때, 하나의 변위 벡터 계수 블록 내에서 bx*by개의 변위 벡터 계수들은 zig-zag 스캔 순서에 따라 패킹될 수도 있고, 또는 도 20(a), 도 20(b)와 같이 2D 몰톤코드 순서에 따라 패킹될 수도 있다.
도 20(a), 도 20(b)는 실시예들에 따른 변위 벡터 계수 블록 내 변위 벡터 계수들의 패킹 방법의 예시들을 보인 도면이다.
도 20(a)는 bx=by=4일 때, 하나의 변위 벡터 계수 블록 내에서 16개의 변위 벡터 계수들(C1-C16)을 x-y 몰톤 코드 순서에 따라 패킹하는 예시이다. 도 20(b)는 bx=by=4일 때, 하나의 변위 벡터 계수 블록에서 16개의 변위 벡터 계수들(C1-C16)을 y-x 몰톤 코드 순서에 따라 패킹하는 예시이다.
실시예들에 따르면, 변위 벡터 계수들이 패킹되는 프레임의 크기는 각각 블록의 너비와 높이를 결정하는 bx, by 파라미터, 각각 프레임의 행과 열에 들어가는 블록 개수를 결정하는 L, M 파라미터에 의해 (bx×L) ×(by×M)로 구할 수 있다. L 과 M 파라미터는 인코더/디코더에서 약속에 의해 정해질 수도 있고, 또는 L(또는 M)을 인코더/디코더의 약속에 의해 정의한 후 변위 벡터 계수들의 개수에 따라 M(또는 L)이 유도될 수도 있으며(수학식 3 참조), 또는 레벨에 따라 유도될 수도 있다.
한편, 로컬 좌표계로 변환된 변위 벡터 계수들은 노말 성분, 탄젠셜 성분, 바이-탄젠셜 성분을 가지고 있을 수 있다. 이때, 변위 벡터 계수 패킹부(12013)는 이미지 패킹을 수행하기 위해 YUV 4:4:4, YUV 4:2:0, YUV 4:0:0 등의 포맷을 선택할 수 있고, 각 포맷에 맞게 변위 벡터 계수들을 구성할 수 있다. 이 과정에서 일부 성분의 패킹은 스킵할 수 있다.
본 개시에서 YUV 4:4:4, YUV 4:2:0, YUV 4:0:0 포맷은 변위 벡터 계수의 노말 성분, 탄젠셜 성분, 바이-탄젠셜 성분을 이미지로 패킹할 때의 포맷을 나타내다. 본 개시는 각 포맷별 4개의 정점 단위로 변위 벡터 계수 V1(N1, T1, B1) ~ V4(N4, T4, B4)의 샘플링을 다르게 수행할 수 있다.
본 개시에서 YUV 4:4:4 포맷은 Y 채널의 크기(wy*hy), U 채널의 크기(wu*hu), V 채널의 크기(wv*hv)가 동일함을 의미한다. 그리고, YUV 4:2:0 포맷은 Y 채널의 크기(wy*hy)에 비해 U 채널의 크기(wu*hu)와 V 채널의 크기(wv*hv)가 소정 배수(예, 4배) 작음을 의미한다. 또한, YUV 4:0:0 포맷은 Y 채널의 크기(wy*hy)만 존재 즉, 패킹이 Y 채널에서만 이루어질 때를 의미한다. 즉, Y, U, V 채널들 중 Y 채널만 존재한다.
본 개시는 설명의 편의를 위해, YUV 4:4:4 포맷은 제1 포맷과 혼용하여 사용하고, YUV 4:2:0 포맷은 제2 포맷과 혼용하여 사용하며, YUV 4:0:0 포맷은 제3 포맷과 혼용하여 사용하기로 한다. 또한 본 개시는 설명의 편의를 위해 Y 채널은 제1 채널로, U 채널은 제2 채널로, V 채널은 제3 채널로 명명할 수 있다. 본 개시에서 제1, 제2, 제3 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용된다. 예를 들어, 본 개시의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다. 또는 제1 구성 요소는 제3 구성 요소로 명명될 수도 있다.
실시예들에 따르면, 인코더에서는 정해진 변위벡터계수의 이미지 패킹 포맷 정보(ColourSpace_displacement_video)와 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)를 시그널링 정보(예, ASPS)에 시그널링하여 수신 장치(또는 수신 장치의 디코더)로 전송할 수 있다.
예를 들어, 변위벡터계수의 이미지 패킹 포맷 정보(ColourSpace_displacement_video)는 변위 벡터 계수의 패킹시 사용된 포맷이 YUV 4:4:4 포맷인지(즉, 제1 포맷), YUV 4:2:0 포맷(즉, 제2 포맷)인지, 또는 YUV 4:0:0 포맷(즉, 제3 포맷)인지를 지시할 수 있다. 또 다른 예로, 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보(Bi_tangent_skip_flag)의 값이 0이면 바이-탄젠셜 성분을 스킵하지 않았고 1이면 바이-탄젠셜 성분을 스킵하였음을 지시할 수 있다.
도 21(a), 도 21(b)는 실시예들에 따른 YUV 4:4:4 포맷을 기반으로 변위 벡터 계수를 패킹하는 일 예시를 보인 도면이다. 즉, 도 21(a), 도 21(b)는 YUV 4:4:4 포맷을 기반으로 변위 벡터 계수들을 패킹할 때, 바이-탄젠셜 성분의 패킹을 스킵하지 않는 예시이다. 이 경우, 이미지 패킹 포맷 정보(ColourSpace_displacement_video)는 패킹시 사용된 포맷이 YUV 4:4:4 포맷임을 지시하고(ColourSpace_displacement_video = YUV444), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값은 0인 것을 일 실시예로 한다.
이 경우, 도 21(a)에서와 같이 Y 채널에 각 정점의 변위 벡터 계수의 노말 성분이, U 채널에 각 정점의 변위 벡터 계수의 탄젠셜 성분이, V 채널에 각 정점의 변위 벡터 계수의 바이-탄젠셜 성분이 저장(또는 패킹)된다. 즉, Y, U ,V 각 채널에 노말, 탄젠셜, 바이-탄젠셜 성분을 차례대로 저장(또는 패킹)할 수 있다. 도 21(b)는 4개의 정점의 변위 벡터 계수들을 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4), 탄젠셜 성분(T1-T4), 바이-탄젠셜 성분(B1-B4)이 Y 채널, U 채널, V 채널에 각각 패킹되는 예시이다.
도 22(a), 도 22(b)는 실시예들에 따른 YUV 4:4:4 포맷을 기반으로 변위 벡터 계수를 패킹하는 다른 예시를 보인 도면이다. 즉, 도 22(a), 도 22(b)는 YUV 4:4:4 포맷을 기반으로 변위 벡터 계수를 패킹할 때, 바이-탄젠셜 성분의 패킹을 스킵하는 예시이다. 이 경우, 이미지 패킹 포맷 정보(ColourSpace_displacement_video)는 패킹시 사용된 포맷이 YUV 4:4:4 포맷임을 지시하고(ColourSpace_displacement_video = YUV444), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값은 1인 것을 일 실시예로 한다.
이 경우, 도 22(a)에서와 같이 Y 채널에 변위 벡터 계수들의 노말 성분이, U 채널에 변위 벡터 계수들의 탄젠셜 성분이 저장(또는 패킹)된다. 즉, Y 채널에 노말 성분을, U 채널에 탄젠셜 성분을 차례대로 패킹하여 변위 벡터 이미지/비디오 인코딩부(12014)로 전송한다.
이때, 각 정점의 변위 벡터 계수의 바이-탄젠셜 성분은 패킹이 스킵된다. 즉, V 채널에 바이-탄젠셜 성분이 패킹되지 않고 스킵된다.
본 개시는 효율적인 인코딩/디코딩을 위해 V 채널에 중간값(또는 고정된 값)을 채워 넣을 수 있다. 즉, YUV 4:4:4 포맷을 유지하기 위해, 스킵되는 바이-탄젠셜 성분 대신 중간값으로 V 채널을 채운다. 도 22(b)는 4개의 정점의 변위 벡터 계수들을 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4)과 탄젠셜 성분(T1-T4)이 Y 채널과 U 채널에 각각 패킹되고, V 채널에는 바이-탄젠셜 성분 대신 중간값(M)이 패킹되는 예시이다. 일 실시예로, 변위벡터 비디오 이미지의 bitDepth가 10bits라고 가정하면, 1024의 중간 값인 512가 M값으로 패킹될 수 있다(M=512).
도 23(a), 도 23(b)는 실시예들에 따른 YUV 4:2:0 포맷을 기반으로 변위 벡터 계수를 패킹하는 일 예시를 보인 도면이다. 즉, 도 23(a), 도 23(b)는 YUV 4:2:0 포맷을 기반으로 변위 벡터 계수들을 패킹할 때, 바이-탄젠셜 성분의 패킹을 스킵하지 않는 예시이다. 이 경우, 이미지 패킹 포맷 정보(ColourSpace_displacement_video)는 패킹시 사용된 포맷이 YUV 4:2:0 포맷임을 지시하고(ColourSpace_displacement_video = YUV420), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값은 0인 것을 일 실시예로 한다.
이 경우, 도 23(a)에서와 같이 Y 채널에는 변위 벡터 계수들의 노말 성분이 그대로 저장(또는 패킹)된다. 이에 반해, U 채널에는 4개의 정점 당 1개의 정점의 변위 벡터 계수의 탄젠셜 성분이 패킹되고, V 채널에는 4개의 정점 당 1개의 정점의 변위 벡터 계수의 바이-탄젠셜 성분이 패킹된다. 즉, 노말 성분은 Y 채널에, 탄젠셜 성분은 U 채널에, 바이-탄젠셜 성분은 V 채널에 각각 순서대로 저장될 수 있는데, 이때 U 채널의 탄젠셜 성분과 V 채널의 바이-탄젠셜 성분은 인코더/디코더 약속에 의해 샘플링이 수행 될 수 있다. 도 23(b)는 4개의 정점의 변위 벡터 계수들을 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4)은 Y 채널로 패킹되고, 4개의 정점 당 1개의 정점의 변위 벡터 계수의 탄젠셜 성분(T)은 U 채널에, 4개의 정점 당 1개의 정점의 변위 벡터 계수의 바이-탄젠셜 성분(B)이 V 채널에 패킹되는 예시이다. 이때, U 채널에 패킹되는 1개 정점의 변위 벡터 계수의 탄젠셜 성분은 4개 정점의 변위 벡터 계수들의 탄젠셜 성분의 평균값일 수도 있고, 4개 정점의 변위 벡터 계수들 중 특정 변위 벡터 계수의 탄젠셜 성분(즉, 대표값)일 수도 있다. 유사하게, V 채널에 패킹되는 1개 정점의 변위 벡터 계수의 바이-탄젠셜 성분은 4개 정점의 변위 벡터 계수들의 바이-탄젠셜 성분의 평균값일 수도 있고, 4개 정점의 변위 벡터 계수들 중 특정 변위 벡터 계수의 바이-탄젠셜 성분(즉, 대표값)일 수도 있다.
본 개시는 다른 실시예로, 변위벡터계수 패킹부(12013)에서 계산한 패킹 프레임 이미지 높이(H)의 2배만큼 Y 채널의 높이를 늘려주고, 노말 성분, 탄젠셜 성분 및 바이-탄젠셜 성분을 Y 채널에 성분별로 저장(즉, 패킹)할 수 있다. 이 경우, YUV 4:2:0 포맷을 유지하기 위해 U 채널과 V 채널에는 각각 중간값으로 채워 넣을 수 있다.
도 24(a), 도 24(b)는 실시예들에 따른 YUV 4:2:0 포맷을 기반으로 변위 벡터 계수를 패킹하는 다른 예시를 보인 도면이다. 즉, 도 24(a), 도 24(b)는 YUV 4:2:0 포맷을 기반으로 변위 벡터 계수들을 패킹할 때, 바이-탄젠셜 성분의 패킹을 스킵하는 예시이다. 이 경우, 이미지 패킹 포맷 정보(ColourSpace_displacement_video)는 패킹시 사용된 포맷이 YUV 4:2:0 포맷임을 지시하고(ColourSpace_displacement_video = YUV420), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값은 1인 것을 일 실시예로 한다.
이 경우, 도 24(a)에서와 같이 변위벡터계수 패킹부(12013)에서 계산한 패킹 프레임 이미지 높이(H)의 2배만큼 Y 채널의 높이를 늘려주고, 이 후 노말 성분의 변위 벡터 계수들과 탄젠셜 성분의 변위 벡터 계수들을 Y채널에 성분별로 저장(즉, 패킹)할 수 있다. 이때, 효율적인 인코딩을 위해 U, V 채널에는 중간값으로 채워넣을 수 있다. 도 24(b)는 4개의 정점의 변위 벡터 계수들을 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4)과 탄젠셜 성분(T1-T4)이 Y 채널에 패킹되고, YUV 4:2:0 포맷을 유지하기 위해 U 채널과 V 채널에는 각각 2개의 정점에 대응하는 중간값(M)이 패킹되는 예시이다.
본 개시는 다른 예시로, 4개의 정점의 변위 벡터 계수들을 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4)은 Y 채널로 패킹하고, 4개의 정점 당 1개의 정점의 변위 벡터 계수의 탄젠셜 성분(T)은 U 채널에 패킹하고, V 채널에는 중간값을 채워 넣을 수 있다.
도 25(a), 도 25(b)는 실시예들에 따른 YUV 4:0:0 포맷을 기반으로 변위 벡터 계수를 패킹하는 일 예시를 보인 도면이다. 즉, 도 25(a), 도 25(b)는 YUV 4:0:0 포맷을 기반으로 변위 벡터 계수들을 패킹할 때, 바이-탄젠셜 성분의 패킹을 스킵하지 않는 예시이다. 이 경우, 이미지 패킹 포맷 정보(ColourSpace_displacement_video)는 패킹시 사용된 포맷이 YUV 4:0:0 포맷임을 지시하고(ColourSpace_displacement_video = YUV400), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값은 0인 것을 일 실시예로 한다.
이 경우, 도 25(a)에서와 같이 변위벡터계수 패킹부(12013)에서 계산한 패킹 프레임 이미지 높이(H)의 3배만큼 Y 채널의 높이를 늘려주고, 이 후 변위 벡터 계수들의 노말 성분, 탄젠셜 성분, 바이-탄젠셜 성분을 Y채널에 성분별로 저장(즉, 패킹)할 수 있다. 도 25(b)는 4개의 정점의 변위 벡터 계수들을 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4), 탄젠셜 성분(T1-T4), 바이-탄젠셜 성분(B1-B4)이 Y 채널에 성분별로 패킹되는 예시이다.
도 26(a), 도 26(b)는 실시예들에 따른 YUV 4:0:0 포맷을 기반으로 변위 벡터 계수를 패킹하는 다른 예시를 보인 도면이다. 즉, 도 26(a), 도 26(b)는 YUV 4:0:0 포맷을 기반으로 변위 벡터 계수들을 패킹할 때, 바이-탄젠셜 성분의 패킹을 스킵하는 예시이다. 이 경우, 이미지 패킹 포맷 정보(ColourSpace_displacement_video)는 패킹시 사용된 포맷이 YUV 4:0:0 포맷임을 지시하고(ColourSpace_displacement_video = YUV400), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값은 1인 것을 일 실시예로 한다.
이 경우, 도 26(a)에서와 같이 변위벡터계수 패킹부(12013)에서 계산한 패킹 프레임 이미지 높이(H)의 2배만큼 Y 채널의 높이를 늘려주고, 이 후 변위 벡터 계수들의 노말 성분과 탄젠셜 성분을 Y채널에 성분별로 저장(즉, 패킹)할 수 있다. 도 26(b)는 4개의 정점의 변위 벡터 계수들을 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4)과 탄젠셜 성분(T1-T4)이 Y 채널에 성분별로 패킹되는 예시이다. 즉, 바이-탄젠셜 성분은 스킵되므로 패킹 및 전송되지 않는다.
전술한 도 21 내지 도 26에서와 같이 포맷에 따라 변위 벡터 계수들의 노말 성분, 탄젠셜 성분, 바이-탄젠셜 성분(스킵될 수 있음)이 Y 채널, U 채널, V 채널에 2D 이미지로 패킹(또는 저장)되면, 변위 벡터 이미지/비디오 인코딩부(12014)는 패킹된 2D 이미지에 대해 H.264, HEVC, VVC 등의 2D 비디오 인코더를 통해 인코딩을 수행할 수 있다.
도 27은 실시예들에 따른 수신 장치를 나타낸다. 본 개시에서 도 27의 수신 장치는 메쉬 데이터 수신 장치 또는 디코더 또는 수신 장치의 디코더 또는 V-Mesh 디코더 또는 동적 메쉬 디코더로 호칭될 수 있다.
도 27은 도 1의 수신 장치(110) 또는 메쉬 비디오 디코더(113), 도 11 또는 도 12의 디코더, 도 14의 수신 장치 및/또는 그에 대응하는 수신 디코딩 장치에 대응한다. 도 27의 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응한다. 도 27의 수신(디코딩) 동작은 도 15의 송신(인코딩) 동작의 대응하는 과정의 역과정을 따를 수 있다. 도 27에서 각 블록의 수행 순서는 변경될 수 있으며, 일부 블록은 생략될 수 있고, 일부 블록은 새로 추가될 수 있다.
도 27은 크게 베이스 메쉬 디코딩부, 변위 정보 디코딩부, 및 텍스처 맵 디코딩부를 포함할 수 있다. 실시예들에 따르면, 베이스 메쉬 디코딩부는 스위칭부(15011), 모션 벡터 디코더(15012), 스태틱 메쉬 디코더(15013), 베이스 메쉬 복원부(15014), 메쉬 세분화부(15015), 및 메쉬 복원부(15016)를 포함할 수 있다. 실시예들에 따르면, 변위 정보 디코딩부는 변위 벡터 디코더(15017)와 변위 벡터 좌표계 역변환부(15020)를 포함할 수 있다.
실시예들에 따르면, 수신부(도시되지 않음)로 수신된 메쉬 데이터의 비트스트림은 파일/세그먼트 디캡슐레이션된 후 디멀티플렉서(도시되지 않음)에서 베이스 메쉬 비트스트림, 변위 벡터 비트스트림, 그리고 텍스처 맵 비트스트림으로 디멀티플렉싱될 수 있다. 만일, 현재 메쉬가 화면간 인코딩(즉, 인터 인코딩)이 적용된 경우라면, 베이스 메쉬 비트스트림은 모션 벡터 비트스트림일 수 있다.
실시예들에 따르면, 베이스 메쉬 비트스트림은 스위칭부(15011)를 통해 모션 벡터 디코더(15012)로 제공되거나 또는 스태틱 메쉬 디코더(15013)로 제공된다.
예를 들어, 현재 메쉬가 화면간 인코딩(즉, 인터 인코딩)이 적용된 경우라면, 베이스 메쉬 비트스트림 즉, 모션 벡터 비트스트림이 수신되어 디멀티플렉싱된 후 스위칭부(15011)를 통해 모션 벡터 디코더(15012)로 출력된다. 다른 예로, 현재 메쉬가 화면내 인코딩(즉, 인트라 인코딩)이 적용된 경우라면, 베이스 메쉬 비트스트림이 수신되어 디멀티플렉싱된 후 스위칭부(15011)를 통해 스태틱 메쉬 디코더(15013)로 출력된다. 여기서, 모션 벡터 디코더(15012)는 모션 디코더로 지칭될 수 있다.
실시예들에 따르면, 모션 벡터 디코더(15012)는 모션 벡터 비트스트림에 대해 정점 단위 또는 서브 그룹 단위로 디코딩을 수행할 수 있다.
실시예들에 따르면, 모션 벡터 디코더(15012)는 이전의 디코딩된 모션 벡터를 예측자로 사용하여 비트스트림으로부터 디코딩된 차분 모션 벡터(즉, 잔차 모션 벡터)와 더하여 최종 모션 벡터를 복원할 수 있다. 즉, 모션 벡터 디코더(15012)는 모션 벡터 비트스트림을 통해 정점 또는 서브 그룹(또는 서브 블록) 단위의 차분 모션 벡터(또는 잔차 모션 벡터)를 디코딩하고, 이전의 디코딩된 모션 벡터를 예측자로 사용하여 연결정보 기반의 예측을 수행하여 잔차 모션 벡터와 더하여 모션 벡터를 디코딩할 수 있다.
실시예들에 따르면, 스태틱 메쉬 디코더(15013)는 베이스 메쉬 비트스트림을 디코딩하여 베이스 메쉬의 연결 정보, 정점 지오메트리 정보, 텍스처 좌표(즉, 속성 지오메트리 정보), 노말 정보 등을 복원할 수 있다.
실시예들에 따르면, 베이스 메쉬 복원부(15014)는 디코딩된 모션 벡터 또는 디코딩된 베이스 메쉬를 기반으로 현재 베이스 메쉬를 복원할 수 있다. 예를 들어, 현재 메쉬가 화면간 인코딩이 적용된 경우라면, 베이스 메쉬 복원부(15014)에서는 참조 베이스 메쉬에 디코딩된(또는 복원된) 모션 벡터를 더한 후 역양자화를 수행하여 복원된 베이스 메쉬(즉, 현재 베이스 메쉬)를 생성할 수 있다. 다른 예로, 현재 메쉬가 화면내 인코딩이 적용된 경우라면, 베이스 메쉬 복원부(15014)는 스태틱 메쉬 디코더(15012)를 통해 디코딩된(또는 복원된) 베이스 메쉬에 대해 역양자화를 수행하여 복원된 베이스 메쉬(즉, 현재 베이스 메쉬)를 생성할 수 있다.
실시예들에 따르면, 메쉬 세분화부(15015)는 베이스 메쉬에 대해 세분화 (Subdivision)를 수행하여 추가적인 정점을 생성할 수 있다. 본 개시는 세분화 방법에 따라 지오메트리 정보 연결정보, 텍스처 좌표 연결정보 및 텍스처 좌표에 대해 암시적으로 유도하여 생성할 수 있다.
실시예들에 따르면, 메쉬 세분화부(15015)는 mid-edge, Loop, Catmul&Clark등의 방법을 통해 세분화를 수행할 수 있다.
실시예들에 따르면, 변위 벡터 디코더(15017)는 디멀티플렉싱된 변위 벡터 비트스트림에 대해 비디오 비트스트림으로서 비디오 코덱 기반의 디코딩을 수행하거나 또는 제로 런-랭쓰 디코딩을 수행하거나 또는 산술 디코딩을 수행할 수 있다. 본 개시에서 변위 벡터 디코더는 변위 벡터 변환 디코더와 동일한 의미로 혼용하여 사용될 수 있다.
실시예들에 따르면, 변위 벡터 디코더(15017)는 송신측의 변위 벡터 인코딩 방법의 역과정으로 변위 벡터를 디코딩하여 변위 벡터를 복원할 수 있다.
실시예들에 따르면, 변위 벡터 좌표계 역변환부(15020)에서는 변위 벡터 디코더(15017)에서 디코딩된 변위 벡터가 로컬 좌표계(n,t,bt)의 값이라면 Cartesian (또는 canonical) 좌표계(x,y,z)로 역변환하는 과정을 수행할 수 있다. 변위 벡터 좌표계 역변환부(15020)의 출력은 메쉬 복원부(15016)으로 제공된다.
즉, 송신 장치의 인코더에서는 (x,y,z) 공간에서 계산된 정점 변위 벡터를 각 정점의 노말 벡터를 기반으로 (normal, tangential, bi-tangential) 좌표계(또는 로컬 좌표계라 함)로의 변환이 수행될 수 있다. 이때 노말 벡터는 세분화된 각 정점마다 주변 정점의 지오메트리 정보 및 연결정보를 기반으로 계산될 수 있다.
실시예들에 따르면, 메쉬 복원부(15016)는 메쉬 세분화부(15015)에서 세분화된 메쉬와 변위 벡터 좌표계 역변환부(15020)에서 출력되는 복원된 변위 벡터를 기반으로 메쉬를 복원한다.
실시예들에 따르면, 수신되어 디멀티플렉싱된 텍스처 맵 비트스트림은 텍스처 맵 디코더(15021)로 입력된다. 실시예들에 따르면, 텍스처맵 디코더(15021)에서는 2D 스케일러블 디코더를 통해 텍스처 맵을 디코딩할 수 있다. 즉, 텍스처 맵 디코더(15021)는 텍스처맵에 2D 스케일러블 디코딩을 적용하여 텍스처 맵을 복원할 수 있다.
이와 같이 송신 장치의 동적 메쉬 인코더에서 인코딩된 베이스 메쉬 비트스트림, 변위벡터 비트스트림, 텍스처 맵 비트스트림이 전송되면, 수신 장치의 디코더에서는 각각의 비트스트림을 디코딩하는 과정을 거쳐 메쉬를 복원하게 된다. 먼저 베이스메쉬는 인터, 인트라 프레임 여부에 따라 모션 벡터 또는 스태틱 메쉬 디코더에서 디코딩되고, 세분화를 거쳐 디코딩된 변위벡터 정보와 함께 지오메트리 정보를 복원하게 된다.
본 개시에서는 변위 벡터 계수 디코딩부에서 여러 포맷(예, YUV 4:4:4, YUV 4:2:0, YUV 4:0:0)으로 패킹 되어 전송된 2D 이미지 프레임으로부터 노말, 탄젠셜 성분의 변위 벡터를 복원하고, 바이-탄젠셜 성분을 계산하는 디코딩 방법에 대해 아래에서 설명하기로 한다. 즉, 각 단계별 수행되는 원리는 아래에 자세히 설명한다.
도 28은 실시예들에 따른 변위 벡터 디코더의 일 예시를 보인 구성 블록도이다. 도 28에서 변위 벡터 디코더(15017)는 비디오 디코딩부(16011), 변위 벡터 계수 역패킹부(16012), 변위 벡터 계수 역양자화부(16013), 및 변위 벡터 역변환부(16014)를 포함할 수 있다. 도 28의 각 구성요소는 하드웨어, 소프트웨어, 프로세서, 및/또는 그것들의 조합에 대응한다. 도 28에서 각 블록의 수행 순서는 변경될 수 있으며, 일부 블록은 생략될 수 있고, 일부 블록은 새로 추가될 수 있다.
실시예들에 따르면, 비디오 디코딩부(16011)는 변위벡터 비트스트림을 입력으로 받아 2D 비디오 코덱을 통해 변위벡터계수 이미지/비디오에 대한 디코딩을 수행한다. 그리고, 비디오 디코딩부(16011)를 통해 복원된 복원 변위벡터계수 비디오는 변위벡터계수 역패킹부(16012)에서 각 프레임 별로 변위벡터계수 역패킹(또는 언패킹이라 함) 수행을 통해 복원메쉬의 각 정점에 대응하는 변위벡터계수 할당을 수행할 수 있다.
본 개시에서 변위벡터계수 역패킹부(16012)는 현재 메쉬 프레임에 해당하는 복원 변위벡터계수 이미지로부터 인코더/디코더 약속에 의해 정의된 스캐닝 순서 또는 상위 레벨 단위(시퀀스, 프레임 등)로 파싱 받은 스캐닝 순서에 따라 역패킹을 수행할 수 있다. 즉, 변위 벡터 계수 역패킹부(16012)는 인코더/디코더의 약속에 의해 정의된 스캐닝 순서로 역패킹을 수행할 수도 있고, 또는 변위벡터계수의 특성에 따라 스캐닝 순서를 유도하여 역패킹을 수행할 수도 있고, 또는 스캐닝 순서를 송신 장치의 인코더로부터 전송 받을 수도 있다.
예를 들어, 도 19와 같이 bx*by 단위로 특정 스캐닝 순서에 따라 패킹 된 변위벡터계수 블록과, 하나의 블록 내에서 특정 순서(2D Morton Code 또는 Zig-zag scan 등)에 따라 패킹 된 변위벡터계수는 인코더/디코더 약속 또는 파싱 받은 블록의 크기 bx, by 및 L, M 그리고 스캐닝 순서에 따라 k번째 정점의 변위벡터 계수를 유도할 수 있다.
다음은 도 21 내지 도 26에서와 같이 다양한 포맷(예, YUV 4:4:4, YUV 4:2:0, YUV 4:0:0)으로 변위벡터계수들이 2D 이미지 프레임에 패킹되어 전송된 경우, 변위 벡터 계수 역패킹부(16012)에서 역패킹을 수행하여 2D 이미지 프레임으로부터 노말, 탄젠셜 성분의 변위 벡터 계수를 복원하고, 이를 기반으로 바이-탄젠셜 성분을 복원하는 방법에 대해 설명한다.
도 29(a), 도 29(b)는 실시예들에 따른 YUV 4:4:4 포맷으로 패킹된 변위 벡터 계수를 역패킹하는 일 예시를 보인 도면이다. 좀 더 구체적으로, 도 29(a), 도 29(b)는 수신된 시그널링 정보로부터 파싱된 이미지 패킹 포맷 정보(ColourSpace_displacement_video)의 값이 YUV 4:4:4 포맷임을 지시하고(ColourSpace_displacement_video = YUV444)(예, value=3), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값이 0일 때의 역패킹 방법이다. 즉, 도 29(a)와 같이 송신 장치(예, 변위 벡터 계수 패킹부(12013))에서 바이-탄젠셜 성분의 패킹이 스킵되지 않은 경우이다. 그리고 4개의 정점의 변위 벡터 계수를 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4), 탄젠셜 성분(T1-T4), 바이-탄젠셜 성분(B1-B4)이 Y 채널, U 채널, V 채널에 각각 패킹된 경우이다.
이 경우, 변위벡터계수 역패킹부(16012)는 도 29(b)와 같이 YUV 4:4:4 포맷으로 Y, U, V 채널의 노말, 탄젠셜, 바이-탄젠셜 성분에 대해 각각 복원을 수행할 수 있다. 즉, 복원된 Y, U, V 채널의 변위벡터계수들은 각각 노말, 탄젠셜, 바이-탄젠셜 성분으로 블록 내 특정순서(displacement_scan_method)에 따라 복원할 수 있다. 그리고, YUV 4:4:4 포맷의 경우 송신 장치에서 노말, 탄젠셜, 바이-탄젠셜 성분의 모든 값들을 전송하기 때문에, 인코딩 이전의 데이터와 디코딩한 결과가 동일할 수 있다.
도 30(a), 도 30(b)는 실시예들에 따른 YUV 4:4:4 포맷으로 패킹된 변위 벡터 계수를 역패킹하는 다른 예시를 보인 도면이다. 좀 더 구체적으로, 도 30(a), 도 30(b)는 수신된 시그널링 정보로부터 파싱된 이미지 패킹 포맷 정보(ColourSpace_displacement_video)의 값이 YUV 4:4:4 포맷임을 지시하고(ColourSpace_displacement_video = YUV444)(예, value=3), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값이 1일 때의 역패킹 방법이다. 즉, 도 30(a)와 같이 송신 장치(예, 변위 벡터 계수 패킹부(12013))에서 바이-탄젠셜 성분의 패킹이 스킵된 경우이다. 그리고 4개의 정점의 변위 벡터 계수를 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4)과 탄젠셜 성분(T1-T4)은 Y 채널과 U 채널에 각각 패킹되고, V 채널에는 바이-탄젠셜 성분(B1-B4) 대신 중간값(M)이 패킹된 경우이다. 즉, Bi_tangent_skip_flag의 값이 1이면, 도 30(a)와 같이 Y, U 채널에는 각각 노말, 탄젠셜 성분의 변위벡터계수로 구성되어 있고, V 채널에는 중간값(M)으로 이루어져 있을 수 있다. 만일 변위벡터 비디오 이미지의 bitDepth가 10bits라고 가정하면, 1024의 중간 값인 512가 V 채널의 M값일 수 있다.
이 경우, 변위벡터계수 역패킹부(16012)는 도 30(b)와 같이 YUV 4:4:4 포맷으로 Y, U, V 채널의 노말, 탄젠셜, 바이-탄젠셜 성분에 대해 각각 복원을 수행할 수 있다. 즉, Y, U 채널의 변위벡터계수들은 각각 노말, 탄젠셜 성분으로 블록 내 특정 순서(displacement_scan_method)에 따라 복원하고, V 채널의 중간값을 가진 변위벡터계수들은 0의 값을 바이-탄젠셜 성분으로 복원할 수 있다. 또는 바이-탄젠셜 성분 값은 복원이 수행되지 않고 초기 값으로 0을 가질 수도 있다. 그리고, 송신 장치에서 노말과 탄젠셜 성분의 모든 값들을 전송하기 때문에, 노말과 탄젠셜 성분의 인코딩 이전의 데이터와 디코딩한 결과가 동일할 수 있다.
도 31(a), 도 31(b)는 실시예들에 따른 YUV 4:2:0 포맷으로 패킹된 변위 벡터 계수를 역패킹하는 일 예시를 보인 도면이다. 좀 더 구체적으로, 도 31(a), 도 31(b)는 수신된 시그널링 정보로부터 파싱된 이미지 패킹 포맷 정보(ColourSpace_displacement_video)의 값이 YUV 4:2:0 포맷임을 지시하고(ColourSpace_displacement_video = YUV420)(예, value=2), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값이 0일 때의 역패킹 방법이다. 즉, 도 31(a)와 같이 송신 장치(예, 변위 벡터 계수 패킹부(12013))에서 바이-탄젠셜 성분의 패킹이 스킵되지 않은 경우이다. 그리고 4개의 정점의 변위 벡터 계수를 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4)은 Y 채널로 패킹되고, 4개의 정점 당 1개의 정점의 변위 벡터 계수의 탄젠셜 성분(T)은 U 채널에, 4개의 정점 당 1개의 정점의 변위 벡터 계수의 바이-탄젠셜 성분(B)이 V 채널에 패킹된 경우이다.
이 경우, 변위벡터계수 역패킹부(16012)는 도 31(b)와 같이 YUV 4:2:0 포맷으로 Y, U, V 채널의 노말, 탄젠셜, 바이-탄젠셜 성분에 대해 각각 복원을 수행할 수 있다. 이때, U, V 채널의 탄젠셜 및 바이-탄젠셜 성분에 대해서는 송신 장치에서 샘플링되어 전송된다고 가정하면(예, 4개의 정점 당 1개의 정점이 샘플링됨), 인코더와 미리 약속된 샘플링 방법을 통해 U 채널의 탄젠셜 성분(T'1-T'4)과 V 채널의 바이-탄젠셜 성분(B'1-B'4)이 복원될 수 있다. 또는, 인코더와 미리 약속된 방법으로 노말, 탄젠셜, 바이-탄젠셜 성분 모두 Y 채널로부터 복원할 수도 있다. 그리고, 송신 장치에서 노말 성분의 모든 값들을 전송하기 때문에, 노말 성분의 인코딩 이전의 데이터와 디코딩한 결과가 동일할 수 있다. 이때, 복원된 Y, U, V 채널의 변위벡터계수들은 각각 노말, 탄젠셜, 바이-탄젠셜 성분으로 블록 내 특정순서(displacement_scan_method)에 따라 복원할 수 있다.
도 32(a), 도 32(b)는 실시예들에 따른 YUV 4:2:0 포맷으로 패킹된 변위 벡터 계수를 역패킹하는 다른 예시를 보인 도면이다. 좀 더 구체적으로, 도 32(a), 도 32(b)는 수신된 시그널링 정보로부터 파싱된 이미지 패킹 포맷 정보(ColourSpace_displacement_video)의 값이 YUV 4:2:0 포맷임을 지시하고(ColourSpace_displacement_video = YUV420)(예, value=2), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값이 1일 때의 역패킹 방법이다. 즉, 도 32(a)와 같이 송신 장치(예, 변위 벡터 계수 패킹부(12013))에서 바이-탄젠셜 성분의 패킹이 스킵된 경우이다. 그리고, 4개의 정점의 변위 벡터 계수들을 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4)과 탄젠셜 성분(T1-T4)이 Y 채널에 패킹되고, U 채널과 V 채널에는 각각 중간값(M)이 패킹된 경우이다. 이를 위해, 송신 장치에서는 패킹 프레임 이미지 높이(H)의 2배만큼 Y 채널의 높이를 늘려준 후 패킹을 수행한다.
이 경우, 변위벡터계수 역패킹부(16012)는 도 32(b)와 같이 앞서 계산된 패킹 프레임의 높이(H) 정보를 이용하여 Y 채널의 0부터 H 까지는 노말 성분으로, H+1부터 2H 까지는 탄젠셜 성분으로 복원할 수 있다. 그리고, Y 채널의 노말, 탄젠셜 성분의 변위벡터계수들은 각각 블록 내 특정순서(displacement_scan_method)에 따라 복원될 수 있다. 이때, U 채널의 중간값은 복원 과정에서 쓰이지 않을 수 있다. 이는 탄젠셜 성분의 변위 벡터 계수들이 Y 채널에서 복원되었기 때문이다. 또한, V 채널의 중간값을 가진 변위벡터계수들은 0의 값을 바이-탄젠셜 성분으로 복원할 수 있다. 또는 바이-탄젠셜 성분 값은 V 채널로부터 복원이 수행되지 않고 초기 값으로 0을 가질 수도 있다. 즉, 역패킹 후 바이-탄젠셜 성분의 값은 모두 0이 될 수 있다. 다시 말해, 송신 장치의 변위 벡터 계수 패킹부(12013)에서 패킹이 스킵된 바이-탄젠셜 성분은 수신 장치의 변위 벡터 계수 역패킹부(16012)에서 0으로 복원될 수 있다. 이때, 도 32(a)와 같이 송신 장치에서 노말 성분과 탄젠셜 성분의 모든 값들을 Y 채널을 통해 전송하기 때문에, 노말 성분과 탄젠셜 성분의 인코딩 이전의 데이터와 디코딩한 결과가 동일할 수 있다.
도 33(a), 도 33(b)는 실시예들에 따른 YUV 4:0:0 포맷으로 패킹된 변위 벡터 계수를 역패킹하는 일 예시를 보인 도면이다. 좀 더 구체적으로, 도 33(a), 도 33(b)는 수신된 시그널링 정보로부터 파싱된 이미지 패킹 포맷 정보(ColourSpace_displacement_video)의 값이 YUV 4:0:0 포맷임을 지시하고(ColourSpace_displacement_video = YUV400)(예, value=1), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값이 0일 때의 역패킹 방법이다. 즉, 도 33(a)와 같이 송신 장치(예, 변위 벡터 계수 패킹부(12013))에서 바이-탄젠셜 성분의 패킹이 스킵되지 않은 경우이다. 그리고, 4개의 정점의 변위 벡터 계수들을 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4)만 Y 채널에 성분별로 패킹된 경우이다. 이때, 탄젠셜 성분과 바이-탄젠셜 성분은 패킹 및 전송이 수행되지 않는다. 따라서, 탄젠셜, 바이-탄젠셜 성분의 역패킹은 수행되지 않는다.
즉, 변위벡터계수 역패킹부(16012)는 도 33(b)와 같이 YUV 4:0:0 포맷으로 Y 채널의 노말 성분에 대해서만 복원을 수행할 수 있다. 이때, 복원된 Y 채널의 변위벡터계수들은 노말 성분으로 블록 내 특정순서(displacement_scan_method)에 따라 복원할 수 있다. 그리고, 송신 장치에서 노말 성분의 모든 값들을 전송하기 때문에, 노말 성분의 인코딩 이전의 데이터와 디코딩한 결과가 동일할 수 있다.
도 34(a), 도 34(b)는 실시예들에 따른 YUV 4:0:0 포맷으로 패킹된 변위 벡터 계수를 역패킹하는 다른 예시를 보인 도면이다. 좀 더 구체적으로, 도 34(a), 도 34(b)는 수신된 시그널링 정보로부터 파싱된 이미지 패킹 포맷 정보(ColourSpace_displacement_video)의 값이 YUV 4:0:0 포맷임을 지시하고(ColourSpace_displacement_video = YUV400)(예, value=1), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값이 0일 때의 역패킹 방법이다. 즉, 도 34(a)와 같이 송신 장치(예, 변위 벡터 계수 패킹부(12013))에서 바이-탄젠셜 성분의 패킹이 스킵되지 않은 경우이다. 그리고, 4개의 정점의 변위 벡터 계수들을 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4), 탄젠셜 성분(T1-T4), 바이-탄젠셜 성분(B1-B4)이 모두 Y 채널에 성분별로 패킹된 경우이다. 이를 위해, 송신 장치에서는 패킹 프레임 이미지 높이(H)의 3배만큼 Y 채널의 높이를 늘려준 후 패킹을 수행한다.
이 경우, 변위벡터계수 역패킹부(16012)는 도 34(b)와 같이 앞서 계산된 패킹 프레임의 높이(H) 정보를 이용하여 Y 채널의 0부터 H 까지는 노말 성분으로, H+1부터 2H 까지는 탄젠셜 성분으로, 2H+1부터 3H 까지는 바이-탄젠셜 성분으로 복원할 수 있다. 그리고, Y 채널의 노말, 탄젠셜, 바이-탄젠셜 성분의 변위벡터계수들은 각각 블록 내 특정순서(displacement_scan_method)에 따라 복원될 수 있다. 즉, 인코더와의 약속에 의해 Y 채널에 노말, 탄젠셜, 바이-탄젠셜 성분이 전송될 수 있고, 변위벡터계수 역패킹부(16012)는 Y 채널로부터 각각 노말, 탄젠셜, 바이-탄젠셜 성분을 복원할 수 있다.
도 35(a), 도 35(b)는 실시예들에 따른 YUV 4:0:0 포맷으로 패킹된 변위 벡터 계수를 역패킹하는 또 다른 예시를 보인 도면이다. 좀 더 구체적으로, 도 35(a), 도 35(b)는 수신된 시그널링 정보로부터 파싱된 이미지 패킹 포맷 정보(ColourSpace_displacement_video)의 값이 YUV 4:0:0 포맷임을 지시하고(ColourSpace_displacement_video = YUV400)(예, value=1), 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보 (Bi_tangent_skip_flag)의 값이 1일 때의 역패킹 방법이다. 즉, 도 35(a)와 같이 송신 장치(예, 변위 벡터 계수 패킹부(12013))에서 바이-탄젠셜 성분의 패킹이 스킵된 경우이다. 그리고, 4개의 정점의 변위 벡터 계수들을 예로 들 때, 4개의 정점의 변위 벡터 계수들의 노말 성분(N1-N4)과 탄젠셜 성분(T1-T4)이 모두 Y 채널에 성분별로 패킹된 경우이다. 이를 위해, 송신 장치에서는 패킹 프레임 이미지 높이(H)의 2배만큼 Y 채널의 높이를 늘려준 후 패킹을 수행한다.
이 경우, 변위벡터계수 역패킹부(16012)는 도 35(b)와 같이 앞서 계산된 패킹 프레임의 높이(H) 정보를 이용하여 Y 채널의 0부터 H 까지는 노말 성분으로, H+1부터 2H 까지는 탄젠셜 성분으로 복원할 수 있다. 그리고, Y 채널의 변위벡터계수들은 블록 내 특정순서(displacement_scan_method)에 따라 복원될 수 있다. 즉, 인코더와의 약속에 의해 Y 채널에 노말, 탄젠셜 성분이 전송될 수 있고, 변위벡터계수 역패킹부(16012)는 Y 채널로부터 각각 노말 성분과 탄젠셜 성분을 복원할 수 있다. 이때, 도 35(a)와 같이 송신 장치에서 노말 성분과 탄젠셜 성분의 모든 값들을 Y 채널을 통해 전송하기 때문에, 노말 성분과 탄젠셜 성분의 인코딩 이전의 데이터와 디코딩한 결과가 동일할 수 있다.
도 29 내지 도 35의 역패킹 방법 중 적어도 하나의 방법으로 역패킹된 변위 벡터 계수들은 변위벡터계수 역양자화부(16013)로 제공된다.
실시예들에 따르면, 변위벡터계수 역양자화부(16013)는 변위벡터계수 역패킹부(16012)에서 복원된 변위 벡터 계수들을 역양자화할 수 있다.
실시예들에 따르면, 변위벡터 역변환부(16014)는 역양자화된 변위 벡터 계수들에 대해 송신 장치의 인코더에서 수행된 변환의 역변환을 수행하여 변위 벡터들을 출력한다. 실시예들에 따르면, 리프팅 역변환, 웨이블릿 역변환 등이 수행될 수 있다. 만일, 변위 벡터 역변환부(16014)에서 리프팅 역변환이 수행되는 경우, 파싱받은 잔차 신호를 통해 인코더에서 예측에 사용된 정점의 변위 벡터를 업데이트 하는 과정이 수행될 수 있다.
좀 더 구체적으로, 변위벡터 역변환부(16014)는 변위벡터계수 역패킹부(16012)를 통해 정점 단위로 할당된 변위벡터계수 또는 역양자화된 변위벡터계수의 역변환을 수행한다. 변환은 실시예에 따라 리니터 리프팅(linear lifting) 변환, 버터플라이 리프팅(butterfly lifting) 변환, 웨이블릿 변환 등이 적용될 수 있다. 예를 들어, 시그널링 정보(ASPS)에 시그널링된 asps_vmc_ext_transform_method의 값이 1이면 변환 방법으로 Linear_Lifting이 사용됨었음을 지시할 수 있다.
만일 리프팅 역변환이 수행되는 경우 k번째 세분화 레벨의 정점 Rk를 예측 수행 시 예측자로 Rt(t<k 또는 t<=k)의 세분화 정점 변위 벡터를 통해 k번째 세분화 레벨의 변위벡터 예측을 수행할 수 있다.
실시예들에 따라 변위벡터의 예측 수행 시 현재 정점보다 세분화 레벨이 낮은 정점 중 연결정보를 기반으로 가까운 n개의 점을 평균 또는 거리기반 가중평균예측을 수행할 수 있다.
실시예들에 따라 메쉬 세분화 단계에서 현재 정점을 생성하기 위해 사용한 n개의 정점의 변위 벡터를 기반으로 예측을 수행할 수 있다.
또한, 리프팅 역변환이 수행되는 경우 파싱 받은 잔차 신호를 통해 인코더에서 예측에 사용된 정점의 변위 벡터를 업데이트 하는 과정이 수행될 수 있다.
좀 더 구체적으로, 변위벡터계수 역양자화부(16013)는 변위벡터계수 역패킹부(16012)를 통해 정점 단위로 할당된 변위벡터계수 또는 역변환이 수행된 변위벡터계수에 대해 역양자화를 수행한다. 실시예들에 따라 각 성분(Normal, Tangential, Bi-tangential) 별 양자화 파라미터(QP)는 시퀀스 또는 프레임 단위로 전송받아 양자화율을 결정할 수 있다.
만일, 바이-탄젠셜 성분 패킹 스킵 모드인 경우(Bi_tangent_skip_flag=1), 변위벡터계수 역양자화부(16013)는 노말 성분과 탄젠셜 성분에 대해서만 역양자화를 수행하고 바이-탄젠셜 성분에 대해서는 역양자화 수행을 스킵할 수 있다.
실시예들에 따라 변위벡터계수는 각 축마다 다른 양자화 파라미터를 통해 양자화가 수행될 수 있으며 인코더/디코더 약속에 의해 양자화 파라미터 또는 스케일링 파라미터를 유도하여 LoD 레벨 별로 양자화율을 결정할 수 있다.
실시예들에 따르면, 역변환된 변위 벡터 또는 역양자화된 변위벡터계수는 변위벡터 좌표계 역변환부(15020)로 제공된다.
실시예들에 따르면, 변위벡터 좌표계 역변환부(15020)에서, 프레임시퀀스 또는 GOF(Group of Frames) 또는 프레임 또는 서브메쉬 단위로 시그널링 정보에 포함된 좌표계 변환 여부 플래그(asps_vmc_ext_displacement_coordinate_system)를 파싱하여, 그 값이 1이면 역양자화된(또는 역변환된) 복원 변위벡터를 로컬 좌표계(n,t,b)에서 canonical 좌표계(x,y,z)로 역변환을 수행할 수 있다.
그리고, 복원 베이스 메쉬의 복원 정점 위치정보를 기반으로 정점당 노말 벡터를 계산하고, 세분화 과정을 통해 추가로 생성되는 정점에 대해 계산된 복원 베이스 메쉬의 정점 노말 벡터를 통해 보간하여 새로 생성되는 정점의 노말값을 할당할 수 있다.
이때, 보간의 경우 세분화에 사용된 베이스 메쉬의 노말정보를 평균 또는 거리기반 가중합 하여 보간을 수행할 수 있다. 또는, 동일한 평면의 세분화된 정점들에 대해 베이스 메쉬의 노말 정보를 그대로 사용할 수 있다.
그리고, 계산된 정점당 노말 벡터를 통해 노말 벡터와 직교하는 탄젠셜, 바이-탄젠셜 벡터를 계산하고 변위벡터 좌표계 역변환을 수행할 수 있다. 하기의 수학식 4의 dispn[0], dispn[1]은 역변환 및 역양자화를 수행하여 얻어진 노말, 탄센셜 성분의 결과를 의미한다. 이때, 노말, 탄젠셜, 바이-탄젠셜 성분은 모두 서로 직교하는 성질을 이용하여, 노말 성분과 탄젠셜 성분의 최종 변위벡터 외적을 통해 바이-탄젠셜 성분의 변위벡터를 계산해 낼 수 있다. 또는 Linear Regression, Multiple Regression 등의 방법을 통해 바이-탄젠셜 성분의 변위벡터를 유도하여 계산을 수행할 수 있다.
[수학식 4]
Figure PCTKR2024008873-appb-img-000017
만일, 송신 장치에서 YUV 4:0:0 포맷으로 변위벡터계수들이 패킹 된 경우에는 탄젠셜(t), 바이-탄젠셜(b) 성분이 U, V 채널을 통해 전송되지 않기 때문에 좌표계 역변환을 위한 수학식 4는
Figure PCTKR2024008873-appb-img-000018
로 표현될 수 있다. 이때는 n 성분의 역양자화 및 역변환 수행한 결과와 계산된 정점당 노말 벡터를 곱하여 좌표계 역변환을 수행할 수 있다.
또한, 동일한 정점 좌표에 대해서 역변환 수행한 결과가 여러 개 인 경우에는 모두 합산한 값이 최종 변위벡터의 값이 될 수 있다. 실시예에 따라 플래그 전송 없이 항상 좌표계 역변환을 수행할 수 있다.
도 27에서 메쉬 복원부(15016)는 메쉬 세분화부(15015)에서 세분화 과정을 통해 생성된 정점들에 복원 변위벡터를 더하여 복원 메쉬의 정점 지오메트리 정보를 계산하고 복원할 수 있다.
실시예들에 따르면, 송신 장치(또는 송신 장치의 인코더)에서 시그널링 정보는 메타데이터 처리부(도시되지 않음, 메타데이터 제너레이터 등으로 지칭 가능)에서 생성되어 송신 장치 내 해당 블록들 및/또는 수신 장치(또는 수신 장치의 디코더)로 제공될 수 있고, 수신 장치의 메타데이타 파서(도시되지 않음)에서는 수신되는 시그널링 정보를 파싱하여 해당 블록들에 제공할 수 있다. 실시예들에 따르면, 수신 장치의 각 블록은 시그널링 정보에 기반하여 각 동작을 수행할 수 있다.
도 36은 실시예들에 따른 비트스트림 내 시그널링 정보 중 아틀라스 시퀀스 파라미터 세트(ASPS)의 구조의 일 예시를 보인 도면이다. 특히, 도 36은 아틀라스 시퀀스 파라미터 셋트 확장 RBSP 신택스 및 시멘틱스(Atlas sequence parameter set extension RBSP Syntax & Semantics) 구조의 일 예시를 보인 도면이다. 즉, ASPS는 아틀라스 시퀀스 파라미터에서 확장되어 변위 벡터 인코딩에 관한 파라미터를 더 포함할 수 있다.
변위벡터 좌표계 변환 여부 플래그(asps_vmc_ext_displacement_coordinate_system)는 변위벡터 좌표계 변환여부를 식별할 수 있는 정보로서, 변위벡터 인코딩에 관한 좌표계의 타입을 나타낸다. 예를 들어, 변위벡터 좌표계 변환 여부 플래그 (asps_vmc_ext_displacement_coordinate_system) 신택스(또는 필드라 함)의 값이 0이면 송신 장치에서 canonical 좌표계를 그대로 사용하고, 1이면 local 좌표계로 변환이 이루어진 것을 지시할 수 있다. 따라서, 변위벡터 좌표계 역변환부(15020)에서는 좌표계 변환 여부 플래그(asps_vmc_ext_displacement_coordinate_system)의 값이 1이면 역양자화된(또는 역변환된) 복원 변위벡터를 로컬 좌표계(n,t,b)에서 canonical 좌표계(x,y,z)로 역변환을 수행할 수 있다.
변위벡터 변환 방법(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) 방식에 의해 변위벡터가 인코딩되었음을 나타낸다.
만일, 변위벡터 부호화 방법(asps_vmc_ext_displacement_method)이 VIDEO CODING을 지시하면, LoD 별 변위벡터 패킹 방법(asps_vmc_ext_displacement_LoD_packing_method)과 변위벡터 관련 패킹 정보(asps_vmc_ext_displacement_packing_info())가 포함될 수 있다.
LoD 별 변위벡터 패킹 방법(asps_vmc_ext_displacement_LoD_packing_method)은 변위벡터의 LoD 별 패킹 방법을 나타낸다. 예를 들어, 이 값이 0이면 전체레벨 패킹 프레임 구성에 기초하여, 1이면 레벨 별 패킹 프레임 구성에 기초하여 변위벡터를 패킹하였음을 나타낸다.
변위벡터 관련 패킹 정보(asps_vmc_ext_displacement_packing_info())는 도 37에서와 같이 변위벡터 스캔 방법(displacement_scan_method), 변위벡터 비디오 이미지의 단위 블록 수(displacementVideoBlockSize), 단위 블록의 크기 정보(geometryVideoBlockSize) 그리고 비트 뎁스(bit depth) 정보 (geometryVideoBitDepth), 이미지 패킹 포맷 정보(ColourSpace_displacement_video), 및 변위벡터 바이-탄젠셜 성분 이미지 패킹 스킵 여부를 식별하기 위한 정보(bi_tangent_skip_flag)를 포함할 수 있다.
도 37은 실시예들에 따른 비트스트림 내 시그널링 정보 중 아틀라스 시퀀스 파라미터 세트(ASPS)의 구조의 다른 예시를 보인 도면이다. 즉, 도 37은 ASPS에 포함되는 변위벡터 관련 패킹 정보(asps_vmc_ext_displacement_packing_info())의 신택스 구조의 일 예시로서, 도 36의 asps_vmc_extension( )에 포함될 수 있다.
도 37에서 변위벡터 스캔 방법(displacement_scan_method)은 변위벡터 패킹 시 스캔 순서 방법을 나타낸다. 예를 들어, 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 포맷에 기초하여 변위벡터계수들을 패킹함을 나타낸다.
바이-탄젠셜 성분 패킹 스킵 여부 플래그 (Bi_tangent_skip_flag)는 변위벡터 바이-탄젠셜 성분 이미지 패킹 스킵 여부를 식별하기 위한 정보이다. 이 값이 0이면 스킵하지 않음을 지시하고, 1이면 스킵하였음을 지시할 수 있다.
도 38은 실시예들에 따른 송신 방법의 일 예시를 보인 흐름도이다. 실시예들에 따른 송신 방법은 메쉬 데이터를 인코딩하는 단계(21011)와 인코딩된 메쉬 데이터를 포함하는 비트스트림을 전송하는 단계(21012)를 포함할 수 있다. 단계(21012)에서 전송되는 비트스트림은 베이스 메쉬 비트스트림, 변위 벡터 비트스트림, 및 텍스처 맵 비트스트림을 포함하는 것을 일 실시예로 한다.
실시예들에 따르면, 메쉬 데이터를 인코딩하는 단계(21011)는 베이스 메쉬를 인코딩하는 과정, 변위 벡터 또는 변위 벡터 변환 계수들을 인코딩하는 과정, 텍스처 맵을 인코딩하는 과정을 포함할 수 있다.
즉, 베이스 메쉬를 인코딩하는 과정에서는 우선 전송하고자 하는 원본 메쉬를 단순화 및 메쉬 파라미터라이제이션을 거쳐 베이스 메쉬를 생성한다. 생성된 베이스 메쉬는 양자화 되고, 인터 프레임인 경우에는 이전 참조 복원 베이스 메쉬로부터 모션 벡터를 계산하여 움직임 벡터를 인코딩하며, 인트라 프레임인 경우에는 스태틱 메쉬 인코딩을 통해 인코딩하여 베이스 메쉬 비트스트림으로 전송한다.
그리고 변위 벡터(또는 변위 정보)를 인코딩하는 과정에서는 메쉬 단순화를 거쳐 단순화된 메쉬를 세분화 및 피팅한 메쉬 데이터와, 앞서 인코딩 된 베이스 메쉬로부터 복원된 메쉬 데이터 간의 변위벡터를 계산한다. 계산된 변위벡터를 효율적으로 인코딩 하기 위해 변위벡터 좌표계를 로컬 좌표계로 변환하고, 로컬 좌표계의 변위벡터를 변위벡터계수로 변환 및 양자화한 후 변위벡터 비트스트림으로 인코딩하여 전송한다.
다음은 변위벡터 인코딩 과정 중 비디오 이미지 포맷 별로 변위벡터계수 이미지 패킹을 수행하는 과정에 대해서는 보다 더 상세하게 설명하기로 한다.
먼저, 로컬 좌표계로 변환된 변위벡터들에 대해 변위벡터 변환부(12011)에서 linear lifting 변환, butterfly lifting 변환 등을 수행하여 변위벡터계수로 변환할 수 있다. 또한, 로컬 좌표계로 표현된 (n,t,b)의 변위 벡터들은 각각의 노멀, 탄젠셜, 바이-탄젠셜 성분 별로 변환이 수행될 수 있다. 변위벡터 변환부(12011)에서 변환이 수행된 변위벡터계수들은 변위벡터 양자화부(12012)에서 양자화 될 수 있으며, 이때 각 채널별로 개별적인 값으로 양자화가 될 수 있다. 만일, 변위벡터계수 패킹부(12013)에서 바이-탄젠셜성분에 대해 패킹을 수행하지 않을 경우에는, 바이-탄젠셜성분에 대해 변위 벡터 변환부(12011)와 변위벡터 양자화부(12012)에서 lifting 변환 및 양자화 과정이 수행되지 않을 수 있고, Bi_tangent_skip_flag의 값을 0으로 시그널링 할 수 있다. 본 개시는 bi_tangent_skip_flag를 바이-탄젠셜 성분 패킹 스킵 여부를 식별하기 위한 정보라 지칭한다. 그리고, bi_tangent_skip_flag는 도 37에서와 같이 시그널링 정보(예, 아틀라스 시퀀스 파라미터 세트)에 시그널링되어 전송되는 것을 일 실시예로 한다.
전술한 바와 같이 양자화된 변위벡터계수들은 변위벡터계수 패킹부(12013)에서 W×H 크기의 2D 이미지로 패킹을 수행하는 과정을 거치게 된다. 예를 들어, 도 17과 같이 변위벡터계수들이 1D 형태의 LoD 오름차수로 구성되어있다면, 도 18과 같이 2D 형태로 이미지 패킹이 수행된다. 이때, Bx*by 크기를 하나의 블록으로 구성하고, 변위벡터계수들의 개수 N에 따라 결정된 L*M 개의 블록으로 변위벡터 비디오 이미지를 구성할 수 있다. 그리고, L과 M을 유도할 수 있도록 변위벡터 비디오 이미지의 단위 블록 수(displacementVideoBlockSize)와 단위 블록의 크기 정보(geometryVideoBlockSize) 그리고 bit depth 정보 (geometryVideoBitDepth)를 도 37에서와 같이 시그널링 정보(예, 아틀라스 시퀀스 파라미터 세트)에 시그널링 할 수 있다. 블록 내부는 zig-zag scan 순서 또는 2D Morton code 순서 등으로 변위벡터계수가 패킹 될 수 있으며, 변위벡터 패킹 순서 정보(displacement_scan_method)를 도 37에서와 같이 시그널링 정보(예, 아틀라스 시퀀스 파라미터 세트)에 시그널링 할 수 있다. 이때, 각 LoD 별 기본 블록 또는 전체 2D 비디오 이미지의 크기를 맞추기 위해 이미지의 중간값 또는 마지막 변위벡터계수 값 등으로 패딩이 수행될 수 있다. 각 변위벡터계수는 노말 성분, 탄젠셜 성분, 바이-탄젠셜 성분으로 구성될 수 있으며, 일부 성분은 패킹 과정에서 스킵될 수 있다. 2D 이미지 패킹을 수행하기 위해 YUV 4:4:4, YUV 4:2:0, YUV 4:0:0 등의 포맷을 선택하고 이미지 패킹 포맷 정보(ColourSpace_displacement_video)를 시그널링 할 수 있다. 본 개시는 설명의 편의를 위해 YUV 4:4:4는 제1 포맷, YUV 4:2:0는 제2 포맷, YUV 4:0:0는 제3 포맷이라 지칭한다.
YUV 4:4:4 포맷을 사용하고 바이-탄젠셜 성분 패킹을 skip하지 않는 경우에는, 도 21(a), 도 21(b)에서와 같이 노말, 탄젠셜, 바이-탄젠셜 성분의 값 그대로 각각 Y, U, V 채널로 패킹을 수행하게 되며, ColourSpace_displacement_video (value=3), Bi_tangent_skip_flag (value=0) 정보를 시그널링 할 수 있다. YUV 4:4:4 포맷을 사용하고 Bi-tangential 성분 패킹을 skip 하는 경우에는, 도 22(a), 도 22(b)에서와 같이 노말, 탄젠셜 성분들을 각각 Y 채널, U 채널로 패킹을 수행하고 V 채널에는 중간값으로 패킹할 수 있으며, ColourSpace_displacement_video (value=3), Bi_tangent_skip_flag (value=1) 정보를 시그널링 할 수 있다.
YUV 4:2:0 포맷을 사용하고 바이-탄젠셜 성분 패킹을 skip하지 않는 경우에는, 도 23(a), 도 23(b)에서와 같이 노말 성분 값에 대해서 그대로 Y채널로 패킹을 수행하고, 탄젠셜, 바이-탄젠셜 성분의 값은 인코더/디코더의 약속에 의해 샘플 되어 패킹을 수행할 수 있다. 또는 탄젠셜, 바이-탄젠셜 성분들도 Y채널로 함께 패킹되고 U 채널과 V채널에는 중간값으로 패킹을 수행할 수 있다. 또한, ColourSpace_displacement_video (value=2), Bi_tangent_skip_flag (value=0) 정보를 시그널링 할 수 있다. YUV 4:2:0 포맷을 사용하고 바이-탄젠셜 성분 패킹을 skip 하는 경우에는 도 24(a), 도 24(b)에서와 같이 노말, 탄젠셜 성분에 대해서만 Y채널로 함께 패킹하고 U 채널, V채널에는 중간값으로 패킹을 수행하게 되며, ColourSpace_displacement_video (value=2), Bi_tangent_skip_flag(value=1) 정보를 시그널링 할 수 있다.
YUV 4:0:0 포맷을 사용하고 바이-탄젠셜 성분 패킹을 skip하지 않는 경우에는, 도 25(a), 도 25(b)에서와 같이 노말 성분의 값만 Y 채널로 패킹을 수행하거나 노말, 탄젠셜, 바이-탄젠셜 성분들을 모두 Y채널로 패킹할 수 있으며, ColourSpace_displacement_video (value=1), Bi_tangent_skip_flag (value=0) 정보를 시그널링 할 수 있다. YUV 4:0:0 포맷을 사용하고 바이-탄젠셜 성분 패킹을 skip 하는 경우에는, 도 26(a), 도 26(b)에서와 같이 노말, 탄젠셜 성분들을 Y 채널에 같이 패킹을 수행하고 U 채널과 V 채널에는 중간값으로 패킹할 수 있으며, ColourSpace_displacement_video (value=3), Bi_tangent_skip_flag (value=1) 정보를 시그널링 할 수 있다.
위와 같은 패킹 방법을 통해 각 채널별로 변위벡터계수들을 이미지화하여 패킹프레임 형태의 인코딩 단위를 구성할 수 있다. 이때, 메쉬프레임 내 전체 레벨을 한 개의 패킹프레임으로 패킹하거나, 메쉬프레임 내 LoD 별로 각가의 패킹프레임으로 패킹할 수 있다. 또한, 메쉬 시퀀스 단위로 패킹방법을 의미하는 asps_vmc_ext_displacement_LoD_packing_method 신택스를 도 36에서와 같이 시그널링 정보(예, ASPS)에 시그널링 할 수 있다. 그리고, 변위벡터계수 패킹부(12013)를 통해 패킹된 2D 이미지는 변위벡터 이미지/비디오 인코딩부(12014)에서 H.264, HEVC, VVC 등의 2D 비디오 인코더를 통해 인코딩되어 변위벡터 비스트림으로 생성되게 된다.
마지막으로, 텍스처 맵의 인코딩하는 과정에서는 복원된 메쉬의 텍스처 좌표에 상응하는 색상 정보를 갖는 새로운 텍스처 맵을 텍스처 맵 생성부(11026)를 통해 생성하고, 생성된 텍스처 맵을 텍스처 맵 인코더(즉, 2D 비디오 인코더)(11027)를 통해 인코딩하여텍스처 비트스트림으로 전송한다.
상기 메쉬 데이터를 포함하는 비트스트림을 전송하는 단계(21012)에서는 상기 메쉬 데이터를 인코딩하는 단계(21011)에서 전술한 바와 같이 생성한 베이스메쉬 비트스트림, 변위벡터 비트스트림, 텍스처 비트스트림을 다중화부를 통해 하나의 비트스트림으로 생성하고, 송신부를 통해 수신 장치로 전송한다.
도 39는 실시예들에 따른 수신 방법의 일 예시를 보인 흐름도이다. 실시예들에 따른 수신 방법은 메쉬 데이터를 포함하는 비트스트림을 수신하는 단계(22011)와 비트스트림에 포함된 메쉬 데이터를 디코딩하는 단계(22012)를 포함할 수 있다. 메쉬 데이터를 포함하는 비트스트림을 수신하는 단계(22011)는 베이스 메쉬 비트스트림, 변위 벡터 비트스트림, 및 텍스처 맵 비트스트림을 포함하는 비트스트림을 수신하는 것을 일 실시예로 한다. 또한, 메쉬 데이터를 포함하는 비트스트림을 수신하는 단계(22011)는 아틀라스 시퀀스 파라미터 세트(ASPS)를 포함하는 시그널링 정보도 수신하게 된다. 이때, 시그널링 정보는 비트스트림에 포함되어 수신될 수 있으며, 메타데이터라 칭하기도 한다.
실시예들에 따르면, 메쉬 데이터를 디코딩하는 단계(22012)는 베이스 메쉬 비트스트림을 디코딩하는 과정, 변위 벡터 비트스트림을 디코딩하는 과정, 텍스처 맵 비트스트림을 디코딩하는 과정을 포함할 수 있다.
즉, 메쉬 데이터를 포함하는 비트스트림을 수신하는 단계(22011)에서 수신된 비트스트림은 역다중화부를 통해 베이스 메쉬 비트스트림, 변위벡터 비트스트림, 텍스처 맵 비트스트림으로 역다중화된 후 각각 디코딩하는 과정이 수행되게 된다.
먼저, 베이스 메쉬 비트스트림을 디코딩하는 과정에서 베이스 메쉬 비트스트림은 인터 프레임의 경우 모션 벡터 인코더(15012)를 통해, 인트라 프레임의 경우 스태틱 메쉬 디코더(15013)를 통해 디코딩이 진행된다. 디코딩된 베이스 메쉬는 베이스 메쉬 복원부(15014)를 거쳐 메쉬 세분화가 진행된다.
변위벡터 비트스트림을 디코딩하는 과정에서 변위벡터 비트스트림은 인코딩의역순으로 변위벡터계수를 디코딩하고, 역양자화 및 역변환을 수행한 후 좌표계까지 역 변환한 후 베이스 메쉬 데이터와 함께 메쉬 지오메트리 정보를 복원하게 된다.
다음은 변위벡터 디코딩 과정에 대해 도 28 내지 도 35를 참조하여 보다 더 상세하게 설명하기로 한다.
즉, 비디오 디코딩부(16011)에서는 변위벡터 비트스트림을 입력으로 받아 2D 비디오 코덱을 통해 변위벡터계수 이미지/비디오에 대한 디코딩을 수행한다. 그리고, 변위벡터계수 역패킹부(16012)에 의해 현재 메쉬 프레임에 해당하는 복원 변위벡터계수 이미지로부터 역패킹이 수행될 수 있다. 이때, 도 36 및 도 37의 시그널링 정보(예, ASPS)로부터 변위벡터 패킹 시의 scan 순서 정보 (displacement_scan_method), 변위벡터 비디오 이미지의 단위 블록 수(displacementVideoBlockSize), 단위 블록의 크기 정보(geometryVideoBlockSize) 그리고 비트 뎁스 정보(geometryVideoBitDepth)를 파싱하여 블록 및 패킹 프레임 사이즈 (bx, by 및 L, M)을 유도하고, 패킹된 변위벡터계수에 대해 역패킹을 수행할 수 있다. 또한, 역패킹 수행 과정에서 패킹 이미지 포맷 정보(ColourSpace_displacement_video)와 Bi-tangential 성분 패킹 skip 여부 (Bi_tangent_skip_flag)를 시그널링 정보(예, ASPS)로부터 파싱한다. 이때, 전송된 이미지 패킹 포맷과 포함하고 있는 변위벡터계수 성분에 따라 변환계수 유도 방법이 다를 수 있다.
파싱한 정보가 ColourSpace_displacement_video=3, Bi_tangent_skip_flag=0 인 경우에는 도 29(a), 도 29(b)에서와 같이 YUV 4:4:4 포맷을 사용하여 Y, U, V 채널로부터 노말, 탄젠셜, 바이-탄젠셜 성분을 각각 차례대로 복원할 수 있다. ColourSpace_displacement_video=3, Bi_tangent_skip_flag=1 인 경우에는 도 30(a), 도 30(b)에서와 같이 YUV 4:4:4 포맷에서 Y, U 채널로부터 노말, 탄젠셜 성분을 각각 복원할 수 있으며, 바이-탄젠셜 성분은 0 값으로 초기화 또는 V 채널로부터 유도할 수 있다.
파싱한 정보가 ColourSpace_displacement_video=2, Bi_tangent_skip_flag=0 인 경우에는 도 31(a), 도 31(b)에서와 같이 YUV 4:2:0 포맷을 사용하여 Y, U, V 채널로부터 노말, 탄젠셜, 바이-탄젠셜 성분을 각각 차례대로 복원할 수 있다. 이때, U, V 채널의 탄젠셜, 바이-탄젠셜 성분은 인코더/디코더 약속에 의해 샘플링 된 결과 일 수 있으며, 복원되는 값 또는 위치도 정해진 상태로 복원 될 수 있다. 또는 Y 채널에 노말, 탄젠셜, 바이-탄젠셜 성분이 모두 패킹되어 있을 수 있고, Y 채널로부터 각각의 성분으로 복원할 수 있으며 U, V 채널은 중간값으로 이루어져 있을 수 있다. ColourSpace_displacement_video=2, Bi_tangent_skip_flag=1 인 경우에는 도 32(a), 도 32(b)에서와 같이 YUV 4:2:0 포맷에서 Y 채널로부터 노말, 탄젠셜 성분을 각각 복원할 수 있으며, 바이-탄젠셜 성분은 0 값으로 초기화 또는 V 채널로부터 유도할 수 있다.
파싱한 정보가 ColourSpace_displacement_video=1, Bi_tangent_skip_flag=0 인 경우에는 도 33(a), 도 33(b)에서와 같이 YUV 4:0:0 포맷을 사용하여 Y 채널로부터 노말 성분만을 복원할 수 있다. 또는 Y 채널에 노말, 탄젠셜, 바이-탄젠셜 성분이 모두 패킹되어 있을 수 있고, 이 경우 도 34(a), 도 34(b)에서와 같이 Y 채널로부터 노말, 탄젠셜, 바이-탄젠셜 성분을 각각 차례대로 복원할 수 있다. ColourSpace_displacement_video=1, Bi_tangent_skip_flag=1 인 경우에는 도 35(a), 도 35(b)에서와 같이 YUV 4:0:0 포맷에서 Y 채널로부터 노말, 탄젠셜 성분을 각각 복원할 수 있으며, 바이-탄젠셜 성분은 0 값으로 초기화 또는 V 채널로부터 유도할 수 있다.
도 29 내지 도 35 중 어느 하나의 방법으로 역패킹이 수행되어 정점단위로 할당된 변위벡터계수들에 대해 변위벡터계수 역자화부(16013)에서 역양자화가 수행된다. 만일, 파싱한 정보가 Bi_tangent_skip_flag=1 인 경우에는 바이-탄젠셜 성분을 제외한 노말, 탄젠셜 성분의 변위벡터계수들에 대해서만 역양자화가 수행될 수 있다. 이때, 각 변위벡터계수는 각 축마다 다른 양자화 파라미터를 통해 양자화가 수행될 수 있으며, 양자화 파라미터 또는 스케일링 파라미터를 유도하여 LoD 레벨 별로 양자화율을 결정할 수 있다.
상기 역양자화가 수행된 변위벡터계수들은 시그널링 정보에 시그널링된 asps_vmc_ext_transform_method에서 파싱한 변환 방법을 기반으로 변위벡터 역변환부(16014)에서 역변환이 수행되어 복원 변위벡터가 계산된다. 그리고, 파싱한 정보가 Bi_tangent_skip_flag=1 인 경우에는 바이-탄젠셜 성분을 제외한 노말, 탄젠셜 성분의 역양자화 결과에 대해서 역변환 과정이 수행될 수 있다. 노말, 탄젠셜, 바이-탄젠셜 성분은 모두 서로 직교하는 성질을 이용하여, 노말 성분과 탄젠셜 성분의 최종 변위벡터를 외적 하여 바이-탄젠셜 성분의 변위벡터를 계산해 낼 수 있다. 또는 Linear Regression, Multiple Regression 등의 방법을 통해 바이-탄젠셜 성분의 변위벡터를 유도할 수 있다.
변위벡터 역변환부(16014)를 통해 변위벡터가 모두 역변환이 되면, 변위 벡터 좌표계 역변환부(15020)에서는 도 36에서와 같이 시그널링 정보에 시그널링된 asps_vmc_ext_displacement_coordinate_system 를 파싱하여, 그 값이 1인 경우 복원된 변위 벡터를 local 좌표계 (n,t,b)에서 canonical 좌표계 (x,y,z)로 역변환한다. 일 실시예로, 복원 베이스 메쉬의 복원 정점 위치정보를 기반으로 정점당 노말 벡터를 계산하고, 계산된 정점당 노말 벡터를 통해 노말 벡터와 직교하는 탄젠셜, 바이-탄젠셜 벡터를 계산하여 변위벡터 좌표계 역변환을 수행할 수 있다.
만일, 상기 asps_vmc_ext_displacement_coordinate_system의 값이 0이면, 계산된 복원 변위벡터가 그대로 최종 복원된 변위벡터가 될 수 있다. 그리고, 동일한 정점 좌표에 대해서 역변환 수행한 결과가 여러 개 인 경우에는 모두 합산한 값이 최종 변위벡터의 값이 될 수 있다. 메쉬 복원부(15016)에서는 메쉬 세분화 과정을 통해 생성된 정점들에 복원 변위벡터를 더하여 복원 메쉬의 정점 지오메트리 정보를 계산하여, 최종 기하 정보를 복원할 수 있다.
그리고, 텍스터 맵 비트스트림을 디코딩하는 과정에서는 전송받은 텍스처 맵 비트스트림을 텍스처 맵 디코더(15021)를 통해 디코딩한다. 디코딩된 텍스쳐 맵은 메쉬 벽원부(15016)에서 복원된 지오메트리 정보와 함께 최종적인 복원 메쉬를 생성하게 된다.
현재 V-DMC에 적용된 메쉬 압축 기술에서 변위벡터는 압축의 효율성을 위해 로컬 좌표계로 변환 후 lifting 변환 및 양자화를 거쳐 단순한 형태의 변위벡터계수로 변환한 후 압축을 수행한다. 그리고, 기존의 기술에서는 이 과정을 좌표계 변환으로 생성된 노말, 탄젠셜, 바이-탄젠셜 의 모든 성분에 대해 인코더에서 계산을 수행하고 그 결과인 각 성분의 변위벡터계수를 2D 이미지로 패킹하여 전송하고 있다.
본 개시는 보다 더 효율적인 용량으로 데이터 빠르게 전송하기 위해 3 가지 성분 중 노말, 탄젠셜 의 2가지 성분의 변위벡터계수를 패킹하여 전송하고, 디코더에서 전송받은 노말, 탄젠셜 성분의 변위벡터를 디코딩한 후 바이-탄젠셜 성분을 계산하는 방법을 도 15 내지 도 39에서 설명한 바와 같이 제안하고 있다. 이렇게 함으로써, 본 개시에서는 변위벡터 3가지 성분 중 2가지 성분만 인코딩하여 전송하면 되므로 변위벡터 서브비트스트림 측면에서는 기존 대비 약 3분의 2 수준의 용량 절감 효과를 볼 수 있다. 또한, YUV 4:4:4, YUV 4:2:0, YUV 4:0:0 등의 2D 비디오 이미지 압축 포맷에 따른 패킹 및 인코딩/디코딩할 수 있는 시그널링 방법을 도 36 및 도 37과 같이 제안함으로써, 각 영상 포맷에 맞게 효율적인 패킹을 수행할 수 있고 용량 절감으로 인한 실시간 메쉬 데이터 전송 속도면에서도 효과적이다.
전술한 각각의 파트, 모듈 또는 유닛은 메모리(또는 저장 유닛)에 저장된 연속된 수행과정들을 실행하는 소프트웨어, 프로세서, 하드웨어 파트일 수 있다. 전술한 실시예에 기술된 각 단계들은 프로세서, 소프트웨어, 하드웨어 파트들에 의해 수행될 수 있다. 전술한 실시예에 기술된 각 모듈/블락/유닛들은 프로세서, 소프트웨어, 하드웨어로서 동작할 수 있다. 또한, 실시예들이 제시하는 방법들은 코드로서 실행될 수 있다. 이 코드는 프로세서가 읽을 수 있는 저장매체에 쓰여질 수 있고, 따라서 장치(apparatus)가 제공하는 프로세서에 의해 읽혀질 수 있다.
또한 명세서 전체에서, 어떤 부분이 어떤 구성 요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다. 그리고 명세서에 기재된 “…부”등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
본 명세서는 설명의 편의를 위하여 각 도면을 나누어 설명하였으나, 각 도면에 서술되어 있는 실시 예들을 병합하여 새로운 실시 예를 구현하도록 설계하는 것도 가능하다. 그리고, 통상의 기술자의 필요에 따라, 이전에 설명된 실시 예들을 실행하기 위한 프로그램이 기록되어 있는 컴퓨터에서 판독 가능한 기록 매체를 설계하는 것도 실시예들의 권리범위에 속한다.
실시예들에 따른 장치 및 방법은 상술한 바와 같이 설명된 실시 예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 실시 예들은 다양한 변형이 이루어질 수 있도록 각 실시 예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
실시예들의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 실시예들은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 실시예들의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 실시예들의 기술적 사상이나 전망으로부터 개별적으로 이해돼서는 안 될 것이다.
실시예들의 장치의 다양한 구성요소들은 하드웨어, 소프트웨어, 펌웨어 또는 그것들의 조합에 의해 수행될 수 있다. 실시예들의 다양한 구성요소들은 하나의 칩, 예를 들면 하나의 하드웨어 서킷으로 구현될 수 있다. 실시예들에 따른 구성요소들은 각각 별도의 칩들로 구현될 수 있다. 실시예들에 따른 장치의 구성요소들 중 적어도 하나 이상은 하나 또는 그 이상의 프로그램들을 실행 할 수 있는 하나 또는 그 이상의 프로세서들로 구성될 수 있으며, 하나 또는 그 이상의 프로그램들은 실시예들에 따른 동작/방법들 중 어느 하나 또는 그 이상의 동작/방법들을 수행시키거나, 수행시키기 위한 인스트럭션들을 포함할 수 있다. 실시예들에 따른 장치의 방법/동작들을 수행하기 위한 실행 가능한 인스트럭션들은 하나 또는 그 이상의 프로세서들에 의해 실행되기 위해 구성된 일시적이지 않은 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사용자 인풋 시그널은 모두 사용자 인풋 시그널들이지만, 문맥 상 명확하게 나타내지 않는 한 동일한 사용자 인풋 시그널들을 의미하지 않는다.
실시예들을 설명하기 위해 사용된 용어는 특정 실시예들을 설명하기 위한 목적으로 사용되고, 실시예들을 제한하기 위해서 의도되지 않는다. 실시예들의 설명 및 청구항에서 사용된 바와 같이, 문맥 상 명확하게 지칭하지 않는 한 단수는 복수를 포함하는 것으로 의도된다. 및/또는 표현은 용어 간의 모든 가능한 결합을 포함하는 의미로 사용된다. “포함한다” 표현은 특징들, 수들, 단계들, 엘리먼트들, 및/또는 컴포넌트들이 존재하는 것을 설명하고, 추가적인 특징들, 수들, 단계들, 엘리먼트들, 및/또는 컴포넌트들을 포함하지 않는 것을 의미하지 않는다. 실시예들을 설명하기 위해 사용되는, ~인 경우, ~때 등의 조건 표현은 선택적인 경우로만 제한 해석되지 않는다. 특정 조건을 만족하는 때, 특정 조건에 대응하여 관련 동작을 수행하거나, 관련 정의가 해석되도록 의도되었다.
상술한 바와 같이, 실시예들을 실시하기 위한 최선의 형태에서 관련 내용을 설명하였다.
상술한 바와 같이, 실시예들은 3D 데이터 송수신 장치 및 시스템에 전체적 또는 부분적으로 적용될 수 있다. 당업자는 실시예들의 범위 내에서 실시예들을 다양하게 변경 또는 변형할 수 있다. 실시예들은 변경/변형들을 포함할 수 있고, 변경/변형은 청구항들 및 그 와 동일한 것들의 범위를 벗어나지 않는다.

Claims (16)

  1. 베이스 메쉬 비트스트림, 변위 벡터 비트스트림, 텍스처 맵 비트스트림, 및 시그널링 정보를 수신하는 단계;
    상기 베이스 메쉬 비트스트림으로부터 베이스 메쉬를 복원하는 베이스 메쉬 처리 단계;
    상기 변위 벡터 비트스트림으로부터 변위 정보를 복원하는 변위 정보 처리 단계;
    상기 베이스 메쉬와 상기 변위 정보를 기반으로 메쉬를 복원하는 복원 단계; 및
    상기 텍스처 맵 비트스트림으로부터 텍스처 맵을 복원하는 텍스처 맵 처리 단계를 포함하는 메쉬 데이터 디코딩 방법.
  2. 제 1 항에 있어서, 상기 변위 정보 처리 단계는
    상기 변위 벡터 비트스트림을 변위 정보로 디코딩하는 단계;
    제1 포맷, 제2 포맷, 제3 포맷 중 상기 변위 정보에 적용된 포맷을 식별하고, 상기 식별된 포맷을 기반으로 상기 변위 정보에 포함된 노말 성분, 탄젠셜 성분, 또는 바이-탄젠셜 성분 중 적어도 하나의 성분을 역패킹하는 단계; 및
    상기 역패킹된 변위 정보의 로컬 좌표계를 오리지날 좌표계로 역변환하는 단계를 포함하는 메쉬 데이터 디코딩 방법.
  3. 제 2 항에 있어서,
    상기 시그널링 정보는 상기 변위 정보에 적용된 포맷을 식별하기 위한 정보를 포함하는 메쉬 데이터 디코딩 방법.
  4. 제 3 항에 있어서,
    상기 시그널링 정보는 상기 바이-탄젠셜 성분의 패킹이 스킵되었는지 여부를 식별하기 위한 정보를 더 포함하고,
    상기 역패킹 단계는 상기 시그널링 정보를 기반으로 상기 노말 성분, 탄젠셜 성분, 또는 바이-탄젠셜 성분 중 적어도 하나의 성분의 역패킹 방법을 결정하는 메쉬 데이터 디코딩 방법.
  5. 베이스 메쉬 비트스트림, 변위 벡터 비트스트림, 텍스처 맵 비트스트림, 및 시그널링 정보를 수신하는 수신부;
    상기 베이스 메쉬 비트스트림으로부터 베이스 메쉬를 복원하는 베이스 메쉬 처리부;
    상기 변위 벡터 비트스트림으로부터 변위 정보를 복원하는 변위 정보 처리부;
    상기 베이스 메쉬와 상기 변위 정보를 기반으로 메쉬를 복원하는 복원부; 및
    상기 텍스처 맵 비트스트림으로부터 텍스처 맵을 복원하는 텍스처 맵 처리부를 포함하는 메쉬 데이터 디코딩 장치.
  6. 제 5 항에 있어서, 상기 변위 정보 처리부는
    상기 변위 벡터 비트스트림을 변위 정보로 디코딩하는 변위 정보 디코딩부;
    제1 포맷, 제2 포맷, 제3 포맷 중 상기 변위 정보에 적용된 포맷을 식별하고, 상기 식별된 포맷을 기반으로 상기 변위 정보에 포함된 노말 성분, 탄젠셜 성분, 또는 바이-탄젠셜 성분 중 적어도 하나의 성분을 역패킹하는 변위 정보 역패킹부; 및
    상기 역패킹된 변위 정보의 로컬 좌표계를 오리지날 좌표계로 역변환하는 좌표계 역변환부를 포함하는 메쉬 데이터 디코딩 장치.
  7. 원본 메쉬를 인코딩하는 단계; 및
    상기 인코딩된 메쉬와 시그널링 정보를 포함하는 비트스트림을 전송하는 단계를 포함하는 메쉬 데이터 인코딩 방법.
  8. 제 7 항에 있어서, 상기 인코딩 단계는
    상기 원본 메쉬를 단순화하여 생성된 베이스 메쉬를 인코딩하여 베이스 메쉬 비트스트림을 생성하는 베이스 메쉬 처리 단계;
    상기 베이스 메쉬를 기반으로 생성된 변위 정보를 인코딩하여 변위 벡터 비트스트림을 생성하는 변위 정보 처리 단계;
    상기 인코딩된 베이스 메쉬와 상기 인코딩된 변위 정보를 기반으로 메쉬를 복원하는 메쉬 복원 단계; 및
    상기 원본 메쉬와 상기 복원된 메쉬를 기반으로 생성된 텍스처 맵을 인코딩하여 텍스처 맵 비트스트림을 생성하는 텍스처 맵 처리 단계를 포함하는 메쉬 데이터 인코딩 방법.
  9. 제 8 항에 있어서, 상기 변위 정보 처리 단계는
    상기 변위 정보의 좌표계를 로컬 좌표계로 변환하는 단계;
    상기 로컬 좌표계의 변위 정보에 포함된 노말 성분, 탄젠셜 성분, 또는 바이-탄젠셜 성분 중 적어도 하나의 성분에 대해 제1 포맷, 제2 포맷, 또는 제3 포맷 중 하나의 포맷을 기반으로 패킹을 수행하는 단계; 및
    상기 패킹된 변위 정보를 인코딩하는 단계를 포함하는 메쉬 데이터 인코딩 방법.
  10. 제 8 항에 있어서, 상기 패킹 단계는
    상기 변위 정보의 바이-탄젠셜 성분에 대해 선택적으로 패킹을 수행하며,
    상기 시그널링 정보는 상기 바이-탄젠셜 성분의 패킹이 스킵되었는지 여부를 식별하기 위한 정보를 포함하는 메쉬 데이터 인코딩 방법.
  11. 제 8 항에 있어서,
    상기 시그널링 정보는 상기 변위 정보에 적용된 포맷을 식별하기 위한 정보를 포함하는 메쉬 데이터 인코딩 방법.
  12. 원본 메쉬를 인코딩하는 인코더; 및
    상기 인코딩된 메쉬와 시그널링 정보를 포함하는 비트스트림을 전송하는 전송부를 포함하는 메쉬 데이터 인코딩 장치.
  13. 제 12 항에 있어서, 상기 인코더는
    상기 원본 메쉬를 단순화하여 생성된 베이스 메쉬를 인코딩하여 베이스 메쉬 비트스트림을 생성하는 베이스 메쉬 처리부;
    상기 베이스 메쉬를 기반으로 생성된 변위 정보를 인코딩하여 변위 벡터 비트스트림을 생성하는 변위 정보 처리부;
    상기 인코딩된 베이스 메쉬와 상기 인코딩된 변위 정보를 기반으로 메쉬를 복원하는 메쉬 복원부; 및
    상기 원본 메쉬와 상기 복원된 메쉬를 기반으로 생성된 텍스처 맵을 인코딩하여 텍스처 맵 비트스트림을 생성하는 텍스처 맵 처리부를 포함하는 메쉬 데이터 인코딩 장치.
  14. 제 13 항에 있어서, 상기 변위 정보 처리부는
    상기 변위 정보의 좌표계를 로컬 좌표계로 변환하는 변위 정보 좌표계 변환부;
    상기 로컬 좌표계의 변위 정보에 포함된 노말 성분, 탄젠셜 성분, 또는 바이-탄젠셜 성분 중 적어도 하나의 성분에 대해 제1 포맷, 제2 포맷, 또는 제3 포맷 중 하나의 포맷을 기반으로 패킹을 수행하는 변위 정보 패킹부; 및
    상기 패킹된 변위 정보를 인코딩하는 변위 정보 인코딩부를 포함하는 메쉬 데이터 인코딩 장치.
  15. 제 13 항에 있어서, 상기 변위 정보 패킹부는
    상기 변위 정보의 바이-탄젠셜 성분에 대해 선택적으로 패킹을 수행하며,
    상기 시그널링 정보는 상기 바이-탄젠셜 성분의 패킹이 스킵되었는지 여부를 식별하기 위한 정보를 포함하는 메쉬 데이터 인코딩 장치.
  16. 제 13 항에 있어서,
    상기 시그널링 정보는 상기 변위 정보에 적용된 포맷을 식별하기 위한 정보를 포함하는 메쉬 데이터 인코딩 장치.
PCT/KR2024/008873 2023-06-26 2024-06-26 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법 Ceased WO2025005646A1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP24832424.6A EP4734518A1 (en) 2023-06-26 2024-06-26 Mesh data transmission device, mesh data transmission method, mesh data reception device and mesh data reception method
CN202480042395.3A CN121420558A (zh) 2023-06-26 2024-06-26 网格数据发送设备、网格数据发送方法、网格数据接收设备和网格数据接收方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2023-0082062 2023-06-26
KR20230082062 2023-06-26

Publications (1)

Publication Number Publication Date
WO2025005646A1 true WO2025005646A1 (ko) 2025-01-02

Family

ID=93939215

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2024/008873 Ceased WO2025005646A1 (ko) 2023-06-26 2024-06-26 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법

Country Status (3)

Country Link
EP (1) EP4734518A1 (ko)
CN (1) CN121420558A (ko)
WO (1) WO2025005646A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210112240A1 (en) * 2018-02-23 2021-04-15 Nokia Technologies Oy Encoding and decoding of volumetric video
US20210287431A1 (en) * 2020-03-15 2021-09-16 Intel Corporation Apparatus and method for displaced mesh compression
KR102373833B1 (ko) * 2020-01-09 2022-03-14 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US20220108483A1 (en) * 2020-10-06 2022-04-07 Sony Group Corporation Video based mesh compression
KR20220126225A (ko) * 2021-03-08 2022-09-15 현대자동차주식회사 포인트 클라우드 압축을 이용하는 메시 압축 방법 및 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210112240A1 (en) * 2018-02-23 2021-04-15 Nokia Technologies Oy Encoding and decoding of volumetric video
KR102373833B1 (ko) * 2020-01-09 2022-03-14 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US20210287431A1 (en) * 2020-03-15 2021-09-16 Intel Corporation Apparatus and method for displaced mesh compression
US20220108483A1 (en) * 2020-10-06 2022-04-07 Sony Group Corporation Video based mesh compression
KR20220126225A (ko) * 2021-03-08 2022-09-15 현대자동차주식회사 포인트 클라우드 압축을 이용하는 메시 압축 방법 및 장치

Also Published As

Publication number Publication date
EP4734518A1 (en) 2026-04-29
CN121420558A (zh) 2026-01-27

Similar Documents

Publication Publication Date Title
WO2024063544A1 (ko) 3d 데이터 송신 장치, 3d 데이터 송신 방법, 3d 데이터 수신 장치 및 3d 데이터 수신 방법
WO2020190075A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2020190114A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2020189895A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2024049197A1 (ko) 3d 데이터 송신 장치, 3d 데이터 송신 방법, 3d 데이터 수신 장치 및 3d 데이터 수신 방법
WO2021029511A1 (ko) 포인트 클라우드 데이터 전송 장치, 포인트 클라우드 데이터 전송 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2023172098A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2020190097A1 (ko) 포인트 클라우드 데이터 수신 장치, 포인트 클라우드 데이터 수신 방법, 포인트 클라우드 데이터 처리 장치 및 포인트 클라우드 데이터 처리 방법
WO2023136653A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2024123039A1 (ko) 3d 데이터 송신 장치, 3d 데이터 송신 방법, 3d 데이터 수신 장치 및 3d 데이터 수신 방법
WO2022050688A1 (ko) 3d 데이터 송신 장치, 3d 데이터 송신 방법, 3d 데이터 수신 장치 및 3d 데이터 수신 방법
WO2025048542A1 (ko) 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법
WO2024215096A1 (ko) 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법
WO2024191257A1 (ko) 3d 데이터 송신 장치, 3d 데이터 송신 방법, 3d 데이터 수신 장치 및 3d 데이터 수신 방법
WO2022098140A1 (ko) 포인트 클라우드 데이터 전송 방법, 포인트 클라우드 데이터 전송 장치, 포인트 클라우드 데이터 수신 방법 및 포인트 클라우드 데이터 수신 장치
WO2024186127A1 (ko) 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법
WO2024191192A1 (ko) 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법
WO2024185940A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2025005646A1 (ko) 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법
WO2025230333A1 (ko) 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법
WO2025263884A1 (ko) 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법
WO2025193057A1 (ko) 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법
WO2025071369A1 (ko) 메쉬 데이터 송신 장치, 메쉬 데이터 송신 방법, 메쉬 데이터 수신 장치 및 메쉬 데이터 수신 방법
WO2021201386A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2024205193A2 (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: 24832424

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2024832424

Country of ref document: EP

Effective date: 20260126

WWE Wipo information: entry into national phase

Ref document number: 2024832424

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2024832424

Country of ref document: EP

Effective date: 20260126

ENP Entry into the national phase

Ref document number: 2024832424

Country of ref document: EP

Effective date: 20260126