Method, device and medium for point cloud coding and decoding
By using the lookup table algorithm for nearest neighbor search in point cloud encoding and decoding, the problem of high time complexity in the existing technology is solved and the encoding and decoding efficiency is improved.
Patent Information
- Application Number
- CN202380071276.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-10-04
- Filing Date
- 2023-09-28
- Publication Date
- 2025-05-13
AI Technical Summary
The prior art in point cloud encoding and decoding, especially in the nearest neighbor search process in regional adaptive hierarchical transformation (RAHT), the time complexity is high, resulting in low encoding and decoding efficiency.
The lookup table algorithm is used instead of the binary search algorithm for nearest neighbor search. The lookup table uses storage node indexes to quickly search based on location indication and occupancy information.
It significantly reduces the time complexity of nearest neighbor search, improves the efficiency of point cloud encoding and decoding, and reduces the calculation cost during the encoding and decoding process.
Smart Images

Figure CN119999211A_ABST
Abstract
Description
Technical Field
[0001] Embodiments of the present disclosure relate generally to point cloud encoding and decoding techniques, and more particularly to a lookup table for nearest neighbor search in Region Adaptive Hierarchical Transform (RAHT). Background Art
[0002] A point cloud is a collection of individual data points in a three-dimensional (3D) plane, where each point has set coordinates on the X, Y, and Z axes. Point clouds can therefore be used to represent the physical content of a three-dimensional space. Point clouds have proven to be a promising way to represent 3D visual data for a variety of immersive applications, from augmented reality to self-driving cars.
[0003] Point cloud codec standards have evolved primarily through the development of the well-known MPEG organization. MPEG stands for Moving Picture Experts Group, which is one of the main standardization groups dealing with multimedia. In 2017, the MPEG 3D Graphics Codec Group (3DG) released a Call for Proposals (CFP) document to begin the development of a point cloud codec standard. The final standard will encompass two categories of solutions. Video-based point cloud compression (V-PCC or VPCC) is suitable for point sets with relatively uniform point distribution. Geometry-based point cloud compression (G-PCC or GPCC) is suitable for more sparse distributions. However, it is generally expected to further improve the codec efficiency of conventional point cloud codec techniques. Summary of the invention
[0004] The embodiments of the present disclosure provide a solution for point cloud encoding and decoding.
[0005] In a first aspect, a point cloud encoding and decoding method is provided. The method comprises: for conversion between a point cloud sequence including at least one point cloud (PC) sample associated with a plurality of nodes and a bit stream of the point cloud sequence, determining a node index of a first node among the plurality of nodes, wherein the first node is stored in a data structure and indicated by the node index in the data structure; and performing the conversion based on a position indication and occupancy information.
[0006] In a second aspect, a method for point cloud encoding and decoding is provided. The device includes a processor and a non-volatile memory having instructions thereon. These instructions, when executed by the processor, cause the processor to perform the method according to the first aspect of the present disclosure.
[0007] In a third aspect, a non-transitory computer-readable storage medium is provided, wherein the non-transitory computer-readable storage medium stores instructions for causing a processor to execute the method according to the first aspect of the present disclosure.
[0008] In a fourth aspect, another non-transitory computer-readable recording medium is provided. The non-transitory computer-readable recording medium stores a bit stream of a point cloud sequence, the bit stream of the point cloud sequence being generated by a method performed by an apparatus for point cloud encoding and decoding. The method includes: determining a node index of a first node among a plurality of nodes, wherein the point cloud sequence includes at least one point cloud (PC) sample associated with the plurality of nodes, and the first node is stored in a data structure and indicated by a node index in the data structure; and generating the bit stream based on a position indication and occupancy information.
[0009] In a fifth aspect, a method for storing a bitstream of a point cloud sequence is provided. The method includes: determining a node index of a first node among a plurality of nodes, wherein the point cloud sequence includes at least one point cloud (PC) sample associated with the plurality of nodes, and the first node is stored in a data structure and indicated by the node index in the data structure; generating the bitstream based on a position indication and occupancy information; and storing the bitstream in a non-transitory computer-readable recording medium.
[0010] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] The above and other objects, features and advantages of the exemplary embodiments of the present disclosure will become more apparent through the following detailed description with reference to the accompanying drawings.In the exemplary embodiments of the present disclosure, the same reference numerals generally refer to the same components.
[0012] Figure 1 is a block diagram illustrating an example point cloud encoding and decoding system that may utilize the techniques of the present disclosure;
[0013] Figure 2 A block diagram illustrating an example point cloud encoder according to some embodiments of the present disclosure is shown;
[0014] Figure 3 shows a block diagram illustrating an example point cloud decoder according to some embodiments of the present disclosure;
[0015] Figure 4 An example diagram of a parent level node for each child node of a transform unit node according to some embodiments of the present disclosure is shown;
[0016] Figure 5 An example diagram showing the construction of a lookup table according to some embodiments of the present disclosure;
[0017] Figure 6A flowchart of a method for point cloud encoding and decoding according to an embodiment of the present disclosure is shown; and
[0018] Figure 7 A block diagram of a computing device is shown in which various embodiments of the present disclosure may be implemented.
[0019] Throughout the drawings, the same or similar reference numbers generally refer to the same or similar elements. DETAILED DESCRIPTION
[0020] The principle of the present disclosure will now be described with reference to some embodiments. It should be understood that these embodiments are described only for the purpose of illustrating and helping those skilled in the art to understand and implement the present disclosure, without implying any limitation on the scope of the present disclosure. In addition to the methods described below, the disclosure described herein can also be implemented in various ways.
[0021] In the following description and claims, unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure belongs.
[0022] References in this disclosure to "one embodiment," "an embodiment," "an example embodiment," and the like indicate that the described embodiment may include a particular feature, structure, or characteristic, but not every embodiment must include the particular feature, structure, or characteristic. Furthermore, these phrases do not necessarily refer to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in conjunction with an example embodiment, it is claimed that such feature, structure, or characteristic, whether or not explicitly described, is within the knowledge of those skilled in the art to affect correlation with other embodiments.
[0023] It should be understood that, although the terms "first" and "second" etc. may be used herein to describe various elements, these elements should not be limited to these terms. These terms are only used to distinguish one element from another element. For example, a first element may be referred to as a second element, and similarly, a second element may be referred to as a first element without departing from the scope of the exemplary embodiments. As used herein, the term "and / or" includes any and all combinations of one or more of the listed terms.
[0024] The terms used herein are only used for the purpose of describing specific embodiments and are not intended to limit the exemplary embodiments. As used herein, the singular forms "a", "an" and "the" are also intended to include plural forms unless the context clearly indicates otherwise. It should also be understood that the terms "include", "comprises", "has", "has", "includes" and / or "comprising" are used herein to indicate the presence of the features, elements and / or components, etc., but do not exclude the presence or addition of one or more other features, elements, components and / or combinations thereof.
[0025] Example Environment
[0026] Figure 1 is a block diagram illustrating an example point cloud codec system 100 that may utilize the techniques of the present disclosure. As shown, the point cloud codec system 100 may include a source device 110 and a destination device 120. The source device 110 may also be referred to as a point cloud codec device, and the destination device 120 may also be referred to as a point cloud decoding device. In operation, the source device 110 may be configured to generate encoded point cloud data, and the destination device 120 may be configured to decode the encoded point cloud data generated by the source device 110. The techniques of the present disclosure are generally directed to encoding and decoding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. The codec may be effective in compressing and / or decompressing point cloud data.
[0027] Source device 100 and destination device 120 may include any of a variety of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets (such as smart phones and mobile phones), televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, vehicles (e.g., land or sea vehicles, spacecraft, aircraft, etc.), robots, LIDAR devices, satellites, extended reality devices, etc. In some cases, source device 100 and destination device 120 may be equipped for wireless communication.
[0028] The source device 100 may include a data source 112, a memory 114, a GPCC encoder 116, and an input / output (I / O) interface 118. The destination device 120 may include an input / output (I / O) interface 128, a GPCC decoder 126, a memory 124, and a data consumer 122. According to the present disclosure, the GPCC encoder 116 of the source device 100 and the GPCC decoder 126 of the destination device 120 may be configured to apply the techniques related to point cloud encoding and decoding of the present disclosure. Therefore, the source device 100 represents an example of an encoding device, and the destination device 120 represents an example of a decoding device. In other examples, the source device 100 and the destination device 120 may include other components or arrangements. For example, the source device 100 may receive data (e.g., point cloud data) from an internal source or an external source. Similarly, the destination device 120 may be connected to an external data consumer interface instead of including the data consumer in the same device.
[0029] In general, the data source 112 represents a source of point cloud data (i.e., raw, unencoded point cloud data) and can provide a continuous series of "frames" of point cloud data to the GPCC encoder 116, which encodes the point cloud data for the frames. In some examples, the data source 112 generates point cloud data. The data source 112 of the source device 100 may include a point cloud acquisition device, such as any of a variety of cameras or sensors, such as one or more cameras, an archive containing previously acquired point cloud data, a 3D scanner or a light detection and ranging (LIDAR) device, and / or a data feed interface for receiving point cloud data from a data content provider. Therefore, in some examples, the data source 112 can generate point cloud data based on a signal from a LIDAR device. Alternatively or additionally, the point cloud data can be generated by a computer from a scanner, camera, sensor, or other data. For example, the data source 112 can generate point cloud data, or produce a combination of real-time point cloud data, archived point cloud data, and computer-generated point cloud data. In each case, the GPCC encoder 116 encodes the acquired, pre-acquired, or computer-generated point cloud data. The GPCC encoder 116 can rearrange the frames of the point cloud data from the receive order (sometimes referred to as the "display order") to the codec order for encoding and decoding. The GPCC encoder 116 can generate one or more bit streams including the encoded point cloud data. The source device 100 can then output the encoded point cloud data via the I / O interface 118 for reception and / or retrieval by, for example, the I / O interface 128 of the destination device 120. The encoded point cloud data can be transmitted directly to the destination device 120 via the network 130A via the I / O interface 118. The encoded point cloud data can also be stored on the storage medium / server 130B for access by the destination device 120.
[0030] The memory 114 of the source device 100 and the memory 124 of the destination device 120 may represent general purpose memory. In some examples, the memory 114 and the memory 124 may store raw point cloud data, for example, raw point cloud data from the data source 112 and raw, decoded point cloud data from the GPCC decoder 126. Additionally or alternatively, the memory 114 and the memory 124 may store software instructions executable by, for example, the GPCC encoder 116 and the GPCC decoder 126, respectively. Although the memory 114 and the memory 124 are shown separately from the GPCC encoder 116 and the GPCC decoder 126 in this example, it should be understood that the GPCC encoder 116 and the GPCC decoder 126 may also include internal memory for functionally similar or equivalent purposes. In addition, the memory 114 and the memory 124 may store encoded point cloud data, for example, encoded point cloud data output from the GPCC encoder 116 and input to the GPCC decoder 126. In some examples, portions of memory 114 and memory 124 may be allocated as one or more caches, for example, to store raw point cloud data, decoded point cloud data, and / or encoded point cloud data. For example, memory 114 and memory 124 may store point cloud data.
[0031] I / O interface 118 and I / O interface 128 may represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component that operates according to any of a variety of IEEE 802.11 standards, or other physical components. In examples where I / O interface 118 and I / O interface 128 include wireless components, I / O interface 118 and I / O interface 128 may be configured to transmit data, such as encoded point cloud data, according to a cellular communication standard (such as 4G, 4G-LTE (Long Term Evolution), Advanced LTE, 5G, etc.). In some examples where I / O interface 118 includes a wireless transmitter, I / O interface 118 and I / O interface 128 may be configured to transmit data, such as encoded point cloud data, according to other wireless standards (such as IEEE 802.11 specifications). In some examples, source device 100 and / or destination device 120 may include corresponding system-on-chip (SoC) devices. For example, source device 100 may include a SoC device for performing the functions attributed to GPCC encoder 116 and / or I / O interface 118 , and destination device 120 may include a SoC device for performing the functions attributed to GPCC decoder 126 and / or I / O interface 128 .
[0032] The techniques disclosed herein may be applied to encoding and decoding to support any of a variety of applications, such as communications between autonomous vehicles, communications between scanners, cameras, sensors and processing devices (e.g., local servers or remote servers), geographic mapping, or other applications.
[0033] The I / O interface 128 of the destination device 120 receives the encoded bitstream from the source device 110. The encoded bitstream may include signaling information defined by the GPCC encoder 116, which is also used by the GPCC decoder 126, such as a syntax element having a value representing a point cloud. The data consumer 122 uses the decoded data. For example, the data consumer 122 may use the decoded point cloud data to determine the location of a physical object. In some examples, the data consumer 122 may include a display for presenting an image based on the point cloud data.
[0034] The GPCC encoder 116 and the GPCC decoder 126 can each be implemented as any of a variety of suitable encoder circuit systems and / or decoder circuit systems, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the technology is partially implemented in software, the device can store instructions for the software in a suitable non-transitory computer-readable medium and use one or more processors to execute the instructions in hardware to perform the technology of the present disclosure. Each of the GPCC encoder 116 and the GPCC decoder 126 can be included in one or more encoders or decoders, any of which can be integrated as part of a combined encoder / decoder (CODEC) in the corresponding device. The device including the GPCC encoder 116 and / or the GPCC decoder 126 may include one or more integrated circuits, microprocessors, and / or other types of devices.
[0035] The GPCC encoder 116 and the GPCC decoder 126 may operate in accordance with a codec standard, such as the Video Point Cloud Compression (VPCC) standard or the Geometry Point Cloud Compression (GPCC) standard. In general, the present disclosure may refer to the encoding and decoding of frames (e.g., encoding and decoding) to include the process of encoding data or decoding data. The encoded bitstream typically includes a series of values for syntax elements that represent codec decisions (e.g., codec modes).
[0036] A point cloud may contain a set of points in 3D space and may have attributes associated with the points. The attributes may be color information, such as R, G, B or Y, Cb, Cr or reflectivity information, or other attributes. Point clouds may be collected by various cameras or sensors (such as LIDAR sensors and 3D scanners), and may also be computer generated. Point cloud data is used in a variety of applications, including but not limited to architecture (modeling), graphics (3D models for visualization and animation), and the automotive industry (LIDAR sensors to aid navigation).
[0037] Figure 2 is a block diagram showing an example of a GPCC encoder 200 according to some embodiments of the present disclosure, which may be Figure 1 An example of a GPCC encoder 116 in the system 100 is shown. Figure 3 is a block diagram showing an example of a GPCC decoder 300 according to some embodiments of the present disclosure. The GPCC decoder 300 may be Figure 1 An example of a GPCC decoder 126 in the system 100 is shown.
[0038] In both the GPCC encoder 200 and the GPCC decoder 300, the point cloud position is first encoded and decoded. The attribute encoding and decoding depends on the decoded geometry. Figure 2 and Figure 3 , the region adaptive hierarchical transform (RAHT) unit 218, the surface approximation analysis unit 212, the RAHT unit 314, and the surface approximation synthesis unit 310 are options that are commonly used for category 1 data. The level of detail (LOD) generation unit 220, the lifting unit 222, the LOD generation unit 316, and the delifting unit 318 are options that are commonly used for category 3 data. All other units are common between category 1 and category 3.
[0039] For category 3 data, the compressed geometry is typically represented as an octree from the root down to the leaf level for each voxel. For category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root down to the leaf level for blocks larger than a voxel) plus a model for approximating the surface within each leaf node of the pruned octree. In this way, both category 1 and category 3 data share the octree codec mechanism, while category 1 data can additionally utilize a surface model to approximate the voxels within each leaf node. The surface model used is a triangulation of 1 to 10 triangles per block, resulting in a triangle soup. Therefore, category 1 geometry codecs are called triangle soup geometry codecs, while category 3 geometry codecs are called octree geometry codecs.
[0040] exist Figure 2 In the example, the GPCC encoder 200 may include a coordinate transformation unit 202, a color transformation unit 204, a voxelization unit 206, an attribute transfer unit 208, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic coding unit 214, a geometric reconstruction unit 216, a RAHT unit 218, an LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224 and an arithmetic coding unit 226.
[0041] like Figure 2 As shown in the example of , the GPCC encoder 200 can receive a set of positions and a set of attributes. The positions can include the coordinates of a point in the point cloud. The attributes can include information about the point in the point cloud, such as the color associated with the point in the point cloud.
[0042] The coordinate transformation unit 202 may apply a transformation to the coordinates of the point to transform the coordinates from the initial domain to the transformed domain. The present disclosure may refer to the transformed coordinates as transformed coordinates. The color transformation unit 204 may apply a transformation to transform the color information of the attribute to a different domain. For example, the color transformation unit 204 may transform the color information from the RGB color space to the YCbCr color space.
[0043] In addition, Figure 2 In the example of , the voxelization unit 206 may voxelize the transformed coordinates. Voxelization of the transformed coordinates may include quantizing and removing some points of the point cloud. In other words, multiple points of the point cloud may be grouped into a single "voxel", which may thereafter be considered as a point in some aspects. In addition, the octree analysis unit 210 may generate an octree based on the voxelized transformed coordinates. Additionally, in Figure 2 In the example of , the surface approximation analysis unit 212 can analyze the points to potentially determine a surface representation of the set of points. The arithmetic coding unit 214 can perform arithmetic coding on syntax elements representing information of the octree and / or information of the surface determined by the surface approximation analysis unit 212. The GPCC encoder 200 can output these syntax elements in a geometry bitstream.
[0044] The geometric reconstruction unit 216 may reconstruct the transformed coordinates of the points in the point cloud based on the octree, the data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. Due to voxelization and surface approximation, the number of transformed coordinates reconstructed by the geometric reconstruction unit 216 may be different from the original number of points in the point cloud. The present disclosure may refer to the resulting points as reconstructed points. The attribute transfer unit 208 may transfer the attributes of the original points of the point cloud to the reconstructed points of the point cloud data.
[0045] In addition, the RAHT unit 218 may apply RAHT coding to the attributes of the reconstruction point. Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 may apply LOD processing and lifting, respectively, to the attributes of the reconstruction point. The RAHT unit 218 and the lifting unit 222 may generate coefficients based on the attributes. The coefficient quantization unit 224 may quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic coding unit 226 may apply arithmetic coding to the syntax elements representing the quantized coefficients. The GPCC encoder 200 may output these syntax elements in the attribute bitstream.
[0046] exist Figure 3 In the example, the GPCC decoder 300 may include a geometric arithmetic decoding unit 302, an attribute arithmetic decoding unit 304, an octree synthesis unit 306, an inverse quantization unit 308, a surface approximation synthesis unit 310, a geometric reconstruction unit 312, a RAHT unit 314, an LOD generation unit 316, an inverse lifting unit 318, a coordinate inverse transformation unit 320 and a color inverse transformation unit 322.
[0047] The GPCC decoder 300 may obtain a geometry bitstream and an attribute bitstream. The geometry arithmetic decoding unit 302 of the decoder 300 may apply arithmetic decoding (e.g., CABAC or other types of arithmetic decoding) to syntax elements in the geometry bitstream. Similarly, the attribute arithmetic decoding unit 304 may apply arithmetic decoding to syntax elements in the attribute bitstream.
[0048] The octree synthesis unit 306 may synthesize the octree based on the syntax elements parsed from the geometry bitstream. In the case where surface approximation is used in the geometry bitstream, the surface approximation synthesis unit 310 may determine the surface model based on the syntax elements parsed from the geometry bitstream and based on the octree.
[0049] Furthermore, the geometry reconstruction unit 312 may perform reconstruction to determine the coordinates of the points in the point cloud. The coordinate inverse transformation unit 320 may apply an inverse transformation to the reconstructed coordinates to convert the reconstructed coordinates (positions) of the points in the point cloud from the transformed domain back to the original domain.
[0050] Additionally, in Figure 3 In the example of , the inverse quantization unit 308 may inverse quantize the property value. The property value may be based on a syntax element obtained from the property bitstream (eg, including a syntax element decoded by the property arithmetic decoding unit 304).
[0051] Depending on how the attribute values are encoded, the RAHT unit 314 may perform RAHT decoding to determine color values for points in the point cloud based on the dequantized attribute values. Alternatively, the LOD generation unit 316 and the de-lifting unit 318 may use a level of detail based technique to determine color values for points in the point cloud.
[0052] In addition, Figure 3 In the example of , the color inverse transform unit 322 can apply an inverse color transform to the color values. The inverse color transform can be the inverse of the color transform applied by the color transform unit 204 of the encoder 200. For example, the color transform unit 204 can transform the color information from the RGB color space to the YCbCr color space. Accordingly, the color inverse transform unit 322 can transform the color information from the YCbCr color space to the RGB color space.
[0053] Figure 2 and Figure 3 Various units are shown to help understand the operations performed by the encoder 200 and the decoder 300. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide specific functions and are preset with respect to the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functions in the operations that can be performed. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuits can execute software instructions (e.g., to receive parameters or output parameters), but the types of operations performed by fixed-function circuits are generally immutable. In some examples, one or more of these units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more of these units may be integrated circuits.
[0054] Some exemplary embodiments of the present disclosure are described in detail below. It should be understood that the section titles used in this document are for ease of understanding, and do not limit the embodiments disclosed in the section to that section. In addition, although some embodiments are described with reference to GPCC or other specific point cloud codecs, the disclosed techniques are also applicable to other point cloud coding and decoding technologies. In addition, although some embodiments describe the point cloud coding and decoding steps in detail, it should be understood that the corresponding decoding steps of the de-coding will be implemented by the decoder.
[0055] 1. Brief Overview
[0056] The present disclosure relates to point cloud codec techniques. Specifically, it relates to a lookup table for neighbor search in a region adaptive hierarchical transform (RAHT). These concepts can be applied alone or in various combinations to any point cloud codec standard or non-standard point cloud codec, such as the geometry-based point cloud compression (G-PCC) and low-latency low-complexity codec (L3C2) under development.
[0057] 2. Abbreviations
[0058] G-PCC Geometry-based Point Cloud Compression
[0059] L3C2 Low Delay Low Complexity Codec
[0060] MPEG Moving Picture Experts Group
[0061] 3DG 3D Graphics Codec Group
[0062] V-PCC video-based point cloud compression
[0063] RAHT Region Adaptive Hierarchical Transform
[0064] DC
[0065] AC
[0066] 3. Introduction
[0067] MPEG is short for Moving Picture Experts Group, which is one of the main standardization groups dealing with multimedia. In 2017, the MPEG 3D Graphics Codec Group (3DG) released a call for proposals (CFP) document to start the development of a point cloud codec standard. The final standard will include two categories of solutions. Video-based point cloud compression (V-PCC) is suitable for point sets with relatively uniform point distribution. Geometry-based point cloud compression (G-PCC) is suitable for more sparse distributions. Both V-PCC and G-PCC support encoding and decoding for single point clouds and point cloud sequences.
[0068] In a point cloud, there can be geometric information and attribute information. Geometric information is used to describe the geometric position of data points. Attribute information is used to record some details of data points, such as texture, normal vector, reflection, etc.
[0069] 3.1 Octree Geometry Compression
[0070] Point cloud codecs can handle various information in different ways. Usually, there are many optional tools in the codec to support the encoding and decoding of geometry information and attribute information respectively. Among the geometry codec tools in G-PCC, octree geometry compression has an important impact on the performance of point cloud geometry codec.
[0071] In G-PCC, one of the important point cloud geometry codec tools is octree geometry compression, which utilizes the spatial correlation of point cloud geometry. If the geometry codec tool is enabled, the cube axis-aligned bounding box associated with the octree root node will be determined based on the point cloud geometry information. The bounding box will then be subdivided into 8 sub-cubes, which are associated with the 8 child nodes of the root node (cubes are equivalent to nodes below). Then an 8-bit code is generated in a specific order to individually indicate whether the 8 child nodes contain points, with one bit associated with a child node. The bit associated with a child node is named an occupied bit, and the generated 8-bit code is named an occupied code. The generated occupancy code will be transmitted by signaling based on the occupancy information of neighboring nodes. Then, nodes containing only points will be further subdivided into 8 child nodes. This process will be recursively performed until the node size is 1. Therefore, the point cloud geometry information is converted into an occupancy code sequence.
[0072] At the decoder side, the occupancy code sequence will be decoded and the point cloud geometry information can be reconstructed based on the occupancy code sequence.
[0073] Breadth-first scanning order will be used for the octree. In one level of the octree, the octree nodes will be scanned in Morton order. If the coordinates of a node are represented by N bits, the coordinates (X, Y, Z) of the node can be represented as follows.
[0074] X=(x N-1 x N-2 …x1x0)
[0075] Y=(y N-1 y N-2 …y1y0)
[0076] Z=(z N-1 Z N-2 …z1Z0)
[0077] Its Morton code can be expressed as follows.
[0078] M=(x N-1 y N-1 z N-1 x N-2 y N-2 z N-2 …x1y1z1x0y0z0)
[0079] The Morton order is based on the order of the Morton codes from small to large or from large to small.
[0080] 3.2 Region-Adaptive Hierarchical Transformation
[0081] In G-PCC, one of the important point cloud attribute encoding and decoding tools is RAHT. It is a transform that uses the attributes associated with nodes in the lower level of the octree to predict the attributes of nodes in the next level. It is assumed that the position of the point is given at both the encoder and the decoder. RAHT follows a reverse scan of the octree, from leaf nodes to the root node, and at each step, the nodes are reorganized into larger nodes until the root node is reached. At each level of the octree, the nodes are processed in Morton order. At each decomposition, RAHT does not combine eight nodes at a time, but is performed in three steps along each dimension (for example, along z, then y and then x). If there are L levels in the octree, RAHT uses 3L levels to traverse the tree in reverse.
[0082] Let the node at level l be g l,x,y,z , where x, y, z are integers. l,x,y,z By combining g l+1,2x,y,z and g l+1,2x+1,y,z , where the combinations along the first dimension are examples. RAHT processes only occupied nodes. If one of the nodes in the pair is not occupied, the other node is promoted to the next level (not processed), i.e., g l-1,x,y,z =g l,2x,y,z , if the latter is the occupied node in the pair. The combination process is repeated until the root is reached. Note that the combination process generates nodes at lower levels that are the result of combining different numbers of voxels along the path. l,x,y,z The number of nodes is the weight of the node ω l,x,y,z .
[0083] At each combination of two nodes, say g l,2x,y,z and g l,2x+1,y,z , using their respective weights ω l,2x,y,z and ω l,2x+1,y,z , RAHT applies the following transformation:
[0084]
[0085] where ω1=ω l,2x,y,z And ω2=ω l,2x+1,y,z ,and
[0086]
[0087] Note that the transformation matrix always adapts to the weights, i.e., to each g l,x,y,z The number of leaf nodes actually represented. l,x,y,z Used to group and compose subsequent nodes at lower levels.l,x,y,z are the actual high-pass coefficients generated by the transform, to be encoded and transmitted. In addition, the weights are accumulated for the layers above. In the above example,
[0088] ω l-1,2,y,z =ω l,2x,y,z +ω l,2x+1,y,z .
[0089] In the final stage, the root and the remaining two voxels g 1,0,0,0 and g 1,1,0,0 is transformed into the final two coefficients as follows:
[0090]
[0091] where g DC =g 0,0,0,0 .
[0092] 3.2.1 Upsampling Transform Domain Prediction
[0093] Transform domain prediction is introduced to improve the coding and decoding efficiency on RAHT. It consists of two parts.
[0094] First, the RAHT tree traversal is changed to a descent based on the previous ascending method, that is, for both the encoder and the decoder, a tree of attributes and weights is constructed from the root level of the tree to the leaf level, and then RAHT is performed. In each level, the nodes are visited in Morton order. Transformations are performed in nodes with 2×2×2 child nodes (in the next level). The node where the transformation is performed can be called a transformation node.
[0095] Second, for each child of the transform node, the corresponding predicted attribute is generated by upsampling the attribute of the previous transform level. In practice, only the child nodes containing at least one point will generate the corresponding predicted attribute. The transform node containing the predicted attribute is transformed on the encoder side and subtracted from the transformed attribute. The residual of the alternating current (AC) coefficient will be transmitted by signaling. Note that the prediction does not affect the direct current (DC) coefficient.
[0096] Each child node of the transformation node is predicted by 7 parent nodes, including 3 co-linear parent neighbor nodes, 3 co-planar parent neighbor nodes and 1 parent node. Co-planar neighbors and co-linear neighbors are neighbors that share faces and edges with the current transformation node, respectively. A binary search algorithm is used to find co-planar parent neighbors and co-linear parent neighbors. Figure 4 The parent level node for each child node of the transform unit node is shown. Figure 4 Seven parent level nodes are shown for each child node of the transform node.
[0097] The attribute a of each child node upIt is predicted as follows based on its distance from its parent node.
[0098] a up =Σω k a k / ∑ω k
[0099] where a k is an attribute of one of its parent nodes, and ω k is a weight that depends on the distance. In G-PCC, ω parent :ω coplane :ω coline =4:2:1.
[0100] 3.2.2 Early Termination for Transform Domain Prediction
[0101] Early termination is introduced to reduce complexity. In the upsampled transform domain prediction, 7 parent-level neighbor nodes are used to create prediction values for each encoding target node (child node) of the transform node. And there are a total of 19 parent-level neighbor nodes (including the parent node, i.e., the transform unit node), which are used to create prediction values for all 8 encoding target nodes of the transform unit node. Because the number of valid neighbor parent nodes is large, the prediction accuracy will be better in denser point clouds. On the contrary, the prediction accuracy will be poor in sparse point clouds. Based on this feature, early termination for upsampled transform domain prediction is introduced to reduce encoding time. In early termination, the following two parameters are calculated in every 8 child nodes of the transform unit node.
[0102] NumValidP: The total number of valid parent-level neighbor nodes (including the parent node).
[0103] NumValidGP: The total number of valid grandparent-level neighbor nodes (including the grandparent node).
[0104] Then, in the case that NumValidP or NumValidGP is less than the threshold, the prediction will be disabled. This means that when the number of valid neighbor nodes becomes small, the prediction is terminated.
[0105] 3.3 Problem
[0106] Existing designs for point cloud attribute prediction in region-adaptive hierarchical transformation have the following problems:
[0107] 1. In the current design, a binary search algorithm is used to find coplanar parent-level neighbors and colinear parent-level neighbors. However, binary search is frequently performed during the neighbor search process and results in high time complexity. If the binary search algorithm can be replaced by a faster search algorithm (e.g., a lookup table algorithm), a lot of encoding and decoding time can be saved.
[0108] 4. Detailed solution
[0109] In order to solve the above problems and some unmentioned problems, the following method is disclosed. The embodiments should be considered as examples to explain the general concept and should not be interpreted in a narrow way. In addition, these embodiments can be applied alone or in combination in any way.
[0110] 1) Nodes may be stored at the decoder and / or encoder.
[0111] a. In one example, nodes may be stored in a data structure.
[0112] b. In one example, the data structure may be an array (which may be 1D or nD), a list, a map, etc.
[0113] c. In one example, a node index may refer to a unique indicator of a node in a data structure.
[0114] i. In one example, a node index may be the position of a node in a data structure.
[0115] ii. In one example, a node index may be a pointer to a node in a data structure.
[0116] 2) A lookup table may be used to store at least one node index.
[0117] a. In one example, assume that the lookup table is T[f], then T[f] is the node index, and f can be the Morton code, Hilbert code, or other transformed code of the node position.
[0118] i. In one example, the converted code may be a converted code of a portion of bits of a node position.
[0119] ii. In one example, the converted code may be the converted code of all bits of the node position.
[0120] b. In one example, assuming the lookup table is T[x][y][z], then T[x][y][z] is the node index, and x, y, z can be the node position.
[0121] i. In one example, the point location may be a partial bit of the node location.
[0122] ii. In one example, the point location may be all bits of the node location.
[0123] c. In one example, the lookup table can be 1D, 2D or 3D.
[0124] d. In one example, the lookup table can be a 3D array.
[0125] e. In one example, the lookup table may be a hash table.
[0126] f. In one example, the index to the lookup table may be a Morton code, a Hilbert code, or other transformed code of the node position.
[0127] i. In one example, the converted code may be a converted code of a portion of bits of a node position.
[0128] ii. In one example, the converted code may be the converted code of all bits of the node position.
[0129] g. In one example, the index of the lookup table can be the node position.
[0130] i. In one example, the point location may be a partial bit of the node location.
[0131] ii. In one example, the point location may be all bits of the node location.
[0132] h. In one example, a null index can be used to indicate that a node does not exist.
[0133] i. In one example, the empty index may be a predefined index.
[0134] 1. In one example, the predefined index can be used only when the corresponding node does not exist.
[0135] 2. In one example, the predefined index may be -1.
[0136] 3) The nodes whose indices are stored in the lookup table can be in a finite area.
[0137] a. In one example, nodes whose indices are stored in a lookup table may share the same octree depth.
[0138] b. In one example, the nodes whose indices are stored in the lookup table may have different octree depths.
[0139] c. In one example, the limited area may be a regular area.
[0140] i. In one example, the finite area may be a rectangular area.
[0141] ii. In one example, the limited area may be a square area.
[0142] 1. In one example, a square area may correspond to one octree node within one octree depth.
[0143] d. In one example, the limited area may be an irregular area.
[0144] i. In one example, the finite region may include a rectangular region and its neighboring nodes.
[0145] 1. In one example, a neighbor node may be a node that shares at least a face, an edge, or a vertex with the rectangular region.
[0146] ii. In one example, the finite region may include a square region and its neighboring nodes.
[0147] 1. In one example, a neighbor node may be a node that shares at least a face, an edge, or a vertex with the square area.
[0148] iii. In the above description, the neighbor nodes may share the same octree depth as the node.
[0149] e. At least one indication may be used to indicate the size of the limited area.
[0150] i. In one example, the indication may be the size of the limited area.
[0151] ii. In one example, the size of the limited area may be a function of the indicator value.
[0152] 1. In one example, the function may be a linear function, a power function, an exponential function, a logarithmic function, etc.
[0153] iii. In one example, an indication may indicate the size of one dimension of a limited area.
[0154] iv. The indication may be transmitted to the decoder via a signal.
[0155] 1. In one example, the indication may be encoded using fixed length codec, unary codec, truncated unary codec, etc.
[0156] 2. In one example, the indication may be encoded using at least one context in arithmetic coding.
[0157] 3. In one example, the indication may be bypassed for encoding and decoding.
[0158] 4. In one example, the indication may be encoded in a predictive manner.
[0159] 5. The indication can be a constant which is the same on the decoder side and the encoder side.
[0160] 4) Lookup tables can be used for nearest neighbor searches.
[0161] a. In one example, a null index can be used to indicate that a node does not exist.
[0162] i. In one example, the empty index may be a predefined index.
[0163] 1. In one example, the predefined index can be used only when the corresponding node does not exist.
[0164] 2. In one example, the predefined index may be -1.
[0165] b. In one example, the lookup table may be initialized with an empty index.
[0166] c. In one example, the lookup table may be initialized prior to the neighbor search and prediction process.
[0167] i. In one example, the lookup table may be initialized by visiting all nodes in a finite region.
[0168] d. In one example, the lookup table may be reset to an empty index after the prediction process.
[0169] i. In one example, the lookup table can be reset to an empty index by visiting all nodes in a finite region.
[0170] e. In one example, the neighbor search may be performed based on a lookup table.
[0171] i. In one example, if the index of a node is not an empty index in the lookup table, the node can be found by the index stored in the lookup table.
[0172] ii. In one example, if the index of a node is a null index in the lookup table, the node can be deduced to be a null node.
[0173] 5) An indication can be used to indicate the memory size of the lookup table.
[0174] a. In one example, the indication may be the memory size of the lookup table.
[0175] b. In one example, the memory size of the lookup table may be a function of the indication value.
[0176] i. In one example, the function may be a linear function, a power function, an exponential function, a logarithmic function, etc.
[0177] c. The indication may be transmitted to the decoder via a signal.
[0178] i. In one example, the indication may be encoded using fixed length codec, unary codec, truncated unary codec, etc.
[0179] ii. In one example, the indication may be encoded using at least one context in arithmetic coding.
[0180] iii. In one example, the indication may be bypassed codec.
[0181] iv. In one example, the indication may be encoded in a predictive manner.
[0182] d. The indication can be a constant that is the same on the decoder side and the encoder side.
[0183] 6) An indication may be used to indicate whether a lookup table is used to store node indices.
[0184] a. This indication may be transmitted to the decoder via a signal.
[0185] i. In one example, the indication may be encoded using fixed length codec, unary codec, truncated unary codec, etc.
[0186] ii. In one example, the indication may be encoded using at least one context in arithmetic coding.
[0187] iii. In one example, the indication may be bypassed codec.
[0188] iv. In one example, the indication may be encoded in a predictive manner.
[0189] b. The indication can be a constant that is the same on the decoder side and the encoder side.
[0190] 7) Lookup tables can be built at the decoder and / or encoder.
[0191] a. In one example, if the lookup table is a 3D table and the node position is an index into the lookup table, i.e., T[x][y][z] is the index of the node whose position is (x, y, z), then memory may be allocated to the 3D lookup table and all entries of the lookup table may be initialized with empty indexes.
[0192] b. In one example, the lookup table is initialized by accessing all nodes in the limited area stored in the lookup table, that is, setting the corresponding node index in the 3D lookup table for each node in the limited area.
[0193] 8) A look-up table may be built based on information signaled from the encoder to the decoder.
[0194] a. In one example, if the lookup table is a 3D table and the node position is an index into the lookup table, i.e., T[x][y][z] is the index of the node whose position is (x, y, z), then memory may be allocated to the 3D lookup table and all entries of the lookup table may be initialized with empty indexes.
[0195] i. In one example, the memory size of the lookup table may be determined by an indication, and the indication may be signaled from the encoder to the decoder.
[0196] b. In one example, the lookup table is initialized by accessing all nodes in the limited area stored in the lookup table, that is, setting the corresponding node index in the 3D lookup table for each node in the limited area.
[0197] 5. Examples
[0198] Figure 5 An example of a codec flow 500 according to an embodiment of the present disclosure is shown. At 510, a lookup table is constructed according to an indication of determining the memory size of the lookup table. At 520, the lookup table is initialized with an empty index. Then, at 530, the lookup table is initialized by accessing all nodes in a limited area stored in the lookup table. At 540, when a limited area is encoded and decoded (such as RAHT prediction), the neighbor index is searched in the lookup table (if necessary). At 550, it is determined whether the neighbor index is equal to the empty index.
[0199] If so, flow 500 branches to the "yes" branch and finds a neighbor. At 560, it may be determined that there is no neighbor, and flow 500 then proceeds to 580 where, after encoding and decoding the limited region, the lookup table is reset with an empty index.
[0200] On the other hand, if at 550 the neighbor index is determined not to be equal to the null index, flow 500 goes to the "no" branch and at 570, the neighbor can be found and that information will be used. At 580, after encoding and decoding the limited area, the lookup table is reset with the null index.
[0201] More details are discussed further below. Figure 6 A flowchart of a method 600 for point cloud encoding and decoding according to an embodiment of the present disclosure is shown.
[0202] It should be understood that in the following embodiments, the term "transform block" refers to a space in which there may be (multiple) points of a point cloud or there may not be any point of the point cloud, and the (multiple) points in the transform block will be transformed during the conversion between the point cloud sequence and its bitstream. The transform block may include one or more sub-blocks, and each sub-block may or may not include (multiple) points. The transform block may have one or more neighbor blocks adjacent to the transform block.
[0203] With respect to the term "transform node," it refers to a node that represents or corresponds to a transform block (e.g., in a tree hierarchy). A transform node may have child nodes corresponding to child blocks of the transform block. A transform node may also have a parent node, e.g., in a tree hierarchy, that corresponds to a parent block that includes the transform block.
[0204] At block 610, for conversion between a point cloud sequence including at least one point cloud (PC) sample associated with a plurality of nodes and a bitstream of the point cloud sequence, a node index of a first node of the plurality of nodes is determined. The first node is stored in a data structure and indicated in the data structure by the node index.
[0205] At block 620, the converting is performed based on the location indication and the occupancy information.
[0206] The method 600 enables reducing the time complexity of searching. By using the fast search solution proposed in the embodiment of the present disclosure, such as the lookup table algorithm, a large amount of encoding and decoding time can be saved.
[0207] In some embodiments, the first node may be stored at the decoder and / or encoder side.
[0208] In some embodiments, the data structure also includes occupancy information indicating whether a point exists in the first node.
[0209] In some embodiments, the data structure may be in the form of an array, a list, or a map.
[0210] In some embodiments, the node index may be the node position of the first node in the data structure. Alternatively, the node index may be a pointer to the first node in the data structure.
[0211] In some embodiments, the node index may be stored in a lookup table.
[0212] In some embodiments, in the lookup table, the node index may be represented as T[f]. Alternatively, f represents the converted code of the node position of the first node.
[0213] In some embodiments, the converted code may be a Morton code or a Hilbert code.
[0214] In some embodiments, the converted code may be a converted code of a portion of the bits of the node position, or wherein the converted code may be a converted code of all the bits of the node position.
[0215] In some embodiments, in a lookup table, a node index may be represented as T[x][y][z], where x, y, and z indicate the node position of the first node.
[0216] In some embodiments, the point position may be indicated by partial bits of the node position, or wherein the point position may be indicated by all bits of the node position.
[0217] In some embodiments, the lookup table may be 1D, 2D, or 3D. Alternatively, the lookup table may be a 3D array. Alternatively, the lookup table may be a hash table.
[0218] In some embodiments, the node index in the lookup table may be a converted code of the node position of one of the plurality of nodes.
[0219] In some embodiments, the converted code may be a Morton code or a Hilbert code.
[0220] In some embodiments, the converted code may be a converted code of a portion of the bits of the node position, or wherein the converted code may be a converted code of all the bits of the node position.
[0221] In some embodiments, the converted code may be a converted code of a portion of the bits of the node position, or wherein the converted code may be a converted code of all the bits of the node position.
[0222] In some embodiments, the node index of the lookup table may be a node position.
[0223] In some embodiments, the point position may be indicated by partial bits of the node position or all bits of the node position.
[0224] In some embodiments, a null index may be used to indicate that a node does not exist.
[0225] In some embodiments, the empty index may be a predefined index.
[0226] In some embodiments, a predefined index may be used only when the corresponding node does not exist.
[0227] In some embodiments, the empty index may be -1.
[0228] In some embodiments, the nodes whose indices are stored in the lookup table are in a finite area.
[0229] In some embodiments, the nodes whose indexes are stored in the lookup table share the same tree level or have different tree levels.
[0230] In some embodiments, the tree hierarchy comprises an octree depth.
[0231] In some embodiments, the limited area may be a regular area.
[0232] In some embodiments, the limited area may be a rectangular area or a square area.
[0233] In some embodiments, the square region corresponds to one octree node within one octree depth.
[0234] In some embodiments, the limited area may be an irregular area.
[0235] In some embodiments, the limited area includes a rectangular area and its neighboring nodes. Alternatively, the limited area includes a square area and its neighboring nodes.
[0236] In some embodiments, the neighbor node is a node that shares at least one of a face, an edge, or a vertex with the rectangular region or the square region.
[0237] In some embodiments, the neighboring nodes share the same tree level as the first node.
[0238] In some embodiments, the tree level includes an octree depth.
[0239] In some embodiments, at least one indication may be used to indicate a size of the limited area.
[0240] In some embodiments, the indication may be a size of the finite region, wherein the size of the finite region may be a function of a value of the indication, wherein the indication is used to indicate a size of one dimension of the finite region. Alternatively, the indication may be indicated to a decoder.
[0241] In some embodiments, the function includes at least one of a linear function, a power function, an exponential function, or a logarithmic function.
[0242] In some embodiments, the indication may be encoded using at least one of a fixed length codec, a unary codec, or a truncated unary codec. Alternatively, the indication may be encoded using at least one context in an arithmetic codec. Alternatively, the indication may be bypass encoded. Alternatively, the indication may be encoded in a predictive manner. Alternatively, the indication may be a constant that is the same on the decoder side and the encoder side.
[0243] In some embodiments, a lookup table may be used for neighbor searching.
[0244] In some embodiments, a null index may be used to indicate that a node does not exist.
[0245] In some embodiments, the empty index may be a predefined index.
[0246] In some embodiments, the predefined index is only used if the corresponding node does not exist, or where the predefined index is -1.
[0247] In some embodiments, the lookup table may be initialized with an empty index.
[0248] In some embodiments, the lookup table may be initialized prior to the neighbor search and prediction process.
[0249] In some embodiments, the lookup table may be initialized by visiting all nodes in a limited region.
[0250] In some embodiments, the lookup table may be reset to an empty index after the prediction process.
[0251] In some embodiments, the lookup table may be reset to an empty index by accessing all nodes in the finite region.
[0252] In some embodiments, the neighbor search may be performed based on a lookup table.
[0253] In some embodiments, if the index of a node is not an empty index in the lookup table, the node can be found by the index stored in the lookup table. Alternatively, if the index of a node is an empty index in the lookup table, the node can be deduced to be an empty node.
[0254] In some embodiments, the indication may be used to indicate a memory size of the lookup table.
[0255] In some embodiments, the indication may be a memory size of the lookup table.
[0256] In some embodiments, the memory size of the lookup table may be a function of the indicator value.
[0257] In some embodiments, the function may be one of a linear function, a power function, an exponential function, or a logarithmic function.
[0258] In some embodiments, this indication may be indicated to a decoder.
[0259] In some embodiments, the indication may be encoded using one of a fixed length codec, a unary codec, or a truncated unary codec. Alternatively, the indication may be encoded using at least one context in an arithmetic codec. Alternatively, the indication may be bypass encoded. Alternatively, the indication may be encoded in a predictive manner.
[0260] In some embodiments, the indication may be a constant that is the same on the decoder side and the encoder side.
[0261] In some embodiments, the indication is used to indicate whether the lookup table is used to store the node index.
[0262] In some embodiments, this indication may be indicated to a decoder.
[0263] In some embodiments, the indication may be encoded using one of a fixed length codec, a unary codec, or a truncated unary codec. Alternatively, the indication may be encoded using at least one context in an arithmetic codec. Alternatively, the indication may be bypass encoded. Alternatively, the indication may be encoded in a predictive manner.
[0264] In some embodiments, the indication may be a constant that is the same on the decoder side and the encoder side.
[0265] In some embodiments, the lookup table may be established at the decoder and / or encoder.
[0266] In some embodiments, if the lookup table is a 3D table and the node position is a node index of the lookup table, memory is allocated to the lookup table and each entry in the lookup table may be initialized with a null index.
[0267] In some embodiments, the lookup table may be initialized by setting, for each node in the finite region, a corresponding node index in the lookup table.
[0268] In some embodiments, the lookup table may be built based on information indicated from the encoder to the decoder.
[0269] In some embodiments, if the lookup table is a 3D table and the node position is a node index of the lookup table, memory is allocated to the lookup table and each entry in the lookup table is initialized with a null index.
[0270] In some embodiments, the size of the memory of the lookup table may be determined by an indication, and the indication may be indicated from the encoder to the decoder.
[0271] In some embodiments, the lookup table may be initialized by setting, for each node in the finite region, a corresponding node index in the lookup table.
[0272] In some embodiments, the at least one PC sample comprises one of: a frame, a picture, a slice, a sub-frame, a sub-picture, a slice, or a segment.
[0273] In some embodiments, the converting comprises encoding the at least one PC sample into the bitstream.
[0274] In some embodiments, the converting comprises decoding the at least one PC sample from the bitstream.
[0275] According to another embodiment of the present disclosure, a non-transitory computer-readable recording medium is provided. The non-transitory computer-readable recording medium stores a bit stream of a point cloud sequence, and the bit stream of the point cloud sequence is generated by a method performed by a device for point cloud encoding and decoding. The method includes: determining a node index of a first node among a plurality of nodes, wherein the point cloud sequence includes at least one point cloud (PC) sample associated with the plurality of nodes, and the first node is stored in a data structure and indicated by a node index in the data structure; and generating the bit stream based on a position indication and occupancy information.
[0276] According to some further embodiments of the present disclosure, a method for storing a bitstream of a point cloud sequence is provided. The method includes: determining a node index of a first node among a plurality of nodes, wherein the point cloud sequence includes at least one point cloud (PC) sample associated with the plurality of nodes, and the first node is stored in a data structure and indicated by the node index in the data structure; generating the bitstream based on a position indication and occupancy information; and storing the bitstream in a non-transitory computer-readable recording medium.
[0277] Embodiments of the present disclosure may be described according to the following clauses, features of which may be combined in any reasonable way.
[0278] Item 1. A method for point cloud encoding and decoding, comprising: determining a node index of a first node among a plurality of nodes for conversion between a point cloud sequence comprising at least one point cloud (PC) sample associated with a plurality of nodes and a bit stream of the point cloud sequence, wherein the first node is stored in a data structure and indicated by the node index in the data structure; and performing the conversion based on a position indication and occupancy information.
[0279] Item 2. A method according to item 1, wherein the first node is stored at a decoder side and / or an encoder side.
[0280] Item 3. A method according to Item 1, wherein the data structure also includes occupancy information indicating whether a point exists in the first node.
[0281] Item 4. A method according to Item 1, wherein the data structure is in the form of an array, a list or a map.
[0282] Item 5. A method according to item 1, wherein the node index is the node position of the first node in the data structure, or wherein the node index is a pointer to the first node in the data structure.
[0283] Item 6. A method according to item 1, wherein the node index is stored in a lookup table.
[0284] Item 7. The method of Item 6, wherein in the lookup table, the node index is represented as T[f], where f indicates a converted code of a node position of the first node.
[0285] Clause 8. The method of clause 7, wherein the converted code is a Morton code or a Hilbert code.
[0286] Item 9. A method according to Item 7 or 8, wherein the converted code is a converted code of a portion of the bits of the node position, or wherein the converted code is a converted code of all the bits of the node position.
[0287] Item 10. The method of item 6, wherein in the lookup table, the node index is represented as T[x][y][z], where x, y, and z indicate a node position of the first node.
[0288] Item 11. A method according to item 10, wherein the point position is indicated by a portion of the bits of the node position, or wherein the point position is indicated by all the bits of the node position.
[0289] Item 12. A method according to Item 6, wherein the lookup table is 1D, 2D or 3D, or wherein the lookup table is a 3D array, or wherein the lookup table is a hash table.
[0290] Item 13. The method of Item 6, wherein the node index in the lookup table is a converted code of a node position of one of the plurality of nodes.
[0291] Item 14. The method of Item 13, wherein the converted code is a Morton code or a Hilbert code.
[0292] Item 15. A method according to Item 13 or 14, wherein the converted code is a converted code of a portion of the bits of the node position, or wherein the converted code is a converted code of all the bits of the node position.
[0293] Item 16. A method according to Item 13 or 14, wherein the converted code is a converted code of a portion of the bits of the node position, or wherein the converted code is a converted code of all the bits of the node position.
[0294] Item 17. The method of Item 6, wherein the node index of the lookup table is a node position.
[0295] Item 18. The method of Item 17, wherein the point position is indicated by a portion of the bits of the node position or all of the bits of the node position.
[0296] Item 19. A method according to Item 6, wherein a null index is used to indicate that a node does not exist.
[0297] Item 20. The method of Item 19, wherein the empty index is a predefined index.
[0298] Item 21. A method according to Item 20, wherein the predefined index can only be used when the corresponding node does not exist.
[0299] Item 22. The method of Item 20, wherein the empty index is -1.
[0300] Item 23. The method of Item 6, wherein the nodes whose indices are stored in the lookup table are in a finite area.
[0301] Item 24. The method of Item 23, wherein the nodes whose indices are stored in the lookup table share the same tree level or have different tree levels.
[0302] Item 25. A method according to Item 24, wherein the tree hierarchy includes an octree depth.
[0303] Item 26. A method according to Item 23, wherein the limited area is a regular area.
[0304] Item 27. The method according to Item 23 or 26, wherein the limited area is a rectangular area or a square area.
[0305] Item 28. The method of Item 27, wherein the square region corresponds to an octree node within one octree depth.
[0306] Item 29. The method according to Item 23, wherein the limited area is an irregular area.
[0307] Item 30. A method according to Item 29, wherein the limited area includes a rectangular area and neighboring nodes of the rectangular area, or wherein the limited area includes a square area and neighboring nodes of the square area.
[0308] Item 31. A method according to Item 30, wherein the neighboring node is a node that shares at least one of a face, an edge, or a vertex with the rectangular area or the square area.
[0309] Item 32. A method according to any one of Items 29 to 31, wherein the neighbor node shares the same octree depth as the first node.
[0310] Item 33. A method according to Item 23, wherein at least one indication is used to indicate a size of the limited area.
[0311] Item 34. A method according to item 33, wherein the indication is the size of the limited area, wherein the size of the limited area is a function of the value of the indication, wherein the indication indicates the size of a dimension of the limited area, or wherein the indication is indicated to a decoder.
[0312] Item 35. A method according to Item 34, wherein the function includes at least one of a linear function, a power function, an exponential function or a logarithmic function.
[0313] Item 36. A method according to item 34, wherein the indication is encoded using at least one of fixed length coding, unary coding or truncated unary coding, or wherein the indication is encoded using at least one context in arithmetic coding, or wherein the indication is bypass coded, or wherein the indication is encoded in a predictive manner, or wherein the indication is a constant, and the constant is the same on the decoder side and the encoder side.
[0314] Item 37. A method according to Item 6, wherein the lookup table is used for neighbor searching.
[0315] Item 38. A method according to Item 37, wherein a null index is used to indicate that a node does not exist.
[0316] Item 39. A method according to Item 38, wherein the empty index is a predefined index.
[0317] Item 40. The method of Item 39, wherein the predefined index is used only when the corresponding node does not exist, or wherein the predefined index is -1.
[0318] Item 41. The method of Item 37, wherein the lookup table is initialized with an empty index.
[0319] Item 42. A method according to Item 37, wherein the lookup table is initialized before the neighbor search and prediction process.
[0320] Clause 43. The method of clause 42, wherein the lookup table is initialized by visiting all nodes in the finite region.
[0321] Item 44. The method of Item 37, wherein the lookup table is reset to an empty index after the prediction process.
[0322] Item 45. The method of Item 44, wherein the lookup table is reset to an empty index by accessing all nodes in the finite region.
[0323] Item 46. A method according to Item 37, wherein the neighbor search is performed based on the lookup table.
[0324] Item 47. A method according to Item 46, wherein if the index of a node is not the empty index in the lookup table, the node can be found by the index stored in the lookup table, or wherein if the index of a node is the empty index in the lookup table, the node can be deduced to be an empty node.
[0325] Item 48. The method of Item 6, wherein the indication is used to indicate a memory size of the lookup table.
[0326] Item 49. The method of Item 48, wherein the indication is the memory size of the lookup table.
[0327] Item 50. The method of Item 48, wherein the memory size of the lookup table is a function of the indicator value.
[0328] Item 51. A method according to Item 50, wherein the function is one of a linear function, a power function, an exponential function or a logarithmic function.
[0329] Item 52. A method according to Item 48, wherein the indication is indicated to a decoder.
[0330] Item 53. A method according to item 52, wherein the indication is encoded using one of a fixed length codec, a unary codec or a truncated unary codec, or wherein the indication is encoded using at least one context in an arithmetic codec, or wherein the indication is bypass encoded, or wherein the indication is encoded in a predictive manner.
[0331] Item 54. A method according to Item 48, wherein the indication is a constant, and the constant is the same at the decoder side and the encoder side.
[0332] Item 55. A method according to Item 6, wherein an indication is used to indicate whether the lookup table is used to store the node index.
[0333] Item 56. A method according to Item 55, wherein the indication is indicated to the decoder.
[0334] Item 57. A method according to item 56, wherein the indication is encoded using one of a fixed length codec, a unary codec or a truncated unary codec, or wherein the indication is encoded using at least one context in an arithmetic codec, or wherein the indication is bypass encoded, or wherein the indication is encoded in a predictive manner.
[0335] Item 58. A method according to Item 55, wherein the indication is a constant, and the constant is the same on the decoder side and the encoder side.
[0336] Item 59. A method according to item 6, wherein the lookup table is established at the decoder and / or encoder.
[0337] Item 60. The method of Item 59, wherein if the lookup table is a 3D table and the node position is the node index of the lookup table, memory is allocated to the lookup table and each entry in the lookup table is initialized with a null index.
[0338] Item 61. The method of Item 59, wherein the lookup table is initialized by setting a corresponding node index in the lookup table for each node in the limited area.
[0339] Item 62. A method according to Item 6, wherein the lookup table is established based on information indicated from the encoder to the decoder.
[0340] Item 63. The method of Item 62, wherein if the lookup table is a 3D table and the node position is the node index of the lookup table, memory is allocated to the lookup table and each entry in the lookup table is initialized with a null index.
[0341] Item 64. The method of Item 63, wherein the size of the memory of the lookup table is determined by an indication, and the indication is indicated from an encoder to a decoder.
[0342] Item 65. The method of Item 63, wherein the lookup table is initialized by setting, for each node in the limited area, a corresponding node index in the lookup table.
[0343] Item 66. A method according to any one of Items 1 to 65, wherein the at least one PC sample comprises one of the following: a frame, a picture, a slice, a sub-frame, a sub-picture, a slice, or a segment.
[0344] Item 67. A method according to any one of Items 1 to 66, wherein the conversion comprises encoding the at least one PC sample into the bitstream.
[0345] Item 68. A method according to any one of Items 1 to 66, wherein the converting comprises decoding the at least one PC sample from the bitstream.
[0346] Item 69. An apparatus for point cloud encoding and decoding, comprising a processor and a non-volatile memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to perform a method according to any one of items 1 to 68.
[0347] Item 70. A non-transitory computer-readable storage medium storing instructions that cause a processor to perform a method according to any one of Items 1 to 68.
[0348] Item 71. A non-transitory computer-readable recording medium storing a bit stream of a point cloud sequence, the bit stream of the point cloud sequence being generated by a method executed by an apparatus for point cloud encoding and decoding, the method comprising: determining a node index of a first node among a plurality of nodes, wherein the point cloud sequence comprises at least one point cloud (PC) sample associated with the plurality of nodes, and the first node is stored in a data structure and indicated by the node index in the data structure; and generating the bit stream based on a position indication and occupancy information.
[0349] Item 72. A method for storing a bitstream of a point cloud sequence, comprising: determining a node index of a first node among a plurality of nodes, wherein the point cloud sequence includes at least one point cloud (PC) sample associated with the plurality of nodes, and the first node is stored in a data structure and indicated by the node index in the data structure; generating the bitstream based on a position indication and occupancy information; and storing the bitstream in a non-transitory computer-readable recording medium.
[0350] Example Device
[0351] Figure 7 A block diagram of a computing device 700 in which various embodiments of the present disclosure may be implemented is shown. The computing device 700 may be implemented as a source device 110 (or a GPCC encoder 116 or 200) or a destination device 120 (or a GPCC decoder 126 or 300), or may be included in a source device 110 (or a GPCC encoder 116 or 200) or a destination device 120 (or a GPCC decoder 126 or 300).
[0352] It should be understood that Figure 7 The computing device 700 shown in FIG. 7 is for illustrative purposes only and is not intended to in any way imply any limitation on the functionality and scope of the embodiments of the present disclosure.
[0353] like Figure 7As shown, computing device 700 includes a general computing device 700. Computing device 700 may include at least one or more processors or processing units 710, memory 720, storage unit 730, one or more communication units 740, one or more input devices 750, and one or more output devices 760.
[0354] In some embodiments, the computing device 700 can be implemented as any user terminal or server terminal with computing power. The server terminal can be a server, a large computing device, etc. provided by a service provider. The user terminal can be, for example, any type of mobile terminal, fixed terminal or portable terminal, including a mobile phone, a station, a unit, a device, a multimedia computer, a multimedia tablet computer, an Internet node, a communicator, a desktop computer, a laptop computer, a notebook computer, a netbook computer, a tablet computer, a personal communication system (PCS) device, a personal navigation device, a personal digital assistant (PDA), an audio / video player, a digital camera / camcorder, a positioning device, a television receiver, a radio broadcast receiver, an e-book device, a gaming device, or any combination thereof, including the accessories and peripherals of these devices, or any combination thereof. It is conceivable that the computing device 700 can support any type of interface to the user (such as a "wearable" circuit device, etc.).
[0355] The processing unit 710 may be a physical processor or a virtual processor and may implement various processes based on a program stored in the memory 720. In a multi-processor system, multiple processing units execute computer executable instructions in parallel to increase the parallel processing capability of the computing device 700. The processing unit 710 may also be referred to as a central processing unit (CPU), a microprocessor, a controller, or a microcontroller.
[0356] The computing device 700 typically includes various computer storage media. Such media can be any media accessible by the computing device 700, including but not limited to volatile media and non-volatile media, or removable media and non-removable media. The memory 720 can be a volatile memory (e.g., a register, a cache, a random access memory (RAM)), a non-volatile memory (such as a read-only memory (ROM), an electrically erasable programmable read-only memory (EEPROM) or flash memory) or any combination thereof. The storage unit 730 can be any removable or non-removable medium, and can include machine-readable media, such as a memory, a flash drive, a disk, or other media that can be used to store information and / or data and can be accessed in the computing device 700.
[0357] The computing device 700 may also include additional removable / non-removable storage media, volatile / non-volatile storage media. Figure 7Although not shown in the figure, a disk drive for reading from and / or writing to a removable nonvolatile disk and an optical drive for reading from and / or writing to a removable nonvolatile optical disk may be provided. In this case, each drive may be connected to the bus (not shown) via one or more data medium interfaces.
[0358] The communication unit 740 communicates with another computing device via a communication medium. In addition, the functions of the components in the computing device 700 can be implemented by a single computing cluster or multiple computing machines, which can communicate via a communication connection. Therefore, the computing device 700 can operate in a networked environment using logical connections to one or more other servers, networked personal computers (PCs), or other general network nodes.
[0359] The input device 750 may be one or more of various input devices, such as a mouse, keyboard, trackball, voice input device, etc. The output device 760 may be one or more of various output devices, such as a display, a speaker, a printer, etc. With the aid of the communication unit 740, the computing device 700 may also communicate with one or more external devices (not shown), such as storage devices and display devices, and the computing device 700 may also communicate with one or more devices that enable a user to interact with the computing device 700, or, if necessary, the computing device 700 may also communicate with any device (e.g., a network card, a modem, etc.) that enables the computing device 700 to communicate with one or more other computing devices. Such communication may be performed via an input / output (I / O) interface (not shown).
[0360] In some embodiments, some or all components of the computing device 700 may also be arranged in a cloud computing architecture rather than being integrated in a single device. In a cloud computing architecture, components may be provided remotely and work together to implement the functions described in the present disclosure. In some embodiments, cloud computing provides computing, software, data access and storage services, which will not require the end user to know the physical location or configuration of the system or hardware that provides these services. In various embodiments, cloud computing provides services via a wide area network (such as the Internet) using a suitable protocol. For example, a cloud computing provider provides an application via a wide area network, which can be accessed through a web browser or any other computing component. The software or components of the cloud computing architecture and the corresponding data may be stored on a server at a remote location. The computing resources in a cloud computing environment may be merged or distributed at the location of a remote data center. Cloud computing infrastructure can provide services through a shared data center, although they appear as a single access point to the user. Therefore, the cloud computing architecture may be used to provide the components and functions described herein from a service provider at a remote location. Alternatively, the components and functions described herein may be provided by a conventional server, or may be installed on a client device directly or otherwise.
[0361] In an embodiment of the present disclosure, the computing device 700 may be used to implement point cloud encoding / decoding. The memory 720 may include one or more point cloud encoding / decoding modules 725 having one or more program instructions. These modules are accessible and executable by the processing unit 710 to perform the functions of the various embodiments described herein.
[0362] In an example embodiment of performing point cloud encoding, input device 750 may receive point cloud data as input to be encoded 770. The point cloud data may be processed, for example, by point cloud encoding and decoding module 725 to generate an encoded bitstream. The encoded bitstream may be provided as output 780 via output device 760.
[0363] In an example embodiment of performing point cloud decoding, the input device 750 may receive an encoded bitstream as input 770. The encoded bitstream may be processed, for example, by the point cloud codec module 725 to generate decoded point cloud data. The decoded point cloud data may be provided as output 780 via the output device 760.
[0364] Although the present disclosure has been specifically shown and described with reference to the preferred embodiments of the present disclosure, it will be appreciated by those skilled in the art that various changes may be made in form and detail without departing from the spirit and scope of the present application as defined by the appended claims. These modifications are intended to be encompassed by the scope of the present application. Therefore, the foregoing description of the embodiments of the present application is not intended to be limiting.
Claims
1. A method for point cloud encoding and decoding, comprising: For conversion between a point cloud sequence including at least one point cloud (PC) sample associated with a plurality of nodes and a bitstream of the point cloud sequence, determining a node index of a first node of the plurality of nodes, wherein the first node is stored in a data structure and indicated in the data structure by the node index; as well as The converting is performed based on the position indication and the occupancy information. 2 . The method according to claim 1 , wherein the first node is stored at a decoder side and / or an encoder side. 3 . The method according to claim 1 , wherein the data structure further comprises occupancy information indicating whether a point exists in the first node. The method of claim 1 , wherein the data structure is in the form of an array, a list, or a map.
5. The method according to claim 1, wherein the node index is the node position of the first node in the data structure, or The node index is a pointer pointing to the first node in the data structure. The method of claim 1 , wherein the node index is stored in a lookup table. 7 . The method of claim 6 , wherein in the lookup table, the node index is represented as T[f], where f indicates a converted code of a node position of the first node.
8. The method of claim 7, wherein the converted code is a Morton code or a Hilbert code.
9. The method according to claim 7 or 8, wherein the converted code is a converted code of a portion of bits of the node position, or The converted code is the converted code of all bits of the node position.
10. The method of claim 6, wherein in the lookup table, the node index is represented as T[x][y][z], where x, y, and z indicate a node position of the first node.
11. The method according to claim 10, wherein the point position is indicated by a partial bit of the node position, or The point position is indicated by all bits of the node position.
12. The method of claim 6, wherein the lookup table is 1D, 2D or 3D, or where the lookup table is a 3D array, or The lookup table is a hash table.
13. The method of claim 6, wherein the node index in the lookup table is a converted code of a node position of one of the plurality of nodes.
14. The method of claim 13, wherein the converted code is a Morton code or a Hilbert code.
15. The method according to claim 13 or 14, wherein the converted code is a converted code of a portion of bits of the node position, or The converted code is the converted code of all bits of the node position.
16. The method according to claim 13 or 14, wherein the converted code is a converted code of a portion of bits of the node position, or The converted code is the converted code of all bits of the node position. The method of claim 6 , wherein the node index of the lookup table is a node position.
18. The method according to claim 17, wherein the point position is indicated by a portion of bits of the node position or all bits of the node position.
19. The method of claim 6, wherein a null index is used to indicate that a node does not exist.
20. The method of claim 19, wherein the empty index is a predefined index.
21. The method of claim 20, wherein the predefined index can be used only when the corresponding node does not exist.
22. The method of claim 20, wherein the empty index is -1.
23. The method of claim 6, wherein the nodes whose indices are stored in the lookup table are in a finite area.
24. The method of claim 23, wherein the nodes whose indexes are stored in the lookup table share the same tree level or have different tree levels.
25. The method of claim 24, wherein the tree level comprises an octree depth.
26. The method of claim 23, wherein the limited area is a regular area.
27. The method according to claim 23 or 26, wherein the limited area is a rectangular area or a square area.
28. The method of claim 27, wherein the square area corresponds to an octree node within one octree depth. The method according to claim 23 , wherein the limited area is an irregular area.
30. The method according to claim 29, wherein the limited area comprises a rectangular area and neighboring nodes of the rectangular area, or The limited area includes a square area and neighboring nodes of the square area. 31 . The method according to claim 30 , wherein the neighboring node is a node that shares at least one of a face, an edge, or a vertex with the rectangular area or the square area.
32. The method of any one of claims 29 to 31, wherein the neighbor nodes share the same octree depth as the first node.
33. The method of claim 23, wherein at least one indication is used to indicate a size of the limited area.
34. The method of claim 33, wherein the indication is the size of the limited area, wherein said size of said limited area is a function of a value of said indication, wherein the indication indicates the size of a dimension of the limited area, or The indication is indicated to a decoder.
35. The method of claim 34, wherein the function comprises at least one of a linear function, a power function, an exponential function, or a logarithmic function.
36. The method of claim 34, wherein the indication is encoded using at least one of a fixed length codec, a unary codec, or a truncated unary codec, or wherein the indication is encoded using at least one context in arithmetic coding, or wherein the indication is bypassed by the codec, or wherein the indication is encoded or decoded in a predictive manner, or The indication is a constant which is the same on the decoder side and the encoder side.
37. The method of claim 6, wherein the lookup table is used for a nearest neighbor search.
38. The method of claim 37, wherein a null index is used to indicate that a node does not exist.
39. The method of claim 38, wherein the empty index is a predefined index.
40. The method of claim 39, wherein the predefined index is used only when the corresponding node does not exist, or The predefined index is -1.
41. The method of claim 37, wherein the lookup table is initialized with empty indexes.
42. The method of claim 37, wherein the lookup table is initialized prior to a neighbor search and prediction process.
43. The method of claim 42, wherein the lookup table is initialized by visiting all nodes in the limited area.
44. The method of claim 37, wherein the lookup table is reset to an empty index after the prediction process.
45. The method of claim 44, wherein the lookup table is reset to an empty index by accessing all nodes in the limited region.
46. The method of claim 37, wherein the neighbor search is performed based on the lookup table.
47. The method of claim 46, wherein if the index of a node is not the empty index in the lookup table, the node can be found by the index stored in the lookup table, or If the index of a node is the empty index in the lookup table, the node can be deduced to be an empty node.
48. The method of claim 6, wherein the indication is used to indicate a memory size of the lookup table.
49. The method of claim 48, wherein the indication is the memory size of the lookup table.
50. The method of claim 48, wherein the memory size of the lookup table is a function of the indicator value.
51. The method of claim 50, wherein the function is one of a linear function, a power function, an exponential function, or a logarithmic function.
52. The method of claim 48, wherein the indication is indicated to a decoder.
53. The method of claim 52, wherein the indication is encoded using one of a fixed length codec, a unary codec, or a truncated unary codec, or wherein the indication is encoded using at least one context in arithmetic coding, or wherein the indication is bypassed by the codec, or The indication is encoded and decoded in a predictive manner.
54. The method of claim 48, wherein the indication is a constant that is the same at a decoder side and an encoder side.
55. The method of claim 6, wherein an indication is used to indicate whether the lookup table is used to store the node index.
56. The method of claim 55, wherein the indication is indicated to the decoder.
57. The method of claim 56, wherein the indication is encoded using one of a fixed length codec, a unary codec, or a truncated unary codec, or wherein the indication is encoded using at least one context in arithmetic coding, or wherein the indication is bypassed by the codec, or The indication is encoded and decoded in a predictive manner.
58. The method of claim 55, wherein the indication is a constant that is the same at a decoder side and an encoder side.
59. The method of claim 6, wherein the lookup table is established at a decoder and / or an encoder.
60. The method of claim 59, wherein if the lookup table is a 3D table and a node position is the node index of the lookup table, memory is allocated to the lookup table and each entry in the lookup table is initialized with a null index.
61. The method of claim 59, wherein the lookup table is initialized by setting a corresponding node index in the lookup table for each node in the limited area.
62. The method of claim 6, wherein the lookup table is established based on information indicated from an encoder to a decoder.
63. The method of claim 62, wherein if the lookup table is a 3D table and the node position is the node index of the lookup table, memory is allocated to the lookup table and each entry in the lookup table is initialized with a null index.
64. The method of claim 63, wherein the size of the memory of the lookup table is determined by an indication, and the indication is indicated from an encoder to a decoder.
65. The method of claim 63, wherein the lookup table is initialized by setting a corresponding node index in the lookup table for each node in the limited area.
66. The method of any one of claims 1 to 65, wherein the at least one PC sample comprises one of: frame, picture, slice, subframe, Sub-picture, piece, or part.
67. A method according to any one of claims 1 to 66, wherein the converting comprises encoding the at least one PC sample into the bitstream.
68. The method of any one of claims 1 to 66, wherein the converting comprises decoding the at least one PC sample from the bitstream.
69. A device for point cloud encoding and decoding, comprising a processor and a non-volatile memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to perform a method according to any one of claims 1 to 68.
70. A non-transitory computer-readable storage medium storing instructions that cause a processor to perform the method according to any one of claims 1 to 68.
71. A non-transitory computer-readable recording medium storing a bit stream of a point cloud sequence, wherein the bit stream of the point cloud sequence is generated by a method performed by an apparatus for point cloud encoding and decoding, the method comprising: determining a node index of a first node of a plurality of nodes, wherein the point cloud sequence includes at least one point cloud (PC) sample associated with the plurality of nodes, and the first node is stored in a data structure and indicated in the data structure by the node index; as well as The bitstream is generated based on the location indication and the occupancy information.
72. A method for storing a bitstream of a point cloud sequence, comprising: determining a node index of a first node of a plurality of nodes, wherein the point cloud sequence includes at least one point cloud (PC) sample associated with the plurality of nodes, and the first node is stored in a data structure and indicated in the data structure by the node index; generating the bitstream based on the position indication and the occupancy information; as well as The bit stream is stored in a non-transitory computer-readable recording medium.