Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method

By partitioning point cloud data into subgroups and performing neighbor search, the problems of high computational complexity and latency in point cloud data processing are solved, achieving efficient encoding and decoding performance and improved point cloud service quality, supporting autonomous driving services.

CN121666754APending Publication Date: 2026-03-13LG ELECTRONICS INC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-07-26
Publication Date
2026-03-13

AI Technical Summary

Technical Problem

Existing technologies suffer from high computational complexity and latency when processing point cloud data, especially when sending and receiving large amounts of point cloud data, where the encoding and decoding processes are complex and time-consuming.

Method used

By partitioning point cloud data into subgroups and performing neighbor search based on the mismatch between subgroup boundaries and occupancy map information boundaries, effective decoding and encoding of geometric and attribute data are achieved. Geometric and attribute data are processed separately using geometric decoders and attribute decoders.

Benefits of technology

It improves the quality of point cloud services, achieves high-efficiency encoding and decoding performance, supports autonomous driving services, and provides improved parallel processing and scalability through spatial adaptive partitioning, thereby improving transmission and storage efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121666754A_ABST
    Figure CN121666754A_ABST
Patent Text Reader

Abstract

The invention discloses a point cloud data decoding method and device. A point cloud data decoding method according to an embodiment may comprise the steps of: receiving geometric data, attribute data, and signaling information; decoding the geometric data based on the signaling information; and decoding the attribute data based on the signaling information and the decoded geometry data.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments relate to methods and apparatus for processing point cloud content. Background Technology

[0002] Point cloud content is content represented by a point cloud, which is a collection of points belonging to a coordinate system representing a three-dimensional space (or volume). Point cloud content can represent media configured in three dimensions and is used to provide various services such as virtual reality (VR), augmented reality (AR), mixed reality (MR), XR (scaled reality), and autonomous driving services. However, tens of thousands to hundreds of thousands of points are needed to represent point cloud content. Therefore, methods for efficiently processing large amounts of point data are required.

[0003] In other words, high throughput is required to send and receive point cloud data. Therefore, the process of sending and receiving point cloud data, which involves encoding for compression and decoding for decompression, is computationally complex and time-consuming due to the large amount of point cloud data. Summary of the Invention

[0004] Technical issues

[0005] Designed to solve the above problems, the purpose of this disclosure is to provide an apparatus and method for efficiently transmitting / receiving point clouds.

[0006] The purpose of these embodiments is to provide an apparatus and method for addressing latency and encoding / decoding complexity.

[0007] Another objective of the embodiments is to provide an apparatus and method for efficiently providing scalable services by performing neighbor searches on a subgroup basis.

[0008] The technical objectives are not limited to those described above, and the scope of the embodiments can be extended to other technical objectives that can be deduced by those skilled in the art based on the entire specification.

[0009] Technical solution

[0010] To achieve these and other advantages and in accordance with the purposes of this disclosure, as embodied and broadly described herein, a method for decoding point cloud data may include: receiving geometric data, attribute data, and signaling information; decoding the geometric data based on the signaling information; and decoding the attribute data based on the signaling information and the decoded geometric data.

[0011] According to an embodiment, decoding geometric data may include: receiving geometric data based on a subgroup; and reconstructing the geometric data within the subgroup based on signaling information and occupancy map information corresponding to the subgroup to be decoded.

[0012] According to an embodiment, the reconstruction may include: updating the boundary of the occupancy graph information based on the mismatch between the boundary of the bounding box of the subgroup and the boundary of the occupancy graph information; searching for neighboring nodes of the current node to be decoded within the subgroup based on the updated boundary of the occupancy graph information and generating a neighbor pattern; and reconstructing the geometric data of the current node based on the neighbor pattern.

[0013] According to an embodiment, the update may include: updating the minimum value of the boundary of the occupancy map information to the minimum value of the boundary of the subgroup's bounding box, based on the fact that the minimum value of the boundary of the subgroup's bounding box is greater than the minimum value of the boundary of the occupancy map information; and updating the maximum value of the boundary of the occupancy map information to the maximum value of the boundary of the subgroup's bounding box, based on the fact that the maximum value of the boundary of the subgroup's bounding box is less than the maximum value of the boundary of the occupancy map information.

[0014] According to an embodiment, an apparatus for decoding point cloud data may include: a receiver configured to receive geometric data, attribute data, and signaling information; a geometric decoder configured to decode the geometric data based on the signaling information; and an attribute decoder configured to decode the attribute data based on the signaling information and the decoded geometric data.

[0015] According to an embodiment, the geometry decoder is configured to: receive geometry data based on subgroups; and reconstruct the geometry data within a subgroup based on signaling information and occupancy map information corresponding to the subgroup to be decoded.

[0016] According to an embodiment, the reconstruction decoder is configured to: update the boundary of the occupancy graph information based on the mismatch between the boundary of the bounding box of the subgroup and the boundary of the occupancy graph information; search for neighboring nodes of the current node to be decoded within the subgroup based on the updated boundary of the occupancy graph information and generate a neighbor pattern; and reconstruct the geometric data of the current node based on the neighbor pattern.

[0017] According to an embodiment, the geometric decoder is configured to: update the minimum value of the boundary of the bounding box of the subgroup to the minimum value of the boundary of the occupancy graph information when the minimum value of the boundary of the occupancy graph information is greater than the minimum value of the boundary of the occupancy graph information; and update the maximum value of the boundary of the occupancy graph information to the maximum value of the boundary of the bounding box of the subgroup when the maximum value of the boundary of the bounding box of the subgroup is less than the maximum value of the boundary of the occupancy graph information.

[0018] According to an embodiment, the method for encoding point cloud data may include: encoding geometric data; encoding attribute data; and transmitting the encoded geometric data, encoded attribute data, and signaling information.

[0019] According to an embodiment, encoding geometric data may include: partitioning the geometric data based on subgroups; and compressing the geometric data within a subgroup based on occupancy map information corresponding to the subgroup to be encoded.

[0020] According to an embodiment, compression may include: updating the boundary of the occupancy graph information based on the mismatch between the boundary of the bounding box of the subgroup and the boundary of the occupancy graph information; searching for neighboring nodes of the current node to be encoded within the subgroup and generating a neighbor pattern based on the updated boundary of the occupancy graph information; and compressing the geometric data of the current node based on the neighbor pattern.

[0021] According to an embodiment, the update may include: updating the minimum value of the boundary of the bounding box of the subgroup to the minimum value of the boundary of the occupancy map information, based on the fact that the minimum value of the boundary of the occupancy map information is greater than the minimum value of the boundary of the occupancy map information; and updating the maximum value of the boundary of the occupancy map information to the maximum value of the boundary of the bounding box of the subgroup, based on the fact that the maximum value of the boundary of the bounding box of the subgroup is less than the maximum value of the boundary of the occupancy map information.

[0022] According to an embodiment, an apparatus for encoding point cloud data may include: a geometric encoder configured to encode geometric data; an attribute encoder configured to encode attribute data; and a transmitter configured to transmit the encoded geometric data, the encoded attribute data, and signaling information.

[0023] According to an embodiment, the geometry encoder is configured to: partition geometric data based on subgroups; and compress geometric data within a subgroup based on occupancy map information corresponding to the subgroup to be encoded.

[0024] According to an embodiment, the geometric encoder is configured to: update the boundary of the occupancy map information based on the boundary of the bounding box of the subgroup which does not match the boundary of the occupancy map information; search for neighboring nodes of the current node to be encoded within the subgroup and generate a neighbor pattern based on the updated boundary of the occupancy map information; and compress the geometric data of the current node based on the neighbor pattern.

[0025] According to an embodiment, the geometric encoder is configured to: update the minimum value of the boundary of the occupancy map information to the minimum value of the boundary of the subgroup's bounding box if the minimum value of the boundary of the subgroup's bounding box is greater than the minimum value of the boundary of the occupancy map information; and update the maximum value of the boundary of the occupancy map information to the maximum value of the boundary of the subgroup's bounding box if the maximum value of the boundary of the subgroup's bounding box is less than the maximum value of the boundary of the occupancy map information.

[0026] Beneficial effects

[0027] The apparatus and method according to the embodiments can provide high-quality point cloud services.

[0028] The apparatus and method according to the embodiments can implement various video codec schemes.

[0029] The apparatus and method according to the embodiments can provide general point cloud content, such as for autonomous driving services.

[0030] The apparatus and method according to the embodiments can provide improved parallel processing and scalability by performing spatial adaptive partitioning on point cloud data for independent encoding and decoding of point cloud data.

[0031] The apparatus and method according to the embodiments can improve point cloud encoding and decoding performance by partitioning point cloud data into tiles and / or slices to perform encoding and decoding and by signaling the data required for them.

[0032] The apparatus and method according to the embodiments can partition and transmit compressed data for point cloud data according to specific standards. Furthermore, when using layered encoding, compressed data can be partitioned and transmitted according to layers. Therefore, the storage and transmission efficiency of the transmitting apparatus can be increased.

[0033] The apparatus and method according to the embodiments can increase the efficiency of scalable geometry encoding / decoding by performing neighbor search based on subgroup boundaries and the boundaries of the geometry occupancy atlas during geometry encoding / decoding.

[0034] The apparatus and method according to the embodiments can improve geometry encoding and decoding performance by adjusting the boundaries of the geometry occupancy atlas based on subgroup boundaries and performing a neighbor search during geometry encoding. Attached Figure Description

[0035] The accompanying drawings are included to provide a further understanding of this disclosure and are incorporated in and constitute a part of this application. The drawings illustrate embodiments of the disclosure and, together with the description, serve to explain the principles of the disclosure. In the drawings: Figure 1 The illustration shows an example of a point cloud content provision system according to an embodiment.

[0036] Figure 2 This is a block diagram illustrating the operation of providing point cloud content according to an embodiment.

[0037] Figure 3 The illustration shows an example of a point cloud encoder according to an embodiment.

[0038] Figure 4 The illustration shows an example of an octree and occupancy code according to an embodiment.

[0039] Figure 5 The illustration shows an example of point configuration for each LOD according to an embodiment.

[0040] Figure 6 The illustration shows another example of point configuration for each LOD according to an embodiment.

[0041] Figure 7 The illustration shows an example of a point cloud decoder according to an embodiment.

[0042] Figure 8 The illustration shows an example of a transmitting device according to an embodiment.

[0043] Figure 9 The illustration shows an example of a receiving device according to an embodiment.

[0044] Figure 10 The illustration shows an example of a structure that can interact with a point cloud data sending / receiving method / device according to an embodiment.

[0045] Figure 11 and Figure 12 This is a diagram illustrating the process of encoding, transmitting, and decoding point cloud data according to an embodiment.

[0046] Figure 13 This is a diagram illustrating an example of layer-based point cloud data configuration according to an embodiment.

[0047] ​ (a) The diagram illustrates the bitstream structure of the geometric data according to an embodiment, and ​ (b) The diagram illustrates the bitstream structure of the attribute data according to the embodiment.

[0048] ​ This is a diagram illustrating an example of a bitstream configuration based on layer-by-layer bitstream delivery according to an embodiment.

[0049] ​ The illustration shows an example of a bitstream alignment method used when multiplexing a geometric bitstream and an attribute bitstream into a single bitstream, according to an embodiment.

[0050] ​ The illustration shows another example of a bitstream alignment method used when multiplexing a geometric bitstream and an attribute bitstream into a single bitstream, according to an embodiment.

[0051] ​ (a) to ​ (c) is a diagram illustrating an example of symmetric geometry-attribute selection according to an embodiment.

[0052] ​ (a) to ​ (c) is a diagram illustrating an example of asymmetric geometry-attribute selection according to an embodiment.

[0053] ​ (a) to ​(c) The illustration shows an example of a method for configuring slices containing point cloud data according to an embodiment.

[0054] ​ (a) and ​ (b) The diagram illustrates the geometric coding layer structure according to an embodiment.

[0055] ​ The diagram illustrates the layer and subgroup structure according to an embodiment.

[0056] ​ (a) to ​ (c) The figure shows a representation of layer-based point cloud data according to an embodiment.

[0057] ​ The illustration shows a point cloud data transmission / reception apparatus / method according to an embodiment.

[0058] ​ This is a flowchart illustrating an example of an encoding method of an encoder according to an embodiment.

[0059] ​ This is a flowchart illustrating an example of a decoding method of a decoder according to an embodiment.

[0060] ​ This is a diagram illustrating another example of a point cloud transmitting apparatus according to an embodiment.

[0061] ​ This is a diagram illustrating another example of a point cloud receiving device according to an embodiment.

[0062] ​ The diagram illustrates the bitstream configuration according to an embodiment.

[0063] Figures 30A and 30B illustrate examples of the syntax structure of the sequence parameter set according to an embodiment.

[0064] ​ The illustration shows an example of the syntax structure of the dependent geometry data unit header according to an embodiment.

[0065] ​ The illustration shows an example of the syntax structure of the layer group structure list according to an embodiment.

[0066] ​ The illustration shows another example of the syntax structure of the dependent geometry data unit header according to an embodiment.

[0067] ​ The illustration shows an example of the syntax structure of the geometric data unit header according to an embodiment.

[0068] ​ The illustration shows an example of the syntax structure of the dependent geometry data unit header according to an embodiment.

[0069] ​ This is a diagram illustrating an example of an updated atlas range according to an embodiment.

[0070] ​ This is a diagram illustrating an example of providing services by compressing the geometry and attributes of point cloud data according to an embodiment.

[0071] ​ This is a diagram illustrating another example of providing services by compressing the geometry and attributes of point cloud data according to an embodiment.

[0072] ​ This is a diagram illustrating yet another example of providing services by compressing the geometry and attributes of point cloud data according to an embodiment.

[0073] ​ This is a flowchart illustrating a point cloud data transmission method according to an embodiment.

[0074] ​ This is a flowchart illustrating a point cloud data receiving method according to an embodiment. Detailed Implementation

[0075] Now, reference will be made in detail to preferred embodiments of the present disclosure, examples of which are illustrated in the accompanying drawings. The following detailed description, given with reference to the accompanying drawings, is intended to explain exemplary embodiments of the present disclosure and not to illustrate only embodiments that can be implemented according to the present disclosure. The following detailed description includes specific details in order to provide a thorough understanding of the present disclosure. However, it will be apparent to those skilled in the art that the present disclosure can be practiced without these specific details.

[0076] While most of the terms used in this disclosure are selected from commonly used terms in the art, the applicant has arbitrarily chosen some terms, and their meanings will be explained in detail in the following description as needed. Therefore, this disclosure should be understood based on the literal meaning of the terms rather than their simple names or connotations.

[0077] ​ An exemplary point cloud content delivery system according to an embodiment is shown.

[0078] ​ The point cloud content providing system shown may include a transmitting device 10000 and a receiving device 10004. The transmitting device 10000 and the receiving device 10004 are capable of transmitting and receiving point cloud data via wired or wireless communication.

[0079] The point cloud data transmission device 10000 according to an embodiment can acquire and process point cloud video (or point cloud content) and transmit it. According to an embodiment, the transmission device 10000 may include a fixed station, a base transceiver system (BTS), a network, an artificial intelligence (AI) device and / or system, a robot, an AR / VR / XR device, and / or a server. According to an embodiment, the transmission device 10000 may include devices configured to communicate with base stations and / or other wireless devices using radio access technologies (e.g., 5G New RAT (NR), Long Term Evolution (LTE)), robots, vehicles, AR / VR / XR devices, portable devices, home appliances, Internet of Things (IoT) devices, and AI devices / servers.

[0080] According to an embodiment, the transmitting device 10000 includes a point cloud video acquisition unit 10001, a point cloud video encoder 10002, and / or a transmitter (or communication module) 10003.

[0081] The point cloud video acquisition unit 10001 according to an embodiment acquires point cloud video through processing procedures such as capture, synthesis, or generation. Point cloud video is point cloud content represented by a point cloud, which is a set of points located in 3D space, and may be referred to as point cloud video data, point cloud data, etc. The point cloud video according to an embodiment may include one or more frames. A frame represents a still image / picture. Therefore, point cloud video may include point cloud images / frames / pictures, and may be referred to as point cloud images, frames, or pictures.

[0082] The point cloud video encoder 10002 according to an embodiment encodes the acquired point cloud video data. The point cloud video encoder 10002 may encode the point cloud video data based on point cloud compression coding. The point cloud compression coding according to an embodiment may include geometry-based point cloud compression (G-PCC) coding and / or video-based point cloud compression (V-PCC) coding or next-generation coding. The point cloud compression coding according to an embodiment is not limited to the above embodiments. The point cloud video encoder 10002 may output a bitstream containing the encoded point cloud video data. The bitstream may contain not only the encoded point cloud video data but also signaling information related to the encoding of the point cloud video data.

[0083] According to an embodiment, transmitter 10003 transmits a bitstream containing encoded point cloud video data. The bitstream, according to an embodiment, is encapsulated in a file or segment (e.g., a streaming segment) and transmitted via various networks such as broadcast networks and / or broadband networks. Although not shown in the figures, transmitting device 10000 may include an encapsulator (or encapsulation module) configured to perform encapsulation operations. According to an embodiment, the encapsulator may be included in transmitter 10003. According to an embodiment, the file or segment may be transmitted via a network to receiving device 10004 or stored in a digital storage medium (e.g., USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc.). Transmitter 10003 according to an embodiment is capable of wired / wireless communication with receiving device 10004 (or receiver 10005) via networks such as 4G, 5G, and 6G. Additionally, the transmitter may perform necessary data processing operations depending on the network system (e.g., a 4G, 5G, or 6G communication network system). Transmitting device 10000 may transmit encapsulated data on demand.

[0084] According to an embodiment, the receiving device 10004 includes a receiver 10005, a point cloud video decoder 10006, and / or a renderer 10007. According to an embodiment, the receiving device 10004 may include devices, robots, vehicles, AR / VR / XR devices, portable devices, home appliances, Internet of Things (IoT) devices, and AI devices / servers configured to communicate with base stations and / or other wireless devices using radio access technologies (e.g., 5G New RAT (NR), Long Term Evolution (LTE)).

[0085] According to an embodiment, receiver 10005 receives a bitstream containing point cloud video data or a file / segment encapsulated with a bitstream from a network or storage medium. Receiver 10005 may perform necessary data processing according to the network system (e.g., a communication network system such as 4G, 5G, 6G, etc.). According to an embodiment, receiver 10005 may decapsulate the received file / segment and output a bitstream. According to an embodiment, receiver 10005 may include a decapsulator (or decapsulator module) configured to perform a decapsulation operation. The decapsulator may be implemented as a separate element (or component) from receiver 10005.

[0086] The point cloud video decoder 10006 decodes the bitstream containing point cloud video data. The point cloud video decoder 10006 can decode the point cloud video data according to the method in which the point cloud video data is encoded (e.g., the reverse process of the operation of the point cloud video encoder 10002). Therefore, the point cloud video decoder 10006 can decode the point cloud video data by performing point cloud decompression encoding (the reverse process of point cloud compression). Point cloud decompression encoding includes G-PCC encoding.

[0087] Renderer 10007 renders decoded point cloud video data. In one embodiment, renderer 10007 can render decoded point cloud video data according to a viewport, etc. Renderer 10007 can render not only point cloud video data but also audio data to output point cloud content. According to an embodiment, renderer 10007 may include a display configured to display point cloud content. According to an embodiment, the display may be implemented as a separate device or component rather than included in renderer 10007.

[0088] The arrows indicated by dashed lines in the diagram represent the transmission path of the feedback information acquired by the receiving device 10004. The feedback information reflects the interactivity of the user consuming the point cloud content and includes information about the user (e.g., header orientation information, viewport information, etc.). Specifically, when the point cloud content is for a service requiring user interaction (e.g., autonomous driving services, etc.), the feedback information may be provided to the content sender (e.g., the sending device 10000) and / or the service provider. According to embodiments, the feedback information may be used in both the receiving device 10004 and the sending device 10000, or it may not be provided.

[0089] According to the embodiment, the header orientation information can represent information about the position, orientation, angle, and movement of the user's header. The receiving device 10004 according to the embodiment can calculate viewport information based on the header orientation information. Viewport information is information about the region of the point cloud video that the user is viewing (that is, the region the user is currently viewing). In other words, viewport information is information about the region the user is currently viewing in the point cloud video. In other words, the viewport or viewport region can represent the region the user is viewing in the point cloud video. The viewpoint is the point the user is viewing in the point cloud video and can represent the center point of the viewport region. That is, the viewport is the region centered on the viewpoint, and the size and shape of the region can be determined by the field of view (FOV). Therefore, the receiving device 10004 can extract viewport information based on the vertical or horizontal FOV supported by the device and the header orientation information. Furthermore, the receiving device 10004 can perform gaze analysis, etc., based on the header orientation information and / or viewport information to determine how the user consumes the point cloud video, the region the user is gazing at in the point cloud video, and the gaze duration. According to an embodiment, the receiving device 10004 can send feedback information, including gaze analysis results, to the transmitting device 10000. According to an embodiment, a device such as a VR / XR / AR / MR display can extract the viewport region based on the user's header position / orientation and a vertical or horizontal FOV supported by the device. According to an embodiment, header orientation information and viewport information can be referred to as feedback information, signaling information, or metadata.

[0090] Feedback information according to the embodiments can be acquired during rendering and / or display. The feedback information can be acquired by one or more sensors included in the receiving device 10004. According to the embodiments, the feedback information can be ensured by the renderer 10007 or by separate external components (or devices, components, etc.). ​ The dashed lines in the diagram represent the process of sending feedback information ensured by renderer 10007. This feedback information can be sent not only to the sending side but also consumed at the receiving side. In other words, the point cloud content providing system can process (encode / decode / render) point cloud data based on the feedback information. For example, point cloud video decoder 10006 and renderer 10007 can prioritize decoding and rendering point cloud video only for the area currently being viewed by the user, based on the feedback information (i.e., header orientation information and / or viewport information).

[0091] Furthermore, the receiving device 10004 can send feedback information to the transmitting device 10000. The transmitting device 10000 (or the point cloud video data encoder 10002) can perform encoding operations based on the feedback information. Therefore, the point cloud content providing system can effectively process the necessary data (e.g., point cloud data corresponding to the user's header position) based on the feedback information instead of processing (encoding / decoding) the entire point cloud data, and provide the point cloud content to the user.

[0092] According to the embodiments, the transmitting device 10000 can be referred to as an encoder, transmitting device, transmitter, transmitting system, etc., and the receiving device 10004 can be referred to as a decoder, receiving device, receiver, receiving system, etc.

[0093] According to the embodiments ​ Point cloud data processed in a point cloud content provision system (through a series of processes including acquisition, encoding, transmission, decoding, and rendering) can be referred to as point cloud content data or point cloud video data. According to embodiments, point cloud content data can be used as a concept encompassing metadata or signaling information related to point cloud data.

[0094] ​ The components of the point cloud content provided by the system can be implemented by hardware, software, processors, and / or combinations thereof.

[0095] ​ This is a block diagram illustrating the point cloud content provisioning operation according to an embodiment.

[0096] ​ The block diagram shows ​ The operation of the point cloud content providing system described herein. As mentioned above, the point cloud content providing system can process point cloud data based on point cloud compression encoding (e.g., G-PCC).

[0097] A point cloud content providing system (e.g., point cloud sending device 10000 or point cloud video acquisition unit 10001) according to an embodiment can acquire point cloud video (20000). The point cloud video is represented by a point cloud belonging to a coordinate system used to represent 3D space. The point cloud video according to an embodiment may include Ply (Polygon file format or Stanford Triangle format) files. When the point cloud video has one or more frames, the acquired point cloud video may include one or more Ply files. A Ply file contains point cloud data such as point geometry and / or attributes. Geometry includes the position of the points. The position of each point may be represented by parameters (e.g., values ​​of the X, Y, and Z axes) representing a three-dimensional coordinate system (e.g., a coordinate system consisting of X, Y, and Z axes). Attributes include the attributes of the points (e.g., information about the texture, color (YCbCr or RGB), reflectivity r, transparency, etc., of each point). A point has one or more attributes. For example, a point may have a color attribute or two attributes: color and reflectivity. According to embodiments, geometry can be referred to as location, geometric information, geometric data, location information, location data, etc., and attributes can be referred to as attributes, attribute information, attribute data, etc. A point cloud content providing system (e.g., point cloud sending device 10000 or point cloud video acquisition unit 10001) can obtain point cloud data from information related to the point cloud video acquisition process (e.g., depth information, color information, etc.).

[0098] A point cloud content providing system (e.g., a transmitting device 10000 or a point cloud video encoder 10002) according to an embodiment can encode point cloud data (20001). The point cloud content providing system can encode point cloud data based on point cloud compression encoding. As described above, point cloud data can include geometric information and attribute information about points. Therefore, the point cloud content providing system can perform geometric encoding to encode the geometry and output a geometric bitstream. The point cloud content providing system can perform attribute encoding to encode the attributes and output an attribute bitstream. According to an embodiment, the point cloud content providing system can perform attribute encoding based on geometric encoding. The geometric bitstream and attribute bitstream according to an embodiment can be multiplexed and output as a single bitstream. The bitstream according to an embodiment may also contain signaling information related to geometric encoding and attribute encoding.

[0099] A point cloud content providing system (e.g., transmitting device 10000 or transmitter 10003) according to an embodiment can transmit encoded point cloud data (20002). ​ As shown, encoded point cloud data can be represented by geometric bitstreams and attribute bitstreams. Additionally, the encoded point cloud data can be transmitted as a bitstream along with signaling information related to the encoding of the point cloud data (e.g., signaling information related to geometric encoding and attribute encoding). The point cloud content providing system can encapsulate the bitstream carrying the encoded point cloud data and transmit it as a file or fragment.

[0100] The point cloud content providing system (e.g., receiving device 10004 or receiver 10005) according to an embodiment can receive a bitstream containing encoded point cloud data. Additionally, the point cloud content providing system (e.g., receiving device 10004 or receiver 10005) can demultiplex the bitstream.

[0101] A point cloud content providing system (e.g., receiving device 10004 or point cloud video decoder 10005) can decode encoded point cloud data (e.g., geometric bitstream, attribute bitstream) transmitted in a bitstream. The point cloud content providing system (e.g., receiving device 10004 or point cloud video decoder 10005) can decode point cloud video data based on signaling information related to the encoding of the point cloud video data contained in the bitstream. The point cloud content providing system (e.g., receiving device 10004 or point cloud video decoder 10005) can decode the geometric bitstream to reconstruct the location (geometry) of the points. The point cloud content providing system can reconstruct the attributes of the points by decoding the attribute bitstream based on the reconstructed geometry. The point cloud content providing system (e.g., receiving device 10004 or point cloud video decoder 10005) can reconstruct point cloud video based on location according to the reconstructed geometry and the decoded attributes.

[0102] A point cloud content providing system (e.g., receiving device 10004 or renderer 10007) according to an embodiment can render decoded point cloud data (20004). The point cloud content providing system (e.g., receiving device 10004 or renderer 10007) can use various rendering methods to render the geometry and attributes decoded through the decoding process. Points in the point cloud content can be rendered as vertices with a specific thickness, cubes with a specific minimum size centered at the corresponding vertex position, or circles centered at the corresponding vertex position. All or part of the rendered point cloud content is provided to a user through a display (e.g., a VR / AR display, a general display, etc.).

[0103] The point cloud content providing system (e.g., receiving device 10004) according to an embodiment can obtain feedback information (20005). The point cloud content providing system can encode and / or decode point cloud data based on the feedback information. The feedback information and operation of the point cloud content providing system according to an embodiment are related to reference. ​ The feedback information and operation described are the same, so their detailed description is omitted.

[0104] ​ An exemplary point cloud encoder according to an embodiment is shown.

[0105] ​ Show ​An example of a point cloud video encoder 10002. The point cloud encoder reconstructs and encodes point cloud data (e.g., point locations and / or attributes) to adjust the quality of the point cloud content (e.g., lossless, lossy, or near-lossless) based on network conditions or applications. When the total size of the point cloud content is large (e.g., providing 60 Gbps of point cloud content for 30 fps), the point cloud content providing system may not be able to stream the content in real time. Therefore, the point cloud content providing system can reconstruct the point cloud content based on a maximum target bitrate to provide the point cloud content according to network conditions, etc.

[0106] For reference ​ and ​ As described, the point cloud encoder can perform geometric encoding and attribute encoding. Geometric encoding is performed before attribute encoding.

[0107] The point cloud video encoder according to an embodiment includes a coordinate transformer (transform coordinates) 30000, a quantizer (quantizes and removes points (voxarization)) 30001, an octree analyzer (analyzes octrees) 30002, a surface approximation analyzer (analyzes surface approximations) 30003, an arithmetic encoder (arithmetic encoding) 30004, a geometry reconstructor (reconstructs geometry) 30005, a color transformer (transforms colors) 30006, an attribute transformer (transforms attributes) 30007, a RAHT transformer 30008, a LOD generator (generates LODs) 30009, a lift transformer (lifts) 30010, a coefficient quantizer (quantizes coefficients) 30011, and / or an arithmetic encoder (arithmetic encoding) 30012. ​ In the point cloud encoder, coordinate transformer 30000, quantizer 30001, octree analyzer 30002, surface approximation analyzer 30003, arithmetic encoder 30004, and geometric reconstructor 30005 can be grouped together and called the geometric encoder. Color transformer 30006, attribute transformer 30007, RAHT transformer 30008, LOD generator 30009, lift transformer 30010, coefficient quantizer 30011, and / or arithmetic encoder 30012 can be grouped together and called the attribute encoder.

[0108] Coordinate transformer 30000, quantizer 30001, octree analyzer 30002, surface approximation analyzer 30003, arithmetic encoder 30004, and geometric reconstructor 30005 are capable of performing geometric coding. Geometric coding according to embodiments may include octree geometric coding, prediction tree geometric coding, direct coding, triplet geometric coding, and entropy coding. Direct coding and triplet geometric coding are applied selectively or in combination. Geometric coding is not limited to the examples described above.

[0109] As shown in the figure, the coordinate transformer 30000 according to an embodiment receives a position and transforms it into coordinates. For example, the position can be transformed into position information in three-dimensional space (e.g., three-dimensional space represented by the XYZ coordinate system). The position information in three-dimensional space according to an embodiment can be referred to as geometric information.

[0110] The quantizer 30001 according to the embodiment performs geometric quantization. For example, the quantizer 30001 may quantize points based on the minimum position value of all points (e.g., the minimum value on each of the X, Y, and Z axes). The quantizer 30001 performs a quantization operation: multiplying the difference between the minimum position value and the position value of each point by a preset quantization scaling value, and then finding the nearest integer value by rounding the value obtained by the multiplication. Thus, one or more points may have the same quantized position (or position value). The quantizer 30001 according to the embodiment performs voxelization based on the quantized position to reconstruct the quantized points. As in the case of pixels (the smallest unit containing 2D image / video information), the points of the point cloud content (or 3D point cloud video) according to the embodiment may be included in one or more voxels. As a combination of volume and pixel, the term voxel refers to the 3D cubic space generated when 3D space is divided into units (unit = 1.0) based on axes representing 3D space (e.g., X-axis, Y-axis, and Z-axis). The quantizer 30001 allows a group of points in 3D space to be matched with voxels. According to one embodiment, a voxel may include only one point. According to another embodiment, a voxel may include one or more points. To represent a voxel as a point, the location of the voxel's center can be set based on the locations of one or more points included in the voxel. In this case, attributes of all locations included in a voxel can be combined and assigned to the voxel.

[0111] According to the embodiment, the octree analyzer 30002 performs octree geometric encoding (or octree coding) to represent voxels in an octree structure. The octree structure represents points based on the matching of octree structures with voxels.

[0112] The surface approximation analyzer 30003 according to the embodiment can analyze and approximate an octree. The octree analysis and approximation according to the embodiment is a process of analyzing a region containing multiple points to efficiently provide an octree and voxelization.

[0113] According to an embodiment, the arithmetic encoder 30004 performs entropy encoding on octrees and / or approximate octrees. For example, the encoding scheme includes arithmetic encoding. As a result of the encoding, a geometric bitstream is generated.

[0114] The attribute encoding is performed by a color transformer 30006, an attribute transformer 30007, a RAHT transformer 30008, a LOD generator 30009, a boosting transformer 30010, a coefficient quantizer 30011, and / or an arithmetic encoder 30012. As described above, a point may have one or more attributes. The attribute encoding according to the embodiment is also applied to the attributes that a point has. However, when an attribute (e.g., color) includes one or more elements, the attribute encoding is applied independently to each element. The attribute encoding according to the embodiment includes color transformation encoding, attribute transformation encoding, region adaptive hierarchical transformation (RAHT) encoding, interpolation-based hierarchical nearest neighbor prediction (prediction transformation) encoding, and interpolation-based hierarchical nearest neighbor prediction (boosting transformation) encoding with update / boosting steps. Depending on the point cloud content, the above-described RAHT encoding, prediction transformation encoding, and boosting transformation encoding may be used selectively, or a combination of one or more encoding schemes may be used. The attribute encoding according to the embodiment is not limited to the examples described above.

[0115] The color converter 30006 according to an embodiment performs color transformation encoding that transforms the color values ​​(or textures) included in the attributes. For example, the color converter 30006 can transform the format of color information (e.g., from RGB to YCbCr). Optionally, the operation of the color converter 30006 according to an embodiment can be applied based on the color values ​​included in the attributes.

[0116] According to the embodiment, the geometry reconstructor 30005 reconstructs (decompresses) octrees and / or approximate octrees. The geometry reconstructor 30005 reconstructs the octree / voxel based on the results of analyzing the point distribution. The reconstructed octree / voxel may be referred to as the reconstructed geometry (recovered geometry).

[0117] According to an embodiment, the attribute transformer 30007 performs attribute transformation to transform attributes based on reconstructed geometry and / or locations where geometric encoding is not performed. As described above, since attributes depend on geometry, the attribute transformer 30007 can transform attributes based on reconstructed geometric information. For example, based on the position value of a point included in a voxel, the attribute transformer 30007 can transform the attributes of the point at that location. As described above, when the center position of a voxel is set based on the positions of one or more points included in the voxel, the attribute transformer 30007 transforms the attributes of one or more points. When performing triadic geometric encoding, the attribute transformer 30007 can transform attributes based on the triadic geometric encoding.

[0118] The attribute transformer 30007 performs attribute transformation by calculating the average of the attributes or attribute values ​​(e.g., color or reflectivity of each point) of neighboring points within a specific location / radius from the center (or location value) of each voxel. The attribute transformer 30007 can apply weights based on the distance from the center to each point when calculating the average. Therefore, each voxel has a location and a calculated attribute (or attribute value).

[0119] The attribute transformer 30007 can search for nearest neighbors within a specific location / radius of the center of each voxel based on a KD-tree or Morton code. A KD-tree is a binary search tree and supports a data structure that allows points to be managed based on location, enabling fast nearest neighbor search (NNS). Morton codes are generated by representing the coordinates (e.g., (x, y, z)) of the 3D location of all points as bit values ​​and mixing the bits. For example, when the coordinates representing the point location are (5, 9, 1), the bit values ​​are (0101, 1001, 0001). Mixing the bit values ​​according to the bit index in the order of z, y, and x produces 010001000111. This value is represented as the decimal number 1095. That is, the Morton code value for the point with coordinates (5, 9, 1) is 1095. The attribute transformer 30007 can sort the points based on the Morton code values ​​and perform NNS using a depth-first traversal process. After an attribute transformation operation, use a KD tree or Morton code when an NNS is needed in another transformation process used for attribute encoding.

[0120] As shown in the figure, the transformation properties are input to the RAHT transformer 30008 and / or the LOD generator 30009.

[0121] According to an embodiment, the RAHT transformer 30008 performs RAHT encoding for predicting attribute information based on reconstructed geometric information. For example, the RAHT transformer 30008 can predict the attribute information of higher-level nodes in an octree based on attribute information associated with lower-level nodes in the octree.

[0122] The LOD generator 30009 according to the embodiment generates a Level of Detail (LOD) to perform predictive transform coding. The LOD according to the embodiment represents the level of detail of the point cloud content. As the LOD value decreases, it indicates a deterioration in the detail of the point cloud content. As the LOD value increases, it indicates an enhancement in the detail of the point cloud content. Points can be classified by LOD.

[0123] The lift transformer 30010 according to the embodiment performs lift transform coding to transform point cloud attributes based on weights. As described above, lift transform coding may optionally be applied.

[0124] According to the embodiment, the coefficient quantizer 30011 quantizes the attribute encoded by the attribute based on the coefficient.

[0125] According to the embodiment, the arithmetic encoder 30012 encodes quantized attributes based on arithmetic coding.

[0126] Although not shown in the figure, ​ The elements of the point cloud encoder can be implemented by hardware, software, firmware, or a combination thereof, including one or more processors or integrated circuits configured to communicate with one or more memories included in the point cloud providing device. One or more processors can perform the above-described... ​ At least one of the operation and / or functions of the elements of the point cloud encoder. Additionally, one or more processors are operable or perform operations for executing... ​ The software program and / or instruction set for the operation and / or function of the elements of the point cloud encoder. One or more memories according to the embodiments may include high-speed random access memory, or include non-volatile memory (e.g., one or more disk storage devices, flash memory devices or other non-volatile solid-state memory devices).

[0127] ​ An example of an octree and occupancy code according to an embodiment is shown.

[0128] For reference ​ As described, the point cloud content delivery system (point cloud video encoder 10002) or point cloud encoder (e.g., octree analyzer 30002) performs octree geometric encoding (or octree encoding) based on an octree structure to efficiently manage the regions and / or locations of voxels.

[0129] ​ The upper part shows an octree structure. The 3D space of the point cloud content according to the embodiment is represented by the axes of a coordinate system (e.g., the X, Y, and Z axes). This is achieved by two poles (0, 0, 0) and (2... d , 2 d , 2 d An octree structure is created by recursively subdividing the bounding box aligned to the cubic axis. Here, 2d can be set as the value of the minimum bounding box that constitutes all points surrounding the point cloud content (or point cloud video). Here, d represents the depth of the octree. The value of d is determined in the following equation. In the following equation, (x int n , y int n , z int n ) indicates the position (or position value) of the quantized point.

[0130]

[0131] like ​As shown in the upper center, the entire 3D space can be divided into eight spaces according to partitions. Each partitioned space is represented by a cube with six faces. For example... ​ As shown in the upper right, each of the eight spaces is further subdivided based on a coordinate system axis (e.g., the X, Y, and Z axes). Thus, each space is divided into eight smaller spaces. These smaller spaces are also represented by cubes with six faces. This partitioning scheme is applied until the leaf nodes of the octree become voxels.

[0132] ​ The lower part shows the octree occupancy code. The occupancy code generates the octree to indicate whether each of the eight partitions generated by dividing a space contains at least one point. Therefore, a single occupancy code is represented by eight child nodes. Each child node represents the occupancy of a partitioned space, and each child node has a 1-bit value. Therefore, the occupancy code is represented as an 8-bit code. That is, when the space corresponding to a child node contains at least one point, the node is assigned a value of 1. When the space corresponding to a child node does not contain a point (the space is empty), the node is assigned a value of 0. Since... ​ The occupancy code shown is 00100001, therefore, it indicates that the space corresponding to the third and eighth child nodes among the eight child nodes each contains at least one point. As shown, each of the third and eighth child nodes has eight child nodes, and the child nodes are represented by an 8-bit occupancy code. The figure shows that the occupancy code for the third child node is 10000111, and the occupancy code for the eighth child node is 01001111. A point cloud encoder (e.g., an arithmetic encoder 30004) according to an embodiment can perform entropy coding on the occupancy code. To increase compression efficiency, the point cloud encoder can perform intra-frame / inter-frame coding on the occupancy code. A receiving device (e.g., receiving device 10004 or point cloud video decoder 10006) according to an embodiment reconstructs the octree based on the occupancy code.

[0133] A point cloud encoder according to an embodiment (e.g., ​ A point cloud encoder or octree analyzer (30002) can perform voxelization and octree encoding to store point locations. However, points are not always uniformly distributed in 3D space, so there may be specific regions with fewer points. Therefore, performing voxelization over the entire 3D space is inefficient. For example, when a specific region contains very few points, voxelization is not necessary in that specific region.

[0134] Therefore, for the aforementioned specific region (or nodes other than the leaf nodes of the octree), the point cloud encoder according to the embodiment can skip voxelization and perform direct encoding to directly encode the point positions included in the specific region. The coordinates of the directly encoded points according to the embodiment are called the Direct Encoding Mode (DCM). The point cloud encoder according to the embodiment can also perform triadic geometry encoding based on the surface model, which reconstructs the point positions in the specific region (or node) based on voxels. Triadic geometry encoding is a geometry encoding that represents an object as a series of triangular meshes. Therefore, the point cloud decoder can generate a point cloud from the mesh surface. Direct encoding and triadic geometry encoding according to the embodiment can be performed selectively. In addition, direct encoding and triadic geometry encoding according to the embodiment can be performed in combination with octree geometry encoding (or octree encoding).

[0135] To perform direct encoding, the option to apply direct encoding using direct mode should be enabled. The node to which direct encoding is applied must not be a leaf node, and there should be fewer than a threshold number of points within that node. Furthermore, the total number of points to which direct encoding is applied should not exceed a preset threshold. When the above conditions are met, the point cloud encoder (or arithmetic encoder 30004) according to the embodiment can perform entropy encoding on the point locations (or location values).

[0136] A point cloud encoder (e.g., a surface approximation analyzer 30003) according to an embodiment can determine a specific level of an octree (a level less than the depth d of the octree) and can begin using a surface model at that level to perform triadic geometry encoding to reconstruct point locations in a node region based on voxels (triadic mode). The point cloud encoder according to an embodiment can specify the level at which triadic geometry encoding is applied. For example, the point cloud encoder does not operate in triadic mode when the specific level is equal to the depth of the octree. In other words, the point cloud encoder according to an embodiment can operate in triadic mode only when the specified level is less than the depth value of the octree. A 3D cubic region of a node at a specified level according to an embodiment is called a block. A block may include one or more voxels. A block or voxel may correspond to a cube. Geometry is represented as surfaces within each block. A surface according to an embodiment may intersect each edge of a block at most once.

[0137] A block has 12 edges, therefore a block contains at least 12 intersections. Each intersection is called a vertex. Vertices along an edge are detected when there is at least one occupied voxel adjacent to the edge in all blocks sharing the edge. An occupied voxel, according to an embodiment, refers to a voxel containing a point. The vertex position detected along an edge is the average position of the edges of all voxels adjacent to the edge in all blocks sharing the edge.

[0138] Once a vertex is detected, the point cloud encoder according to the embodiment can perform entropy encoding on the edge's origin (x, y, z), the edge's direction vector (Δx, Δy, Δz), and the vertex position value (relative position value within the edge). When applying triad geometry encoding, the point cloud encoder according to the embodiment (e.g., geometry reconstructor 30005) can generate the restored geometry (reconstructed geometry) by performing triangle reconstruction, upsampling, and voxelization processes.

[0139] Vertices located at the edges of a block determine the surface passing through the block. According to the embodiment, the surface is a non-planar polygon. During triangle reconstruction, the surface represented by the triangles is reconstructed based on the origin of the edges, the direction vectors of the edges, and the position values ​​of the vertices. The triangle reconstruction process is performed as follows: i) calculating the centroid value of each vertex, ii) subtracting the centroid value from each vertex value, and iii) estimating the sum of squares of the values ​​obtained through the subtraction.

[0140]

[0141] The minimum value of the sum is estimated, and a projection process is performed based on the axis with the minimum value. For example, when element x is minimum, each vertex is projected onto the x-axis relative to the center of the block, and onto the (y, z) plane. When the value obtained by projection onto the (y, z) plane is (ai, bi), the value of θ is estimated by atan2(bi, ai), and the vertices are sorted based on the value of θ. The following shows the vertex combinations for creating triangles based on the number of vertices. Vertices are sorted from 1 to n. Table 1 below shows that for four vertices, two triangles can be constructed based on vertex combinations. The first triangle can be composed of vertices 1, 2, and 3 from the sorted vertices, and the second triangle can be composed of vertices 3, 4, and 1 from the sorted vertices.

[0142] [Table 1] Triangles formed from vertices sorted by 1, ..., n

[0143] An upsampling process is performed to add points along the edges of the triangle at the center, and voxelization is then performed. The added points are generated based on the upsampling factor and the width of the block. The added points are called thinned vertices. The point cloud encoder according to an embodiment can voxelize the thinned vertices. Additionally, the point cloud encoder can perform attribute encoding based on the voxelized positions (or position values).

[0144] ​ An example of point configuration in each LOD according to an embodiment is shown.

[0145] For reference ​The described approach involves reconstructing (decompressing) the encoded geometry before performing attribute encoding. When direct encoding is applied, the geometry reconstruction operation may include altering the placement of directly encoded points (e.g., placing directly encoded points in front of the point cloud data). When triadic geometry encoding is applied, the geometry reconstruction process is performed through triangle reconstruction, upsampling, and voxelization. Since attributes depend on geometry, attribute encoding is performed based on the reconstructed geometry.

[0146] A point cloud encoder (e.g., LOD generator 30009) can classify (or reorganize) points according to LOD. The figure shows the point cloud content corresponding to LOD. The leftmost image in the figure represents the original point cloud content. The second image from the left in the figure represents the point distribution in the lowest LOD, and the rightmost image represents the point distribution in the highest LOD. That is, points are sparsely distributed in the lowest LOD and densely distributed in the highest LOD. In other words, as the LOD increases in the direction indicated by the arrow at the bottom of the figure, the space (or distance) between points narrows.

[0147] ​ An example of point configuration for each LOD according to an embodiment is shown.

[0148] For reference ​ As described, a point cloud content providing system or point cloud encoder (e.g., point cloud video encoder 10002, ​ A point cloud encoder or LOD generator (30009) can generate LODs. LODs are generated by reorganizing points into a set of refined levels based on a set of LOD distance values ​​(or a set of Euclidean distances). The LOD generation process is performed not only by the point cloud encoder but also by the point cloud decoder.

[0149] ​ The upper part shows examples of points (P0 to P9) of point cloud content distributed in 3D space. ​ In this context, the original order represents the order of points P0 to P9 before LOD generation. ​ In this context, LOD-based order represents the order in which points are generated according to their LOD. Points are reorganized by LOD. Additionally, higher LODs include points belonging to lower LODs. For example... ​ As shown, LOD0 contains P0, P5, P4, and P2. LOD1 contains the points of LOD0, P1, P6, and P3. LOD2 contains the points of LOD0, the points of LOD1, P9, P8, and P7.

[0150] For reference ​ As described, the point cloud encoder according to the embodiments may selectively or in combination perform predictive transform coding, lifting transform coding, and RAHT transform coding.

[0151] The point cloud encoder according to an embodiment can generate predictors for points to perform predictive transformation coding for setting the predictive attributes (or predictive attribute values) of each point. That is, N predictors can be generated for N points. The predictors according to an embodiment can calculate weights (=1 / distance) based on the LOD value of each point, index information of neighboring points existing within a set distance of each LOD, and the distance to the neighboring points.

[0152] According to an embodiment, the predicted attribute (or attribute value) is set as the average of values ​​obtained by multiplying the attributes (or attribute values) of neighboring points (e.g., color, reflectivity, etc.) set in the predictor of each point by a weight (or weight value) calculated based on the distance to each neighboring point. The point cloud encoder (e.g., coefficient quantizer 30011) according to an embodiment can quantize and inverse quantize the residual (which may be referred to as residual attribute, residual attribute value, attribute prediction residual, etc.) obtained by subtracting the predicted attribute (or attribute value) of each point from the attribute (attribute value) of each point. Tables 2 and 3 below illustrate the quantization process.

[0153] [Table 2]

[0154] [Table 3]

[0155] When the predictors of each point have neighboring points, the point cloud encoder (e.g., arithmetic encoder 30012) according to the embodiment can perform entropy encoding on the residual values ​​of quantization and inverse quantization as described above. When the predictors of each point do not have neighboring points, the point cloud encoder (e.g., arithmetic encoder 30012) according to the embodiment can perform entropy encoding on the attributes of the corresponding point without performing the above operations.

[0156] The point cloud encoder (e.g., lift transformer 30010) according to an embodiment can generate predictors for each point, set the calculated LOD and register neighboring points in the predictors, and set weights based on the distance to the neighboring points to perform lift transform coding. The lift transform coding according to the embodiment is similar to the predictive transform coding described above, but the difference is that weights are applied cumulatively to the attribute values. The process of cumulatively applying weights to the attribute values ​​according to the embodiment is configured as follows.

[0157] 1) Create an array quantized weights (QW) to store the weight values ​​of each point. The initial value of all elements of QW is 1.0. Multiply the QW value of the predictor index of the neighboring nodes registered in the predictor by the weight of the current point's predictor, and add the values ​​obtained by multiplication.

[0158] 2) Improve the prediction process: Subtract the value obtained by multiplying the attribute value of the point by the weight from the existing attribute value to calculate the predicted attribute value.

[0159] 3) Create temporary arrays called updateweight and update, and initialize the temporary arrays to zero.

[0160] 4) The weights calculated by multiplying the weights computed for all predictors by the weights stored in the QW corresponding to the predictor index are summed with the updateweight array and used as the index of the neighbor node. The values ​​obtained by multiplying the attribute values ​​of the neighbor node indexes by the calculated weights are summed with the update array.

[0161] 5) Improve the update process: Divide the attribute values ​​of the update array of all predictors by the weight values ​​of the updateweight array of the predictor index, and add the existing attribute values ​​to the values ​​obtained by division.

[0162] 6) For all predictors, the predicted attribute is calculated by multiplying the attribute value updated through the boosting update process by the weight updated through the boosting prediction process (stored in QW). The predicted attribute value is quantized by a point cloud encoder (e.g., coefficient quantizer 30011) according to the embodiment. Additionally, the point cloud encoder (e.g., arithmetic encoder 30012) performs entropy encoding on the quantized attribute value.

[0163] A point cloud encoder according to an embodiment (e.g., RAHT transform 30008) can perform RAHT transform coding, where attributes associated with lower-level nodes in an octree are used to predict attributes of higher-level nodes. RAHT transform coding is an example of intra-frame attribute coding performed by scanning backward through an octree. The point cloud encoder according to an embodiment scans the entire region starting from voxels and repeats a merging process at each step, merging voxels into larger blocks, until the root node is reached. The merging process according to an embodiment is performed only on occupied nodes. The merging process is not performed on empty nodes. The merging process is performed on the node directly above an empty node.

[0164] The following equation represents the RAHT transformation matrix. In this equation, Indicates level The average attribute value of the voxels at that location. Based on and To be calculated. Used for and The weight is and .

[0165]

[0166] here, It is a low-pass value and is used in the next higher level of merging. This represents the high-pass coefficient. At each step, the high-pass coefficient is quantized and subjected to entropy encoding (e.g., encoded by an arithmetic encoder 40012). Weights are calculated as follows: .pass and Create the root node as follows.

[0167]

[0168] The value of gDC is also quantized and entropy-encoded, just like the high-pass coefficient.

[0169] ​ A point cloud decoder according to an embodiment is shown.

[0170] ​ The point cloud decoder shown is an example of a point cloud decoder and can perform decoding operations. ​ The reverse process of the encoding operation of the point cloud encoder is shown.

[0171] For reference ​ and ​ As described, the point cloud decoder can perform geometry decoding and attribute decoding. Geometry decoding is performed before attribute decoding.

[0172] The point cloud decoder according to the embodiment includes an arithmetic decoder (arithmetic decoding) 7000, an octree synthesizer (synthesized octree) 7001, a surface approximation synthesizer (synthesized surface approximation) 7002, a geometry reconstructor (reconstructed geometry) 7003, an inverse coordinate transformer (inverse coordinate transformation) 7004, an arithmetic decoder (arithmetic decoding) 7005, an inverse quantizer (inverse quantization) 7006, a RAHT transformer 7007, a LOD generator (generated LOD) 7008, an inverse lifter (inverse lift) 7009, and / or a color inverse transformer (inverse color transformation) 7010.

[0173] An arithmetic decoder 7000, an octree synthesizer 7001, a surface approximation synthesizer 7002, a geometry reconstructor 7003, and a coordinate inverse transformer 7004 can perform geometric decoding. Geometric decoding according to embodiments may include direct decoding and triplet geometric decoding. Direct encoding and triplet geometric decoding are selectively applied. Geometric decoding is not limited to the examples described above and is provided as a reference. ​ The reverse process of the described geometric encoding is executed.

[0174] According to an embodiment, the arithmetic decoder 7000 decodes the received geometric bitstream based on arithmetic coding. The operation of the arithmetic decoder 7000 corresponds to the inverse process of the arithmetic encoder 30004.

[0175] The octree synthesizer 7001 according to an embodiment can generate an octree by obtaining a octet code (or information about the geometry obtained as a decoding result) from the decoded geometry bitstream. The octet code is as follows: ​ Please describe that configuration in detail.

[0176] When applying triplet geometry encoding, the surface approximation synthesizer 7002 according to the embodiment can synthesize the surface based on the decoded geometry and / or the generated octree.

[0177] According to an embodiment, the geometry reconstructor 7003 can regenerate geometry based on surface and / or decoded geometry. See also... ​ As described, direct encoding and triadic geometric encoding are selectively applied. Therefore, the geometry reconstructor 7003 directly imports the positional information of points for which direct encoding has been applied and sums them. When triadic geometric encoding is applied, the geometry reconstructor 7003 can reconstruct the geometry by performing the reconstruction operations (e.g., triangle reconstruction, upsampling, and voxelization) of the geometry reconstructor 30005. Details and references ​ The descriptions are the same for all of them, so their descriptions are omitted. The reconstructed geometry may include point cloud images or frames that do not contain attributes.

[0178] According to the embodiment, the inverse coordinate transformer 7004 can obtain the point position based on the reconstructed geometric transformation coordinates.

[0179] Arithmetic decoder 7005, inverse quantizer 7006, RAHT transformer 7007, LOD generator 7008, inverse booster 7009, and / or color inverse transformer 7010 perform attribute decoding. Attribute decoding according to embodiments includes Region Adaptive Hierarchical Transformation (RAHT) decoding, interpolation-based hierarchical nearest neighbor prediction (prediction transform) decoding, and interpolation-based hierarchical nearest neighbor prediction (boost transform) decoding with update / boost steps. The above three decoding schemes can be used selectively, or a combination of one or more decoding schemes can be used. Attribute decoding according to embodiments is not limited to the examples described above.

[0180] According to the embodiment, the arithmetic decoder 7005 decodes the attribute bitstream through arithmetic encoding.

[0181] According to the embodiment, the inverse quantizer 7006 inversely quantizes information about the decoded attribute bitstream or the attributes obtained as a decoding result, and outputs the inversely quantized attributes (or attribute values). Inverse quantization can be selectively applied based on the attribute encoding of the point cloud encoder.

[0182] According to an embodiment, the RAHT transformer 7007, LOD generator 7008, and / or inverse lifter 7009 can handle the reconstructed geometry and inverse quantization attributes. As described above, the RAHT transformer 7007, LOD generator 7008, and / or inverse lifter 7009 can selectively perform decoding operations corresponding to the encoding of the point cloud encoder.

[0183] According to the embodiment, the color inverse transformer 7010 performs inverse transformation encoding to inversely transform the color values ​​(or textures) included in the decoded attributes. The operation of the color inverse transformer 7010 can be selectively performed based on the operation of the color transformer 30006 of the point cloud encoder.

[0184] Although not shown in the figure, ​ The elements of the point cloud decoder can be implemented by hardware, software, firmware, or a combination thereof, including one or more processors or integrated circuits configured to communicate with one or more memories included in the point cloud providing device. One or more processors can perform the above-described... ​ The point cloud decoder's components include at least one or more operations and / or functions. Additionally, one or more processors are operable or perform operations for executing... ​ The software program and / or instruction set for the operation and / or function of the elements of the point cloud decoder.

[0185] ​ A transmitting apparatus according to an embodiment is shown.

[0186] ​ The transmitting device shown is ​ The transmitting device 10000 (or ​ Example of a point cloud encoder. ​ The transmitting device shown can perform the same operation as the reference. ​ The described point cloud encoder includes one or more of the same or similar operations and methods. The transmitting apparatus according to embodiments may include a data input unit 8000, a quantization processor 8001, a voxelization processor 8002, an octree occupancy code generator 8003, a surface model processor 8004, an intra / inter-frame coding processor 8005, an arithmetic encoder 8006, a metadata processor 8007, a color transformation processor 8008, an attribute transformation processor 8009, a prediction / boosting / RAHT transformation processor 8010, an arithmetic encoder 8011, and / or a transmission processor 8012.

[0187] According to an embodiment, the data input unit 8000 receives or acquires point cloud data. The data input unit 8000 can perform operations and / or acquisition methods similar to those of the point cloud video acquisition unit 10001 (or refer to...). ​ The described acquisition process (20000) is the same or similar operation and / or acquisition method.

[0188] The data input unit 8000, quantization processor 8001, voxelization processor 8002, octree occupancy code generator 8003, surface model processor 8004, intra / inter-frame coding processor 8005, and arithmetic encoder 8006 perform geometric coding. Geometric coding according to the embodiment and reference... ​ The geometric codes described are the same or similar, so their detailed descriptions are omitted.

[0189] The quantization processor 8001 according to the embodiment quantizes geometry (e.g., point position values). The operation of the quantization processor 8001 and / or quantization with reference... ​ The operation and / or quantization of the described quantizer 30001 are the same or similar. Details and references ​ The descriptions are the same.

[0190] According to the embodiment, the voxelization processor 8002 voxels the quantized position values ​​of points. The voxelization processor 8002 can perform operations similar to those described above. ​ The operation and / or voxelization process of the quantizer 30001 described are the same as or similar to the operation and / or process. Details and references ​ The descriptions are the same.

[0191] According to an embodiment, the octree occupancy code generator 8003 performs octree encoding based on the voxelized positions of points in the octree structure. The octree occupancy code generator 8003 can generate occupancy codes. The octree occupancy code generator 8003 can perform operations similar to those referenced... ​ and ​ The operations and / or methods described are the same as or similar to those of the point cloud encoder (or octree analyzer 30002). Details and references ​ The descriptions are the same.

[0192] According to an embodiment, the surface model processor 8004 can perform triadic geometry encoding based on a surface model to reconstruct point positions in a specific region (or node) based on voxels. The surface model processor 8004 can perform operations with reference to... ​ The operations and / or methods described are the same as or similar to those of the point cloud encoder (e.g., surface approximation analyzer 30003). Details and references are available. ​ The descriptions are the same.

[0193] According to an embodiment, the intra / inter-frame coding processor 8005 can perform intra / inter-frame coding on point cloud data. The intra / inter-frame coding processor 8005 can perform coding that is the same as or similar to intra / inter-frame coding. According to an embodiment, the intra / inter-frame coding processor 8005 may be included in an arithmetic encoder 8006.

[0194] According to an embodiment, the arithmetic encoder 8006 performs entropy encoding on octrees and / or approximate octrees of point cloud data. For example, the encoding scheme includes arithmetic encoding. The arithmetic encoder 8006 performs the same or similar operations and / or methods as the arithmetic encoder 30004.

[0195] The metadata processor 8007 according to an embodiment processes metadata (e.g., set values) about point cloud data and provides it to necessary processing procedures such as geometric encoding and / or attribute encoding. Additionally, the metadata processor 8007 according to an embodiment can generate and / or process signaling information related to geometric encoding and / or attribute encoding. The signaling information according to an embodiment can be encoded separately from the geometric encoding and / or attribute encoding. The signaling information according to an embodiment can be interleaved.

[0196] Color transformation processor 8008, attribute transformation processor 8009, prediction / boosting / RAHT transformation processor 8010, and arithmetic encoder 8011 perform attribute encoding. Attribute encoding and reference according to the embodiment. ​ The attribute codes described are the same or similar, so their detailed descriptions are omitted.

[0197] According to an embodiment, a color transformation processor 8008 performs color transformation encoding to transform color values ​​included in attributes. The color transformation processor 8008 may perform color transformation encoding based on reconstructed geometry. The reconstructed geometry and reference... ​ The description is the same. Furthermore, its execution is the same as the reference. ​ The operation and / or methods of the described color converter 30006 are the same as or similar to those described. Detailed descriptions are omitted.

[0198] According to an embodiment, the attribute transformation processor 8009 performs attribute transformation to transform attributes based on reconstructed geometry and / or locations where geometric encoding is not performed. The attribute transformation processor 8009 performs transformations with reference to... ​ The operation and / or method of the described attribute transformer 30007 are the same as or similar to those described. Detailed descriptions thereof are omitted. The prediction / boosting / RAHT transformation processor 8010 according to the embodiment can encode the transformed attributes through any one or a combination of RAHT encoding, prediction transformation encoding, and boosting transformation encoding. The prediction / boosting / RAHT transformation processor 8010 performs operations and references... ​ The RAHT transformer 30008, LOD generator 30009, and boost transformer 30010 described herein operate at least one of the same or similar operations. Furthermore, the predictive transform coding, boost transform coding, and RAHT transform coding are similar to those of the reference transformer. ​ The descriptions are the same, so their detailed descriptions are omitted.

[0199] According to an embodiment, the arithmetic encoder 8011 can encode the attributes of the code based on arithmetic encoding. The arithmetic encoder 8011 performs the same or similar operations and / or methods as the arithmetic encoder 30012.

[0200] According to an embodiment, the transmission processor 8012 can transmit individual bitstreams containing encoded geometric and / or encoded attribute and metadata information, or transmit a single bitstream configured with encoded geometric and / or encoded attribute and metadata information. When the encoded geometric and / or encoded attribute and metadata information according to an embodiment is configured as a single bitstream, the bitstream may include one or more sub-bitstreams. The bitstream according to an embodiment may include signaling information and slice data. The signaling information includes a sequence parameter set (SPS) for sequence-level signaling, a geometric parameter set (GPS) for signaling for geometric information encoding, an attribute parameter set (APS) for signaling for attribute information encoding, and a tile parameter set (TPS) for tile-level signaling. The slice data may include information about one or more slices. A slice according to an embodiment may include a geometric bitstream Geom0. 0 and one or more attribute bitstreams Attr0 0 and Attr1 0 .

[0201] A slice is a series of syntactic elements that represent a point cloud frame, either fully or partially encoded.

[0202] According to an embodiment, the TPS may include information about individual tiles in one or more tiles (e.g., coordinate information and height / size information about the bounding box). The geometric bitstream may include a header and a payload. The header of the geometric bitstream according to an embodiment may include a geom_parameter_set_id, a geom_tile_id, and a geom_slice_id included in the GPS, as well as information about the data contained in the payload. As described above, the metadata processor 8007 according to an embodiment may generate and / or process signaling information and transmit it to the transmission processor 8012. According to an embodiment, the element performing geometry encoding and the element performing attribute encoding may share data / information with each other, as indicated by the dashed lines. The transmission processor 8012 according to an embodiment may perform the same or similar operations and / or transmission methods as the transmitter 10003. Details and References ​ and ​ The descriptions are the same, so their descriptions are omitted.

[0203] ​ An example of a receiving device according to an embodiment is shown.

[0204] ​ The receiving device shown is ​ Example of receiving device 10004. ​ The receiving device shown can perform the same operation as the reference. ​ The same or similar one or more operations and methods described in the point cloud decoder.

[0205] The receiving apparatus according to an embodiment may include a receiver 9000, a receiving processor 9001, an arithmetic decoder 9002, an octree reconstruction processor based on occupancy codes 9003, a surface model processor (triangle reconstruction, upsampling, voxelization) 9004, an inverse quantization processor 9005, a metadata parser 9006, an arithmetic decoder 9007, an inverse quantization processor 9008, a prediction / boost / RAHT inverse transform processor 9009, a color inverse transform processor 9010, and / or a renderer 9011. Each decoding element according to an embodiment can perform the inverse process of the operation of the corresponding encoding element according to the embodiment.

[0206] Receiver 9000 according to an embodiment receives point cloud data. Receiver 9000 can perform operations related to... ​ The operation and / or receiving method of the receiver 10005 are the same as or similar to those of the receiver. Detailed description omitted.

[0207] According to an embodiment, the receiving processor 9001 can acquire a geometric bitstream and / or an attribute bitstream from the received data. The receiving processor 9001 may be included in the receiver 9000.

[0208] The arithmetic decoder 9002, the octet-based octree reconstruction processor 9003, the surface model processor 9004, and the inverse quantization processor 9005 are capable of performing geometric decoding. Geometric decoding and reference according to the embodiment... ​ The described geometric decodings are the same or similar, so their detailed descriptions are omitted.

[0209] The arithmetic decoder 9002 according to an embodiment can decode a geometric bitstream based on arithmetic coding. The arithmetic decoder 9002 performs the same or similar operations and / or encodings as the arithmetic decoder 7000.

[0210] According to an embodiment, the octree reconstruction processor 9003 based on occupancy codes can reconstruct an octree by obtaining occupancy codes from the decoded geometric bitstream (or information about the geometry obtained as a decoding result). The octree reconstruction processor 9003 performs the same or similar operations and / or methods as the octree synthesizer 7001 and / or the octree generation method. When applying triad geometry encoding, the surface model processor 9004 according to an embodiment can perform triad geometry decoding and related geometric reconstruction (e.g., triangle reconstruction, upsampling, voxelization) based on surface modeling methods. The surface model processor 9004 performs the same or similar operations as the surface approximation synthesizer 7002 and / or the geometry reconstructor 7003.

[0211] The geometry of reversible quantization decoding according to the embodiment of the inverse quantization processor 9005.

[0212] Metadata parser 9006 according to an embodiment can parse metadata (e.g., set values) contained in received point cloud data. Metadata parser 9006 can deliver the metadata to geometry decoder and / or attribute decoder. Metadata and reference ​ The metadata described is the same, so its detailed description is omitted.

[0213] The arithmetic decoder 9007, inverse quantization processor 9008, prediction / boost / RAHT inverse transform processor 9009, and color inverse transform processor 9010 perform attribute decoding. Attribute decoding and reference... ​ At least one of the described attributes is decoded the same or similarly, therefore its detailed description is omitted.

[0214] The arithmetic decoder 9007 according to an embodiment can decode the attribute bitstream via arithmetic encoding. The arithmetic decoder 9007 can decode the attribute bitstream based on the reconstructed geometry. The arithmetic decoder 9007 performs the same or similar operations and / or encodings as the arithmetic decoder 7005.

[0215] According to an embodiment, the inverse quantization processor 9008 can reversibly quantize and decode attribute bitstreams. The inverse quantization processor 9008 performs the same or similar operations and / or methods as the inverse quantizer 7006 and / or the inverse quantization method.

[0216] According to an embodiment, the predict / boost / RAHT inverse transform processor 9009 can handle the reconstructed geometric and inverse quantization properties. The predict / boost / RAHT inverse transform processor 9009 performs operations related to... ​The operation and / or decoding of the RAHT transformer 7007, LOD generator 7008, and / or inverse booster 7009 are the same as or similar to one or more operations and / or decodings. The color inverse transform processor 9010 according to the embodiment performs inverse transform encoding to inverse transform the color values ​​(or textures) included in the decoded attributes. The color inverse transform processor 9010 performs operations similar to... ​ The operation and / or inverse transform encoding of the color inverse transformer 7010 are the same as or similar to the operation and / or inverse transform encoding. The renderer 9011 according to the embodiment can render point cloud data.

[0217] ​ An exemplary structure operable in conjunction with a point cloud data transmission / reception method / apparatus according to an embodiment is shown.

[0218] ​ The structure represents a configuration in which at least one of the following components—server 1060, robot 1010, autonomous vehicle 1020, XR device 1030, smartphone 1040, home appliance 1050, and / or head-mounted display (HMD) 1070—is connected to cloud network 1000. Robot 1010, autonomous vehicle 1020, XR device 1030, smartphone 1040, or home appliance 1050 are referred to as devices. Furthermore, XR device 1030 may correspond to a point cloud data (PCC) device according to an embodiment or be operatively connected to a PCC device.

[0219] Cloud Network 1000 can refer to a network that forms part of or exists within a cloud computing infrastructure. Here, Cloud Network 1000 can be configured using a 3G network, a 4G or Long Term Evolution (LTE) network, or a 5G network.

[0220] Server 1060 can be connected via cloud network 1000 to at least one of robot 1010, self-driving vehicle 1020, XR device 1030, smartphone 1040, home appliance 1050 and / or HMD 1070, and can assist at least a portion of the processing of connected devices 1010 to 1070.

[0221] HMD 1070 represents one of the implementation types of the XR device and / or PCC device according to the embodiments. The HMD-type device according to the embodiments includes a communication unit, a control unit, a memory, an I / O unit, a sensor unit, and a power supply unit.

[0222] Hereinafter, various embodiments of the apparatus 1010 to 1050 that apply the above-described technology will be described. ​ The devices 1010 to 1050 shown are operable to be connected to / coupled to the point cloud data transmitting and receiving devices according to the above embodiments.

[0223]

[0224] The XR / PCC device 1030 may employ PCC technology and / or XR (AR+VR) technology, and may be implemented as an HMD, a head-up display (HUD) installed in a vehicle, a television, a mobile phone, a smartphone, a computer, a wearable device, a home appliance, a digital signage, a vehicle, a stationary robot, or a mobile robot.

[0225] The XR / PCC device 1030 can analyze 3D point cloud data or image data acquired through various sensors or from external devices and generate positional and attribute data about 3D points. Thus, the XR / PCC device 1030 can acquire information about the surrounding space or real-world objects and render and output XR objects. For example, the XR / PCC device 1030 can match an XR object, including auxiliary information about the identified object, with the identified object and output a matched XR object.

[0226]

[0227] The XR / PCC device 1030 can be implemented as a smartphone 1040 by applying PCC technology.

[0228] The 1040 smartphone can decode and display point cloud content based on PCC technology.

[0229]

[0230] The self-driving vehicle 1020 can be realized as a mobile robot, vehicle, unmanned aerial vehicle, etc. by applying PCC technology and XR technology.

[0231] The self-driving vehicle 1020 employing XR / PCC technology can refer to a self-driving vehicle equipped with means for providing XR images, or a self-driving vehicle serving as a control / interaction target in an XR image. Specifically, as a control / interaction target in an XR image, the self-driving vehicle 1020 can be distinguished from and operatively connected to the XR device 1030.

[0232] The autonomous vehicle 1020, equipped with means for providing XR / PCC images, can acquire sensor information from sensors including cameras and output generated XR / PCC images based on the acquired sensor information. For example, the autonomous vehicle 1020 may have a HUD and output XR / PCC images to it, thereby providing passengers with XR / PCC objects corresponding to real objects or objects presented on a screen.

[0233] When an XR / PCC object is output to a HUD, at least a portion of the XR / PCC object can be output to overlap with the actual object being pointed at by the passenger's eyes. Conversely, when an XR / PCC object is output to a display installed within the autonomous vehicle, at least a portion of the XR / PCC object can be output to overlap with objects on the screen. For example, the autonomous vehicle 1020 can output XR / PCC objects corresponding to objects such as roads, other vehicles, traffic lights, traffic signs, two-wheeled vehicles, pedestrians, and buildings.

[0234] Virtual reality (VR), augmented reality (AR), mixed reality (MR), and / or point cloud compression (PCC) technologies according to the embodiments are applicable to various devices.

[0235] In other words, VR technology is a display technology that only provides CG images of real-world objects, backgrounds, etc. AR technology, on the other hand, refers to the technology of displaying virtually created CG images on top of images of real objects. MR technology is similar to AR technology in that the virtual objects to be displayed are mixed and combined with the real world. However, MR technology differs from AR technology in that AR technology clearly distinguishes between real objects and virtual objects created as CG images and uses virtual objects as supplementary objects to real objects, while MR technology treats virtual objects as objects with the same characteristics as real objects. More specifically, an example of MR technology application is holographic services.

[0236] Recently, VR, AR, and MR technologies have often been referred to as scaled reality (XR) technologies rather than being clearly distinguished from each other. Therefore, embodiments of this disclosure are applicable to any of VR, AR, MR, and XR technologies. Encoding / decoding based on PCC, V-PCC, and G-PCC technologies are suitable for such technologies.

[0237] The PCC method / apparatus according to the embodiments can be applied to vehicles that provide autonomous driving services.

[0238] Vehicles providing autonomous driving services connect to the PCC device for wired / wireless communication.

[0239] When the point cloud data (PCC) transmitting / receiving device according to an embodiment is connected to a vehicle for wired / wireless communication, the device can receive / process content data related to AR / VR / PCC services (which may be provided together with autonomous driving services) and transmit it to the vehicle. If the PCC transmitting / receiving device is installed in the vehicle, it can receive / process content data related to AR / VR / PCC services based on user input signals input through a user interface device and provide it to the user. The vehicle or user interface device according to an embodiment can receive user input signals. User input signals according to an embodiment may include signals indicating autonomous driving services.

[0240] The point cloud data transmission method / apparatus according to the embodiments is interpreted as referring to... ​ The transmitting device 10000, the point cloud video encoder 10002, and the transmitter 10003, ​ Get 20000 - Encode 20001 - Send 20002 ​ Point cloud video encoder, ​ The transmitting device ​ The device ​ Encoding methods ​ The transmitting device ​ Terms related to sending methods, etc.

[0241] The point cloud data receiving method / apparatus according to the embodiments is to be interpreted as referring to... ​ The receiving device 10004, receiver 10005, and point cloud video decoder 10006. ​ Sending 20002 - Decoding 20003 - Rendering 20004 ​ Point cloud video decoder, ​ The receiving device ​ The device ​ Decoding methods ​ The receiving device ​ Terminology related to receiving methods, etc.

[0242] The point cloud data transmission and reception method / apparatus according to the embodiments can be simply referred to as the method / apparatus according to the embodiments.

[0243] According to the embodiments, geometric data, geometric information, location information, etc., that constitute point cloud data are interpreted as having the same meaning. Attribute data, attribute information, etc., that constitute point cloud data are interpreted as having the same meaning.

[0244] The method / apparatus according to the embodiments can be considered for scalable transmission to process point cloud data.

[0245] Regarding the method / apparatus according to embodiments, this document discloses a method for effectively supporting selective decoding of partial data based on receiver performance or transmission speed when transmitting / receiving point cloud data. Specifically, this disclosure proposes a technique for increasing the efficiency of scalable coding, wherein an encoder at the transmitting end can selectively deliver information required by a decoder at the receiving end for compressing data, and the decoder can decode it, wherein coding units can be configured as independent slices in the sense of tree level, LOD, layer group unit, etc.

[0246] Specifically, this disclosure proposes a method for increasing the efficiency of scalable coding in point cloud data compression methods. Here, scalable coding is a technique for gradually changing the data resolution based on receiver requests / processing speed / performance / transmission bandwidth, etc., enabling compressed data to be efficiently delivered from the sending side and decoded at the receiving side. To this end, layer-based grouping for efficient delivery of point cloud data can be applied in conjunction with the techniques of this disclosure. Specifically, this paper proposes a method for configuring slice fragments to be more suitable for scalable PCC services and sending / receiving them when direct compression mode is used for location compression. Additionally, compression methods for efficiently storing and transmitting large point cloud data with wide distribution and high point density can be used.

[0247] Reference ​ and ​ The point cloud data transmitting / receiving apparatus (which may be simply referred to as an encoder / decoder) shown in the embodiment comprises a set of points. Each point includes geometric information (or geometry or geometric data) and attribute information (or attributes or attribute data). The geometric information is the three-dimensional position information (x, y, z) of each point. That is, the position of each point is represented by parameters in a coordinate system representing three-dimensional space (e.g., parameters representing the three axes of space (x, y, z), such as the X-axis, Y-axis, and Z-axis). The attribute information represents the point's color (RGB, YUV, etc.), reflectivity, normal vector, transparency, etc. In point cloud compression (PCC), octree-based compression is performed to effectively compress non-uniform distributions in three-dimensional space, and the attribute information is compressed based on octree compression. ​ and ​ The point cloud video encoder and point cloud video decoder shown can perform operations through their respective components according to the embodiments.

[0248] According to an embodiment, the transmitting device compresses geometric information (e.g., location) and attribute information (e.g., color / brightness / reflectivity, etc.) about the point cloud data and sends the compressed information to the receiving device. The point cloud data can be configured according to an octree structure having layers based on the level of detail (LoD). Scalable point cloud data encoding and representation can then be performed based on this configuration. In this case, depending on the performance of the receiving device or the transmission rate, only a portion of the point cloud data can be decoded or represented. However, there is currently no method for pre-removing unnecessary data.

[0249] In other words, when only a portion of the scalable point cloud compressed bitstream needs to be transmitted (e.g., only a portion of the decoding layer in scalable decoding), it is impossible to select and transmit the necessary parts. Therefore, the transmitting device must re-encode the necessary parts after decoding, such as... ​ As shown, or when the entire data is transmitted to the receiving device, the receiving device should selectively apply the necessary data after decoding, such as in ​ As shown in the image.

[0250] However, in ​ In such cases, delays may occur due to the time required for decoding and re-encoding. ​ In such cases, bandwidth efficiency may deteriorate due to the transmission of unnecessary data to the receiving device. Furthermore, when using fixed bandwidth, it may be necessary to reduce data quality for data transmission.

[0251] Therefore, the method / apparatus according to the embodiments can provide slicing, such that the point cloud is divided into regions for processing.

[0252] Specifically, in the case of octree-based positional compression, entropy-based compression and direct compression can be used together. In this regard, this paper proposes a slice configuration for effectively utilizing scalability.

[0253] Furthermore, regarding the method / apparatus according to the embodiments, a sliced ​​structure for point cloud data can be defined, and scalable layers and sliced ​​structures for scalable transmission can be signaled.

[0254] The method / apparatus according to the embodiments can divide and process a bitstream into specific units for efficient bitstream delivery and decoding.

[0255] The method / apparatus according to the embodiments can realize selective transmission and decoding of hierarchical point cloud data in a bitstream unit.

[0256] According to embodiments, units can be referred to as Level of Detail (LOD), layers, slices, etc. LOD is the same term as LOD in attribute data encoding, but in another sense it can refer to a data unit used for a hierarchical structure of bitstreams. An LOD can be a layered structure based on point cloud data, for example, the depth (level) of an octree or multi-way tree corresponds to a concept of one depth or a bundle of two or more depths. Similarly, layers are units provided to generate sub-bitstreams. It is a concept corresponding to a bundle of one depth or two or more depths, and can correspond to one LOD or two or more LODs. Furthermore, a slice is a unit used to configure sub-bitstreams, and can correspond to one depth, a portion of a depth, or two or more depths. Additionally, a slice can correspond to one LOD, a portion of an LOD, or two or more LODs. According to embodiments, LODs, layers, and slices can correspond to each other, or one of LODs, layers, and slices can be included in another. Furthermore, units according to embodiments can include LODs, layers, slices, layer groups, or subgroups, and can be interchangeably referenced. According to embodiments, in an octree structure, layers, depths, levels, and depth levels can have the same meaning.

[0257] ​ This is a diagram illustrating an example of layer-based point cloud data configuration according to an embodiment. ​ The diagram illustrates an example of an octree structure, where the root node's depth level is set to 0 and the leaf nodes' depth level is set to 7.

[0258] The method / apparatus according to the embodiments can be configured as follows: ​ The layer-based point cloud data shown is used for encoding and decoding point cloud data.

[0259] The layering of point cloud data according to the embodiments can depend on the application domain and have a layered structure in terms of SNR, spatial resolution, color, temporal frequency, bit depth, etc., and the layers can be configured in the direction of increasing data density based on octree structure or LOD structure.

[0260] In other words, when generating a Level of Detail (LOD) based on an octree structure, the LOD can be defined as an increase in detail in the direction of increasing detail, i.e., in the direction of increasing octree depth. In this disclosure, a layer can have the same meaning as level, depth, and depth level.

[0261] refer to ​For example, in an octree structure with 7 depth levels other than the root node level (or root level), LOD 0 is configured to include levels from the root node level to octree depth level 4, LOD 1 is configured to include levels from the root node level to octree depth level 5, and LOD 2 is configured to include levels from the root node level to octree depth level 7.

[0262] ​ -(a) The diagram illustrates the bitstream structure of the geometric data according to the embodiment, and ​ -(b) The diagram illustrates the bitstream structure of the attribute data according to the embodiment.

[0263] The method / apparatus according to the embodiments can be based on, for example... ​ The hierarchical generation of LOD using the octree structure shown is configured as follows: ​ -(a) and ​ -(b) shows the geometric bitstream and attribute bitstream.

[0264] According to this embodiment, the transmitting device can divide the bit stream obtained by point cloud compression into a geometric bit stream and an attribute bit stream based on the data type in order to transmit the bit stream.

[0265] In this scenario, each bitstream can consist of multiple slices and be transmitted. According to an embodiment, a geometric bitstream (e.g., ​ -(a)) and attribute bitstreams (e.g., ​ -(b)) can be configured as a slice and can be delivered regardless of layer information or LoD information. In this case, in order to use only some layers or LoD, operations such as decoding the bitstream, selecting only the parts to be used and removing unnecessary parts, and re-encoding only based on necessary information should be performed.

[0266] This disclosure proposes a method for dividing a bitstream into layers (or LoD) to avoid such unnecessary intermediate operations.

[0267] ​ This is a diagram illustrating an example of a bitstream configuration for delivering a bitstream divided into layers (or LoD) according to an embodiment.

[0268] For example, in the case of LoD-based PCC technology, lower LoDs are included in higher LoDs. That is, higher LoDs include all points of lower LoDs. Furthermore, when information about points included in the current LoD but not in previous LoDs—that is, new points added to each LoD—is defined as R (remaining or reserved), the transmitting device can divide the initial LoD information and the newly included information R in each LoD into independent units (e.g., slices) and transmit them, such as... ​ As shown in the image.

[0269] In other words, the set of new points added by configuring each LoD compared to the previous LoD can be defined as information R. ​ The illustration shows an example where LoD1 includes LoD0 and information R1, and LoD2 includes LoD1 and information R2.

[0270] According to an embodiment, points sampled for one or more octree depth levels can be identified as data belonging to information R. That is, the set of points sampled for one or more octree depth levels (i.e., points matching the occupying node) can be defined as information R. According to another embodiment, points sampled for one octree depth level can be divided into multiple information Rs according to predetermined criteria. In this case, various criteria for dividing an octree depth level into multiple information Rs can be considered. For example, when dividing an octree depth level into M information Rs, the M information Rs can be configured such that the data in information Rs have consecutive Morton codes, or they can be grouped such that the data in information Rs have the same remainder obtained by dividing the Morton code sequential index by M. Alternatively, when grouped as sibling nodes, the M information Rs can be configured by grouping data at the same position. According to another embodiment, if necessary, some sampled points from multiple octree depth levels can be identified as information R.

[0271] exist ​ In this example, according to the embodiment, both the geometry bitstream and the attribute bitstream are divided into three slices. Each slice includes a header and a payload (also called a data unit) containing the actual data (e.g., geometry data, attribute data). The header may contain information about the corresponding slice. Additionally, the header may further contain reference information related to previous slices, previous LoDs, or previous layers used for LoD configuration.

[0272] For example, refer to ​The geometric bitstream is divided into slices carrying geometric data belonging to LoD0, slices carrying geometric data belonging to information R1, and slices carrying geometric data belonging to information R2. The attribute bitstream is divided into slices carrying attribute data belonging to LoD0, slices carrying attribute data belonging to information R1, and slices carrying attribute data belonging to information R2.

[0273] The receiving method / apparatus according to the embodiments can receive bit streams divided into LODs or layers, and can efficiently decode only the data to be used without complicated intermediate processes.

[0274] In this regard, various implementation methods can be used to send bit streams.

[0275] For example, the geometry bitstream and the attribute bitstream can be delivered separately. Alternatively, the geometry bitstream and the attribute bitstream can be multiplexed into a single bitstream and delivered.

[0276] When each bitstream contains LoD0 and one or more messages R, the delivery order of LoD0 and one or more messages R can vary.

[0277] exist ​ In the example, the geometric bitstream and the attribute bitstream are delivered separately. In this case, LoD0 including the geometric bitstream and two pieces of information R(R1, R2) are delivered sequentially, and LoD0 including the attribute bitstream and two pieces of information R(R1, R2) are delivered sequentially.

[0278] ​ The illustration shows an exemplary bitstream ordering used when multiplexing a geometric bitstream and an attribute bitstream into a single bitstream, according to an embodiment.

[0279] The transmission method / apparatus according to the embodiments can transmit bit streams sequentially, such as... ​ The diagram shows geometric data and attribute data. In this operation, depending on the data type, the entire geometric data (or geometric information) can be sent first, followed by the attribute data (or attribute information). In this case, the geometric data can be quickly reconstructed based on the sent bitstream information.

[0280] For example, refer to ​ The layer containing geometric data (LOD) can be located first in the bitstream, and the layer containing attribute data (LOD) can be located after the geometric layer. Because the attribute data depends on the geometric data, the layer containing the geometric data (LOD) can be located before the layer containing the attribute data (LOD). ​The illustrated example shows a LoD0 containing geometric data and two pieces of information R(R1, R2) delivered sequentially, followed by a LoD0 containing attribute data and two pieces of information R(R1, R2) delivered sequentially. The positions can be changed in this regard depending on the embodiment. Furthermore, references can be made between geometric headers, and also between attribute headers and geometric headers.

[0281] ​ The illustration shows another exemplary bitstream sorting method according to an embodiment, where the geometric bitstream and the attribute bitstream are multiplexed into a single bitstream.

[0282] When transmitting bit streams, the transmission method / apparatus according to the embodiments can transmit in series such as ​ The diagram shows geometric and attribute data. In this case, bitstreams containing geometric and attribute data that constitute the same layer can be bundled and sent. In this case, when compression techniques are used for parallel decoding of geometry and attributes, decoding execution time can be reduced. In this respect, information that requires priority can be processed first (low LoD and geometry should take precedence over attributes).

[0283] ​ The illustration shows an example of sending LoD0 containing geometric data, LoD0 containing attribute data, information R1 containing geometric data, information R1 containing attribute data, information R2 containing geometric data, and information R2 containing attribute data in this order. In this case, these positions can be adjusted according to the embodiment. Furthermore, references can be made between the geometric headers, and also between the attribute header and the geometric header.

[0284] The transmitting / receiving method / apparatus according to the embodiments can effectively select the layer (or LoD) required by the application domain at the bitstream level when transmitting and receiving bitstreams. In the bitstream ordering method according to the embodiments, when such as ​ When the geometric information shown is grouped and transmitted, blank sections may appear in the middle after selecting the bitstream level. In this case, the bitstream may need to be reprocessed.

[0285] By according to ​ The layers shown are used to bundle and transmit geometric and attribute data, and can selectively deliver necessary information and / or selectively remove unnecessary information based on the application domain, such as... ​ -(a) to ​ -(c) or ​ -(a) to ​ As shown in -(c).

[0286] ​ -(a) to ​-(c) is a diagram illustrating an example of the selection of symmetric geometric properties according to an embodiment.

[0287] For example, refer to ​ -(a) to ​ -(c) When it is necessary to select a portion of the bitstream according to the embodiment, the transmitting device selects and transmits only the data up to LoD1 (i.e., LoD0+R1), and removes the information R2 corresponding to the upper layer (i.e., the new portion of LoD2) from the bitstream and does not transmit it. In the case of symmetric geometric attribute selection, the geometric data and attribute data of the same layer are selected and transmitted simultaneously, or selected and removed simultaneously.

[0288] ​ -(a) to ​ -(c) is a diagram illustrating an example of asymmetric geometric attribute selection according to an embodiment. In the case of asymmetric geometric attribute selection, only one of the geometric data and attribute data of the same layer is selected and sent or removed.

[0289] For example, refer to ​ -(a) to ​ -(c) When it is necessary to select a portion of the bitstream according to the embodiment, the transmitting device selects and transmits LoD1 (LoD0 + R1) containing geometric data and attribute data, LoD1 (LoD0 + R1) containing attribute data, and R2 containing geometric data, and removes R2 containing attribute data from the bitstream so that it is not transmitted. In other words, for attribute data, data other than the data in the upper layer (R2) is selected and transmitted. For geometric data, data from all layers (from level 0 (root level) to level 7 (leaf level) in the octree structure) are transmitted.

[0290] When it is necessary to select a portion of the bitstream according to an implementation example, the following can be used: ​ -(a) to ​ -(c) Symmetrical geometric attribute selection method, ​ -(a) to ​ -(c) Asymmetric geometric attribute selection method, or a combination of symmetric geometric attribute selection method and asymmetric geometric attribute selection method, to select a portion of the bit stream.

[0291] The segmentation of the bitstream and the selection of bitstream portions mentioned above are designed to support the scalability of point cloud data.

[0292] When point cloud data is represented in an octree structure and divided into LODs (or layers), scalable encoding / decoding (scalability) can be supported.

[0293] The scalability features according to the embodiments may include slice-level scalability and / or octree-level scalability.

[0294] According to the embodiments, LoD can be used as a unit to indicate a set of one or more octree layers. Furthermore, LoD can refer to a bundle of octree layers to be configured on a slice-by-slice basis.

[0295] The LOD according to the embodiment can be used in a broad sense, such as for units that are used to divide data in detail, beyond the meaning of LOD in attribute encoding / decoding.

[0296] In other words, spatial scalability can be provided for each octree layer, which is the actual octree layer (or scalable attribute layer). However, when scalability is configured at the slice level before bitstream parsing, the choice can be made at the LoD level.

[0297] For example, refer to ​ In an octree structure, levels from the root level to level 4 correspond to LoD0, and levels from the root level to level 5 correspond to LoD1. Furthermore, levels from the root level to level 8 (i.e., the leaf level) correspond to LoD2.

[0298] In other words, in ​ In the example, when scalability is used at the slice level, the provided scalable operations correspond to three steps: LoD0, LoD1, and LoD2, and the octree structure can provide scalable operations in the decoding operation corresponding to eight steps from the root level to the leaf level.

[0299] According to an embodiment, when LoD0 to LoD2 are composed of their respective slices, the transcoder of the receiver or transmitter (see [example]) ​ You can select only LoD0, only LoD1, or LoD2 for scalable processing. ​ In this context, LoD1 includes LoD0, and LOD2 includes both LoD1 and LoD2.

[0300] For example, when only LoD0 is selected, the maximum octree level is 4, and a scalable layer can be selected from octree levels 0 to 4 during the decoding operation. In this case, the receiving device can treat the node size obtainable through the maximum octree level (or depth) as a leaf node and send that node size via signaling information.

[0301] For example, when LoD1 is selected, layer 5 can be added. Therefore, the maximum octree level can be 5, and a scalable layer can be selected from octree layers 0 to 5 during the decoding operation. In this case, the receiving device can treat the node size obtainable through the maximum octree level (or depth) as a leaf node and can transmit that node size via signaling information. According to embodiments, octree depth, octree layers, and octree levels can be units where data is meticulously divided.

[0302] For example, when LoD2 is selected, layers 6 and 7 can be added. Therefore, the maximum octree level can be 7, and a scalable layer can be selected from octree layers 0 to 7 during the decoding operation. In this case, the receiving device can treat the node size available through the maximum octree level (or depth) as a leaf node and can transmit that node size via signaling information.

[0303] ​ -(a) to ​ -(c) The illustration shows an exemplary method of slicing point cloud data according to an embodiment.

[0304] According to the embodiments, the transmission method / apparatus / encoder can configure the G-PCC bitstream by segmenting the bitstream in a slice structure. The data unit used for detailed data representation can be a slice.

[0305] For example, one or more octree layers (or depths) can be matched with a slice.

[0306] According to the transmission method / apparatus of the embodiment, such as an encoder, a bit stream can be configured based on slice 41001 by scanning the nodes (points) included in the octree in the direction of scan sequence 41000. A slice may include nodes at one or more levels in the octree structure, may include only nodes at a specific level, or may include only some nodes at a specific level. Alternatively, it may include only some nodes at one or more levels.

[0307] ​ -(a) The diagram illustrates an exemplary octree structure consisting of 7 slices. In this example, slice 41002 may include nodes from level 0 to level 4, and slice 41003 may include some nodes of level 5. Slice 41004 may include some other nodes of level 5, and slice 41005 may include some other nodes of level 5. That is, in ​ In (a), level 5 is divided into three slices. Similarly, in ​ In (a), level 6 (i.e., the leaf level) is also divided into three slices. In other words, a slice can consist of some nodes at a specific level.

[0308] ​ -(b) illustrates an exemplary octree structure consisting of four slices. In this example, one slice includes nodes from level 0 to level 3 and some nodes from level 4, and another slice includes other nodes from level 4 and some nodes from level 5. Additionally, another slice includes other nodes from level 5 and some nodes from level 6, and yet another slice includes other nodes from level 6.

[0309] ​ -(c) The diagram illustrates an exemplary octree structure consisting of five slices. One slice consists of nodes from level 0 to level 3, and four slices consist of nodes from level 4 to level 6. That is, a slice includes some nodes of level 4, some nodes of level 5, and some nodes of level 6. In other words, at levels 4 to 6, a slice may include some data of level 4 and data of level 5 or level 6 corresponding to the child nodes of that data.

[0310] In other words, such as ​ -(b) and ​ As shown in (c), when multiple octree layers match a slice, only some nodes from each layer can be included in the slice. When multiple slices form a geometry / attribute frame in this manner, information necessary for the receiving device to configure the layers can be sent to the receiving device via signaling information. For example, the signaling information may include information about the layers included in each slice and information about the nodes included in each layer.

[0311] The encoder and the corresponding device according to this embodiment can encode point cloud data and generate and transmit a bit stream containing the encoded data and signaling information (or parameter information) related to the point cloud data.

[0312] Furthermore, when generating the bitstream, it can be based on the bitstream structure according to the embodiment (e.g., see...). ​ (etc.) generate a bitstream. Therefore, the receiving device, decoder, corresponding device, etc. according to the embodiment can receive and parse the bitstream configured to selectively decode some data, thereby decoding and effectively providing only a portion of the point cloud data.

[0313] Next, we will describe the scalable transfer of point cloud data.

[0314] The point cloud data transmission method / apparatus according to the embodiments can scalably transmit a bit stream containing point cloud data, and the point cloud data receiving method / apparatus according to the embodiments can scalably receive the bit stream and decode it.

[0315] When have ​ When the bitstream structure illustrated in the diagram is used for scalable transmission, signaling information for selecting the desired slice for the receiving device can be sent to the receiving device. Scalable transmission does not necessarily mean sending or decoding the entire bitstream, but rather sending or decoding only a portion of the bitstream. Therefore, low-resolution point cloud data can be provided.

[0316] When scalable transmission is applied to an octree-based geometric bitstream according to an embodiment, for each octree layer from the root node to the leaf node ( ​The bitstream should allow configuration of point cloud data based solely on information about the layers up to a specific octree layer.

[0317] Therefore, the target octree layer should not have any dependency on information from lower octree layers. This can be a constraint that is applied jointly to geometric encoding / attribute encoding.

[0318] Additionally, in scalable transmission, the scalable structure used by the transmitting / receiving device to select scalable layers needs to be sent to the receiving device. Considering the octree structure according to the embodiment, all octree layers can support scalable transmission, or scalable transmission can be allowed only for specific octree layers and lower layers. For example, when some octree layers are included, signaling information can be delivered to the receiving device to indicate the scalable layer including that slice. Therefore, the receiving device can determine whether the slice is necessary / unnecessary during the bitstream stage. ​ In the example of -(a), levels 0 (i.e., the root level) to 4 41002 can constitute a scalable layer that does not support scalable transport, and lower octree levels can be matched with scalable layers in a one-to-one correspondence. Typically, scalability can be supported for the portions corresponding to leaf nodes. ​ As shown in -(c), when a slice includes multiple octree layers, it can be defined that these layers should be configured as a scalable layer.

[0319] In this context, scalable transmission and scalable decoding can be used individually, depending on the purpose. According to an embodiment, scalable transmission can be used to allow transmitting / receiving devices to select information up to a specific layer without involving a decoder. According to an embodiment, scalable decoding can be used to select a specific layer during encoding. That is, scalable transmission can support the selection of necessary information in a compressed state (i.e., during the bitstream stage) without involving a decoder, allowing the transmitting or receiving device to determine a specific layer. On the other hand, in the case of scalable decoding, encoding / decoding can be supported only for the necessary portions of information during the encoding / decoding process. Therefore, scalable decoding can be used in operations such as scalable representation.

[0320] In this context, the layer configuration for scalable transport may differ from the layer configuration for scalable decoding. For example, for scalable transport, the lower three octree layers, including leaf nodes, can constitute a single layer. On the other hand, for scalable decoding, when all layer information is included, scalable decoding can be enabled for each of the leaf node layer, leaf node layer-1, and leaf node layer-2.

[0321] ​ -(a) and ​-(b) Illustration of the geometry coding layer structure according to an embodiment. Specifically, ​ -(a) This diagram illustrates an example of three slices generated at the encoder on the transmitting side using a layer group structure, and ​ -(b) shows an example of the output of partial decoding using two slices at the decoder on the receiving side.

[0322] When fine-grained slicing (FGS) is enabled, a G-PCC bitstream can be sliced ​​into multiple sub-bitstreams. Here, fine-grained slicing can be referred to as layer-group-based slicing. To effectively utilize the layered structure of G-PCC, each slice can include encoded data from a portion of the coding layer or a portion of the region. Using segmentation or partitioning of slices paired with the coding layer structure enables use cases for scalable transmission or spatial random access in an efficient manner.

[0323]

[0324] In fine-grained slicing, each slice fragment can contain data encoded from a layer group defined below.

[0325] A layer group can be defined as a set of consecutive tree layers, where the start and end depths of the tree layers in the group can be any number in the tree depth, and the start depth can be less than the end depth. The order of data encoded in a slice fragment can be the same as the order of data encoded in a single slice.

[0326] For example, consider as ​ The geometric coding layer structure shown in (a) has eight coding layers, with three layer groups, each matched with a different slice. More specifically, layer group 1, used for coding layers 0 through 4, matches slice 1; layer group 2, used for coding layers 5 and 4, matches slice 2; and layer group 3, used for coding layers 6 and 7, matches slice 3. When the first two slices are sent or selected (i.e., slices 1 and 2), the decoded output will be a portion of layers 0 through 5, as shown... ​ As shown in (b), by using slices in the layer group structure, partial decoding of the coding layer can be supported without accessing the entire bitstream.

[0327] According to the embodiments, bitstream and point cloud data can be generated based on slicing at the end of the coding layer. By slicing the bitstream at the end of the coding layer during the encoding process, the method / apparatus according to the embodiments can select relevant slices, thereby supporting scalable transmission or partial decoding.

[0328] ​-(a) shows a geometric coding layer structure with 8 layers, where each slice corresponds to a layer group. Layer group 1 includes coding layers 0 through 4. Layer group 2 includes coding layer 5. Layer group 3 is a group used to code layers 6 and 7. When the geometry (or attribute) has a tree structure with eight levels (depths), the bitstream can be configured hierarchically by grouping the data corresponding to one or more levels (depths). Each group can be included in a slice.

[0329] ​ -(b) shows the output when two slices are selected from three slices. When the decoder selects group 1 and group 2, partial layers of the tree at levels (depths) 0 to 5 are selected. That is, partial decoding of the coding layers can be supported by using slices of the layer group structure, even without accessing the entire bitstream.

[0330] For the partial decoding process according to the embodiment, the encoder can generate three slices based on the layer group structure. The decoder according to the embodiment can select two slices from the three slices and perform partial decoding.

[0331] The bitstream according to an embodiment may include layer-based slices. Each slice may include a header containing signaling information related to the point cloud data (i.e., geometric data and / or attribute data) included in the slice. The receiving method / apparatus according to an embodiment may select slices and decode the point cloud data contained in the slice payload based on the headers included in the selected slices.

[0332] Considering use cases for spatial random access beyond layer group structures, the method / apparatus according to the embodiments can further divide the layer group into several subgroups. The subgroups are mutually exclusive, and the set of subgroups can be the same as the layer group. Because the points of each subgroup form boundaries in the spatial domain, the subgroups can be represented by subgroup bounding box information. Based on the spatial information, the layer group and subgroup structure can support access to the region of interest (ROI) by selecting slices that cover the ROI. By effectively comparing the ROI with the bounding box information about each slice, spatial random access within a frame or tile can be supported.

[0333] The method / apparatus according to the embodiments can be configured for delivering slices of point cloud data, such as... ​ As shown in (a).

[0334] According to an embodiment, the entire encoded bitstream can be included in a single slice. For multiple slices, each slice can contain sub-bitstreams. The order of the slices can be the same as the order of the sub-bitstreams. Furthermore, each slice can match a group of layers in a tree structure.

[0335] Furthermore, slicing may not affect previous slices, just as higher layers of a geometry tree do not affect lower layers.

[0336] The segmented slicing according to the embodiments is effective in terms of error robustness, efficient transmission, and region of interest support.

[0337] 1) Error Recovery

[0338] Compared to a single-slice structure, segmented slices are more robust to errors. In other words, when a slice contains the entire bitstream of a frame, data loss may affect the entire frame data. On the other hand, when the bitstream is segmented into multiple slices, at least one slice can be decoded without being affected by the loss even if at least one slice is lost.

[0339] 2) Scalable transmission

[0340] This disclosure can support multiple decoders with different capabilities.

[0341] When encoded point cloud data (i.e., point cloud compression (PCC) bitstream) is contained in a single slice, the level of detail (LOD) of the encoded point cloud data can be determined before encoding. Therefore, multiple pre-coded bitstreams with different point cloud data resolutions can be sent independently, which may be inefficient in terms of large bandwidth or storage space.

[0342] When encoded point cloud data (i.e., PCC bitstream) is contained in segmented slices, a single bitstream can support different levels of decoders. From the decoder's perspective, the receiving device can select the target layer and deliver a portion of the selected bitstream to the decoder. Similarly, by using a single bitstream without partitioning the entire bitstream, the transmitting device can efficiently generate partial bitstreams.

[0343] 3) Region-based spatial scalability

[0344] Regarding the G-PCC requirements according to the embodiments, region-based spatial scalability can be defined as follows: the compressed bitstream consists of one or more layers, and therefore a particular ROI utilizes additional layers to have higher density, and each layer can be predicted from the lower layers.

[0345] To meet this requirement, it is necessary to support different levels of detail representation for each region. For example, in VR / AR applications, distant objects can be represented with lower precision, while nearby objects can be represented with higher precision. Furthermore, the decoder can increase the resolution of the region of interest upon request. This operation can be implemented using geometric octrees and scalable structures such as G-PCC, a scalable attribute coding scheme.

[0346] According to an embodiment, the decoder should access the entire bitstream based on the current slice structure containing the entire geometry or attributes, which may lead to inefficiencies in bandwidth, memory, and decoder performance. On the other hand, when the bitstream is segmented into multiple slices, and each slice contains sub-bitstreams according to scalable layers, the decoder according to the embodiment can efficiently select slices as needed before parsing the bitstream.

[0347] The method / apparatus according to the embodiments can generate layer groups using a tree structure (or layer structure) of point cloud data.

[0348] refer to ​ -(a) As an example, a geometric encoding layer structure (e.g., an octree structure) has eight layers, and three slices can be used to contain one or more layers. A group represents a set of layers. When using scalable attribute encoding, the tree structure is the same as the geometric tree structure. The same octree-slice mapping can be used to create attribute slice fragments.

[0349] According to the embodiments, a layer group represents a bundle of layer structure units generated in G-PCC encoding, such as an octree layer or a LoD layer.

[0350] A subgroup can be represented as a set of neighboring nodes within a layer group. For example, it can be configured as a set of nodes that are adjacent to each other in Morton code order, a set of neighboring nodes based on distance, or a set of neighboring nodes based on coding order. Nodes in parent-child relationships can also exist within a subgroup.

[0351] When defining subgroups, boundaries appear in the middle of layers, and parameters such as `entropy_continuation_enabled_flag` can be signaled to indicate whether entropy continuity should be maintained at the boundaries. Continuity can also be maintained by referencing previous slices using `ref_slice_id`.

[0352] The tree structure according to the embodiments may be an octree structure, and the attribute layer structure or attribute encoding tree according to the embodiments may include a level of detail (LOD) structure. In other words, the tree structure for point cloud data may include layers corresponding to depth or level, and these layers may be grouped.

[0353] The method / apparatus according to the embodiments (e.g., ​ The octree analyzer 30002 or LOD generator 30009 in the middle, ​ The octree synthesizer 7002 or LOD generator 7008 in the code can generate octree structures of geometry or LOD tree structures of attributes. Furthermore, point cloud data can be grouped based on layers of the tree structure.

[0354] refer to ​-(a) Multiple layers are grouped into first to third groups. Groups can be further divided to form subgroups.

[0355] According to an embodiment, a slice may contain encoded data from a layer group. Here, a layer group is defined as a set of consecutive tree layers. The start and end depths of a tree layer can be specific numbers in the tree depth, where the start number is less than the end number.

[0356] Although ​ -(a) The illustrated geometric coding layer structure serves as an example of a tree structure, and coding layer structures for attributes can also be created in a similar manner.

[0357] ​ This is a diagram illustrating the layer and subgroup structure according to an embodiment.

[0358] refer to ​ Point cloud data and bit streams can be distinguished and represented using bounding boxes.

[0359] exist ​ The diagram illustrates the subgroup structure and the corresponding bounding boxes for each subgroup. Layer group 2 is divided into two subgroups (group 2-1 and group 2-2), which are included in different slices, and layer group 3 is divided into four subgroups (group 3-1, group 3-2, group 3-3, and group 3-4), which are included in different slices. Given the slice and bounding box information for each layer group and subgroup, spatial access can be performed by: 1) comparing the bounding box of each slice with the ROI; 2) selecting slices where the subgroup bounding box overlaps with the ROI; and 3) decoding the selected slices.

[0360] When considering the ROI in region 3-3, slices 1, 3, and 6 are selected as the subgroup bounding boxes covering layer group 1 and subgroups 2-2 and 3-3 of that ROI. For efficient spatial access, it is assumed that there are no dependencies between subgroups from the same layer group. In live or low-latency use cases, time efficiency can be improved by performing selection and decoding upon receiving each slice fragment.

[0361] When encoding geometry and / or attributes, the method / apparatus according to the embodiment can present data as a tree 2200 composed of layers (which may be referred to as depth, level, etc.). Point cloud data corresponding to each layer (depth / level) can be grouped into layer groups (or groups) 45000. Layer group 2 can be further divided (segmented) into two subgroups 45002, and layer group 3 can be further divided (segmented) into four subgroups 45003. Each subgroup can be configured as a slice to generate a bitstream.

[0362] The receiving apparatus according to the embodiment can receive a bitstream, select a specific slice from the bitstream, and decode the bounding boxes corresponding to the subgroups included in the selected slice. For example, when slice 1 is selected, the bounding box 45004 corresponding to layer group 1 can be decoded. Layer group 1 may be data corresponding to the largest region. When additional detailed regions are displayed for layer group 1, the method / apparatus according to the embodiment can select slice 3 and / or slice 6, and hierarchically access the bounding boxes (point cloud data) of subgroups 2-2 and / or subgroups 3-3 for detailed regions included in the region of layer group 1.

[0363] use ​ The encoding and decoding of point cloud data by layers and subgroups can be achieved through ​ Transmitting / receiving devices ​ Encoding and decoding, ​ Transmission device / method ​ Receiving device / method ​ and 9 Transmitting / receiving device / method ​ The device ​ , 25 Or 27's send / receive method, ​ Transmitting / receiving devices and ​ and 41 The send / receive method is executed.

[0364] ​ -(a) to ​ -(c) The figure shows a representation of layer-based point cloud data according to an embodiment.

[0365] The apparatus / method according to the embodiments can provide efficient access to large-scale or dense point cloud data through layer slicing based on scalability and spatial access capabilities. Due to the high point count and large data size, point cloud data can take a considerable amount of time to render or display content. Therefore, as an alternative, the level of detail can be adjusted based on the viewer's interest. For example, structural or global region information is more important than local details when the viewer moves away from the scene or object. On the other hand, detailed information about the ROI is needed when the viewer moves closer to a specific region or object. Using an adaptive approach, the renderer according to the embodiments can effectively provide the viewer with data of sufficient quality. ​ -(a) to ​ -(c) The illustration adds examples of details for the three levels of view distance based on ROI changes.

[0366] ​ The advanced view in (a) displays coarse detail. ​ The intermediate view in (b) displays medium detail, and ​The low-level view in (c) displays fine-grained details.

[0367] ​ The illustration shows a point cloud data transmission / reception apparatus / method according to an embodiment.

[0368] When layer group slices are used to generate G-PCC bitstreams, multi-resolution ROIs can be supported.

[0369] refer to ​ Multi-resolution ROIs can be supported through the scalability and spatial accessibility of hierarchical tiling. ​ In the transmitting side, encoder 47001 can generate bitstream slices of spatial subgroups or octree layer groups for each layer group. Upon request, slices matching the ROI at each resolution are selected and sent to the receiving side. Compared to a tile-based method, the overall bitstream size is reduced because it does not include details beyond the requested ROI. At the receiving side, decoder 47004 can combine the slices to produce three outputs, for example: 1) a high-level view output from the layer group; 2) a mid-level view output from selected subgroups of layer groups 1 and 2; and 3) a low-level view output with high-quality details from layer groups 2 and 3, as well as selected subgroups of layer group 1. The outputs can be generated progressively, and thus the receiver can provide a viewing experience such as scaling, progressively increasing resolution from high-level to low-level views.

[0370] According to an embodiment, encoder 47001 may correspond to a geometric encoder and / or an attribute encoder as a point cloud encoder. The encoder may slice the point cloud data based on layer groups (or multiple groups). Layers may be referred to as the depth of a tree, the level of LOD, etc. As shown in section 47002, the depth of the geometric octree and / or the level of the attribute layer may be divided into layer groups (or subgroups).

[0371] The slice selector 47003, connected to the encoder 47001, can select segmented slices (or sub-slices) and selectively send data in parts, such as layer group 1 to layer group 3.

[0372] Decoder 47004 can decode point cloud data that is selectively transmitted in parts. For example, it can decode layer group 1 of a high-level view (which has a high depth / layer / level or an index of 0, or is close to the root). Furthermore, for a mid-level view, decoding can be performed based on layer group 1 and layer group 2 by increasing the depth / level index above layer group 1. Additionally, for a low-level view, decoding can be performed based on layer groups 1 through 3.

[0373] refer to ​According to an embodiment, encoder 47001 can receive point cloud data as input and slice it into layer groups. That is, the point cloud data can be hierarchically structured and divided into multiple layer groups. The hierarchical structure can refer to an octree structure or a level of detail (LoD). Part 47002 represents point cloud data divided into multiple layer groups. Slice selector 47003 can select a layer group (or a corresponding slice) and send the selected slice to decoder 47004 at the receiving side. Decoder 47004 can reconstruct only layer group 1, reconstruct layers 1 and 2, or reconstruct all received layer groups by combining the received slices as needed by the user. Layer groups are hierarchical and have different levels of detail. Reconstructing only layer group 1 can result in a wider reconstruction range and coarser detail. Reconstructing all layer groups 1 to 3 can result in a narrower reconstruction range and finer detail.

[0374] As described above, the input to the encoder used for layer group slicing consists of point cloud data and parameter information (e.g., Sequence Parameter Set (SPS), Geometric Parameter Set (GPS), and Layer Group Slice List (LGSI)) describing the structural information about the layer group slices. At the beginning of each tree depth, the layer group structure parameters are used to determine the layer group for the target tree depth. When using the layer group index, the subgroup bounding box is used to determine the subgroup index for each node. When the subgroup used for a node changes, the context state and buffers used in the previous subgroup encoder are stored, and the context state and buffers of the current subgroup encoder are loaded. Using a separate encoder for each subgroup allows the context state to persist within the subgroup. Furthermore, to restrict neighboring nodes to belonging to the same subgroup as the current node, the geometric occupancy atlas is updated by considering the subgroup boundary at the top of the atlas boundary. Both methods enable the decoder to independently decode each encoded bitstream without node information from neighboring subgroups. This process is performed recursively for all nodes across all tree depths. When the end of the node at the target tree depth is reached, a fine-grained slice is generated that matches the subgroups of each layer group one-to-one. In this disclosure, fine-grained slicing may be referred to as layer-group-based slicing.

[0375] The encoder's encoding operation can be performed by ​ The transmitting device ​ encoding, ​ Transmission device / method ​ and ​ Transmission device / method ​ The device ​ Encoding methods ​ The transmitting device or ​ At least one or a combination of the sending methods are executed.

[0376] The decoding operation of the decoder can be performed by ​ The receiving device​ encoding, ​ Receiving device / method ​ and ​ Receiving device / method ​ The device ​ Decoding methods ​ The receiving device or ​ At least one or a combination of the receiving methods are executed.

[0377] ​ This is a flowchart illustrating an example of an encoding method of an encoder according to an embodiment. That is, ​ The diagram illustrates the encoding process used for layer group slicing, which enables the encoded bitstream to be independently decoded by the decoder without node information from neighboring subgroups. ​ The encoding method can be determined by ​ The transmitting device ​ encoding, ​ Transmission device / method ​ Transmission device / method ​ The device ​ The transmitting device or a combination thereof is used to perform this action.

[0378] The encoder, according to the embodiment, generates parameter information such as SPS, GPS, and LGSI, and determines layer groups and subgroups (S2501, S2502). Then, it checks whether the subgroup has changed (S2503), and whenever a subgroup changes, it stores information used to encode the point cloud data within that subgroup and loads information necessary for performing effective encoding (S2504). For example, context information can be stored and then loaded for use during the next encoding. That is, when the subgroup used for a node changes, the context state and buffer used by the previous subgroup encoder are stored, and the context state and buffer of the current subgroup encoder are loaded. Additionally, the geometric occupancy atlas is updated according to the encoding (S2505). Specifically, to restrict neighboring nodes to belong to the same subgroup as the current node, the geometric occupancy atlas is updated by considering subgroup boundaries and atlas boundaries. Then, the nodes of the subgroup are encoded (S2506). When this process is repeated and all nodes at all depths within the occupancy tree are encoded (S2507, S2508), that is, when the end of the node at the target tree depth is reached, a geometric data unit header is generated, and a geometric bitstream containing parameter information, the geometric data unit header, geometric data units, etc., is generated. In other words, fine-grained slices that match subgroups of each layer group one-to-one are generated. In this disclosure, the terms geometric occupancy atlas, geometric atlas, and atlas are used interchangeably with the same meaning.

[0379] The following describes in detail the operations (S2501 to S2504) used to determine the layer group and subgroup and to store and load information (determining the layer group and subgroup).

[0380] As mentioned in the encoder process above, storing and loading the encoder state is necessary to ensure independent decoding of each subgroup. To provide flexible subgroup partitioning, this process is performed on each node of the tree layer.

[0381] For each tree level, the level group is determined and fixed for all tree depths within that level group. Because a level group is a collection of consecutive tree levels, the level group index changes at the beginning of the level group. Subgroups are determined based on the determined level groups. Because a subgroup is a set of nodes bounded by a subgroup bounding box, a node's subgroup is found by comparing its position to the subgroup bounding box. Whenever a subgroup or level group changes, the encoder state of the previous subgroup is stored for later use, and the encoder state of the current subgroup is loaded for continuous encoding.

[0382] The following pseudocode is an example of the encoding process for each level, level group, and subgroup in a tree structure, including the process of storing and loading the encoder state each time each level group and subgroup changes. That is, when the tree depth is 0, the first level group and subgroup are initialized, and the current encoder state is loaded. When the tree depth reaches the number of levels in the current level group, the process moves to the next level group, storing and loading the encoder state. Through this process, nodes within each level group are processed, and the encoder state is stored and loaded whenever a subgroup changes.

[0383] pseudocode: for (depth = 0; depth < maxDepth; depth++) { / / Determine the layer group index if (depth == 0) { curLayerGroupId = 0; curSubgroupId = 0; Load the current context state; sum_layers = numLayersPerLayerGroup[curLayerGroupId]; } else if (depth == sum_layers) { prevLayerGroupId = curLayerGroupId++; prevSubgroupId = curSubgroupId; curSubgroupId = 0; Save the previous encoder state; Load the current encoder state; sum_layers += numLayersPerLayerGroup[curLayerGroupId]; } else if (numSubgroupsMinus1[curLayerGroupId] > 0) { prevSubgroupId = curSubgroupId; curSubgroupId = 0; Save the previous encoder state; Reload the current encoder state; } for (all nodes in curLayerGroupId) { / / Determine subgroup indexes if (!(nodePos >= bbox_min && nodePos < bbox_max)) { for (i = 0; i<=numSubgroupsMinus1[curLayerGroupId]; ++) { if (nodePos >= bbox_min[i] && nodePos < bbox_max[i]){ prevSubgroupId = curSubgroupId; curSubgroupId = i; / / Save and load the encoder Save the previous encoder state; if (the first node of the current subgroup) Load reference encoder state; else Reload the current encoder state; break }}}} } The following is a detailed description of the geometric occupancy atlas update operation (S2505).

[0384] In the MortonMap3D class, `_maxRange` and `_minRange` are defined to interpret subgroup boundaries within the geometric occupancy atlas. When the geometric occupancy atlas is within a subgroup, the minimum and maximum ranges are initially set to 0 and the side length of the cube, respectively. When the minimum boundary of the subgroup is greater than the minimum value of the geometric occupancy atlas, `_minRange` is set to the minimum value of the subgroup boundary. Conversely, when the maximum boundary of the subgroup is less than the maximum value of the geometric occupancy atlas, `_maxRange` is set to the maximum value of the subgroup boundary. By utilizing these ranges (`_maxRange` and `_minRange`), portions of the atlas overlapping with the subgroup bounding boxes are considered active, and nodes within this active region are used as neighbors. This ensures that the decoder of the receiving device can decode the FGS (i.e., layer-based slices) even without node information from neighboring subgroups.

[0385] The following pseudocode illustrates an example of the subgroup boundary process when updating the aforementioned geometric occupancy atlas. Specifically, the pseudocode shows the process of calculating the range used to set the subgroup boundaries in the MortonMap3D class. The setRange method calculates the minimum and maximum boundaries of the subgroup and assigns them to the variables _minRange and _maxRange. This range is calculated for each axis in 3D space. _maxRange[m] represents the maximum range for the m-th axis of the subgroup, which is set by taking into account the atlas origin and the cube size. _minRange[m] represents the minimum range for the m-th axis of the subgroup; this value is set if it is greater than the atlas origin, otherwise it is set to 0. Through this process, the subgroup is positioned within a specific portion of the atlas, and the portion of the atlas that overlaps with the subgroup bounding box can be considered the active area, thus enabling efficient data processing.

[0386] pseudocode: class MortonMap3D { setRange() { for (m = 0; m < 3; m++) { / / _maxRange if (bboxMax < atlasOrigin + _cubeSize) _maxRange[m] = bboxMax - atlasOrigin; Else _maxRange[m] = _cubeSize; / / _minRange if (bboxMin > atlasOrigin) _minRange[m] = bboxMin - atlasOrigin; Else _minRange[m] = 0; }} } These operations update the range of the geometric occupancy atlas used for geometric encoding by taking subgroup boundaries into account. The geometric occupancy atlas is a lookup table (LUT) created for a specific range of neighboring nodes to improve the speed of tasks such as geometric neighbor search. If the current node's position falls outside the range of the geometric occupancy atlas, a new update must be performed.

[0387] During encoder and decoder operations, if a subgroup boundary exists within the atlas boundary, the atlas boundary (_maxRange, _minRange) is updated to match the subgroup boundary. This allows the boundary to be modified and used independently without a full atlas update, even when subgroups within the atlas change.

[0388] Here, _maxRange and _minRange represent the minimum and maximum actual usable range within the atlas. atlasOrigin and cubeSize represent the starting position and size of the geometry occupying the atlas, respectively. Furthermore, bboxMin and _bboxMax represent the minimum and maximum bounding box positions for specific layer groups and subgroups.

[0389] ​ This is a flowchart illustrating an example of a decoding method for a decoder according to an embodiment. That is, ​ The diagram illustrates a decoder process for layer group slicing according to an embodiment.

[0390] ​ Can follow ​ The reverse process.

[0391] ​ The decoding method can be determined by ​ The receiving device ​ Decoding ​ Receiving device / method ​ Receiving device / method ​ The device ​ The decoder or a combination thereof is used to execute.

[0392] According to an embodiment, the decoder parses parameter information (e.g., SPS, GPS, LGSI, etc.), geometric data unit headers, and geometric data units from the received geometric bitstream. The decoding process for the layer group slice reference SW used for the first fine-grained slice (FGS) is the same as that for conventional geometric slice decoding (parameter set parsing, data unit header parsing, and data unit decoding). In this disclosure, parameter information, parameters, and parameter sets are used interchangeably with the same meaning.

[0393] After the resolution process is executed, when layer group slicing is enabled (S2601), the next dependent geometry data unit is considered as the FGS for the first slice (i.e., if they have the same Slice_id). Taking into account the context references and node inheritance between the parent (i.e., higher) sub-group and child sub-group, it is assumed that the order of the FGS is in ascending order based on layer_group_id and subgroup_id.

[0394] Before decoding the dependent data unit, the context state, output node, and layer group parameters of the previous slice are stored in a buffer for the next slice (S2602). That is, the buffer and layer group parameters are updated. After parsing the dependent data unit header (S2603), the parent-child group of the current subgroup is detected (S2604). According to the embodiment, the parent-child group of the current subgroup is detected by finding a subgroup whose subgroup bounding box is a superset of the current subgroup bounding box. Once the parent-child group is determined, the parent (i.e., higher) node of the current dependent data unit is selected (S2605). When the parent (i.e., higher) node of the current dependent data unit is selected in operation S2605, the dependent data unit is parsed (S2606). Then, by using the selected node as the initial node of the decoding process, the current dependent data unit is decoded up to the tree layer covered by the current layer group. The decoding process of the dependent data unit is repeated until the end of the geometric bitstream (S2607). When the decoding of the dependent data unit is complete, the output point cloud is generated, and the decoding process ends (S2608).

[0395] The additional process for finding parent-child groups and parent nodes is described in more detail below.

[0396] The decoder according to the embodiment parses parameter information such as SPS, GPS, and LGSI contained in the bitstream. It parses the information transmitted by signals in the header of data units included in slices such as FGS. Based on the header information, it parses the point cloud data contained in the data units. When a layer group slice is activated, the decoder updates the buffer and layer group parameters, and parses the header information of data units related to dependent data units that depend on higher-level data units. It detects parent-child groups and selects a parent node. Then, it parses dependent data units. The parent-child group detection operation (S2604) is described in detail below.

[0397] In decoding fine-grained slices (i.e., layer-group-based slices), nodes from parent-child groups are used as inputs to sub-subgroups to provide continuous decoding at layer group boundaries. This can be derived using parent-subspace relationships due to the hierarchical structure of layer group slices. That is, a sub-subgroup is a subset of a parent-child group, where the bounding box of a sub-subgroup is spatially exclusive to the bounding boxes of other sub-subgroups within the same layer group.

[0398] Based on this relationship, slices with parent-child groups can be detected by finding the spatial superset of the current slice. Parent-child groups can be identified by using the subgroup_bbox_origin and subgroup_bbox_size, which are signaled in the data unit header, and comparing this information with the bounding box information associated with subgroups at previous layer group levels.

[0399] The following pseudocode is an example of the aforementioned parent-child group detection process.

[0400] pseudocode: parentLayerGroup = curLayerGroup - 1; for (i = 0; i < numSubgroups[parentLayerGroup]; i++) { if (_bboxMin[parentLayerGroup][i] <= curBboxMin && _bboxMax[parentLayerGroup][i] > curBboxMin) { parentSubgroup = i; break } } In other words, as described above, this disclosure can infer parent-child groups based on the spatial relationship between parent-child groups and child-child groups without the need for additional signals.

[0401] From the encoder's perspective, subgroups can be defined by partitioning the bounding boxes of the parent and child groups. Because a subgroup is a child region of the parent and child group, the encoder is allowed to infer the parent and child group indices using the method described above.

[0402] From the decoder's perspective, if the bounding box of the parent-child group is a superset of the bounding box of the child-child group, then the corresponding child group index is determined as the parent-child group index.

[0403] In the pseudocode above, parentLayerGroup is the index of the higher-level group related to the current layer group.

[0404] `parentSubgroup` is the subgroup index of subgroups that have a parent-child relationship with the current subgroup.

[0405] curLayerGroup is the current layer group.

[0406] numSubgroups is the number of subgroups belonging to the layer group.

[0407] _bboxMin and _bboxMax are the minimum and maximum values ​​for the bounding box positions of a specific layer group and subgroup.

[0408] curBboxMin is the minimum bounding box position of the currently coded subgroup.

[0409] The following section describes in detail the input parent node selection operation (S2605).

[0410] When decoding a dependent slice, the output nodes of the parent-child group are used as inputs for decoding the child-child group. If the bounding boxes of the parent-child group and the child-child group are the same, all nodes generated in the parent-child group are used. Conversely, if the bounding box of the child-child group is a subset of the parent-child group, the decoder selects the actual parent node. To identify the parent node, this disclosure compares each node of the parent-child group with the bounding box of the child-child group.

[0411] The pseudocode below is an example of the aforementioned parent node selection process. That is, only nodes within a specific range (bbox_min and bbox_max) are selected as parent nodes. For example, a node is added as a parent node only if its position (node.Pos) is greater than or equal to the minimum value (bbox_min) and less than the maximum value (bbox_max) of the bounding box.

[0412] pseudocode: for (node ​​= inNodes.begin(); node != inNodes.end(); node++) { if (node.Pos >= bbox_min && node.Pos < bbox_max) fifo.emplace_back(node); else continue? } ​ This is a diagram illustrating another example of a point cloud transmitting apparatus according to an embodiment. ​ The components of the point cloud transmitting device shown can be implemented by hardware, software, processors, and / or combinations thereof.

[0413] According to an embodiment, the point cloud transmitting device may include a data input unit 51001, a signaling processor 51002, a geometric encoder 51003, an attribute encoder 51004, and a transmission processor 51005.

[0414] The geometry encoder 51003 and the attribute encoder 51004 can perform operations with ​ Point cloud video encoder 10002, ​ The code 20001 ​ Point cloud video encoder, ​ Point cloud video encoder, ​ Encoding and ​ The encoding-related description of some or all of the operations.

[0415] According to an embodiment, the data input unit 51001 receives or acquires point cloud data. The data input unit 51001 can perform... ​ Point cloud video acquisition unit 10001 or ​ Part or all of the operations of the data input unit 8000.

[0416] The data input unit 51001 outputs the positions of points in the point cloud data to the geometry encoder 51003 and the attributes of the points to the attribute encoder 51004. Additionally, it outputs parameters to the signaling processor 51002. According to an embodiment, the parameters can be provided to both the geometry encoder 51003 and the attribute encoder 51004.

[0417] The geometry encoder 51003 performs geometric compression based on the layer group using the position of the input points. The geometry encoder 51003 performs entropy encoding on the compressed geometric information and outputs the encoded information to the transmission processor 51005 in the form of a geometric bit stream.

[0418] The geometry encoder 51003 reconstructs geometric information based on the position changed by compression and outputs the reconstructed (or decoded) geometric information to the attribute encoder 51004.

[0419] According to an embodiment, the geometric encoder 51003 constructs an octree using the locations of input points, performs layer-group-based slicing on the octree, selects one or more slices, and then compresses the geometric information associated with the selected one or more slices. (See also...) ​ The layer-group-based slicing and slice-level geometric compression according to the embodiments are described in detail, and therefore their description will be omitted below to avoid redundancy.

[0420] The attribute encoder 51004 compresses attribute information based on geometric information of locations and / or reconstructed locations that have not yet been geometrically encoded. In one embodiment, the attribute information can be encoded using any one or a combination of RAHT coding, LOD-based predictive transform coding, and lifting transform coding. The attribute encoder 51004 performs entropy coding on the compressed attribute information and outputs the encoded information to the transmission processor 51005 as an attribute bitstream.

[0421] Signaling processor 51002 generates and / or processes signaling information necessary for encoding / decoding / rendering geometric and attribute information, and provides it to geometry encoder 51003, attribute encoder 51004, and / or transmission processor 51005. Alternatively, signaling processor 51002 may receive signaling information generated by geometry encoder 51003, attribute encoder 51004, and / or transmission processor 51005. Signaling processor 51002 may provide information fed back from receiving devices (e.g., head orientation information and / or viewport information) to geometry encoder 51003, attribute encoder 51004, and / or transmission processor 51005.

[0422] In this disclosure, signaling information including slice-related information based on layer groups (Layer Group Structure List (LGSI)) can be signaled and transmitted in units of parameter sets (SPS: Sequence Parameter Set, GPS: Geometric Parameter Set, APS: Attribute Parameter Set, TPS: Patch Parameter Set (also known as Patch List) etc.) and / or data units (i.e., slices). That is, it can be signaled and transmitted in each image encoding unit (or compression unit or prediction unit), such as a slice or patch.

[0423] The transmission processor 51005 can perform operations with ​ The transmission processor 8012 operates in the same or similar manner and / or uses the same transmission method, or performs the same operation as the transmission processor 8012. ​ The transmitter 10003 operates and / or uses the same or similar methods. For details omitted below, please refer to [reference needed]. ​ or ​ The description.

[0424] The transmission processor 51005 can multiplex the geometric bitstream output from the geometric encoder 51003, the attribute bitstream output from the self-attribute encoder 51004, and the signaling bitstream output from the signaling processor 51002 into a single bitstream and transmit the bitstream, or it can encapsulate the bitstream into a file or fragment to be transmitted. In one embodiment of this disclosure, the file may be in ISOBMFF file format.

[0425] According to embodiments, files or fragments can be sent to a receiving device or stored in a digital storage medium (e.g., USB, SD, CD, DVD, Blu-ray disc, HDD, SSD, etc.). The transmission processor 51005 according to embodiments is capable of wired / wireless communication with the receiving device via a 4G, 5G, or 6G network. Furthermore, the transmission processor 51005 can perform necessary data processing operations according to the network system (e.g., a 4G, 5G, or 6G communication network system). In addition, the transmission processor 51005 is capable of transmitting encapsulated data on demand.

[0426] ​ This is a diagram illustrating another example of a point cloud receiving apparatus according to an embodiment. ​ The components of the point cloud receiving device shown can be implemented by hardware, software, processors, and / or combinations thereof.

[0427] According to an embodiment, the point cloud receiving device may include a receiving processor 61001, a signaling processor 61002, a geometry decoder 61003, an attribute decoder 61004, a geometry buffer 61005, an attribute buffer 61006, and a post-processor 61007.

[0428] The receiving processor 61001 according to the embodiment can receive a single bit stream or can receive geometric bit streams, attribute bit streams, and signaling bit streams separately. When a file and / or fragment is received, the receiving processor 61001 according to the embodiment can decapsulate the received file and / or fragment and output a bit stream for it.

[0429] When a single bitstream is received (or decapsulated), the receiving processor 61001 according to the embodiment can demultiplex the geometric bitstream, attribute bitstream and / or signaling bitstream from the single bitstream, and output the demultiplexed signaling bitstream to the signaling processor 61002, the geometric bitstream to the geometric decoder 61003, and the attribute bitstream to the attribute decoder 61004.

[0430] When the geometry bitstream, attribute bitstream and / or signaling bitstream are received (or decapsulated) respectively, the receiving processor 61001 according to the embodiment can deliver the signaling bitstream to the signaling processor 61002, the geometry bitstream to the geometry decoder 61003, and the attribute bitstream to the attribute decoder 61004.

[0431] According to an embodiment, the receiving processor 61001 can distinguish geometric bitstreams and attribute bitstreams in units of slices or subgroups based on signaling information processed by the signaling processor 61002. It can deliver the geometric bitstream to the geometric decoder 61003 in units of slices / subgroups, and the attribute bitstream to the attribute decoder 61004 in units of slices / subgroups. For example, the input to the geometric decoder 61003 may include fine-grained slice bitstreams (or layer-group-based slice bitstreams) and layer group structures.

[0432] The signaling processor 61002 can parse and process information included in the signaling information from the input signaling bitstream, such as SPS, GPS, APS, TPS, and metadata, and provide this information to the receiving processor 61001, the geometry decoder 61003, the attribute decoder 61004, the geometry buffer 61005, the attribute buffer 61006, and the post-processor 61007. In another embodiment, the signaling processor 61002 can also pre-parse the signaling information contained in the geometry data unit header and / or the attribute data unit header before decoding the corresponding slice (or subgroup) data. In this disclosure, the geometry buffer 61005 can store nodes belonging to the current subgroup and / or nodes belonging to the parent-child groups of the current subgroup for geometry decoding. Furthermore, before decoding dependent data units, the context state, output nodes, and layer group parameters of the previous slice are stored in the geometry buffer 61005 for subsequent slices (S2602). Additionally, the attribute buffer 61006 may include nodes belonging to the current subgroup and / or nodes belonging to the parent-child groups of the current subgroup for attribute decoding.

[0433] According to an embodiment, the signal processor 61002 can also parse and process information sent by signals in the sequence parameter set and / or geometric data unit header (e.g., information related to slices based on layer groups), and provide the processed information to the geometry decoder 61003 and the geometry buffer 61005.

[0434] According to an embodiment, the signal processor 61002 can also parse and process information sent by signals in the sequence parameter set and / or attribute data unit header (e.g., information related to slices based on layer groups), and provide the processed information to the attribute decoder 61004 and the attribute buffer 61006.

[0435] According to an embodiment, the geometry decoder 61003 can perform operations on the compressed geometry bitstream based on signaling information (e.g., slice-related information based on layer groups). ​ The geometry is reconstructed by reversing the process of the geometry encoder 51003. (Already referenced...) ​ and ​The geometry decoding performed by the geometry decoder 61003 when layer group slicing is enabled is described in detail, and therefore its description is omitted below to avoid redundancy.

[0436] The geometric information recovered (or reconstructed) by the geometry decoder 61003 is provided to the attribute decoder 61004.

[0437] The attribute decoder 61004, based on signaling information and reconstructed geometric information, performs [processing] on the compressed attribute bitstream. ​ The property encoder 51004 reverses the process to recover the property.

[0438] According to an embodiment, the attribute decoder 61004 can perform LoD generation and NN search based on subgroups.

[0439] According to an embodiment, the post-processor 61007 can reconstruct and display / render point cloud data by matching the geometric information (i.e., position) reconstructed and output by the geometry decoder 61003 with the attribute information reconstructed and output by the attribute decoder 61004.

[0440] The slice structure for layer configuration and the signaling method for scalable transmission, as described above, will be detailed below.

[0441] ​ The diagram illustrates the bitstream configuration according to an embodiment.

[0442] The method / apparatus according to the embodiments can generate, as shown in the embodiments. ​ The bitstream shown here may contain encoded geometric data and attribute information, as well as parameter information.

[0443] The syntax and semantics related to parameter information are as follows.

[0444] Information regarding the segmentation according to the embodiment can be defined in the parameter set and SEI message in the bitstream as follows.

[0445] According to embodiments, a bitstream can contain a sequence parameter set, a geometric parameter set, an attribute parameter set, a geometric slice header (also known as a geometric data unit header), and an attribute slice header (also known as an attribute data unit header). Depending on the application or system, these can be defined at corresponding or separate locations, resulting in different scopes and application methods. That is, depending on the location of the delivered signal, it can have different meanings. When defined in SPS, it can be continuously applied to the entire sequence. When defined in GPS, it can be used for geometric reconstruction. When defined in APS, it can be used for attribute reconstruction. When defined in TPS, signaling can be applied only to points within a tile. When delivered by slice, signaling can be applied only to that slice. Depending on the application or system, these can be defined at corresponding or separate locations, resulting in different scopes and application methods. Furthermore, the syntax elements defined below can be applied not only to the current point cloud data stream but also to multiple point cloud data streams and can be sent through higher-level parameter sets.

[0446] Each abbreviation has the following meaning: SPS: Sequence Parameter Set, GPS: Geometric Parameter Set, APS: Attribute Parameter Set, TPS: Tile Parameter Set, Geom: Geometric Bitstream = Geometric Slice Header + Geometric Slice Data, Attr: Attribute Bitstream = Attribute Slice Header + Attribute Slice Data.

[0447] The following information is defined independently of the encoding technique, but it can also be defined in conjunction with the encoding method. To support locally different scalability, it can be defined in the Tile Parameter Set (TPS) within the bitstream. Furthermore, when the syntax elements defined below apply not only to the current point cloud data stream but also to multiple point cloud data streams, they can be delivered through a higher-level parameter set.

[0448] Alternatively, bitstreams can be selected at the system level by defining Network Abstraction Layer (NAL) units for the bitstream and delivering relevant information such as layer_id for layer selection.

[0449] According to embodiments, parameters necessary for encoding and / or decoding point cloud data can be newly defined in the parameter set (e.g., SPS, GPS, APS, and TPS (or a list of tiles)) and / or the header of the corresponding tile (i.e., the data unit header or the tile header). For example, parameters can be added to GPS when performing geometric encoding and / or decoding, or parameters can be added to the tile and / or data unit header when performing tile-based encoding and / or decoding.

[0450] According to an embodiment, slice-related information based on layer groups can be transmitted via signals in SPS, GPS, APS, and / or LGSI.

[0451] According to an embodiment, slice-related information based on layer groups can be transmitted using signals in the TPS, geometric data unit header, attribute data unit header, and / or LGSI.

[0452] According to an embodiment, when the syntax elements defined below apply to multiple point cloud data streams and the current stream, slice-related information based on layer groups can be delivered through a higher-level parameter set.

[0453] According to embodiments, slice-related information based on layer groups can be defined in corresponding or separate locations depending on the application or system, thereby allowing for different application scopes and methods. The term "field" used in the syntax described below can have the same meaning as "parameter" or "syntax element".

[0454] In the following description, parameters (which may be referred to as metadata, signaling information, etc.) according to the embodiments can be generated during the transmitter process and delivered to the receiver for use during the reconstruction process.

[0455] According to an embodiment, parameters containing slice-related information based on layer groups can be generated by the metadata processor (or metadata generator) or signaling processor of the transmitting device and delivered to the receiving device for use in decoding / reconstruction. For example, the parameters generated and transmitted by the transmitting device can be obtained by the metadata parser of the receiving device.

[0456] According to embodiments, parameters describing the layer group structure (e.g., parameters containing slice-related information based on the layer group) are signaled at various levels. For example, while details of each layer group or subgroup are signaled in the slice header (or data unit header), general structure information is described in the SPS. Additionally, LGSI and dependent slice headers (or dependent data unit headers) are provided to describe the overall layer group structure. The definition of G-PCC slices and signaling methods for fine-grained slices are described below.

[0457] 1) Definition of G-PCC slice.

[0458] Slice: Encoding into a single fine-grained slice and a collection of zero or more points that depend on the fine-grained slice. For example, a slice can include multiple fine-grained slices, and the fine-grained slices can be called segmented slices or subdivided slices.

[0459] Dependency on fine-grained slices: Data units of a slice that depend on previous data units within the same slice.

[0460] Independent fine-grained slice: the first [geometric] data unit of the slice.

[0461] 2) Enable fine-grained slicing in SPS.

[0462] 3) The dependency data unit header carries the basic information required for decoding fine-grained slices, including context inheritance and slice-specific bounding boxes.

[0463] 4) Define a list of layer group structures to describe the relationships between fine-grained slices.

[0464] Figures 30A and 30B illustrate a Sequence Parameter Set (SPS) according to an embodiment. The SPS may contain sequence information of the point cloud data bitstream. Specifically, in this example, it contains slice-related information based on layer groups.

[0465] The syntax in Figures 30A and 30B can be included in ​ The bitstream is generated by a point cloud encoder according to an embodiment and decoded by a point cloud decoder.

[0466] simple_profile_compatibility_flag: Indicates whether the bitstream conforms to a simple profile (when it is 1) or does not conform to a simple profile (when it is 0).

[0467] dense_profile_compatibility_flag: Indicates whether the bitstream conforms to a dense profile (when it is 1) or does not conform to a dense profile (when it is 0).

[0468] predictive_profile_compatibility_flag: Indicates whether the bitstream conforms to the predictive profile (when it is 1) or does not conform to the predictive profile (when it is 0).

[0469] main_profile_compatibility_flag: Indicates whether the bitstream conforms to the main profile (when it is 1) or does not conform to the main profile (when it is 0).

[0470] `slice_reordering_constraint_flag`: Indicates whether the bitstream is sensitive (when it is 1) to reordering or removing slices within the coded point cloud frame (when it is 0) or insensitive (when it is 0). When `slice_reordering_constraint_flag` is 1, the resulting bitstream may not be fully decodeable if slices are reordered or removed.

[0471] `unique_point_positions_constraint_flag`: When equal to 1, it indicates that each point should have a unique position in each coded point cloud frame. `unique_point_positions_constraint_flag` equal to 0 indicates that two or more points can have the same position.

[0472] sps_seq_parameter_set_id: Identifies the SPS, which is referenced by other data units (DUs).

[0473] seq_origin_bits: Indicates the length of each seq_origin_xyz syntax element in bits, excluding the sign bit.

[0474] `seq_origin_xyz[k]` and `seq_origin_log2_scale`: Together, these indicate the XYZ origin and coded coordinates of the sequence in sequence coordinate system units, which are equivalent to applying a specific coordinate system origin. When `seq_origin_bits` is 0, `seq_origin_xyz[k]` and `seq_origin_log2_scale` are inferred to be 0.

[0475] seq_bounding_box_size_bits: Indicates the length of each seq_bounding_box_size_minus1_xyz syntax element, in bits.

[0476] seq_bounding_box_size_minus1_xyz[k]: Add 1 to get the kth XYZ component of the encoded volume dimension in the sequence coordinate system.

[0477] seq_unit_numerator_minus1, seq_unit_denominator_minus1, and seq_unit_is_metres: together indicate the length in the sequence coordinate system as a unit vector.

[0478] sps_num_attribute_sets: Indicates the number of attributes listed in the SPS attribute list.

[0479] attribute_instance_id[attrId]: Indicates the instance identifier used to identify the attribute.

[0480] attribute_bitdepth_minus1[attrId]: Add 1 to specify the bit depth of all components of the identified attribute.

[0481] `layer_group_enabled_flag`: When equal to 1, it indicates that the geometric bitstream of a slice is contained in multiple slices that match the group or corresponding subgroup of the coding layer. When equal to 0, `layer_group_enabled_flag` specifies that the geometric bitstream is contained in a single slice.

[0482] `num_layer_groups_minus1 + 1` indicates the number of layer groups, where a layer group represents a set of consecutive tree layers that form part of the geometric coding tree structure. The value of `num_layer_groups_minus1` ranges from 0 to the total number of coding tree layers.

[0483] `layer_group_id` indicates the layer group ID of the slice (or an indicator of the layer group of the slice). The value of `layer_group_id` ranges from 0 to `num_layer_groups_minus1`.

[0484] num_layers_minus1 + 1 indicates the number of coding layers included in the i-th layer group. When i is 0, the total number of layer groups can be derived by adding all (num_layers_minus1[i] + 1) to num_layer_groups_minus1.

[0485] A `subgroup_enabled_flag` value of 1 indicates that the i-th layer group is divided into two or more subgroups, where the set of points in the subgroups of the layer group is the same as the set of points in the layer group. When the `subgroup_enabled_flag` of the i-th layer group is 1, the `subgroup_enabled_flag` of the j-th layer group should also be 1 if `j` is greater than or equal to `i`. A `subgroup_enabled_flag` value of 0 indicates that the current layer group is not subdivided into multiple subgroups and is contained within a single slice.

[0486] `subgroup_bbox_origin_bits_minus1 + 1` indicates the bit length of the `subgroup_bbox_origin` field (or syntax element).

[0487] The subgroup_bbox_size_bits_minus1 + 1 indicates the bit length of the subgroup_bbox_size field.

[0488] In this disclosure, slice-related information based on layer groups may include at least one of layer_group_enabled_flag, num_layer_groups_minus1, layer_group_id[i], num_layers_minus1[i], subgroup_enabled_flag[i], subgroup_bbox_origin_bits_minus1, and subgroup_bbox_size_bits_minus1.

[0489] ​ The illustration shows an example of the syntax structure of the dependent geometry data unit header according to an embodiment. ​ This example shows a slice-related information based on layer groups in the header of a geometry data unit.

[0490] ​ The syntax in can be included ​ In the bitstream. According to an embodiment, they can be generated by a point cloud encoder and decoded by a point cloud decoder.

[0491] According to an embodiment, a dependent geometry data unit header may be included within a geometry data unit. The term "geometric data unit" may be used interchangeably with "dependent geometry data unit" or "geometric slice".

[0492] `dgsh_geometry_parameter_set_id` indicates the active GPS identified by `gps_geom_parameter_set_id`. The value of `dgsi_geometry_parameter_set_id` is the same as the value of `gdu_geometry_parameter_set_id` for the corresponding slice.

[0493] dgsi_slice_id specifies the geometric slice to which the current dependent geometric data cell belongs.

[0494] `layer_group_id` is an indicator that specifies the layer group of a slice. The range of `layer_group_id` can be from 0 to `num_layer_groups_minus1`. If it does not exist, it is inferred to be 0.

[0495] `subgroup_id` is an indicator of the subgroup of the layer group referenced by `layer_group_id`. The range of `subgroup_id` can be from 0 to `num_subgroups_minus1[layer_group_id]`. Here, `subgroup_id` can indicate the order of slices within the same `layer_group_id`. If it does not exist, it is inferred to be 0.

[0496] subgroup_bbox_origin indicates the origin of the subgroup bounding box of the i-th subgroup indicated by the subgroup_id of the j-th layer group indicated by layer_group_id.

[0497] subgroup_bbox_size indicates the size of the subgroup bounding box of the i-th subgroup indicated by the subgroup_id of the j-th layer group indicated by layer_group_id.

[0498] According to the embodiment, the bounding boxes of points in the subgroup are described by subgroup_bbox_origin and subgroup_bbox_size. In this case, when i is not equal to j, the region in the bounding box of the i-th subgroup does not overlap with the region in the bounding box of the j-th subgroup.

[0499] The `ref_layer_group_id` is an indicator that specifies the layer group identifier used for the context reference of the current dependent data unit. The value of `ref_layer_group_id` ranges from 0 to the `layer_group_id` of the current dependent data unit.

[0500] `ref_subgroup_id` indicates the reference subgroup used for the layer group indicated by `ref_layer_group_id`. The value of `ref_subgroup_id` ranges from 0 to `num_subgroup_id_minus1` for the layer group indicated by `ref_layer_group_id`.

[0501] The bitstream according to the embodiments may include at least one slice or multiple sub-slices, and may contain geometric data units and attribute data units. Each data unit includes a header. Additionally, the data units include independent data units and dependent data units. Dependent data units may represent inclusion relationships based on dependencies between parent and child nodes. ​ This illustrates the syntax for the geometry data unit header. Similarly, the syntax for the geometry data unit header can be... ​ The syntax is the same as in [the previous text].

[0502] ​The diagram illustrates a List of Layers Structure (LGSI) according to an embodiment. That is, ​ The relationship between fine-grained slices is described in LGSI as follows.

[0503] lgsi_seq_parameter_set_id indicates the value of sps_seq_parameter_set_id.

[0504] lgsi_frame_ctr_lsb_bits indicates the length of the lgsi_frame_ctr_lsb field (or syntax element), in bits.

[0505] lgsi_frame_ctr_lsb indicates the least significant bits (lgsi_frame_ctr_lsb_bits) of the valid LGSI FrameCtr. LGSI remains valid until it is replaced by another LGSI.

[0506] lgsi_num_slice_ids_minus1 + 1 indicates the number of slices in LGSI.

[0507] lgsi_slice_id indicates the slice ID of the sid-th slice within LGSI.

[0508] lgsi_num_layer_groups_minus1 + 1 indicates the number of layer groups.

[0509] lgsi_subgroup_bbox_origin_bits_minus1 + 1 indicates the length of the lgsi_subgroup_bbox_origin field in bits.

[0510] lgsi_subgroup_bbox_size_bits_minus1 + 1 indicates the length of the lgsi_subgroup_bbox_size field in bits.

[0511] lgsi_layer_group_id is an indicator for the layer group.

[0512] lgsi_num_layers_minus1 + 1 indicates the number of coding layers in the i-th layer group of the sid-th slice. The total number of coding layers required to decode the n-th layer group is equal to the sum of lgsi_num_layers_minus1[sid][i] + 1, where i ranges from 0 to n.

[0513] lgsi_num_subgroups_minus1 + 1 indicates the number of subgroups in the i-th layer group of the sid-th slice.

[0514] `lgsi_subgroup_id` indicates the ID (or indicator) of the subgroup (or subgroup). The value of `lgsi_subgroup_id` is between 0 and `lgsi_num_subgroups_minus1`.

[0515] `lgsi_parent_subgroup_id` indicates the subgroup within the layer group indicated by `lgsi_subgroup_id`. The value of `lgsi_parent_subgroup_id` is between 0 and `lgsi_num_subgroups_minus1` within the layer group indicated by `lgsi_subgroup_id`.

[0516] lgsi_subgroup_bbox_origin indicates the origin of the subgroup bounding box of the subgroup indicated by lgsi_subgroup_id of the layer group indicated by lgsi_layer_group_id.

[0517] lgsi_subgroup_bbox_size indicates the size of the subgroup bounding box of the subgroup indicated by lgsi_subgroup_id of the layer group indicated by lgsi_layer_group_id.

[0518] lgsi_origin_bits_minus1 + 1 indicates the length of the lgsi_origin_xyz field in bits.

[0519] lgsi_origin_xyz indicates the origin of all partitions. The value of lgsi_origin_xyz[k] is equal to sps_bounding_box_offset[k].

[0520] lgsi_origin_log2_scale indicates the scaling factor used to scale the lgsi_origin_xyz field. The value of lgsi_origin_log2_scale is equal to sps_bounding_box_offset_log2_scale.

[0521] As mentioned above, the encoding (i.e., compression) of geometric information can be performed based on octrees. In this case, the planar pattern used in octree-based geometric encoding probabilistically determines whether each node is planar. This imposes the burden of updating the probability each time and tracking the local node density of each node. As a way to alleviate this burden, the use of a planar pattern can be determined based on the density at each octree level.

[0522] According to an embodiment, the density condition for determining whether to use a planar pattern can be calculated as shown in Equation 1. That is, based on the density shown in Equation 1, the planar qualification for each tree depth is determined.

[0523] [Equation 1] The number of points in the point cloud The number of IDCM nodes (also known as direct coding mode nodes) from the root to the i-th octree level. In other words, Indicates the number of points from the root node level to the i-th octree level that are encoded using IDCM.

[0524] The number of child nodes generated at the i-th octree level (i.e., the total number of child nodes). In other words, This indicates the number of occupied child nodes generated by the nodes included in the i-th octree level. Additionally, realDensity... i+1 Indicates the actual point density used for the (i+1)th octree layer.

[0525] According to the embodiment, whether to use the planar pattern in the (i+1)th octree layer can be determined as follows. Specifically, before the encoding process of the (i+1)th octree layer, the eligibility of all nodes in the (i+1)th octree layer for the xyz planar pattern is determined as follows:

[0526] The planarEligibleKOctreeDepth(i+1) can be independently derived and applied by both the encoder and decoder. Here, th is a predefined threshold, which, as an example, can be set to 1.3.

[0527] For example, the density (real Density) calculated by applying Equation 1 in the (i+1)th octree layer. i+1 When the value is less than the threshold, planarEligibleKOctreeDepth i+1A value of 1 indicates the use of a planar pattern in the (i+1)th octree layer. Conversely, when density (realDensity) is 1, it indicates the use of a planar pattern. i+1 When the value is not less than the threshold, planarEligibleKOctreeDepth i+1 A value of 0 indicates that the planar pattern is not used in the (i+1)th octree level.

[0528] As mentioned above, when using layer group slicing, Equation 1 for realDensity can be modified to Equation 2 given below for the m-th subgroup belonging to the n-th layer group.

[0529] [Equation 2] : The final number of points included in the bounding box corresponding to the m-th subgroup belonging to the n-th layer group.

[0530] : The number of points from the root to the i-th octree level using idcm encoding that are included in the bounding box corresponding to the m-th subgroup belonging to the n-th level group.

[0531] : The number of child nodes occupied at the i-th octree level for the m-th subgroup belonging to the n-th level group (i.e., the number of child nodes).

[0532] Based on the above, whether to use the planar pattern in the (i+1)th octree layer belonging to the mth subgroup of the nth layer group can be determined as follows:

[0533] In other words, when a region is divided into subgroups due to layer slicing, the above equation can be used to adaptively apply a planar pattern based on the characteristics of the region.

[0534] However, in the case of layer-group slicing, the depth of the octree can be divided into different slices, making it difficult to directly apply the above method to the upper-level group. For example, in the last layer-group, because the number of points generated in the subgroups included in the slice is signaled in the header, numPoints can be estimated. However, because the number of points signaled in the header refers to the final number of points generated in each slice, it is difficult to estimate numPoints of the upper-level group. To solve this problem, according to an embodiment, the following method can be considered: 1) Send the final number of points generated at the leaf group level using a signal: For dependent slices in a layer group slice, the encoder can send the final number of points generated at the leaf layer group level to the decoder.

[0535] 2) Use any number of points: When numPoints is unknown, both the encoder and decoder can use any predefined number of points.

[0536] In this context, numPoints(n, m) can indicate the final number of points included in the bounding box corresponding to the m-th subgroup of the n-th layer group. If no subsubgroup exists (i.e., it belongs to the last layer group), numSlicePoint carried in the header can be used. If a subsubgroup exists (i.e., it belongs to the upper layer group), the encoder and decoder can use any number of points agreed upon beforehand.

[0537] For example, a fixed value can be used, such as the maximum number of points that can be included in each slice (MaxSlicePoint).

[0538] As an example, predicted values ​​can be used. Equation 3 below illustrates an example of prediction using coefficients (e.g., coeff_a, coeff_b). That is, numPoints(n, m) can be estimated using a linear function as shown in Equation 3.

[0539] [Equation 3]

[0540] The estimated numPoints(n,m) = number of parent-child group nodes × coeff_a + coeff_b

[0541] Here, coeff_a and coeff_b represent the coefficients of the linear function. coeff_a and coeff_b can be predefined or passed directly to the decoder as needed.

[0542] Specifically, the final number of points (numPoints(n, m)) included in the bounding box corresponding to the m-th subgroup of the n-th layer group can be obtained by adding coeff_a and coeff_b, which are coefficients of a linear function, to the number of nodes in the parent and child groups.

[0543] 3) Direct transmission of planarEligibleKOctreeDepth

[0544] Because the encoder of the transmitting device knows the final number of points for each subgroup, it can calculate planarEligibleKOctreeDepth+1(n, m) based on this and send this value directly to the decoder of the receiving device. In this case, the decoder does not need to calculate the planar eligibility, and thus the complexity of the decoder can be reduced.

[0545] According to an embodiment, the encoder of the transmitting device can send the aforementioned planar pattern-related information in a geometrically dependent data unit header and send it to the decoder of the receiving device.

[0546] ​ The illustration shows another example of the syntax structure of the dependent geometry data unit header according to an embodiment. ​ This example shows a data structure where the header of the geometry data unit includes slice-related information based on layer groups and planar pattern-related information.

[0547] ​ The syntax in can be included ​ In the bitstream. According to an embodiment, they can be generated by a point cloud encoder and decoded by a point cloud decoder.

[0548] Because it has already been referenced above. ​ Described in ​ The details of slice-related information based on layer groups are sent via signals in the header of the dependent geometric data unit, so referencing ​ The description will be omitted below to avoid redundancy. ​ The text describes information related to the planar pattern.

[0549] exist ​ In the context of `checkPlanarEligibilityBasedOnOctreeDepth`, when `checkPlanarEligibilityBasedOnOctreeDepth` is true, it indicates that a planar mode should be used in the corresponding layer group. In this case, the dependent geometry data cell header may include `planarEligibilityType`.

[0550] planarEligibilityType can indicate the method of using planar mode. For example, among the values ​​of planarEligibilityType, 0 indicates that the existing nodes are adapted to the planar mode, 1 indicates that the final number of points generated at the leaf group level is signaled, 2 indicates that any number of points are used, and 3 indicates that planarEligibleKOctreeDepth is signaled directly.

[0551] Specifically, when the value of planarEligibilityType is 1, the dependent geometry data cell header includes the final number of points in the subgroup (numFinalOutputPointsInSubgroup). When the value of planarEligibilityType is 2, the header includes the predicted number of points in the slice (numSlicePointEstimationType). When the value of planarEligibilityType is 3, the header includes a planar pattern-qualified octree depth flag (planarEligibleKOctreeDepthFlag) as many times as the number of layers in the subgroup (numLayersInSubgroup).

[0552] The final output points in the subgroup (numFinalOutputPointsInSubgroup) can represent the number of final output points included within the bounding box of the subgroup of the current slice.

[0553] The predicted number of points in a slice (numSlicePointEstimationType) indicates the method used to estimate numSlicePoint (or numPoints) for obtaining realDensity. For example, numSlicePointEstimationType equal to 0 indicates a pre-determined value (e.g., maxSlicePoint, i.e., the maximum number of points a slice may contain). numSlicePointEstimationType equal to 1 indicates that the number is estimated by a linear function. In this case, the coefficients coeff_a and coeff_b of the linear function can be predefined or sent directly as needed.

[0554] numLayersInSubgroup: This indicates the number of octree depths included in the current slice.

[0555] When the value of `planarEligibleKOctreeDepthFlag` is 1, which is repeated as many times as the value of `numLayersInSubgroup`, it indicates that the planar pattern is used for the i-th octree depth among the octree depths included in the current slice. When the value is 0, it indicates that the planar pattern is not used for the i-th octree depth among the octree depths included in the current slice. `planarEligibleKOctreeDepthFlag` can correspond to `planarEligibleKOctreeDepth_(i+1) (n,m)` generated in the method of directly signaling `planarEligibleKOctreeDepth`.

[0556] Equation 4 below is another example of obtaining the density condition used to determine whether to use the planar pattern.

[0557] [Equation 4]

[0558] numPoints(s) indicates the number of points in subgroup s.

[0559] numPointsCodedByIdcm i (s) indicates the number of points from the root node level to the i-th octree level and within the subgroup boundary of subgroup s, encoded using IDCM.

[0560] numSubnodes i (s) indicates the number of occupied child nodes generated by the nodes included in the i-th octree level of subgroup s.

[0561] Furthermore, realDensity i+1 (s) indicates the true density of the midpoint of the (i+1)th octree layer for subgroup s.

[0562] According to the embodiment, whether to use the planar pattern in the (i+1)th octree layer can be determined as follows. That is, before the encoding process of the (i+1)th octree layer, the eligibility of all nodes for the xyz planar pattern in the (i+1)th octree layer of subgroup s is determined as follows:

[0563] Here, th is a predefined threshold, which can be set to 1.3 as an example.

[0564] In this regard, when using subgroup adaptive planar qualification based on density, the number of points in each subgroup remains unknown to the decoder until the subgroup belonging to the last layer group is delivered. This disclosure can be achieved by signaling planar qualifications identified in the data unit header of each geometric data unit or dependent on the geometric data unit header (e.g., planarEligibleKOctreeDepth). i+1 The information (s) is used to match the encoder and decoder to solve this problem.

[0565] In this disclosure, an IDCM node may be referred to as a direct compression node. That is, when the hierarchical structure used for geometry decoding is in the form of a tree, some subgroups may include at least one IDCM node.

[0566] According to an embodiment, this disclosure defines a node that meets the following conditions as an IDCM node, and some subgroups may include at least one IDCM node that meets these conditions.

[0567] Based on the parent node's eligibility criteria: From the perspective of the current node's parent node, there is only one occupied child node (the current node). From the perspective of the grandparent node, there is at most one occupied child node (i.e., the parent node has at most one occupied sibling node, which means that there are at most two occupied child nodes for the grandparent node).

[0568] 6N eligibility criteria: From the perspective of the parent node, there is only one occupied child node (the current node), and six neighbors (nodes sharing the same face) are not occupied.

[0569] In this disclosure, nodes that meet the above conditions are referred to as IDCM nodes (or points), and nodes that do not meet the conditions are referred to as non-IDCM nodes (or points). Within each subgroup, a single layer may include zero or more IDCM nodes.

[0570] ​ The illustration shows an example of the syntax structure of the geometric data unit header according to an embodiment. ​ The header of the geometric data unit shows that it contains planar_eligible_kOctree_depth[i] (i.e., planarEligibleKOctreeDepth). i+1 Examples of (s)).

[0571] ​ The syntax in can be included ​ In the bitstream. According to an embodiment, they can be generated by a point cloud encoder and decoded by a point cloud decoder.

[0572] exist ​ In the code, `checkPlanarEligibilityBasedOnOctreeDepth` determines whether the geometry data cell header should include `planar_eligible_kOctree_depth` (i.e., `planarEligibleKOctreeDepth`). i+1 (s)).

[0573] For example, checkPlanarEligibilityBasedOnOctreeDepth is true when both geom_planar_mode_enabled_flag and geom_octree_depth_planar_eligibility_enabled_flag indicate "enabled" and geom_angular_mode_enabled_flag indicates "disabled".

[0574] The geom_planar_mode_enabled_flag indicates whether planar mode is enabled.

[0575] The `geom_octree_depth_planar_eligibility_enabled_flag` flag indicates whether octree depth planar eligibility is enabled.

[0576] The geom_angular_mode_enabled_flag indicates whether angle mode is enabled.

[0577] geom_planar_mode_enabled_flag, geom_octree_depth_planar_eligibility_enabled_flag, and geom_angular_mode_enabled_flag can be transmitted as signals in at least one of SPS, GPS, or geometric data cells.

[0578] According to an embodiment, when layer_group_enabled_flag indicates “enabled” and checkPlanarEligibilityBasedOnOctreeDepth is true, the geometric data unit includes planar_eligible_kOctree_depth[i], which is repeated as many times as the number of octree depths (num_layers_minus1) of the first layer group (or the current subgroup).

[0579] When the value of layer_group_enabled_flag is "enabled", it indicates that the geometric bitstream of a slice is included in multiple slices or a set of coding layers that match the corresponding subgroup. When the value of layer_group_enabled_flag is "disabled", it specifies that the geometric bitstream is included in a single slice.

[0580] num_layers_minus1[0] indicates the number of octree depths (i.e., coding layers) included in the first layer group (or the current subgroup).

[0581] In one embodiment, num_layers_minus1 and layer_group_enabled_flag can be sent using signals in SPS.

[0582] When the value of `planar_eligible_kOctree_depth[i]` is 1, it indicates that the planar eligibility flag is enabled for the i-th depth of the first layer group (or the current subgroup). In other words, it indicates that the planar pattern is used for the i-th depth. When the value of `planar_eligible_kOctree_depth[i]` is 0, it indicates that the planar eligibility flag is disabled for the i-th depth of the first layer group (or the current subgroup). In other words, it indicates that the planar pattern is not used for the i-th depth.

[0583] therefore, ​ Whether planar qualification is enabled for each coding layer (i.e., octree depth) of the first layer group can be signaled. In this case, the decoder of the receiving device can use density-based subgroup adaptive planar qualification even if the number of points in each subgroup is unknown. That is, it may be known whether a planar pattern is used for each coding layer (i.e., octree depth) of the first layer group.

[0584] ​ The illustration shows an example of the syntax structure of the dependent geometry data unit header according to an embodiment. Figure 35 Showing planar_eligible_kOctree_depth[i] (i.e., planarEligibleKOctreeDepth) i+1 (s) is an example included in the dependent geometry data unit header.

[0585] Figure 35 The syntax in can be included Figure 29 In the bitstream. According to embodiments, they can be generated by a point cloud encoder and decoded by a point cloud decoder. In this disclosure, planar_eligible_kOctree_depth[i] can be... Figure 31 or Figure 33 In the syntax, signals are sent instead of... Figure 35 middle.

[0586] exist Figure 35 In the code, `checkPlanarEligibilityBasedOnOctreeDepth` determines whether the geometry data cell header should include `planar_eligible_kOctree_depth` (i.e., `planarEligibleKOctreeDepth`). i+1(s)).

[0587] For example, checkPlanarEligibilityBasedOnOctreeDepth is true when both geom_planar_mode_enabled_flag and geom_octree_depth_planar_eligibility_enabled_flag indicate "enabled" and geom_angular_mode_enabled_flag indicates "disabled".

[0588] The geom_planar_mode_enabled_flag indicates whether planar mode is enabled.

[0589] The `geom_octree_depth_planar_eligibility_enabled_flag` flag indicates whether octree depth planar eligibility is enabled.

[0590] The geom_angular_mode_enabled_flag indicates whether angle mode is enabled.

[0591] geom_planar_mode_enabled_flag, geom_octree_depth_planar_eligibility_enabled_flag, and geom_angular_mode_enabled_flag can be transmitted as signals in at least one of SPS, GPS, or geometric data cells.

[0592] According to an embodiment, when layer_group_enabled_flag indicates “enabled” and checkPlanarEligibilityBasedOnOctreeDepth is true, the geometric data cell contains planar_eligible_kOctree_depth[i], which is repeated as many times as the number of octree depths of the layer group (or current subgroup) indicated (identified) by layer_group_id (i.e., num_layers_minus1[layer_group_id]).

[0593] When the value of layer_group_enabled_flag indicates "enabled", it indicates that the geometric bitstream of a slice is included in multiple slices or a group of coding layers that match the corresponding subgroup. When the value of layer_group_enabled_flag indicates "disabled", it specifies that the geometric bitstream is included in a single slice.

[0594] num_layers_minus1[layer_group_id] indicates the number of octree depths (i.e., coding layers) included in the layer group (or current subgroup) indicated (or identified) by layer_group_id.

[0595] In one embodiment, num_layers_minus1, layer_group_enabled_flag, and layer_group_id can be sent using signals in SPS.

[0596] When `planar_eligible_kOctree_depth[i]` equals 1, it indicates that the planar eligibility flag is enabled for the i-th depth of the layer group (or current subgroup) identified by `layer_group_id`. In other words, it indicates that the planar mode is used for the i-th depth. When `planar_eligible_kOctree_depth[i]` equals 0, it indicates that the planar eligibility flag is disabled for the i-th depth of the layer group (or current subgroup) indicated (or identified) by `layer_group_id`. In other words, it indicates that the planar mode is not used for the i-th depth.

[0597] therefore, Figure 35 Planar qualification can be enabled for each coding layer (i.e., octree depth) of a layer group identified (or indicated) by layer_group_id using a signal. In this case, density-based subgroup adaptive planar qualification can be used even when the decoder of the receiving device does not know the number of points in each subgroup. That is, it can be known whether a planar pattern is used for each coding layer (i.e., octree depth) of a layer group identified (or indicated) by layer_group_id.

[0598] According to this disclosure, a subgroup boundary can be used instead of a root bounding box boundary to restrict geometric neighbors to the same subgroup boundary of the current node.

[0599] Specifically, when generating a neighbor search / neighbor pattern based on a geometric occupancy atlas, boundaries are needed to prevent neighbors from exceeding the atlas boundaries. Here, neighbor search is the process of finding neighboring points (or nodes) adjacent to the point (or node) to be encoded / decoded, and the neighbor pattern is a bit pattern indicating the occupancy status of neighbors found through the neighbor search. In this disclosure, the K-Nearest Neighbor (K-NN) algorithm, octree search, and grid-based search can be used as neighbor search methods. For example, when nodes in six directions (front, back, left, right, up, down) are selected as neighbors based on the current node to be encoded / decoded, the neighbor pattern indicates the occupancy status of the six selected nodes (e.g., 001101). This requires an occupancy graph, which is referred to as a geometric atlas in this disclosure. In this disclosure, a geometric atlas is used that has the same meaning as a geometric occupancy atlas or atlas. In one embodiment, a geometric occupancy atlas can be generated for each depth of the octree. This is merely one embodiment, and the size of the geometric occupancy atlas (e.g., cube size) can be larger or smaller than the depth of the octree. In other words, a geometric occupancy atlas is a bit pattern representing the occupancy status of nodes within its range. For a given node, it is assigned a 1 if it includes at least one node, and a 0 if it does not include any nodes. In this disclosure, the geometric occupancy atlas is created as a lookup table (LUT) of the occupancy status of neighboring nodes within a certain range to improve the speed of neighbor search. When the current node's location is outside the atlas range (or atlas boundary), the atlas boundary is updated and used.

[0600] As an example, when the encoder of the transmitting device compresses geometry information based on a subgroup-by-subgroup approach, it searches for the neighbors of the current node to be encoded and generates a neighbor pattern based on the boundaries of the subgroups and the atlas boundaries to which the subgroups belong. If the atlas boundaries and subgroup boundaries do not match, the atlas boundaries are updated based on the boundaries of the subgroup bounding boxes, and a neighbor search / neighbor pattern is performed within the updated atlas boundaries. The current node to be encoded is then compressed based on this neighbor pattern.

[0601] As another example, when the receiver's decoder decodes geometry information on a subgroup-by-subgroup basis, it searches for the neighbors of the current node to be decoded and generates a neighbor pattern based on the boundaries of the subgroups and the atlas boundaries to which the subgroups belong. When the atlas boundaries do not match the subgroup boundaries, the atlas boundaries are updated based on the boundaries of the subgroup bounding boxes, and a neighbor search / neighbor pattern is performed within the updated atlas boundaries. The current node to be decoded is then decoded based on the neighbor pattern.

[0602] The following code demonstrates the method (makeGeometryNeighPattern()) used to generate a neighbor pattern for a node (or point) in the geometry encoding / decoding process. That is, depending on whether the node (or point) lies between the maximum and minimum values ​​of the geometry occupancy atlas, different neighbor patterning methods (e.g., occupancyAtlas.get or occupancyAtlas.getWithCheck) are used to generate the neighbor pattern. In the following code, occupancyAtlas._minRange (also referred to as _minRange) indicates the minimum range of the geometry occupancy atlas, and occupancyAtlas._maxRange (also referred to as _maxRange) indicates the maximum range of the geometry occupancy atlas. Even when using the planar EligibleKOctreeDepth pattern, the following code generates the neighbor pattern in the same or similar manner.

[0603] makeGeometryNeighPattern(

[0604] bool adjacent_child_contextualization_enabled_flag, const Vec3<int32_t> & position, int codedAxesPrevLv1, const MortonMap3D & occupancyAtlas, const bool& planarEligibleKOctreeDepth) { const int mask=occupancyAtlas.cubeSize()-1; const int cubeSizeMinusone = mask; const int32_t x = position [0] & mask; const int32_t y = position [1] & mask; const int32_t z = position [2] & mask; uint8_t neighPattern; const int sx = codedAxesPrevLv1 & 4 ? 1: 0; const int sy = codedAxesPrevLv1 & 2 ? 1:0; const int sz = codedAxesPrevLv1 & 1 ? 1: 0; if ( x > occupancyAtlas._minRange[0] && x < occupancyAtlas._maxRange[0]-1 && y > occupancyAtlas._minRange [1] && y < occupancyAtlas._maxRange[1] – 1 && z > occupancyAtlas._minRange [2] && z < occupancyAtlas. maxRange[2] -1) { neighPattern = occupancyAtlas.get(x+1, y, z, sx, sy, sz); neighPattern = occupancyAtlas.get(x-1, y, z, sx, sy, sz) << 1; neighPattern = occupancyAtlas.get(x, y-1, z, sx, sy, sz) << 2; neighPattern |= occupancyAtlas.get(x, y+1, z, sx, sy, sz) << 3; neighPattern = occupancyAtlas.get(x, y, z-1, sx, sy, sz) << 4; neighPattern = occupancyAtlas.get(x, y, z+1, sx, sy, sz) << 5; } else { neighPattern occupancyAtlas.getWithCheck(x+1, y, z, sx, sy, sz); neighPattern = occupancyAtlas.getWithCheck(x-1, y, z, sx, sy, sz) <<1; neighPattern = occupancyAtlas.getWithCheck(x, y-1, z, sx, sy, sz) <<2; neighPattern = occupancyAtlas.getWithCheck(x, y+1, z, sx, sy, sz) <<3; neighPattern = occupancyAtlas.getWithCheck(x, y, z-1, sx, sy, sz) <<4; neighPattern = occupancyAtlas.getWithCheck(x, y, z+1, sx, sv, sz) <<5; if (planarEligibleKOctreeDepth) { if ( x > occupancyAtlas._minRange[0] && x < occupancyAtlas.maxRange[0]-1 && y > occupancyAtlas. minRange[1] && y < occupancyAtlas._maxRange[1]-1 && z > occupancyAtlas._minRange[2] && z < occupancyAtlas._maxRange[2]-1{ if (occupancyAtlas.get(x-1, y-1, z, sx, sy, sz)) gnp.adjNeigh0cc [3] = occupancyAtlas.getChild0cc(x-1, y-1, z); if (occupancyAtlas.get(x-1, y, z-1, sx, sy, sz)) gnp.adjNeigh0cc [4]= occupancyAtlas.getChild0cc(x-1, y, z-1); if (occupancyAtlas.get(x, y-1,z-1, sx, sy, sz)) gnp.adjNeigh0cc [5] = occupancyAtlas.getChild0cc(x, y-1, z-1); if (occupancyAtlas.get(x-1, y-1,z 1, sx, sy, sz)) gnp.adjNeigh0cc [6] = occupancyAtlas.getChild0cc(x-1, y-1, z-1); } else{ if (occupancyAtlas.getWithCheck(x-1, y-1, z, sx, sy, sz)) gnp.adjNeigh0cc [3] = occupancyAtlas.getChild0cc(x-1, y-1, z); if (occupancyAtlas.getWithCheck(x-1, y, z-1, sx, sy, sz)) gnp.adjNeigh0cc [4] = occupancyAtlas.getChild0cc(x-1, y, z-1); if (occupancyAtlas.getWithCheck(x, y-1, z-1, sx, sy, sz)) gnp.adjNeighOcc [5] = occupancyAtlas.getChild0cc(x, y-1, z-1); if (occupancyAtlas.getWithCheck(x-1, y-1, z-1, sx, sy, sz)) gnp.adjNeigh0cc [6] = occupancyAtlas.getChild0cc(x-1, y-1, z-1); } / / <How to create an image if (!notAvailable) { auto& neighborEye = gnp.neighbor; neighOccu = (!! (gnp.neighPattern & 1) << 11) | (!!(gnp.neighPattern & 8) << 10) | (!! (gnp.neighPattern & 32) <<9); if (x > occupancyAtlas._minRange[0] && x < occupancyAtlas._maxRange[0]-1 && y > occupancyAtlas._minRange[1] && y < occupancyAtlas._maxRange[1]-1 && z > occupancyAtlas._minRange [2] && z < occupancyAtlas._maxRange[2]-1) for (int n = 0; n < 9; n++) { neighOccu |= occupancyAtlas.get( x + LUTLineardx[n], y + LUTLineardy [n], z+ LUTLineardz [n], sx, sy,sz) << n; } else for (int n = 0; n < 9; n++) { neighOccu |= occupancyAtlas.getWithCheck( x + LUTLineardx[n], y + LUTLineardy [n], z+ LUTLineardz[n], sx, sy,sz) << n; } } } The following code is another example of generating a neighbor pattern, specifically, an example of generating a neighbor pattern for 20 neighbors. That is, the following code represents the method (prepareGeometryAdvancedNeighPattern()) used to generate a neighbor pattern for the geometrically encoded / decoded nodes (or points). Also in this code, depending on whether the encoded / decoded nodes (or points) are within the maximum and minimum ranges of the geometric occupancy atlas, different neighbor patterning methods (e.g., occupancyAtlas.get or occupancyAtlas.getWithCheck) are used to generate a neighbor pattern for 20 neighbors (nodes or points). In the code below, occupancyAtlas._minRange (also referred to as _minRange) indicates the minimum range of the geometric occupancy atlas, and occupancyAtlas._maxRange (also referred to as _maxRange) indicates the maximum range of the geometric occupancy atlas. Even when using the planarEligibleKOctreeDepth pattern, the following code generates a neighbor pattern in the same or similar way.

[0605] void prepareGeometryAdvancedNeighPattern(

[0606] OctreeNeighhours& octreeNeighhours, const GeometryNeighPattern& gnp, const Vec3<int32_t> & position, int atlasShift, const MortonMap3D& occupancyAtlas, const bool& planarEligibleKOctreeDepth) { / / Prepare the neighbors const int neighPattern = gnp.neighPattern; const int mask = occupationAtlas.cubeSize()-1; const int32_t x = position [0] & mask; const int32_t y = position[1] & mask; const int32_t z = position[2] & mask; const int sx = atlasShift & 4 ? 1:0; const int sy = atlasShift & 2 ? 1:0; const int sz = atlasShift & 1 ? 1:0; const int cubeSizeMinusone = mask; / / Prepare 20 neighbors int neighb20 = 0; if (x > occupancyAtlas.minRange.x() && x < occupancyAtlas._maxRange.x()-1 && y > occupancyAtlas._minRange.y() && y < occupancyAtlas._maxRange.y()-1 && z > occupancyAtlas._minRange.z() && z < occupancyAtlas._maxRange.z()-1) for (int n = 0; n < 20; n++) neighb20 | occupationAtlas.get( x + LUTdx[n], y + LUTdy [n], z + LUTdz[n], sx, sy, sz) << n; else for (int n = 0; n < 20; n++) neighb20 |= occupationAtlas.getWithCheck( x + LUTdx[n], y + LUTdy [n], z + LUTdz[n], sx, sy, sz) << n; As described, when performing a neighbor search or generating a neighbor pattern, the maximum and minimum extents of the geometric occupancy atlas are used. In this process, the geometric occupancy atlas is updated by considering not only the atlas boundaries but also the subgroup boundaries to restrict neighboring nodes to belong to the same subgroup as the current node. According to embodiments of this disclosure, the maximum and minimum ranges of the geometric occupancy atlas are updated based on the subgroup boundaries. At this time, the size of the geometric occupancy atlas remains unchanged. For simplicity, the updated maximum and minimum ranges of the geometric occupancy atlas will be referred to as the effective range of the geometric occupancy atlas. The updating of the geometric occupancy atlas is performed by the geometric encoder of the transmitting device or the geometric decoder of the receiving device. In particular, this method allows the decoder to independently decode the nodes of the current subgroup without needing information about the nodes of neighboring subgroups.

[0607] In other words, in the case of layer-based slicing, the atlas boundary and the subgroup boundary may coincide or may not coincide. For example, the origin and size of the atlas may differ from the origin and size of the subgroup. In another example, a single subgroup may contain multiple atlases, or conversely, a single subgroup may be contained within multiple atlases. In one embodiment of this disclosure, the minimum and / or maximum extent of the geometric occupancy atlas can be updated based on the subgroup boundaries, and neighbor search and neighbor pattern generation can be performed based on the updated geometric occupancy atlas.

[0608] The following code demonstrates a method for setting or updating the maximum and minimum extent of a geometry occupancy atlas, taking into account subgroup boundaries.

[0609] Vec3 <int>_maxRange = {_cubeSize, _cubeSize, _cubeSize};

[0610] Vec3 <int>_minRange = {0, 0, 0};

[0611] int setRange(Vec3 <int>bbox_max, Vec3 <int>bbox_min, Vec3 <int>atlasOrigin, Old3 <int>nodeSizeLog2)

[0612] {

[0613] int changedFlag = 0;

[0614] auto bboxSize = bbox_max - bbox_min;

[0615] bool setRangeEnabledFlag = !!bboxSize[0] || !!bboxSize[1] || !!bboxSize[2];

[0616] if (setRangeEnabledFlag) {

[0617] for (int m = 0; m < 3; m++) {

[0618] int bboxMaxShift = bbox_max[m] >> nodeSizeLog2[m];

[0619] int bboxMinShift = bbox_min[m] >> nodeSizeLog2[m];

[0620] int atlasOriginShift = atlasOrigin[m] << _cubeSizeLog2;

[0621] / / _maxRange (Maximum range of atlas)

[0622] if (atlasOriginShift + _cubeSize > bboxMaxShift) {

[0623] _maxRange[m] = bboxMaxShift - atlasOriginShift;

[0624] changedFlag = 1;

[0625] }

[0626] Else

[0627] _maxRange[m] = _cubeSize;

[0628] / / _minRange(Minimum range of atlas)

[0629] if (bboxMinShift > atlasOriginShift) {

[0630] _minRange[m] = bboxMinShift - atlasOriginShift;

[0631] changedFlag = 1;

[0632] }

[0633] Else

[0634] _minRange[m] = 0;

[0635] }

[0636] }

[0637] return changedFlag;

[0638] }

[0639] In the code above, `_maxRange` represents the maximum range (or maximum value) of the atlas boundary. Its initial value is set to `{_cubeSize, _cubeSize, _cubeSize}`. Here, `cubeSize` indicates the size of the atlas, and `atlasOrigin` indicates the origin coordinates (i.e., the starting position) of the geometry occupying the atlas.

[0640] `_minRange` indicates the minimum range (or minimum value) of the atlas boundary, and its initial value is set to {0, 0, 0}. In other words, `_minRange` and `_maxRange` indicate the minimum and maximum actual usable range within the geometrically occupied atlas, respectively.

[0641] bbox_min and bbox_max indicate the minimum and maximum values ​​of the bounding box position of the subgroup, respectively.

[0642] nodeSizeLog2 indicates the node size, and changedFlag indicates whether the geometry occupies the atlas range and has been updated.

[0643] bboxSize indicates the size of the bounding box of the subgroup and can be obtained by subtracting bbox_min from bbox_max.

[0644] The `setRangeEnabledFlag` indicator checks whether the size of the subgroup bounding box is not zero.

[0645] In this disclosure, the encoder may signal the start position and / or size (cubeSize) of the geometric occupancy atlas in signaling information (e.g., SPS, GPS, LGSI, dependent geometry data cell header, geometry data cell, etc.) and send it to the decoder of the receiving device. Additionally, the encoder may signal the identification information, origin information (bbox_origin), and size (bbox_size) of each subgroup in signaling information (e.g., SPS, GPS, LGSI, dependent geometry data cell header, geometry data cell, etc.) and send it to the decoder of the receiving device.

[0646] In this disclosure, the extent of the geometry occupancy atlas is repeatedly updated for each axis (x, y, z).

[0647] bboxMaxShift and bboxMinShift are values ​​obtained by performing a shift operation on nodeSizeLog2, and atlasOriginShift is a value obtained by performing a shift operation on the value of atlasOrigin using _cubeSizeLog2.

[0648] The following are the update methods for _maxRange.

[0649] If (atlasOriginShift + _cubeSize) is greater than bboxMaxShift, that is, the maximum value of the atlas boundary is greater than the maximum value of the bounding box of the subgroup, then _maxRange is updated to bboxMaxShift - atlasOriginShift. In other words, the maximum range of the atlas boundary is changed to the position corresponding to the maximum value of the bounding box of the subgroup.

[0650] If (atlasOriginShift + _cubeSize) is not greater than bboxMaxShift, that is, the maximum value of the atlas boundary is not greater than the maximum value of the bounding box of the subgroup, then no update is performed.

[0651] The following are the update methods for _minRange.

[0652] If bboxMinShift is greater than atlasOriginShift, that is, if the minimum value of the subgroup bounding box is greater than the minimum value of the atlas boundary (or origin coordinates / starting position), then _minRange is updated to bboxMinShift - atlasOriginShift. In other words, the minimum range of the atlas boundary is changed to the position corresponding to the minimum value of the subgroup bounding box.

[0653] If bboxMinShift is not greater than atlasOriginShift, that is, the minimum value of the subgroup bounding box is not greater than the minimum value of the atlas boundary (or the origin coordinates / starting position), then no update is performed.

[0654] In short, when the minimum and maximum ranges of the atlas are defined as _minRange and _maxRange respectively, _minRange is initially set to 0 and _maxRange is set to the side length of the cube. In this case, when the minimum boundary of a subgroup is greater than the minimum value of the atlas, the minimum range (_minRange) of the atlas is updated to the minimum value of the subgroup. When the maximum boundary of a subgroup is less than the maximum value of the atlas, the maximum range (_maxRange) of the atlas is updated to the maximum value of the subgroup.

[0655] In neighbor search and neighbor pattern generation based on geometric occupancy atlases, this disclosure ensures that neighbor nodes (or points) do not exceed the atlas boundaries. That is, nodes exceeding the atlas boundaries are not selected as neighbors of the current node. Furthermore, in the case of layer group slicing, instances may occur where the subgroup boundary does not coincide with the atlas boundary. In such cases, by updating the atlas boundary to the subgroup boundary, a neighbor pattern can be generated by searching for neighbors based on the subgroup boundary.

[0656] Figure 36 This is a diagram illustrating an example of an updated atlas range according to an embodiment. Specifically, Figure 36 This shows an example where the boundary of the atlas does not coincide with the boundary of the subgroup.

[0657] Specifically, Figure 36 The illustration shows an example where a subgroup boundary spans four geometric occupancy atlases. That is, a portion of the illustrated subgroup exists within a single geometric occupancy atlas. This is merely one example; a single atlas can contain one subgroup, or a single subgroup can contain multiple geometric occupancy atlases. Additionally, there may be cases where the boundary of a subgroup coincides with the boundary of a geometric occupancy atlas.

[0658] In other words, when the boundary of a subgroup does not coincide with the boundary of the geometric occupancy atlas, if the minimum and maximum ranges of the geometric occupancy atlas have not been updated, nodes outside the subgroup boundary may be referenced during neighbor search. In this case, incorrect node values ​​may be retrieved, leading to incorrect encoding, which may cause the decoder to fail to perform decoding operations.

[0659] In order to prevent this situation, the extent of the geometric occupancy atlas is adjusted based on the boundaries of the subgroups in this disclosure.

[0660] The process of updating the minimum and maximum extent of the geometric occupancy map A based on the subgroup boundaries is described below.

[0661] In geometric occupancy atlas A, the initial minimum values ​​(min Atlas(x), min Atlas(y)) of the atlas boundaries are set to 0, and the initial maximum values ​​are set to cubeSizeMinusOne (or cubeSize). In this case, based on the x-axis, because the minimum value of the atlas boundaries is less than the minimum value of the subgroup boundaries, the minimum value of the atlas boundaries is updated to the minimum value of the subgroup boundaries (_minRange_x). Similarly, based on the y-axis, because the minimum value of the atlas boundaries is less than the minimum value of the subgroup boundaries, the minimum value of the atlas boundaries is updated to the minimum value of the subgroup boundaries (_minRange_y). Furthermore, based on the x-axis, because the maximum value of the atlas boundaries coincides with the maximum value of the subgroup boundaries, the maximum value of the atlas boundaries is not updated. Similarly, based on the y-axis, because the maximum value of the atlas boundaries coincides with the maximum value of the subgroup boundaries, the maximum value of the atlas boundaries is not updated. Through this process, in... Figure 36 The range of geometric occupancy atlas A is adjusted to 7000. In this disclosure, the adjusted range of the geometric occupancy atlas is referred to as the effective range of the atlas or the meaningful region of the atlas. That is, in this disclosure, the size of the geometric occupancy atlas is not changed, and only the effective range (or meaningful region) of the geometric occupancy atlas changes according to the subgroup boundaries. This operation is also applied to the z-axis. Furthermore, the update method in geometric occupancy atlas A is also applied to the remaining geometric occupancy atlas BD.

[0662] In other words, the minimum value of the atlas boundary (=0) can be changed to the minimum value of the subgroup boundary (_minRange), and / or the maximum value of the atlas boundary (=cubeSizeMinusOne) can be changed to the maximum value of the subgroup boundary (maxRange).

[0663] The receiving method / apparatus according to the embodiments can provide the following effects.

[0664] This disclosure describes a method for partitioning and transmitting compressed data for point cloud data based on specific criteria. In particular, when layered coding (or hierarchical coding) is used as an application of this disclosure, compressed data can be partitioned and transmitted according to layers, which can increase storage and transmission efficiency on the transmitting side.

[0665] Figure 37 This diagram illustrates an example of providing services by compressing the geometry and attributes of point cloud data according to an embodiment. Specifically, in a point cloud compression (PCC) based service, the compression ratio or the number of data points can be adjusted based on receiver performance or transmission environment. Figure 37 As shown, when point cloud data is bundled into a single slice, if receiver performance or transmission environment changes: 1) the bitstream suitable for each environment should be pre-converted and stored separately for selection during transmission, or 2) transcoding is required before transmission. In this case, if the number of receiver environments to be supported increases or the transmission environment changes frequently, problems related to storage space or latency caused by conversion may arise.

[0666] Figure 38 This is a diagram illustrating another example of providing services by compressing the geometry and attributes of point cloud data according to an embodiment.

[0667] As proposed in this disclosure, when compressed data is partitioned and delivered according to layers, the advantage lies in the ability of a bitstream selector to selectively deliver only the necessary portions of the pre-compressed data at the bitstream stage without additional conversion processes. This scheme is efficient in terms of storage space, as each stream requires only one storage space. Furthermore, because the bitstream selector selects only the necessary layers before transmission, efficient transmission in terms of bandwidth can be achieved.

[0668] Regarding the effects of the features of this disclosure from the receiver's perspective, when hierarchical coding (or graded coding) is used as an application, compressed data can be partitioned and transmitted according to layers. In this case, the efficiency on the receiving side can be increased. In particular, although applying scalable attribute coding introduces latency and computational burden on the receiver because the entire encoded geometry must be received and decoded, the scheme of this disclosure allows decoding only the geometry that matches the tree level used in scalable attribute coding, thereby reducing latency by saving the computational power required for decoding and increasing decoder efficiency.

[0669] Figure 39 This diagram illustrates the operations at the transmitting and receiving sides when transmitting point cloud data composed of layers. In this regard, if information for reconstructing the entire point cloud data is delivered regardless of the receiver's performance, the receiver needs to perform a process (e.g., data selection or subsampling) to select only the point cloud data corresponding to the necessary layers after reconstructing the point cloud data through decoding. Because the delivered bitstream is decoded in this case, it may cause latency in receivers seeking low latency, or decoding may not be possible depending on the receiver's performance.

[0670] However, as proposed, when receiving only the necessary layers of compressed data based on the number of layers, the receiver is allowed to perform selective decoding of specific layers. Therefore, the efficiency of the decoder can be increased, and decoders with various performance levels can be supported.

[0671] Figure 40 This is a flowchart illustrating a point cloud data transmission method according to an embodiment.

[0672] The point cloud data transmission method according to the embodiment may include: acquiring point cloud data (71001), encoding point cloud data (71002), and transmitting the encoded point cloud data and signaling information (71003). In this case, the bit stream containing the encoded point cloud data and signaling information can be encapsulated into a file and transmitted.

[0673] In the operation of acquiring point cloud data (71001), the following can be executed: Figure 1 The point cloud video acquisition unit 10001 performs some or all of the operations, or executes... Figure 8 Part or all of the operations of the data input unit 8000.

[0674] In the operation of encoding point cloud data (71002), the following can be performed: Figure 1 Point cloud video encoder 10002, Figure 2 The code 20001 Figure 3 Point cloud video encoder, Figure 8 Point cloud video encoder, Figure 24 encoder, Figure 25 Attribute encoding and Figure 27 The geometry and attribute encoder performs some or all of its operations to encode geometric and attribute information.

[0675] The operation of encoding point cloud data (71002) according to the embodiment may include compressing geometric information and compressing attribute information related to the input point cloud data.

[0676] According to an embodiment, the operation of compressing geometric information may include compressing the geometric information based on each layer group and / or subgroup. When compressing geometric information based on each subgroup, neighbor search and neighbor pattern generation may be performed based on the geometric occupancy atlas. In this case, the minimum and maximum ranges of the geometric occupancy atlas are updated based on the minimum and maximum ranges of the corresponding subgroups. The neighbor nodes (or points) of the current node (or point) to be encoded are selected within the updated minimum and maximum ranges of the geometric occupancy atlas, and the neighbor patterns of the selected neighbor nodes (or points) are generated. Since the compression of geometric information and the updating of the geometric occupancy atlas have already been described in detail above, their descriptions are omitted to avoid redundancy.

[0677] The compressed geometric information is entropy encoded and then output as a geometric bitstream.

[0678] According to an embodiment, the operation of compressing attribute information includes compressing the attribute information based on locations where geometric encoding has not yet been performed and / or based on reconstructed geometric information. In one embodiment, the attribute information can be encoded using any one or a combination of RAHT coding, LOD-based predictive transform coding, and lifting transform coding.

[0679] The compressed attribute information is entropy encoded and then output as an attribute bitstream.

[0680] In this disclosure, signaling information may include slice-related information based on layer groups, used to encode geometric and attribute information on a layer group and / or subgroup basis, and used to decode it at the receiving end.

[0681] Layer-group-based slice-related information may be included in at least one of the SPS, APS, LGSI, and / or geometry data cell headers (or dependent geometry data cell headers) and transmitted to the receiving side. For details regarding slice-related information included in layer-group-based information, which are omitted below, please refer to [reference needed]. Figures 29 to 35 .

[0682] Figure 41 This is a flowchart illustrating a point cloud data receiving method according to an embodiment.

[0683] The point cloud data receiving method according to the embodiment may include: receiving encoded point cloud data and signaling information (81001), decoding point cloud data based on signaling information (81002), and rendering the decoded point cloud data (81003).

[0684] The operation of receiving point cloud data and signaling information (81001) according to the embodiment can be performed by... Figure 1 Receiver 10005 Figure 2 Transmission 20002 or decoding 20003, or Figure 9 The receiver 9000 or receiver processor 9001 executes this.

[0685] The operation of decoding point cloud data (81002) according to the embodiment can be performed. Figure 1 Point cloud video decoder 10006 Figure 2 Decoding 20003 Figure 8 Point cloud video encoder, Figure 9 Point cloud video decoder, Figure 24 decoder Figure 26 decoder and Figure 28 The geometry and attribute decoder operates on some or all of its functions to decode geometric and attribute information.

[0686] The operation of decoding point cloud data (81002) according to the embodiment includes decoding geometric information and decoding attribute information.

[0687] Decoding geometric information can include decoding (i.e., reconstructing) the geometric information based on each layer group and / or subgroup, using slice-related information based on layer groups included in the signaling information. When decoding geometric information based on each subgroup, neighbor search and neighbor pattern generation can be performed based on the geometric occupancy atlas. In this case, the minimum and maximum ranges of the geometric occupancy atlas are updated based on the minimum and maximum ranges of the corresponding subgroups. The neighbor nodes (or points) of the current node (or point) to be decoded are selected within the updated minimum and maximum ranges of the geometric occupancy atlas, and a neighbor pattern for the selected neighbor node (or point) is generated. Since the decoding of geometric information and the updating of the geometric occupancy atlas have already been described in detail above, their descriptions are omitted to avoid redundancy.

[0688] The operation of decoding attribute information involves decoding (i.e., decompressing) the attribute information based on each layer group and / or subgroup, which is based on the reconstructed geometric information included in the signaling information and slice-related information based on the layer group. In one embodiment, the attribute information can be decoded using any one or a combination of RAHT coding, LOD-based predictive transform coding, and lifting transform coding.

[0689] Rendering (81003) according to an embodiment may include reconstructing point cloud data based on reconstructed geometric and attribute information and performing rendering according to various rendering methods. For example, points in the point cloud content may be rendered as vertices with a specific thickness, cubes with a specific minimum size centered at vertex locations, or circles centered at vertex locations. All or part of the rendered point cloud content is provided to a user via a display (e.g., a VR / AR display, a general-purpose display, etc.). The operation of rendering point cloud data (81003) according to an embodiment may be performed by… Figure 1 Renderer 10007 Figure 2 Rendering 20004 or Figure 9 The renderer 9011 is executed.

[0690] Each of the above components, modules, or units can be a software, processor, or hardware component that performs a series of processes stored in memory (or storage unit). Each of the steps described in the above embodiments can be executed by a processor, software component, or hardware component. Each module / block / unit described in the above embodiments can operate as a processor, software, or hardware. Furthermore, the methods presented by the embodiments can be executed as code. This code can be written to a processor-readable storage medium and thus read by a processor provided by the device.

[0691] In this specification, when a component "comprises" or "includes" an element, unless otherwise stated, it means that the component also includes or includes another element. Furthermore, the term "...module (or unit)" disclosed in this specification refers to a unit for performing at least one function or operation, and can be implemented by hardware, software, or a combination of hardware and software.

[0692] Although embodiments have been explained with reference to each of the accompanying drawings for simplicity, new embodiments can be devised by incorporating the embodiments illustrated in the drawings. If a person skilled in the art designs a computer-readable recording medium containing a program for performing the embodiments described above, it may fall within the scope of the appended claims and their equivalents.

[0693] The apparatus and methods are not limited to the configurations and methods of the above embodiments. The above embodiments can be configured by selectively or wholly combining with each other to achieve various modifications.

[0694] Although preferred embodiments have been shown and described, the embodiments are not limited to the specific embodiments described above, and various modifications can be made by those skilled in the art without departing from the spirit of the embodiments claimed in the claims, and these modifications should not be understood in isolation from the technical concept or views of the embodiments.

[0695] Various elements of the device according to the embodiments can be implemented by hardware, software, firmware, or a combination thereof. Various elements of the embodiments can be implemented by a single chip (e.g., a single hardware circuit). According to the embodiments, components according to the embodiments can be implemented as separate chips. According to the embodiments, at least one or more components of the device according to the embodiments can include one or more processors capable of executing one or more programs. One or more programs can perform any one or more operations / methods according to the embodiments or include instructions for performing them. Executable instructions for performing the methods / operations of the device according to the embodiments can be stored in a non-transitory CRM or other computer program product configured to be executed by one or more processors, or can be stored in a transient CRM or other computer program product configured to be executed by one or more processors. Additionally, the memory according to the embodiments can be used to encompass not only volatile memory (e.g., RAM) but also non-volatile memory, flash memory, and PROM. It can also be implemented in the form of a carrier wave (e.g., transmission via the Internet). Furthermore, the processor-readable recording medium can be distributed across computer systems connected via a network, allowing processor-readable code to be stored and executed in a distributed manner.

[0696] In this document, the terms " / " and "", should be interpreted as indicating "and / or". For example, the expression "A / B" can mean "A and / or B". Furthermore, "A, B" can mean "A and / or B". Additionally, "A / B / C" can mean "at least one of A, B, and / or C". Also, "A / B / C" can mean "at least one of A, B, and / or C". Furthermore, in this document, the term "or" should be interpreted as indicating "and / or". For example, the expression "A or B" can include 1) only A, 2) only B, and / or 3) both A and B. In other words, the term "or" in this document should be interpreted as indicating "additionally or alternatively".

[0697] The various elements of the embodiments can be implemented by hardware, software, firmware, or a combination thereof. The various elements of the embodiments can be executed by a single chip, such as a single hardware circuit. According to the embodiments, the elements can be selectively executed by separate chips, respectively. According to the embodiments, at least one of the elements of the embodiments can be executed in one or more processors including instructions for performing the operations according to the embodiments.

[0698] Operations according to the embodiments described herein can be performed by a transmitting / receiving device including one or more memories and / or one or more processors according to the embodiments. One or more memories may store programs for processing / controlling operations according to the embodiments, and one or more processors may control the various operations described herein. One or more processors may be referred to as controllers, etc. In the embodiments, operations may be performed by firmware, software, and / or combinations thereof. Firmware, software, and / or combinations thereof may be stored in a processor or memory.

[0699] Terms such as "first" and "second" can be used to describe various elements of the embodiments. However, the various components according to the embodiments should not be limited by the terms used above. These terms are used only to distinguish one element from another. For example, a first user input signal can be referred to as a second user input signal. Similarly, a second user input signal can be referred to as a first user input signal. The use of these terms should not be interpreted beyond the scope of the various embodiments. Both the first user input signal and the second user input signal are user input signals, but they do not mean the same user input signal unless the context clearly specifies otherwise.

[0700] The terminology used to describe embodiments is for the purpose of describing particular embodiments only and is not intended to limit the embodiments. As used in the description of embodiments and claims, the singular form includes the plural of the referred objects unless the context clearly specifies otherwise. The expression "and / or" is used to include all possible combinations of terms. Terms such as "comprising" or "having" are intended to indicate the presence of figures, quantities, steps, elements, and / or components and should be understood not to exclude the possibility of additional figures, quantities, steps, elements, and / or components. As used herein, conditional expressions such as "if" and "when" are not limited to optional cases and are intended to be interpreted as performing a related operation or interpreting a related definition based on a specific condition when that condition is met. Embodiments may include variations / modifications within the scope of the claims and their equivalents.

[0701] [Mode for public use]

[0702] As described above, the relevant content has already been described in the best mode for performing the embodiments.

[0703] [Industrial Applicability]

[0704] As described above, the embodiments can be applied in whole or in part to point cloud data transmitting / receiving apparatuses and systems. It will be apparent to those skilled in the art that various changes or modifications can be made to the embodiments within their scope. Therefore, the embodiments are intended to provide modifications and variations within the scope of the appended claims and their equivalents.< / int> < / int> < / int> < / int> < / int> < / int>

Claims

1. A method for decoding point cloud data, the method comprising: Receives geometric data, attribute data, and signaling information; The geometric data is decoded based on the signaling information; as well as The attribute data is decoded based on the signaling information and the decoded geometric data.

2. The method according to claim 1, wherein, The decoding of the geometric data includes: The geometric data is received based on subgroups; and The geometric data within the subgroup is reconstructed based on the signaling information and the occupancy map information corresponding to the subgroup to be decoded.

3. The method according to claim 2, wherein, The reconstruction includes: The boundary of the occupancy map information is updated based on the boundary of the bounding box of the subgroup, since the boundary of the bounding box of the subgroup does not match the boundary of the occupancy map information. Based on the updated occupancy graph information, the boundaries are used to search for neighboring nodes of the current node to be decoded within the subgroup and a neighbor pattern is generated; and The geometric data of the current node is reconstructed based on the neighbor pattern.

4. The method according to claim 3, wherein, The update includes: Based on the fact that the minimum value of the boundary of the bounding box of the subgroup is greater than the minimum value of the boundary of the occupancy map information, the minimum value of the boundary of the occupancy map information is updated to the minimum value of the boundary of the bounding box of the subgroup; and Since the maximum value of the boundary of the bounding box of the subgroup is less than the maximum value of the boundary of the occupancy map information, the maximum value of the boundary of the occupancy map information is updated to the maximum value of the boundary of the bounding box of the subgroup.

5. An apparatus for decoding point cloud data, comprising: A receiver configured to receive geometric data, attribute data, and signaling information; A geometry decoder, configured to decode the geometric data based on the signaling information; as well as An attribute decoder is configured to decode the attribute data based on the signaling information and the decoded geometric data.

6. The apparatus according to claim 5, wherein, The geometry decoder is configured as follows: The geometric data is received based on subgroups; and The geometric data within the subgroup is reconstructed based on the signaling information and the occupancy map information corresponding to the subgroup to be decoded.

7. The apparatus according to claim 5, wherein, The geometry decoder is configured as follows: The boundary of the occupancy map information is updated based on the boundary of the bounding box of the subgroup, since the boundary of the bounding box of the subgroup does not match the boundary of the occupancy map information. Based on the updated occupancy graph information, the boundaries are used to search for the neighboring nodes of the current node to be decoded within the subgroup and a neighbor pattern is generated. as well as The geometric data of the current node is reconstructed based on the neighbor pattern.

8. The apparatus according to claim 7, wherein, The geometry decoder is configured as follows: Based on the fact that the minimum value of the boundary of the bounding box of the subgroup is greater than the minimum value of the boundary of the occupancy map information, the minimum value of the boundary of the occupancy map information is updated to the minimum value of the boundary of the bounding box of the subgroup. Since the maximum value of the boundary of the bounding box of the subgroup is less than the maximum value of the boundary of the occupancy map information, the maximum value of the boundary of the occupancy map information is updated to the maximum value of the boundary of the bounding box of the subgroup.

9. A method for encoding point cloud data, the method comprising: Encode the geometric data; Encode the attribute data; as well as The encoded geometric data, the encoded attribute data, and signaling information are transmitted.

10. The method according to claim 9, wherein, The encoding of the geometric data includes: The geometric data is partitioned based on subgroups; and The geometric data within the subgroup is compressed based on occupancy map information corresponding to the subgroup to be encoded.

11. The method according to claim 10, wherein, The compression includes: The boundary of the occupancy map information is updated based on the boundary of the bounding box of the subgroup, since the boundary of the bounding box of the subgroup does not match the boundary of the occupancy map information. Based on the updated occupancy graph information, the boundaries are used to search for neighboring nodes of the current node to be encoded within the subgroup and a neighbor pattern is generated; and The geometric data of the current node is compressed based on the neighbor pattern.

12. The method according to claim 11, wherein, The update includes: Based on the fact that the minimum value of the boundary of the bounding box of the subgroup is greater than the minimum value of the boundary of the occupancy map information, the minimum value of the boundary of the occupancy map information is updated to the minimum value of the boundary of the bounding box of the subgroup. Since the maximum value of the boundary of the bounding box of the subgroup is less than the maximum value of the boundary of the occupancy map information, the maximum value of the boundary of the occupancy map information is updated to the maximum value of the boundary of the bounding box of the subgroup.

13. An apparatus for encoding point cloud data, comprising: A geometry encoder configured to encode geometric data; An attribute encoder, configured to encode attribute data; as well as A transmitter configured to transmit the encoded geometric data, the encoded attribute data, and signaling information.

14. The apparatus according to claim 13, wherein, The geometric encoder is configured to: The geometric data is partitioned based on subgroups; and The geometric data within the subgroup is compressed based on occupancy map information corresponding to the subgroup to be encoded.

15. The apparatus according to claim 14, wherein, The geometric encoder is configured to: The boundary of the occupancy map information is updated based on the boundary of the bounding box of the subgroup, since the boundary of the bounding box of the subgroup does not match the boundary of the occupancy map information. Based on the boundaries of the updated occupancy graph information, the neighboring nodes of the current node to be encoded are searched within the subgroup and a neighbor pattern is generated. as well as The geometric data of the current node is compressed based on the neighbor pattern.

16. The apparatus according to claim 15, wherein, The geometric encoder is configured to: Based on the fact that the minimum value of the boundary of the bounding box of the subgroup is greater than the minimum value of the boundary of the occupancy map information, the minimum value of the boundary of the occupancy map information is updated to the minimum value of the boundary of the bounding box of the subgroup. Since the maximum value of the boundary of the bounding box of the subgroup is less than the maximum value of the boundary of the occupancy map information, the maximum value of the boundary of the occupancy map information is updated to the maximum value of the boundary of the bounding box of the subgroup.