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

By improving G-PCC technology and using block size information to segment point cloud data, selectively applying motion vectors for inter-frame prediction compression, the delay and complexity problems of point cloud data processing and transmission in the prior art are solved, and efficient point cloud data compression and transmission are achieved.

CN119856494APending Publication Date: 2025-04-18LG ELECTRONICS INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380065074.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-07-13
Filing Date
2023-07-13
Publication Date
2025-04-18

AI Technical Summary

Technical Problem

The prior art is difficult to efficiently process and transmit large amounts of point cloud data, and there are problems with delay and encoding/decoding complexity.

Method used

By improving geometry-based point cloud compression (G-PCC) technology, point cloud data is segmented using block size information, and motion vectors are selectively used for inter prediction compression.

Benefits of technology

It improves the compression performance of point cloud data, reduces the complexity of encoding and decoding, and realizes efficient point cloud data transmission and processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119856494A_ABST
    Figure CN119856494A_ABST
Patent Text Reader

Abstract

According to an embodiment, disclosed are a point cloud data transmission method, a point cloud data transmission device, a point cloud data reception method, and a point cloud data reception device. A point cloud data transmission method according to an embodiment may comprise the steps of: encoding geometric data of point cloud data; coding attribute data of the point cloud data based on the geometric data; and transmitting the encoded geometry data, the encoded attribute data, and the signaling data, in which the step of encoding the geometry data comprises the step of dividing the geometry data into one or more prediction units according to the block size information.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments relate to a method and apparatus for processing point cloud content. Background Art

[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 express media configured in three dimensions and is used to provide various services such as virtual reality (VR), augmented reality (AR), mixed reality (MR), XR (extended reality), and self-driving services. However, tens of thousands to hundreds of thousands of point data are required to represent point cloud content. Therefore, a method of efficiently processing large amounts of point data is needed. Summary of the invention

[0003] Technical issues

[0004] An object of the present disclosure designed to solve the above-mentioned problems is to provide a point cloud data transmitting device, a point cloud data transmitting method, a point cloud data receiving device, and a point cloud data receiving method for efficiently transmitting and receiving a point cloud.

[0005] Another object of the present disclosure is to provide a point cloud data sending device, a point cloud data sending method, a point cloud data receiving device and a point cloud data receiving method for solving time delay and encoding / decoding complexity.

[0006] Another object of the present disclosure is to provide a point cloud data sending device, a point cloud data sending method, a point cloud data receiving device and a point cloud data receiving method that improve the compression performance of point clouds by improving the technology of encoding attribute information of geometry-based point cloud compression (G-PCC).

[0007] Another object of the present disclosure is to provide a point cloud data sending device, a point cloud data sending method, a point cloud data receiving device and a point cloud data receiving method for efficiently compressing and sending point cloud data captured by a LiDAR device and receiving the same.

[0008] Another object of the present disclosure is to provide a point cloud data sending device, a point cloud data sending method, a point cloud data receiving device and a point cloud data receiving method for efficient inter-frame prediction compression of point cloud data.

[0009] Another object of the present disclosure is to provide a point cloud data sending device, a point cloud data sending method, a point cloud data receiving device and a point cloud data receiving method for efficiently splitting point cloud data into specific units to perform inter-frame prediction compression of the point cloud data.

[0010] Another object of the present disclosure is to provide a point cloud data sending device, a point cloud data sending method, a point cloud data receiving device and a point cloud data receiving method for splitting point cloud data into specific units to perform efficient inter-frame prediction compression of the point cloud data and then selectively applying a motion vector to each of the split specific units.

[0011] The objects of the present disclosure are not limited to the above objects, and those skilled in the art will understand other objects of the present disclosure not mentioned above after practicing the following description.

[0012] Technical Solution

[0013] To achieve these objectives and other advantages and in accordance with the purposes of the present disclosure, as implemented and broadly described herein, a method for sending point cloud data according to an embodiment may include the following steps: encoding geometric data of the point cloud data, encoding attribute data of the point cloud data based on the geometric data, and sending the encoded geometric data, encoded attribute data and signaling data.

[0014] According to an embodiment, encoding the geometric data may include segmenting the geometric data into one or more prediction units based on block size information.

[0015] According to an embodiment, the signaling data may include the block size information.

[0016] According to an embodiment, the block size information may be represented as coordinates in three dimensions, wherein a value in each of the dimensions may be greater than or equal to 0.

[0017] According to an embodiment, the step of segmenting the geometric data into one or more prediction units may include segmenting the geometric data into one or more prediction units by applying altitude-based horizontal segmentation to the geometric data based on the block size information being {0, 0, height}.

[0018] According to an embodiment, the step of splitting the geometric data into one or more prediction units may include splitting the geometric data into one or more prediction units by applying octree node-based splitting to the geometric data based on the block size information {s, s, s} (where s is a value greater than 1).

[0019] According to an embodiment, the step of encoding the geometric data may include compressing the geometric data in an inter-prediction method by selectively applying a motion vector to each of the partitioned prediction units.

[0020] According to an embodiment, the signaling data may further include information identifying whether the motion vector is applied to each of the prediction units.

[0021] According to an embodiment, an apparatus for sending point cloud data may include: a geometry encoder configured to encode geometry data of the point cloud data; an attribute encoder configured to encode attribute data of the point cloud data based on the geometry data; and a transmitter configured to send the encoded geometry data, the encoded attribute data and signaling data.

[0022] According to an embodiment, the geometry encoder may partition the geometry data into one or more prediction units based on block size information.

[0023] According to an embodiment, the signaling data may include the block size information.

[0024] According to an embodiment, the block size information may be represented as coordinates in three dimensions, wherein a value in each of the dimensions may be greater than or equal to 0.

[0025] According to an embodiment, based on the block size information being {0, 0, height}, the geometry encoder may partition the geometry data into one or more prediction units by applying altitude-based horizontal partitioning to the geometry data.

[0026] According to an embodiment, based on the block size information being {s, s, s} (where s is a value greater than 1), the geometry encoder may partition the geometry data into one or more prediction units by applying octree node-based partitioning to the geometry data.

[0027] According to an embodiment, the geometry encoder may compress the geometry data in an inter-frame prediction method by selectively applying a motion vector to each of the partitioned prediction units.

[0028] According to an embodiment, the signaling data may further include information identifying whether the motion vector is applied to each of the prediction units.

[0029] According to an embodiment, a method for receiving point cloud data may include the following steps: receiving geometric data, attribute data and signaling data; decoding the geometric data based on the signaling data; decoding the attribute data based on the signaling data and the decoded geometric data; and rendering point cloud data reconstructed based on the decoded geometric data and the decoded attribute data.

[0030] According to an embodiment, the step of decoding the geometry data may include: splitting reference data of the geometry data into one or more prediction units based on block size information.

[0031] According to an embodiment, the signaling data may include the block size information.

[0032] According to an embodiment, the block size information may be represented as coordinates in three dimensions, wherein a value in each of the dimensions may be greater than or equal to 0.

[0033] According to an embodiment, the step of segmenting the reference data of the geometric data into one or more prediction units may include: based on the block size information being {0, 0, height}, segmenting the reference data into one or more prediction units by applying altitude-based horizontal segmentation to the reference data.

[0034] According to an embodiment, splitting the reference data of the geometric data into one or more prediction units may include: based on the block size information being {s, s, s} (where s is a value greater than 1), splitting the reference data into one or more prediction units by applying octree node-based splitting to the reference data.

[0035] According to an embodiment, the step of decoding the geometric data may include decoding the geometric data in an inter-prediction method by selectively applying a motion vector to each of the partitioned prediction units based on the signaling data.

[0036] According to an embodiment, the signaling data may further include information identifying whether the motion vector is applied to each of the prediction units.

[0037] Beneficial Effects

[0038] The point cloud data transmitting method, the point cloud data transmitting device, the point cloud data receiving method and the receiving device according to the embodiments can provide quality point cloud services.

[0039] The point cloud data transmitting method, the point cloud data transmitting device, the point cloud data receiving method, and the point cloud data receiving device according to the embodiments may implement various video codec methods.

[0040] The point cloud data transmitting method, the point cloud data transmitting device, the point cloud data receiving method, and the point cloud data receiving device according to the embodiments can provide general point cloud contents such as autonomous driving services.

[0041] The point cloud data transmitting method, point cloud data transmitting device, point cloud data receiving method and point cloud data receiving device according to the embodiments can perform spatial adaptive segmentation of point cloud data for independent encoding and decoding of point cloud data, thereby improving parallel processing and providing scalability.

[0042] According to the implementation manner, the point cloud data sending method, the point cloud data sending device, the point cloud data receiving method and the point cloud data receiving device can perform encoding and decoding by dividing the point cloud data into blocks and / or slices, and signaling the necessary data, thereby improving the encoding and decoding performance of the point cloud.

[0043] The point cloud data sending method, point cloud data sending device, point cloud data receiving method and point cloud data receiving device according to the embodiment can support a method of splitting point cloud data into LPU / PU as prediction units in consideration of the characteristics of the content. Therefore, the compression technology based on inter-frame prediction through reference frames can be applied to point clouds captured by LiDAR and having multiple frames. Thus, the area that can be predicted by motion vectors can be expanded so that no additional calculation is required. Therefore, the time required to encode point cloud data can be reduced.

[0044] According to the point cloud data sending method, point cloud data sending device, point cloud data receiving method and point cloud data receiving device of the embodiment, block size information can be configured based on the characteristics of the point cloud content, thereby allowing the point cloud data to be split into one or more prediction units (e.g., LPU or PU) in various forms according to the configured block size information. In addition, according to the present disclosure, it can be determined whether to apply a global motion vector and / or a local motion vector for each split prediction unit, and the geometric information can be compressed based on the determined result. Therefore, the size of the geometric information bitstream can be reduced, thereby efficiently supporting services such as real-time capture / compression / transmission / reconstruction / playback of point cloud data. BRIEF DESCRIPTION OF THE DRAWINGS

[0045] The accompanying drawings are included to provide a further understanding of the present disclosure and are incorporated in and constitute a part of this application, illustrate embodiments of the present disclosure, and together with the description serve to explain the principles of the present disclosure. In the drawings:

[0046] Figure 1 An exemplary point cloud content providing system according to an embodiment is shown;

[0047] Figure 2 is a block diagram illustrating a point cloud content providing operation according to an embodiment;

[0048] Figure 3 An exemplary point cloud encoder according to an embodiment is illustrated;

[0049] Figure 4 shows examples of octrees and occupancy codes according to an embodiment;

[0050] Figure 5 illustrates an example of point configuration in each LOD according to an embodiment;

[0051] Figure 6 illustrates an example of point configuration in each LOD according to an embodiment;

[0052] Figure 7 A point cloud decoder according to an embodiment is illustrated;

[0053] Figure 8 An exemplary transmitting device according to an embodiment is illustrated;

[0054] Figure 9 An exemplary receiving device according to an embodiment is illustrated;

[0055] Figure 10 An exemplary structure that can be operated in conjunction with a point cloud data transmitting / receiving method / apparatus according to an embodiment is illustrated;

[0056] Figure 11 (a) and Figure 11 (b) is a diagram illustrating an example of a rotational LiDAR learning model according to an embodiment;

[0057] Figure 12 (a) and Figure 12 (b) is a diagram illustrating an example of comparing the lengths of arcs according to the same azimuth angle around the center of a vehicle according to an embodiment;

[0058] Figure 13 is a diagram illustrating an example of radius-based LPU splitting and motion possibilities according to an embodiment;

[0059] Figure 14 illustrates a specific example of LPU splitting of point cloud data performed based on radius according to an embodiment;

[0060] Figure 15 is a diagram illustrating an example of PU splitting according to an embodiment;

[0061] Figure 16 is a diagram illustrating another example of LPU / PU splitting according to an embodiment;

[0062] Figure 17 is a diagram illustrating yet another example of LPU / PU splitting according to an embodiment;

[0063] Figure 18 is a diagram illustrating still another example of LPU / PU splitting according to an embodiment;

[0064] Figure 19 is a diagram illustrating another exemplary point cloud transmitting device according to an embodiment;

[0065] Figure 20 is a diagram illustrating exemplary operations of a geometry encoder and an attribute encoder according to an embodiment;

[0066] Figure 21 is a block diagram illustrating an exemplary geometric coding method based on LPU / PU splitting according to an embodiment;

[0067] Figure 22 is a diagram illustrating another exemplary point cloud receiving device according to an embodiment;

[0068] Figure 23 is a diagram illustrating exemplary operations of a geometry decoder and an attribute decoder according to an embodiment;

[0069] Figure 24 is a block diagram illustrating an exemplary geometric decoding method based on LPU / PU splitting according to an embodiment;

[0070] Figure 25 An exemplary bitstream structure for point cloud data transmission / reception according to an embodiment is illustrated;

[0071] Figure 26 shows a syntax structure of a geometry parameter set according to one embodiment of the present disclosure;

[0072] Figure 27 shows the syntax structure of a patch parameter set according to one embodiment of the present disclosure;

[0073] Figure 28 The grammatical structure of a geometry slice header according to one embodiment of the present disclosure is shown;

[0074] Figure 29 The grammatical structure of the geometry PU header according to another embodiment of the present disclosure is shown;

[0075] Figure 30 is a flowchart illustrating an exemplary method of transmitting point cloud data according to an embodiment; and

[0076] Figure 31 A flow chart illustrating an exemplary method of receiving point cloud data according to an implementation is shown. DETAILED DESCRIPTION

[0077] A description will now be given in detail according to the exemplary embodiments disclosed herein with reference to the accompanying drawings. For the purpose of brief description with reference to the accompanying drawings, the same or equivalent components may be provided with the same reference numerals, and their description will not be repeated. It should be noted that the following examples are only used to implement the present disclosure and do not limit the scope of the present disclosure. Based on the detailed description and examples of the present disclosure, the content that can be easily inferred by a technician in the technical field to which the present disclosure belongs should be interpreted as being within the scope of the present disclosure.

[0078] The detailed description in this specification should be interpreted in all aspects as illustrative rather than restrictive. The scope of the present disclosure should be determined by the appended claims and their legal equivalents, and all changes within the meaning and equivalency range of the appended claims are intended to be embraced therein.

[0079] Reference will now be made in detail to the preferred embodiments of the present disclosure, examples of which are illustrated in the accompanying drawings. The detailed description given below with reference to the accompanying drawings is intended to illustrate exemplary embodiments of the present disclosure, rather than to show the 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. + Although most of the terms used in this specification are selected from common terms widely used in the art, some terms are arbitrarily selected by the applicant and their meanings are described in detail in the following description as needed. Therefore, the present disclosure should be understood based on the intended meaning of the terms rather than their simple names or meanings. In addition, the following drawings and detailed descriptions should not be interpreted as being limited to the specifically described embodiments, but should be interpreted as including equivalents or replacements of the embodiments described in the drawings and detailed descriptions.

[0080] Figure 1 An exemplary point cloud content providing system according to an embodiment is shown.

[0081] Figure 1 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 can transmit and receive point cloud data via wired or wireless communication.

[0082] According to an embodiment, the point cloud data sending device 10000 can obtain and process point cloud video (or point cloud content) and send it. According to an embodiment, the sending 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 sending device 10000 may include a device configured to communicate with a base station and / or other wireless devices using a radio access technology (e.g., 5G new RAT (NR), long term evolution (LTE)), a robot, a vehicle, an AR / VR / XR device, a portable device, a home appliance, an Internet of Things (IoT) device, and an AI device / server.

[0083] According to the implementation manner, the sending device 10000 includes a point cloud video acquisition unit 10001, a point cloud video encoder 10002 and / or a transmitter (or communication module) 10003.

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

[0085] The point cloud video encoder 10002 according to the 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 the 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 the embodiment is not limited to the above-mentioned embodiment. The point cloud video encoder 10002 may output a bit stream containing the encoded point cloud video data. The bit stream may include not only the encoded point cloud video data, but also signaling information related to the encoding of the point cloud video data.

[0086] The transmitter 10003 according to the embodiment transmits a bitstream containing encoded point cloud video data. The bitstream according to the embodiment is encapsulated in a file or a fragment (e.g., a stream fragment) and is transmitted via various networks such as a broadcast network and / or a broadband network. Although not shown in the figure, the transmitting device 10000 may include a packager (or a package module) configured to perform a packaging operation. According to an embodiment, the packager may be included in the transmitter 10003. According to an embodiment, the file or fragment may be sent to the receiving device 10004 via a network, or stored in a digital storage medium (e.g., USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc.). The transmitter 10003 according to the embodiment can communicate with the receiving device 10004 (or the receiver 10005) via a 4G, 5G, 6G or other network by wire / wireless communication. In addition, the transmitter may perform necessary data processing operations according to the network system (e.g., a 4G, 5G or 6G communication network system). The transmitting device 10000 may transmit the encapsulated data in an on-demand manner.

[0087] The receiving device 10004 according to an embodiment 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 a device configured to communicate with a base station and / or other wireless devices using a radio access technology (e.g., 5G New RAT (NR), Long Term Evolution (LTE)), a robot, a vehicle, an AR / VR / XR device, a portable device, a home appliance, an Internet of Things (IoT) device, and an AI device / server.

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

[0089] The point cloud video decoder 10006 decodes the bitstream containing the 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 (for example, in 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). The point cloud decompression encoding includes G-PCC encoding.

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

[0091] The arrow indicated by the dotted line in the figure represents the transmission path of the feedback information obtained by the receiving device 10004. Feedback information is information that reflects the interactivity with the user who consumes the point cloud content, and includes information about the user (e.g., head orientation information, viewport information, etc.). Specifically, when the point cloud content is content for a service that requires interaction with the user (e.g., self-driving service, etc.), the feedback information may be provided to the content sender (e.g., sending device 10000) and / or the service provider. Depending on the embodiment, the feedback information may be used in the receiving device 10004 and the sending device 10000, or may not be provided.

[0092] The head orientation information according to the embodiment may represent information about the position, orientation, angle and movement of the user's head. The receiving device 10004 according to the embodiment may calculate the viewport information based on the head orientation information. The viewport information is information about the area of ​​the point cloud video that the user is watching (that is, the area that the user is currently watching). That is, the viewport information is information about the area that the user is currently watching in the point cloud video. In other words, the viewport or viewport area may represent the area that the user is watching in the point cloud video. The viewpoint is the point that the user is watching in the point cloud video, and may represent the center point of the viewport area. That is, the viewport is an area centered on the viewpoint, and the size and shape of the area may be determined by the field of view (FOV). Therefore, the receiving device 10004 may extract the viewport information based on the vertical or horizontal FOV supported by the device and the head orientation information. In addition, the receiving device 10004 may perform gaze analysis based on the head orientation information and / or the viewport information to determine the way the user consumes the point cloud video, the area that the user is looking at in the point cloud video, and the gaze time. According to an embodiment, the receiving device 10004 may send feedback information including the gaze analysis result to the sending device 10000. According to an embodiment, a device such as a VR / XR / AR / MR display may extract a viewport area based on the position / orientation of the user's head and the vertical or horizontal FOV supported by the device. According to an embodiment, the head orientation information and the viewport information may be referred to as feedback information, signaling information, or metadata.

[0093] According to an embodiment, feedback information may be obtained during rendering and / or display. The feedback information may be obtained by one or more sensors included in the receiving device 10004. According to an embodiment, the feedback information may be ensured by the renderer 10007 or a separate external element (or device, component, etc.). Figure 1 The dotted line in represents the process of sending feedback information ensured by the renderer 10007. Feedback information can not only be sent to the sending side, but also be consumed on the receiving side. That is, the point cloud content providing system can process (encode / decode / render) point cloud data based on the feedback information. For example, the point cloud video decoder 10006 and the renderer 10007 can prioritize decoding and rendering of point cloud videos only for the area currently viewed by the user based on the feedback information (i.e., head orientation information and / or viewport information).

[0094] In addition, the receiving device 10004 may send feedback information to the sending device 10000. The sending device 10000 (or the point cloud video data encoder 10002) may perform an encoding operation based on the feedback information. Therefore, the point cloud content providing system may efficiently process necessary data (e.g., point cloud data corresponding to the user's head 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.

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

[0096] According to the implementation mode Figure 1 The point cloud data processed in the point cloud content providing system (through a series of processes of acquisition / encoding / transmission / decoding / rendering) may be referred to as point cloud content data or point cloud video data. According to an embodiment, point cloud content data may be used as a concept covering metadata or signaling information related to point cloud data.

[0097] Figure 1 The elements of the point cloud content providing system shown may be implemented by hardware, software, a processor and / or a combination thereof.

[0098] Figure 2 is a block diagram illustrating point cloud content providing operations according to an embodiment.

[0099] Figure 2 The block diagram shows Figure 1 The operation of the point cloud content providing system described in . As described above, the point cloud content providing system can process point cloud data based on point cloud compression coding (e.g., G-PCC).

[0100] According to an embodiment, a point cloud content providing system (e.g., a point cloud sending device 10000 or a point cloud video acquisition unit 10001) can acquire a point cloud video (20000). The point cloud video is represented by a point cloud belonging to a coordinate system for expressing a 3D space. According to an embodiment, a point cloud video may include a Ply (Polygon file format or Stanford Triangle format) file. When a 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 a point. The position of each point may be represented by a parameter (e.g., the value 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 attributes of the point (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 an embodiment, geometry may be referred to as position, geometry information, geometry data, position information, position data, etc., and attribute may be referred to as attribute, attribute information, attribute data, etc. The point cloud content providing system (e.g., the point cloud transmitting device 10000 or the point cloud video acquiring unit 10001) may obtain point cloud data from information related to a point cloud video acquiring process (e.g., depth information, color information, etc.).

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

[0102] According to the embodiment, the point cloud content providing system (eg, the transmitting device 10000 or the transmitter 10003) may transmit the encoded point cloud data (20002). Figure 1As shown, the encoded point cloud data can be represented by a geometry bitstream and an attribute bitstream. In addition, the encoded point cloud data can be sent in the form of a bitstream together with signaling information related to the encoding of the point cloud data (e.g., signaling information related to geometry encoding and attribute encoding). The point cloud content providing system can encapsulate the bitstream carrying the encoded point cloud data and send it in the form of a file or a fragment.

[0103] The point cloud content providing system (eg, receiving device 10004 or receiver 10005) according to the embodiment may receive a bit stream containing encoded point cloud data. In addition, the point cloud content providing system (eg, receiving device 10004 or receiver 10005) may demultiplex the bit stream.

[0104] The point cloud content providing system (e.g., the receiving device 10004 or the point cloud video decoder 10005) may decode the encoded point cloud data (e.g., geometry bitstream, attribute bitstream) sent in the bitstream. The point cloud content providing system (e.g., the receiving device 10004 or the point cloud video decoder 10005) may decode the point cloud video data based on the signaling information related to the encoding of the point cloud video data contained in the bitstream. The point cloud content providing system (e.g., the receiving device 10004 or the point cloud video decoder 10005) may decode the geometry bitstream to reconstruct the position (geometry) of the point. The point cloud content providing system may reconstruct the attributes of the point by decoding the attribute bitstream based on the reconstructed geometry. The point cloud content providing system (e.g., the receiving device 10004 or the point cloud video decoder 10005) may reconstruct the point cloud video based on the position according to the reconstructed geometry and the decoded attributes.

[0105] According to an embodiment, a point cloud content providing system (e.g., receiving device 10004 or renderer 10007) may render decoded point cloud data (20004). The point cloud content providing system (e.g., receiving device 10004 or renderer 10007) may use various rendering methods to render the geometry and attributes decoded by the decoding process. Points in the point cloud content may 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 the user through a display (e.g., a VR / AR display, a general display, etc.).

[0106] The point cloud content providing system (e.g., receiving device 10004) according to the embodiment may obtain feedback information (20005). The point cloud content providing system may encode and / or decode the point cloud data based on the feedback information. Feedback Information and Operations of the Point Cloud Content Providing System According to the Embodiment and Reference Figure 1 The feedback information and operations described are the same, so their detailed description is omitted.

[0107] Figure 3 An exemplary point cloud encoder according to an implementation is shown.

[0108] Figure 3 Show Figure 1 An example of a point cloud video encoder 10002. The point cloud encoder reconstructs and encodes point cloud data (e.g., the location and / or attributes of the points) to adjust the quality of the point cloud content (e.g., lossless, lossy, or near-lossless) according to network conditions or applications. When the total size of the point cloud content is large (e.g., 60 Gbps of point cloud content given 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 may reconstruct the point cloud content based on the maximum target bit rate to provide the point cloud content according to the network environment, etc.

[0109] As reference Figure 1 and Figure 2 As described, the point cloud encoder can perform geometry encoding and attribute encoding. Geometry encoding is performed before attribute encoding.

[0110] The point cloud video encoder according to the embodiment includes a coordinate transformer (transform coordinates) 30000, a quantizer (quantization and removal of points (voxelization)) 30001, an octree analyzer (analysis of octree) 30002, a surface approximation analyzer (analysis of surface approximation) 30003, an arithmetic encoder (arithmetic coding) 30004, a geometry reconstructor (reconstruction of geometry) 30005, a color transformer (transformation of color) 30006, an attribute transformer (transformation of attributes) 30007, a RAHT transformer 30008, a LOD generator (generated LOD) 30009, a lifting transformer (lifting) 30010, a coefficient quantizer (quantization of coefficients) 30011 and / or an arithmetic encoder (arithmetic coding) 30012. Figure 3 In the point cloud encoder of FIG. 30000, the coordinate transformer 30001, the quantizer 30002, the surface approximation analyzer 30003, the arithmetic encoder 30004 and the geometry reconstructor 30005 can be grouped together and referred to as a geometry encoder. The color transformer 30006, the attribute transformer 30007, the RAHT transformer 30008, the LOD generator 30009, the lifting transformer 30010, the coefficient quantizer 30011 and / or the arithmetic encoder 30012 can be grouped together and referred to as an attribute encoder.

[0111] The coordinate transformer 30000, the quantizer 30001, the octree analyzer 30002, the surface approximation analyzer 30003, the arithmetic encoder 30004 and the geometry reconstructor 30005 may perform geometry coding. The geometry coding according to the embodiment may include octree geometry coding, prediction tree geometry coding, direct coding, triplet geometry coding and entropy coding. Direct coding and triplet geometry coding are applied selectively or in combination. The geometry coding is not limited to the above examples.

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

[0113] The quantizer 30001 according to the embodiment quantizes the geometry. For example, the quantizer 30001 may quantize the 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: the difference between the minimum position value and the position value of each point is multiplied by a preset quantization scaling value, and then the nearest integer value is found by rounding the value obtained by the multiplication. Therefore, 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 point. As in the case of a pixel (the smallest unit containing 2D image / video information), a point of a point cloud content (or 3D point cloud video) according to the embodiment may be included in one or more voxels. As a composite of volume and pixel, the term voxel refers to a 3D cubic space generated when a 3D space is divided into units (unit = 1.0) based on an axis representing the 3D space (e.g., X-axis, Y-axis, and Z-axis). The quantizer 30001 may match a point group in a 3D space with a voxel. According to an embodiment, a voxel may include only one point. According to an embodiment, a voxel may include one or more points. In order to represent a voxel as a point, the position of the center of the voxel may be set based on the position of one or more points included in the voxel. In this case, the properties of all positions included in a voxel may be combined and assigned to the voxel.

[0114] The octree analyzer 30002 according to the embodiment performs octree geometry encoding (or octree encoding) to present voxels in an octree structure. The octree structure represents points matched to voxels based on an octal tree structure.

[0115] The surface approximation analyzer 30003 according to an embodiment may analyze and approximate an octree. The octree analysis and approximation according to an embodiment is a process of analyzing a region including a plurality of points to efficiently provide an octree and voxelization.

[0116] The arithmetic encoder 30004 according to the embodiment performs entropy coding on the octree and / or the approximate octree. For example, the coding scheme includes arithmetic coding. As a result of the coding, a geometry bitstream is generated.

[0117] The color converter 30006, the attribute converter 30007, the RAHT converter 30008, the LOD generator 30009, the lifting converter 30010, the coefficient quantizer 30011 and / or the arithmetic encoder 30012 perform attribute encoding. As described above, a point may have one or more attributes. The attribute encoding according to the embodiment is also applied to the attributes of a point. However, when the 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 transform encoding, attribute transform encoding, regional adaptive hierarchical transform (RAHT) encoding, interpolation-based hierarchical nearest neighbor prediction (prediction transform) encoding, and interpolation-based hierarchical nearest neighbor prediction (lifting transform) encoding with an update / lifting step. Depending on the point cloud content, the above-mentioned RAHT encoding, prediction transform encoding, and lifting transform encoding may be selectively used, or a combination of one or more encoding schemes may be used. The attribute encoding according to the embodiment is not limited to the above examples.

[0118] The color converter 30006 according to an embodiment performs color conversion encoding to convert the color value (or texture) included in the attribute. For example, the color converter 30006 can convert the format of the color information (e.g., from RGB to YCbCr). Optionally, the operation of the color converter 30006 according to an embodiment can be applied according to the color value included in the attribute.

[0119] The geometry reconstructor 30005 according to an embodiment reconstructs (decompresses) an octree and / or an approximate octree. The geometry reconstructor 30005 reconstructs an octree / voxel based on the result of analyzing the point distribution. The reconstructed octree / voxel may be referred to as a reconstructed geometry (restored geometry).

[0120] The attribute transformer 30007 according to the embodiment performs attribute transformation to transform the attribute based on the reconstructed geometry and / or the position where the geometry encoding is not performed. As described above, since the attribute depends on the geometry, the attribute transformer 30007 can transform the attribute based on the reconstructed geometry information. For example, based on the position value of the point included in the voxel, the attribute transformer 30007 can transform the attribute of the point at the position. As described above, when the center position of the voxel is set based on the position of one or more points included in the voxel, the attribute transformer 30007 transforms the attribute of one or more points. When triplet geometry encoding is performed, the attribute transformer 30007 can transform the attribute based on the triplet geometry encoding.

[0121] The attribute converter 30007 can perform attribute conversion by calculating the average of the attributes or attribute values ​​(e.g., the color or reflectivity of each point) of the neighboring points within a specific position / radius from the center position (or position value) of each voxel. The attribute converter 30007 can apply weights according to the distance from the center to each point when calculating the average. Therefore, each voxel has a position and a calculated attribute (or attribute value).

[0122] The attribute converter 30007 can search for neighboring points within a specific position / radius from the center position of each voxel based on a KD tree or a Morton code. The KD tree is a binary search tree and supports a data structure capable of managing points based on position, so that a nearest neighbor search (NNS) can be performed quickly. The Morton code is generated by presenting the coordinates (e.g., (x, y, z)) representing the 3D positions of all points as bit values ​​and mixing the bits. For example, when the coordinates representing the point position are (5, 9, 1), the bit values ​​of the coordinates are (0101, 1001, 0001). Mixing the bit values ​​in the order of z, y, and x according to the bit index produces 010001000111. This value is represented as a decimal number 1095. That is, the Morton code value of the point with coordinates (5, 9, 1) is 1095. The attribute converter 30007 can sort the points based on the Morton code value and perform NNS through a depth-first traversal process. After the attribute transform operation, KD tree or Morton code is used when NNS is needed in another transform process for attribute encoding.

[0123] As shown, the transformed attributes are input to the RAHT transformer 30008 and / or the LOD generator 30009.

[0124] The RAHT transformer 30008 according to an embodiment performs RAHT encoding for predicting attribute information based on the reconstructed geometric information. For example, the RAHT transformer 30008 may predict attribute information of a higher-level node in the octree based on attribute information associated with a lower-level node in the octree.

[0125] The LOD generator 30009 according to an embodiment generates a level of detail (LOD) to perform predictive transform coding. The LOD according to an embodiment is the degree of detail of the point cloud content. As the LOD value decreases, the details of the point cloud content are degraded. As the LOD value increases, the details of the point cloud content are enhanced. Points can be classified by LOD.

[0126] The lifting transformer 30010 according to an embodiment performs lifting transform coding that transforms point cloud attributes based on weights. As described above, lifting transform coding can be optionally applied.

[0127] The coefficient quantizer 30011 according to the embodiment quantizes the attribute of the attribute encoding based on the coefficient.

[0128] The arithmetic encoder 30012 according to the embodiment encodes quantized properties based on arithmetic coding.

[0129] Although not shown in the figure, Figure 3 The elements of the point cloud encoder may 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. The one or more processors may execute the above Figure 3 At least one of the operations and / or functions of the elements of the point cloud encoder. In addition, one or more processors may be operable or executable to perform Figure 3 The software program and / or instruction set for the operation and / or function of the elements of the point cloud encoder. According to the embodiment, one or more memories 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).

[0130] Figure 4 Examples of octrees and occupancy codes are shown according to an embodiment.

[0131] As reference Figures 1 to 3 As described, the point cloud content providing system (point cloud video encoder 10002) or the point cloud encoder (e.g., octree analyzer 30002) performs octree geometry encoding (or octree encoding) based on the octree structure to efficiently manage the area and / or position of voxels.

[0132] Figure 4 The upper part of FIG. 1 shows the octree structure. The 3D space of the point cloud content according to the embodiment is represented by the axes (eg, X-axis, Y-axis, and Z-axis) of the coordinate system. d ,2 d ,2 d ) to create an octree structure. Here, 2d can be set to the value of the smallest bounding box that surrounds all points of 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 formula. In the following formula, (x int n ,y int n ,z int n ) represents the position (or position value) of the quantized point.

[0133]

[0134] like Figure 4As shown in the middle of the upper part of , the entire 3D space can be divided into eight spaces according to the partition. Each divided space is represented by a cube with six faces. Figure 4 As shown in the upper right part of , each of the eight spaces is divided again based on the axis of the coordinate system (e.g., X-axis, Y-axis, and Z-axis). Therefore, each space is divided into eight smaller spaces. The divided smaller spaces are also represented by cubes with six faces. This division scheme is applied until the leaf nodes of the octree become voxels.

[0135] Figure 4 The lower part shows the octree occupancy code. The occupancy code of the octree is generated to indicate whether each of the eight divided spaces generated by dividing one space contains at least one point. Therefore, a single occupancy code is represented by eight child nodes. Each child node represents the occupancy of the divided space, and the 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 the child node contains at least one point, the node is assigned a value of 1. When the space corresponding to the child node does not contain a point (the space is empty), the node is assigned a value of 0. Since Figure 4 The occupancy code shown is 00100001, thus indicating that the spaces corresponding to the third and eighth subnodes among the eight subnodes each contain at least one point. As shown in the figure, each of the third and eighth subnodes has eight subnodes, and the subnodes are represented by 8-bit occupancy codes. The accompanying drawings show that the occupancy code of the third subnode is 10000111, and the occupancy code of the eighth subnode is 01001111. The point cloud encoder (e.g., arithmetic encoder 30004) according to an embodiment may perform entropy encoding on the occupancy code. In order to increase compression efficiency, the point cloud encoder may perform intra / inter encoding on the occupancy code. The receiving device (e.g., receiving device 10004 or point cloud video decoder 10006) according to an embodiment reconstructs the occupancy code based on the occupancy code.

[0136] According to an embodiment, a point cloud encoder (e.g., Figure 4 The point cloud encoder or octree analyzer 30002) can perform voxelization and octree encoding to store point locations. However, points are not always evenly distributed in the 3D space, so there may be specific areas where fewer points exist. Therefore, performing voxelization on the entire 3D space is inefficient. For example, when a specific area contains few points, voxelization does not need to be performed in the specific area.

[0137] Therefore, for the above-mentioned specific area (or nodes other than the leaf nodes of the octree), the point cloud encoder according to the embodiment may skip voxelization and perform direct encoding to directly encode the point positions included in the specific area. The coordinates of the directly encoded points according to the embodiment are called direct coding mode (DCM). The point cloud encoder according to the embodiment may also perform triplet geometry encoding based on the surface model, which is to reconstruct the point positions in the specific area (or node) based on voxels. Triplet 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 triplet geometry encoding according to the embodiment can be performed selectively. In addition, direct encoding and triplet geometry encoding according to the embodiment can be performed in combination with octree geometry encoding (or octree encoding).

[0138] In order to perform direct encoding, the option of using direct mode to apply direct encoding should be enabled. The node to which direct encoding is to be applied is not a leaf node, and there should be points less than a threshold value within a specific node. In addition, the total number of points to which direct encoding is to be 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 position (or position value).

[0139] A point cloud encoder (e.g., surface approximation analyzer 30003) according to an embodiment may determine a specific level of the octree (a level less than the depth d of the octree), and may use a surface model starting from this level to perform triplet geometry encoding to reconstruct point positions in the node area based on voxels (triplet mode). A point cloud encoder according to an embodiment may specify a level to which triplet geometry encoding is to be applied. For example, when a specific level is equal to the depth of the octree, the point cloud encoder does not operate in triplet mode. In other words, a point cloud encoder according to an embodiment may operate in triplet mode only when the specified level is less than the depth value of the octree. A 3D cubic area of ​​a node at a specified level according to an embodiment is referred to as a block. A block may include one or more voxels. A block or voxel may correspond to a block. Geometry is represented as a surface within each block. A surface according to an embodiment may intersect each edge of a block at most once.

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

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

[0142] The vertices located at the edges of the block determine the surface passing through the block. The surface according to an embodiment is a non-planar polygon. In the triangle reconstruction process, the surface represented by the triangle is reconstructed based on the starting point of the edge, the direction vector of the edge and the position value of the vertex. The triangle reconstruction process is performed by i) calculating the centroid value of each vertex, ii) subtracting the center value from each vertex value, and iii) estimating the sum of the squares of the values ​​obtained by subtraction.

[0143] ① ② ③

[0144] Estimate the minimum value of the sum, and perform the projection process according to the axis with the minimum value. For example, when the element x is the smallest, each vertex is projected on the x-axis relative to the center of the block and projected on the (y,z) plane. When the value obtained by the projection on 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 table shows the vertex combination for creating triangles according to the number of vertices. The vertices are sorted from 1 to n. Table 1 below shows that for four vertices, two triangles can be constructed according to the vertex combination. The first triangle can be composed of vertices 1, 2, and 3 among the sorted vertices, and the second triangle can be composed of vertices 3, 4, and 1 among the sorted vertices.

[0145] [Table 1]

[0146] [Table 1] Triangles formed from vertices sorted in 1,…,n order

[0147] n Triangle 3 (1,2,3) 4 (1,2,3),(3,4,1) 5 (1,2,3),(3,4,5),(5,1,3) 6 (1,2,3),(3,4,5),(5,6,1),(1,3,5) 7 (1,2,3),(3,4,5),(5,6,7),(7,1,3),(3,5,7) 8 (1,2,3),(3,4,5),(5,6,7),(7,8,1),(1,3,5),(5,7,1) 9 (1,2,3),(3,4,5),(5,6,7),(7,8,9),(9,1,3),(3,5,7),(7,9,3) 10 (1,2,3),(3,4,5),(5,6,7),(7,8,9),(9,10,1),(1,3,5),(5,7,9),(9,1,5) 11 (1,2,3),(3,4,5),(5,6,7),(7,8,9),(9,10,11),(11,1,3),(3,5,7),(7,9,11),(11,3,7) 12 (1,2,3),(3,4,5),(5,6,7),(7,8,9),(9,10,11),(11,12,1),(1,3,5),(5,7,9),(9,11,1),(1,5,9)

[0148] An upsampling process is performed to add points in the middle along the edges of the triangle, and voxelization is performed. The added points are generated based on the upsampling factor and the width of the block. The added points are called refined vertices. The point cloud encoder according to an embodiment may voxelize the refined vertices. In addition, the point cloud encoder may perform attribute encoding based on the voxelized position (or position value).

[0149] Figure 5 An example of point configuration in each LOD according to an embodiment is shown.

[0150] As reference Figures 1 to 4 As described, the encoded geometry is reconstructed (decompressed) before performing attribute encoding. When direct encoding is applied, the geometry reconstruction operation may include changing the placement of the directly encoded points (e.g., placing the directly encoded points in front of the point cloud data). When triplet geometry encoding is applied, the geometry reconstruction process is performed by triangle reconstruction, upsampling, and voxelization. Since the attributes depend on the geometry, attribute encoding is performed based on the reconstructed geometry.

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

[0152] Figure 6 An example of point configuration for each LOD is shown according to an embodiment.

[0153] As reference Figures 1 to 5 As described, the point cloud content providing system or point cloud encoder (eg, point cloud video encoder 10002, Figure 3 The point cloud encoder or LOD generator 30009) can generate LOD. LOD is generated by reorganizing points into a set of refinement levels according to the set LOD distance value (or Euclidean distance set). The LOD generation process is performed not only by the point cloud encoder, but also by the point cloud decoder.

[0154] Figure 6 The upper part of shows examples of points (P0 to P9) of point cloud content distributed in 3D space. Figure 6 In , the original order represents the order of points P0 to P9 before LOD generation. Figure 6 In the LOD-based order, the order of points generated according to the LOD is shown. Points are reorganized by LOD. In addition, a high LOD contains points belonging to a lower LOD. Figure 6 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.

[0155] As reference Figure 3 As described, the point cloud encoder according to the embodiment may selectively or in combination perform prediction transform coding, lifting transform coding, and RAHT transform coding.

[0156] The point cloud encoder according to the embodiment may generate a predictor for a point to perform predictive transform coding for setting a prediction attribute (or a prediction attribute value) of each point. That is, N predictors may be generated for N points. The predictor according to the embodiment may calculate a weight (=1 / distance) based on the LOD value of each point, index information about neighboring points that exist within a set distance of each LOD, and the distance to the neighboring point.

[0157] The predicted attribute (or attribute value) according to the embodiment is set to the average of the values ​​obtained by multiplying the attribute (or attribute value) (e.g., color, reflectivity, etc.) of the neighboring points set in the predictor of each point by the weight (or weight value) calculated based on the distance to each neighboring point. The point cloud encoder (e.g., coefficient quantizer 30011) according to the embodiment can quantize and inverse quantize the residual (which can be called 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 show the quantization process.

[0158] [Table 2]

[0159] int PCCQuantization(int value, int quantStep) { if (value >= 0) { return floor(value / quantStep + 1.0 / 3.0); } else { return -floor(-value / quantStep + 1.0 / 3.0); } }

[0160] [Table 3]

[0161] int PCCInverseQuantization(int value, int quantStep) { if (quantStep == 0) { return value; } else { return value * quantStep; } }

[0162] When the predictor of each point has a neighboring point, the point cloud encoder (e.g., the arithmetic encoder 30012) according to the embodiment may perform entropy encoding on the quantized and inverse quantized residual values ​​as described above. When the predictor of each point has no neighboring points, the point cloud encoder (e.g., the arithmetic encoder 30012) according to the embodiment may perform entropy encoding on the attributes of the corresponding points without performing the above operation. The point cloud encoder (e.g., the lifting transformer 30010) according to the embodiment may generate a predictor for each point, set the calculated LOD and register the neighboring points in the predictor, and set the weight according to the distance to the neighboring points to perform lifting transform encoding. The lifting transform encoding according to the embodiment is similar to the above-mentioned predictive transform encoding, but the difference is that the weight is cumulatively applied to the attribute value. The process of cumulatively applying weights to the attribute value according to the embodiment is configured as follows.

[0163] 1) Create an array quantized weight (QW) for storing 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 neighbor node registered in the predictor by the weight of the predictor of the current point, and add the values ​​obtained by multiplication.

[0164] 2) Boosting prediction process: The value obtained by multiplying the attribute value of the point by the weight is subtracted from the existing attribute value to calculate the predicted attribute value.

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

[0166] 4) Accumulate the weight calculated by multiplying the weight calculated for all predictors by the weight stored in the QW corresponding to the predictor index with the updateweight array as the index of the neighbor node. Accumulate the value obtained by multiplying the attribute value of the neighbor node index by the calculated weight with the update array.

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

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

[0169] A point cloud encoder according to an embodiment (e.g., RAHT transformer 30008) may perform RAHT transform coding, in which attributes associated with nodes at a lower level in an octree are used to predict attributes of nodes at a higher level. RAHT transform coding is an example of attribute intra-frame coding by scanning backward through an octree. A point cloud encoder according to an embodiment scans the entire area starting from voxels and repeats a merging process of merging voxels into larger blocks at each step until a 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 upper node directly above the empty node.

[0170] The following formula represents the RAHT transformation matrix. In this formula, Represents the average attribute value of voxels at level l. Can be based on and to calculate. and The weight is and

[0171]

[0172] here, Is the low-pass value and is used during the next highest level of merging. represents the high pass coefficient 0000000000. The high pass coefficients of each step are quantized and subjected to entropy coding (e.g., encoded by arithmetic encoder 30012). The weights are calculated as pass and Create the root node as follows.

[0173]

[0174] The values ​​of gDC are also quantized and subjected to entropy decoding like the high-pass coefficients.

[0175] Figure 7 A point cloud decoder according to an embodiment is shown.

[0176] Figure 7 The point cloud decoder shown is an example of a point cloud decoder and can perform a decoding operation, which is Figures 1 to 6 The inverse process of the encoding operation of the point cloud encoder shown.

[0177] As reference Figure 1 and Figure 6 As described, the point cloud decoder can perform geometry decoding and attribute decoding. Geometry decoding is performed before attribute decoding.

[0178] According to an embodiment, a point cloud decoder includes an arithmetic decoder (arithmetic decoding) 7000, an octree synthesizer (synthesized octree) 7001, a surface approximation synthesizer (synthesized surface approximation) 7002 and a geometry reconstructor (reconstructed geometry) 7003, an inverse coordinate transformer (inverse transformed coordinates) 7004, an arithmetic decoder (arithmetic decoding) 7005, an inverse quantizer (inverse quantization) 7006, a RAHT transformer 7007, an LOD generator (generate LOD) 7008, an inverse lifting (inverse lifting) 7009 and / or an inverse color transformer (inverse transformed color) 7010.

[0179] The arithmetic decoder 7000, the octree synthesizer 7001, the surface approximation synthesizer 7002, the geometry reconstructor 7003, and the coordinate inverse transformer 7004 may perform geometry decoding. The geometry decoding according to the embodiment may include direct decoding and triplet geometry decoding. Direct encoding and triplet geometry decoding are selectively applied. The geometry decoding is not limited to the above examples, and as a reference Figures 1 to 6 The inverse process of the geometric encoding described is performed.

[0180] The arithmetic decoder 7000 according to the embodiment decodes the received geometry bitstream based on arithmetic coding. The operation of the arithmetic decoder 7000 corresponds to the inverse process of the arithmetic encoder 30004.

[0181] The octree synthesizer 7001 according to the embodiment may generate an octree by acquiring an occupancy code (or information about the geometry obtained as a result of decoding) from a decoded geometry bitstream. Figures 1 to 6 Describe the configuration in detail.

[0182] When triplet geometry encoding is applied, the surface approximation synthesizer 7002 according to an embodiment may synthesize a surface based on the decoded geometry and / or the generated octree.

[0183] According to an embodiment, the geometry reconstructor 7003 may regenerate the geometry based on the surface and / or the decoded geometry. Figures 1 to 9 As described, direct coding and triplet geometry coding are selectively applied. Therefore, the geometry reconstructor 7003 directly imports the position information about the points to which direct coding is applied and adds them. When triplet geometry coding 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 Figure 6 Those described are the same, so their description is omitted. The reconstructed geometry may include a point cloud screen or frame that does not contain attributes.

[0184] The coordinate inverse transformer 7004 according to an embodiment may acquire a point position by transforming the coordinates based on the reconstructed geometry.

[0185] The arithmetic decoder 7005, the inverse quantizer 7006, the RAHT transformer 7007, the LOD generator 7008, the inverse lifter 7009 and / or the color inverse transformer 7010 may perform attribute decoding. Attribute decoding according to an embodiment includes regional adaptive hierarchical transform (RAHT) decoding, hierarchical nearest neighbor prediction (prediction transform) decoding based on interpolation, and hierarchical nearest neighbor prediction (lifting transform) decoding based on interpolation with an update / lifting step. The above three decoding schemes may be selectively used, or a combination of one or more decoding schemes may be used. Attribute decoding according to an embodiment is not limited to the above examples.

[0186] The arithmetic decoder 7005 according to the embodiment decodes the attribute bit stream through arithmetic coding.

[0187] The inverse quantizer 7006 according to the embodiment inversely quantizes information about the decoded attribute bitstream or the attribute obtained as a result of decoding, and outputs the inversely quantized attribute (or attribute value). The inverse quantization may be selectively applied based on the attribute encoding of the point cloud encoder.

[0188] According to an embodiment, the RAHT transformer 7007, the LOD generator 7008 and / or the inverse lifter 7009 may process the reconstructed geometry and inverse quantized attributes. As described above, the RAHT transformer 7007, the LOD generator 7008 and / or the inverse lifter 7009 may selectively perform a decoding operation corresponding to the encoding of the point cloud encoder.

[0189] The color inverse transformer 7010 according to an embodiment performs inverse transform encoding to inversely transform a color value (or texture) included in the decoded attribute. The operation of the color inverse transformer 7010 may be selectively performed based on the operation of the color transformer 30006 of the point cloud encoder.

[0190] Although not shown in the figure, Figure 7 The elements of the point cloud decoder may 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. The one or more processors may execute the above Figure 7 At least one or more of the operations and / or functions of the elements of the point cloud decoder. In addition, one or more processors may be operable or executed to perform Figure 7 A software program and / or instruction set for the operation and / or functionality of the elements of a point cloud decoder.

[0191] Figure 8 A transmitting device according to an embodiment is shown.

[0192] Figure 8 The sending device shown is Figure 1 The sending device 10000 (or Figure 3 Example of a point cloud encoder). Figure 8 The sending device shown can be executed with reference to Figures 1 to 6 The transmitting device according to the embodiment 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-frame / 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 / lifting / RAHT transformation processor 8010, an arithmetic encoder 8011 and / or a transmission processor 8012.

[0193] The data input unit 8000 receives or acquires point cloud data according to an embodiment. The data input unit 8000 may perform the same operation and / or acquisition method as the point cloud video acquisition unit 10001 (or refer to Figure 2 The acquisition process 20000) described above has the same or similar operations and / or acquisition methods.

[0194] The data input unit 8000, the quantization processor 8001, the voxelization processor 8002, the octree occupancy code generator 8003, the surface model processor 8004, the intra / inter coding processor 8005 and the arithmetic encoder 8006 perform geometric coding. Figures 1 to 9 The geometrical encodings described are the same or similar, so their detailed description is omitted.

[0195] The quantization processor 8001 according to an embodiment quantizes geometry (e.g., position values ​​of points). The operation and / or quantization of the quantization processor 8001 is similar to the reference Figure 3 The operation and / or quantization of the quantizer 30001 described above are the same or similar. Figures 1 to 9 Same as those described.

[0196] According to an embodiment, the voxelization processor 8002 voxelizes the quantized position value of the point. The voxelization processor 8002 may perform the same as the reference Figure 3 The operation and / or voxelization process of the quantizer 30001 described above is the same or similar to the operation and / or process described above. Figures 1 to 6 Same as those described.

[0197] The octree occupancy code generator 8003 according to the embodiment performs octree encoding on the voxelized position of the point based on the octree structure. The octree occupancy code generator 8003 may generate an occupancy code. The octree occupancy code generator 8003 may perform the same as the reference code. Figure 3 and Figure 4 The operations and / or methods of the point cloud encoder (or octree analyzer 30002) described herein are the same or similar to the operations and / or methods described herein. Figures 1 to 6 Same as those described.

[0198] According to an embodiment, the surface model processor 8004 may perform triplet geometry encoding based on the surface model to reconstruct the point position in a specific area (or node) based on voxels. Figure 3 The operations and / or methods of the point cloud encoder (e.g., surface approximation analyzer 30003) described above are the same or similar to the operations and / or methods. Figures 1 to 6 Same as those described.

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

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

[0201] The metadata processor 8007 according to an embodiment processes metadata (e.g., set values) about the point cloud data and provides it to necessary processing processes such as geometry coding and / or attribute coding. In addition, the metadata processor 8007 according to an embodiment may generate and / or process signaling information related to geometry coding and / or attribute coding. The signaling information according to an embodiment may be encoded separately from the geometry coding and / or attribute coding. The signaling information according to an embodiment may be interleaved.

[0202] The color conversion processor 8008, the attribute conversion processor 8009, the prediction / lifting / RAHT conversion processor 8010 and the arithmetic encoder 8011 perform attribute encoding. Figures 1 to 6 The attribute codes described are the same or similar, so their detailed description is omitted.

[0203] The color transform processor 8008 according to an embodiment performs color transform encoding to transform the color value included in the attribute. The color transform processor 8008 may perform color transform encoding based on the reconstructed geometry. The reconstructed geometry is compared with the reference Figures 1 to 9 In addition, its execution is the same as that of reference Figure 3 The operations and / or methods of the color converter 30006 described above are the same as or similar to the operations and / or methods described above, and detailed descriptions thereof are omitted.

[0204] The attribute transformation processor 8009 according to an embodiment performs attribute transformation to transform attributes based on reconstructed geometry and / or locations where geometry encoding is not performed. The attribute transformation processor 8009 performs the attribute transformation with reference to Figure 3 The operations and / or methods of the attribute converter 30007 described in the foregoing description are the same as or similar to those of the attribute converter 30007. Detailed description thereof is omitted. The prediction / lifting / RAHT transform processor 8010 according to the embodiment may encode the transformed attribute by any one or a combination of RAHT coding, prediction transform coding, and lifting transform coding. The prediction / lifting / RAHT transform processor 8010 performs the same as or similar to the reference. Figure 3 The operations of the RAHT transformer 30008, the LOD generator 30009 and the lifting transformer 30010 described above are identical or similar to at least one operation. In addition, the prediction transform coding, the lifting transform coding and the RAHT transform coding are similar to the reference Figures 1 to 9 Those described are the same, so their detailed description is omitted.

[0205] The arithmetic encoder 8011 according to the embodiment may encode the encoded attribute based on arithmetic coding. The arithmetic encoder 8011 performs the same or similar operation and / or method as that of the arithmetic encoder 30012.

[0206] The transmission processor 8012 according to the embodiment may send individual bitstreams containing encoded geometry and / or encoded attributes or metadata information, or send a bitstream containing encoded geometry and / or encoded attributes and metadata information. When the encoded geometry and / or encoded attributes and metadata information according to the embodiment are configured as a bitstream, the bitstream may include one or more sub-bitstreams. The bitstream according to the embodiment may include signaling information and slice data, and the signaling information includes a sequence parameter set (SPS) for sequence level signaling, a geometry parameter set (GPS) for geometry information coding signaling, an attribute parameter set (APS) for attribute information coding signaling, and a patch parameter set (TPS) for patch level signaling. Slice data may include information about one or more slices. A slice according to the embodiment may include a geometry bitstream Geom00 and one or more attribute bitstreams Attr00 and Attr10.

[0207] A slice is a sequence of syntactic elements that represents the entirety or a portion of an encoded point cloud frame.

[0208] The TPS according to an embodiment may include information about each of the one or more tiles (e.g., coordinate information and height / size information about a bounding box). The geometry bitstream may include a header and a payload. The header of the geometry bitstream according to an embodiment may include a parameter set identifier (geom_parameter_set_id), a tile identifier (geom_tile_id), and a slice identifier (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 send it to the transmission processor 8012. According to an embodiment, an element that performs geometry encoding and an element that performs attribute encoding may share data / information with each other as indicated by the dotted lines. The transmission processor 8012 according to an embodiment may perform operations and / or transmission methods that are the same or similar to those of the transmitter 10003. Details and References Figure 1 and Figure 2 Those described are the same, so their description is omitted.

[0209] Figure 9 A receiving device according to an embodiment is illustrated.

[0210] Figure 9 The receiving device shown isFigure 1 An example of a receiving device 10004. Figure 9 The receiving device shown can execute and refer to Figures 1 to 8 One or more operations and methods that are the same or similar to those of the described point cloud decoder.

[0211] The receiving device according to the embodiment may include a receiver 9000, a receiving processor 9001, an arithmetic decoder 9002, an octtree reconstruction processor based on an occupancy code 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 / lifting / RAHT inverse transform processor 9009, a color inverse transform processor 9010 and / or a renderer 9011. Each decoding element according to the embodiment may perform an inverse process of the operation of the corresponding encoding element according to the embodiment.

[0212] The receiver 9000 according to the embodiment receives point cloud data. The receiver 9000 may perform the same Figure 1 The operation and / or receiving method of the receiver 10005 is the same as or similar to the operation and / or receiving method of the receiver 10005. The detailed description thereof is omitted.

[0213] The reception processor 9001 according to an embodiment may acquire a geometry bitstream and / or an attribute bitstream from the received data. The reception processor 9001 may be included in the receiver 9000 .

[0214] The arithmetic decoder 9002, the octtree reconstruction processor 9003 based on the occupancy code, the surface model processor 9004, and the inverse quantization processor 9005 may perform geometric decoding. Figures 1 to 10 The geometric decoding described is the same or similar, so its detailed description is omitted.

[0215] The arithmetic decoder 9002 according to the embodiment may decode the geometry bitstream based on arithmetic coding. The arithmetic decoder 9002 performs the same or similar operations and / or encoding as those of the arithmetic decoder 7000.

[0216] The octree reconstruction processor 9003 based on the occupancy code according to the embodiment can reconstruct the octree by obtaining the occupancy code from the decoded geometry bitstream (or information about the geometry obtained as a result of decoding). The octree reconstruction processor 9003 based on the occupancy code performs the same or similar operations and / or methods as the operations of the octree synthesizer 7001 and / or the octree generation method. When triplet geometry coding is applied, the surface model processor 9004 according to the embodiment can perform triplet geometry decoding and related geometry reconstruction (e.g., triangle reconstruction, upsampling, voxelization) based on the surface model method. The surface model processor 9004 performs the same or similar operations as the operations of the surface approximation synthesizer 7002 and / or the geometry reconstructor 7003.

[0217] The inverse quantization processor 9005 according to an embodiment may inversely quantize the decoded geometry.

[0218] According to an embodiment, the metadata parser 9006 may parse metadata (eg, setting values) contained in the received point cloud data. The metadata parser 9006 may pass the metadata to the geometry decoding and / or attribute decoding. Figure 8 The metadata described is the same, so a detailed description thereof is omitted.

[0219] The arithmetic decoder 9007, the inverse quantization processor 9008, the prediction / lifting / RAHT inverse transform processor 9009 and the color inverse transform processor 9010 perform attribute decoding. Figures 1 to 8 The attribute decoding described in at least one of them is the same or similar, so its detailed description is omitted.

[0220] The arithmetic decoder 9007 according to the embodiment may decode the attribute bitstream by arithmetic coding. The arithmetic decoder 9007 may decode the attribute bitstream based on the reconstructed geometry. The arithmetic decoder 9007 performs the same or similar operation and / or encoding as that of the arithmetic decoder 7005.

[0221] The inverse quantization processor 9008 according to an embodiment may inversely quantize the decoded attribute bitstream. The inverse quantization processor 9008 performs the same or similar operation and / or method as the inverse quantizer 7006 and / or the inverse quantization method.

[0222] The prediction / lifting / RAHT inverse transform processor 9009 according to an embodiment can process the reconstructed geometric and inverse quantized properties. The prediction / lifting / RAHT inverse transform processor 9009 performs the same Figure 7The color inverse transform processor 9010 according to the embodiment performs inverse transform encoding to inversely transform the color value (or texture) included in the decoded attribute. The color inverse transform processor 9010 performs the same or similar operations and / or decoding as the RAHT transformer 7007, the LOD generator 7008 and / or the inverse lifter 7009 of the embodiment. Figure 7 The operations and / or inverse transform encoding of the color inverse transformer 7010 are the same as or similar to the operations and / or inverse transform encoding of the color inverse transformer 7010. The renderer 9011 according to the embodiment may render point cloud data.

[0223] Figure 10 An exemplary structure that can be operated in conjunction with a point cloud data transmitting / receiving method / apparatus according to an embodiment is shown.

[0224] Figure 10 The structure of 1060 represents a configuration in which at least one of the server 1060, the robot 1010, the self-driving vehicle 1020, the XR device 1030, the smart phone 1040, the home appliance 1050, and / or the head mounted display (HMD) 1070 is connected to the cloud network 1000. The robot 1010, the self-driving vehicle 1020, the XR device 1030, the smart phone 1040, or the home appliance 1050 is referred to as a device. In addition, the XR device 1030 may correspond to a point cloud data (PCC) device according to an embodiment or may be operably connected to a PCC device.

[0225] The cloud network 1000 may represent a network that constitutes a part of a cloud computing infrastructure or exists in a cloud computing infrastructure. Here, the cloud network 1000 may be configured using a 3G network, a 4G or Long Term Evolution (LTE) network, or a 5G network.

[0226] The server 1060 may be connected to at least one of the robot 1010 , the self-driving vehicle 1020 , the XR device 1030 , the smart phone 1040 , the home appliance 1050 , and / or the HMD 1070 via the cloud network 1000 , and may assist in at least a portion of the processing of the connected devices 1010 to 1070 .

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

[0228] Hereinafter, various embodiments of devices 1010 to 1050 to which the above-described technology is applied will be described. Figure 10 The illustrated devices 1010 to 1050 may be operably connected / coupled to the point cloud data sending device and receiving device according to the above-described embodiments.

[0229] <PCC + XR>

[0230] 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) disposed in a vehicle, a television, a mobile phone, a smart phone, a computer, a wearable device, a home appliance, a digital signage, a vehicle, a fixed robot, or a mobile robot.

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

[0232] <PCC + XR + Mobile Phone>

[0233] The XR / PCC device 1030 may be implemented as a smart phone 1040 by applying the PCC technology.

[0234] Smart phone 1040 may decode and display point cloud content based on PCC technology.

[0235] <PCC + Self - Driving + XR>

[0236] The self-driving vehicle 1020 may be implemented as a mobile robot, a vehicle, an unmanned aerial vehicle, etc. by applying PCC technology and XR technology.

[0237] The self-driving vehicle 1020 to which the XR / PCC technology is applied may represent a self-driving vehicle provided with a means for providing an XR image, or a self-driving vehicle as a control / interaction target in the XR image. Specifically, as a control / interaction target in the XR image, the self-driving vehicle 1020 may be distinguished from the XR device 1030 and may be operably connected thereto.

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

[0239] When the XR / PCC object is output to the HUD, at least a portion of the XR / PCC object may be output to overlap with the real object to which the passenger's eyes are directed. On the other hand, when the XR / PCC object is output on a display provided in the self-driving vehicle, at least a portion of the XR / PCC object may be output to overlap with the object on the screen. For example, the self-driving vehicle 1020 may output XR / PCC objects corresponding to objects such as a road, another vehicle, a traffic light, a traffic sign, a two-wheeled vehicle, a pedestrian, and a building.

[0240] Virtual reality (VR) technology, augmented reality (AR) technology, mixed reality (MR) technology, and / or point cloud compression (PCC) technology according to an embodiment are applicable to various devices.

[0241] In other words, VR technology is a display technology that only provides CG images of real-world objects, backgrounds, etc. On the other hand, AR technology refers to a technology that displays a virtually created CG image on an image of a real object. MR technology is similar to the above-mentioned AR technology in that the virtual objects to be displayed are mixed and combined with the real world. However, MR technology is different 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 properties equivalent to real objects. More specifically, an example of the application of MR technology is a holographic service.

[0242] Recently, VR, AR, and MR technologies are often referred to as extended reality (XR) technologies rather than being clearly distinguished from each other. Therefore, embodiments of the present disclosure are applicable to any of VR, AR, MR, and XR technologies. Encoding / decoding based on PCC, V-PCC, and G-PCC technologies are applicable to such technologies.

[0243] The PCC method / apparatus according to the embodiment may be applied to a vehicle that provides a self-driving service.

[0244] Vehicles providing self-driving services are connected to the PCC device for wired / wireless communication.

[0245] When a point cloud data (PCC) transmitting / receiving device according to an embodiment is connected to a vehicle for wired / wireless communication, the device may receive / process content data related to an AR / VR / PCC service (which may be provided together with a self-driving service) and send it to the vehicle. In the case where the PCC transmitting / receiving device is installed on the vehicle, the PCC transmitting / receiving device may receive / process content data related to the AR / VR / PCC service and provide it to the user based on a user input signal input through a user interface device. The vehicle or user interface device according to the embodiment may receive a user input signal. The user input signal according to the embodiment may include a signal indicating a self-driving service.

[0246] As described above, the point cloud content providing system can use one or more cameras (for example, an infrared camera capable of protecting depth information, an RGB camera capable of extracting color information corresponding to the depth information, etc.), a projector (for example, an infrared pattern projector configured to protect depth information, etc.), LiDAR, etc. to generate point cloud content (or point cloud data).

[0247] LiDAR refers to a device configured to measure the distance by measuring the time taken for the irradiated light to reflect from the object and return. It provides accurate three-dimensional information about the real world as wide-area and long-distance point cloud data. Such large-capacity point cloud data can be widely used in various fields (e.g., autonomous vehicles, robots, and 3D map generation) using computer vision technology. That is, the LiDAR device uses a radar system that is configured to generate point cloud content by emitting a laser pulse and measuring the time taken for the laser pulse to reflect on the object (i.e., the reflector) to measure the coordinates of the position of the reflector. According to an embodiment, depth information can be extracted by the LiDAR device. The point cloud content generated by the LiDAR device can be composed of multiple frames, and multiple frames can be integrated into one content.

[0248] These LiDARs can be composed of N lasers (N = 16, 32, 64, etc.) at different altitudes. Figure 11 (a) and / or Figure 11 As shown in (b), the laser can be directed at an azimuth angle relative to the Z axis. Capture point cloud data while rotating. This type is called a rotational LiDAR model. The point cloud content captured by a rotational LiDAR model has an angular characteristic.

[0249] Figure 11 (a) and Figure 11 (b) is a diagram illustrating an example of a rotational LiDAR learning model according to an embodiment.

[0250] Reference Figure 11 (a) andFigure 11 In (b) thereof, the laser i can strike the object M, and the position of M can be estimated as (x, y, z) in a Cartesian coordinate system. In this case, when the position of the object M is represented as in the Cartesian coordinate system due to the fixed position of the laser sensor, the linear characteristics, and the rotation of the sensor at a specific azimuth angle, etc., rules between points can be advantageously derived for compression.

[0251] Therefore, for data captured by a rotary LiDAR device, when an angular pattern is applied in the geometric encoding / decoding process by utilizing this characteristic, the compression efficiency can be improved. The angular pattern is a method of compressing data using instead of (x, y, z). Here, r represents the radius, represents the azimuth angle or the azimuth, and i represents the i-th laser of the LiDAR (e.g., the laser index). In other words, the frame of the point cloud content generated by the LiDAR device can be configured as separate frames instead of being combined together, and its origin can be 0, 0, 0. Therefore, by changing the frame to a spherical coordinate system, the angular pattern can be used.

[0252] According to an embodiment, when the point cloud is captured by a LiDAR device in a moving / or stationary vehicle, the angular pattern can be used In this case, as the radius r increases with respect to the same azimuth angle the arc can be elongated. For example, when as Figure 12 shown in (a) thereof with respect to the same azimuth angle the radius r1 < r2, arc1 < arc2 can be established.

[0253] Figure 12 (a) of Figure 12 and (b) of

[0254] are diagrams illustrating an example of comparing the lengths of arcs according to the same azimuth angle with respect to the vehicle center according to an embodiment.

[0255] In short, objects moving within the same azimuth have the same arc rate of change. Therefore, the closer the object is to the center (i.e., the smaller the radius), the more it appears to move in azimuth, even if it is moving slightly. As the distance from the object to the center (i.e., the radius) increases, the object may appear to move very little in azimuth, even when it is moving a lot.

[0256] Depending on the implementation, this characteristic may vary depending on the accuracy of the LiDAR. As the accuracy decreases (i.e., the angle of rotation performed at one time increases), the above characteristics may be enhanced. That is, a large rotation angle means a large azimuth angle. As the azimuth angle increases, the motion of objects in the approaching area may be better captured.

[0257] For this reason, a small movement of an object close to the vehicle (i.e., LiDAR device) appears large and is likely to be a local motion vector. When the object is far away from the vehicle, the same movement may not be obvious, so the movement may be more likely to be covered by a global motion vector that does not have any local motion vectors. Here, the global motion vector may represent a vector of change in overall motion obtained by comparing consecutive frames (e.g., a reference frame (or previous frame) and a current frame), and the local motion vector may represent a vector of change in motion in a specific area.

[0258] Therefore, in order to apply the compression technology based on inter-frame prediction through reference frames to point cloud data captured by LiDAR and having multiple frames, a method of splitting the point cloud data into a maximum prediction unit (LPU) and / or a prediction unit (PU) as a prediction unit by reflecting the characteristics of the content may be required.

[0259] The present disclosure supports a method for splitting point cloud data into LPUs and / or PUs by reflecting the characteristics of the content to perform inter-frame prediction on point cloud data captured by LiDAR and having multiple frames through reference frames. Therefore, the present disclosure can widen the predictable area using local motion vectors so that no additional calculations are required, thereby reducing the time required to perform encoding of point cloud data. In the present disclosure, for simplicity, the LPU can be referred to as a first prediction unit, and the PU can be referred to as a second prediction unit.

[0260] In addition, in the present disclosure, whether the application of the motion vector in the split prediction unit is a gain is predicted by rate distortion optimization (RDO), and the predicted result is signaled. That is, whether the motion vector is applied in each split prediction unit is signaled. Here, according to an embodiment, the motion vector is a global motion vector. The motion vector may be a local motion vector. In addition, the motion vector may be both a global motion vector and a local motion vector.

[0261] Regarding inter prediction according to an embodiment, definitions of the following terms are described in the present disclosure.

[0262] 1) I (Intra) frame; P (Predicted) frame; B (Bidirectional) frame.

[0263] Frames to be encoded / decoded may be divided into I frames, P frames, and B frames. A frame may be referred to as a picture or the like.

[0264] For example, the frames may be transmitted in the order of I frame→P frame→(B frame)→(I frame|P frame)→... The B frame may be omitted.

[0265] 2) Reference Frame

[0266] The reference frame may be a frame referred to in encoding / decoding the current frame.

[0267] The immediately preceding I frame or P frame that is referenced to encode / decode the current P frame may be referred to as a reference frame. The immediately preceding I frame or P frame and the immediately following I frame or P frame that are referenced to encode / decode the current B frame may be referred to as reference frames.

[0268] 3) Frame and intra-frame prediction coding / inter-frame prediction coding

[0269] Intra-frame prediction encoding may be performed on an I frame, and inter-frame prediction encoding may be performed on a P frame and a B frame.

[0270] When the rate of change of a P frame relative to a previous reference frame is greater than a certain threshold, intra-frame prediction encoding may be performed on the P frame as in the case of an I frame.

[0271] 4) Criteria for determining I (Intra) frames

[0272] Among the plurality of frames, every k-th frame may be designated as an I frame. Alternatively, a score related to the correlation between frames may be set, and a frame with a higher score may be configured as an I frame.

[0273] 5) I-frame encoding / decoding

[0274] When encoding / decoding point cloud data with multiple frames, the geometry of the I frame can be encoded / decoded based on an octree or a prediction tree. Then, the attribute information about the I frame can be encoded / decoded based on the reconstructed geometry information based on a prediction / lifting transform scheme or a RAHT scheme.

[0275] 6) P frame encoding / decoding

[0276] When point cloud data having a plurality of frames is encoded / decoded according to an embodiment, a P frame may be encoded / decoded based on a reference frame.

[0277] In this case, the coding unit for inter-frame prediction of the P frame may be a frame, a patch, a slice, or an LPU or a PU. To this end, in the present disclosure, the point cloud data or a frame or a patch or a slice may be split (or divided or partitioned) into LPUs and / or PUs. For example, according to the present disclosure, a point split into a slice may be split into LPUs and / or PUs again.

[0278] The point cloud content to be split, the frame, the patch, the slice, etc. can be referred to as point cloud data. In other words, the points belonging to the point cloud content to be split, the points belonging to the frame, the points belonging to the patch, and the points belonging to the slice can be referred to as point cloud data.

[0279] According to an embodiment of the present disclosure, the point cloud data may be segmented into a plurality of blocks based on at least one of altitude, radius or azimuth. Here, the block may be referred to as an area, LPU or PU.

[0280] According to an embodiment of the present disclosure, the point cloud data may be segmented into a plurality of blocks based on an octree node. Here, a block may be referred to as a region, an LPU, or a PU.

[0281] According to an embodiment of the present disclosure, point cloud data may be segmented into a plurality of blocks based on block size information. Here, a block may be referred to as a region, an LPU, or a PU, and a block size may be referred to as a motion block size. In the present disclosure, the block size information may be the size of a motion block that forms the basis for segmenting point cloud data (e.g., a frame) into blocks (e.g., an LPU). That is, in the present disclosure, the block size information may be the size of a motion block on which an LPU splitting applied to a point cloud frame is based.

[0282] According to an embodiment of the present disclosure, point cloud data may be segmented into a plurality of blocks based on altitude according to block size information. According to an embodiment of the present disclosure, point cloud data may be segmented into a plurality of blocks based on octree nodes according to block size information. Here, a block may be referred to as a region, LPU, or PU. In addition, segmentation based on altitude may be used interchangeably with horizontal segmentation or horizontal segmentation based on altitude, and segmentation based on octree nodes may be used interchangeably with local segmentation.

[0283] According to an embodiment, when the block size information is set to {0, 0, height size}, the point cloud data can be segmented into multiple regions using an altitude-based horizontal segmentation method. Here, the height size can be referred to as a block height size. For example, the block size information can be {0, 0, 4096}.

[0284] According to an embodiment, when the block size information is set to {octree node size = s, s, s}, the point cloud data may be segmented into a plurality of regions using an octree node-based segmentation method. Here, s is a value greater than 1. For example, the block size information may be {4096, 4096, 4096}.

[0285] In other words, for horizontal segmentation based on altitude, {0, 0, block height size} can be used. For local segmentation based on LPU, {octree node size = s, s, s} can be applied. In addition, different size values ​​for each dimension are also possible. This means that point cloud data can be segmented by applying methods other than horizontal segmentation based on altitude or segmentation based on octree nodes. For example, the blocks segmented according to the value of each dimension of the block size information can be rectangles or squares of various shapes and sizes. In other words, the block size information is expressed in three-dimensional coordinates, and the value of each dimension is 0 or a value greater than 0.

[0286] According to an embodiment of the present disclosure, a mode of segmenting point cloud data into multiple blocks based on altitude or octree nodes according to block size information may be referred to as a cuboid mode. In addition, the cuboid mode may be referred to as cuboid segmentation or cuboid-based LPU / PU segmentation.

[0287] According to an embodiment of the present disclosure, even when point cloud data is split into roads and objects, a cuboid segmentation method may be applied.

[0288] According to an embodiment of the present disclosure, signaling information including block size information may be sent to a receiving side.

[0289] According to an embodiment, the signaling information including the block size information may be at least one of a geometry parameter set, a patch parameter set or a geometry slice header.

[0290] Next, a process of segmenting point cloud data into a plurality of blocks (eg, LPUs and / or PUs) based on at least one of altitude, radius, or azimuth is described.

[0291] In one embodiment of the present disclosure, the point cloud data may be segmented or divided into multiple regions (or blocks or LPUs or PUs) based on altitude. For example, in one embodiment of the present disclosure, the point cloud data may be segmented into LPUs and / or PUs based on altitude. In the present disclosure, altitude may be referred to as vertical. That is, in the present disclosure, altitude-based segmentation as a reference segmentation may be referred to as vertical-based or altitude-based horizontal segmentation. That is, altitude-based segmentation, vertical-based segmentation, or altitude-based horizontal segmentation may have the same meaning and may be used interchangeably. In other words, in the present disclosure, the point cloud data may be segmented into LPUs and / or PUs by altitude-based horizontal segmentation.

[0292] In one embodiment of the present disclosure, the point cloud data may be segmented into a plurality of regions (or blocks, LPUs or PUs) based on a radius. In one embodiment of the present disclosure, the point cloud data may be segmented into LPUs and / or PUs based on a radius.

[0293] In one embodiment of the present disclosure, the point cloud data may be segmented into a plurality of regions (or blocks, LPUs or PUs) based on the azimuth. In one embodiment of the present disclosure, the point cloud data may be segmented into LPUs and / or PUs based on the azimuth.

[0294] In one embodiment of the present disclosure, one or more of altitude-based horizontal segmentation, radius-based segmentation, azimuth-based segmentation, or a combination of two or more thereof may be used to segment the point cloud data. In one embodiment of the present disclosure, one or more of altitude-based horizontal segmentation, radius-based segmentation, and azimuth-based segmentation or a combination of two or more thereof may be used to segment the point cloud data into LPUs and / or PUs.

[0295] In one embodiment of the present disclosure, the point cloud data may be segmented into LPUs using one or a combination of two or more of altitude-based horizontal segmentation, radius-based segmentation, and azimuth-based segmentation.

[0296] In one embodiment of the present disclosure, the point cloud data may be segmented into PUs using one or a combination of two or more of altitude-based horizontal segmentation, radius-based segmentation, and azimuth-based segmentation.

[0297] In one embodiment of the present disclosure, point cloud data may be segmented into LPUs using one or a combination of two or more of altitude-based horizontal segmentation, radius-based segmentation, and azimuth-based segmentation, and then may be further segmented into one or more PUs using one or a combination of two or more of altitude-based horizontal segmentation, radius-based segmentation, and azimuth-based segmentation.

[0298] In one embodiment of the present disclosure, a PU may be split into smaller PUs.

[0299] In one embodiment of the present disclosure, it may be determined whether to apply a motion vector for each of the regions segmented using one or a combination of two or more of horizontal segmentation based on altitude, segmentation based on radius, and segmentation based on azimuth. In one embodiment of the present disclosure, rate distortion optimization (RDO) may be checked for each of the regions using one or a combination of two or more of horizontal segmentation based on altitude, segmentation based on radius, and segmentation based on azimuth, and then it may be determined whether to apply a motion vector for each of the regions. In one embodiment of the present disclosure, a signal may be sent to each of the regions to notify whether a motion vector is applied. Here, the segmented region or block may be an LPU or a PU. In addition, the motion vector may be a global motion vector or a local motion vector. In one embodiment of the present disclosure, it may be a global motion vector.

[0300] In one embodiment of the present disclosure, a method for LPU partitioning and / or PU partitioning may be signaled.

[0301] In one embodiment of the present disclosure, it may be determined whether to apply a motion vector for each of the regions segmented using altitude-based horizontal segmentation. In one embodiment of the present disclosure, point cloud data may be segmented using altitude-based horizontal segmentation, and then RDO may be checked for each segmented region to determine whether to apply a global motion vector for each of the regions. In one embodiment of the present disclosure, it may be signaled for each region whether a global motion vector is applied. Here, the segmented region or block may be an LPU or a PU.

[0302] According to an embodiment, LPU / PU splitting and inter-frame prediction-based encoding (ie, compression) may be performed by a geometry encoder at the transmitting side, and LPU / PU splitting and inter-frame prediction-based decoding (ie, reconstruction) may be performed by a geometry decoder at the receiving side.

[0303] According to an embodiment, whether a motion vector is applied for each split LPU / PU is signaled by a geometry encoder on the transmitting side, and motion compensation for the LPU / PU can be performed by a geometry decoder on the receiving side based on signaling information including whether a motion vector is applied.

[0304] Hereinafter, an LPU splitting method using point cloud data captured by LiDAR will be described.

[0305] According to an embodiment, a maximum prediction unit (LPU) may be a maximum unit for splitting point cloud content (or a frame) for inter-frame prediction (ie, inter-frame prediction).

[0306] According to an embodiment, a plurality of frames (multi-frames) captured by LiDAR may have the following characteristics in variations between frames.

[0307] That is, the closer the frame is to the center, the higher the probability that a local motion vector will appear. In addition, based on the global motion vector, the probability that a new point will be generated in the farthest area among the areas belonging to a specific angle may be high.

[0308] Figure 13 is a diagram illustrating an example of radius-based LPU splitting and motion possibility according to an embodiment. That is, Figure 13 An example of splitting point cloud data captured by LiDAR into five regions (or referred to as blocks or LPUs) based on radius is illustrated.

[0309] When Figure 13When the point cloud data is split based on the radius, there may be areas where local motion vectors are likely to appear based on the global motion, that is, area 50010 with moving objects and area 50030 where new objects may appear. Therefore, area 50030 may have additional points, and area 50010 may be an area where local motion vectors should be applied. In other areas, the positions of points similar to the current frame can be obtained simply by using predictions by applying global motion vectors.

[0310] According to the implementation mode, the LPU splitting criterion can be as follows: Figure 13 or Figure 14 Specified based on the radius.

[0311] Figure 14 A specific example of performing LPU splitting of point cloud data based on radius according to an embodiment is illustrated. That is, Figure 14 An example of a radius r used as a reference for LPU splitting is illustrated.

[0312] Figure 14 It is only used to help those skilled in the art understand the embodiments of the present disclosure. According to the characteristics of the point cloud data (or point cloud content or frame), LPU splitting of the point cloud data can be performed based on azimuth or altitude.

[0313] In the present disclosure, by splitting point cloud data into one or more LPUs through one or a combination of two or more of radius-based segmentation, azimuth-based segmentation, and altitude-based segmentation, the area that can be predicted using only the global motion vector is expanded to eliminate the need for additional calculations. Therefore, the execution time of encoding of point cloud data can be reduced, that is, the encoding execution time can be shortened.

[0314] Hereinafter, a method of PU splitting of point cloud data captured by LiDAR or point cloud data split into LPUs is described.

[0315] According to an embodiment, point cloud data (or point cloud content or region or block) partitioned into LPUs for inter prediction (ie, inter prediction) may be split again into one or more PUs.

[0316] According to an embodiment, when a region is split again into smaller PUs according to the probability of a local motion vector appearing in the region, the processors for sub-splitting and motion vector search according to the sub-splitting can be reduced, so no additional calculation is required. Therefore, the encoding execution time can be reduced.

[0317] The present disclosure may apply the following characteristics of point cloud data (or point cloud content) to the PU splitting method.

[0318] 1) As the altitude increases, the probability that a local motion vector will appear may decrease. This is because as the altitude increases, the probability that the data is a still sky or building increases. In other words, there is a high probability that there is no local motion.

[0319] 2) When the altitude is very low, the probability of the local motion vector occurring may be low. This is because the probability that the data is a road increases as the altitude decreases.

[0320] 3) There may be a probability that an object exists within a specific azimuth in the split LPU or PU. In this case, the azimuth for PU splitting (e.g., the azimuth used as a reference during PU splitting) may be set by experiment. In addition, there may be an azimuth that may include a moving person with a difference of one frame, and the azimuth that may include a moving car may be constant. According to an embodiment, when a typical azimuth is found by experiment, there is a high probability that the area to which the local motion vector is to be applied can be separated.

[0321] 4) There may be a probability that an object exists within a specific radius within the split LPU or PU. In this case, the radius for PU splitting (e.g., a radius used as a reference for PU splitting) may be set by experiment. In addition, there may be a radius that may include a moving person with a difference of one frame, and the radius that may include a moving vehicle may be constant. According to an embodiment, once a typical radius is found by experiment, there is a high probability that the area to which the local motion vector is to be applied can be separated.

[0322] Therefore, in this embodiment, when the point cloud data is split into LPUs, and then the LPUs are split into one or more PUs again, the blocks (or regions) split into LPUs may be additionally split based on the motion block elevation (motion_block_pu_elevation). When no local motion vector can be matched with the additionally split block (or region), additional splitting may be performed again. In this case, the blocks may be based on (or by applying) the motion block azimuth (motion_block_pu_azimuth). However, when the local motion vector cannot be matched to the azimuth based motion block When the split block (or region) is additionally split, the additional splitting may be performed again based on the motion block radius (motion_block_pu_radius) r. Alternatively, the block may be additionally split to have half the size of the PU block (or region).

[0323] Figure 15is a diagram illustrating an example of PU splitting according to an embodiment. In this case, the PU splitting can be based on the motion block elevation (motion_block_pu_elevation) e, the motion block azimuth (motion_block_pu_azimuth) PU splitting is performed by one or a combination of two or more of the motion block radius (motion_block_pu_radius) r. Here, the motion block elevation (motion_block_pu_elevation) e represents the size of the altitude (or vertical) as a reference for PU splitting, and the motion block azimuth (motion_block_pu_azimuth) represents the size of the altitude (or vertical) as a reference for PU splitting. represents the size of the azimuth angle as a reference for PU splitting, and the motion block radius (motion_block_pu_radius) r represents the size of the radius as a reference for PU splitting. In this case, PU splitting can be applied to a frame, a patch or a slice, or an LPU.

[0324] According to an embodiment, when the motion block elevation (motion_block_pu_elevation) e, the motion block azimuth (motion_block_pu_azimuth) When PU splitting is performed based on two or more of the following: and motion block radius (motion_block_pu_radius) r, PU splitting may be performed in various orders. For example, PU splitting may be performed in the following order: altitude->azimuth->radius, altitude->radius->azimuth, azimuth->altitude->radius, azimuth->radius->altitude, radius->altitude->azimuth or radius->azimuth->altitude, altitude->azimuth, altitude->radius, azimuth->altitude, azimuth->radius, radius->altitude, and radius->azimuth.

[0325] Therefore, the present embodiment can reduce encoding execution time by expanding the area that can be predicted using the local motion vector without requiring additional calculation.

[0326] Hereinafter, a method for supporting LPU / PU splitting based on content characteristics of an octree will be described.

[0327] In the present disclosure, when it is desired to match LPU splitting and PU splitting to octree occupancy bits in octree-based geometry coding, an appropriate size may be set by performing the following process.

[0328] That is, the size of the octree node that can be covered by the center-based motion block radius (motion_block_pu_radius) r may be set to the motion block size (motion_block_size). In addition, based on the set size, LPU splitting may not be performed until a certain octree level.

[0329] In one embodiment of the present disclosure, the point cloud data is segmented into LPUs using an octree node-based segmentation method, and then the order of axes used to split a specific LPU into PUs can be determined. For example, the order of axes can be specified and applied as xyz, xzy, yzx, yxz, zxy, or zyx.

[0330] This embodiment can support a method of applying the LPU / PU splitting method together according to the characteristics of the octree structure and the content. The goal of the LPU / PU splitting based on the octree node is to widen the area that can be predicted using possible local motion vectors to eliminate the need for additional calculations, thereby reducing the encoding execution time.

[0331] In one embodiment of the present disclosure, it may be determined whether to apply a motion vector for each of the regions segmented using octree-based segmentation. In one embodiment of the present disclosure, RDO may be checked for each of the regions segmented using octree-based segmentation to determine whether to apply a motion vector for each of the regions. In one embodiment of the present disclosure, it may be signaled for each region whether a global motion vector is applied. Here, the segmented region or block may be an LPU or a PU. In addition, the motion vector may be a global motion vector or a local motion vector.

[0332] According to an embodiment, LPU / PU splitting and inter-frame prediction-based encoding (ie, compression) may be performed by a geometry encoder at the transmitting side, and LPU / PU splitting and inter-frame prediction-based decoding (ie, reconstruction) may be performed by a geometry decoder at the receiving side.

[0333] According to an embodiment, whether a motion vector is applied for each split LPU / PU is signaled by a geometry encoder on the transmitting side, and motion compensation for the LPU / PU can be performed by a geometry decoder on the receiving side based on signaling information including whether a motion vector is applied.

[0334] Next, a description is given of a method of supporting road / object-based LPU / PU segmentation.

[0335] The point cloud content captured by the LiDAR device on the moving vehicle may include both roads and objects. In other words, a street may include not only roads but also many objects such as trees, buildings, cars, and people. In the present disclosure, the point cloud content may be referred to as point cloud data or point cloud. There may be one or more objects. Multiple objects may be referred to as objects or object groups or object blocks.

[0336] According to an embodiment of the present disclosure, roads and objects in point cloud data at a frame level, a patch level, or a slice level may be split (or differentiated or classified).

[0337] According to an embodiment, the splitting of roads and objects in the point cloud data can be performed based on a threshold or based on laser identification information and / or radius information. In the present disclosure, once the roads and objects are split in the point cloud data, an LPU can be configured with points split into roads, and another LPU can be configured with points split into objects (or object groups). In the present disclosure, at least one LPU can be split into multiple PUs using a cuboid segmentation method. That is, an altitude-based horizontal segmentation method or an octree node-based method can be applied to the LPU based on block size information to split the LPU into multiple PUs. In another embodiment, the cuboid segmentation method can be applied to points split into roads to split the points into multiple regions. In another embodiment, the cuboid segmentation method can be applied to points split into objects (or object groups) to split the points into multiple regions. Here, the region can be a block, an LPU, or a PU.

[0338] According to an embodiment of the present disclosure, a motion vector may be applied not to an LPU composed of points of a road but to an LPU composed of points of an object (or an object group).

[0339] According to an embodiment of the present disclosure, for an LPU and / or PU consisting of points of an object (or object group), RDO may be checked to determine whether a motion vector is applied, and the result may be signaled.

[0340] Next, a description is given of a method of supporting cuboid-based LPU / PU partitioning.

[0341] According to an embodiment of the present disclosure, cuboid-based LPU / PU segmentation can be supported to integrate and support altitude-based horizontal segmentation and octree node-based segmentation methods. In this case, the motion block size can be set in three-dimensional coordinates, and each coordinate value can be unbounded.

[0342] Therefore, in the present disclosure, when {0, 0, height size} is set as the motion block size, the altitude-based horizontal segmentation method can be applied to the point cloud data to segment the point cloud data into multiple blocks. In addition, in the present disclosure, when {octree node size = s, s, s} is set as the motion block size, the octree node-based segmentation method can be applied to the point cloud data to segment the point cloud data into multiple blocks. That is, since the octree has equal width, height, and depth, the values ​​of the dimensions in the block size information are the same. Here, the block can be a region, an LPU, or a PU.

[0343] Therefore, the present disclosure may allow different sizes to be set for each of the three dimensions of the motion block size, thereby enabling point cloud content (or data) to be segmented according to the characteristics of the point cloud content.

[0344] According to an embodiment of the present disclosure, in the LPU / PU segmentation according to the road / object segmentation method, the above-mentioned cuboid segmentation method can be applied. In this case, by specifying the starting position of the cuboid, for example, by specifying the starting position of the block divided into two or four parts according to the size of the object area, according to the road / object segmentation method, the LPU / PU segmentation / motion application method, the altitude-based horizontal segmentation method and / or the octree node-based segmentation method can be integrated.

[0345] Figure 16 is a diagram illustrating an example of a road / object segmentation method according to an embodiment. That is, Figure 16 An example of splitting a previously reconstructed cloud into a road region and an object region based on a global motion threshold is illustrated. Here, the region may be referred to as a block.

[0346] In terms of the above, the global motion (or global motion vector) can be applied only to the object area (or block). That is, the object block to which the global motion vector (or global motion matrix) is applied and the road block to which the global motion vector (or global motion matrix) is not applied can be used as a reference cloud during inter-frame prediction.

[0347] According to an embodiment of the present disclosure, the road area and the object area can be configured as LPUs, respectively. In addition, in the present disclosure, a cuboid segmentation method can be applied to an LPU corresponding to an object area to segment the LPU into multiple PUs. That is, based on block size information, an LPU corresponding to an object area can be segmented into multiple PUs. For example, when the block size information is {0, 0, block height size}, an altitude-based horizontal segmentation method can be applied. When the information is {octree node size = s, s, s}, an octree node segmentation method can be applied to segment an LPU into multiple PUs.

[0348] Figure 17is a diagram illustrating an example of an altitude-based horizontal segmentation method according to an embodiment. According to an embodiment, in a rectangular parallelepiped mode, when the block size information is {0, 0, block height size}, it is possible to perform Figure 17 The segmentation method in .

[0349] exist Figure 17 , V is an example of splitting a previously reconstructed cloud into four blocks by applying altitude-based horizontal segmentation, and W is an example of splitting a previously reconstructed cloud into four blocks by applying altitude-based horizontal segmentation followed by applying a global motion vector (or global motion matrix) to the blocks. In addition, the current cloud is also split into four blocks by applying altitude-based horizontal segmentation. That is, Figure 17 An example of splitting the current cloud, the previously reconstructed cloud V (without applying the global motion matrix), and W (with applying the global motion matrix) into multiple horizontal blocks based on the block height size is illustrated. According to the present disclosure, RDO is calculated for each block of V and W to determine the reference block to be used for inter-frame prediction of the corresponding block of the current cloud. Figure 17 In the reference cloud of , blocks 1 and 2 are blocks selected from V (i.e., blocks to which the global motion vector is not applied), and blocks 3 and 4 are blocks selected from W (i.e., blocks to which the global motion is applied). That is, the mode for each block may be determined, and a 1-bit flag may be used to signal the result of the determination. For example, when the value of the flag is false for a block, it may indicate that the block is selected from V. When the value is true, it may indicate that the block is selected from W. That is, each block may have a mode syntax indicating whether global motion is applied based on the distortion result.

[0350] Figure 18 is a diagram illustrating an example of an octree node-based segmentation method according to an embodiment. According to an embodiment, when the block size information is {s, s, s} in a rectangular parallelepiped mode, it is possible to perform Figure 18 For example, Figure 18 The LPU-based local segmentation process is illustrated.

[0351] exist Figure 18 , V is an example of splitting a previously reconstructed cloud into four blocks by applying octree node-based segmentation, and W is an example of splitting a previously reconstructed cloud into four blocks by applying octree node-based segmentation and then applying a global motion vector (or global motion matrix) to the blocks. In addition, the current cloud is also split into four blocks by applying octree node-based segmentation. That is, Figure 18 An example of splitting the current cloud, the previously reconstructed cloud V (without applying the global motion matrix), and W (with applying the global motion matrix) into multiple horizontal blocks based on the octree node size is illustrated. According to the present disclosure, RDO is calculated for each block of V and W to determine the reference block to be used for inter-frame prediction of the corresponding block of the current cloud.Figure 18 In the reference cloud of , blocks 1 and 3 are blocks selected from V (i.e., blocks to which the global motion vector is not applied), and blocks 2 and 4 are blocks selected from W (i.e., blocks to which the global motion is applied). That is, a mode for each block may be determined, and a 1-bit flag may be used to signal the result of the determination. For example, when the value of the flag is false for a block, it may indicate that the block is selected from V. When the value is true, it may indicate that the block is selected from W.

[0352] In this way, the present disclosure may apply various segmentation methods based on block size information to segment point cloud data into a plurality of blocks.

[0353] Figure 19 is a diagram illustrating another example of the point cloud transmitting device according to the embodiment.

[0354] The point cloud transmitting device according to the embodiment may include a data input unit 51001, a coordinate transformation unit 51002, a quantization processor 51003, a space divider 51004, a signaling processor 51005, a geometry encoder 51006, an attribute encoder 51007, and a transmission processor 51008. According to the embodiment, the coordinate transformation unit 51002, the quantization processor 51003, the space divider 51004, the geometry encoder 51006, and the attribute encoder 51007 may be referred to as a point cloud video encoder.

[0355] Figure 19 The point cloud data sending device may correspond to Figure 1 The sending device 10000, Figure 1 Point cloud video encoder 10002, Figure 1 Transmitter 10003, Figure 2 Acquisition 20000 / Encoding 20001 / Transmission 20002, Figure 3 Point cloud video encoder, Figure 8 The sending device Figure 10 devices, etc. Figure 19 Each component in the corresponding figures may correspond to software, hardware, a processor connected to a memory, and / or a combination thereof.

[0356] The data input unit 51001 can execute Figure 1 Some or all operations of the point cloud video acquisition unit 10001, or can be performed Figure 8 The coordinate transformation unit 51002 can perform some or all operations of the data input unit 8000. Figure 3 In addition, the quantization processor 51003 may perform some or all operations of the coordinate transformation unit (coordinate transformer) 30000. Figure 3 Some or all of the operations of the quantization unit (quantizer) 30001, or may performFigure 8 Some or all operations of the quantization processor 8001. That is, the data input unit 51001 can receive data to encode the point cloud data. The data may include geometric data (which may be referred to as geometry, geometric information, etc.), attribute data (which may be referred to as attributes, attribute information, etc.), and parameter information indicating encoding related settings.

[0357] The coordinate transformation unit 51002 can support coordinate transformation of point cloud data (e.g., changing the xyz axis or transforming data from an xyz Cartesian coordinate system to a spherical coordinate system).

[0358] The quantization processor 51003 can quantize the point cloud data. For example, it can adjust the scale by multiplying the x, y, and z values ​​of the position of the point cloud data by the scale according to the scale (scale = geometric quantization value). The scale value can follow the set value or be included in the bitstream as parameter information and passed to the receiver.

[0359] The spatial divider 51004 can spatially divide the point cloud data quantized and output by the quantization processor 51003 into one or more 3D blocks based on the bounding box and / or sub-bounding box. For example, the spatial divider 51004 can divide the quantized point cloud data into tiles or slices to access or process the content in parallel region by region. In one embodiment, the signaling information for spatial division is entropy encoded by the signaling processor 51005 and then sent in the form of a bit stream through the transmission processor 51008.

[0360] In one embodiment, the point cloud content may be a person (such as an actor), multiple persons, an object, or multiple objects. In a broader sense, it may be a map for autonomous driving or a map for indoor navigation of a robot. In addition, the point cloud content may be point cloud data captured by a LiDAR device on a moving or stationary vehicle. In this case, the point cloud content may be a large amount of locally connected data. In this case, the point cloud content cannot be encoded / decoded at once, so tile segmentation may be performed before compressing the point cloud content. For example, room #101 in a building may be segmented into one tile, and room #102 in the building may be segmented into another tile. In order to support fast encoding / decoding by applying parallelization to the segmented tiles, the tiles may be segmented (or split) into slices again. This operation may be referred to as slice segmentation (or splitting).

[0361] That is, according to an embodiment, a patch may represent a portion of a 3D space occupied by the point cloud data (e.g., a rectangular cube). According to an embodiment, a patch may include one or more slices. A patch according to an embodiment may be divided into one or more slices so that the point cloud video encoder can encode the point cloud data in parallel.

[0362] A slice may represent a data unit (or bit stream) that can be independently encoded by a point cloud video encoder according to an embodiment and / or a data unit (or bit stream) that can be independently decoded by a point cloud video decoder. A slice may be a collection of data in a 3D space occupied by point cloud data, or a collection of some data among point cloud data. A slice according to an embodiment may represent an area or a collection of points included in a patch according to an embodiment. According to an embodiment, a patch may be divided into one or more slices based on the number of points included in a patch. For example, a patch may be a collection of points divided by the number of points. According to an embodiment, a patch may be divided into one or more slices based on the number of points, and some data may be split or merged during the segmentation process. That is, a slice may be a unit that can be independently encoded within a corresponding patch. In this way, a patch obtained by spatial segmentation may be divided into one or more slices for fast and efficient processing.

[0363] The point cloud video encoder according to the embodiment may encode the point cloud data slice by slice or patch by patch, wherein a patch includes one or more slices. In addition, the point cloud video encoder according to the embodiment may perform different quantization and / or transformation for each patch or each slice.

[0364] The positions of one or more 3D blocks (e.g., slices) spatially segmented by the spatial segmenter 51004 are output to the geometry encoder 51006, and attribute information (or attributes) are output to the attribute encoder 51007. The position may be position information about a point included in a segmented unit (a frame, a block, a patch, a patch group, or a slice), and is referred to as geometry information.

[0365] The geometry encoder 51006 outputs a geometry bitstream by performing inter-frame prediction or intra-frame prediction-based encoding on the position output from the spatial divider 51004. In this case, the geometry encoder 51006 can split the frame, patch or slice into LPU and / or PU by applying the above-mentioned LPU / PU splitting method (i.e., cuboid splitting method) to the inter-frame prediction-based encoding of the P frame, and may or may not apply a motion vector to each split region (i.e., LPU or PU) for motion compensation. In addition, a signal may be sent to notify whether a motion vector is applied to each split region. Here, the motion vector may be a global motion vector or a local motion vector. In addition, the geometry encoder 51006 can reconstruct the encoded geometry information and output the reconstructed information to the attribute encoder 51007.

[0366] The attribute encoder 51007 encodes (ie, compresses) the attributes (eg, split attribute source data) output from the space divider 51004 based on the reconstructed geometry output from the geometry encoder 51006, and outputs an attribute bitstream.

[0367] Figure 20 is a diagram illustrating an example of the operation of the geometry encoder 51006 and the attribute encoder 51007 according to an embodiment.

[0368] In one embodiment, a quantization processor may be further provided between the spatial divider 51004 and the voxelization processor 53001. The quantization processor quantizes the positions of one or more 3D blocks (e.g., slices) spatially divided by the spatial divider 51004. In this case, the quantization processor may perform Figure 3 Some or all of the operations of the quantization unit 80001, or the execution of Figure 8 When a quantization processor is further provided between the spatial divider 51004 and the voxelization processor 53001, some or all operations of the quantization processor 8001 may be omitted or may not be omitted. Figure 19 Quantization processor 51003.

[0369] The voxelization processor 53001 according to an embodiment performs voxelization based on the position of one or more spatially divided 3D blocks (e.g., slices) or their quantized positions. Voxelization refers to the smallest unit representing position information in 3D space. That is, the voxelization processor 53001 can support the process of rounding the geometric position value of the scaled point to an integer. According to an embodiment, the points of the point cloud content (or 3D point cloud video) may be included in one or more voxels. According to an embodiment, a voxel may include one or more points. In one embodiment, when quantization is performed before voxelization, multiple points may belong to one voxel.

[0370] In the present disclosure, when two or more points are included in one voxel, the two or more points are referred to as repeated points. That is, in the geometric encoding process, repeated points can be generated by geometric quantization and voxelization.

[0371] The voxelization processor 53001 may output duplicate points belonging to one voxel without merging the points, or may merge the duplicate points into one point to be output.

[0372] When the frame of the input point cloud data (i.e., the frame to which the input point belongs) is an I frame, the geometric information intra-frame predictor 53003 according to the embodiment may apply geometric intra-frame prediction coding to the geometric information of the I frame. The intra-frame prediction coding method may include octree coding, predictive tree coding, and triplet coding.

[0373] To this end, an element assigned with reference numeral 53002 (or referred to as a determiner) checks whether a point output from the voxelization processor 53001 belongs to an I frame or a P frame.

[0374] When the frame checked by the determiner 53002 is a P frame, the LPU / PU splitter 53004 according to an embodiment splits the points divided into tiles or slices by the spatial splitter 51004 into LPU / PU to support inter-frame prediction. In another embodiment, when the frame checked by the determiner 53002 is a P frame, the LPU / PU splitter 53004 may split the points included in the frame into LPU / PU to support inter-frame prediction.

[0375] Referenced above Figures 11 to 18 A method for segmenting points of point cloud data (e.g., slices) into LPUs and / or PUs is described in detail. Therefore, for any part not described herein, reference is made to Figures 11 to 18 The signaling related to LPU / PU splitting will be described in detail later.

[0376] According to the present disclosure, when the rate of change of a P frame relative to a previous reference frame is greater than a certain threshold, intra-frame prediction coding can be performed on the P frame as in the case of an I frame. For example, when there are a large number of changes in the entire frame and therefore the rate of change exceeds the range of a certain threshold, intra-frame prediction coding can be performed on the P frame instead of inter-frame prediction coding. This is because when the rate of change is high, intra-frame prediction coding can be more accurate and more efficient than inter-frame prediction coding. Here, the previous reference frame is provided from the reference frame buffer 53009.

[0377] To this end, the element assigned with reference numeral 53005 (or referred to as a determiner) checks whether the rate of change is greater than a threshold value.

[0378] When the determiner 53005 determines that the change rate between the P frame and the reference frame is greater than the threshold, the P frame is output to the geometry information intra-frame predictor 53003 to perform intra-frame prediction. When the determiner 53005 determines that the change rate is not greater than the threshold, the P frame split into LPU and / or PU to perform inter-frame prediction is output to the motion compensation application unit 53006.

[0379] The motion compensation application unit 53006 according to the embodiment determines whether to apply a motion vector for each split LPU / PU, and signals the result. For example, by checking the RDO of a specific PU, it can determine whether to apply a motion vector to the PU. In one embodiment, when applying a motion vector to the PU has a large gain, the motion vector may be applied to the PU. In one embodiment, when applying a motion vector to the PU does not have a large gain, the motion vector may not be applied to the PU. Here, the gain may be determined by comparing the bitstream size when the motion vector is applied. In one embodiment, information for identifying whether a motion vector is applied to the PU (e.g., pu_motion_compensation_type) may be included in inter-frame prediction-related option information (or inter-frame prediction-related information). In this case, the motion vector applied to the PU may be a global motion vector obtained by overall motion estimation between frames, a local motion vector obtained in the PU, or both a global motion vector and a local motion vector.

[0380] That is, in the present disclosure, after splitting the point cloud data into prediction units (PUs) and obtaining the local motion vector for each PU, the local motion vector can be applied without matching the coding unit and the PU so as to be applied to all octree-based geometry coding, prediction tree-based geometry coding, and triplet-based geometry coding.

[0381] In addition, after the global motion vector is applied to the LPU, the local motion vector can be obtained by PU splitting. Then, it can be predicted by RDO whether it is beneficial to apply the local motion vector in the PU, apply only the global motion vector, or use the previous frame, and the prediction result can be applied to the PU. That is, according to the optimized application method, the global motion vector or the local motion vector can be applied to the PU or the previous frame can be used. Here, using the previous frame means not using the motion vector.

[0382] According to an embodiment, when there is an optimized application method, the local motion vector (if any) can be signaled and then sent to the receiver for decoding.

[0383] Therefore, the receiver may determine whether a motion vector (eg, a global motion vector) is applied to the PU based on the signaling information. When a global motion vector is applied, the receiver may perform motion compensation by applying the global motion vector to the PU.

[0384] In addition, according to the present disclosure, RDO may be performed and whether to apply motion may be directly specified without checking RDO for any block, as in the road / object segmentation method.

[0385] According to an embodiment, the LPU / PU splitter 53004 may split the point cloud data into LPU and / or PU, determine whether to apply the global motion vector to the LPU / PU, and determine whether to signal the determination through signaling information. Then, the motion compensator 53006 may perform motion compensation for the LPU / PU according to the signaling information.

[0386] The geometric information inter-frame predictor 53007 according to an embodiment can perform octree-based inter-frame coding, prediction tree-based inter-frame coding, or triplet-based inter-frame coding based on the difference in geometric prediction values ​​between the current frame and a reference frame for which motion compensation has been performed or a previous frame for which motion compensation has not yet been performed.

[0387] The geometry information intra predictor 53003 may apply geometry intra prediction coding to geometry information of the P frame input through the determiner 53005. Intra prediction coding methods may include octree coding, prediction tree coding, and triplet coding.

[0388] The geometry information entropy encoder 53008 according to an embodiment performs entropy encoding on the geometry information encoded based on intra-frame prediction by the geometry information intra-frame predictor 53003 or on the geometry information encoded based on inter-frame prediction by the geometry information inter-frame predictor 53007, and outputs a geometry bit stream (or referred to as a geometry information bit stream).

[0389] The geometry reconstruction according to the embodiment restores (or reconstructs) the geometry information based on the position changed by the intra-frame prediction-based encoding or the inter-frame prediction-based encoding, and outputs the reconstructed geometry information (or referred to as reconstructed geometry) to the attribute encoder 51007. That is, since the attribute information depends on the geometry information (position), the restored (or reconstructed) geometry information is required to compress the attribute information. In addition, the reconstructed geometry information is stored in the reference frame buffer 53009 so as to be set as a reference frame in the inter-frame prediction encoding of the P frame. The reference frame buffer 53009 also stores the reconstructed attribute information in the attribute encoder 51007. That is, the reconstructed geometry information and the reconstructed attribute information stored in the reference frame buffer 53009 can be used by the geometry information inter-frame predictor 53007 of the geometry encoder 51006 and the attribute information inter-frame predictor 55005 of the attribute encoder 51007 as the previous reference frame for the geometry information inter-frame prediction encoding and the attribute information inter-frame prediction encoding.

[0390] The color transformation processor 55001 of the attribute encoder 51007 corresponds to Figure 3 Color conversion unit (color converter) 30006 or Figure 8The color transform processor 55001 according to an embodiment performs color transform encoding of the transformed color values ​​(or textures) included in the attributes provided from the data input unit 51001 and / or the spatial divider 51004. For example, the color transform processor 55001 can transform the format of the color information (e.g., from RGB to YCbCr). The operation of the color transform processor 55001 according to an embodiment can be optionally applied according to the color values ​​included in the attributes. In another embodiment, the color transform processor 55001 can perform color transform encoding based on the reconstructed geometry.

[0391] According to an embodiment, the attribute encoder 51007 may perform recoloring according to whether lossy encoding is applied to the geometry information. To this end, an element assigned with reference numeral 55002 (or referred to as a determiner) checks whether the geometry encoder 51006 applies lossy encoding to the geometry information.

[0392] For example, when the determiner 55002 determines that lossy encoding has been applied to the geometric information, the recolorer 55003 performs color re-adjustment (or recoloring) due to the lost points to reconfigure the attribute (color). That is, the recolorer 55003 can find and reconfigure the attribute value suitable for the position of the lost point in the source point cloud data. In other words, when the position information value changes due to the scale being applied to the geometric information, the recolorer 55003 can predict the attribute value suitable for the changed position.

[0393] According to an embodiment, the operation of the reshader 53003 may be optionally applied depending on whether duplicate points are merged. According to one embodiment, the merging of duplicate points may be performed by the voxelization processor 53001 of the geometry encoder 51006.

[0394] In one embodiment of the present disclosure, when the voxelization processor 53001 merges points belonging to a voxel into one point, the recolorizer 55003 may perform color readjustment (ie, recoloring).

[0395] Reshader 55003 performs the same Figure 3 Attribute transformation unit (attribute transformer) 30007 or Figure 8 The operations and / or methods of the attribute transformation processor 8009 are the same as or similar to the operations and / or methods.

[0396] When the determiner 55002 determines that lossy encoding is not applied to the geometric information, an element assigned with reference numeral 55004 (or referred to as a determiner) checks whether inter-frame prediction-based encoding is applied to the geometric information.

[0397] When the determiner 55004 determines that the inter-prediction based encoding is not applied to the geometric information, the attribute information intra-frame predictor 55006 performs intra-frame prediction encoding on the input attribute information. According to an embodiment, the intra-frame prediction encoding method performed by the attribute information intra-frame predictor 55006 may include predictive transform encoding, lifting transform encoding, and RAHT encoding.

[0398] When the determiner 55004 determines that inter-frame prediction-based encoding is applied to the geometric information, the attribute information inter-frame predictor 55005 performs inter-frame prediction encoding on the input attribute information. According to an embodiment, the attribute information inter-frame predictor 55005 may encode the residual based on the difference in attribute prediction values ​​between the current frame and the motion compensation reference frame.

[0399] According to the implementation manner, the attribute information entropy encoder 55008 entropy encodes the attribute information encoded by the attribute information intra-frame predictor 55006 based on intra-frame prediction or the attribute information encoded by the attribute information inter-frame predictor 55005 based on inter-frame prediction, and outputs an attribute bit stream (or called attribute information bit stream).

[0400] The attribute reconstructor according to the embodiment restores (or reconstructs) attribute information based on the attribute changed by intra-frame prediction encoding or inter-frame prediction encoding, and stores the reconstructed attribute information (or referred to as reconstructed attribute) in the frame buffer 53009. That is, the reconstructed geometry information and the reconstructed attribute information stored in the reference frame buffer 53009 can be used by the geometry information inter-frame predictor 53007 and the attribute information inter-frame predictor 55005 of the attribute encoder 51007 as a previous reference frame for inter-frame prediction encoding of geometry information and inter-frame prediction encoding of attribute information.

[0401] Next, the LPU / PU splitter 53004 will be described with respect to signaling.

[0402] That is, the LPU / PU splitter 53004 can split the point cloud data (e.g., points input based on each frame, each patch, or each slice) into LTUs by applying reference type information (motion_block_lpu_split_type) to split the point cloud data into LPUs, and then signal the applied type information.

[0403] According to an embodiment, the reference type information (motion_block_lpu_split_type) for dividing data into LPUs may include radius-based splitting, azimuth-based splitting, altitude (vertical)-based splitting, and cuboid-based splitting. In one embodiment of the present disclosure, the reference type information (motion_block_lpu_split_type) for dividing data into LPUs may be included in inter-prediction related option information (or referred to as inter-prediction related information).

[0404] When the reference type information (motion_block_lpu_split_type) for dividing the data into LPUs indicates a radius-based split, an azimuth-based split, or an altitude (or vertical)-based split, the LPU / PU splitter 53004 may split the point cloud data into LPUs by applying the reference information (e.g., motion_block_lpu_radius, motion_block_lpu_azimuth, or motion_block_lpu_elevation), and then signaling the applied value. According to an embodiment, the reference information for dividing the data into LPUs may include a radius size, an azimuth size, and an altitude (or vertical) size (e.g., motion_block_lpu_radius, motion_block_lpu_azimuth, or motion_block_lpu_elevation). In one embodiment of the present disclosure, the reference information (e.g., motion_block_lpu_radius, motion_block_lpu_azimuth, or motion_block_lpu_elevation) for dividing the data into LPUs may be included in the inter-prediction related option information.

[0405] When the reference type information (motion_block_lpu_split_type) for dividing the data into LPUs indicates a cuboid-based split, the LPU / PU splitter 53004 may split the point cloud data into LPUs by applying reference information (e.g., motion_block_size[k], where k ranges from 0 to 2, which represents each of the three dimensions), and then signaling the applied value. According to one embodiment of the present disclosure, block size information for splitting the data into LPUs may be included in the inter-frame prediction related option information. According to an embodiment, the LPU / PU splitter 53004 may apply an altitude-based horizontal splitting method or an octree node-based splitting method to the point cloud data based on the block size information to split the data into a plurality of blocks. Here, a block may be a region, an LPU, or a PU. In one example, when the block size information is {0, 0, block height size}, the LPU / PU splitter 53004 may apply an altitude-based horizontal splitting method to split the point cloud data into a plurality of LPUs. In another example, when the block size information is {octree node size = s, s, s}, the LPU / PU splitter 53004 may apply an octree node-based segmentation method to split the point cloud data into multiple LPUs.

[0406] That is, when the reference type information (motion_block_lpu_split_type) for dividing the data into LPUs indicates cuboid-based (cuboid segmentation), the LPU / PU splitter 53004 may receive three-dimensional block size information (motion_block_size), each of which may have different values. In addition, the LPU / PU splitter 53004 may receive block size information (motion_block_size[k]), split the point cloud data into LPUs by applying the received information, and then signal the applied value (i.e., block size information). According to an embodiment of the present disclosure, the cuboid segmentation method may support horizontal segmentation (or referred to as altitude-based horizontal segmentation), octree node-based segmentation, and road / object-based segmentation of LPU / PUs.

[0407] According to an embodiment, the LPU / PU splitter 53004 may specify a segmentation start position value to integrate the road / object segmentation method with the cuboid segmentation method. It may apply the segmentation start position value to the segmentation and then signal the applied segmentation start position information (motion_block_origin_pos[k]). According to an embodiment, the segmentation start position information (motion_block_origin_pos[k]) may be included in the inter-frame prediction related option information.

[0408] When there is a local motion vector corresponding to an LPU, the LPU / PU splitter 53004 may signal the motion vector. In addition, when a better RDO of the prediction value is obtained by applying the global motion vector, the local motion vector may not be applied to the LPU.

[0409] According to an embodiment, information indicating whether a motion vector exists (referred to as motion_vector_flag, pu_has_motion_vector_flag, or information indicating whether an applicable motion vector exists) may be signaled. In one embodiment of the present disclosure, information indicating whether a motion vector exists (motion_vector_flag or pu_has_motion_vector_flag) may be included in inter prediction related option information.

[0410] The LPU / PU splitter 53004 can specify whether motion is applied at any position of the LPU without checking the RDO of the prediction value, and signal whether motion is applied in the inter-frame prediction related option information.

[0411] When there is a local motion vector corresponding to the LPU and there are various changes, the LPU / PU splitter 53004 may also split the LPU into one or more PUs, and may perform a process of finding a local motion vector for each of the PUs. In addition, after calculating the gain by applying the global motion vector to each PU, the LPU / PU splitter 53004 may determine whether to apply the global motion vector to each PU. In one embodiment, information (pu_motion_compensation_type) indicating whether a motion vector (e.g., a global motion vector) is applied to a PU may be included in the inter prediction related option information.

[0412] The LPU / PU splitter 53004 may split the LPU into one or more PUs by applying the split reference order type information (motion_block_pu_split_type) for splitting the LPU into one or more PUs to the LPU and then signaling the applied split reference order type information (motion_block_pu_split_type). The split reference order type may include radius-based→azimuth-based→altitude (vertical)-based splitting, radius-based→altitude (vertical)-based→azimuth-based splitting, azimuth-based→radius-based→altitude (vertical)-based splitting, azimuth-based→altitude (vertical)-based splitting, azimuth-based→altitude (vertical)-based splitting, altitude (vertical)-based→radius-based→azimuth-based splitting, and altitude (vertical)-based→azimuth-based→radius-based splitting. In one embodiment of the present disclosure, the split reference order type information (motion_block_pu_split_type) for splitting the LPU into one or more PUs may be included in the inter-prediction related option information. In the present disclosure, altitude may be used interchangeably with vertical. Furthermore, altitude-based horizontal segmentation may be used interchangeably with altitude-based segmentation or vertical-based segmentation.

[0413] When geometric coding is performed based on an octree, the LPU / PU splitter 53004 may split the LPU in the PU by applying the octree-related reference order type information (Motion_block_pu_split_octree_type) for splitting into PUs to the octree, and then signaling the applied type information. The split reference order type may include splitting based on x→y→z, splitting based on x→z→y, splitting based on y→x→z, splitting based on y→z→x, splitting based on z→x→y, and splitting based on z→y→x. In one embodiment of the present disclosure, the octree-related reference order type information (Motion_block_pu_split_octree_type) for splitting into PUs is included in the inter-prediction related option information.

[0414] When the point cloud data or LPU is split into one or more PUs according to the reference type information (motion_block_pu_split_type) for division into PUs, the LPU / PU splitter 53004 can split the data or LPU into one or more PUs by applying reference information (e.g., motion_block_pu_radius, motion_block_pu_azimuth, motion_block_pu_elevation), and then signaling the applied value. The reference information for splitting may include the size of the radius, the size of the azimuth, and the size of the altitude (or vertical). Alternatively, in each step of splitting into PUs, the size can be reduced to half of the current size. In one embodiment of the present disclosure, information (e.g., motion_block_pu_radius, motion_block_pu_azimuth, motion_block_pu_elevation) as a reference for splitting into PUs is included in the inter-prediction related option information.

[0415] When there is a local motion vector corresponding to a PU and there are various changes, the LPU / PU splitter 53004 may perform a process of splitting the PU into one or more smaller PUs and finding a local motion vector. In this case, information indicating whether the PU has been further split into one or more smaller PUs may be signaled. In one embodiment of the present disclosure, information indicating whether the PU has been further split into one or more smaller PUs is included in the inter-prediction related option information.

[0416] When there is a local motion vector corresponding to the PU, the LPU / PU splitter 53004 signals the motion vector (pu_motion_vector_xyz). In addition, it may signal information indicating whether a motion vector exists (pu_has_motion_vector_flag). In one embodiment of the present disclosure, the motion vector and / or the information indicating whether a motion vector exists (pu_has_motion_vector_flag) may be included in the inter prediction related option information.

[0417] The LPU / PU splitter 53004 signals whether the block (or region) corresponding to the LPU / PU has been split. In one embodiment of the present disclosure, information indicating whether the block (or region) corresponding to the LPU / PU has been split is included in the inter-prediction related option information.

[0418] The LPU / PU splitter 53004 receiving the minimum PU size information (motion_block_pu_min_radius, motion_block_pu_min_azimuth, motion_block_pu_min_elevation) can only perform splitting / local motion vector search until the corresponding size and signal the corresponding value. Here, according to one embodiment, the corresponding value can be included in the inter-frame prediction related option information.

[0419] In this way, when the frame is a P frame, the LPU / PU splitter 53004 can split the points divided into slices into split areas such as LPU / PU to support inter-frame prediction, and can find and assign motion vectors corresponding to each split area. The LPU can be split based on the radius. In this case, motion_block_lpu_radius can be signaled to the inter-frame prediction related option information and sent to the decoder of the receiver. Alternatively, the LPU can be split by other criteria. In this case, the split can be applied by motion_block_lpu_split_type, and motion_block_lpu_split_type can be included in the inter-frame prediction related option information and sent to the decoder of the receiver. The PU can be split first based on altitude (or vertical), and additional splitting can be performed based on radius and azimuth. The split level can be changed according to the setting. Alternatively, the split can be performed only based on altitude (or vertical). Alternatively, the split order can be changed. In this case, the change may be applied by motion_block_pu_split_type, and motion_block_pu_split_type may be included in the inter prediction related option information and transmitted to the decoder of the receiver. For example, the splitting may be performed in the order of azimuth -> altitude (or vertical) -> radius, and the splitting method or splitting reference value, motion_block_pu_elevation, motion_block_pu_azimuth, or motion_block_pu_radius may be signaled in the inter prediction related option information.

[0420] In addition, when the frame is a P frame, the LPU / PU splitter 53004 can split the points divided into slices into split areas such as LPU / PU to support inter-frame prediction, and can find and assign motion vectors corresponding to each split area. In this case, it can be predicted by RDO whether it is beneficial to apply a local motion vector in the PU, only apply a global motion vector, or use a previous frame, and the prediction result can be applied to the PU. For example, when it is most beneficial to apply a global motion vector to the PU, the global motion vector can be applied to the PU, and information for identifying the application (pu_motion_compensation_type) can be signaled to the inter-frame prediction related option information and sent to the decoder of the receiver. That is, the motion vector can be applied to the PU according to an optimized application method. When there is an optimized application method and a local motion vector, the local motion vector can be signaled to the decoder.

[0421] Furthermore, the motion compensation application unit 53006 can determine, based on the inter-frame prediction related option information, whether to select a value obtained by applying the global motion vector to the PU or a value obtained by even applying the local motion vector or using a point of the previous frame, and perform motion compensation based on the determination.

[0422] In the present disclosure, part or all of the inter-frame prediction related option information may be signaled in a GPS, TPS, or geometry slice header. In addition, part of the inter-frame prediction related option information may be signaled in a geometry PU header. In one embodiment, the inter-frame prediction related option information may be processed by a signaling processor 61002.

[0423] As described above, the inter prediction related option information may include at least one of the following items: reference type information (motion_block_lpu_split_type) for splitting into LPUs, reference information for splitting into LPUs (e.g., motion_block_lpu_radius, motion_block_lpu_azimuth, motion_block_lpu_elevation or motion_block_size[k], motion_block_origin_pos[k]), information indicating the presence or absence of a motion vector (motion_vector_flag or pu_has_motion_vector_flag), split reference order type information (motion_block_pu_split_type) for splitting into PUs, and information for splitting into PUs. Octree-related reference order type information (motion_block_pu_split_octree_type), reference information for splitting into PUs (e.g., motion_block_pu_radius, motion_block_pu_azimuth, motion_block_pu_elevation), local motion vector information corresponding to the PU, information for identifying whether the global motion vector is applied to the PU (pu_motion_compensation_type), information indicating whether the block (or area) corresponding to the LPU / PU is partitioned, or minimum PU size information (e.g., motion_block_pu_min_radius, motion_block_pu_min_azimuth, motion_block_pu_min_elevation). The inter-prediction-related option information may also include information for identifying the patch to which the PU belongs, information for identifying the slice to which the PU belongs, information about the number of PUs included in the slice, and information for identifying each PU. Those skilled in the art may add, delete, or modify the information included in the inter-prediction-related option information in the present disclosure, so the implementation is not limited to the above examples.

[0424] Figure 21 is a block diagram illustrating an exemplary geometric encoding method based on LPU / PU splitting according to an embodiment.

[0425] exist Figure 21In the figure, steps 57001 to 57003 are the detailed operations of the LPU / PU splitter 53004, steps 57004 and 57005 are the detailed operations of the motion compensation application unit 53006, and step 57006 is the detailed operation of the geometric information inter-frame predictor 53007.

[0426] Specifically, in step 57001, a global motion vector may be searched. In step 57002, in order to apply the global motion vector found in step 57001, the point cloud data may be segmented into LPUs by a combination of one or more of a radius-based method, an azimuth-based method, and an altitude-based method. Alternatively, in step 57002, in order to apply the global motion vector found in step 57001, the point cloud data may be segmented into LPUs based on block size information. For example, based on the block size information, the point cloud data may be segmented into a plurality of LPUs by applying an altitude-based horizontal segmentation method or an octree node-based segmentation method to the point cloud data. In step 57003, when there is a local motion vector corresponding to the LPU and there are various changes, the LPU may be further segmented into one or more PUs, and a local motion vector may be searched within each of the segmented PUs. In steps 57001 to 57003, RDO may be applied to select the best (i.e., the best motion vector).

[0427] In addition, in steps 57001 to 57003, it is checked by RDO whether it is more beneficial to apply the global motion vector in the LPU or PU to apply the global motion vector in the LPU or PU, thereby determining whether to apply the global motion vector in the LPU or PU. The result (e.g., pu_motion_compensation_type) may be signaled in the inter-prediction related option information of the signaling information.

[0428] In step 57004, global motion compensation may be performed by applying the global motion vector to the LPU or PU according to pu_motion_compensation_type. According to pu_motion_compensation_type, global motion compensation may be skipped for the LPU or PU. In addition, in step 57005, local motion compensation may be performed by applying the local motion vector to the split PU. Local motion compensation may be skipped for the PU. In step 57006, octree-based inter-frame coding, prediction tree-based inter-frame coding, or triplet-based inter-frame coding may be performed based on the difference (or residual) of the prediction value between the current frame and the motion compensation reference frame (or non-motion compensation reference frame).

[0429] The geometry bit stream compressed and output by the geometry encoder 51006 based on intra-frame prediction or inter-frame prediction and the attribute bit stream compressed and output by the attribute encoder 51007 based on intra-frame prediction or inter-frame prediction are sent to the transmission processor 51008.

[0430] According to the embodiment, the transmission processor 51008 can execute Figure 8 The operations and / or sending methods of the transmission processor 8012 are the same or similar to the operations and / or sending methods of the transmission processor 8012, and perform the same or similar operations and / or sending methods as those of the transmission processor 8012. Figure 1 The operation and / or transmission method of the transmitter 10003 is the same as or similar to the operation and / or transmission method of the transmitter 10003. For details, reference will be made to Figure 1 or Figure 8 Description.

[0431] The transmission processor 51008 according to an embodiment may separately transmit the geometry bit stream output from the geometry encoder 51006, the attribute bit stream output from the attribute encoder 51007, and the signaling bit stream output from the signaling processor 51005, or may multiplex the bit streams into one bit stream for transmission.

[0432] The transmission processor 51008 according to an embodiment may encapsulate a bitstream into a file or a segment (eg, a stream segment), and then transmit the encapsulated bitstream through various networks such as a broadcast network and / or a broadband network.

[0433] The signaling processor 51005 according to the embodiment may generate and / or process signaling information and output it in the form of a bit stream to the transmission processor 51008. The signaling information generated and / or processed by the signaling processor 51005 will be provided to the geometry encoder 51006, the attribute encoder 51007 and / or the transmission processor 51008 for geometry encoding, attribute encoding and transmission processing. Alternatively, the signaling processor 51005 may receive signaling information generated by the geometry encoder 51006, the attribute encoder 51007 and / or the transmission processor 51008.

[0434] In the present disclosure, signaling information may be signaled and sent on a per-parameter set basis (sequence parameter set (SPS), geometry parameter set (GPS), attribute parameter set (APS), patch parameter set (TPS), etc.). In addition, signaling information may be signaled and sent based on a coding unit of each image (such as a slice or patch). In the present disclosure, the signaling information may include metadata (e.g., set values) related to the point cloud data, and may be provided to a geometry encoder 51006, an attribute encoder 51007, and / or a transport processor 51008 for geometry encoding, attribute encoding, and transport processing. Depending on the application, the signaling information may also be defined on the system side (e.g., file format, HTTP dynamic adaptive streaming (DASH), or MPEG media transport (MMT)), or on the wired interface side (e.g., High Definition Multimedia Interface (HDMI), DisplayPort, Video Electronics Standards Association (VESA), or CTA).

[0435] The method / apparatus according to the embodiment may signal relevant information to add / perform the operation of the embodiment. The signaling information according to the embodiment may be used by the sending device and / or the receiving device.

[0436] In one embodiment of the present disclosure, part or the entirety (or all) of the inter-prediction related option information to be used for inter-prediction of geometry information may be signaled in at least one of a geometry parameter set, a patch parameter set, or a geometry slice header. Alternatively, part of the inter-prediction related option information may be signaled in a separate geometry PU header (referred to as geom_pu_header).

[0437] Figure 22 is a diagram showing another exemplary point cloud receiving apparatus according to an embodiment.

[0438] The point cloud receiving device according to the embodiment may include a receiving processor 61001, a signaling processor 61002, a geometry decoder 61003, an attribute decoder 61004, and a post-processor 61005. According to the embodiment, the geometry decoder 61003 and the attribute decoder 61004 may be referred to as a point cloud video decoder. According to the embodiment, the point cloud video decoder may be referred to as a PCC decoder, a PCC decoding unit, a point cloud decoder, a point cloud decoding unit, etc.

[0439] Figure 22 The point cloud receiving device can correspond to Figure 1 The receiving device 10004, the receiver 10005, the point cloud video decoder 10006, Figure 2 Transmission 20002-Decoding 20003-Rendering 20004, Figure 7 Point cloud video decoder, Figure 9The receiving device Figure 10 devices, etc. Figure 22 Each component in the corresponding figures may correspond to software, hardware, a processor connected to a memory, and / or a combination thereof.

[0440] The receiving processor 61001 according to the embodiment may receive a single bitstream, or may receive a geometry bitstream (also referred to as a geometry information bitstream), an attribute bitstream (also referred to as an attribute information bitstream), and a signaling bitstream respectively. When receiving a file and / or a fragment, the receiving processor 61001 according to the embodiment may decapsulate the received file and / or fragment and output the decapsulated file and / or fragment as a bitstream.

[0441] When receiving (or decapsulating) a single bitstream, the receiving processor 61001 according to the embodiment may demultiplex the geometry bitstream, the attribute bitstream and / or the signaling bitstream from the single bitstream. The receiving processor 61001 may output the demultiplexed signaling bitstream to the signaling processor 61002, the geometry bitstream to the geometry decoder 61003, and the attribute bitstream to the attribute decoder 61004.

[0442] When receiving (or decapsulating) a geometry bitstream, an attribute bitstream and / or a signaling bitstream respectively, the receiving processor 61001 according to an embodiment may pass 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.

[0443] The signaling processor 61002 may parse signaling information (e.g., information contained in SPS, GPS, APS, TPS, metadata, etc.) from an input signaling bit stream, process the parsed information, and provide the processed information to the geometry decoder 61003, the attribute decoder 61004, and the post-processor 61005. In another embodiment, the signaling information contained in the geometry slice header and / or the attribute slice header may also be parsed by the signaling processor 61002 before decoding the corresponding slice data. That is, when the point cloud data is segmented into tiles and / or slices at the transmitting side, the TPS includes the number of slices included in each tile, so the point cloud video decoder according to the embodiment may check the number of slices and quickly parse the information for parallel decoding.

[0444] Therefore, the point cloud video decoder according to the present disclosure can quickly parse the bitstream containing point cloud data when it receives the SPS with a reduced amount of data. The receiving device can decode the patch when it is received, and can decode each slice based on the GPS and APS included in each patch. Thereby, the decoding efficiency can be maximized. Alternatively, the receiving device can maximize the decoding efficiency by performing inter-frame prediction decoding on the point cloud data for each LPU / PU based on the inter-frame prediction related option information signaled in the GPS, TPS, geometry slice header and / or geometry PU header.

[0445] That is, the geometry decoder 61003 can perform a decode operation on the compressed geometry bitstream based on the signaling information (e.g., geometry-related parameters). Figure 19 The geometry is reconstructed by performing the reverse process of the operation of the geometry encoder 51006. The geometry restored (or reconstructed) by the geometry decoder 61003 is provided to the attribute decoder 61004. Here, the geometry-related parameters may include inter-prediction-related option information to be used for inter-prediction reconstruction of the geometry information.

[0446] The attribute decoder 61004 can perform a decode on the compressed attribute bitstream based on the signaling information (e.g., attribute related parameters) and the reconstructed geometry. Figure 19 The attributes are restored by performing the reverse process of the operation of the attribute encoder 51007. According to an embodiment, when the point cloud data is divided into tiles and / or slices at the sending side, the geometry decoder 61003 and the attribute decoder 61004 perform geometry decoding and attribute decoding on a tile-by-tile and / or slice-by-slice basis. According to an embodiment, once the point cloud data is divided into LPUs and / or PUs at the sending side, the geometry decoder 61003 and the attribute decoder 61004 may perform geometry decoding and attribute decoding on a per-LPU and / or PU basis.

[0447] Figure 23 is a diagram illustrating an example of the operation of the geometry decoder 61003 and the attribute decoder 61004 according to an embodiment.

[0448] Included in Figure 23 The geometric information entropy decoder 63001, the dequantization processor 63007 and the coordinate inverse transformer 63008 in the geometric decoder 61003 can perform Figure 7 Some or all of the operations of the arithmetic decoder 11000 and the inverse coordinate transform unit 11004, or performing Figure 9 The position reconstructed by the geometry decoder 61003 is output to the post-processor 61005.

[0449] According to an embodiment, when inter-frame prediction related option information for inter-frame prediction reconstruction of geometric information is signaled through at least one of a geometry parameter set (GPS), a patch parameter set (TPS), a geometry slice header and a geometry PU header, it can be acquired by the signaling processor 61002 and provided to the geometry decoder 61003, or can be directly acquired by the geometry decoder 61003.

[0450] According to an embodiment, the inter-frame prediction related option information may include at least one of the following items: reference type information (motion_block_lpu_split_type) for splitting into LPUs, information used as a reference for LPU splitting (for example, motion_block_lpu_radius, motion_block_lpu_azimuth, motion_block_lpu_elevation, or motion_block_size[k]), information indicating whether there is an applicable motion vector (motion_vector_flag or pu_has_motion_vector_flag), splitting reference order type information (motion_block_pu_split_type) for splitting into PUs, and octree-related reference order type for splitting into PUs. Information (motion_block_pu_split_octree_type), information used as a reference for splitting into PUs (e.g., motion_block_pu_radius, motion_block_pu_azimuth, or motion_block_pu_elevation), local motion vector information corresponding to the PU, information for identifying whether a global motion vector is applied to the PU (pu_motion_compensation_type), information indicating whether a block (or region) corresponding to an LPU / PU is split, or minimum PU size information (e.g., motion_block_pu_min_radius, motion_block_pu_min_azimuth, or motion_block_pu_min_elevation). The inter-prediction related option information may also include information for identifying the patch to which the PU belongs, information for identifying the slice to which the PU belongs, information about the number of PUs included in the slice, and information for identifying each PU. It may also include split start position information (motion_block_origin_pos[k]) as reference information for splitting into LPUs. Those skilled in the art may add, delete, or modify the information included in the prediction related option information in the present disclosure, so the implementation is not limited to the above examples.

[0451] That is, the geometry information entropy decoder 63001 performs entropy decoding on the input geometry bit stream.

[0452] According to an embodiment, when intra-frame prediction-based coding is applied to geometric information at the transmitting side, the geometry decoder 61003 performs intra-frame prediction-based reconstruction on the geometric information. On the other hand, when inter-frame prediction-based coding is applied to geometric information at the transmitting side, the geometry decoder 61003 performs inter-frame prediction-based reconstruction on the geometric information.

[0453] To this end, an element assigned reference numeral 63002 (or referred to as a determiner) checks whether intra-prediction-based encoding or inter-prediction-based encoding is applied to the geometry information.

[0454] When the determiner 63002 determines that intra-frame prediction-based encoding is applied to the geometric information, the entropy-decoded geometric information is provided to the geometric information intra-frame prediction reconstructor 63003. On the other hand, when the determiner 63002 determines that inter-frame prediction-based encoding is applied to the geometric information, the entropy-decoded geometric information is output to the LPU / PU splitter 63004.

[0455] The geometry information intra prediction reconstructor 63003 decodes and reconstructs the geometry information based on the intra prediction method. That is, the geometry information intra prediction reconstructor 63003 can reconstruct the geometry information predicted by the geometry intra prediction coding. The intra prediction coding method can include octree-based coding, prediction tree-based coding, and triplet-based coding.

[0456] When the frame of geometric information to be decoded is a P frame, the LPU / PU splitter 63004 splits the reference frame (or patch or slice) into LPU / PU using inter-prediction related option information that signals to support reconstruction based on inter-prediction and indicates LPU / PU splitting.

[0457] The motion compensation application unit 63005 according to an embodiment may generate predicted geometric information by applying a motion vector (eg, a global motion vector and / or a local motion vector) to an LPU / PU split from a reference frame (or a patch or a slice). Here, the motion vector may be received through signaling information.

[0458] The motion compensation applying unit 63005 may perform motion compensation by applying a global motion vector to the PU according to pu_motion_compensation_type included in the inter prediction related option information.

[0459] The motion compensation applying unit 63005 may perform motion compensation by applying a local motion vector to the PU according to pu_motion_compensation_type included in the inter prediction related option information.

[0460] The motion compensation applying unit 63005 may skip motion compensation for the PU according to pu_motion_compensation_type included in the inter prediction related option information.

[0461] The geometric information inter-frame prediction reconstructor 63006 according to the embodiment decodes and reconstructs the geometric information based on the inter-frame prediction method. That is, the geometric information encoded by the geometric inter-frame prediction can be reconstructed based on the geometric information of the motion compensation reference frame (or non-motion compensation reference frame). The inter-frame prediction encoding method according to the embodiment may include octree-based inter-frame encoding, prediction tree-based inter-frame encoding method, and triplet-based inter-frame encoding.

[0462] The geometric information reconstructed by the geometric information intra-frame prediction reconstructor 63003 or the geometric information reconstructed by the geometric information inter-frame prediction reconstructor 63006 is input to the geometric information inverse transform / dequantization processor 63007.

[0463] The geometric information inverse transform / dequantization processor 63007 performs the inverse process of the transform performed by the geometric information transform / quantization processor 51003 of the transmitter on the reconstructed geometric information, and the result can be multiplied by the scale (=geometric quantization value) to generate the reconstructed geometric information by dequantization. That is, the geometric information transform / dequantization processor 63007 can dequantize the geometric information by applying the scale (scale=geometric quantization value) included in the signaling information to the x, y, and z values ​​of the geometric position of the reconstructed point.

[0464] The coordinate inverse transformer 63008 may perform an inverse process of the coordinate transformation performed by the coordinate transformation unit 51002 of the transmitter on the dequantized geometric information. For example, the coordinate inverse transformer 63008 may reconstruct the changed xyz axis on the transmission side or inversely transform the transformed coordinates into xyz rectangular coordinates.

[0465] According to an embodiment, the geometry information dequantized by the geometry information transform / dequantization processor 63007 is stored in the reference frame buffer 63009 through a geometry reconstruction process, and is also output to the attribute decoder 61004 for attribute decoding.

[0466] According to an embodiment, the attribute residual information entropy decoder 65001 of the attribute decoder 61004 can perform entropy decoding on the input attribute bitstream.

[0467] According to an embodiment, when encoding based on intra-frame prediction is applied to attribute information at the transmitting side, the attribute decoder 61004 performs reconstruction based on intra-frame prediction on the attribute information. On the other hand, when encoding based on inter-frame prediction is applied to attribute information at the transmitting side, the attribute decoder 61004 performs reconstruction based on inter-frame prediction on the attribute information.

[0468] To this end, an element assigned with reference numeral 65002 (or referred to as a determiner) checks whether encoding based on intra-frame prediction or encoding based on inter-frame prediction is applied to the attribute information.

[0469] When the determiner 65002 determines that intra-frame prediction-based encoding is applied to the attribute information, the entropy-decoded attribute information is provided to the attribute information intra-frame prediction reconstructor 65004. On the other hand, when the determiner 65002 determines that inter-frame prediction-based encoding is applied to the attribute information, the entropy-decoded attribute information is provided to the attribute information inter-frame prediction reconstructor 65003.

[0470] The attribute information inter-frame prediction reconstructor 65003 decodes and reconstructs the attribute information based on the inter-frame prediction method, that is, reconstructs the attribute information predicted by the inter-frame prediction coding.

[0471] The attribute information intra prediction reconstructor 65004 decodes and reconstructs the attribute information based on the intra prediction method. That is, the attribute information predicted by the intra prediction coding is reconstructed. The intra coding method may include predictive transform coding, lifting transform coding and RAHT coding.

[0472] According to an embodiment, the reconstructed attribute information may be stored in the reference frame buffer 63009. The geometry information and attribute information stored in the reference frame buffer 63009 may be provided to the geometry information inter-frame prediction reconstructor 63003 and the attribute information inter-frame prediction reconstructor 65003 as a previous reference frame.

[0473] The inverse color transform processor 65005 performs inverse transform encoding for inverse transform of the color value (or texture) included in the reconstructed attribute information, and then outputs the attribute to the post-processor 61005. The inverse color transform processor 65005 performs the inverse transform encoding with respect to the color value (or texture) included in the reconstructed attribute information. Figure 7 The color inverse converter 7010 or Figure 9 The operation and / or inverse transform encoding of the color inverse transform processor 9010 is the same as or similar to the operation and / or inverse transform encoding.

[0474] The post-processor 61005 can reconstruct the 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. In addition, when the reconstructed point cloud data is in tile and / or slice units, the post-processor 61005 can perform a process opposite to the spatial segmentation on the transmission side based on the signaling information.

[0475] Next, the LPU / PU splitter 63004 of the geometry decoder 61003 will be described with respect to signaling. In one embodiment, the signaling processor 61002 reconstructs the inter-frame prediction related option information received in at least one of the GPS, TPS, geometry slice header and / or geometry PU header, and provides it to the LPU / PU splitter 63004.

[0476] The LPU / PU splitter 63004 may split the reference frame (or patch or slice) into LPUs by applying reference type information (motion_block_lpu_split_type) for splitting the reference frame (or patch or slice) into LPUs to the reference frame, and then reconstruct the motion vector to be transmitted. In one embodiment of the present disclosure, the reference type information (motion_block_lpu_split_type) for splitting into LPUs is received in at least one of the GPS, TPS, or geometry slice headers.

[0477] When splitting a reference frame (or a patch or a slice) by applying reference type information (motion_block_lpu_split_type) for splitting into LPUs, the LPU / PU splitter 63004 may split the reference frame (or a patch or a slice) into LPUs by applying reference information (e.g., motion_block_lpu_radius, motion_block_lpu_azimuth, motion_block_lpu_elevation, or motion_block_size[k]). According to an embodiment, the reference information for splitting into LPUs may include a radius size, an azimuth size, an altitude (or vertical) size, and a block size (e.g., motion_block_lpu_radius, motion_block_lpu_azimuth, motion_block_lpu_elevation, or motion_block_size[k]). The reference information for splitting into LPUs may also include splitting start position information (motion_block_origin_pos[k]). In one embodiment of the present disclosure, reference information (eg, motion_block_lpu_radius, motion_block_lpu_azimuth, motion_block_lpu_elevation, or motion_block_size[k]) for splitting into LPUs may be received in a GPS, TPS, or geometry slice header.

[0478] In one embodiment of the present disclosure, when the reference type information for splitting into LPUs is cuboid splitting, the LPU / PU splitter 63004 can reconstruct the block size information (motion_block_size) sent in three dimensions, and split the reference frame (or patch or slice) into LPUs by applying the reconstructed block size information. The cuboid splitting method described in the present disclosure can support an altitude-based horizontal splitting method, an octree node-based splitting method, and a road / object-based splitting LPU / PU.

[0479] In addition, in order to integrate the road / object segmentation method with the cuboid segmentation method, the LPU / PU splitter 63004 can reconstruct the splitting start position value (motion_block_origin_pos) sent in three dimensions, and split the reference frame (or patch or slice) into LPUs by applying the reconstructed splitting start position value.

[0480] When the information indicating whether there is a motion vector corresponding to the LPU (motion_vector_flag or pu_has_motion_vector_flag) indicates that there is an applicable motion vector, the LPU / PU splitter 63004 can reconstruct the motion vector. In one embodiment of the present disclosure, the information indicating whether there is a motion vector corresponding to the LPU (motion_vector_flag or pu_has_motion_vector_flag) and the corresponding motion vector may be received in at least one of the GPS, TPS, geometry slice header, or geometry PU header. In another embodiment of the present disclosure, the information indicating whether there is a motion vector corresponding to the LPU (motion_vector_flag or pu_has_motion_vector_flag) and the corresponding motion vector may be received in the geometry PU header.

[0481] When the information indicating whether to split the LPU into PUs indicates to split the LPU into PUs, the LPU / PU splitter 63004 may also split the LPU into one or more PUs.

[0482] The LPU / PU splitter 63004 may split the LPU into one or more PUs by applying reference order type information (motion_block_pu_split_type) for splitting into PUs to the LPU. The splitting reference order type may include radius-based→azimuth-based→altitude (vertical)-based splitting, radius-based→altitude (vertical)-based→azimuth-based splitting, azimuth-based→radius-based→altitude (vertical)-based splitting, azimuth-based→altitude (vertical)-based splitting, azimuth-based→altitude (vertical)-based→radius-based splitting, altitude (vertical)-based→radius-based→azimuth-based splitting, and altitude (vertical)-based→azimuth-based→radius-based splitting. In one embodiment of the present disclosure, the reference order type information (motion_block_pu_split_type) for splitting into PUs may be received in at least one of the GPS, TPS, or geometry slice headers.

[0483] When octree-based geometry coding is applied, the LPU / PU splitter 63004 may split the octree structure into one or more PUs based on an octree-related reference order type (motion_block_pu_split_octree_type) for splitting into PUs. The octree-related reference order type for splitting into PUs may include splitting based on x→y→z, splitting based on x→z→y, splitting based on y→x→z, splitting based on y→z→x, splitting based on z→x→y, and splitting based on z→y→x. In one embodiment of the present disclosure, the octree-related reference order type (motion_block_pu_split_octree_type) for splitting into PUs is received in at least one of the GPS, TPS, or geometry slice headers.

[0484] When splitting the LPU into PUs according to the reference type information (motion_block_pu_split_type) for splitting into PUs, the LPU / PU splitter 63004 can split the LPU into one or more PUs by applying information (e.g., motion_block_pu_radius, motion_block_pu_azimuth, or motion_block_pu_elevation) as a reference to the LPU. The information used as a reference for splitting may include radius size, azimuth size, altitude (or vertical) size, and block size information. In one embodiment of the present disclosure, the information used as a reference for splitting into PUs (e.g., motion_block_pu_radius, motion_block_pu_azimuth, or motion_block_pu_elevation) may be included in at least one of the GPS, TPS, or geometry slice headers and received.

[0485] The LPU / PU splitter 63004 may split the PU again by applying minimum PU size information (e.g., motion_block_pu_min_radius, motion_block_pu_min_azimuth, or motion_block_pu_min_elevation) to the PU. In one embodiment of the present disclosure, the minimum PU size information (e.g., motion_block_pu_min_radius, motion_block_pu_min_azimuth, or motion_block_pu_min_elevation) may be included in at least one of the GPS, TPS, or geometry slice headers and received.

[0486] In the present disclosure, the inter prediction related option information may include at least one of the following items: reference type information (motion_block_lpu_split_type) for splitting into LPUs, information used as a reference for splitting into LPUs (e.g., motion_block_lpu_radius, motion_block_lpu_azimuth, motion_block_lpu_elevation, motion_block_size[k], motion_block_origin_pos[k]), information indicating whether there is a motion vector (motion_vector_flag or pu_has_motion_vector_flag), split reference order type information (motion_block_pu_split_type) for splitting into PUs, and information used for splitting into PUs. Octree-related reference order type information (motion_block_pu_split_octree_type), information used as a reference for splitting into PUs (e.g., motion_block_pu_radius, motion_block_pu_azimuth, or motion_block_pu_elevation), local motion vector information corresponding to the PU, information for identifying whether a global motion vector is applied to the PU (pu_motion_compensation_type), information indicating whether a block (or region) corresponding to the LPU / PU is split, and minimum PU size information (e.g., motion_block_pu_min_radius, motion_block_pu_min_azimuth, or motion_block_pu_min_elevation). In the present disclosure, those skilled in the art may add, delete, or modify the information included in the inter prediction-related option information, and thus the embodiments are not limited to the above examples.

[0487] The motion compensation application unit 63005 can perform motion compensation according to the pu_motion_compensation_type included in the inter-frame prediction related option information. For example, based on pu_motion_compensation_type, the motion compensation application unit 63005 can identify whether to select the value of the global motion vector applied to the PU, whether to select the value of the local motion vector to be further applied, or whether to use the point of the previous frame. According to the identification result, motion compensation can be performed for the PU. That is, the motion compensation application unit 63005 can apply the motion vector to the segmented LPU / PU according to the optimization application method (pu_motion_compensation_type) to generate a predicted point cloud. This process can be performed before geometry encoding, or can be performed together with geometry encoding when the PU unit matches the geometry encoding execution unit.

[0488] Figure 24 is a block diagram illustrating an example of a method of decoding geometry based on LPU / PU splitting according to an embodiment.

[0489] exist Figure 24 , step 67001 is the detailed operation of the geometry information entropy decoder 63001, step 67003 is the detailed operation of the LPU / PU splitter 63004, and steps 67002 and 67004 are the detailed operations of the motion compensation application unit 67005. Step 67006 is the detailed operation of the geometry information inter-frame prediction reconstructor 63006.

[0490] That is, entropy decoding is performed on the geometry bitstream in step 67001. An example of entropy decoding is arithmetic decoding.

[0491] In step 67002, global motion compensation is performed by applying a global motion vector to entropy-decoded geometric information. In step 67003, the entropy-decoded geometric information is split into LPU / PU. In step 67004, local motion compensation can be performed by applying a local motion vector to the split LPU / PU. Local motion compensation can be skipped. In addition, in step 67004, global motion compensation can be performed by applying a global motion vector to the LPU / PU. Global motion compensation can be skipped. In this regard, whether global motion compensation is performed by applying a global motion vector to the LPU and / or PU can be identified based on the pu_motion_compensation_type included in the inter-frame prediction related option information. In one embodiment of the present disclosure, the global motion vector and / or the local motion vector are included and received in at least one of the GPS, TPS, the geometry slice header, or the geometry PU header. The LPU / PU splitting has been described in detail above, and its description will be skipped below.

[0492] A previous reference frame (i.e., reference point cloud) stored in a reference frame buffer may be provided to step 67002 to perform global motion compensation.

[0493] For local motion compensation, the world coordinates or vehicle coordinates of a previous reference frame (ie, reference point cloud) that have undergone global motion compensation in step 67002 may be provided to step 67004 .

[0494] In step 67004, the geometric information of local motion compensation is decoded and reconstructed based on inter-frame prediction.

[0495] Figure 25 An example of a bit stream structure for transmitted / received point cloud data according to an embodiment is illustrated.

[0496] According to an embodiment, in Figure 25 In the context of Hadoop, the term "slice" can be referred to as "data unit".

[0497] In addition, Figure 25 In the description, each abbreviation has the following meaning. Each abbreviation may be referred to by another term within the scope of equivalent meaning. SPS: sequence parameter set; GPS: geometry parameter set; APS: attribute parameter set; TPS: patch parameter set; Geom: geometry bitstream = geometry slice header + [geometry PU header + geometry PU data] | geometry slice data); Attr: attribute (attribute bitstream = attribute data unit header + [attribute PU header + attribute PU data] | attribute data unit data).

[0498] The present disclosure may signal relevant information in order to add / perform the embodiments described so far. The signaling information according to the embodiments may be used for a point cloud video encoder on the transmitting side or a point cloud video decoder on the receiving side.

[0499] The point cloud video encoder according to the embodiment may generate a point cloud video by encoding the geometric information and the attribute information as described above. Figure 25 In addition, signaling information related to the point cloud data may be generated and processed in at least one of a geometry encoder, an attribute encoder, or a signaling processor of the point cloud video encoder, and may be included in the bitstream.

[0500] As an example, a point cloud video encoder configured to perform geometry encoding and / or attribute encoding may generate Figure 25 In addition, the signaling information related to the point cloud data can be generated and processed by the metadata processor of the point cloud data sending device and included in the Figure 25 The point cloud shown.

[0501] The signaling information according to the embodiment may be received / obtained by at least one of a geometry decoder, an attribute decoder or a signaling processor of a point cloud video decoder.

[0502] A bitstream according to an embodiment may be divided into a geometry bitstream, an attribute bitstream, and a signaling bitstream and transmitted / received, or one combined bitstream may be transmitted / received.

[0503] When the geometry bitstream, attribute bitstream and signaling bitstream according to the embodiment are configured as one bitstream, the bitstream may include one or more sub-bitstreams. The bitstream according to the embodiment may include a sequence parameter set (SPS) for sequence level signaling, a geometry parameter set (GPS) for signaling geometry information encoding, one or more attribute parameter sets (APS) (APS0, APS1) for signaling attribute information encoding, a patch parameter set (TPS) for patch level signaling, and one or more slices (slice 0 to slice n). That is, the bitstream of point cloud data according to the embodiment may include one or more patches, and each of the patches may be a group of slices including one or more slices (slice 0 to slice n). The TPS according to the embodiment may contain information about each of the one or more patches (e.g., height / size information and coordinate value information about the bounding box). Each slice may include a geometry bitstream (Geom0) and one or more attribute bitstreams (Attr0 and Attr1). For example, the first slice (Slice 0) may include one geometry bitstream (Geom0) and one or more attribute bitstreams (Attr0, Attr1).

[0504] Each slice or geometry bitstream (or referred to as geometry slice) may consist of a geometry slice header and one or more geometry PUs (Geom PU0, Geom PU1). Each geometry PU may consist of a geometry PU header (geom PU header) and geometry PU data (geom PU data).

[0505] Each attribute bitstream (or attribute slice) in each slice may consist of an attribute slice header and one or more attribute PUs (Attr PU0, Attr PU1). Each attribute PU may consist of an attribute PU header (attr PU header) and attribute PU data (attr PU data).

[0506] A part or all of the inter prediction related option information according to an embodiment may be added to the GPS and / or TPS and signaled in the GPS and / or TPS.

[0507] A part or all of the inter prediction related option information according to an embodiment may be added to a geometry slice header for each slice and signaled in the geometry slice header.

[0508] Part or all of the inter prediction related option information according to the embodiments may be signaled in the geometry PU header.

[0509] According to an embodiment, parameters required for encoding and / or decoding of point cloud data may be newly defined in a parameter set of point cloud data (e.g., SPS, GPS, APS, TPS (or referred to as a patch list), etc.) and / or a header of a corresponding slice. For example, these parameters may be added to GPS in encoding and / or decoding of geometric information, and may be added to patch (TPS) and / or slice headers in patch-based encoding and / or decoding. In addition, when PU-based encoding and / or decoding is performed, parameters may be added to a geometry PU header and / or an attribute PU header.

[0510] like Figure 25 As shown, the bit stream of the point cloud data is divided into tiles, slices, LPUs and / or PUs so that the point cloud data can be divided into areas to be processed. The areas of the bit stream may have different levels of importance. Therefore, when the point cloud data is divided into tiles, different filters (coding methods) or different filter units may be applied to the corresponding tiles. When the point cloud data is divided into slices, different filters or different filter units may be applied to the corresponding slices. In addition, when the point cloud data is divided into PUs, different filters and different filter units may be applied to the PUs respectively.

[0511] By following Figure 25 The bitstream structure shown transmits point cloud data, which can allow the transmitting device according to the implementation to apply encoding operations differently according to the importance level and use a good quality encoding method for important areas. In addition, it can support efficient encoding and transmission according to the characteristics of point cloud data and provide attribute values ​​according to user needs.

[0512] Since the receiving device according to the embodiment receives the Figure 25 The point cloud data of the bitstream structure shown in the figure can be used to apply different filtering (decoding methods) to the corresponding areas (divided into tiles or slices) according to the processing capability of the receiving device, rather than applying complex decoding (filtering) methods to the entire point cloud data. Therefore, better image quality can be provided for areas that are important to the user, and appropriate latency can be ensured in the system.

[0513] As described above, tiles or slices are provided to process point cloud data by segmenting the point cloud data into regions. When segmenting the point cloud data into regions, an option to generate a different set of neighbor points for each region can be configured. Thus, a selection method with low complexity and slightly lower reliability, or a selection method with high complexity and high reliability can be provided.

[0514] According to an embodiment, at least one of the GPS, TPS, geometry slice header, or geometry PU header may include part or all of the inter-prediction related option information. According to an embodiment, the inter-prediction related option information (or referred to as inter-prediction related information) may include reference type information (motion_block_lpu_split_type) for splitting into LPUs, information used as a reference for splitting into LPUs (e.g., motion_block_lpu_radius, motion_block_lpu_azimuth, motion_block_lpu_elevation, motion_block_size[k], motion_block_origin_pos[k]), information indicating whether there is a motion vector (motion_vector_flag or pu_has_motion_vector_flag), split reference order type information (motion_block_split_type) for splitting into PUs, and information indicating whether there is a motion vector (motion_vector_flag or pu_has_motion_vector_flag). lock_pu_split_type), octree-related reference order type information (motion_block_pu_split_octree_type) for splitting into PUs, information used as a reference for splitting into PUs (e.g., motion_block_pu_radius, motion_block_pu_azimuth, or motion_block_pu_elevation), local motion vector information corresponding to the PU, information indicating whether a block (or region) corresponding to the LPU / PU is split, and minimum PU size information (e.g., motion_block_pu_min_radius, motion_block_pu_min_azimuth, or motion_block_pu_min_elevation). In addition, the inter-prediction related option information may also include information for identifying a patch to which a PU belongs, information for identifying a slice to which a PU belongs, information about the number of PUs included in a slice, and information for identifying each PU.

[0515] A field used in the syntax of the present disclosure as described below may have the same meaning as a parameter or an element.

[0516] Figure 26The syntax structure of a geometry parameter set (geometry_parameter_set()) (GPS) including inter prediction related option information according to an embodiment is shown. The name of the signaling information can be understood within the scope of the meaning and function of the signaling information.

[0517] exist Figure 26 The gps_geom_parameter_set_id field provides an identifier for GPS for reference by other syntax elements.

[0518] The gps_seq_parameter_set_id field specifies the value of sps_seq_parameter_set_id for the active SPS.

[0519] The geom_tree_type field indicates the encoding type of the geometric information. For example, geom_tree_type equal to 0 may indicate that the geometric information (ie, position information) is encoded using an octree, and geom_tree_type equal to 1 may indicate that the information is encoded using a prediction tree.

[0520] According to an embodiment, the GPS may include a motion_block_lpu_split_type field for each LPU.

[0521] The motion_block_lpu_split_type field may specify a reference type of LPU splitting applied to a frame. For example, among the values ​​of motion_block_lpu_split_type, 0 may indicate a radius-based LPU splitting, 1 may indicate an azimuth-based LPU splitting, 2 may indicate an altitude (or vertical)-based LPU splitting, and 3 may indicate a cuboid LPU splitting. Here, the cuboid LPU splitting may be referred to as an integrated LPU splitting method or a cuboid splitting method. In addition, the altitude (or vertical)-based LPU splitting may be referred to as an altitude-based horizontal LPU splitting method, an altitude-based horizontal splitting method, or a horizontal splitting method.

[0522] When the value of the motion_block_lpu_split_type field is 0, the GPS may further include a motion_block_lpu_radius field. The motion_block_lpu_radius field may specify a radius size used as a reference for LPU splitting applied to a frame.

[0523] When the value of the motion_block_lpu_split_type field is 1, the GPS may further include a motion_block_lpu_azimuth field. The motion_block_lpu_azimuth field may specify an azimuth size used as a reference for LPU splitting applied to a frame.

[0524] When the value of the motion_block_lpu_split_type field is 2, the GPS may further include a motion_block_lpu_elevation field. The motion_block_lpu_elevation field may specify an altitude size used as a reference for LPU splitting applied to a frame.

[0525] When the value of the motion_block_lpu_split_type field is 3, the GPS may further include a motion_block_size[k] field. The motion_block_size[k] field may specify the size of a motion block used as a reference for the LPU split applied to the frame. Here, a motion block may be referred to as a region, an LPU, or a PU. And, k is a value for setting the block size information (motion_block_size) as a 3D coordinate, and each coordinate value may be unrestricted. That is, k has a value between 0 and 2 representing 3D dimensions, respectively. For example, when the value of the motion_block_size[k] field is 0, the block size in the kth dimension is equal to the size of the current slice bounding box in the kth dimension.

[0526] When the value of the motion_block_lpu_split_type field is 3, the GPS may further include a motion_block_origin_pos[k] field. The motion_block_origin_pos[k] field may specify a value of a starting position of a motion block used as a reference for LPU splitting applied to a frame. Here, k has a value in the range of 0 to 2, respectively indicating 3D dimensions. The motion_block_origin_pos[k] field is signaled to integrate and support the road / object splitting method and the cuboid splitting.

[0527] In the present disclosure, a motion_block_lpu_radius field, a motion_block_lpu_azimuth field, a motion_block_lpu_elevation field, a motion_block_size[k] field, and / or a motion_block_origin_pos[k] field are referred to as reference information for splitting into LPUs.

[0528] The GPS according to an embodiment may include at least one of a motion_block_pu_split_octree_type field, a motion_block_pu_split_type field, a motion_block_pu_radius field, a motion_block_pu_azimuth field, a motion_block_pu_elevation field, a motion_block_pu_min_radius field, a motion_block_pu_min_azimuth field, or a motion_block_minth field for each PU.

[0529] For example, when geom_tree_type is equal to 0 (ie, it indicates that the geometry information (ie, the position information) is encoded using an octree), GPS includes a motion_block_pu_split_octree_type field.

[0530] When the geom_tree_type field is equal to 1 (ie, it indicates that the geometric information (ie, location information) is encoded using a prediction tree), GPS includes a motion_block_pu_split_type field, a motion_block_pu_radius field, a motion_block_pu_azimuth field, a motion_block_min_azi_elevation field, a motion_block_muth field, a motion_block_radius field, and a motion_block_pu_min_elevation field.

[0531] The motion_block_pu_split_octree_type field indicates octree-related reference order type information for partitioning into PUs when geometry coding is performed based on an octree. That is, when geometry coding is applied based on an octree applied to a frame, the motion_block_pu_split_octree_type field specifies a reference order type for partitioning into PUs.

[0532] For example, among the values ​​of the motion_block_pu_split_octree_type field, 0 may indicate a split application based on x→y→z, 1 may indicate a split application based on x→z→y, and 2 may indicate a split application based on y→x→z. 3 may indicate a split application based on y→z→x, 4 may indicate a split application based on z→x→y, and 5 may indicate a split application based on z→y→x.

[0533] The motion_block_pu_split_type field is called split reference order type information for splitting an LPU into PUs and may specify a reference type for splitting an LPU into PUs applied to a frame.

[0534] For example, among the values ​​of the motion_block_pu_split_type field, 0 may indicate that a radius-based→azimuth-based→altitude-based split is applied, 1 may indicate that a radius-based→altitude-based→azimuth-based split is applied, and 2 may indicate that an azimuth-based→radius-based→altitude-based split is applied. 3 may indicate that an azimuth-based→altitude-based→radius-based split is applied, 4 may indicate that an altitude-based→radius-based→azimuth-based split is applied, and 5 may indicate that an altitude-based→azimuth-based→radius-based split is applied.

[0535] The motion_block_pu_radius field may specify the size of a radius as a reference for PU splitting applied to a frame.

[0536] The motion_block_pu_azimuth field may specify the size of an azimuth angle as a reference applied to PU splitting of a frame.

[0537] The motion_block_pu_elevation field may specify the size of an altitude as a reference for PU splitting applied to a frame.

[0538] In the present disclosure, the motion_block_pu_radius field, the motion_block_pu_azimuth field, and the motion_block_pu_elevation field are referred to as reference information for splitting into PUs. According to an embodiment, the reference information for splitting into PUs may further include block size information.

[0539] The block size information may specify the size of a motion block used as a reference for PU splitting applied to a frame.

[0540] The motion_block_pu_min_radius field may specify a minimum radius size used as a reference for PU splitting applied to a frame. When the size of the radius of a PU block is less than the minimum radius size, no further splitting is performed.

[0541] The motion_block_pu_min_azimuth field may specify the minimum azimuth size used as a reference for PU splitting applied to a frame. When the azimuth size of a PU block is less than the minimum azimuth size, no further splitting is performed.

[0542] The motion_block_pu_min_elevation field may specify the minimum altitude size used as a reference for PU splitting applied to a frame. When the size of the altitude of a PU block is less than the minimum altitude size, no further splitting is performed.

[0543] In the present disclosure, motion_block_pu_min_radius, motion_block_pu_min_azimuth, and motion_block_pu_min_elevation are referred to as minimum PU size information.

[0544] Figure 27 An exemplary syntax structure of a tile parameter set (tile_parameter_set()) (TPS) containing inter-prediction related option information according to an embodiment is shown. According to an embodiment, a TPS may also be referred to as a tile list. The TPS according to an embodiment contains information related to each tile. The name of the signaling information may be understood within the scope of the meaning and function of the signaling information.

[0545] The TPS according to an embodiment includes a num_tiles field.

[0546] The num_tiles field indicates the number of tiles signaled for the bitstream. When not present, num_tiles is inferred to be 0.

[0547] The TPS according to an embodiment includes an iteration statement that repeats as many times as the value of the num_tiles field. In one embodiment, i is initialized to 0 and incremented by 1 each time the iteration statement is executed. The iteration statement is repeated until the value of i becomes equal to the value of the num_tiles field. The iteration statement may include a tile_bounding_box_offset_x[i] field, a tile_bounding_box_offset_y[i] field, a tile_bounding_box_offset_z[i] field, a tile_bounding_box_size_width[i] field, a tile_bounding_box_size_height[i] field, and a tile_bounding_box_size_depth[i] field.

[0548] The tile_bounding_box_offset_x[i] field indicates the x offset of the i-th tile in Cartesian coordinates.

[0549] The tile_bounding_box_offset_y[i] field indicates the y offset of the i-th tile in Cartesian coordinates.

[0550] The tile_bounding_box_offset_z[i] field indicates the z offset of the i-th tile in Cartesian coordinates.

[0551] The tile_bounding_box_size_width[i] field indicates the width of the i-th tile in Cartesian coordinates.

[0552] The tile_bounding_box_size_height[i] field indicates the height of the i-th tile in Cartesian coordinates.

[0553] The tile_bounding_box_size_depth[i] field indicates the depth of the i-th tile in Cartesian coordinates.

[0554] The TPS according to an embodiment may include a motion_block_lpu_split_type field for each LPU.

[0555] The motion_block_lpu_split_type field may specify a reference type of LPU splitting applied to a patch. For example, among the values ​​of motion_block_lpu_split_type, 0 may indicate radius-based LPU splitting, 1 may indicate azimuth-based LPU splitting, 2 may indicate altitude-based LPU splitting, and 3 may indicate cuboid LPU splitting. Here, cuboid LPU splitting may be referred to as an integrated LPU splitting method or a cuboid splitting method. In addition, altitude-based (or vertical) LPU splitting may be referred to as an altitude-based horizontal LPU splitting method, an altitude-based horizontal splitting method, or a horizontal splitting method.

[0556] When a value of the motion_block_lpu_split_type field is 0, the TPS may further include a motion_block_lpu_radius field. The motion_block_lpu_radius field may specify a radius size used as a reference for LPU splitting applied to a patch.

[0557] When a value of the motion_block_lpu_split_type field is 1, the TPS may further include a motion_block_lpu_azimuth field. The motion_block_lpu_azimuth field may specify an azimuth size used as a reference for LPU splitting applied to a patch.

[0558] When the value of the motion_block_lpu_split_type field is 2, the TPS may further include a motion_block_lpu_elevation field. The motion_block_lpu_elevation field may specify an altitude size used as a reference for splitting into LPUs applied to patches.

[0559] When the value of the motion_block_lpu_split_type field is 3, the TPS may further include a motion_block_size[k] field. The motion_block_size[k] field may specify the size of a motion block used as a reference for splitting into LPUs applied to a patch. Here, a motion block may be referred to as a region, an LPU, or a PU. And, k is a value for setting the block size information (motion_block_size) as a 3D coordinate, and each coordinate value may be unrestricted. That is, k has a value between 0 and 2 representing 3D dimensions, respectively. For example, when the value of the motion_block_size[k] field is 0, the block size in the kth dimension is equal to the size of the current slice bounding box in the kth dimension.

[0560] When the value of the motion_block_lpu_split_type field is 3, the TPS may further include a motion_block_origin_pos[k] field. The motion_block_origin_pos[k] field may specify a value of a starting position of a motion block used as a reference for LPU splitting applied to a patch. Here, k has a value in the range of 0 to 2, respectively indicating 3D dimensions. The motion_block_origin_pos[k] field is signaled to integrate and support a road / object splitting method and a cuboid splitting.

[0561] In the present disclosure, a motion_block_lpu_radius field, a motion_block_lpu_azimuth field, a motion_block_lpu_elevation field, a motion_block_size[k] field, and / or a motion_block_origin_pos[k] field are referred to as reference information for splitting into LPUs.

[0562] The TPS according to an embodiment may include at least one of a motion_block_pu_split_octree_type field, a motion_block_pu_split_type field, a motion_block_pu_radius field, a motion_block_pu_azimuth field, a motion_block_pu_elevation field, a motion_block_pu_min_radius field, a motion_block_pu_min_azimuth field, or a motion_block_minth field for each PU.

[0563] For example, when geom_tree_type is equal to 0 (ie, it indicates that geometry information (ie, position information) is encoded using an octree), the TPS includes the motion_block_pu_split_octree_type field.

[0564] When the geom_tree_type field is equal to 1 (ie, it indicates that the geometric information (ie, position information) is encoded using a prediction tree), TPS includes a motion_block_pu_split_type field, a motion_block_pu_radius field, a motion_block_pu_azimuth field, a motion_block_min_azi_elevation field, a motion_block_muth field, a motion_block_radius field, and a motion_block_pu_min_elevation field.

[0565] The motion_block_pu_split_octree_type field indicates octree-related reference order type information for partitioning into PUs when geometry coding is performed based on an octree. That is, when geometry coding is applied based on an octree applied to a patch, the motion_block_pu_split_octree_type field specifies a reference order type for partitioning into PUs.

[0566] For example, among the values ​​of the motion_block_pu_split_octree_type field, 0 may indicate a split application based on x→y→z, 1 may indicate a split application based on x→z→y, and 2 may indicate a split application based on y→x→z. 3 may indicate a split application based on y→z→x, 4 may indicate a split application based on z→x→y, and 5 may indicate a split application based on z→y→x.

[0567] The motion_block_pu_split_type field is called split reference order type information for splitting an LPU into PUs and may specify a reference type for splitting an LPU into PUs applied to a frame.

[0568] For example, among the values ​​of the motion_block_pu_split_type field, 0 may indicate that a radius-based→azimuth-based→altitude-based split is applied, 1 may indicate that a radius-based→altitude-based→azimuth-based split is applied, and 2 may indicate that an azimuth-based→radius-based→altitude-based split is applied. 3 may indicate that an azimuth-based→altitude-based→radius-based split is applied, 4 may indicate that an altitude-based→radius-based→azimuth-based split is applied, and 5 may indicate that an altitude-based→azimuth-based→radius-based split is applied.

[0569] The motion_block_pu_radius field may specify the size of a radius as a reference applied to PU splitting of a patch.

[0570] The motion_block_pu_azimuth field may specify the size of an azimuth angle as a reference applied to PU splitting of a patch.

[0571] The motion_block_pu_elevation field may specify the size of an altitude as a reference applied to PU splitting of a patch.

[0572] In the present disclosure, the motion_block_pu_radius field, the motion_block_pu_azimuth field, and the motion_block_pu_elevation field are referred to as reference information for splitting into PUs. According to an embodiment, the reference information for splitting into PUs may further include block size information.

[0573] The block size information may specify the size of a motion block used as a reference for PU splitting applied to a patch.

[0574] The motion_block_pu_min_radius field may specify the minimum radius size used as a reference for PU splitting applied to a patch. When the size of the radius of a PU block is less than the minimum radius size, no further splitting is performed.

[0575] The motion_block_pu_min_azimuth field may specify the minimum azimuth size used as a reference for PU splitting applied to a patch. When the azimuth size of a PU block is less than the minimum azimuth size, no further splitting is performed.

[0576] The motion_block_pu_min_elevation field may specify the minimum altitude size used as a reference for PU splitting applied to a patch. When the size of the altitude of a PU block is less than the minimum altitude size, no further splitting is performed.

[0577] In the present disclosure, motion_block_pu_min_radius, motion_block_pu_min_azimuth, and motion_block_pu_min_elevation are referred to as minimum PU size information.

[0578] According to an embodiment, a geometry slice bitstream (geometry_slice_bitstream()) may include a geometry slice header (geometry_slice_header()) and geometry slice data (geometry_slice_data()).

[0579] Figure 28 An exemplary syntax structure of a geometry slice header (geometry_slice_header()) including inter prediction related option information according to an embodiment is shown. The name of the signaling information may be understood within the scope of the meaning and function of the signaling information.

[0580] The bitstream transmitted by the transmitting device (or the bitstream received by the receiving device) according to the embodiment may include one or more slices. Each slice may include a geometry slice and an attribute slice. The geometry slice includes a geometry slice header (GSH). The attribute slice includes an attribute slice header (ASH).

[0581] The geometry slice header (geometry_slice_header()) according to an embodiment may include a gsh_geom_parameter_set_id field, a gsh_tile_id field, a gsh_slice_id field, a gsh_max_node_size_log2 field, a gsh_num_points field, and a byte_alignment() field.

[0582] When the value of the gps_box_present_flag field included in the GPS is "true" (e.g., 1) and the value of the gps_gsh_box_log2_scale_present_flag field is "true" (e.g., 1), the geometry slice header (geometry_slice_header()) according to the implementation may also include a gsh_box_log2_scale field, a gsh_box_origin_x field, a gsh_box_origin_y field and a gsh_box_origin_z field.

[0583] The gsh_geom_parameter_set_id field specifies the value of the gps_geom_parameter_set_id of the active GPS.

[0584] The gsh_tile_id field specifies the value of the tile id referenced by the GSH.

[0585] gsh_slice_id specifies the slice id for reference by other syntax elements.

[0586] The gsh_box_log2_scale field specifies the scaling factor for the bounding box origin of the slice.

[0587] The gsh_box_origin_x field specifies the x value of the bounding box origin scaled by the value of the gsh_box_log2_scale field.

[0588] The gsh_box_origin_y field specifies the y value of the bounding box origin scaled by the value of the gsh_box_log2_scale field.

[0589] The gsh_box_origin_z field specifies the z value of the bounding box origin scaled by the value of the gsh_box_log2_scale field.

[0590] The gsh_max_node_size_log2 field specifies the size of the root geometry octree node.

[0591] The gsh_points_number field specifies the number of coded points in the slice.

[0592] According to an embodiment, the geometry slice header may include a motion_block_lpu_split_type field for each LPU.

[0593] The motion_block_lpu_split_type field may specify a reference type of LPU splitting applied to a slice. For example, among the values ​​of motion_block_lpu_split_type, 0 may indicate a radius-based LPU splitting, 1 may indicate an azimuth-based LPU splitting, 2 may indicate an altitude-based LPU splitting, and 3 may indicate a cuboid LPU splitting. Here, the cuboid LPU splitting may be referred to as an integrated LPU splitting method or a cuboid splitting method. In addition, the altitude (or vertical)-based LPU splitting may be referred to as an altitude-based horizontal LPU splitting method, an altitude-based horizontal splitting method, or a horizontal splitting method.

[0594] The geometry slice header may further include a motion_block_lpu_radius field when a value of the motion_block_lpu_split_type field is 0. The motion_block_lpu_radius field may specify a radius size used as a reference for LPU splitting applied to a slice.

[0595] When a value of the motion_block_lpu_split_type field is 1, the geometry slice header may further include a motion_block_lpu_azimuth field. The motion_block_lpu_azimuth field may specify an azimuth size used as a reference for LPU splitting applied to a slice.

[0596] When the value of the motion_block_lpu_split_type field is 2, the geometry slice header may further include a motion_block_lpu_elevation field. The motion_block_lpu_elevation field may specify an altitude size used as a reference for splitting into LPUs applied to the slice.

[0597] When the value of the motion_block_lpu_split_type field is 3, the geometry slice header may further include a motion_block_size[k] field. The motion_block_size[k] field may specify the size of a motion block used as a reference for splitting into LPUs applied to the slice. Here, a motion block may be referred to as a region, an LPU, or a PU. And, k is a value for setting the block size information (motion_block_size) as a 3D coordinate, and each coordinate value may be unrestricted. That is, k has a value between 0 and 2 representing 3D dimensions, respectively. For example, when the value of the motion_block_size[k] field is 0, the block size in the kth dimension is equal to the size of the current slice bounding box in the kth dimension.

[0598] When the value of the motion_block_lpu_split_type field is 3, the geometry slice header may further include a motion_block_origin_pos[k] field. The motion_block_origin_pos[k] field may specify a value of the starting position of a motion block used as a reference for LPU splitting applied to the slice. Here, k has a value in the range of 0 to 2, respectively indicating 3D dimensions. The motion_block_origin_pos[k] field is signaled to integrate and support the road / object splitting method and the cuboid splitting.

[0599] In the present disclosure, a motion_block_lpu_radius field, a motion_block_lpu_azimuth field, a motion_block_lpu_elevation field, a motion_block_size[k] field, and / or a motion_block_origin_pos[k] field are referred to as reference information for splitting into LPUs.

[0600] The geometry slice header according to an embodiment may include at least one of a motion_block_pu_split_octree_type field, a motion_block_pu_split_type field, a motion_block_pu_radius field, a motion_block_pu_azimuth field, a motion_block_pu_elevation field, a motion_block_pu_min_radius field, a motion_block_pu_min_azimuth field, or a motion_block_minth field for each PU.

[0601] For example, when geom_tree_type is equal to 0 (ie, it indicates that the geometry information (ie, position information) is encoded using an octree), the geometry slice header includes the motion_block_pu_split_octree_type field.

[0602] When the geom_tree_type field is equal to 1 (i.e., it indicates that the geometric information (i.e., position information) is encoded using a prediction tree), the geometry slice header includes a motion_block_pu_split_type field, a motion_block_pu_radius field, a motion_block_pu_azimuth field, a motion_block_min_azi_elevation field, a motion_block_muth field, a motion_block_radius field, and a motion_block_pu_min_elevation field.

[0603] The motion_block_pu_split_octree_type field indicates octree-related reference order type information for partitioning into PUs when geometry coding is performed based on an octree. That is, when geometry coding is applied based on an octree applied to a patch, the motion_block_pu_split_octree_type field specifies a reference order type for partitioning into PUs.

[0604] For example, among the values ​​of the motion_block_pu_split_octree_type field, 0 may indicate a split application based on x→y→z, 1 may indicate a split application based on x→z→y, and 2 may indicate a split application based on y→x→z. 3 may indicate a split application based on y→z→x, 4 may indicate a split application based on z→x→y, and 5 may indicate a split application based on z→y→x.

[0605] The motion_block_pu_split_type field is called split reference order type information for splitting an LPU into PUs and may specify a reference type for splitting an LPU into PUs applied to a frame.

[0606] For example, among the values ​​of the motion_block_pu_split_type field, 0 may indicate that a radius-based→azimuth-based→altitude-based split is applied, 1 may indicate that a radius-based→altitude-based→azimuth-based split is applied, and 2 may indicate that an azimuth-based→radius-based→altitude-based split is applied. 3 may indicate that an azimuth-based→altitude-based→radius-based split is applied, 4 may indicate that an altitude-based→radius-based→azimuth-based split is applied, and 5 may indicate that an altitude-based→azimuth-based→radius-based split is applied.

[0607] The motion_block_pu_radius field may specify the size of a radius as a reference for PU splitting applied to a slice.

[0608] The motion_block_pu_azimuth field may specify the size of an azimuth angle as a reference applied to PU splitting of a slice.

[0609] The motion_block_pu_elevation field may specify the size of an altitude as a reference applied to PU splitting of a slice.

[0610] In the present disclosure, the motion_block_pu_radius field, the motion_block_pu_azimuth field, and the motion_block_pu_elevation field are referred to as reference information for splitting into PUs. According to an embodiment, the reference information for splitting into PUs may further include block size information.

[0611] The block size information may specify the size of a motion block used as a reference for PU splitting applied to a slice.

[0612] The motion_block_pu_min_radius field may specify a minimum radius size used as a reference for PU splitting applied to a slice. When the size of the radius of a PU block is less than the minimum radius size, no further splitting is performed.

[0613] The motion_block_pu_min_azimuth field may specify the minimum azimuth size used as a reference for PU splitting applied to a slice. When the azimuth size of a PU block is less than the minimum azimuth size, no further partitioning is performed.

[0614] The motion_block_pu_min_elevation field may specify the minimum altitude size used as a reference for PU splitting applied to a slice. When the size of the altitude of the PU block is less than the minimum altitude size, no further partitioning is performed.

[0615] In the present disclosure, motion_block_pu_min_radius, motion_block_pu_min_azimuth, and motion_block_pu_min_elevation are referred to as minimum PU size information.

[0616] According to an embodiment, a slice may be divided into one or more PUs. For example, a geometry slice may include a geometry slice header and one or more geometry PUs. In this case, each geometry PU may include a geometry PU header (geomPU header) and geometry PU data (geomPU data).

[0617] Figure 29 An example of a syntax structure of a geometry PU header (geom_pu_header()) including inter prediction related option information according to an embodiment is shown. The name of the signaling information may be understood within the scope of the meaning and function of the signaling information.

[0618] The geometry PU header according to an embodiment may include a pu_tile_id field, a pu_slice_id field, and a pu_cnt field.

[0619] The pu_tile_id field specifies a tile identifier (ID) for identifying the tile to which the PU belongs.

[0620] The pu_slice_id field specifies a slice identifier (ID) for identifying a slice to which the PU belongs.

[0621] The pu_cnt field specifies the number of PUs included in the slice identified by the value of the pu_slice_id field.

[0622] The geometry PU header according to an embodiment includes a loop that iterates as many times as the value of the pu_cnt field. In one embodiment, puIdx is initialized to 0, incremented by 1 each time the loop is executed, and the loop iterates until the value of puIdx reaches the value of the pu_cnt field. The loop may include the pu_id[puIdx] field, the pu_split_flag[puIdx] field, the pu_motion_compensation_type[puIdx] field, and the pu_has_motion_vector_flag[puIdx] field.

[0623] The pu_id[puIdx] field specifies a PU identifier (ID) for identifying a PU corresponding to puIdx among PUs included in the slice.

[0624] The pu_split_flag[puIdx] field specifies whether a PU corresponding to puIdx among PUs included in a slice is further split subsequently.

[0625] The pu_motion_compensation_type[puIdx] field specifies whether a motion vector is applied to a PU corresponding to puIdx among the PUs included in the slice. According to an embodiment, the pu_motion_compensation_type[puIdx] field may specify whether a global motion vector is applied to a PU corresponding to puIdx among the PUs included in the slice. According to an embodiment, the pu_motion_compensation_type[puIdx] field may specify whether a local motion vector is applied to a PU corresponding to puIdx among the PUs included in the slice. According to an embodiment, the pu_motion_compensation_type[puIdx] field may specify that a motion vector is not applied to a PU corresponding to puIdx among the PUs included in the slice. For example, among the values ​​of pu_motion_compensation_type[puIdx], 0 may indicate that no motion vector is applied to the PU, 1 may indicate that a global motion vector is applied, and 2 may indicate that a local motion vector is applied.

[0626] Therefore, when the value of the pu_motion_compensation_type[puIdx] field is 0, the geometry decoder at the receiving side can identify that the global motion vector is not applied to the PU. When the value is 1, the decoder can identify that the global motion vector is applied to the PU. Therefore, when the value of the pu_motion_compensation_type[puIdx] field is 1, motion compensation can be performed by applying the global motion vector to the PU. That is, when the value of the pu_motion_compensation_type[puIdx] field is 0, the motion compensation application unit of the geometry decoder at the receiving side can use the points of the previous frame. When the value is 1, the motion compensation application unit can select the points to which the global motion vector is applied to the PU and perform motion compensation. When the value is 2, the application unit can select the points to which the local motion vector is applied to the corresponding PU and perform motion compensation.

[0627] The pu_has_motion_vector_flag[puIdx] field specifies whether a PU corresponding to puIdx among PUs included in the slice has a motion vector. That is, the pu_has_motion_vector_flag[puIdx] field may specify whether there is a motion vector applicable to the PU corresponding to puIdx among PUs included in the slice.

[0628] For example, when the value of the pu_has_motion_vector_flag[puIdx] field is 1, it may indicate that the PU has an applicable motion vector. When the value is 0, it may indicate that the PU does not have an applicable motion vector.

[0629] According to an embodiment, when the value of the pu_has_motion_vector_flag[puIdx] field is 1, it indicates that the PU identified by the value of the pu_id[puIdx] field has an applicable motion vector. In this case, the geometry PU header may further include a pu_motion_vector_xyz[pu_id][k] field.

[0630] The pu_motion_vector_xyz[pu_id][k] field may specify a motion vector applied to the kth PU identified by the pu_id field.

[0631] Figure 30 is a flow chart illustrating an exemplary method of transmitting point cloud data according to an embodiment.

[0632] The point cloud data transmission method according to the embodiment may include acquiring point cloud data (71001), encoding the 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 may be encapsulated in a file and transmitted.

[0633] The acquisition of point cloud data (71001) may include Figure 1 Some or all operations of the point cloud video acquisition unit (10001) or Figure 8 Some or all operations of the data input unit 8000. For example, the acquisition of point cloud data (71001) may include acquiring point cloud data through a LiDAR device on a moving or stationary vehicle.

[0634] The encoding of point cloud data (71002) may include Figure 1 Point cloud video encoder 10002, Figure 2 Code 20001, Figure 3 Point cloud video encoder, Figure 8 Point cloud video encoder, Figure 19 The geometry encoder and attribute encoder of Figure 20 Some or all operations of a geometry encoder and an attribute encoder for encoding geometry information and attribute information.

[0635] The encoding (71002) of point cloud data may include compressing geometric information associated with the input point cloud data and compressing attribute information associated with the data.

[0636] According to an embodiment, compressing the geometric information includes performing inter-frame prediction-based or intra-frame prediction-based encoding of the position of the point cloud data (i.e., the geometric information) and outputting a geometric bitstream. In this case, when the frame of the point cloud data is a P frame, the point cloud data in units of frames, tiles, or slices can be segmented into LPUs and / or PUs by applying the above-mentioned LPU / PU splitting method to the prediction-based encoding of the P frame.

[0637] For example, compression of geometric information may include segmenting point cloud data in units of frames, tiles, or slices into LPUs and / or PUs based on block size information (motion_block_size[k]).

[0638] According to an embodiment, when the block size information (motion_block_size[k]) is {0, 0, height size}, the point cloud data can be segmented into multiple regions using an altitude-based horizontal segmentation method. Here, the height size can be referred to as a block height size. And the region can be referred to as a block, LPU, or PU.

[0639] According to an embodiment, when the block size information (motion_block_size[k]) is {octree node size=s, s, s}, the point cloud data may be segmented into a plurality of regions using an octree node-based segmentation method. Here, a region may be referred to as a block, LPU, or PU.

[0640] The state in which the motion vector is applied to the partitioned LPU and / or PU and compressed and signaled has been described above in detail, so a description thereof will be omitted below.

[0641] That is, for details of the process of determining whether to apply a motion vector to each LPU / PU after segmenting the point cloud data into LPU / PU and compressing the geometric information based on the result of the determination, refer to Figures 11 to 21 Give a description.

[0642] The compressed geometric information about each point is entropy encoded and then output in the form of a geometry bitstream.

[0643] According to an embodiment, compression of the attribute information includes compressing the attribute information based on the position and / or reconstructed geometry information that has not been geometrically encoded. In one embodiment, the attribute information may be encoded using any one or a combination of one or more of RAHT encoding, LOD-based predictive transform encoding, and lifting transform encoding.

[0644] The compressed attribute information is entropy encoded and output in the form of an attribute bitstream.

[0645] In the present disclosure, the signaling information may include inter-frame prediction related option information.

[0646] According to an embodiment, the inter prediction related option information may include at least one of the following items: reference type information (motion_block_lpu_split_type) for splitting into LPUs, information used as a reference for LPU splitting (for example, motion_block_lpu_radius, motion_block_lpu_azimuth, motion_block_lpu_elevation, or motion_block_size[k]), information indicating whether there is an applicable motion vector (motion_vector_flag or pu_has_motion_vector_flag), splitting reference order type information (motion_block_pu_split_type) for splitting into PUs, and octree-related reference order type information (motion_block_pu_split_type) for splitting into PUs. The inter-frame prediction related option information may include information for identifying the block to which the PU belongs, information for identifying the slice to which the PU belongs, information about the number of PUs included in the slice, and information for identifying each PU. It may also include split start position information (motion_block_origin_pos[k]), which is reference information for splitting into LPUs. A portion or the entirety of the inter-frame prediction related option information may be included in the GPS, TPS, or geometric slice header and sent to the receiving side. In addition, part or the entirety of inter-prediction related option information (eg, motion related information) may be included in a geometry PU header and transmitted to the receiving side.

[0647] Figure 31 A flow chart illustrating an exemplary method of receiving point cloud data according to an implementation is shown.

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

[0649] Point cloud data and signaling information reception (81001) can be Figure 1 Receiver 10005, Figure 2 Transmission 20002 or decoding 20003 or Figure 9 The receiver 9000 or the receiving processor 9001 executes.

[0650] Operation 81002 of decoding point cloud data may include Figure 1 Point cloud video decoder 10006, Figure 2 Decoding 20003, Figure 8 Point cloud video decoder, Figure 9 Point cloud video decoder for decoding geometric information and attribute information Figure 22 Geometry decoder and attribute decoder or Figure 23 Some or all of the operations of the geometry decoder and attribute decoder.

[0651] Operation 81002 of decoding point cloud data includes decoding geometric information and decoding attribute information.

[0652] The decoding of the geometric information may include decoding (ie, reconstructing) the geometric information based on the inter-prediction related option information included in the signaling information. For details, refer to Figures 11 to 23 Description.

[0653] For example, decoding of geometry information may include splitting a reference frame (or patch or slice) into LPUs and / or PUs according to block size information (motion_block_size[k]), and performing motion compensation and decoding for each of the LPUs and / or PUs based on motion-related information.

[0654] According to an embodiment, when the block size information (motion_block_size[k]) is {0, 0, height size}, the reference frame (or patch or slice) may be split into a plurality of regions using an altitude-based horizontal segmentation method. Here, the height size may be referred to as a block height size. And a region may be referred to as a block, an LPU, or a PU.

[0655] According to an embodiment, when the block size information (motion_block_size[k]) is {octree node size=s, s, s}, the reference frame (or patch or slice) may be split into a plurality of regions using an octree node-based segmentation method. Here, a region may be referred to as a block, LPU, or PU.

[0656] The operation of decoding the attribute information may include decoding (ie, decompressing) the attribute information based on the reconstructed geometric information. In one embodiment, the attribute information may be decoded using any one or a combination of one or more of RAHT coding, LOD-based predictive transform coding, and lifting transform coding.

[0657] The rendering operation 81003 according to the embodiment may include reconstructing the point cloud data based on the restored (or reconstructed) geometric information and attribute information, and rendering the data according to various rendering schemes. For example, the points in the point cloud content may be rendered as vertices with a specific thickness, a cube with a specific minimum size centered at the corresponding vertex position, a circle centered at the vertex position, etc. All or part of the rendered point cloud content may be presented to the user through a display (e.g., a VR / AR display, a general display, etc.). The rendering operation 81003 according to the embodiment may be performed by Figure 1 Renderer 10007, Figure 2 Rendering 20004 or Figure 9 Renderer 9011 executes.

[0658] As described above, according to the present disclosure, block size information can be configured based on the characteristics of the point cloud content, so the point cloud data can be segmented into various forms of LPU and / or PU according to the configured block size information. In addition, it can be determined whether to apply a global motion vector and / or a local motion vector to each of the segmented LPU or PU, and the geometric information can be compressed based on the determined result.

[0659] Therefore, the present disclosure can reduce encoding execution time by widening the area that can utilize motion vector prediction, thereby eliminating the need for additional calculations.

[0660] Therefore, the sending method / device can efficiently compress the point cloud data to send the data, and can transmit signaling information for the data. Therefore, the receiving method / device can efficiently decode / reconstruct the point cloud data.

[0661] Each of the above components, modules or units can be software, processors or hardware components that execute the continuous process stored in the memory (or storage unit). Each of the steps described in the above embodiments can be performed by a processor, a software component or a hardware component. Each module / block / unit described in the above embodiments can be operated as a processor, software or hardware. In addition, the method presented by the embodiment can be executed as a code. The code can be written on a processor-readable storage medium, so it is read by a processor provided by the device.

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

[0663] Although the embodiments have been explained with reference to each of the accompanying drawings for simplicity, new embodiments may be designed by combining the embodiments illustrated in the accompanying drawings. If a computer-readable recording medium having a program for executing the embodiments mentioned in the foregoing description is designed by a person skilled in the art, it may fall within the scope of the appended claims and their equivalents.

[0664] The device and method may not be limited to the configuration and method of the above-mentioned embodiments. The above-mentioned embodiments may be configured by selectively combining with each other in whole or in part to achieve various modifications.

[0665] Although preferred embodiments of the embodiments have been shown and described, the embodiments are not limited to the specific embodiments described above, and various modifications may be made by a person of ordinary skill in the art without departing from the spirit of the embodiments claimed in the claims, and these modifications should not be understood separately from the technical concept or view of the embodiments.

[0666] Various elements of the device of the embodiment can be implemented by hardware, software, firmware or a combination thereof. Various elements in the embodiment can be implemented by a single chip (e.g., a single hardware circuit). According to the embodiment, the components according to the embodiment can be implemented as separate chips respectively. According to the embodiment, at least one or more components of the device according to the embodiment may include one or more processors capable of executing one or more programs. One or more programs may execute any one or more operations / methods according to the embodiment or include instructions for executing them. The executable instructions for executing the method / operation of the device according to the embodiment may be stored in a non-transient CRM or other computer program product configured to be executed by one or more processors, or may be stored in a temporary CRM or other computer program product configured to be executed by one or more processors. In addition, the memory according to the embodiment can be used as not only covering volatile memory (e.g., RAM), but also covering the concepts of non-volatile memory, flash memory and PROM. In addition, it can also be implemented in the form of a carrier (e.g., transmission via the Internet). In addition, the processor-readable recording medium can be distributed to a computer system connected via a network so that the processor-readable code can be stored and executed in a distributed manner.

[0667] In this document, the terms " / " and "," should be interpreted as indicating "and / or". For example, the expression "A / B" may mean "A and / or B". In addition, "A, B" may mean "A and / or B". In addition, "A / B / C" may mean "at least one of A, B, and / or C". In addition, "A / B / C" may mean "at least one of A, B, and / or C". In addition, in this document, the term "or" should be interpreted as indicating "and / or". For example, the expression "A or B" may 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 "in addition or alternatively".

[0668] 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 performed by a single chip such as a single hardware circuit. According to the embodiments, the elements can be selectively performed by separate chips respectively. According to the embodiments, at least one of the elements of the embodiments can be performed in one or more processors including instructions for performing operations according to the embodiments.

[0669] The operation according to the embodiment described in this specification can be performed by a sending / receiving device including one or more memories and / or one or more processors according to the embodiment. One or more memories can store programs for processing / controlling the operation according to the embodiment, and one or more processors can control the various operations described in this specification. One or more processors can be referred to as controllers, etc. In an embodiment, the operation can be performed by firmware, software, and / or a combination thereof. Firmware, software, and / or a combination thereof can be stored in a processor or a memory.

[0670] Terms such as first and second can be used to describe various elements of the embodiments. However, various components according to the embodiments should not be limited by the above terms. These terms are only used to distinguish one element from another element. 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 without departing from the scope of various embodiments. Both the first user input signal and the second user input signal are user input signals, but unless the context clearly stipulates otherwise, they do not mean the same user input signal.

[0671] The terms used to describe the embodiments are used only to describe specific embodiments and are not intended to limit the embodiments. As used in the description of the embodiments and the claims, unless the context clearly stipulates otherwise, the singular form includes plural referents. The expression "and / or" is used to include all possible combinations of terms. Terms such as "including" or "having" are intended to indicate the presence of graphics, quantities, steps, elements and / or components, and should be understood as not excluding the possibility of additional presence of graphics, quantities, steps, elements and / or components. As used herein, conditional expressions such as "if" and "when" are not limited to optional situations, and are intended to be interpreted as performing related operations or explaining related definitions according to specific conditions when specific conditions are met. The embodiments may include changes / modifications within the scope of the claims and their equivalents.

[0672] Invention Mode

[0673] The details have been specifically described in the best mode of the present disclosure.

[0674] Industrial Applicability

[0675] It will be apparent to those skilled in the art that various modifications and variations may be made within the scope of the embodiments without departing from the spirit or scope of the embodiments. Therefore, the embodiments are intended to cover the modifications and variations of the embodiments provided within the appended claims and their equivalents.

Claims

1. A method for sending point cloud data, the method comprising the following steps: Encoding geometric data of the point cloud data; encoding attribute data of the point cloud data based on the geometric data; as well as Sending coded geometry data, coded attribute data, and signaling data, The step of encoding the geometric data comprises: partitioning the geometric data into one or more prediction units based on the block size information, The signaling data includes the block size information.

2. The method according to claim 1, wherein: The block size information is represented as coordinates in three dimensions, Wherein, the value in each of the dimensions is greater than or equal to 0.

3. The method according to claim 2, wherein: The segmentation includes: Based on the block size information being {0, 0, altitude}, the geometric data is partitioned into one or more prediction units by applying altitude-based horizontal partitioning to the geometric data.

4. The method according to claim 2, wherein: The segmentation includes: The geometric data is partitioned into one or more prediction units by applying octree node-based partitioning to the geometric data based on the block size information being {s, s, s}, where s is a value greater than 1.

5. The method according to claim 2, wherein: The step of encoding the geometric data comprises: compressing the geometric data in an inter-prediction method by selectively applying a motion vector to each of the partitioned prediction units, The signaling data further includes information identifying whether the motion vector is applied to each of the prediction units.

6. A device for transmitting point cloud data, the device comprising: A geometry encoder configured to encode geometry data of the point cloud data; an attribute encoder configured to encode attribute data of the point cloud data based on the geometric data; as well as a transmitter configured to transmit the encoded geometry data, the encoded attribute data and the signaling data, wherein the geometry encoder divides the geometry data into one or more prediction units based on block size information, The signaling data includes the block size information.

7. The device according to claim 6, wherein: The block size information is represented as coordinates in three dimensions, Wherein, the value in each of the dimensions is greater than or equal to 0.

8. The device according to claim 7, wherein: Based on the block size information being {0, 0, altitude}, the geometry encoder partitions the geometry data into one or more prediction units by applying altitude-based horizontal partitioning to the geometry data.

9. The device according to claim 7, wherein: The geometry encoder partitions the geometry data into one or more prediction units by applying octree node-based partitioning to the geometry data based on the block size information being {s, s, s}, where s is a value greater than 1.

10. The device according to claim 7, wherein: The geometry encoder compresses the geometry data in an inter-frame prediction method by selectively applying a motion vector to each of the partitioned prediction units, The signaling data further includes information identifying whether the motion vector is applied to each of the prediction units.

11. A method for receiving point cloud data, the method comprising the following steps: receiving geometric data, attribute data and signaling data; decoding the geometric data based on the signaling data; decoding the attribute data based on the signaling data and the decoded geometry data; as well as Rendering the point cloud data reconstructed based on the decoded geometric data and the decoded attribute data, The step of decoding the geometric data comprises: splitting the reference data of the geometric data into one or more prediction units based on the block size information, The signaling data includes the block size information.

12. The method according to claim 11, wherein: The block size information is represented as coordinates in three dimensions, Wherein, the value in each of the dimensions is greater than or equal to 0.

13. The method according to claim 12, wherein: The segmentation includes: Based on the block size information being {0, 0, altitude}, the reference data is partitioned into one or more prediction units by applying altitude-based horizontal partitioning to the reference data.

14. The method according to claim 12, wherein: The segmentation includes: The reference data is partitioned into one or more prediction units by applying octree node-based partitioning to the reference data based on the block size information being {s, s, s}, where s is a value greater than 1.

15. The method according to claim 12, wherein: The step of decoding the geometric data comprises: decoding the geometric data in an inter-prediction method by selectively applying a motion vector to each of the partitioned prediction units based on the signaling data, The signaling data further includes information identifying whether the motion vector is applied to each of the prediction units.