WO2025192995A1 - Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method - Google Patents
Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception methodInfo
- Publication number
- WO2025192995A1 WO2025192995A1 PCT/KR2025/003334 KR2025003334W WO2025192995A1 WO 2025192995 A1 WO2025192995 A1 WO 2025192995A1 KR 2025003334 W KR2025003334 W KR 2025003334W WO 2025192995 A1 WO2025192995 A1 WO 2025192995A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- geometry
- point cloud
- data
- subgroup
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Definitions
- Embodiments relate to a method and apparatus for processing point cloud content.
- Point cloud content is content expressed as a point cloud, a collection of points belonging to a coordinate system that represents three-dimensional space (space or volume).
- Point cloud content can express three-dimensional media and is used to provide various services such as VR (Virtual Reality), AR (Augmented Reality), MR (Mixed Reality), XR (Extended Reality), and autonomous driving services.
- VR Virtual Reality
- AR Augmented Reality
- MR Magnetic Reality
- XR Extended Reality
- autonomous driving services expressing point cloud content requires tens to hundreds of thousands of point data. Therefore, a method for efficiently processing massive amounts of point data is required.
- transmitting and receiving point cloud data requires a significant amount of processing power. Therefore, encoding for compression and decoding for decompression are performed during the process of transmitting and receiving point cloud data.
- the large size of point cloud data makes the computations complex and time-consuming.
- the technical problem according to the embodiments is to provide a device and method for efficiently transmitting/receiving a point cloud in order to solve the problems described above.
- the technical problem according to the embodiments is to provide a device and method for resolving latency and encoding/decoding complexity.
- the technical problem according to the embodiments is to provide a device and method for efficiently performing geometry encoding/decoding by using a region-adaptive planar mode.
- a decoding method may include a step of receiving geometry data, attribute data, and signaling information, a step of decoding the geometry data, and a step of decoding the attribute data.
- the step of decoding the geometry data includes the step of generating a geometry tree composed of a plurality of depths, and the step of decoding the geometry data based on the geometry tree, wherein the decoding step determines whether planner eligibility exists for each depth of the geometry tree, and decodes geometry data of a depth determined to have planner eligibility based on a planner mode.
- the planner qualification of each depth may be determined based on the density of points at that depth.
- the density of the points may be determined based on the number of points coded in a data unit containing geometry data of the depth, the number of points coded in direct nodes, and the number of points existing at the depth.
- the density of the points may be determined based on information indicating whether the planner is qualified, included in the signaling information.
- the decoding step decodes the geometry data in units of subgroups, and whether each depth qualifies as a planar is also determined in units of subgroups, and each subgroup can be identified by a subgroup index.
- a decoding device includes a memory and at least one processor connected to the memory, wherein the at least one processor is configured to receive geometry data, attribute data, and signaling information, decode the geometry data, and decode the attribute data.
- the at least one processor includes a geometry decoder that decodes the geometry data, the geometry decoder generates a geometry tree composed of a plurality of depths, and can decode the geometry data based on the geometry tree.
- the geometry decoder can determine planner eligibility for each depth of the geometry tree, and decode geometry data of a depth determined to have planner eligibility based on a planner mode.
- the planner qualification of each depth may be determined based on the density of points at that depth.
- the density of the points may be determined based on the number of points coded in a data unit containing geometry data of the depth, the number of points coded in direct nodes, and the number of points existing at the depth.
- the density of the points may be determined based on information indicating whether the planner is qualified, included in the signaling information.
- the geometry decoder decodes the geometry data in units of subgroups, determines whether each depth is planar-qualified in units of subgroups, and each subgroup can be identified by a subgroup index.
- an encoding method may include a step of encoding geometry data, a step of encoding attribute data, and a step of transmitting the encoded geometry data, the encoded attribute data, and signaling information.
- the step of encoding the geometry data includes the step of generating a geometry tree composed of a plurality of depths and the step of encoding the geometry data based on the geometry tree, wherein the encoding step determines whether planner eligibility exists for each depth of the geometry tree, and encodes geometry data of a depth determined to have planner eligibility based on a planner mode.
- the planner qualification of each depth may be determined based on the density of points at that depth.
- the device and method according to the embodiments can provide a quality point cloud service.
- the devices and methods according to the embodiments can achieve various video codec schemes.
- the device and method according to the embodiments can provide general-purpose point cloud content such as autonomous driving services.
- the device and method according to the embodiments can provide improved parallel processing and scalability by performing spatially adaptive segmentation of point cloud data for independent encoding and decoding of point cloud data.
- the device and method according to the embodiments can improve the encoding and decoding performance of a point cloud by dividing point cloud data into tiles and/or slices to perform encoding and decoding and signaling data required for this.
- the device and method according to the embodiments can divide and transmit compressed data based on certain criteria for point cloud data. Furthermore, when layered coding is used, the compressed data can be divided and transmitted according to each layer. Therefore, the storage and transmission efficiency of the transmission device can be increased.
- Figure 1 illustrates an example of a point cloud content provision system according to embodiments.
- FIG. 2 is a block diagram illustrating a point cloud content provision operation according to embodiments.
- FIG. 3 illustrates an example of a point cloud encoder according to embodiments.
- Figure 4 illustrates examples of octree and occupancy codes according to embodiments.
- Figure 5 shows an example of a point configuration by LOD according to embodiments.
- Figure 6 shows an example of a point configuration by LOD according to embodiments.
- Fig. 7 illustrates an example of a point cloud decoder according to embodiments.
- Figure 8 is an example of a transmission device according to embodiments.
- Fig. 9 is an example of a receiving device according to embodiments.
- Fig. 10 shows an example of a structure that can be linked with a point cloud data transmission/reception method/device according to embodiments.
- Figures 11 and 12 are diagrams showing the encoding, transmission, and decoding processes of point cloud data according to embodiments.
- FIG. 13 is a diagram illustrating an example of layer-based point cloud data configuration according to embodiments.
- Fig. 14 (a) shows a bitstream structure of geometry data according to embodiments
- Fig. 14 (b) shows a bitstream structure of attribute data according to embodiments.
- FIG. 15 is a diagram showing an example of a configuration of a bitstream for dividing a bitstream into layer units and transmitting it according to embodiments.
- FIG. 16 illustrates an example of a bitstream alignment method when a geometry bitstream and an attribute bitstream are multiplexed into one bitstream according to embodiments.
- FIG. 17 illustrates another example of a bitstream alignment method when a geometry bitstream and an attribute bitstream are multiplexed into one bitstream according to embodiments.
- FIGS. 18(a) to 18(c) are drawings showing examples of symmetrical geometry-attribute selection according to embodiments.
- FIGS. 19(a) to 19(c) are drawings showing examples of asymmetric geometry-attribute selection according to embodiments.
- FIGS. 20(a) to 20(c) illustrate examples of a method for constructing slices including point cloud data according to embodiments.
- Figures 21(a) and 21(b) illustrate geometry coding layer structures according to embodiments.
- Figure 22 illustrates the layer group and subgroup structure according to embodiments.
- Figures 23(a) to 23(c) illustrate representations of layer group-based point cloud data according to embodiments.
- Fig. 24 illustrates a point cloud data transmission/reception device/method according to embodiments.
- Fig. 25 is a flowchart showing an example of an encoding method of an encoder according to embodiments.
- Fig. 26 is a flowchart showing an example of a decoding method of a decoder according to embodiments.
- Fig. 27 is a drawing showing another example of a point cloud transmission device according to embodiments.
- Fig. 28 is a drawing showing another example of a point cloud receiving device according to embodiments.
- Figure 29 shows a bitstream configuration according to embodiments.
- Figures 30a and 30b illustrate an example of a syntax structure of a sequence parameter set according to embodiments.
- Figure 31 illustrates an example of a syntax structure of a dependent geometry data unit header according to embodiments.
- Figure 32 illustrates an example of a syntax structure of a layer group structure inventory according to embodiments.
- Figure 33 illustrates another example of the syntax structure of a dependent geometry data unit header according to embodiments.
- Figures 34(a) and 34(b) are drawings showing an example of the relationship between layer groups and subgroups and FGS according to embodiments.
- Figures 35a and 35b illustrate another example of the syntax structure of a sequence parameter set (SPS) according to embodiments.
- FIG. 36 is a diagram illustrating an example of a syntax structure of a geometry data unit header according to embodiments.
- FIG. 37 is a diagram illustrating another example of the syntax structure of a dependent geometry data unit header according to embodiments.
- FIG. 38 is a drawing showing an example of compressing and serving the geometry and attributes of point cloud data according to embodiments.
- FIG. 39 is a diagram showing another example of compressing and serving the geometry and attributes of point cloud data according to embodiments.
- FIG. 40 is a diagram illustrating another example of compressing and serving the geometry and attributes of point cloud data according to embodiments.
- Figure 41 shows a flowchart of a point cloud data transmission method according to embodiments.
- Figure 42 shows a flowchart of a method for receiving point cloud data according to embodiments.
- FIG. 1 illustrates an example of a point cloud content provision system according to embodiments.
- the point cloud content provision system illustrated in FIG. 1 may include a transmission device (10000) and a reception device (10004).
- the transmission device (10000) and the reception device (10004) are capable of wired and wireless communication to transmit/receive point cloud data.
- a transmission device (10000) can secure, process, and transmit a point cloud video (or point cloud content).
- the transmission device (10000) can 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, etc.
- BTS base transceiver system
- AI Artificial Intelligence
- the transmission device (10000) can include a device that performs communication with a base station and/or other wireless devices using a wireless access technology (e.g., 5G NR (New RAT), LTE (Long Term Evolution)), a robot, a vehicle, an AR/VR/XR device, a portable device, a home appliance, an IoT (Internet of Things) device, an AI device/server, etc.
- a wireless access technology e.g., 5G NR (New RAT), LTE (Long Term Evolution)
- LTE Long Term Evolution
- robot e.g., a robot, a vehicle, an AR/VR/XR device, a portable device, a home appliance, an IoT (Internet of Things) device, an AI device/server, etc.
- a wireless access technology e.g., 5G NR (New RAT), LTE (Long Term Evolution)
- AR/VR/XR device e.g., LTE (Long Term Evolution)
- a transmission device (10000) includes a Point Cloud Video Acquisition unit (10001), a Point Cloud Video Encoder (10002), and/or a Transmitter (or Communication module), 10003.
- a point cloud video acquisition unit (10001) acquires a point cloud video through a processing process such as capture, synthesis, or generation.
- the point cloud video is point cloud content expressed as a point cloud, which is a collection of points located in a three-dimensional space, and may be referred to as point cloud video data, etc.
- the point cloud video according to embodiments may include one or more frames. One 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 any one of a point cloud image, a frame, and a picture.
- a point cloud video encoder (10002) encodes acquired point cloud video data.
- the point cloud video encoder (10002) may encode point cloud video data based on point cloud compression coding.
- the point cloud compression coding may include G-PCC (Geometry-based Point Cloud Compression) coding and/or V-PCC (Video-based Point Cloud Compression) coding or next-generation coding.
- G-PCC Geometry-based Point Cloud Compression
- V-PCC Video-based Point Cloud Compression
- next-generation coding next-generation coding.
- the point cloud compression coding according to embodiments is not limited to the above-described embodiment.
- the point cloud video encoder (10002) may output a bitstream including encoded point cloud video data.
- the bitstream may include not only encoded point cloud video data but also signaling information related to encoding of the point cloud video data.
- a transmitter (10003) transmits a bitstream including encoded point cloud video data.
- the bitstream according to embodiments is encapsulated into a file or segment (e.g., streaming segment) and transmitted through various networks such as a broadcast network and/or a broadband network.
- the transmission device (10000) may include an encapsulation unit (or an encapsulation module) that performs an encapsulation operation.
- the encapsulation unit may be included in the transmitter (10003) according to embodiments.
- the file or segment may be transmitted to a receiving device (10004) through a network or may be stored in a digital storage medium (e.g., USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc.).
- the transmitter (10003) may communicate with the receiving device (10004) (or receiver (10005)) via a network such as 4G, 5G, or 6G via wired/wireless communication. Additionally, the transmitter (10003) can perform data processing operations required according to a network system (e.g., a communication network system such as 4G, 5G, or 6G). Additionally, the transmission device (10000) can transmit encapsulated data in an on-demand manner.
- a network system e.g., a communication network system such as 4G, 5G, or 6G.
- a receiving device (10004) includes a receiver (10005), a point cloud video decoder (10006), and/or a renderer (10007).
- the receiving device (10004) may include a device, robot, vehicle, AR/VR/XR device, mobile device, home appliance, IoT (Internet of Things) device, AI device/server, etc. that performs communication with a base station and/or other wireless devices using a wireless access technology (e.g., 5G NR (New RAT), LTE (Long Term Evolution)).
- a wireless access technology e.g., 5G NR (New RAT), LTE (Long Term Evolution)
- a receiver (10005) receives a bitstream containing point cloud video data or a file/segment in which the bitstream is encapsulated, from a network or a storage medium.
- the receiver (10005) may perform data processing operations required according to a network system (e.g., a communication network system such as 4G, 5G, or 6G).
- the receiver (10005) may decapsulate the received file/segment and output a bitstream.
- the receiver (10005) may include a decapsulation unit (or decapsulation module) for performing the decapsulation operation.
- the decapsulation unit may be implemented as a separate element (or component) from the receiver (10005).
- a point cloud video decoder (10006) decodes a bitstream containing point cloud video data.
- the point cloud video decoder (10006) can decode the point cloud video data according to how it is encoded (e.g., the reverse process of the operation of the point cloud video encoder (10002)). Accordingly, the point cloud video decoder (10006) can decode the point cloud video data by performing point cloud decompression coding, which is the reverse process of point cloud compression.
- the point cloud decompression coding includes G-PCC coding.
- the renderer (10007) renders the decoded point cloud video data.
- 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 audio data to output point cloud content.
- the renderer (10007) may include a display for displaying the point cloud content.
- the display may not be included in the renderer (10007) but may be implemented as a separate device or component.
- the dotted arrows in the drawing indicate the transmission path of feedback information acquired from the receiving device (10004).
- the feedback information is information for reflecting the interaction with the user consuming the point cloud content, and includes information about the user (e.g., head orientation information, viewport information, etc.).
- the feedback information may be transmitted to the content transmitter (e.g., the transmitting device (10000)) and/or the service provider.
- the feedback information may be used not only by the transmitting device (10000) but also by the receiving device (10004), or may not be provided.
- Head orientation information may refer to information about the position, direction, angle, movement, etc. of the user's head.
- the receiving device (10004) may calculate 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 looking at (i.e., the area that the user is currently viewing).
- the viewport information is information about the area that the user is currently viewing within the point cloud video.
- the viewport or the viewport area may refer to the area that the user is viewing within the point cloud video.
- the viewpoint is the point that the user is viewing within the point cloud video, and may refer to the exact center point of the viewport area.
- the viewport is an area centered on the viewpoint, and the size, shape, etc. that the area occupies may be determined by the FOV (Field Of View). Therefore, the receiving device (10004) may extract viewport information based on the vertical or horizontal FOV supported by the device in addition to the head orientation information. In addition, the receiving device (10004) may perform gaze analysis, etc. based on head orientation information and/or viewport information to check the user's point cloud video consumption method, the point cloud video area the user gazes at, the gaze time, etc. According to embodiments, the receiving device (10004) may transmit feedback information including the gaze analysis result to the transmitting device (10000).
- a device such as a VR/XR/AR/MR display may extract a viewport area based on the user's head position/direction, a vertical or horizontal FOV supported by the device, etc.
- head orientation information and viewport information may be referred to as feedback information, signaling information, or metadata.
- Feedback information may be acquired during the rendering and/or display process.
- the feedback information according to embodiments may be acquired by one or more sensors included in the receiving device (10004). Additionally, the feedback information according to embodiments may be acquired by the renderer (10007) or a separate external element (or device, component, etc.).
- the dotted line in Fig. 1 represents the transmission process of the feedback information acquired by the renderer (10007).
- the feedback information may not only be transmitted to the transmitting side, but may also be consumed by the receiving side. That is, the point cloud content providing system may process (encode/decode/render) point cloud data based on the feedback information.
- the point cloud video decoder (10006) and the renderer (10007) may use the feedback information, i.e., head orientation information and/or viewport information, to preferentially decode and render only the point cloud video for the area currently being viewed by the user.
- the feedback information i.e., head orientation information and/or viewport information
- the receiving device (10004) can transmit feedback information to the transmitting device (10000).
- the transmitting device (10000) (or point cloud video encoder (10002)) can perform an encoding operation based on the feedback information. Therefore, the point cloud content providing system can efficiently process necessary data (e.g., point cloud data corresponding to the user's head position) based on the feedback information without processing (encoding/decoding) all point cloud data, and provide point cloud content to the user.
- the transmitting device (10000) may be referred to as an encoder, a transmitting device, a transmitter, a transmitting system, etc.
- the receiving device (10004) may be referred to as a decoder, a receiving device, a receiver, a receiving system, etc.
- Point cloud data processed (processed through a series of processes of acquisition/encoding/transmission/decoding/rendering) in the point cloud content providing system of FIG. 1 according to embodiments may be referred to as point cloud content data or point cloud video data.
- point cloud content data may be used as a concept including metadata or signaling information related to point cloud data.
- the elements of the point cloud content provision system illustrated in FIG. 1 may be implemented by hardware, software, a processor, and/or a combination thereof.
- FIG. 2 is a block diagram illustrating a point cloud content provision operation according to embodiments.
- the block diagram of Fig. 2 illustrates the operation of the point cloud content provision system described in Fig. 1.
- the point cloud content provision system can process point cloud data based on point cloud compression coding (e.g., G-PCC).
- point cloud compression coding e.g., G-PCC
- a point cloud content providing system can acquire a point cloud video (20000).
- the point cloud video is expressed as a point cloud belonging to a coordinate system representing a three-dimensional space.
- the point cloud video can include a Ply (Polygon File format or the Stanford Triangle format) file. If the point cloud video has one or more frames, the acquired point cloud video can include one or more Ply files.
- the Ply file includes point cloud data such as the geometry and/or attributes of points.
- the geometry includes the positions of points.
- the position of each point can be expressed as parameters (e.g., values of each of the X-axis, Y-axis, and Z-axis) representing a three-dimensional coordinate system (e.g., a coordinate system composed of XYZ axes).
- Attributes include attributes of points (e.g., texture information of each point, color (YCbCr or RGB), reflectance (r), transparency, etc.).
- One point has one or more attributes (or properties). For example, one point may have one attribute of color, or two attributes of color and reflectance.
- geometry may be referred to as positions, geometry information, geometry data, etc.
- attributes may be referred to as attributes, attribute information, attribute data, etc.
- a point cloud content providing system may obtain point cloud data from information related to the acquisition process of a point cloud video (e.g., depth information, color information, etc.).
- a point cloud content providing system can encode point cloud data (20001).
- the point cloud content providing system can encode point cloud data based on point cloud compression coding.
- point cloud data can include geometry and attributes of points. Therefore, the point cloud content providing system can perform geometry encoding to encode geometry and output a geometry bitstream.
- the point cloud content providing system can perform attribute encoding to encode attributes and output an attribute bitstream.
- the point cloud content providing system can perform attribute encoding based on geometry encoding.
- the geometry bitstream and the attribute bitstream according to embodiments can be multiplexed and output as a single bitstream.
- a bitstream according to embodiments may further include signaling information related to geometry encoding and attribute encoding.
- a point cloud content providing system can transmit encoded point cloud data (20002).
- the encoded point cloud data can be expressed as a geometry bitstream and an attribute bitstream.
- the encoded point cloud data can be transmitted in the form of a bitstream together with signaling information related to 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 a bitstream that transmits the encoded point cloud data and transmit it in the form of a file or segment.
- a point cloud content providing system can receive a bitstream including encoded point cloud data.
- the point cloud content providing system e.g., a receiving device (10004) or a receiver (10005)
- a point cloud content providing system can decode encoded point cloud data (e.g., a geometry bitstream, an attribute bitstream) transmitted as a bitstream.
- the point cloud content providing system e.g., a receiving device (10004) or a point cloud video decoder (10005)
- the point cloud content providing system can decode the point cloud video data based on signaling information related to encoding of the point cloud video data included in the bitstream.
- the point cloud content providing system e.g., a receiving device (10004) or a point cloud video decoder (10005)
- the point cloud content providing system can decode the attribute bitstream based on the restored geometry to restore attributes of points.
- a point cloud content provision system e.g., a receiving device (10004) or a point cloud video decoder (10005)
- a point cloud content providing system (e.g., a receiving device (10004) or a renderer (10007)) can render decoded point cloud data (20004).
- the point cloud content providing system e.g., a receiving device (10004) or a renderer (10007)
- Points of the point cloud content may be rendered as vertices having a certain thickness, cubes having a certain minimum size centered on the vertex position, or circles centered on the vertex position. All or a portion of the rendered point cloud content is provided to a user through a display (e.g., a VR/AR display, a general display, etc.).
- a point cloud content provision system (e.g., a receiving device (10004)) can obtain feedback information (20005).
- the point cloud content provision system can encode and/or decode point cloud data based on the feedback information.
- the feedback information and the operation of the point cloud content provision system according to embodiments are identical to the feedback information and operation described in FIG. 1, and therefore, a detailed description thereof will be omitted.
- FIG. 3 illustrates an example of a point cloud encoder according to embodiments.
- FIG. 3 illustrates an example of a point cloud video encoder (10002) of FIG. 1.
- the point cloud encoder reconstructs point cloud data (e.g., positions and/or attributes of points) and performs an encoding operation to adjust the quality of point cloud content (e.g., lossless, lossy, near-lossless) depending on network conditions or applications. If the total size of the point cloud content is large (e.g., point cloud content of 60 Gbps at 30 fps), the point cloud content provision system may not be able to stream the content in real time. Therefore, the point cloud content provision system can reconstruct the point cloud content based on the maximum target bitrate in order to provide it according to the network environment, etc.
- point cloud data e.g., positions and/or attributes of points
- an encoding operation to adjust the quality of point cloud content (e.g., lossless, lossy, near-lossless) depending on network conditions or applications.
- the point cloud content provision system may not be able to stream the content in real time. Therefore
- the point cloud encoder can perform geometry encoding and attribute encoding. Geometry encoding is performed before attribute encoding.
- the point cloud encoder includes a coordinate system transformation unit (Transformation Coordinates, 30000), a quantization unit (Quantize and Remove Points (Voxelize), 30001), an octree analysis unit (Analyze Octree, 30002), a surface approximation analysis unit (Analyze Surface Approximation, 30003), an arithmetic encoder (Arithmetic Encode, 30004), a geometry reconstruction unit (Reconstruct Geometry, 30005), a color transformation unit (Transform Colors, 30006), an attribute transformation unit (Transfer Attributes, 30007), a RAHT transformation unit (30008), a LOD generation unit (Generated LOD, 30009), a lifting transformation unit (Lifting) (30010), and a coefficient quantization unit (Quantize Coefficients, 30011) and/or an arithmetic encoder (30012).
- a coordinate system transformation unit Transformation Coordinates, 30000
- a quantization unit Quantization and Remove
- the coordinate system transformation unit (30000), the quantization unit (30001), the octree analysis unit (30002), the surface approximation analysis unit (30003), the arithmetic encoder (30004), and the geometry reconstruction unit (30005) can be grouped and referred to as a geometry encoder.
- the color conversion unit (30006), attribute conversion unit (30007), RAHT conversion unit (30008), LOD generation unit (30009), lifting conversion unit (30010), coefficient quantization unit (30011) and/or arithmetic encoder (30012) can be grouped and referred to as an attribute encoder.
- the coordinate system transformation unit (30000), the quantization unit (30001), the octree analysis unit (30002), the surface approximation analysis unit (30003), the arithmetic encoder (30004), and the geometry reconstruction unit (30005) can perform geometry encoding.
- the geometry encoding according to the embodiments can include octree geometry coding, direct coding, trisoup geometry encoding, and entropy encoding. Direct coding and trisoup geometry encoding are applied selectively or in combination.
- the geometry encoding is not limited to the above examples.
- a coordinate system conversion unit (30000) receives positions and converts them into coordinates.
- the positions may be converted into location information of a three-dimensional space (e.g., a three-dimensional space expressed in an XYZ coordinate system, etc.).
- the location information of the three-dimensional space according to embodiments may be referred to as geometry information.
- a quantization unit (30001) quantizes geometry.
- the quantization unit (30001) may quantize points based on the minimum position value of all points (e.g., the minimum value on each axis for the X-axis, Y-axis, and Z-axis).
- the quantization unit (30001) performs a quantization operation of multiplying the difference between the minimum position value and the position value of each point by a preset quantization scale value, and then rounding down or up to find the closest integer value. Accordingly, one or more points may have the same quantized position (or position value).
- the quantization unit (30001) according to embodiments performs voxelization based on the quantized positions to reconstruct the quantized points.
- the minimum unit containing two-dimensional image/video information is a pixel, and points of point cloud content (or three-dimensional point cloud video) according to embodiments may be included in one or more voxels.
- the quantization unit (40001) may match groups of points in the three-dimensional space to voxels.
- one voxel may include only one point.
- one voxel may include one or more points.
- the position of the center of the voxel may be set based on the positions of one or more points included in one voxel.
- the attributes of all positions contained in one voxel can be combined and assigned to the voxel.
- the octree analysis unit (30002) performs octree geometry coding (or octree coding) to represent voxels in an octree structure.
- the octree structure represents points matched to voxels based on an octree structure.
- the surface approximation analysis unit (30003) can analyze and approximate an octree.
- the octree analysis and approximation according to the embodiments is a process of analyzing and voxelizing an area including a large number of points to efficiently provide an octree and voxelization.
- An arithmetic encoder (30004) entropy encodes an octree and/or an approximated octree.
- the encoding method includes an arithmetic encoding method.
- the encoding results in a geometry bitstream.
- the color conversion unit (30006), the attribute conversion unit (30007), the RAHT conversion unit (30008), the LOD generation unit (30009), the lifting conversion unit (30010), the coefficient quantization unit (30011) and/or the arithmetic encoder (30012) perform attribute encoding.
- one point may have one or more attributes. Attribute encoding according to embodiments is applied equally to the attributes of one point. However, when one attribute (e.g., color) includes one or more elements, independent attribute encoding is applied to each element.
- Attribute encoding may include color transform coding, attribute transform coding, RAHT (Region Adaptive Hierarchial Transform) coding, Interpolarization-based hierarchical nearest-neighbor prediction-Prediction Transform) coding, and lifting transform (interpolation-based hierarchical nearest-neighbor prediction with an update/lifting step (Lifting Transform)) coding.
- RAHT Registered Adaptive Hierarchial Transform
- lifting transform interpolation-based hierarchical nearest-neighbor prediction with an update/lifting step (Lifting Transform)
- attribute encoding is not limited to the above-described examples.
- the color conversion unit (30006) performs color conversion coding to convert color values (or textures) included in attributes.
- the color conversion unit (30006) may convert the format of color information (e.g., convert from RGB to YCbCr).
- the operation of the color conversion unit (30006) according to the embodiments may be optionally applied depending on the color values included in the attributes.
- the geometry reconstruction unit (30005) reconstructs (decompresses) an octree and/or an approximated octree.
- the geometry reconstruction unit (30005) reconstructs an octree/voxel based on the results of analyzing the distribution of points.
- the reconstructed octree/voxel may be referred to as a reconstructed geometry (or restored geometry).
- the attribute conversion unit (30007) performs attribute conversion that converts attributes based on positions for which geometry encoding has not been performed and/or reconstructed geometry. As described above, since the attributes are dependent on the geometry, the attribute conversion unit (30007) can convert the attributes based on the reconstructed geometry information. For example, the attribute conversion unit (30007) can convert the attribute of a point at a position based on the position value of the point included in the voxel. As described above, when the position of the center point of a voxel is set based on the positions of one or more points included in the voxel, the attribute conversion unit (30007) converts the attributes of one or more points. When try-soup geometry encoding is performed, the attribute conversion unit (30007) can convert attributes based on the try-soup geometry encoding.
- the attribute transformation unit (30007) can perform attribute transformation by calculating the average value of the attributes or attribute values (e.g., the color or reflectance of each point) of neighboring points within a specific position/radius from the position (or position value) of the center point of each voxel.
- the attribute transformation unit (30007) can apply a weight according to the distance from the center point to each point when calculating the average value. Accordingly, each voxel has a position and a calculated attribute (or attribute value).
- the attribute transformation unit (30007) can search for neighboring points within a specific position/radius from the position of the center point of each voxel based on the K-D tree or the Moulton code.
- the K-D tree is a binary search tree that supports a data structure that can manage points based on their positions to enable fast nearest neighbor search (NNS).
- the Moulton code represents the coordinate values (e.g. (x, y, z)) indicating the 3D positions of all points as bit values and is generated by mixing the bits. For example, if the coordinate values indicating the position of a point are (5, 9, 1), the bit values of the coordinate values are (0101, 1001, 0001).
- the attribute transformation unit (30007) can sort points based on the Moulton code value and perform nearest neighbor search (NNS) through a depth-first traversal process. After the attribute transformation operation, if nearest neighbor search (NNS) is also required in other transformation processes for attribute coding, the K-D tree or Moulton code is utilized.
- NSS nearest neighbor search
- the converted attributes are input to the RAHT conversion unit (30008) and/or the LOD generation unit (30009).
- the RAHT transform unit (30008) performs RAHT coding to predict attribute information based on reconstructed geometry information.
- the RAHT transform unit (30008) can predict attribute information of a node at an upper level of an octree based on attribute information associated with a node at a lower level of the octree.
- the LOD generation unit (30009) generates a LOD (Level of Detail) to perform predictive transformation coding.
- the LOD according to the embodiments represents the level of detail of point cloud content. A smaller LOD value indicates lower detail of point cloud content, and a larger LOD value indicates higher detail of point cloud content. Points can be classified according to LOD.
- the lifting transformation unit (30010) performs lifting transformation coding that transforms attributes of a point cloud based on weights. As described above, lifting transformation coding may be applied selectively.
- the coefficient quantization unit (30011) quantizes attribute-coded attributes based on coefficients.
- An arithmetic encoder (30012) encodes quantized attributes based on arithmetic coding.
- the elements of the point cloud encoder of FIG. 3 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, although not shown in the drawing.
- the one or more processors may perform at least one or more of the operations and/or functions of the elements of the point cloud encoder of FIG. 3 described above.
- the one or more processors may operate or execute a set of software programs and/or instructions for performing the operations and/or functions of the elements of the point cloud encoder of FIG. 3.
- the one or more memories may include high-speed random access memory, or may include non-volatile memory (e.g., one or more magnetic disk storage devices, flash memory devices, or other non-volatile solid-state memory devices).
- Figure 4 illustrates examples of octree and occupancy codes according to embodiments.
- the point cloud content provision system (point cloud video encoder (10002)) or point cloud encoder (e.g., octree analysis unit (30002)) performs octree geometry coding (or octree coding) based on an octree structure to efficiently manage the area and/or position of a voxel.
- point cloud video encoder 10002
- point cloud encoder e.g., octree analysis unit (30002)
- octree geometry coding or octree coding
- Fig. 4 shows an octree structure.
- the three-dimensional space of the point cloud content according to the embodiments is expressed by the axes of the coordinate system (e.g., X-axis, Y-axis, Z-axis).
- the octree structure is generated by recursively subdividing a cubical axis-aligned bounding box defined by two extreme points (0,0,0) and (2 d , 2 d , 2 d ).
- 2 d can be set to a value that constitutes the smallest bounding box that encloses all points of the point cloud content (or point cloud video).
- d represents the depth of the octree.
- the value of d is determined according to the following equation. In the equation below, (x int n , y int n , z int n ) represent positions (or position values) of quantized points.
- the entire three-dimensional space can be divided into eight spaces according to the division.
- Each divided space is expressed as a cube with six faces.
- each of the eight spaces is again divided based on the axes of the coordinate system (e.g., X-axis, Y-axis, Z-axis). Therefore, each space is again divided into eight smaller spaces.
- the divided smaller spaces are also expressed as cubes with six faces. This division method is applied until the leaf nodes of the octree become voxels.
- the bottom of Fig. 4 shows the occupancy code of the octree.
- the occupancy code of the octree is generated to indicate whether each of the eight partitioned spaces generated by partitioning one space contains at least one point. Therefore, one occupancy code is expressed by eight child nodes. Each child node represents the occupancy of the partitioned space, and each child node has a value of 1 bit. Therefore, the occupancy code is expressed as an 8-bit code. That is, if the space corresponding to the child node contains at least one point, the node has a value of 1. If the space corresponding to the child node does not contain a point (empty), the node has a value of 0. Since the occupancy code illustrated in Fig.
- a point cloud encoder can entropy encode the occupancy code.
- the point cloud encoder can intra/inter code the occupancy code to increase compression efficiency.
- a receiving device e.g., a receiving device (10004) or a point cloud video decoder (10006) reconstructs an octree based on the occupancy code.
- a point cloud encoder can perform voxelization and octree coding to store the positions of points.
- points within a 3D space are not always evenly distributed, and thus, there may be specific areas where there are not many points. Therefore, performing voxelization on the entire 3D space is inefficient. For example, if there are few points in a specific area, there is no need to perform voxelization up to that area.
- the point cloud encoder can perform direct coding that directly codes the positions of points included in the specific region (or nodes excluding leaf nodes of the octree) without performing voxelization for the specific region described above.
- the coordinates of the direct coded points according to the embodiments are referred to as a direct coding mode (DCM).
- the point cloud encoder can perform trisoup geometry encoding that reconstructs the positions of points within the specific region (or node) on a voxel basis based on a surface model.
- Trisoup geometry encoding is a geometry encoding that expresses the representation of an object as a series of triangle meshes.
- the point cloud decoder can generate a point cloud from the mesh surface.
- Direct coding and trisoup geometry encoding according to the embodiments can be selectively performed. Additionally, direct coding and tri-subtractive geometry encoding according to embodiments may be performed in combination with octree geometry coding (or octree coding).
- the option to use direct mode for applying direct coding must be activated, the node to which direct coding is to be applied must not be a leaf node, and there must be points below a threshold within a specific node. In addition, the total number of points subject to direct coding must not exceed a preset threshold. If the above conditions are satisfied, the point cloud encoder (or arithmetic encoder (30004)) according to the embodiments can entropy code the positions (or position values) of the points.
- a point cloud encoder (e.g., surface approximation analysis unit (30003)) can determine a specific level of an octree (when the level is smaller than the depth d of the octree) and, starting from that level, perform tri-subject geometry encoding to reconstruct the positions of points within a node region on a voxel basis using a surface model (tri-subject mode).
- a point cloud encoder can specify a level to which tri-subject geometry encoding is to be applied. For example, when the specified level is equal to the depth of the octree, the point cloud encoder does not operate in tri-subject mode.
- a point cloud encoder can operate in tri-subject mode only when the specified level is smaller than the depth value of the octree.
- a three-dimensional cubic area of nodes at a specified level is called a block.
- One block may include one or more voxels.
- a block or a voxel may correspond to a brick.
- geometry is represented by a surface. According to embodiments, a surface may intersect each edge of the block at most once.
- one block has 12 edges, there are at least 12 intersections within one block. Each intersection is called a vertex.
- a vertex existing along an edge is detected if there is at least one occupied voxel adjacent to the edge among all blocks sharing the edge.
- An occupied voxel according to embodiments means a voxel containing a point.
- the position of a vertex detected along an edge is the average position along the edge of all voxels adjacent to the edge among all blocks sharing the edge.
- the point cloud encoder calculates the starting point of the edge (x, y, z), the direction vector of the edge ( x, y, z), vertex position values (relative position values within an edge) can be entropy-coded.
- the point cloud encoder according to the embodiments e.g., geometry reconstruction unit (30005)
- the vertices located at the edge of a block determine the surface passing through the block.
- the surface is a non-planar polygon.
- the triangle reconstruction process reconstructs the surface represented by a triangle 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 as follows. 1 Calculate the centroid value of each vertex, 2 Subtract the centroid value from each vertex value, and 3 Square the values, and then add up all the values to obtain the value.
- each vertex is projected to the x-axis based on the center of the block, and projected onto the (y, z) plane.
- the value produced when projected onto the (y, z) plane is (ai, bi)
- the ⁇ value is found through atan2(bi, ai)
- the vertices are sorted based on the ⁇ value.
- the table below shows the combination of vertices to create a triangle depending on the number of vertices. The vertices are sorted in order from 1 to n.
- the first triangle may be composed of the 1st, 2nd, and 3rd vertices among the sorted vertices
- the second triangle may be composed of the 3rd, 4th, and 1st vertices among the sorted vertices.
- the upsampling process is performed to voxelize the triangle by adding points in the middle along the edges. Additional points are generated based on the upsampling factor and the width of the block. The additional points are called refined vertices.
- a point cloud encoder can voxelize the refined vertices. The point cloud encoder can also perform attribute encoding based on the voxelized positions (or position values).
- Figure 5 shows an example of a point configuration by LOD according to embodiments.
- the encoded geometry is reconstructed (decompressed) before attribute encoding is performed.
- the geometry reconstruction operation may include changing the arrangement of direct-coded points (e.g., placing the direct-coded points at the front of the point cloud data).
- the geometry reconstruction process includes triangle reconstruction, upsampling, and voxelization. Since attributes depend on the geometry, attribute encoding is performed based on the reconstructed geometry.
- a point cloud encoder (e.g., LOD generation unit (30009)) can reorganize points by LOD.
- the drawing shows point cloud content corresponding to LOD.
- the left side of the drawing shows the original point cloud content.
- the second figure from the left in the drawing shows the distribution of points of the lowest LOD, and the rightmost figure in the drawing shows the distribution of points of the highest LOD. That is, points of the lowest LOD are sparsely distributed, and points of the highest LOD are densely distributed. That is, as LOD increases in the direction of the arrow indicated at the bottom of the drawing, the interval (or distance) between points becomes shorter.
- Figure 6 shows an example of a point configuration by LOD according to embodiments.
- a point cloud content providing system can generate a LOD.
- the LOD is generated by reorganizing points into a set of refinement levels according to a set LOD distance value (or a set of Euclidean distances).
- the LOD generation process is performed not only in the point cloud encoder but also in the point cloud decoder.
- Fig. 6 shows examples of points (P0 to P9) of point cloud content distributed in 3D space.
- the original order in Fig. 6 represents the order of points P0 to P9 before LOD generation.
- the LOD-based order in Fig. 6 represents the order of points according to LOD generation. The points are rearranged by LOD. Additionally, a higher LOD includes points belonging to a lower LOD.
- LOD0 includes P0, P5, P4, and P2.
- LOD1 includes points of LOD0 and P1, P6, and P3.
- LOD2 includes points of LOD0, points of LOD1, and P9, P8, and P7.
- the point cloud encoder can selectively or in combination perform predictive transform coding, lifting transform coding, and RAHT transform coding.
- a point cloud encoder can perform predictive transformation coding to generate a predictor for points and set a predicted attribute (or predicted attribute value) for each point. That is, N predictors can be generated for N points.
- the predicted attribute (or attribute value) is set as the average value of the product of the attributes (or attribute values, for example, color, reflectance, etc.) of neighboring points set in the predictor of each point and the weight (or weight value) calculated based on the distance to each neighboring point.
- the point cloud encoder according to the embodiments (for example, the coefficient quantization unit (30011)) can quantize and inverse quantize the residual values (which may be referred to as residual attribute, residual attribute value, attribute prediction residual value, etc.) obtained by subtracting the predicted attribute (attribute value) from the attribute (attribute value) of each point.
- the quantization process is as shown in Tables 2 and 3 below.
- a point cloud encoder can entropy code the quantized and dequantized residuals as described above when there are neighboring points to the predictor of each point.
- a point cloud encoder can entropy code the attributes of the point without performing the above-described process when there are no neighboring points to the predictor of each point.
- a point cloud encoder can perform lifting transformation coding by generating a predictor for each point, setting the LOD calculated in the predictor, registering neighboring points, and setting weights according to the distance to the neighboring points.
- Lifting transformation coding is similar to the above-described predictive transformation coding, but differs in that weights are cumulatively applied to attribute values.
- the process of cumulatively applying weights to attribute values according to embodiments is as follows.
- the calculated weights are multiplied by the weights stored in the QW corresponding to the predictor index, and the resulting weights are cumulatively added to the update weight array as the index of the neighboring node.
- the update array accumulates the values obtained by multiplying the calculated weights by the attribute values of the indexes of the neighboring nodes.
- the predicted attribute values are calculated by additionally multiplying the updated attribute values through the lift update process by the weights (stored in QW) updated through the lift prediction process.
- the point cloud encoder e.g., coefficient quantization unit (30011)
- the point cloud encoder e.g., arithmetic encoder (30012)
- a point cloud encoder can perform RAHT transform coding that predicts attributes of upper-level nodes using attributes associated with nodes at lower levels of an octree.
- RAHT transform coding is an example of attribute intra coding through octree backward scan.
- a point cloud encoder scans from a voxel to the entire area, and repeats the merging process up to a root node while merging voxels into larger blocks at each step.
- the merging process according to embodiments is performed only for occupied nodes.
- the merging process is not performed for empty nodes, and the merging process is performed for the node immediately above the empty node.
- g lx,y,z represents the average attribute value of voxels at level l.
- g lx,y,z can be calculated from g l+1 2x,y,z and g l+1 2x+1,y,z .
- g l-1 x,y,z are low-pass values, which are used in the merging process at the next higher level.
- h l-1 x,y,z are high-pass coefficients, and the high-pass coefficients at each step are quantized and entropy coded (e.g., encoding of an arithmetic encoder (30012)).
- the root node is generated as follows through the last g 1 0,0,0 and g 1 0,0,1 .
- the gDC values are also quantized and entropy coded, like the high-pass coefficients.
- Fig. 7 illustrates an example of a point cloud decoder according to embodiments.
- the point cloud decoder illustrated in FIG. 7 is an example of a point cloud decoder and can perform a decoding operation, which is the reverse process of the encoding operation of the point cloud encoder described in FIGS. 1 to 6.
- the point cloud decoder can perform geometry decoding and attribute decoding. Geometry decoding is performed before attribute decoding.
- a point cloud decoder includes an arithmetic decoder (7000), an octree synthesizer (7001), a surface approximation synthesizer (7002), a geometry reconstructor (7003), an inverse transform coordinates (7004), an arithmetic decoder (7005), an inverse quantize (7006), a RAHT transform (7007), a LOD generator (7008), an inverse lifting (7009), and/or an inverse transform colors (7010).
- the arithmetic decoder (7000), the octree synthesis unit (7001), the surface oproximation synthesis unit (7002), the geometry reconstruction unit (7003), and the coordinate system inversion unit (7004) can perform geometry decoding.
- Geometry decoding according to embodiments can include direct coding and trisoup geometry decoding. Direct coding and trisoup geometry decoding are applied selectively.
- geometry decoding is not limited to the above examples, and is performed by the reverse process of the geometry encoding described in FIGS. 1 to 6.
- An arithmetic decoder (7000) decodes a received geometry bitstream based on arithmetic coding.
- the operation of the arithmetic decoder (7000) corresponds to the reverse process of the arithmetic encoder (30004).
- the octree synthesis unit (7001) can generate an octree by obtaining an occupancy code from a decoded geometry bitstream (or information about the geometry obtained as a result of decoding).
- a specific description of the occupancy code is as described in FIGS. 1 to 6.
- the surface off-axis synthesis unit (7002) can synthesize a surface based on the decoded geometry and/or the generated octree when the tri-sub geometry encoding is applied.
- the geometry reconstruction unit (7003) can regenerate geometry based on the surface and/or decoded geometry. As described in FIGS. 1 to 6, direct coding and try-soup geometry encoding are selectively applied. Therefore, the geometry reconstruction unit (7003) directly retrieves and adds position information of points to which direct coding is applied. In addition, when try-soup geometry encoding is applied, the geometry reconstruction unit (7003) can restore geometry by performing a reconstruction operation of the geometry reconstruction unit (30005), such as triangle reconstruction, up-sampling, and voxelization operations. The specific details are the same as described in FIG. 4 and are therefore omitted.
- the restored geometry may include a point cloud picture or frame that does not include attributes.
- the coordinate system inverse transformation unit (7004) can obtain the positions of points by transforming the coordinate system based on the restored geometry.
- the arithmetic decoder (7005), the inverse quantization unit (7006), the RAHT transform unit (7007), the LOD generation unit (7008), the inverse lifting unit (7009), and/or the color inverse transform unit (7010) can perform attribute decoding.
- the attribute decoding according to the embodiments can include RAHT (Region Adaptive Hierarchical Transform) decoding, prediction transform (Interpolaration-based hierarchical nearest-neighbor prediction-Prediction Transform) decoding, and lifting transform (interpolation-based hierarchical nearest-neighbor prediction with an update/lifting step (Lifting Transform)) decoding.
- RAHT Registered Adaptive Hierarchical Transform
- prediction transform Interpolaration-based hierarchical nearest-neighbor prediction-Prediction Transform
- lifting transform interpolation-based hierarchical nearest-neighbor prediction with an update/lifting step (Lifting Transform)
- the three decodings described above can be used selectively, or a combination of one or
- An arithmetic decoder (7005) decodes an attribute bitstream using arithmetic coding.
- the inverse quantization unit (7006) inverse quantizes information about the decoded attribute bitstream or the attributes obtained as a result of the decoding and outputs the inverse quantized attributes (or attribute values).
- the inverse quantization may be selectively applied based on the attribute encoding of the point cloud encoder.
- the RAHT transform unit (7007), the LOD generator (7008), and/or the inverse lifting unit (7009) may process the reconstructed geometry and the inverse quantized attributes. As described above, the RAHT transform unit (7007), the LOD generator (7008), and/or the inverse lifting unit (7009) may selectively perform a corresponding decoding operation according to the encoding of the point cloud encoder.
- the color inverse transform unit (7010) performs inverse transform coding to inversely transform the color values (or textures) included in the decoded attributes.
- the operation of the color inverse transform unit (7010) may be selectively performed based on the operation of the color transform unit (30006) of the point cloud encoder.
- the elements of the point cloud decoder of FIG. 7 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 a point cloud providing device, although not shown in the drawing.
- the one or more processors may perform at least one or more of the operations and/or functions of the elements of the point cloud decoder of FIG. 7 described above.
- the one or more processors may operate or execute a set of software programs and/or instructions for performing the operations and/or functions of the elements of the point cloud decoder of FIG. 7.
- Figure 8 is an example of a transmission device according to embodiments.
- the transmission device illustrated in FIG. 8 is an example of the transmission device (10000) of FIG. 1 (or the point cloud encoder of FIG. 3).
- the transmission device illustrated in FIG. 8 can perform at least one or more of the same or similar operations and encoding methods as the operations and encoding methods of the point cloud encoder described in FIGS. 1 to 6.
- a transmission device may include a data input unit (8000), a quantization processing unit (8001), a voxelization processing unit (8002), an octree occupancy code generation unit (8003), a surface model processing unit (8004), an intra/inter coding processing unit (8005), an arithmetic coder (8006), a metadata processing unit (8007), a color conversion processing unit (8008), an attribute conversion processing unit (or a property conversion processing unit) (8009), a prediction/lifting/RAHT conversion processing unit (8010), an arithmetic coder (8011), and/or a transmission processing unit (8012).
- the data input unit (8000) receives or acquires point cloud data.
- the data input unit (8000) may perform operations and/or acquisition methods identical or similar to those of the point cloud video acquisition unit (10001) (or the acquisition process (20000) described in FIG. 2).
- the data input unit (8000), quantization processing unit (8001), voxelization processing unit (8002), octree occupancy code generation unit (8003), surface model processing unit (8004), intra/inter coding processing unit (8005), and arithmetic coder (8006) perform geometry encoding. Since the geometry encoding according to the embodiments is the same or similar to the geometry encoding described in FIGS. 1 to 6, a detailed description thereof will be omitted.
- the quantization processing unit (8001) quantizes geometry (e.g., position values of points or position values).
- the operation and/or quantization of the quantization processing unit (8001) is identical to or similar to the operation and/or quantization of the quantization unit (30001) described in FIG. 3.
- the specific description is the same as that described in FIGS. 1 to 6.
- the voxelization processing unit (8002) voxels the position values of quantized points.
- the voxelization processing unit (80002) may perform operations and/or processes identical or similar to the operations and/or voxelization processes of the quantization unit (30001) described in FIG. 3. Specific descriptions are identical to those described in FIGS. 1 to 6.
- the octree occupancy code generation unit (8003) performs octree coding on the positions of voxelized points based on the octree structure.
- the octree occupancy code generation unit (8003) can generate an occupancy code.
- the octree occupancy code generation unit (8003) can perform operations and/or methods identical or similar to those of the point cloud encoder (or octree analysis unit (30002)) described in FIGS. 3 and 4. The specific description is the same as that described in FIGS. 1 to 6.
- the surface model processing unit (8004) can perform tri-subject geometry encoding to reconstruct the positions of points within a specific area (or node) on a voxel basis based on the surface model.
- the surface model processing unit (8004) can perform operations and/or methods identical or similar to those of the point cloud encoder (e.g., surface approximation analysis unit (30003)) described in FIG. 3.
- the specific description is the same as that described with reference to FIGS. 1 to 6.
- the intra/inter coding processing unit (8005) may perform intra/inter coding on point cloud data.
- the intra/inter coding processing unit (8005) may perform coding identical to or similar to intra/inter coding.
- the intra/inter coding processing unit (8005) may be included in an arithmetic coder (8006).
- An arithmetic coder (8006) entropy encodes an octree and/or an approximated octree of point cloud data.
- the encoding method includes an arithmetic encoding method.
- the arithmetic coder (8006) performs operations and/or methods identical or similar to those of the arithmetic encoder (30004).
- the metadata processing unit (8007) processes metadata regarding point cloud data, such as setting values, and provides the metadata to a necessary processing step, such as geometry encoding and/or attribute encoding.
- the metadata processing unit (8007) according to the embodiments may generate and/or process signaling information related to geometry encoding and/or attribute encoding.
- the signaling information according to the embodiments may be encoded and processed separately from geometry encoding and/or attribute encoding.
- the signaling information according to the embodiments may be interleaved.
- the color conversion processing unit (8008), the attribute conversion processing unit (8009), the prediction/lifting/RAHT conversion processing unit (8010), and the arithmetic coder (8011) perform attribute encoding. Since the attribute encoding according to the embodiments is the same as or similar to the attribute encoding described in FIGS. 1 to 6, a detailed description thereof will be omitted.
- the color conversion processing unit (8008) performs color conversion coding to convert the color values included in the attributes.
- the color conversion processing unit (8008) can perform color conversion coding based on the reconstructed geometry.
- the description of the reconstructed geometry is the same as that described with reference to FIGS. 1 to 6.
- the color conversion processing unit (8008) performs the same or similar operation and/or method as that of the color conversion unit (30006) described with reference to FIG. 3. A detailed description thereof will be omitted.
- the attribute transformation processing unit (8009) performs attribute transformation to transform attributes based on positions for which geometry encoding has not been performed and/or reconstructed geometry.
- the attribute transformation processing unit (8009) performs operations and/or methods that are the same as or similar to those of the attribute transformation unit (30007) described in FIG. 3. A detailed description thereof will be omitted.
- the prediction/lifting/RAHT transformation processing unit (8010) can code transformed attributes by using any one or a combination of RAHT coding, prediction transformation coding, and lifting transformation coding.
- the prediction/lifting/RAHT transformation processing unit (8010) performs at least one or more of operations that are the same as or similar to those of the RAHT transformation unit (30008), LOD generation unit (30009), and lifting transformation unit (30010) described in FIG. 3.
- the description of the prediction transformation coding, lifting transformation coding, and RAHT transformation coding is the same as that described in FIGS. 1 to 6, so a detailed description is omitted.
- An arithmetic coder (8011) can encode coded attributes based on arithmetic coding.
- the arithmetic coder (8011) performs operations and/or methods identical or similar to those of the arithmetic encoder (300012).
- the transmission processing unit (8012) may transmit each bitstream including encoded geometry and/or encoded attribute, metadata information, or may transmit the encoded geometry and/or encoded attribute, and metadata information as one bitstream.
- the bitstream may include one or more sub-bitstreams.
- the bitstream according to embodiments may include signaling information including a Sequence Parameter Set (SPS) for sequence-level signaling, a Geometry Parameter Set (GPS) for signaling geometry information coding, an Attribute Parameter Set (APS) for signaling attribute information coding, and a Tile Parameter Set (TPS) for tile-level signaling, and slice data.
- the slice data may include information about one or more slices.
- a slice may include one geometry bitstream (Geom0 0 ) and one or more attribute bitstreams (Attr0 0 , Attr1 0 ).
- a slice is a series of syntax elements that represent all or part of a coded point cloud frame.
- a TPS may include information about each tile (e.g., coordinate value information of a bounding box and height/size information, etc.) for one or more tiles.
- a geometry bitstream may include a header and a payload.
- the header of a geometry bitstream may include identification information of a parameter set included in GPS (geom_ parameter_set_id), a tile identifier (geom_tile_id), a slice identifier (geom_slice_id), and information about data included in the payload.
- a metadata processing unit (8007) may generate and/or process signaling information and transmit it to a transmission processing unit (8012).
- elements that perform geometry encoding and elements that perform attribute encoding may share data/information with each other as indicated by a dotted line.
- the transmission processing unit (8012) may perform operations and/or transmission methods identical or similar to those of the transmitter (10003). A detailed description thereof is omitted as it is the same as that described in FIGS. 1 and 2.
- Fig. 9 is an example of a receiving device according to embodiments.
- the receiving device illustrated in FIG. 9 is an example of the receiving device (10004) of FIG. 1.
- the receiving device illustrated in FIG. 9 can perform at least one of the same or similar operations and methods as the operations and decoding methods of the point cloud decoder described in FIGS. 1 to 8.
- a receiving device may include a receiving unit (9000), a receiving processing unit (9001), an arithmetic decoder (9002), an occupancy code-based octree reconstruction processing unit (9003), a surface model processing unit (triangle reconstruction, up-sampling, voxelization) (9004), an inverse quantization processing unit (9005), a metadata parser (9006), an arithmetic decoder (9007), an inverse quantization processing unit (9008), a prediction/lifting/RAHT inverse transform processing unit (9009), a color inverse transform processing unit (9010), and/or a renderer (9011).
- Each component of the decoding according to embodiments may perform the reverse process of the component of the encoding according to embodiments.
- the receiving unit (9000) receives point cloud data.
- the receiving unit (9000) may perform operations and/or receiving methods identical or similar to those of the receiver (10005) of FIG. 1. A detailed description thereof will be omitted.
- the receiving processing unit (9001) can obtain a geometry bitstream and/or an attribute bitstream from the received data.
- the receiving processing unit (9001) can be included in the receiving unit (9000).
- the arithmetic decoder (9002), the occupancy code-based octree reconstruction processing unit (9003), the surface model processing unit (9004), and the inverse quantization processing unit (9005) can perform geometry decoding. Since the geometry decoding according to the embodiments is identical or similar to the geometry decoding described in at least one of FIGS. 1 to 8, a detailed description thereof will be omitted.
- An arithmetic decoder (9002) can decode a geometry bitstream based on arithmetic coding.
- the arithmetic decoder (9002) performs operations and/or coding identical to or similar to those of the arithmetic decoder (7000).
- the occupancy code-based octree reconstruction processing unit (9003) can reconstruct an octree by obtaining an occupancy code from a decoded geometry bitstream (or information about the geometry obtained as a result of decoding).
- the occupancy code-based octree reconstruction processing unit (9003) performs the same or similar operations and/or methods as those of the octree synthesis unit (7001) and/or the octree generation method.
- the surface model processing unit (9004) can perform tri-sub geometry decoding and related geometry reconstructing (e.g., triangle reconstruction, up-sampling, voxelization) based on the surface model method when tri-sub geometry encoding is applied.
- the surface model processing unit (9004) performs the same or similar operations as those of the surface off-ratio synthesis unit (7002) and/or the geometry reconstructing unit (7003).
- the inverse quantization processing unit (9005) can inverse quantize the decoded geometry.
- the metadata parser (9006) can parse metadata, such as setting values, contained in the received point cloud data.
- the metadata parser (9006) can pass the metadata to geometry decoding and/or attribute decoding. A detailed description of the metadata is omitted as it is the same as described in FIG. 8.
- the arithmetic decoder (9007), the inverse quantization processing unit (9008), the prediction/lifting/RAHT inverse transform processing unit (9009), and the color inverse transform processing unit (9010) perform attribute decoding. Since attribute decoding is identical or similar to the attribute decoding described in at least one of FIGS. 1 to 8, a detailed description thereof will be omitted.
- An arithmetic decoder (9007) can decode an attribute bitstream using arithmetic coding.
- the arithmetic decoder (9007) can decode the attribute bitstream based on the reconstructed geometry.
- the arithmetic decoder (9007) performs operations and/or coding identical or similar to those of the arithmetic decoder (7005).
- the inverse quantization processing unit (9008) can inverse quantize the decoded attribute bitstream.
- the inverse quantization processing unit (9008) performs operations and/or methods identical or similar to the operations and/or inverse quantization methods of the inverse quantization unit (7006).
- the prediction/lifting/RAHT inverse transform processing unit (9009) can process reconstructed geometry and inverse quantized attributes.
- the prediction/lifting/RAHT inverse transform processing unit (9009) performs at least one or more of the same or similar operations and/or decodings as the operations and/or decodings of the RAHT transformation unit (7007), the LOD generation unit (7008), and/or the inverse lifting unit (7009) of FIG. 7.
- the color inverse transform processing unit (9010) according to embodiments performs inverse transform coding for inverse transforming the color value (or texture) included in the decoded attributes.
- the color inverse transform processing unit (9010) performs the same or similar operations and/or inverse transform coding as the operations and/or inverse transform coding of the color inverse transform unit (7010) of FIG. 7.
- a renderer (9011) can render point cloud data.
- Fig. 10 shows an example of a structure that can be linked with a point cloud data transmission/reception method/device according to embodiments.
- the structure of FIG. 10 represents a configuration in which at least one of a server (1060), a robot (1010), an autonomous vehicle (1020), an XR device (1030), a smartphone (1040), a home appliance (1050), and/or an HMD (1070) is connected to a cloud network (1010).
- the robot (1010), the autonomous vehicle (1020), the XR device (1030), the smartphone (1040), or the home appliance (1050) are referred to as devices.
- the XR device (1030) may correspond to or be linked with a point cloud data (PCC) device according to embodiments.
- PCC point cloud data
- a cloud network (1000) may refer to a network that constitutes part of a cloud computing infrastructure or exists within the cloud computing infrastructure.
- the cloud network (1000) may be configured using a 3G network, a 4G or LTE (Long Term Evolution) network, or a 5G network.
- the server (1060) is connected to at least one of a robot (1010), an autonomous vehicle (1020), an XR device (1030), a smartphone (1040), a home appliance (1050), and/or an HMD (1070) through a cloud network (1000), and can assist in at least part of the processing of the connected devices (1010 to 1070).
- the HMD (Head-Mount Display) (1070) represents one of the types in which the XR device and/or the PCC device according to the embodiments can be implemented.
- the HMD type device according to the embodiments includes a communication unit, a control unit, a memory unit, an I/O unit, a sensor unit, and a power supply unit.
- devices (1010 to 1050) to which the above-described technology is applied are described.
- the devices (1010 to 1050) illustrated in FIG. 10 can be linked/combined with the point cloud data transmission/reception devices according to the above-described embodiments.
- the XR/PCC device (1030) may be implemented as a HMD (Head-Mount Display), a HUD (Head-Up Display) equipped in a vehicle, a television, a mobile phone, a smart phone, a computer, a wearable device, a home appliance, digital signage, a vehicle, a fixed robot, a mobile robot, etc., by applying PCC and/or XR (AR+VR) technology.
- HMD Head-Mount Display
- HUD Head-Up Display
- the XR/PCC device (1030) can obtain information about surrounding space or real objects by analyzing 3D point cloud data or image data acquired through various sensors or from external devices to generate location data and attribute data for 3D points, and can render and output an XR object to be output. For example, the XR/PCC device (1030) can output an XR object including additional information about a recognized object in correspondence with the recognized object.
- the XR/PCC device (1030) can be implemented as a mobile phone (1040) or the like by applying PCC technology.
- the mobile phone (1040) can decode and display point cloud content based on PCC technology.
- Autonomous vehicles (1020) can be implemented as mobile robots, vehicles, unmanned aerial vehicles, etc. by applying PCC technology and XR technology.
- An autonomous vehicle (1020) to which XR/PCC technology is applied may refer to an autonomous vehicle equipped with a means for providing XR images, or an autonomous vehicle that is the subject of control/interaction within an XR image.
- an autonomous vehicle (1020) that is the subject of control/interaction within an XR image is distinct from an XR device (1030) and can be linked with each other.
- An autonomous vehicle (1020) equipped with a means for providing XR/PCC images can obtain sensor information from sensors including cameras and output XR/PCC images generated based on the obtained sensor information.
- the autonomous vehicle (1020) can be equipped with a HUD to output XR/PCC images, thereby providing passengers with XR/PCC objects corresponding to real objects or objects on a screen.
- the XR/PCC object when the XR/PCC object is output to the HUD, at least a part of the XR/PCC object may be output so as to overlap with an actual object toward which the passenger's gaze is directed.
- the XR/PCC object when the XR/PCC object is output to a display provided inside the autonomous vehicle, at least a part of the XR/PCC object may be output so as to overlap with an object on the screen.
- the autonomous vehicle (1220) may output XR/PCC objects corresponding to objects such as a lane, another vehicle, a traffic light, a traffic sign, a two-wheeled vehicle, a pedestrian, a building, etc.
- VR Virtual Reality
- AR Augmented Reality
- MR Magnetic Reality
- PCC Point Cloud Compression
- VR technology is a display technology that provides only CG images of real-world objects or backgrounds.
- AR technology refers to a technology that shows a virtually created CG image on top of an image of an actual object.
- MR technology is similar to the aforementioned AR technology in that it mixes and combines virtual objects in the real world.
- real objects and virtual objects created with CG images are clear, and virtual objects are used in a form that complements real objects, whereas in MR technology, virtual objects are considered to have the same characteristics as real objects.
- hologram service which is an application of the aforementioned MR technology.
- the PCC method/device according to the embodiments can be applied to a vehicle providing an autonomous driving service.
- Vehicles providing autonomous driving services are connected to PCC devices to enable wired/wireless communication.
- a point cloud data (PCC) transmission/reception device when connected to a vehicle to enable wired/wireless communication, can receive/process content data related to AR/VR/PCC services that can be provided together with autonomous driving services and transmit the same to the vehicle.
- the point cloud data transmission/reception device when the point cloud data transmission/reception device is mounted on a vehicle, the point cloud transmission/reception device can receive/process content data related to AR/VR/PCC services and provide the same to a user according to a user input signal input through a user interface device.
- a vehicle or a user interface device can receive a user input signal.
- the user input signal according to embodiments can include a signal instructing an autonomous driving service.
- the point cloud data transmission method/device is interpreted as a term referring to the transmission device (10000) of FIG. 1, the point cloud video encoder (10002), the transmitter (10003), the acquisition-encoding-transmission (20000-20001-20002) of FIG. 2, the point cloud video encoder of FIG. 3, the transmission device of FIG. 8, the device of FIG. 10, the encoding method of FIG. 25, the transmission device of FIG. 27, the transmission method of FIG. 41, etc.
- the point cloud data receiving method/device is interpreted as a term referring to the receiving device (10004), receiver (10005), point cloud video decoder (10006) of FIG. 1, transmission-decoding-rendering (20002-20003-20004) of FIG. 2, point cloud video decoder of FIG. 7, receiving device of FIG. 9, device of FIG. 10, decoding method of FIG. 26, receiving device of FIG. 28, receiving method of FIG. 41, etc.
- the point cloud data transmission/reception method/device according to the embodiments may be abbreviated as the method/device according to the embodiments.
- geometry data, geometry information, location information, etc., which constitute point cloud data are interpreted as having the same meaning.
- Attribute data, attribute information, property information, etc., which constitute point cloud data, are interpreted as having the same meaning.
- the method/device according to the embodiments can process point cloud data taking into account scalable transmission.
- the method/device describes a method for efficiently supporting selective decoding of a portion of data when transmitting/receiving point cloud data due to receiver performance or transmission speed.
- this document proposes a technique for increasing the efficiency of scalable coding, wherein an encoder on the transmitting side can selectively transmit information required by a decoder on the receiving side for already compressed data, and the decoder can decode the information.
- a coding unit can be configured as an independent slice according to the meaning of a tree level, LOD, layer group unit, etc.
- this paper proposes a method for improving the efficiency of scalable coding among point cloud data compression methods.
- scalable coding is a technology that can gradually change the resolution of data depending on the circumstances such as the request/processing speed/performance/transmission bandwidth of the receiving end, so that the transmitting end can efficiently transmit compressed data and the receiving end can decode the compressed data.
- packing can be applied to effectively transmit point cloud data organized based on layers, and in particular, when a direct compression mode is used for position compression, a method for organizing and transmitting/receiving slice segments to be more suitable for scalable PCC services is proposed.
- a compression method can be used for efficient storage and transmission of large-capacity point cloud data with a wide distribution and high point density.
- the point cloud data is composed of a set of points, and each point is composed of geometry information (or referred to as geometry or geometry data) and attribute information (or referred to as attribute or attribute data).
- the geometry information is three-dimensional position information (xyz) of each point. That is, the position of each point is expressed as parameters on a coordinate system representing a three-dimensional space (for example, parameters (x, y, z) of the three axes representing the space, namely the X-axis, Y-axis, and Z-axis).
- the attribute information means the color (RGB, YUV, etc.), reflectance, normal vectors, transparency, etc. of the point.
- Point Cloud Compression uses octree-based compression to efficiently compress distribution characteristics that are unevenly distributed in three-dimensional space, and compresses attribute information based on this.
- the point cloud video encoder and point cloud video decoder illustrated in FIGS. 3 and 7 can process operation(s) according to embodiments through each component.
- a transmitting device compresses geometric information (e.g., location) and attribute information (e.g., color/brightness/reflectivity, etc.) of point cloud data and transmits them to a receiving device.
- point cloud data can be organized according to an octree structure with layers or LoD (Level of Detail) depending on the level of detail, and scalable point cloud data coding and representation are possible based on this.
- LoD Level of Detail
- a portion of a scalable point cloud compression bitstream needs to be transmitted (e.g., when only some layers are decoded during scalable decoding)
- the method/device according to the embodiments provides slices so that the point cloud can be divided and processed by region.
- entropy-based compression methods and direct coding can be used together, in which case a slice configuration is proposed to efficiently utilize scalability.
- the method/device according to the embodiments can define a slice segmentation structure of point cloud data and signal a scalable layer and slice structure for scalable transmission.
- the method/device according to the embodiments can process a bitstream by dividing it into specific units for efficient bitstream transmission and decoding.
- the method/device according to the embodiments enables selective transmission and decoding of point cloud data composed of layers in bitstream units.
- a unit according to embodiments may be referred to as LOD, layer, slice, etc.
- LOD is a term similar to LOD of attribute data coding, but in another sense, it may mean a data unit for a layer structure of a bitstream.
- LOD according to embodiments may be a concept corresponding to one depth or binding two or more depths based on the depth (level) of the layer structure of point cloud data, for example, an octree or multiple trees.
- a layer is a concept corresponding to one depth or binding two or more depths for generating a unit of a sub-bitstream, and may correspond to one LOD or corresponding to two or more LODs.
- a slice is a unit for configuring a unit of a sub-bitstream, and may correspond to one depth, a portion of one depth, or corresponding to two or more depths.
- a slice may correspond to one LOD, a portion of one LOD, or corresponding to two or more LODs.
- LOD, layer, and slice may correspond to or be in an inclusive relationship with each other.
- units according to embodiments may include LODs, layers, slices, layer groups, subgroups, etc., and may be referred to as complementary to each other. According to embodiments, in an octree structure, layer, depth, level, and depth level may be used with the same meaning.
- Fig. 13 is a diagram illustrating an example of a layer-based point cloud data configuration according to embodiments.
- Fig. 13 is an example of an octree structure in which the depth level of the root node is set to 0 and the depth level of the leaf node is set to 7.
- the method/device according to the embodiments can encode and decode point cloud data by configuring layer-based point cloud data as shown in FIG. 13.
- Layering of point cloud data may have a layer structure in various perspectives such as SNR, spatial resolution, color, temporal frequency, bit depth, etc. depending on the application field, and may form layers in the direction of increasing data density based on an octree structure or LOD structure.
- the LOD when generating LOD based on an octree structure, the LOD can be defined to increase in the direction of increasing detail, i.e., in the direction of increasing octree depth levels.
- layer can be used interchangeably with "level,” “depth,” and “depth level.”
- LOD 0 is configured including from the root node level to octree depth level 4
- LOD 1 is configured including from the root node level to octree depth level 5
- LOD 2 is configured including from the root node level to octree depth level 7.
- Fig. 14 (a) shows a bitstream structure of geometry data according to embodiments
- Fig. 14 (b) shows a bitstream structure of attribute data according to embodiments.
- the method/device according to the embodiments can generate LODs based on layering of an octree structure as in FIG. 13, and configure a geometry bitstream and an attribute bitstream as in (a) and (b) of FIG. 14.
- a transmission device can divide a bitstream obtained through point cloud compression into a geometry bitstream and an attribute bitstream according to the type of data and transmit the bitstream.
- each bitstream can be transmitted as a slice.
- a geometry bitstream e.g., (a) of FIG. 14
- an attribute bitstream e.g., (b) of FIG. 14
- a process of decoding the bitstream a process of selecting only the part to be used and removing unnecessary parts, and a process of re-encoding based only on the necessary information must be performed.
- This paper proposes a method to divide the bitstream into layers (or LoDs) and deliver them to avoid these unnecessary intermediate processes.
- FIG. 15 is a diagram showing an example of a configuration of a bitstream for dividing the bitstream into layer (or LoD) units and transmitting it according to embodiments.
- the transmitting device can divide the initial LoD information and the information R newly included in each LoD into independent units (e.g., slices) and transmit them, as shown in FIG. 15.
- the set of points newly added compared to the previous LoD to constitute each LoD can be defined as information R.
- Figure 15 is an example in which LoD1 includes LoD0 + information R1, and LoD2 includes LoD1 + information R2.
- points sampled for one or more octree depth levels can be determined as data belonging to information R. That is, a set of points sampled (i.e., matching occupied nodes) for one or more octree depth levels can be defined as information R. According to another embodiment, points sampled for one octree depth level can be defined by dividing them into multiple pieces of information R according to a certain criterion. At this time, various criteria for dividing one octree depth level into multiple pieces of information R can be considered as follows.
- data in the information R can be made into M pieces of information R having consecutive Moulton codes, or M pieces of information R can be made by grouping together pieces with the same remainder when Moulton code order index is divided by M, or M pieces of information R can be made by grouping together pieces at the same position when grouped as sibling nodes.
- some of the sampled points of multiple octree depth levels can be determined as information R.
- FIG. 15 shows an example in which a geometry bitstream and an attribute bitstream are each divided into three slices according to embodiments.
- Each slice includes a header and a payload (or data unit) containing actual data (e.g., geometry data, attribute data).
- the header may include information about the corresponding slice.
- the header may further include reference information related to a previous slice, a previous LoD, or a previous layer for LoD configuration.
- the geometry bitstream is divided into a slice that carries geometry data belonging to LoD0, a slice that carries geometry data belonging to information R1, and a slice that carries geometry data belonging to information R2.
- the attribute bitstream is divided into a slice that carries attribute data belonging to LoD0, a slice that carries attribute data belonging to information R1, and a slice that carries attribute data belonging to information R2.
- the receiving method/device according to the embodiments can receive a bitstream divided into LODs or layers and efficiently decode only the data to be used without a complex intermediate process.
- the geometry bitstream and the attribute bitstream may be transmitted separately, or the geometry bitstream and the attribute bitstream may be multiplexed into a single bitstream and transmitted.
- each bitstream includes LoD0 and one or more pieces of information R
- the transmission order of LoD0 and one or more pieces of information R may be different.
- Figure 15 is an example in which a geometry bitstream and an attribute bitstream are transmitted respectively, and at this time, LoD0 including a geometry bitstream and two pieces of information R(R1, R2) are transmitted sequentially, and LoD0 including an attribute bitstream and two pieces of information R(R1, R2) are transmitted sequentially.
- FIG. 16 illustrates an example of a bitstream alignment method when a geometry bitstream and an attribute bitstream are multiplexed into one bitstream according to embodiments.
- the transmission method/device according to the embodiments can serially transmit geometry data and attribute data as illustrated in FIG. 16 when transmitting a bitstream.
- the entire geometry data or geometry information
- attribute data or attribute information
- FIG. 16 illustrates an example in which layers (LODs) including geometry data may be positioned first in the bitstream, and layers (LODs) including attribute data may be positioned after the geometry layer. Since attribute data is dependent on geometry data, layers (LODs) including geometry data may be positioned before layers (LODs) including attribute data.
- FIG. 16 illustrates an example in which LoD0 including geometry data and two pieces of information R (R1, R2) are sequentially transmitted, and then LoD0 including attribute data and two pieces of information R (R1, R2) are sequentially transmitted. At this time, the positions may be variously changed according to embodiments.
- references between geometry headers are possible, and references between attribute headers and geometry headers are also possible.
- FIG. 17 illustrates another example of a bitstream alignment method when a geometry bitstream and an attribute bitstream are multiplexed into one bitstream according to embodiments.
- the transmission method/device according to the embodiments can serially transmit geometry data and attribute data as shown in FIG. 17 when transmitting a bitstream.
- bitstreams constituting the same layer including geometry data and attribute data can also be collected and transmitted.
- the decoding execution time can be shortened.
- information that must be processed first small LoD, geometry must precede attributes
- Figure 17 is an example in which LoD0 including geometry data, LoD0 including attribute data, information R1 including geometry data, information R1 including attribute data, information R2 including geometry data, and information R2 including attribute data are transmitted in that order.
- the position can be changed in various ways depending on the embodiments.
- references between geometry headers are possible, and references between attribute headers and geometry headers are also possible.
- the transmission/reception method/device can efficiently select a desired layer (or LoD) in an application field at the bitstream level when transmitting and receiving a bitstream.
- a desired layer or LoD
- the bitstream alignment method when geometry information is collected and transmitted as in FIG. 16, an empty part may appear in the middle after selecting a specific bitstream level, and in this case, the bitstream may need to be rearranged.
- FIGS. 18(a) to 18(c) are drawings showing examples of symmetrical geometry-attribute selection according to embodiments.
- the transmitting device selects and transmits only up to LoD1 (i.e., LoD0+R1), and removes and does not transmit information R2 (i.e., a new part among LoD2) corresponding to the upper layer from the bitstream.
- LoD1 i.e., LoD0+R1
- R2 i.e., a new part among LoD2
- geometry data and attribute data of the same layer are selected and transmitted simultaneously, or selected and removed simultaneously.
- Figures 19(a) to 19(c) are diagrams illustrating examples of asymmetric geometry-attribute selection according to embodiments.
- asymmetric geometry-attribute selection only one of the geometry data and attribute data of the same layer is selected and transmitted or removed.
- the transmitting device selects and transmits LoD1 (LoD0 +R1) including geometry data, LoD1 (LoD0 +R1) including attribute data, and R2 including geometry data, and removes R2 including attribute data from the bitstream and does not transmit it. That is, attribute data is an example of selecting and transmitting the remaining data except for data of an upper layer (R2), and geometry data is an example of transmitting data of all layers (from level 0 (root level) to level 7 (leaf level) of an octree structure).
- a portion of the bitstream can be selected by using the symmetrical geometry-attribute selection method of FIGS. 18(a) to 18(c) or the asymmetrical geometry-attribute selection method of FIGS. 19(a) to 19(c) or a combination of the symmetrical geometry-attribute selection method and the asymmetrical geometry-attribute selection method.
- segmentation of bitstreams and selection of some bitstreams described above are intended to support the scalability of point cloud data.
- This document represents point cloud data in an octree structure and supports scalable encoding/decoding (scalability) when separated by LOD (or layer).
- Scalability features may include slice level scalability and/or octree level scalability.
- a LoD may be used as a unit to represent a set of one or more octree layers. Additionally, a LoD may also have the meaning of a bundle of octree layers to be configured as a slice unit.
- LOD can be used in a broad sense, such as a unit for dividing data in detail, by extending the meaning of LOD when encoding/decoding attributes.
- spatial scalability by the actual octree layer can be provided for each octree layer, but it can be selected at the LoD level when configuring scalability at the slice level before bitstream parsing.
- the level from the root level to the 4th level corresponds to LoD0
- the level from the root level to the 5th level corresponds to LoD1
- the level from the root level to the 7th level corresponds to LoD2.
- the scalable stages provided are three stages of LoD0, LoD1, and LoD2, and the scalable stages that can be provided in the decoding stage by the octree structure are eight stages from the root level to the leaf level.
- a transcoder when LoD0 to LoD2 are each composed of slices, a transcoder (see FIG. 11) of a receiver or transmitter may select only LoD0, only LoD1, or LoD2 for scalable processing.
- LoD1 includes LoD0
- LOD2 includes LoD1 and LoD2.
- the receiving device can consider the node size that can be obtained through the maximum octree level (or depth) as a leaf node, and the node size at this time can be transmitted as signaling information.
- octree depth, octree layer, octree level, etc. mean units for dividing data in detail.
- the receiving device can consider the node size that can be obtained through the maximum octree level (or depth) as a leaf node, and the node size at this time can be transmitted as signaling information.
- FIGS. 20(a) to 20(c) illustrate examples of a method for constructing slices including point cloud data according to embodiments.
- the transmission method/device/encoder according to the embodiments may be configured by dividing a G-PCC bit stream into a slice structure.
- a slice may be a data unit for detailed data representation.
- one slice may have one or more octree layers (or depths).
- a transmission method/device may scan nodes (points) included in an octree in the direction of a scan order (41000) to construct a bitstream based on a slice (41001).
- One slice may include nodes of one or more levels in the octree structure, may include only nodes of a specific level, may include only some nodes of a specific level, or may include only some nodes of one or more levels.
- Fig. 20(a) shows an example in which an octree structure is composed of seven slices.
- Slice (41002) may be composed of nodes from level 0 to level 4.
- Slice (41003) may be composed of some nodes of level 5
- slice (41004) may be composed of other some nodes of level 5
- slice (41005) may be composed of still other some nodes of level 5. That is, level 5 in Fig. 20(a) is divided into three slices.
- level 6 i.e., leaf level in Fig. 20(a) is also divided into three slices. In other words, one slice may be composed of some nodes of a specific level.
- Figure 20(b) shows an example in which an octree structure is composed of four slices, with one slice composed of nodes from level 0 to level 3 and some nodes of level 4, one slice composed of the remaining nodes of level 4 and some nodes of level 5, and one slice composed of the remaining nodes of level 5 and some nodes of level 6. In addition, one slice composed of the remaining nodes of level 5 and some nodes of level 6, and one slice composed of the remaining nodes of level 6.
- Fig. 20(c) shows an example in which an octree structure is composed of five slices, with one slice composed of nodes from level 0 to level 3, and four slices composed of nodes from level 4 to level 6. That is, one slice is composed of some nodes of level 4, some nodes of level 5, and some nodes of level 6. That is, one slice at level 4 or level 6 can include some data of level 4 and data of level 5 or level 6 corresponding to child nodes of that data.
- the signaling information may include layer information included in each slice, node information included in each layer, etc.
- An encoder and a device corresponding to the encoder according to the embodiments can encode point cloud data and generate and transmit a bitstream further including signaling information (or parameter information) regarding the encoded data and the point cloud data.
- the bitstream when generating a bitstream, can be generated based on a bitstream structure according to embodiments (e.g., see FIGS. 14-20, etc.). Accordingly, a receiving device, a decoder, a corresponding device, etc. according to embodiments can receive and parse a bitstream configured to suit a selective decoding structure of some data, thereby decoding only a portion of the point cloud data and efficiently providing it.
- the point cloud data transmission method/device according to the embodiments can scalably transmit a bitstream including point cloud data, and the point cloud data reception method/device according to the embodiments can scalably receive and decode the bitstream.
- Scalable transmission may mean transmitting or decoding only a portion of the bitstream rather than transmitting or decoding the entire bitstream, and the result may be low resolution point cloud data.
- the target octree layer must not depend on information from lower octree layers. This can be a common constraint for geometry/attribute coding.
- all octree layers may support scalable transmission, but scalable transmission may be enabled only for a specific octree layer or lower.
- the receiving device can determine whether the corresponding slice is necessary or unnecessary at the bitstream stage by notifying the receiving device of which scalable layer the corresponding slice is included in through signaling information. In the example of Fig.
- levels 0 i.e., the root level
- 4 (41002) do not support scalable transmission and constitute a single scalable layer
- the octree layers below can be configured to have a one-to-one matching with the scalable layer.
- scalability can be supported for the part corresponding to the leaf node, and in the case where multiple octree layers are included in one slice, as in Fig. 20(c), the layers can be defined to form one scalable layer.
- scalable transmission and scalable decoding can be used separately depending on the purpose.
- scalable transmission can be used for the purpose of selecting information up to a specific layer without going through a decoder in a transmitting/receiving device.
- scalable decoding can be used for the purpose of selecting a specific layer during coding. That is, scalable transmission can support the selection of required information without going through a decoder in a compressed state (i.e., at the bitstream stage), thereby enabling the identification of a specific layer in a transmitting or receiving device.
- scalable decoding can be used in cases such as scalable representation by supporting encoding/decoding only up to the required part in the encoding/decoding process.
- the layer configuration for scalable transmission and the layer configuration for scalable decoding may differ.
- the three lower octree layers including leaf nodes may constitute one layer from the perspective of scalable transmission, but from the perspective of scalable decoding, scalable decoding may be possible for each of the leaf node layer, leaf node layer-1, and leaf node layer-2 if all layer information is included.
- Figures 21(a) and 21(b) illustrate geometry coding layer structures according to embodiments.
- Figure 21(a) is a diagram showing an example of three slices generated by a layer group structure in an encoder on the transmitting side
- Figure 21(b) is a diagram showing an example of a partially decoded output using two slices in a decoder on the receiving side.
- a G-PCC bitstream may be segmented into multiple sub-bitstreams.
- fine granularity slicing may be referred to as layer group-based slicing.
- each slice may include coded data of a partial coding layer or a partial region. Segmentation or partitioning of slices paired with the coding layer structure may efficiently support scalable transmission or spatial random access use cases.
- each slice segment may contain data coded from a group of layers defined as follows.
- a layer group can be defined as a group of consecutive tree layers, and the depth of the group of tree layers can be any number within the tree depth, and the start depth can be less than the end depth.
- the order of the coded data in a slice segment can be the same as the order of the coded data in a single slice.
- a tree layer can be referred to as a tree level.
- a geometry coding layer structure with eight coding layers as shown in Fig. 21(a)
- there are three layer groups and each layer group matches a different slice. More specifically, layer group 1 for coding layers 0 to 4 matches slice 1, layer group 2 for coding layer 5 matches slice 2, and layer group 3 for coding layers 6-7 matches slice 3.
- the decoded output becomes partial layers 0 to 5 as shown in Fig. 21(b).
- Using slices in the layer group structure allows for partial decoding of coding layers without accessing the entire bitstream.
- Bitstream and point cloud data can be generated based on coding layer-based slice segmentation.
- the method/device can select relevant slices, thereby supporting scalable transmission or partial decoding.
- Figure 21(a) illustrates a geometry coding layer structure in which each slice has eight layers (or levels) corresponding to a layer group.
- Layer group 1 includes coding layers 0 to 4.
- Layer group 2 includes coding layer 5.
- Layer group 3 is a group for coding layers 6 and 7.
- a geometry (or attribute) has a tree structure with eight levels (depths)
- data corresponding to one or more levels (depths) can be grouped to hierarchically structure a bitstream.
- Each group can be included in one slice.
- Figure 21(b) shows the decoded output when two of three slices are selected.
- the decoder selects Group 1 and Group 2
- partial layers from levels 0 to 5 of the tree are selected.
- partial decoding of a coding layer can be supported without accessing the entire bitstream.
- the encoder may generate three slices based on the layer group structure.
- the decoder according to the embodiments may select two slices from the three slices to perform partial decoding.
- a bitstream according to embodiments may include slices based on layer groups. Each slice may include a header including signaling information regarding point cloud data (i.e., geometry data and/or attribute data) included in the slice.
- a receiving method/device according to embodiments may select slices and decode point cloud data included in the payload of the slice based on the header included in the selected slice.
- the method/device according to the embodiments can further divide the layer group into multiple subgroups, taking into account spatial random access use cases.
- the subgroups according to the embodiments are mutually exclusive, and the set of subgroups can be identical to the layer group. Since the points of each subgroup form a boundary in a spatial region, the subgroups can be represented by subgroup bounding box information.
- the layer group and subgroup structures can support access to a region of interest (ROI) by selecting slices that cover the ROI. Spatial random access within a frame or tile can be supported by efficiently comparing the region of interest (ROI) with the bounding box information of each slice.
- ROI region of interest
- the method/device according to the embodiments can configure a slice for transmitting point cloud data as shown in FIG. 21(a).
- the entire coded bitstream may be included in a single slice.
- each slice may include a sub-bitstream.
- the order of the slices may be identical to the order of the sub-bitstreams.
- each slice may correspond to a layer group in a tree structure.
- slices may not affect previous slices, just as higher layers in a geometry tree do not affect lower layers.
- Segmented slices according to the embodiments are efficient in terms of error robustness, effective transmission, supporting region of interest, etc.
- split slices can be more error-resistant. That is, if a single slice contains the entire bitstream of a frame, data loss can affect the entire frame data. Conversely, if a bitstream is split into multiple slices, even if at least one slice is lost, at least one slice unaffected by the loss can still be decoded.
- This document may consider cases where multiple decoders with different capabilities can be supported.
- the coded point cloud data i.e., the Point Cloud Compression (PCC) bitstream
- the LOD of the coded point cloud data can be determined prior to encoding. Therefore, multiple pre-encoded bitstreams with different resolutions of the point cloud data can be transmitted independently. This can be inefficient in terms of bandwidth or storage space.
- PCC Point Cloud Compression
- a single bitstream can support different levels of decoders. From the decoder side, the receiver can select target layers and transmit a partially selected bitstream to the decoder. Similarly, by using a single bitstream without segmenting the entire bitstream, partial bitstreams can be efficiently generated at the transmitter.
- PCC Point Cloud Compression
- region-based spatial scalability can be defined as follows: a compressed bitstream consists of one or more layers, so that a specific region of interest can have higher density with additional layers, and layers can be predicted from lower layers.
- the decoder can increase the resolution of the region of interest upon request. This can be achieved by utilizing scalable structures of G-PCC, such as geometry octrees and scalable attribute coding schemes.
- decoders must access the entire bitstream based on the current slice structure, which includes the entire geometry or attributes. This may result in bandwidth, memory, and decoder inefficiencies.
- the decoder can select a slice as needed before efficiently parsing the bitstream.
- the method/device according to the embodiments can create a layer group using a tree structure (or layer structure) of point cloud data.
- a geometry coding layer structure e.g., an octree structure
- three slices can be used to contain one or more layers.
- a group represents a group of layers.
- the tree structure is identical to the geometry tree structure.
- the same octree-slice mapping can be used to create attribute slice segments.
- a layer group according to embodiments represents a bundle of layer structure units generated in G-PCC coding, such as an octree layer, LoD layer, etc.
- a subgroup can be represented as a set of adjacent nodes within a single layer group. For example, it can be composed of nodes grouped by Morton code order, nodes grouped by distance, or nodes grouped by coding order. Nodes with parent-child relationships can also exist within a single subgroup.
- a boundary occurs in the middle of the layer, and parameters such as entropy_continuation_enabled_flag can be signaled to indicate whether there is entropy continuity at the boundary. Continuity can also be maintained by referencing the previous slice via ref_slice_id.
- the tree structure according to the embodiments may be an octree structure, and the attribute layer structure or attribute coding tree according to the embodiments may include a structure of a level of detail (LOD). That is, the tree structure for point cloud data includes layers corresponding to depth or level, and the layers may be grouped.
- LOD level of detail
- the method/device according to the embodiments can generate an octree structure of geometry or an LOD tree structure of attributes.
- point cloud data can be grouped based on layers of the tree structure.
- multiple layers are grouped to form first to third groups (or layer groups).
- a single group can be further divided to form subgroups.
- a slice may include data coded from a layer group, wherein the layer group is defined as a group of contiguous tree layers, and the start and end depths of the tree layers may be a specific number within the tree depth, with the start being less than the end.
- Figure 21(a) shows the geometry coding layer structure as an example of a tree structure, but a coding layer structure for attributes can also be created similarly.
- Figure 22 illustrates the layer group and subgroup structure according to embodiments.
- point cloud data and bitstream can be expressed by being separated into bounding boxes.
- Layer group 2 is divided into two subgroups (group2-1, group2-2) and included in different slices
- layer group 3 is divided into four subgroups (group3-1, group3-2, group3-3, group3-4) and included in different slices.
- spatial access can be performed by 1) comparing the bounding box of each slice with the ROI, 2) selecting a slice in which the subgroup bounding box overlaps the ROI, and 3) decoding the selected slice.
- slices 1, 3, and 6 are selected as the subgroup bounding boxes of layer group 1, subgroups 2-2, and 3-3 covering the ROI area.
- layer group 1 subgroups 2-2, and 3-3 covering the ROI area.
- selection and decoding can be performed upon receiving each slice segment to improve time efficiency.
- the method/device according to the embodiments may represent data as a tree (45000) composed of layers (which may be referred to as depths, levels, etc.) when encoding geometry and/or attributes.
- Point cloud data corresponding to each layer (depth/level) may be grouped into a layer group (or group, 45001).
- Layer group 2 may be further divided (segmented) into two subgroups (45002), and layer group 3 may be further divided (segmented) into four subgroups (45003).
- Each subgroup may be composed of each slice, and a bitstream may be generated.
- a receiving device may receive a bitstream, select a specific slice from the bitstream, and decode a bounding box corresponding to a subgroup included in the selected slice. For example, when slice 1 is selected, a bounding box (45004) corresponding to layer group 1 may be decoded. Layer group 1 may be data corresponding to the largest area. When additionally displaying a detailed area for layer group 1, a method/device according to embodiments may partially hierarchically access bounding boxes (point cloud data) of subgroup 2-2 and/or subgroup 3-3 for a detailed area included in an area of layer group 1 by selecting slice 3 and/or slice 6.
- bounding boxes point cloud data
- Encoding and decoding of point cloud data using the layer group and subgroup of FIG. 22 can be performed by the transmitting/receiving device of FIG. 1, the encoding and decoding of FIG. 2, the transmitting device/method of FIG. 3, the receiving device/method of FIG. 7, the transmitting/receiving device/method of FIG. 8 and FIG. 9, the devices of FIG. 10, the transmitting/receiving methods of FIG. 24, FIG. 25, and FIG. 27, the transmitting/receiving devices of FIG. 26 and FIG. 28, and the transmitting/receiving methods of FIG. 40 and FIG. 41.
- Figures 23(a) to 23(c) illustrate representations of layer group-based point cloud data according to embodiments.
- the device/method according to the embodiments can provide efficient access to large-scale point cloud data or high-density point cloud data through layer group slicing based on scalability and spatial access capabilities. Because point cloud data has a large number of points and large data sizes, rendering or displaying the content can take a significant amount of time. Therefore, as an alternative approach, the level of detail can be adjusted based on the viewer's interest. For example, when the viewer is far away from a scene or object, structural or global region information is more important than local details, whereas when the viewer is close to a specific area or object, detailed information about the region of interest is needed. Using an adaptive approach, the renderer according to the embodiments can efficiently provide data of sufficient quality to the viewer.
- Figures 23(a) to 23(c) illustrate examples of increasing detail for three different viewing distances based on the ROI.
- Fig. 23(a) shows coarse detail
- the mid-level view of Fig. 23(b) shows medium-level detail
- the low-level view of Fig. 23(c) shows fine-grained detail.
- Fig. 24 illustrates a point cloud data transmission/reception device/method according to embodiments.
- Multi-resolution ROIs may be supported when layer group slicing is used to generate a G-PCC bitstream.
- multi-resolution ROIs can be supported by the scalability and spatial accessibility of hierarchical slicing.
- the encoder (47001) on the transmitting side can generate bitstream slices of spatial subgroups of each layer group or octree layer-groups. Upon request, a slice matching each resolution ROI is selected and transmitted to the receiving end. The overall bitstream size is reduced compared to the tile-based approach because it does not include details other than the requested ROI.
- the decoder (47004) can combine the slices to produce three outputs, for example: 1) a high-level view output from the layer group; 2) a mid-level view output from selected subgroups of layer group 1 and layer group 2; and 3) a low-level view output with good detail from selected subgroups of layer groups 2 and 3 and layer group 1. Since the outputs can be generated progressively, the receiver can provide a viewing experience such as zooming in which the resolution progressively increases from the high-level view to the low-level view.
- the above encoder (47001) is a point cloud encoder according to embodiments, and may correspond to a geometry encoder and/or an attribute encoder.
- the encoder (47001) may slice point cloud data based on a layer group (or groups).
- a layer may be referred to as a tree depth, a LOD level, etc.
- the depth of an octree of a geometry and/or the level of an attribute layer may be divided into layer groups (or subgroups).
- the slice selector (47003) can be linked with the encoder (47001) to select a divided slice (or sub-slice) and selectively transmit it partially, such as layer group 1 to layer group 3.
- the decoder (47004) can selectively and partially decode transmitted point cloud data. For example, for a high-level view, it can decode layer group 1 (high depth/layer/level or index 0, closer to the root). Furthermore, for a mid-level view, it can decode based on layer group 1 and layer group 2, increasing the depth/level index slightly more than layer group 1 alone. Furthermore, for a low-level view, it can decode based on layer group 1 to layer group 3.
- an encoder (47001) can receive point cloud data as input and slice it into layer groups. That is, the point cloud data can be hierarchically structured and divided into layer groups. At this time, the hierarchical structure can mean an octree structure or LoD (Level of Detail). 47002 represents how point cloud data is divided into layer groups.
- a slice selector (47003) can select a layer group (or a slice corresponding thereto), and the selected slices are transmitted to a decoder (47004) of a receiving end.
- the decoder (47004) can combine the received slices according to a user's request to restore only layer group 1, layer groups 1 and 2, or all received layer groups.
- the layer groups are hierarchical and have different levels of detail. When only layer group 1 is restored, the restored range is wide but details are not expressed. When all layer groups 1 to 3 are restored, the restored range is narrow but details can be expressed in detail.
- the inputs of the encoder for layer group slicing are point cloud data and parameter information (e.g., Sequence Parameter Set (SPS), Geometry Parameter Set (GPS), Layer-Group Slicing Inventory or Layer-Group Structure Inventory (LGSI)) describing the structural information of layer group slicing.
- SPS Sequence Parameter Set
- GPS Geometry Parameter Set
- LGSI Layer-Group Structure Inventory
- the layer group of the target tree depth is determined using the layer group structure parameters.
- the subgroup index of each node is determined using the subgroup bounding box.
- each subgroup uses a separate encoder for each subgroup to restrict context state to be persisted within the subgroup. Additionally, to restrict neighboring nodes to belong to the same subgroup as the current node, the geometry occupancy atlas is updated by considering subgroup boundaries as well as the atlas boundary (on top of the atlas boundary). Both methods allow each coded bitstream to be independently decoded at the decoder without information about the nodes of neighboring subgroups. This process is performed recursively for all nodes of all tree depths. Upon reaching the end of the nodes of the target tree depth, fine-grained slices that match the subgroups of each layer group one-to-one are generated. In the present disclosure, fine-grained slices may be referred to as layer group-based slices.
- the encoding operation of the above encoder can be performed by a combination of at least one or more of the transmitting device of FIG. 1, the encoding of FIG. 2, the transmitting device/method of FIG. 3, the transmitting device/method of FIG. 8 and FIG. 9, the devices of FIG. 10, the encoding method of FIG. 25, the transmitting device of FIG. 27, and the transmitting method of FIG. 40.
- the decoding operation of the above decoder can be performed by a combination of at least one or more of the receiving device of FIG. 1, the decoding of FIG. 2, the receiving device/method of FIG. 7, the receiving device/method of FIG. 8 and FIG. 9, the devices of FIG. 10, the decoding method of FIG. 26, the receiving device of FIG. 28, and the receiving method of FIG. 41.
- Fig. 25 is a flowchart showing an example of an encoding method of an encoder according to embodiments. That is, Fig. 25 is an encoding process for layer group slicing, which allows an encoded bitstream to be independently decoded in a decoder without node information of neighboring subgroups.
- the encoding method of Fig. 25 can be performed by the transmitting device of Fig. 1, the encoding of Fig. 2, the transmitting device/method of Fig. 3, the transmitting device/method of Fig. 8, the devices of Fig. 10, the transmitting device of Fig. 27, or a combination thereof.
- An encoder generates parameter information such as SPS, GPS, LGSI, etc., and determines layer groups and subgroups (S2501, S2502). Then, it checks whether the subgroup changes (S2503), and whenever the subgroup changes, information used to encode point cloud data within the subgroup is stored and necessary information is loaded to efficiently encode (S2504). For example, context information can be stored and loaded for use during the next encoding. That is, when the subgroup for a node changes, the context state and buffer used in the previous subgroup encoder are stored, and the context state and buffer of the current subgroup encoder are loaded. In addition, the geometry occupancy atlas is updated according to the encoding (S2505).
- the geometry occupancy atlas is updated by considering not only the atlas boundary but also the subgroup boundary. Then, the nodes of the subgroup are encoded (S2506). When this process is repeated until all nodes of all depths in the occupancy tree are encoded (S2507, S2508), i.e., when the end of the nodes of the target tree depth is reached, geometry data unit headers are generated, and a geometry bitstream including parameter information, geometry data unit headers, geometry data units, etc. is generated. That is, fine-grained slices that match one-to-one with the subgroups of each layer group are generated.
- geometry occupancy atlas is used interchangeably with geometry atlas or atlas.
- the layer group of that tree layer is determined and fixed for all tree depths within that layer group. Since a layer group is a set of contiguous tree layers, the layer group index changes at the beginning of the layer group. Subgroups are determined using the determined layer group. Since a subgroup is a group of nodes bounded by the subgroup bounding box, the subgroup of a node is found by comparing the node position with the subgroup bounding box. Whenever a subgroup or layer group changes, the encoder state of the previous subgroup is saved for later use, and the encoder state of the current subgroup is loaded for continuous encoding.
- the pseudo code below is an example of the encoding process for each layer, layer group, and subgroup in the tree structure, including saving and loading the encoder state whenever each layer group and subgroup changes. Specifically, when the tree depth is 0, the first layer group and subgroup are initialized and the current encoder state is loaded. Then, when the tree depth reaches the number of layers in the current layer group, the encoder state is saved and loaded. This process processes the nodes within each layer group, saving and loading the encoder state whenever a subgroup changes.
- curLayerGroupId 0;
- curSubgroupId 0;
- sum_layers numLayersPerLayerGroup[curLayerGroupId];
- prevSubgroupId curSubgroupId
- curSubgroupId 0;
- prevSubgroupId curSubgroupId
- curSubgroupId 0;
- prevSubgroupId curSubgroupId
- curSubgroupId i
- _maxRange and _minRange are defined in the MortonMap3D class.
- the minimum and maximum ranges are set to 0 and the length of an edge of the cube, respectively. If the minimum boundary of the subgroup is greater than the minimum value of the geometry occupancy atlas, _minRange is set to the minimum value of the subgroup boundary. If the maximum boundary of the subgroup is less than the maximum value of the geometry occupancy atlas, _maxRange is set to the maximum value of the subgroup boundary.
- the part of the atlas that overlaps the subgroup bounding box is considered active, and the nodes in the active area are used as neighbors. This ensures that FGS (i.e. layer group-based slices) are decoded without nodes of neighboring subgroups in the decoder of the receiving device.
- the pseudo code below is an example of the subgroup boundary process when updating the aforementioned geometry occupancy atlas. Specifically, the pseudo code below demonstrates the process of calculating the range for setting subgroup boundaries in the MortonMap3D class.
- the setRange method calculates the minimum and maximum boundaries of the subgroup and sets them in the _minRange and _maxRange variables. These ranges are calculated for each axis in 3D space.
- _maxRange[m] represents the maximum range for the mth axis of the subgroup, and is set based on the atlas origin and the cube size.
- _minRange[m] represents the minimum range for the mth axis of the subgroup.
- Atlas origin If it is greater than the atlas origin, it is set to that value; otherwise, it is set to 0. This process ensures that subgroups are located in specific parts of the atlas, and the portion of the atlas that overlaps with the subgroup bounding box is considered the active area, enabling efficient data processing.
- the geometry occupancy atlas is a lookup table (LUT) created for a certain range of surrounding nodes to improve the speed of geometric neighbor search, etc., and must be updated if the current node's location is outside the range of the geometry occupancy atlas.
- LUT lookup table
- the atlas boundary (_maxRange, _minRange) is updated to the subgroup boundary. This allows for the atlas to be used without updating the entire atlas, even when a subgroup within the atlas changes.
- _maxRange and _minRange represent the minimum and maximum values of the actual usable range within the atlas.
- atlasOrigin and cubeSize represent the starting position and size of the geometry occupancy atlas.
- bboxMin and _bboxMax represent the minimum and maximum values of the bounding box position of a specific layer group or subgroup.
- Fig. 26 is a flowchart showing an example of a decoding method of a decoder according to embodiments. That is, Fig. 26 shows a decoder process for layer group slicing according to embodiments.
- Fig. 26 can follow the reverse process of Fig. 25.
- the decoding method of FIG. 26 can be performed by the receiving device of FIG. 1, the decoding of FIG. 2, the receiving device/method of FIG. 7, the receiving device/method of FIG. 9, the devices of FIG. 10, the decoder of FIG. 28, or a combination thereof.
- the decoder parses parameter information (e.g., SPS, GPS, LGSI, etc.), geometry data unit headers, and geometry data units from the received geometry bitstream.
- parameter information e.g., SPS, GPS, LGSI, etc.
- geometry data unit headers e.g., geometry data units
- geometry data units e.g., geometry data units from the received geometry bitstream.
- the decoding process of the layer group slicing reference SW for the first FGS (Fine Granularity Slice) is the same as the conventional geometry slice decoding (parameter set parsing, data unit header parsing, data unit decoding).
- parameter information, parameter(s), and parameter set(s) are used interchangeably with the same meaning.
- the next dependent geometry data unit is considered as the FGS for the first slice (i.e., if they have the same Slice_id).
- the order of the FGS is assumed to be sorted in ascending order by layer_group_id and subgroup_id.
- the context state, output nodes, and layer group parameters of the previous slice are stored in a buffer for the next slices (S2602). That is, the buffers and layer group parameters are updated.
- a parent subgroup of the current subgroup is detected (S2604). According to embodiments, the parent subgroup of the current subgroup is detected by finding a subgroup whose subgroup bounding box is a superset of the current subgroup bounding box. Once the parent subgroup is determined, the parent (i.e., upper) nodes of the current dependent data unit are selected (S2605).
- the dependent data unit is parsed (S2606).
- the selected nodes as initial nodes of the decoding process
- the current dependent data unit is decoded up to the tree layer covered by the current layer group.
- the decoding process of the dependent data unit is repeatedly performed until the geometry bitstream ends (S2607).
- an output point cloud is generated and the decoding process is terminated (S2608).
- a decoder parses parameter information such as SPS, GPS, and LGSI included in a bitstream. Parses information signaled in a data unit header included in a slice such as FGS. Parses point cloud data included in a data unit based on the header information.
- layer group slicing updates buffer and layer group parameters, and parses data unit header information of a dependent data unit dependent on an upper data unit. Detects a parent subgroup and selects a parent node. Parses the dependent data unit. The following is a detailed description of the parent subgroup detection step (S2604).
- nodes in a parent subgroup are used as inputs to child subgroups to provide continuous decoding at layer-group boundaries.
- This can be derived using parent-child spatial relationships due to the hierarchical structure of layer-group slicing. That is, a child subgroup is a subset of its parent subgroup whose bounding boxes are spatially exclusive from the bounding boxes of other child subgroups within the same layer group.
- slices with parent subgroups can be detected by finding the spatial superset of the current slice. Furthermore, by utilizing the subgroup_bbox_origin and subgroup_bbox_size signaled in the data unit header, parent subgroups can be found by comparing them with the bounding box information of subgroups at the previous layer-group level.
- parentLayerGroup curLayerGroup - 1;
- the present disclosure can infer a parent subgroup without additional signaling based on the positional relationship between the parent subgroup and the child subgroup as described above.
- defining a child subgroup can be defined to partition the bounding box of the parent subgroup.
- the child subgroup is a subregion of the parent subgroup, and the encoder can infer the index of the parent subgroup using the method described above.
- the subgroup index is determined as the parent subgroup index.
- parentLayerGroup is the index of the parent layer group relative to the current layer group.
- parentSubgroup is the subgroup index of the subgroup that has a parent-child relationship with the current subgroup.
- curLayerGroup is the current layer group.
- numSubgroups is the number of subgroups belonging to the layer group.
- _bboxMin, _bboxMax are the minimum and maximum values of the bounding box position of a specific layer group or subgroup.
- curBboxMin is the minimum value of the bounding box position of the subgroup currently being coded.
- the output nodes of the parent subgroup are used as input for decoding the child subgroup. If the subgroup bounding boxes of the parent subgroup and the child subgroup are identical, all nodes generated in the parent subgroup are used. On the other hand, if the subgroup boundary box of the child subgroup is a subset of the parent subgroup, the decoder selects the actual parent nodes. To find the parent nodes, the present disclosure compares each node of the parent subgroup with the bounding box boundaries of the child subgroup.
- the pseudocode below illustrates the parent node selection process described above. Specifically, only nodes within a specific range (bbox_min and bbox_max) are selected as parent nodes. For example, a node is added as a parent only if its position (node.Pos) is greater than or equal to the minimum (bbox_min) and less than the maximum (bbox_max) of the bounding box.
- FIG. 27 is a diagram showing another example of a point cloud transmission device according to embodiments.
- the elements of the transmission device illustrated in FIG. 27 may be implemented by hardware, software, a processor connected to a memory, and/or a combination thereof. That is, the elements of the transmission device of FIG. 27 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, although not illustrated in the drawing.
- One or more processors may perform at least one or more of the operations and/or functions of the elements of the transmission device of FIG. 27 described above.
- one or more processors may operate or execute a set of software programs and/or instructions for performing the operations and/or functions of the elements of the transmission device of FIG. 27.
- the execution order of each block in FIG. 27 may be changed, some blocks may be omitted, and some new blocks may be added.
- the point cloud transmission device may include a data input unit (51001), a signaling processing unit (51002), a geometry encoder (51003), an attribute encoder (51004), and a transmission processing unit (51005).
- the above geometry encoder (51003) and attribute encoder (51004) can perform some or all of the operations described in the point cloud video encoder (10002) of FIG. 1, the encoding (20001) of FIG. 2, the point cloud video encoder of FIG. 3, the point cloud video encoder of FIG. 8, and the encoding of FIG. 25 and FIG. 41.
- the data input unit (51001) receives or acquires point cloud data.
- the data input unit (51001) may perform part or all of the operations of the point cloud video acquisition unit (10001) of FIG. 1, or may perform part or all of the operations of the data input unit (8000) of FIG. 8.
- the above data input unit (51001) outputs the positions of points of the point cloud data to the geometry encoder (51003) and outputs the attributes of the points of the point cloud data to the attribute encoder (51004).
- the parameters are output to the signaling processing unit (51002).
- the parameters may be provided to the geometry encoder (51003) and the attribute encoder (51004).
- the above geometry encoder (51003) performs geometry compression based on layer groups using the positions of input points.
- the geometry encoder (51003) performs entropy encoding on the compressed geometry information and outputs it to the transmission processing unit (51005) in the form of a geometry bitstream.
- the above geometry encoder (51003) reconstructs geometry information based on positions changed through compression, and outputs the reconstructed (or decoded) geometry information to the attribute encoder (51004).
- the geometry encoder constructs an octree using positions of input points, performs layer group-based slicing on the octree, selects one or more slices, and then compresses geometry information of the selected one or more slices.
- Layer group-based slicing and slice-based geometry compression according to embodiments are described in detail in FIGS. 11 to 25, and thus are omitted here to avoid redundant description.
- the attribute encoder (51004) compresses attribute information based on positions for which geometry encoding has not been performed and/or reconstructed geometry information.
- the attribute information may be coded using one or a combination of one or more of RAHT coding, LOD-based predictive transform coding, and lifting transform coding.
- the attribute encoder (51004) performs entropy encoding on the compressed attribute information and outputs it to the transmission processing unit (51005) in the form of an attribute bitstream.
- the signaling processing unit (51002) may generate and/or process signaling information necessary for encoding/decoding/rendering of geometry information and attribute information and provide the generated signaling information to the geometry encoder (51003), the attribute encoder (51004) and/or the transmission processing unit (51005). Alternatively, the signaling processing unit (51002) may receive signaling information generated from the geometry encoder (51003), the attribute encoder (51004) and/or the transmission processing unit (51005). The signaling processing unit (51002) may also provide information fed back from a receiving device (e.g., head orientation information and/or viewport information) to the geometry encoder (51003), the attribute encoder (51004) and/or the transmission processing unit (51005).
- a receiving device e.g., head orientation information and/or viewport information
- signaling information including layer group-based slicing-related information can be signaled and transmitted in units of parameter sets (SPS: sequence parameter set, GPS: geometry parameter set, APS: attribute parameter set, TPS: Tile Parameter Set (or tile inventory) etc.) and/or data units (i.e., slices). That is, it can also be signaled and transmitted in units of coding units (or compression units or prediction units) of each image, such as slices or tiles.
- SPS sequence parameter set
- GPS geometry parameter set
- APS attribute parameter set
- TPS Tile Parameter Set (or tile inventory) etc.
- slices data units
- coding units or compression units or prediction units
- the above transmission processing unit (51005) may perform the same or similar operation and/or transmission method as the operation and/or transmission method of the transmission processing unit (8012) of FIG. 8, and may perform the same or similar operation and/or transmission method as the operation and/or transmission method of the transmitter (10003) of FIG. 1. A specific description will be omitted here, referring to the description of FIG. 1 or FIG. 8.
- the above transmission processing unit (51005) multiplexes the geometry bitstream output from the geometry encoder (51003), the attribute bitstream output from the attribute encoder (51004), and the signaling bitstream output from the signaling processing unit (51002) into a single bitstream and transmits it as is, or encapsulates it into a file or segment and transmits it.
- the file is in the ISOBMFF file format.
- files or segments may be transmitted to a receiving device or stored in a digital storage medium (e.g., USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc.).
- the transmission processing unit (51005) may communicate with the receiving device via a network such as 4G, 5G, or 6G, either wired or wirelessly.
- the transmission processing unit (51005) may perform necessary data processing operations depending on the network system (e.g., a communication network system such as 4G, 5G, or 6G).
- the transmission processing unit (51005) may also transmit encapsulated data in an on-demand manner.
- FIG. 28 is a diagram showing another example of a point cloud receiving device according to embodiments.
- the elements of the receiving device illustrated in FIG. 28 may be implemented by hardware, software, a processor connected to a memory, and/or a combination thereof. That is, the elements of the receiving device illustrated in FIG. 28 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, although not illustrated in the drawing.
- One or more processors may perform at least one or more of the operations and/or functions of the elements of the receiving device illustrated in FIG. 28 described above.
- one or more processors may operate or execute a set of software programs and/or instructions for performing the operations and/or functions of the elements of the receiving device illustrated in FIG. 28.
- the execution order of each block in FIG. 28 may be changed, some blocks may be omitted, and some new blocks may be added.
- the point cloud receiving device may include a receiving processing unit (61001), a signaling processing unit (61002), a geometry decoder (61003), an attribute decoder (61004), a geometry buffer (61005), an attribute buffer (61006), and a post-processor (61007).
- the receiving processing unit (61001) may receive a single bitstream, or may receive a geometry bitstream, an attribute bitstream, and a signaling bitstream, respectively.
- the receiving processing unit (61001) according to the embodiments may decapsulate the received file and/or segment and output it as a bitstream.
- the reception processing unit (61001) can demultiplex a geometry bitstream, an attribute bitstream, and/or a signaling bitstream from the one bitstream, and output the demultiplexed signaling bitstream to the signaling processing unit (61002), the geometry bitstream to the geometry decoder (61003), and the attribute bitstream to the attribute decoder (61004).
- the receiving processing unit (61001) can transmit the signaling bitstream to the signaling processing unit (61002), the geometry bitstream to the geometry decoder (61003), and the attribute bitstream to the attribute decoder (61004).
- the receiving processing unit (61001) may divide the geometry bitstream and the attribute bitstream into slice units, layer groups, or subgroup units based on the signaling information processed by the signaling processing unit (61002), and may transmit the geometry bitstream in slice units/layer groups/subgroup units to the geometry decoder (61003), and the attribute bitstream in slice units/layer groups/subgroup units to the attribute decoder (61004).
- the input of the geometry decoder (61003) may include a fine granularity slice bitstream (or layer group-based slice bitstream) and a layer-group structure.
- the signaling processing unit (61002) may parse and process signaling information, for example, information included in SPS, GPS, APS, TPS, LGSI, metadata, etc., from the input signaling bitstream and provide the information to the receiving processing unit (61001), the geometry decoder (61003), the attribute decoder (61004), the geometry buffer (61005), the attribute buffer (61006), and the post-processing unit (61007).
- signaling information included in a geometry data unit header and/or an attribute data unit header may also be pre-parsed by the signaling processing unit (61002) before decoding the corresponding slice (or subgroup) data.
- the geometry buffer (61005) may store nodes belonging to the current subgroup and/or nodes belonging to a parent subgroup of the current subgroup for geometry decoding. Additionally, before decoding a dependent data unit, the context state, output nodes, and layer group parameters of the previous slice are stored in the geometry buffer (61005) for the next slices (S2602). Additionally, the attribute buffer (61006) may include nodes belonging to the current subgroup and/or nodes belonging to the parent subgroup of the current subgroup for attribute decoding.
- the signaling processing unit (61002) may also parse and process information signaled in a sequence parameter set, a geometry parameter set, and/or a geometry data unit header (e.g., layer group-based slicing-related information) and provide the information to a geometry decoder (61003) and a geometry buffer (61005).
- a geometry decoder (61003) may also parse and process information signaled in a sequence parameter set, a geometry parameter set, and/or a geometry data unit header (e.g., layer group-based slicing-related information).
- the signaling processing unit (61002) may also parse and process information signaled in a sequence parameter set, an attribute parameter set, and/or an attribute data unit header (e.g., layer group-based slicing-related information) and provide the information to an attribute decoder (61004) and an attribute buffer (61006).
- an attribute data unit header e.g., layer group-based slicing-related information
- the geometry decoder (61003) can restore the geometry by performing the reverse process of the geometry encoder (51003) of FIG. 27 based on signaling information (e.g., layer group-based slicing related information) for the compressed geometry bitstream.
- signaling information e.g., layer group-based slicing related information
- the geometry decoding performed when layer group slicing is enabled in the geometry decoder (61003) is described in detail in FIGS. 11 to 23 and FIG. 26, and thus is omitted here to avoid redundant description.
- the geometry information restored (or reconstructed) from the geometry decoder (61003) is provided to the attribute decoder (61004).
- the above attribute decoder (61004) can restore attributes by performing the reverse process of the attribute encoder (51004) of FIG. 27 based on signaling information and reconstructed geometry information for the compressed attribute bitstream.
- the attribute decoder (61004) can perform LoD generation and NN search on a subgroup basis.
- the post-processing unit (61007) can reconstruct and display/render point cloud data by matching the geometry information (i.e., positions) restored and output from the geometry decoder (61003) with the attribute information restored and output from the attribute decoder (61004).
- Figure 29 shows a bitstream configuration according to embodiments.
- the method/device according to the embodiments can generate a bitstream as in FIG. 29.
- the bitstream includes encoded geometry data and attribute data, and may include parameter information.
- the bitstream may include a sequence parameter set, a geometry parameter set, an attribute parameter set, a geometry slice header (also called a geometry slice header or geometry data unit header), and an attribute slice header (also called an attribute data unit header).
- a geometry slice header also called a geometry slice header or geometry data unit header
- an attribute slice header also called an attribute data unit header.
- the signal may have different meanings depending on the location where it is transmitted. If it is defined in SPS, it may be applied equally to the entire sequence. If it is defined in GPS, it may indicate that it is used for location recovery. If it is defined in APS, it may indicate that it is applied to attribute recovery.
- TPS TPS
- it may indicate that the signaling is applied only to points within a tile. If it is transmitted in slice units, it may indicate that the signal is applied only to the corresponding slice.
- the scope of application, the method of application, etc. may be used differently by defining them in corresponding locations or in separate locations. Additionally, if the syntax element defined below can be applied to multiple point cloud data streams as well as the current point cloud data stream, it can be conveyed through a parameter set of a higher concept, etc.
- SPS Sequence Parameter Set
- GPS Geometry Parameter Set
- APS Attribute Parameter Set
- TPS Tile Parameter Set
- the embodiments define the information independently of the coding technique, but can be defined in conjunction with the coding method, and can be defined in the tile parameter set of the bitstream to support regionally different scalability.
- the syntax element defined below can be applied to multiple point cloud data streams as well as the current point cloud data stream, it can be conveyed through a parameter set of a higher concept, etc.
- a bitstream can be selected at the system level by defining a NAL (Network abstract layer) unit for the bitstream and passing relevant information for selecting a layer, such as a layer_id.
- NAL Network abstract layer
- parameters required for encoding and/or decoding of point cloud data may be newly defined in parameter sets of point cloud data (e.g., SPS, GPS, APS, and TPS (or referred to as tile inventory)) and/or headers of corresponding slices (i.e., referred to as data unit headers or slice headers).
- point cloud data e.g., SPS, GPS, APS, and TPS (or referred to as tile inventory)
- headers of corresponding slices i.e., referred to as data unit headers or slice headers.
- parameters may be added to a geometry parameter set (GPS)
- GPS geometry parameter set
- tile-based encoding and/or decoding parameters may be added to a tile and/or data unit header.
- layer group-based slicing related information may be signaled in a sequence parameter set and/or a geometry parameter set and/or an attribute parameter set and/or a layer group structure inventory (LGSI).
- LGSI layer group structure inventory
- layer group-based slicing related information may be signaled in a tile parameter set and/or a geometry data unit header and/or an attribute data unit header and/or a layer group structure inventory (LGSI).
- LGSI layer group structure inventory
- layer group-based slicing-related information can be conveyed through a parameter set of a higher concept, etc.
- layer group-based slicing-related information may be defined in corresponding locations or separate locations depending on the application or system, and may be used differently in terms of scope of application, application method, etc.
- field used in the syntaxes of this specification described below may have the same meaning as a parameter or syntax element.
- parameters (which may be called various names such as metadata, signaling information, etc.) according to the embodiments may be generated in the process of the transmitter according to the embodiments, and may be transmitted to the receiver according to the embodiments and used in the reconstruction process.
- parameters (which may be variously referred to as metadata, signaling information, etc.) containing layer group-based slicing-related information may be generated by a metadata processing unit (or metadata generator) or a signaling processing unit of a transmitting device, and may be transmitted to a receiving device to be used in a decoding/reconstruction process.
- a metadata processing unit or metadata generator
- a signaling processing unit of a transmitting device may be transmitted to a receiving device to be used in a decoding/reconstruction process.
- parameters generated and transmitted by a transmitting device may be acquired by a metadata parser of the receiving device.
- parameters describing a layer group structure are signaled at various levels. For example, in SPS, common structure information is described in the SPS, and details of each layer group or subgroup are signaled in a slice header (or data unit header). In addition, a layer group structure inventory and a dependent slice header (or dependent data unit header) are provided to describe the overall layer group structure.
- the definition of G-PCC slices and the signaling method of fine-granularity slicing are as follows.
- Slice A set of points coded as one independent fine-granularity slice and zero or more dependent fine-granularity slices.
- a slice may contain multiple FGSs, and an FGS may be referred to as a segmented slice, a subdivided slice, etc.
- Dependent Fine-granularity Slice A data unit in a slice that is dependent on the previous data unit within the same slice.
- Independent Fine-granularity slice The first [geometry] data unit of the slice.
- FIGS 30a and 30b illustrate an example syntax structure of a sequence parameter set (SPS) according to embodiments.
- the SPS may include sequence information of a point cloud data bitstream, and in particular, an example of including information related to layer group-based slicing is shown.
- FIGS. 30a and 30b are included in the bitstream of FIG. 29, and can be generated by a point cloud encoder according to embodiments and decoded by a point cloud decoder.
- simple_profile_compatibility_flag Indicates whether the bitstream conforms to the simple profile (if 1) or not (if 0).
- dense_profile_compatibility_flag Indicates whether the bitstream conforms to the Dense profile (if 1) or not (if 0).
- predictive_profile_compatibility_flag Indicates whether the bitstream complies with the prediction profile (if 1) or not (if 0).
- main_profile_compatibility_flag Indicates whether the bitstream complies with the main profile (if 1) or not (if 0).
- slice_reordering_constraint_flag Indicates whether the bitstream is sensitive to the reordering or removal of slices within the coded point cloud frame (if 1) or not (if 0). If slices are reordered or removed when slice_reordering_constraint is 1, the resulting bitstream may not be fully decoded.
- unique_point_positions_constraint_flag Equal to 1 indicates that every point in each coded point cloud frame must have a unique position. If unique_point_positions_constraint_flag is 0, it indicates that more than one point in the coded point cloud frame may have the same position.
- sps_seq_parameter_set_id Identifies the SPS so that other DUs (data units) can reference it.
- seq_origin_bits The length in bits of each seq_origin_xyz syntax element, excluding the sign bit.
- seq_origin_xyz[k] and seq_origin_log2_scale Together, these represent the XYZ origin of the sequence and the coding coordinate system in sequence coordinate units at the application-specific origin. If seq_origin_bits is 0, seq_origin_xyz[k] and seq_origin_log2_scale are inferred to be 0. The kth XYZ component of the origin is specified by the expression SeqOrigin[k] .
- seq_bounding_box_size_bits The length of each seq_bbox_size_minus1_xyz syntax element in bits.
- seq_bounding_box_size_minus1_xyz[ k ]: plus 1 represents the kth XYZ component of the coded volume dimension in sequence coordinates.
- seq_unit_numerator_minus1, seq_unit_denominator_minus1, and seq_unit_is_metres Together, they represent lengths expressed as unit vectors in the sequence coordinate system.
- sps_num_attribute_sets Indicates the number of attributes listed in the SPS attribute list.
- attribute_instance_id[ attrId ] Indicates the instance identifier for the identified attribute.
- attribute_bitdepth_minus1[ attrId ] Adding 1 specifies the bit depth for all components of the identified attribute.
- a value of layer_group_enabled_flag of 1 indicates that the geometry bitstream of a slice is contained in multiple slices that match a group of coding layers or its subgroups.
- a value of layer_group_enabled_flag of 0 indicates that the geometry bitstream is contained in a single slice.
- num_layer_groups_minus1 + 1 represents the number of layer groups, where the layer group represents a group of contiguous tree layers that are part of the geometry coding tree structure. num_layer_groups_minus1 ranges from 0 to the number of coding tree layers.
- layer_group_id represents the layer group ID of the slice (or the indicator of a layer group of a slice).
- layer_group_id ranges from 0 to num_layer_groups_minus1.
- num_layers_minus1 + 1 represents the number of coding layers (or levels) included in the ith layer group.
- the total number of layer groups can be derived by adding all (num_layers_minus1[i] + 1) to num_layer_groups_minus1 when i is 0.
- subgroup_enabled_flag indicates that the ith layer group is divided into two or more subgroups.
- the set of points included in the subgroups of the layer group is identical to the set of points of the layer group.
- the subgroup_enabled_flag of the ith layer group is 1
- the subgroup_enabled_flag of the jth layer group is equal to 1 when j is greater than or equal to i.
- subgroup_enabled_flag 1 specifies the i-th layer-group is divided into two or more subgroups where the set of points in the subgroups of a layer-group is identical to the set of points in the layer-group.
- subgroup_enabled_flag of the i-th layer-group 1
- subgroup_enabled_flag of the j-th layer-group shall be equal to 1 when j is larger than or equal to i.
- subgroup_enabled_flag 0 specifies that the current layer-group is not sub-divided into multiple subgroups and contained in a single slice).
- subgroup_bbox_origin_bits_minus1 + 1 is the bit length of the subgroup_bbox_origin field (or syntax element).
- subgroup_bbox_size_bits_minus1 + 1 is the bit length of the subgroup_bbox_size field.
- layer group-based slicing related information may include at least one of layer_group_enabled_flag, num_layer_groups_minus1, layer_group_id[i], num_layers_minus1[i], subgroup_enabled_flag[i], subgroup_bbox_origin_bits_minus1, and subgroup_bbox_size_bits_minus1.
- Fig. 31 illustrates an example of a syntax structure of a dependent geometry data unit header according to embodiments.
- Fig. 31 shows an example in which layer group-based slicing-related information is included in the dependent geometry data unit header.
- the syntaxes of FIG. 31 are included in the bitstream of FIG. 29, and can be generated by a point cloud encoder according to embodiments, transmitted to a decoder as a receiving device, and decoded by the point cloud decoder.
- a dependent geometry data unit header may be included in a geometry data unit.
- a geometry data unit may be used synonymously with a dependent geometry data unit or a geometry slice.
- the geometry parameter set ID (dgsh_geometry_parameter_set_id) indicates the active GPS indicated by gps_geom_parameter_set_id.
- the dgsi_geometry_parameter_set_id value is equal to the gdu_geometry_parameter_set_id value for the corresponding slice.
- dgsi_slice_id specifies the geometry slice to which the current dependent geometry data unit belongs.
- layer_group_id can indicate an indicator of a layer group in a slice.
- layer_group_id can range from 0 to num_layer_groups_minus1. If not present, it is assumed to be 0.
- subgroup_id indicates a subgroup of the layer group referenced by layer_group_id.
- the subgroup_id can range from 0 to num_subgroups_minus1[layer_group_id].
- subgroup_id can indicate the order of slices within the same layer_group_id. If it does not exist, it is assumed to be 0.
- subgroup_bbox_origin indicates the origin position of the subgroup bounding box of the ith subgroup indicated by subgroup_id of the jth layer group indicated by layer_group_id.
- subgroup_bbox_size represents the size of the subgroup bounding box of the i-th subgroup indicated by subgroup_id in the j-th layer group indicated by layer_group_id.
- the bounding box of points in a subgroup is described by subgroup_bbox_origin and subgroup_bbox_size.
- the area in the bounding box of the i-th subgroup does not overlap with the bounding box of the j-th subgroup when i and j are not equal.
- ref_layer_group_id indicates the layer group identifier of the context reference of the current dependent data unit.
- ref_layer_group_id ranges from 0 to the layer_group_id of the current dependent data unit.
- ref_subgroup_id indicates a reference subgroup of the layer group pointed to by ref_layer_group_id.
- ref_subgroup_id ranges from 0 to num_subgroup_id_minus1 of the layer group pointed to by ref_layer_group_id.
- a bitstream according to embodiments may include at least one slice or subdivided slices, and may include a geometry data unit and an attribute data unit.
- Each data unit includes a header.
- the data unit includes an independent data unit and a dependent data unit.
- the dependent data unit may indicate a subsumption relationship according to a dependency relationship between upper and lower nodes.
- FIG. 31 shows the syntax of a dependent geometry data unit header, and similarly, the syntax of a geometry data unit header may also be as shown in FIG. 31.
- Fig. 32 illustrates a layer-group structure inventory (LGSI) according to embodiments. That is, the layer-group structure inventory of Fig. 32 describes the relationship between fine-grained slices as follows.
- LGSI layer-group structure inventory
- the sequence parameter set ID (lgsi_seq_parameter_set_id) represents the sps_seq_parameter_set_id value.
- lgsi_frame_ctr_lsb_bits represents the length of the lgsi_frame_ctr_lsb field (or syntax element) in bits.
- lgsi_frame_ctr_lsb represents the lgsi_frame_ctr_lsb_bits (least significant bits) of the FrameCtr for which the layer group structure inventory is valid. The layer group structure inventory remains valid until it is replaced by another layer group structure inventory.
- lgsi_num_slice_ids_minus1 + 1 represents the number of slices in the layer group structure inventory.
- lgsi_slice_id represents the slice ID of the sid-th slice within the layer group structure inventory.
- lgsi_num_layer_groups_minus1 + 1 represents the number of layer groups.
- lasi_subgroup_bbox_origin_bits_minus1 + 1 represents the length of the lgsi_subgroup_bbox_origin field in bits.
- lgsi_subgroup_bbox_size_bits_minus1 + 1 represents the length of the lgsi_subgroup_bbox_size field in bits.
- lgsi_layer_group_id represents the indicator of the layer group.
- lgsi_num_layers_minus1 + 1 represents the number of coded layers in the slice of the i-th layer group of the sid-th slice.
- the total number of coded layers required to decode the n-th layer group is equal to the sum of lgsi_num_layers_minus1[sid][i] + 1, where i is from 0 to n.
- lgsi_num_subgroups_minus1 + 1 represents the number of subgroups in the i-th layer group of the sid-th slice.
- lgsi_subgroup_id represents the ID (or indicator) of a layer group (or subgroup).
- the value of lgsi_subgroup_id is between 0 and lgsi_num_subgroups_minus1.
- lgsi_parent_subgroup_id indicates the identifier of a subgroup within the layer group indicated by lgsi_subgroup_id.
- the value of lgsi_parent_subgroup_id is between 0 and gi_num_subgroups_minus1 within the layer group indicated by lgsi_subgroup_id.
- lgsi_subgroup_bbox_origin indicates the origin of the subgroup bounding box of the subgroup indicated by lgsi_subgroup_id of the layer group indicated by lgsi_layer_group_id.
- lgsi_subgroup_bbox_size represents the size of the subgroup bounding box of the subgroup indicated by lgsi_subgroup_id in the layer group indicated by lgsi_layer_group_id.
- lgsi_origin_bits_minus1 + 1 represents the length of the lgsi_origin_xyz field in bits.
- lgsi_origin_xyz represents the origin of all partitions.
- the value of lgsi_origin_xyz[ k ] is equal to sps_bounding_box_offset[ k ].
- lgsi_origin_log2_scale represents a scaling factor for scaling the lgsi_origin_xyz field.
- the value of lgsi_origin_log2_scale is the same as sps_bounding_box_offset_log2_scale.
- planar mode used in octree-based geometry coding probabilistically determines whether each node is planar. This requires updating the probability each time and tracking the local node density of each node, which carries the burden of this. To alleviate this, the present disclosure can determine whether to use planar mode based on the density at each octree level.
- the density condition for determining whether to use the planar mode can be calculated as in the following mathematical expression 1. That is, the planar eligibility is determined for each tree depth based on the density as in mathematical expression 1.
- numPoints represents the number of points in the point cloud.
- numPointsCodedByIdcm i represents the number of IDCM nodes (or direct compression nodes) from the root to the i-th octree layer. That is, numPointsCodedByIdcm i represents the number of points coded using IDCM from the root node layer to the i-th octree layer.
- numSubnodes i represents the number of occupied sub-nodes (i.e., the number of child nodes) generated in the i-th octree layer. That is, numSubnodes i represents the number of occupied sub-nodes generated by nodes included in the i-th octree layer. And, realDensity i+1 represents the real density of points for the i+1-th octree layer.
- the octree layer can be referred to as a tree level or level.
- whether to use the planar mode in the i+1-th octree layer can be determined as follows. That is, before the coding process of the i+1-th octree layer, the eligibility of all nodes in the i+1-th octree layer for the xyz-planar mode is determined as follows.
- planarEligibleKOctreeDepth(i+1) can be obtained and applied by the encoder and decoder, respectively.
- th is a predefined threshold, which can be set to 1.3, for example.
- planarEligibleKOctreeDepth i+1 becomes 1, indicating that the planar mode is used in the i+1-th octree layer.
- planarEligibleKOctreeDepth i+1 becomes 0, indicating that the planar mode is not used in the i+1-th octree layer.
- numPoints(n,m) represents the final number of points included in the bounding box corresponding to the m-th subgroup belonging to the n-th layer group.
- numPointsCodedByIdcm i (n,m) represents the number of points included in the bounding box corresponding to the m-th subgroup belonging to the n-th layer group among the IDCM points from the root to the i-th octree layer.
- the present disclosure determines whether to use the planar mode in the i+1-th octree layer for the m-th subgroup belonging to the n-th layer group as follows.
- the area is divided into subgroups due to layer group slicing, and the planar mode can be used adaptively according to the characteristics of the area through the above formula.
- the octree depth can be divided into different slices, and in this case, it is difficult to directly apply the above method to the upper layer group.
- numPoints can be estimated because the number of points generated in the subgroup included in the slice is transmitted through the header.
- the number of points transmitted through the header means the number of points ultimately generated in each slice, it is difficult to estimate numPoints for the upper layer group.
- the embodiments may consider the following methods as a method to solve this problem.
- the number of points finally generated at the leaf layer-group level can be passed from the encoder to the decoder.
- numPoints(n, m) can mean the number of final points included in the bounding box corresponding to the m-th subgroup belonging to the n-th layer group. If there are no child subgroups (i.e., if it belongs to the last layer group), numSlicePoints passed through the header can be used. If there are child subgroups (if it belongs to the upper layer group), an arbitrary number of points can be agreed upon and used between the encoder and decoder.
- MaxSlicePoint the maximum number of points that can be included in each slice
- Equation 3 illustrates an example where predictions are made using coefficients (e.g., coeff_a, coeff_b). That is, as shown in Equation 3 below, numPoints(n, m) can be estimated using a linear function.
- coeff_a + coeff_b represent the coefficients of the linear function.
- coeff_a and coeff_b can be predefined or passed directly to the decoder as needed.
- the number of final points included in the bounding box corresponding to the m-th subgroup belonging to the n-th layer group (numPoints(n,m)) can be obtained by adding the coefficients of the linear function, coeff_a and coeff_b, to the number of parent subgroup nodes.
- the encoder of the transmitting device Since the encoder of the transmitting device knows the final number of points for each subgroup, it can calculate planarEligibleKOctreeDepth i+1 (n, m) based on this and pass this value directly to the decoder of the receiving device. This reduces decoder complexity because the decoder does not need to calculate planarEligibleKOctreeDepth.
- the encoder of the transmitting device may transmit planar mode-related information related to the aforementioned planar mode to the decoder of the receiving device by signaling it in the dependent geometry data unit header.
- Fig. 33 illustrates another example of the syntax structure of a dependent geometry data unit header according to embodiments.
- Fig. 33 illustrates an example in which a dependent geometry data unit header includes layer group-based slicing-related information and planar mode-related information.
- the syntaxes of FIG. 33 are included in the bitstream of FIG. 29, and are generated by the point cloud encoder according to the embodiments, transmitted to the decoder of the receiving device, and can be decoded by the point cloud decoder.
- Fig. 33 describes information related to the planar mode.
- the dependent geometry data unit header may include a planar mode eligibility type (planarEligibilityType).
- planarEligibilityType can indicate how the planar mode is used. For example, a planarEligibilityType value of 0 indicates the traditional node-adaptive planar mode application method, a value of 1 indicates the method of passing the number of points finally generated at the leaf layer-group level, a value of 2 indicates the method of using an arbitrary number of points, and a value of 3 indicates the method of directly passing the planarEligibleKOctreeDepth.
- the dependent geometry data unit header contains the final number of points in the subgroup (numFinalOutputPointsInSubgroup) if the value of planarEligibilityType is 1, the estimate of the number of points in the slice (numSlicePointEstimationType) if it is 2, and the planar mode eligible octree depth flag (planarEligibleKOctreeDepthFlag) as many as the number of layers in the subgroup (numLayersInSubgroup) if it is 3.
- the final number of points in a subgroup can indicate the number of final output points contained within the subgroup bounding box of the current slice.
- the estimated number of points in a slice can indicate how numSlicePoints (or numPoints) is estimated to obtain realDensity. For example, if the value of numSlicePointEstimationType is 0, it can indicate a predefined value (e.g., maxSlicePoint - the maximum number of points that can be included in a slice). If it is 1, it can indicate that it is estimated by a linear function. In this case, the coefficients of the linear function, coeff_a and coeff_b, can be defined in advance or passed directly as needed.
- the number of layers in a subgroup can represent the number of octree depths contained in the current slice.
- planarEligibleKOctreeDepthFlag planarEligibleKOctreeDepthFlag
- planar mode eligible octree depth flag (planarEligibleKOctreeDepthFlag) can correspond to planarEligibleKOctreeDepth_(i+1) (n,m) generated by directly passing planarEligibleKOctreeDepth.
- the following mathematical expression 4 is another example for obtaining the density condition for determining whether to use the planar mode.
- numPoints(s) represents the number of points in the points of subgroup s.
- numPointsCodedByIdcm i (s) represents the number of points that are coded using IDCM from the root node layer to the ith octree layer and within the subgroup boundary of the subgroup s.
- numSubnodes i (s) represents the number of occupied subnodes generated by nodes included in the i-th octree layer of subgroup s.
- realDensity i+1 (s) represents the real density of points for the i+1th octree layer of subgroup s.
- whether to use the planar mode in the i+1-th octree layer can be determined as follows. That is, before the coding process of the i+1-th octree layer, the eligibility of all nodes for the xyz-planar mode in the i+1-th octree layer of subgroup s is determined as follows.
- th is a predefined threshold, which can be set to, for example, 1.3.
- the problem of using subgroup adaptive planar eligibility based on density is that the number of points in each subgroup is not known to the decoder until the subgroups belonging to the last layer group are delivered.
- the present disclosure can solve the above problem by signaling information that can indicate planar eligibility (e.g., planarEligibleKOctreeDepth i+1 (s)) in the data unit header of each geometry data unit or the header of a dependent geometry data unit to match the encoder and decoder.
- an IDCM node may be referred to as a direct compression node. That is, when the hierarchical structure for geometry decoding is in the form of a tree, some subgroups may include at least one IDCM node.
- the present disclosure defines a node satisfying the following conditions as an IDCM node, and a portion of a subgroup may include at least one IDCM node satisfying these conditions.
- Parent-based eligibility condition From the perspective of the parent node of the current node (point), there is only one occupied child, which is the current node, and from the perspective of the parent's parent (grand-parent), there is at most one occupied child (i.e., the parent's occupied sibling) (i.e., there are 2 occupied children).
- 6N eligibility condition From the perspective of the parent node, the current node is the only occupied child, and none of the six neighbors (nodes that are touching each other) are occupied.
- one layer may include zero or one or more IDCM nodes.
- the following describes another embodiment of the fine granularity slicing (FGS) related content described above. Some of the content may overlap with the FGS related content described above.
- FGS fine granularity slicing
- Fine granularity slices are subsets of slices that carry the geometry or attributes of a subgroup.
- a layer group is a group of consecutive tree levels of an occupancy tree or an attribute assigned occupancy tree.
- a subgroup is a spatial subset of a layer-group where the bounding box of a subgroup shall not overlap with the other subgroups in the same layer-group.
- a root layer group is a layer group that contains the root node of an occupancy tree or an attribute-assigned occupancy tree.
- a parent subgroup is a subgroup in a layer-group adjacent to the top layer minimum depth of the current subgroup, where the bounding box of the parent subgroup is a superset of the bounding box of the current subgroup.
- a child subgroup is a subgroup in a layer-group adjacent to the bottom layer maximum depth of the current subgroup, where the bounding box of the child subgroup is a subset of the bounding box of the current subgroup.
- An attribute assigned occupancy tree is an occupancy tree where the attributes of a node in each tree level are assigned by the attributes of child nodes.
- one slice can be composed of FGSs, and each FGS is mapped 1:1 to the FGS geometry or FGS attribute of a subgroup within the layer group.
- FGS is indicated by a pair of layer group indices and subgroup indices.
- FGSs within a slice are identified by a common slice identifier (slice_id).
- Every FGS contains either a geometry data unit (GDU) or dependent geometry data unit (DGDU) that codes the FGS geometry, or an attribute data unit (ADU) or dependent attribute data unit (DADU) that codes the FGS attributes.
- GDU geometry data unit
- DGDU dependent geometry data unit
- ADU attribute data unit
- DADU dependent attribute data unit
- An FGS begins with a GDU. This FGS may be followed by FGSs of DGDUs, which depend on the GDU or previously decoded DGDU.
- the FGS attribute begins with an ADU.
- This FGS may be followed by FGSs of DADUs, which depend on the ADU or previously decoded DADUs.
- ADUs and DADUs occur after GDUs and DGDUs.
- nodes within the occupancy tree or the attribute-assigned occupancy tree are grouped into layer groups and subgroups.
- a layer group is a group of consecutive tree levels, where each tree level belongs to exactly one layer group.
- the minimum depth of a subgroup is 1 plus the maximum depth of its parent subgroup, or 0 for the root layer group.
- the maximum depth of a subgroup is 1 minus the minimum depth of its child subgroups, or, for the last layer group, the maximum depth of the occupancy tree.
- Layer groups are identified by their layer group index (layer_group_idx).
- a subgroup is a spatial subset of a layer group, and a node within a tree level belongs to one of the subgroups of the layer group.
- the locations of the output nodes of a subgroup are described by a bounding box, and the range of the subgroup bounding box does not overlap with the bounding boxes of other subgroups within the same layer group.
- the set of output nodes of subgroups within a layer group is identical to the set of output nodes within that layer group.
- Subgroups within a layer group are identified by their subgroup index (subgroup_idx).
- Figures 34(a) and 34(b) are diagrams showing the relationships between layer groups, subgroups, and FGSs according to embodiments.
- Figure 34(a) shows the layer group structure of an occupancy tree with a depth of 8
- Figure 34(b) shows the parent-child relationships between subgroups and the corresponding FGSs.
- Fig. 34(a) three layer groups are defined, where layer group 0 consists of depths 0-3, layer group 1 consists of depths 4-6, and layer group 2 consists of depths 7 and 8. That is, layer group 0 consists of one subgroup, layer group 1 consists of two subgroups, and layer group 2 consists of three subgroups.
- each layer group can consist of subgroups, and each subgroup is represented by a pair consisting of a layer group index and a subgroup index.
- the root layer group is represented as (0, 0).
- the subgroups within each layer group shown in Fig. 34(a) are depicted as spatial regions bounded in the xy plane. If the bounding box of a subgroup consists of one or more subgroups within the next layer group, they are in a parent-child relationship. That is, when the bounding box of a subgroup within a layer group is a superset of the bounding boxes of one or more subgroups within the next layer group, the subgroups within adjacent layer groups are in a parent-child relationship. For example, subgroup (0,0) is the parent of subgroups (1,0) and (1,1). Similarly, subgroups (2,0) and (2,1) are children of subgroup (1,0). Each subgroup, represented by a pair of layer group indices and subgroup indices, is in different FGSs.
- S l,n represents a subgroup n associated with layer group l.
- d i represents the octree tree depth i.
- FIGS 35a and 35b illustrate another example of the syntax structure of a sequence parameter set (SPS) according to embodiments.
- the SPS may include sequence information of a point cloud data bitstream, and in particular, an example of including information related to layer group-based slicing is shown.
- FIGS. 35a and 35b are included in the bitstream of FIG. 29, and can be generated by a point cloud encoder according to embodiments and decoded by a point cloud decoder.
- simple_profile_compliant corresponds to simple_profile_compatibility_flag
- dense_profile_compliant corresponds to dense_profile_compatibility_flag
- predictive_profile_compliant corresponds to predictive_profile_compatibility_flag in FIGS. 30a and 30b.
- main_profile_compliant corresponds to main_profile_compatibility_flag
- slice_reordering_constraint corresponds to slice_reordering_constraint_flag
- unique_point_positions_constraint corresponds to unique_point_positions_constraint_flag.
- sps_seq_parameter_set_id corresponds to sps_seq_parameter_set_id
- seq_origin_bits corresponds to seq_origin_bits
- seq_origin_xyz[] and seq_origin_log2_scale correspond to seq_origin_xyz[] and seq_origin_log2_scale
- seq_bbox_size_bits corresponds to seq_bounding_box_size_bits
- seq_bbox_size_minus1_xyz[] corresponds to seq_bounding_box_size_minus1_xyz[k].
- num_layer_groups_minus1 plus 1 represents the number of layer groups, where a layer group represents a group of contiguous tree layers that are part of the geometry coding tree structure. num_layer_groups_minus1 must be in the range of 0 to the number of coding tree layers.
- layer_group_id[i] specifies the layer group index, i.e., the indicator, that identifies the i-th layer group in the slice.
- layer_group_id must be in the range of 0 to num_layer_groups_minus1.
- num_layers_minus1[i] + 1 represents the number of coding layers (or levels) included in the ith layer group.
- the total number of layer groups can be derived by adding all (num_layers_minus1[i] + 1) to num_layer_groups_minus1 when i is 0.
- subgroup_enabled_flag[i] indicates that the ith layer group is divided into two or more subgroups.
- the set of points included in the subgroups of the layer group is identical to the set of points included in the layer group.
- subgroup_enabled_flag of the ith layer group is 1
- subgroup_enabled_flag of the jth layer group is equal to 1 when j is greater than or equal to i.
- subgroup_enabled_flag[i] 1 specifies the i-th layer-group is divided into two or more subgroups where the set of points in the subgroups of a layer-group is identical to the set of points in the layer-group.
- subgroup_enabled_flag of the i-th layer-group 1 when j is larger than or equal to i.
- subgroup_enabled_flag is equal to 0 specifies that the i-th layer-group is not sub-divided into multiple subgroups).
- subgroup_bbox_origin_bits_minus1+1 is the bit length of the subgroup_bbox_origin field (or syntax element).
- subgroup_bbox_size_bits_minus1+1 is the bit length of the subgroup_bbox_size field.
- Fig. 36 is a diagram illustrating an example syntax structure of a geometry data unit header according to embodiments.
- the syntaxes of Fig. 36 are included in the bitstream of Fig. 29, and may be generated by a point cloud encoder according to embodiments, transmitted to a decoder as a receiving device, and decoded by the point cloud decoder.
- gdu_geometry_parameter_set_id specifies the GPS activated via gps_geom_parameter_set_id.
- gdu_temporal_id specifies the temporal ID of the frame associated with the geometry data unit (GDU).
- slice_id identifies the slice for reference by other DUs.
- slice_tag identifies a slice as a member of a slice group with the same slice_tag value. If a tile inventory DU exists, the slice group is a tile identified by its tile id. If a tile inventory DU does not exist, the interpretation of slice_tag depends on the application.
- frame_ctr_lsb specifies the frame_ctr_lsb_bits LSBs of FrameCtr, a conceptual frame counter.
- slice_entropy_continuation 1
- slice_entropy_continuation 1
- slice_entropy_continuation 1
- parsing of each GDU and all ADUs within the slice is independent of other slices within the frame when slice_inter_entropy_continuation is 0.
- slice_entropy_continuation is not present, it is assumed to be 0.
- prev_slice_id must be identical to the GDU slice_id of the preceding slice in bitstream order.
- sps_layer_group_slicing_flag included in the sequence parameter set has a value of true (i.e., 1)
- the geometry data unit header may contain num_subsequent_subgroups.
- a value of sps_layer_group_slicing_flag of 1 indicates that a slice consists of multiple FGSs of FGS geometries or FGS attributes.
- num_subsequent_subgroups specifies the number of subsequent dependent data units that reference the current data unit or dependent data units.
- the geometry data unit header can contain planar_eligibility_by_density[i] as many times as the value of num_layers_minus1[0].
- occtree_planar_enabled specifies whether (when 1) or not (when 0) the coding of node occupancy bitmaps is performed, in part, by the signaling of occupied and unoccupied planes. When occtree_planar_enabled is not present, it shall be inferred to be 0.
- geom_angular_enabled specifies whether (when 1) or not (when 0) slice geometry is coded using information about a set of beams located along and rotating around the V axis of the angular origin.
- planar_eligibility_by_density[i] it indicates that the planar eligibility flag is enabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 1, it indicates that planar eligibility is enabled for the ith depth of the current subgroup. If planar_eligibility_by_density is 0, it indicates that the planar eligibility flag is disabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 0, it indicates that planar eligibility is disabled for the ith depth of the current subgroup.
- Fig. 37 is a diagram illustrating another example of the syntax structure of a dependent geometry data unit header according to embodiments.
- Fig. 37 shows an example in which layer group-based slicing-related information is included in the dependent geometry data unit header.
- the syntaxes of FIG. 37 are included in the bitstream of FIG. 29, and can be generated by a point cloud encoder according to embodiments, transmitted to a decoder as a receiving device, and decoded by the point cloud decoder.
- dgsh_geometry_parameter_set_id indicates the active GPS indicated by gps_geom_parameter_set_id.
- the dgsi_geometry_parameter_set_id value is equal to the gdu_geometry_parameter_set_id value for the corresponding slice.
- slice_id specifies the geometry slice to which the current dependent geometry data unit belongs.
- layer_group_id is an indicator of the layer group of the slice, i.e., a layer group index that identifies the layer group.
- layer_group_id can range from 0 to num_layer_groups_minus1. If it does not exist, it is assumed to be 0.
- subgroup_id indicates a subgroup of the layer group referenced by layer_group_id, i.e., a subgroup index used to identify the subgroup.
- subgroup_id can range from 0 to num_subgroups_minus1[layer_group_id].
- subgroup_id indicates a subarea within the layer group identified by layer_group_id. If not present, subgroup_id is assumed to be 0.
- subgroup_bbox_origin represents the minimum position of the subgroup bounding box of the i-th subgroup indicated by subgroup_id in the j-th layer group indicated by layer_group_id.
- subgroup_bbox_size represents the size of the subgroup bounding box of the i-th subgroup indicated by subgroup_id in the j-th layer group indicated by layer_group_id.
- the bounding box of points in a subgroup is described by subgroup_bbox_origin and subgroup_bbox_size.
- the area in the bounding box of the i-th subgroup does not overlap with the bounding box of the j-th subgroup when i and j are not equal.
- ref_layer_group_id indicates the layer group identifier of the context reference of the current dependent data unit.
- ref_layer_group_id ranges from 0 to the layer_group_id of the current dependent data unit.
- ref_subgroup_id indicates a reference subgroup of the layer group pointed to by ref_layer_group_id.
- ref_subgroup_id ranges from 0 to num_subgroup_id_minus1 of the layer group pointed to by ref_layer_group_id.
- context_reference_indication_flag 1
- context_reference_indication_flag 0
- Decoders of a receiving device can manage a context buffer using context_reference_indication_flag. If context_reference_indication_flag is 1, the context state of the current dependent slice (i.e., data unit) is stored in the context buffer at the end of decoding of the current data unit. If context_reference_indication_flag is 0, the context state of the current dependent slice (i.e., data unit) is not stored in the context buffer.
- the decoders can be one of FIG. 1, FIG. 2, FIG. 7, FIG. 9, or FIG. 28.
- the dependent geometry data unit header may contain num_subsequent_subgroups.
- num_subsequent_subgroups specifies the number of subsequent dependent data units that reference the current data unit or dependent data units.
- the dependent geometry data unit headers can contain planar_eligibility_by_density[i] as many times as the value of num_layers_minus1[layer_group_id].
- planar_eligibility_by_density[i] it indicates that the planar eligibility flag is enabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 1, it indicates that planar eligibility is enabled for the ith depth of the current subgroup. If planar_eligibility_by_density is 0, it indicates that the planar eligibility flag is disabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 0, it indicates that planar eligibility is disabled for the ith depth of the current subgroup.
- a bitstream may include at least one slice, or subdivided slices, and may include a geometry data unit and an attribute data unit.
- Each data unit includes a header (e.g., a geometry data unit header, a geometry data unit header, an attribute data unit header, or a dependent attribute data unit header).
- the data unit includes independent data units and dependent data units.
- the dependent data units may indicate an inclusion relationship according to a dependency relationship between upper-lower nodes.
- FIG. 1, FIG. 2, FIG. 7, FIG. 9, or FIG. 28 The decoding process performed in one of FIG. 1, FIG. 2, FIG. 7, FIG. 9, or FIG. 28 is as follows.
- a slice within a point cloud frame encoded by an encoder of a transmitting device is decoded as follows:
- Point locations are decoded from one GDU within a slice. If sps_layer_group_slicing_flag is 1, point locations are decoded from one GDU and zero or more DGDUs.
- Point attributes are decoded from each ADU within a slice. If sps_layer_group_slicing_flag is 1, point attributes are decoded from one ADU and zero or more DADUs. ADUs and DADUs are decoded after the GDUs and DGDUs indicated by the same subgroup index pair (layer_group_id and subgroup_id) are decoded.
- a GDU is decoded before all DGDUs within the slice.
- DGDUs in child subgroups are decoded after the DGDUs in the parent subgroup are decoded.
- startDepth and endDepth are set to 0 and num_layers_minus1[0] + 1, respectively.
- startDepth is set to the cumulative value of num_layers_minus1[k] + 1 for each k in the range of 0 to (layer_group_id - 1)
- endDepth is set to the cumulative value of num_layers_minus1[k] + 1 for each k in the range of 0 to layer_group_id.
- the occupancy tree represents the slice geometry as occupancy tree nodes. Parsing or traversing the encoded occupancy tree implicitly generates a representation of the slice geometry.
- the partial occupancy tree represents fine-grained slice geometry in both spatial and depth dimensions as a subtree of occupancy tree nodes. Parsing or traversing an encoded partial occupancy tree implicitly generates a fine-grained slice geometry representation.
- Individual point locations are represented by direct nodes that encode the positions of leaf nodes or node-relative positions in the occupancy tree.
- the occupancy tree node identifies the presence of at least one point contained within the volume of an axis-aligned cuboid. If sps_layer_group_slicing_flag is 1, the occupancy tree node identifies the presence of at least one point contained within the volume of the cube.
- the volume is defined in the slice coordinate system by the inclusive lower corner p_min and the exclusive upper corner p_max.
- planar occupancy coding The following describes planar occupancy coding.
- planar occupancy coding eligibility can be determined on an axis-by-axis basis.
- PointDensity[dpth] is a factor that identifies the density of points at a tree level of depth (dpth).
- mathematical expression 5 represents a method for calculating the density of points at a specific depth of the occupancy tree.
- PointDensity[dpth] (slice_num_points_minus1 + 1 - DirectNodePointCnt) ⁇ 10 / OccNodeCnt[dpth]
- PointDensity[dpth] can be obtained by subtracting 'DirectNodePointCnt' from 'slice_num_points_minus1 + 1', multiplying the result by the constant 10, and then dividing it by OccNodeCnt[dpth].
- slice_num_points_minus1+1 specifies the number of points coded in the corresponding DU.
- slice_num_points_minus1 can be included in the Geometry Data Unit footer semantics of the Geometry Data Unit. According to the bitstream conformance requirement, slice_num_points_minus1 + 1 is equal to the number of decodable points in the corresponding DU. If sps_layer_group_slicing_flag is 1 and layer_group_id is greater than 0, slice_num_points_minus1+1 is equal to the number of nodes existing at the maximum depth of the tree levels in the corresponding DGDU.
- DirectNodePointCnt represents the cumulative number of points coded in direct nodes. That is, the number of points coded in direct nodes is accumulated and counted as DirectNodePointCnt. This variable is initialized to 0 at the beginning of each slice or fine-grained slice. DirectNodePointCnt can be used to calculate the number of points remaining after directly coded points at that depth.
- OccNodeCnt[dpth] represents the cumulative count (i.e., the cumulative number) of nodes existing at depth (dpth). If layer_group_slicing_flag is 1, OccNodeCnt[dpth] represents the cumulative count (i.e., the cumulative number) of nodes existing at depth (dpth) of the corresponding subgroup. OccNodeCnt[dpth] is used as the denominator in Equation 5 to normalize the density of points represented by each node.
- the constant 10 can be used to normalize the point density or convert it to a specific scale.
- PointDensity[dpth] can be specified by planar_eligibility_by_density in the geometry data unit header (GDUH) or dependent geometry data unit header (DGDUH) as in Equation 6 below. If the value of sps_layer_group_slicing_flag included in the SPS is 1, it means that the slice is composed of multiple FGSs of FGS geometry or FGS attributes.
- PointDensity[dpth] planar_eligibility_by_density[dpth - startDepth]
- planar_eligibility_by_density value signaled and transmitted in the geometry data unit header (GDUH) or dependent geometry data unit header (DGDUH) can be used to determine planar eligibility at each depth.
- Equation 6 [dpth - startDepth] represents the relative depth within the slice. By aligning the index based on the start depth (startDepth) of the slice, the planar eligibility value for the depth can be obtained.
- sps_layer_group_slicing_flag 1
- sps_layer_group_slicing_flag 1
- the value of sps_layer_group_slicing_flag 0
- the value of sps_layer_group_slicing_flag is 1, it can specify that the slice is composed of multiple FGSs of partial slice geometries or partial slice attributes.
- the geometry data unit header (GDUH) or dependent geometry data unit header (DGDUH) may include planar_eligibility_by_density as many times as the value of num_layers_minus1.
- occtree_planar_enabled specifies whether coding of node occupancy bitmaps is performed (if 1) or not (if 0), through signaling of partially occupied and unoccupied planes.
- geom_angular_enabled specifies whether the slice geometry is coded using information about a set of beams positioned and rotating along the V-axis of the angular origin (if 1), or not (if 0).
- planar_eligibility_by_density is 1, it indicates that the planar eligibility flag is enabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 1, it indicates that planar eligibility is enabled for the ith depth of the current subgroup. If planar_eligibility_by_density is 0, it indicates that the planar eligibility flag is disabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 01, it indicates that planar eligibility is disabled for the ith depth of the current subgroup.
- PointDensity[dpth] i.e., point density at each depth
- the threshold can be predefined.
- the existing formula for calculating PointDensity[dpth] can be used as is to reduce the bits used due to planar_eligibility_by_density propagation.
- slice_num_points_minus1 may refer to the number of nodes or points generated when decoding FGS, rather than the number of points in the entire slice.
- the decoder can decode and reconstruct portions of FGSs. Segmented slices of FGSs support partial decoding in terms of density and/or spatial domain. When using partial decoding, unnecessary data units are filtered out before decoding the occupancy tree or attribute coefficients to generate partial outputs.
- the decoder generates a low-density slice point cloud.
- the low-density slice point cloud is specified by the following variables:
- SkippedLayerGroup represents the application-specific number of layer groups skipped for partial decoding in the density direction.
- the value of SkippedLayerGroup must be in the range 0 to num_layer_groups_minus1.
- MinNodeSizeLog2 represents the minimum occupancy tree node size specified by SkippedLayerGroup.
- SubgroupNodePos[layerGroupIdx][subgroupIdx][ptIdx][k] represent the output nodes of the subgroup identified by the layer group index (layerGroupIdx or layer_group_id) and the subgroup index (subgroupIdx or subgroup_id).
- SubgroupNodeCnt[layerGroupIdx][subgroupIdx] represent the number of output nodes in the subgroup identified by the layer group index (layerGroupIdx or layer_group_id) and the subgroup index (subgroupIdx or subgroup_id).
- OutLayerGroup which is the maximum value of the layer group index for partial decoding, is specified as the value obtained by subtracting SkippedLayerGroup from the total number of layer groups (num_layer_groups_minus1), as shown in the following mathematical expression 7.
- the code below indicates whether to decode or skip a data unit or dependent data unit.
- layer_group_id ⁇ OutLayerGroup decode the dependent geometry data unit (DGDU) or dependent attribute data unit (DADU). Otherwise, skip the dependent geometry data unit (DGDU) or dependent attribute data unit (DADU).
- the depth of the geometry occupancy tree of partial decoding (PartialDepth) is inferred as the sum of the number of layers (or levels) of each layer group whose index ranges from 0 to OutLayerGroup (num_layers_minus1[i] + 1), as in the code below.
- TotalDepth the maximum depth of the geometry occupancy tree is inferred as the sum of the number of layers (or levels) in each layer group whose indices are in the range of 0 to num_layer_groups_minus1 (num_layers_minus1[i] + 1), as in the code below.
- MinNodeSizeLog2 is inferred from the difference between TotalDepth and PartialDepth as follows.
- MinNodeSizeLog2 TotalDepth - PartialDepth
- MinNodeSizeLog2 is greater than 1, the points are centered within the block, as shown in the code below. That is, the code below adjusts the coordinate values to center each point within the block when the MinNodeSizeLog2 value is greater than 1.
- the first for loop iterates over all points (or nodes) belonging to the subgroup, and the second for loop iterates over each axis (x, y, z) of each point.
- (MinNodeSizeLog2 > 1) ⁇ (MinNodeSizeLog2 - 1)
- the decoder generates a point cloud of a partial region of a slice.
- the low-density slice point cloud is specified by the following variables.
- the arrays RoiBoundingBoxMin and RoiBoundingBoxMax are application-specific arrays that specify the minimum and maximum positions of the bounding box for the Region of Interest (ROI).
- SubgroupNodePos[layerGroupIdx][subgroupIdx] represent the output nodes of the subgroup identified by the layer group index (layerGroupIdx or layer_group_id) and the subgroup index (subgroupIdx or subgroup_id).
- SubgroupNodeCnt[layerGroupIdx][subgroupIdx] represent the number of output nodes in the subgroup identified by the layer group index (layerGroupIdx or layer_group_id) and the subgroup index (subgroupIdx or subgroup_id).
- RoiBoundingBoxMin and RoiBoundingBoxMax exist, subgroups whose subgroup bounding boxes overlap with the bounding boxes of the ROI are selected for decoding.
- the code below indicates whether to decode or skip a data unit or dependent data unit.
- RoiBoundingBoxMax SubgroupBoundingBoxMin[layerGroupIdx][subgroupIdx])
- the present disclosure proposes a method of using a region-adaptive planar mode based on subgroups/slices as described above. That is, the present disclosure has described in detail above a method of calculating planarEligibleKOctreeDepth at a transmitter/receiver by transmitting the number of points (numPoints) in units of subgroups, a method of calculating planarEligibleKOctreeDepth at a transmitter/receiver by predicting the number of points (numPoints), a method of calculating a planarEligibleKOctreeDepth flag at a transmitter and then transmitting it to a receiver, and a method of calculating planarEligibleKOctreeDepth based on the number of output nodes/points in units of subgroups.
- the present disclosure has described in detail above a partial decoding process and a pre-/post-processing process of FGS decoding.
- the receiving method/device has the following effects.
- the present disclosure describes a method for dividing and transmitting compressed data based on certain criteria for point cloud data.
- layered coding can be used to divide and transmit compressed data according to layers, thereby increasing the storage and transmission efficiency of the transmitter.
- Fig. 38 is a diagram showing an example of compressing and providing a service for the geometry and attributes of point cloud data. That is, in a point cloud compression (PCC)-based service, the compression ratio or the number of data can be adjusted and transmitted depending on the receiver performance or transmission environment.
- PCC point cloud compression
- the compression ratio or the number of data can be adjusted and transmitted depending on the receiver performance or transmission environment.
- point cloud data is bundled into a single slice unit as in Fig. 38, if the receiver performance or transmission environment changes, 1) a bitstream suitable for each environment is converted in advance and stored separately and selected when transmitting, or 2) a process of converting (transcoding) is required before transmission.
- a process of converting transcoding
- FIG. 39 is a diagram showing another example of compressing and serving the geometry and attributes of point cloud data according to embodiments.
- compressed data can be divided and transmitted according to layers, in which case the efficiency of the receiver increases.
- scalable attribute coding there is a disadvantage in that a delay occurs and a burden is placed on the receiver's computation by receiving and decoding the entire coded geometry data.
- the delay element is reduced, and the efficiency of the decoder can be increased by saving the computing power required for decoding.
- Figure 40 is a diagram illustrating the operation of the transmitting and receiving ends when transmitting point cloud data composed of layers.
- the receiver requires a process (e.g., data selection or subsampling) to restore the point cloud data through decoding and then select only the point cloud data corresponding to the required layer.
- a receiver targeting low delay may experience delay or may not be able to decode depending on the receiver's performance.
- the receiver can selectively decode a specific layer, thereby increasing decoder efficiency and supporting decoders of various performances.
- Figure 41 shows a flowchart of a point cloud data transmission method according to embodiments.
- a method for transmitting point cloud data may include a step of acquiring point cloud data (71001), a step of encoding point cloud data (71002), and a step of transmitting encoded point cloud data and signaling information (71003). At this time, a bitstream including the encoded point cloud data and signaling information may be encapsulated into a file and transmitted.
- the step (71001) of acquiring point cloud data may perform part or all of the operations of the point cloud video acquisition unit (10001) of FIG. 1 or may perform part or all of the operations of the data input unit (8000) of FIG. 8.
- the step of encoding point cloud data (71002) may perform part or all of the operations of the point cloud video encoder (10002) of FIG. 1, the encoding (20001) of FIG. 2, the point cloud video encoder of FIG. 3, the point cloud video encoder of FIG. 8, the encoder of FIG. 24, the attribute encoding of FIG. 25, and the geometry encoder and attribute encoder of FIG. 27 for encoding geometry information and attribute information.
- the step (71002) of encoding point cloud data may include a step of compressing geometry information of input point cloud data and a step of compressing attribute information.
- the step of compressing geometry information may compress geometry information by layer group and/or subgroup.
- a slice for geometry may be compressed by being divided into one or more FGSs.
- the subgroups may correspond to FGSs.
- whether to use planar mode at a specific depth (or layer or level) of the occupancy tree may be determined based on the density of points at that depth. Since the compression of geometry information and FGS division have been described in detail above, a detailed description thereof will be omitted here to avoid redundant explanation.
- the above compressed geometry information is entropy encoded and then output in the form of a geometry bitstream.
- the step of compressing attribute information compresses the attribute information based on positions for which geometry encoding has not been performed and/or reconstructed geometry information.
- the attribute information may be coded using one or a combination of one or more of RAHT coding, LOD-based predictive transform coding, and lifting transform coding.
- a slice for an attribute may be compressed by being divided into one or more FGSs. In this case, a subgroup may correspond to an FGS.
- the above compressed attribute information is entropy encoded and then output in the form of an attribute bitstream.
- signaling information may include layer group-based slicing-related information for encoding of geometry information and attribute information at the layer group and/or subgroup level and decoding at the receiving end.
- the above layer group-based slicing related information may be transmitted to the receiver by being included in at least one of SPS, APS, LGSI, geometry data unit header (or dependent geometry data unit header), and/or attribute data unit header (or dependent attribute data unit header).
- Detailed information included in the layer group-based slicing related information is omitted here, with reference to FIGS. 29 to 33 and FIGS. 34 to 37.
- Figure 42 shows a flowchart of a method for receiving point cloud data according to embodiments.
- a method for receiving point cloud data may include a step (81001) of receiving encoded point cloud data and signaling information, a step (81002) of decoding point cloud data based on the signaling information, and a step (81003) of rendering the decoded point cloud data.
- the step (81001) of receiving point cloud data and signaling information according to the embodiments may be performed in the receiver (10005) of FIG. 1, the transmitter (20002) or decoding (20003) of FIG. 2, and the receiving unit (9000) or receiving processing unit (9001) of FIG. 9.
- the step (81002) of decoding point cloud data may perform part or all of the operations of the point cloud video decoder (10006) of FIG. 1, the decoding (20003) of FIG. 2, the point cloud video decoder of FIG. 8, the point cloud video decoder of FIG. 9, the decoder of FIG. 24, the decoding of FIG. 26, and the geometry decoder and attribute decoder of FIG. 28 for decoding geometry information and attribute information.
- the step (81002) of decoding point cloud data includes a step of decoding geometry information and a step of decoding attribute information.
- the step of decoding the above geometry information can decode (i.e., restore) the geometry information in units of layer groups and/or subgroups based on layer group-based slicing-related information included in the signaling information.
- the step of decoding the geometry information can decode (i.e., restore) the geometry in units of FGSs.
- a subgroup can correspond to an FGS.
- whether to use the planar mode at a specific depth (or layer or level) of the occupancy tree can be determined based on the density of points at the corresponding depth. Since a detailed description of the decoding of the geometry information has been sufficiently provided above, it will be omitted here to avoid redundant description.
- the step of decoding the attribute information decodes (i.e., decompresses) the attribute information in units of layer groups and/or subgroups based on the layer group-based slicing-related information included in the restored geometry information and signaling information.
- the attribute information may be decoded by using one or more of RAHT coding, LOD-based predictive transform coding, and lifting transform coding, or a combination of one or more.
- the step of decoding the attribute information may decode (i.e., restore) the attribute in units of FGSs.
- a subgroup may correspond to an FGS. Since a detailed description of the decoding of the attribute information has been sufficiently described above, a detailed description will be omitted here to avoid redundant description.
- the rendering step (81003) may restore point cloud data based on restored (or reconstructed) geometry information and attribute information and render it according to various rendering methods. For example, points of the point cloud content may be rendered as vertices having a certain thickness, cubes having a certain minimum size centered around the vertex position, or circles centered around the vertex position. All or part of the rendered point cloud content is provided to the user through a display (e.g., VR/AR display, general display, etc.).
- the rendering step (81003) of the point cloud data according to the embodiments may be performed in the renderer (10007) of FIG. 1, the renderer (20004) of FIG. 2, or the renderer (9011) of FIG. 9.
- Each of the parts, modules, or units described above may be software, processors, or hardware parts that execute sequential execution processes stored in memory (or storage units). Each of the steps described in the embodiments described above may be performed by processors, software, or hardware parts. Each of the modules/blocks/units described in the embodiments described above may operate as a processor, software, or hardware.
- the methods presented in the embodiments may be implemented as code. This code may be written on a processor-readable storage medium and thus may be read by a processor provided by an apparatus.
- the devices and methods according to the embodiments are not limited to the configurations and methods of the embodiments described above, but the embodiments may be configured by selectively combining all or part of each embodiment so that various modifications can be made.
- the various components of the devices of the embodiments may be implemented by hardware, software, firmware, or a combination thereof.
- the various components of the embodiments may be implemented by a single chip, for example, a single hardware circuit.
- the components according to the embodiments may be implemented by separate chips.
- At least one of the components of the devices of the embodiments may be configured with one or more processors capable of executing one or more programs, and the one or more programs may perform, or include instructions for performing, one or more of the operations/methods according to the embodiments.
- the executable instructions for performing the methods/operations of the devices of the embodiments may be stored in non-transitory CRMs or other computer program products configured to be executed by one or more processors, or may be stored in temporary CRMs or other computer program products configured to be executed by one or more processors.
- the memory according to the embodiments may be used as a concept including not only volatile memory (e.g., RAM, etc.), but also non-volatile memory, flash memory, PROM, etc. Additionally, it may include implementations in the form of carrier waves, such as transmissions via the Internet.
- processor-readable recording media may be distributed across network-connected computer systems, allowing processor-readable code to be stored and executed in a distributed manner.
- Various elements of the embodiments may be implemented by hardware, software, firmware, or a combination thereof. Various elements of the embodiments may be implemented on a single chip, such as a hardware circuit. In some embodiments, the embodiments may optionally be implemented on separate chips. In some embodiments, at least one of the elements of the embodiments may be implemented within one or more processors that include instructions for performing operations according to the embodiments.
- the operations according to the embodiments described in this document may be performed by a transceiver device including one or more memories and/or one or more processors according to the embodiments.
- One or more memories may store programs for processing/controlling the operations according to the embodiments, and one or more processors may control various operations described in this document.
- One or more processors may be referred to as a controller, etc.
- the operations according to the embodiments may be performed by firmware, software, and/or a combination thereof, and the firmware, software, and/or a combination thereof may be stored in a processor or a memory.
- first first
- second second
- first user input signal
- first user input signal second user input signal
- first user input signal first user input signal
- second user input signal second user input signal
- the use of these terms should be interpreted as not departing from the scope of the various embodiments.
- a first user input signal and a second user input signal are both user input signals, they do not mean the same user input signals unless the context clearly indicates otherwise.
- the embodiments may be applied, in whole or in part, to point cloud data transmission and reception devices and systems.
- Those skilled in the art may variously modify or alter the embodiments within the scope of the embodiments.
- the embodiments may include modifications and variations, and such modifications and variations do not depart from the scope of the claims and their equivalents.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
실시예들은 포인트 클라우드 콘텐트(Point Cloud Content)를 처리하는 방법 및 장치에 대한 것이다.Embodiments relate to a method and apparatus for processing point cloud content.
포인트 클라우드 콘텐트는 3차원 공간(space or volume)을 표현하는 좌표계에 속한 점(포인트)들의 집합인 포인트 클라우드로 표현되는 콘텐트이다. 포인트 클라우드 콘텐트는3차원으로 이루어진 미디어를 표현할 수 있으며, VR (Virtual Reality, 가상현실), AR (Augmented Reality, 증강현실), MR (Mixed Reality, 혼합현실), XR (Extended Reality), 및 자율 주행 서비스 등의 다양한 서비스를 제공하기 위해 사용된다. 하지만 포인트 클라우드 콘텐트를 표현하기 위해서는 수만개에서 수십만개의 포인트 데이터가 필요하다. 따라서 방대한 양의 포인트 데이터를 효율적으로 처리하기 위한 방법이 요구된다.Point cloud content is content expressed as a point cloud, a collection of points belonging to a coordinate system that represents three-dimensional space (space or volume). Point cloud content can express three-dimensional media and is used to provide various services such as VR (Virtual Reality), AR (Augmented Reality), MR (Mixed Reality), XR (Extended Reality), and autonomous driving services. However, expressing point cloud content requires tens to hundreds of thousands of point data. Therefore, a method for efficiently processing massive amounts of point data is required.
즉, 포인트 클라우드의 데이터를 전송하고 수신하기 위해서 많은 처리량이 요구되는 문제점이 있다. 그래서, 포인트 클라우드 데이터를 전송하고 수신하는 과정에서 압축을 위한 인코딩/압축 해제를 위한 디코딩을 수행하는데, 포인트 클라우드 데이터의 크기가 크기 때문에 연산이 복잡하고 시간이 많이 소요되는 문제가 있다.That is, transmitting and receiving point cloud data requires a significant amount of processing power. Therefore, encoding for compression and decoding for decompression are performed during the process of transmitting and receiving point cloud data. However, the large size of point cloud data makes the computations complex and time-consuming.
실시예들에 따른 기술적 과제는, 전술한 문제점 등을 해결하기 위해서, 포인트 클라우드를 효율적으로 송/수신하기 위한 장치 및 방법을 제공하는데 있다.The technical problem according to the embodiments is to provide a device and method for efficiently transmitting/receiving a point cloud in order to solve the problems described above.
실시예들에 따른 기술적 과제는, 지연시간(latency) 및 인코딩/디코딩 복잡도를 해결하기 위한 장치 및 방법을 제공하는데 있다.The technical problem according to the embodiments is to provide a device and method for resolving latency and encoding/decoding complexity.
실시예들에 따른 기술적 과제는, 영역 적응적 플래너 모드(planar mode)를 사용하도록 함으로써, 지오메트리 인코딩/디코딩을 효율적으로 수행하기 위한 장치 및 방법을 제공함에 있다. The technical problem according to the embodiments is to provide a device and method for efficiently performing geometry encoding/decoding by using a region-adaptive planar mode.
다만, 전술한 기술적 과제만으로 제한되는 것은 아니고, 기재된 전체 내용에 기초하여 당업자가 유추할 수 있는 다른 기술적 과제로 실시예들의 권리범위가 확장될 수 있다.However, the scope of the embodiments is not limited to the technical tasks described above, and the scope of the embodiments may be expanded to other technical tasks that can be inferred by a person skilled in the art based on the entire described content.
상술한 목적 및 다른 이점을 달성하기 위해서 실시예들에 따른 디코딩 방법은, 지오메트리 데이터, 어트리뷰트 데이터, 및 시그널링 정보를 수신하는 단계, 상기 지오메트리 데이터를 디코딩하는 단계, 및 상기 어트리뷰트 데이터를 디코딩하는 단계를 포함할 수 있다. To achieve the above-described purpose and other advantages, a decoding method according to embodiments may include a step of receiving geometry data, attribute data, and signaling information, a step of decoding the geometry data, and a step of decoding the attribute data.
실시예들에 따르면, 상기 지오메트리 데이터를 디코딩하는 단계는, 복수의 깊이들로 구성된 지오메트리 트리를 생성하는 단계, 및 상기 지오메트리 트리를 기반으로 상기 지오메트리 데이터를 디코딩하는 단계를 포함하고, 상기 디코딩 단계는, 상기 지오메트리 트리의 깊이별로 플래너 자격(eligibility) 여부를 결정하고, 상기 플래너 자격이 있다고 결정된 깊이의 지오메트리 데이터를 플래너 모드를 기반으로 디코딩할 수 있다. According to embodiments, the step of decoding the geometry data includes the step of generating a geometry tree composed of a plurality of depths, and the step of decoding the geometry data based on the geometry tree, wherein the decoding step determines whether planner eligibility exists for each depth of the geometry tree, and decodes geometry data of a depth determined to have planner eligibility based on a planner mode.
실시예들에 따르면, 각 깊이의 플래너 자격 여부는 해당 깊이의 포인트들의 밀도를 기반으로 결정될 수 있다. According to embodiments, the planner qualification of each depth may be determined based on the density of points at that depth.
실시예들에 따르면, 상기 포인트들의 밀도는, 상기 깊이의 지오메트리 데이터를 포함하는 데이터 유닛에서 코딩된 포인트들의 개수, 다이렉트 노드들에서 코딩된 포인트들의 개수, 상기 깊이에 존재하는 포인트들의 개수를 기반으로 결정될 수 있다.According to embodiments, the density of the points may be determined based on the number of points coded in a data unit containing geometry data of the depth, the number of points coded in direct nodes, and the number of points existing at the depth.
실시예들에 따르면, 상기 포인트들의 밀도는, 상기 시그널링 정보에 포함된 플래너 자격 여부를 지시하는 정보를 기반으로 결정될 수 있다. According to embodiments, the density of the points may be determined based on information indicating whether the planner is qualified, included in the signaling information.
실시예들에 따르면, 상기 디코딩 단계는 서브그룹 단위로 상기 지오메트리 데이터를 디코딩하고, 상기 각 깊이의 플래너 자격 여부도 서브그룹 단위로 결정되며, 각 서브 그룹은 서브 그룹 인덱스에 의해 식별될 수 있다. According to embodiments, the decoding step decodes the geometry data in units of subgroups, and whether each depth qualifies as a planar is also determined in units of subgroups, and each subgroup can be identified by a subgroup index.
실시예들에 따르면, 디코딩 장치는 메모리와 상기 메모리에 연결된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는 지오메트리 데이터, 어트리뷰트 데이터, 및 시그널링 정보를 수신하고, 상기 지오메트리 데이터를 디코딩하며, 상기 어트리뷰트 데이터를 디코딩하도록 구성될 수 있다. According to embodiments, a decoding device includes a memory and at least one processor connected to the memory, wherein the at least one processor is configured to receive geometry data, attribute data, and signaling information, decode the geometry data, and decode the attribute data.
실시예들에 따르면, 상기 적어도 하나의 프로세서는, 상기 지오메트리 데이터를 디코딩하는 지오메트리 디코더를 포함하고, 상기 지오메트리 디코더는 복수의 깊이들로 구성된 지오메트리 트리를 생성하고, 상기 지오메트리 트리를 기반으로 상기 지오메트리 데이터를 디코딩할 수 있다. According to embodiments, the at least one processor includes a geometry decoder that decodes the geometry data, the geometry decoder generates a geometry tree composed of a plurality of depths, and can decode the geometry data based on the geometry tree.
실시예들에 따르면, 상기 지오메트리 디코더는 상기 지오메트리 트리의 깊이별로 플래너 자격(eligibility) 여부를 결정하고, 상기 플래너 자격이 있다고 결정된 깊이의 지오메트리 데이터를 플래너 모드를 기반으로 디코딩할 수 있다. According to embodiments, the geometry decoder can determine planner eligibility for each depth of the geometry tree, and decode geometry data of a depth determined to have planner eligibility based on a planner mode.
실시예들에 따르면, 각 깊이의 플래너 자격 여부는 해당 깊이의 포인트들의 밀도를 기반으로 결정될 수 있다. According to embodiments, the planner qualification of each depth may be determined based on the density of points at that depth.
실시예들에 따르면, 상기 포인트들의 밀도는, 상기 깊이의 지오메트리 데이터를 포함하는 데이터 유닛에서 코딩된 포인트들의 개수, 다이렉트 노드들에서 코딩된 포인트들의 개수, 상기 깊이에 존재하는 포인트들의 개수를 기반으로 결정될 수 있다. According to embodiments, the density of the points may be determined based on the number of points coded in a data unit containing geometry data of the depth, the number of points coded in direct nodes, and the number of points existing at the depth.
실시예들에 따르면, 상기 포인트들의 밀도는, 상기 시그널링 정보에 포함된 플래너 자격 여부를 지시하는 정보를 기반으로 결정될 수 있다. According to embodiments, the density of the points may be determined based on information indicating whether the planner is qualified, included in the signaling information.
실시예들에 따르면, 상기 지오메트리 디코더는, 서브그룹 단위로 상기 지오메트리 데이터를 디코딩하고, 상기 각 깊이의 플래너 자격 여부도 서브그룹 단위로 결정하며, 각 서브 그룹은 서브 그룹 인덱스에 의해 식별할 수 있다. According to embodiments, the geometry decoder decodes the geometry data in units of subgroups, determines whether each depth is planar-qualified in units of subgroups, and each subgroup can be identified by a subgroup index.
실시예들에 따르면, 인코딩 방법은 지오메트리 데이터를 인코딩하는 단계, 어트리뷰트 데이터를 인코딩하는 단계, 및 상기 인코딩된 지오메트리 데이터, 상기 인코딩된 어트리뷰트 데이터, 및 시그널링 정보를 전송하는 단계를 포함할 수 있다. According to embodiments, an encoding method may include a step of encoding geometry data, a step of encoding attribute data, and a step of transmitting the encoded geometry data, the encoded attribute data, and signaling information.
실시예들에 따르면, 상기 지오메트리 데이터를 인코딩하는 단계는, 복수의 깊이들로 구성된 지오메트리 트리를 생성하는 단계와 상기 지오메트리 트리를 기반으로 상기 지오메트리 데이터를 인코딩하는 단계를 포함하고, 상기 인코딩 단계는, 상기 지오메트리 트리의 깊이별로 플래너 자격(eligibility) 여부를 결정하고, 상기 플래너 자격이 있다고 결정된 깊이의 지오메트리 데이터를 플래너 모드를 기반으로 인코딩할 수 있다. According to embodiments, the step of encoding the geometry data includes the step of generating a geometry tree composed of a plurality of depths and the step of encoding the geometry data based on the geometry tree, wherein the encoding step determines whether planner eligibility exists for each depth of the geometry tree, and encodes geometry data of a depth determined to have planner eligibility based on a planner mode.
실시예들에 따르면, 각 깊이의 플래너 자격 여부는 해당 깊이의 포인트들의 밀도를 기반으로 결정될 수 있다. According to embodiments, the planner qualification of each depth may be determined based on the density of points at that depth.
실시예들에 따른 장치 및 방법은 퀄리티 있는 포인트 클라우드 서비스를 제공할 수 있다.The device and method according to the embodiments can provide a quality point cloud service.
실시예들에 따른 장치 및 방법은 다양한 비디오 코덱 방식을 달성할 수 있다.The devices and methods according to the embodiments can achieve various video codec schemes.
실시예들에 따른 장치 및 방법은 자율주행 서비스 등 범용적인 포인트 클라우드 콘텐츠를 제공할 수 있다.The device and method according to the embodiments can provide general-purpose point cloud content such as autonomous driving services.
실시예들에 따른 장치 및 방법은 포인트 클라우드 데이터의 독립적 인코딩 및 디코딩을 위해 포인트 클라우드 데이터의 공간 적응적 분할을 수행함으로써, 병렬 처리의 향상 및 스케일러비티(scalability)를 제공할 수 있다.The device and method according to the embodiments can provide improved parallel processing and scalability by performing spatially adaptive segmentation of point cloud data for independent encoding and decoding of point cloud data.
실시예들에 따른 장치 및 방법은 포인트 클라우드 데이터를 타일 및/또는 슬라이스 단위로 분할하여 인코딩 및 디코딩을 수행하고 이를 위해 필요한 데이터를 시그널링함으로써 포인트 클라우드의 인코딩 및 디코딩 성능을 향상시킬 수 있다.The device and method according to the embodiments can improve the encoding and decoding performance of a point cloud by dividing point cloud data into tiles and/or slices to perform encoding and decoding and signaling data required for this.
실시예들에 따른 장치 및 방법은 포인트 클라우드 데이터에 대해 일정 기준에 따라 압축 데이터를 나누어 전송할 수 있다. 그리고, 레이어된 코딩(layered coding)을 사용하는 경우 layer에 따라서 압축 데이터를 나누어 보낼 수 있다. 따라서, 송신 장치의 저장 및 전송 효율을 증가시킬 수 있다.The device and method according to the embodiments can divide and transmit compressed data based on certain criteria for point cloud data. Furthermore, when layered coding is used, the compressed data can be divided and transmitted according to each layer. Therefore, the storage and transmission efficiency of the transmission device can be increased.
도면은 실시예들을 더욱 이해하기 위해서 포함되며, 도면은 실시예들에 관련된 설명과 함께 실시예들을 나타낸다.The drawings are included to further understand the embodiments, and the drawings illustrate the embodiments together with the description related to the embodiments.
도 1은 실시예들에 따른 포인트 클라우드 콘텐츠 제공 시스템의 예시를 나타낸다.Figure 1 illustrates an example of a point cloud content provision system according to embodiments.
도 2는 실시예들에 따른 포인트 클라우드 콘텐트 제공 동작을 나타내는 블록도이다.FIG. 2 is a block diagram illustrating a point cloud content provision operation according to embodiments.
도 3은 실시예들에 따른 포인트 클라우드 인코더(Point Cloud Encoder)의 예시를 나타낸다.FIG. 3 illustrates an example of a point cloud encoder according to embodiments.
도 4는 실시예들에 따른 옥트리 및 오큐판시 코드 (occupancy code)의 예시를 나타낸다.Figure 4 illustrates examples of octree and occupancy codes according to embodiments.
도 5는 실시예들에 따른 LOD 별 포인트 구성의 예시를 나타낸다. Figure 5 shows an example of a point configuration by LOD according to embodiments.
도 6은 실시예들에 따른 LOD 별 포인트 구성의 예시를 나타낸다. Figure 6 shows an example of a point configuration by LOD according to embodiments.
도 7은 실시예들에 따른 포인트 클라우드 디코더(Point Cloud Decoder)의 예시를 나타낸다.Fig. 7 illustrates an example of a point cloud decoder according to embodiments.
도 8은 실시예들에 따른 전송 장치의 예시이다.Figure 8 is an example of a transmission device according to embodiments.
도 9는 실시예들에 따른 수신 장치의 예시이다.Fig. 9 is an example of a receiving device according to embodiments.
도 10은 실시예들에 따른 포인트 클라우드 데이터 송수신 방법/장치와 연동 가능한 구조의 예시를 나타낸다.Fig. 10 shows an example of a structure that can be linked with a point cloud data transmission/reception method/device according to embodiments.
도 11과 도 12는 실시예들에 따른 포인트 클라우드 데이터의 인코딩, 전송, 디코딩 과정을 나타낸 도면이다.Figures 11 and 12 are diagrams showing the encoding, transmission, and decoding processes of point cloud data according to embodiments.
도 13은 실시예들에 따른 레이어 기반 포인트 클라우드 데이터 구성의 예시를 나타낸 도면이다.FIG. 13 is a diagram illustrating an example of layer-based point cloud data configuration according to embodiments.
도 14의 (a)는 실시예들에 따른 지오메트리 데이터의 비트스트림 구조를 나타내고, 도 14의 (b)는 실시예들에 따른 어트리뷰트 데이터의 비트스트림 구조를 나타낸다.Fig. 14 (a) shows a bitstream structure of geometry data according to embodiments, and Fig. 14 (b) shows a bitstream structure of attribute data according to embodiments.
도 15는 실시예들에 따라 비트스트림을 레이어 단위로 나누어 전달하기 위한 비트스트림의 구성의 예시를 보인 도면이다. FIG. 15 is a diagram showing an example of a configuration of a bitstream for dividing a bitstream into layer units and transmitting it according to embodiments.
도 16은 실시예들에 따라 지오메트리 비트스트림과 어트리뷰트 비트스트림이 하나의 비트스트림으로 다중화될 때 비트스트림 정렬 방법의 일 예시를 나타낸다.FIG. 16 illustrates an example of a bitstream alignment method when a geometry bitstream and an attribute bitstream are multiplexed into one bitstream according to embodiments.
도 17은 실시예들에 따라 지오메트리 비트스트림과 어트리뷰트 비트스트림이 하나의 비트스트림으로 다중화될 때 비트스트림 정렬 방법의 다른 예시를 나타낸다.FIG. 17 illustrates another example of a bitstream alignment method when a geometry bitstream and an attribute bitstream are multiplexed into one bitstream according to embodiments.
도 18(a) 내지 도 18(c)는 실시예들에 따라 대칭적인 지오메트리-어트리뷰트 선택의 예시를 보인 도면이다. FIGS. 18(a) to 18(c) are drawings showing examples of symmetrical geometry-attribute selection according to embodiments.
도 19(a) 내지 도 19(c)은 실시예들에 따라 비대칭적인 지오메트리-어트리뷰트 선택의 예시를 보인 도면이다.FIGS. 19(a) to 19(c) are drawings showing examples of asymmetric geometry-attribute selection according to embodiments.
도 20(a) 내지 도 20(c)는 실시예들에 따른 포인트 클라우드 데이터를 포함하는 슬라이스들을 구성하는 방법의 예시를 나타낸다.FIGS. 20(a) to 20(c) illustrate examples of a method for constructing slices including point cloud data according to embodiments.
도 21(a)와 도 21(b)는 실시예들에 따른 지오메트리 코딩 레이어 구조를 나타낸다.Figures 21(a) and 21(b) illustrate geometry coding layer structures according to embodiments.
도 22는 실시예들에 따른 레이어 그룹 및 서브그룹 구조를 나타낸다.Figure 22 illustrates the layer group and subgroup structure according to embodiments.
도 23(a) 내지 도 23(c)는 실시예들에 따른 레이어 그룹 기반 포인트 클라우드 데이터의 표현을 나타낸다.Figures 23(a) to 23(c) illustrate representations of layer group-based point cloud data according to embodiments.
도 24는 실시예들에 따른 포인트 클라우드 데이터 송/수신 장치/방법을 나타낸다.Fig. 24 illustrates a point cloud data transmission/reception device/method according to embodiments.
도 25는 실시예들에 따른 인코더의 인코딩 방법의 일 예시를 보인 흐름도이다.Fig. 25 is a flowchart showing an example of an encoding method of an encoder according to embodiments.
도 26은 실시예들에 따른 디코더의 디코딩 방법의 일 예시를 보인 흐름도이다.Fig. 26 is a flowchart showing an example of a decoding method of a decoder according to embodiments.
도 27은 실시예들에 따른 포인트 클라우드 송신 장치의 또 다른 예시를 보인 도면이다.Fig. 27 is a drawing showing another example of a point cloud transmission device according to embodiments.
도 28은 실시예들에 따른 포인트 클라우드 수신 장치의 또 다른 예시를 보인 도면이다.Fig. 28 is a drawing showing another example of a point cloud receiving device according to embodiments.
도 29는 실시예들에 따른 비트스트림 구성을 나타낸다.Figure 29 shows a bitstream configuration according to embodiments.
도 30a, 도 30b는 실시예들에 따른 시퀀스 파라미터 세트의 신택스 구조의 일 예를 나타낸다.Figures 30a and 30b illustrate an example of a syntax structure of a sequence parameter set according to embodiments.
도 31은 실시예들에 따른 종속 지오메트리 데이터 유닛 헤더의 신택스 구조의 일 예시를 나타낸다.Figure 31 illustrates an example of a syntax structure of a dependent geometry data unit header according to embodiments.
도 32는 실시예들에 따른 레이어 그룹 구조 인벤토리의 신택스 구조의 일 예시를 나타낸다.Figure 32 illustrates an example of a syntax structure of a layer group structure inventory according to embodiments.
도 33은 실시예들에 따른 종속 지오메트리 데이터 유닛 헤더의 신택스 구조의 다른 예시를 나타낸다.Figure 33 illustrates another example of the syntax structure of a dependent geometry data unit header according to embodiments.
도 34(a), 도 34(b)는 실시예들에 따른 레이어 그룹과 서브그룹 그리고, FGS와의 관계의 일 예를 보인 도면이다.Figures 34(a) and 34(b) are drawings showing an example of the relationship between layer groups and subgroups and FGS according to embodiments.
도 35a, 도 35b는 실시예들에 따른 시퀀스 파라미터 세트(SPS)의 신택스 구조의 다른 예를 나타낸다.Figures 35a and 35b illustrate another example of the syntax structure of a sequence parameter set (SPS) according to embodiments.
도 36은 실시예들에 따른 지오메트리 데이터 유닛 헤더의 신택스 구조의 일 예를 나타낸 도면이다.FIG. 36 is a diagram illustrating an example of a syntax structure of a geometry data unit header according to embodiments.
도 37은 실시예들에 따른 종속 지오메트리 데이터 유닛 헤더의 신택스 구조의 또 다른 예를 나타낸 도면이다.FIG. 37 is a diagram illustrating another example of the syntax structure of a dependent geometry data unit header according to embodiments.
도 38은 실시예들에 따른 포인트 클라우드 데이터의 지오메트리 및 어트리뷰트를 압축하여 서비스하는 일 예시를 나타낸 도면이다.FIG. 38 is a drawing showing an example of compressing and serving the geometry and attributes of point cloud data according to embodiments.
도 39는 실시예들에 따른 포인트 클라우드 데이터의 지오메트리 및 어트리뷰트를 압축하여 서비스하는 다른 예시를 나타낸 도면이다.FIG. 39 is a diagram showing another example of compressing and serving the geometry and attributes of point cloud data according to embodiments.
도 40은 실시예들에 따른 포인트 클라우드 데이터의 지오메트리 및 어트리뷰트를 압축하여 서비스하는 또 다른 예시를 나타낸 도면이다.FIG. 40 is a diagram illustrating another example of compressing and serving the geometry and attributes of point cloud data according to embodiments.
도 41은 실시예들에 따른 포인트 클라우드 데이터 송신 방법의 흐름도를 나타낸다.Figure 41 shows a flowchart of a point cloud data transmission method according to embodiments.
도 42는 실시예들에 따른 포인트 클라우드 데이터 수신 방법의 흐름도를 나타낸다.Figure 42 shows a flowchart of a method for receiving point cloud data according to embodiments.
실시예들의 바람직한 실시예에 대해 구체적으로 설명하며, 그 예는 첨부된 도면에 나타낸다. 첨부된 도면을 참조한 아래의 상세한 설명은 실시예들의 실시예에 따라 구현될 수 있는 실시예만을 나타내기보다는 실시예들의 바람직한 실시예를 설명하기 위한 것이다. 다음의 상세한 설명은 실시예들에 대한 철저한 이해를 제공하기 위해 세부 사항을 포함한다. 그러나 실시예들이 이러한 세부 사항 없이 실행될 수 있다는 것은 당업자에게 자명하다.Preferred embodiments of the embodiments are described in detail, examples of which are illustrated in the accompanying drawings. The following detailed description, with reference to the accompanying drawings, is intended to illustrate preferred embodiments of the embodiments, rather than merely show embodiments that can be implemented according to the embodiments. The following detailed description includes details to provide a thorough understanding of the embodiments. However, it will be apparent to those skilled in the art that the embodiments may be practiced without these details.
실시예들에서 사용되는 대부분의 용어는 해당 분야에서 널리 사용되는 일반적인 것들에서 선택되지만, 일부 용어는 출원인에 의해 임의로 선택되며 그 의미는 필요에 따라 다음 설명에서 자세히 서술한다. 따라서 실시예들은 용어의 단순한 명칭이나 의미가 아닌 용어의 의도된 의미에 근거하여 이해되어야 한다.While most of the terms used in the examples are commonly used in the field, some terms were arbitrarily selected by the applicant, and their meanings are described in detail in the following descriptions as needed. Therefore, the examples should be understood based on the intended meaning of the terms, not simply their names or meanings.
도 1은 실시예들에 따른 포인트 클라우드 콘텐트 제공 시스템의 예시를 나타낸다.FIG. 1 illustrates an example of a point cloud content provision system according to embodiments.
도 1에 도시된 포인트 클라우드 콘텐트 제공 시스템은 전송 장치(transmission device)(10000) 및 수신 장치(reception device)(10004)를 포함할 수 있다. 전송 장치(10000) 및 수신 장치(10004)는 포인트 클라우드 데이터를 송/수신하기 위해 유무선 통신 가능하다.The point cloud content provision system illustrated in FIG. 1 may include a transmission device (10000) and a reception device (10004). The transmission device (10000) and the reception device (10004) are capable of wired and wireless communication to transmit/receive point cloud data.
실시예들에 따른 전송 장치(10000)는 포인트 클라우드 비디오(또는 포인트 클라우드 콘텐트)를 확보하고 처리하여 전송할 수 있다. 실시예들에 따라, 전송 장치(10000)는 고정국(fixed station), BTS(base transceiver system), 네트워크, AI(Artificial Intelligence) 기기 및/또는 시스템, 로봇, AR/VR/XR 기기 및/또는 서버 등을 포함할 수 있다. 또한 실시예들에 따라 전송 장치(10000)는 무선 접속 기술(예, 5G NR(New RAT), LTE(Long Term Evolution))을 이용하여, 기지국 및/또는 다른 무선 기기와 통신을 수행하는 기기, 로봇, 차량, AR/VR/XR 기기, 휴대기기, 가전, IoT(Internet of Thing)기기, AI 기기/서버 등을 포함할 수 있다. A transmission device (10000) according to embodiments can secure, process, and transmit a point cloud video (or point cloud content). According to embodiments, the transmission device (10000) can 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, etc. In addition, according to embodiments, the transmission device (10000) can include a device that performs communication with a base station and/or other wireless devices using a wireless access technology (e.g., 5G NR (New RAT), LTE (Long Term Evolution)), a robot, a vehicle, an AR/VR/XR device, a portable device, a home appliance, an IoT (Internet of Things) device, an AI device/server, etc.
실시예들에 따른 전송 장치(10000)는 포인트 클라우드 비디오 획득부(Point Cloud Video Acquisition unit, 10001), 포인트 클라우드 비디오 인코더(Point Cloud Video Encoder, 10002) 및/또는 트랜스미터(Transmitter (or Communication module), 10003)를 포함한다A transmission device (10000) according to embodiments includes a Point Cloud Video Acquisition unit (10001), a Point Cloud Video Encoder (10002), and/or a Transmitter (or Communication module), 10003.
실시예들에 따른 포인트 클라우드 비디오 획득부(10001)는 캡쳐, 합성 또는 생성 등의 처리 과정을 통해 포인트 클라우드 비디오를 획득한다. 포인트 클라우드 비디오는 3차원 공간에 위치한 포인트들의 집합인 포인트 클라우드로 표현되는 포인트 클라우드 콘텐트로서, 포인트 클라우드 비디오 데이터 등으로 호칭될 수 있다. 실시예들에 따른 포인트 클라우드 비디오는 하나 또는 그 이상의 프레임들을 포함할 수 있다. 하나의 프레임은 정지 영상/픽쳐를 나타낸다. 따라서 포인트 클라우드 비디오는 포인트 클라우드 영상/프레임/픽처를 포함할 수 있으며, 포인트 클라우드 영상, 프레임 및 픽처 중 어느 하나로 호칭될 수 있다.A point cloud video acquisition unit (10001) according to embodiments acquires a point cloud video through a processing process such as capture, synthesis, or generation. The point cloud video is point cloud content expressed as a point cloud, which is a collection of points located in a three-dimensional space, and may be referred to as point cloud video data, etc. The point cloud video according to embodiments may include one or more frames. One 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 any one of a point cloud image, a frame, and a picture.
실시예들에 따른 포인트 클라우드 비디오 인코더(10002)는 확보된 포인트 클라우드 비디오 데이터를 인코딩한다. 포인트 클라우드 비디오 인코더(10002)는 포인트 클라우드 컴프레션(Point Cloud Compression) 코딩을 기반으로 포인트 클라우드 비디오 데이터를 인코딩할 수 있다. 실시예들에 따른 포인트 클라우드 컴프레션 코딩은 G-PCC(Geometry-based Point Cloud Compression) 코딩 및/또는 V-PCC(Video based Point Cloud Compression) 코딩 또는 차세대 코딩을 포함할 수 있다. 또한 실시예들에 따른 포인트 클라우드 컴프레션 코딩은 상술한 실시예에 국한되는 것은 아니다. 포인트 클라우드 비디오 인코더(10002)는 인코딩된 포인트 클라우드 비디오 데이터를 포함하는 비트스트림을 출력할 수 있다. 비트스트림은 인코딩된 포인트 클라우드 비디오 데이터뿐만 아니라, 포인트 클라우드 비디오 데이터의 인코딩과 관련된 시그널링 정보를 포함할 수 있다.A point cloud video encoder (10002) according to embodiments encodes acquired point cloud video data. The point cloud video encoder (10002) may encode point cloud video data based on point cloud compression coding. The point cloud compression coding according to embodiments may include G-PCC (Geometry-based Point Cloud Compression) coding and/or V-PCC (Video-based Point Cloud Compression) coding or next-generation coding. In addition, the point cloud compression coding according to embodiments is not limited to the above-described embodiment. The point cloud video encoder (10002) may output a bitstream including encoded point cloud video data. The bitstream may include not only encoded point cloud video data but also signaling information related to encoding of the point cloud video data.
실시예들에 따른 트랜스미터(10003)는 인코딩된 포인트 클라우드 비디오 데이터를 포함하는 비트스트림을 전송한다. 실시예들에 따른 비트스트림은 파일 또는 세그먼트(예를 들면 스트리밍 세그먼트) 등으로 인캡슐레이션되어 방송망 및/또는 브로드밴드 망등의 다양한 네트워크를 통해 전송된다. 도면에 도시되지 않았으나, 전송 장치(10000)는 인캡슐레이션 동작을 수행하는 인캡슐레이션부(또는 인캡슐레이션 모듈)을 포함할 수 있다. 또한 실시예들에 따라 인캡슐레이션부는 트랜스미터(10003)에 포함될 수 있다. 실시예들에 따라 파일 또는 세그먼트는 네트워크를 통해 수신 장치(10004)로 전송되거나, 디지털 저장매체(예를 들면 USB, SD, CD, DVD, 블루레이, HDD, SSD 등)에 저장될 수 있다. 실시예들에 따른 트랜스미터(10003)는 수신 장치(10004) (또는 리시버(Receiver, 10005))와 4G, 5G, 6G 등의 네트워크를 통해 유/무선 통신 가능하다. 또한 트랜스미터(10003)는 네트워크 시스템(예를 들면 4G, 5G, 6G 등의 통신 네트워크 시스템)에 따라 필요한 데이터 처리 동작을 수행할 수 있다. 또한 전송 장치(10000)는 온 디맨드(On Demand) 방식에 따라 인캡슐레이션된 데이터를 전송할 수도 있다.A transmitter (10003) according to embodiments transmits a bitstream including encoded point cloud video data. The bitstream according to embodiments is encapsulated into a file or segment (e.g., streaming segment) and transmitted through various networks such as a broadcast network and/or a broadband network. Although not shown in the drawing, the transmission device (10000) may include an encapsulation unit (or an encapsulation module) that performs an encapsulation operation. In addition, the encapsulation unit may be included in the transmitter (10003) according to embodiments. According to embodiments, the file or segment may be transmitted to a receiving device (10004) through a network or may be stored in a digital storage medium (e.g., USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc.). The transmitter (10003) according to embodiments may communicate with the receiving device (10004) (or receiver (10005)) via a network such as 4G, 5G, or 6G via wired/wireless communication. Additionally, the transmitter (10003) can perform data processing operations required according to a network system (e.g., a communication network system such as 4G, 5G, or 6G). Additionally, the transmission device (10000) can transmit encapsulated data in an on-demand manner.
실시예들에 따른 수신 장치(10004)는 리시버(Receiver, 10005), 포인트 클라우드 비디오 디코더(Point Cloud Video Decoder, 10006) 및/또는 렌더러(Renderer, 10007)를 포함한다. 실시예들에 따라 수신 장치(10004)는 무선 접속 기술(예, 5G NR(New RAT), LTE(Long Term Evolution))을 이용하여, 기지국 및/또는 다른 무선 기기와 통신을 수행하는 기기, 로봇, 차량, AR/VR/XR 기기, 휴대기기, 가전, IoT(Internet of Thing)기기, AI 기기/서버 등을 포함할 수 있다.A receiving device (10004) according to embodiments includes a receiver (10005), a point cloud video decoder (10006), and/or a renderer (10007). According to embodiments, the receiving device (10004) may include a device, robot, vehicle, AR/VR/XR device, mobile device, home appliance, IoT (Internet of Things) device, AI device/server, etc. that performs communication with a base station and/or other wireless devices using a wireless access technology (e.g., 5G NR (New RAT), LTE (Long Term Evolution)).
실시예들에 따른 리시버(10005)는 포인트 클라우드 비디오 데이터를 포함하는 비트스트림 또는 비트스트림이 인캡슐레이션된 파일/세그먼트 등을 네트워크 또는 저장매체로부터 수신한다. 리시버(10005)는 네트워크 시스템(예를 들면 4G, 5G, 6G 등의 통신 네트워크 시스템)에 따라 필요한 데이터 처리 동작을 수행할 수 있다. 실시예들에 따른 리시버(10005)는 수신한 파일/세그먼트를 디캡슐레이션하여 비트스트림을 출력할수 있다. 또한 실시예들에 따라 리시버(10005)는 디캡슐레이션 동작을 수행하기 위한 디캡슐레이션부(또는 디캡슐레이션 모듈)을 포함할 수 있다. 또한 디캡슐레이션부는 리시버(10005)와 별개의 엘레멘트(또는 컴포넌트)로 구현될 수 있다.A receiver (10005) according to embodiments receives a bitstream containing point cloud video data or a file/segment in which the bitstream is encapsulated, from a network or a storage medium. The receiver (10005) may perform data processing operations required according to a network system (e.g., a communication network system such as 4G, 5G, or 6G). The receiver (10005) according to embodiments may decapsulate the received file/segment and output a bitstream. In addition, the receiver (10005) according to embodiments may include a decapsulation unit (or decapsulation module) for performing the decapsulation operation. In addition, the decapsulation unit may be implemented as a separate element (or component) from the receiver (10005).
포인트 클라우드 비디오 디코더(10006)는 포인트 클라우드 비디오 데이터를 포함하는 비트스트림을 디코딩한다. 포인트 클라우드 비디오 디코더(10006)는 포인트 클라우드 비디오 데이터가 인코딩된 방식에 따라 디코딩할 수 있다(예를 들면 포인트 클라우드 비디오 인코더(10002)의 동작의 역과정). 따라서 포인트 클라우드 비디오 디코더(10006)는 포인트 클라우드 컴프레션의 역과정인 포인트 클라우드 디컴프레션 코딩을 수행하여 포인트 클라우드 비디오 데이터를 디코딩할 수 있다. 포인트 클라우드 디컴프레션 코딩은 G-PCC 코딩을 포함한다.A point cloud video decoder (10006) decodes a bitstream containing point cloud video data. The point cloud video decoder (10006) can decode the point cloud video data according to how it is encoded (e.g., the reverse process of the operation of the point cloud video encoder (10002)). Accordingly, the point cloud video decoder (10006) can decode the point cloud video data by performing point cloud decompression coding, which is the reverse process of point cloud compression. The point cloud decompression coding includes G-PCC coding.
렌더러(10007)는 디코딩된 포인트 클라우드 비디오 데이터를 렌더링한다. 일 실시예로, 렌더러(10007)는 디코딩된 포인트 클라우드 비디오 데이터를 뷰포트 등에 따라 렌더링할 수 있다. 렌더러(10007)는 포인트 클라우드 비디오 데이터 뿐만 아니라 오디오 데이터도 렌더링하여 포인트 클라우드 콘텐트를 출력할 수 있다. 실시예들에 따라 렌더러(10007)는 포인트 클라우드 콘텐트를 디스플레이하기 위한 디스플레이를 포함할 수 있다. 실시예들에 따라 디스플레이는 렌더러(10007)에 포함되지 않고 별도의 디바이스 또는 컴포넌트로 구현될 수 있다.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 audio data to output point cloud content. According to embodiments, the renderer (10007) may include a display for displaying the point cloud content. According to embodiments, the display may not be included in the renderer (10007) but may be implemented as a separate device or component.
도면에 점선으로 표시된 화살표는 수신 장치(10004)에서 획득한 피드백 정보(feedback information)의 전송 경로를 나타낸다. 피드백 정보는 포인트 클라우드 콘텐트를 소비하는 사용자와의 인터랙티비를 반영하기 위한 정보로서, 사용자의 정보(예를 들면 헤드 오리엔테이션 정보, 뷰포트(Viewport) 정보 등)을 포함한다. 특히 포인트 클라우드 콘텐트가 사용자와의 상호작용이 필요한 서비스(예를 들면 자율주행 서비스 등)를 위한 콘텐트인 경우, 피드백 정보는 콘텐트 송신측(예를 들면 전송 장치(10000)) 및/또는 서비스 프로바이더에게 전달될 수 있다. 실시예들에 따라 피드백 정보는 전송 장치(10000) 뿐만 아니라 수신 장치(10004)에서도 사용될 수 있으며, 제공되지 않을 수도 있다.The dotted arrows in the drawing indicate the transmission path of feedback information acquired from the receiving device (10004). The feedback information is information for reflecting the interaction with the user consuming the point cloud content, and includes information about the user (e.g., head orientation information, viewport information, etc.). In particular, when the point cloud content is content for a service requiring interaction with the user (e.g., autonomous driving service, etc.), the feedback information may be transmitted to the content transmitter (e.g., the transmitting device (10000)) and/or the service provider. Depending on the embodiments, the feedback information may be used not only by the transmitting device (10000) but also by the receiving device (10004), or may not be provided.
실시예들에 따른 헤드 오리엔테이션 정보는 사용자의 머리 위치, 방향, 각도, 움직임 등에 대한 정보를 의미할 수 있다. 실시예들에 따른 수신 장치(10004)는 헤드 오리엔테이션 정보를 기반으로 뷰포트 정보를 계산할 수 있다. 뷰포트 정보는 사용자가 바라보고 있는 포인트 클라우드 비디오의 영역(즉, 사용자가 현재 보고 있는 영역)에 대한 정보이다. 즉, 뷰포트 정보는 사용자가 현재 포인트 클라우드 비디오 내에서 보고 있는 영역에 대한 정보이다. 다시 말해, 뷰포트 또는 뷰포트 영역은 사용자가 포인트 클라우드 비디오에서 보고 있는 영역을 의미할 수 있다. 그리고 시점(viewpoint)은 사용자가 포인트 클라우드 비디오에서 보고 있는 지점으로서, 뷰포트 영역의 정중앙 지점을 의미할 수 있다. 즉, 뷰포트는 시점을 중심으로 한 영역으로서, 그 영역이 차지하는 크기, 형태 등은 FOV(Field Of View) 에 의해 결정될 수 있다. 따라서 수신 장치(10004)는 헤드 오리엔테이션 정보 외에 장치가 지원하는 수직(vertical) 혹은 수평(horizontal) FOV 등을 기반으로 뷰포트 정보를 추출할 수 있다. 또한 수신 장치(10004)는 헤드 오리엔테이션 정보 및/또는 뷰포트 정보를 기반으로 게이즈 분석 (Gaze Analysis) 등을 수행하여 사용자의 포인트 클라우드 비디오 소비 방식, 사용자가 응시하는 포인트 클라우드 비디오 영역, 응시 시간 등을 확인할 수 있다. 실시예들에 따라 수신 장치(10004)는 게이즈 분석 결과를 포함하는 피드백 정보를 송신 장치(10000)로 전송할 수 있다. 실시예들에 따르면, VR/XR/AR/MR 디스플레이 등의 장치는 사용자의 머리 위치/방향, 장치가 지원하는 수직(vertical) 또는 수평(horizontal) FOV 등에 근거하여 뷰포트 영역을 추출할 수 있다. 실시예들에 따르면, 헤드 오리엔테이션 정보와 뷰포트 정보는 피드백 정보 또는 시그널링 정보 또는 메타데이터라 칭할 수 있다.Head orientation information according to embodiments may refer to information about the position, direction, angle, movement, etc. of the user's head. The receiving device (10004) according to embodiments may calculate 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 looking at (i.e., the area that the user is currently viewing). In other words, the viewport information is information about the area that the user is currently viewing within the point cloud video. In other words, the viewport or the viewport area may refer to the area that the user is viewing within the point cloud video. In addition, the viewpoint is the point that the user is viewing within the point cloud video, and may refer to the exact center point of the viewport area. In other words, the viewport is an area centered on the viewpoint, and the size, shape, etc. that the area occupies may be determined by the FOV (Field Of View). Therefore, the receiving device (10004) may extract viewport information based on the vertical or horizontal FOV supported by the device in addition to the head orientation information. In addition, the receiving device (10004) may perform gaze analysis, etc. based on head orientation information and/or viewport information to check the user's point cloud video consumption method, the point cloud video area the user gazes at, the gaze time, etc. According to embodiments, the receiving device (10004) may transmit feedback information including the gaze analysis result to the transmitting device (10000). According to embodiments, a device such as a VR/XR/AR/MR display may extract a viewport area based on the user's head position/direction, a vertical or horizontal FOV supported by the device, etc. According to embodiments, head orientation information and viewport information may be referred to as feedback information, signaling information, or metadata.
실시예들에 따른 피드백 정보는 렌더링 및/또는 디스플레이 과정에서 획득될 수 있다. 실시예들에 따른 피드백 정보는 수신 장치(10004)에 포함된 하나 또는 그 이상의 센서들에 의해 확보될 수 있다. 또한 실시예들에 따라 피드백 정보는 렌더러(10007) 또는 별도의 외부 엘레멘트(또는 디바이스, 컴포넌트 등)에 의해 확보될 수 있다. 도1의 점선은 렌더러(10007)에서 확보한 피드백 정보의 전달 과정을 나타낸다. 상기 피드백 정보는 송신측으로 전달되는 것뿐만 아니라, 수신측에서 소비될 수도 있다. 즉, 포인트 클라우드 콘텐트 제공 시스템은 피드백 정보를 기반으로 포인트 클라우드 데이터를 처리(인코딩/디코딩/렌더링)할 수 있다. 예를 들어, 포인트 클라우드 비디오 디코더(10006)와 렌더러(10007)는 피드백 정보 즉, 헤드 오리엔테이션 정보 및/또는 뷰포트 정보를 이용하여 현재 사용자가 보고 있는 영역에 대한 포인트 클라우드 비디오만 우선적으로 디코딩 및 렌더링할 수 있다. Feedback information according to embodiments may be acquired during the rendering and/or display process. The feedback information according to embodiments may be acquired by one or more sensors included in the receiving device (10004). Additionally, the feedback information according to embodiments may be acquired by the renderer (10007) or a separate external element (or device, component, etc.). The dotted line in Fig. 1 represents the transmission process of the feedback information acquired by the renderer (10007). The feedback information may not only be transmitted to the transmitting side, but may also be consumed by the receiving side. That is, the point cloud content providing system may process (encode/decode/render) point cloud data based on the feedback information. For example, the point cloud video decoder (10006) and the renderer (10007) may use the feedback information, i.e., head orientation information and/or viewport information, to preferentially decode and render only the point cloud video for the area currently being viewed by the user.
또한 수신 장치(10004)는 피드백 정보를 전송 장치(10000)로 전송할 수 있다. 전송 장치(10000)(또는 포인트 클라우드 비디오 인코더(10002))는 피드백 정보를 기반으로 인코딩 동작을 수행할 수 있다. 따라서 포인트 클라우드 콘텐트 제공 시스템은 모든 포인트 클라우드 데이터를 처리(인코딩/디코딩)하지 않고, 피드백 정보를 기반으로 필요한 데이터(예를 들면 사용자의 헤드 위치에 대응하는 포인트 클라우드 데이터)를 효율적으로 처리하고, 사용자에게 포인트 클라우드 콘텐트를 제공할 수 있다. Additionally, the receiving device (10004) can transmit feedback information to the transmitting device (10000). The transmitting device (10000) (or point cloud video encoder (10002)) can perform an encoding operation based on the feedback information. Therefore, the point cloud content providing system can efficiently process necessary data (e.g., point cloud data corresponding to the user's head position) based on the feedback information without processing (encoding/decoding) all point cloud data, and provide point cloud content to the user.
실시예들에 따라, 전송 장치(10000)는 인코더, 전송 디바이스, 전송기, 전송 시스템 등으로 호칭될 수 있으며, 수신 장치(10004)는 디코더, 수신 디바이스, 수신기, 수신 시스템 등으로 호칭될 수 있다.According to embodiments, 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.
실시예들에 따른 도 1 의 포인트 클라우드 콘텐트 제공 시스템에서 처리되는 (획득/인코딩/전송/디코딩/렌더링의 일련의 과정으로 처리되는) 포인트 클라우드 데이터는 포인트 클라우드 콘텐트 데이터 또는 포인트 클라우드 비디오 데이터라고 호칭할 수 있다. 실시예들에 따라 포인트 클라우드 콘텐트 데이터는 포인트 클라우드 데이터와 관련된 메타데이터 내지 시그널링 정보를 포함하는 개념으로 사용될 수 있다.Point cloud data processed (processed through a series of processes of acquisition/encoding/transmission/decoding/rendering) in the point cloud content providing system of FIG. 1 according to embodiments may be referred to as point cloud content data or point cloud video data. According to embodiments, point cloud content data may be used as a concept including metadata or signaling information related to point cloud data.
도 1에 도시된 포인트 클라우드 콘텐트 제공 시스템의 엘리먼트들은 하드웨어, 소프트웨어, 프로세서 및/또는 그것들의 결합등으로 구현될 수 있다.The elements of the point cloud content provision system illustrated in FIG. 1 may be implemented by hardware, software, a processor, and/or a combination thereof.
도 2는 실시예들에 따른 포인트 클라우드 콘텐트 제공 동작을 나타내는 블록도이다.FIG. 2 is a block diagram illustrating a point cloud content provision operation according to embodiments.
도 2의 블록도는 도 1에서 설명한 포인트 클라우드 콘텐트 제공 시스템의 동작을 나타낸다. 상술한 바와 같이 포인트 클라우드 콘텐트 제공 시스템은 포인트 클라우드 컴프레션 코딩(예를 들면 G-PCC)을 기반으로 포인트 클라우드 데이터를 처리할 수 있다.The block diagram of Fig. 2 illustrates the operation of the point cloud content provision system described in Fig. 1. As described above, the point cloud content provision system can process point cloud data based on point cloud compression coding (e.g., G-PCC).
실시예들에 따른 포인트 클라우드 콘텐트 제공 시스템(예를 들면 포인트 클라우드 전송 장치(10000) 또는 포인트 클라우드 비디오 획득부(10001))은 포인트 클라우드 비디오를 획득할 수 있다(20000). 포인트 클라우드 비디오는 3차원 공간을 표현하는 좌표계에 속한 포인트 클라우드로 표현된다. 실시예들에 따른 포인트 클라우드 비디오는 Ply (Polygon File format or the Stanford Triangle format) 파일을 포함할 수 있다. 포인트 클라우드 비디오가 하나 또는 그 이상의 프레임들을 갖는 경우, 획득한 포인트 클라우드 비디오는 하나 또는 그 이상의 Ply 파일들을 포함할 수 있다. Ply 파일은 포인트의 지오메트리(Geometry) 및/또는 어트리뷰트(Attribute)와 같은 포인트 클라우드 데이터를 포함한다. 지오메트리는 포인트들의 포지션들을 포함한다. 각 포인트의 포지션은 3차원 좌표계(예를 들면 XYZ축들로 이루어진 좌표계 등)를 나타내는 파라미터들(예를 들면 X축, Y축, Z축 각각의 값)로 표현될 수 있다. 어트리뷰트는 포인트들의 어트리뷰트들(예를 들면, 각 포인트의 텍스쳐 정보, 색상(YCbCr 또는 RGB), 반사율(r), 투명도 등)을 포함한다. 하나의 포인트는 하나 또는 그 이상의 어트리뷰트들(또는 속성들)을 가진다. 예를 들어 하나의 포인트는 하나의 색상인 어트리뷰트를 가질 수도 있고, 색상 및 반사율인 두 개의 어트리뷰트들을 가질 수도 있다. 실시예들에 따라, 지오메트리는 포지션들, 지오메트리 정보, 지오메트리 데이터 등으로 호칭 가능하며, 어트리뷰트는 어트리뷰트들, 어트리뷰트 정보, 어트리뷰트 데이터 등으로 호칭할 수 있다. 또한 포인트 클라우드 콘텐트 제공 시스템(예를 들면 포인트 클라우드 전송 장치(10000) 또는 포인트 클라우드 비디오 획득부(10001))은 포인트 클라우드 비디오의 획득 과정과 관련된 정보(예를 들면 깊이 정보, 색상 정보 등)로부터 포인트 클라우드 데이터를 확보할 수 있다.A point cloud content providing system according to embodiments (e.g., a point cloud transmission device (10000) or a point cloud video acquisition unit (10001)) can acquire a point cloud video (20000). The point cloud video is expressed as a point cloud belonging to a coordinate system representing a three-dimensional space. The point cloud video according to embodiments can include a Ply (Polygon File format or the Stanford Triangle format) file. If the point cloud video has one or more frames, the acquired point cloud video can include one or more Ply files. The Ply file includes point cloud data such as the geometry and/or attributes of points. The geometry includes the positions of points. The position of each point can be expressed as parameters (e.g., values of each of the X-axis, Y-axis, and Z-axis) representing a three-dimensional coordinate system (e.g., a coordinate system composed of XYZ axes). Attributes include attributes of points (e.g., texture information of each point, color (YCbCr or RGB), reflectance (r), transparency, etc.). One point has one or more attributes (or properties). For example, one point may have one attribute of color, or two attributes of color and reflectance. According to embodiments, geometry may be referred to as positions, geometry information, geometry data, etc., and attributes may be referred to as attributes, attribute information, attribute data, etc. In addition, a point cloud content providing system (e.g., a point cloud transmission device (10000) or a point cloud video acquisition unit (10001)) may obtain point cloud data from information related to the acquisition process of a point cloud video (e.g., depth information, color information, etc.).
실시예들에 따른 포인트 클라우드 콘텐트 제공 시스템(예를 들면 전송 장치(10000) 또는 포인트 클라우드 비디오 인코더(10002))은 포인트 클라우드 데이터를 인코딩할 수 있다(20001). 포인트 클라우드 콘텐트 제공 시스템은 포인트 클라우드 컴프레션 코딩을 기반으로 포인트 클라우드 데이터를 인코딩할 수 있다. 상술한 바와 같이 포인트 클라우드 데이터는 포인트의 지오메트리 및 어트리뷰트를 포함할 수 있다. 따라서 포인트 클라우드 콘텐트 제공 시스템은 지오메트리를 인코딩하는 지오메트리 인코딩을 수행하여 지오메트리 비트스트림을 출력할 수 있다. 포인트 클라우드 콘텐트 제공 시스템은 어트리뷰트를 인코딩하는 어트리뷰트 인코딩을 수행하여 어트리뷰트 비트스트림을 출력할 수 있다. 실시예들에 따라 포인트 클라우드 콘텐트 제공 시스템은 지오메트리 인코딩에 기초하여 어트리뷰트 인코딩을 수행할 수 있다. 실시예들에 따른 지오메트리 비트스트림 및 어트리뷰트 비트스트림은 멀티플렉싱되어 하나의 비트스트림으로 출력될 수 있다. 실시예들에 따른 비트스트림은 지오메트리 인코딩 및 어트리뷰트 인코딩과 관련된 시그널링 정보를 더 포함할 수 있다.A point cloud content providing system according to embodiments (e.g., a transmission device (10000) or a point cloud video encoder (10002)) can encode point cloud data (20001). The point cloud content providing system can encode point cloud data based on point cloud compression coding. As described above, point cloud data can include geometry and attributes of points. Therefore, the point cloud content providing system can perform geometry encoding to encode geometry and output a geometry bitstream. The point cloud content providing system can perform attribute encoding to encode attributes and output an attribute bitstream. According to embodiments, the point cloud content providing system can perform attribute encoding based on geometry encoding. The geometry bitstream and the attribute bitstream according to embodiments can be multiplexed and output as a single bitstream. A bitstream according to embodiments may further include signaling information related to geometry encoding and attribute encoding.
실시예들에 따른 포인트 클라우드 콘텐트 제공 시스템(예를 들면 전송 장치(10000) 또는 트랜스미터(10003))는 인코딩된 포인트 클라우드 데이터를 전송할 수 있다(20002). 도1에서 설명한 바와 같이 인코딩된 포인트 클라우드 데이터는 지오메트리 비트스트림, 어트리뷰트 비트스트림으로 표현될 수 있다. 또한 인코딩된 포인트 클라우드 데이터는 포인트 클라우드 데이터의 인코딩과 관련된 시그널링 정보(예를 들면 지오메트리 인코딩 및 어트리뷰트 인코딩과 관련된 시그널링 정보)과 함께 비트스트림의 형태로 전송될 수 있다. 또한 포인트 클라우드 콘텐트 제공 시스템은 인코딩된 포인트 클라우드 데이터를 전송하는 비트스트림을 인캡슐레이션 하여 파일 또는 세그먼트의 형태로 전송할 수 있다.A point cloud content providing system according to embodiments (e.g., a transmission device (10000) or a transmitter (10003)) can transmit encoded point cloud data (20002). As described in FIG. 1, the encoded point cloud data can be expressed as a geometry bitstream and an attribute bitstream. In addition, the encoded point cloud data can be transmitted in the form of a bitstream together with signaling information related to encoding of the point cloud data (e.g., signaling information related to geometry encoding and attribute encoding). In addition, the point cloud content providing system can encapsulate a bitstream that transmits the encoded point cloud data and transmit it in the form of a file or segment.
실시예들에 따른 포인트 클라우드 콘텐트 제공 시스템(예를 들면 수신 장치(10004) 또는 리시버(10005))은 인코딩된 포인트 클라우드 데이터를 포함하는 비트스트림을 수신할 수 있다. 또한 포인트 클라우드 콘텐트 제공 시스템(예를 들면 수신 장치(10004) 또는 리시버(10005))은 비트스트림을 디멀티플렉싱할 수 있다. A point cloud content providing system according to embodiments (e.g., a receiving device (10004) or a receiver (10005)) can receive a bitstream including encoded point cloud data. In addition, the point cloud content providing system (e.g., a receiving device (10004) or a receiver (10005)) can demultiplex the bitstream.
포인트 클라우드 콘텐트 제공 시스템(예를 들면 수신 장치(10004) 또는 포인트 클라우드 비디오 디코더(10005))은 비트스트림으로 전송되는 인코딩된 포인트 클라우드 데이터(예를 들면 지오메트리 비트스트림, 어트리뷰트 비트스트림)을 디코딩할 수 있다. 포인트 클라우드 콘텐트 제공 시스템(예를 들면 수신 장치(10004) 또는 포인트 클라우드 비디오 디코더(10005))은 비트스트림에 포함된 포인트 클라우드 비디오 데이터의 인코딩과 관련된 시그널링 정보를 기반으로 포인트 클라우드 비디오 데이터를 디코딩할 수 있다. 포인트 클라우드 콘텐트 제공 시스템(예를 들면 수신 장치(10004) 또는 포인트 클라우드 비디오 디코더(10005))은 지오메트리 비트스트림을 디코딩하여 포인트들의 포지션들(지오메트리)을 복원할 수 있다. 포인트 클라우드 콘텐트 제공 시스템은 복원한 지오메트리를 기반으로 어트리뷰트 비트스트림을 디코딩하여 포인트들의 어트리뷰트들을 복원할 수 있다. 포인트 클라우드 콘텐트 제공 시스템(예를 들면 수신 장치(10004) 또는 포인트 클라우드 비디오 디코더(10005))은 복원된 지오메트리에 따른 포지션들 및 디코딩된 어트리뷰트를 기반으로 포인트 클라우드 비디오를 복원할 수 있다.A point cloud content providing system (e.g., a receiving device (10004) or a point cloud video decoder (10005)) can decode encoded point cloud data (e.g., a geometry bitstream, an attribute bitstream) transmitted as a bitstream. The point cloud content providing system (e.g., a receiving device (10004) or a point cloud video decoder (10005)) can decode the point cloud video data based on signaling information related to encoding of the point cloud video data included in the bitstream. The point cloud content providing system (e.g., a receiving device (10004) or a point cloud video decoder (10005)) can decode the geometry bitstream to restore positions (geometry) of points. The point cloud content providing system can decode the attribute bitstream based on the restored geometry to restore attributes of points. A point cloud content provision system (e.g., a receiving device (10004) or a point cloud video decoder (10005)) can reconstruct a point cloud video based on positions and decoded attributes according to the reconstructed geometry.
실시예들에 따른 포인트 클라우드 콘텐트 제공 시스템(예를 들면 수신 장치(10004) 또는 렌더러(10007))은 디코딩된 포인트 클라우드 데이터를 렌더링할 수 있다(20004). 포인트 클라우드 콘텐트 제공 시스템(예를 들면 수신 장치(10004) 또는 렌더러(10007))은 디코딩 과정을 통해 디코딩된 지오메트리 및 어트리뷰트들을 다양한 렌더링 방식에 따라 렌더링 할 수 있다. 포인트 클라우드 콘텐트의 포인트들은 일정 두께를 갖는 정점, 해당 정점 위치를 중앙으로 하는 특정 최소 크기를 갖는 정육면체, 또는 정점 위치를 중앙으로 하는 원 등으로 렌더링 될 수도 있다. 렌더링된 포인트 클라우드 콘텐트의 전부 또는 일부 영역은 디스플레이 (예를 들면 VR/AR 디스플레이, 일반 디스플레이 등)을 통해 사용자에게 제공된다.A point cloud content providing system (e.g., a receiving device (10004) or a renderer (10007)) according to embodiments can render decoded point cloud data (20004). The point cloud content providing system (e.g., a receiving device (10004) or a renderer (10007)) can render the geometry and attributes decoded through the decoding process according to various rendering methods. Points of the point cloud content may be rendered as vertices having a certain thickness, cubes having a certain minimum size centered on the vertex position, or circles centered on the vertex position. All or a portion of the rendered point cloud content is provided to a user through a display (e.g., a VR/AR display, a general display, etc.).
실시예들에 따른 포인트 클라우드 콘텐트 제공 시스템(예를 들면 수신 장치(10004))는 피드백 정보를 확보할 수 있다(20005). 포인트 클라우드 콘텐트 제공 시스템은 피드백 정보를 기반으로 포인트 클라우드 데이터를 인코딩 및/또는 디코딩할 수 있다. 실시예들에 따른 피드백 정보 및 포인트 클라우드 콘텐트 제공 시스템의 동작은 도 1에서 설명한 피드백 정보 및 동작과 동일하므로 구체적인 설명은 생략한다.A point cloud content provision system according to embodiments (e.g., a receiving device (10004)) can obtain feedback information (20005). The point cloud content provision system can encode and/or decode point cloud data based on the feedback information. The feedback information and the operation of the point cloud content provision system according to embodiments are identical to the feedback information and operation described in FIG. 1, and therefore, a detailed description thereof will be omitted.
도 3은 실시예들에 따른 포인트 클라우드 인코더(Point Cloud Encoder)의 예시를 나타낸다.FIG. 3 illustrates an example of a point cloud encoder according to embodiments.
도 3은 도 1의 포인트 클라우드 비디오 인코더(10002)의 예시를 나타낸다. 포인트 클라우드 인코더는 네트워크의 상황 혹은 애플리케이션 등에 따라 포인트 클라우드 콘텐트의 질(예를 들어 무손실-lossless, 손실-lossy, near-lossless)을 조절하기 위하여 포인트 클라우드 데이터(예를 들면 포인트들의 포지션들 및/또는 어트리뷰트들)을 재구성하고 인코딩 동작을 수행한다. 포인트 클라우드 콘텐트의 전체 사이즈가 큰 경우(예를 들어 30 fps의 경우 60 Gbps인 포인트 클라우드 콘텐트) 포인트 클라우드 콘텐트 제공 시스템은 해당 콘텐트를 리얼 타임 스트리밍하지 못할 수 있다. 따라서 포인트 클라우드 콘텐트 제공 시스템은 네트워크 환경등에 맞춰 제공하기 위하여 최대 타깃 비트율(bitrate)을 기반으로 포인트 클라우드 콘텐트를 재구성할 수 있다.FIG. 3 illustrates an example of a point cloud video encoder (10002) of FIG. 1. The point cloud encoder reconstructs point cloud data (e.g., positions and/or attributes of points) and performs an encoding operation to adjust the quality of point cloud content (e.g., lossless, lossy, near-lossless) depending on network conditions or applications. If the total size of the point cloud content is large (e.g., point cloud content of 60 Gbps at 30 fps), the point cloud content provision system may not be able to stream the content in real time. Therefore, the point cloud content provision system can reconstruct the point cloud content based on the maximum target bitrate in order to provide it according to the network environment, etc.
도 1 내지 도2 에서 설명한 바와 같이 포인트 클라우드 인코더는 지오메트리 인코딩 및 어트리뷰트 인코딩을 수행할 수 있다. 지오메트리 인코딩은 어트리뷰트 인코딩보다 먼저 수행된다.As described in FIGS. 1 and 2, the point cloud encoder can perform geometry encoding and attribute encoding. Geometry encoding is performed before attribute encoding.
실시예들에 따른 포인트 클라우드 인코더는 좌표계 변환부(Transformation Coordinates, 30000), 양자화부(Quantize and Remove Points (Voxelize), 30001), 옥트리 분석부(Analyze Octree, 30002), 서페이스 어프록시메이션 분석부(Analyze Surface Approximation, 30003), 아리스메틱 인코더(Arithmetic Encode, 30004), 지오메트리 리컨스트럭션부(Reconstruct Geometry, 30005), 컬러 변환부(Transform Colors, 30006), 어트리뷰트 변환부(Transfer Attributes, 30007), RAHT 변환부(30008), LOD생성부(Generated LOD, 30009), 리프팅 변환부(Lifting)(30010), 계수 양자화부(Quantize Coefficients, 30011) 및/또는 아리스메틱 인코더(Arithmetic Encode, 30012)를 포함한다. 도 3의 포인트 클라우드 인코더에서 좌표계 변환부(30000), 양자화부(30001), 옥트리 분석부(30002), 서페이스 어프록시메이션 분석부(30003), 아리스메틱 인코더(30004), 지오메트리 리컨스트럭션부(30005)를 그룹핑하여 지오메트리 인코더로 칭할 수 있다. 그리고, 컬러 변환부(30006), 어트리뷰트 변환부(30007), RAHT 변환부(30008), LOD생성부(30009), 리프팅 변환부(30010), 계수 양자화부(30011) 및/또는 아리스메틱 인코더(30012)를 그룹핑하여 어트리뷰트 인코더로 칭할 수 있다.The point cloud encoder according to the embodiments includes a coordinate system transformation unit (Transformation Coordinates, 30000), a quantization unit (Quantize and Remove Points (Voxelize), 30001), an octree analysis unit (Analyze Octree, 30002), a surface approximation analysis unit (Analyze Surface Approximation, 30003), an arithmetic encoder (Arithmetic Encode, 30004), a geometry reconstruction unit (Reconstruct Geometry, 30005), a color transformation unit (Transform Colors, 30006), an attribute transformation unit (Transfer Attributes, 30007), a RAHT transformation unit (30008), a LOD generation unit (Generated LOD, 30009), a lifting transformation unit (Lifting) (30010), and a coefficient quantization unit (Quantize Coefficients, 30011) and/or an arithmetic encoder (30012). In the point cloud encoder of FIG. 3, the coordinate system transformation unit (30000), the quantization unit (30001), the octree analysis unit (30002), the surface approximation analysis unit (30003), the arithmetic encoder (30004), and the geometry reconstruction unit (30005) can be grouped and referred to as a geometry encoder. In addition, the color conversion unit (30006), attribute conversion unit (30007), RAHT conversion unit (30008), LOD generation unit (30009), lifting conversion unit (30010), coefficient quantization unit (30011) and/or arithmetic encoder (30012) can be grouped and referred to as an attribute encoder.
좌표계 변환부(30000), 양자화부(30001), 옥트리 분석부(30002), 서페이스 어프록시메이션 분석부(30003), 아리스메틱 인코더(30004), 및 지오메트리 리컨스트럭션부(30005)는 지오메트리 인코딩을 수행할 수 있다. 실시예들에 따른 지오메트리 인코딩은 옥트리 지오메트리 코딩, 다이렉트 코딩(direct coding), 트라이숩 지오메트리 인코딩(trisoup geometry encoding) 및 엔트로피 인코딩을 포함할 수 있다. 다이렉트 코딩 및 트라이숩 지오메트리 인코딩은 선택적으로 또는 조합으로 적용된다. 또한 지오메트리 인코딩은 위의 예시에 국한되지 않는다.The coordinate system transformation unit (30000), the quantization unit (30001), the octree analysis unit (30002), the surface approximation analysis unit (30003), the arithmetic encoder (30004), and the geometry reconstruction unit (30005) can perform geometry encoding. The geometry encoding according to the embodiments can include octree geometry coding, direct coding, trisoup geometry encoding, and entropy encoding. Direct coding and trisoup geometry encoding are applied selectively or in combination. In addition, the geometry encoding is not limited to the above examples.
도면에 도시된 바와 같이, 실시예들에 따른 좌표계 변환부(30000)는 포지션들을 수신하여 좌표계(coordinate)로 변환한다. 예를 들어, 포지션들은 3차원 공간 (예를 들면XYZ 좌표계로 표현되는 3차원 공간 등)의 위치 정보로 변환될 수 있다. 실시예들에 따른 3차원 공간의 위치 정보는 지오메트리 정보로 지칭될 수 있다.As illustrated in the drawing, a coordinate system conversion unit (30000) according to embodiments receives positions and converts them into coordinates. For example, the positions may be converted into location information of a three-dimensional space (e.g., a three-dimensional space expressed in an XYZ coordinate system, etc.). The location information of the three-dimensional space according to embodiments may be referred to as geometry information.
실시예들에 따른 양자화부(30001)는 지오메트리를 양자화한다. 예를 들어, 양자화부(30001)는 전체 포인트들의 최소 위치 값(예를 들면 X축, Y축, Z축 에 대하여 각축상의 최소 값)을 기반으로 포인트들을 양자화 할 수 있다. 양자화부(30001)는 최소 위치 값과 각 포인트의 위치 값의 차이에 기 설정된 양자 스케일(quatization scale) 값을 곱한 뒤, 내림 또는 올림을 수행하여 가장 가까운 정수 값을 찾는 양자화 동작을 수행한다. 따라서 하나 또는 그 이상의 포인트들은 동일한 양자화된 포지션 (또는 포지션 값)을 가질 수 있다. 실시예들에 따른 양자화부(30001)는 양자화된 포인트들을 재구성하기 위해 양자화된 포지션들을 기반으로 복셀화(voxelization)를 수행한다. 2차원 이미지/비디오 정보를 포함하는 최소 단위는 픽셀(pixel)과 같이, 실시예들에 따른 포인트 클라우드 콘텐트(또는 3차원 포인트 클라우드 비디오)의 포인트들은 하나 또는 그 이상의 복셀(voxel)들에 포함될 수 있다. 복셀은 볼륨(Volume)과 픽셀(Pixel)의 조합어로서, 3차원 공간을 표현하는 축들(예를 들면 X축, Y축, Z축)을 기반으로 3차원 공간을 유닛(unit=1.0) 단위로 나누었을 때 발생하는 3차원 큐빅 공간을 의미한다. 양자화부(40001)는 3차원 공간의 포인트들의 그룹들을 복셀들로 매칭할 수 있다. 실시예들에 따라 하나의 복셀은 하나의 포인트만 포함할 수 있다. 실시예들에 따라 하나의 복셀은 하나 또는 그 이상의 포인트들을 포함할 수 있다. 또한 하나의 복셀을 하나의 포인트로 표현하기 위하여, 하나의 복셀에 포함된 하나 또는 그 이상의 포인트들의 포지션들을 기반으로 해당 복셀의 중앙점(center)의 포지션을 설정할 수 있다. 이 경우 하나의 복셀에 포함된 모든 포지션들의 어트리뷰트들은 통합되어(combined) 해당 복셀에 할당될(assigned)수 있다.A quantization unit (30001) according to embodiments quantizes geometry. For example, the quantization unit (30001) may quantize points based on the minimum position value of all points (e.g., the minimum value on each axis for the X-axis, Y-axis, and Z-axis). The quantization unit (30001) performs a quantization operation of multiplying the difference between the minimum position value and the position value of each point by a preset quantization scale value, and then rounding down or up to find the closest integer value. Accordingly, one or more points may have the same quantized position (or position value). The quantization unit (30001) according to embodiments performs voxelization based on the quantized positions to reconstruct the quantized points. The minimum unit containing two-dimensional image/video information is a pixel, and points of point cloud content (or three-dimensional point cloud video) according to embodiments may be included in one or more voxels. A voxel is a combination of a volume and a pixel, and refers to a three-dimensional cubic space generated when a three-dimensional space is divided into units (unit=1.0) based on axes representing the three-dimensional space (e.g., X-axis, Y-axis, Z-axis). The quantization unit (40001) may match groups of points in the three-dimensional space to voxels. According to embodiments, one voxel may include only one point. According to embodiments, one voxel may include one or more points. In addition, in order to express one voxel as one point, the position of the center of the voxel may be set based on the positions of one or more points included in one voxel. In this case, the attributes of all positions contained in one voxel can be combined and assigned to the voxel.
실시예들에 따른 옥트리 분석부(30002)는 복셀을 옥트리(octree) 구조로 나타내기 위한 옥트리 지오메트리 코딩(또는 옥트리 코딩)을 수행한다. 옥트리 구조는 팔진 트리 구조에 기반하여 복셀에 매칭된 포인트들을 표현한다.The octree analysis unit (30002) according to the embodiments performs octree geometry coding (or octree coding) to represent voxels in an octree structure. The octree structure represents points matched to voxels based on an octree structure.
실시예들에 따른 서페이스 어프록시메이션 분석부(30003)는 옥트리를 분석하고, 근사화할 수 있다. 실시예들에 따른 옥트리 분석 및 근사화는 효율적으로 옥트리 및 복셀화를 제공하기 위해서 다수의 포인트들을 포함하는 영역에 대해 복셀화하기 위해 분석하는 과정이다.The surface approximation analysis unit (30003) according to the embodiments can analyze and approximate an octree. The octree analysis and approximation according to the embodiments is a process of analyzing and voxelizing an area including a large number of points to efficiently provide an octree and voxelization.
실시예들에 따른 아리스메틱 인코더(30004)는 옥트리 및/또는 근사화된 옥트리를 엔트로피 인코딩한다. 예를 들어, 인코딩 방식은 아리스메틱(Arithmetic) 인코딩 방법을 포함한다. 인코딩의 결과로 지오메트리 비트스트림이 생성된다.An arithmetic encoder (30004) according to embodiments entropy encodes an octree and/or an approximated octree. For example, the encoding method includes an arithmetic encoding method. The encoding results in a geometry bitstream.
컬러 변환부(30006), 어트리뷰트 변환부(30007), RAHT 변환부(30008), LOD생성부(30009), 리프팅 변환부(30010), 계수 양자화부(30011) 및/또는 아리스메틱 인코더(30012)는 어트리뷰트 인코딩을 수행한다. 상술한 바와 같이 하나의 포인트는 하나 또는 그 이상의 어트리뷰트들을 가질 수 있다. 실시예들에 따른 어트리뷰트 인코딩은 하나의 포인트가 갖는 어트리뷰트들에 대해 동일하게 적용된다. 다만, 하나의 어트리뷰트(예를 들면 색상)이 하나 또는 그 이상의 요소들을 포함하는 경우, 각 요소마다 독립적인 어트리뷰트 인코딩이 적용된다. 실시예들에 따른 어트리뷰트 인코딩은 컬러 변환 코딩, 어트리뷰트 변환 코딩, RAHT(Region Adaptive Hierarchial Transform) 코딩, 예측 변환(Interpolaration-based hierarchical nearest-neighbour prediction-Prediction Transform) 코딩 및 리프팅 변환 (interpolation-based hierarchical nearest-neighbour prediction with an update/lifting step (Lifting Transform)) 코딩을 포함할 수 있다. 포인트 클라우드 콘텐트에 따라 상술한 RAHT 코딩, 예측 변환 코딩 및 리프팅 변환 코딩은 선택적으로 사용되거나, 하나 또는 그 이상의 코딩들의 조합이 사용될 수 있다. 또한 실시예들에 따른 어트리뷰트 인코딩은 상술한 예시에 국한되는 것은 아니다.The color conversion unit (30006), the attribute conversion unit (30007), the RAHT conversion unit (30008), the LOD generation unit (30009), the lifting conversion unit (30010), the coefficient quantization unit (30011) and/or the arithmetic encoder (30012) perform attribute encoding. As described above, one point may have one or more attributes. Attribute encoding according to embodiments is applied equally to the attributes of one point. However, when one attribute (e.g., color) includes one or more elements, independent attribute encoding is applied to each element. Attribute encoding according to embodiments may include color transform coding, attribute transform coding, RAHT (Region Adaptive Hierarchial Transform) coding, Interpolarization-based hierarchical nearest-neighbor prediction-Prediction Transform) coding, and lifting transform (interpolation-based hierarchical nearest-neighbor prediction with an update/lifting step (Lifting Transform)) coding. Depending on the point cloud content, the above-described RAHT coding, prediction transform coding, and lifting transform coding may be selectively used, or a combination of one or more codings may be used. In addition, attribute encoding according to embodiments is not limited to the above-described examples.
실시예들에 따른 컬러 변환부(30006)는 어트리뷰트들에 포함된 컬러 값(또는 텍스쳐)을 변환하는 컬러 변환 코딩을 수행한다. 예를 들어, 컬러 변환부(30006)는 색상 정보의 포맷을 변환(예를 들어 RGB에서 YCbCr로 변환)할 수 있다. 실시예들에 따른 컬러 변환부(30006)의 동작은 어트리뷰트들에 포함된 컬러값에 따라 옵셔널(optional)하게 적용될 수 있다.The color conversion unit (30006) according to the embodiments performs color conversion coding to convert color values (or textures) included in attributes. For example, the color conversion unit (30006) may convert the format of color information (e.g., convert from RGB to YCbCr). The operation of the color conversion unit (30006) according to the embodiments may be optionally applied depending on the color values included in the attributes.
실시예들에 따른 지오메트리 리컨스트럭션부(30005)는 옥트리 및/또는 근사화된 옥트리를 재구성(디컴프레션)한다. 지오메트리 리컨스트럭션부(30005)는 포인트들의 분포를 분석한 결과에 기반하여 옥트리/복셀을 재구성한다. 재구성된 옥트리/복셀은 재구성된 지오메트리(또는 복원된 지오메트리)로 호칭될 수 있다.The geometry reconstruction unit (30005) according to the embodiments reconstructs (decompresses) an octree and/or an approximated octree. The geometry reconstruction unit (30005) reconstructs an octree/voxel based on the results of analyzing the distribution of points. The reconstructed octree/voxel may be referred to as a reconstructed geometry (or restored geometry).
실시예들에 따른 어트리뷰트 변환부(30007)는 지오메트리 인코딩이 수행되지 않은 포지션들 및/또는 재구성된 지오메트리를 기반으로 어트리뷰트들을 변환하는 어트리뷰트 변환을 수행한다. 상술한 바와 같이 어트리뷰트들은 지오메트리에 종속되므로, 어트리뷰트 변환부(30007)는 재구성된 지오메트리 정보를 기반으로 어트리뷰트들을 변환할 수 있다. 예를 들어, 어트리뷰트 변환부(30007)는 복셀에 포함된 포인트의 포지션값을 기반으로 그 포지션의 포인트가 가지는 어트리뷰트를 변환할 수 있다. 상술한 바와 같이 하나의 복셀에 포함된 하나 또는 그 이상의 포인트들의 포지션들을 기반으로 해당 복셀의 중앙점의 포지션이 설정된 경우, 어트리뷰트 변환부(30007)는 하나 또는 그 이상의 포인트들의 어트리뷰트들을 변환한다. 트라이숩 지오메트리 인코딩이 수행된 경우, 어트리뷰트 변환부(30007)는 트라이숩 지오메트리 인코딩을 기반으로 어트리뷰트들을 변환할 수 있다. The attribute conversion unit (30007) according to the embodiments performs attribute conversion that converts attributes based on positions for which geometry encoding has not been performed and/or reconstructed geometry. As described above, since the attributes are dependent on the geometry, the attribute conversion unit (30007) can convert the attributes based on the reconstructed geometry information. For example, the attribute conversion unit (30007) can convert the attribute of a point at a position based on the position value of the point included in the voxel. As described above, when the position of the center point of a voxel is set based on the positions of one or more points included in the voxel, the attribute conversion unit (30007) converts the attributes of one or more points. When try-soup geometry encoding is performed, the attribute conversion unit (30007) can convert attributes based on the try-soup geometry encoding.
어트리뷰트 변환부(30007)는 각 복셀의 중앙점의 포지션(또는 포지션 값)으로부터 특정 위치/반경 내에 이웃하고 있는 포인트들의 어트리뷰트들 또는 어트리뷰트 값들(예를 들면 각 포인트의 색상, 또는 반사율 등)의 평균값을 계산하여 어트리뷰트 변환을 수행할 수 있다. 어트리뷰트 변환부(30007)는 평균값 계산시 중앙점으로부터 각 포인트까지의 거리에 따른 가중치를 적용할 수 있다. 따라서 각 복셀은 포지션과 계산된 어트리뷰트(또는 어트리뷰트 값)을 갖게 된다. The attribute transformation unit (30007) can perform attribute transformation by calculating the average value of the attributes or attribute values (e.g., the color or reflectance of each point) of neighboring points within a specific position/radius from the position (or position value) of the center point of each voxel. The attribute transformation unit (30007) can apply a weight according to the distance from the center point to each point when calculating the average value. Accordingly, each voxel has a position and a calculated attribute (or attribute value).
어트리뷰트 변환부(30007)는 K-D 트리 또는 몰톤 코드를 기반으로 각 복셀의 중앙점의 포지션으로부터 특정 위치/반경 내에 존재하는 이웃 포인트들을 탐색할 수 있다. K-D 트리는 이진 탐색 트리(binary search tree)로 빠르게 최단 이웃점 탐색(Nearest Neighbor Search-NNS)이 가능하도록 point들을 위치 기반으로 관리할 수 있는 자료 구조를 지원한다. 몰톤 코드는 모든 포인트들의 3차원 포지션을 나타내는 좌표값(예를 들면 (x, y, z))을 비트값으로 나타내고, 비트들을 믹싱하여 생성된다. 예를 들어 포인트의 포지션을 나타내는 좌표값이 (5, 9, 1)일 경우 좌표값의 비트 값은 (0101, 1001, 0001)이다. 비트 값을 z, y, x 순서로 비트 인덱스에 맞춰 믹싱하면 010001000111이다. 이 값을 10진수로 나타내면 1095이 된다. 즉, 좌표값이 (5, 9, 1)인 포인트의 몰톤 코드 값은 1095이다. 어트리뷰트 변환부(30007)는 몰튼 코드 값을 기준으로 포인트들을 정렬하고depth-first traversal 과정을 통해 최단 이웃점 탐색(NNS)을 할 수 있다. 어트리뷰트 변환 동작 이후, 어트리뷰트 코딩을 위한 다른 변환 과정에서도 최단 이웃점 탐색(NNS)이 필요한 경우, K-D 트리 또는 몰톤 코드가 활용된다.The attribute transformation unit (30007) can search for neighboring points within a specific position/radius from the position of the center point of each voxel based on the K-D tree or the Moulton code. The K-D tree is a binary search tree that supports a data structure that can manage points based on their positions to enable fast nearest neighbor search (NNS). The Moulton code represents the coordinate values (e.g. (x, y, z)) indicating the 3D positions of all points as bit values and is generated by mixing the bits. For example, if the coordinate values indicating the position of a point are (5, 9, 1), the bit values of the coordinate values are (0101, 1001, 0001). If the bit values are mixed in the order of z, y, and x according to the bit index, it is 010001000111. If this value is expressed in decimal, it is 1095. That is, the Moulton code value of the point with coordinate values (5, 9, 1) is 1095. The attribute transformation unit (30007) can sort points based on the Moulton code value and perform nearest neighbor search (NNS) through a depth-first traversal process. After the attribute transformation operation, if nearest neighbor search (NNS) is also required in other transformation processes for attribute coding, the K-D tree or Moulton code is utilized.
도면에 도시된 바와 같이 변환된 어트리뷰트들은 RAHT 변환부(30008) 및/또는 LOD 생성부(30009)로 입력된다.As shown in the drawing, the converted attributes are input to the RAHT conversion unit (30008) and/or the LOD generation unit (30009).
실시예들에 따른 RAHT 변환부(30008)는 재구성된 지오메트리 정보에 기반하여 어트리뷰트 정보를 예측하는 RAHT코딩을 수행한다. 예를 들어, RAHT 변환부(30008)는 옥트리의 하위 레벨에 있는 노드와 연관된 어트리뷰트 정보에 기반하여 옥트리의 상위 레벨에 있는 노드의 어트리뷰트 정보를 예측할 수 있다. The RAHT transform unit (30008) according to the embodiments performs RAHT coding to predict attribute information based on reconstructed geometry information. For example, the RAHT transform unit (30008) can predict attribute information of a node at an upper level of an octree based on attribute information associated with a node at a lower level of the octree.
실시예들에 따른 LOD생성부(30009)는 예측 변환 코딩을 수행하기 위하여LOD(Level of Detail)를 생성한다. 실시예들에 따른 LOD는 포인트 클라우드 콘텐트의 디테일을 나타내는 정도로서, LOD 값이 작을 수록 포인트 클라우드 콘텐트의 디테일이 떨어지고, LOD 값이 클 수록 포인트 클라우드 콘텐트의 디테일이 높음을 나타낸다. 포인트들을 LOD에 따라 분류될 수 있다. The LOD generation unit (30009) according to the embodiments generates a LOD (Level of Detail) to perform predictive transformation coding. The LOD according to the embodiments represents the level of detail of point cloud content. A smaller LOD value indicates lower detail of point cloud content, and a larger LOD value indicates higher detail of point cloud content. Points can be classified according to LOD.
실시예들에 따른 리프팅 변환부(30010)는 포인트 클라우드의 어트리뷰트들을 가중치에 기반하여 변환하는 리프팅 변환 코딩을 수행한다. 상술한 바와 같이 리프팅 변환 코딩은 선택적으로 적용될 수 있다.The lifting transformation unit (30010) according to the embodiments performs lifting transformation coding that transforms attributes of a point cloud based on weights. As described above, lifting transformation coding may be applied selectively.
실시예들에 따른 계수 양자화부(30011)은 어트리뷰트 코딩된 어트리뷰트들을 계수에 기반하여 양자화한다.The coefficient quantization unit (30011) according to the embodiments quantizes attribute-coded attributes based on coefficients.
실시예들에 따른 아리스메틱 인코더(30012)는 양자화된 어트리뷰트들을 아리스메틱 코딩에 기반하여 인코딩한다.An arithmetic encoder (30012) according to embodiments encodes quantized attributes based on arithmetic coding.
도 3의 포인트 클라우드 인코더의 엘레멘트들은 도면에 도시되지 않았으나 포인트 클라우드 제공 장치에 포함된 하나 또는 그 이상의 메모리들과 통신가능하도록 설정된 하나 또는 그 이상의 프로세서들 또는 집적 회로들(integrated circuits)을 포함하는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 구현될 수 있다. 하나 또는 그 이상의 프로세서들은 상술한 도 3의 포인트 클라우드 인코더의 엘레멘트들의 동작들 및/또는 기능들 중 적어도 어느 하나 이상을 수행할 수 있다. 또한 하나 또는 그 이상의 프로세서들은 도 3의 포인트 클라우드 인코더의 엘레멘트들의 동작들 및/또는 기능들을 수행하기 위한 소프트웨어 프로그램들 및/또는 인스트럭션들의 세트를 동작하거나 실행할 수 있다. 실시예들에 따른 하나 또는 그 이상의 메모리들은 하이 스피드 랜덤 억세스 메모리를 포함할 수도 있고, 비휘발성 메모리(예를 들면 하나 또는 그 이상의 마그네틱 디스크 저장 디바이스들, 플래쉬 메모리 디바이스들, 또는 다른 비휘발성 솔리드 스테이트 메모리 디바이스들(Solid-state memory devices)등)를 포함할 수 있다.The elements of the point cloud encoder of FIG. 3 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, although not shown in the drawing. The one or more processors may perform at least one or more of the operations and/or functions of the elements of the point cloud encoder of FIG. 3 described above. Furthermore, the one or more processors may operate or execute a set of software programs and/or instructions for performing the operations and/or functions of the elements of the point cloud encoder of FIG. 3. The one or more memories according to embodiments may include high-speed random access memory, or may include non-volatile memory (e.g., one or more magnetic disk storage devices, flash memory devices, or other non-volatile solid-state memory devices).
도 4는 실시예들에 따른 옥트리 및 오큐판시 코드 (occupancy code)의 예시를 나타낸다.Figure 4 illustrates examples of octree and occupancy codes according to embodiments.
도 1 내지 도 3에서 설명한 바와 같이 포인트 클라우드 콘텐트 제공 시스템(포인트 클라우드 비디오 인코더(10002)) 또는 포인트 클라우드 인코더(예를 들면 옥트리 분석부(30002))는 복셀의 영역 및/또는 포지션을 효율적으로 관리하기 위하여 옥트리 구조 기반의 옥트리 지오메트리 코딩(또는 옥트리 코딩)을 수행한다. As described in FIGS. 1 to 3, the point cloud content provision system (point cloud video encoder (10002)) or point cloud encoder (e.g., octree analysis unit (30002)) performs octree geometry coding (or octree coding) based on an octree structure to efficiently manage the area and/or position of a voxel.
도 4의 상단은 옥트리 구조를 나타낸다. 실시예들에 따른 포인트 클라우드 콘텐트의 3차원 공간은 좌표계의 축들(예를 들면 X축, Y축, Z축)로 표현된다. 옥트리 구조는 두 개의 극점들(0,0,0) 및 (2d, 2d, 2d) 으로 정의되는 바운딩 박스(cubical axis-aligned bounding box)를 재귀적으로 분할(reculsive subdividing)하여 생성된다. 2d는 포인트 클라우드 콘텐트(또는 포인트 클라우드 비디오)의 전체 포인트들을 감싸는 가장 작은 바운딩 박스를 구성하는 값으로 설정될 수 있다. d는 옥트리의 깊이(depth)를 나타낸다. d값은 다음의 식에 따라 결정된다. 하기 식에서 (xint n, yint n, zint n)는 양자화된 포인트들의 포지션들(또는 포지션 값들)을 나타낸다. The upper part of Fig. 4 shows an octree structure. The three-dimensional space of the point cloud content according to the embodiments is expressed by the axes of the coordinate system (e.g., X-axis, Y-axis, Z-axis). The octree structure is generated by recursively subdividing a cubical axis-aligned bounding box defined by two extreme points (0,0,0) and (2 d , 2 d , 2 d ). 2 d can be set to a value that constitutes the smallest bounding box that encloses all points of the point cloud content (or point cloud video). d represents the depth of the octree. The value of d is determined according to the following equation. In the equation below, (x int n , y int n , z int n ) represent positions (or position values) of quantized points.
도 4의 상단의 중간에 도시된 바와 같이, 분할에 따라 전체 3차원 공간은 8개의 공간들로 분할될 수 있다. 분할된 각 공간은 6개의 면들을 갖는 큐브로 표현된다. 도 4 상단의 오른쪽에 도시된 바와 같이 8개의 공간들 각각은 다시 좌표계의 축들(예를 들면 X축, Y축, Z축)을 기반으로 분할된다. 따라서 각 공간은 다시 8개의 작은 공간들로 분할된다. 분할된 작은 공간 역시 6개의 면들을 갖는 큐브로 표현된다. 이와 같은 분할 방식은 옥트리의 리프 노드(leaf node)가 복셀이 될 때까지 적용된다.As shown in the middle of the upper part of Fig. 4, the entire three-dimensional space can be divided into eight spaces according to the division. Each divided space is expressed as a cube with six faces. As shown in the upper right of Fig. 4, each of the eight spaces is again divided based on the axes of the coordinate system (e.g., X-axis, Y-axis, Z-axis). Therefore, each space is again divided into eight smaller spaces. The divided smaller spaces are also expressed as cubes with six faces. This division method is applied until the leaf nodes of the octree become voxels.
도 4의 하단은 옥트리의 오큐판시 코드를 나타낸다. 옥트리의 오큐판시 코드는 하나의 공간이 분할되어 발생되는 8개의 분할된 공간들 각각이 적어도 하나의 포인트를 포함하는지 여부를 나타내기 위해 생성된다. 따라서 하나의 오큐판시 코드는 8개의 자식 노드(child node)들로 표현된다. 각 자식 노드는 분할된 공간의 오큐판시를 나타내며, 자식 노드는 1비트의 값을 갖는다. 따라서 오큐판시 코드는 8 비트 코드로 표현된다. 즉, 자식 노드에 대응하는 공간에 적어도 하나의 포인트가 포함되어 있으면 해당 노드는 1값을 갖는다. 자식 노드에 대응하는 공간에 포인트가 포함되어 있지 않으면 (empty), 해당 노드는 0값을 갖는다. 도 4에 도시된 오큐판시 코드는 00100001이므로 8개의 자식 노드 중 3번째 자식 노드 및 8번째 자식 노드에 대응하는 공간들은 각각 적어도 하나의 포인트를 포함함을 나타낸다. 도면에 도시된 바와 같이 3번째 자식 노드 및 8번째 자식 노드는 각각 8개의 자식 노드를 가지며, 각 자식 노드는 8비트의 오큐판시 코드로 표현된다. 도면은 3번째 자식 노드의 오큐판시 코드가 10000111이고, 8번째 자식 노드의 오큐판시 코드가 01001111임을 나타낸다. 실시예들에 따른 포인트 클라우드 인코더(예를 들면 아리스메틱 인코더(30004))는 오큐판시 코드를 엔트로피 인코딩할 수 있다. 또한 압축 효율을 높이기 위해 포인트 클라우드 인코더는 오큐판시 코드를 인트라/인터 코딩할 수 있다. 실시예들에 따른 수신 장치(예를 들면 수신 장치(10004) 또는 포인트 클라우드 비디오 디코더(10006))는 오큐판시 코드를 기반으로 옥트리를 재구성한다.The bottom of Fig. 4 shows the occupancy code of the octree. The occupancy code of the octree is generated to indicate whether each of the eight partitioned spaces generated by partitioning one space contains at least one point. Therefore, one occupancy code is expressed by eight child nodes. Each child node represents the occupancy of the partitioned space, and each child node has a value of 1 bit. Therefore, the occupancy code is expressed as an 8-bit code. That is, if the space corresponding to the child node contains at least one point, the node has a value of 1. If the space corresponding to the child node does not contain a point (empty), the node has a value of 0. Since the occupancy code illustrated in Fig. 4 is 00100001, it indicates that the spaces corresponding to the third and eighth child nodes among the eight child nodes each contain at least one point. As shown in the drawing, the third child node and the eighth child node each have eight child nodes, and each child node is expressed by an 8-bit occupancy code. The drawing shows that the occupancy code of the third child node is 10000111, and the occupancy code of the eighth child node is 01001111. A point cloud encoder according to embodiments (e.g., an arithmetic encoder (30004)) can entropy encode the occupancy code. In addition, the point cloud encoder can intra/inter code the occupancy code to increase compression efficiency. A receiving device according to embodiments (e.g., a receiving device (10004) or a point cloud video decoder (10006)) reconstructs an octree based on the occupancy code.
실시예들에 따른 포인트 클라우드 인코더(예를 들면 도 3의 포인트 클라우드 인코더, 또는 옥트리 분석부(30002))는 포인트들의 포지션들을 저장하기 위해 복셀화 및 옥트리 코딩을 수행할 수 있다. 하지만 3차원 공간 내 포인트들이 언제나 고르게 분포하는 것은 아니므로, 포인트들이 많이 존재하지 않는 특정 영역이 존재할 수 있다. 따라서 3차원 공간 전체에 대해 복셀화를 수행하는 것은 비효율 적이다. 예를 들어 특정 영역에 포인트가 거의 존재하지 않는다면, 해당 영역까지 복셀화를 수행할 필요가 없다.A point cloud encoder according to embodiments (e.g., the point cloud encoder of FIG. 3, or the octree analysis unit (30002)) can perform voxelization and octree coding to store the positions of points. However, points within a 3D space are not always evenly distributed, and thus, there may be specific areas where there are not many points. Therefore, performing voxelization on the entire 3D space is inefficient. For example, if there are few points in a specific area, there is no need to perform voxelization up to that area.
따라서 실시예들에 따른 포인트 클라우드 인코더는 상술한 특정 영역(또는 옥트리의 리프 노드를 제외한 노드)에 대해서는 복셀화를 수행하지 않고, 특정 영역에 포함된 포인트들의 포지션을 직접 코딩하는 다이렉트 코딩(Direct coding)을 수행할 수 있다. 실시예들에 따른 다이렉트 코딩 포인트의 좌표들은 다이렉트 코딩 모드(Direct Coding Mode, DCM)으로 호칭된다. 또한 실시예들에 따른 포인트 클라우드 인코더는 표면 모델(surface model)을 기반으로 특정 영역(또는 노드)내의 포인트들의 포지션들을 복셀 기반으로 재구성하는 트라이숩 지오메트리 인코딩(Trisoup geometry encoding)을 수행할 수 있다. 트라이숩 지오메트리 인코딩은 오브젝트의 표현을 삼각형 메쉬(triangle mesh)의 시리즈로 표현하는 지오메트리 인코딩이다. 따라서 포인트 클라우드 디코더는 메쉬 표면으로부터 포인트 클라우드를 생성할 수 있다. 실시예들에 따른 다이렉트 코딩 및 트라이숩 지오메트리 인코딩은 선택적으로 수행될 수 있다. 또한 실시예들에 따른 다이렉트 코딩 및 트라이숩 지오메트리 인코딩은 옥트리 지오메트리 코딩(또는 옥트리 코딩)과 결합되어 수행될 수 있다.Therefore, the point cloud encoder according to the embodiments can perform direct coding that directly codes the positions of points included in the specific region (or nodes excluding leaf nodes of the octree) without performing voxelization for the specific region described above. The coordinates of the direct coded points according to the embodiments are referred to as a direct coding mode (DCM). In addition, the point cloud encoder according to the embodiments can perform trisoup geometry encoding that reconstructs the positions of points within the specific region (or node) on a voxel basis based on a surface model. Trisoup geometry encoding is a geometry encoding that expresses the representation of an object as a series of triangle meshes. Therefore, the point cloud decoder can generate a point cloud from the mesh surface. Direct coding and trisoup geometry encoding according to the embodiments can be selectively performed. Additionally, direct coding and tri-subtractive geometry encoding according to embodiments may be performed in combination with octree geometry coding (or octree coding).
다이렉트 코딩(Direct coding)을 수행하기 위해서는 다이렉트 코딩을 적용하기 위한 직접 모드(direct mode) 사용 옵션이 활성화 되어 있어야 하며, 다이렉트 코딩을 적용할 노드는 리프 노드가 아니고, 특정 노드 내에 한계치(threshold) 이하의 포인트들이 존재해야 한다. 또한 다이텍트 코딩의 대상이 되는 전채 포인트들의 개수는 기설정된 한계값을 넘어서는 안된다. 위의 조건이 만족되면, 실시예들에 따른 포인트 클라우드 인코더(또는 아리스메틱 인코더(30004))는 포인트들의 포지션들(또는 포지션 값들)을 엔트로피 코딩할 수 있다.In order to perform direct coding, the option to use direct mode for applying direct coding must be activated, the node to which direct coding is to be applied must not be a leaf node, and there must be points below a threshold within a specific node. In addition, the total number of points subject to direct coding must not exceed a preset threshold. If the above conditions are satisfied, the point cloud encoder (or arithmetic encoder (30004)) according to the embodiments can entropy code the positions (or position values) of the points.
실시예들에 따른 포인트 클라우드 인코더(예를 들면 서페이스 어프록시메이션 분석부(30003))는 옥트리의 특정 레벨(레벨은 옥트리의 깊이 d보다는 작은 경우)을 정하고, 그 레벨부터는 표면 모델을 사용하여 노드 영역내의 포인트의 포지션을 복셀 기반으로 재구성하는 트라이숩 지오메트리 인코딩을 수행할 수 있다(트라이숩 모드). 실시예들에 따른 포인트 클라우드 인코더는 트라이숩 지오메트리 인코딩을 적용할 레벨을 지정할 수 있다. 예를 들어, 지정된 레벨이 옥트리의 깊이와 같으면 포인트 클라우드 인코더는 트라이숩 모드로 동작하지 않는다. 즉, 실시예들에 따른 포인트 클라우드 인코더는 지정된 레벨이 옥트리의 깊이값 보다 작은 경우에만 트라이숩 모드로 동작할 수 있다. 실시예들에 따른 지정된 레벨의 노드들의 3차원 정육면체 영역을 블록(block)이라 호칭한다. 하나의 블록은 하나 또는 그 이상의 복셀들을 포함할 수 있다. 블록 또는 복셀은 브릭(brick)에 대응될 수도 있다. 각 블록 내에서 지오메트리는 표면(surface)으로 표현된다. 실시예들에 따른 표면은 최대 한번 블록의 각 엣지(edge, 모서리)와 교차할 수 있다. A point cloud encoder according to embodiments (e.g., surface approximation analysis unit (30003)) can determine a specific level of an octree (when the level is smaller than the depth d of the octree) and, starting from that level, perform tri-subject geometry encoding to reconstruct the positions of points within a node region on a voxel basis using a surface model (tri-subject mode). A point cloud encoder according to embodiments can specify a level to which tri-subject geometry encoding is to be applied. For example, when the specified level is equal to the depth of the octree, the point cloud encoder does not operate in tri-subject mode. That is, a point cloud encoder according to embodiments can operate in tri-subject mode only when the specified level is smaller than the depth value of the octree. A three-dimensional cubic area of nodes at a specified level according to embodiments is called a block. One block may include one or more voxels. A block or a voxel may correspond to a brick. Within each block, geometry is represented by a surface. According to embodiments, a surface may intersect each edge of the block at most once.
하나의 블록은 12개의 엣지들을 가지므로, 하나의 블록 내 적어도 12개의 교차점들이 존재한다. 각 교차점은 버텍스(vertex, 정점 또는 꼭지점)라 호칭된다. 엣지를 따라 존재하는 버텍스은 해당 엣지를 공유하는 모든 블록들 중 그 엣지에 인접한 적어도 하나의 오큐파이드 복셀(occupied voxel)이 있는 경우 감지된다. 실시예들에 따른 오큐파이드 복셀은 포인트를 포함하는 복셀을 의미한다. 엣지를 따라 검출된 버텍스의 포지션은 해당 엣지를 공유하는 모든 블록들 중 해당 엣지에 인접한 모든 복셀들의 엣지에 따른 평균 포지션(the average position along the edge of all voxels)이다.Since one block has 12 edges, there are at least 12 intersections within one block. Each intersection is called a vertex. A vertex existing along an edge is detected if there is at least one occupied voxel adjacent to the edge among all blocks sharing the edge. An occupied voxel according to embodiments means a voxel containing a point. The position of a vertex detected along an edge is the average position along the edge of all voxels adjacent to the edge among all blocks sharing the edge.
버텍스가 검출되면 실시예들에 따른 포인트 클라우드 인코더는 엣지의 시작점(x, y, z), 엣지의 방향벡터(x, y, z), 버텍스 위치 값 (엣지 내의 상대적 위치 값)들을 엔트로피코딩할 수 있다. 트라이숩 지오메트리 인코딩이 적용된 경우, 실시예들에 따른 포인트 클라우드 인코더(예를 들면 지오메트리 리컨스트럭션부(30005))는 삼각형 재구성(triangle reconstruction), 업-샘플링(up-sampling), 복셀화 과정을 수행하여 복원된 지오메트리(재구성된 지오메트리)를 생성할 수 있다. When a vertex is detected, the point cloud encoder according to the embodiments calculates the starting point of the edge (x, y, z), the direction vector of the edge ( x, y, z), vertex position values (relative position values within an edge) can be entropy-coded. When tri-subspace geometry encoding is applied, the point cloud encoder according to the embodiments (e.g., geometry reconstruction unit (30005)) can perform triangle reconstruction, up-sampling, and voxelization processes to generate restored geometry (reconstructed geometry).
블록의 엣지에 위치한 버텍스들은 블록을 통과하는 표면(surface)를 결정한다. 실시예들에 따른 표면은 비평면 다각형이다. 삼각형 재구성 과정은 엣지의 시작점, 엣지의 방향 벡터와 버텍스의 위치값을 기반으로 삼각형으로 나타내는 표면을 재구성한다. 삼각형 재구성 과정은 다음과 같다. ①각 버텍스들의 중심(centroid)값을 계산하고, ②각 버텍스값에서 중심 값을 뺀 값들에 ③자승을 수행하고 그 값을 모두 더한 값을 구한다. The vertices located at the edge of a block determine the surface passing through the block. According to the embodiments, the surface is a non-planar polygon. The triangle reconstruction process reconstructs the surface represented by a triangle 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 as follows. ① Calculate the centroid value of each vertex, ② Subtract the centroid value from each vertex value, and ③ Square the values, and then add up all the values to obtain the value.
그리고나서, 더해진 값의 최소값을 구하고, 최소값이 있는 축에 따라서 프로젝션 (Projection, 투영) 과정을 수행한다. 예를 들어 x 요소(element)가 최소인 경우, 각 버텍스를 블록의 중심을 기준으로 x축으로 프로젝션 시키고, (y, z) 평면으로 프로젝션 시킨다. (y, z)평면으로 프로젝션 시키면 나오는 값이 (ai, bi)라면 atan2(bi, ai)를 통해 θ값을 구하고, θ값을 기준으로 버텍스들(vertices)을 정렬한다. 하기의 표는 버텍스들의 개수에 따라 삼각형을 생성하기 위한 버텍스들의 조합을 나타낸다. 버텍스들은 1부터 n까지의 순서로 정렬된다. 하기 표 1은 4개의 버텍스들에 대하여, 버텍스들의 조합에 따라 두 개의 삼각형들이 구성될 수 있음을 나타낸다. 첫번째 삼각형은 정렬된 버텍스들 중 1, 2, 3번째 버텍스들로 구성되고, 두번째 삼각형은 정렬된 버텍스들 중 3, 4, 1번째 버텍스들로 구성될 수 있다. Then, the minimum of the added values is found, and the projection process is performed according to the axis with the minimum value. For example, if the x element is minimum, each vertex is projected to the x-axis based on the center of the block, and projected onto the (y, z) plane. If the value produced when projected onto the (y, z) plane is (ai, bi), the θ value is found through atan2(bi, ai), and the vertices are sorted based on the θ value. The table below shows the combination of vertices to create a triangle depending on the number of vertices. The vertices are sorted in order from 1 to n. Table 1 below shows that two triangles can be formed depending on the combination of vertices for four vertices. The first triangle may be composed of the 1st, 2nd, and 3rd vertices among the sorted vertices, and the second triangle may be composed of the 3rd, 4th, and 1st vertices among the sorted vertices.
업샘플링 과정은 삼각형의 엣지를 따라서 중간에 점들을 추가하여 복셀화 하기 위해서 수행된다. 업샘플링 요소 값(upsampling factor)과 블록의 너비를 기준으로 추가 점들을 생성한다. 추가점은 리파인드 버텍스(refined vertice)라고 호칭된다. 실시예들에 따른 포인트 클라우드 인코더는 리파인드 버텍스들을 복셀화할 수 있다. 또한 포인트 클라우드 인코더는 복셀화 된 포지션(또는 포지션 값)을 기반으로 어트리뷰트 인코딩을 수행할 수 있다.The upsampling process is performed to voxelize the triangle by adding points in the middle along the edges. Additional points are generated based on the upsampling factor and the width of the block. The additional points are called refined vertices. A point cloud encoder according to embodiments can voxelize the refined vertices. The point cloud encoder can also perform attribute encoding based on the voxelized positions (or position values).
도 5는 실시예들에 따른 LOD 별 포인트 구성의 예시를 나타낸다.Figure 5 shows an example of a point configuration by LOD according to embodiments.
도 1 내지 도 4에서 설명한 바와 같이, 어트리뷰트 인코딩이 수행되기 전 인코딩된 지오메트리는 재구성(디컴프레션) 된다. 다이렉트 코딩이 적용된 경우, 지오메트리 재구성 동작은 다이렉트 코딩된 포인트들의 배치를 변경하는 것을 포함할 수 있다(예를 들면 다이렉트 코딩된 포인트들을 포인트 클라우드 데이터의 앞쪽에 배치). 트라이숩 지오메트리 인코딩이 적용된 경우, 지오메트리 재구성 과정은 삼각형 재구성, 업샘플링, 복셀화 과정을 어트리뷰트는 지오메트리에 종속되므로, 어트리뷰트 인코딩은 재구성된 지오메트리를 기반으로 수행된다. As described in FIGS. 1 to 4, the encoded geometry is reconstructed (decompressed) before attribute encoding is performed. When direct coding is applied, the geometry reconstruction operation may include changing the arrangement of direct-coded points (e.g., placing the direct-coded points at the front of the point cloud data). When trysoup geometry encoding is applied, the geometry reconstruction process includes triangle reconstruction, upsampling, and voxelization. Since attributes depend on the geometry, attribute encoding is performed based on the reconstructed geometry.
포인트 클라우드 인코더(예를 들면 LOD 생성부(30009))는 포인트들을 LOD별로 분류(reorganization)할 수 있다. 도면은 LOD에 대응하는 포인트 클라우드 콘텐트를 나타낸다. 도면의 왼쪽은 오리지널 포인트 클라우드 콘텐트를 나타낸다. 도면의 왼쪽에서 두번째 그림은 가장 낮은 LOD의 포인트들의 분포를 나타내며, 도면의 가장 오른쪽 그림은 가장 높은 LOD의 포인트들의 분포를 나타낸다. 즉, 가장 낮은 LOD의 포인트들은 드문드문(sparse) 분포하며, 가장 높은 LOD의 포인트들은 촘촘히 분포한다. 즉, 도면 하단에 표시된 화살표 방향에 따라 LOD가 증가할수록 포인트들 간의 간격(또는 거리)는 더 짧아진다. A point cloud encoder (e.g., LOD generation unit (30009)) can reorganize points by LOD. The drawing shows point cloud content corresponding to LOD. The left side of the drawing shows the original point cloud content. The second figure from the left in the drawing shows the distribution of points of the lowest LOD, and the rightmost figure in the drawing shows the distribution of points of the highest LOD. That is, points of the lowest LOD are sparsely distributed, and points of the highest LOD are densely distributed. That is, as LOD increases in the direction of the arrow indicated at the bottom of the drawing, the interval (or distance) between points becomes shorter.
도 6은 실시예들에 따른 LOD 별 포인트 구성의 예시를 나타낸다. Figure 6 shows an example of a point configuration by LOD according to embodiments.
도 1 내지 도 5에서 설명한 바와 같이 포인트 클라우드 콘텐트 제공 시스템, 또는 포인트 클라우드 인코더(예를 들면 포인트 클라우드 비디오 인코더(10002), 도 3의 포인트 클라우드 인코더, 또는 LOD 생성부(30009))는 LOD를 생성할 수 있다. LOD는 포인트들을 설정된 LOD 거리 값(또는 유클리이디언 디스턴스(Euclidean Distance)의 세트)에 따라 리파인먼트 레벨들(refinement levels)의 세트로 재정열(reorganize)하여 생성된다. LOD 생성 과정은 포인트 클라우드 인코더뿐만 아니라 포인트 클라우드 디코더에서도 수행된다.As described in FIGS. 1 to 5, a point cloud content providing system, or a point cloud encoder (e.g., a point cloud video encoder (10002), the point cloud encoder of FIG. 3, or a LOD generation unit (30009)) can generate a LOD. The LOD is generated by reorganizing points into a set of refinement levels according to a set LOD distance value (or a set of Euclidean distances). The LOD generation process is performed not only in the point cloud encoder but also in the point cloud decoder.
도 6의 상단은 3차원 공간에 분포된 포인트 클라우드 콘텐트의 포인트들의 예시(P0내지 P9)를 나타낸다. 도 6의 오리지널 오더(Original order)는 LOD 생성전 포인트들 P0내지 P9의 순서를 나타낸다. 도 6의 LOD 기반 오더 (LOD based order)는 LOD 생성에 따른 포인트들의 순서를 나타낸다. 포인트들은 LOD별 재정열된다. 또한 높은 LOD는 낮은 LOD에 속한 포인트들을 포함한다. 도 6에 도시된 바와 같이 LOD0는 P0, P5, P4 및 P2를 포함한다. LOD1은 LOD0의 포인트들과 P1, P6 및 P3를 포함한다. LOD2는 LOD0의 포인트들, LOD1의 포인트들 및 P9, P8 및 P7을 포함한다.The upper part of Fig. 6 shows examples of points (P0 to P9) of point cloud content distributed in 3D space. The original order in Fig. 6 represents the order of points P0 to P9 before LOD generation. The LOD-based order in Fig. 6 represents the order of points according to LOD generation. The points are rearranged by LOD. Additionally, a higher LOD includes points belonging to a lower LOD. As shown in Fig. 6, LOD0 includes P0, P5, P4, and P2. LOD1 includes points of LOD0 and P1, P6, and P3. LOD2 includes points of LOD0, points of LOD1, and P9, P8, and P7.
도 3에서 설명한 바와 같이 실시예들에 따른 포인트 클라우드 인코더는 예측 변환 코딩, 리프팅 변환 코딩 및 RAHT 변환 코딩을 선택적으로 또는 조합하여 수행할 수 있다.As described in FIG. 3, the point cloud encoder according to the embodiments can selectively or in combination perform predictive transform coding, lifting transform coding, and RAHT transform coding.
실시예들에 따른 포인트 클라우드 인코더는 포인트들에 대한 예측기(predictor)를 생성하여 각 포인트의 예측 어트리뷰트(또는 예측 어트리뷰트값)을 설정하기 위한 예측 변환 코딩을 수행할 수 있다. 즉, N개의 포인트들에 대하여 N개의 예측기들이 생성될 수 있다. 실시예들에 따른 예측기는 각 포인트의 LOD 값과 LOD별 설정된 거리 내에 존재하는 이웃 포인트들에 대한 인덱싱 정보 및 이웃 포인트들까지의 거리 값을 기반으로 가중치(=1/거리) 값을 계산하할 수 있다.A point cloud encoder according to embodiments can perform predictive transformation coding to generate a predictor for points and set a predicted attribute (or predicted attribute value) for each point. That is, N predictors can be generated for N points. The predictor according to embodiments can calculate a weight (= 1/distance) value based on the LOD value of each point, indexing information for neighboring points existing within a distance set for each LOD, and distance values to the neighboring points.
실시예들에 따른 예측 어트리뷰트(또는 어트리뷰트값)은 각 포인트의 예측기에 설정된 이웃 포인트들의 어트리뷰트들(또는 어트리뷰트 값들, 예를 들면 색상, 반사율 등)에 각 이웃 포인트까지의 거리를 기반으로 계산된 가중치(또는 가중치값)을 곱한 값의 평균값으로 설정된다. 실시예들에 따른 포인트 클라우드 인코더(예를 들면 계수 양자화부(30011)는 각 포인트의 어트리뷰트(어트리뷰트 값)에서 예측 어트리뷰트(어트리뷰트값)을 뺀 잔여값들(residuals, 잔여 어트리뷰트, 잔여 어트리뷰트값, 어트리뷰트 예측 잔여값 등으로 호칭할 수 있다)을 양자화(quatization) 및 역양자화(inverse quantization)할 수 있다. 양자화 과정은 다음의 표 2와 표 3에 나타난 바와 같다.According to the embodiments, the predicted attribute (or attribute value) is set as the average value of the product of the attributes (or attribute values, for example, color, reflectance, etc.) of neighboring points set in the predictor of each point and the weight (or weight value) calculated based on the distance to each neighboring point. The point cloud encoder according to the embodiments (for example, the coefficient quantization unit (30011)) can quantize and inverse quantize the residual values (which may be referred to as residual attribute, residual attribute value, attribute prediction residual value, etc.) obtained by subtracting the predicted attribute (attribute value) from the attribute (attribute value) of each point. The quantization process is as shown in Tables 2 and 3 below.
실시예들에 따른 포인트 클라우드 인코더(예를 들면 아리스메틱 인코더(30012))는 각 포인트의 예측기에 이웃한 포인트들이 있는 경우, 상술한 바와 같이 양자화 및 역양자화된 잔여값을 엔트로피 코딩 할 수 있다. 실시예들에 따른 포인트 클라우드 인코더(예를 들면 아리스메틱 인코더(30012))는 각 포인트의 예측기에 이웃한 포인트들이 없으면 상술한 과정을 수행하지 않고 해당 포인트의 어트리뷰트들을 엔트로피 코딩할 수 있다. A point cloud encoder according to embodiments (e.g., an arithmetic encoder (30012)) can entropy code the quantized and dequantized residuals as described above when there are neighboring points to the predictor of each point. A point cloud encoder according to embodiments (e.g., an arithmetic encoder (30012)) can entropy code the attributes of the point without performing the above-described process when there are no neighboring points to the predictor of each point.
실시예들에 따른 포인트 클라우드 인코더 (예를 들면 리프팅 변환부(30010))는 각 포인트의 예측기를 생성하고, 예측기에 계산된 LOD를 설정 및 이웃 포인트들을 등록하고, 이웃 포인트들까지의 거리에 따른 가중치를 설정하여 리프팅 변환 코딩을 수행할 수 있다. 실시예들에 따른 리프팅 변환 코딩은 상술한 예측 변환 코딩과 유사하나, 어트리뷰트값에 가중치를 누적 적용한다는 점에서 차이가 있다. 실시예들에 따른 어트리뷰트값에 가중치를 누적 적용하는 과정은 다음과 같다.A point cloud encoder according to embodiments (e.g., lifting transformation unit (30010)) can perform lifting transformation coding by generating a predictor for each point, setting the LOD calculated in the predictor, registering neighboring points, and setting weights according to the distance to the neighboring points. Lifting transformation coding according to embodiments is similar to the above-described predictive transformation coding, but differs in that weights are cumulatively applied to attribute values. The process of cumulatively applying weights to attribute values according to embodiments is as follows.
1) 각 포인트의 가중치 값을 저장하는 배열 QW(QuantizationWieght)를 생성한다. QW의 모든 요소들의 초기값은 1.0이다. 예측기에 등록된 이웃 노드의 예측기 인덱스의 QW 값에 현재 포인트의 예측기의 가중치를 곱한 값을 더한다. 1) Create an array QW (QuantizationWieght) that stores the weight values of each point. The initial value of all elements in QW is 1.0. Add the value obtained by multiplying the weight of the current point's predictor by the QW value of the predictor index of the neighboring node registered in the predictor.
2) 리프트 예측 과정: 예측된 어트리뷰트 값을 계산하기 위하여 포인트의 어트리뷰트 값에 가중치를 곱한 값을 기존 어트리뷰트값에서 뺀다. 2) Lift prediction process: To calculate the predicted attribute value, the weighted value of the point's attribute value is multiplied and subtracted from the existing attribute value.
3) 업데이트웨이트(updateweight) 및 업데이트(update)라는 임시 배열들을 생성하고 임시 배열들을 0으로 초기화한다. 3) Create temporary arrays called updateweight and update and initialize them to 0.
4) 모든 예측기에 대해서 계산된 가중치에 예측기 인덱스에 해당하는 QW에 저장된 가중치를 추가로 곱해서 산출된 가중치를 업데이트웨이트 배열에 이웃 노드의 인덱스로 누적으로 합산한다. 업데이트 배열에는 이웃 노드의 인덱스의 어트리뷰트 값에 산출된 가중치를 곱한 값을 누적 합산한다. 4) For each predictor, the calculated weights are multiplied by the weights stored in the QW corresponding to the predictor index, and the resulting weights are cumulatively added to the update weight array as the index of the neighboring node. The update array accumulates the values obtained by multiplying the calculated weights by the attribute values of the indexes of the neighboring nodes.
5) 리프트 업데이트 과정: 모든 예측기에 대해서 업데이트 배열의 어트리뷰트 값을 예측기 인덱스의 업데이트웨이트 배열의 가중치 값으로 나누고, 나눈 값에 다시 기존 어트리뷰트 값을 더한다. 5) Lift update process: For each predictor, the attribute values in the update array are divided by the weight values in the update weight array of the predictor index, and the existing attribute values are added to the divided value.
6) 모든 예측기에 대해서, 리프트 업데이트 과정을 통해 업데이트된 어트리뷰트 값에 리프트 예측 과정을 통해 업데이트 된(QW에 저장된) 가중치를 추가로 곱하여 예측 어트리뷰트 값을 산출한다. 실시예들에 따른 포인트 클라우드 인코더(예를 들면 계수 양자화부(30011))는 예측 어트리뷰트 값을 양자화한다. 또한 포인트 클라우드 인코더(예를 들면 아리스메틱 인코더(30012))는 양자화된 어트리뷰트 값을 엔트로피 코딩한다. 6) For all predictors, the predicted attribute values are calculated by additionally multiplying the updated attribute values through the lift update process by the weights (stored in QW) updated through the lift prediction process. The point cloud encoder according to the embodiments (e.g., coefficient quantization unit (30011)) quantizes the predicted attribute values. In addition, the point cloud encoder (e.g., arithmetic encoder (30012)) entropy-codes the quantized attribute values.
실시예들에 따른 포인트 클라우드 인코더(예를 들면 RAHT 변환부(30008))는 옥트리의 하위 레벨에 있는 노드와 연관된 어트리뷰트를 사용하여 상위 레벨의 노드들의 어트리뷰트를 에측하는 RAHT 변환 코딩을 수행할 수 있다. RAHT 변환 코딩은 옥트리 백워드 스캔을 통한 어트리뷰트 인트라 코딩의 예시이다. 실시예들에 따른 포인트 클라우드 인코더는 복셀에서 전체 영역으로 스캔하고, 각 스텝에서 복셀을 더 큰 블록으로 합치면서 루트 노드까지의 병합 과정을 반복수행한다. 실시예들에 따른 병합 과정은 오큐파이드 노드에 대해서만 수행된다. 엠티 노드(empty node)에 대해서는 병합 과정이 수행되지 않으며, 엠티 노드의 바로 상위 노드에 대해 병합 과정이 수행된다.A point cloud encoder according to embodiments (e.g., RAHT transform unit (30008)) can perform RAHT transform coding that predicts attributes of upper-level nodes using attributes associated with nodes at lower levels of an octree. RAHT transform coding is an example of attribute intra coding through octree backward scan. A point cloud encoder according to embodiments scans from a voxel to the entire area, and repeats the merging process up to a root node while merging voxels into larger blocks at each step. The merging process according to embodiments is performed only for occupied nodes. The merging process is not performed for empty nodes, and the merging process is performed for the node immediately above the empty node.
하기의 식은 RAHT 변환 행렬을 나타낸다. glx,y,z 는 레벨 l에서의 복셀들의 평균 어트리뷰트 값을 나타낸다. glx,y,z는 gl+1 2x,y,z와 gl+1 2x+1,y,z로부터 계산될 수 있다. gl 2x,y,z 와 gl 2x+1,y,z 의 가중치를 w1=wl 2x,y,z과 w2=wl 2x+1,y,z 이다. The following equation represents the RAHT transformation matrix. g lx,y,z represents the average attribute value of voxels at level l. g lx,y,z can be calculated from g l+1 2x,y,z and g l+1 2x+1,y,z . The weights of g l 2x,y,z and g l 2x+1,y,z are w1=w l 2x,y,z and w2=w l 2x+1,y,z .
gl-1 x,y,z는 로-패스(low-pass) 값으로, 다음 상위 레벨에서의 병합 과정에서 사용된다. hl-1 x,y,z은 하이패스 계수(high-pass coefficients)이며, 각 스텝에서의 하이패스 계수들은 양자화되어 엔트로피 코딩 된다(예를 들면 아리스메틱 인코더(30012)의 인코딩). 가중치는 wl-1 x,y,z = wl 2x,y,z + wl 2x+1,y,z로 계산된다. 루트 노드는 마지막 g1 0,0,0 과 g1 0,0,1을 통해서 다음과 생성된다.g l-1 x,y,z are low-pass values, which are used in the merging process at the next higher level. h l-1 x,y,z are high-pass coefficients, and the high-pass coefficients at each step are quantized and entropy coded (e.g., encoding of an arithmetic encoder (30012)). The weights are computed as w l-1 x,y,z = w l 2x,y,z + w l 2x+1,y,z . The root node is generated as follows through the last g 1 0,0,0 and g 1 0,0,1 .
gDC값 또한 하이패스 계수와 같이 양자화되어 엔트로피 코딩된다.The gDC values are also quantized and entropy coded, like the high-pass coefficients.
도 7은 실시예들에 따른 포인트 클라우드 디코더(Point Cloud Decoder)의 예시를 나타낸다.Fig. 7 illustrates an example of a point cloud decoder according to embodiments.
도 7에 도시된 포인트 클라우드 디코더는 포인트 클라우드 디코더의 예시로서, 도 1 내지 도 6에서 설명한 포인트 클라우드 인코더의 인코딩 동작의 역과정인 디코딩 동작을 수행할 수 있다.The point cloud decoder illustrated in FIG. 7 is an example of a point cloud decoder and can perform a decoding operation, which is the reverse process of the encoding operation of the point cloud encoder described in FIGS. 1 to 6.
도 1에서 설명한 바와 같이 포인트 클라우드 디코더는 지오메트리 디코딩 및 어트리뷰트 디코딩을 수행할 수 있다. 지오메트리 디코딩은 어트리뷰트 디코딩보다 먼저 수행된다.As described in Figure 1, the point cloud decoder can perform geometry decoding and attribute decoding. Geometry decoding is performed before attribute decoding.
실시예들에 따른 포인트 클라우드 디코더는 아리스메틱 디코더(arithmetic decode, 7000), 옥트리 합성부(synthesize octree, 7001), 서페이스 오프록시메이션 합성부(synthesize surface approximation, 7002), 지오메트리 리컨스트럭션부(reconstruct geometry, 7003), 좌표계 역변환부(inverse transform coordinates, 7004), 아리스메틱 디코더(arithmetic decode, 7005), 역양자화부(inverse quantize, 7006), RAHT변환부(7007), LOD생성부(generate LOD, 7008), 인버스 리프팅부(Inverse lifting, 7009), 및/또는 컬러 역변환부(inverse transform colors, 7010)를 포함한다.A point cloud decoder according to embodiments includes an arithmetic decoder (7000), an octree synthesizer (7001), a surface approximation synthesizer (7002), a geometry reconstructor (7003), an inverse transform coordinates (7004), an arithmetic decoder (7005), an inverse quantize (7006), a RAHT transform (7007), a LOD generator (7008), an inverse lifting (7009), and/or an inverse transform colors (7010).
아리스메틱 디코더(7000), 옥트리 합성부(7001), 서페이스 오프록시메이션 합성부(7002), 지오메트리 리컨스럭션부(7003), 좌표계 역변환부(7004)는 지오메트리 디코딩을 수행할 수 있다. 실시예들에 따른 지오메트리 디코딩은 다이렉트 코딩(direct coding) 및 트라이숩 지오메트리 디코딩(trisoup geometry decoding)을 포함할 수 있다. 다이렉트 코딩 및 트라이숩 지오메트리 디코딩은 선택적으로 적용된다. 또한 지오메트리 디코딩은 위의 예시에 국한되지 않으며, 도 1 내지 도 6에서 설명한 지오메트리 인코딩의 역과정으로 수행된다. The arithmetic decoder (7000), the octree synthesis unit (7001), the surface oproximation synthesis unit (7002), the geometry reconstruction unit (7003), and the coordinate system inversion unit (7004) can perform geometry decoding. Geometry decoding according to embodiments can include direct coding and trisoup geometry decoding. Direct coding and trisoup geometry decoding are applied selectively. In addition, geometry decoding is not limited to the above examples, and is performed by the reverse process of the geometry encoding described in FIGS. 1 to 6.
실시예들에 따른 아리스메틱 디코더(7000)는 수신한 지오메트리 비트스트림을 아리스메틱 코딩을 기반으로 디코딩한다. 아리스메틱 디코더(7000)의 동작은 아리스메틱 인코더(30004)의 역과정에 대응한다.An arithmetic decoder (7000) according to embodiments decodes a received geometry bitstream based on arithmetic coding. The operation of the arithmetic decoder (7000) corresponds to the reverse process of the arithmetic encoder (30004).
실시예들에 따른 옥트리 합성부(7001)는 디코딩된 지오메트리 비트스트림으로부터 (또는 디코딩 결과 확보된 지오메트리에 관한 정보)로부터 오큐판시 코드를 획득하여 옥트리를 생성할 수 있다. 오큐판시 코드에 대한 구체적인 설명은 도 1 내지 도 6에서 설명한 바와 같다.The octree synthesis unit (7001) according to the embodiments can generate an octree by obtaining an occupancy code from a decoded geometry bitstream (or information about the geometry obtained as a result of decoding). A specific description of the occupancy code is as described in FIGS. 1 to 6.
실시예들에 따른 서페이스 오프록시메이션 합성부(7002)는 트라이숩 지오메트리 인코딩이 적용된 경우, 디코딩된 지오메트리 및/또는 생성된 옥트리에 기반하여 서페이스를 합성할 수 있다.The surface off-axis synthesis unit (7002) according to the embodiments can synthesize a surface based on the decoded geometry and/or the generated octree when the tri-sub geometry encoding is applied.
실시예들에 따른 지오메트리 리컨스트럭션부(7003)는 서페이스 및 또는 디코딩된 지오메트리에 기반하여 지오메트리를 재생성할 수 있다. 도 1 내지 도 6에서 설명한 바와 같이, 다이렉트 코딩 및 트라이숩 지오메트리 인코딩은 선택적으로 적용된다. 따라서 지오메트리 리컨스트럭션부(7003)는 다이렉트 코딩이 적용된 포인트들의 포지션 정보들을 직접 가져와서 추가한다. 또한, 트라이숩 지오메트리 인코딩이 적용된 경우, 지오메트리 리컨스트럭션부(7003)는 지오메트리 리컨스트럭션부(30005)의 재구성 동작, 예를 들면 삼각형 재구성, 업-샘플링, 복셀화 동작을 수행하여 지오메트리를 복원할 수 있다. 구체적인 내용은 도 4에서 설명한 바와 동일하므로 생략한다. 복원된 지오메트리는 어트리뷰트들을 포함하지 않는 포인트 클라우드 픽쳐 또는 프레임을 포함할 수 있다.The geometry reconstruction unit (7003) according to the embodiments can regenerate geometry based on the surface and/or decoded geometry. As described in FIGS. 1 to 6, direct coding and try-soup geometry encoding are selectively applied. Therefore, the geometry reconstruction unit (7003) directly retrieves and adds position information of points to which direct coding is applied. In addition, when try-soup geometry encoding is applied, the geometry reconstruction unit (7003) can restore geometry by performing a reconstruction operation of the geometry reconstruction unit (30005), such as triangle reconstruction, up-sampling, and voxelization operations. The specific details are the same as described in FIG. 4 and are therefore omitted. The restored geometry may include a point cloud picture or frame that does not include attributes.
실시예들에 따른 좌표계 역변환부(7004)는 복원된 지오메트리를 기반으로 좌표계를 변환하여 포인트들의 포지션들을 획득할 수 있다. The coordinate system inverse transformation unit (7004) according to the embodiments can obtain the positions of points by transforming the coordinate system based on the restored geometry.
아리스메틱 디코더(7005), 역양자화부(7006), RAHT 변환부(7007), LOD생성부(7008), 인버스 리프팅부(7009), 및/또는 컬러 역변환부(7010)는 어트리뷰트 디코딩을 수행할 수 있다. 실시예들에 따른 어트리뷰트 디코딩은 RAHT(Region Adaptive Hierarchial Transform) 디코딩, 예측 변환(Interpolaration-based hierarchical nearest-neighbour prediction-Prediction Transform) 디코딩 및 리프팅 변환 (interpolation-based hierarchical nearest-neighbour prediction with an update/lifting step (Lifting Transform)) 디코딩을 포함할 수 있다. 상술한 3가지의 디코딩들은 선택적으로 사용되거나, 하나 또는 그 이상의 디코딩들의 조합이 사용될 수 있다. 또한 실시예들에 따른 어트리뷰트 디코딩은 상술한 예시에 국한되는 것은 아니다.The arithmetic decoder (7005), the inverse quantization unit (7006), the RAHT transform unit (7007), the LOD generation unit (7008), the inverse lifting unit (7009), and/or the color inverse transform unit (7010) can perform attribute decoding. The attribute decoding according to the embodiments can include RAHT (Region Adaptive Hierarchical Transform) decoding, prediction transform (Interpolaration-based hierarchical nearest-neighbor prediction-Prediction Transform) decoding, and lifting transform (interpolation-based hierarchical nearest-neighbor prediction with an update/lifting step (Lifting Transform)) decoding. The three decodings described above can be used selectively, or a combination of one or more decodings can be used. In addition, the attribute decoding according to the embodiments is not limited to the above-described examples.
실시예들에 따른 아리스메틱 디코더(7005)는 어트리뷰트 비트스트림을 아리스메틱 코딩으로 디코딩한다. An arithmetic decoder (7005) according to embodiments decodes an attribute bitstream using arithmetic coding.
실시예들에 따른 역양자화부(7006)는 디코딩된 어트리뷰트 비트스트림 또는 디코딩 결과 확보한 어트리뷰트에 대한 정보를 역양자화(inverse quantization)하고 역양자화된 어트리뷰트들(또는 어트리뷰트 값들)을 출력한다. 역양자화는 포인트 클라우드 인코더의 어트리뷰트 인코딩에 기반하여 선택적으로 적용될 수 있다.The inverse quantization unit (7006) according to the embodiments inverse quantizes information about the decoded attribute bitstream or the attributes obtained as a result of the decoding and outputs the inverse quantized attributes (or attribute values). The inverse quantization may be selectively applied based on the attribute encoding of the point cloud encoder.
실시예들에 따라 RAHT 변환부(7007), LOD생성부(7008) 및/또는 인버스 리프팅부(7009)는 재구성된 지오메트리 및 역양자화된 어트리뷰트들을 처리할 수 있다. 상술한 바와 같이 RAHT 변환부(7007), LOD생성부(7008) 및/또는 인버스 리프팅부(7009)는 포인트 클라우드 인코더의 인코딩에 따라 그에 대응하는 디코딩 동작을 선택적으로 수행할 수 있다. According to embodiments, the RAHT transform unit (7007), the LOD generator (7008), and/or the inverse lifting unit (7009) may process the reconstructed geometry and the inverse quantized attributes. As described above, the RAHT transform unit (7007), the LOD generator (7008), and/or the inverse lifting unit (7009) may selectively perform a corresponding decoding operation according to the encoding of the point cloud encoder.
실시예들에 따른 컬러 역변환부(7010)는 디코딩된 어트리뷰트들에 포함된 컬러 값(또는 텍스쳐)을 역변환하기 위한 역변환 코딩을 수행한다. 컬러 역변환부(7010)의 동작은 포인트 클라우드 인코더의 컬러 변환부(30006)의 동작에 기반하여 선택적으로 수행될 수 있다.The color inverse transform unit (7010) according to the embodiments performs inverse transform coding to inversely transform the color values (or textures) included in the decoded attributes. The operation of the color inverse transform unit (7010) may be selectively performed based on the operation of the color transform unit (30006) of the point cloud encoder.
도 7의 포인트 클라우드 디코더의 엘레멘트들은 도면에 도시되지 않았으나 포인트 클라우드 제공 장치에 포함된 하나 또는 그 이상의 메모리들과 통신가능하도록 설정된 하나 또는 그 이상의 프로세서들 또는 집적 회로들(integrated circuits)을 포함하는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 구현될 수 있다. 하나 또는 그 이상의 프로세서들은 상술한 도 7의 포인트 클라우드 디코더의 엘레멘트들의 동작들 및/또는 기능들 중 적어도 어느 하나 이상을 수행할 수 있다. 또한 하나 또는 그 이상의 프로세서들은 도7의 포인트 클라우드 디코더의 엘레멘트들의 동작들 및/또는 기능들을 수행하기 위한 소프트웨어 프로그램들 및/또는 인스트럭션들의 세트를 동작하거나 실행할 수 있다. The elements of the point cloud decoder of FIG. 7 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 a point cloud providing device, although not shown in the drawing. The one or more processors may perform at least one or more of the operations and/or functions of the elements of the point cloud decoder of FIG. 7 described above. Furthermore, the one or more processors may operate or execute a set of software programs and/or instructions for performing the operations and/or functions of the elements of the point cloud decoder of FIG. 7.
도 8은 실시예들에 따른 전송 장치의 예시이다.Figure 8 is an example of a transmission device according to embodiments.
도 8에 도시된 전송 장치는 도 1의 전송장치(10000) (또는 도 3의 포인트 클라우드 인코더)의 예시이다. 도 8에 도시된 전송 장치는 도 1 내지 도 6에서 설명한 포인트 클라우드 인코더의 동작들 및 인코딩 방법들과 동일 또는 유사한 동작들 및 방법들 중 적어도 어느 하나 이상을 수행할 수 있다. 실시예들에 따른 전송 장치는 데이터 입력부(8000), 양자화 처리부(8001), 복셀화 처리부(8002), 옥트리 오큐판시 코드 (Occupancy code) 생성부(8003), 표면 모델 처리부(8004), 인트라/인터 코딩 처리부(8005), 아리스메틱 (Arithmetic) 코더(8006), 메타데이터 처리부(8007), 색상 변환 처리부(8008), 어트리뷰트 변환 처리부(또는 속성 변환 처리부)(8009), 예측/리프팅/RAHT 변환 처리부(8010), 아리스메틱 (Arithmetic) 코더(8011) 및/또는 전송 처리부(8012)를 포함할 수 있다.The transmission device illustrated in FIG. 8 is an example of the transmission device (10000) of FIG. 1 (or the point cloud encoder of FIG. 3). The transmission device illustrated in FIG. 8 can perform at least one or more of the same or similar operations and encoding methods as the operations and encoding methods of the point cloud encoder described in FIGS. 1 to 6. A transmission device according to embodiments may include a data input unit (8000), a quantization processing unit (8001), a voxelization processing unit (8002), an octree occupancy code generation unit (8003), a surface model processing unit (8004), an intra/inter coding processing unit (8005), an arithmetic coder (8006), a metadata processing unit (8007), a color conversion processing unit (8008), an attribute conversion processing unit (or a property conversion processing unit) (8009), a prediction/lifting/RAHT conversion processing unit (8010), an arithmetic coder (8011), and/or a transmission processing unit (8012).
실시예들에 따른 데이터 입력부(8000)는 포인트 클라우드 데이터를 수신 또는 획득한다. 데이터 입력부(8000)는 포인트 클라우드 비디오 획득부(10001)의 동작 및/또는 획득 방법(또는 도2에서 설명한 획득과정(20000))과 동일 또는 유사한 동작 및/또는 획득 방법을 수행할 수 있다. The data input unit (8000) according to the embodiments receives or acquires point cloud data. The data input unit (8000) may perform operations and/or acquisition methods identical or similar to those of the point cloud video acquisition unit (10001) (or the acquisition process (20000) described in FIG. 2).
데이터 입력부(8000), 양자화 처리부(8001), 복셀화 처리부(8002), 옥트리 오큐판시 코드 (Occupancy code) 생성부(8003), 표면 모델 처리부(8004), 인트라/인터 코딩 처리부(8005), Arithmetic 코더(8006)는 지오메트리 인코딩을 수행한다. 실시예들에 따른 지오메트리 인코딩은 도 1 내지 도 6에서 설명한 지오메트리 인코딩과 동일 또는 유사하므로 구체적인 설명은 생략한다.The data input unit (8000), quantization processing unit (8001), voxelization processing unit (8002), octree occupancy code generation unit (8003), surface model processing unit (8004), intra/inter coding processing unit (8005), and arithmetic coder (8006) perform geometry encoding. Since the geometry encoding according to the embodiments is the same or similar to the geometry encoding described in FIGS. 1 to 6, a detailed description thereof will be omitted.
실시예들에 따른 양자화 처리부(8001)는 지오메트리(예를 들면 포인트들의 위치값, 또는 포지션값)을 양자화한다. 양자화 처리부(8001)의 동작 및/또는 양자화는 도 3에서 설명한 양자화부(30001)의 동작 및/또는 양자화와 동일 또는 유사하다. 구체적인 설명은 도 1 내지 도 6에서 설명한 바와 동일하다.The quantization processing unit (8001) according to the embodiments quantizes geometry (e.g., position values of points or position values). The operation and/or quantization of the quantization processing unit (8001) is identical to or similar to the operation and/or quantization of the quantization unit (30001) described in FIG. 3. The specific description is the same as that described in FIGS. 1 to 6.
실시예들에 따른 복셀화 처리부(8002)는 양자화된 포인트들의 포지션 값을 복셀화한다. 복셀화 처리부(80002)는 도 3에서 설명한 양자화부(30001)의 동작 및/또는 복셀화 과정과 동일 또는 유사한 동작 및/또는 과정을 수행할 수 있다. 구체적인 설명은 도 1 내지 도 6에서 설명한 바와 동일하다.The voxelization processing unit (8002) according to the embodiments voxels the position values of quantized points. The voxelization processing unit (80002) may perform operations and/or processes identical or similar to the operations and/or voxelization processes of the quantization unit (30001) described in FIG. 3. Specific descriptions are identical to those described in FIGS. 1 to 6.
실시예들에 따른 옥트리 오큐판시 코드 생성부(8003)는 복셀화된 포인트들의 포지션들을 옥트리 구조를 기반으로 옥트리 코딩을 수행한다. 옥트리 오큐판시 코드 생성부(8003)는 오큐판시 코드를 생성할 수 있다. 옥트리 오큐판시 코드 생성부(8003)는 도 3 및 도 4에서 설명한 포인트 클라우드 인코더 (또는 옥트리 분석부(30002))의 동작 및/또는 방법과 동일 또는 유사한 동작 및/또는 방법을 수행할 수 있다. 구체적인 설명은 도 1 내지 도 6에서 설명한 바와 동일하다.The octree occupancy code generation unit (8003) according to the embodiments performs octree coding on the positions of voxelized points based on the octree structure. The octree occupancy code generation unit (8003) can generate an occupancy code. The octree occupancy code generation unit (8003) can perform operations and/or methods identical or similar to those of the point cloud encoder (or octree analysis unit (30002)) described in FIGS. 3 and 4. The specific description is the same as that described in FIGS. 1 to 6.
실시예들에 따른 표면 모델 처리부(8004)는 표면 모델(surface model)을 기반으로 특정 영역(또는 노드)내의 포인트들의 포지션들을 복셀 기반으로 재구성하는 트라이숩 지오메트리 인코딩을 수행할 수 있다. 포면 모델 처리부(8004)는 도 3 에서 설명한 포인트 클라우드 인코더(예를 들면 서페이스 어프록시메이션 분석부(30003))의 동작 및/또는 방법과 동일 또는 유사한 동작 및/또는 방법을 수행할 수 있다. 구체적인 설명은 도 1 내지 도 6에서 설명한 바와 동일하다.The surface model processing unit (8004) according to the embodiments can perform tri-subject geometry encoding to reconstruct the positions of points within a specific area (or node) on a voxel basis based on the surface model. The surface model processing unit (8004) can perform operations and/or methods identical or similar to those of the point cloud encoder (e.g., surface approximation analysis unit (30003)) described in FIG. 3. The specific description is the same as that described with reference to FIGS. 1 to 6.
실시예들에 따른 인트라/인터 코딩 처리부(8005)는 포인트 클라우드 데이터를 인트라/인터 코딩할 수 있다. 인트라/인터 코딩 처리부(8005)는 인트라/인터 코딩과 동일 또는 유사한 코딩을 수행할 수 있다. 실시예들에 따라 인트라/인터 코딩 처리부(8005)는 아리스메틱 코더(8006)에 포함될 수 있다.The intra/inter coding processing unit (8005) according to embodiments may perform intra/inter coding on point cloud data. The intra/inter coding processing unit (8005) may perform coding identical to or similar to intra/inter coding. According to embodiments, the intra/inter coding processing unit (8005) may be included in an arithmetic coder (8006).
실시예들에 따른 아리스메틱 코더(8006)는 포인트 클라우드 데이터의 옥트리 및/또는 근사화된 옥트리를 엔트로피 인코딩한다. 예를 들어, 인코딩 방식은 아리스메틱(Arithmetic) 인코딩 방법을 포함한다. 아리스메틱 코더(8006)는 아리스메틱 인코더(30004)의 동작 및/또는 방법과 동일 또는 유사한 동작 및/또는 방법을 수행한다. An arithmetic coder (8006) according to embodiments entropy encodes an octree and/or an approximated octree of point cloud data. For example, the encoding method includes an arithmetic encoding method. The arithmetic coder (8006) performs operations and/or methods identical or similar to those of the arithmetic encoder (30004).
실시예들에 따른 메타데이터 처리부(8007)는 포인트 클라우드 데이터에 관한 메타데이터, 예를 들어 설정 값 등을 처리하여 지오메트리 인코딩 및/또는 어트리뷰트 인코딩 등 필요한 처리 과정에 제공한다. 또한 실시예들에 따른 메타데이터 처리부(8007)는 지오메트리 인코딩 및/또는 어트리뷰트 인코딩과 관련된 시그널링 정보를 생성 및/또는 처리할 수 있다. 실시예들에 따른 시그널링 정보는 지오메트리 인코딩 및/또는 어트리뷰트 인코딩과 별도로 인코딩처리될 수 있다. 또한 실시예들에 따른 시그널링 정보는 인터리빙 될 수도 있다.The metadata processing unit (8007) according to the embodiments processes metadata regarding point cloud data, such as setting values, and provides the metadata to a necessary processing step, such as geometry encoding and/or attribute encoding. In addition, the metadata processing unit (8007) according to the embodiments may generate and/or process signaling information related to geometry encoding and/or attribute encoding. The signaling information according to the embodiments may be encoded and processed separately from geometry encoding and/or attribute encoding. In addition, the signaling information according to the embodiments may be interleaved.
색상 변환 처리부(8008), 어트리뷰트 변환 처리부(8009), 예측/리프팅/RAHT 변환 처리부(8010), 아리스메틱 (Arithmetic) 코더(8011)는 어트리뷰트 인코딩을 수행한다. 실시예들에 따른 어트리뷰트 인코딩은 도 1 내지 도 6에서 설명한 어트리뷰트 인코딩과 동일 또는 유사하므로 구체적인 설명은 생략한다.The color conversion processing unit (8008), the attribute conversion processing unit (8009), the prediction/lifting/RAHT conversion processing unit (8010), and the arithmetic coder (8011) perform attribute encoding. Since the attribute encoding according to the embodiments is the same as or similar to the attribute encoding described in FIGS. 1 to 6, a detailed description thereof will be omitted.
실시예들에 따른 색상 변환 처리부(8008)는 어트리뷰트들에 포함된 색상값을 변환하는 색상 변환 코딩을 수행한다. 색상 변환 처리부(8008)는 재구성된 지오메트리를 기반으로 색상 변환 코딩을 수행할 수 있다. 재구성된 지오메트리에 대한 설명은 도 1 내지 도 6에서 설명한 바와 동일하다. 또한 도 3에서 설명한 컬러 변환부(30006)의 동작 및/또는 방법과 동일 또는 유사한 동작 및/또는 방법을 수행한다. 구체적인 설명은 생략한다. The color conversion processing unit (8008) according to the embodiments performs color conversion coding to convert the color values included in the attributes. The color conversion processing unit (8008) can perform color conversion coding based on the reconstructed geometry. The description of the reconstructed geometry is the same as that described with reference to FIGS. 1 to 6. In addition, the color conversion processing unit (8008) performs the same or similar operation and/or method as that of the color conversion unit (30006) described with reference to FIG. 3. A detailed description thereof will be omitted.
실시예들에 따른 어트리뷰트 변환 처리부(8009)는 지오메트리 인코딩이 수행되지 않은 포지션들 및/또는 재구성된 지오메트리를 기반으로 어트리뷰트들을 변환하는 어트리뷰트 변환을 수행한다. 어트리뷰트 변환 처리부(8009)는 도 3에 설명한 어트리뷰트 변환부(30007)의 동작 및/또는 방법과 동일 또는 유사한 동작 및/또는 방법을 수행한다. 구체적인 설명은 생략한다. 실시예들에 따른 예측/리프팅/RAHT 변환 처리부(8010)는 변환된 어트리뷰트들을 RAHT 코딩, 예측 변환 코딩 및 리프팅 변환 코딩 중 어느 하나 또는 조합하여 코딩할 수 있다. 예측/리프팅/RAHT 변환 처리부(8010)는 도 3에서 설명한 RAHT 변환부(30008), LOD 생성부(30009) 및 리프팅 변환부(30010)의 동작들과 동일 또는 유사한 동작들 중 적어도 하나 이상을 수행한다. 또한 예측 변환 코딩, 리프팅 변환 코딩 및 RAHT 변환 코딩에 대한 설명은 도 1 내지 도 6에서 설명한 바와 동일하므로 구체적인 설명은 생략한다.The attribute transformation processing unit (8009) according to embodiments performs attribute transformation to transform attributes based on positions for which geometry encoding has not been performed and/or reconstructed geometry. The attribute transformation processing unit (8009) performs operations and/or methods that are the same as or similar to those of the attribute transformation unit (30007) described in FIG. 3. A detailed description thereof will be omitted. The prediction/lifting/RAHT transformation processing unit (8010) according to embodiments can code transformed attributes by using any one or a combination of RAHT coding, prediction transformation coding, and lifting transformation coding. The prediction/lifting/RAHT transformation processing unit (8010) performs at least one or more of operations that are the same as or similar to those of the RAHT transformation unit (30008), LOD generation unit (30009), and lifting transformation unit (30010) described in FIG. 3. In addition, the description of the prediction transformation coding, lifting transformation coding, and RAHT transformation coding is the same as that described in FIGS. 1 to 6, so a detailed description is omitted.
실시예들에 따른 아리스메틱 코더(8011)는 코딩된 어트리뷰트들을 아리스메틱 코딩에 기반하여 인코딩할 수 있다. 아리스메틱 코더(8011)는 아리스메틱 인코더(300012)의 동작 및/또는 방법과 동일 또는 유사한 동작 및/또는 방법을 수행한다.An arithmetic coder (8011) according to embodiments can encode coded attributes based on arithmetic coding. The arithmetic coder (8011) performs operations and/or methods identical or similar to those of the arithmetic encoder (300012).
실시예들에 따른 전송 처리부(8012)는 인코딩된 지오메트리 및/또는 인코딩된 어트리뷰트, 메타 데이터 정보를 포함하는 각 비트스트림을 전송하거나, 인코딩된 지오메트리 및/또는 인코딩된 어트리뷰트, 메타 데이터 정보를 하나의 비트스트림으로 구성하여 전송할 수 있다. 실시예들에 따른 인코딩된 지오메트리 및/또는 인코딩된 어트리뷰트, 메타 데이터 정보가 하나의 비트스트림으로 구성되는 경우, 비트스트림은 하나 또는 그 이상의 서브 비트스트림들을 포함할 수 있다. 실시예들에 따른 비트스트림은 시퀀스 레벨의 시그널링을 위한 SPS (Sequence Parameter Set), 지오메트리 정보 코딩의 시그널링을 위한 GPS(Geometry Parameter Set), 어트리뷰트 정보 코딩의 시그널링을 위한 APS(Attribute Parameter Set), 타일 레벨의 시그널링을 위한 TPS (Tile Parameter Set)를 포함하는 시그널링 정보 및 슬라이스 데이터를 포함할 수 있다. 슬라이스 데이터는 하나 또는 그 이상의 슬라이스들에 대한 정보를 포함할 수 있다. 실시예들에 따른 하나의 슬라이스는 하나의 지오메트리 비트스트림(Geom00) 및 하나 또는 그 이상의 어트리뷰트 비트스트림들(Attr00, Attr10)을 포함할 수 있다. The transmission processing unit (8012) according to embodiments may transmit each bitstream including encoded geometry and/or encoded attribute, metadata information, or may transmit the encoded geometry and/or encoded attribute, and metadata information as one bitstream. When the encoded geometry and/or encoded attribute, and metadata information according to embodiments are configured as one bitstream, the bitstream may include one or more sub-bitstreams. The bitstream according to embodiments may include signaling information including a Sequence Parameter Set (SPS) for sequence-level signaling, a Geometry Parameter Set (GPS) for signaling geometry information coding, an Attribute Parameter Set (APS) for signaling attribute information coding, and a Tile Parameter Set (TPS) for tile-level signaling, and slice data. The slice data may include information about one or more slices. A slice according to embodiments may include one geometry bitstream (Geom0 0 ) and one or more attribute bitstreams (Attr0 0 , Attr1 0 ).
슬라이스(slice)란, 코딩된 포인트 클라우드 프레임의 전체 또는 일부를 나타내는 신택스 엘리먼트의 시리즈를 말한다.A slice is a series of syntax elements that represent all or part of a coded point cloud frame.
실시예들에 따른 TPS는 하나 또는 그 이상의 타일들에 대하여 각 타일에 관한 정보(예를 들면 bounding box의 좌표값 정보 및 높이/크기 정보 등)을 포함할 수 있다. 지오메트리 비트스트림은 헤더와 페이로드를 포함할 수 있다. 실시예들에 따른 지오메트리 비트스트림의 헤더는 GPS에 포함된 파라미터 세트의 식별 정보(geom_ parameter_set_id), 타일 식별자(geom_tile_id), 슬라이스 식별자(geom_slice_id) 및 페이로드에 포함된 데이터에 관한 정보 등을 포함할 수 있다. 상술한 바와 같이 실시예들에 따른 메타데이터 처리부(8007)는 시그널링 정보를 생성 및/또는 처리하여 전송 처리부(8012)로 전송할 수 있다. 실시예들에 따라, 지오메트리 인코딩을 수행하는 엘레멘트들 및 어트리뷰트 인코딩을 수행하는 엘레멘트들은 점선 처리된 바와 같이 상호 데이터/정보를 공유할 수 있다. 실시예들에 따른 전송 처리부(8012)는 트랜스미터(10003)의 동작 및/또는 전송 방법과 동일 또는 유사한 동작 및/또는 전송 방법을 수행할 수 있다. 구체적인 설명은 도 1 내지 도 2에서 설명한 바와 동일하므로 생략한다. A TPS according to embodiments may include information about each tile (e.g., coordinate value information of a bounding box and height/size information, etc.) for one or more tiles. A geometry bitstream may include a header and a payload. The header of a geometry bitstream according to embodiments may include identification information of a parameter set included in GPS (geom_ parameter_set_id), a tile identifier (geom_tile_id), a slice identifier (geom_slice_id), and information about data included in the payload. As described above, a metadata processing unit (8007) according to embodiments may generate and/or process signaling information and transmit it to a transmission processing unit (8012). According to embodiments, elements that perform geometry encoding and elements that perform attribute encoding may share data/information with each other as indicated by a dotted line. The transmission processing unit (8012) according to the embodiments may perform operations and/or transmission methods identical or similar to those of the transmitter (10003). A detailed description thereof is omitted as it is the same as that described in FIGS. 1 and 2.
도 9는 실시예들에 따른 수신 장치의 예시이다.Fig. 9 is an example of a receiving device according to embodiments.
도 9에 도시된 수신 장치는 도 1의 수신장치(10004) 의 예시이다. 도 9에 도시된 수신 장치는 도 1 내지 도 8에서 설명한 포인트 클라우드 디코더의 동작들 및 디코딩 방법들과 동일 또는 유사한 동작들 및 방법들 중 적어도 어느 하나 이상을 수행할 수 있다. The receiving device illustrated in FIG. 9 is an example of the receiving device (10004) of FIG. 1. The receiving device illustrated in FIG. 9 can perform at least one of the same or similar operations and methods as the operations and decoding methods of the point cloud decoder described in FIGS. 1 to 8.
실시예들에 따른 수신 장치는 수신부(9000), 수신 처리부(9001), 아리스메틱 (arithmetic) 디코더(9002), 오큐판시 코드 (Occupancy code) 기반 옥트리 재구성 처리부(9003), 표면 모델 처리부(삼각형 재구성, 업-샘플링, 복셀화)(9004), 인버스(inverse) 양자화 처리부(9005), 메타데이터 파서(9006), 아리스메틱 (arithmetic) 디코더(9007), 인버스(inverse)양자화 처리부(9008), 예측/리프팅/RAHT 역변환 처리부(9009), 색상 역변환 처리부(9010) 및/또는 렌더러(9011)를 포함할 수 있다. 실시예들에 따른 디코딩의 각 구성요소는 실시예들에 따른 인코딩의 구성요소의 역과정을 수행할 수 있다.A receiving device according to embodiments may include a receiving unit (9000), a receiving processing unit (9001), an arithmetic decoder (9002), an occupancy code-based octree reconstruction processing unit (9003), a surface model processing unit (triangle reconstruction, up-sampling, voxelization) (9004), an inverse quantization processing unit (9005), a metadata parser (9006), an arithmetic decoder (9007), an inverse quantization processing unit (9008), a prediction/lifting/RAHT inverse transform processing unit (9009), a color inverse transform processing unit (9010), and/or a renderer (9011). Each component of the decoding according to embodiments may perform the reverse process of the component of the encoding according to embodiments.
실시예들에 따른 수신부(9000)는 포인트 클라우드 데이터를 수신한다. 수신부(9000)는 도 1의 리시버(10005)의 동작 및/또는 수신 방법과 동일 또는 유사한 동작 및/또는 수신 방법을 수행할 수 있다. 구체적인 설명은 생략한다.The receiving unit (9000) according to the embodiments receives point cloud data. The receiving unit (9000) may perform operations and/or receiving methods identical or similar to those of the receiver (10005) of FIG. 1. A detailed description thereof will be omitted.
실시예들에 따른 수신 처리부(9001)는 수신한 데이터로부터 지오메트리 비트스트림 및/또는 어트리뷰트 비트스트림을 획득할 수 있다. 수신 처리부(9001)는 수신부(9000)에 포함될 수 있다.The receiving processing unit (9001) according to the embodiments can obtain a geometry bitstream and/or an attribute bitstream from the received data. The receiving processing unit (9001) can be included in the receiving unit (9000).
아리스메틱 디코더(9002), 오큐판시 코드 기반 옥트리 재구성 처리부(9003), 표면 모델 처리부(9004) 및 인버스 양자화 처리부(9005)는 지오메트리 디코딩을 수행할 수 있다. 실시예들에 따른 지오메트리 디코딩은 도 1 내지 도 8중 적어도 하나에서 설명한 지오메트리 디코딩과 동일 또는 유사하므로 구체적인 설명은 생략한다. The arithmetic decoder (9002), the occupancy code-based octree reconstruction processing unit (9003), the surface model processing unit (9004), and the inverse quantization processing unit (9005) can perform geometry decoding. Since the geometry decoding according to the embodiments is identical or similar to the geometry decoding described in at least one of FIGS. 1 to 8, a detailed description thereof will be omitted.
실시예들에 따른 아리스메틱 디코더(9002)는 지오메트리 비트스트림을 아리스메틱 코딩을 기반으로 디코딩할 수 있다. 아리스메틱 디코더(9002)는 아리스메틱 디코더(7000)의 동작 및/또는 코딩과 동일 또는 유사한 동작 및/또는 코딩을 수행한다.An arithmetic decoder (9002) according to embodiments can decode a geometry bitstream based on arithmetic coding. The arithmetic decoder (9002) performs operations and/or coding identical to or similar to those of the arithmetic decoder (7000).
실시예들에 따른 오큐판시 코드 기반 옥트리 재구성 처리부(9003)는 디코딩된 지오메트리 비트스트림으로부터 (또는 디코딩 결과 확보된 지오메트리에 관한 정보)로부터 오큐판시 코드를 획득하여 옥트리를 재구성할 수 있다. 오큐판시 코드 기반 옥트리 재구성 처리부(9003)는 옥트리 합성부(7001)의 동작 및/또는 옥트리 생성 방법과 동일 또는 유사한 동작 및/또는 방법을 수행한다. 실시예들에 따른 표면 모델 처리부(9004)는 트라이숩 지오메트리 인코딩이 적용된 경우, 표면 모델 방식에 기반하여 트라이숩 지오메트리 디코딩 및 이와 관련된 지오메트리 리컨스트럭션(예를 들면 삼각형 재구성, 업-샘플링, 복셀화)을 수행할 수 있다. 표면 모델 처리부(9004)는 서페이스 오프록시메이션 합성부(7002) 및/또는 지오메트리 리컨스트럭션부(7003)의 동작과 동일 또는 유사한 동작을 수행한다.The occupancy code-based octree reconstruction processing unit (9003) according to embodiments can reconstruct an octree by obtaining an occupancy code from a decoded geometry bitstream (or information about the geometry obtained as a result of decoding). The occupancy code-based octree reconstruction processing unit (9003) performs the same or similar operations and/or methods as those of the octree synthesis unit (7001) and/or the octree generation method. The surface model processing unit (9004) according to embodiments can perform tri-sub geometry decoding and related geometry reconstructing (e.g., triangle reconstruction, up-sampling, voxelization) based on the surface model method when tri-sub geometry encoding is applied. The surface model processing unit (9004) performs the same or similar operations as those of the surface off-ratio synthesis unit (7002) and/or the geometry reconstructing unit (7003).
실시예들에 따른 인버스 양자화 처리부(9005)는 디코딩된 지오메트리를 인버스 양자화할 수 있다.The inverse quantization processing unit (9005) according to the embodiments can inverse quantize the decoded geometry.
실시예들에 따른 메타데이터 파서(9006)는 수신한 포인트 클라우드 데이터에 포함된 메타데이터, 예를 들어 설정 값 등을 파싱할 수 있다. 메타데이터 파서(9006)는 메타데이터를 지오메트리 디코딩 및/또는 어트리뷰트 디코딩에 전달할 수 있다. 메타데이터에 대한 구체적인 설명은 도 8에서 설명한 바와 동일하므로 생략한다.The metadata parser (9006) according to the embodiments can parse metadata, such as setting values, contained in the received point cloud data. The metadata parser (9006) can pass the metadata to geometry decoding and/or attribute decoding. A detailed description of the metadata is omitted as it is the same as described in FIG. 8.
아리스메틱 디코더(9007), 인버스 양자화 처리부(9008), 예측/리프팅/RAHT 역변환 처리부(9009) 및 색상 역변환 처리부(9010)는 어트리뷰트 디코딩을 수행한다. 어트리뷰트 디코딩는 도 1 내지 도 8 중 적어도 하나에서 설명한 어트리뷰트 디코딩과 동일 또는 유사하므로 구체적인 설명은 생략한다.The arithmetic decoder (9007), the inverse quantization processing unit (9008), the prediction/lifting/RAHT inverse transform processing unit (9009), and the color inverse transform processing unit (9010) perform attribute decoding. Since attribute decoding is identical or similar to the attribute decoding described in at least one of FIGS. 1 to 8, a detailed description thereof will be omitted.
실시예들에 따른 아리스메틱 디코더(9007)는 어트리뷰트 비트스트림을 아리스메틱 코딩으로 디코딩할 수 있다. 아리스메틱 디코더(9007)는 재구성된 지오메트리를 기반으로 어트리뷰트 비트스트림의 디코딩을 수행할 수 있다. 아리스메틱 디코더(9007)는 아리스메틱 디코더(7005)의 동작 및/또는 코딩과 동일 또는 유사한 동작 및/또는 코딩을 수행한다. An arithmetic decoder (9007) according to embodiments can decode an attribute bitstream using arithmetic coding. The arithmetic decoder (9007) can decode the attribute bitstream based on the reconstructed geometry. The arithmetic decoder (9007) performs operations and/or coding identical or similar to those of the arithmetic decoder (7005).
실시예들에 따른 인버스 양자화 처리부(9008)는 디코딩된 어트리뷰트 비트스트림을 인버스 양자화할 수 있다. 인버스 양자화 처리부(9008)는 역양자화부(7006)의 동작 및/또는 역양자화 방법과 동일 또는 유사한 동작 및/또는 방법을 수행한다.The inverse quantization processing unit (9008) according to the embodiments can inverse quantize the decoded attribute bitstream. The inverse quantization processing unit (9008) performs operations and/or methods identical or similar to the operations and/or inverse quantization methods of the inverse quantization unit (7006).
실시예들에 따른 예측/리프팅/RAHT 역변환 처리부(9009)는 재구성된 지오메트리 및 역양자화된 어트리뷰트들을 처리할 수 있다. 예측/리프팅/RAHT 역변환 처리부(9009)는 도 7의 RAHT 변환부(7007), LOD 생성부(7008) 및/또는 인버스 리프팅부(7009)의 동작들 및/또는 디코딩들과 동일 또는 유사한 동작들 및/또는 디코딩들 중 적어도 어느 하나 이상을 수행한다. 실시예들에 따른 색상 역변환 처리부(9010)는 디코딩된 어트리뷰트들에 포함된 컬러 값(또는 텍스쳐)을 역변환하기 위한 역변환 코딩을 수행한다. 색상 역변환 처리부(9010)는 도 7의 컬러 역변환부(7010)의 동작 및/또는 역변환 코딩과 동일 또는 유사한 동작 및/또는 역변환 코딩을 수행한다. 실시예들에 따른 렌더러(9011)는 포인트 클라우드 데이터를 렌더링할 수 있다.The prediction/lifting/RAHT inverse transform processing unit (9009) according to embodiments can process reconstructed geometry and inverse quantized attributes. The prediction/lifting/RAHT inverse transform processing unit (9009) performs at least one or more of the same or similar operations and/or decodings as the operations and/or decodings of the RAHT transformation unit (7007), the LOD generation unit (7008), and/or the inverse lifting unit (7009) of FIG. 7. The color inverse transform processing unit (9010) according to embodiments performs inverse transform coding for inverse transforming the color value (or texture) included in the decoded attributes. The color inverse transform processing unit (9010) performs the same or similar operations and/or inverse transform coding as the operations and/or inverse transform coding of the color inverse transform unit (7010) of FIG. 7. A renderer (9011) according to embodiments can render point cloud data.
도 10은 실시예들에 따른 포인트 클라우드 데이터 송/수신 방법/장치와 연동 가능한 구조의 예시를 나타낸다.Fig. 10 shows an example of a structure that can be linked with a point cloud data transmission/reception method/device according to embodiments.
도 10의 구조는 서버(1060), 로봇(1010), 자율 주행 차량(1020), XR 장치(1030), 스마트폰(1040), 가전(1050) 및/또는 HMD(1070) 중에서 적어도 하나 이상이 클라우드 네트워크(1010)와 연결된 구성을 나타낸다. 로봇(1010), 자율 주행 차량(1020), XR 장치(1030), 스마트폰(1040) 또는 가전(1050) 등은 장치라 호칭된다. 또한, XR 장치(1030)는 실시예들에 따른 포인트 클라우드 데이터 (PCC) 장치에 대응되거나 PCC장치와 연동될 수 있다.The structure of FIG. 10 represents a configuration in which at least one of a server (1060), a robot (1010), an autonomous vehicle (1020), an XR device (1030), a smartphone (1040), a home appliance (1050), and/or an HMD (1070) is connected to a cloud network (1010). The robot (1010), the autonomous vehicle (1020), the XR device (1030), the smartphone (1040), or the home appliance (1050) are referred to as devices. In addition, the XR device (1030) may correspond to or be linked with a point cloud data (PCC) device according to embodiments.
클라우드 네트워크(1000)는 클라우드 컴퓨팅 인프라의 일부를 구성하거나 클라우드 컴퓨팅 인프라 안에 존재하는 네트워크를 의미할 수 있다. 여기서, 클라우드 네트워크(1000)는 3G 네트워크, 4G 또는 LTE(Long Term Evolution) 네트워크 또는 5G 네트워크 등을 이용하여 구성될 수 있다.A cloud network (1000) may refer to a network that constitutes part of a cloud computing infrastructure or exists within the cloud computing infrastructure. Here, the cloud network (1000) may be configured using a 3G network, a 4G or LTE (Long Term Evolution) network, or a 5G network.
서버(1060)는 로봇(1010), 자율 주행 차량(1020), XR 장치(1030), 스마트폰(1040), 가전(1050) 및/또는 HMD(1070) 중에서 적어도 하나 이상과 클라우드 네트워크(1000)을 통하여 연결되고, 연결된 장치들(1010 내지 1070)의 프로세싱을 적어도 일부를 도울 수 있다.The server (1060) is connected to at least one of a robot (1010), an autonomous vehicle (1020), an XR device (1030), a smartphone (1040), a home appliance (1050), and/or an HMD (1070) through a cloud network (1000), and can assist in at least part of the processing of the connected devices (1010 to 1070).
HMD (Head-Mount Display)(1070)는 실시예들에 따른 XR 디바이스 및/또는 PCC 디바이스가 구현될 수 있는 타입 중 하나를 나타낸다. 실시예들에 따른HMD 타입의 디바이스는, 커뮤니케이션 유닛, 컨트롤 유닛, 메모리 유닛, I/O 유닛, 센서 유닛, 그리고 파워 공급 유닛 등을 포함한다. The HMD (Head-Mount Display) (1070) represents one of the types in which the XR device and/or the PCC device according to the embodiments can be implemented. The HMD type device according to the embodiments includes a communication unit, a control unit, a memory unit, an I/O unit, a sensor unit, and a power supply unit.
이하에서는, 상술한 기술이 적용되는 장치(1010 내지 1050)의 다양한 실시 예들을 설명한다. 여기서, 도 10에 도시된 장치(1010 내지 1050)는 상술한 실시예들에 따른 포인트 클라우드 데이터 송/수신 장치와 연동/결합될 수 있다.Below, various embodiments of devices (1010 to 1050) to which the above-described technology is applied are described. Here, the devices (1010 to 1050) illustrated in FIG. 10 can be linked/combined with the point cloud data transmission/reception devices according to the above-described embodiments.
<PCC+XR><PCC+XR>
XR/PCC 장치(1030)는 PCC 및/또는 XR(AR+VR) 기술이 적용되어, HMD(Head-Mount Display), 차량에 구비된 HUD(Head-Up Display), 텔레비전, 휴대폰, 스마트 폰, 컴퓨터, 웨어러블 디바이스, 가전 기기, 디지털 사이니지, 차량, 고정형 로봇이나 이동형 로봇 등으로 구현될 수도 있다.The XR/PCC device (1030) may be implemented as a HMD (Head-Mount Display), a HUD (Head-Up Display) equipped in a vehicle, a television, a mobile phone, a smart phone, a computer, a wearable device, a home appliance, digital signage, a vehicle, a fixed robot, a mobile robot, etc., by applying PCC and/or XR (AR+VR) technology.
XR/PCC 장치(1030)는 다양한 센서들을 통해 또는 외부 장치로부터 획득한 3차원 포인트 클라우드 데이터 또는 이미지 데이터를 분석하여 3차원 포인트들에 대한 위치 데이터 및 어트리뷰트 데이터를 생성함으로써 주변 공간 또는 현실 객체에 대한 정보를 획득하고, 출력할 XR 객체를 렌더링하여 출력할 수 있다. 예컨대, XR/PCC 장치(1030)는 인식된 물체에 대한 추가 정보를 포함하는 XR 객체를 해당 인식된 물체에 대응시켜 출력할 수 있다.The XR/PCC device (1030) can obtain information about surrounding space or real objects by analyzing 3D point cloud data or image data acquired through various sensors or from external devices to generate location data and attribute data for 3D points, and can render and output an XR object to be output. For example, the XR/PCC device (1030) can output an XR object including additional information about a recognized object in correspondence with the recognized object.
<PCC+XR+모바일폰><PCC+XR+Mobile Phone>
XR/PCC 장치(1030)는 PCC기술이 적용되어 모바일폰(1040) 등으로 구현될 수 있다. The XR/PCC device (1030) can be implemented as a mobile phone (1040) or the like by applying PCC technology.
모바일폰(1040)은 PCC 기술에 기반하여 포인트 클라우드 콘텐츠를 디코딩하고, 디스플레이할 수 있다.The mobile phone (1040) can decode and display point cloud content based on PCC technology.
<PCC+자율주행+XR><PCC+Autonomous Driving+XR>
자율 주행 차량(1020)은 PCC 기술 및 XR 기술이 적용되어, 이동형 로봇, 차량, 무인 비행체 등으로 구현될 수 있다. Autonomous vehicles (1020) can be implemented as mobile robots, vehicles, unmanned aerial vehicles, etc. by applying PCC technology and XR technology.
XR/PCC 기술이 적용된 자율 주행 차량(1020)은 XR 영상을 제공하는 수단을 구비한 자율 주행 차량이나, XR 영상 내에서의 제어/상호작용의 대상이 되는 자율 주행 차량 등을 의미할 수 있다. 특히, XR 영상 내에서의 제어/상호작용의 대상이 되는 자율 주행 차량(1020)은 XR 장치(1030)와 구분되며 서로 연동될 수 있다.An autonomous vehicle (1020) to which XR/PCC technology is applied may refer to an autonomous vehicle equipped with a means for providing XR images, or an autonomous vehicle that is the subject of control/interaction within an XR image. In particular, an autonomous vehicle (1020) that is the subject of control/interaction within an XR image is distinct from an XR device (1030) and can be linked with each other.
XR/PCC영상을 제공하는 수단을 구비한 자율 주행 차량(1020)은 카메라를 포함하는 센서들로부터 센서 정보를 획득하고, 획득한 센서 정보에 기초하여 생성된 XR/PCC 영상을 출력할 수 있다. 예컨대, 자율 주행 차량(1020)은 HUD를 구비하여 XR/PCC 영상을 출력함으로써, 탑승자에게 현실 객체 또는 화면 속의 객체에 대응되는 XR/PCC 객체를 제공할 수 있다.An autonomous vehicle (1020) equipped with a means for providing XR/PCC images can obtain sensor information from sensors including cameras and output XR/PCC images generated based on the obtained sensor information. For example, the autonomous vehicle (1020) can be equipped with a HUD to output XR/PCC images, thereby providing passengers with XR/PCC objects corresponding to real objects or objects on a screen.
이때, XR/PCC 객체가 HUD에 출력되는 경우에는 XR/PCC 객체의 적어도 일부가 탑승자의 시선이 향하는 실제 객체에 오버랩되도록 출력될 수 있다. 반면, XR/PCC 객체가 자율 주행 차량의 내부에 구비되는 디스플레이에 출력되는 경우에는 XR/PCC 객체의 적어도 일부가 화면 속의 객체에 오버랩되도록 출력될 수 있다. 예컨대, 자율 주행 차량(1220)은 차로, 타 차량, 신호등, 교통 표지판, 이륜차, 보행자, 건물 등과 같은 객체와 대응되는 XR/PCC 객체들을 출력할 수 있다.At this time, when the XR/PCC object is output to the HUD, at least a part of the XR/PCC object may be output so as to overlap with an actual object toward which the passenger's gaze is directed. On the other hand, when the XR/PCC object is output to a display provided inside the autonomous vehicle, at least a part of the XR/PCC object may be output so as to overlap with an object on the screen. For example, the autonomous vehicle (1220) may output XR/PCC objects corresponding to objects such as a lane, another vehicle, a traffic light, a traffic sign, a two-wheeled vehicle, a pedestrian, a building, etc.
실시예들에 의한 VR (Virtual Reality) 기술, AR (Augmented Reality) 기술, MR (Mixed Reality) 기술 및/또는 PCC(Point Cloud Compression)기술은, 다양한 디바이스에 적용 가능하다. VR (Virtual Reality) technology, AR (Augmented Reality) technology, MR (Mixed Reality) technology and/or PCC (Point Cloud Compression) technology according to the embodiments can be applied to various devices.
즉, VR 기술은, 현실 세계의 객체나 배경 등을 CG 영상으로만 제공하는 디스플레이 기술이다. 반면, AR 기술은, 실제 사물 영상 위에 가상으로 만들어진 CG 영상을 함께 보여 주는 기술을 의미한다. 나아가, MR 기술은, 현실세계에 가상 객체들을 섞고 결합시켜서 보여준다는 점에서 전술한 AR 기술과 유사하다. 그러나, AR 기술에서는 현실 객체와 CG 영상으로 만들어진 가상 객체의 구별이 뚜렷하고, 현실 객체를 보완하는 형태로 가상 객체를 사용하는 반면, MR 기술에서는 가상 객체가 현실 객체와 동등한 성격으로 간주된다는 점에서 AR 기술과는 구별이 된다. 보다 구체적으로 예를 들면, 전술한 MR 기술이 적용된 것이 홀로그램 서비스이다.In other words, VR technology is a display technology that provides only CG images of real-world objects or backgrounds. On the other hand, AR technology refers to a technology that shows a virtually created CG image on top of an image of an actual object. Furthermore, MR technology is similar to the aforementioned AR technology in that it mixes and combines virtual objects in the real world. However, in AR technology, the distinction between real objects and virtual objects created with CG images is clear, and virtual objects are used in a form that complements real objects, whereas in MR technology, virtual objects are considered to have the same characteristics as real objects. A more specific example is the hologram service, which is an application of the aforementioned MR technology.
다만, 최근에는 VR, AR, MR 기술을 명확히 구별하기 보다는 XR (extended Reality) 기술로 부르기도 한다. 따라서, 본 개시의 실시예들은 VR, AR, MR, XR 기술 모두에 적용 가능하다. 이러한 기술은 PCC, V-PCC, G-PCC 기술 기반 인코딩/디코딩이 적용될 수 있다.However, recently, rather than clearly distinguishing between VR, AR, and MR technologies, they are often referred to as XR (extended reality) technologies. Therefore, the embodiments of the present disclosure are applicable to all VR, AR, MR, and XR technologies. These technologies can be applied to encoding/decoding based on PCC, V-PCC, and G-PCC technologies.
실시예들에 따른 PCC방법/장치는 자율 주행 서비스를 제공하는 차량에 적용될 수 있다.The PCC method/device according to the embodiments can be applied to a vehicle providing an autonomous driving service.
자율 주행 서비스를 제공하는 차량은 PCC 디바이스와 유/무선 통신이 가능하도록 연결된다. Vehicles providing autonomous driving services are connected to PCC devices to enable wired/wireless communication.
실시예들에 따른 포인트 클라우드 데이터 (PCC) 송/수신 장치는 차량과 유/무선 통신이 가능하도록 연결된 경우, 자율 주행 서비스와 함께 제공할 수 있는 AR/VR/PCC 서비스 관련 콘텐트 데이터를 수신/처리하여 차량에 전송할 수 있다. 또한 포인트 클라우드 데이터 송/수신 장치 차량에 탑재된 경우, 포인트 클라우드 송/수신 장치는 사용자 인터페이스 장치를 통해 입력된 사용자 입력 신호에 따라 AR/VR/PCC 서비스 관련 콘텐트 데이터를 수신/처리하여 사용자에게 제공할 수 있다. 실시예들에 따른 차량 또는 사용자 인터페이스 장치는 사용자 입력 신호를 수신할 수 있다. 실시예들에 따른 사용자 입력 신호는 자율 주행 서비스를 지시하는 신호를 포함할 수 있다.A point cloud data (PCC) transmission/reception device according to embodiments, when connected to a vehicle to enable wired/wireless communication, can receive/process content data related to AR/VR/PCC services that can be provided together with autonomous driving services and transmit the same to the vehicle. In addition, when the point cloud data transmission/reception device is mounted on a vehicle, the point cloud transmission/reception device can receive/process content data related to AR/VR/PCC services and provide the same to a user according to a user input signal input through a user interface device. A vehicle or a user interface device according to embodiments can receive a user input signal. The user input signal according to embodiments can include a signal instructing an autonomous driving service.
실시예들에 따른 포인트 클라우드 데이터 송신 방법/장치는 도 1의 송신 장치(10000), 포인트 클라우드 비디오 인코더(10002), 트랜스미터(10003), 도 2의 획득-인코딩-전송(20000-20001-20002), 도3의 포인트 클라우드 비디오 인코더, 도8의 전송 장치, 도 10의 디바이스, 도 25의 인코딩 방법, 도 27의 송신 장치, 도 41의 송신 방법 등을 지칭하는 용어로 해석된다.The point cloud data transmission method/device according to the embodiments is interpreted as a term referring to the transmission device (10000) of FIG. 1, the point cloud video encoder (10002), the transmitter (10003), the acquisition-encoding-transmission (20000-20001-20002) of FIG. 2, the point cloud video encoder of FIG. 3, the transmission device of FIG. 8, the device of FIG. 10, the encoding method of FIG. 25, the transmission device of FIG. 27, the transmission method of FIG. 41, etc.
실시예들에 따른 포인트 클라우드 데이터 수신 방법/장치는 도 1의 수신 장치(10004), 리시버(10005), 포인트 클라우드 비디오 디코더(10006), 도 2의 전송-디코딩-렌더링(20002-20003-20004), 도 7의 포인트 클라우드 비디오 디코더, 도9의 수신 장치, 도 10의 디바이스, 도 26의 디코딩 방법, 도28의 수신 장치, 도 41의 수신 방법 등을 지칭하는 용어로 해석된다.The point cloud data receiving method/device according to the embodiments is interpreted as a term referring to the receiving device (10004), receiver (10005), point cloud video decoder (10006) of FIG. 1, transmission-decoding-rendering (20002-20003-20004) of FIG. 2, point cloud video decoder of FIG. 7, receiving device of FIG. 9, device of FIG. 10, decoding method of FIG. 26, receiving device of FIG. 28, receiving method of FIG. 41, etc.
또한, 실시예들에 따른 포인트 클라우드 데이터 송/수신 방법/장치는 실시예들에 따른 방법/장치로 줄여서 호칭될 수 있다.Additionally, the point cloud data transmission/reception method/device according to the embodiments may be abbreviated as the method/device according to the embodiments.
실시예들에 따라, 포인트 클라우드 데이터를 구성하는 지오메트리 데이터, 지오메트리 정보, 위치 정보 등은 서로 동일한 의미로 해석된다. 포인트 클라우드 데이터를 구성하는 어트리뷰트 데이터, 어트리뷰트 정보, 속성 정보 등은 서로 동일한 의미로 해석된다.According to embodiments, geometry data, geometry information, location information, etc., which constitute point cloud data, are interpreted as having the same meaning. Attribute data, attribute information, property information, etc., which constitute point cloud data, are interpreted as having the same meaning.
실시예들에 따른 방법/장치는 스케일러블(scalable) 전송을 고려하여 포인트 클라우드 데이터를 처리할 수 있다.The method/device according to the embodiments can process point cloud data taking into account scalable transmission.
실시예들에 따른 방법/장치는 포인트 클라우드 데이터를 송/수신함에 있어서 수신기 성능 혹은 전송 속도 등으로 인해 데이터 일부에 대한 선택적 디코딩이 필요한 경우 효율적으로 이를 지원하기 위한 방법을 기술한다. 특히 본 문서는 스케일러블 코딩의 효율성을 높이기 위한 기술을 제안하며, 이때 송신측의 인코더에서는 이미 압축된 데이터에 대해 수신측의 디코더에서 필요로 하는 정보를 선택적으로 전달할 수 있고, 디코더에서는 이를 디코딩 할 수 있으며, 이 경우 코딩 단위를 트리 레벨, LOD, 레이어 그룹 단위 등의 의미에 따라 독립된 슬라이스로 구성할 수 있다.The method/device according to the embodiments describes a method for efficiently supporting selective decoding of a portion of data when transmitting/receiving point cloud data due to receiver performance or transmission speed. In particular, this document proposes a technique for increasing the efficiency of scalable coding, wherein an encoder on the transmitting side can selectively transmit information required by a decoder on the receiving side for already compressed data, and the decoder can decode the information. In this case, a coding unit can be configured as an independent slice according to the meaning of a tree level, LOD, layer group unit, etc.
특히, 본 문서는 포인트 클라우드 데이터 압축 방법 중 스케일러블 코딩의 효율성을 높이기 위한 방법을 제안한다. 여기서, 스케일러블 코딩은 수신부의 요청/처리 속도/성능/전송 대역폭 등의 상황에 따라 데이터의 해상도를 점진적으로 변화시킬 수 있는 기술로써 송신측에서는 압축 데이터를 효율적으로 전달하고 수신측에서는 압축된 데이터를 디코딩 할 수 있는 기술이다. 이를 위해 본 개시의 기술과 더불어 레이어를 기반으로 구성된 포인트 클라우드 데이터를 효과적으로 전달하기 위한 패킹(packing)이 적용될 수 있으며, 특히 위치 압축에 대해 직접 압축 모드가 사용되는 경우 스케일러블 PCC 서비스에 보다 적합하도록 슬라이스 세그먼트를 구성하고 송수신하는 방법을 제안한다. 또한, 분포가 넓고 포인트의 밀도가 높은 대용량 포인트 클라우드 데이터에 대한 효율적인 저장과 전송을 위한 압축 방법이 사용될 수 있다.In particular, this paper proposes a method for improving the efficiency of scalable coding among point cloud data compression methods. Here, scalable coding is a technology that can gradually change the resolution of data depending on the circumstances such as the request/processing speed/performance/transmission bandwidth of the receiving end, so that the transmitting end can efficiently transmit compressed data and the receiving end can decode the compressed data. To this end, in addition to the technology of the present disclosure, packing can be applied to effectively transmit point cloud data organized based on layers, and in particular, when a direct compression mode is used for position compression, a method for organizing and transmitting/receiving slice segments to be more suitable for scalable PCC services is proposed. In addition, a compression method can be used for efficient storage and transmission of large-capacity point cloud data with a wide distribution and high point density.
도3 및 도7에 도시된 실시예들에 따른 포인트 클라우드 데이터 송/수신 장치(또는 인코더/디코더로 줄여서 지칭 가능)를 참조하면, 포인트 클라우드 데이터는 포인트들의 집합으로 구성되며, 각 포인트는 지오메트리 정보(또는 지오메트리 또는 지오메트리 데이터라 함)와 어트리뷰트 정보(또는 어트리뷰트 또는 어트리뷰트 데이터라 함)로 구성된다. 지오메트리 정보는 각 포인트의 3차원 위치 정보(xyz)이다. 즉, 각 포인트의 위치는 3차원 공간을 나타내는 좌표계상의 파라미터들(예를 들면 공간을 나타내는 3개의 축인 X축, Y축 및 Z축의 파라미터들 (x,y,z))로 표현된다. 그리고, 어트리뷰트 정보는 그 포인트의 색상(RGB, YUV 등), 반사도(reflectance), 법선(normal vectors), 투명도(transparency) 등을 의미한다. 포인트 클라우드 압축 (Point Cloud Compression: PCC)에서는 3차원 공간 상에 불균일하게 분포하는 분포 특성을 효율적으로 압축하기 위해 octree 기반 압축을 하며, 이를 기반으로 어트리뷰트 정보를 압축한다. 도3 및 도7에 도시된 포인트 클라우드 비디오 인코더 및 포인트 클라우드 비디오 디코더는 각 구성 요소를 통해 실시예들에 따른 동작(들)을 처리할 수 있다.Referring to the point cloud data transmission/reception device (or may be abbreviated as encoder/decoder) according to the embodiments illustrated in FIGS. 3 and 7, the point cloud data is composed of a set of points, and each point is composed of geometry information (or referred to as geometry or geometry data) and attribute information (or referred to as attribute or attribute data). The geometry information is three-dimensional position information (xyz) of each point. That is, the position of each point is expressed as parameters on a coordinate system representing a three-dimensional space (for example, parameters (x, y, z) of the three axes representing the space, namely the X-axis, Y-axis, and Z-axis). In addition, the attribute information means the color (RGB, YUV, etc.), reflectance, normal vectors, transparency, etc. of the point. Point Cloud Compression (PCC) uses octree-based compression to efficiently compress distribution characteristics that are unevenly distributed in three-dimensional space, and compresses attribute information based on this. The point cloud video encoder and point cloud video decoder illustrated in FIGS. 3 and 7 can process operation(s) according to embodiments through each component.
실시예들에 따르면, 송신 장치에서는 포인트 클라우드 데이터의 지오메트리 정보(예, 위치)와 어트리뷰트 정보(예, 색상/밝기/반사도 등)를 각각 압축하여 수신 장치로 전달한다. 이때, 디테일 정도에 따라서 레이어를 갖는 옥트리 구조 또는 LoD (Level of Detail)에 따라서 포인트 클라우드 데이터를 구성할 수 있는데, 이를 기반으로 스케일러블 포인트 클라우드 데이터 코딩(scalable point cloud data coding) 및 리프리젠테이션(representation)이 가능하다. 이때, 수신 장치의 성능 혹은 전송 속도에 의해서 포인트 클라우드 데이터의 일부분만을 디코딩 또는 리프리젠테이션하는 것이 가능한데, 현재는 불필요한 데이터를 사전에 제거하기 위한 방법이 없다. According to embodiments, a transmitting device compresses geometric information (e.g., location) and attribute information (e.g., color/brightness/reflectivity, etc.) of point cloud data and transmits them to a receiving device. At this time, point cloud data can be organized according to an octree structure with layers or LoD (Level of Detail) depending on the level of detail, and scalable point cloud data coding and representation are possible based on this. At this time, it is possible to decode or represent only a part of the point cloud data depending on the performance or transmission speed of the receiving device, but there is currently no method for removing unnecessary data in advance.
즉, 스케일러블 포인트 클라우드 압축 비트스트림에 대해 일부만 전송하면 되는 경우(예, 스케일러블 디코딩 중 일부의 레이어 만을 디코딩하는 경우)에서 필요로 하는 부분만을 선택해서 보낼 수 없기 때문에 도 11과 같이 송신 장치에서 디코딩 후 필요한 부분을 재 인코딩 하거나 도 12와 같이 전체를 수신 장치로 전달한 후 수신 장치에서 디코딩 후 필요한 데이터를 선택적으로 적용 해야한다. That is, in cases where only a portion of a scalable point cloud compression bitstream needs to be transmitted (e.g., when only some layers are decoded during scalable decoding), it is not possible to selectively transmit only the required portion. Therefore, the required portion must be re-encoded after decoding at the transmitting device, as shown in Fig. 11, or the entire bitstream must be transmitted to the receiving device, as shown in Fig. 12, and then the required data must be selectively applied after decoding at the receiving device.
하지만 도 11의 경우 디코딩 및 재 인코딩을 위한 시간으로 인해 딜레이가 발생할 수 있으며, 도 12의 경우 불필요한 데이터까지 수신 장치로 전송함으로 인해 밴드폭(bandwidth) 효율이 떨어지고, 고정된 밴드폭을 사용하는 경우 데이터 퀄리티(data quality)를 낮추어 전송해야 하는 단점이 있다.However, in the case of Fig. 11, there may be a delay due to the time for decoding and re-encoding, and in the case of Fig. 12, there is a disadvantage in that bandwidth efficiency is reduced because unnecessary data is transmitted to the receiving device, and when a fixed bandwidth is used, data quality must be lowered for transmission.
따라서, 실시예들에 따른 방법/장치는 포인트 클라우드를 영역별로 나누어 처리할 수 있도록 슬라이스를 제공한다. Accordingly, the method/device according to the embodiments provides slices so that the point cloud can be divided and processed by region.
특히, 옥트리 기반의 위치 압축의 경우 엔트로피(entropy) 기반 압축 방법과 다이렉트 압축(direct coding)이 함께 사용될 수 있는데, 이 경우 효율적으로 스케일러빌리티(scalability)를 활용하기 위한 슬라이스 구성을 제안한다.In particular, for octree-based positional compression, entropy-based compression methods and direct coding can be used together, in which case a slice configuration is proposed to efficiently utilize scalability.
또한, 실시예들에 따른 방법/장치는 포인트 클라우드 데이터의 슬라이스 세분화 구조를 정의하고, 스케일러블 전송(scalable transmission)을 위한 스케일러블 레이어(scalable layer) 및 슬라이스(slice) 구조를 시그널링할 수 있다.Additionally, the method/device according to the embodiments can define a slice segmentation structure of point cloud data and signal a scalable layer and slice structure for scalable transmission.
실시예들에 따른 방법/장치는 효율적인 비트스트림 전달 및 디코딩을 위해서, 비트스트림을 특정 단위로 구분하여 처리할 수 있다.The method/device according to the embodiments can process a bitstream by dividing it into specific units for efficient bitstream transmission and decoding.
실시예들에 따른 방법/장치는 레이어로 이루어진 포인트 클라우드 데이터에 대해 비트스트림 단위에서 선택적으로 전달 및 디코딩을 할 수 있도록 한다. The method/device according to the embodiments enables selective transmission and decoding of point cloud data composed of layers in bitstream units.
실시예들에 따른 단위는 LOD, 레이어, 슬라이스 등으로 지칭될 수 있다. LOD는 어트리뷰트 데이터 코딩의 LOD와 같은 용어이지만, 또 다른 의미로써, 비트스트림의 레이어 구조를 위한 데이터 단위를 의미할 수 있다. 실시예들에 따른 LOD는 포인트 클라우드 데이터의 레이어 구조, 예를 들어, 옥트리 또는 여러 트리 등의 깊이(레벨)에 기반한, 하나의 깊이에 대응하거나 두 개 이상의 깊이를 묶는 개념일 수 있다. 마찬가지로, 레이어는 서브-비트스트림의 단위를 생성하기 위한 것으로써, 하나의 깊이에 대응하거나 두 개 이상의 깊이를 묶는 개념이고, 하나의 LOD에 대응하거나 두 개 이상의 LOD에 대응할 수 있다. 또한, 슬라이스는 서브-비트스트림의 단위를 구성하기 위한 단위로써, 하나의 깊이에 대응하거나, 하나의 깊이 일부에 대응하거나, 두 개 이상의 깊이들에 대응할 수 있다. 또한, 슬라이스는 하나의 LOD에 대응하거나, 하나의 LOD 일부에 대응하거나, 두 개 이상의 LOD들에 대응할 수 있다. 실시예들에 따라, LOD, 레이어, 슬라이스는 서로 대응하거나 포함 관계일 수 있다. 또한, 실시예들에 따른 단위는 LOD, 레이어, 슬라이스, 레이어 그룹, 서브 그룹 등을 포함하고, 서로 상호보완하여 지칭될 수 있다. 실시예들에 따라, 옥트리 구조에서 레이어, 깊이(depth), 레벨, 깊이 레벨은 동일한 의미로 사용될 수 있다. A unit according to embodiments may be referred to as LOD, layer, slice, etc. LOD is a term similar to LOD of attribute data coding, but in another sense, it may mean a data unit for a layer structure of a bitstream. LOD according to embodiments may be a concept corresponding to one depth or binding two or more depths based on the depth (level) of the layer structure of point cloud data, for example, an octree or multiple trees. Similarly, a layer is a concept corresponding to one depth or binding two or more depths for generating a unit of a sub-bitstream, and may correspond to one LOD or corresponding to two or more LODs. In addition, a slice is a unit for configuring a unit of a sub-bitstream, and may correspond to one depth, a portion of one depth, or corresponding to two or more depths. In addition, a slice may correspond to one LOD, a portion of one LOD, or corresponding to two or more LODs. In embodiments, LOD, layer, and slice may correspond to or be in an inclusive relationship with each other. Additionally, units according to embodiments may include LODs, layers, slices, layer groups, subgroups, etc., and may be referred to as complementary to each other. According to embodiments, in an octree structure, layer, depth, level, and depth level may be used with the same meaning.
도 13은 실시예들에 따른 레이어 기반 포인트 클라우드 데이터 구성의 예시를 나타낸 도면이다. 도 13은 루트 노드의 깊이 레벨을 0, 리프 노드의 깊이 레벨을 7로 설정한 옥트리 구조의 예시이다. Fig. 13 is a diagram illustrating an example of a layer-based point cloud data configuration according to embodiments. Fig. 13 is an example of an octree structure in which the depth level of the root node is set to 0 and the depth level of the leaf node is set to 7.
실시예들에 따른 방법/장치는 도 13과 같이 레이어 기반 포인트 클라우드 데이터를 구성하여, 포인트 클라우드 데이터를 인코딩하고 디코딩할 수 있다.The method/device according to the embodiments can encode and decode point cloud data by configuring layer-based point cloud data as shown in FIG. 13.
실시예들에 따른 포인트 클라우드 데이터의 레이어링(layering)은 응용분야에 따라서 SNR, 공간 해상도(spatial resolution), 컬러(color), 템포럴 프리퀀시(temporal frequency), 비트깊이(bitdepth), 등의 다양한 관점에서의 레이어(layer) 구조를 가질 수 있으며, 옥트리(octree) 구조 혹은 LOD 구조를 기반으로 데이터의 밀도가 증가하는 방향으로 레이어(layer)를 이룰 수 있다.Layering of point cloud data according to embodiments may have a layer structure in various perspectives such as SNR, spatial resolution, color, temporal frequency, bit depth, etc. depending on the application field, and may form layers in the direction of increasing data density based on an octree structure or LOD structure.
즉, 옥트리 구조를 기반으로 LOD를 생성하는 경우 디테일이 증가되는 방향, 즉, 옥트리 깊이 레벨이 증가하는 방향으로 LOD가 증가하도록 정의할 수 있다. 본 문서에서 레이어는 레벨(level), 깊이(depth), 깊이 레벨과 동일한 의미로 사용될 수 있다.That is, when generating LOD based on an octree structure, the LOD can be defined to increase in the direction of increasing detail, i.e., in the direction of increasing octree depth levels. In this document, the term "layer" can be used interchangeably with "level," "depth," and "depth level."
도 13을 예로 들면, 루트 노드 레벨(또는 루트 레벨이라 함)을 제외하고 7개의 깊이 레벨을 갖는 옥트리 구조에서 LOD 0는 루트 노드 레벨부터 옥트리 깊이 레벨 4까지 포함하여 구성되고, LOD 1 은 루트 노드 레벨부터 옥트리 깊이 레벨 5까지 포함하여 구성되며, LOD 2는 루트 노드 레벨부터 옥트리 깊이 레벨 7까지 포함하여 구성된다. As an example, in Fig. 13, in an octree structure having 7 depth levels excluding the root node level (or referred to as the root level), LOD 0 is configured including from the root node level to octree depth level 4, LOD 1 is configured including from the root node level to octree depth level 5, and LOD 2 is configured including from the root node level to octree depth level 7.
도 14의 (a)는 실시예들에 따른 지오메트리 데이터의 비트스트림 구조를 나타내고, 도 14의 (b)는 실시예들에 따른 어트리뷰트 데이터의 비트스트림 구조를 나타낸다.Fig. 14 (a) shows a bitstream structure of geometry data according to embodiments, and Fig. 14 (b) shows a bitstream structure of attribute data according to embodiments.
실시예들에 따른 방법/장치는 도 13과 같은 옥트리 구조의 레이어링에 기반하여 LOD들을 생성하고, 도 14의 (a), 도 14의 (b)와 같은 지오메트리 비트스트림 및 어트리뷰트 비트스트림을 구성할 수 있다.The method/device according to the embodiments can generate LODs based on layering of an octree structure as in FIG. 13, and configure a geometry bitstream and an attribute bitstream as in (a) and (b) of FIG. 14.
실시예들에 따른 송신 장치는 포인트 클라우드 압축(point cloud compression)을 통해 획득한 비트스트림(bitstream)을 데이터(data)의 종류에 따라서 지오메트리 비트스트림(geometry bitstream)과 어트리뷰트 비트스트림(attribute bitstream)으로 나누어 전달할 수 있다. A transmission device according to embodiments can divide a bitstream obtained through point cloud compression into a geometry bitstream and an attribute bitstream according to the type of data and transmit the bitstream.
이때, 각각의 비트스트림(bitstream)은 슬라이스(slice)로 구성되어 전달될 수 있다. 실시예들에 따르면, 레이어(layer) 정보 또는 LoD 정보와 관련없이 지오메트리 비트스트림(예, 도 14의 (a))과 어트리뷰트 비트스트림(예, 도 14의 (b))을 각각 하나의 슬라이스로 구성하여 전달할 수 있다. 이 경우, 레이어 또는 LoD 중 일부만을 사용하려면, 비트스트림을 디코딩하는 과정, 사용하고자 하는 부분만을 선택하고 불필요한 부분을 제거하는 과정, 및 필요한 정보만을 기반으로 다시 인코딩하는 과정을 거쳐야 한다.At this time, each bitstream can be transmitted as a slice. According to embodiments, a geometry bitstream (e.g., (a) of FIG. 14) and an attribute bitstream (e.g., (b) of FIG. 14) can each be transmitted as a slice, regardless of layer information or LoD information. In this case, in order to use only a part of a layer or LoD, a process of decoding the bitstream, a process of selecting only the part to be used and removing unnecessary parts, and a process of re-encoding based only on the necessary information must be performed.
본 문서는 이러한 불필요한 중간 과정을 피하기 위해 비트스트림을 레이어 (또는 LoD) 단위로 나누어 전달하는 방법을 제안한다.This paper proposes a method to divide the bitstream into layers (or LoDs) and deliver them to avoid these unnecessary intermediate processes.
도 15는 실시예들에 따라 비트스트림을 레이어 (또는 LoD) 단위로 나누어 전달하기 위한 비트스트림의 구성의 예시를 보인 도면이다. FIG. 15 is a diagram showing an example of a configuration of a bitstream for dividing the bitstream into layer (or LoD) units and transmitting it according to embodiments.
예를 들어, LoD 기반의 PCC 기술의 경우를 고려해보면, 낮은 LoD가 높은 LoD에 포함되는 구조를 갖는다. 즉, 상위 LoD는 하위 LoD의 포인트들을 모두 포함한다. 그리고, 현재 LoD에는 포함되지만, 이전 LoD에는 포함되지 않는 포인트들, 즉 각 LoD에 대해 새롭게 추가되는 포인트들의 정보를 R(rest or retained) 이라고 정의하면 송신 장치는 도 15와 같이 초기 LoD 정보 및 각 LoD에서 신규로 포함되는 정보 R을 각각의 독립된 단위(예, 슬라이스)로 나누어서 전달할 수 있다.For example, considering the case of LoD-based PCC technology, it has a structure in which a lower LoD is included in a higher LoD. That is, the upper LoD includes all points of the lower LoD. In addition, if the information of points newly added for each LoD, that is, points included in the current LoD but not in the previous LoD, is defined as R (rest or retained), the transmitting device can divide the initial LoD information and the information R newly included in each LoD into independent units (e.g., slices) and transmit them, as shown in FIG. 15.
다시 말해, 각 LoD를 구성하기 위해 이전 LoD 대비 새롭게 추가되는 포인트들의 집합을 정보 R로 정의할 수 있다. 도 15는 LoD1이 LoD0+정보 R1을 포함하고, LoD2가 LoD1+정보 R2를 포함하는 예시이다.In other words, the set of points newly added compared to the previous LoD to constitute each LoD can be defined as information R. Figure 15 is an example in which LoD1 includes LoD0 + information R1, and LoD2 includes LoD1 + information R2.
일 실시예에 따르면, 하나 또는 복수의 옥트리 깊이 레벨에 대해 샘플링된 포인트들을 정보 R에 속한 데이터로 결정할 수 있다. 즉, 하나 또는 복수의 옥트리 깊이 레벨에 대해 샘플링된 (즉, 오큐파이드 노드에 매칭되는) 포인트들의 집합을 정보 R로 정의할 수 있다. 다른 실시예에 따르면, 하나의 옥트리 깊이 레벨에 대해 샘플링된 포인트들을 일정 기준에 의해 복수의 정보 R로 나누어 정의할 수도 있다. 이때, 하나의 옥트리 깊이 레벨을 복수의 정보 R로 나누는 다양한 기준이 다음과 같이 고려될 수 있다. 예를 들어, 하나의 옥트리 깊이 레벨을 M개의 정보 R로 나누는 경우, 정보 R 내의 데이터가 연속된 몰톤 코드를 갖는 M 개의 정보 R이 되도록 할 수도 있고, 또는 몰톤 코드 순서 인덱스를 M으로 나눈 나머지가 같은 것끼리 모아 M개의 정보 R이 되도록 할 수도 있으며, 또는 형제 노드로 묶었을 때 같은 위치에 있는 것끼리 묶어서 M개의 정보 R이 되도록 할 수도 있다. 또 다른 실시예에 따르면, 필요한 경우 복수의 옥트리 깊이 레벨의 샘플링된 포인트들의 일부를 정보 R로 결정할 수도 있다. According to one embodiment, points sampled for one or more octree depth levels can be determined as data belonging to information R. That is, a set of points sampled (i.e., matching occupied nodes) for one or more octree depth levels can be defined as information R. According to another embodiment, points sampled for one octree depth level can be defined by dividing them into multiple pieces of information R according to a certain criterion. At this time, various criteria for dividing one octree depth level into multiple pieces of information R can be considered as follows. For example, when dividing one octree depth level into M pieces of information R, data in the information R can be made into M pieces of information R having consecutive Moulton codes, or M pieces of information R can be made by grouping together pieces with the same remainder when Moulton code order index is divided by M, or M pieces of information R can be made by grouping together pieces at the same position when grouped as sibling nodes. According to another embodiment, if necessary, some of the sampled points of multiple octree depth levels can be determined as information R.
도 15는 실시예들에 따라 지오메트리 비트스트림과 어트리뷰트 비트스트림이 각각 3개의 슬라이스로 나누어지는 예시를 보인다. 각 슬라이스는 헤더와 실제 데이터(예, 지오메트리 데이터, 어트리뷰트 데이터)를 포함하는 페이로드(또는 데이터 유닛이라 함)을 포함한다. 상기 헤더는 해당 슬라이스의 정보를 포함할 수 있다. 또한 상기 헤더는 LoD 구성을 위해 이전 슬라이스 또는 이전 LoD 또는 이전 레이어와 관련된 참조 정보를 더 포함할 수 있다.Figure 15 shows an example in which a geometry bitstream and an attribute bitstream are each divided into three slices according to embodiments. Each slice includes a header and a payload (or data unit) containing actual data (e.g., geometry data, attribute data). The header may include information about the corresponding slice. In addition, the header may further include reference information related to a previous slice, a previous LoD, or a previous layer for LoD configuration.
도 15를 예로 들면, 지오메트리 비트스트림은 LoD0에 속하는 지오메트리 데이터를 전달하는 슬라이스, 정보 R1에 속하는 지오메트리 데이터를 전달하는 슬라이스, 정보 R2에 속하는 지오메트리 데이터를 전달하는 슬라이스로 나누어진다. 그리고 어트리뷰트 비트스트림은 LoD0에 속하는 어트리뷰트 데이터를 전달하는 슬라이스, 정보 R1에 속하는 어트리뷰트 데이터를 전달하는 슬라이스, 정보 R2에 속하는 어트리뷰트 데이터를 전달하는 슬라이스로 나누어진다.Taking Fig. 15 as an example, the geometry bitstream is divided into a slice that carries geometry data belonging to LoD0, a slice that carries geometry data belonging to information R1, and a slice that carries geometry data belonging to information R2. And the attribute bitstream is divided into a slice that carries attribute data belonging to LoD0, a slice that carries attribute data belonging to information R1, and a slice that carries attribute data belonging to information R2.
실시예들에 따른 수신 방법/장치는 LOD 또는 레이어로 나누어진 비트스트림을 수신하고, 복잡한 중간과정 없이, 사용하고자 하는 데이터만 효율적으로 디코딩할 수 있다.The receiving method/device according to the embodiments can receive a bitstream divided into LODs or layers and efficiently decode only the data to be used without a complex intermediate process.
이때, 비트스트림을 전달하는 방법은 다양한 실시예들이 적용될 수 있다.At this time, various embodiments can be applied to the method of transmitting the bitstream.
예를 들어, 지오메트리 비트스트림과 어트리뷰트 비트스트림이 각각 전달될 수도 있고, 지오메트리 비트스트림과 어트리뷰트 비트스트림이 하나의 비트스트림으로 다중화되어 전달될 수도 있다.For example, the geometry bitstream and the attribute bitstream may be transmitted separately, or the geometry bitstream and the attribute bitstream may be multiplexed into a single bitstream and transmitted.
또한, 각 비트스트림이 LoD0와 하나 이상의 정보 R를 포함할 때, LoD0와 하나 이상의 정보 R의 전달 순서가 달라질 수 있다.Additionally, when each bitstream includes LoD0 and one or more pieces of information R, the transmission order of LoD0 and one or more pieces of information R may be different.
도 15는 지오메트리 비트스트림과 어트리뷰트 비트스트림이 각각 전달되며, 이때 지오메트리 비트스트림을 포함하는 LoD0과 2개의 정보 R(R1, R2)이 순차적으로 전달되고, 어트리뷰트 비트스트림을 포함하는 LoD0과 2개의 정보 R(R1, R2)이 순차적으로 전달되는 예이다. Figure 15 is an example in which a geometry bitstream and an attribute bitstream are transmitted respectively, and at this time, LoD0 including a geometry bitstream and two pieces of information R(R1, R2) are transmitted sequentially, and LoD0 including an attribute bitstream and two pieces of information R(R1, R2) are transmitted sequentially.
도 16은 실시예들에 따라 지오메트리 비트스트림과 어트리뷰트 비트스트림이 하나의 비트스트림으로 다중화될 때 비트스트림 정렬 방법의 일 예시를 나타낸다.FIG. 16 illustrates an example of a bitstream alignment method when a geometry bitstream and an attribute bitstream are multiplexed into one bitstream according to embodiments.
실시예들에 따른 송신 방법/장치는 비트스트림을 전달하는 경우 도 16과 같이 지오메트리 데이터 및 어트리뷰트 데이터를 직렬적으로 전달할 수 있다. 이때, 데이터의 종류에 따라서 지오메트리 데이터(또는 지오메트리 정보라 함) 전체를 먼저 보낸 후 어트리뷰트 데이터(또는어트리뷰트 정보라 함)를 전달할 수 있다. 이 경우 전달되는 비트스트림의 정보를 기반으로 지오메트리 데이터를 빠르게 복원할 수 있다는 장점이 있다. The transmission method/device according to the embodiments can serially transmit geometry data and attribute data as illustrated in FIG. 16 when transmitting a bitstream. At this time, depending on the type of data, the entire geometry data (or geometry information) can be transmitted first, and then attribute data (or attribute information) can be transmitted. In this case, there is an advantage in that the geometry data can be quickly restored based on the information in the transmitted bitstream.
도 16은 예를 들어, 지오메트리 데이터를 포함하는 레이어(LOD)들이 비트스트림 내 먼저 위치하고, 어트리뷰트 데이터를 포함하는 레이어(LOD)들이 지오메트리 레이어 뒤에 위치할 수 있다. 어트리뷰트 데이터가 지오메트리 데이터에 의존적이므로, 지오메트리 데이터를 포함하는 레이어(LOD)들이 어트리뷰트 데이터를 포함하는 레이어(LOD)들보다 먼저 위치할 수 있다. 도 16은 지오메트리 데이터를 포함하는 LoD0과 2개의 정보 R(R1, R2)이 순차적으로 전달되고, 이어서 어트리뷰트 데이터를 포함하는 LoD0과 2개의 정보 R(R1, R2)이 순차적으로 전달되는 예이다. 이때, 위치는 실시예들에 따라 다양하게 변경 가능하다. 또한 지오메트리 헤더 간 참조가 가능하고, 어트리뷰트 헤더 및 지오메트리 헤더 간 참조도 가능하다.FIG. 16 illustrates an example in which layers (LODs) including geometry data may be positioned first in the bitstream, and layers (LODs) including attribute data may be positioned after the geometry layer. Since attribute data is dependent on geometry data, layers (LODs) including geometry data may be positioned before layers (LODs) including attribute data. FIG. 16 illustrates an example in which LoD0 including geometry data and two pieces of information R (R1, R2) are sequentially transmitted, and then LoD0 including attribute data and two pieces of information R (R1, R2) are sequentially transmitted. At this time, the positions may be variously changed according to embodiments. In addition, references between geometry headers are possible, and references between attribute headers and geometry headers are also possible.
도 17은 실시예들에 따라 지오메트리 비트스트림과 어트리뷰트 비트스트림이 하나의 비트스트림으로 다중화될 때 비트스트림 정렬 방법의 다른 예시를 나타낸다.FIG. 17 illustrates another example of a bitstream alignment method when a geometry bitstream and an attribute bitstream are multiplexed into one bitstream according to embodiments.
실시예들에 따른 송신 방법/장치는 비트스트림을 전달하는 경우 도 17과 같이 지오메트리 데이터 및 어트리뷰트 데이터를 직렬적으로 전달할 수 있다. 이때, 지오메트리 데이터 및 어트리뷰트 데이터를 포함하는 동일 레이어(layer)를 구성하는 비트스트림을 모아서 전달할 수도 있다. 이 경우 지오메트리와 어트리뷰트의 병렬 디코딩이 가능한 압축 기법을 사용하는 경우, 디코딩 수행 시간을 단축시킬 수 있다. 이때, 먼저 처리해야하는 정보 (작은 LoD, geometry를 attribute 보다 선행해야 함)를 먼저 배치할 수 있다. The transmission method/device according to the embodiments can serially transmit geometry data and attribute data as shown in FIG. 17 when transmitting a bitstream. At this time, bitstreams constituting the same layer including geometry data and attribute data can also be collected and transmitted. In this case, if a compression technique capable of parallel decoding of geometry and attributes is used, the decoding execution time can be shortened. At this time, information that must be processed first (small LoD, geometry must precede attributes) can be placed first.
도 17은 지오메트리 데이터를 포함하는 LoD0, 어트리뷰트 데이터를 포함하는 LoD0, 지오메트리 데이터를 포함하는 정보 R1, 어트리뷰트 데이터를 포함하는 정보 R1, 지오메트리 데이터를 포함하는 정보 R2, 어트리뷰트 데이터를 포함하는 정보 R2의 순서로 전달되는 예이다. 이때, 위치는 실시예들에 따라 다양하게 변경 가능하다. 또한 지오메트리 헤더 간 참조가 가능하고, 어트리뷰트 헤더 및 지오메트리 헤더 간 참조도 가능하다.Figure 17 is an example in which LoD0 including geometry data, LoD0 including attribute data, information R1 including geometry data, information R1 including attribute data, information R2 including geometry data, and information R2 including attribute data are transmitted in that order. At this time, the position can be changed in various ways depending on the embodiments. In addition, references between geometry headers are possible, and references between attribute headers and geometry headers are also possible.
실시예들에 따른 송/수신 방법/장치는 비트스트림을 송신하고 수신하는 경우 응용 분야에서 희망하는 레이어(layer)(혹은 LoD)를 비트스트림 레벨(bitstream level)에서 효율적으로 선택할 수 있다. 실시예들에 따른 비트스트림 정렬 방법 중 도 16과 같이 지오메트리 정보를 모아서 보내는 경우, 특정 비트스트림 레벨(bitstream level) 선택 후에 중간에 비는 부분이 생길 수 있으며, 이 경우 비트스트림을 재배치해야할 수 있다. The transmission/reception method/device according to the embodiments can efficiently select a desired layer (or LoD) in an application field at the bitstream level when transmitting and receiving a bitstream. In the bitstream alignment method according to the embodiments, when geometry information is collected and transmitted as in FIG. 16, an empty part may appear in the middle after selecting a specific bitstream level, and in this case, the bitstream may need to be rearranged.
한편, 도 17과 같이 레이어에 따라서 지오메트리 데이터와 어트리뷰트 데이터를 묶어서 전달하는 경우, 응용 분야에 따라 도 18(a) 내지 도 18(c) 또는 도 19(a) 내지 도 19(c)과 같이 필요한 정보를 선택적으로 전달하거나 및/또는 불필요한 정보를 선택적으로 제거할 수 있다.Meanwhile, when geometry data and attribute data are bundled and transmitted according to layers as in Fig. 17, necessary information can be selectively transmitted and/or unnecessary information can be selectively removed as in Figs. 18(a) to 18(c) or Figs. 19(a) to 19(c) depending on the application field.
도 18(a) 내지 도 18(c)는 실시예들에 따라 대칭적인 지오메트리-어트리뷰트 선택의 예시를 보인 도면이다. FIGS. 18(a) to 18(c) are drawings showing examples of symmetrical geometry-attribute selection according to embodiments.
실시예들에 따라 비트스트림의 일부를 선택해야 하는 경우, 도 18(a) 내지 도 18(c)를 예로 들면 송신 장치는 LoD1(즉, LoD0+R1) 까지만 선택하여 전송하고, 상위 레이어(layer)에 해당하는 정보 R2(즉, LoD2 중에서 신규 부분)은 비트스트림에서 제거하여 전송하지 않는다. 대칭적인 지오메트리-어트리뷰트 선택의 경우, 동일 레이어의 지오메트리 데이터와 어트리뷰트 데이터는 동시에 선택되어 전송되거나 또는 동시에 선택되어 제거된다. In cases where a part of a bitstream needs to be selected according to embodiments, taking FIGS. 18(a) to 18(c) as an example, the transmitting device selects and transmits only up to LoD1 (i.e., LoD0+R1), and removes and does not transmit information R2 (i.e., a new part among LoD2) corresponding to the upper layer from the bitstream. In the case of symmetric geometry-attribute selection, geometry data and attribute data of the same layer are selected and transmitted simultaneously, or selected and removed simultaneously.
도 19(a) 내지 도 19(c)은 실시예들에 따라 비대칭적인 지오메트리-어트리뷰트 선택의 예시를 보인 도면이다. 비대칭적인 지오메트리-어트리뷰트 선택의 경우, 동일 레이어의 지오메트리 데이터와 어트리뷰트 데이터 중 하나만 선택되어 전송되거나 또는 제거된다.Figures 19(a) to 19(c) are diagrams illustrating examples of asymmetric geometry-attribute selection according to embodiments. In the case of asymmetric geometry-attribute selection, only one of the geometry data and attribute data of the same layer is selected and transmitted or removed.
실시예들에 따라 비트스트림의 일부를 선택해야 하는 경우, 도 19(a) 내지 도 19(c)을 예로 들면, 송신 장치는 지오메트리 데이터를 포함하는 LoD1 (LoD0 +R1), 어트리뷰트 데이터를 포함하는 LoD1 (LoD0 +R1), 그리고 지오메트리 데이터를 포함하는 R2는 선택하여 전송하고, 어트리뷰트 데이터를 포함하는 R2는 비트스트림에서 제거하여 전송하는 않는다. 즉, 어트리뷰트 데이터는 상위 레이어(R2)의 데이터를 제외한 나머지 데이터를 선택하여 전송하고, 지오메트리 데이터는 모든 레이어(옥트리 구조의 레벨0(루트 레벨)에서 레벨7(리프 레벨)까지)의 데이터를 전송하는 예이다. In embodiments where a part of a bitstream needs to be selected, taking FIGS. 19(a) to 19(c) as examples, the transmitting device selects and transmits LoD1 (LoD0 +R1) including geometry data, LoD1 (LoD0 +R1) including attribute data, and R2 including geometry data, and removes R2 including attribute data from the bitstream and does not transmit it. That is, attribute data is an example of selecting and transmitting the remaining data except for data of an upper layer (R2), and geometry data is an example of transmitting data of all layers (from level 0 (root level) to level 7 (leaf level) of an octree structure).
실시예들에 따라 비트스트림의 일부를 선택해야 하는 경우, 도 18(a) 내지 도 18(c)의 대칭적인 지오메트리-어트리뷰트 선택 방법 또는 도 19(a) 내지 도 19(c)의 비대칭적인 지오메트리-어트리뷰트 선택 방법 또는 대칭적인 지오메트리-어트리뷰트 선택 방법과 비대칭적인 지오메트리-어트리뷰트 선택 방법을 조합하여 비트스트림의 일부를 선택할 수 있다.In cases where a portion of a bitstream needs to be selected according to embodiments, a portion of the bitstream can be selected by using the symmetrical geometry-attribute selection method of FIGS. 18(a) to 18(c) or the asymmetrical geometry-attribute selection method of FIGS. 19(a) to 19(c) or a combination of the symmetrical geometry-attribute selection method and the asymmetrical geometry-attribute selection method.
위에서 설명한 비트스트림의 분할, 일부 비트스트림의 선택 등은 포인트 클라우드 데이터의 스케일러빌리티를 지원하기 위해서이다. The segmentation of bitstreams and selection of some bitstreams described above are intended to support the scalability of point cloud data.
본 문서는 포인트 클라우드 데이터를 옥트리 구조로 표현하고, LOD(혹은 레이어)별로 구분했을 때, 스케일러블한 인코딩/디코딩(스케일러빌리티)을 지원할 수 있다.This document represents point cloud data in an octree structure and supports scalable encoding/decoding (scalability) when separated by LOD (or layer).
실시예들에 따른 스케일러빌리티 기능은 슬라이스 레벨 스케일러빌리티(Slice level scalability) 및/또는 옥트리 레벨 스케일러빌리티(octree level scalability)를 포함할 수 있다.Scalability features according to embodiments may include slice level scalability and/or octree level scalability.
실시예들에 따른 LoD는 하나 또는 복수의 옥트리 레이어(octree layer)들의 집합을 나타내기 위한 단위로 사용할 수 있다. 또한, LoD는 슬라이스(slice) 단위로 구성하기 위한 옥트리 레이어(octree layer)의 묶음의 의미를 가질 수도 있다. According to embodiments, a LoD may be used as a unit to represent a set of one or more octree layers. Additionally, a LoD may also have the meaning of a bundle of octree layers to be configured as a slice unit.
실시예들에 따른 LOD는 어트리뷰트 인코딩/디코딩 시 LOD 의미를 확장하여, 데이터를 디테일하게 분할하는 단위와 같이 넓은 의미로 사용될 수 있다.LOD according to the embodiments can be used in a broad sense, such as a unit for dividing data in detail, by extending the meaning of LOD when encoding/decoding attributes.
즉, 실제 옥트리 레이어(octree layer) (혹은 스케일러블 어트리뷰트 레이어(scalable attribute layer))에 의한 공간 스케일러빌리티(spatial scalability)는 각각의 옥트리 레이어(octree layer)에 대해 제공될 수 있지만, 비트스트림 파싱(bitstream parsing) 이전에 슬라이스 단위에서 스케일러빌리티를 구성하는 경우 LoD 단위에서 선별할 수 있다. That is, spatial scalability by the actual octree layer (or scalable attribute layer) can be provided for each octree layer, but it can be selected at the LoD level when configuring scalability at the slice level before bitstream parsing.
도 13을 예로 들면, 옥트리 구조에서 루트 레벨부터 4레벨까지 LoD0에 해당하고, 루트 레벨부터 5레벨까지 LoD1에 해당하고, 루트 레벨부터 7레벨(즉, 리프 레벨)까지 LoD2에 해당한다.Taking Fig. 13 as an example, in the octree structure, the level from the root level to the 4th level corresponds to LoD0, the level from the root level to the 5th level corresponds to LoD1, and the level from the root level to the 7th level (i.e., the leaf level) corresponds to LoD2.
즉, 도 13을 예로 들면, 슬라이스(slice) 단위에서의 스케일러빌리티(scalability)를 활용하는 경우, 제공되는 스케일러블(scalable) 단계는 LoD0, LoD1, LoD2의 3 단계가 되고, 옥트리(octree) 구조에 의해 디코딩(decoding) 단계에서 제공될 수 있는 스케일러블(scalable) 단계는 루트(root) 레벨로부터 리프(leaf) 레벨에 이르는 8 단계가 된다. That is, taking Fig. 13 as an example, when utilizing scalability in slice units, the scalable stages provided are three stages of LoD0, LoD1, and LoD2, and the scalable stages that can be provided in the decoding stage by the octree structure are eight stages from the root level to the leaf level.
실시예들에 따라, LoD0~LoD2 가 각각의 슬라이스(slice)로 구성된 경우 수신부 혹은 송신부의 트랜스코더(transcoder, 도 11 참조)는 스케일러블 처리를 위해서 LoD0 만 선택하거나, 또는 LoD1만 선택하거나, 또는 LoD2를 선택할 수 있다. 도 13에서 LoD1은 LoD0을 포함하고, LOD2는 LoD1과 LoD2를 포함한다.According to embodiments, when LoD0 to LoD2 are each composed of slices, a transcoder (see FIG. 11) of a receiver or transmitter may select only LoD0, only LoD1, or LoD2 for scalable processing. In FIG. 13, LoD1 includes LoD0, and LOD2 includes LoD1 and LoD2.
예를 들어, LoD0 만 선택하는 경우, 최대 옥트리 레벨은 4가 되며, 0~4의 옥트리 레이어 중 하나의 스케일러블 레이어를 디코딩 과정에서 선택할 수 있다. 이때 수신 장치에서는 최대 옥트리 레벨(또는 깊이)를 통해 획득할 수 있는 노드 사이즈(node size)를 리프 노드(leaf node)로 고려할 수 있으며, 이때의 노드 사이즈(node size)를 시그널링 정보로써 전달할 수 있다. For example, if only LoD0 is selected, the maximum octree level is 4, and one scalable layer among octree layers 0 to 4 can be selected during the decoding process. At this time, the receiving device can consider the node size that can be obtained through the maximum octree level (or depth) as a leaf node, and the node size at this time can be transmitted as signaling information.
예를 들어, LoD1을 선택하는 경우, 레이어 5가 추가되어 최대 옥트리 레벨은 5가 되며, 0~5의 옥트리 레이어(octree layer) 중 하나의 스케일러블 레이어(scalable layer)를 디코딩(decoding) 과정에서 선택할 수 있다. 이때 수신 장치에서는 최대 옥트리 레벨(또는 깊이)를 통해 획득할 수 있는 노드 사이즈를 리프 노드로 고려할 수 있으며, 이때의 노드 사이즈를 시그널링 정보로써 전달할 수 있다. 실시예들에 따라, 옥트리 깊이, 옥트리 레이어, 옥트리 레벨 등은 데이터를 디테일하게 분할하는 단위를 의미한다.For example, if LoD1 is selected, layer 5 is added, so that the maximum octree level becomes 5, and one scalable layer among octree layers 0 to 5 can be selected during the decoding process. At this time, the receiving device can consider the node size that can be obtained through the maximum octree level (or depth) as a leaf node, and can transmit the node size at this time as signaling information. According to embodiments, octree depth, octree layer, octree level, etc. mean units for dividing data in detail.
예를 들어, LoD2을 선택하는 경우, 레이어 6, 7이 추가되어 최대 옥트리 레벨은 7이 되며, 0~7의 옥트리 레이어 중 하나의 스케일러블 레이어를 디코딩 과정에서 선택할 수 있다. 이때 수신 장치에서는 최대 옥트리 레벨(또는 깊이)를 통해 획득할 수 있는 노드 사이즈를 리프 노드로 고려할 수 있으며, 이 때의 노드 사이즈를 시그널링 정보로써 전달할 수 있다.For example, if LoD2 is selected, layers 6 and 7 are added, so that the maximum octree level becomes 7, and one scalable layer among the octree layers 0 to 7 can be selected during the decoding process. At this time, the receiving device can consider the node size that can be obtained through the maximum octree level (or depth) as a leaf node, and the node size at this time can be transmitted as signaling information.
도 20(a) 내지 도 20(c)는 실시예들에 따른 포인트 클라우드 데이터를 포함하는 슬라이스들을 구성하는 방법의 예시를 나타낸다.FIGS. 20(a) to 20(c) illustrate examples of a method for constructing slices including point cloud data according to embodiments.
실시예들에 따른 송신 방법/장치/인코더는 G-PCC 비트 스트림을 슬라이스(slice) 구조로 분할하여 구성할 수 있다. 상세한 데이터 표현을 위한 데이터 단위가 슬라이스일 수 있다.The transmission method/device/encoder according to the embodiments may be configured by dividing a G-PCC bit stream into a slice structure. A slice may be a data unit for detailed data representation.
예를 들어 하나의 슬라이스에 하나 또는 복수의 옥트리 레이어(octree layer or depth)들이 매칭될 수 있다. For example, one slice may have one or more octree layers (or depths).
실시예들에 따른 송신 방법/장치, 예를 들어, 인코더는 스캔 오더(41000) 방향으로 옥트리에 포함된 노드(포인트)들을 스캔하여 슬라이스(41001) 기반 비트스트림을 구성할 수 있다. 하나의 슬라이스는 옥트리 구조에서 하나 이상의 레벨들의 노드들을 포함할 수도 있고, 특정 레벨의 노드들만 포함할 수도 있으며, 특정 레벨의 일부 노드들만 포함할 수도 있다. 또는 하나 이상의 레벨들의 일부 노드들만을 포함할 수도 있다. A transmission method/device according to embodiments, for example, an encoder, may scan nodes (points) included in an octree in the direction of a scan order (41000) to construct a bitstream based on a slice (41001). One slice may include nodes of one or more levels in the octree structure, may include only nodes of a specific level, may include only some nodes of a specific level, or may include only some nodes of one or more levels.
도 20(a)는 옥트리 구조가 7개의 슬라이스들로 구성되는 일 예시를 보인 것으로, 슬라이스(41002)는 레벨 0부터 레벨 4까지의 노드들로 구성될 수 있다. 슬라이스(41003)는 레벨 5의 일부 노드들, 슬라이스(41004)는 레벨 5의 다른 일부 노드들, 슬라이스(41005)는 레벨 5의 또 다른 일부 노드들로 구성될 수 있다. 즉, 도 20(a)에서 레벨 5는 3개의 슬라이스들로 나누어진다. 마찬가지로, 도 20(a)에서 레벨 6(즉, 리프 레벨)도 3개의 슬라이스들로 나누어진다. 다시 말해, 특정 레벨의 일부 노드들로 하나의 슬라이스를 구성할 수 있다.Fig. 20(a) shows an example in which an octree structure is composed of seven slices. Slice (41002) may be composed of nodes from level 0 to level 4. Slice (41003) may be composed of some nodes of level 5, slice (41004) may be composed of other some nodes of level 5, and slice (41005) may be composed of still other some nodes of level 5. That is, level 5 in Fig. 20(a) is divided into three slices. Similarly, level 6 (i.e., leaf level) in Fig. 20(a) is also divided into three slices. In other words, one slice may be composed of some nodes of a specific level.
도 20(b)는 옥트리 구조가 4개의 슬라이스들로 구성되는 예시를 보인 것으로, 레벨 0부터 레벨 3까지의 노드들 및 레벨 4의 일부 노드들로 하나의 슬라이스가 구성되고, 레벨 4의 나머지 노드들과 레벨 5의 일부 노드들로 하나의 슬라이스가 구성되고 있다. 또한, 레벨 5의 나머지 노드들과 레벨 6의 일부 노드들로 하나의 슬라이스가 구성되고, 레벨 6의 나머지 노드들로 하나의 슬라이스가 구성되고 있다. Figure 20(b) shows an example in which an octree structure is composed of four slices, with one slice composed of nodes from level 0 to level 3 and some nodes of level 4, one slice composed of the remaining nodes of level 4 and some nodes of level 5, and one slice composed of the remaining nodes of level 5 and some nodes of level 6. In addition, one slice composed of the remaining nodes of level 5 and some nodes of level 6, and one slice composed of the remaining nodes of level 6.
도 20(c)는 옥트리 구조가 5개의 슬라이스들로 구성되는 예시를 보인 것으로, 레벨 0부터 레벨 3까지의 노드들로 하나의 슬라이스가 구성되고, 레벨 4부터 레벨 6까지의 노드들로 4개의 슬라이스들이 구성되고 있다. 즉, 레벨4의 일부 노드들, 레벨5의 일부 노드들, 레벨6의 일부 노드들로 하나의 슬라이스가 구성되고 있다. 즉, 레벨 4 내지 레벨 6에서 하나의 슬라이스는 레벨 4의 일부 데이터와 그 데이터의 자식 노드에 해당하는 레벨 5 또는 레벨 6의 데이터를 포함할 수 있다.Fig. 20(c) shows an example in which an octree structure is composed of five slices, with one slice composed of nodes from level 0 to level 3, and four slices composed of nodes from level 4 to level 6. That is, one slice is composed of some nodes of level 4, some nodes of level 5, and some nodes of level 6. That is, one slice at level 4 or level 6 can include some data of level 4 and data of level 5 or level 6 corresponding to child nodes of that data.
다시 말해, 도 20(b)와 도 20(c)에서 보는 바와 같이, 하나의 슬라이스에 복수의 옥트리 레이어(octree layer)들이 매칭될 때 각 레이어의 일부 노드들만 포함될 수 있다. 이처럼 복수의 슬라이스들이 하나의 지오메트리/어트리뷰트 프레임을 구성하는 경우, 수신 장치에서 레이어를 구성하는데 필요한 정보를 시그널링 정보를 통해 수신 장치로 전달할 수 있다. 예를 들어, 상기 시그널링 정보에 각 슬라이스에 포함된 레이어 정보, 각 레이어에 포함된 노드 정보 등이 포함될 수 있다. In other words, as shown in FIGS. 20(b) and 20(c), when multiple octree layers are matched to a single slice, only some nodes of each layer may be included. In this way, when multiple slices constitute a single geometry/attribute frame, the information required to configure the layers at the receiving device can be transmitted to the receiving device through signaling information. For example, the signaling information may include layer information included in each slice, node information included in each layer, etc.
실시예들에 따른 인코더 및 인코더에 대응하는 장치 등은 포인트 클라우드 데이터를 인코딩하고, 인코딩된 데이터 및 포인트 클라우드 데이터에 관한 시그널링 정보(또는 파라미터 정보라 함)를 더 포함하는 비트스트림을 생성하고 전송할 수 있다.An encoder and a device corresponding to the encoder according to the embodiments can encode point cloud data and generate and transmit a bitstream further including signaling information (or parameter information) regarding the encoded data and the point cloud data.
나아가, 비트스트림을 생성할 시 실시예들에 따른 비트스트림 구조(예를 들어, 도 14-도 20 등 참조) 등에 기반하여 비트스트림을 생성할 수 있다. 따라서, 실시예들에 따른 수신 장치, 디코더, 그에 대응하는 장치 등은 일부 데이터의 선택적 디코딩 구조에 적합하게 구성된 비트스트림을 수신하고 파싱하여, 포인트 클라우드 데이터의 일부만을 디코딩하여 효율적으로 제공할 수 있다.Furthermore, when generating a bitstream, the bitstream can be generated based on a bitstream structure according to embodiments (e.g., see FIGS. 14-20, etc.). Accordingly, a receiving device, a decoder, a corresponding device, etc. according to embodiments can receive and parse a bitstream configured to suit a selective decoding structure of some data, thereby decoding only a portion of the point cloud data and efficiently providing it.
다음은 포인트 클라우드 데이터의 스케일러블 전송(scalable transmission)에 대해 설명한다.The following describes scalable transmission of point cloud data.
실시예들에 따른 포인트 클라우드 데이터 송신 방법/장치는 포인트 클라우드 데이터를 포함하는 비트스트림을 스케일러블하게 전송할 수 있고, 실시예들에 따른 포인트 클라우드 데이터 수신 방법/장치는 비트스트림을 스케일러블하게 수신하고 디코딩할 수 있다.The point cloud data transmission method/device according to the embodiments can scalably transmit a bitstream including point cloud data, and the point cloud data reception method/device according to the embodiments can scalably receive and decode the bitstream.
도 11 내지 도 20에서 설명한 구조를 갖는 비트스트림이 스케일러블 전송에 사용되는 경우, 수신 장치에서 필요로 하는 슬라이스(slice)를 선별하기 위한 시그널링 정보를 수신 장치로 전달할 수 있다. 스케일러블 전송은 비트스트림(bitstream) 전체를 전송하거나 디코딩(decoding)하는 것이 아니라, 일부의 비트스트림만을 전송하거나 디코딩하는 경우를 의미할 수 있으며, 그 결과는 로우 해상도 포인트 클라우드 데이터(low resolution point cloud data)가 될 수 있다. When a bitstream having the structure described in FIGS. 11 to 20 is used for scalable transmission, signaling information for selecting a slice required by the receiving device can be transmitted to the receiving device. Scalable transmission may mean transmitting or decoding only a portion of the bitstream rather than transmitting or decoding the entire bitstream, and the result may be low resolution point cloud data.
실시예들에 따라 옥트리 기반 지오메트리 비트스트림에 스케일러블 전송을 적용하는 경우, 루트 노드(root node)로부터 리프 노드(leaf node)에 이르는 각 옥트리 레이어(도 13)의 비트스트림에 대해 특정 옥트리 레이어까지의 정보만을 가지고 포인트 클라우드 데이터를 구성할 수 있어야 한다. When applying scalable transmission to an octree-based geometry bitstream according to embodiments, it should be possible to construct point cloud data with only information up to a specific octree layer for the bitstream of each octree layer (Fig. 13) from the root node to the leaf node.
이를 위해서는 목표로 하는 옥트리 레이어에 대해서는 하위 옥트리 레이어 정보에 대한 의존성(dependency)이 없어야 한다. 이는 지오메트리/어트리뷰트 코딩에 대해서 공통적으로 적용하는 제약 사항이 될 수 있다. To achieve this, the target octree layer must not depend on information from lower octree layers. This can be a common constraint for geometry/attribute coding.
또한 스케일러블 전송시 송/수신 장치에서 스케일러블 레이어를 선별하기 위한 스케일러블 구조를 수신 장치로 전달할 필요가 있다. 실시예들에 따른 옥트리 구조를 고려할 때, 모든 옥트리 레이어가 스케일러블 전송을 지원할 수도 있지만, 특정 옥트리 레이어 이하에 대해서만 스케일러블 전송이 가능하도록 할 수 있다. 예를 들어, 옥트리 레이어들 중 일부를 포함하는 경우, 해당 슬라이스가 어느 스케일러블 레이어에 포함되는지를 시그널링 정보를 통해 수신 장치로 알려줌으로써, 수신 장치는 비트스트림 단계에서 해당 슬라이스의 필요/불필요 여부를 판단할 수 있다. 도 20(a)의 예에서 레벨 0(즉, 루트 레벨)부터 레벨 4까지(41002)는 스케일러블 전송을 지원하지 않고 하나의 스케일러블 레이어를 구성하고, 이하의 옥트리 레이어에 대해서는 스케일러블 레이어와 일대일 매칭이 되도록 구성할 수 있다. 일반적으로 리프 노드(leaf node)에 해당하는 부분에 대해 스케일러빌리티를 지원할 수 있는데, 도 20(c)와 같이 복수의 옥트리 레이어들이 하나의 슬라이스 내에 포함되는 경우 해당 레이어들에 대해서는 하나의 스케일러블 레이어를 구성하도록 정의할 수 있다. In addition, during scalable transmission, it is necessary to transmit a scalable structure for selecting a scalable layer from the transmitting/receiving device to the receiving device. Considering the octree structure according to the embodiments, all octree layers may support scalable transmission, but scalable transmission may be enabled only for a specific octree layer or lower. For example, if some of the octree layers are included, the receiving device can determine whether the corresponding slice is necessary or unnecessary at the bitstream stage by notifying the receiving device of which scalable layer the corresponding slice is included in through signaling information. In the example of Fig. 20(a), levels 0 (i.e., the root level) to 4 (41002) do not support scalable transmission and constitute a single scalable layer, and the octree layers below can be configured to have a one-to-one matching with the scalable layer. In general, scalability can be supported for the part corresponding to the leaf node, and in the case where multiple octree layers are included in one slice, as in Fig. 20(c), the layers can be defined to form one scalable layer.
이때, 목적에 따라 스케일러블 전송과 스케일러블 디코딩을 구분하여 사용할 수 있다. 실시예들에 따르면, 스케일러블 전송은 송/수신 장치에서 디코더를 거치지 않고 특정 레이어까지의 정보를 선별하기 위한 목적으로 사용할 수 있다. 실시예들에 따르면, 스케일러블 디코딩은 코딩하는 중에 특정 레이어를 선별하기 위한 목적으로 사용할 수 있다. 즉, 스케일러블 전송은 압축된 상태에서 (즉, 비트스트림 단계에서) 디코더를 거치지 않고 필요로 하는 정보의 선별을 지원하여 전송 혹은 수신 장치에서 특정 레이어의 판별이 가능하도록 할 수 있다. 반면 스케일러블 디코딩의 경우 인코딩/디코딩 과정에서 필요로하는 부분까지만 인코딩/디코딩을 지원함으로써 스케일러블 리프리젠테이션과 같은 경우에 사용될 수 있다. At this time, scalable transmission and scalable decoding can be used separately depending on the purpose. According to embodiments, scalable transmission can be used for the purpose of selecting information up to a specific layer without going through a decoder in a transmitting/receiving device. According to embodiments, scalable decoding can be used for the purpose of selecting a specific layer during coding. That is, scalable transmission can support the selection of required information without going through a decoder in a compressed state (i.e., at the bitstream stage), thereby enabling the identification of a specific layer in a transmitting or receiving device. On the other hand, scalable decoding can be used in cases such as scalable representation by supporting encoding/decoding only up to the required part in the encoding/decoding process.
이 경우, 스케일러블 전송을 위한 레이어 구성과 스케일러블 디코딩을 위한 레이어 구성이 달라질 수 있다. 예를 들어, 리프 노드를 포함하는 하위 3개의 옥트리 레이어들은 스케일러블 전송의 관점에서는 하나의 레이어를 구성할 수 있지만, 스케일러블 디코딩 관점에서는 모든 레이어 정보를 포함한 경우 리프 노드 레이어, 리프 노드 레이어-1, 리프 노드 레이어-2 각각에 대해 스케일러블 디코딩이 가능할 수 있다. In this case, the layer configuration for scalable transmission and the layer configuration for scalable decoding may differ. For example, the three lower octree layers including leaf nodes may constitute one layer from the perspective of scalable transmission, but from the perspective of scalable decoding, scalable decoding may be possible for each of the leaf node layer, leaf node layer-1, and leaf node layer-2 if all layer information is included.
도 21(a)와 도 21(b)는 실시예들에 따른 지오메트리 코딩 레이어 구조를 나타낸다. 특히, 도 21(a)는 송신측의 인코더에서 레이어 그룹 구조에 의해 생성된 3개의 슬라이스들의 예시를 보인 도면이고, 도 21(b)는 수신측의 디코더에서 2개의 슬라이스들을 사용하여 부분적으로 디코딩된 출력의 예시를 보인 도면이다. Figures 21(a) and 21(b) illustrate geometry coding layer structures according to embodiments. In particular, Figure 21(a) is a diagram showing an example of three slices generated by a layer group structure in an encoder on the transmitting side, and Figure 21(b) is a diagram showing an example of a partially decoded output using two slices in a decoder on the receiving side.
실시예들에 따르면, 미세 입도 슬라이싱(fine granularity slicing, FGS)이 활성화(enable) 되면, G-PCC 비트스트림이 여러 하위 비트스트림으로 분할될 수 있다. 여기서, 미세 입도 슬라이싱은 레이어 그룹 기반 슬라이싱으로 지칭될 수 있다. G-PCC의 레이어링 구조를 효과적으로 사용하기 위해, 각 슬라이스는 부분 코딩 레이어(partial coding layer) 또는 부분 영역(partial region)의 코딩된 데이터(coded data)를 포함할 수 있다. 코딩 레이어 구조와 쌍을 이루는 슬라이스 분할(segmentation or partition)을 통해 스케일러블 전송 또는 공간 랜덤 액세스(spatial random access) 사용 사례가 효율적인 방식으로 지원될 수 있다.According to embodiments, when fine granularity slicing (FGS) is enabled, a G-PCC bitstream may be segmented into multiple sub-bitstreams. Here, fine granularity slicing may be referred to as layer group-based slicing. To effectively utilize the layering structure of G-PCC, each slice may include coded data of a partial coding layer or a partial region. Segmentation or partitioning of slices paired with the coding layer structure may efficiently support scalable transmission or spatial random access use cases.
레이어 그룹 기반 슬라이스 분할(layer group based slice segmentation)Layer group based slice segmentation
미세 입도 슬라이싱에서, 각 슬라이스 세그먼트는 다음과 같이 정의된 레이어 그룹으로부터 코딩된 데이터를 포함할 수 있다.In fine-grained slicing, each slice segment may contain data coded from a group of layers defined as follows.
레이어 그룹은 연속적인 트리 레이어들의 그룹으로 정의될 수 있으며, 트리 레이어들의 그룹은 시작과 끝의 깊이가 트리 깊이에서 임의의 숫자일 수 있고, 시작 깊이가 끝 깊이보다 작을 수 있다. 슬라이스 세그먼트에서 코딩된 데이터의 순서는 단일 슬라이스에서 코딩된 데이터의 순서와 동일할 수 있다. 본 개시에서 트리 레이어는 트리 레벨로 지칭될 수 있다. A layer group can be defined as a group of consecutive tree layers, and the depth of the group of tree layers can be any number within the tree depth, and the start depth can be less than the end depth. The order of the coded data in a slice segment can be the same as the order of the coded data in a single slice. In the present disclosure, a tree layer can be referred to as a tree level.
예를 들어, 도 21(a)와 같이 8개의 코딩 레이어가 있는 지오메트리 코딩 레이어 구조를 고려하면, 3개의 레이어 그룹이 있고 각 레이어 그룹은 서로 다른 슬라이스와 매치된다. 좀 더 구체적으로, 레이어 0에서 4까지의 코딩 레이어에 대한 레이어 그룹 1은 슬라이스 1에 매치되고, 코딩 레이어 5에 대한 레이어 그룹 2은 슬라이스 2에 매치되며, 코딩 레이어에 6-7에 대한 레이어 그룹 3은 슬라이스3에 매치된다. 처음 2개의 슬라이스(즉, 슬라이스 1과 2)가 전송되거나 선택될 때 디코딩된 출력은 도 21(b)에 표시된 것처럼 0에서 5까지의 부분 레이어가 된다. 레이어 그룹 구조의 슬라이스를 사용하면 전체 비트스트림을 액세스하지 않고 코딩 레이어의 부분 디코딩을 지원할 수 있다.For example, considering a geometry coding layer structure with eight coding layers as shown in Fig. 21(a), there are three layer groups, and each layer group matches a different slice. More specifically, layer group 1 for coding layers 0 to 4 matches slice 1, layer group 2 for coding layer 5 matches slice 2, and layer group 3 for coding layers 6-7 matches slice 3. When the first two slices (i.e., slices 1 and 2) are transmitted or selected, the decoded output becomes partial layers 0 to 5 as shown in Fig. 21(b). Using slices in the layer group structure allows for partial decoding of coding layers without accessing the entire bitstream.
실시예들에 따른 비트스트림 및 포인트 클라우드 데이터는 코딩 레이어 기반 슬라이스 분할에 기반하여 생성될 수 있다. 인코딩 과정의 코딩 레이어의 끝에서 비트스트림을 슬라이싱하여, 실시예들에 따른 방법/장치가 관련된 슬라이스를 선택할 수 있고, 이를 통해 스케일러블 전송 또는 부분 디코딩을 지원할 수 있다. Bitstream and point cloud data according to embodiments can be generated based on coding layer-based slice segmentation. By slicing the bitstream at the end of the coding layer of the encoding process, the method/device according to embodiments can select relevant slices, thereby supporting scalable transmission or partial decoding.
도 21(a)는 각 슬라이스가 레이어 그룹과 일치하는 8개의 레이어(또는 레벨이라 칭함)가 있는 지오메트리 코딩 레이어 구조를 나타낸다. 레이어 그룹 1은 코딩 레이어 0에서 4을 포함한다. 레이어 그룹 2는 코딩 레이어 5을 포함한다. 레이어 그룹3은 레이어 6 및 7을 코딩하기 위한 그룹이다. 지오메트리(또는 어트리뷰트)가 8개의 레벨(깊이)를 가지는 트리 구조를 가지는 경우, 하나 또는 하나 이상의 레벨(깊이)들에 대응하는 데이터를 그룹핑하여 비트스트림을 계층적으로 구성할 수 있다. 각 그룹은 하나의 슬라이스에 포함될 수 있다.Figure 21(a) illustrates a geometry coding layer structure in which each slice has eight layers (or levels) corresponding to a layer group. Layer group 1 includes coding layers 0 to 4. Layer group 2 includes coding layer 5. Layer group 3 is a group for coding layers 6 and 7. When a geometry (or attribute) has a tree structure with eight levels (depths), data corresponding to one or more levels (depths) can be grouped to hierarchically structure a bitstream. Each group can be included in one slice.
도 21(b)는 슬라이스 3개 중 2개의 슬라이스를 선택하는 경우 디코딩된 출력을 나타낸다. 디코더가 그룹1 및 그룹2를 선택하면, 트리의 레벨(깊이) 0에서 5까지의 부분 레이어가 선택된다. 즉, 레이어 그룹 구조의 슬라이스를 사용하여 전체 비트스트림을 액세스하지 않고도 코딩 레이어의 부분 디코딩을 지원할 수 있다.Figure 21(b) shows the decoded output when two of three slices are selected. When the decoder selects Group 1 and Group 2, partial layers from levels 0 to 5 of the tree are selected. In other words, using slices in a layer group structure, partial decoding of a coding layer can be supported without accessing the entire bitstream.
실시예들에 따른 파셜 디코딩 프로세스를 위해서, 인코더는 레이어 그룹 구조 기반으로 3개의 슬라이스들을 생성할 수 있다. 실시예들에 따른 디코더는 3개의 슬라이스들 중에서 2개의 슬라이스들을 선택하여 부분적 디코딩을 수행할 수 있다.For the partial decoding process according to the embodiments, the encoder may generate three slices based on the layer group structure. The decoder according to the embodiments may select two slices from the three slices to perform partial decoding.
실시예들에 따른 비트스트림은 레이어 그룹 기반의 슬라이스들을 포함할 수 있다. 각 슬라이스는 슬라이스에 포함된 포인트 클라우드 데이터(즉, 지오메트리 데이터 및/또는 어트리뷰트 데이터)에 관한 시그널링 정보를 포함하는 헤더를 포함할 수 있다. 실시예들에 따른 수신 방법/장치는 슬라이스들을 선택하고, 선택된 슬라이스에 포함된 헤더에 기초하여 슬라이스의 페이로드에 포함된 포인트 클라우드 데이터를 디코딩할 수 있다.A bitstream according to embodiments may include slices based on layer groups. Each slice may include a header including signaling information regarding point cloud data (i.e., geometry data and/or attribute data) included in the slice. A receiving method/device according to embodiments may select slices and decode point cloud data included in the payload of the slice based on the header included in the selected slice.
실시예들에 따른 방법/장치는 레이어 그룹 구조 외에도 공간 랜덤 액세스 사용 사례를 고려하여 레이어 그룹을 여러 개의 서브그룹으로 더 나눌 수 있다. 실시예들에 따른 서브그룹은 서로 배타적이며 서브그룹의 집합은 레이어 그룹과 동일할 수 있다. 각 서브그룹의 포인트는 공간적 영역에 경계를 이루므로 서브그룹 바운딩 박스 정보로 서브그룹을 나타낼 수 있다. 공간 정보를 사용하여, 레이어 그룹 및 서브그룹 구조는 ROI(region of interest)를 커버하는 슬라이스들을 선택함으로써 ROI로의 접근을 지원할 수 있다. 관심 영역(ROI)과 각 슬라이스의 바운딩 박스 정보를 효율적으로 비교하여 프레임 또는 타일 내 공간 랜덤 액세스를 지원할 수 있다.In addition to the layer group structure, the method/device according to the embodiments can further divide the layer group into multiple subgroups, taking into account spatial random access use cases. The subgroups according to the embodiments are mutually exclusive, and the set of subgroups can be identical to the layer group. Since the points of each subgroup form a boundary in a spatial region, the subgroups can be represented by subgroup bounding box information. Using the spatial information, the layer group and subgroup structures can support access to a region of interest (ROI) by selecting slices that cover the ROI. Spatial random access within a frame or tile can be supported by efficiently comparing the region of interest (ROI) with the bounding box information of each slice.
실시예들에 따른 방법/장치는 도 21(a)와 같이 포인트 클라우드 데이터를 전달하기 위한 슬라이스를 구성할 수 있다.The method/device according to the embodiments can configure a slice for transmitting point cloud data as shown in FIG. 21(a).
실시예들에 따르면, 코딩된 비트스트림 전체는 싱글 슬라이스에 포함될 수 있다. 나아가, 멀티플 슬라이스들을 위해서, 각 슬라이스는 서브-비트스트림을 포함할 수 있다. 슬라이스들의 순서는 서브-비트스트림의 순서와 동일할 수 있다. 그리고, 각 슬라이스는 트리 구조의 레이어 그룹과 매치될 수 있다.According to embodiments, the entire coded bitstream may be included in a single slice. Furthermore, for multiple slices, each slice may include a sub-bitstream. The order of the slices may be identical to the order of the sub-bitstreams. In addition, each slice may correspond to a layer group in a tree structure.
또한, 지오메트리 트리의 상위 레이어가 하위 레이어들에 영향을 주지 않는 것과 같이, 슬라이스들은 이전 슬라이스들에 영향을 주지 않을 수 있다. Additionally, slices may not affect previous slices, just as higher layers in a geometry tree do not affect lower layers.
실시예들에 따른 분할된 슬라이스들(segmented slices)은 에러 강건성(error robustness), 효율적 전송(effective transmission), 관심 영역 지원(supporting region of interest) 등의 관점에서 효율적이다.Segmented slices according to the embodiments are efficient in terms of error robustness, effective transmission, supporting region of interest, etc.
1) 에러 회복성(Error resilience)1) Error resilience
싱글 슬라이스 구조와 비교 시, 분할된 슬라이스들은 에러에 더 강할 수 있다. 즉, 하나의 슬라이스가 프레임의 전체 비트스트림을 포함하는 경우, 데이터 로스는 전체 프레임 데이터에 영향을 줄 수 있다. 이에 반해, 비트스트림이 복수의 슬라이스들로 분할되는 경우, 적어도 하나의 슬라이스가 손실되더라도 손실에 영향을 받지 않는 적어도 하나의 슬라이스는 디코딩이 가능하다.Compared to a single-slice structure, split slices can be more error-resistant. That is, if a single slice contains the entire bitstream of a frame, data loss can affect the entire frame data. Conversely, if a bitstream is split into multiple slices, even if at least one slice is lost, at least one slice unaffected by the loss can still be decoded.
2) 스케일러블 전송(Scalable transmission)2) Scalable transmission
본 문서는 서로 다른 캐퍼빌리티들(capabilities)을 가지는 복수의 디코더들을 지원할 수 있는 경우를 고려할 수 있다. This document may consider cases where multiple decoders with different capabilities can be supported.
만일 코딩된 포인트 클라우드 데이터(즉, 포인트 클라우드 압축(PCC) 비트스트림)가 싱글 슬라이스에 포함되는 경우, 코딩된 포인트 클라우드 데이터의 LOD는 인코딩 전에 결정될 수 있다. 따라서, 포인트 클라우드 데이터의 서로 다른 해상도를 가지는 복수개의 사전 인코딩(pre-encoding)된 비트스트림들은 독립적으로 전달될 수 있다. 이는 큰 밴드폭(bandwidth) 또는 스토리지 공간 측면에서 비효율적일 수 있다.If the coded point cloud data (i.e., the Point Cloud Compression (PCC) bitstream) is contained within a single slice, the LOD of the coded point cloud data can be determined prior to encoding. Therefore, multiple pre-encoded bitstreams with different resolutions of the point cloud data can be transmitted independently. This can be inefficient in terms of bandwidth or storage space.
만일, 코딩된 포인트 클라우드 데이터(즉, 포인트 클라우드 압축(PCC) 비트스트림)가 분할된 슬라이스들에 포함되는 경우, 싱글 비트스트림은 서로 다른 레벨의 디코더들을 지원할 수 있다. 디코더 측에서 보면, 수신 장치는 타겟 레이어들을 선택할 수 있고, 부분적으로 선택된 비트스트림(partially selected bitstream)을 디코더에 전달할 수 있다. 유사하게, 전체 비트스트림을 파티셔닝하지 않고 싱글 비트스트림을 사용함으로써, 파셜 비트스트림은 효율적으로 송신 장치에서 생성될 수 있다. If the coded point cloud data (i.e., the Point Cloud Compression (PCC) bitstream) is contained in segmented slices, a single bitstream can support different levels of decoders. From the decoder side, the receiver can select target layers and transmit a partially selected bitstream to the decoder. Similarly, by using a single bitstream without segmenting the entire bitstream, partial bitstreams can be efficiently generated at the transmitter.
3) 영역 기반 공간 스케일러빌리티(Region based spatial scalability)3) Region-based spatial scalability
실시예들에 따른 G-PCC 요구조건에서 보면, 영역 기반 공간 스케일러빌리티는 다음과 같이 정의될 수 있다. 즉, 압축된 비트스트림은 하나 이상의 레이어들로 구성되고, 그래서 특정 관심 영역은 추가적인 레이어들과 함께 높은 밀도(higher density)를 가질 수 있고, 레이어들은 하위 레이어들로부터 예측될 수 있다.In terms of G-PCC requirements according to embodiments, region-based spatial scalability can be defined as follows: a compressed bitstream consists of one or more layers, so that a specific region of interest can have higher density with additional layers, and layers can be predicted from lower layers.
이 요구조건을 지원하기 위해서, 영역에 대한 서로 다른 상세한 표현(region-wise different detailed representation)을 지원하는 것이 필요하다. 예를 들어, VR/AR 어플리케이션에서, 멀리 있는 오브젝트들(far objects)는 낮은 정확도(lower precision)로 표현하고, 근처 오브젝트(nearer objects)는 높은 정확도(higher precision)로 표현하는 것이 바람직하다. 또한, 디코더는 요청이 있으면 관심 영역(resolution of the interested area)의 해상도를 증가시킬 수 있다. 이것은 지오메트리 옥트리 및 스케일러블 어트리뷰트 코딩 스킴과 같은 G-PCC의 스케일러블 구조를 사용함으로써 구현될 수 있다. To support this requirement, it is necessary to support region-wise different detailed representations. For example, in VR/AR applications, it is desirable to represent far objects with lower precision, while representing closer objects with higher precision. Furthermore, the decoder can increase the resolution of the region of interest upon request. This can be achieved by utilizing scalable structures of G-PCC, such as geometry octrees and scalable attribute coding schemes.
실시예들에 따르면, 전체 지오메트리 또는 어트리뷰트들을 포함하는 현재 슬라이스 구조에 기반하여, 디코더들은 전체 비트스트림에 접근해야 한다. 이는 밴드폭, 메모리, 디코더 비효율성을 야기할 수 있다. 한편, 비트스트림이 복수 개의 슬라이스들로 분할(segment)되고, 각 슬라이스가 스케일러블 레이어들에 따른 서브-비트스트림들을 포함하면, 실시예들에 따른 디코더는 효율적으로 비트스트림을 파싱하기 전(before)에 필요에 따라 슬라이스를 선택할 수 있다.According to embodiments, decoders must access the entire bitstream based on the current slice structure, which includes the entire geometry or attributes. This may result in bandwidth, memory, and decoder inefficiencies. On the other hand, if the bitstream is segmented into multiple slices, and each slice includes sub-bitstreams according to scalable layers, the decoder according to embodiments can select a slice as needed before efficiently parsing the bitstream.
실시예들에 따른 방법/장치는 포인트 클라우드 데이터의 트리 구조(또는, 레이어 구조)를 이용하여 레이어 그룹을 생성할 수 있다.The method/device according to the embodiments can create a layer group using a tree structure (or layer structure) of point cloud data.
도 21(a)를 예로 들면, 지오메트리 코딩 레이어 구조(예를 들면, 옥트리 구조) 내에 8개의 레이어들(또는 레벨이라 함)이 있고, 3개의 슬라이스들은 하나 또는 하나 이상의 레이어들을 포함하도록 사용될 수 있다. 그룹은 레이어들의 그룹을 나타낸다. 스케일러블 어트리뷰트 코딩이 사용되는 경우 트리 구조는 지오메트리 트리 구조와 동일하다. 동일한 옥트리-슬라이스 맵핑은 어트리뷰트 슬라이스 세그먼트들을 만드는데 사용될 수 있다.As an example, in Fig. 21(a), there are eight layers (or levels) within a geometry coding layer structure (e.g., an octree structure), and three slices can be used to contain one or more layers. A group represents a group of layers. When scalable attribute coding is used, the tree structure is identical to the geometry tree structure. The same octree-slice mapping can be used to create attribute slice segments.
실시예들에 따른 레이어 그룹(Layer group)은 옥트리 레이어(octree layer), LoD layer 등과 같이 G-PCC coding에서 발생하는 레이어 구조 단위의 묶음을 나타낸다.A layer group according to embodiments represents a bundle of layer structure units generated in G-PCC coding, such as an octree layer, LoD layer, etc.
서브그룹(Sub-group)은 하나의 레이어 그룹 내에 인접한 노드들의 집합으로 나타낼 수 있다. 예를 들어, 몰톤 코드 오더(Morton code order)에 의해 인접한 노드들의 묶음으로 구성되거나, 거리 기반 인접 노드의 묶음으로 구성되거나, 또는 코딩 순서에 따라 인접한 노드들의 묶음으로 구성될 수 있다. 부모-자식(parent-child) 관계에 있는 노드들이 하나의 서브그룹 내에 존재할 수도 있다.A subgroup can be represented as a set of adjacent nodes within a single layer group. For example, it can be composed of nodes grouped by Morton code order, nodes grouped by distance, or nodes grouped by coding order. Nodes with parent-child relationships can also exist within a single subgroup.
서브그룹이 정의된 경우 레이어의 중간에서 바운더리가 발생하며, 바운더리에서 엔트로피(entropy)의 연속성을 갖는지 여부에 대해서는 entropy_continuation_enabled_flag등과 같은 파라미터가 시그널링 될 수 있다. 또한, ref_slice_id를 통해 이전 slice를 참조하여 연속성을 계속 유지할 수 있다. When a subgroup is defined, a boundary occurs in the middle of the layer, and parameters such as entropy_continuation_enabled_flag can be signaled to indicate whether there is entropy continuity at the boundary. Continuity can also be maintained by referencing the previous slice via ref_slice_id.
실시예들에 따른 트리 구조는 옥트리(Octree) 구조일 수 있고, 실시예들에 따른 어트리뷰트 레이어 구조 또는 어트리뷰트 코딩 트리는 LOD(Level of Detail)의 구조를 포함할 수 있다. 즉, 포인트 클라우드 데이터에 대한 트리 구조는 깊이(depth) 또는 레벨(level)에 대응하는 레이어(layer)들을 포함하고, 레이어들은 그룹핑될 수 있다.The tree structure according to the embodiments may be an octree structure, and the attribute layer structure or attribute coding tree according to the embodiments may include a structure of a level of detail (LOD). That is, the tree structure for point cloud data includes layers corresponding to depth or level, and the layers may be grouped.
실시예들에 따른 방법/장치(예를 들면, 도 3의 옥트리 분석부(30002) 또는 LOD생성부(30009), 도 7의 옥트리 합성부(7002) 또는 LOD생성부(7008)는 지오메트리의 옥트리 구조를 생성하거나 어트리뷰트의 LOD 트리 구조를 생성할 수 있다. 또한, 트리 구조의 레이어들을 기반으로 포인트 클라우드 데이터를 그룹핑할 수 있다.The method/device according to the embodiments (e.g., the octree analysis unit (30002) or LOD generation unit (30009) of FIG. 3, the octree synthesis unit (7002) or LOD generation unit (7008) of FIG. 7) can generate an octree structure of geometry or an LOD tree structure of attributes. In addition, point cloud data can be grouped based on layers of the tree structure.
도 21(a)를 참조하면, 복수의 레이어(또는 레벨이라 함)들이 그룹핑되어 제1그룹 내지 제3그룹(또는 레이어 그룹이라 함)이 형성된다. 하나의 그룹은 그 안에서 다시 분할되어 서브그룹들이 형성될 수 있다. Referring to Figure 21(a), multiple layers (or levels) are grouped to form first to third groups (or layer groups). A single group can be further divided to form subgroups.
실시예들에 따르면, 슬라이스는 레이어 그룹으로부터 코딩된 데이터를 포함할 수 있다. 여기서, 레이어 그룹은 연속적인 트리 레이어들의 그룹으로 정의되고, 트리 레이어들의 시작 및 종료 깊이는 트리 깊이 내 특정 숫자일 수 있고, 시작은 종료보다 작다.According to embodiments, a slice may include data coded from a layer group, wherein the layer group is defined as a group of contiguous tree layers, and the start and end depths of the tree layers may be a specific number within the tree depth, with the start being less than the end.
도 21(a)는 지오메트리 코딩 레이어 구조를 트리 구조의 예시로 보여주지만, 어트리뷰트에 대한 코딩 레이어 구조도 마찬가지로 생성될 수 있다.Figure 21(a) shows the geometry coding layer structure as an example of a tree structure, but a coding layer structure for attributes can also be created similarly.
도 22는 실시예들에 따른 레이어 그룹 및 서브그룹 구조를 나타낸다.Figure 22 illustrates the layer group and subgroup structure according to embodiments.
도 22를 참조하면, 포인트 클라우드 데이터 및 비트스트림은 바운딩 박스로 구분되어 표현될 수 있다.Referring to Figure 22, point cloud data and bitstream can be expressed by being separated into bounding boxes.
도 22를 참조하면, 서브그룹 구조와 서브그룹에 대응하는 바운딩 박스가 도시된다. 레이어 그룹 2는 2개의 서브그룹들(group2-1, group2-2)로 나누어져 서로 다른 슬라이스에 포함되고, 레이어 그룹 3은 4개의 서브 그룹들(group3-1, group3-2, group3-3, group3-4)로 나누어져 서로 다른 슬라이스에 포함된다. 바운딩 박스 정보와 함께 레이어 그룹 및 서브그룹의 슬라이스가 주어지면, 1) 각 슬라이스의 바운딩 박스를 ROI와 비교하고, 2) 서브 그룹 바운딩 박스가 ROI와 중첩되는(Overlapped) 슬라이스를 선택하고, 3) 선택된 슬라이스를 디코딩함으로써 공간 접근(spatial access)이 수행될 수 있다.Referring to Fig. 22, the subgroup structure and the bounding boxes corresponding to the subgroups are illustrated. Layer group 2 is divided into two subgroups (group2-1, group2-2) and included in different slices, and layer group 3 is divided into four subgroups (group3-1, group3-2, group3-3, group3-4) and included in different slices. Given slices of layer groups and subgroups along with bounding box information, spatial access can be performed by 1) comparing the bounding box of each slice with the ROI, 2) selecting a slice in which the subgroup bounding box overlaps the ROI, and 3) decoding the selected slice.
영역 3-3에서 ROI가 고려될 때, ROI 영역을 커버하는 레이어 그룹 1, 서브 그룹 2-2 및 3-3의 서브그룹 바운딩 박스로서 슬라이스 1, 3, 6이 선택된다. 효과적인 공간 액세스를 위해 동일한 레이어 그룹의 서브그룹 간에 종속성(dependency)이 없다고 가정된다. 라이브 스트리밍 또는 저지연 사용 사례의 경우 각 슬라이스 세그먼트를 수신할 때 선택 및 디코딩을 수행하여 시간 효율성을 높일 수 있다.When considering the ROI in region 3-3, slices 1, 3, and 6 are selected as the subgroup bounding boxes of layer group 1, subgroups 2-2, and 3-3 covering the ROI area. For efficient spatial access, it is assumed that there are no dependencies between subgroups within the same layer group. For live streaming or low-latency use cases, selection and decoding can be performed upon receiving each slice segment to improve time efficiency.
실시예들에 따른 방법/장치는 지오메트리 및/또는 어트리뷰트 인코딩 시 데이터를 레이어(깊이, 레벨 등으로 지칭될 수 있다.)로 구성된 트리(45000)로 표현할 수 있다. 각 레이어(깊이/레벨)에 대응하는 포인트 클라우드 데이터를 레이어 그룹(또는 그룹, 45001)으로 묶을 수 있다. 레이어 그룹 2는 2개의 서브그룹들(45002)을 추가 분할(세그먼트)될 수 있고, 레이어 그룹3은 4개의 서브그룹들(45003)로 추가 분할(세그먼트)될 수 있다. 각 서브그룹은 각 슬라이스로 구성되어 비트스트림이 생성될 수 있다. The method/device according to the embodiments may represent data as a tree (45000) composed of layers (which may be referred to as depths, levels, etc.) when encoding geometry and/or attributes. Point cloud data corresponding to each layer (depth/level) may be grouped into a layer group (or group, 45001). Layer group 2 may be further divided (segmented) into two subgroups (45002), and layer group 3 may be further divided (segmented) into four subgroups (45003). Each subgroup may be composed of each slice, and a bitstream may be generated.
실시예들에 따른 수신 장치는 비트스트림을 수신하고, 비트스트림으로부터 특정 슬라이스를 선택하며, 선택된 슬라이스에 포함된 서브그룹에 대응하는 바운딩 박스를 디코딩할 수 있다. 예를 들어, 슬라이스 1을 선택하면 레이어 그룹1에 대응하는 바운딩 박스(45004)을 디코딩할 수 있다. 레이어 그룹1은 가장 큰 영역에 해당하는 데이터일 수 있다. 레이어 그룹1에 대한 상세 영역을 추가적으로 디스플레이 할 경우, 실시예들에 따른 방법/장치는 슬라이스 3 및/또는 슬라이스6을 선택하여, 레이어 그룹1의 영역에 포함된 상세 영역에 대한 서브그룹2-2 및/또는 서브그룹3-3의 바운딩 박스(포인트 클라우드 데이터)를 계층적으로 부분적으로 접근할 수 있다.A receiving device according to embodiments may receive a bitstream, select a specific slice from the bitstream, and decode a bounding box corresponding to a subgroup included in the selected slice. For example, when slice 1 is selected, a bounding box (45004) corresponding to layer group 1 may be decoded. Layer group 1 may be data corresponding to the largest area. When additionally displaying a detailed area for layer group 1, a method/device according to embodiments may partially hierarchically access bounding boxes (point cloud data) of subgroup 2-2 and/or subgroup 3-3 for a detailed area included in an area of layer group 1 by selecting slice 3 and/or slice 6.
도 22의 레이어 그룹 및 서브그룹을 이용한 포인트 클라우드 데이터의 인코딩 및 디코딩은 도 1의 송/수신 장치, 도 2의 인코딩 및 디코딩, 도 3의 송신 장치/방법, 도 7의 수신 장치/방법, 도 8 및 도 9의 송/수신 장치/방법, 도 10의 디바이스들, 도 24, 도 25, 도 27의 송/수신 방법, 도 26 및 도 28의 송/수신 장치, 도 40 및 도 41의 송/수신 방법에 의하여 수행될 수 있다.Encoding and decoding of point cloud data using the layer group and subgroup of FIG. 22 can be performed by the transmitting/receiving device of FIG. 1, the encoding and decoding of FIG. 2, the transmitting device/method of FIG. 3, the receiving device/method of FIG. 7, the transmitting/receiving device/method of FIG. 8 and FIG. 9, the devices of FIG. 10, the transmitting/receiving methods of FIG. 24, FIG. 25, and FIG. 27, the transmitting/receiving devices of FIG. 26 and FIG. 28, and the transmitting/receiving methods of FIG. 40 and FIG. 41.
도 23(a) 내지 도 23(c)는 실시예들에 따른 레이어 그룹 기반 포인트 클라우드 데이터의 표현을 나타낸다.Figures 23(a) to 23(c) illustrate representations of layer group-based point cloud data according to embodiments.
실시예들에 따른 장치/방법은 스케일러빌리티(scalability)와 공간 접근 능력(spatial access capabilities)에 기반하여 레이어 그룹 슬라이싱으로 대규모 포인트 클라우드 데이터 또는 고밀도 포인트 클라우드 데이터에 대한 효율적인 액세스를 제공할 수 있다. 포인트 클라우드 데이터는 포인트 수가 많고 데이터 크기가 크기 때문에 콘텐츠를 렌더링하거나 표시하는 데 상당한 시간이 소요될 수 있다. 따라서, 대안적인 접근 방식으로, 뷰어(viewer)의 관심을 기반으로 디테일의 레벨(level of detail)이 조정될 수 있다. 예를 들어, 뷰어가 장면이나 물체에서 멀리 떨어져 있는 경우, 구조적 또는 전체 영역 정보가 로컬 세부 정보보다 더 중요하며, 반면에 뷰어가 특정 영역이나 사물에 가까워지면 관심 영역에 대한 상세한 정보가 필요하다. 적응형 방식을 사용하면, 실시예들에 따른 렌더러는 충분한 품질의 데이터를 뷰어에게 효율적으로 제공할 수 있다. 도 23(a) 내지 도 23(c)는 ROI를 기반으로 변경되는 세 가지 수준의 시청 거리에 대하여 디테일이 증가하는 예시를 나타낸다.The device/method according to the embodiments can provide efficient access to large-scale point cloud data or high-density point cloud data through layer group slicing based on scalability and spatial access capabilities. Because point cloud data has a large number of points and large data sizes, rendering or displaying the content can take a significant amount of time. Therefore, as an alternative approach, the level of detail can be adjusted based on the viewer's interest. For example, when the viewer is far away from a scene or object, structural or global region information is more important than local details, whereas when the viewer is close to a specific area or object, detailed information about the region of interest is needed. Using an adaptive approach, the renderer according to the embodiments can efficiently provide data of sufficient quality to the viewer. Figures 23(a) to 23(c) illustrate examples of increasing detail for three different viewing distances based on the ROI.
도 23(a)의 high-level view는 디테일이 듬성듬성하게 표현(coarse detail)되었고, 도 23(b)의 mid-level view는 중간 수준으로 디테일(medium-level detail)이 표현되었으며, 도 23(c)의 low-level view는 미세한 수준까지 디테일(fine-grained detail)이 표현된 것을 나타낸다.The high-level view of Fig. 23(a) shows coarse detail, the mid-level view of Fig. 23(b) shows medium-level detail, and the low-level view of Fig. 23(c) shows fine-grained detail.
도 24는 실시예들에 따른 포인트 클라우드 데이터 송/수신 장치/방법을 나타낸다.Fig. 24 illustrates a point cloud data transmission/reception device/method according to embodiments.
실시예들에 따른 멀티 해상도(resolution) ROI는 G-PCC 비트스트림 생성에 레이어 그룹 슬라이싱이 사용될 때 지원될 수 있다. Multi-resolution ROIs according to embodiments may be supported when layer group slicing is used to generate a G-PCC bitstream.
도 24를 참조하면, 멀티 해상도 ROIs는 계층적 슬라이싱(hierarchical slicing)의 스케일러빌리티(scalability) 및 공간 접근(spatial accessibility)에 의해 지원될 수 있다. 도 24에서, 송신측의 인코더(47001)는 각 레이어 그룹들의 공간 서브그룹들(spatial subgroups) 또는 옥트리 레이어 그룹들(octree layer-groups)의 비트스트림 슬라이스들(bitstream slices)을 생성할 수 있다. 요청에 따라(upon request), 각 해상도의 ROI에 매칭하는 슬라이스가 선택되고 수신단으로 전송된다. 전체 비트스트림 크기는 타일 기반(tile-based) 접근 대비 감소하는데, 이는 요청된 ROI 외에 디테일을 포함하지 않기 때문이다. 수신단에서 디코더(47004)는 세 개의 아웃풋, 예를 들어 1) 레이어 그룹으로부터 온 하이-레벨 뷰 아웃풋(high-level view output) 2) 레이어 그룹 1과 레이어 그룹 2의 선택된 서브그룹으로부터 온 미드-레벨 뷰 아웃풋(mid-level view output) 그리고 3) 레이어 그룹 2 및 3의 선택된 서브그룹들과 레이어 그룹1로부터 온 양질의 디테일의 로우-레벨 뷰 아웃풋을 생산하기 위해 슬라이스들을 결합(combine)할 수 있다. 아웃풋들이 점진적으로(progressively) 생성될 수 있으므로, 수신기(receiver)는 하이-레벨 뷰에서 로우-레벨 뷰로 해상도가 점진적으로 증가하는 줌 기능(zooming)과 같은 뷰잉 경험을 제공할 수 있다.Referring to Fig. 24, multi-resolution ROIs can be supported by the scalability and spatial accessibility of hierarchical slicing. In Fig. 24, the encoder (47001) on the transmitting side can generate bitstream slices of spatial subgroups of each layer group or octree layer-groups. Upon request, a slice matching each resolution ROI is selected and transmitted to the receiving end. The overall bitstream size is reduced compared to the tile-based approach because it does not include details other than the requested ROI. At the receiver, the decoder (47004) can combine the slices to produce three outputs, for example: 1) a high-level view output from the layer group; 2) a mid-level view output from selected subgroups of layer group 1 and layer group 2; and 3) a low-level view output with good detail from selected subgroups of layer groups 2 and 3 and layer group 1. Since the outputs can be generated progressively, the receiver can provide a viewing experience such as zooming in which the resolution progressively increases from the high-level view to the low-level view.
상기 인코더(47001)는 실시예들에 따른 포인트 클라우드 인코더로서, 지오메트리 인코더 및/또는 어트리뷰트 인코더에 대응할 수 있다. 인코더(47001)는 포인트 클라우드 데이터를 레이어 그룹(또는 그룹)에 기반하여 슬라이싱할 수 있다. 레이어는 트리의 깊이, LOD의 레벨 등으로 지칭될 수 있다. 47002와 같이 지오메트리의 옥트리의 깊이 및/또는 어트리뷰트 레이어의 레벨 등이 레이어 그룹(또는 서브 그룹)으로 분할될 수 있다.The above encoder (47001) is a point cloud encoder according to embodiments, and may correspond to a geometry encoder and/or an attribute encoder. The encoder (47001) may slice point cloud data based on a layer group (or groups). A layer may be referred to as a tree depth, a LOD level, etc. As in 47002, the depth of an octree of a geometry and/or the level of an attribute layer may be divided into layer groups (or subgroups).
슬라이스 셀렉터(47003)는 인코더(47001)와 연계하여, 분할된 슬라이스(또는 서브 슬라이스)를 선택해서 레이어 그룹 1 내지 레이어 그룹3과 같이 선택적으로 파셜하게 전송할 수 있다.The slice selector (47003) can be linked with the encoder (47001) to select a divided slice (or sub-slice) and selectively transmit it partially, such as layer group 1 to layer group 3.
디코더(47004)는 선택적이고 파셜하게 전송된 포인트 클라우드 데이터를 디코딩할 수 있다. 예를 들어, 하이-레벨 뷰를 위해 레이어 그룹 1(깊이/레이어/레벨이 높거나 인덱스가 0, 루트에 가까움)을 디코딩할 수 있다. 그리고, 미드-레벨 뷰를 위해 레이어 그룹1 및 레이어 그룹2에 기반하여 레이어 그룹1 단독보다 좀 더 깊이/레벨의 인덱스를 증가하여 디코딩할 수 있다. 또한, 로우-레벨 뷰를 위해 레이어 그룹 1내지 레이어 그룹3에 기반하여 디코딩할 수 있다.The decoder (47004) can selectively and partially decode transmitted point cloud data. For example, for a high-level view, it can decode layer group 1 (high depth/layer/level or index 0, closer to the root). Furthermore, for a mid-level view, it can decode based on layer group 1 and layer group 2, increasing the depth/level index slightly more than layer group 1 alone. Furthermore, for a low-level view, it can decode based on layer group 1 to layer group 3.
도 24를 참조하면, 실시예들에 따른 인코더(47001)는 포인트 클라우드 데이터를 입력으로 받아 레이어 그룹으로 슬라이싱할 수 있다. 즉, 포인트 클라우드 데이터를 계층적으로 구조화하여 레이어 그룹들로 나눌 수 있다. 이때, 계층적인 구조는 옥트리 구조 또는 LoD(Level of Detail)를 의미할 수 있다. 47002는 포인트 클라우드 데이터가 레이어 그룹으로 나뉘어진 모습을 표현한다. 슬라이스 셀렉터(47003)는 레이어 그룹(또는, 이와 대응하는 슬라이스)을 선택할 수 있고, 선택된 슬라이스들은 수신단의 디코더(47004)로 전송된다. 디코더(47004)는 사용자의 요구에 따라 수신한 슬라이스들을 조합하여 레이어 그룹 1만을 복원하거나, 레이어 그룹 1과 2를 복원하거나 수신된 모든 레이어 그룹을 복원할 수 있다. 레이어 그룹들은 상호 계층적이며 디테일의 정도가 다르다. 레이어 그룹 1만을 복원하는 경우 복원되는 범위가 넓은 반면 디테일하게 표현되지 못하고, 레이어 그룹 1 내지 레이어 그룹 3을 모두 복원하는 경우, 복원되는 범위가 좁은 반면 상세하게 디테일이 표현될 수 있다.Referring to FIG. 24, an encoder (47001) according to embodiments can receive point cloud data as input and slice it into layer groups. That is, the point cloud data can be hierarchically structured and divided into layer groups. At this time, the hierarchical structure can mean an octree structure or LoD (Level of Detail). 47002 represents how point cloud data is divided into layer groups. A slice selector (47003) can select a layer group (or a slice corresponding thereto), and the selected slices are transmitted to a decoder (47004) of a receiving end. The decoder (47004) can combine the received slices according to a user's request to restore only layer group 1, layer groups 1 and 2, or all received layer groups. The layer groups are hierarchical and have different levels of detail. When only layer group 1 is restored, the restored range is wide but details are not expressed. When all layer groups 1 to 3 are restored, the restored range is narrow but details can be expressed in detail.
전술한 바와 같이, 레이어 그룹 슬라이싱을 위한 인코더의 입력은 포인트 클라우드 데이터와 레이어 그룹 슬라이싱의 구조 정보(structural information)를 설명하는 파라미터 정보(예, SPS(Sequence Parameter Set), GPS(Geometry Parameter Set), LGSI(Layer-Group Slicing Inventory or Layer-Group Structure Inventory))이다. 각 트리 깊이의 시작 부분에서는 레이어 그룹 구조 파라미터들을 사용하여 타겟 트리 깊이의 레이어 그룹이 결정된다. 레이어 그룹 인덱스를 사용하면, 각 노드의 서브 그룹 인덱스는 서브 그룹 바운딩 박스를 사용하여 결정된다. 노드에 대한 서브 그룹이 변경되면 이전 서브 그룹 인코더에서 사용된 컨텍스트 상태 및 버퍼가 저장되고 현재 서브 그룹 인코더의 컨텍스트 상태 및 버퍼가 로드된다. 각 서브 그룹에 대해 별도의 인코더를 사용하면 서브 그룹 내에서 컨텍스트 상태가 계속될 수 있다. 또한 이웃 노드들을 현재 노드와 동일한 서브 그룹에 속하도록 제한하기 위해, 아틀라스 바운더리 뿐만 아니라(on top of the atlas boundary) 서브 그룹 바운더리를 고려하여 지오메트리 오큐판시 아틀라스가 업데이트된다. 두 가지 방법 모두 코딩된 각 비트스트림이 디코더에서 이웃 서브 그룹의 노드 정보 없이 독립적으로 디코딩될 수 있게 한다. 이 프로세스는 모든 트리 깊이의 모든 노드에 대해 반복적으로(recursively) 수행된다. 타겟 트리 깊이의 노드들의 끝에 도달하면, 각 레이어 그룹의 서브 그룹들과 일대일로 일치(match)되는 미세 입도 슬라이스들(Fine-Granularity Slices)가 생성된다. 본 개시에서 미세 입도 슬라이스들은 레이어 그룹 기반 슬라이스들로 지칭될 수 있다.As mentioned above, the inputs of the encoder for layer group slicing are point cloud data and parameter information (e.g., Sequence Parameter Set (SPS), Geometry Parameter Set (GPS), Layer-Group Slicing Inventory or Layer-Group Structure Inventory (LGSI)) describing the structural information of layer group slicing. At the beginning of each tree depth, the layer group of the target tree depth is determined using the layer group structure parameters. Using the layer group index, the subgroup index of each node is determined using the subgroup bounding box. When the subgroup for a node is changed, the context state and buffer used by the previous subgroup encoder are saved and the context state and buffer of the current subgroup encoder are loaded. Using a separate encoder for each subgroup allows the context state to be persisted within the subgroup. Additionally, to restrict neighboring nodes to belong to the same subgroup as the current node, the geometry occupancy atlas is updated by considering subgroup boundaries as well as the atlas boundary (on top of the atlas boundary). Both methods allow each coded bitstream to be independently decoded at the decoder without information about the nodes of neighboring subgroups. This process is performed recursively for all nodes of all tree depths. Upon reaching the end of the nodes of the target tree depth, fine-grained slices that match the subgroups of each layer group one-to-one are generated. In the present disclosure, fine-grained slices may be referred to as layer group-based slices.
상기 인코더의 인코딩 동작은 도 1의 송신 장치, 도 2의 인코딩, 도 3의 송신 장치/방법, 도 8 및 도 9의 송신 장치/방법, 도 10의 디바이스들, 도 25의 인코딩 방법, 도 27의 송신 장치, 도 40의 송신 방법 중 적어도 하나 또는 그 이상의 조합에 의해 수행될 수 있다. The encoding operation of the above encoder can be performed by a combination of at least one or more of the transmitting device of FIG. 1, the encoding of FIG. 2, the transmitting device/method of FIG. 3, the transmitting device/method of FIG. 8 and FIG. 9, the devices of FIG. 10, the encoding method of FIG. 25, the transmitting device of FIG. 27, and the transmitting method of FIG. 40.
상기 디코더의 디코딩 동작은 도 1의 수신 장치, 도 2의 디코딩, 도 7의 수신 장치/방법, 도 8 및 도 9의 수신 장치/방법, 도 10의 디바이스들, 도 26의 디코딩 방법, 도 28의 수신 장치, 도 41의 수신 방법 중 적어도 하나 또는 그 이상의 조합에 의해 수행될 수 있다.The decoding operation of the above decoder can be performed by a combination of at least one or more of the receiving device of FIG. 1, the decoding of FIG. 2, the receiving device/method of FIG. 7, the receiving device/method of FIG. 8 and FIG. 9, the devices of FIG. 10, the decoding method of FIG. 26, the receiving device of FIG. 28, and the receiving method of FIG. 41.
도 25는 실시예들에 따른 인코더의 인코딩 방법의 일 예시를 보인 흐름도이다. 즉, 도 25는 레이어 그룹 슬라이싱을 위한 인코딩 과정으로서, 인코딩된 비트스트림이 디코더에서 이웃 서브 그룹의 노드 정보 없이 독립적으로 디코딩될 수 있게 한다. 도 25의 인코딩 방법은 도 1의 송신 장치, 도 2의 인코딩, 도 3의 송신 장치/방법, 도 8의 송신 장치/방법, 도 10의 디바이스들, 도 27의 송신 장치에 의하거나 그들의 조합에 의하여 수행될 수 있다.Fig. 25 is a flowchart showing an example of an encoding method of an encoder according to embodiments. That is, Fig. 25 is an encoding process for layer group slicing, which allows an encoded bitstream to be independently decoded in a decoder without node information of neighboring subgroups. The encoding method of Fig. 25 can be performed by the transmitting device of Fig. 1, the encoding of Fig. 2, the transmitting device/method of Fig. 3, the transmitting device/method of Fig. 8, the devices of Fig. 10, the transmitting device of Fig. 27, or a combination thereof.
실시예들에 따른 인코더는 SPS, GPS, LGSI 등과 같은 파라미터 정보를 생성하고, 레이어 그룹과 서브 그룹을 결정한다(S2501, S2502). 그리고, 서브 그룹이 변경되는지를 확인하고(S2503), 서브 그룹이 변경될 때마다 서브 그룹 내 포인트 클라우드 데이터를 인코딩하는데 이용된 정보를 저장하고 필요한 정보를 로드하여 효율적으로 인코딩한다(S2504). 예를 들어, 컨텍스트 정보를 저장하고 다음 인코딩 시 로드하여 이용할 수 있다. 즉, 노드에 대한 서브 그룹이 변경되면 이전 서브 그룹 인코더에서 사용된 컨텍스트 상태 및 버퍼가 저장되고 현재 서브 그룹 인코더의 컨텍스트 상태 및 버퍼가 로드된다. 또한, 인코딩에 따라 지오메트리 오큐판시 아틀라스를 업데이트한다(S2505). 즉, 이웃 노드들을 현재 노드와 동일한 서브 그룹에 속하도록 제한하기 위해, 아틀라스 바운더리 뿐만 아니라 서브 그룹 바운더리를 고려하여 지오메트리 오큐판시 아틀라스를 업데이트한다. 그리고, 서브 그룹의 노드를 인코딩한다(S2506). 이러한 과정이 반복되어 오큐판시 트리 내 모든 깊이의 모든 노드들이 인코딩되면(S2507, S2508), 즉 타겟 트리 깊이의 노드들의 끝에 도달하면, 지오메트리 데이터 유닛 헤더들을 생성하고, 파라미터 정보, 지오메트리 데이터 유닛 헤더들, 지오메트리 데이터 유닛들 등을 포함하는 지오메트리 비트스트림을 생성한다. 즉, 각 레이어 그룹의 서브 그룹들과 일대일로 일치(match)되는 미세 입도 슬라이스들(Fine-Granularity Slices)이 생성된다. 본 개시에서 지오메트리 오큐판시 아틀라스는 지오메트리 아틀라스 또는 아틀라스와 동일한 의미로 서로 혼용되어 사용된다. An encoder according to embodiments generates parameter information such as SPS, GPS, LGSI, etc., and determines layer groups and subgroups (S2501, S2502). Then, it checks whether the subgroup changes (S2503), and whenever the subgroup changes, information used to encode point cloud data within the subgroup is stored and necessary information is loaded to efficiently encode (S2504). For example, context information can be stored and loaded for use during the next encoding. That is, when the subgroup for a node changes, the context state and buffer used in the previous subgroup encoder are stored, and the context state and buffer of the current subgroup encoder are loaded. In addition, the geometry occupancy atlas is updated according to the encoding (S2505). That is, in order to restrict neighboring nodes to belong to the same subgroup as the current node, the geometry occupancy atlas is updated by considering not only the atlas boundary but also the subgroup boundary. Then, the nodes of the subgroup are encoded (S2506). When this process is repeated until all nodes of all depths in the occupancy tree are encoded (S2507, S2508), i.e., when the end of the nodes of the target tree depth is reached, geometry data unit headers are generated, and a geometry bitstream including parameter information, geometry data unit headers, geometry data units, etc. is generated. That is, fine-grained slices that match one-to-one with the subgroups of each layer group are generated. In the present disclosure, geometry occupancy atlas is used interchangeably with geometry atlas or atlas.
다음은 레이어 그룹과 서브 그룹을 결정하고 저장 및 로드하는(with layer group and subgroup determination) 단계(S2501-S2504)의 상세 설명이다.The following is a detailed description of the steps (S2501-S2504) of determining layer groups and subgroups and saving and loading them.
위의 인코더 프로세스에서 언급했듯이 각 서브 그룹의 독립적인 디코딩을 보장하려면 인코더 상태를 저장하고 로드하는 것이 필요하다. 유연한 서브 그룹 분할을 제공하기 위해 이 프로세스는 트리 레이어의 각 노드에 대해 수행된다.As mentioned in the encoder process above, saving and loading the encoder state is necessary to ensure independent decoding of each subgroup. To provide flexible subgroup partitioning, this process is performed for each node in the tree layer.
각 트리 레이어에 대해, 그 트리 레이어의 레이어 그룹은 그 레이어 그룹 내의 모든 트리 깊이에 대해 결정되고 고정된다. 이때, 레이어 그룹은 연속된 트리 레이어의 집합이므로 레이어 그룹 인덱스는 레이어 그룹 시작 부분에서 변경된다. 결정된 레이어 그룹을 사용하여 서브 그룹이 결정된다. 서브 그룹은 서브 그룹 바운딩 박스에 묶여 있는(bounded) 노드들의 그룹이므로 노드 위치(position)와 서브 그룹 바운딩 박스를 비교하여 노드의 서브 그룹을 찾는다. 서브 그룹이나 레이어 그룹이 변경될 때마다 이전 서브 그룹의 인코더 상태는 나중에 사용할 수 있도록 저장되고 지속적인 인코딩(continuous encoding)을 위해 현재 서브 그룹의 인코더 상태가 로드된다.For each tree layer, the layer group of that tree layer is determined and fixed for all tree depths within that layer group. Since a layer group is a set of contiguous tree layers, the layer group index changes at the beginning of the layer group. Subgroups are determined using the determined layer group. Since a subgroup is a group of nodes bounded by the subgroup bounding box, the subgroup of a node is found by comparing the node position with the subgroup bounding box. Whenever a subgroup or layer group changes, the encoder state of the previous subgroup is saved for later use, and the encoder state of the current subgroup is loaded for continuous encoding.
아래 pseudo code는 트리 구조의 각 레이어, 레이어 그룹, 서브 그룹에 대한 인코딩 프로세스의 예시로서, 각 레이어 그룹과 서브 그룹이 변경될 때마다 인코더 상태를 저장하고 로드하는 과정을 포함한다. 즉, 트리 깊이가 0일 때, 첫 번째 레이어 그룹과 서브 그룹을 초기화하고, 현재 인코더 상태를 로드한다. 그리고, 트리 깊이가 현재 레이어 그룹의 레이어 수에 도달하면 다음 레이어 그룹으로 이동하고, 인코더 상태를 저장 및 로드한다. 이러한 과정으로 각 레이어 그룹 내의 노드들을 처리하며, 서브 그룹이 변경될 때마다 인코더 상태를 저장하고 로드한다.The pseudo code below is an example of the encoding process for each layer, layer group, and subgroup in the tree structure, including saving and loading the encoder state whenever each layer group and subgroup changes. Specifically, when the tree depth is 0, the first layer group and subgroup are initialized and the current encoder state is loaded. Then, when the tree depth reaches the number of layers in the current layer group, the encoder state is saved and loaded. This process processes the nodes within each layer group, saving and loading the encoder state whenever a subgroup changes.
pseudo code:pseudo code:
for (depth = 0; depth < maxDepth; depth++) {for (depth = 0; depth < maxDepth; depth++) {
/ determine layer-group index / determine layer-group index
if (depth == 0) {if (depth == 0) {
curLayerGroupId = 0;curLayerGroupId = 0;
curSubgroupId = 0;curSubgroupId = 0;
load current context state; load current context state;
sum_layers = numLayersPerLayerGroup[curLayerGroupId]; sum_layers = numLayersPerLayerGroup[curLayerGroupId];
}}
else if (depth == sum_layers) { else if (depth == sum_layers) {
prevLayerGroupId = curLayerGroupId++; prevLayerGroupId = curLayerGroupId++;
prevSubgroupId = curSubgroupId; prevSubgroupId = curSubgroupId;
curSubgroupId = 0;curSubgroupId = 0;
save previous encoder state; save previous encoder state;
load current encoder state; load current encoder state;
sum_layers += numLayersPerLayerGroup[curLayerGroupId]; sum_layers += numLayersPerLayerGroup[curLayerGroupId];
}}
else if (numSubgroupsMinus1[curLayerGroupId] > 0) { else if (numSubgroupsMinus1[curLayerGroupId] > 0) {
prevSubgroupId = curSubgroupId; prevSubgroupId = curSubgroupId;
curSubgroupId = 0;curSubgroupId = 0;
save previous encoder state; save previous encoder state;
reload current encoder state; reload current encoder state;
}}
for (all nodes in curLayerGroupId) {for (all nodes in curLayerGroupId) {
/ determine subgroup index/ determine subgroup index
if (!(nodePos >= bbox_min && nodePos < bbox_max)) {if (!(nodePos >= bbox_min && nodePos < bbox_max)) {
for (i = 0; i<=numSubgroupsMinus1[curLayerGroupId]; i++) { for (i = 0; i<=numSubgroupsMinus1[curLayerGroupId]; i++) {
if (nodePos >= bbox_min[i] && nodePos < bbox_max[i]){ if (nodePos >= bbox_min[i] && nodePos < bbox_max[i]){
prevSubgroupId = curSubgroupId; prevSubgroupId = curSubgroupId;
curSubgroupId = i;curSubgroupId = i;
/ save and load encoder / save and load encoder
save previous encoder state; save previous encoder state;
if (first node of the current subgroup) if (first node of the current subgroup)
load reference encoder state; load reference encoder state;
else else
reload current encoder state; reload current encoder state;
break;break;
} } } } } } } }
}}
다음은 지오메트리 오큐판시 아틀라스 업데이트 단계(S2505)의 상세 설명이다.The following is a detailed description of the Geometry Occupancy Atlas Update step (S2505).
지오메트리 오큐판시 아틀라스에서 서브 그룹 바운더리를 고려하기 위해 _maxRange 및 _minRange가 MortonMap3D 클래스에 정의된다. 지오메트리 오큐판시 아틀라스가 서브 그룹에 있을 때 최소 범위와 최대 범위는 각각 0과 큐브의 에지 길이(length of an edge of the cube)으로 설정된다. 서브 그룹의 최소 바운더리가 지오메트리 오큐판시 아틀라스 최소값보다 큰 경우 _minRange가 서브 그룹 바운더리의 최소값으로 설정된다. 또한, 서브 그룹의 최대 바운더리가 지오메트리 오큐판시 아틀라스 최대값보다 작은 경우 _maxRange가 서브 그룹 바운더리의 최대값으로 설정된다. 그리고, 그 범위(_maxRange 및 _minRange)를 사용하면 서브 그룹 바운딩 박스와 겹치는(overlap) 아틀라스의 부분(the part of the atlas)을 액티브로 간주하고 액티브 영역의 노드들을 이웃들로 사용한다. 이는 수신 장치의 디코더에서 이웃 서브 그룹들의 노드들 없이 FGS(즉, 레이어 그룹 기반 슬라이스들)가 디코딩되는 것을 보장한다.To account for subgroup boundaries in a geometry occupancy atlas, _maxRange and _minRange are defined in the MortonMap3D class. When a geometry occupancy atlas is in a subgroup, the minimum and maximum ranges are set to 0 and the length of an edge of the cube, respectively. If the minimum boundary of the subgroup is greater than the minimum value of the geometry occupancy atlas, _minRange is set to the minimum value of the subgroup boundary. If the maximum boundary of the subgroup is less than the maximum value of the geometry occupancy atlas, _maxRange is set to the maximum value of the subgroup boundary. Using the ranges (_maxRange and _minRange), the part of the atlas that overlaps the subgroup bounding box is considered active, and the nodes in the active area are used as neighbors. This ensures that FGS (i.e. layer group-based slices) are decoded without nodes of neighboring subgroups in the decoder of the receiving device.
아래 pseudo code는 전술한 지오메트리 오큐판시 아틀라스를 업데이트할 때 서브 그룹 바운더리 프로세스의 예시이다. 즉, 아래 pseudo code는 MortonMap3D 클래스에서 서브 그룹 바운더리를 설정하기 위한 범위를 계산하는 과정을 보여준다. setRange 메서드는 서브 그룹의 최소 및 최대 바운더리를 계산하여 _minRange와 _maxRange 변수에 설정한다. 이 범위는 3차원 공간의 각 축에 대해 계산된다. _maxRange[m]는 서브 그룹의 m번째 축에 대한 최대 범위를 나타내며, 아틀라스 원점과 큐브 크기를 고려하여 설정된다. _minRange[m]는 서브 그룹의 m번째 축에 대한 최소 범위를 나타내며, 아틀라스 원점보다 큰 경우에는 해당 값을, 그렇지 않은 경우에는 0을 설정한다. 이 과정을 통해 서브 그룹이 아틀라스의 특정 부분에 위치하도록 하고, 서브 그룹 바운딩 박스와 겹치는 아틀라스의 부분을 액티브 영역으로 간주하여 데이터 처리를 효율적으로 할 수 있게 된다.The pseudo code below is an example of the subgroup boundary process when updating the aforementioned geometry occupancy atlas. Specifically, the pseudo code below demonstrates the process of calculating the range for setting subgroup boundaries in the MortonMap3D class. The setRange method calculates the minimum and maximum boundaries of the subgroup and sets them in the _minRange and _maxRange variables. These ranges are calculated for each axis in 3D space. _maxRange[m] represents the maximum range for the mth axis of the subgroup, and is set based on the atlas origin and the cube size. _minRange[m] represents the minimum range for the mth axis of the subgroup. If it is greater than the atlas origin, it is set to that value; otherwise, it is set to 0. This process ensures that subgroups are located in specific parts of the atlas, and the portion of the atlas that overlaps with the subgroup bounding box is considered the active area, enabling efficient data processing.
pseudo code:pseudo code:
class MortonMap3D {class MortonMap3D {
setRange( ) {setRange( ) {
for (m = 0; m < 3; m++) {for (m = 0; m < 3; m++) {
/ _maxRange/ _maxRange
if (bboxMax < atlasOrigin + _cubeSize) if (bboxMax < atlasOrigin + _cubeSize)
_maxRange[m] = bboxMax - atlasOrigin; _maxRange[m] = bboxMax - atlasOrigin;
elseelse
_maxRange[m] = _cubeSize; _maxRange[m] = _cubeSize;
/ _minRange/ _minRange
if (bboxMin > atlasOrigin) if (bboxMin > atlasOrigin)
_minRange[m] = bboxMin - atlasOrigin; _minRange[m] = bboxMin - atlasOrigin;
elseelse
_minRange[m] = 0;_minRange[m] = 0;
} } } }
}}
이와 같은 동작을 통해, 지오메트리 코딩에 사용되는 지오메트리 오큐판시 아틀라스의 범위를 서브그룹 바운더리를 고려하여 업데이트한다. 지오메트리 오큐판시 아틀라스는 지오메트리 이웃 서치 등의 속도 향상을 위해 주변부 노드를 일정 범위에 대해 LUT(룩업테이블)로 만들어 놓은 것으로, 현재 노드의 위치가 지오메트리 오큐판시 아틀라스 범위를 벗어나는 경우 새로 업데이트해야 한다.Through this operation, the range of the geometry occupancy atlas used for geometry coding is updated by considering the subgroup boundaries. The geometry occupancy atlas is a lookup table (LUT) created for a certain range of surrounding nodes to improve the speed of geometric neighbor search, etc., and must be updated if the current node's location is outside the range of the geometry occupancy atlas.
인코더 및 디코더 동작을 보면, 서브 그룹 바운더리가 아틀라스 바운더리 내에 존재하는 경우, 아틀라스 바운더리(_maxRange, _minRange)를 서브 그룹 바운더리로 업데이트한다. 이를 통해 아틀라스 내에서 서브 그룹이 변경되는 경우에도 아틀라스 전체 업데이트 없이 바운더리만 변경하여 사용 가능하다.Looking at the encoder and decoder behavior, if a subgroup boundary exists within the atlas boundary, the atlas boundary (_maxRange, _minRange) is updated to the subgroup boundary. This allows for the atlas to be used without updating the entire atlas, even when a subgroup within the atlas changes.
여기서, _maxRange, _minRange는 아틀라스 내에서 실제 사용 가능한 범위의 최소, 최대값을 나타낸다. atlasOrigin, cubeSize는 지오메트리 오큐판시 아틀라스의 시작 위치 및 크기를 나타낸다. 그리고, bboxMin, _bboxMax는 특정 레이어 그룹, 서브 그룹의 바운딩 박스의 위치의 최소, 최대 값을 나타낸다.Here, _maxRange and _minRange represent the minimum and maximum values of the actual usable range within the atlas. atlasOrigin and cubeSize represent the starting position and size of the geometry occupancy atlas. And bboxMin and _bboxMax represent the minimum and maximum values of the bounding box position of a specific layer group or subgroup.
도 26은 실시예들에 따른 디코더의 디코딩 방법의 일 예시를 보인 흐름도이다. 즉, 도 26은 실시예들에 따른 레이어 그룹 슬라이싱을 위한 디코더 과정을 나타낸다. Fig. 26 is a flowchart showing an example of a decoding method of a decoder according to embodiments. That is, Fig. 26 shows a decoder process for layer group slicing according to embodiments.
도 26은 도 25의 역과정을 따를 수 있다Fig. 26 can follow the reverse process of Fig. 25.
도 26의 디코딩 방법은 도 1의 수신 장치, 도 2의 디코딩, 도7의 수신 장치/방법, 도 9의 수신 장치/방법, 도 10의 디바이스들, 도 28의 디코더에 의하거나 그들의 조합에 의하여 수행될 수 있다.The decoding method of FIG. 26 can be performed by the receiving device of FIG. 1, the decoding of FIG. 2, the receiving device/method of FIG. 7, the receiving device/method of FIG. 9, the devices of FIG. 10, the decoder of FIG. 28, or a combination thereof.
실시예들에 따르면, 디코더는 수신되는 지오메트리 비트스트림으로부터 파라미터 정보(예, SPS, GPS, LGSI 등), 지오메트리 데이터 유닛 헤더들, 지오메트리 데이터 유닛들을 파싱한다. 첫 번째 FGS(Fine Granularity Slice)에 대한 레이어 그룹 슬라이싱 참조 SW의 디코딩 과정은 기존의 지오메트리 슬라이스 디코딩(파라미터 세트 파싱, 데이터 유닛 헤더 파싱, 데이터 유닛 디코딩)과 동일하다. 본 개시에서 파라미터 정보, 파라미터(들), 파라미터 세트(들)은 동일한 의미로 혼용되어 사용된다.According to embodiments, the decoder parses parameter information (e.g., SPS, GPS, LGSI, etc.), geometry data unit headers, and geometry data units from the received geometry bitstream. The decoding process of the layer group slicing reference SW for the first FGS (Fine Granularity Slice) is the same as the conventional geometry slice decoding (parameter set parsing, data unit header parsing, data unit decoding). In the present disclosure, parameter information, parameter(s), and parameter set(s) are used interchangeably with the same meaning.
상기 파싱 과정이 수행된 후, 레이어 그룹 슬라이싱이 인에이블되면(S2601), 다음 종속(디펜던트) 지오메트리 데이터 유닛이 첫 번째 슬라이스에 대한 FGS로 간주된다(즉, 그들이 동일한 Slice_id를 갖는 경우). 부모(즉, 상위) 서브 그룹과 자식 서브 그룹 간의 컨텍스트 참조 및 노드 상속을 고려하여, FGS들의 순서는 layer_group_id 및 subgroup_id에 따라 오름차순으로 정렬되는 것으로 가정한다.After the above parsing process is performed, if layer group slicing is enabled (S2601), the next dependent geometry data unit is considered as the FGS for the first slice (i.e., if they have the same Slice_id). Considering the contextual reference and node inheritance between the parent (i.e., superior) subgroup and the child subgroup, the order of the FGS is assumed to be sorted in ascending order by layer_group_id and subgroup_id.
종속 데이터 유닛을 디코딩하기 전에, 이전 슬라이스의 컨텍스트 상태, 출력 노드들 및 레이어 그룹 파라미터들이 다음 슬라이스들을 위해 버퍼에 저장된다(S2602). 즉, 버퍼들과 레이어 그룹 파라미터들을 업데이트한다. 그리고, 종속 데이터 유닛 헤더를 파싱한 후(S2603), 현재 서브 그룹의 부모 서브 그룹을 검출(detection)한다(S2604). 실시예들에 따르면, 현재 서브 그룹의 부모 서브그룹은 서브 그룹 바운딩 박스가 현재 서브 그룹 바운딩 박스의 상위 집합(superset)인 서브 그룹을 찾아서 검출된다. 부모 서브 그룹이 결정되면 현재 종속 데이터 유닛의 부모(즉, 상위) 노드들이 선택된다(S2605). 단계 S2605에서 현재 종속 데이터 유닛의 부모(즉, 상위) 노드들이 선택되면, 종속 데이터 유닛을 파싱한다(S2606). 이때, 선택된 노드들을 디코딩 프로세스의 초기 노드들로 사용함으로써, 현재 종속 데이터 유닛은 현재 레이어 그룹에 의해 커버되는 트리 레이어까지 디코딩된다. 그리고, 종속 데이터 유닛의 디코딩 과정은 지오메트리 비트스트림이 끝날 때까지 반복적으로 수행된다(S2607). 종속 데이터 유닛의 디코딩 과정이 완료되면, 출력 포인트 클라우드를 생성하고, 디코딩 과정을 종료한다(S2608).Before decoding a dependent data unit, the context state, output nodes, and layer group parameters of the previous slice are stored in a buffer for the next slices (S2602). That is, the buffers and layer group parameters are updated. Then, after parsing the dependent data unit header (S2603), a parent subgroup of the current subgroup is detected (S2604). According to embodiments, the parent subgroup of the current subgroup is detected by finding a subgroup whose subgroup bounding box is a superset of the current subgroup bounding box. Once the parent subgroup is determined, the parent (i.e., upper) nodes of the current dependent data unit are selected (S2605). Once the parent (i.e., upper) nodes of the current dependent data unit are selected in step S2605, the dependent data unit is parsed (S2606). At this time, by using the selected nodes as initial nodes of the decoding process, the current dependent data unit is decoded up to the tree layer covered by the current layer group. Then, the decoding process of the dependent data unit is repeatedly performed until the geometry bitstream ends (S2607). When the decoding process of the dependent data unit is completed, an output point cloud is generated and the decoding process is terminated (S2608).
다음에서는 부모 서브그룹과 부모 노드들을 찾는 추가적인 과정에 대해 좀 더 자세히 설명한다.The following describes in more detail the additional steps involved in finding parent subgroups and parent nodes.
실시예들에 따른 디코더는 비트스트림 내 포함된 SPS, GPS, LGSI와 같은 파라미터 정보를 파싱한다. FGS와 같은 슬라이스에 포함된 데이터 유닛 헤더에 시그널링된 정보를 파싱한다. 헤더 정보에 기초하여 데이터 유닛에 포함된 포인트 클라우드 데이터를 파싱한다. 레이어 그룹 슬라이싱이 활성화된 경우, 버퍼 및 레이어 그룹 파라미터를 업데이트하고, 상위 데이터 유닛에 종속된 종속 데이터 유닛의 데이터 유닛 헤더 정보를 파싱한다. 부모 서브그룹을 감지하고, 부모 노드를 선택한다. 종속 데이터 유닛을 파싱한다. 다음은 부모 서브 그룹 검출(detection) 단계(S2604)의 상세 설명이다.A decoder according to embodiments parses parameter information such as SPS, GPS, and LGSI included in a bitstream. Parses information signaled in a data unit header included in a slice such as FGS. Parses point cloud data included in a data unit based on the header information. When layer group slicing is enabled, updates buffer and layer group parameters, and parses data unit header information of a dependent data unit dependent on an upper data unit. Detects a parent subgroup and selects a parent node. Parses the dependent data unit. The following is a detailed description of the parent subgroup detection step (S2604).
미세 입도 슬라이스들(즉, 레이어 그룹 기반 슬라이스들)의 디코딩에서, 부모 서브 그룹의 노드들은 레이어 그룹 바운더리들에서 연속적인 디코딩을 제공하기 위해 자식 서브 그룹들에 대한 입력으로 사용된다. 이는 레이어 그룹 슬라이싱의 계층 구조(hierarchical structure)로 인해 부모-자식 공간 관계를 사용하여 유도될 수 있다. 즉, 자식 서브 그룹은 자식 서브 그룹의 바운딩 박스가 동일한 레이어 그룹 내의 다른 자식 서브 그룹들의 바운더리 박스들과 공간적으로 배타적인 부모 서브 그룹의 서브 집합(subset)이다. In decoding fine-grained slices (i.e., layer-group-based slices), nodes in a parent subgroup are used as inputs to child subgroups to provide continuous decoding at layer-group boundaries. This can be derived using parent-child spatial relationships due to the hierarchical structure of layer-group slicing. That is, a child subgroup is a subset of its parent subgroup whose bounding boxes are spatially exclusive from the bounding boxes of other child subgroups within the same layer group.
이러한 관계를 기반으로, 부모 서브 그룹이 있는 슬라이스는 현재 슬라이스의 공간적 상위 집합을 찾아 검출될 수 있다. 그리고, 데이터 유닛 헤더에 시그널링된 subgroup_bbox_origin과 subgroup_bbox_size를 이용함으로써, 부모 서브그룹은 이전 레이어-그룹 레벨의 서브 그룹들의 바운딩 박스 정보와 비교하여 찾을 수 있다.Based on these relationships, slices with parent subgroups can be detected by finding the spatial superset of the current slice. Furthermore, by utilizing the subgroup_bbox_origin and subgroup_bbox_size signaled in the data unit header, parent subgroups can be found by comparing them with the bounding box information of subgroups at the previous layer-group level.
아래 pseudo code는 전술한 부모 서브 그룹 검출 프로세스의 예시이다.The pseudo code below is an example of the parent subgroup detection process described above.
pseudo code:pseudo code:
parentLayerGroup = curLayerGroup - 1;parentLayerGroup = curLayerGroup - 1;
for (i = 0; i < numSubgroups[parentLayerGroup]; i++) {for (i = 0; i < numSubgroups[parentLayerGroup]; i++) {
if (_bboxMin[parentLayerGroup][i] <= curBboxMin if (_bboxMin[parentLayerGroup][i] <= curBboxMin
&& _bboxMax[parentLayerGroup][i] > curBboxMin) { && _bboxMax[parentLayerGroup][i] > curBboxMin) {
parentSubgroup = i;parentSubgroup = i;
break;break;
}}
}}
즉, 본 개시는 전술한 바와 같이 부모 서브 그룹 및 자식 서브 그룹 간 위치 관계성을 기반으로 추가 시그널링 없이 부모 서브 그룹을 유추할 수 있다.That is, the present disclosure can infer a parent subgroup without additional signaling based on the positional relationship between the parent subgroup and the child subgroup as described above.
이를 인코더 측면에서 보면, 자식 서브 그룹을 정의할 때 부모 서브 그룹의 바운딩 박스를 분할하도록 정의할 수 있다. 자식 서브 그룹은 부모 서브 그룹의 서브 영역(region)이고, 인코더에서는 위에서 기술한 방법을 통해 부모 서브 그룹의 인덱스를 유추할 수 있다. From an encoder perspective, defining a child subgroup can be defined to partition the bounding box of the parent subgroup. The child subgroup is a subregion of the parent subgroup, and the encoder can infer the index of the parent subgroup using the method described above.
디코더 측면에서 보면, 부모 서브 그룹의 바운딩 박스가 자식 서브 그룹의 바운딩 박스의 수퍼셋(superset)인 경우, 해당 서브그룹 인덱스를 부모 서브그룹 인덱스로 결정한다.From the decoder's perspective, if the bounding box of a parent subgroup is a superset of the bounding boxes of a child subgroup, the subgroup index is determined as the parent subgroup index.
위의 pseudo code에서, parentLayerGroup는 현재 레이어 그룹과 관계된 상위 레이어 그룹 인덱스이다.In the pseudo code above, parentLayerGroup is the index of the parent layer group relative to the current layer group.
parentSubgroup은 현재 서브 그룹과 부모-자식 관계를 갖는 서브 그룹의 서브 그룹 인덱스이다.parentSubgroup is the subgroup index of the subgroup that has a parent-child relationship with the current subgroup.
curLayerGroup은 현재 레이어 그룹이다.curLayerGroup is the current layer group.
numSubgroups은 레이어 그룹에 속한 서브 그룹들의 개수이다.numSubgroups is the number of subgroups belonging to the layer group.
_bboxMin, _bboxMax은 특정 레이어 그룹, 서브 그룹의 바운딩 박스의 위치의 최소, 최대 값이다._bboxMin, _bboxMax are the minimum and maximum values of the bounding box position of a specific layer group or subgroup.
curBboxMin은 현재 코딩이 진행중인 서브 그룹의 바운딩 박스의 위치의 최소값이다.curBboxMin is the minimum value of the bounding box position of the subgroup currently being coded.
다음은 입력 부모 노드 선택 단계(S2605)의 상세 설명이다.The following is a detailed description of the input parent node selection step (S2605).
종속 슬라이스들의 디코딩에서, 부모 서브그룹의 출력 노드들은 자식 서브그룹의 디코딩에 대한 입력으로 사용된다. 부모 서브그룹과 자식 서브그룹의 서브 그룹 바운딩 박스들이 동일한 경우, 부모 서브 그룹에서 생성된 모든 노드들이 사용된다. 반면, 자식 서브 그룹의 서브 그룹 바운더리 박스가 부모 서브 그룹의 하위 집합(subset)인 경우, 디코더들은 실제 부모 노드들을 선택한다. 본 개시는 부모 노드들을 찾기 위해, 부모 서브 그룹의 각 노드를 자식 서브 그룹의 바운딩 박스 바운더리와 비교한다.In decoding dependent slices, the output nodes of the parent subgroup are used as input for decoding the child subgroup. If the subgroup bounding boxes of the parent subgroup and the child subgroup are identical, all nodes generated in the parent subgroup are used. On the other hand, if the subgroup boundary box of the child subgroup is a subset of the parent subgroup, the decoder selects the actual parent nodes. To find the parent nodes, the present disclosure compares each node of the parent subgroup with the bounding box boundaries of the child subgroup.
아래 pseudo code는 전술한 부모 노드 선택 프로세스의 예시이다. 즉, 특정 범위(bbox_min과 bbox_max) 내에 있는 노드들만 부모 노드들로 선택된다. 예를 들어, 노드의 위치(node.Pos)가 바운딩 박스의 최소값(bbox_min) 이상이고, 최대값(bbox_max) 미만인 경우에만 부모 노드로서 추가된다. The pseudocode below illustrates the parent node selection process described above. Specifically, only nodes within a specific range (bbox_min and bbox_max) are selected as parent nodes. For example, a node is added as a parent only if its position (node.Pos) is greater than or equal to the minimum (bbox_min) and less than the maximum (bbox_max) of the bounding box.
pseudo code:pseudo code:
for (node = inNodes.begin(); node != inNodes.end(); node++) {for (node = inNodes.begin(); node != inNodes.end(); node++) {
if (node.Pos >= bbox_min && node.Pos < bbox_max) if (node.Pos >= bbox_min && node.Pos < bbox_max)
fifo.emplace_back(node);fifo.emplace_back(node);
elseelse
continue;continue;
}}
도 27은 실시예들에 따른 포인트 클라우드 송신 장치의 또 다른 예시를 보인 도면이다. 도 27에 도시된 송신 장치의 엘리먼트들은 하드웨어, 소프트웨어, 메모리에 연결된 프로세서 및/또는 그것들의 결합 등으로 구현될 수 있다. 즉, 도 27의 송신 장치의 엘레멘트들은 도면에 도시되지 않았으나 하나 또는 그 이상의 메모리들과 통신 가능하도록 설정된 하나 또는 그 이상의 프로세서들 또는 집적 회로들(integrated circuits)을 포함하는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 구현될 수 있다. 하나 또는 그 이상의 프로세서들은 상술한 도 27의 송신 장치의 엘레멘트들의 동작들 및/또는 기능들 중 적어도 어느 하나 이상을 수행할 수 있다. 또한 하나 또는 그 이상의 프로세서들은 도27의 송신 장치의 엘레멘트들의 동작들 및/또는 기능들을 수행하기 위한 소프트웨어 프로그램들 및/또는 인스트럭션들의 세트를 동작하거나 실행할 수 있다. 도 27에서 각 블록의 수행 순서는 변경될 수 있으며, 일부 블록은 생략될 수 있고, 일부 블록은 새로 추가될 수 있다.FIG. 27 is a diagram showing another example of a point cloud transmission device according to embodiments. The elements of the transmission device illustrated in FIG. 27 may be implemented by hardware, software, a processor connected to a memory, and/or a combination thereof. That is, the elements of the transmission device of FIG. 27 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, although not illustrated in the drawing. One or more processors may perform at least one or more of the operations and/or functions of the elements of the transmission device of FIG. 27 described above. In addition, one or more processors may operate or execute a set of software programs and/or instructions for performing the operations and/or functions of the elements of the transmission device of FIG. 27. The execution order of each block in FIG. 27 may be changed, some blocks may be omitted, and some new blocks may be added.
실시예들에 따르면, 포인트 클라우드 송신 장치는 데이터 입력부(51001), 시그널링 처리부(51002), 지오메트리 인코더(51003), 어트리뷰트 인코더(51004), 및 전송 처리부(51005)를 포함할 수 있다. According to embodiments, the point cloud transmission device may include a data input unit (51001), a signaling processing unit (51002), a geometry encoder (51003), an attribute encoder (51004), and a transmission processing unit (51005).
상기 지오메트리 인코더(51003)와 어트리뷰트 인코더(51004)는 도 1의 포인트 클라우드 비디오 인코더(10002), 도 2의 인코딩(20001), 도 3의 포인트 클라우드 비디오 인코더, 도 8의 포인트 클라우드 비디오 인코더, 및 도 25의 인코딩, 도 41의 인코딩에서 설명된 동작의 일부 또는 전체를 수행할 수 있다.The above geometry encoder (51003) and attribute encoder (51004) can perform some or all of the operations described in the point cloud video encoder (10002) of FIG. 1, the encoding (20001) of FIG. 2, the point cloud video encoder of FIG. 3, the point cloud video encoder of FIG. 8, and the encoding of FIG. 25 and FIG. 41.
실시예들에 따른 데이터 입력부(51001)는 포인트 클라우드 데이터를 수신 또는 획득한다. 상기 데이터 입력부(51001)는 도 1의 포인트 클라우드 비디오 획득부(10001)의 동작의 일부 또는 전부를 수행할 수도 있고 또는 도 8의 데이터 입력부(8000)의 동작의 일부 또는 전부를 수행할 수도 있다.The data input unit (51001) according to the embodiments receives or acquires point cloud data. The data input unit (51001) may perform part or all of the operations of the point cloud video acquisition unit (10001) of FIG. 1, or may perform part or all of the operations of the data input unit (8000) of FIG. 8.
상기 데이터 입력부(51001)는 포인트 클라우드 데이터의 포인트들의 포지션들을 지오메트리 인코더(51003)로 출력하고, 포인트 클라우드 데이터의 포인트들의 어트리뷰트들을 어트리뷰트 인코더(51004)로 출력한다. 또한 파라미터들은 시그널링 처리부(51002)로 출력한다. 실시예들에 따라 파라미터들은 지오메트리 인코더(51003)와 어트리뷰트 인코더(51004)로 제공될 수도 있다.The above data input unit (51001) outputs the positions of points of the point cloud data to the geometry encoder (51003) and outputs the attributes of the points of the point cloud data to the attribute encoder (51004). In addition, the parameters are output to the signaling processing unit (51002). According to embodiments, the parameters may be provided to the geometry encoder (51003) and the attribute encoder (51004).
상기 지오메트리 인코더(51003)는 입력되는 포인트들의 포지션들을 이용하여 레이어 그룹 기반으로 지오메트리 압축을 수행한다. 상기 지오메트리 인코더(51003)는 압축된 지오메트리 정보에 대해 엔트로피 인코딩을 수행하여 지오메트리 비트스트림 형태로 전송 처리부(51005)로 출력한다. The above geometry encoder (51003) performs geometry compression based on layer groups using the positions of input points. The geometry encoder (51003) performs entropy encoding on the compressed geometry information and outputs it to the transmission processing unit (51005) in the form of a geometry bitstream.
상기 지오메트리 인코더(51003)는 압축을 통해 변경된 포지션들을 기반으로 지오메트리 정보를 재구성하고, 재구성된(또는 복호화된) 지오메트리 정보를 상기 어트리뷰트 인코더(51004)로 출력한다.The above geometry encoder (51003) reconstructs geometry information based on positions changed through compression, and outputs the reconstructed (or decoded) geometry information to the attribute encoder (51004).
실시예들에 따르면, 지오메트리 인코더(51003)는 입력되는 포인트들의 포지션들을 이용하여 옥트리를 구성하고, 옥트리에서 레이어 그룹 기반 슬라이싱을 수행하고, 하나 이상의 슬라이스들을 선택한 후, 선택된 하나 이상의 슬라이스의 지오메트리 정보의 압축을 수행한다. 실시예들에 따른 레이어 그룹 기반 슬라이싱 및 슬라이스 단위의 지오메트리 압축은 도 11 내지 도 25에서 상세히 설명하였으므로, 중복 설명을 피하기 위해 여기서는 생략한다.According to embodiments, the geometry encoder (51003) constructs an octree using positions of input points, performs layer group-based slicing on the octree, selects one or more slices, and then compresses geometry information of the selected one or more slices. Layer group-based slicing and slice-based geometry compression according to embodiments are described in detail in FIGS. 11 to 25, and thus are omitted here to avoid redundant description.
상기 어트리뷰트 인코더(51004)는 지오메트리 인코딩이 수행되지 않은 포지션들 및/또는 재구성된 지오메트리 정보를 기반으로 어트리뷰트 정보를 압축한다. 일 실시예로, 상기 어트리뷰트 정보는 RAHT 코딩, LOD 기반의 예측 변환 코딩 및 리프팅 변환 코딩 중 어느 하나 또는 하나 이상을 조합하여 코딩될 수 있다. 상기 어트리뷰트 인코더(51004)는 압축된 어트리뷰트 정보에 대해 엔트로피 인코딩을 수행하여 어트리뷰트 비트스트림 형태로 전송 처리부(51005)로 출력한다.The attribute encoder (51004) compresses attribute information based on positions for which geometry encoding has not been performed and/or reconstructed geometry information. In one embodiment, the attribute information may be coded using one or a combination of one or more of RAHT coding, LOD-based predictive transform coding, and lifting transform coding. The attribute encoder (51004) performs entropy encoding on the compressed attribute information and outputs it to the transmission processing unit (51005) in the form of an attribute bitstream.
상기 시그널링 처리부(51002)는 지오메트리 정보와 어트리뷰트 정보의 인코딩/디코딩/렌더링 등에 필요한 시그널링 정보를 생성 및/또는 처리하여 지오메트리 인코더(51003), 어트리뷰트 인코더(51004) 및/또는 전송 처리부(51005)로 제공할 수 있다. 또는 상기 시그널링 처리부(51002)가 지오메트리 인코더(51003), 어트리뷰트 인코더(51004) 및/또는 전송 처리부(51005)에서 생성된 시그널링 정보를 제공받을 수도 있다. 상기 시그널링 처리부(51002)는 수신 장치에서 피드백되는 정보(예를 들어, 헤드 오리엔테이션 정보 및/또는 뷰포트 정보를 지오메트리 인코더(51003), 어트리뷰트 인코더(51004) 및/또는 전송 처리부(51005)로 제공할 수도 있다.The signaling processing unit (51002) may generate and/or process signaling information necessary for encoding/decoding/rendering of geometry information and attribute information and provide the generated signaling information to the geometry encoder (51003), the attribute encoder (51004) and/or the transmission processing unit (51005). Alternatively, the signaling processing unit (51002) may receive signaling information generated from the geometry encoder (51003), the attribute encoder (51004) and/or the transmission processing unit (51005). The signaling processing unit (51002) may also provide information fed back from a receiving device (e.g., head orientation information and/or viewport information) to the geometry encoder (51003), the attribute encoder (51004) and/or the transmission processing unit (51005).
본 명세서에서 레이어 그룹 기반 슬라이싱 관련 정보를 포함하는 시그널링 정보(LGSI, 레이어 그룹 구조 인벤토리)는 parameter set (SPS: sequence parameter set, GPS: geometry parameter set, APS: attribute parameter set, TPS: Tile Parameter Set (또는 tile inventory라 함) 등) 및/또는 데이터 유닛(즉, 슬라이스) 단위로 시그널링되어 전송될 수 있다. 즉, 슬라이스 또는 타일과 같이 각 영상의 코딩 유닛(또는 압축 유닛 또는 예측 유닛) 단위로 시그널링되어 전송될 수도 있다. In this specification, signaling information (LGSI, Layer Group Structure Inventory) including layer group-based slicing-related information can be signaled and transmitted in units of parameter sets (SPS: sequence parameter set, GPS: geometry parameter set, APS: attribute parameter set, TPS: Tile Parameter Set (or tile inventory) etc.) and/or data units (i.e., slices). That is, it can also be signaled and transmitted in units of coding units (or compression units or prediction units) of each image, such as slices or tiles.
상기 전송 처리부(51005)는 도 8의 전송 처리부(8012)의 동작 및/또는 전송 방법과 동일 또는 유사한 동작 및/또는 전송 방법을 수행할 수도 있고, 도 1의 트랜스미터(10003)의 동작 및/또는 전송 방법과 동일 또는 유사한 동작 및/또는 전송 방법을 수행할 수 있다. 구체적인 설명은 도 1 또는 도 8의 설명을 참조하기로 하고 여기서는 생략한다.The above transmission processing unit (51005) may perform the same or similar operation and/or transmission method as the operation and/or transmission method of the transmission processing unit (8012) of FIG. 8, and may perform the same or similar operation and/or transmission method as the operation and/or transmission method of the transmitter (10003) of FIG. 1. A specific description will be omitted here, referring to the description of FIG. 1 or FIG. 8.
상기 전송 처리부(51005)는 상기 지오메트리 인코더(51003)에서 출력되는 지오메트리 비트스트림, 상기 어트리뷰트 인코더(51004)에서 출력되는 어트리뷰트 비트스트림, 상기 시그널링 처리부(51002)에서 출력되는 시그널링 비트스트림을 하나의 비트스트림으로 다중화한 후 그대로 전송하거나 또는 파일이나 세그먼트 등로 인캡슐레이션하여 전송할 수 있다. 본 문서에서 파일은 ISOBMFF 파일 포맷인 것을 일 실시예로 한다. The above transmission processing unit (51005) multiplexes the geometry bitstream output from the geometry encoder (51003), the attribute bitstream output from the attribute encoder (51004), and the signaling bitstream output from the signaling processing unit (51002) into a single bitstream and transmits it as is, or encapsulates it into a file or segment and transmits it. In this document, as an example, the file is in the ISOBMFF file format.
실시예들에 따라 파일 또는 세그먼트는 수신 장치로 전송되거나, 디지털 저장매체(예를 들면 USB, SD, CD, DVD, 블루레이, HDD, SSD 등)에 저장될 수 있다. 실시예들에 따른 전송 처리부(51005)는 수신 장치와 4G, 5G, 6G 등의 네트워크를 통해 유/무선 통신 가능하다. 또한 전송 처리부(51005)는 네트워크 시스템(예를 들면 4G, 5G, 6G 등의 통신 네트워크 시스템)에 따라 필요한 데이터 처리 동작을 수행할 수 있다. 또한 전송 처리부(51005)는 온 디맨드(On Demand) 방식에 따라 인캡슐레이션된 데이터를 전송할 수도 있다.According to embodiments, files or segments may be transmitted to a receiving device or stored in a digital storage medium (e.g., USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc.). The transmission processing unit (51005) according to embodiments may communicate with the receiving device via a network such as 4G, 5G, or 6G, either wired or wirelessly. In addition, the transmission processing unit (51005) may perform necessary data processing operations depending on the network system (e.g., a communication network system such as 4G, 5G, or 6G). In addition, the transmission processing unit (51005) may also transmit encapsulated data in an on-demand manner.
도 28은 실시예들에 따른 포인트 클라우드 수신 장치의 또 다른 예시를 보인 도면이다. 도 28에 도시된 수신 장치의 엘리먼트들은 하드웨어, 소프트웨어, 메모리에 연결된 프로세서 및/또는 그것들의 결합 등으로 구현될 수 있다. 즉, 도 28의 수신 장치의 엘레멘트들은 도면에 도시되지 않았으나 하나 또는 그 이상의 메모리들과 통신 가능하도록 설정된 하나 또는 그 이상의 프로세서들 또는 집적 회로들(integrated circuits)을 포함하는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 구현될 수 있다. 하나 또는 그 이상의 프로세서들은 상술한 도 28의 수신 장치의 엘레멘트들의 동작들 및/또는 기능들 중 적어도 어느 하나 이상을 수행할 수 있다. 또한 하나 또는 그 이상의 프로세서들은 도28의 수신 장치의 엘레멘트들의 동작들 및/또는 기능들을 수행하기 위한 소프트웨어 프로그램들 및/또는 인스트럭션들의 세트를 동작하거나 실행할 수 있다. 도 28에서 각 블록의 수행 순서는 변경될 수 있으며, 일부 블록은 생략될 수 있고, 일부 블록은 새로 추가될 수 있다.FIG. 28 is a diagram showing another example of a point cloud receiving device according to embodiments. The elements of the receiving device illustrated in FIG. 28 may be implemented by hardware, software, a processor connected to a memory, and/or a combination thereof. That is, the elements of the receiving device illustrated in FIG. 28 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, although not illustrated in the drawing. One or more processors may perform at least one or more of the operations and/or functions of the elements of the receiving device illustrated in FIG. 28 described above. Furthermore, one or more processors may operate or execute a set of software programs and/or instructions for performing the operations and/or functions of the elements of the receiving device illustrated in FIG. 28. The execution order of each block in FIG. 28 may be changed, some blocks may be omitted, and some new blocks may be added.
실시예들에 따르면, 포인트 클라우드 수신 장치는 수신 처리부(61001), 시그널링 처리부(61002), 지오메트리 디코더(61003), 어트리뷰트 디코더(61004), 지오메트리 버퍼(61005), 어트리뷰트 버퍼(61006) 및 후 처리부(Post-processor, 61007)를 포함할 수 있다.According to embodiments, the point cloud receiving device may include a receiving processing unit (61001), a signaling processing unit (61002), a geometry decoder (61003), an attribute decoder (61004), a geometry buffer (61005), an attribute buffer (61006), and a post-processor (61007).
실시예들에 따른 수신 처리부(61001)는 하나의 비트스트림을 수신할 수도 있고, 또는 지오메트리 비트스트림, 어트리뷰트 비트스트림, 시그널링 비트스트림을 각각 수신할 수도 있다. 실시예들에 따른 수신 처리부(61001)는 파일 및/또는 세그먼트가 수신되면, 수신된 파일 및/또는 세그먼트를 디캡슐레이션하여 비트스트림으로 출력할 수 있다.The receiving processing unit (61001) according to the embodiments may receive a single bitstream, or may receive a geometry bitstream, an attribute bitstream, and a signaling bitstream, respectively. When a file and/or segment is received, the receiving processing unit (61001) according to the embodiments may decapsulate the received file and/or segment and output it as a bitstream.
실시예들에 따른 수신 처리부(61001)는 하나의 비트스트림이 수신(또는 디캡슐레이션)되면, 하나의 비트스트림으로부터 지오메트리 비트스트림, 어트리뷰트 비트스트림, 및/또는 시그널링 비트스트림을 디멀티플렉싱하고, 디멀티플렉스된 시그널링 비트스트림은 시그널링 처리부(61002)로, 지오메트리 비트스트림은 지오메트리 디코더(61003)로, 어트리뷰트 비트스트림은 어트리뷰트 디코더(61004)로 출력할 수 있다.According to the embodiments, when one bitstream is received (or decapsulated), the reception processing unit (61001) can demultiplex a geometry bitstream, an attribute bitstream, and/or a signaling bitstream from the one bitstream, and output the demultiplexed signaling bitstream to the signaling processing unit (61002), the geometry bitstream to the geometry decoder (61003), and the attribute bitstream to the attribute decoder (61004).
실시예들에 따른 수신 처리부(61001)는 지오메트리 비트스트림, 어트리뷰트 비트스트림, 및/또는 시그널링 비트스트림이 각각 수신(또는 디캡슐레이션)되면, 시그널링 비트스트림은 시그널링 처리부(61002)로, 지오메트리 비트스트림은 지오메트리 디코더(61003)로, 어트리뷰트 비트스트림은 어트리뷰트 디코더(61004)로 전달할 수 있다.According to the embodiments, when a geometry bitstream, an attribute bitstream, and/or a signaling bitstream are each received (or decapsulated), the receiving processing unit (61001) can transmit the signaling bitstream to the signaling processing unit (61002), the geometry bitstream to the geometry decoder (61003), and the attribute bitstream to the attribute decoder (61004).
실시예들에 따른 수신 처리부(61001)는 시그널링 처리부(61002)에서 처리된 시그널링 정보를 기반으로 지오메트리 비트스트림과 어트리뷰트 비트스트림을 슬라이스 단위, 레이어 그룹 또는 서브그룹 단위로 구분하고, 슬라이스 단위/레이어 그룹/서브그룹 단위의 지오메트리 비트스트림은 지오메트리 디코더(61003)로, 슬라이스 단위/레이어 그룹/서브그룹 단위의 어트리뷰트 비트스트림은 어트리뷰트 디코더(61004)로 전달할 수 있다. 예를 들어, 지오메트리 디코더(61003)의 입력(input)은 미세 입도 슬라이스 비트스트림(fine granularity slice bitstream 또는 레이어 그룹 기반 슬라이스 비트스트림), 레이어 그룹 구조(layer-group structure)를 포함할 수 있다.The receiving processing unit (61001) according to the embodiments may divide the geometry bitstream and the attribute bitstream into slice units, layer groups, or subgroup units based on the signaling information processed by the signaling processing unit (61002), and may transmit the geometry bitstream in slice units/layer groups/subgroup units to the geometry decoder (61003), and the attribute bitstream in slice units/layer groups/subgroup units to the attribute decoder (61004). For example, the input of the geometry decoder (61003) may include a fine granularity slice bitstream (or layer group-based slice bitstream) and a layer-group structure.
상기 시그널링 처리부(61002)는 입력된 시그널링 비트스트림으로부터 시그널링 정보 예를 들어, SPS, GPS, APS, TPS, LGSI, 메타 데이터 등에 포함된 정보를 파싱 및 처리하여 수신 처리부(61001), 지오메트리 디코더(61003), 어트리뷰트 디코더(61004), 지오메트리 버퍼(61005), 어트리뷰트 버퍼(61006), 및 후 처리부(61007)로 제공할 수 있다. 다른 실시예로, 지오메트리 데이터 유닛 헤더 및/또는 어트리뷰트 데이터 유닛 헤더에 포함된 시그널링 정보도 해당 슬라이스(또는 서브그룹) 데이터를 디코딩하기 전에 상기 시그널링 처리부(61002)에서 미리 파싱될 수도 있다. 본 개시에서 지오메트리 버퍼(61005)는 지오메트리 디코딩을 위해 현재 서브그룹에 속한 노드들 및/또는 현재 서브그룹의 부모 서브그룹에 속한 노드들을 저장할 수 있다. 또한, 종속 데이터 유닛을 디코딩하기 전에, 이전 슬라이스의 컨텍스트 상태, 출력 노드들 및 레이어 그룹 파라미터들이 다음 슬라이스들을 위해 지오메트리 버퍼(61005)에 저장된다(S2602). 또한, 어트리뷰트 버퍼(61006)는 어트리뷰트 디코딩을 위해 현재 서브그룹에 속한 노드들 및/또는 현재 서브그룹의 부모 서브그룹에 속한 노드들을 포함할 수 있다. The signaling processing unit (61002) may parse and process signaling information, for example, information included in SPS, GPS, APS, TPS, LGSI, metadata, etc., from the input signaling bitstream and provide the information to the receiving processing unit (61001), the geometry decoder (61003), the attribute decoder (61004), the geometry buffer (61005), the attribute buffer (61006), and the post-processing unit (61007). In another embodiment, signaling information included in a geometry data unit header and/or an attribute data unit header may also be pre-parsed by the signaling processing unit (61002) before decoding the corresponding slice (or subgroup) data. In the present disclosure, the geometry buffer (61005) may store nodes belonging to the current subgroup and/or nodes belonging to a parent subgroup of the current subgroup for geometry decoding. Additionally, before decoding a dependent data unit, the context state, output nodes, and layer group parameters of the previous slice are stored in the geometry buffer (61005) for the next slices (S2602). Additionally, the attribute buffer (61006) may include nodes belonging to the current subgroup and/or nodes belonging to the parent subgroup of the current subgroup for attribute decoding.
실시예들에 따르면, 시그널링 처리부(61002)는 시퀀스 파라미터 세트, 지오메트리 파라미터 세트 및/또는 지오메트리 데이터 유닛 헤더에 시그널링된 정보 (예를 들어, 레이어 그룹 기반 슬라이싱 관련 정보)도 파싱 및 처리하여 지오메트리 디코더(61003)와 지오메트리 버퍼(61005)로 제공할 수 있다.According to embodiments, the signaling processing unit (61002) may also parse and process information signaled in a sequence parameter set, a geometry parameter set, and/or a geometry data unit header (e.g., layer group-based slicing-related information) and provide the information to a geometry decoder (61003) and a geometry buffer (61005).
실시예들에 따르면, 시그널링 처리부(61002)는 시퀀스 파라미터 세트, 어트리뷰트 파라미터 세트, 및/또는 어트리뷰트 데이터 유닛 헤더에 시그널링된 정보 (예를 들어, 레이어 그룹 기반 슬라이싱 관련 정보)도 파싱 및 처리하여 어트리뷰트 디코더(61004)와 어트리뷰트 버퍼(61006)로 제공할 수 있다.According to embodiments, the signaling processing unit (61002) may also parse and process information signaled in a sequence parameter set, an attribute parameter set, and/or an attribute data unit header (e.g., layer group-based slicing-related information) and provide the information to an attribute decoder (61004) and an attribute buffer (61006).
실시예들에 따르면, 지오메트리 디코더(61003)는 압축된 지오메트리 비트스트림에 대해 시그널링 정보(예를 들어, 레이어 그룹 기반 슬라이싱 관련 정보)를 기반으로 도 27의 지오메트리 인코더(51003)의 역과정을 수행하여 지오메트리를 복원할 수 있다. 상기 지오메트리 디코더(61003)에서 레이어 그룹 슬라이싱이 인에이블되면 수행되는 지오메트리 디코딩은 도 11 내지 도 23, 도 26에서 상세히 설명하였으므로, 중복 설명을 피하기 위해 여기서는 생략한다.According to embodiments, the geometry decoder (61003) can restore the geometry by performing the reverse process of the geometry encoder (51003) of FIG. 27 based on signaling information (e.g., layer group-based slicing related information) for the compressed geometry bitstream. The geometry decoding performed when layer group slicing is enabled in the geometry decoder (61003) is described in detail in FIGS. 11 to 23 and FIG. 26, and thus is omitted here to avoid redundant description.
상기 지오메트리 디코더(61003)에서 복원된(또는 재구성된(reconstructed)) 지오메트리 정보는 어트리뷰트 디코더(61004)로 제공된다. The geometry information restored (or reconstructed) from the geometry decoder (61003) is provided to the attribute decoder (61004).
상기 어트리뷰트 디코더(61004)는 압축된 어트리뷰트 비트스트림에 대해 시그널링 정보와 재구성된 지오메트리 정보를 기반으로 도 27의 어트리뷰트 인코더(51004)의 역과정을 수행하여 어트리뷰트를 복원할 수 있다. The above attribute decoder (61004) can restore attributes by performing the reverse process of the attribute encoder (51004) of FIG. 27 based on signaling information and reconstructed geometry information for the compressed attribute bitstream.
실시예들에 따르면, 어트리뷰트 디코더(61004)는 서브그룹 단위로 LoD 생성 및 NN 서치를 수행할 수 있다.According to embodiments, the attribute decoder (61004) can perform LoD generation and NN search on a subgroup basis.
실시예들에 따르면, 후 처리부(61007)는 상기 지오메트리 디코더(61003)에서 복원되어 출력되는 지오메트리 정보(즉, 포지션들)과 상기 어트리뷰트 디코더(61004)에서 복원되어 출력되는 어트리뷰트 정보를 매칭하여 포인트 클라우드 데이터를 재구성하고 디스플레이/렌더링할 수 있다.According to embodiments, the post-processing unit (61007) can reconstruct and display/render point cloud data by matching the geometry information (i.e., positions) restored and output from the geometry decoder (61003) with the attribute information restored and output from the attribute decoder (61004).
아래에서는 위에서 설명한 레이어 구성을 위한 슬라이스 구조 및 스케일러블 전송을 위한 시그널링 방법에 대해서 기술한다.Below, we describe the slice structure for the layer configuration described above and the signaling method for scalable transmission.
도 29는 실시예들에 따른 비트스트림 구성을 나타낸다.Figure 29 shows a bitstream configuration according to embodiments.
실시예들에 따른 방법/장치는 도 29와 같은 비트스트림을 생성할 수 있다. 비트스트림은 인코딩된 지오메트리 데이터 및 어트리뷰트 데이터를 포함하고, 파라미터 정보를 포함할 수 있다.The method/device according to the embodiments can generate a bitstream as in FIG. 29. The bitstream includes encoded geometry data and attribute data, and may include parameter information.
파라미터 정보에 관한 신택스 및 시맨틱스(Syntax and semantics)는 다음과 같다.The syntax and semantics for parameter information are as follows.
실시예들에 따른 분리된 slice에 대한 정보를 아래와 같이 비트스트림의 파라미터 세트(parameter set) 및 SEI 메시지(message)에 정의할 수 있다. Information about separated slices according to embodiments can be defined in the parameter set and SEI message of the bitstream as follows.
실시예들에 따르면, 비트스트림은 시퀀스 파라미터 세트(sequence parameter set), 지오메트리 파라미터 세트(geometry parameter set), 어트리뷰트 파라미터 세트(attribute parameter set), 지오메트리 슬라이스 헤더(geometry slice header 또는 지오메트리 데이터 유닛 헤더라 함) 및 어트리뷰트 슬라이스 헤더(attribute slice header 또는 어트리뷰트 데이터 유닛 헤더라 함) 등을 포함할 수 있다. 어플리케이션, 시스템에 따라 상응되는 위치 혹은 별도의 위치에 정의하여 적용 범위, 적용 방법 등을 다르게 사용할 수 있다. 즉 시그널이 전달되는 위치에 따라 서로 다른 의미를 가질 수 있는데 만약 SPS에 정의되는 경우 시퀀스 전체에 동일하게 적용될 수 있으며, GPS에 정의되는 경우 위치 복원에 사용됨을 나타낼 수 있으며, APS에 정의되는 경우 속성 복원에 적용됨을 나타낼 수 있으며, TPS에 정의되는 경우 tile 내의 포인트에 대해서만 해당 시그널링 적용됨을 나타낼 수 있으며, 슬라이스 단위로 전달되는 경우 해당 slice에 대해서만 시그널이 적용됨을 나타낼 수 있다. 또한 어플리케이션, 시스템에 따라 상응되는 위치 혹은 별도의 위치에 정의하여 적용 범위, 적용 방법 등을 다르게 사용할 수 있다. 또한 아래 정의된 신택스 엘리먼트(syntax element)가 현재 포인트 클라우드 데이터 스트림(point cloud data stream) 뿐 아니라 복수의 포인트 클라우드 데이터 스트림(point cloud data stream)에 적용될 수 있는 경우에는 상위 개념의 파라미터 세트(parameter set) 등을 통해 전달할 수 있다. According to embodiments, the bitstream may include a sequence parameter set, a geometry parameter set, an attribute parameter set, a geometry slice header (also called a geometry slice header or geometry data unit header), and an attribute slice header (also called an attribute data unit header). Depending on the application or system, the scope of application, the method of application, etc. may be used differently by defining them in corresponding locations or in separate locations. That is, the signal may have different meanings depending on the location where it is transmitted. If it is defined in SPS, it may be applied equally to the entire sequence. If it is defined in GPS, it may indicate that it is used for location recovery. If it is defined in APS, it may indicate that it is applied to attribute recovery. If it is defined in TPS, it may indicate that the signaling is applied only to points within a tile. If it is transmitted in slice units, it may indicate that the signal is applied only to the corresponding slice. In addition, depending on the application or system, the scope of application, the method of application, etc. may be used differently by defining them in corresponding locations or in separate locations. Additionally, if the syntax element defined below can be applied to multiple point cloud data streams as well as the current point cloud data stream, it can be conveyed through a parameter set of a higher concept, etc.
각 약어는 다음을 의미한다. SPS: Sequence Parameter Set, GPS: Geometry Parameter Set, APS: Attribute Parameter Set, TPS: Tile Parameter Set, Geom: Geometry bitstream = geometry slice header+ geometry slice data, Attr: Attrobite bitstream = attribute slice header + attribute slice data.Each abbreviation means: SPS: Sequence Parameter Set, GPS: Geometry Parameter Set, APS: Attribute Parameter Set, TPS: Tile Parameter Set, Geom: Geometry bitstream = geometry slice header+ geometry slice data, Attr: Attrobite bitstream = attribute slice header + attribute slice data.
실시예들은 코딩(coding) 기법과 독립적으로 해당 정보를 정의하지만, 코딩(coding 방법과 연계하여 정의할 수 있으며, 지역적으로 서로 다른 scalability를 지원하기 위해 비트스트림의 타일 파라미터 세트(tile parameter set)에 정의할 수 있다. 또한 아래 정의된 신택스 엘리먼트(syntax element)가 현재 포인트 클라우드 데이터 스트림(point cloud data stream) 뿐 아니라 복수의 포인트 클라우드 데이터 스트림(point cloud data stream)에 적용될 수 있는 경우에는 상위 개념의 파라미터 세트(parameter set) 등을 통해 전달할 수 있다. The embodiments define the information independently of the coding technique, but can be defined in conjunction with the coding method, and can be defined in the tile parameter set of the bitstream to support regionally different scalability. In addition, if the syntax element defined below can be applied to multiple point cloud data streams as well as the current point cloud data stream, it can be conveyed through a parameter set of a higher concept, etc.
또는, 비트스트림에 대하여NAL (Network abstract layer) 단위를 정의하고 레이어 아이디(layer_id)와 같이 layer를 선택할 수 있는 관련 정보를 전달함으로써 시스템 레벨(system level)에서 비트스트림(bitstream)을 선택할 수도 있다.Alternatively, a bitstream can be selected at the system level by defining a NAL (Network abstract layer) unit for the bitstream and passing relevant information for selecting a layer, such as a layer_id.
실시예들에 따르면, 포인트 클라우드 데이터의 인코딩 및/또는 디코딩에 필요한 파라미터들은 포인트 클라우드 데이터의 파라미터 세트들((예를 들어, SPS, GPS, APS, 및 TPS (또는 타일 인벤토리라 함) 등) 및/또는 해당 슬라이스의 헤더(즉, 데이터 유닛 헤더 또는 슬라이스 헤더라 칭함) 등에 새로 정의될 수 있다. 예를 들어, 지오메트리 정보의 인코딩 및/또는 디코딩을 수행할 때에는 지오메트리 파라미터 세트(GPS)에, 타일 기반의 인코딩 및/또는 디코딩을 수행할 때에는 타일 및/또는 데이터 유닛 헤더에 추가할 수 있다.According to embodiments, parameters required for encoding and/or decoding of point cloud data may be newly defined in parameter sets of point cloud data (e.g., SPS, GPS, APS, and TPS (or referred to as tile inventory)) and/or headers of corresponding slices (i.e., referred to as data unit headers or slice headers). For example, when performing encoding and/or decoding of geometry information, parameters may be added to a geometry parameter set (GPS), and when performing tile-based encoding and/or decoding, parameters may be added to a tile and/or data unit header.
실시예들에 따르면, 레이어 그룹 기반 슬라이싱 관련 정보는 시퀀스 파라미터 세트 및/또는 지오메트리 파라미터 세트 및/또는 어트리뷰트 파라미터 세트 및/또는 레이어 그룹 구조 인벤토리(LGSI)에 시그널링될 수 있다.According to embodiments, layer group-based slicing related information may be signaled in a sequence parameter set and/or a geometry parameter set and/or an attribute parameter set and/or a layer group structure inventory (LGSI).
실시예들에 따르면, 레이어 그룹 기반 슬라이싱 관련 정보는 타일 파라미터 세트 및/또는 지오메트리 데이터 유닛 헤더 및/또는 어트리뷰트 데이터 유닛 헤더및/또는 레이어 그룹 구조 인벤토리(LGSI)에 시그널링될 수 있다.According to embodiments, layer group-based slicing related information may be signaled in a tile parameter set and/or a geometry data unit header and/or an attribute data unit header and/or a layer group structure inventory (LGSI).
실시예들에 따르면, 아래 정의된 신택스 엘리먼트(syntax element)가 현재 포인트 클라우드 데이터 스트림뿐 아니라 복수의 포인트 클라우드 데이터 스트림에 적용될 수 있는 경우에는 상위 개념의 파라미터 세트 등을 통해 레이어 그룹 기반 슬라이싱 관련 정보를 전달할 수 있다. According to embodiments, when the syntax element defined below can be applied to multiple point cloud data streams as well as the current point cloud data stream, layer group-based slicing-related information can be conveyed through a parameter set of a higher concept, etc.
실시예들에 따르면, 레이어 그룹 기반 슬라이싱 관련 정보는 어플리케이션, 시스템에 따라 상응되는 위치 또는 별도의 위치에 정의하여 적용 범위, 적용 방법 등을 다르게 사용할 수 있다. 이후 설명되는 본 명세서의 신택스들에서 사용되는 용어인 필드는 파라미터 또는 신택스 엘리먼트와 동일한 의미를 가질 수 있다.According to embodiments, layer group-based slicing-related information may be defined in corresponding locations or separate locations depending on the application or system, and may be used differently in terms of scope of application, application method, etc. The term "field" used in the syntaxes of this specification described below may have the same meaning as a parameter or syntax element.
이하, 실시예들에 따른 파라미터(메타데이터, 시그널링 정보 등 다양하게 호칭 가능함)는 실시예들에 따른 송신기의 프로세스 상 생성될 수 있고, 실시예들에 따른 수신기에 전달되어 재구성 과정에 이용될 수 있다.Below, parameters (which may be called various names such as metadata, signaling information, etc.) according to the embodiments may be generated in the process of the transmitter according to the embodiments, and may be transmitted to the receiver according to the embodiments and used in the reconstruction process.
실시예들에 따르면, 레이어 그룹 기반 슬라이싱 관련 정보를 포함하는 파라미터(메타데이터, 시그널링 정보 등 다양하게 호칭 가능함)는 송신 장치의 메타데이터 처리부(또는 메타데이터 제너레이터)나 시그널링 처리부에서 생성될 수 있고, 수신 장치에 전달되어 디코딩/재구성 과정에 이용될 수 있다. 예를 들어, 송신 장치에서 생성되어 전송되는 파라미터는 수신 장치의 메타데이터 파서에서 획득될 수 있다.According to embodiments, parameters (which may be variously referred to as metadata, signaling information, etc.) containing layer group-based slicing-related information may be generated by a metadata processing unit (or metadata generator) or a signaling processing unit of a transmitting device, and may be transmitted to a receiving device to be used in a decoding/reconstruction process. For example, parameters generated and transmitted by a transmitting device may be acquired by a metadata parser of the receiving device.
실시예들에 따르면, 레이어 그룹 구조를 설명하는 파라미터들(예, 레이어 그룹 기반 슬라이싱 관련 정보를 포함하는 파라미터들)은 다양한 레벨에서 시그널링된다. 예를 들어, SPS에서는 공통 구조 정보가 SPS에 기술되고, 각 레이어 그룹 또는 서브그룹의 세부 사항은 슬라이스 헤더(또는 데이터 유닛 헤더라 칭함)에 시그널링된다. 또한 전체적인 레이어 그룹 구조를 설명하기 위해 레이어 그룹 구조 인벤토리와 종속 슬라이스 헤더(또는 종속(dependent) 데이터 유닛 헤더라 칭함)를 제공한다. G-PCC 슬라이스들의 정의와 미세 입도(Fine-granularity) 슬라이싱의 시그널링 방법은 다음과 같다.According to embodiments, parameters describing a layer group structure (e.g., parameters including layer group-based slicing-related information) are signaled at various levels. For example, in SPS, common structure information is described in the SPS, and details of each layer group or subgroup are signaled in a slice header (or data unit header). In addition, a layer group structure inventory and a dependent slice header (or dependent data unit header) are provided to describe the overall layer group structure. The definition of G-PCC slices and the signaling method of fine-granularity slicing are as follows.
1) G-PCC 슬라이스들의 정의.1) Definition of G-PCC slices.
. 슬라이스: 하나의 독립적인 Fine-granularity 슬라이스와 0개 이상의 종속 Fine-granularity 슬라이스들로 코딩된 포인트들의 세트이다. 예를 들어, 슬라이스는 복수의 FGS들을 포함할 수 있고, FGS는 세그먼트된 슬라이스, 세분화된 슬라이스 등으로 지칭될 수 있다.. Slice: A set of points coded as one independent fine-granularity slice and zero or more dependent fine-granularity slices. For example, a slice may contain multiple FGSs, and an FGS may be referred to as a segmented slice, a subdivided slice, etc.
. 종속적 Fine-granularity 슬라이스: 동일한 슬라이스 내의 이전 데이터 유닛에 종속하는 슬라이스의 데이터 유닛이다.. Dependent Fine-granularity Slice: A data unit in a slice that is dependent on the previous data unit within the same slice.
. 독립적인 Fine-granularity 슬라이스: 슬라이스의 첫 번째 [지오메트리] 데이터 유닛이다.. Independent Fine-granularity slice: The first [geometry] data unit of the slice.
2) Fine-granularity 슬라이스는 SPS에서 활성화된다.2) Fine-granularity slices are activated in SPS.
3) 종속 Fine-granularity 슬라이스를 디코딩하는 데 필요한 필수 정보는 컨텍스트 상속 및 슬라이스별 바운더리 박스를 포함하여 종속 데이터 유닛 헤더에 의해 전달된다.3) The essential information required to decode dependent fine-granularity slices is conveyed by the dependent data unit header, including context inheritance and slice-specific boundary boxes.
4) Fine-granularity 슬라이스들간의 관계를 설명하기 위해 레이어 그룹 구조 인벤토리를 정의한다.4) Define a layer group structure inventory to describe the relationships between fine-granularity slices.
도 30a, 도 30b는 실시예들에 따른 시퀀스 파라미터 세트(SPS, sequence parameter set)의 신택스 구조의 일 예를 나타낸다. SPS는 포인트 클라우드 데이터 비트스트림의 시퀀스 정보를 포함할 수 있으며, 특히 레이어 그룹 기반 슬라이싱 관련 정보를 포함하는 예를 보이고 있다.Figures 30a and 30b illustrate an example syntax structure of a sequence parameter set (SPS) according to embodiments. The SPS may include sequence information of a point cloud data bitstream, and in particular, an example of including information related to layer group-based slicing is shown.
도 30a, 도 30b의 신택스들은 도 29의 비트스트림에 포함되고, 실시예들에 따른 포인트 클라우드 인코더에 의해 생성되고, 포인트 클라우드 디코더에 의해 디코딩될 수 있다.The syntaxes of FIGS. 30a and 30b are included in the bitstream of FIG. 29, and can be generated by a point cloud encoder according to embodiments and decoded by a point cloud decoder.
simple_profile_compatibility_flag: 비트스트림이 단순 프로파일을 준수하는지(1인 경우) 또는 그렇지 않은지(0인 경우)를 나타낸다.simple_profile_compatibility_flag: Indicates whether the bitstream conforms to the simple profile (if 1) or not (if 0).
dense_profile_compatibility_flag: 비트스트림이 Dense 프로파일을 준수하는지(1인 경우) 또는 그렇지 않은지(0인 경우)를 나타낸다.dense_profile_compatibility_flag: Indicates whether the bitstream conforms to the Dense profile (if 1) or not (if 0).
predictive_profile_compatibility_flag: 비트스트림이 예측 프로파일을 준수하는지(1인 경우) 또는 그렇지 않은지(0인 경우)를 나타낸다.predictive_profile_compatibility_flag: Indicates whether the bitstream complies with the prediction profile (if 1) or not (if 0).
main_profile_compatibility_flag: 비트스트림이 기본 프로필을 준수하는지(1인 경우) 또는 그렇지 않은지(0인 경우)를 나타낸다.main_profile_compatibility_flag: Indicates whether the bitstream complies with the main profile (if 1) or not (if 0).
slice_reordering_constraint_flag: 비트스트림이 코딩된 포인트 클라우드 프레임 내 슬라이스의 재정렬 또는 제거에 민감한지(1인 경우) 또는 그렇지 않은지(0인 경우)를 나타낸다. Slice_reordering_constraint가 1일 때 슬라이스가 재정렬되거나 제거되면 결과 비트스트림이 완전히 디코딩되지 않을 수 있다.slice_reordering_constraint_flag: Indicates whether the bitstream is sensitive to the reordering or removal of slices within the coded point cloud frame (if 1) or not (if 0). If slices are reordered or removed when slice_reordering_constraint is 1, the resulting bitstream may not be fully decoded.
unique_point_positions_constraint_flag: 1과 같음은 각 코딩된 포인트 클라우드 프레임에서 모든 포인트가 고유한 위치를 가져야 함을 나타낸다. Unique_point_positions_constraint_flag가 0이면, 코딩된 포인트 클라우드 프레임에서 두 개 이상의 포인트가 동일한 위치를 가질 수 있음을 나타낸다.unique_point_positions_constraint_flag: Equal to 1 indicates that every point in each coded point cloud frame must have a unique position. If unique_point_positions_constraint_flag is 0, it indicates that more than one point in the coded point cloud frame may have the same position.
sps_seq_parameter_set_id: 다른 DU(데이터 유닛)가 참조할 수 있도록 SPS를 식별한다. sps_seq_parameter_set_id: Identifies the SPS so that other DUs (data units) can reference it.
seq_origin_bits: 부호 비트를 제외한 각 seq_origin_xyz 구문 요소의 길이를 비트 단위로 나타낸다.seq_origin_bits: The length in bits of each seq_origin_xyz syntax element, excluding the sign bit.
seq_origin_xyz[k] 및 seq_origin_log2_scale: 함께 애플리케이션별 좌표계 원점에서 시퀀스 좌표계 단위로 시퀀스의 XYZ 원점과 코딩 좌표계를 나타낸다. seq_origin_bits가 0이면 seq_origin_xyz[k] 및 seq_origin_log2_scale은 0으로 추론된다. 원점의 k번째 XYZ 구성 요소는 SeqOrigin[k] 표현식으로 지정된다.seq_origin_xyz[k] and seq_origin_log2_scale: Together, these represent the XYZ origin of the sequence and the coding coordinate system in sequence coordinate units at the application-specific origin. If seq_origin_bits is 0, seq_origin_xyz[k] and seq_origin_log2_scale are inferred to be 0. The kth XYZ component of the origin is specified by the expression SeqOrigin[k] .
seq_bounding_box_size_bits: 각 seq_bbox_size_minus1_xyz 구문 요소의 길이를 비트 단위로 나타낸다.seq_bounding_box_size_bits: The length of each seq_bbox_size_minus1_xyz syntax element in bits.
seq_bounding_box_size_minus1_xyz[ k ]: 더하기 1은 시퀀스 좌표계에서 코딩된 볼륨 치수의 k번째 XYZ 구성요소를 나타낸다.seq_bounding_box_size_minus1_xyz[ k ]: plus 1 represents the kth XYZ component of the coded volume dimension in sequence coordinates.
seq_unit_numerator_minus1, seq_unit_denominator_minus1 및 seq_unit_is_metres: 함께 시퀀스 좌표계의 단위 벡터로 표시되는 길이를 나타낸다.seq_unit_numerator_minus1, seq_unit_denominator_minus1, and seq_unit_is_metres: Together, they represent lengths expressed as unit vectors in the sequence coordinate system.
sps_num_attribute_sets: SPS 어트리뷰트 리스트에 열거된 어트리뷰트 개수를 나타낸다.sps_num_attribute_sets: Indicates the number of attributes listed in the SPS attribute list.
attribute_instance_id[ attrId ]: 식별된 어트리뷰트에 대한 인스턴스 식별자를 나타낸다.attribute_instance_id[ attrId ]: Indicates the instance identifier for the identified attribute.
attribute_bitdepth_minus1[ attrId ]: 1을 더하면 식별된 어트리뷰트의 모든 구성 요소에 대한 비트 깊이가 지정된다.attribute_bitdepth_minus1[ attrId ]: Adding 1 specifies the bit depth for all components of the identified attribute.
layer_group_enabled_flag의 값이 1이면 슬라이스의 지오메트리 비트스트림이 코딩 레이어들의 그룹 또는 해당 서브 그룹과 일치하는 여러 슬라이스들(multiple slices)에 포함되어 있음을 나타낸다. layer_group_enabled_flag의 값이 0이면 지오메트리 비트스트림이 단일 슬라이스에 포함됨을 지정한다.A value of layer_group_enabled_flag of 1 indicates that the geometry bitstream of a slice is contained in multiple slices that match a group of coding layers or its subgroups. A value of layer_group_enabled_flag of 0 indicates that the geometry bitstream is contained in a single slice.
num_layer_groups_minus1 + 1은 레이어 그룹이 지오메트리 코딩 트리 구조의 일부인 연속 트리 레이어들의 그룹을 나타내는 레이어 그룹 개수를 나타낸다. num_layer_groups_minus1은 0부터 코딩 트리 레이어들의 개수까지의 범위에 있다.num_layer_groups_minus1 + 1 represents the number of layer groups, where the layer group represents a group of contiguous tree layers that are part of the geometry coding tree structure. num_layer_groups_minus1 ranges from 0 to the number of coding tree layers.
layer_group_id는 슬라이스의 레이어 그룹 아이디(또는 the indicator of a layer-group of a slice)를 나타낸다. layer_group_id의 범위는 0부터 num_layer_groups_minus1까지이다.layer_group_id represents the layer group ID of the slice (or the indicator of a layer group of a slice). layer_group_id ranges from 0 to num_layer_groups_minus1.
num_layers_minus1 + 1은 i번째 레이어 그룹에 포함된 코딩 레이어(또는 레벨이라 함)들의 개수를 나타낸다. 레이어 그룹들의 총 수는 i가 0인 경우 모든 (num_layers_minus1[i] + 1)을 num_layer_groups_minus1에 추가하여 유도될 수 있다.num_layers_minus1 + 1 represents the number of coding layers (or levels) included in the ith layer group. The total number of layer groups can be derived by adding all (num_layers_minus1[i] + 1) to num_layer_groups_minus1 when i is 0.
subgroup_enabled_flag의 값이 1이면, i번째 레이어 그룹이 두 개 이상의 서브 그룹들로 나누어지는 것을 나타낸다. 여기서, 레이어 그룹의 서브 그룹들에 포함된 포인트들의 세트는 레이어 그룹의 포인트들의 세트와 동일하다. i번째 레이어 그룹의 subgroup_enabled_flag가 1일 때, j번째 레이어 그룹의 subgroup_enabled_flag는 j가 i보다 크거나 같을 때 1과 같다. subgroup_enabled_flag의 값이 0이면, 현재 레이어 그룹이 여러 서브그룹들로 세분화되지 않고 단일 슬라이스에 포함됨을 나타낸다(subgroup_enabled_flag is equal to 1 specifies the i-th layer-group is divided into two or more subgroups where the set of points in the subgroups of a layer-group is identical to the set of points in the layer-group. When subgroup_enabled_flag of the i-th layer-group is equal to 1, subgroup_enabled_flag of the j-th layer-group shall be equal to 1 when j is larger than or equal to i. subgroup_enabled_flag is equal to 0 specifies that the current layer-group is not sub-divided into multiple subgroups and contained in a single slice).If the value of subgroup_enabled_flag is 1, it indicates that the ith layer group is divided into two or more subgroups. Here, the set of points included in the subgroups of the layer group is identical to the set of points of the layer group. When the subgroup_enabled_flag of the ith layer group is 1, the subgroup_enabled_flag of the jth layer group is equal to 1 when j is greater than or equal to i. If the value of subgroup_enabled_flag is 0, it indicates that the current layer group is not subdivided into multiple subgroups but is included in a single slice (subgroup_enabled_flag is equal to 1 specifies the i-th layer-group is divided into two or more subgroups where the set of points in the subgroups of a layer-group is identical to the set of points in the layer-group. When subgroup_enabled_flag of the i-th layer-group is equal to 1, subgroup_enabled_flag of the j-th layer-group shall be equal to 1 when j is larger than or equal to i. subgroup_enabled_flag is equal to 0 specifies that the current layer-group is not sub-divided into multiple subgroups and contained in a single slice).
subgroup_bbox_origin_bits_minus1 + 1은 subgroup_bbox_origin 필드(또는 syntax element라 함)의 비트 길이이다.subgroup_bbox_origin_bits_minus1 + 1 is the bit length of the subgroup_bbox_origin field (or syntax element).
subgroup_bbox_size_bits_minus1 + 1은 subgroup_bbox_size 필드의 비트 길이이다.subgroup_bbox_size_bits_minus1 + 1 is the bit length of the subgroup_bbox_size field.
도 30a, 도 30b에서 레이어 그룹 기반 슬라이싱 관련 정보는 layer_group_enabled_flag, num_layer_groups_minus1, layer_group_id[i], num_layers_minus1[i], subgroup_enabled_flag[i], subgroup_bbox_origin_bits_minus1, 및 subgroup_bbox_size_bits_minus1 중 적어도 하나를 포함할 수 있다.In FIG. 30a and FIG. 30b, layer group-based slicing related information may include at least one of layer_group_enabled_flag, num_layer_groups_minus1, layer_group_id[i], num_layers_minus1[i], subgroup_enabled_flag[i], subgroup_bbox_origin_bits_minus1, and subgroup_bbox_size_bits_minus1.
도 31은 실시예들에 따른 종속 지오메트리 데이터 유닛 헤더의 신택스 구조의 일 예시를 나타낸다. 도 31은 종속 지오메트리 데이터 유닛 헤더에 레이어 그룹 기반 슬라이싱 관련 정보가 포함되는 예를 보이고 있다.Fig. 31 illustrates an example of a syntax structure of a dependent geometry data unit header according to embodiments. Fig. 31 shows an example in which layer group-based slicing-related information is included in the dependent geometry data unit header.
도 31의 신택스들은 도 29의 비트스트림에 포함되고, 실시예들에 따른 포인트 클라우드 인코더에 의해 생성되어 수신 장치로 디코더로 전송되고, 포인트 클라우드 디코더에 의해 디코딩될 수 있다.The syntaxes of FIG. 31 are included in the bitstream of FIG. 29, and can be generated by a point cloud encoder according to embodiments, transmitted to a decoder as a receiving device, and decoded by the point cloud decoder.
실시예들에 따르면, 종속 지오메트리 데이터 유닛 헤더는 지오메트리 데이터 유닛에 포함될 수 있다. 지오메트리 데이터 유닛은 종속 지오메트리 데이터 유닛 또는 지오메트리 슬라이스와 동일한 의미로 사용될 수 있다.According to embodiments, a dependent geometry data unit header may be included in a geometry data unit. A geometry data unit may be used synonymously with a dependent geometry data unit or a geometry slice.
지오메트리 파라미터 세트 아이디(dgsh_geometry_parameter_set_id)는 gps_geom_parameter_set_id가 나타내는 활성 GPS를 나타낸다. dgsi_geometry_parameter_set_id 값은 해당 슬라이스의 gdu_geometry_parameter_set_id 값과 동일하다.The geometry parameter set ID (dgsh_geometry_parameter_set_id) indicates the active GPS indicated by gps_geom_parameter_set_id. The dgsi_geometry_parameter_set_id value is equal to the gdu_geometry_parameter_set_id value for the corresponding slice.
dgsi_slice_id는 현재 종속 지오메트리 데이터 유닛이 속한 지오메트리 슬라이스를 명시한다.dgsi_slice_id specifies the geometry slice to which the current dependent geometry data unit belongs.
layer_group_id는 슬라이스의 레이어 그룹의 지시자(indicator)를 나타낼 수 있다. layer_group_id의 범위는 0에서 num_layer_groups_minus1까지 일 수 있다. 존재하지 않는 경우, 0으로 추정된다.layer_group_id can indicate an indicator of a layer group in a slice. layer_group_id can range from 0 to num_layer_groups_minus1. If not present, it is assumed to be 0.
subgroup_id는 layer_group_id에 의해 참조되는 레이어 그룹의 서브 그룹의 지시자를 나타낸다. subgroup_id의 범위는 0부터 num_subgroups_minus1[layer_group_id] 사이일 수 있다. 여기서, subgroup_id는 동일한 layer_group_id에 있는 슬라이스들의 순서를 나타낼 수 있다. 존재하지 않는 경우, 0으로 추정된다.subgroup_id indicates a subgroup of the layer group referenced by layer_group_id. The subgroup_id can range from 0 to num_subgroups_minus1[layer_group_id]. Here, subgroup_id can indicate the order of slices within the same layer_group_id. If it does not exist, it is assumed to be 0.
subgroup_bbox_origin은 layer_group_id에 의해 지시되는 j번째 레이어 그룹의 subgroup_id에 의해 지시되는 i번째 서브 그룹의 서브 그룹 바운딩 박스의 원점 위치(origin position)를 나타낸다.subgroup_bbox_origin indicates the origin position of the subgroup bounding box of the ith subgroup indicated by subgroup_id of the jth layer group indicated by layer_group_id.
subgroup_bbox_size는 layer_group_id에 의해 지시되는 j번째 레이어 그룹의 subgroup_id에 의해 지시되는 i번째 서브 그룹의 서브 그룹 바운딩 박스의 크기를 나타낸다.subgroup_bbox_size represents the size of the subgroup bounding box of the i-th subgroup indicated by subgroup_id in the j-th layer group indicated by layer_group_id.
실시예들에 따르면, 서브 그룹에 있는 포인트들의 바운딩 박스는 subgroup_bbox_origin 및 subgroup_bbox_size로 설명된다. 이때, i번째 서브그룹의 바운딩 박스에 있는 영역은 i와 j가 동일하지 않을 때 j번째 서브그룹의 바운딩 박스와 겹치지 않는다.According to the embodiments, the bounding box of points in a subgroup is described by subgroup_bbox_origin and subgroup_bbox_size. In this case, the area in the bounding box of the i-th subgroup does not overlap with the bounding box of the j-th subgroup when i and j are not equal.
ref_layer_group_id는 현재 종속 데이터 유닛의 컨텍스트 참조의 레이어 그룹 식별자의 지시자를 나타낸다. ref_layer_group_id의 범위는 0부터 현재 종속 데이터 유닛의 layer_group_id 범위에 있다.ref_layer_group_id indicates the layer group identifier of the context reference of the current dependent data unit. ref_layer_group_id ranges from 0 to the layer_group_id of the current dependent data unit.
ref_subgroup_id는 ref_layer_group_id가 가리키는 레이어 그룹의 참조 서브 그룹에 대한 지시자를 나타낸다. ref_subgroup_id의 범위는 0부터 ref_layer_group_id가 가리키는 레이어 그룹의 num_subgroup_id_minus1까지의 범위에 있다.ref_subgroup_id indicates a reference subgroup of the layer group pointed to by ref_layer_group_id. ref_subgroup_id ranges from 0 to num_subgroup_id_minus1 of the layer group pointed to by ref_layer_group_id.
실시예들에 따른 비트스트림은 적어도 하나의 슬라이스, 혹은 세분화된 슬라이스들을 포함하고, 지오메트리 데이터 유닛 및 어트리뷰트 데이터 유닛을 포함할 수 있다. 각 데이터 유닛은 헤더를 포함한다. 또한, 데이터 유닛은 독립적인 데이터 유닛 및 종속적 데이터 유닛을 포함한다. 종속적 데이터 유닛은 상위-하위 노드 간 종속 관계에 따른 포함 관계를 나타낼 수 있다. 또한, 도 31은 종속 지오메트리 데이터 유닛 헤더의 신택스를 나타내고, 마찬가지로, 지오메트리 데이터 유닛 헤더의 신택스도 도 31과 같을 수 있다. A bitstream according to embodiments may include at least one slice or subdivided slices, and may include a geometry data unit and an attribute data unit. Each data unit includes a header. In addition, the data unit includes an independent data unit and a dependent data unit. The dependent data unit may indicate a subsumption relationship according to a dependency relationship between upper and lower nodes. In addition, FIG. 31 shows the syntax of a dependent geometry data unit header, and similarly, the syntax of a geometry data unit header may also be as shown in FIG. 31.
도 32는 실시예들에 따른 레이어 그룹 구조 인벤토리(Layer-group structure inventory, LGSI)를 나타낸다. 즉, 도 32의 레이어 그룹 구조 인벤토리는 미세 입도 슬라이스들간의 관계를 하기와 같이 설명한다. Fig. 32 illustrates a layer-group structure inventory (LGSI) according to embodiments. That is, the layer-group structure inventory of Fig. 32 describes the relationship between fine-grained slices as follows.
시퀀스 파라미터 세트 아이디(lgsi_seq_parameter_set_id)는 sps_seq_parameter_set_id 값을 나타낸다. The sequence parameter set ID (lgsi_seq_parameter_set_id) represents the sps_seq_parameter_set_id value.
lgsi_frame_ctr_lsb_bits는 lgsi_frame_ctr_lsb 필드(또는 신텍스 엘레먼트라 함) 의 길이를 비트 단위로 나타낸다.lgsi_frame_ctr_lsb_bits represents the length of the lgsi_frame_ctr_lsb field (or syntax element) in bits.
lgsi_frame_ctr_lsb는 레이어 그룹 구조 인벤토리가 유효한 FrameCtr의 lgsi_frame_ctr_lsb_bits(최하위 비트(least significant bits))를 나타낸다. 레이어 그룹 구조 인벤토리는 다른 레이어 그룹 구조 인벤토리로 대체될 때까지 유효한 상태로 유지된다.lgsi_frame_ctr_lsb represents the lgsi_frame_ctr_lsb_bits (least significant bits) of the FrameCtr for which the layer group structure inventory is valid. The layer group structure inventory remains valid until it is replaced by another layer group structure inventory.
lgsi_num_slice_ids_minus1 + 1은 레이어 그룹 구조 인벤토리에 있는 슬라이스들의 개수를 나타낸다.lgsi_num_slice_ids_minus1 + 1 represents the number of slices in the layer group structure inventory.
lgsi_slice_id는 레이어 그룹 구조 인벤토리 내에서 sid 번째 슬라이스의 슬라이스 ID를 나타낸다. lgsi_slice_id represents the slice ID of the sid-th slice within the layer group structure inventory.
lgsi_num_layer_groups_minus1 + 1은 레이어 그룹 개수를 나타낸다.lgsi_num_layer_groups_minus1 + 1 represents the number of layer groups.
lasi_subgroup_bbox_origin_bits_minus1 + 1은 lgsi_subgroup_bbox_origin 필드의 길이를 비트로 나타낸다.lasi_subgroup_bbox_origin_bits_minus1 + 1 represents the length of the lgsi_subgroup_bbox_origin field in bits.
lgsi_subgroup_bbox_size_bits_minus1 + 1은 lgsi_subgroup_bbox_size 필드의 길이를 비트로 나타낸다.lgsi_subgroup_bbox_size_bits_minus1 + 1 represents the length of the lgsi_subgroup_bbox_size field in bits.
lgsi_layer_group_id는 레이어 그룹의 표시자를 나타낸다. lgsi_layer_group_id represents the indicator of the layer group.
lgsi_num_layers_minus1 + 1은 sid번째 슬라이스의 i번째 레이어 그룹의 슬라이스에 코딩된 레이어들의 개수를 나타낸다. n번째 레이어 그룹을 디코딩하는 데 필요한 코딩된 레이어들의 총 개수는 i가 0에서 n인 경우 lgsi_num_layers_minus1[sid][i] + 1의 합과 같다.lgsi_num_layers_minus1 + 1 represents the number of coded layers in the slice of the i-th layer group of the sid-th slice. The total number of coded layers required to decode the n-th layer group is equal to the sum of lgsi_num_layers_minus1[sid][i] + 1, where i is from 0 to n.
lgsi_num_subgroups_minus1 + 1은 sid 번째 슬라이스의 i 번째 레이어 그룹에 있는 서브 그룹들의 개수를 나타낸다.lgsi_num_subgroups_minus1 + 1 represents the number of subgroups in the i-th layer group of the sid-th slice.
lgsi_subgroup_id는 레이어 그룹(또는 서브 그룹)의 아이디(또는 indicator)를 나타낸다. lgsi_subgroup_id의 값은 0부터 lgsi_num_subgroups_minus1 사이에 있다.lgsi_subgroup_id represents the ID (or indicator) of a layer group (or subgroup). The value of lgsi_subgroup_id is between 0 and lgsi_num_subgroups_minus1.
lgsi_parent_subgroup_id는 lgsi_subgroup_id에 의해 지시되는 레이어 그룹 내 서브 그룹의 지시자를 나타낸다. lgsi_parent_subgroup_id의 값은 0부터 lgsi_subgroup_id에 의해 지시되는 레이어 그룹 내 gi_num_subgroups_minus1 사이에 있다. lgsi_parent_subgroup_id indicates the identifier of a subgroup within the layer group indicated by lgsi_subgroup_id. The value of lgsi_parent_subgroup_id is between 0 and gi_num_subgroups_minus1 within the layer group indicated by lgsi_subgroup_id.
lgsi_subgroup_bbox_origin은 lgsi_layer_group_id에 의해 지시되는 레이어 그룹의 lgsi_subgroup_id에 의해 지시되는 서브 그룹의 서브 그룹 바운딩 박스의 원점을 나타낸다.lgsi_subgroup_bbox_origin indicates the origin of the subgroup bounding box of the subgroup indicated by lgsi_subgroup_id of the layer group indicated by lgsi_layer_group_id.
lgsi_subgroup_bbox_size는 lgsi_layer_group_id에 의해 지시되는 레이어 그룹의 lgsi_subgroup_id에 의해 지시되는 서브그룹의 서브그룹 바운딩 박스의 크기를 나타낸다.lgsi_subgroup_bbox_size represents the size of the subgroup bounding box of the subgroup indicated by lgsi_subgroup_id in the layer group indicated by lgsi_layer_group_id.
lgsi_origin_bits_minus1 + 1은 lgsi_origin_xyz 필드의 길이를 비트 단위로 나타낸다.lgsi_origin_bits_minus1 + 1 represents the length of the lgsi_origin_xyz field in bits.
lgsi_origin_xyz는 모든 파티션들의 출처를 나타낸다. lgsi_origin_xyz[ k ] 값은 sps_bounding_box_offset[ k ]와 같다.lgsi_origin_xyz represents the origin of all partitions. The value of lgsi_origin_xyz[ k ] is equal to sps_bounding_box_offset[ k ].
lgsi_origin_log2_scale은 lgsi_origin_xyz필드를 스케일링하기 위한 스케일링 인자를 나타낸다. lgsi_origin_log2_scale의 값은 sps_bounding_box_offset_log2_scale과 동일하다.lgsi_origin_log2_scale represents a scaling factor for scaling the lgsi_origin_xyz field. The value of lgsi_origin_log2_scale is the same as sps_bounding_box_offset_log2_scale.
전술한 바와 같이, 지오메트리 정보의 코딩(즉, 압축)은 옥트리 기반으로 수행될 수 있다. 이때, 옥트리 기반의 지오메트리 코딩에서 사용되는 플래너 모드(planar mode)는 각 노드의 planar 여부를 확률적으로 판단한다. 이는 확률을 매번 업데이트 해야하고, 각 노드의 로컬 노드 밀도(local node density)를 추적해야 하는 부담이 있다. 이를 완화하기 위한 방법으로써, 본 개시는 각 옥트리 레벨에서의 밀도를 기반으로 planar mode 사용 여부를 결정할 수 있다.As mentioned above, coding (i.e., compression) of geometry information can be performed based on an octree. In this case, the planar mode used in octree-based geometry coding probabilistically determines whether each node is planar. This requires updating the probability each time and tracking the local node density of each node, which carries the burden of this. To alleviate this, the present disclosure can determine whether to use planar mode based on the density at each octree level.
실시예들에 따르면, planar mode 사용 여부를 판단하기 위한 밀도 조건은 다음의 수학식 1과 같이 산출될 수 있다. 즉, planar eligibility는 수학식 1과 같이 밀도를 기반으로 각 트리 깊이 별로 결정된다.According to the embodiments, the density condition for determining whether to use the planar mode can be calculated as in the following mathematical expression 1. That is, the planar eligibility is determined for each tree depth based on the density as in mathematical expression 1.
[수학식 1][Mathematical Formula 1]
numPoints는 포인트 클라우드 내의 포인트들의 개수를 나타낸다. numPoints represents the number of points in the point cloud.
numPointsCodedByIdcmi 는 root 로부터 i 번째 octree layer까지의 IDCM 노드(또는 직접 압축 노드라 함)의 개수를 나타낸다. 즉, numPointsCodedByIdcmi는 루트 노드 레이어부터 i번째 옥트리 레이어까지 IDCM를 사용하여 코딩된 포인트들의 개수는 나타낸다. numPointsCodedByIdcm i represents the number of IDCM nodes (or direct compression nodes) from the root to the i-th octree layer. That is, numPointsCodedByIdcm i represents the number of points coded using IDCM from the root node layer to the i-th octree layer.
numSubnodesi는 i 번째 옥트리 레이어에서 생성된 occupied sub-node의 수 (즉, 자식 노드들의 개수)를 나타낸다. 즉, numSubnodesi는 i 번째 옥트리 레이어에 포함된 노드들에 의해 생성된 occupied 서브 노드들의 개수를 나타낸다. 그리고, realDensityi+1은 i+1번째 옥트리 레이어에 대한 포인트들의 리얼 밀도(real density)를 나타낸다. 여기서, 옥트리 레이어는 트리 레벨 또는 레벨로 지칭될 수 있다. numSubnodes i represents the number of occupied sub-nodes (i.e., the number of child nodes) generated in the i-th octree layer. That is, numSubnodes i represents the number of occupied sub-nodes generated by nodes included in the i-th octree layer. And, realDensity i+1 represents the real density of points for the i+1-th octree layer. Here, the octree layer can be referred to as a tree level or level.
실시예들에 따르면, i+1 번째 octree layer 에서의 planar mode 사용 여부는 다음과 같이 결정될 수 있다. 즉, i+1번째 옥트리 레이어의 코딩 과정 전에, i+1번째 옥트리 레이어에서 xyz-planar 모드에 대한 모든 노드들의 자격(eligibility)이 다음과 같이 결정된다.According to embodiments, whether to use the planar mode in the i+1-th octree layer can be determined as follows. That is, before the coding process of the i+1-th octree layer, the eligibility of all nodes in the i+1-th octree layer for the xyz-planar mode is determined as follows.
planarEligibleKOctreeDepth(i+1)은 인코더와 디코더에서 각각 구하여 적용할 수 있다. 그리고, th는 미리 정의되는 임계값으로서, 일 예로, 1.3으로 설정될 수 있다.planarEligibleKOctreeDepth(i+1) can be obtained and applied by the encoder and decoder, respectively. th is a predefined threshold, which can be set to 1.3, for example.
예를 들어, i+1번째 옥트리 레이어에서 수학식 1을 적용하여 구한 밀도(realDensityi+1)가 임계값보다 작으면, planarEligibleKOctreeDepth i+1은 1이 되고, 이는 i+1 번째 octree layer에서 planar mode가 사용됨을 나타낸다. 반대로, 밀도(realDensityi+1)가 임계값보다 작지 않으면, planarEligibleKOctreeDepth i+1은 0이 되고, 이는 i+1 번째 octree layer에서 planar mode가 사용되지 않음을 나타낸다.For example, if the density (realDensity i+1 ) obtained by applying Equation 1 to the i+1-th octree layer is less than the threshold, planarEligibleKOctreeDepth i+1 becomes 1, indicating that the planar mode is used in the i+1-th octree layer. Conversely, if the density (realDensity i+1 ) is not less than the threshold, planarEligibleKOctreeDepth i+1 becomes 0, indicating that the planar mode is not used in the i+1-th octree layer.
전술한 바와 같이, 레이어 그룹 슬라이싱을 사용하는 경우, 위의 n 번째 레이어 그룹에 속한 m 번째 서브 그룹에 대해 realDensity의 수학식 1이 다음의 수학식 2와 같이 변경될 수 있다.As mentioned above, when using layer group slicing, the mathematical expression 1 of realDensity for the m-th subgroup belonging to the n-th layer group above can be changed to the following mathematical expression 2.
[수학식 2][Equation 2]
numPoints(n,m)는 n 번째 레어어 그룹에 속한 m 번째 서브 그룹에 대응되는 바운딩 박스에 포함되는 최종 포인트 개수를 나타낸다. numPoints(n,m) represents the final number of points included in the bounding box corresponding to the m-th subgroup belonging to the n-th layer group.
numPointsCodedByIdcmi(n,m)는 루트로부터 i 번째 옥트리 레이어까지의 IDCM 포인트들 중 n 번째 레어어 그룹에 속한 m 번째 서브 그룹에 대응되는 바운딩 박스에 포함되는 포인트들의 개수를 나타낸다. numPointsCodedByIdcm i (n,m) represents the number of points included in the bounding box corresponding to the m-th subgroup belonging to the n-th layer group among the IDCM points from the root to the i-th octree layer.
numSubnodesi(n,m)는 n 번째 레이어 그룹에 속한 m 번째 서브 그룹에 대해 i 번째 옥트리 레이어에서 생성된 occupied sub-node의 수 (= 자식 노드의 수)를 나타낸다.numSubnodes i (n,m) is It represents the number of occupied sub-nodes (= number of child nodes) generated in the i-th octree layer for the m-th sub-group belonging to the n-th layer group.
본 개시는 이를 기반으로 n 번째 레이어 그룹에 속한 m 번째 서브 그룹에 대해, i+1 번째 옥트리 레이어에서 planar mode 사용 여부는 다음과 같이 결정될 수 있다. Based on this, the present disclosure determines whether to use the planar mode in the i+1-th octree layer for the m-th subgroup belonging to the n-th layer group as follows.
즉, 레이어 그룹 슬라이싱으로 인해 서브 그룹으로 영역이 나뉘게 되는데, 위의 수식을 통해 영역의 특성에 따라 planar mode를 적응적으로 사용할 수 있다. That is, the area is divided into subgroups due to layer group slicing, and the planar mode can be used adaptively according to the characteristics of the area through the above formula.
그런데 layer-group slicing의 경우 옥트리 깊이(octree depth)에 대해 서로 다른 슬라이스로 나뉠 수 있는데, 이 경우 상위 레이어 그룹에서 위의 방법을 그대로 적용하기에 어려움이 있다. 예를 들어, 마지막 레이어 그룹의 경우 슬라이스에 포함된 서브 그룹에서 생성되는 포인트들의 개수를 헤더를 통해 전달하기 때문에 numPoints를 추정할 수 있다. 하지만 헤더를 통해 전달되는 포인트들의 개수는 각 슬라이스에서 최종 생성되는 포인트 수를 의미하기 때문에 상위 레이어 그룹에 대해서는 numPoints를 추정하기 어렵다. 실시예들은 이를 해결하기 위한 방법으로 아래와 같은 방법을 고려할 수 있다. However, in the case of layer-group slicing, the octree depth can be divided into different slices, and in this case, it is difficult to directly apply the above method to the upper layer group. For example, in the case of the last layer group, numPoints can be estimated because the number of points generated in the subgroup included in the slice is transmitted through the header. However, since the number of points transmitted through the header means the number of points ultimately generated in each slice, it is difficult to estimate numPoints for the upper layer group. The embodiments may consider the following methods as a method to solve this problem.
1) leaf layer-group 단에서 최종 생성되는 포인트 개수를 전달하는 방법:1) How to pass the number of points finally generated at the leaf layer-group level:
레이어 그룹 슬라이싱의 종속 슬라이스(dependent slice)에 대해서 리프 레이어 그룹(leaf layer-group) 단에서 최종 생성되는 포인트들의 개수를 인코더에서 디코더로 전달할 수 있다. For dependent slices of layer group slicing, the number of points finally generated at the leaf layer-group level can be passed from the encoder to the decoder.
2) 임의의 포인트 수를 사용하는 방법:2) How to use an arbitrary number of points:
numPoints를 알 수 없는 경우 임의의 포인트들의 수를 인코더 및 디코더에서 동일하게 사용할 수 있다. If numPoints is unknown, any arbitrary number of points can be used equally in the encoder and decoder.
이때, numPoints(n,m)는 n 번째 레이어 그룹에 속한 m 번째 서브 그룹에 대응되는 바운딩 박스에 포함되는 최종 포인트들의 개수를 의미할 수 있다. 만일, 자식 서브 그룹(child subgroup)이 없는 경우 (즉, 마지막 레이어 그룹에 속하는 경우)에는 헤더를 통해 전달되는 numSlicePoint를 사용할 수 있다. 만일, 자식 서브 그룹이 있는 경우 (상위 레이어 그룹에 속하는 경우) 임의의 포인트 수를 인코더와 디코더에서 약속해서 사용할 수 있다. Here, numPoints(n, m) can mean the number of final points included in the bounding box corresponding to the m-th subgroup belonging to the n-th layer group. If there are no child subgroups (i.e., if it belongs to the last layer group), numSlicePoints passed through the header can be used. If there are child subgroups (if it belongs to the upper layer group), an arbitrary number of points can be agreed upon and used between the encoder and decoder.
예를 들어 각 슬라이스에 포함될 수 있는 최대 포인트 수 (MaxSlicePoint) 와 같이 고정된 값을 사용할 수 있다. For example, you can use a fixed value, such as the maximum number of points that can be included in each slice (MaxSlicePoint).
또 다른 예로, 예측값을 사용할 수 있다. 아래의 수학식 3은 하나의 예시로써 계수들(예, coeff_a, coeff_b)에 의해서 예측하는 경우를 나타낸 것이다. 즉, 아래의 수학식 3과 같이 numPoints(n,m)는 일차 함수에 의해 추정될 수 있다. Another example is the use of predicted values. Equation 3 below illustrates an example where predictions are made using coefficients (e.g., coeff_a, coeff_b). That is, as shown in Equation 3 below, numPoints(n, m) can be estimated using a linear function.
[수학식 3][Equation 3]
estimated numPoints(n,m) = number of parent Subgroup nodes X coeff_a + coeff_bestimated numPoints(n,m) = number of parent Subgroup nodes
여기서, coeff_a + coeff_b는 일차 함수의 계수들을 나타낸다. coeff_a 및 coeff_b는 미리 정의하거나 필요에 따라 디코더로 직접 전달할 수 있다. Here, coeff_a + coeff_b represent the coefficients of the linear function. coeff_a and coeff_b can be predefined or passed directly to the decoder as needed.
즉, n 번째 레이어 그룹에 속한 m 번째 서브 그룹에 대응되는 바운딩 박스 에 포함되는 최종 포인트들의 개수(numPoints(n,m))는 부모 서브 그룹 노드들의 개수에 일차 함수의 계수들인 coeff_a와 coeff_b를 더하여 구할 수 있다. That is, the number of final points included in the bounding box corresponding to the m-th subgroup belonging to the n-th layer group (numPoints(n,m)) can be obtained by adding the coefficients of the linear function, coeff_a and coeff_b, to the number of parent subgroup nodes.
3) planar EligibleKOctreeDepth를 직접 전달하는 방법3) How to pass planar EligibleKOctreeDepth directly
송신 장치의 인코더에서는 각 서브 그룹에 대한 최종 포인트 수를 알 수 있기 때문에 이를 기반으로 planarEligibleKOctreeDepthi+1(n,m)를 계산하고, 이 값을 수신 장치의 디코더에 직접 전달할 수 있다. 이 경우 디코더에서 planarEligibleKOctreeDepth를 계산하지 않아도 되기 때문에 디코더의 복잡도를 줄이는 효과를 얻을 수 있다. Since the encoder of the transmitting device knows the final number of points for each subgroup, it can calculate planarEligibleKOctreeDepth i+1 (n, m) based on this and pass this value directly to the decoder of the receiving device. This reduces decoder complexity because the decoder does not need to calculate planarEligibleKOctreeDepth.
실시예들에 따르면, 송신 장치의 인코더에서는 전술한 planar mode와 관련된 플래너 모드(planar mode) 관련 정보는 종속 지오메트리 데이터 유닛 헤더에 시그널링하여 수신 장치의 디코더로 전송할 수 있다.According to embodiments, the encoder of the transmitting device may transmit planar mode-related information related to the aforementioned planar mode to the decoder of the receiving device by signaling it in the dependent geometry data unit header.
도 33은 실시예들에 따른 종속 지오메트리 데이터 유닛 헤더의 신택스 구조의 다른 예시를 나타낸다. 도 33은 종속 지오메트리 데이터 유닛 헤더에 레이어 그룹 기반 슬라이싱 관련 정보와 플래너 모드 관련 정보가 포함되는 예를 보이고 있다.Fig. 33 illustrates another example of the syntax structure of a dependent geometry data unit header according to embodiments. Fig. 33 illustrates an example in which a dependent geometry data unit header includes layer group-based slicing-related information and planar mode-related information.
도 33의 신택스들은 도 29의 비트스트림에 포함되고, 실시예들에 따른 포인트 클라우드 인코더에 의해 생성되어 수신 장치의 디코더로 전송되고, 포인트 클라우드 디코더에 의해 디코딩될 수 있다.The syntaxes of FIG. 33 are included in the bitstream of FIG. 29, and are generated by the point cloud encoder according to the embodiments, transmitted to the decoder of the receiving device, and can be decoded by the point cloud decoder.
도 33의 종속 지오메트리 데이터 유닛 헤더에 시그널링된 레이어 그룹 기반 슬라이싱 관련 정보는 도 31에서 상세히 설명하였으므로, 도 31의 설명을 참조하기로 하고, 여기서는 중복 설명을 피하기 위해 생략하기로 한다. 도 33에서는 플래너 모드 관련 정보에 대해서 기술한다.Since the layer group-based slicing related information signaled in the dependent geometry data unit header of Fig. 33 is described in detail in Fig. 31, the description of Fig. 31 will be referred to, and will be omitted here to avoid redundant description. Fig. 33 describes information related to the planar mode.
도 33에서 checkPlanarEligibilityBasedOnOctreeDepth가 참이면, 해당 레이어 그룹에서 planar mode가 사용됨을 지시하며, 이때 종속 지오메트리 데이터 유닛 헤더는 planar 모드 엘리저빌리티 타입(planarEligibilityType)를 포함할 수 있다.In Figure 33, if checkPlanarEligibilityBasedOnOctreeDepth is true, it indicates that planar mode is used in the layer group, and in this case, the dependent geometry data unit header may include a planar mode eligibility type (planarEligibilityType).
planar 모드 엘리저빌리티 타입(planarEligibilityType)은 planar 모드 사용 방법을 나타낼 수 있다. 예를 들어, planarEligibilityType의 값이 0인 경우 기존의 노드 적응적인 planar mode 적용 방법, 1인 경우 leaf layer-group 단에서 최종 생성되는 포인트 개수를 전달하는 방법, 2인 경우 임의의 포인트 수를 사용하는 방법, 3인 경우 planar EligibleKOctreeDepth를 직접 전달하는 방법을 나타낸다.The planar mode eligibility type (planarEligibilityType) can indicate how the planar mode is used. For example, a planarEligibilityType value of 0 indicates the traditional node-adaptive planar mode application method, a value of 1 indicates the method of passing the number of points finally generated at the leaf layer-group level, a value of 2 indicates the method of using an arbitrary number of points, and a value of 3 indicates the method of directly passing the planarEligibleKOctreeDepth.
즉, 종속 지오메트리 데이터 유닛 헤더는 planarEligibilityType의 값이 1이면 서브 그룹 내 포인트들의 최종 개수(numFinalOutputPointsInSubgroup)를 포함하고, 2이면 슬라이스 내 포인트들의 개수의 예측값(numSlicePointEstimationType)를 포함하며, 3이면 서브 그룹 내 레이어들의 개수(numLayersInSubgroup)만큼 planar 모드 엘리저블 옥트리 깊이 플래그(planarEligibleKOctreeDepthFlag)를 포함한다.That is, the dependent geometry data unit header contains the final number of points in the subgroup (numFinalOutputPointsInSubgroup) if the value of planarEligibilityType is 1, the estimate of the number of points in the slice (numSlicePointEstimationType) if it is 2, and the planar mode eligible octree depth flag (planarEligibleKOctreeDepthFlag) as many as the number of layers in the subgroup (numLayersInSubgroup) if it is 3.
서브 그룹 내 포인트들의 최종 개수(numFinalOutputPointsInSubgroup)는 현재 슬라이스의 서브 그룹 바운딩 박스 내에 포함되는 최종 출력 포인트들의 개수를 나타낼 수 있다. The final number of points in a subgroup (numFinalOutputPointsInSubgroup) can indicate the number of final output points contained within the subgroup bounding box of the current slice.
슬라이스 내 포인트들의 개수의 예측값(numSlicePointEstimationType)은 realDensity를 구하기 위한 numSlicePoint(또는 numPoints)를 추정하는 방법을 나타낼 수 있다. 예를 들어, numSlicePointEstimationType의 값이 0인 경우 이미 정한 값 (예를 들어 maxSlicePoint - 슬라이스에 포함할 수 있는 최대 포인트 수)를 나타낼 수 있다. 1인 경우 일차 함수에 의해 추정됨을 나타낼 수 있다. 이때 일차 함수의 계수인 coeff_a 및 coeff_b를 미리 정의하거나 필요에 따라 직접 전달할 수 있다. The estimated number of points in a slice (numSlicePointEstimationType) can indicate how numSlicePoints (or numPoints) is estimated to obtain realDensity. For example, if the value of numSlicePointEstimationType is 0, it can indicate a predefined value (e.g., maxSlicePoint - the maximum number of points that can be included in a slice). If it is 1, it can indicate that it is estimated by a linear function. In this case, the coefficients of the linear function, coeff_a and coeff_b, can be defined in advance or passed directly as needed.
서브 그룹 내 레이어들의 개수(numLayersInSubgroup)는 현재 슬라이스에 포함된 옥트리 깊이의 개수들을 나타낼 수 있다. The number of layers in a subgroup (numLayersInSubgroup) can represent the number of octree depths contained in the current slice.
numLayersInSubgroup의 값만큼 반복되는 planar 모드 엘리저블 옥트리 깊이 플래그(planarEligibleKOctreeDepthFlag)의 값이 1인 경우 현재 슬라이스에 포함된 옥트리 깊이들 중 i 번째 옥트리 깊이에 대해 planar 모드를 사용함을 나타낼 수 있다. 0인 경우 현재 슬라이스에 포함된 옥트리 깊이들 중 i 번째 옥트리 깊이에 대해 planar 모드를 사용하지 않음을 나타낼 수 있다. planar 모드 엘리저블 옥트리 깊이 플래그(planarEligibleKOctreeDepthFlag)는 planar EligibleKOctreeDepth를 직접 전달하는 방법에서 생성된 planarEligibleKOctreeDepth_(i+1) (n,m)에 대응할 수 있다.If the value of the planar mode eligible octree depth flag (planarEligibleKOctreeDepthFlag), which is repeated as many times as the value of numLayersInSubgroup, is 1, it can indicate that the planar mode is used for the ith octree depth among the octree depths included in the current slice. If it is 0, it can indicate that the planar mode is not used for the ith octree depth among the octree depths included in the current slice. The planar mode eligible octree depth flag (planarEligibleKOctreeDepthFlag) can correspond to planarEligibleKOctreeDepth_(i+1) (n,m) generated by directly passing planarEligibleKOctreeDepth.
다음의 수학식 4는 planar mode 사용 여부를 판단하기 위한 밀도 조건을 구하기 위한 또 다른 예시이다. The following mathematical expression 4 is another example for obtaining the density condition for determining whether to use the planar mode.
[수학식 4][Equation 4]
numPoints(s)는 서브 그룹 s의 포인트들의 포인트들의 개수를 나타낸다.numPoints(s) represents the number of points in the points of subgroup s.
numPointsCodedByIdcmi(s)는 루트 노드 레이어부터 i번째 옥트리 레이어까지 IDCM를 사용하여 그리고 서브 그룹 s의 서브 그룹 바운더리 내에서 코딩된 포인트들의 개수는 나타낸다(=the number of points that are coded using IDCM from root node layer to ith octree layer and within the subgroup boundary of the subgroup s). numPointsCodedByIdcm i (s) represents the number of points that are coded using IDCM from the root node layer to the ith octree layer and within the subgroup boundary of the subgroup s.
numSubnodesi(s)는 서브 그룹 s의 i 번째 옥트리 레이어에 포함된 노드들에 의해 생성된 occupied 서브 노드들의 개수를 나타낸다. numSubnodes i (s) represents the number of occupied subnodes generated by nodes included in the i-th octree layer of subgroup s.
그리고, realDensityi+1(s)는 서브 그룹 s의 i+1번째 옥트리 레이어에 대한 포인트들의 리얼 밀도(real density)를 나타낸다.And, realDensity i+1 (s) represents the real density of points for the i+1th octree layer of subgroup s.
실시예들에 따르면, i+1 번째 octree layer 에서의 planar mode 사용 여부는 다음과 같이 결정될 수 있다. 즉, i+1번째 옥트리 레이어의 코딩 과정 전에, 서브 그룹 s의 i+1 번째 옥트리 레이어에서 xyz-planar 모드에 대한 모든 노드들의 자격(eligibility)가 다음과 같이 결정된다.According to embodiments, whether to use the planar mode in the i+1-th octree layer can be determined as follows. That is, before the coding process of the i+1-th octree layer, the eligibility of all nodes for the xyz-planar mode in the i+1-th octree layer of subgroup s is determined as follows.
여기서, th는 미리 정의되는(predefined) 임계값으로서, 일 예로, 1.3으로 설정될 수 있다.Here, th is a predefined threshold, which can be set to, for example, 1.3.
이때, 밀도(density)를 기반으로 서브그룹 어댑티브 planar 자격(subgroup adaptive planar eligibility)을 사용하는 문제는 각 서브 그룹의 포인트들의 개수는 마지막 레이어 그룹에 속한 서브 그룹들이 딜리버리될 때까지 디코더에서 알 수 없다는 것이다. 본 개시는 인코더와 디코더를 매치하기 위해, 각 지오메트리 데이터 유닛의 데이터 유닛 헤더 또는 종속 지오메트리 데이터 유닛 헤더에 planar 자격 여부를 알 수 있는 정보(예, planarEligibleKOctreeDepth i+1(s))를 시그널링함으로써, 위의 문제를 해결할 수 있다.At this time, the problem of using subgroup adaptive planar eligibility based on density is that the number of points in each subgroup is not known to the decoder until the subgroups belonging to the last layer group are delivered. The present disclosure can solve the above problem by signaling information that can indicate planar eligibility (e.g., planarEligibleKOctreeDepth i+1 (s)) in the data unit header of each geometry data unit or the header of a dependent geometry data unit to match the encoder and decoder.
본 개시에서 IDCM 노드는 직접 압축 노드라 칭할 수 있다. 즉, 지오메트리 디코딩을 위한 계층 구조가 트리 형태일 때, 일부 서브그룹은 적어도 하나의 IDCM 노드를 포함할 수 있다.In the present disclosure, an IDCM node may be referred to as a direct compression node. That is, when the hierarchical structure for geometry decoding is in the form of a tree, some subgroups may include at least one IDCM node.
실시예들에 따르면, 본 개시는 다음 조건을 만족하는 노드를 IDCM 노드라 정의하고, 서브그룹의 일부는 이러한 조건을 만족하는 적어도 하나의 IDCM 노드를 포함할 수 있다.According to embodiments, the present disclosure defines a node satisfying the following conditions as an IDCM node, and a portion of a subgroup may include at least one IDCM node satisfying these conditions.
1) 부모-기반 자격(eligibility) 조건: 현재 노드(포인트)의 부모 노드(Parent node) 관점에서 오큐파이드 자식(occupied child)이 현재 노드(current node) 하나뿐이고, 부모의 부모(grand-parent) 관점에서 오큐파이드 자식(occupied child) (즉, 부모(parent)의 오큐파이드 형제(occupied sibling))이 최대 하나(즉, 오큐파이드 자식이 2)만 있는 경우 1) Parent-based eligibility condition: From the perspective of the parent node of the current node (point), there is only one occupied child, which is the current node, and from the perspective of the parent's parent (grand-parent), there is at most one occupied child (i.e., the parent's occupied sibling) (i.e., there are 2 occupied children).
2) 6N 자격(eligibility) 조건: 부모 노드(Parent node) 관점에서 오큐파이드 자식(occupied child)이 현재 노드(current node) 하나뿐이고, 6개의 이웃들(neighbor)(면이 닿아있는 노드)이 오큐파이드 되지 않는 경우 2) 6N eligibility condition: From the perspective of the parent node, the current node is the only occupied child, and none of the six neighbors (nodes that are touching each other) are occupied.
본 개시는 위의 조건을 만족하는 노드를 IDCM 노드(또는 포인트)라 칭하고, 위의 조건을 만족하지 않는 노드를 non-IDCM 노드(또는 포인트)라 칭하기로 한다. 각 서브그룹에서 하나의 레이어는 제로 또는 하나 이상의 IDCM 노드를 포함할 수 있다.In this disclosure, a node satisfying the above conditions is referred to as an IDCM node (or point), and a node not satisfying the above conditions is referred to as a non-IDCM node (or point). In each subgroup, one layer may include zero or one or more IDCM nodes.
다음은 전술한 미세 입도 슬라이싱(fine granularity slicing, FGS) 관련 내용의 다른 실시예에 대해 설명하기로 한다. 이때, 일부 내용은 전술한 FGS 관련 내용과 중복될 수 있다. The following describes another embodiment of the fine granularity slicing (FGS) related content described above. Some of the content may overlap with the FGS related content described above.
먼저, 일부 용어에 대해 다시 정의하기로 한다. First, let's redefine some terms.
FGS(fine granularity slice)들은 서브 그룹의 지오메트리 또는 어트리뷰트를 캐리하는 슬라이스의 서브셋(subset)이다. Fine granularity slices (FGS) are subsets of slices that carry the geometry or attributes of a subgroup.
레이어 그룹은 오큐판시 트리 또는 어트리뷰트 할당된 오큐판시 트리(attribute assigned occupancy tree)의 연속적인 트리 레벨(consecutive tree levels)의 그룹이다. A layer group is a group of consecutive tree levels of an occupancy tree or an attribute assigned occupancy tree.
서브 그룹은 레이어 그룹의 공간적 서브셋이며, 이때 서브 그룹의 바운딩박스는 같은 레이어 그룹 내 다른 서브 그룹과 오버랩되지 않는다(a spatial subset of a layer-group where the bounding box of a subgroup shall not overlap with the other subgroups in the same layer-group).A subgroup is a spatial subset of a layer-group where the bounding box of a subgroup shall not overlap with the other subgroups in the same layer-group.
루트 레이어 그룹은 오큐판시 트리 또는 어트리뷰트 할당된 오큐판시 트리의 루트 노드를 포함하는 레이어 그룹이다. A root layer group is a layer group that contains the root node of an occupancy tree or an attribute-assigned occupancy tree.
부모 서브그룹은 현재 서브그룹의 탑 레이어 최소 깊이에 인접한 레이어 그룹 내 서브 그룹이며, 이때 부모 서브그룹의 바운딩 박스는 현재 서브그룹의 바운딩박스의 슈퍼셋이다(a subgroup in a layer-group adjacent to the top layer minimum depth of the current subgroup, where the bounding box of the parent subgroup is a superset of the bounding box of the current subgroup).A parent subgroup is a subgroup in a layer-group adjacent to the top layer minimum depth of the current subgroup, where the bounding box of the parent subgroup is a superset of the bounding box of the current subgroup.
자식 서브그룹은 현재 서브그룹의 바텀 레이어 최대 깊이에 인접한 레이어 그룹 내 서브그룹이며, 이때 자식 서브그룹의 바운딩박스는 현재 서브그룹의 바운딩박스의 서브셋이다(a subgroup in a layer-group adjacent to the bottom layer maximum depth of the current subgroup, where the bounding box of the child subgroup is a subset of the bounding box of the current subgroup).A child subgroup is a subgroup in a layer-group adjacent to the bottom layer maximum depth of the current subgroup, where the bounding box of the child subgroup is a subset of the bounding box of the current subgroup.
어트리뷰트 할당된 오큐판시 트리(attribute assigned occupancy tree)는 각 트리레벨 내 노드의 어트리뷰트들이 자식 노드들의 어트리뷰트에 의해 할당된 오큐판시 트리이다(an occupancy tree where the attributes of a node in each tree level is assigned by the attribute of child nodes).An attribute assigned occupancy tree is an occupancy tree where the attributes of a node in each tree level are assigned by the attributes of child nodes.
이때, 하나의 슬라이스는 FGS들로 구성될 수 있으며, 각 FGS는 레이어 그룹 내 서브그룹의 FGS 지오메트리 또는 FGS 어트리뷰트에 1:1 매핑된다.At this time, one slice can be composed of FGSs, and each FGS is mapped 1:1 to the FGS geometry or FGS attribute of a subgroup within the layer group.
FGS는 레이어 그룹 인덱스와 서브그룹 인덱스의 페어(pair)에 의해 지시된다. FGS is indicated by a pair of layer group indices and subgroup indices.
한 슬라이스 내 FGS들은 공통 슬라이스 식별자(slice_id)에 의해 식별된다.FGSs within a slice are identified by a common slice identifier (slice_id).
모든 FGS는 FGS 지오메트리를 코딩하는 지오메트리 데이터 유닛(GDU) 또는 종속 지오메트리 데이터 유닛(DGDU), 또는 FGS 어트리뷰트를 코딩하는 어트리뷰트 데이터 유닛(ADU) 또는 종속 어트리뷰트 데이터 유닛(DADU)를 포함한다.Every FGS contains either a geometry data unit (GDU) or dependent geometry data unit (DGDU) that codes the FGS geometry, or an attribute data unit (ADU) or dependent attribute data unit (DADU) that codes the FGS attributes.
FGS는 GDU로 시작한다. 이 FGS에는 GDU 또는 이전에 디코딩된 DGDU에 따라 달라지는 DGDU들의 FGS들이 이어질 수 있다.An FGS begins with a GDU. This FGS may be followed by FGSs of DGDUs, which depend on the GDU or previously decoded DGDU.
만일 존재한다면, FGS 어트리뷰트는 ADU로 시작한다. 이 FGS에는 해당 ADU 또는 이전에 디코딩된 DADU에 따라 달라지는 DADU들의 FGS가 이어질 수 있다. ADUs와 DADUs는 GDU와 DGDU 이후에 발생한다(occur).If present, the FGS attribute begins with an ADU. This FGS may be followed by FGSs of DADUs, which depend on the ADU or previously decoded DADUs. ADUs and DADUs occur after GDUs and DGDUs.
본 개시의 레이어 그룹 구조에서, 오큐판시 트리 또는 어트리뷰트 할당된 오큐판시 트리 내 노드들은 레이어 그룹과 서브그룹으로 그룹화된다. In the layer group structure of the present disclosure, nodes within the occupancy tree or the attribute-assigned occupancy tree are grouped into layer groups and subgroups.
레이어 그룹은 연속된 트리 레벨들의 그룹이며, 이때 모든 트리 레벨은 오직 하나의 레이어 그룹에만 속한다. 서브그룹의 최소 깊이는 부모 서브그룹의 최대 깊이에 1을 더하거나, 루트 레이어 그룹의 경우 0이다. 서브그룹의 최대 깊이는 자식 서브그룹의 최소 깊이에서 1을 빼거나, 마지막 레이어 그룹의 경우 오큐판시 트리의 가장 큰 깊이가 된다. 이때, 레이어 그룹은 레이어 그룹 인덱스(layer_group_idx)에 의해 식별된다.A layer group is a group of consecutive tree levels, where each tree level belongs to exactly one layer group. The minimum depth of a subgroup is 1 plus the maximum depth of its parent subgroup, or 0 for the root layer group. The maximum depth of a subgroup is 1 minus the minimum depth of its child subgroups, or, for the last layer group, the maximum depth of the occupancy tree. Layer groups are identified by their layer group index (layer_group_idx).
서브그룹은 레이어 그룹의 공간적 서브셋(spatial subset)으로, 트리 레벨 내 노드는 레이어 그룹의 서브그룹들 중 하나에 속한다. A subgroup is a spatial subset of a layer group, and a node within a tree level belongs to one of the subgroups of the layer group.
서브그룹의 출력 노드들의 위치는 바운딩박스에 의해 기술되며, 서브그룹 바운딩박스의 범위는 동일한 레이어 그룹 내 다른 서브그룹의 바운딩박스와 오버랩되지 않는다. The locations of the output nodes of a subgroup are described by a bounding box, and the range of the subgroup bounding box does not overlap with the bounding boxes of other subgroups within the same layer group.
하나의 레이어 그룹 내 서브그룹들의 출력 노드들의 셋트(set)는 그 레이어 그룹 내 출력 노드들의 셋트와 동일하다. The set of output nodes of subgroups within a layer group is identical to the set of output nodes within that layer group.
루트 레이어 그룹의 경우, 하나의 서브그룹만 존재한다(There is only one subgroup for the root layer-group). 레이어 그룹 내 서브그룹은 서브 그룹 인덱스(subgroup_idx)에 의해 식별된다.For the root layer group, there is only one subgroup. Subgroups within a layer group are identified by their subgroup index (subgroup_idx).
도 34(a), 도 34(b)는 실시예들에 따른 레이어 그룹과 서브그룹 그리고, FGS와의 관계를 보인 도면이다. 특히, 도 34(a)는 깊이가 8인 오큐판시 트리의 레이어 그룹 구조를 보이고 있고, 도 34(b)는 서브그룹들과 해당 FGS들 사이의 부모-자식 관계를 보이고 있다. Figures 34(a) and 34(b) are diagrams showing the relationships between layer groups, subgroups, and FGSs according to embodiments. In particular, Figure 34(a) shows the layer group structure of an occupancy tree with a depth of 8, and Figure 34(b) shows the parent-child relationships between subgroups and the corresponding FGSs.
도 34(a)에서는 세 개의 레이어 그룹이 정의되며, 레이어 그룹 0은 깊이 0-3, 레이어 그룹 1은 깊이 4-6, 레이어 그룹 2는 깊이 7과 8로 구성된다. 즉, 레이어 그룹 0은 하나의 서브그룹, 레이어 그룹 1은 두개의 서브그룹들, 레이어 그룹 2는 3개의 서브그룹들로 구성된다. 다시 말해, 루트 레이어그룹을 제외하고, 레이어 그룹들은 각각 서브그룹들로 구성될 수 있으며, 각 서브그룹은 레이어 그룹 인덱스와 서브그룹 인덱스로 구성되는 페어로 표시된다. 예를 들어, 루트 레이어 그룹은 (0, 0)으로 표시된다.In Fig. 34(a), three layer groups are defined, where layer group 0 consists of depths 0-3, layer group 1 consists of depths 4-6, and layer group 2 consists of depths 7 and 8. That is, layer group 0 consists of one subgroup, layer group 1 consists of two subgroups, and layer group 2 consists of three subgroups. In other words, except for the root layer group, each layer group can consist of subgroups, and each subgroup is represented by a pair consisting of a layer group index and a subgroup index. For example, the root layer group is represented as (0, 0).
도 34(b)에서는 도 34(a)에 나타난 각 레이어 그룹 내 서브그룹들이 xy 평면(plane)에서 바운드된(bounded) 공간 영역(spatial region)으로 도식화되어 있다. 서브그룹의 바운딩박스가 다음 레이어 그룹 내 하나 이상의 서브그룹들로 구성되면, 그들은 부모-자식 관계에 있다. 즉, 레이어 그룹 내 서브그룹의 바운딩박스가 다음 레이어그룹 내 하나 이상의 서브그룹들의 바운딩박스의 슈퍼셋이면, 이웃하는 레이어그룹들 내 서브그룹들은 부모-자식 관계에 있다(When the bounding box of a subgroup in a layer-group is a superset of the bounding box of one or more subgroups in the next layer-group, the subgroups in adjacent layer-groups are in a parent and child relationship). 예를 들어, 서브그룹 (0,0)은 서브그룹들 (1,0)과 (1,1)의 부모이다. 유사하게, 서브그룹들 (2,0)과 (2,1)은 서브그룹 (1,0)의 자식이다. 레이어 그룹 인덱스와 서브그룹 인덱스의 페어로 표시되는 각 서브그룹은 서로 다른 FGS들에 있다.In Fig. 34(b), the subgroups within each layer group shown in Fig. 34(a) are depicted as spatial regions bounded in the xy plane. If the bounding box of a subgroup consists of one or more subgroups within the next layer group, they are in a parent-child relationship. That is, when the bounding box of a subgroup within a layer group is a superset of the bounding boxes of one or more subgroups within the next layer group, the subgroups within adjacent layer groups are in a parent-child relationship. For example, subgroup (0,0) is the parent of subgroups (1,0) and (1,1). Similarly, subgroups (2,0) and (2,1) are children of subgroup (1,0). Each subgroup, represented by a pair of layer group indices and subgroup indices, is in different FGSs.
도 34(a), 도 34(b)에서, Sl,n은 레이어 그룹 l과 관련된 서브그룹 n을 나타낸다. 그리고, di는 옥트리 트리 깊이 i를 나타낸다. In Figures 34(a) and 34(b), S l,n represents a subgroup n associated with layer group l. And, d i represents the octree tree depth i.
도 35a, 도 35b는 실시예들에 따른 시퀀스 파라미터 세트(SPS)의 신택스 구조의 다른 예를 나타낸다. SPS는 포인트 클라우드 데이터 비트스트림의 시퀀스 정보를 포함할 수 있으며, 특히 레이어 그룹 기반 슬라이싱 관련 정보를 포함하는 예를 보이고 있다.Figures 35a and 35b illustrate another example of the syntax structure of a sequence parameter set (SPS) according to embodiments. The SPS may include sequence information of a point cloud data bitstream, and in particular, an example of including information related to layer group-based slicing is shown.
도 35a, 도 35b의 신택스들은 도 29의 비트스트림에 포함되고, 실시예들에 따른 포인트 클라우드 인코더에 의해 생성되고, 포인트 클라우드 디코더에 의해 디코딩될 수 있다.The syntaxes of FIGS. 35a and 35b are included in the bitstream of FIG. 29, and can be generated by a point cloud encoder according to embodiments and decoded by a point cloud decoder.
다음은 레이어 그룹 기반 슬라이싱 관련 정보에 대해 설명하기로 한다. 레이어 그룹 기반 슬라이싱 관련 정보를 제외한 나머지 정보의 설명은 도 30a, 도 30b의 설명을 참조하기로 한다. The following describes information related to layer group-based slicing. For descriptions of information other than layer group-based slicing, refer to the descriptions of FIGS. 30a and 30b.
예를 들어, 도 35a, 도 35b에서 simple_profile_compliant은 도 30a, 도 30b에서 simple_profile_compatibility_flag에 해당되고, dense_profile_compliant은 dense_profile_compatibility_flag에 해당되며, predictive_profile_compliant는 predictive_profile_compatibility_flag에 해당된다. main_profile_compliant는 main_profile_compatibility_flag에 해당되고, slice_reordering_constraint는 slice_reordering_constraint_flag에 해당되며, unique_point_positions_constraint는 unique_point_positions_constraint_flag에 해당된다. sps_seq_parameter_set_id는 sps_seq_parameter_set_id에 해당되고, seq_origin_bits은 seq_origin_bits에 해당되며, seq_origin_xyz[]과 seq_origin_log2_scale는 seq_origin_xyz[]과 seq_origin_log2_scale에 해당된다. seq_bbox_size_bits는 seq_bounding_box_size_bits에 해당되고, seq_bbox_size_minus1_xyz[]는 seq_bounding_box_size_minus1_xyz[k]에 해당된다. For example, in FIGS. 35a and 35b, simple_profile_compliant corresponds to simple_profile_compatibility_flag, dense_profile_compliant corresponds to dense_profile_compatibility_flag, and predictive_profile_compliant corresponds to predictive_profile_compatibility_flag in FIGS. 30a and 30b. main_profile_compliant corresponds to main_profile_compatibility_flag, slice_reordering_constraint corresponds to slice_reordering_constraint_flag, and unique_point_positions_constraint corresponds to unique_point_positions_constraint_flag. sps_seq_parameter_set_id corresponds to sps_seq_parameter_set_id, seq_origin_bits corresponds to seq_origin_bits, seq_origin_xyz[] and seq_origin_log2_scale correspond to seq_origin_xyz[] and seq_origin_log2_scale. seq_bbox_size_bits corresponds to seq_bounding_box_size_bits, and seq_bbox_size_minus1_xyz[] corresponds to seq_bounding_box_size_minus1_xyz[k].
도 35a, 도 35b에서, sps_layer_group_slicing_flag의 값이 1이면 슬라이스는 FGS 지오메트리 또는 FGS 어트리뷰트의 멀티플 FGS들로 구성된다는 것을 명시한다. sps_layer_group_slicing_flag의 값이 0이면 슬라이스가 FGS들로 구성되지 않음을 명시한다. In Figures 35a and 35b, if the value of sps_layer_group_slicing_flag is 1, it specifies that the slice is composed of multiple FGSs of FGS geometries or FGS attributes. If the value of sps_layer_group_slicing_flag is 0, it specifies that the slice is not composed of FGSs.
num_layer_groups_minus1에 1을 더한 값은 레이어 그룹들의 개수를 나타내며, 이때 레이어 그룹은 지오메트리 코딩 트리 구조의 일부인 연속된 트리 레이어들의 그룹을 나타낸다. num_layer_groups_minus1은 0에서 코딩 트리 레이어들의 개수까지의 범위에 있어야 한다. The value of num_layer_groups_minus1 plus 1 represents the number of layer groups, where a layer group represents a group of contiguous tree layers that are part of the geometry coding tree structure. num_layer_groups_minus1 must be in the range of 0 to the number of coding tree layers.
layer_group_id[i] 는 슬라이스의 i번째 레이어 그룹을 식별하기 위한 레이어 그룹 인덱스 즉, 지시자를 명시한다. layer_group_id 의 범위는 0부터 num_layer_groups_minus1까지에 있어야 한다. layer_group_id[i] specifies the layer group index, i.e., the indicator, that identifies the i-th layer group in the slice. layer_group_id must be in the range of 0 to num_layer_groups_minus1.
num_layers_minus1[i] + 1은 i번째 레이어 그룹에 포함된 코딩 레이어(또는 레벨이라 함)들의 개수를 나타낸다. 레이어 그룹들의 총 수는 i가 0인 경우 모든 (num_layers_minus1[i] + 1)을 num_layer_groups_minus1에 추가하여 유도될 수 있다.num_layers_minus1[i] + 1 represents the number of coding layers (or levels) included in the ith layer group. The total number of layer groups can be derived by adding all (num_layers_minus1[i] + 1) to num_layer_groups_minus1 when i is 0.
subgroup_enabled_flag[i]의 값이 1이면, i번째 레이어 그룹이 두 개 이상의 서브 그룹들로 나누어지는 것을 나타낸다. 여기서, 레이어 그룹의 서브 그룹들에 포함된 포인트들의 세트는 레이어 그룹에 포함된 포인트들의 세트와 동일하다. i번째 레이어 그룹의 subgroup_enabled_flag가 1일 때, j번째 레이어 그룹의 subgroup_enabled_flag는 j가 i보다 크거나 같을 때 1과 같다. subgroup_enabled_flag의 값이 0이면, 현재 레이어 그룹이 여러 서브그룹들로 세분화되지 않고 단일 슬라이스에 포함됨을 나타낸다(subgroup_enabled_flag[i] is equal to 1 specifies the i-th layer-group is divided into two or more subgroups where the set of points in the subgroups of a layer-group is identical to the set of points in the layer-group. When subgroup_enabled_flag of the i-th layer-group is equal to 1, subgroup_enabled_flag of the j-th layer-group shall be equal to 1 when j is larger than or equal to i. subgroup_enabled_flag is equal to 0 specifies that the i-th layer-group is not sub-divided into multiple subgroups). If the value of subgroup_enabled_flag[i] is 1, it indicates that the ith layer group is divided into two or more subgroups. Here, the set of points included in the subgroups of the layer group is identical to the set of points included in the layer group. When subgroup_enabled_flag of the ith layer group is 1, subgroup_enabled_flag of the jth layer group is equal to 1 when j is greater than or equal to i. If the value of subgroup_enabled_flag is 0, it indicates that the current layer group is not subdivided into multiple subgroups but is included in a single slice (subgroup_enabled_flag[i] is equal to 1 specifies the i-th layer-group is divided into two or more subgroups where the set of points in the subgroups of a layer-group is identical to the set of points in the layer-group. When subgroup_enabled_flag of the i-th layer-group is equal to 1, subgroup_enabled_flag of the j-th layer-group shall be equal to 1 when j is larger than or equal to i. subgroup_enabled_flag is equal to 0 specifies that the i-th layer-group is not sub-divided into multiple subgroups).
subgroup_bbox_origin_bits_minus1+1은 subgroup_bbox_origin 필드(또는 syntax element라 함)의 비트 길이이다.subgroup_bbox_origin_bits_minus1+1 is the bit length of the subgroup_bbox_origin field (or syntax element).
subgroup_bbox_size_bits_minus1+1은 subgroup_bbox_size 필드의 비트 길이이다.subgroup_bbox_size_bits_minus1+1 is the bit length of the subgroup_bbox_size field.
도 36은 실시예들에 따른 지오메트리 데이터 유닛 헤더의 신택스 구조의 일 예를 나타낸 도면이다. 도 36의 신택스들은 도 29의 비트스트림에 포함되고, 실시예들에 따른 포인트 클라우드 인코더에 의해 생성되어 수신 장치로 디코더로 전송되고, 포인트 클라우드 디코더에 의해 디코딩될 수 있다.Fig. 36 is a diagram illustrating an example syntax structure of a geometry data unit header according to embodiments. The syntaxes of Fig. 36 are included in the bitstream of Fig. 29, and may be generated by a point cloud encoder according to embodiments, transmitted to a decoder as a receiving device, and decoded by the point cloud decoder.
도 36에서, gdu_geometry_parameter_set_id는 gps_geom_parameter_set_id를 통해 활성화된 GPS를 지정한다.In Figure 36, gdu_geometry_parameter_set_id specifies the GPS activated via gps_geom_parameter_set_id.
gdu_temporal_id는 지오메트리 데이터 유닛(GDU)과 관련된 프레임의 템포럴 ID를 지정한다.gdu_temporal_id specifies the temporal ID of the frame associated with the geometry data unit (GDU).
slice_id는 다른 DU에 의해 참조하기 위해 슬라이스를 식별한다.slice_id identifies the slice for reference by other DUs.
slice_tag는 동일한 slice_tag 값을 가진 슬라이스 그룹의 멤버로서 슬라이스를 식별한다. 만일, 타일 인벤토리 DU가 존재하는 경우, 슬라이스 그룹은 타일 id로 식별되는 타일이다. 반면 타일 인벤토리 DU가 존재하지 않으면, slice_tag의 해석은 애플리케이션에 따라 달라진다.slice_tag identifies a slice as a member of a slice group with the same slice_tag value. If a tile inventory DU exists, the slice group is a tile identified by its tile id. If a tile inventory DU does not exist, the interpretation of slice_tag depends on the application.
frame_ctr_lsb는 개념적 프레임 카운터인 FrameCtr의 frame_ctr_lsb_bits LSB들을 지정한다.frame_ctr_lsb specifies the frame_ctr_lsb_bits LSBs of FrameCtr, a conceptual frame counter.
slice_entropy_continuation이 1이면, 엔트로피 파싱 상태 복원 프로세스(entropy parsing restoration process)가 슬라이스 내 GDU와 모든 ADU의 시작에서 적용되어야 함을 지정한다. slice_entropy_continuation이 0이면, slice_inter_entropy_continuation이 0일 때 슬라이스 내 GDU와 모든 ADU의 파싱이 프레임 내의 다른 슬라이스와 독립적임을 지정한다. 만약 slice_entropy_continuation이 존재하지 않으면, 0으로 간주된다.If slice_entropy_continuation is 1, it specifies that the entropy parsing restoration process should be applied at the beginning of each GDU and all ADUs within the slice. If slice_entropy_continuation is 0, it specifies that parsing of each GDU and all ADUs within the slice is independent of other slices within the frame when slice_inter_entropy_continuation is 0. If slice_entropy_continuation is not present, it is assumed to be 0.
prev_slice_id는 비트스트림 순서상 선행 슬라이스의 GDU slice_id와 동일해야 한다. prev_slice_id must be identical to the GDU slice_id of the preceding slice in bitstream order.
다음은 레이어 그룹 기반 슬라이싱 관련 정보에 대해 설명하기로 한다.The following explains information related to layer group-based slicing.
만일 시퀀스 파라미터 세트에 포함된 sps_layer_group_slicing_flag이 값이 참(즉, 1)이면 지오메트리 데이터 유닛 헤더는 num_subsequent_subgroups를 포함할 수 있다. sps_layer_group_slicing_flag의 값이 1이면 슬라이스는 FGS 지오메트리 또는 FGS 어트리뷰트의 멀티플 FGS들로 구성된다는 것을 나타낸다. If sps_layer_group_slicing_flag included in the sequence parameter set has a value of true (i.e., 1), the geometry data unit header may contain num_subsequent_subgroups. A value of sps_layer_group_slicing_flag of 1 indicates that a slice consists of multiple FGSs of FGS geometries or FGS attributes.
num_subsequent_subgroups는 현재 데이터 유닛 또는 종속 데이터 유닛을 참조하는 후속(subsequent) 종속 데이터 유닛의 개수를 지정한다.num_subsequent_subgroups specifies the number of subsequent dependent data units that reference the current data unit or dependent data units.
만일, 지오메트리 파라미터 세트에 포함된 occtree_planar_enabled이 참(즉, 1)이고, geom_angular_enabled이 거짓(즉, 0)이면 num_layers_minus1[0]의 값만큼 지오메트리 데이터 유닛 헤더는 planar_eligibility_by_density[i]을 포함할 수 있다.If occtree_planar_enabled in the geometry parameter set is true (i.e., 1) and geom_angular_enabled is false (i.e., 0), the geometry data unit header can contain planar_eligibility_by_density[i] as many times as the value of num_layers_minus1[0].
occtree_planar_enabled는 노드 오큐판시 비트맵들의 코딩이 수행되는지(1인 경우), 또는 그렇지 않은지(0인 경우)를, 부분적으로 오큐파이드된(occupied) 평면과 언오큐파이드된(unoccupied) 평면의 시그널링을 통해, 지정한다. occtree_planar_enabled가 존재하지 않을 경우, 0으로 간주된다(occtree_planar_enabled specifies whether (when 1) or not (when 0) the coding of node occupancy bitmaps is performed, in part, by the signaling of occupied and unoccupied planes. When occtree_planar_enabled is not present, it shall be inferred to be 0).occtree_planar_enabled specifies whether (when 1) or not (when 0) the coding of node occupancy bitmaps is performed, in part, by the signaling of occupied and unoccupied planes. When occtree_planar_enabled is not present, it shall be inferred to be 0.
geom_angular_enabled는 슬라이스 지오메트리가 각도 원점의 V축을 따라 위치하고 회전하는 빔들의 세트에 대한 정보를 사용하여 코딩되는지(1인 경우), 또는 그렇지 않은지(0인 경우)를 지정한다(geom_angular_enabled specifies whether (when 1) or not (when 0) slice geometry is coded using information about a set of beams located along and rotating around the V axis of the angular origin).geom_angular_enabled specifies whether (when 1) or not (when 0) slice geometry is coded using information about a set of beams located along and rotating around the V axis of the angular origin.
planar_eligibility_by_density[i]가 1이면, planar eligibility flag가 현재 서브그룹의 i번째 깊이에 대해 활성화(enabled)되었음을 나타낸다. 즉, planar_eligibility_by_density[i]가 1이면, planar eligibility 가 현재 서브그룹의 i번째 깊이에 대해 활성화(enabled)되었음을 지시한다. planar_eligibility_by_density가 0이면, planar eligibility flag가 현재 서브그룹의 i번째 깊이에 대해 비활성화(disabled)되었음을 나타낸다. 즉, planar_eligibility_by_density[i]가 0이면, planar eligibility 가 현재 서브그룹의 i번째 깊이에 대해 비활성화(disabled)되었음을 지시한다.If planar_eligibility_by_density[i] is 1, it indicates that the planar eligibility flag is enabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 1, it indicates that planar eligibility is enabled for the ith depth of the current subgroup. If planar_eligibility_by_density is 0, it indicates that the planar eligibility flag is disabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 0, it indicates that planar eligibility is disabled for the ith depth of the current subgroup.
도 37은 실시예들에 따른 종속 지오메트리 데이터 유닛 헤더의 신택스 구조의 다른 예를 나타낸 도면이다. 도 37은 종속 지오메트리 데이터 유닛 헤더에 레이어 그룹 기반 슬라이싱 관련 정보가 포함되는 예를 보이고 있다.Fig. 37 is a diagram illustrating another example of the syntax structure of a dependent geometry data unit header according to embodiments. Fig. 37 shows an example in which layer group-based slicing-related information is included in the dependent geometry data unit header.
도 37의 신택스들은 도 29의 비트스트림에 포함되고, 실시예들에 따른 포인트 클라우드 인코더에 의해 생성되어 수신 장치로 디코더로 전송되고, 포인트 클라우드 디코더에 의해 디코딩될 수 있다.The syntaxes of FIG. 37 are included in the bitstream of FIG. 29, and can be generated by a point cloud encoder according to embodiments, transmitted to a decoder as a receiving device, and decoded by the point cloud decoder.
dgsh_geometry_parameter_set_id는 gps_geom_parameter_set_id가 나타내는 활성 GPS를 나타낸다. dgsi_geometry_parameter_set_id 값은 해당 슬라이스의 gdu_geometry_parameter_set_id 값과 동일하다.dgsh_geometry_parameter_set_id indicates the active GPS indicated by gps_geom_parameter_set_id. The dgsi_geometry_parameter_set_id value is equal to the gdu_geometry_parameter_set_id value for the corresponding slice.
slice_id는 현재 종속 지오메트리 데이터 유닛이 속한 지오메트리 슬라이스를 명시한다.slice_id specifies the geometry slice to which the current dependent geometry data unit belongs.
layer_group_id는 슬라이스의 레이어 그룹의 지시자(indicator) 즉, 레이어 그룹을 식별하기 위한 레이어 그룹 인덱스를 나타낸다. layer_group_id의 범위는 0에서 num_layer_groups_minus1까지 일 수 있다. 존재하지 않는 경우, 0으로 추정된다.layer_group_id is an indicator of the layer group of the slice, i.e., a layer group index that identifies the layer group. layer_group_id can range from 0 to num_layer_groups_minus1. If it does not exist, it is assumed to be 0.
subgroup_id는 layer_group_id에 의해 참조되는 레이어 그룹의 서브 그룹의 지시자 즉, 서브그룹을 식별하기 위한 서브그룹 인덱스를 나타낸다. subgroup_id의 범위는 0부터 num_subgroups_minus1[layer_group_id] 사이일 수 있다. 여기서, subgroup_id는 layer_group_id에 의해 식별되는 레이어 그룹 내 부분 영역을 나타낸다. 존재하지 않는 경우, subgroup_id는 0으로 추정된다.subgroup_id indicates a subgroup of the layer group referenced by layer_group_id, i.e., a subgroup index used to identify the subgroup. subgroup_id can range from 0 to num_subgroups_minus1[layer_group_id]. Here, subgroup_id indicates a subarea within the layer group identified by layer_group_id. If not present, subgroup_id is assumed to be 0.
subgroup_bbox_origin은 layer_group_id에 의해 지시되는 j번째 레이어 그룹의 subgroup_id에 의해 지시되는 i번째 서브 그룹의 서브 그룹 바운딩 박스의 최소 위치를 나타낸다.subgroup_bbox_origin represents the minimum position of the subgroup bounding box of the i-th subgroup indicated by subgroup_id in the j-th layer group indicated by layer_group_id.
subgroup_bbox_size는 layer_group_id에 의해 지시되는 j번째 레이어 그룹의 subgroup_id에 의해 지시되는 i번째 서브 그룹의 서브 그룹 바운딩 박스의 크기를 나타낸다.subgroup_bbox_size represents the size of the subgroup bounding box of the i-th subgroup indicated by subgroup_id in the j-th layer group indicated by layer_group_id.
실시예들에 따르면, 서브 그룹에 있는 포인트들의 바운딩 박스는 subgroup_bbox_origin 및 subgroup_bbox_size로 설명된다. 이때, i번째 서브그룹의 바운딩 박스에 있는 영역은 i와 j가 동일하지 않을 때 j번째 서브그룹의 바운딩 박스와 겹치지(overlap) 않는다.According to the embodiments, the bounding box of points in a subgroup is described by subgroup_bbox_origin and subgroup_bbox_size. In this case, the area in the bounding box of the i-th subgroup does not overlap with the bounding box of the j-th subgroup when i and j are not equal.
ref_layer_group_id는 현재 종속 데이터 유닛의 컨텍스트 참조의 레이어 그룹 식별자의 지시자를 나타낸다. ref_layer_group_id의 범위는 0부터 현재 종속 데이터 유닛의 layer_group_id 범위에 있다.ref_layer_group_id indicates the layer group identifier of the context reference of the current dependent data unit. ref_layer_group_id ranges from 0 to the layer_group_id of the current dependent data unit.
ref_subgroup_id는 ref_layer_group_id가 가리키는 레이어 그룹의 참조 서브 그룹에 대한 지시자를 나타낸다. ref_subgroup_id의 범위는 0부터 ref_layer_group_id가 가리키는 레이어 그룹의 num_subgroup_id_minus1까지의 범위에 있다.ref_subgroup_id indicates a reference subgroup of the layer group pointed to by ref_layer_group_id. ref_subgroup_id ranges from 0 to num_subgroup_id_minus1 of the layer group pointed to by ref_layer_group_id.
context_reference_indication_flag가 1이면, 현재 종속 데이터 유닛의 컨텍스트 상태가 이후에 오는 하나 이상의 종속 데이터 유닛들에 상속됨을 나타낸다. context_reference_indication_flag가 0이면, 현재 종속 슬라이스(즉, 데이터 유닛)의 컨텍스트 상태가 이후에 오는 종속 슬라이스(즉, 데이터 유닛)에 상속되지 않음을 나타낸다. 만약 해당 플래그가 존재하지 않을 경우, 해당 데이터 유닛의 context_reference_indication_flag는 1로 간주된다. If context_reference_indication_flag is 1, it indicates that the context state of the current dependent data unit is inherited by one or more subsequent dependent data units. If context_reference_indication_flag is 0, it indicates that the context state of the current dependent slice (i.e., data unit) is not inherited by subsequent dependent slices (i.e., data units). If the flag does not exist, the context_reference_indication_flag of the data unit is considered to be 1.
수신 장치의 디코더들은 context_reference_indication_flag를 사용하여 컨텍스트 버퍼를 관리할 수 있다. context_reference_indication_flag가 1인 경우, 현재 종속 슬라이스(즉, 데이터 유닛)의 컨텍스트 상태는 현재 데이터 유닛의 디코딩의 끝에서 컨텍스트 버퍼에 저장된다. context_reference_indication_flag가 0인 경우, 현재 종속 슬라이스(즉, 데이터 유닛)의 컨텍스트 상태는 컨텍스트 버퍼에 저장되지 않는다. 여기서, 디코더들은 도 1, 도 2, 도 7, 도 9, 또는 도 28 중 하나가 될 수 있다. Decoders of a receiving device can manage a context buffer using context_reference_indication_flag. If context_reference_indication_flag is 1, the context state of the current dependent slice (i.e., data unit) is stored in the context buffer at the end of decoding of the current data unit. If context_reference_indication_flag is 0, the context state of the current dependent slice (i.e., data unit) is not stored in the context buffer. Here, the decoders can be one of FIG. 1, FIG. 2, FIG. 7, FIG. 9, or FIG. 28.
만일, context_reference_indication_flag가 참(즉, 1)이면, 종속 지오메트리 데이터 유닛 헤더는 num_subsequent_subgroups를 포함할 수 있다. If context_reference_indication_flag is true (i.e., 1), the dependent geometry data unit header may contain num_subsequent_subgroups.
num_subsequent_subgroups는 현재 데이터 유닛 또는 종속 데이터 유닛을 참조하는 후속(subsequent) 종속 데이터 유닛의 개수를 지정한다.num_subsequent_subgroups specifies the number of subsequent dependent data units that reference the current data unit or dependent data units.
만일, 지오메트리 파라미터 세트에 포함된 occtree_planar_enabled이 참(즉, 1)이고, geom_angular_enabled이 거짓(즉, 0)이면 num_layers_minus1[layer_group_id]의 값만큼 종속 지오메트리 데이터 유닛 헤더는 planar_eligibility_by_density[i]을 포함할 수 있다.If occtree_planar_enabled in the geometry parameter set is true (i.e., 1) and geom_angular_enabled is false (i.e., 0), then the dependent geometry data unit headers can contain planar_eligibility_by_density[i] as many times as the value of num_layers_minus1[layer_group_id].
planar_eligibility_by_density[i]가 1이면, planar eligibility flag가 현재 서브그룹의 i번째 깊이에 대해 활성화(enabled)되었음을 나타낸다. 즉, planar_eligibility_by_density[i]가 1이면, planar eligibility 가 현재 서브그룹의 i번째 깊이에 대해 활성화(enabled)되었음을 지시한다. planar_eligibility_by_density가 0이면, planar eligibility flag가 현재 서브그룹의 i번째 깊이에 대해 비활성화(disabled)되었음을 나타낸다. 즉, planar_eligibility_by_density[i]가 0이면, planar eligibility 가 현재 서브그룹의 i번째 깊이에 대해 비활성화(disbled)되었음을 지시한다.If planar_eligibility_by_density[i] is 1, it indicates that the planar eligibility flag is enabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 1, it indicates that planar eligibility is enabled for the ith depth of the current subgroup. If planar_eligibility_by_density is 0, it indicates that the planar eligibility flag is disabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 0, it indicates that planar eligibility is disabled for the ith depth of the current subgroup.
실시예들에 따른 비트스트림은 적어도 하나의 슬라이스, 혹은 세분화된 슬라이스들을 포함하고, 지오메트리 데이터 유닛 및 어트리뷰트 데이터 유닛을 포함할 수 있다. 각 데이터 유닛은 헤더(예, 지오메트리 데이터 유닛 헤더 또는 지오메트리 데이터 유닛 헤더 또는 어트리뷰트 데이터 유닛 헤더 또는 종속 어트리뷰트 데이터 유닛 헤더)를 포함한다. 또한, 데이터 유닛은 독립적인 데이터 유닛 및 종속적 데이터 유닛을 포함한다. 종속적 데이터 유닛은 상위-하위 노드 간 종속 관계에 따른 포함 관계를 나타낼 수 있다. A bitstream according to embodiments may include at least one slice, or subdivided slices, and may include a geometry data unit and an attribute data unit. Each data unit includes a header (e.g., a geometry data unit header, a geometry data unit header, an attribute data unit header, or a dependent attribute data unit header). In addition, the data unit includes independent data units and dependent data units. The dependent data units may indicate an inclusion relationship according to a dependency relationship between upper-lower nodes.
도 1, 도 2, 도 7, 도 9, 또는 도 28 중 하나에서 수행되는 디코딩 과정은 다음과 같다. The decoding process performed in one of FIG. 1, FIG. 2, FIG. 7, FIG. 9, or FIG. 28 is as follows.
다음은 슬라이스 디코딩 과정에 대한 설명이다. The following describes the slice decoding process.
실시예들에 따르면, 송신 장치의 인코더에서 인코딩된 포인트 클라우드 프레임 내 슬라이스는 다음과 같이 디코딩된다:According to embodiments, a slice within a point cloud frame encoded by an encoder of a transmitting device is decoded as follows:
1) 포인트 위치들은 슬라이스 내 하나의 GDU로부터 디코딩된다. 만일, sps_layer_group_slicing_flag가 1이면, 포인트 위치들은 하나의 GDU와 0개 이상의 DGDU들로부터 디코딩된다.1) Point locations are decoded from one GDU within a slice. If sps_layer_group_slicing_flag is 1, point locations are decoded from one GDU and zero or more DGDUs.
2) 각 어트리뷰트에 대해 디폴트 어트리뷰트 값들이 설정된다.2) Default attribute values are set for each attribute.
3) 포인트 어트리뷰트들은 슬라이스 내 각 ADU로부터 디코딩된다. 만일, sps_layer_group_slicing_flag가 1이면, 포인트 어트리뷰트들은 하나의 ADU와 0개 이상의 DADU들로부터 디코딩된다. ADU와 DADU들은 동일한 서브그룹 인덱스 페어(layer_group_id 및 subgroup_id)에 의해 지시된 GDU와 DGDU들이 디코딩된 후에 디코딩된다.3) Point attributes are decoded from each ADU within a slice. If sps_layer_group_slicing_flag is 1, point attributes are decoded from one ADU and zero or more DADUs. ADUs and DADUs are decoded after the GDUs and DGDUs indicated by the same subgroup index pair (layer_group_id and subgroup_id) are decoded.
4) 디코딩된 포인트 위치들은 오프셋이고 출력 포인트 카운트가 증가된다.4) The decoded point locations are offset and the output point count is incremented.
또한, 동일한 slice_id 값을 가진 코딩된 포인트 클라우드 프레임 내의 슬라이스들의 모든 세트에 대해서는 단 하나의 슬라이스가 디코딩된다. Additionally, for every set of slices within a coded point cloud frame with the same slice_id value, only one slice is decoded.
다음은 fien granularity slices 디코딩 과정에 대한 설명이다. The following describes the process of decoding fien granularity slices.
GDU는 슬라이스 내의 모든 DGDU들보다 먼저 디코딩된다. 자식 서브그룹들의 DGDU들은 부모 서브그룹의 DGDU가 디코딩된 후에 디코딩된다.A GDU is decoded before all DGDUs within the slice. DGDUs in child subgroups are decoded after the DGDUs in the parent subgroup are decoded.
GDU를 디코딩할 때, startDepth와 endDepth는 각각 0과 num_layers_minus1[0] + 1로 설정된다.When decoding GDU, startDepth and endDepth are set to 0 and num_layers_minus1[0] + 1, respectively.
DGDU를 디코딩할 때, startDepth는 0부터 (layer_group_id - 1) 범위 내의 각 k에 대해 num_layers_minus1[k] + 1의 누적 값으로 설정되며, endDepth는 0부터 layer_group_id 범위 내의 각 k에 대해 num_layers_minus1[k] + 1의 누적 값으로 설정된다.When decoding a DGDU, startDepth is set to the cumulative value of num_layers_minus1[k] + 1 for each k in the range of 0 to (layer_group_id - 1), and endDepth is set to the cumulative value of num_layers_minus1[k] + 1 for each k in the range of 0 to layer_group_id.
그리고, 오큐판시 트리는 오큐판시 트리 노드들로서 슬라이스 지오메트리를 나타낸다. 인코딩된 오큐판시 트리를 파싱 또는 트래버싱(traversing)하는 것은 암묵적으로 슬라이스 지오메트리의 표현(representation)을 생성한다. And, the occupancy tree represents the slice geometry as occupancy tree nodes. Parsing or traversing the encoded occupancy tree implicitly generates a representation of the slice geometry.
만일, sps_layer_group_slicing_flag가 1인 경우, 파셜 오큐판시 트리는 공간 영역과 깊이 관점에서 fine granularity 슬라이스 지오메트리를 오큐판시 트리 노드들의 부분 트리로 표현한다. 인코딩된 파셜 오큐판시 트리를 파싱 또는 트래버싱하는 것은 암묵적으로 fine granularity 슬라이스 지오메트리 표현을 생성한다. If sps_layer_group_slicing_flag is 1, the partial occupancy tree represents fine-grained slice geometry in both spatial and depth dimensions as a subtree of occupancy tree nodes. Parsing or traversing an encoded partial occupancy tree implicitly generates a fine-grained slice geometry representation.
개별(individual) 포인트 위치들은 오큐판시 트리에서 리프 노드들의 위치 또는 노드 상대 위치들(node-relative position)를 인코딩하는 direct 노드들에 의해 표현된다.Individual point locations are represented by direct nodes that encode the positions of leaf nodes or node-relative positions in the occupancy tree.
오큐판시 트리 노드는 축에 정렬된 큐보이드의 볼륨 내에 포함된 적어도 하나의 포인트의 존재를 식별한다. 만일, sps_layer_group_slicing_flag가 1인 경우, 오큐판시 트리 노드는 큐브의 볼륨 내에 포함된 적어도 하나의 포인트의 존재를 식별한다. 상기 볼륨은 포함되는 하한 꼭짓점(inclusive lower corner) p_min과 제외되는 상한 꼭짓점(exclusive upper corner) p_max에 의해 슬라이스 좌표계에서 정의된다. The occupancy tree node identifies the presence of at least one point contained within the volume of an axis-aligned cuboid. If sps_layer_group_slicing_flag is 1, the occupancy tree node identifies the presence of at least one point contained within the volume of the cube. The volume is defined in the slice coordinate system by the inclusive lower corner p_min and the exclusive upper corner p_max.
다음은 planar 오큐판시 코딩에 대해 설명한다. The following describes planar occupancy coding.
특히, 축별 자격(per-axis eligibility 또는 축별 적합성)에 대한 조건은 다음과 같다. 즉, 축별로 planar 오큐판시 코딩 자격을 결정할 수 있다.In particular, the conditions for per-axis eligibility are as follows: planar occupancy coding eligibility can be determined on an axis-by-axis basis.
하기의 수학식 5에서 PointDensity[dpth]는 깊이 (dpth)의 트리 레벨에서 포인트들의 밀도(density)를 식별하는 요소(factor)이다. 즉, 수학식 5는 오큐판시 트리의 특정 깊이에서 포인트들의 밀도를 산출하는 방법을 나타낸다. In the following mathematical expression 5, PointDensity[dpth] is a factor that identifies the density of points at a tree level of depth (dpth). In other words, mathematical expression 5 represents a method for calculating the density of points at a specific depth of the occupancy tree.
[수학식 5][Equation 5]
PointDensity[dpth] := (slice_num_points_minus1 + 1 - DirectNodePointCnt) × 10 / OccNodeCnt[dpth]PointDensity[dpth] := (slice_num_points_minus1 + 1 - DirectNodePointCnt) × 10 / OccNodeCnt[dpth]
수학식 5에 따르면, PointDensity[dpth]는 'slice_num_points_minus1 + 1'에서 'DirectNodePointCnt'을 빼고 그 결과에 상수 10을 곱한 후 OccNodeCnt[dpth]로 나눔으로써 획득될 수 있다. According to mathematical expression 5, PointDensity[dpth] can be obtained by subtracting 'DirectNodePointCnt' from 'slice_num_points_minus1 + 1', multiplying the result by the constant 10, and then dividing it by OccNodeCnt[dpth].
위의 수학식 5에서, slice_num_points_minus1+1은 해당 DU에서 코딩된 포인트들의 개수를 명시한다. slice_num_points_minus1는 지오메트리 데이터 유닛의 지오메트리 데이터 유닛 풋터 시맨틱스(Geometry data unit footer semantics)에 포함될 수 있다. 비트스트림 적합성(bitstream conformance) 요구사항에 따라, slice_num_points_minus1 + 1은 해당 DU에서 디코딩 가능한 포인트들의 수와 동일하다. 만일, sps_layer_group_slicing_flag가 1이고 layer_group_id가 0보다 크면, slice_num_points_minus1+1은 해당 DGDU 내 트리 레벨들의 최대 깊이에 존재하는 노드들의 개수와 동일하다. In the above mathematical expression 5, slice_num_points_minus1+1 specifies the number of points coded in the corresponding DU. slice_num_points_minus1 can be included in the Geometry Data Unit footer semantics of the Geometry Data Unit. According to the bitstream conformance requirement, slice_num_points_minus1 + 1 is equal to the number of decodable points in the corresponding DU. If sps_layer_group_slicing_flag is 1 and layer_group_id is greater than 0, slice_num_points_minus1+1 is equal to the number of nodes existing at the maximum depth of the tree levels in the corresponding DGDU.
DirectNodePointCnt는 다이렉트 노드들에서 코딩된 포인트들의 누적 수를 나타낸다. 즉, 다이렉트 노드들에서 코딩된 포인트들의 수는 누적되어 DirectNodePointCnt로 카운트된다. 이 변수는 매 슬라이스의 시작 또는 fine granularity 슬라이스의 시작에서 0으로 초기화된다. DirectNodePointCnt는 해당 깊이에서 직접 코딩된 포인트를 제외한 나머지 포인트의 수를 산출하기 위해 사용될 수 있다. DirectNodePointCnt represents the cumulative number of points coded in direct nodes. That is, the number of points coded in direct nodes is accumulated and counted as DirectNodePointCnt. This variable is initialized to 0 at the beginning of each slice or fine-grained slice. DirectNodePointCnt can be used to calculate the number of points remaining after directly coded points at that depth.
OccNodeCnt[dpth]는 깊이 (dpth)에 존재하는 노드들의 누적(cumulative) 카운트(즉, 누적 수)를 나타낸다. 만일, layer_group_slicing_flag가 1이면, OccNodeCnt[dpth]는 해당 서브그룹의 깊이(dpth)에 존재하는 노드들의 누적 카운트(즉, 누적 수)를 나타낸다. OccNodeCnt[dpth]는 각 노드가 나타내는 포인트들의 밀도를 정규화하기 위해 수학식 5에서 분모로 사용된다. OccNodeCnt[dpth] represents the cumulative count (i.e., the cumulative number) of nodes existing at depth (dpth). If layer_group_slicing_flag is 1, OccNodeCnt[dpth] represents the cumulative count (i.e., the cumulative number) of nodes existing at depth (dpth) of the corresponding subgroup. OccNodeCnt[dpth] is used as the denominator in Equation 5 to normalize the density of points represented by each node.
상수 10은 포인트 밀도를 정규화하거나 특정 스케일로 변환하기 위해 사용될 수 있다. The constant 10 can be used to normalize the point density or convert it to a specific scale.
실시예들에 따르면, sps_layer_group_slicing_flag(또는 fgs_layer_group_enabled 이라 함)가 1이면, PointDensity[dpth]는 하기의 수학식 6과 같이 지오메트리 데이터 유닛 헤더(GDUH) 또는 종속 지오메트리 데이터 유닛 헤더(DGDUH) 내의 planar_eligibility_by_density에 의해 지정될 수 있다. SPS에 포함된 sps_layer_group_slicing_flag의 값이 1이면 슬라이스는 FGS 지오메트리 또는 FGS 어트리뷰트의 멀티플 FGS들로 구성된다는 것을 의미한다. According to embodiments, if sps_layer_group_slicing_flag (or fgs_layer_group_enabled) is 1, PointDensity[dpth] can be specified by planar_eligibility_by_density in the geometry data unit header (GDUH) or dependent geometry data unit header (DGDUH) as in Equation 6 below. If the value of sps_layer_group_slicing_flag included in the SPS is 1, it means that the slice is composed of multiple FGSs of FGS geometry or FGS attributes.
[수학식 6][Equation 6]
PointDensity[dpth] = planar_eligibility_by_density[dpth - startDepth]PointDensity[dpth] = planar_eligibility_by_density[dpth - startDepth]
즉, 슬라이스가 fine granularity slice로 분할된 경우에는 지오메트리 데이터 유닛 헤더(GDUH) 또는 종속 지오메트리 데이터 유닛 헤더(DGDUH)에 시그널링되어 전송된 planar_eligibility_by_density 값이 사용되어, 각 깊이에서의 Planar 자격 여부를 결정할 수 있다. That is, when a slice is divided into fine granularity slices, the planar_eligibility_by_density value signaled and transmitted in the geometry data unit header (GDUH) or dependent geometry data unit header (DGDUH) can be used to determine planar eligibility at each depth.
수학식 6에서, [dpth - startDepth]는 해당 슬라이스 내에서의 상대적 깊이를 의미한다. 슬라이스의 시작 깊이(startDepth)를 기준으로 인덱스를 맞춰서 해당 깊이의 planar eligibility 값을 가져올 수 있다. In Equation 6, [dpth - startDepth] represents the relative depth within the slice. By aligning the index based on the start depth (startDepth) of the slice, the planar eligibility value for the depth can be obtained.
실시예들에 따르면, sps_layer_group_slicing_flag의 값이 1이면 슬라이스가 FGS 지오메트리 또는 FGS 어트리뷰트의 멀티플 FGS들로 구성된다는 것을 명시한다. sps_layer_group_slicing_flag의 값이 0이면 슬라이스가 FGS들로 구성되지 않음을 명시한다. 다른 예시로, sps_layer_group_slicing_flag의 값이 1이면 슬라이스가 파셜 슬라이스 지오메트리 또는 파셜 슬라이스 어트리뷰트의 멀티플 FGS들로 구성된다는 것을 명시할 수 있다. In embodiments, if the value of sps_layer_group_slicing_flag is 1, it specifies that the slice is composed of multiple FGSs of FGS geometries or FGS attributes. If the value of sps_layer_group_slicing_flag is 0, it specifies that the slice is not composed of FGSs. As another example, if the value of sps_layer_group_slicing_flag is 1, it can specify that the slice is composed of multiple FGSs of partial slice geometries or partial slice attributes.
실시예들에 따르면, 지오메트리 파라미터 세트에 포함된 occtree_planar_enabled이 참(즉, 1)이고, geom_angular_enabled이 거짓(즉, 0)이면 num_layers_minus1의 값만큼 지오메트리 데이터 유닛 헤더(GDUH) 또는 종속 지오메트리 데이터 유닛 헤더(DGDUH)는 planar_eligibility_by_density을 포함할 수 있다.According to embodiments, if occtree_planar_enabled included in the geometry parameter set is true (i.e., 1) and geom_angular_enabled is false (i.e., 0), the geometry data unit header (GDUH) or dependent geometry data unit header (DGDUH) may include planar_eligibility_by_density as many times as the value of num_layers_minus1.
occtree_planar_enabled는 노드 오큐판시 비트맵들의 코딩이 수행되는지(1인 경우), 또는 그렇지 않은지(0인 경우)를, 부분적으로 오큐파이드된(occupied) 평면과 언오큐파이드된(unoccupied) 평면의 시그널링을 통해, 지정한다. occtree_planar_enabled specifies whether coding of node occupancy bitmaps is performed (if 1) or not (if 0), through signaling of partially occupied and unoccupied planes.
geom_angular_enabled는 슬라이스 지오메트리가 각도 원점의 V축을 따라 위치하고 회전하는 빔들의 세트에 대한 정보를 사용하여 코딩되는지(1인 경우), 또는 그렇지 않은지(0인 경우)를 지정한다.geom_angular_enabled specifies whether the slice geometry is coded using information about a set of beams positioned and rotating along the V-axis of the angular origin (if 1), or not (if 0).
planar_eligibility_by_density가 1이면, planar eligibility flag가 현재 서브그룹의 i번째 깊이에 대해 활성화(enabled)되었음을 나타낸다. 즉, planar_eligibility_by_density[i]가 1이면, planar eligibility 가 현재 서브그룹의 i번째 깊이에 대해 활성화되었음을 지시한다. planar_eligibility_by_density가 0이면, planar eligibility flag가 현재 서브그룹의 i번째 깊이에 대해 비활성화(disabled)되었음을 나타낸다. 즉, planar_eligibility_by_density[i]가 01이면, planar eligibility 가 현재 서브그룹의 i번째 깊이에 대해 비활성화되었음을 지시한다.If planar_eligibility_by_density is 1, it indicates that the planar eligibility flag is enabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 1, it indicates that planar eligibility is enabled for the ith depth of the current subgroup. If planar_eligibility_by_density is 0, it indicates that the planar eligibility flag is disabled for the ith depth of the current subgroup. That is, if planar_eligibility_by_density[i] is 01, it indicates that planar eligibility is disabled for the ith depth of the current subgroup.
이와 같이 본 개시에서 PointDensity[dpth] 즉, 각 깊이의 포인트 밀도는 수신 장치의 디코더에서 수학식 5와 같이 직접적인 계산을 통해 획득될 수도 있고 또는 수학식 6과 같이 planar_eligibility_by_density를 사용하여 획득될 수도 있다. In this way, in the present disclosure, PointDensity[dpth], i.e., point density at each depth, can be obtained through direct calculation as in Equation 5 in the decoder of the receiving device, or can be obtained using planar_eligibility_by_density as in Equation 6.
예를 들어, 수학식 5 또는 수학식 6를 통해 획득한 오큐판시 트리의 특정 깊이(또는 레이어 또는 레벨이라 함)에서의 포인트들의 밀도 (PointDensity[dpth])가 임계값보다 작으면, 해당 깊이에서 planar 모드가 사용됨을 나타내고, 임계값보다 작지 않으면 해당 깊이에서 planar 모드가 사용되지 않음을 나타낼 수 있다. 여기서, 임계값은 미리 정의될 수 있다.For example, if the density of points (PointDensity[dpth]) at a specific depth (or layer or level) of the occupancy tree obtained through Equation 5 or Equation 6 is less than a threshold, it indicates that the planar mode is used at that depth, and if it is not less than the threshold, it indicates that the planar mode is not used at that depth. Here, the threshold can be predefined.
실시예들에 따르면, planar_eligibility_by_density 전달로 인해 사용되는 비트를 줄이기 위해 PointDensity[dpth]를 구하기 위한 기존 수식을 그대로 사용할 수 있다. 이 경우 slice_num_points_minus1 는 슬라이스 전체의 포인트 수가 아니라 FGS를 디코딩 하는 경우 생성되는 노드 혹은 포인트의 수를 의미할 수 있다.In some embodiments, the existing formula for calculating PointDensity[dpth] can be used as is to reduce the bits used due to planar_eligibility_by_density propagation. In this case, slice_num_points_minus1 may refer to the number of nodes or points generated when decoding FGS, rather than the number of points in the entire slice.
다음은 fine granularity slices의 파셜 디코딩에 대한 설명이다. The following describes partial decoding of fine granularity slices.
디코더는 FGS들의 일부를 디코딩 및 복원할 수 있다. FGS로 분할된(segmented) 슬라이스는 밀도 및/또는 공간 영역 관점에서 파셜 디코딩을 지원한다. 파셜 디코딩을 사용할 때, 부분 출력을 생성하기 위해 불필요한 데이터 유닛들은 오큐판시 트리 또는 어트리뷰트 계수들을 디코딩하기 전에 필터링되는 것을 일 실시예로 한다. The decoder can decode and reconstruct portions of FGSs. Segmented slices of FGSs support partial decoding in terms of density and/or spatial domain. When using partial decoding, unnecessary data units are filtered out before decoding the occupancy tree or attribute coefficients to generate partial outputs.
다음은 파셜 밀도 디코딩에 대한 설명이다. The following describes partial density decoding.
디코더는 낮은 밀도 슬라이스 포인트 클라우드를 생성한다. 낮은 밀도 슬라이스 포인트 클라우드는 다음 변수들에 의해 지정된다.The decoder generates a low-density slice point cloud. The low-density slice point cloud is specified by the following variables:
변수 SkippedLayerGroup는 밀도 방향에서 부분 디코딩을 위해 스킵된 레이어 그룹의 application-specific 수를 나타낸다. SkippedLayerGroup의 값은 0부터 num_layer_groups_minus1 범위 내에 있어야 한다.The variable SkippedLayerGroup represents the application-specific number of layer groups skipped for partial decoding in the density direction. The value of SkippedLayerGroup must be in the range 0 to num_layer_groups_minus1.
변수 MinNodeSizeLog2는 SkippedLayerGroup에 의해 지정된 최소 오큐판시 트리 노드 크기를 나타낸다. The variable MinNodeSizeLog2 represents the minimum occupancy tree node size specified by SkippedLayerGroup.
어레이들 SubgroupNodePos[layerGroupIdx][subgroupIdx][ptIdx][k]는 레이어 그룹 인덱스(layerGroupIdx or layer_group_id)와 서브그룹 인덱스(subgroupIdx or subgroup_id)에 의해 식별되는 서브그룹의 출력 노드들을 나타낸다. The arrays SubgroupNodePos[layerGroupIdx][subgroupIdx][ptIdx][k] represent the output nodes of the subgroup identified by the layer group index (layerGroupIdx or layer_group_id) and the subgroup index (subgroupIdx or subgroup_id).
어레이들 SubgroupNodeCnt[layerGroupIdx][subgroupIdx]는 레이어 그룹 인덱스(layerGroupIdx or layer_group_id)와 서브그룹 인덱스(subgroupIdx or subgroup_id)에 의해 식별되는 서브그룹의 출력 노드들의 수를 나타낸다. The arrays SubgroupNodeCnt[layerGroupIdx][subgroupIdx] represent the number of output nodes in the subgroup identified by the layer group index (layerGroupIdx or layer_group_id) and the subgroup index (subgroupIdx or subgroup_id).
다음은 파셜 밀도 디코딩에서 FGS의 선택(selection)에 대한 설명이다. The following describes the selection of FGS in partial density decoding.
만약 SkippedLayerGroup이 0보다 크면, 인덱스가 0부터 OutLayerGroup 범위 내에 있는 레이어 그룹들이 디코드되기 위해 선택된다. 파셜 디코딩의 레이어 그룹 인덱스의 최대값인 OutLayerGroup은 하기의 수학식 7과 같이 layer-group들의 전체 개수(num_layer_groups_minus1)에서 SkippedLayerGroup을 뺀 값으로 지정된다.If SkippedLayerGroup is greater than 0, layer groups whose indices are in the range from 0 to OutLayerGroup are selected for decoding. OutLayerGroup, which is the maximum value of the layer group index for partial decoding, is specified as the value obtained by subtracting SkippedLayerGroup from the total number of layer groups (num_layer_groups_minus1), as shown in the following mathematical expression 7.
[수학식 7][Equation 7]
OutLayerGroup := num_layer_groups_minus1 - SkippedLayerGroupOutLayerGroup := num_layer_groups_minus1 - SkippedLayerGroup
아래 코드는 데이터 유닛 또는 종속 데이터 유닛의 디코딩 여부 또는 스킵 여부를 나타낸다. The code below indicates whether to decode or skip a data unit or dependent data unit.
예를 들어, layer_group_id == 0이면, 지오메트리 데이터 유닛(GDU) 또는 어트리뷰트 데이터 유닛(ADU)을 디코딩한다. layer_group_id ≤ OutLayerGroup이면 종속 지오메트리 데이터 유닛(DGDU) 또는 종속 어트리뷰트 데이터 유닛(DADU)을 디코딩한다. 이 외에는 종속 지오메트리 데이터 유닛(DGDU) 또는 종속 어트리뷰트 데이터 유닛(DADU)을 스킵한다. For example, if layer_group_id == 0, decode the geometry data unit (GDU) or attribute data unit (ADU). If layer_group_id ≤ OutLayerGroup, decode the dependent geometry data unit (DGDU) or dependent attribute data unit (DADU). Otherwise, skip the dependent geometry data unit (DGDU) or dependent attribute data unit (DADU).
if (layer_group_id == 0)if (layer_group_id == 0)
decode GDU or ADUdecode GDU or ADU
else if (layer_group_id ≤ OutLayerGroup)else if (layer_group_id ≤ OutLayerGroup)
decode DGDU or DADUdecode DGDU or DADU
elseelse
skip DGDU or DADUskip DGDU or DADU
따라서, 파셜 디코딩의 지오메트리 오큐판시 트리의 깊이(PartialDepth)는 하기의 코드와 같이 인덱스가 0부터 OutLayerGroup 범위 내에 있는 각 레이어 그룹의 레이어들(또는 레벨이라 함)의 수(num_layers_minus1[i] + 1)의 합으로 추론된다.Therefore, the depth of the geometry occupancy tree of partial decoding (PartialDepth) is inferred as the sum of the number of layers (or levels) of each layer group whose index ranges from 0 to OutLayerGroup (num_layers_minus1[i] + 1), as in the code below.
PartialDepth = 0PartialDepth = 0
for (i = 0; i < NumOutLayerGroup; i++)for (i = 0; i < NumOutLayerGroup; i++)
PartialDepth += num_layers_minus1[i] + 1 PartialDepth += num_layers_minus1[i] + 1
다음은 지오메트리 위치 보정에 대한 설명이다. The following describes geometry position correction.
모든 레이어 그룹들을 디코딩할 때, 지오메트리 오큐판시 트리의 최대 깊이(TotalDepth)는 하기의 코드와 같이 인덱스가 0부터 num_layer_groups_minus1 범위 내에 있는 각 레이어 그룹의 레이어들(또는 레베들이라 함)의 수(num_layers_minus1[i] + 1)의 합으로 추론된다.When decoding all layer groups, the maximum depth (TotalDepth) of the geometry occupancy tree is inferred as the sum of the number of layers (or levels) in each layer group whose indices are in the range of 0 to num_layer_groups_minus1 (num_layers_minus1[i] + 1), as in the code below.
TotalDepth = 0TotalDepth = 0
for (i = 0; i < num_layer_groups_minus1; i++)for (i = 0; i < num_layer_groups_minus1; i++)
TotalDepth += num_layers_minus1[i] + 1 TotalDepth += num_layers_minus1[i] + 1
그리고, MinNodeSizeLog2는 하기와 같이 TotalDepth와 PartialDepth의 차이로 추론된다.And, MinNodeSizeLog2 is inferred from the difference between TotalDepth and PartialDepth as follows.
MinNodeSizeLog2 = TotalDepth - PartialDepthMinNodeSizeLog2 = TotalDepth - PartialDepth
만약 MinNodeSizeLog2가 1보다 크면, 포인트들은 하기의 코드와 같이 해당 블록 내에서 중앙에 배치된다. 즉, 아래 코드는 MinNodeSizeLog2 값이 1보다 큰 경우, 해당 블록 내에서 각 포인트를 중앙에 배치하도록 좌표 값을 조정하는 역할을 한다. 아래 코드에서, 첫번째 for 루프는 해당 서브그룹에 속한 모든 포인트(또는 노드)만큼 반복하고, 두번째 for 루프는 각 포인트의 각 축(x,y,z)에 대해 반복 수행한다. If MinNodeSizeLog2 is greater than 1, the points are centered within the block, as shown in the code below. That is, the code below adjusts the coordinate values to center each point within the block when the MinNodeSizeLog2 value is greater than 1. In the code below, the first for loop iterates over all points (or nodes) belonging to the subgroup, and the second for loop iterates over each axis (x, y, z) of each point.
for (ptIdx = 0; ptIdx < SubgroupNodeCnt[layerGroupIdx][subgroupIdx]; ptIdx++)for (ptIdx = 0; ptIdx < SubgroupNodeCnt[layerGroupIdx][subgroupIdx]; ptIdx++)
for (k = 0; k < 3; k++)for (k = 0; k < 3; k++)
SubgroupNode[layerGroupIdx][subgroupIdx][ptIdx][k] |= (MinNodeSizeLog2 > 1) << (MinNodeSizeLog2 - 1) SubgroupNode[layerGroupIdx][subgroupIdx][ptIdx][k] |= (MinNodeSizeLog2 > 1) << (MinNodeSizeLog2 - 1)
다음은 파셜 영역 디코딩에 대한 설명이다. The following describes partial region decoding.
디코더는 슬라이스의 파셜 영역의 포인트 클라우드를 생성한다. 이때, 낮은 밀도의 슬라이스 포인트 클라우는 다음 변수들에 의해 지정된다.The decoder generates a point cloud of a partial region of a slice. The low-density slice point cloud is specified by the following variables.
어레이들 RoiBoundingBoxMin 및 RoiBoundingBoxMax는 관심 영역(Region of Interest, ROI)을 바운딩박스의 최소 및 최대 위치로 지정하는 애플리케이션 특정(appicatin-specific) 어레이들이다. The arrays RoiBoundingBoxMin and RoiBoundingBoxMax are application-specific arrays that specify the minimum and maximum positions of the bounding box for the Region of Interest (ROI).
어레이들 SubgroupNodePos[layerGroupIdx][subgroupIdx]은 레이어 그룹 인덱스(layerGroupIdx or layer_group_id)와 서브그룹 인덱스(subgroupIdx or subgroup_id)에 의해 식별되는 서브그룹의 출력 노드들을 나타낸다.The arrays SubgroupNodePos[layerGroupIdx][subgroupIdx] represent the output nodes of the subgroup identified by the layer group index (layerGroupIdx or layer_group_id) and the subgroup index (subgroupIdx or subgroup_id).
어레이들 SubgroupNodeCnt[layerGroupIdx][subgroupIdx]은 레이어 그룹 인덱스(layerGroupIdx or layer_group_id)와 서브그룹 인덱스(subgroupIdx or subgroup_id)에 의해 식별되는 서브그룹의출력 노드들의 수를 나타낸다.The arrays SubgroupNodeCnt[layerGroupIdx][subgroupIdx] represent the number of output nodes in the subgroup identified by the layer group index (layerGroupIdx or layer_group_id) and the subgroup index (subgroupIdx or subgroup_id).
다음은 파셜 영역 디코딩에서 FGS의 선택에 대한 설명이다. The following explains the choice of FGS in partial region decoding.
만일, RoiBoundingBoxMin과 RoiBoundingBoxMax가 존재하면, 서브그룹 바운딩박스가 ROI의 바운딩박스와 오버랩되는 서브그룹들이 디코딩되기 위해 선택된다. If RoiBoundingBoxMin and RoiBoundingBoxMax exist, subgroups whose subgroup bounding boxes overlap with the bounding boxes of the ROI are selected for decoding.
아래 코드는 데이터 유닛 또는 종속 데이터 유닛의 디코딩 여부 또는 스킵 여부를 나타낸다. The code below indicates whether to decode or skip a data unit or dependent data unit.
예를 들어, layer_group_id == 0이면, 지오메트리 데이터 유닛(GDU) 또는 어트리뷰트 데이터 유닛(ADU)을 디코딩한다. RoiBoundingBoxMin < SubgroupBoundingBoxMax[layerGroupIdx][subgroupIdx] && RoiBoundingBoxMax < SubgroupBoundingBoxMin[layerGroupIdx][subgroupIdx]이면 종속 지오메트리 데이터 유닛(DGDU) 또는 종속 어트리뷰트 데이터 유닛(DADU)을 디코딩한다. 이 외에는 종속 지오메트리 데이터 유닛(DGDU) 또는 종속 어트리뷰트 데이터 유닛(DADU)을 스킵한다. For example, if layer_group_id == 0, decode a geometry data unit (GDU) or attribute data unit (ADU). If RoiBoundingBoxMin < SubgroupBoundingBoxMax[layerGroupIdx][subgroupIdx] && RoiBoundingBoxMax < SubgroupBoundingBoxMin[layerGroupIdx][subgroupIdx], decode a dependent geometry data unit (DGDU) or dependent attribute data unit (DADU). Otherwise, skip the dependent geometry data unit (DGDU) or dependent attribute data unit (DADU).
if (layerGroupIdx == 0)if (layerGroupIdx == 0)
decode GDU or ADUdecode GDU or ADU
else if (RoiBoundingBoxMin < SubgroupBoundingBoxMax[layerGroupIdx][subgroupIdx] && else if (RoiBoundingBoxMin < SubgroupBoundingBoxMax[layerGroupIdx][subgroupIdx] &&
RoiBoundingBoxMax < SubgroupBoundingBoxMin[layerGroupIdx][subgroupIdx]) RoiBoundingBoxMax < SubgroupBoundingBoxMin[layerGroupIdx][subgroupIdx])
decode DGDU or DADUdecode DGDU or DADU
elseelse
skip DGDU or DADUskip DGDU or DADU
본 개시는 전술한 바와 같이 서브그룹/슬라이스에 기반한 영역 적응적 planar 모드 사용 방법을 제안한다. 즉, 본 개시는 서브그룹 단위로 포인트들의 개수(numPoints)를 전달하여 송/수신기에서 planarEligibleKOctreeDepth를 계산하는 방법, 포인트들의 개수(numPoints)를 예측하여 송수신기에서 planarEligibleKOctreeDepth를 계산하는 방법, planarEligibleKOctreeDepth 플래그를 송신기에서 계산한 후 수신기에 전달하는 방법, 서브그룹 단위의 출력 노드/포인트들의 수를 기반으로 planarEligibleKOctreeDepth를 계산하는 방법 등을 위에서 상세히 설명하였다. 또한, 본 개시는 파셜 디코딩 과정과 FGS 디코딩 전/후처리 과정에 대해 위에서 상세히 설명하였다.The present disclosure proposes a method of using a region-adaptive planar mode based on subgroups/slices as described above. That is, the present disclosure has described in detail above a method of calculating planarEligibleKOctreeDepth at a transmitter/receiver by transmitting the number of points (numPoints) in units of subgroups, a method of calculating planarEligibleKOctreeDepth at a transmitter/receiver by predicting the number of points (numPoints), a method of calculating a planarEligibleKOctreeDepth flag at a transmitter and then transmitting it to a receiver, and a method of calculating planarEligibleKOctreeDepth based on the number of output nodes/points in units of subgroups. In addition, the present disclosure has described in detail above a partial decoding process and a pre-/post-processing process of FGS decoding.
따라서, 수신 방법/장치는 다음과 같은 효과가 있다.Therefore, the receiving method/device has the following effects.
본 개시는 포인트 클라우드 데이터에 대해 일정 기준에 따라 압축 데이터를 나누어 전송하는 방법에 대해서 기술하였다. 특히, 본 개시에 대한 적용 중 하나로써 레이어드 코딩(layered coding 또는 계층적 코딩)을 사용하는 경우 레이어에 따라서 압축 데이터를 나누어 보낼 수 있는데, 이 경우 송신단의 저장 및 전송 효율이 증가한다. The present disclosure describes a method for dividing and transmitting compressed data based on certain criteria for point cloud data. In particular, as one application of the present disclosure, layered coding can be used to divide and transmit compressed data according to layers, thereby increasing the storage and transmission efficiency of the transmitter.
도 38은 포인트 클라우드 데이터의 지오메트리 및 어트리뷰트를 압축하여 서비스하는 일 예시를 나타낸 도면이다. 즉, 포인트 클라우드 압축(PCC) 기반 서비스에서 수신기 성능 혹은 전송 환경에 따라 압축율 혹은 데이터 수를 조절하여 보낼 수 있는데, 도 38과 같이 하나의 슬라이스 단위로 포인트 클라우드 데이터가 묶여 있는 경우, 수신기 성능 혹은 전송 환경이 변하는 경우 1) 각 환경에 맞는 비트스트림을 미리 변환하여 별도로 저장하고 전송할 때 선택하던지 2) 혹은 전송에 앞서서 변환하는 과정(transcoding)을 필요로 한다. 이때, 지원해야하는 수신기 환경이 증가하던지 전송 환경이 수시로 바뀌는 경우 저장 공간의 문제 혹은 변환으로 인한 딜레이가 문제될 수 있다.Fig. 38 is a diagram showing an example of compressing and providing a service for the geometry and attributes of point cloud data. That is, in a point cloud compression (PCC)-based service, the compression ratio or the number of data can be adjusted and transmitted depending on the receiver performance or transmission environment. However, in the case where point cloud data is bundled into a single slice unit as in Fig. 38, if the receiver performance or transmission environment changes, 1) a bitstream suitable for each environment is converted in advance and stored separately and selected when transmitting, or 2) a process of converting (transcoding) is required before transmission. In this case, if the number of receiver environments to be supported increases or the transmission environment changes frequently, storage space issues or delays due to conversion may become a problem.
도 39는 실시예들에 따른 포인트 클라우드 데이터의 지오메트리 및 어트리뷰트를 압축하여 서비스하는 다른 예시를 나타낸 도면이다.FIG. 39 is a diagram showing another example of compressing and serving the geometry and attributes of point cloud data according to embodiments.
본 개시에서 제안하는 바와 같이 레이어에 따라서 압축 데이터를 나누어 전달하는 경우, 별도의 변환 과정 없이 미리 압축된 데이터에 대해 비트스트림 단계에서 비트스트림 셀렉터를 통해 필요한 부분만 선택적으로 전달할 수 있다는 장점이 있다. 이는 저장 공간 측면에서도 하나의 스트림 당 하나의 저장 공간만이 필요하기 때문에 효율적이며, 전송 전에 비트스트림 셀렉터에서 필요한 레이어만을 선택적으로 전송하기 때문에 밴드폭(bandwidth) 측면에서도 효율적인 전송이 가능하다.As proposed in this disclosure, when compressed data is divided and transmitted according to layers, there is an advantage in that only the necessary portions of pre-compressed data can be selectively transmitted through a bitstream selector at the bitstream stage without a separate conversion process. This is efficient in terms of storage space, as only one storage space is required per stream, and efficient transmission is also possible in terms of bandwidth, as only the necessary layers are selectively transmitted through the bitstream selector before transmission.
본 개시의 특징에 따른 효과를 수신단 입장에서 기재해보면, 본 개시에 대한 적용 중 하나로써 레이어드 코딩(layered coding 또는 계층적 코딩)을 사용하는 경우 레이어에 따라서 압축 데이터를 나누어 보낼 수 있는데, 이 경우 수신단의 효율이 증가한다. 특히 스케일러블 어트리뷰트 코딩(scalable attribute coding)을 적용하는 경우 코드된 지오메트리 데이터 전체를 수신하고 디코딩함으로서 딜레이가 발생하고 수신기 연산에 부담이 되는 단점이 있는데, 본 개시의 제안을 통해 스케일러블 어트리뷰트 코딩에서 사용하는 트리 레벨과 일치하는 지오메트리 레이어만을 디코딩함으로써 지연 요소가 줄어들고, 디코딩에 필요로하는 계산 파워(computing power)를 절약함으로써 디코더의 효율성이 높아질 수 있다. If we describe the effects according to the features of the present disclosure from the perspective of a receiver, in one application of the present disclosure, when layered coding is used, compressed data can be divided and transmitted according to layers, in which case the efficiency of the receiver increases. In particular, when scalable attribute coding is applied, there is a disadvantage in that a delay occurs and a burden is placed on the receiver's computation by receiving and decoding the entire coded geometry data. However, through the proposal of the present disclosure, by decoding only the geometry layer that matches the tree level used in scalable attribute coding, the delay element is reduced, and the efficiency of the decoder can be increased by saving the computing power required for decoding.
도 40은 레이어로 이루어진 포인트 클라우드 데이타를 전송하는 경우에 대한 송수신 단의 동작을 나타낸 도면이다. 이때 수신기의 성능과 관계없이 전체 포인트 클라우드 데이타를 복원할 수 있는 정보를 전달하는 경우, 수신기에서는 디코딩을 통해 포인트 클라우드 데이터를 복원한 후에 필요로 하는 레이어에 해당하는 포인트 클라우드 데이터만을선택하는 과정 (예, 데이터 선택 또는 서브 샘플링)이 필요로 하다. 이 경우 전달된 비트스트림을 이미 디코딩하기 때문에 저지연을 목표로 하는 수신기에서 딜레이를 발생시키거나 혹은 수신기 성능에 따라서 디코딩을 하지 못할 수도 있다.Figure 40 is a diagram illustrating the operation of the transmitting and receiving ends when transmitting point cloud data composed of layers. In this case, if information capable of restoring the entire point cloud data is transmitted regardless of the performance of the receiver, the receiver requires a process (e.g., data selection or subsampling) to restore the point cloud data through decoding and then select only the point cloud data corresponding to the required layer. In this case, since the transmitted bitstream has already been decoded, a receiver targeting low delay may experience delay or may not be able to decode depending on the receiver's performance.
하지만, 제안하는 바와 같이 레이어에 따라서 필요한 레이어의 압축 데이터만을 수신하는 경우, 수신기에서는 특정 레이어의 선택적 디코딩이 가능해짐으로써, 디코더 효율이 높아지게 되며, 다양한 성능의 디코더를 지원할 수 있다는 장점이 있다.However, as proposed, if only the compressed data of the required layer is received according to the layer, the receiver can selectively decode a specific layer, thereby increasing decoder efficiency and supporting decoders of various performances.
도 41은 실시예들에 따른 포인트 클라우드 데이터 송신 방법의 흐름도를 나타낸다.Figure 41 shows a flowchart of a point cloud data transmission method according to embodiments.
실시예들에 따른 포인트 클라우드 데이터 송신 방법은 포인트 클라우드 데이터를 획득하는 단계(71001), 포인트 클라우드 데이터를 인코딩하는 단계(71002), 인코드된 포인트 클라우드 데이터와 시그널링 정보를 전송하는 단계(71003)를 포함할 수 있다. 이때, 상기 인코드된 포인트 클라우드 데이터와 시그널링 정보를 포함하는 비트스트림이 파일로 인캡슐레이션되어 전송될 수도 있다.A method for transmitting point cloud data according to embodiments may include a step of acquiring point cloud data (71001), a step of encoding point cloud data (71002), and a step of transmitting encoded point cloud data and signaling information (71003). At this time, a bitstream including the encoded point cloud data and signaling information may be encapsulated into a file and transmitted.
포인트 클라우드 데이터를 획득하는 단계(71001)는 도 1의 포인트 클라우드 비디오 획득부(10001)의 동작의 일부 또는 전부를 수행할 수도 있고 또는 도 8의 데이터 입력부(8000)의 동작의 일부 또는 전부를 수행할 수도 있다. The step (71001) of acquiring point cloud data may perform part or all of the operations of the point cloud video acquisition unit (10001) of FIG. 1 or may perform part or all of the operations of the data input unit (8000) of FIG. 8.
포인트 클라우드 데이터를 인코딩하는 단계(71002)는 지오메트리 정보와 어트리뷰트 정보의 인코딩을 위해 도 1의 포인트 클라우드 비디오 인코더(10002), 도 2의 인코딩(20001), 도 3의 포인트 클라우드 비디오 인코더, 도 8의 포인트 클라우드 비디오 인코더, 도 24의 인코더, 도 25의 어트리뷰트 인코딩, 도 27의 지오메트리 인코더와 어트리뷰트 인코더의 동작의 일부 또는 전체를 수행할 수 있다. The step of encoding point cloud data (71002) may perform part or all of the operations of the point cloud video encoder (10002) of FIG. 1, the encoding (20001) of FIG. 2, the point cloud video encoder of FIG. 3, the point cloud video encoder of FIG. 8, the encoder of FIG. 24, the attribute encoding of FIG. 25, and the geometry encoder and attribute encoder of FIG. 27 for encoding geometry information and attribute information.
실시예들에 따른 포인트 클라우드 데이터를 인코딩하는 단계(71002)는 입력되는 포인트 클라우드 데이터의 지오메트리 정보를 압축하는 단계와 어트리뷰트 정보를 압축하는 단계를 포함할 수 있다.The step (71002) of encoding point cloud data according to embodiments may include a step of compressing geometry information of input point cloud data and a step of compressing attribute information.
실시예들에 따르면, 지오메트리 정보를 압축하는 단계는 레이어 그룹 및/또는 서브 그룹 단위로 지오메트리 정보를 압축할 수 있다. 또한, 지오메트리를 위한 슬라이스는 하나 이상의 FGS들로 분할되어 압축될 수 있다. 이때, 서브그룹은 FGS에 대응될 수 있다. 이에 더하여, 오큐판시 트리의 특정 깊이(또는 레이어 또는 레벨이라 함)에서의 포인트들의 밀도에 따라 해당 깊이에서 planar 모드의 사용 여부를 결정할 수 있다. 지오메트리 정보의 압축 및 FGS 분할에 대해서는 위에서 상세히 설명하였으므로, 여기서는 중복 설명을 피하기 위해 생략하기로 한다.According to embodiments, the step of compressing geometry information may compress geometry information by layer group and/or subgroup. In addition, a slice for geometry may be compressed by being divided into one or more FGSs. In this case, the subgroups may correspond to FGSs. In addition, whether to use planar mode at a specific depth (or layer or level) of the occupancy tree may be determined based on the density of points at that depth. Since the compression of geometry information and FGS division have been described in detail above, a detailed description thereof will be omitted here to avoid redundant explanation.
상기 압축된 지오메트리 정보는 엔트로피 인코딩된 후 지오메트리 비트스트림 형태로 출력된다.The above compressed geometry information is entropy encoded and then output in the form of a geometry bitstream.
실시예들에 따르면, 어트리뷰트 정보를 압축하는 단계는 지오메트리 인코딩이 수행되지 않은 포지션들 및/또는 재구성된 지오메트리 정보를 기반으로 어트리뷰트 정보를 압축한다. 일 실시예로, 상기 어트리뷰트 정보는 RAHT 코딩, LOD 기반의 예측 변환 코딩 및 리프팅 변환 코딩 중 어느 하나 또는 하나 이상을 조합하여 코딩될 수 있다. 또한, 어트리뷰트를 위한 슬라이스는 하나 이상의 FGS들로 분할되어 압축될 수 있다. 이때, 서브그룹은 FGS에 대응될 수 있다.According to embodiments, the step of compressing attribute information compresses the attribute information based on positions for which geometry encoding has not been performed and/or reconstructed geometry information. In one embodiment, the attribute information may be coded using one or a combination of one or more of RAHT coding, LOD-based predictive transform coding, and lifting transform coding. In addition, a slice for an attribute may be compressed by being divided into one or more FGSs. In this case, a subgroup may correspond to an FGS.
상기 압축된 어트리뷰트 정보는 엔트로피 인코딩된 후 어트리뷰트 비트스트림 형태로 출력된다.The above compressed attribute information is entropy encoded and then output in the form of an attribute bitstream.
본 명세서에서 시그널링 정보는 레이어 그룹 및/또는 서브 그룹 단위의 지오메트리 정보와 어트리뷰트 정보의 인코딩 및 수신측에서의 디코딩을 위한 레이어 그룹 기반 슬라이싱 관련 정보를 포함할 수 있다. In this specification, signaling information may include layer group-based slicing-related information for encoding of geometry information and attribute information at the layer group and/or subgroup level and decoding at the receiving end.
상기 레이어 그룹 기반 슬라이싱 관련 정보는 SPS, APS, LGSI, 지오메트리 데이터 유닛 헤더(또는 종속 지오메트리 데이터 유닛 헤더), 및/또는 어트리뷰트 데이터 유닛 헤더(또는 종속 어트리뷰트 데이터 유닛 헤더) 중 적어도 하나에 포함되어 수신측으로 전송될 수 있다. 상기 레이어 그룹 기반 슬라이싱 관련 정보에 포함되는 상세 정보는 도 29 내지 도 33, 도 34 내지 도 37을 참조하기로 하고 여기서는 생략한다. The above layer group-based slicing related information may be transmitted to the receiver by being included in at least one of SPS, APS, LGSI, geometry data unit header (or dependent geometry data unit header), and/or attribute data unit header (or dependent attribute data unit header). Detailed information included in the layer group-based slicing related information is omitted here, with reference to FIGS. 29 to 33 and FIGS. 34 to 37.
도 42는 실시예들에 따른 포인트 클라우드 데이터 수신 방법의 흐름도를 나타낸다.Figure 42 shows a flowchart of a method for receiving point cloud data according to embodiments.
실시예들에 따른 포인트 클라우드 데이터 수신 방법은 인코드된 포인트 클라우드 데이터와 시그널링 정보를 수신하는 단계(81001), 시그널링 정보를 기반으로 포인트 클라우드 데이터를 디코딩하는 단계(81002), 및 디코드된 포인트 클라우드 데이터를 렌더링하는 단계(81003)를 포함할 수 있다.A method for receiving point cloud data according to embodiments may include a step (81001) of receiving encoded point cloud data and signaling information, a step (81002) of decoding point cloud data based on the signaling information, and a step (81003) of rendering the decoded point cloud data.
실시예들에 따른 포인트 클라우드 데이터와 시그널링 정보를 수신하는 단계(81001)는 도 1의 리시버(10005), 도 2의 진송(20002) 또는 디코딩(20003), 도 9의 수신부(9000) 또는 수신 처리부(9001)에서 수행될 수 있다.The step (81001) of receiving point cloud data and signaling information according to the embodiments may be performed in the receiver (10005) of FIG. 1, the transmitter (20002) or decoding (20003) of FIG. 2, and the receiving unit (9000) or receiving processing unit (9001) of FIG. 9.
실시예들에 따른 포인트 클라우드 데이터를 디코딩하는 단계(81002)는 지오메트리 정보와 어트리뷰트 정보의 디코딩을 위해 도 1의 포인트 클라우드 비디오 디코더(10006), 도 2의 디코딩(20003), 도 8의 포인트 클라우드 비디오 디코더, 도 9의 포인트 클라우드 비디오 디코더, 도 24의 디코더, 도 26의 디코딩, 도 28의 지오메트리 디코더와 어트리뷰트 디코더의 동작의 일부 또는 전체를 수행할 수 있다.The step (81002) of decoding point cloud data according to embodiments may perform part or all of the operations of the point cloud video decoder (10006) of FIG. 1, the decoding (20003) of FIG. 2, the point cloud video decoder of FIG. 8, the point cloud video decoder of FIG. 9, the decoder of FIG. 24, the decoding of FIG. 26, and the geometry decoder and attribute decoder of FIG. 28 for decoding geometry information and attribute information.
실시예들에 따른 포인트 클라우드 데이터를 디코딩하는 단계(81002)는 지오메트리 정보를 디코딩하는 단계와 어트리뷰트 정보를 디코딩하는 단계를 포함한다.The step (81002) of decoding point cloud data according to the embodiments includes a step of decoding geometry information and a step of decoding attribute information.
상기 지오메트리 정보를 디코딩하는 단계는 시그널링 정보에 포함된 레이어 그룹 기반 슬라이싱 관련 정보를 기반으로 레이어 그룹 및/또는 서브그룹 단위로 지오메트리 정보를 디코딩(즉, 복원)할 수 있다. 또한, 송신측에서 지오메트리를 위한 슬라이스가 하나 이상의 FGS들로 분할되어 인코딩되었을 때, 상기 지오메트리 정보를 디코딩하는 단계는 FGS 단위로 지오메트리를 디코딩(즉, 복원)할 수 있다. 이때, 서브그룹은 FGS에 대응될 수 있다. 이에 더하여, 오큐판시 트리의 특정 깊이(또는 레이어 또는 레벨이라 함)에서의 포인트들의 밀도에 따라 해당 깊이에서 planar 모드의 사용 여부를 결정할 수 있다. 지오메트리 정보의 디코딩에 대한 상세 설명은 위에서 충분히 하였으므로, 여기서는 중복 설명을 피하기 위해 생략하기로 한다.The step of decoding the above geometry information can decode (i.e., restore) the geometry information in units of layer groups and/or subgroups based on layer group-based slicing-related information included in the signaling information. In addition, when a slice for geometry is encoded by being divided into one or more FGSs at the transmitting side, the step of decoding the geometry information can decode (i.e., restore) the geometry in units of FGSs. At this time, a subgroup can correspond to an FGS. In addition, whether to use the planar mode at a specific depth (or layer or level) of the occupancy tree can be determined based on the density of points at the corresponding depth. Since a detailed description of the decoding of the geometry information has been sufficiently provided above, it will be omitted here to avoid redundant description.
상기 어트리뷰트 정보를 디코딩하는 단계는 상기 복원된 지오메트리 정보와 시그널링 정보에 포함된 레이어 그룹 기반 슬라이싱 관련 정보를 기반으로 레이어 그룹 및/또는 서브그룹 단위로 어트리뷰트 정보를 디코딩(즉, 압축 해제)한다. 일 실시예로, 상기 어트리뷰트 정보는 RAHT 코딩, LOD 기반의 예측 변환 코딩 및 리프팅 변환 코딩 중 어느 하나 또는 하나 이상을 조합하여 디코딩될 수 있다. 또한, 송신측에서 어트리뷰트를 위한 슬라이스가 하나 이상의 FGS들로 분할되어 인코딩되었을 때, 상기 어트리뷰트 정보를 디코딩하는 단계는 FGS 단위로 어트리뷰트를 디코딩(즉, 복원)할 수 있다. 이때, 서브그룹은 FGS에 대응될 수 있다. 어트리뷰트 정보의 디코딩에 대한 상세 설명은 위에서 충분히 하였으므로, 여기서는 중복 설명을 피하기 위해 생략하기로 한다.The step of decoding the attribute information decodes (i.e., decompresses) the attribute information in units of layer groups and/or subgroups based on the layer group-based slicing-related information included in the restored geometry information and signaling information. In one embodiment, the attribute information may be decoded by using one or more of RAHT coding, LOD-based predictive transform coding, and lifting transform coding, or a combination of one or more. In addition, when a slice for an attribute is encoded by being divided into one or more FGSs at the transmitting side, the step of decoding the attribute information may decode (i.e., restore) the attribute in units of FGSs. In this case, a subgroup may correspond to an FGS. Since a detailed description of the decoding of the attribute information has been sufficiently described above, a detailed description will be omitted here to avoid redundant description.
실시예들에 따른 렌더링하는 단계(81003)는 복원된(또는 재구성된) 지오메트리 정보와 어트리뷰트 정보를 기반으로 포인트 클라우드 데이터를 복원하고 다양한 렌더링 방식에 따라 렌더링할 수 있다. 예를 들어, 포인트 클라우드 콘텐트의 포인트들은 일정 두께를 갖는 정점, 해당 정점 위치를 중앙으로 하는 특정 최소 크기를 갖는 정육면체, 또는 정점 위치를 중앙으로 하는 원 등으로 렌더링 될 수도 있다. 렌더링된 포인트 클라우드 콘텐트의 전부 또는 일부 영역은 디스플레이 (예를 들면 VR/AR 디스플레이, 일반 디스플레이 등)을 통해 사용자에게 제공된다. 실시예들에 따른 포인트 클라우드 데이터를 렌더링하는 단계(81003)는 도 1의 렌더러(10007) 또는 도 2의 렌더링(20004) 또는 도 9의 렌더러(9011)에서 수행될 수 있다.The rendering step (81003) according to the embodiments may restore point cloud data based on restored (or reconstructed) geometry information and attribute information and render it according to various rendering methods. For example, points of the point cloud content may be rendered as vertices having a certain thickness, cubes having a certain minimum size centered around the vertex position, or circles centered around the vertex position. All or part of the rendered point cloud content is provided to the user through a display (e.g., VR/AR display, general display, etc.). The rendering step (81003) of the point cloud data according to the embodiments may be performed in the renderer (10007) of FIG. 1, the renderer (20004) of FIG. 2, or the renderer (9011) of FIG. 9.
전술한 각각의 파트, 모듈 또는 유닛은 메모리(또는 저장 유닛)에 저장된 연속된 수행과정들을 실행하는 소프트웨어, 프로세서, 하드웨어 파트일 수 있다. 전술한 실시예에 기술된 각 단계들은 프로세서, 소프트웨어, 하드웨어 파트들에 의해 수행될 수 있다. 전술한 실시예에 기술된 각 모듈/블락/유닛들은 프로세서, 소프트웨어, 하드웨어로서 동작할 수 있다. 또한, 실시예들이 제시하는 방법들은 코드로서 실행될 수 있다. 이 코드는 프로세서가 읽을 수 있는 저장매체에 쓰여질 수 있고, 따라서 장치(apparatus)가 제공하는 프로세서에 의해 읽혀질 수 있다. Each of the parts, modules, or units described above may be software, processors, or hardware parts that execute sequential execution processes stored in memory (or storage units). Each of the steps described in the embodiments described above may be performed by processors, software, or hardware parts. Each of the modules/blocks/units described in the embodiments described above may operate as a processor, software, or hardware. In addition, the methods presented in the embodiments may be implemented as code. This code may be written on a processor-readable storage medium and thus may be read by a processor provided by an apparatus.
또한 명세서 전체에서, 어떤 부분이 어떤 구성 요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다. 그리고 명세서에 기재된 “…부”등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.Furthermore, throughout the specification, when a part is said to "include" a component, this does not exclude other components, unless otherwise specifically stated, but rather implies the inclusion of other components. Furthermore, terms such as "part" described in the specification mean a unit that processes at least one function or operation, which may be implemented using hardware, software, or a combination of hardware and software.
본 명세서는 설명의 편의를 위하여 각 도면을 나누어 설명하였으나, 각 도면에 서술되어 있는 실시 예들을 병합하여 새로운 실시 예를 구현하도록 설계하는 것도 가능하다. 그리고, 통상의 기술자의 필요에 따라, 이전에 설명된 실시 예들을 실행하기 위한 프로그램이 기록되어 있는 컴퓨터에서 판독 가능한 기록 매체를 설계하는 것도 실시예들의 권리범위에 속한다. For convenience of explanation, this specification has been described separately in each drawing. However, it is also possible to design new embodiments by combining the embodiments described in each drawing. Furthermore, designing a computer-readable recording medium containing a program for executing the previously described embodiments, as required by those skilled in the art, is also within the scope of the embodiments.
실시예들에 따른 장치 및 방법은 상술한 바와 같이 설명된 실시 예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 실시 예들은 다양한 변형이 이루어질 수 있도록 각 실시 예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다. The devices and methods according to the embodiments are not limited to the configurations and methods of the embodiments described above, but the embodiments may be configured by selectively combining all or part of each embodiment so that various modifications can be made.
실시예들의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 실시예들은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 실시예들의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 실시예들의 기술적 사상이나 전망으로부터 개별적으로 이해돼서는 안 될 것이다.Although preferred embodiments of the embodiments have been illustrated and described, the embodiments are not limited to the specific embodiments described above, and various modifications may be made by those skilled in the art to which the invention pertains without departing from the spirit or scope of the embodiments claimed in the claims, and such modifications should not be understood individually from the technical idea or prospect of the embodiments.
실시예들의 장치의 다양한 구성요소들은 하드웨어, 소프트웨어, 펌웨어 또는 그것들의 조합에 의해 수행될 수 있다. 실시예들의 다양한 구성요소들은 하나의 칩, 예를 들면 하나의 하드웨어 서킷으로 구현될 수 있다. 실시예들에 따른 구성요소들은 각각 별도의 칩들로 구현될 수 있다. 실시예들에 따른 장치의 구성요소들 중 적어도 하나 이상은 하나 또는 그 이상의 프로그램들을 실행 할 수 있는 하나 또는 그 이상의 프로세서들로 구성될 수 있으며, 하나 또는 그 이상의 프로그램들은 실시예들에 따른 동작/방법들 중 어느 하나 또는 그 이상의 동작/방법들을 수행시키거나, 수행시키기 위한 인스트럭션들을 포함할 수 있다. 실시예들에 따른 장치의 방법/동작들을 수행하기 위한 실행 가능한 인스트럭션들은 하나 또는 그 이상의 프로세서들에 의해 실행되기 위해 구성된 일시적이지 않은 CRM 또는 다른 컴퓨터 프로그램 제품들에 저장될 수 있거나, 하나 또는 그 이상의 프로세서들에 의해 실행되기 위해 구성된 일시적인 CRM 또는 다른 컴퓨터 프로그램 제품들에 저장될 수 있다. 또한 실시예들에 따른 메모리는 휘발성 메모리(예를 들면 RAM 등)뿐 만 아니라 비휘발성 메모리, 플래쉬 메모리, PROM등을 전부 포함하는 개념으로 사용될 수 있다. 또한, 인터넷을 통한 전송 등과 같은 반송파의 형태로 구현되는 것도 포함될 수 있다. 또한, 프로세서가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.The various components of the devices of the embodiments may be implemented by hardware, software, firmware, or a combination thereof. The various components of the embodiments may be implemented by a single chip, for example, a single hardware circuit. The components according to the embodiments may be implemented by separate chips. At least one of the components of the devices of the embodiments may be configured with one or more processors capable of executing one or more programs, and the one or more programs may perform, or include instructions for performing, one or more of the operations/methods according to the embodiments. The executable instructions for performing the methods/operations of the devices of the embodiments may be stored in non-transitory CRMs or other computer program products configured to be executed by one or more processors, or may be stored in temporary CRMs or other computer program products configured to be executed by one or more processors. In addition, the memory according to the embodiments may be used as a concept including not only volatile memory (e.g., RAM, etc.), but also non-volatile memory, flash memory, PROM, etc. Additionally, it may include implementations in the form of carrier waves, such as transmissions via the Internet. Furthermore, processor-readable recording media may be distributed across network-connected computer systems, allowing processor-readable code to be stored and executed in a distributed manner.
이 문서에서 "/"와 ","는 "및/또는"으로 해석된다. 예를 들어, "A/B"는 "A 및/또는 B"로 해석되고, "A, B"는 "A 및/또는 B"로 해석된다. 추가적으로, "A/B/C"는 "A, B, 및/또는 C 중 적어도 하나"를 의미한다. 또한, "A, B, C"도 "A, B 및/또는 C 중 적어도 하나"를 의미한다. 추가적으로, 이 문서에서 “또는”는 “및/또는”으로 해석된다. 예를 들어, "A 또는 B"은, 1) "A"만을 의미하고, 2) "B"만을 의미하거나, 3) "A 및 B"를 의미할 수 있다. 달리 표현하면, 본 문서의 “또는”은 “추가적으로 또는 대체적으로(additionally or alternatively)”를 의미할 수 있다.In this document, "/" and "," are interpreted as "and/or". For example, "A/B" is interpreted as "A and/or B", and "A, B" is interpreted as "A and/or B". Additionally, "A/B/C" means "at least one of A, B, and/or C". Also, "A, B, C" means "at least one of A, B, and/or C". Additionally, "or" in this document is interpreted as "and/or". For example, "A or B" can mean 1) "A" only, 2) "B" only, or 3) "A and B". In other words, "or" in this document can mean "additionally or alternatively".
실시예들의 다양한 엘리먼트들은 하드웨어, 소프트웨어, 펌웨어 또는 그것들의 조합에 의해 수행될 수 있다. 실시예들의 다양한 엘리먼트는 하드웨어 회로와 같은 싱글 칩 상에서 수행될 수 있다. 실시예들에 따라, 실시예들은 선택적으로 개별적인 칩들 상에서 수행될 수 있다. 실시예들에 따라, 실시예들의 엘리먼트들 중 적어도 하나는 실시예들에 따른 동작을 수행하는 인스트럭션들을 포함하는 하나 또는 하나 이상의 프로세서 내에서 수행될 수 있다.Various elements of the embodiments may be implemented by hardware, software, firmware, or a combination thereof. Various elements of the embodiments may be implemented on a single chip, such as a hardware circuit. In some embodiments, the embodiments may optionally be implemented on separate chips. In some embodiments, at least one of the elements of the embodiments may be implemented within one or more processors that include instructions for performing operations according to the embodiments.
또한, 본 문서에서 설명하는 실시예들에 따른 동작은 실시예들에 따라서 하나 이상의 메모리들 및/또는 하나 이상의 프로세서들을 포함하는 송수신 장치에 의해 수행될 수 있다. 하나 이상의 메모리들을 실시예들에 따른 동작을 처리/제어하기 위한 프로그램들을 저장할 수 있고, 하나 이상의 프로세서들을 본 문서에서 설명한 다양한 동작을 제어할 수 있다. 하나 이상의 프로세서들은 컨트롤러 등으로 지칭 가능하다. 실시예들에 동작들은 펌웨어, 소프트웨어, 및/또는 그것들의 조합에 의해 수행될 수 있고, 펌웨어, 소프트웨어, 및/또는 그것들의 조합은 프로세서에 저장되거나 메모리에 저장될 수 있다.Additionally, the operations according to the embodiments described in this document may be performed by a transceiver device including one or more memories and/or one or more processors according to the embodiments. One or more memories may store programs for processing/controlling the operations according to the embodiments, and one or more processors may control various operations described in this document. One or more processors may be referred to as a controller, etc. The operations according to the embodiments may be performed by firmware, software, and/or a combination thereof, and the firmware, software, and/or a combination thereof may be stored in a processor or a memory.
제1, 제2 등과 같은 용어는 실시예들의 다양한 구성요소들을 설명하기 위해 사용될 수 있다. 하지만 실시예들에 따른 다양한 구성요소들은 위 용어들에 의해 해석이 제한되어서는 안된다. 이러한 용어는 하나의 구성요소를 다른 구성요소와 구별하기 위해 사용되는 것에 불과하다. 것에 불과하다. 예를 들어, 제1 사용자 인풋 시그널은 제2사용자 인풋 시그널로 지칭될 수 있다. 이와 유사하게, 제2사용자 인풋 시그널은 제1사용자 인풋 시그널로 지칭될 수 있다. 이러한 용어의 사용은 다양한 실시예들의 범위 내에서 벗어나지 않는 것으로 해석되어야만 한다. 제1사용자 인풋 시그널 및 제2사용자 인풋 시그널은 모두 사용자 인풋 시그널들이지만, 문맥 상 명확하게 나타내지 않는 한 동일한 사용자 인풋 시그널들을 의미하지 않는다.Terms such as "first," "second," etc. may be used to describe various components of the embodiments. However, the various components according to the embodiments should not be interpreted as limited by these terms. These terms are merely used to distinguish one component from another. For example, a first user input signal may be referred to as a second user input signal. Similarly, a second user input signal may be referred to as a first user input signal. The use of these terms should be interpreted as not departing from the scope of the various embodiments. Although a first user input signal and a second user input signal are both user input signals, they do not mean the same user input signals unless the context clearly indicates otherwise.
실시예들을 설명하기 위해 사용된 용어는 특정 실시예들을 설명하기 위한 목적으로 사용되고, 실시예들을 제한하기 위해서 의도되지 않는다. 실시예들의 설명 및 청구항에서 사용된 바와 같이, 문맥 상 명확하게 지칭하지 않는 한 단수는 복수를 포함하는 것으로 의도된다. 및/또는 표현은 용어 간의 모든 가능한 결합을 포함하는 의미로 사용된다. “포함한다” 표현은 특징들, 수들, 단계들, 엘리먼트들, 및/또는 컴포넌트들이 존재하는 것을 설명하고, 추가적인 특징들, 수들, 단계들, 엘리먼트들, 및/또는 컴포넌트들을 포함하지 않는 것을 의미하지 않는다. 실시예들을 설명하기 위해 사용되는, ~인 경우, ~때 등의 조건 표현은 선택적인 경우로만 제한 해석되지 않는다. 특정 조건을 만족하는 때, 특정 조건에 대응하여 관련 동작을 수행하거나, 관련 정의가 해석되도록 의도되었다.The terminology used to describe the embodiments is for the purpose of describing particular embodiments and is not intended to be limiting of the embodiments. As used in the description of the embodiments and in the claims, the singular is intended to include the plural unless the context clearly dictates otherwise. The expressions “and/or” are used to mean all possible combinations of the terms. The expression “comprises” or “includes” describes the presence of features, numbers, steps, elements, and/or components, but does not mean that additional features, numbers, steps, elements, and/or components are not included. Conditional expressions such as “if” or “when” used to describe the embodiments are not intended to be limited to only optional cases. When a specific condition is satisfied, a related action is performed in response to a specific condition, or a related definition is intended to be interpreted.
상술한 바와 같이, 실시예들을 실시하기 위한 최선의 형태에서 관련 내용을 설명하였다.As described above, the relevant contents have been described in the best form for carrying out the embodiments.
상술한 바와 같이, 실시예들은 포인트 클라우드 데이터 송수신 장치 및 시스템에 전체적 또는 부분적으로 적용될 수 있다. 당업자는 실시예들의 범위 내에서 실시예들을 다양하게 변경 또는 변형할 수 있다. 실시예들은 변경/변형들을 포함할 수 있고, 변경/변형은 청구항들 및 그 와 동일한 것들의 범위를 벗어나지 않는다.As described above, the embodiments may be applied, in whole or in part, to point cloud data transmission and reception devices and systems. Those skilled in the art may variously modify or alter the embodiments within the scope of the embodiments. The embodiments may include modifications and variations, and such modifications and variations do not depart from the scope of the claims and their equivalents.
Claims (16)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202463565527P | 2024-03-14 | 2024-03-14 | |
| US63/565,527 | 2024-03-14 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2025192995A1 true WO2025192995A1 (en) | 2025-09-18 |
Family
ID=97064265
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/KR2025/003334 Pending WO2025192995A1 (en) | 2024-03-14 | 2025-03-14 | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2025192995A1 (en) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20220027868A (en) * | 2019-06-28 | 2022-03-08 | 블랙베리 리미티드 | Planar mode in octree-based point cloud coding |
| KR20220128388A (en) * | 2020-01-14 | 2022-09-20 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Scaling parameters for V-PCC |
| KR20230051201A (en) * | 2021-10-04 | 2023-04-17 | 텐센트 아메리카 엘엘씨 | Method and Apparatus of Adaptive Sampling for Mesh Compression by Decoder |
| WO2023211113A1 (en) * | 2022-04-25 | 2023-11-02 | 엘지전자 주식회사 | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method |
| KR20230167031A (en) * | 2021-04-05 | 2023-12-07 | 퀄컴 인코포레이티드 | Residual coding for geometric point cloud compression |
-
2025
- 2025-03-14 WO PCT/KR2025/003334 patent/WO2025192995A1/en active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20220027868A (en) * | 2019-06-28 | 2022-03-08 | 블랙베리 리미티드 | Planar mode in octree-based point cloud coding |
| KR20220128388A (en) * | 2020-01-14 | 2022-09-20 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Scaling parameters for V-PCC |
| KR20230167031A (en) * | 2021-04-05 | 2023-12-07 | 퀄컴 인코포레이티드 | Residual coding for geometric point cloud compression |
| KR20230051201A (en) * | 2021-10-04 | 2023-04-17 | 텐센트 아메리카 엘엘씨 | Method and Apparatus of Adaptive Sampling for Mesh Compression by Decoder |
| WO2023211113A1 (en) * | 2022-04-25 | 2023-11-02 | 엘지전자 주식회사 | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2021066626A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2021066312A1 (en) | Device for transmitting point cloud data, method for transmitting point cloud data, device for receiving point cloud data, and method for receiving point cloud data | |
| WO2021141352A2 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method | |
| WO2022019713A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2022186675A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2021045601A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2021246843A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2022015006A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2022035256A1 (en) | Point cloud data transmission apparatus, point cloud data transmission method, point cloud data reception apparatus, and point cloud data reception method | |
| WO2023287243A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2021141221A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2022220645A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2023136627A1 (en) | Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device | |
| WO2023136618A1 (en) | Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device | |
| WO2022149810A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2023059168A1 (en) | Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device | |
| WO2023075453A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data transmission method | |
| WO2023075389A1 (en) | Point cloud data transmission device and method, and point cloud data reception device and method | |
| WO2024014935A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2023059136A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2023287265A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2021080152A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2022092971A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2022075753A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
| WO2023191605A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 25772243 Country of ref document: EP Kind code of ref document: A1 |