Point cloud coding and decoding method, device, equipment and storage medium

CN119948873APending Publication Date: 2025-05-06GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202280100419.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2022-09-28
Publication Date
2025-05-06

AI Technical Summary

Technical Problem

Existing point cloud encoding and decoding methods encode and decode the repeated point information of each non-zero leaf node in the leaf nodes of the encoding and decoding octree, resulting in low encoding and decoding efficiency.

Method used

During point cloud encoding and decoding, the parameters of the current node are determined to determine whether its child nodes contain duplicate points. If it is determined that there are no duplicate points, the encoding and decoding process is skipped, thereby reducing the complexity of encoding and decoding.

Benefits of technology

It improves the efficiency of point cloud encoding and decoding, and saves encoding and decoding time.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119948873A_ABST
    Figure CN119948873A_ABST
Patent Text Reader

Abstract

The invention provides a point cloud coding and decoding method and device, equipment and a storage medium, and the method comprises the steps: in point cloud decoding, for example, in AVS-based point cloud decoding, when a current node of an (N-1) th layer in an octree is decoded, firstly determining a first parameter corresponding to the current node, the first parameter is used for determining whether at least one non-zero child node of the current node comprises a repetition point, the current node is a non-zero node of an (N-1) th layer in an octree of the point cloud, N is the total layer number of the octree, and then geometric decoding is carried out on the current node based on the first parameter. For example, when it is determined that the ith non-zero sub-node of the current node does not include the repetitive point based on the first parameter, decoding of the repetitive point information of the ith non-zero sub-node is skipped, so that the decoding complexity of the point cloud is reduced, the decoding time is saved, and the decoding efficiency is improved.
Need to check novelty before this filing date? Find Prior Art

Description

Point cloud encoding and decoding method, device, equipment and storage medium Technical Field

[0001] The present application relates to the field of point cloud technology, and in particular to a point cloud encoding and decoding method, apparatus, device and storage medium. Background Art

[0002] Capturing the surface of an object using a capture device creates point cloud data, which can contain hundreds of thousands or even more points. During video production, this point cloud data is transmitted between the point cloud encoding device and the point cloud decoding device in the form of point cloud media files. However, such a large number of points poses a challenge to transmission, so the point cloud encoding device must compress the point cloud data before transmission.

[0003] Point cloud compression, also known as point cloud encoding, uses various coding models to map points in the point cloud to nodes and encode these nodes, some of which contain duplicate points. Current encoding and decoding methods, such as the point cloud Audio Video Standard (AVS) encoding standard, require encoding and decoding duplicate point information for every non-zero leaf node in the octree, reducing point cloud encoding and decoding efficiency.

[0004] Summary of the Invention

[0005] The embodiments of the present application provide a point cloud encoding and decoding method, apparatus, device and storage medium, which reduce the complexity of point cloud encoding and decoding, save encoding and decoding time, and thus improve the encoding and decoding efficiency of point clouds.

[0006] In a first aspect, an embodiment of the present application provides a point cloud decoding method, comprising:

[0007] Determine a first parameter corresponding to a current node, where the first parameter is used to determine whether at least one non-zero child node of the current node includes a duplicate point, where the current node is a non-zero node in the N-1th layer of an octree of the point cloud, where the octree is obtained by node partitioning the point cloud, and N is a total number of layers in the octree, where N is a positive integer greater than 1;

[0008] Based on the first parameter, geometric decoding is performed on the current node.

[0009] In a second aspect, the present application provides a point cloud encoding method, comprising:

[0010] Determine a first parameter corresponding to a current node, where the first parameter is used to determine whether at least one child node of the current node includes a duplicate point, where the current node is a node in the N-1th layer of an octree of the point cloud, where the octree is obtained by node partitioning the point cloud, and N is the total number of layers of the octree, where N is a positive integer greater than 1;

[0011] Based on the first parameter, geometric encoding is performed on the current node.

[0012] In a third aspect, the present application provides a point cloud decoding device for executing the method of the first aspect or its respective implementations. Specifically, the device includes a functional unit for executing the method of the first aspect or its respective implementations.

[0013] In a fourth aspect, the present application provides a point cloud encoding device for executing the method of the second aspect or its respective implementations. Specifically, the device includes a functional unit for executing the method of the second aspect or its respective implementations.

[0014] In a fifth aspect, a point cloud decoder is provided, comprising a processor and a memory. The memory is configured to store a computer program, and the processor is configured to call and execute the computer program stored in the memory to perform the method of the first aspect or its respective implementations.

[0015] In a sixth aspect, a point cloud encoder is provided, comprising a processor and a memory. The memory is configured to store a computer program, and the processor is configured to call and execute the computer program stored in the memory to perform the method of the second aspect or its respective implementations.

[0016] In a seventh aspect, a point cloud encoding and decoding system is provided, comprising a point cloud encoder and a point cloud decoder. The point cloud decoder is configured to execute the method of the first aspect or its respective implementations, and the point cloud encoder is configured to execute the method of the second aspect or its respective implementations.

[0017] In an eighth aspect, a chip is provided for implementing the method described in any one of the first and second aspects above, or their respective implementations. Specifically, the chip includes a processor configured to load and execute a computer program from a memory, causing a device equipped with the chip to perform the method described in any one of the first and second aspects above, or their respective implementations.

[0018] In a ninth aspect, a computer-readable storage medium is provided for storing a computer program, which enables a computer to execute the method of any one of the first to second aspects or their respective implementations.

[0019] In a tenth aspect, a computer program product is provided, comprising computer program instructions, which enable a computer to execute the method of any one of the first to second aspects or their respective implementations.

[0020] In an eleventh aspect, a computer program is provided, which, when executed on a computer, enables the computer to execute the method in any one of the first to second aspects or their respective implementations.

[0021] In a twelfth aspect, a code stream is provided. The code stream is generated based on the method of the second aspect. Optionally, the code stream includes at least one of a first parameter and a second parameter.

[0022] Based on the above technical solution, in point cloud decoding, for example, in AVS-based point cloud decoding, when decoding the current node of the N-1th layer in the octree, the first parameter corresponding to the current node is first determined. The first parameter is used to determine whether at least one non-zero child node of the current node includes duplicate points. The current node is a non-zero node of the N-1th layer in the octree of the point cloud, and N is the total number of layers of the octree. Then, based on the first parameter, the current node is geometrically decoded. For example, when it is determined based on the first parameter that the i-th non-zero child node of the current node does not include duplicate points, the decoding of the duplicate point information of the i-th non-zero child node is skipped, thereby reducing the decoding complexity of the point cloud, saving decoding time, and improving decoding efficiency. BRIEF DESCRIPTION OF THE DRAWINGS

[0023] Figure 1A is a schematic diagram of a point cloud;

[0024] Figure 1B is a partial enlarged view of the point cloud;

[0025] FIG2 is a schematic diagram of six viewing angles of a point cloud image;

[0026] FIG3 is a schematic block diagram of a point cloud encoding and decoding system according to an embodiment of the present application;

[0027] FIG4A is a schematic block diagram of a point cloud encoder provided in an embodiment of the present application;

[0028] FIG4B is a schematic block diagram of a point cloud decoder provided in an embodiment of the present application;

[0029] FIG5 is a schematic diagram of a point cloud decoding method according to an embodiment of the present application;

[0030] FIG6 is a schematic diagram of an octree partition;

[0031] FIG7 is a schematic diagram of an octree and prediction tree partitioning;

[0032] FIG8 is a schematic diagram of an octree involved in an embodiment of the present application;

[0033] FIG9 is a schematic diagram of a point cloud encoding method according to an embodiment of the present application;

[0034] FIG10 is a schematic block diagram of a point cloud decoding device provided in an embodiment of the present application;

[0035] FIG11 is a schematic block diagram of a point cloud encoding device provided in an embodiment of the present application;

[0036] FIG12 is a schematic block diagram of an electronic device provided in an embodiment of the present application;

[0037] Figure 13 is a schematic block diagram of the point cloud encoding and decoding system provided in an embodiment of the present application. DETAILED DESCRIPTION

[0038] The present application can be applied to the field of point cloud upsampling technology, for example, it can be applied to the field of point cloud compression technology.

[0039] To facilitate understanding of the embodiments of the present application, the following briefly introduces the relevant concepts involved in the embodiments of the present application:

[0040] A point cloud is a set of irregularly distributed discrete points in space that represent the spatial structure and surface properties of a three-dimensional object or scene. Figure 1A is a schematic diagram of a 3D point cloud image, and Figure 1B is a zoomed-in view of Figure 1A. As can be seen from Figures 1A and 1B, the point cloud surface is composed of densely distributed points.

[0041] 2D images contain information at every pixel, and their distribution is regular, so there's no need to record their location. However, the distribution of points in a point cloud in 3D space is random and irregular, so recording the location of every point in space is necessary to fully represent a point cloud. Similar to 2D images, each location in the data collection process has corresponding attribute information.

[0042] Point cloud data is a specific record format for point clouds. Points in a point cloud can include both their location information and attribute information. For example, the location information of a point can be its 3D coordinate information. This information can also be referred to as its geometric information. For example, the attribute information of a point can include color information, reflectance information, normal vector information, and so on. Color information reflects the color of an object, while reflectance information reflects the surface material of the object. The color information can be information in any color space. For example, the color information can be in RGB. Another example is luminance and chrominance (YCbCr, YUV) information. For example, Y represents luminance (Luma), Cb (U) represents blue color difference, Cr (V) represents red, and U and V represent chroma (Chroma) to describe color difference information. For example, a point cloud obtained using laser measurement principles can include both its 3D coordinate information and its laser reflection intensity (reflectance). Another example is a point cloud obtained using photogrammetry principles, which can include both its 3D coordinate information and its color information. For example, a point cloud is obtained by combining the principles of laser measurement and photogrammetry. The points in the point cloud may include the three-dimensional coordinate information of the point, the laser reflection intensity (reflectance) of the point, and the color information of the point. Figure 2 shows a point cloud image, where Figure 2 shows six viewing angles of the point cloud image. Table 1 shows the point cloud data storage format consisting of a file header information part and a data part:

[0043] Table 1

[0044]

[0045] In Table 1, the header information includes the data format, data representation type, the total number of point cloud points, and the content represented by the point cloud. For example, the point cloud in this example is in the ".ply" format, represented by ASCII code, with a total number of 207242 points. Each point has three-dimensional position information XYZ and three-dimensional color information RGB.

[0046] Point clouds can flexibly and conveniently express the spatial structure and surface properties of three-dimensional objects or scenes. Moreover, since point clouds are obtained by directly sampling real objects, they can provide a strong sense of reality while ensuring accuracy. Therefore, they are widely used, including virtual reality games, computer-aided design, geographic information systems, automatic navigation systems, digital cultural heritage, free viewpoint broadcasting, three-dimensional immersive remote presentation, and three-dimensional reconstruction of biological tissues and organs.

[0047] The ways to obtain point cloud data may include but are not limited to at least one of the following: (1) generation by computer equipment. Computer equipment can generate point cloud data based on virtual three-dimensional objects and virtual three-dimensional scenes. (2) 3D (3-Dimension) laser scanning acquisition. 3D laser scanning can obtain point cloud data of static real-world three-dimensional objects or three-dimensional scenes, and millions of point cloud data can be obtained per second; (3) 3D photogrammetry acquisition. 3D photography equipment (i.e., a group of cameras or camera equipment with multiple lenses and sensors) is used to collect real-world visual scenes to obtain point cloud data of real-world visual scenes. 3D photography can obtain point cloud data of dynamic real-world three-dimensional objects or three-dimensional scenes. (4) Point cloud data of biological tissues and organs can be obtained through medical equipment. In the medical field, point cloud data of biological tissues and organs can be obtained through medical equipment such as magnetic resonance imaging (MRI), computed tomography (CT), and electromagnetic positioning information.

[0048] Point clouds can be divided into dense point clouds and sparse point clouds according to the acquisition method.

[0049] Point clouds are divided into the following types according to the time series of the data:

[0050] The first type of static point cloud: the object is stationary and the device used to obtain the point cloud is also stationary;

[0051] The second type of dynamic point cloud: the object is moving, but the device that obtains the point cloud is stationary;

[0052] The third type of dynamic point cloud acquisition: the device that acquires the point cloud is moving.

[0053] Point clouds are divided into two categories according to their uses:

[0054] Category 1: Machine perception point cloud, which can be used in scenarios such as autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, and disaster relief robots;

[0055] Category 2: Human eye perception point cloud, which can be used in point cloud application scenarios such as digital cultural heritage, free viewpoint broadcasting, 3D immersive communication, and 3D immersive interaction.

[0056] The aforementioned point cloud acquisition technologies reduce the cost and time required to acquire point cloud data, while improving data accuracy. This evolution in point cloud data acquisition has made it possible to acquire large amounts of point cloud data. However, as application demands grow, the processing of massive amounts of 3D point cloud data is facing bottlenecks due to storage space and transmission bandwidth limitations.

[0057] Taking a point cloud video with a frame rate of 30 fps (frames per second) as an example, each frame contains 700,000 points, each with coordinate information (xyz, float) and color information (RGB, uchar). Therefore, the data volume of a 10-second point cloud video is approximately 0.7 million (4 Byte 3 + 1 Byte 3) 30 fps 10 seconds = 3.15 GB. For a 1280 x 720 2D video with a YUV sampling format of 4:2:0 and a frame rate of 24 fps, the data volume for 10 seconds is approximately 1280 x 720 12-bit 24 frames 10 seconds = 0.33 GB. A 10-second two-view 3D video has a data volume of approximately 0.33 x 2 = 0.66 GB. Therefore, the data volume of a point cloud video far exceeds that of a 2D or 3D video of the same length. Therefore, point cloud compression has become a key issue in promoting the development of the point cloud industry to better manage data, save server storage space, and reduce the transmission traffic and time between the server and client.

[0058] The following introduces the relevant knowledge of point cloud encoding and decoding.

[0059] Figure 3 is a schematic block diagram of a point cloud encoding and decoding system involved in an embodiment of the present application. It should be noted that Figure 3 is only an example, and the point cloud encoding and decoding system of the embodiment of the present application includes but is not limited to that shown in Figure 3. As shown in Figure 3, the point cloud encoding and decoding system 100 includes an encoding device 110 and a decoding device 120. The encoding device is used to encode (which can be understood as compression) the point cloud data to generate a code stream, and transmit the code stream to the decoding device. The decoding device decodes the code stream generated by the encoding device to obtain decoded point cloud data.

[0060] The encoding device 110 of the embodiment of the present application can be understood as a device with a point cloud encoding function, and the decoding device 120 can be understood as a device with a point cloud decoding function, that is, the embodiment of the present application includes a wider range of devices for the encoding device 110 and the decoding device 120, such as smartphones, desktop computers, mobile computing devices, notebook (e.g., laptop) computers, tablet computers, set-top boxes, televisions, cameras, display devices, digital media players, point cloud game consoles, vehicle-mounted computers, etc.

[0061] In some embodiments, the encoding device 110 may transmit the encoded point cloud data (such as a code stream) to the decoding device 120 via the channel 130. The channel 130 may include one or more media and / or devices capable of transmitting the encoded point cloud data from the encoding device 110 to the decoding device 120.

[0062] In one example, the channel 130 includes one or more communication media that enable the encoding device 110 to transmit the encoded point cloud data directly to the decoding device 120 in real time. In this example, the encoding device 110 can modulate the encoded point cloud data according to a communication standard and transmit the modulated point cloud data to the decoding device 120. The communication media includes wireless communication media, such as radio frequency spectrum. Optionally, the communication media can also include wired communication media, such as one or more physical transmission lines.

[0063] In another example, channel 130 includes a storage medium that can store the point cloud data encoded by encoding device 110. The storage medium includes various locally accessible data storage media, such as optical disks, DVDs, and flash memory. In this example, decoding device 120 can retrieve the encoded point cloud data from the storage medium.

[0064] In another example, the channel 130 may include a storage server that can store the point cloud data encoded by the encoding device 110. In this example, the decoding device 120 can download the stored encoded point cloud data from the storage server. Alternatively, the storage server can store the encoded point cloud data and transmit the encoded point cloud data to the decoding device 120, such as a web server (e.g., for a website), a file transfer protocol (FTP) server, etc.

[0065] In some embodiments, the encoding device 110 includes a point cloud encoder 112 and an output interface 113. The output interface 113 may include a modulator / demodulator (modem) and / or a transmitter.

[0066] In some embodiments, the encoding device 110 may further include a point cloud source 111 in addition to the point cloud encoder 112 and the input interface 113 .

[0067] The point cloud source 111 may include at least one of a point cloud acquisition device (e.g., a scanner), a point cloud archive, a point cloud input interface, and a computer graphics system, wherein the point cloud input interface is used to receive point cloud data from a point cloud content provider, and the computer graphics system is used to generate point cloud data.

[0068] The point cloud encoder 112 encodes the point cloud data from the point cloud source 111 to generate a code stream. The point cloud encoder 112 transmits the encoded point cloud data directly to the decoding device 120 via the output interface 113. The encoded point cloud data can also be stored on a storage medium or storage server for subsequent reading by the decoding device 120.

[0069] In some embodiments, the decoding device 120 includes an input interface 121 and a point cloud decoder 122 .

[0070] In some embodiments, the decoding device 120 may further include a display device 123 in addition to the input interface 121 and the point cloud decoder 122 .

[0071] The input interface 121 includes a receiver and / or a modem and can receive the encoded point cloud data via the channel 130 .

[0072] The point cloud decoder 122 is used to decode the encoded point cloud data to obtain decoded point cloud data, and transmit the decoded point cloud data to the display device 123.

[0073] The decoded point cloud data is displayed on the display device 123. The display device 123 may be integrated with the decoding device 120 or external to the decoding device 120. The display device 123 may include various display devices, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or other types of display devices.

[0074] In addition, Figure 3 is only an example, and the technical solution of the embodiment of the present application is not limited to Figure 3. For example, the technology of the present application can also be applied to unilateral point cloud encoding or unilateral point cloud decoding.

[0075] Current point cloud encoders can use the Geometry Point Cloud Compression (G-PCC) or Video Point Cloud Compression (V-PCC) codec frameworks provided by the Moving Picture Experts Group (MPEG), an international standards organization. Alternatively, they can use the AVS-PCC codec framework provided by the Audio Video Standard (AVS). Both G-PCC and AVS-PCC target static, sparse point clouds and share similar encoding frameworks.

[0076] The following uses the AVS-PCC encoding and decoding framework as an example to illustrate the point cloud encoder and point cloud decoder applicable to the embodiments of the present application.

[0077] Figure 4A is a schematic block diagram of the point cloud encoder provided in an embodiment of the present application.

[0078] As can be seen from the above, points in a point cloud can include both their location information and their attribute information. Therefore, the encoding of points in a point cloud mainly includes location encoding and attribute encoding. In some examples, the location information of points in a point cloud is also called geometric information, and the corresponding location encoding of points in the point cloud can also be called geometric encoding.

[0079] In the AVS-PCC coding framework, the geometric information of the point cloud and the corresponding attribute information are encoded separately.

[0080] The position encoding process involves preprocessing the points in the point cloud, such as coordinate transformation, quantization, and duplicate point removal. Next, geometric encoding is performed on the preprocessed point cloud, such as constructing an octree. Based on the constructed octree, geometric encoding is performed to form a geometric bitstream. Simultaneously, the position information of each point in the point cloud data is reconstructed based on the position information output by the constructed octree, resulting in a reconstructed value for each point's position information.

[0081] The attribute encoding process includes: given the reconstruction information of the input point cloud position information and the original value of the attribute information, selecting one of the two prediction modes to predict the point cloud attributes, quantizing the predicted results, and performing arithmetic coding to form an attribute code stream.

[0082] As shown in Figure 4A, position encoding can be achieved through the following units:

[0083] Coordinate translation and coordinate quantization unit 201 , octree construction (Analyze octree) unit 202 , octree reconstruction (Reconstruct geometry) unit 203 , first entropy coding (Arithmetic enconde) unit 204 .

[0084] The coordinate translation and coordinate quantization unit 201 can be used to transform the world coordinates of points in the point cloud into relative coordinates. For example, the geometric coordinates of the point are respectively subtracted from the minimum value of the xyz coordinate axis, which is equivalent to a DC removal operation to achieve the conversion of the coordinates of the points in the point cloud from world coordinates to relative coordinates. Optionally, it will be decided whether to divide the entire point cloud sequence into multiple slices (point cloud slices) based on the parameter configuration, and each divided slice will be treated as a single independent point cloud for serial processing. Next, the point cloud is quantized and duplicate points are removed. The number of coordinates can be reduced by quantization; after quantization, originally different points may be assigned the same coordinates, based on which, duplicate points can be deleted by deduplication operations; for example, multiple clouds with the same quantized position and different attribute information can be merged into one cloud through attribute conversion. In some embodiments of the present application, quantization and removal of duplicate points are optional steps. In some embodiments, quantization and removal of duplicate points are also referred to as voxelization.

[0085] The octree construction unit 202 can use an octree encoding method to encode the quantized point position information. For example, the point cloud is contained in a bounding box, the bounding box of the point cloud is divided according to the octree format, and the placeholder code of each node is encoded. In the octree-based geometric code framework, the bounding box is sequentially divided into sub-cubes. The sub-cubes that are not empty (containing points in the point cloud) are further divided until the leaf node obtained by the division is a 1x1x1 unit cube. In this way, the position of the point can be matched one-to-one with the position of the octree. By counting the position of the point in the octree and marking it as a flag (1), geometric encoding can be performed.

[0086] The octree reconstruction unit 203 can perform position reconstruction based on the position information output by the octree construction unit 202 to obtain the reconstructed value of the position information of each point in the point cloud data. During the octree-based geometric reconstruction process, the placeholder code of each node is obtained by continuous parsing in a breadth-first traversal order, and the nodes are continuously divided until a 1x1x1 unit cube is obtained. The number of points contained in each leaf node is parsed, and the geometric reconstruction value of the point cloud is finally restored.

[0087] The first entropy coding unit 204 may perform arithmetic coding on the position information output by the octree analysis unit 203 using an entropy coding method to generate a geometry bitstream; the geometry bitstream may also be referred to as a geometry bitstream.

[0088] Attribute encoding can be achieved through the following units:

[0089] A spatial conversion unit 210 , a property difference unit 211 , a property prediction unit 212 , a property transformation unit 213 , a quantization unit 214 and a second entropy coding unit 214 .

[0090] It should be noted that the point cloud encoder 200 may include more, fewer, or different functional components than those shown in FIG. 4A .

[0091] The spatial conversion unit 210 can be used to convert the RGB color space of the point cloud into a YUV color space or other format. Currently, attribute encoding is mainly performed on color and reflectance information. First, it is determined whether to perform color space conversion. If color space conversion is required, the spatial conversion unit 210 converts the color information from RGB color space to YUV color space.

[0092] The attribute difference unit 211, also called a recoloring unit, uses the reconstructed geometric information to recolor the color information so that the uncoded attribute information corresponds to the reconstructed geometric information.

[0093] After recoloring to obtain the original value of the point attribute information, you can choose either attribute prediction or attribute transformation to process the points in the point cloud.

[0094] In some embodiments, if the encoding end selects an attribute prediction method to encode the attributes of the points, the attribute prediction unit 212 is used to reorder the point cloud and then perform differential prediction. There are two reordering methods: Morton reordering and Hilbert reordering. For the cat1A sequence and the cat2 sequence, Hilbert reordering is performed; for the cat1B sequence and the cat3 sequence, Morton reordering is performed. The attribute of the sorted point cloud is predicted using a differential method, and the attribute residual of the point is obtained based on the attribute prediction of the point and the original value of the attribute. The quantization unit 214 quantizes the attribute residual of the point to obtain the quantized attribute residual. The second entropy coding unit 215 performs entropy coding on the attribute residual quantized by the quantization unit 214 to obtain a binary attribute code stream.

[0095] The attribute transformation unit 213 is used to perform a wavelet transform on the point cloud attributes to obtain the transformation coefficients. The quantization unit 214 quantizes the transformation coefficients to obtain the quantized transformation coefficients. In addition, the attribute transformation unit 213 performs inverse quantization and inverse wavelet transform on the quantized transformation coefficients to obtain the attribute reconstruction value. Then, the attribute transformation unit 213 calculates the difference between the original attribute of the point and the attribute reconstruction value of the point to obtain the attribute residual of the point. The quantization unit 214 quantizes the attribute residual of the point to obtain the quantized attribute residual of the point. The second entropy coding unit 215 performs entropy coding on the attribute residual quantized by the quantization unit 214 and the quantized transformation coefficients to obtain a binary attribute code stream.

[0096] Figure 4B is a schematic block diagram of the point cloud decoder provided in an embodiment of the present application.

[0097] As shown in Figure 4B, the decoder 300 can obtain the point cloud code stream from the encoding device and obtain the position information and attribute information of the points in the point cloud by parsing the code. The decoding of the point cloud includes position decoding and attribute decoding.

[0098] The position decoding process includes: performing arithmetic decoding on the geometric code stream; constructing an octree and then merging it to reconstruct the point position information to obtain the reconstructed position information of the point; and performing coordinate transformation on the reconstructed position information of the point to obtain the point position information. The point position information can also be called the point's geometric information.

[0099] The attribute decoding process includes: obtaining the residual value of the attribute information of the point in the point cloud by parsing the attribute code stream; obtaining the residual value of the attribute information of the point after dequantization by dequantizing the residual value of the attribute information of the point; based on the reconstruction information of the point position information obtained in the position decoding process, selecting one of attribute prediction compensation and attribute inverse transformation to perform point cloud processing to obtain the reconstructed value of the attribute information of the point; performing color space inverse conversion on the reconstructed value of the attribute information of the point to obtain a decoded point cloud.

[0100] As shown in Figure 4B, position decoding can be achieved by the following units:

[0101] A first entropy decoding unit 301 , an octree reconstruction (synthesize octree) unit 302 , and an inverse coordinate quantization and inverse coordinate translation unit 303 .

[0102] The first entropy decoding unit 301 may decode the geometric code stream using an entropy decoding method to obtain the placeholder information of each node in the octree.

[0103] The octree reconstruction unit 301 reconstructs the octree based on the placeholder information of each node in the octree decoded by the first entropy decoding unit 301. During the geometric reconstruction process based on the octree, the placeholder code of each node is obtained by continuous parsing in a breadth-first traversal order. The nodes are then divided sequentially until a 1x1x1 unit cube is obtained. The number of points contained in each leaf node is then parsed to finally recover the geometric reconstruction value of the point cloud.

[0104] The inverse coordinate quantization and inverse coordinate translation unit 303 performs inverse coordinate translation and inverse quantization operations on the geometric reconstruction value of the point cloud reconstructed by the octree reconstruction unit 302 to obtain the geometric reconstruction value of the midpoint of the point cloud in the world coordinate.

[0105] Attribute encoding can be achieved through the following units:

[0106] The second entropy decoding unit 310 , the inverse quantization unit 311 , the attribute prediction compensation unit 312 , the attribute inverse transform unit 313 , and the inverse spatial transform unit 314 .

[0107] In some embodiments, if the encoding end uses attribute prediction to encode the attribute information of the point cloud, the second entropy decoding unit 310 decodes the attribute code stream to obtain a quantized attribute residual, and the inverse quantization unit 313 inversely quantizes the quantized attribute residual to obtain the attribute residual value. The attribute prediction compensation unit 312 uses a method such as difference based on the reconstructed geometric information of the point cloud to obtain the attribute prediction value of the point in the point cloud, and then adds the attribute prediction value to the attribute residual value to obtain the attribute reconstruction value of the point. Next, the inverse space conversion unit 314 performs an inverse color space conversion on the attribute reconstruction value of the point, for example, from the YUV color space to the RGB color space, to obtain the reconstructed attribute information of the point cloud.

[0108] In some embodiments, if the encoding end uses attribute coding to encode the attribute information of the point cloud, the second entropy decoding unit 310 decodes the attribute code stream to obtain the quantized attribute residual and the quantized transform coefficient. The inverse quantization unit 313 inverse quantizes the quantized attribute residual and the quantized transform coefficient to obtain the attribute residual and transform coefficient of the point. The attribute inverse transform unit 313 performs an inverse wavelet transform on the transform coefficient of the point in the point cloud based on the reconstructed geometric information of the point cloud to obtain the attribute reconstruction value of the point in the point cloud, and then adds the attribute reconstruction value to the attribute residual value to obtain the reconstructed attribute value of the point. Then, the inverse space conversion unit 314 performs an inverse color space conversion on the reconstructed attribute value of the point, for example, from the YUV color space to the RGB color space, to obtain the reconstructed attribute information of the point cloud.

[0109] It should be noted that decompression is the inverse process of compression. Similarly, the functions of each unit in the decoder 300 can refer to the functions of the corresponding units in the encoder 200. In addition, the point cloud decoder 300 may include more, fewer, or different functional components than those in Figure 4B.

[0110] In some embodiments, there are four general test conditions for AVS PCC:

[0111] Condition 1: The geometric position is limited and the attributes are lost;

[0112] Condition 2: Geometric position lossless, attribute lossy;

[0113] Condition 3: Geometric position lossless, attribute loss limited;

[0114] Condition 4: Geometric position and attributes are lossless.

[0115] Exemplarily, the general test sequence includes five categories: Cat1A, Cat1B, Cat1C, Cat2-frame and Cat3, among which Cat1A and Cat2-frame point clouds only contain reflectivity attribute information, Cat1B and Cat3 point clouds only contain color attribute information, and Cat1B point cloud contains both color and reflectivity attribute information.

[0116] Based on the algorithm used for attribute compression, point cloud attribute compression methods include but are not limited to the following:

[0117] The first one is that attribute compression adopts an intra-frame prediction-based method.

[0118] For example, at the encoding end, points in the point cloud are processed in a specific order, such as the original acquisition order, the Morton order, or the Hilbert order. A prediction algorithm is first used to obtain attribute predictions. Attribute residuals are then obtained based on the attribute values ​​and the attribute predictions. The attribute residuals are then quantized to generate quantized residuals, which are then encoded.

[0119] On the decoding side, the points in the point cloud are processed in a specific order, such as the original acquisition order, the Morton order, or the Hilbert order. A prediction algorithm is first used to obtain attribute predictions. Next, decoding is performed to obtain quantized residuals, which are then dequantized. Finally, the attribute reconstruction values ​​are obtained based on the attribute predictions and the dequantized residuals.

[0120] The second is a resource-constrained attribute compression method based on intra-frame prediction and DCT transform. In this method, when encoding the quantized transform coefficients, there is a maximum point number X (such as 4096), that is, at most every X points can be encoded as a group.

[0121] For example, at the encoding end, the points in the point cloud are processed in a certain order, such as the original acquisition order of the point cloud, the Morton order, the Hilbert order, etc., first dividing the entire point cloud into a number of small groups with a maximum length of Y (e.g., 2), and then combining these small groups into a number of large groups (the number of points in each large group does not exceed X, such as 4096). Then, a prediction algorithm is used to obtain attribute prediction values, and attribute residuals are obtained based on the attribute values ​​and attribute prediction values. The attribute residuals are subjected to DCT transformation in small groups to generate transformation coefficients, and then the transformation coefficients are quantized to generate quantized transformation coefficients. Finally, the quantized transformation coefficients are encoded in large groups.

[0122] At the decoding end, the points in the point cloud are processed in a certain order, such as the original acquisition order of the point cloud, the Morton order, the Hilbert order, etc. The entire point cloud is first divided into several small groups with a maximum length of Y (such as 2). These small groups are then combined into several large groups (the number of points in each large group does not exceed X, such as 4096). The quantized transform coefficients are decoded in units of large groups. Next, a prediction algorithm is used to obtain the attribute prediction value. The quantized transform coefficients are then dequantized and inversely transformed in units of small groups. Finally, the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized and inversely transformed coefficients.

[0123] The third is a resource-unrestricted attribute compression method based on intra-frame prediction and DCT transformation. In this method, there is no limit on the maximum number of points X when encoding the quantized transformation coefficients, that is, all coefficients are encoded together.

[0124] For example, at the encoding end, the points in the point cloud are processed in a certain order, such as the original acquisition order of the point cloud, the Morton order, the Hilbert order, etc., and the entire point cloud is first divided into several small groups with a maximum length of Y (e.g., 2). Then, a prediction algorithm is used to obtain attribute prediction values. Attribute residuals are obtained based on the attribute values ​​and attribute prediction values. The attribute residuals are subjected to DCT transformation in units of small groups to generate transformation coefficients. The transformation coefficients are then quantized to generate quantized transformation coefficients. Finally, the quantized transformation coefficients of the entire point cloud are encoded.

[0125] At the decoding end, the points in the point cloud are processed in a certain order, such as the original acquisition order of the point cloud, the Morton order, the Hilbert order, etc. The entire point cloud is first divided into several small groups with a maximum length of Y (such as 2), and the quantized transform coefficients of the entire point cloud are obtained by decoding. Then, a prediction algorithm is used to obtain the attribute prediction value. The quantized transform coefficients are then dequantized and inversely transformed in units of small groups. Finally, the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized and inversely transformed coefficients.

[0126] The fourth type is that attribute compression adopts a method based on multi-layer wavelet transform.

[0127] Exemplarily, at the encoding end, a multi-layer wavelet transform is performed on the entire point cloud to generate transform coefficients, and then the transform coefficients are quantized to generate quantized transform coefficients, and finally the quantized transform coefficients of the entire point cloud are encoded.

[0128] At the decoding end, decoding obtains the quantized transform coefficients of the entire point cloud, and then dequantizes and inversely transforms the quantized transform coefficients to obtain attribute reconstruction values.

[0129] The above is the basic process of the point cloud codec based on the AVS codec framework. With the development of technology, some modules or steps of the framework or process may be optimized. This application is applicable to the basic process of the point cloud codec based on the AVS codec framework, but is not limited to this framework and process.

[0130] The following introduces octree-based geometric coding and prediction tree-based geometric coding.

[0131] The geometric encoding based on octree includes: first, coordinate transformation of the geometric information so that all point clouds are contained in a bounding box. Then quantization is performed. This step of quantization mainly plays a role of scaling. Due to the quantization rounding, the geometric information of some points is the same. The parameters are used to decide whether to remove duplicate points. The process of quantization and removal of duplicate points is also called voxelization. Next, the bounding box is continuously divided into trees (octree / quadtree / binary tree) in the order of breadth-first traversal, and the placeholder code of each node is encoded. In an implicit geometric division method, the bounding box of the point cloud is first calculated. Assume that the d x >d y >d z The bounding box corresponds to a cuboid. When geometrically partitioning, the binary tree partitioning is first performed based on the x-axis to obtain two child nodes; until d is satisfied x =d y >d z When the conditions are met, the quadtree partitioning will be performed based on the x and y axes to obtain four child nodes; when d is finally satisfied x =d y =d z When the conditions are met, the octree partitioning will continue until the leaf node obtained by the partitioning is a 1x1x1 unit cube. The partitioning will stop and the points in the leaf node will be encoded to generate a binary code stream. In the process of binary tree / quadtree / octree partitioning, two parameters are introduced: K and M. Parameter K indicates the maximum number of binary tree / quadtree partitions before octree partitioning; parameter M is used to indicate that the minimum block side length corresponding to binary tree / quadtree partitioning is 2 M . At the same time, K and M must meet the following conditions: Assume d max =max(d x ,d y ,d z ),d min =min(d x ,d y ,d z ), parameter K satisfies: K>=d max -d min ; Parameter M satisfies: M>=dmin . The reason why the parameters K and M meet the above conditions is that in the process of geometric implicit partitioning of G-PCC, the priority of the partitioning method is binary tree, quadtree and octree. When the node block size does not meet the conditions of binary tree / quadtree, the node will be divided into octree until it is divided into the minimum unit of leaf node 1X1X1. However, the geometric information coding mode based on octree only has an efficient compression rate for points with correlation in space, and for points in isolated positions in geometric space, the use of direct coding mode (Direct Coding Model, DCM for short) coding can greatly reduce the complexity. For all nodes in the octree, the use of DCM is not represented by flag information, but is inferred by the parent node and neighbor information of the current node. There are two ways to determine whether the current node is eligible for DCM encoding:

[0132] (1) The current node has only one occupied child node, and the parent node of the current node's parent node has only two occupied child nodes, that is, the current node has at most one neighbor node.

[0133] (2) The parent node of the current node has only one child node, the current node, and the six neighbor nodes that share a face with the current node are all empty nodes.

[0134] If the current node does not have the DCM coding qualification, it will be divided into octrees. If it has the DCM coding qualification, the number of points contained in the node will be further determined. If the number of points is less than the threshold 2, the node will be DCM-encoded. Otherwise, the octree division will continue. When the DCM coding mode is applied, the geometric coordinates X, Y, and Z components of the points in the current node will be directly encoded independently. When the side length of a node is 2 d When , d bits are required to encode each component of the geometric coordinates of the node, and this bit information is directly encoded into the bit stream.

[0135] It is important to note that when partitioning nodes into leaf nodes, the number of duplicate points in the leaf nodes must be encoded in the case of lossless geometric coding. Ultimately, the placeholder information for all nodes is encoded to generate a binary bitstream. Furthermore, G-PCC currently introduces a plane coding mode. During the geometric partitioning process, it determines whether the child nodes of the current node are in the same plane. If the child nodes of the current node meet the condition of being in the same plane, the child nodes of the current node are represented by that plane.

[0136] In octree-based geometric decoding, the decoding end obtains the placeholder code of each node by continuously parsing in the order of breadth-first traversal, and continuously divides the nodes in sequence until a 1X1X1 unit cube is obtained. The division stops and the number of points contained in each leaf node is parsed, and finally the geometric reconstructed point cloud information is restored.

[0137] The geometric coding based on the prediction tree includes: first, sorting the input point cloud. The currently used sorting methods include unordered, Morton order, azimuth order, and radial distance order. At the encoding end, the prediction tree structure is established by using two different methods, including: KD-Tree (high-latency slow mode) and using the lidar calibration information to divide each point into different Lasers and establish a prediction structure according to different Lasers (low-latency fast mode). Next, based on the structure of the prediction tree, each node in the prediction tree is traversed, and the geometric position information of the node is predicted by selecting different prediction modes to obtain the prediction residual, and the geometric prediction residual is quantized using the quantization parameter. Finally, through continuous iteration, the prediction residual of the prediction tree node position information, the prediction tree structure, and the quantization parameters are encoded to generate a binary code stream.

[0138] Based on the geometric decoding of the prediction tree, the decoding end reconstructs the prediction tree structure by continuously parsing the bit stream. Secondly, the geometric position prediction residual information and quantization parameters of each prediction node are obtained through parsing, and the prediction residual is dequantized to restore the reconstructed geometric position information of each node, finally completing the geometric reconstruction at the decoding end.

[0139] After geometry encoding is complete, the geometry is reconstructed. Currently, attribute encoding primarily targets color information. First, the color information is converted from RGB to YUV. The reconstructed geometry is then used to recolor the point cloud, aligning the unencoded attribute information with the reconstructed geometry.

[0140] Currently in AVS's point cloud encoding and decoding, for each voxel-level leaf node in the octree, it is necessary to encode and decode the duplicate point information of the leaf node. However, not every leaf node has duplicate points. Therefore, encoding and decoding duplicate point information for each leaf node increases the complexity of encoding and decoding, wastes a lot of encoding and decoding time, and makes the encoding and decoding efficiency low.

[0141] In order to solve the above technical problems, in the embodiment of the present application, in point cloud encoding and decoding, for example, in point cloud encoding and decoding based on AVS, when encoding and decoding the current node of the N-1th layer in the octree of the point cloud, the first parameter corresponding to the current node is first determined. The first parameter is used to determine whether at least one non-zero child node of the current node includes duplicate points. The current node is a non-zero node of the N-1th layer in the octree of the point cloud, and N is the total number of layers of the octree. Then, based on the first parameter, the current node is geometrically decoded. For example, when it is determined based on the first parameter that the i-th non-zero child node of the current node does not include duplicate points, the encoding and decoding of the duplicate point information of the i-th non-zero child node is skipped, thereby reducing the encoding and decoding complexity of the point cloud, saving encoding and decoding time, and improving encoding and decoding efficiency.

[0142] The following describes the point cloud encoding and decoding method involved in the embodiments of the present application in conjunction with specific embodiments.

[0143] First, taking the decoding end as an example, the point cloud decoding method provided in the embodiment of the present application is introduced.

[0144] Figure 5 is a schematic diagram of a point cloud decoding method according to an embodiment of the present application. The point cloud decoding method according to an embodiment of the present application can be implemented by the point cloud decoding device shown in Figure 3 or Figure 4B above.

[0145] As shown in FIG5 , the point cloud decoding method of the embodiment of the present application includes:

[0146] S101, determining a first parameter corresponding to the current node;

[0147] S102. Perform geometric decoding on the current node based on the first parameter.

[0148] Among them, the first parameter is used to determine whether at least one non-zero child node of the current node includes duplicate points. The current node is a non-zero node in the N-1th layer of the octree of the point cloud. The octree is obtained by node division of the point cloud. N is the total number of layers of the octree, and N is a positive integer greater than 1.

[0149] The point cloud decoding method proposed in the embodiment of the present application can be applied to a variety of point cloud decoding scenarios. In some embodiments, if the point cloud decoding method of the embodiment of the present application is applied to AVS, the above octree is obtained by dividing the point cloud into nodes based on the AVS method.

[0150] The point cloud in the embodiment of the present application can be understood as a point cloud block or point cloud slice that can be decoded individually.

[0151] For example, the point cloud in the embodiment of the present application is the entire point cloud sequence that has not been divided.

[0152] For another example, if the embodiment of the present application decides to divide the point cloud sequence based on parameter configuration, the point cloud of the embodiment of the present application can be understood as a point cloud slice in at least one slice (point cloud slice) into which the entire point cloud sequence is divided.

[0153] As can be seen from the above, point clouds include geometric information and attribute information, and decoding of point clouds includes geometric decoding and attribute decoding. The embodiments of the present application relate to geometric decoding of point clouds. That is, the decoded points involved in the embodiments of the present application refer to points in the point cloud whose geometric information has been decoded, and the undecoded points refer to points in the point cloud whose geometric information has not been decoded.

[0154] In some embodiments, the geometric information of the point cloud is also referred to as the position information of the point cloud. Therefore, the geometric decoding of the point cloud is also referred to as the position decoding of the point cloud.

[0155] In some embodiments, if the current point cloud only uses octree coding in AVS geometric coding and does not use prediction tree coding, that is, the prediction tree coding algorithm is turned off. At this time, the encoding end constructs the octree structure of the point cloud based on the octree encoding method. For example, as shown in Figure 6, the point cloud is enclosed by the smallest cuboid. The bounding box is first divided into octrees to obtain 8 nodes. The occupied nodes among these 8 nodes, that is, the nodes including the points, continue to be divided into octrees, and so on until the division is to the voxel level, for example, to a 1X1X1 cube. The point cloud octree structure obtained by such division includes multiple layers of nodes, for example, N layers. During encoding, the occupancy information of each layer is encoded layer by layer until the voxel-level leaf nodes of the last layer are encoded. That is to say, in octree encoding, the point cloud is divided into octrees, and finally the points in the point cloud are divided into voxel-level leaf nodes of the octree. The encoding of the point cloud is achieved by encoding the entire octree.

[0156] Correspondingly, the decoder first decodes the point cloud geometry stream to obtain the occupancy information of the root node of the point cloud's octree. Based on this occupancy information, it determines the child nodes of the root node, that is, the nodes in the second layer of the octree. Next, it decodes the geometry stream to obtain the occupancy information of each node in the second layer. Based on this occupancy information, it determines the nodes in the third layer of the octree, and so on.

[0157] In some embodiments, during the AVS geometry coding of the current point cloud, the encoder can employ both octree encoding and prediction tree encoding, i.e., the prediction tree encoding algorithm is disabled. In this case, as shown in FIG7 , the bounding box of the point cloud is first partitioned using an octree. The partitioning is performed to a preset depth, for example, three layers. For each non-zero node obtained from the partitioning, it is determined whether the node is to be encoded using prediction tree encoding or octree encoding. If the node is determined to be encoded using prediction tree encoding, the geometric information of the points included in the node is encoded using prediction tree encoding. For example, if the first node in the third layer is determined to be encoded using prediction tree encoding, the points included in the node are sorted, and a prediction tree is constructed for the sorted points using a preset prediction tree encoding method, such as an L3C2 single chain. Next, based on the structure of the prediction tree, each node in the prediction tree is traversed, and the geometric position information of the node is predicted by selecting different prediction modes to obtain a prediction residual. The geometric prediction residual is then quantized using a quantization parameter. Finally, through continuous iteration, the prediction residual of the prediction tree node position information, the prediction tree structure, and the quantization parameter are encoded. If it is determined that the node can be partitioned using an octree, the octree partitioning method is used to partition the node until it reaches a leaf node at the voxel level. The occupancy information of each node in the octree is encoded to form a geometric code stream. The gray nodes in Figure 7 are non-empty nodes.

[0158] Optionally, if a node is encoded using prediction tree coding, the encoder uses a parameter to indicate that the node is encoded using prediction tree coding. For example, the parameter may be a first flag, and the encoder sets the first flag to true to indicate that the node is encoded using prediction tree coding, for example, setting the first flag to 1. Thus, the decoder determines that the node is encoded using prediction tree coding by decoding the first flag, and accordingly, performs geometric decoding on the node using prediction tree decoding to obtain geometric reconstruction values ​​of the points included in the node.

[0159] In this embodiment, the decoder decodes the geometric code stream of the point cloud, obtains the occupancy information of the nodes in the octree, and reconstructs the octree based on the occupancy information. As shown in Figure 8, after building to the third layer, during the octree reconstruction process, if a node is determined to be encoded using a prediction tree, for example, if the value of the first flag corresponding to the node is set to true after decoding, then the node is determined to be encoded using a prediction tree. In this way, the decoder performs geometric decoding on the node using a prediction tree decoding method to obtain the geometric reconstruction values ​​of the points included in the node. If it is determined that the node is encoded using an octree, the octree is reconstructed for the node based on the occupancy information of the node until the leaf node at the voxel level is reached.

[0160] It can be seen from Figures 6 and 7 above that in the AVS point cloud geometry coding, regardless of whether the prediction tree coding is turned on, at least some points in the point cloud are divided into octrees and finally divided into voxel-level leaf nodes.

[0161] In some embodiments, since some points in the point cloud have the same coordinate information, these points with the same coordinates are divided into the same leaf node of the octree, so that the leaf node includes repeated points.

[0162] Currently, when encoding a node at level N-1 (the penultimate level of the octree), the encoder encodes not only the placeholder information for that node but also the information about the duplicate points of its non-zero child nodes (i.e., leaf nodes). Correspondingly, when decoding a node at level N-1, the decoder decodes not only the placeholder information for that node but also the information about the duplicate points of its non-zero child nodes. This increases decoding complexity, wastes decoding time, and reduces decoding efficiency.

[0163] From the above, it can be seen that in the octree of the point cloud, not every leaf node includes duplicate points. It can even be understood that only a few leaf nodes in the octree of the point cloud include duplicate points. Based on this, in an embodiment of the present application, when decoding the current node of the N-1th layer of the octree of the point cloud, the first parameter corresponding to the current node is first determined. The first parameter is used to determine whether at least one non-zero child node (i.e., a leaf node) of the current node includes duplicate points, and then the current node is decoded based on the first parameter. For example, when it is determined based on the first parameter that the i-th non-zero child node of the current node does not include duplicate points, the decoding of the duplicate point information of the i-th non-zero child node is skipped, thereby reducing the decoding complexity of the point cloud, saving decoding time, and improving decoding efficiency.

[0164] The embodiments of the present application mainly relate to the decoding process of the nodes in the N-1th layer of the point cloud octree. The N-1th layer can also be understood as the second to last layer of the octree of the point cloud.

[0165] When decoding a non-zero node in the N-1th layer of the octree, it is necessary to decode not only the placeholder information of the non-zero node but also the repeated point information included in the non-zero child nodes of the node. The non-zero child nodes of the non-zero node in the N-1th layer are the voxel-level leaf nodes of the octree, that is, the nodes in the last layer.

[0166] In an embodiment of the present application, the decoding process for each non-zero node in the N-1th layer of the octree is basically the same. For the sake of convenience of description, the decoding process of the embodiment of the present application is introduced by taking the current node in the N-1th layer of the octree as an example.

[0167] In some embodiments, the current node can be understood as any non-zero node in the N-1th layer of the octree. A non-zero node is also called a non-empty node or an occupied node. A non-zero node can be understood as a node that includes at least one non-zero child node, or a node that includes at least one point in the point cloud.

[0168] In some embodiments, the current node may be understood as a non-zero node in the N-1th layer of the octree that is currently waiting to be decoded.

[0169] In an embodiment of the present application, before decoding the current node, a first parameter corresponding to the current node is first determined, and then the current node is decoded based on the first parameter. In an embodiment of the present application, different methods for determining the first parameter corresponding to the current node are used, and corresponding methods for decoding the current node based on the first parameter are also different. The following describes in detail several methods for determining the first parameter corresponding to the current node and the process for decoding the current node based on the first parameter involved in an embodiment of the present application.

[0170] In case 1, the above S101 includes the following steps S101-A1 to S101-A2:

[0171] S101-A1, determine the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer;

[0172] S101-A2: Determine a first parameter based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer.

[0173] In the embodiment of the present application, the encoding end encodes the nodes in the octree based on a breadth-first traversal method, and correspondingly, the decoding end decodes the nodes in the octree based on a breadth-first traversal method.

[0174] In this case 1, based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer of the point cloud's octree, a first parameter corresponding to the current node is determined. This first parameter can be understood as the number of points in the current point cloud whose geometric information cannot be determined. Based on this first parameter, the current node is then decoded. For example, based on this first parameter, it is determined whether the non-zero child nodes of the current node include duplicate points. If, based on this first parameter, it is determined that the non-zero child nodes of the current node do not include duplicate points, the duplicate point information of the non-zero child nodes of the current node is skipped, thereby reducing the decoding complexity of the point cloud, saving decoding time, and thereby improving decoding efficiency.

[0175] The embodiment of the present application does not limit the specific method for the decoding end to obtain the total number of points in the point cloud.

[0176] In some embodiments, the encoder writes the total number of points in the point cloud into the geometry stream, so that the decoder obtains the total number of points in the point cloud by decoding the geometry stream.

[0177] In some embodiments, the encoder writes the total number of points in the point cloud into the geometry brick header (GBH) of the point cloud. In this way, the decoder obtains the total number of points in the point cloud by decoding the geometry brick header of the point cloud.

[0178] In some embodiments, since a point cloud includes at least one point, to conserve codewords, the encoder, when encoding the total number of points in the point cloud, divides the point cloud point count into the low-order portion (num_points_lower) and the high-order portion (num_points_upper) of the point cloud point count, and writes these values ​​into the geometry unit header. Correspondingly, the decoder decodes the geometry unit header to obtain num_points_lower and num_points_upper, and then adds num_points_upper to num_points_lower to obtain the total number of points in the point cloud.

[0179] In one example, the parameters of the geometry unit head are specifically shown in Table 2:

[0180] Table 2

[0181]

[0182] In Table 2, num_points_upper and num_points_lower are used to specify the total number of points in the point cloud.

[0183] That is to say, the decoding end obtains the total number of points in the point cloud by decoding num_points_upper and num_points_lower shown in Table 2.

[0184] In some embodiments, num_points_upper, an unsigned integer, indicates the number of points in the slice above 16 bits. num_points_lower, an unsigned integer, indicates the number of points in the slice below 16 bits. At this time, the decoder determines the total number of points in the point cloud based on the following formula (1):

[0185] num_points=((num_points_upper<<16)+num_points_lower) (1)

[0186] Among them, num_points is the total number of points in the point cloud.

[0187] Similarly, the embodiment of the present application does not limit the method for determining the number of non-zero nodes in the N-1th layer of the octree of the point cloud.

[0188] In some embodiments, the encoder may write the number of non-zero nodes included in the N-1th layer of the octree into the geometry stream. In this way, the decoder can obtain the number of non-zero nodes in the N-1th layer by decoding the geometry stream.

[0189] In some embodiments, as described above, the encoder encodes the placeholder information for nodes at each level of the octree using a breadth-first traversal approach. For example, based on the non-zero child nodes included in each non-zero node in the N-2th level, the encoder determines the placeholder information for each non-zero node in the N-2th level, and then writes the placeholder information for each non-zero node in the N-2th level into the geometry bitstream. In this way, the decoder decodes the placeholder information for each non-zero node in the N-2th level and can determine the number of non-zero nodes included in the N-1th level.

[0190] For example, as shown in Figure 8, assuming that the point cloud octree includes 4 layers, that is, N=4, and the occupancy information of the root node of the first layer is 0000010, it means that only one node in the second layer of the octree is occupied, that is, the 7th node is occupied. Assuming that the occupancy information of the 7th node in the second layer is 01010101, it means that there are 4 occupied nodes in the third layer of the octree. Assume that the occupancy information of the second node in the third layer is 01010101, the occupancy information of the fourth node in the third layer is 01010100, the occupancy information of the sixth node in the third layer is 00000010, and the occupancy information of the eighth node in the fourth layer is also 00000010. Therefore, in this embodiment, the decoding end can determine the number of non-zero nodes in the N-1 layer based on the occupancy information of the N-2 layer of the octree of the point cloud. For example, if the occupancy information of the N-2 layer is 01010101, it means that the N-1 layer includes 4 nodes, and these 4 nodes are occupied nodes, that is, non-zero nodes.

[0191] After the decoding end determines the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer through the above method, it determines the first parameter corresponding to the current node based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer.

[0192] The embodiment of the present application does not limit the specific method of determining the first parameter corresponding to the current node based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer.

[0193] In some embodiments, the decoding end determines the difference between the total number of points in the point cloud and the number of non-zero nodes in the N-1 layer as the first parameter. In this embodiment, by determining the number of occupied nodes in the N-1 layer, it can be determined that the occupied nodes include at least one non-zero child node, that is, the occupied nodes in the N-1 layer correspond to at least one point. Therefore, the difference between the total number of points in the point cloud and the number of non-zero nodes in the N-1 layer of the octree is determined as the number of points with uncertain geometric information in the point cloud, that is, the first parameter. For example, the point cloud includes 10 points, and the N-1 layer includes 4 non-zero nodes, which means that each of the 4 non-zero nodes in the N-1 layer includes at least one non-zero child node, and a non-zero child node includes at least one point. Therefore, it can be determined that the number of points with uncertain position information in the current point cloud is 10-4=6, and then the first parameter corresponding to the current node is determined to be 6.

[0194] In one possible implementation, the first parameter is determined based on the following formula (4):

[0195] resPointCount=num_points–nodeCount (4)

[0196] Among them, resPointCount is the first parameter corresponding to the current node, num_points is the total number of points in the point cloud, and nodeCount is the number of nodes included in the N-1th layer of the octree of the point cloud.

[0197] In some embodiments, the N-1th level of the octree may be represented as occtree_depth_minus1, ie, the octree depth occtree_depth minus 1, where the octree depth occtree_depth is N.

[0198] After the first parameter corresponding to the current node is determined based on the above method, the above step S102 is executed to decode the current node based on the first parameter.

[0199] In some embodiments, if the first parameter corresponding to the current node is determined to be 0, for example, the total number of points in the point cloud is a, and the N-1 layer of the point cloud octree includes a nodes, then if the first parameter is determined to be 0, then each non-zero node in the N-1 layer includes a non-zero child node, and each non-zero child node includes a point in the point cloud, and no duplicate points are included. In this case, when decoding the nodes in the N-1 layer, the duplicate point information of the non-zero child nodes of each non-zero node is skipped, thereby reducing decoding complexity and saving decoding time.

[0200] In some embodiments, if it is determined that the first parameter corresponding to the current node is not 0, the above S102 is as shown in the following case 1.

[0201] In case 1, the above S102 includes the following steps S102-A1 to S102-A2:

[0202] S102-A1. For the i-th non-zero child node of the current node, determine a second parameter corresponding to the i-th non-zero child node, where the second parameter is used to indicate the number of points whose geometric positions in the point cloud have been decoded when decoding the i-th non-zero child node;

[0203] S102-A2: Determine whether to decode repeated point information of the i-th non-zero child node based on the first parameter and the second parameter.

[0204] From the above, it can be seen that the current node includes at least one non-zero child node. When decoding the current node, the specific process of determining whether to decode the repeated point information of each non-zero child node included in the current node is the same. For the sake of convenience of description, the i-th non-zero child node of the current node is taken as an example for explanation.

[0205] In this scenario 1, the decoding end determines the first parameter corresponding to the current node based on steps S102-A1 to S102-A2 above. This first parameter can be understood as the number of points in the point cloud whose current position information is undetermined. Next, the decoding end determines the second parameter corresponding to the i-th non-zero child node of the current node. This second parameter is used to indicate the number of points whose geometric positions in the point cloud have been decoded when decoding the i-th non-zero child node. Finally, based on the first parameter corresponding to the current node and the second parameter corresponding to the i-th non-zero child node, it determines whether the i-th non-zero child node includes duplicate points, and further determines whether to decode the duplicate point information of the i-th non-zero child node.

[0206] The specific process of determining the second parameter corresponding to the i-th non-zero child node is introduced below.

[0207] The embodiment of the present application does not limit the specific method of determining the second parameter corresponding to the current i-th non-zero child node.

[0208] In some embodiments, during decoding, the decoding end records in real time the number of points whose geometric positions have been decoded in the current point cloud, and then, when decoding the current node, determines the number of points determined by the geometric position information that has been determined before decoding the repeated point information of the i-th non-zero child node.

[0209] In some embodiments, determining the second parameter corresponding to the i-th non-zero child node in S102-A1 includes the following steps S102-A11 and S102-A12:

[0210] S102-A11. Determine the number of first decoded points corresponding to the i-th non-zero child node in the point cloud.

[0211] In this embodiment, the decoding end determines the second parameter corresponding to the i-th non-zero child node by determining the first number of decoded points corresponding to the i-th non-zero child node in the point cloud and based on the first number of decoded points corresponding to the i-th non-zero child node in the point cloud. For example, the first number of decoded points corresponding to the i-th non-zero child node in the point cloud is determined as the second parameter corresponding to the i-th non-zero child node.

[0212] In this embodiment, the first number of decoded points corresponding to the i-th non-zero child node can be understood as the total number of points currently decoded by the decoding end when determining whether to decode the repeated point information of the i-th non-zero child node of the current node.

[0213] In some embodiments, the decoding end starts a counter during decoding, which is used to record the number of decoded points in real time. In this way, when decoding the i-th non-zero child node, the first decoded point number corresponding to the i-th non-zero child node can be obtained from the counter.

[0214] In some embodiments, when decoding the i-th non-zero child node, the decoding end determines the number of first decoded points corresponding to the i-th non-zero child node through the following steps:

[0215] S102-A11-1. Determine the number of third decoded points corresponding to the i-th non-zero child node;

[0216] S102-A11-2. Determine the first number of decoded points based on the third number of decoded points.

[0217] The third decoded point can be understood as a decoded point in a leaf node of the octree. The decoding end determines the number of first decoded points corresponding to the i-th non-zero child node by determining the number of points included in the decoded leaf node before the i-th non-zero child node.

[0218] The implementation methods for determining the number of the third decoded points corresponding to the i-th non-zero child node in the above S102-A11-1 include but are not limited to the following:

[0219] Method 1: If the current node is the first non-zero node in the N-1th layer, then the above S102-A11-1 includes the following steps S102-A11-1-a1 and S102-A11-1-a2:

[0220] S102-A11-1-a1, determine the number of non-zero child nodes of the current node;

[0221] S102-A11-1-a2. Determine the number of third decoded points corresponding to the i-th non-zero child node based on the number of non-zero child nodes of the current node.

[0222] In the first method, if the current node is the first non-zero node in the N-1th layer of the octree, the number of non-zero child nodes included in the current node is determined, and based on the number of non-zero child nodes of the current node, the number of third decoded points corresponding to the i-th non-zero child node is determined.

[0223] The method for determining the number of non-zero child nodes of the current node includes at least the following examples:

[0224] In Example 1, the encoder writes the number of non-zero child nodes for each non-zero node in the N-1th layer of the octree into the geometry stream. The decoder then decodes the geometry stream to obtain the number of non-zero child nodes for each non-zero node in the N-1th layer, and thus the number of non-zero child nodes for the current node.

[0225] Example 2: The encoding end writes the placeholder information of each non-zero node in the N-1th layer into the decoding code stream. Exemplarily, the encoding end determines the placeholder information of the current node based on the occupancy of each non-zero child node of the current node in the N-1th layer. Assuming that among the 8 child nodes of the current node, the 2nd child node, the 4th child node, the 6th child node and the 8th child node are occupied, the placeholder information of the current node is determined to be 01010101, and the placeholder information is written into the geometric code stream. In this way, when the decoding end decodes the current node in the N-1th layer, the placeholder information of the current node obtained by decoding is 01010101, and it can be determined that the current node includes 4 non-zero child nodes.

[0226] After determining the number of non-zero child nodes of the current node, the decoding end determines the number of third decoded points corresponding to the i-th non-zero child node based on the number of non-zero child nodes of the current node.

[0227] The method for determining the number of third decoded points corresponding to the i-th non-zero child node based on the number of non-zero child nodes of the current node in S102-A11-1-a2 includes but is not limited to the following:

[0228] Method 1: If the i-th non-zero child node is the first non-zero child node of the current node, the number of non-zero child nodes included in the current node is reduced by 1, and the third decoded point number corresponding to the i-th non-zero child node is determined.

[0229] For example, as shown in Figure 8 , assuming the current node is the first non-zero node in the third layer of Figure 8 and the occupancy information of the current node is 01010101, it can be determined that the current node includes four non-zero child nodes. Assuming the i-th non-zero child node is the first non-zero child node of the current node, since the occupancy information of the current node is known, the geometric position information of the four non-zero child nodes of the current node can be determined. Therefore, the geometric position information of the four non-zero child nodes of the current node has been decoded, that is, the four non-zero child nodes of the current node are decoded points for the first non-zero child node of the current node. It should be noted that when determining the first parameter above, it is assumed that the current node includes one decoded point. Therefore, it is necessary to subtract 1 from the number of non-zero child nodes of the current node to determine the third number of decoded points corresponding to the i-th non-zero child node. For example, the third number of decoded points corresponding to the i-th non-zero child node is determined to be 4-1=3.

[0230] Method 2: If the i-th non-zero child node is not the first non-zero child node of the current node, obtain the sum of the first number of repeated points included in the non-zero child nodes of the current node that are located before the i-th non-zero child node; subtract 1 from the number of non-zero child nodes included in the current node, and then add it to the sum of the first number of repeated points to obtain the third number of decoded points corresponding to the i-th non-zero child node.

[0231] In method 2, if the i-th non-zero child node of the current node is not the first non-zero child node of the current node, that is, before the i-th child node, at least one non-zero child node of the current node has been decoded, the decoded non-zero child nodes may include duplicate points. Therefore, when determining the third number of decoded points corresponding to the i-th child node, the number of decoded duplicate points needs to be considered.

[0232] Specifically, if the current node is the first non-zero node in the N-1th layer, and the i-th non-zero child node of the current node is not the first non-zero child node of the current node, then obtain the sum of the first number of repeated points included in the non-zero child nodes of the current node that are located before the i-th non-zero child node; subtract 1 from the number of non-zero child nodes included in the current node, and then add it to the sum of the first number of repeated points to obtain the third number of decoded points corresponding to the i-th non-zero child node.

[0233] For example, assuming that the current node is the first non-zero node in the third layer in Figure 8, and the placeholder information of the current node is 01010101, it can be determined that the current node includes 4 non-zero child nodes. Assume that the first child node of the current node includes 1 repeated point, and assume that the i-th non-zero child node is the second non-zero child node of the current node. When determining whether the node has repeated point information for the second non-zero child node of the current node, the number of decoded points corresponding to the second non-zero child node is first determined. Specifically, the number of decoded points corresponding to the second non-zero child node is the number of non-zero child nodes included in the current node minus 1, plus the 1 repeated point of the first child node of the current node, and the number of decoded points corresponding to the second non-zero child node is 4-1+1=4.

[0234] In one example, the decoding end records the number of the third decoded points corresponding to the i-th non-zero child node in the current node through the following instructions:

[0235]

[0236] Among them, codedCount is the number of the third decoded points corresponding to the i-th non-zero child node in the current node, codedCount is initialized to 0, nodeCount is the number of nodes in the N-1th layer of the octree, childCount is the number of non-zero child nodes included in the nodes in the N-1th layer, and dupPointNum is the number of duplicate points included in the non-zero child nodes.

[0237] In the above-mentioned method 1, assuming that the current node is the first non-zero node in the N-1th layer, the process of determining the number of the third decoded points corresponding to the i-th non-zero child node of the current node is introduced.

[0238] Method 2: If the current node is not the first non-zero node in the N-1th layer, then the above S102-A11-1 includes the following steps S102-A11-1-b1 to S102-A11-1-b3:

[0239] S102-A11-1-b1, determine the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer;

[0240] S102-A11-1-b2, determine the number of non-zero child nodes of the current node;

[0241] S102-A11-1-b3. Determine the third number of decoded points corresponding to the i-th non-zero child node based on the number of decoded points corresponding to each non-zero node before the current node in the N-1th layer and the number of non-zero child nodes of the current node.

[0242] In the second method, if the current node is not the first non-zero node in the N-1th layer of the octree, it means that before decoding the current node, at least one non-zero node in the N-1th layer of the octree has been decoded. Therefore, in this embodiment, when determining the third number of decoded points corresponding to the i-th non-zero child node of the current node, first determine the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer of the octree, then determine the number of non-zero child nodes of the current node, and then determine the third number of decoded points corresponding to the i-th non-zero child node based on the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer and the number of non-zero child nodes of the current node.

[0243] The following describes how to determine the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer in S102-A11-1-b1.

[0244] In one possible implementation, the number of non-zero child nodes included in each non-zero node before the current node is first determined, and then the number of non-zero child nodes included in each non-zero node is added to obtain a value of 1. Next, the total number of decoded duplicate points corresponding to each non-zero node is determined, and then the value 1 is added to the total number of duplicate points to obtain a value of 2. The number of non-zero nodes before the current node in the N-1th layer is then subtracted from this value to obtain the number of decoded points corresponding to each non-zero node before the current node in the N-1th layer. In this embodiment, the decoding end can record the number of non-zero child nodes of each non-zero node in the N-1th layer, and at the same time, separately record the number of decoded duplicate points. Finally, based on the separately recorded number of non-zero child nodes and the number of duplicate points, the number of decoded points corresponding to each non-zero node before the current node in the N-1th layer is determined.

[0245] For example, assume that the current node is the third non-zero node in the third layer of the octree shown in Figure 8. When decoding the third non-zero node, the first and second non-zero nodes preceding the third non-zero node in the N-1th layer have already been decoded. Assume that the placeholder information for the first non-zero node is 01010101, the first non-zero child of the first non-zero node includes one repeated point, and the placeholder information for the second non-zero node is 01010100. When decoding the third non-zero node, the number of decoded points corresponding to each non-zero node preceding the current node in the N-1th layer is determined. Specifically, the number of non-zero child nodes of each of the first and second non-zero nodes is determined. Based on the placeholder information, we know that the first non-zero node has four non-zero child nodes, and the second non-zero node has three non-zero child nodes. Therefore, the first and second non-zero nodes have a total of seven non-zero child nodes. In addition, the first non-zero child node of the first non-zero node obtained by decoding includes 1 repeated point. Therefore, the number of decoded points corresponding to the first non-zero node and the second non-zero node before the third non-zero node is 7+1-2=6.

[0246] In another possible implementation, the decoding end obtains the number of non-zero child nodes of one of the non-zero nodes, as well as the number of second repeated points included in the non-zero child nodes of the non-zero node; subtracts 1 from the number of non-zero child nodes of the non-zero node, and adds the sum of the number of second repeated points included in the non-zero child nodes of the non-zero node to obtain the number of decoded points corresponding to the non-zero node. In this implementation, the decoding end determines the number of decoded points corresponding to each non-zero node preceding the current node in the N-1th layer of the octree in the same manner, that is, the decoding end determines the number of decoded points corresponding to each non-zero node preceding the current node, and finally sums the number of decoded points corresponding to each non-zero node.

[0247] Specifically, for each non-zero node preceding the current node in the N-1th layer, first determine the number of non-zero child nodes included in the non-zero node based on the placeholder information of the non-zero node. Subtract 1 from the number of non-zero child nodes of the non-zero node to obtain the value a. Next, determine the sum of the number of second-order repeated points included in the non-zero child nodes of the non-zero node, which is recorded as the value b. Finally, add the values ​​a and b to obtain the number of decoded points corresponding to the non-zero node. Using this method, the number of decoded points corresponding to each non-zero node preceding the current node in the N-1th layer can be determined.

[0248] For example, assume that the current node is the third non-zero node in the third layer of the octree shown in Figure 8. When decoding the third non-zero node, the first non-zero node and the second non-zero node preceding the third non-zero node in the N-1th layer have already been decoded. Assume that the placeholder information of the first non-zero node is 01010101, and the first non-zero child node of the first non-zero node includes one repeated point, and the placeholder information of the second non-zero node is 01010100. When decoding the third non-zero node, the number of decoded points corresponding to each non-zero node preceding the current node in the N-1th layer is determined. From the placeholder information, we can see that the first non-zero node includes 4 non-zero child nodes, the second non-zero node includes 3 non-zero child nodes, and the first non-zero child node of the first non-zero node includes 1 repeated point. It can be determined that the number of decoded points corresponding to the first non-zero node is 4-1+1=4, and the number of decoded points corresponding to the second non-zero node is 3-1=2.

[0249] Based on the above method, the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer is determined, and at the same time, the number of non-zero child nodes of the current node is determined. The method for determining the number of non-zero child nodes of the current node can refer to the description of S102-A11-a1 above, and will not be repeated here.

[0250] Next, the decoding end determines the third number of decoded points corresponding to the i-th non-zero child node based on the number of decoded points corresponding to each non-zero node before the current node in the N-1th layer and the number of non-zero child nodes of the current node.

[0251] The embodiment of the present application does not limit the specific implementation method of determining the third number of decoded points corresponding to the i-th non-zero child node in the above S102-A11-b3 based on the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer and the number of non-zero child nodes of the current node.

[0252] In some embodiments, the above S102-A11-1-b3 includes the following steps S102-A11-1-b31 and S102-A11-1-b32:

[0253] S102-A11-1-b31, add the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer to obtain a first sum value;

[0254] S102-A11-1-b32. Determine the number of third decoded points corresponding to the i-th non-zero child node based on the first sum and the number of non-zero child nodes of the current node.

[0255] In this embodiment, the decoding end determines the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer of the octree based on the above method. Then, the decoding end adds the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer to obtain a first sum value, and determines the third number of decoded points corresponding to the i-th non-zero child node based on the first sum value and the number of non-zero child nodes of the current node, thereby accurately determining the third number of decoded points corresponding to the i-th non-zero child node.

[0256] The implementation of determining the number of third decoded points corresponding to the i-th non-zero child node based on the first sum and the number of non-zero child nodes of the current node in S102-A11-1-b32 includes at least the following two methods:

[0257] Method 1: If the i-th non-zero child node is the first non-zero child node of the current node, then add the first sum value to the number of non-zero child nodes included in the current node to obtain the second sum value; subtract 1 from the second sum value to obtain the third number of decoded points corresponding to the i-th non-zero child node.

[0258] In this method 1, if the current node is not the first non-zero node in the N-1th layer, and the i-th non-zero child of the current node is the first non-zero child of the current node, then based on the above steps, the number of decoded points of each decoded non-zero node located before the current node in the N-1th layer is added together to obtain a first sum. At the same time, since the occupancy information of the current node has been decoded, the geometric position information of each child node of the current node can be determined. Therefore, each child node of the current node is determined as a decoded point, and the first sum is added to the number of child nodes of the current node to obtain a second sum. In addition, since the above determination of the first parameter assumes that the current node includes a decoded point, in order to avoid repeated counting of the decoded point, the determined second sum is subtracted by 1 to obtain the third number of decoded points corresponding to the i-th non-zero child node.

[0259] For example, as shown in Figure 8 , assuming the current node is the second non-zero node in the third layer of Figure 8 and the current node's placeholder information is 01010100, it can be determined that the current node includes three non-zero child nodes. Assuming the i-th non-zero child node is the first non-zero child node of the current node, since the current node's placeholder information is known, the geometric position information of the current node's three non-zero child nodes can be determined. Therefore, the geometric position information of the three non-zero child nodes included in the current node has been decoded. As shown in Figure 8 , the non-zero nodes preceding the current node in the third layer are the first non-zero nodes in the third layer. Assuming the placeholder information of this first non-zero node is 01010101, and the first non-zero child node of this first non-zero node includes a repeated point, based on the above method, the number of decoded points corresponding to this first non-zero node can be determined to be 4-1+1, i.e., the first sum is 4. Next, this first sum, 4, is added to the number of non-zero child nodes of the current node, 3, to obtain a second sum, 4+3=7. It should be noted that when determining the first parameter above, it is assumed that the current node includes one decoded point. Therefore, it is necessary to subtract 1 from the second sum value determined above to obtain the number of decoded points corresponding to the first non-zero child node. For example, the number of decoded points corresponding to the first non-zero child node determined is 7-1=6.

[0260] Method 2: If the i-th non-zero child node is not the first non-zero child node of the current node, then add the first sum value to the number of non-zero child nodes included in the current node to obtain the second sum value; subtract 1 from the second sum value to obtain the third sum value; obtain the sum of the first number of repeated points included in the non-zero child nodes located before the i-th non-zero child node in the current node, and add the third sum value to the sum of the first number of repeated points to obtain the third number of decoded points corresponding to the i-th non-zero child node.

[0261] In this second approach, if the current node is not the first non-zero node in the N-1th layer, and the i-th non-zero child of the current node is not the first non-zero child of the current node, then based on the above steps, the number of decoded points of each decoded non-zero node preceding the current node in the N-1th layer is added together to obtain a first sum. At the same time, since the placeholder information of the current node has been decoded, the geometric position information of each child of the current node can be determined. Therefore, each child of the current node is determined as a decoded point, and the first sum is added to the number of child nodes of the current node to obtain a second sum. Furthermore, since the above determination of the first parameter assumes that the current node includes a decoded point, to avoid repeated counting of the decoded point, the second sum is subtracted by 1 to obtain a third sum. In method 2, since the i-th child node is not the first child node of the current node, and the child node before the i-th child node in the current node may include repeated points, it is necessary to obtain the sum of the first number of repeated points included in the non-zero child nodes before the i-th non-zero child node in the current node, and finally add the third sum value to the sum of the first number of repeated points to obtain the third number of decoded points corresponding to the i-th non-zero child node.

[0262] For example, assuming the current node is the second non-zero node in the third layer in Figure 8 and the placeholder information for the current node is 01010100, it can be determined that the current node includes three non-zero child nodes. Assuming the i-th non-zero child node is the second non-zero child node of the current node, since the placeholder information for the current node is known, the geometric position information of the three non-zero child nodes of the current node can be determined. Therefore, the geometric position information of the three non-zero child nodes included in the current node has been decoded. As shown in Figure 8, the non-zero nodes preceding the current node in the third layer are the first non-zero nodes in the third layer. Assuming the placeholder information for this first non-zero node is 01010101, based on the above method, the number of decoded points corresponding to this first non-zero node can be determined to be 4-1, i.e., the first sum is 3. Next, this first sum, 3, is added to the number of non-zero child nodes of the current node, 3, to obtain a second sum, 3+3=6. It should be noted that when determining the first parameter above, it is assumed that the current node includes one decoded point. Therefore, it is necessary to subtract 1 from the second sum to obtain the third value. For example, the third value is determined to be 6-1=5. Assuming that the first non-zero child of the current node includes one duplicate point, this duplicate point is recorded as the first duplicate point. Thus, by adding the first duplicate point count (1) to the third value (5), the third number of decoded points corresponding to the i-th non-zero child node is 1+5=6.

[0263] After determining the third number of decoded points corresponding to the i-th non-zero child node based on the above steps, step S102-A11-2 is executed to determine the first number of decoded points based on the third number of decoded points.

[0264] For an isolated point P, directly compressing its coordinates is more efficient than using an octree. This process of directly encoding the coordinates of points within a node is called the Direct Coding Model (DCM). Whether the current node uses DCM can be inferred based on information from neighboring nodes. This method is called the Inferred Direct Coding Model (IDCM).

[0265] In the embodiments of this application, the number of first decoded points corresponding to the i-th non-zero child node in the point cloud is affected by whether the point cloud uses IDCM or not. The following describes the impact of using DCM or not on the number of first decoded points corresponding to the i-th non-zero child node in the point cloud.

[0266] In some embodiments, if the point cloud does not adopt IDCM, the third number of decoded points corresponding to the i-th non-zero child node is determined as the first number of decoded points corresponding to the i-th non-zero child node.

[0267] In this embodiment, if the point cloud does not use IDCM (i.e., IDCM is disabled), this indicates that direct encoding was not used for each node in the octree during octree encoding. Therefore, when decoding the current node, the octree does not include any first decoded points other than the third decoded point corresponding to the i-th non-zero child node determined above. A first decoded point can be understood as a point whose geometric position has been decoded in a leaf node of the octree. In this case, the number of third decoded points corresponding to the i-th non-zero child node determined above is directly determined as the number of first decoded points corresponding to the i-th non-zero child node.

[0268] In some embodiments, if the point cloud adopts IDCM, the number of points included in the second node using IDCM that has been decoded in the octree is determined; the number of points included in the second node using IDCM and the third number of decoded points corresponding to the i-th non-zero child node determined above are added to obtain a new first number of decoded points corresponding to the i-th non-zero child node.

[0269] In this embodiment, if the point cloud uses IDCM, that is, IDCM is turned on, this indicates that at least one node in the point cloud octree may use direct encoding, directly encoding the geometric information of the points included in the node. Correspondingly, during decoding, the geometric information of the points included in the node is obtained by direct decoding. In this way, when determining the second decoded point corresponding to the i-th non-zero child node, it is necessary to add the number of points included in the decoded node (i.e., the second node) using IDCM in the octree to the third number of decoded points corresponding to the i-th non-zero child node determined above.

[0270] For example, suppose that in the point cloud octree, there is a node using IDCM. Suppose that this IDCM node contains one point. Suppose that all IDCM nodes have been decoded before decoding the current node. Therefore, we can determine that the number of points in the IDCM node in the octree is 1. This decoded point is added to the third decoded point corresponding to the i-th non-zero child node determined above.

[0271] In an example of this embodiment, the decoding end determines the second parameter corresponding to the i-th non-zero child node through the following instruction:

[0272]

[0273] Wherein, pointCountIDCM represents the number of points included in the decoded nodes using IDCM in the octree. In this embodiment, based on the number of non-zero child nodes included in the current node (childCount) and the number of duplicate points decoded before the i-th child node of the current node (dupPointNum), after determining the third number of decoded points corresponding to the i-th non-zero child node (codedCount), the number of points included in the decoded nodes using IDCM in the octree (pointCountIDCM) is added to codedCount to obtain the first number of decoded points corresponding to the i-th non-zero child node.

[0274] After the decoding end determines the number of first decoded points corresponding to the i-th non-zero child node of the current node based on the above step S102-A11, it executes the following step S102-A12.

[0275] S102-A12: Determine a second parameter corresponding to the i-th non-zero child node based on the number of first decoded points corresponding to the i-th non-zero child node in the point cloud.

[0276] In an embodiment of the present application, when decoding the current node, the decoding end first determines the number of first decoded points corresponding to the i-th non-zero child node based on the above steps before determining whether to decode the repeated point information of the i-th non-zero child node of the current node. Then, based on the first number of decoded points corresponding to the i-th non-zero child node, the second parameter corresponding to the i-th non-zero child node is determined. The second parameter determined in this way can reflect the number of points whose geometric positions in the point cloud have been decoded when decoding the i-th non-zero child node. Finally, based on the first parameter corresponding to the current node and the second parameter corresponding to the i-th non-zero child node, it is determined whether the i-th non-zero child node includes repeated points, and then it is determined whether to decode the repeated point information of the i-th non-zero child node.

[0277] From the above, it can be seen that in AVS geometric coding, octree can be used for coding, and octree and prediction tree can be combined for coding.

[0278] In the embodiments of this application, the method for determining the second parameter corresponding to the i-th non-zero child node in the point cloud based on the number of first decoded points corresponding to the i-th non-zero child node differs when the point cloud uses prediction tree encoding and when it does not. The following describes the specific process for determining the second parameter corresponding to the i-th non-zero child node when the point cloud uses prediction tree encoding and when it does not.

[0279] In the embodiment of the present application, based on the number of first decoded points corresponding to the i-th non-zero child node in the point cloud, determining the second parameter corresponding to the i-th non-zero child node includes at least the following methods:

[0280] Method 1: The number of first decoded points is determined as the second parameter.

[0281] In AVS geometric coding, if the point cloud uses prediction tree coding (i.e., prediction tree coding is disabled), the decoded points corresponding to the i-th non-zero child node in the point cloud do not include any other decoded points except the first decoded point corresponding to the i-th non-zero child node determined in the above embodiment. In this case, when decoding the i-th non-zero child node of the current node, the number of first decoded points corresponding to the i-th non-zero child node is determined based on the above steps, and the number of first decoded points corresponding to the i-th non-zero child node is determined as the second parameter corresponding to the i-th non-zero child node.

[0282] Method 2: If the point cloud adopts the prediction tree encoding method, then the above S102-A12 includes the following steps S102-A121 and S102-A122:

[0283] S102-A121, determining the number of second decoded points included in the first node of the octree using the prediction tree coding method;

[0284] S102-A122: Determine the sum of the first number of decoded points and the second number of decoded points as a second parameter.

[0285] In this method 2, if the point cloud adopts the prediction tree coding method, that is, the prediction tree coding method is turned on, then it means that there may be at least one node in the octree of the point cloud that adopts the prediction tree coding method, and the points included in the node are encoded using the prediction tree coding method. For example, as shown in Figure 7, the prediction tree coding method is adopted for the first node of the third layer in the point cloud octree. For example, the points included in the node are sorted, and a preset prediction tree coding method is used to construct a prediction tree for the sorted points, such as constructing an L3C2 single chain. Then, based on the structure of the prediction tree, each node in the prediction tree is traversed, and the geometric position information of the node is predicted by selecting different prediction modes to obtain the prediction residual, and the geometric prediction residual is quantized and encoded using the quantization parameter to form a geometric code stream.

[0286] Correspondingly, when decoding the node, the decoder uses prediction tree decoding to perform geometric decoding on the node, obtaining geometric reconstruction values ​​for the points included in the node. That is, in the embodiment of the present application, since the octree is traversed using the breadth-first principle, the node encoded using the prediction tree is located before the current node in the octree. That is, when decoding the current node, the node encoded using the prediction tree has already been decoded. Therefore, when determining the second parameter corresponding to the i-th non-zero child of the current node, it is necessary not only to determine the first number of decoded points corresponding to the i-th non-zero child, but also to determine the number of decoded points included in the first node encoded using the prediction tree in the octree. For ease of description, the number of decoded points included in the first node encoded using the prediction tree is denoted as the second number of decoded points. Furthermore, the first number of decoded points corresponding to the i-th non-zero child is added to the second number of decoded points included in the first node encoded using the prediction tree in the octree, and the result of the addition is determined as the second parameter corresponding to the i-th non-zero child.

[0287] In an example of the second method, the decoder determines the second parameter corresponding to the i-th non-zero child node through the following instruction:

[0288]

[0289] Wherein, pointCountPred represents the number of points included in the first decoded node encoded using the prediction tree in the octree, i.e., the second decoded point number. In this embodiment, based on the number of non-zero child nodes included in the current node, childCount, and the number of duplicate points decoded before the i-th child node in the current node, dupPointNum, the first decoded point number corresponding to the i-th non-zero child node, codedCount, is determined. Then, the second decoded point number in the octree, pointCountIDCM, is added to codedCount to obtain the second parameter corresponding to the i-th non-zero child node.

[0290] In this case 1, after determining the second parameter corresponding to the i-th non-zero child node of the current node based on the above steps, execute the above S102-A2 to determine whether to decode the repeated point information of the i-th non-zero child node based on the first parameter and the second parameter.

[0291] The implementation of determining whether to decode the duplicate point information of the i-th non-zero child node based on the first parameter and the second parameter in S102-A2 includes but is not limited to the following methods:

[0292] Method 1: If the first parameter is equal to the second parameter, skip decoding the repeated point information of the i-th non-zero child node.

[0293] As can be seen from the above, the first parameter corresponding to the current node can be understood as the number of points in the point cloud whose geometric position information is uncertain when decoding the current node, or it can be understood as the number of undecoded points. The second parameter corresponding to the i-th non-zero child node of the current node can be understood as the number of points currently decoded.

[0294] In method 1, if the first parameter corresponding to the determined current node is equal to the second parameter corresponding to the i-th non-zero child node in the current node, it means that the i-th non-zero child node and subsequent undecoded leaf nodes do not include duplicate points. Therefore, the decoding of the duplicate point information of the i-th non-zero child node is skipped to save decoding time.

[0295] For example, assuming that the point cloud includes 10 points, assuming that the current node is the second non-zero node in the third layer in Figure 8, and the N-1th layer of the octree where the current node is located includes 4 non-zero nodes, it can be determined that the first parameter corresponding to the current node is 10-4=6.

[0296] Assuming the placeholder information of the current node is 01010100, it can be determined that the current node includes three non-zero child nodes. Assuming that the i-th non-zero child node is the second non-zero child node of the current node, since the placeholder information of the current node is known, the geometric position information of the three non-zero child nodes of the current node can be determined. Therefore, the geometric position information of the three non-zero child nodes included in the current node has been decoded. As shown in Figure 8, the non-zero nodes located before the current node in the third layer are the first non-zero nodes in the third layer. Assuming that the placeholder information of this first non-zero node is 01010101, and assuming that the first non-zero child node of the current node includes one repeated point, therefore, based on the above method, it can be determined that the first number of decoded points corresponding to the i-th non-zero child node is 4-1+3-1+1=6. In this embodiment, assuming that the point cloud does not use prediction tree encoding, the first number of decoded points corresponding to the i-th non-zero child node, 6, is determined as the second parameter corresponding to the i-th non-zero child node.

[0297] In this example, the first parameter 6 corresponding to the current node is equal to the second parameter 6 corresponding to the i-th non-zero child node, so decoding of the repeated point information of the i-th non-zero child node is skipped.

[0298] Method 2: If the first parameter is greater than the second parameter and the i-th non-zero child node is the last voxel node of the octree, then the decoding of the duplicate point information of the i-th non-zero child node is skipped, and the difference between the first parameter and the second parameter is determined as the number of duplicate points included in the i-th non-zero child node.

[0299] In method 2, if the first parameter corresponding to the determined current node is equal to the second parameter corresponding to the i-th non-zero child node in the current node, it means that the i-th non-zero child node and subsequent undecoded leaf nodes may include duplicate points. At the same time, since the i-th non-zero child node is the last non-zero voxel node of the octree, it means that the i-th non-zero child node must include duplicate points, and the number of duplicate points included in the i-th non-zero child node is the difference between the first parameter and the second parameter.

[0300] For example, assuming that the point cloud includes 10 points, assuming that the current node is the fourth non-zero node in the third layer in Figure 8, and the N-1th layer of the octree where the current node is located includes 4 non-zero nodes, it can be determined that the first parameter corresponding to the current node is 10-4=6.

[0301] Assuming the placeholder information for the current node is 00000010, it can be determined that the current node includes one non-zero child node. Assuming the i-th non-zero child node is the only non-zero child node of the current node, since the placeholder information for the current node is known, the geometric position information of the one non-zero child node of the current node can be determined. Therefore, the geometric position information of the one non-zero child node included in the current node has been decoded. As shown in Figure 8, the non-zero nodes preceding the current node in the third layer are the first, second, and third non-zero nodes in the third layer. Assuming the placeholder information for the first non-zero node is 01010101, the placeholder information for the second non-zero node is 01010100, and the placeholder information for the third non-zero node is 00000100, none of the non-zero child nodes of the first three non-zero nodes contain duplicate points. Based on the above method, the number of first decoded points corresponding to the i-th non-zero child node can be determined to be 4-1+3-1+1-1+1-1=5. In this embodiment, assuming that the point cloud does not adopt prediction tree encoding, the first number of decoded points corresponding to the i-th non-zero child node, 5, is determined as the second parameter corresponding to the i-th non-zero child node.

[0302] From the above, it can be seen that the first parameter 6 is greater than the second parameter 5, and the i-th non-zero child node is the last non-zero child node of the octree. Therefore, it can be determined that the i-th non-zero child node must include duplicate points, and the number of duplicate points included is 6-5=1. The decoding of the duplicate point information of the i-th non-zero child node is skipped, thereby saving decoding time and improving decoding efficiency.

[0303] Mode 3: If the first parameter is greater than the second parameter and the i-th non-zero child node is not the last voxel node of the octree, the duplicate point information of the i-th non-zero child node is decoded.

[0304] In method 3, if the first parameter corresponding to the determined current node is equal to the second parameter corresponding to the i-th non-zero child node in the current node, it means that the i-th non-zero child node and subsequent undecoded leaf nodes may include duplicate points. Therefore, in order to ensure the accuracy of decoding, the duplicate point information of the i-th non-zero child node is decoded.

[0305] For example, assuming that the point cloud includes 10 points, assuming that the current node is the second non-zero node in the third layer in Figure 8, and the N-1th layer of the octree where the current node is located includes 4 non-zero nodes, it can be determined that the first parameter corresponding to the current node is 10-4=6.

[0306] Assuming the placeholder information of the current node is 01010100, it can be determined that the current node includes three non-zero child nodes. Assuming that the i-th non-zero child node is the second non-zero child node of the current node, since the placeholder information of the current node is known, the geometric position information of the three non-zero child nodes of the current node can be determined. Therefore, the geometric position information of the three non-zero child nodes included in the current node has been decoded. As shown in Figure 8, the non-zero nodes located before the current node in the third layer are the first non-zero nodes in the third layer. Assuming that the placeholder information of this first non-zero node is 01010101, and assuming that the third non-zero child node of the current node includes one repeated point, therefore, based on the above method, it can be determined that the first number of decoded points corresponding to the i-th non-zero child node is 4-1+3-1=5. In this embodiment, assuming that the point cloud does not use prediction tree encoding, the first number of decoded points corresponding to the i-th non-zero child node, 5, is determined as the second parameter corresponding to the i-th non-zero child node.

[0307] In this example, if the first parameter 6 corresponding to the current node is greater than the second parameter 5 corresponding to the i-th non-zero child node, and the i-th non-zero child node is not the last voxel node of the octree, the duplicate point information of the i-th non-zero child node is decoded.

[0308] In the above case 1, based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer of the octree, the first parameter corresponding to the current node is determined, and the second parameter corresponding to the i-th non-zero child node of the current node is determined. Based on the first parameter and the second parameter, it is determined whether to decode the duplicate point information of the i-th non-zero child node. For example, if the first parameter is equal to the second parameter, the decoding of the duplicate point information of the i-th non-zero child node is skipped, thereby reducing the decoding complexity of the point cloud, saving decoding time, and improving decoding efficiency.

[0309] The following describes the process of determining the first parameter corresponding to the current node and geometric decoding of the current node based on the first parameter in case 2.

[0310] In case 2, the above S101 includes the following steps:

[0311] S101-B1, for the i-th non-zero child node in the current node, determine the total number of decoded repeated points corresponding to the i-th non-zero child node;

[0312] S101-B2. Determine the total number of decoded repeated points corresponding to the i-th non-zero child node as a first parameter.

[0313] In this case 2, when determining whether the i-th non-zero child node of the current node includes repeated points, the number of decoded repeated points corresponding to the i-th non-zero child node is first determined, where the decoded repeated points corresponding to the i-th non-zero child node can be understood as the repeated points that have been decoded by the decoding end before decoding the repeated point information of the i-th non-zero child node.

[0314] In some embodiments, the decoding end uses dupCount to record the number of duplicate points decoded, where dupCount is initialized to 0.

[0315] In one example, the decoding end uses the following command to record the number of decoded repeated points:

[0316] dupCount+=dupPointNum

[0317] Wherein, dupPointNum represents the number of duplicate points included in a leaf node of the octree.

[0318] The decoding end determines the total number of decoded repeated points corresponding to the i-th non-zero child node, and determines the total number of decoded repeated points corresponding to the i-th non-zero child node as the first parameter, and then performs geometric decoding on the current node based on the first parameter.

[0319] In some embodiments, determining the total number of decoded repeated points corresponding to the i-th non-zero child node in S101-B1 includes:

[0320] S101-B11, determining the sum of the number of third decoded repeated points included in each non-zero child node located before the i-th non-zero child node in the octree;

[0321] S101-B12: Determine the total number of decoded repeated points corresponding to the i-th non-zero child node based on the sum of the third number of decoded repeated points.

[0322] In this embodiment, if the i-th non-zero child node is not the first non-zero leaf node in the octree, the sum of the number of decoded points included in each non-zero child node located before the i-th non-zero child node in the octree is determined. For ease of description, this decoded point is recorded as the third decoding point.

[0323] For example, as shown in Figure 8, assuming that the current node is the first non-zero node in the N-1th layer, the placeholder information of the current node is 010101010, the i-th non-zero child node is the third non-zero child node in the current node, and in the octree, there are two non-zero child nodes located before the i-th non-zero child node. Assuming that one of the two non-zero child nodes includes two repeated points and the other non-zero child node includes one repeated point, it can be determined that the sum of the third decoded repeated points is 2+1=3.

[0324] Based on the above steps, after determining the sum of the third number of decoded repeated points included in each non-zero child node located before the i-th non-zero child node in the octree, the total number of decoded repeated points corresponding to the i-th non-zero child node is determined based on the sum of the third number of decoded repeated points.

[0325] Based on whether the point cloud adopts prediction tree coding, the implementation method of determining the total number of decoded duplicate points corresponding to the i-th non-zero child node based on the sum of the third number of decoded duplicate points in the above S101-B12 includes at least the following two methods:

[0326] Method 1: If the point cloud adopts the prediction tree encoding method, the sum of the fourth number of decoded duplicate points included in the first node of the octree adopting the prediction tree encoding method is determined; based on the sum of the third number of decoded duplicate points and the sum of the fourth number of decoded duplicate points, the total number of decoded duplicate points corresponding to the i-th non-zero child node is determined.

[0327] In this method 1, if the point cloud uses predictive coding, as mentioned above, the decoder completes the prediction tree coding of the nodes in the octree before decoding the current node. This allows the sum of the fourth number of decoded duplicate points included in the first node in the octree using the prediction tree coding method to be obtained. Then, based on the sum of the third number of decoded duplicate points and the sum of the fourth number of decoded duplicate points, the total number of decoded duplicate points corresponding to the i-th non-zero child node is determined.

[0328] In some embodiments, if the point cloud is not encoded using IDCM, the sum of the third number of decoded duplicate points and the sum of the fourth number of decoded duplicate points are used to determine the total number of decoded duplicate points corresponding to the i-th non-zero child node.

[0329] In some embodiments, if the point cloud adopts the inferred direct coding mode IDCM, the total number of decoded duplicate points corresponding to the i-th non-zero child node is determined based on the sum of the third number of decoded duplicate points and the sum of the fourth number of decoded duplicate points, including: determining the sum of the fifth number of decoded duplicate points included in the second node adopting IDCM in the octree; and determining the total number of decoded duplicate points corresponding to the i-th non-zero child node by adding the sum of the third number of decoded duplicate points, the sum of the fourth number of decoded duplicate points, and the sum of the fifth number of decoded duplicate points.

[0330] Method 2: If the point cloud does not use the prediction tree encoding method, the total number of decoded duplicate points corresponding to the i-th non-zero child node is determined based on the sum of the third number of decoded duplicate points.

[0331] In one implementation of method 2, if the point cloud does not use the prediction tree encoding method and does not use the IDCM encoding method, the total number of decoded duplicate points corresponding to the i-th non-zero child node is determined based on the sum of the third number of decoded duplicate points determined above.

[0332] In another implementation of method 2, if the point cloud does not adopt the prediction tree encoding method and adopts the IDCM encoding method, then the sum of the fifth decoded duplicate points included in the second node using IDCM in the octree is determined, and the sum of the fifth decoded duplicate points is added to the sum of the third decoded duplicate points to obtain the total number of decoded duplicate points corresponding to the i-th non-zero child node.

[0333] Based on the above method, after the total number of decoded repeated points corresponding to the i-th non-zero child node is determined, the total number of decoded repeated points corresponding to the i-th non-zero child node is determined as the first parameter.

[0334] In case 2, the geometric decoding of the current node based on the first parameter in S102 includes the following steps S102-B1 and S102-B2:

[0335] S102-B1, determining the total number of duplicate points in the point cloud;

[0336] S102-B2: Determine whether to decode the duplicate point information of the i-th non-zero child node based on the total number of duplicate points in the point cloud and the total number of decoded duplicate points corresponding to the i-th non-zero child node.

[0337] In case 2, when determining whether to decode the duplicate point information for the i-th non-zero child of the current node, the decoder determines the number of decoded duplicate points corresponding to the i-th non-zero child as the first parameter based on the above steps. Next, the total number of duplicate points in the point cloud is determined, and the number of decoded duplicate points corresponding to the i-th non-zero child is compared with the number of duplicate points in the point cloud to determine whether the i-th non-zero child contains duplicate points, and thus determine whether to decode the duplicate point information for the i-th non-zero child.

[0338] The methods for determining the total number of duplicate points in the point cloud in S102-B1 include but are not limited to the following:

[0339] In method 1, the encoder writes the total number of repeated points in the point cloud into the geometry stream, so that the decoder can obtain the total number of repeated points in the point cloud by decoding the geometry stream.

[0340] In method 2, the decoding end determines the total number of points in the point cloud and the total number of non-zero voxel nodes in the octree; the difference between the total number of points in the point cloud and the total number of non-zero voxel nodes in the octree is determined as the total number of repeated points in the point cloud.

[0341] In this second approach, the voxel-level nodes of the octree can be understood as the leaf nodes at the last voxel level of the octree. Each non-zero voxel-level node in the octree contains at least one point in the point cloud. Therefore, in this approach, the difference between the total number of points in the point cloud and the total number of voxel nodes in the octree is used as the total number of duplicate points in the point cloud.

[0342] Among them, the method for the decoding end to determine the total number of points in the point cloud can refer to the description of the above embodiment and will not be repeated here.

[0343] In some embodiments, the decoding end determines the number of non-zero voxel nodes in the last layer of the octree through the placeholder information of each non-zero node in the N-1th layer of the octree.

[0344] After the decoding end determines the total number of duplicate points in the point cloud based on the above method 1 or method 2, it determines whether to decode the duplicate point information of the i-th non-zero child node based on the total number of duplicate points in the point cloud and the total number of decoded duplicate points corresponding to the i-th non-zero child node.

[0345] In some embodiments, if the total number of decoded duplicate points corresponding to the i-th non-zero child node is equal to the total number of duplicate points in the point cloud, it indicates that all duplicate points in the point cloud have been decoded. At this point, the i-th non-zero child node and the leaf nodes after the i-th non-zero child node do not contain duplicate points. Therefore, decoding the duplicate point information of the i-th non-zero child node is skipped, thereby reducing the decoding complexity of the point cloud, saving decoding time, and improving decoding efficiency.

[0346] In some embodiments, if the total number of decoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points in the point cloud, and the i-th non-zero child node is the last voxel node of the octree, it means that the i-th non-zero child node includes duplicate points. At this time, decoding the duplicate point information of the i-th non-zero child node is skipped, and the difference between the total number of duplicate points in the point cloud and the total number of decoded duplicate points corresponding to the i-th non-zero child node is determined as the number of duplicate points included in the i-th non-zero child node.

[0347] In some embodiments, if the total number of decoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points in the point cloud, and the i-th non-zero child node is the last voxel node of the octree, it means that the i-th non-zero child node or the leaf node after the i-th non-zero child node may include duplicate points. Therefore, in order to improve the decoding accuracy, the decoding end decodes the duplicate point information of the i-th non-zero child node.

[0348] From the above, it can be seen that the decoding end determines the first parameter corresponding to the current node in the octree-based point cloud decoding based on the above-mentioned methods of Case 1 and Case 2, and decodes the current node based on the first parameter.

[0349] The point cloud decoding method provided by an embodiment of the present application, in point cloud decoding, for example, in AVS-based point cloud decoding, when decoding the current node of the N-1th layer in the octree, first determines a first parameter corresponding to the current node, and the first parameter is used to determine whether at least one non-zero child node of the current node includes duplicate points. The current node is a non-zero node of the N-1th layer in the octree of the point cloud, and N is the total number of layers of the octree. Then, based on the first parameter, the current node is geometrically decoded. For example, when it is determined based on the first parameter that the i-th non-zero child node of the current node does not include duplicate points, the decoding of the duplicate point information of the i-th non-zero child node is skipped, thereby reducing the decoding complexity of the point cloud, saving decoding time, and improving decoding efficiency.

[0350] The above takes the decoding end as an example to introduce in detail the point cloud decoding method provided in the embodiment of the present application. The following takes the encoding end as an example to introduce the point cloud encoding method provided in the embodiment of the present application.

[0351] Figure 9 is a schematic diagram of a point cloud encoding method according to an embodiment of the present application. The point cloud encoding method according to the embodiment of the present application can be implemented by the point cloud encoding device shown in Figure 3 or Figure 4 above.

[0352] As shown in FIG9 , the point cloud encoding method of the embodiment of the present application includes:

[0353] S201, determining a first parameter corresponding to the current node;

[0354] S202. Perform geometric encoding on the current node based on the first parameter.

[0355] Among them, the first parameter is used to determine whether at least one non-zero child node of the current node includes duplicate points. The current node is a non-zero node in the N-1th layer of the octree of the point cloud. The octree is obtained based on node division of the point cloud. N is the total number of layers of the octree, and N is a positive integer greater than 1.

[0356] The point cloud coding method proposed in the embodiment of the present application can be applied to a variety of point cloud coding scenarios. In some embodiments, if the point cloud coding method of the embodiment of the present application is applied to AVS, the above octree is obtained by dividing the point cloud into nodes based on the AVS method.

[0357] The point cloud in the embodiment of the present application can be understood as a point cloud block or point cloud slice that can be encoded individually.

[0358] For example, the point cloud in the embodiment of the present application is the entire point cloud sequence that has not been divided.

[0359] For another example, if the embodiment of the present application decides to divide the point cloud sequence based on parameter configuration, the point cloud of the embodiment of the present application can be understood as a point cloud slice in at least one slice (point cloud slice) into which the entire point cloud sequence is divided.

[0360] As can be seen from the above, point clouds include geometric information and attribute information, and the encoding of point clouds includes geometric encoding and attribute encoding. The embodiments of the present application relate to the geometric encoding of point clouds. That is, the encoded points involved in the embodiments of the present application refer to points in the point cloud whose geometric information has been encoded, and the unencoded points refer to points in the point cloud whose geometric information has not been encoded.

[0361] In some embodiments, the geometric information of the point cloud is also referred to as the position information of the point cloud. Therefore, the geometric encoding of the point cloud is also referred to as the position encoding of the point cloud.

[0362] In some embodiments, if the current point cloud only uses octree coding in AVS geometric coding and does not use prediction tree coding, that is, the prediction tree coding algorithm is turned off. At this time, the encoding end constructs the octree structure of the point cloud based on the octree encoding method. For example, as shown in Figure 6, the point cloud is enclosed by the smallest cuboid. The bounding box is first divided into octrees to obtain 8 nodes. The occupied nodes among these 8 nodes, that is, the nodes including the points, continue to be divided into octrees, and so on until the division is to the voxel level, for example, to a 1X1X1 cube. The point cloud octree structure obtained by such division includes multiple layers of nodes, for example, N layers. During encoding, the occupancy information of each layer is encoded layer by layer until the voxel-level leaf nodes of the last layer are encoded. That is to say, in octree encoding, the point cloud is divided into octrees, and finally the points in the point cloud are divided into voxel-level leaf nodes of the octree. The encoding of the point cloud is achieved by encoding the entire octree.

[0363] In some embodiments, during the AVS geometry coding of the current point cloud, the encoder can employ both octree encoding and prediction tree encoding, i.e., the prediction tree encoding algorithm is disabled. In this case, as shown in FIG7 , the bounding box of the point cloud is first partitioned using an octree. The partitioning is performed to a preset depth, for example, three layers. For each non-zero node obtained from the partitioning, it is determined whether the node is to be encoded using prediction tree encoding or octree encoding. If the node is determined to be encoded using prediction tree encoding, the geometric information of the points included in the node is encoded using prediction tree encoding. For example, if the first node in the third layer is determined to be encoded using prediction tree encoding, the points included in the node are sorted, and a prediction tree is constructed for the sorted points using a preset prediction tree encoding method, such as an L3C2 single chain. Next, based on the structure of the prediction tree, each node in the prediction tree is traversed, and the geometric position information of the node is predicted by selecting different prediction modes to obtain a prediction residual. The geometric prediction residual is then quantized using a quantization parameter. Finally, through continuous iteration, the prediction residual of the prediction tree node position information, the prediction tree structure, and the quantization parameter are encoded. If it is determined that the node is divided into octrees, the octree partitioning method is used to divide the node until it is divided into leaf nodes at the voxel level, and the occupancy information of each node in the octree is encoded to form a geometric code stream.

[0364] Optionally, if a node is encoded using prediction tree coding, the encoder uses a parameter to indicate that the node is encoded using prediction tree coding. For example, the parameter may be a first flag, and the encoder sets the first flag to true to indicate that the node is encoded using prediction tree coding, for example, setting the first flag to 1. Thus, the decoder determines that the node is encoded using prediction tree coding by decoding the first flag, and accordingly, performs geometric decoding on the node using prediction tree decoding to obtain geometric reconstruction values ​​of the points included in the node.

[0365] It can be seen from Figures 6 and 7 above that in the AVS point cloud geometry coding, regardless of whether the prediction tree coding is turned on, at least some points in the point cloud are divided into octrees and finally divided into voxel-level leaf nodes.

[0366] In some embodiments, since some points in the point cloud have the same coordinate information, these points with the same coordinates are divided into the same leaf node of the octree, so that the leaf node includes repeated points.

[0367] Currently, when encoding a node at level N-1 of an octree, the encoder encodes not only the placeholder information for that node but also the duplicate point information for its child nodes (i.e., leaf nodes). Correspondingly, when encoding a node at level N-1 of an octree, the encoder encodes not only the placeholder information for that node but also the duplicate point information for its child nodes. This increases encoding complexity, wastes encoding time, and reduces encoding efficiency.

[0368] As can be seen from the above, in the octree of the point cloud, not every leaf node includes duplicate points. It can even be understood that only a few leaf nodes in the octree of the point cloud include duplicate points. Based on this, in an embodiment of the present application, when encoding the current node of the N-1th layer of the octree of the point cloud, the first parameter corresponding to the current node is first determined. The first parameter is used to determine whether at least one child node (i.e., a leaf node) of the current node includes duplicate points, and then the current node is encoded based on the first parameter. For example, when it is determined based on the first parameter that the i-th non-zero child node of the current node does not include duplicate points, the encoding of the duplicate point information of the i-th non-zero child node is skipped, thereby reducing the encoding complexity of the point cloud, saving encoding time, and improving encoding efficiency.

[0369] The embodiments of the present application mainly relate to the encoding process of the nodes in the N-1th layer of the point cloud octree. The N-1th layer can also be understood as the second to last layer of the octree of the point cloud.

[0370] When encoding a node in the N-1th layer of the octree, it is necessary to encode not only the placeholder information of the node but also the repeated point information of its child nodes. The child nodes of the N-1th layer are the voxel-level leaf nodes of the octree, i.e., the last layer nodes.

[0371] In an embodiment of the present application, the encoding process for each node in the N-1th layer of the octree is basically the same. For the convenience of description, the encoding process of the embodiment of the present application is introduced by taking the current node in the N-1th layer of the octree as an example.

[0372] In some embodiments, the current node can be understood as any non-zero node (also called a non-empty node) in the N-1th layer of the octree, where the non-zero node can be understood as a node including at least one child node, or a node including at least one point in the point cloud.

[0373] In some embodiments, the current node may be understood as a non-zero node in the N-1th layer of the octree that is currently waiting to be encoded.

[0374] In an embodiment of the present application, before encoding the current node, a first parameter corresponding to the current node is first determined, and then the current node is encoded based on the first parameter. In an embodiment of the present application, different methods for determining the first parameter corresponding to the current node are used, and corresponding methods for encoding the current node based on the first parameter are also different. The following describes in detail several methods for determining the first parameter corresponding to the current node and the process for encoding the current node based on the first parameter involved in an embodiment of the present application.

[0375] In case 1, the above S201 includes the following steps S201-A1 to S201-A2:

[0376] S201-A1, determine the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer;

[0377] S201-A2: Determine a first parameter based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer.

[0378] In an embodiment of the present application, the encoding end encodes the nodes in the octree based on a breadth-first traversal method.

[0379] In this scenario 1, a first parameter corresponding to the current node is determined based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer of the point cloud's octree. This first parameter can be understood as the number of points in the current point cloud whose geometric information cannot be determined. Based on this first parameter, the current node is then encoded. For example, based on this first parameter, it is determined whether the child nodes of the current node include duplicate points. If it is determined based on this first parameter that the child nodes of the current node do not include duplicate points, the duplicate point information of the child nodes of the current node is skipped, thereby reducing the encoding complexity of the point cloud, saving encoding time, and thus improving encoding efficiency.

[0380] In some embodiments, the encoder writes the total number of points in the point cloud into the geometry stream, so that the decoder obtains the total number of points in the point cloud by decoding the geometry stream.

[0381] In some embodiments, the encoder writes the total number of points in the point cloud into the geometry brick header (GBH) of the point cloud. In this way, the decoder obtains the total number of points in the point cloud by decoding the geometry brick header (GBH).

[0382] In some embodiments, since the point cloud includes at least one point, in order to save code words, the encoding end divides the number of points in the point cloud into the low-order part num_points_lower of the number of points contained in the slice and the high-order part num_points_upper of the number of points contained in the slice when encoding the total number of points in the point cloud, and writes num_points_lower and num_points_upper into the geometry unit header.

[0383] In one example, the parameters of the geometric unit head are specifically as shown in Table 2 above.

[0384] In some embodiments, as described above, the encoder encodes the placeholder information for nodes at each level of the octree using a breadth-first traversal approach. For example, based on the child nodes of each node at level N-2, the encoder determines the placeholder information for each node at level N-2, and then writes the placeholder information for each node at level N-2 into the geometry bitstream. In this way, the decoder decodes the placeholder information for each node at level N-2 and can determine the number of nodes at level N-1.

[0385] After determining the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer, the encoder determines a first parameter corresponding to the current node based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer.

[0386] The embodiment of the present application does not limit the specific method of determining the first parameter corresponding to the current node based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer.

[0387] In some embodiments, the encoding end determines the difference between the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer as the first parameter. In this embodiment, by determining the number of occupied nodes in the N-1th layer, it can be determined that the occupied nodes include at least one non-zero child node, that is, the occupied nodes in the N-1th layer correspond to at least one point. Therefore, the difference between the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer of the octree is determined as the number of points with uncertain geometric information in the point cloud, that is, the first parameter. For example, the point cloud includes 10 points, and the N-1th layer includes 4 nodes, which means that each of the 4 nodes in the N-1th layer includes at least one non-zero child node, and a non-zero child node includes at least one point. Therefore, it can be determined that the number of points with uncertain position information in the current point cloud is 10-4=6, and then the first parameter corresponding to the current node is determined to be 6.

[0388] In a possible implementation, the first parameter is determined based on the above formula (4).

[0389] After the first parameter corresponding to the current node is determined based on the above method, the above step S202 is executed to encode the current node based on the first parameter.

[0390] In some embodiments, if the first parameter corresponding to the current node is determined to be 0, for example, the total number of points in the point cloud is a, and the N-1 layer of the point cloud octree includes a nodes, then if the first parameter is determined to be 0, then each non-zero node in the N-1 layer includes a non-zero child node, and the non-zero child node includes a point in the point cloud, and no duplicate points are included. In this case, when encoding the nodes in the N-1 layer, the encoding of duplicate point information for the non-zero child nodes of each non-zero node is skipped, thereby reducing encoding complexity and saving encoding time.

[0391] In some embodiments, if it is determined that the first parameter corresponding to the current node is not 0, the above S202 is as shown in the following case 1.

[0392] In case 1, the above S202 includes the following steps S202-A1 to S202-A2:

[0393] S202-A1. For the i-th non-zero child node of the current node, determine a second parameter corresponding to the i-th non-zero child node, where the second parameter is used to indicate the number of points whose geometric positions in the point cloud have been encoded when encoding the i-th non-zero child node;

[0394] S202-A2: Determine whether to encode repeated point information of the i-th non-zero child node based on the first parameter and the second parameter.

[0395] From the above, it can be seen that the current node includes at least one non-zero child node. When encoding the current node, the specific process of determining whether to encode the repeated point information of each non-zero child node included in the current node is the same. For the sake of convenience of description, the i-th non-zero child node of the current node is taken as an example for explanation.

[0396] In this scenario 1, the encoder determines the first parameter corresponding to the current node based on steps S202-A1 to S202-A2 above. This first parameter can be understood as the number of points in the point cloud whose current position information is undetermined. Next, the encoder determines the second parameter corresponding to the i-th non-zero child node of the current node. This second parameter is used to indicate the number of points whose geometric positions in the point cloud have been encoded when encoding the i-th non-zero child node. Finally, based on the first parameter corresponding to the current node and the second parameter corresponding to the i-th non-zero child node, the encoder determines whether the i-th non-zero child node includes duplicate points, and further determines whether to encode the duplicate point information of the i-th non-zero child node.

[0397] The specific process of determining the second parameter corresponding to the i-th non-zero child node is introduced below.

[0398] The embodiment of the present application does not limit the specific method of determining the second parameter corresponding to the current i-th non-zero child node.

[0399] In some embodiments, during encoding, the encoding end records in real time the number of points whose geometric positions have been encoded in the current point cloud, and then, when encoding the current node, determines the number of points determined by the geometric position information that has been determined before encoding the repeated point information of the i-th non-zero child node.

[0400] In some embodiments, determining the second parameter corresponding to the i-th non-zero child node in S202-A1 includes the following steps S202-A11 and S202-A12:

[0401] S202-A11. Determine the number of first encoded points corresponding to the i-th non-zero child node in the point cloud.

[0402] In this embodiment, the encoder determines the number of first encoded points corresponding to the i-th non-zero child node in the point cloud, and based on the number of first encoded points corresponding to the i-th non-zero child node in the point cloud, determines the second parameter corresponding to the i-th non-zero child node. For example, the number of first encoded points corresponding to the i-th non-zero child node in the point cloud is determined as the second parameter corresponding to the i-th non-zero child node.

[0403] In this embodiment, the number of first encoded points corresponding to the i-th non-zero child node can be understood as the total number of points currently encoded by the encoding end when determining whether to encode the repeated point information of the i-th non-zero child node of the current node.

[0404] In some embodiments, the encoding end starts a counter during encoding, and the counter is used to record the number of encoded points in real time, so that when encoding the i-th non-zero child node, the first number of encoded points corresponding to the i-th non-zero child node can be obtained from the counter.

[0405] In some embodiments, when encoding the i-th non-zero child node, the encoder determines the number of first encoded points corresponding to the i-th non-zero child node through the following steps:

[0406] S202-A11-1. Determine the number of third encoded points corresponding to the i-th non-zero child node;

[0407] S202-A11-1. Determine the number of first encoded points based on the number of third encoded points.

[0408] The third encoded point can be understood as an encoded point in a leaf node of the octree. The encoder determines the number of first encoded points corresponding to the i-th non-zero child node by determining the number of points included in the encoded leaf node before the i-th non-zero child node.

[0409] The implementation methods for determining the number of third coded points corresponding to the i-th non-zero child node in S202-A11-1 include but are not limited to the following:

[0410] Method 1: If the current node is the first non-zero node in the N-1th layer, then the above S202-A11-1 includes the following steps S202-A11-1-a1 and S202-A11-1-a2:

[0411] S202-A11-1-a1, determine the number of non-zero child nodes of the current node;

[0412] S202-A11-1-a2. Determine the number of third encoded points corresponding to the i-th non-zero child node based on the number of non-zero child nodes of the current node.

[0413] In method 1, if the current node is the first non-zero node in the N-1th layer of the octree, the number of non-zero child nodes included in the current node is determined, and based on the number of non-zero child nodes of the current node, the number of third encoded points corresponding to the i-th non-zero child node is determined.

[0414] Exemplarily, the encoding end determines the occupancy information of the current node based on the occupancy of each child node of the current node in the N-1th layer. Assuming that among the 8 child nodes of the current node, the 2nd child node, the 4th child node, the 6th child node and the 8th child node are occupied, the occupancy information of the current node is determined to be 01010101. In this way, it can be determined that the current node includes 4 non-zero child nodes.

[0415] After determining the number of non-zero child nodes of the current node, the encoder determines the number of third encoded points corresponding to the i-th non-zero child node based on the number of non-zero child nodes of the current node.

[0416] The method for determining the number of third coded points corresponding to the i-th non-zero child node based on the number of non-zero child nodes of the current node in S202-A11-a2 includes but is not limited to the following:

[0417] Method 1: If the i-th non-zero child node is the first non-zero child node of the current node, the number of non-zero child nodes included in the current node is reduced by 1 to determine the third number of encoded points corresponding to the i-th non-zero child node.

[0418] For example, as shown in Figure 8 , assuming the current node is the first non-zero node in the third layer of Figure 8 and the occupancy information of the current node is 01010101, it can be determined that the current node includes four non-zero child nodes. Assuming the i-th non-zero child node is the first non-zero child node of the current node, since the occupancy information of the current node is known, the geometric position information of the four non-zero child nodes of the current node can be determined. Therefore, the geometric position information of the four non-zero child nodes included in the current node has been encoded, that is, the four non-zero child nodes included in the current node are encoded points for the first non-zero child node of the current node. It should be noted that when determining the first parameter above, it is assumed that the current node includes one encoded point. Therefore, it is necessary to subtract 1 from the number of non-zero child nodes included in the current node to determine the third number of encoded points corresponding to the i-th non-zero child node. For example, the number of encoded points corresponding to the i-th non-zero child node is determined to be 4-1=3.

[0419] Method 2: If the i-th non-zero child node is not the first non-zero child node of the current node, obtain the sum of the first number of repeated points included in the non-zero child nodes of the current node that are located before the i-th non-zero child node; subtract 1 from the number of non-zero child nodes included in the current node, and then add it to the sum of the first number of repeated points to obtain the third number of encoded points corresponding to the i-th non-zero child node.

[0420] In method 2, if the i-th non-zero child node of the current node is not the first non-zero child node of the current node, that is, before the i-th child node, at least one non-zero child node of the current node has been encoded, the encoded non-zero child nodes may include duplicate points. Therefore, when determining the third number of encoded points corresponding to the i-th child node, the number of encoded duplicate points needs to be considered.

[0421] Specifically, if the current node is the first non-zero node in the N-1th layer, and the i-th non-zero child node of the current node is not the first non-zero child node of the current node, then obtain the sum of the first number of repeated points included in the non-zero child nodes of the current node that are located before the i-th non-zero child node; subtract 1 from the number of non-zero child nodes included in the current node, and then add it to the sum of the first number of repeated points to obtain the third number of encoded points corresponding to the i-th non-zero child node.

[0422] For example, assuming that the current node is the first non-zero node in the third layer in Figure 8, and the placeholder information of the current node is 01010101, it can be determined that the current node includes 4 non-zero child nodes. Assume that the first child node of the current node includes 1 repeated point, and assume that the i-th non-zero child node is the second non-zero child node of the current node. When determining whether the node has repeated point information of the second non-zero child node of the current node, first determine the number of coded points corresponding to the second non-zero child node. Specifically, the number of coded points corresponding to the second non-zero child node is the number of non-zero child nodes included in the current node minus 1, plus 1 repeated point of the first child node of the current node, and the number of coded points corresponding to the second non-zero child node is 4-1+1=4.

[0423] In the above-mentioned method 1, assuming that the current node is the first non-zero node in the N-1th layer, the process of determining the number of the third encoded points corresponding to the i-th non-zero child node of the current node is introduced.

[0424] Method 2: If the current node is not the first non-zero node in the N-1th layer, then the above S202-A11-1 includes the following steps S202-A11-1-b1 to S202-A11-1-b3:

[0425] S202-A11-1-b1. Determine the number of encoded points corresponding to each non-zero node located before the current node in the N-1th layer;

[0426] S202-A11-1-b2, determine the number of non-zero child nodes of the current node;

[0427] S202-A11-1-b3. Based on the number of coded points corresponding to each non-zero node before the current node in the N-1th layer and the number of non-zero child nodes of the current node, determine the third number of coded points corresponding to the i-th non-zero child node.

[0428] In the second method, if the current node is not the first non-zero node in the N-1th layer of the octree, it means that before encoding the current node, at least one non-zero node in the N-1th layer of the octree has been encoded. Therefore, in this embodiment, when determining the number of third encoded points corresponding to the i-th non-zero child node of the current node, first determine the number of encoded points corresponding to each non-zero node located before the current node in the N-1th layer of the octree, then determine the number of non-zero child nodes of the current node, and then determine the third number of encoded points corresponding to the i-th non-zero child node based on the number of encoded points corresponding to each non-zero node located before the current node in the N-1th layer and the number of non-zero child nodes of the current node.

[0429] The following describes how to determine the number of encoded points corresponding to each non-zero node located before the current node in the N-1th layer in S202-A11-1-b1.

[0430] In one possible implementation, the number of non-zero child nodes included in each non-zero node before the current node is first determined, and then the number of non-zero child nodes included in each non-zero node is added to obtain a value of 1. Next, the total number of encoded repeated points corresponding to each non-zero node is determined, and then the value 1 is added to the total number of repeated points to obtain a value of 2. The number of non-zero nodes before the current node in the N-1 layer is subtracted from the value 2 to obtain the number of encoded points corresponding to each non-zero node before the current node in the N-1 layer. In this embodiment, the encoding end can record the number of non-zero child nodes of each non-zero node in the N-1 layer, and at the same time, separately record the number of encoded repeated points. Finally, based on the separately recorded number of non-zero child nodes and the number of repeated points, the number of encoded points corresponding to each non-zero node before the current node in the N-1 layer is determined.

[0431] For example, assume that the current node is the third non-zero node in the third layer of the octree shown in Figure 8. When encoding the third non-zero node, the first and second non-zero nodes preceding the third non-zero node in the N-1th layer have already been encoded. Assume that the placeholder information for the first non-zero node is 01010101, the first non-zero child of the first non-zero node includes one repeated point, and the placeholder information for the second non-zero node is 01010100. When encoding the third non-zero node, the number of encoded points corresponding to each non-zero node preceding the current node in the N-1th layer is determined. Specifically, the number of non-zero child nodes of each of the first and second non-zero nodes is determined. Based on the placeholder information, we know that the first non-zero node has four non-zero child nodes, and the second non-zero node has three non-zero child nodes. Therefore, the first and second non-zero nodes have a total of seven non-zero child nodes. In addition, the first non-zero child node of the first non-zero node obtained by encoding includes 1 repeated point. Therefore, the number of encoded points corresponding to the first non-zero node and the second non-zero node before the third non-zero node is 7+1-2=6.

[0432] In another possible implementation, the encoder obtains the number of non-zero child nodes of one of the non-zero nodes and the number of second repeated points included in the non-zero child nodes of the non-zero node; subtracts 1 from the number of non-zero child nodes of the non-zero node, and adds the sum of the number of second repeated points included in the non-zero child nodes of the non-zero node to obtain the number of coded points corresponding to the non-zero node. In this implementation, the encoder determines the number of coded points corresponding to each non-zero node preceding the current node in the N-1th layer of the octree in the same manner, that is, the encoder determines the number of coded points corresponding to each non-zero node preceding the current node, and finally sums the number of coded points corresponding to each non-zero node.

[0433] Specifically, for each non-zero node preceding the current node in the N-1th layer, first determine the number of non-zero child nodes included in the non-zero node based on the placeholder information of the non-zero node. Subtract 1 from the number of non-zero child nodes of the non-zero node to obtain the value a. Next, determine the sum of the number of second repeated points included in the non-zero child nodes of the non-zero node, which is recorded as the value b. Finally, add the values ​​a and b to obtain the number of encoded points corresponding to the non-zero node. According to this method, the number of encoded points corresponding to each non-zero node preceding the current node in the N-1th layer can be determined.

[0434] For example, assume that the current node is the third non-zero node in the third layer of the octree shown in Figure 8. When encoding the third non-zero node, the first non-zero node and the second non-zero node located before the third non-zero node in the N-1th layer have already been encoded. Assume that the placeholder information of the first non-zero node is 01010101, and the first non-zero child node of the first non-zero node includes 1 repeated point, and the placeholder information of the second non-zero node is 01010100. When encoding the third non-zero node, determine the number of encoded points corresponding to each non-zero node located before the current node in the N-1th layer. From the placeholder information, we can see that the first non-zero node includes 4 non-zero child nodes, the second non-zero node includes 3 non-zero child nodes, and the first non-zero child node of the first non-zero node includes 1 repeated point. It can be determined that the number of encoded points corresponding to the first non-zero node is 4-1+1=4, and the number of encoded points corresponding to the second non-zero node is 3-1=2.

[0435] Based on the above method, the number of encoded points corresponding to each non-zero node located before the current node in the N-1th layer is determined, and at the same time, the number of non-zero child nodes of the current node is determined. The method for determining the number of non-zero child nodes of the current node can refer to the description of S202-A11-a1 above, and will not be repeated here.

[0436] Next, the encoder determines the third number of coded points corresponding to the i-th non-zero child node based on the number of coded points corresponding to each non-zero node before the current node in the N-1th layer and the number of non-zero child nodes of the current node.

[0437] The embodiment of the present application does not limit the specific implementation method of determining the third number of coded points corresponding to the i-th non-zero child node in the above S202-A11-1-b3 based on the number of coded points corresponding to each non-zero node located before the current node in the N-1th layer and the number of non-zero child nodes of the current node.

[0438] In some embodiments, the above S202-A11-b3 includes the following steps S202-A11-1-b31 and S202-A11-1-b32:

[0439] S202-A11-1-b31, add the number of encoded points corresponding to each non-zero node located before the current node in the N-1th layer to obtain a first sum value;

[0440] S202-A11-1-b32. Determine the number of third encoded points corresponding to the i-th non-zero child node based on the first sum and the number of non-zero child nodes of the current node.

[0441] In this embodiment, the encoding end determines the number of encoded points corresponding to each non-zero node located before the current node in the N-1th layer of the octree based on the above method. Then, the encoding end adds the number of encoded points corresponding to each non-zero node located before the current node in the N-1th layer to obtain a first sum value, and determines the third number of encoded points corresponding to the i-th non-zero child node based on the first sum value and the number of non-zero child nodes of the current node, thereby accurately determining the third number of encoded points corresponding to the i-th non-zero child node.

[0442] The implementation of determining the number of first encoded points corresponding to the i-th non-zero child node based on the first sum and the number of non-zero child nodes of the current node in S202-A11-1-b32 includes at least the following two methods:

[0443] Method 1: If the i-th non-zero child node is the first non-zero child node of the current node, then add the first sum value to the number of non-zero child nodes included in the current node to obtain the second sum value; subtract 1 from the second sum value to obtain the third number of encoded points corresponding to the i-th non-zero child node.

[0444] In this method 1, if the current node is not the first non-zero node in the N-1th layer, and the i-th non-zero child node of the current node is the first non-zero child node of the current node, then based on the above steps, the number of encoded points of each encoded non-zero node located before the current node in the N-1th layer is added to obtain a first sum value. At the same time, since the occupancy information of the current node has been encoded, the geometric position information of each child node of the current node can be determined, and therefore each child node of the current node is determined as an encoded point, and then the first sum value is added to the number of child nodes of the current node to obtain a second sum value. In addition, since it is assumed that the current node includes an encoded point when determining the first parameter above, in order to avoid repeated counting of the encoded point, the determined second sum value is subtracted by 1 to obtain the third number of encoded points corresponding to the i-th non-zero child node.

[0445] Method 2: If the i-th non-zero child node is not the first non-zero child node of the current node, then add the first sum value to the number of non-zero child nodes included in the current node to obtain the second sum value; subtract 1 from the second sum value to obtain the third sum value; obtain the sum of the first number of repeated points included in the non-zero child nodes located before the i-th non-zero child node in the current node, and add the third sum value to the sum of the first number of repeated points to obtain the third number of encoded points corresponding to the i-th non-zero child node.

[0446] In this method 2, if the current node is not the first non-zero node in the N-1th layer, and the i-th non-zero child node of the current node is not the first non-zero child node of the current node, then based on the above steps, the number of encoded points of each encoded non-zero node located before the current node in the N-1th layer is added to obtain a first sum value. At the same time, since the occupancy information of the current node has been encoded, the geometric position information of each child node of the current node can be determined, and therefore each child node of the current node is determined as an encoded point, and then the first sum value is added to the number of child nodes of the current node to obtain a second sum value. In addition, since it is assumed that the current node includes an encoded point when determining the first parameter above, in order to avoid repeated counting of the encoded point, the determined second sum value is subtracted by 1 to obtain a third sum value. In method 2, since the i-th child node is not the first child node of the current node, and the child node before the i-th child node in the current node may include repeated points, it is necessary to obtain the sum of the first number of repeated points included in the non-zero child nodes before the i-th non-zero child node in the current node, and finally add the third sum value to the sum of the first number of repeated points to obtain the third number of encoded points corresponding to the i-th non-zero child node.

[0447] After determining the third number of decoded points corresponding to the i-th non-zero child node based on the above steps, execute step S202-A11-2 to determine the first number of decoded points based on the third number of decoded points.

[0448] In some embodiments, directly compressing the coordinates of an isolated point P is more efficient than using an octree-based compression method. This process of directly encoding the coordinates of points in a node is called the Direct Coding Model (DCM). Whether the current node uses DCM can be inferred based on information from neighboring nodes. This method is called the Inferred Direct Coding Model (IDCM).

[0449] In the embodiments of this application, the number of first encoded points corresponding to the i-th non-zero child node in the point cloud is affected by whether the point cloud uses IDCM or not. The following describes the impact of using DCM or not on the number of first encoded points corresponding to the i-th non-zero child node in the point cloud.

[0450] In some embodiments, if the point cloud does not adopt IDCM, the third number of encoded points corresponding to the i-th non-zero child node is determined as the first number of encoded points corresponding to the i-th non-zero child node.

[0451] In this embodiment, if the point cloud does not use IDCM, that is, IDCM is turned off, this indicates that during octree encoding, each node in the octree does not use direct encoding. Therefore, when encoding the current node, the octree does not include any other first encoded points except the third encoded point corresponding to the i-th non-zero child node determined above. The first encoded point can be understood as a point whose geometric position has been encoded in a leaf node of the octree. In this case, the number of third encoded points corresponding to the i-th non-zero child node determined above is directly determined as the number of first encoded points corresponding to the i-th non-zero child node.

[0452] In some embodiments, if the point cloud adopts IDCM, the number of points included in the second node encoded using IDCM in the octree is determined; the number of points included in the second node using IDCM and the third number of encoded points corresponding to the i-th non-zero child node determined above are added to obtain a new first number of encoded points corresponding to the i-th non-zero child node.

[0453] In this embodiment, if the point cloud uses IDCM, that is, IDCM is turned on, then this indicates that at least one node in the point cloud octree may use direct encoding, directly encoding the geometric information of the points included in the node. Correspondingly, during encoding, the geometric information of the points included in the node is directly encoded. In this way, when determining the first encoded point corresponding to the i-th non-zero child node, it is necessary to add the number of points included in the encoded node (i.e., the second node) using IDCM in the octree to the third number of encoded points corresponding to the i-th non-zero child node determined above.

[0454] For example, suppose that in the point cloud octree, there is a node using IDCM. Suppose that this IDCM node contains one point. Suppose that all IDCM nodes have been encoded before the current node is encoded. Therefore, we can determine that the number of points in the octree node using IDCM is 1. This encoded point is added to the third encoded point corresponding to the i-th non-zero child node determined above.

[0455] After determining the number of first encoded points corresponding to the i-th non-zero child node of the current node based on the above step S202-A11, the encoder performs the following step S202-A12.

[0456] S202-A12. Determine a second parameter corresponding to the i-th non-zero child node based on the number of first encoded points corresponding to the i-th non-zero child node in the point cloud.

[0457] In an embodiment of the present application, when encoding the current node, the encoding end first determines the number of first encoded points corresponding to the i-th non-zero child node based on the above steps before determining whether to encode the repeated point information of the i-th non-zero child node of the current node. Then, based on the first number of encoded points corresponding to the i-th non-zero child node, the second parameter corresponding to the i-th non-zero child node is determined. The second parameter determined in this way can reflect the number of points whose geometric positions in the point cloud have been encoded when encoding the i-th non-zero child node. Finally, based on the first parameter corresponding to the current node and the second parameter corresponding to the i-th non-zero child node, it is determined whether the i-th non-zero child node includes repeated points, and then it is determined whether to encode the repeated point information of the i-th non-zero child node.

[0458] From the above, it can be seen that in AVS geometric coding, octree can be used for coding, and octree and prediction tree can be combined for coding.

[0459] In the embodiments of this application, the method for determining the second parameter corresponding to the i-th non-zero child node in the point cloud based on the number of first encoded points corresponding to the i-th non-zero child node differs when the point cloud uses prediction tree encoding and when it does not. The following describes the specific process for determining the second parameter corresponding to the i-th non-zero child node when the point cloud uses prediction tree encoding and when it does not.

[0460] In the embodiment of the present application, based on the number of first encoded points corresponding to the i-th non-zero child node in the point cloud, determining the second parameter corresponding to the i-th non-zero child node includes at least the following methods:

[0461] Method 1: The number of first encoded points is determined as the second parameter.

[0462] In AVS geometry coding, if the point cloud uses prediction tree coding (i.e., prediction tree coding is disabled), the coded points corresponding to the i-th non-zero child node in the point cloud do not include any other coded points except the first coded point corresponding to the i-th non-zero child node determined in the above embodiment. In this case, when encoding the i-th non-zero child node of the current node, the number of first coded points corresponding to the i-th non-zero child node is determined based on the above steps, and the number of first coded points corresponding to the i-th non-zero child node is determined as the second parameter corresponding to the i-th non-zero child node.

[0463] Method 2: If the point cloud adopts the prediction tree encoding method, then the above S202-A12 includes the following steps S202-A121 and S202-A122:

[0464] S202-A121, determining the number of second encoded points included in the first node of the octree using the prediction tree encoding method;

[0465] S202-A122: Determine the sum of the first number of encoded points and the second number of encoded points as a second parameter.

[0466] In this method 2, if the point cloud adopts the prediction tree coding method, that is, the prediction tree coding method is turned on, then it means that there may be at least one node in the octree of the point cloud that adopts the prediction tree coding method, and the points included in the node are encoded using the prediction tree coding method. For example, as shown in Figure 7, the prediction tree coding method is adopted for the first node of the third layer in the point cloud octree. For example, the points included in the node are sorted, and a preset prediction tree coding method is used to construct a prediction tree for the sorted points, such as constructing an L3C2 single chain. Then, based on the structure of the prediction tree, each node in the prediction tree is traversed, and the geometric position information of the node is predicted by selecting different prediction modes to obtain the prediction residual, and the geometric prediction residual is quantized and encoded using the quantization parameter to form a geometric code stream.

[0467] Correspondingly, when encoding the node, the encoder uses a prediction tree encoding method to geometrically encode the node and obtain the geometric reconstruction values ​​of the points included in the node. That is, in the embodiment of the present application, since the octree is traversed using the breadth-first principle, the position of the node using the prediction tree encoding in the octree is before the current node, that is, when the current node is encoded, the node using the prediction tree encoding has already been encoded. Therefore, when determining the second parameter corresponding to the i-th non-zero child node of the current node, it is necessary not only to determine the first number of encoded points corresponding to the i-th non-zero child node mentioned above, but also to determine the number of encoded points included in the first node using the prediction tree encoding in the octree. For ease of description, the number of encoded points included in the first node using the prediction tree encoding method is recorded as the second number of encoded points. Furthermore, the first number of encoded points corresponding to the i-th non-zero child node is added to the second number of encoded points included in the first node using the prediction tree encoding method in the octree, and the result of the addition is determined as the second parameter corresponding to the i-th non-zero child node.

[0468] In this case 1, after determining the second parameter corresponding to the i-th non-zero child node of the current node based on the above steps, execute the above S202-A2 to determine whether to encode the repeated point information of the i-th non-zero child node based on the first parameter and the second parameter.

[0469] The implementation of determining whether to encode the duplicate point information of the i-th non-zero child node based on the first parameter and the second parameter in S202-A2 includes but is not limited to the following methods:

[0470] Method 1: If the first parameter is equal to the second parameter, skip decoding the repeated point information of the i-th non-zero child node.

[0471] As can be seen from the above, the first parameter corresponding to the current node can be understood as the number of points in the point cloud whose geometric position information is uncertain when encoding the current node, or it can be understood as the number of unencoded points. The second parameter corresponding to the i-th non-zero child node of the current node can be understood as the number of points currently encoded.

[0472] In method 1, if the first parameter corresponding to the determined current node is equal to the second parameter corresponding to the i-th non-zero child node in the current node, it means that the i-th non-zero child node and the subsequent uncoded leaf nodes do not include duplicate points. Therefore, the encoding of the duplicate point information of the i-th non-zero child node is skipped to save encoding time.

[0473] For example, assuming that the point cloud includes 10 points, assuming that the current node is the second non-zero node in the third layer in Figure 8, and the N-1th layer of the octree where the current node is located includes 4 non-zero nodes, it can be determined that the first parameter corresponding to the current node is 10-4=6.

[0474] Assuming the placeholder information of the current node is 01010100, it can be determined that the current node includes 3 non-zero child nodes. Assuming that the i-th non-zero child node is the second non-zero child node of the current node, since the placeholder information of the current node is known, the geometric position information of the three non-zero child nodes of the current node can be determined. Therefore, the geometric position information of the three non-zero child nodes included in the current node has been encoded. As shown in Figure 8, the non-zero nodes located before the current node in the third layer are the first non-zero nodes in the third layer. Assuming that the placeholder information of this first non-zero node is 01010101, and assuming that the first non-zero child node of the current node includes 1 repeated point, therefore, based on the above method, it can be determined that the first number of encoded points corresponding to the i-th non-zero child node is 4-1+3-1+1=6. In this embodiment, assuming that the point cloud does not use prediction tree encoding, the first number of encoded points corresponding to the i-th non-zero child node, 6, is determined as the second parameter corresponding to the i-th non-zero child node.

[0475] In this example, the first parameter 6 corresponding to the current node is equal to the second parameter 6 corresponding to the i-th non-zero child node, so the encoding of the repeated point information of the i-th non-zero child node is skipped.

[0476] Method 2: If the first parameter is greater than the second parameter and the i-th non-zero child node is the last voxel node of the octree, then the encoding of the duplicate point information of the i-th non-zero child node is skipped, and the difference between the first parameter and the second parameter is determined as the number of duplicate points included in the i-th non-zero child node.

[0477] In method 2, if the first parameter corresponding to the determined current node is equal to the second parameter corresponding to the i-th non-zero child node in the current node, it means that the i-th non-zero child node and subsequent uncoded leaf nodes may include duplicate points. At the same time, since the i-th non-zero child node is the last non-zero voxel node of the octree, it means that the i-th non-zero child node must include duplicate points, and the number of duplicate points included in the i-th non-zero child node is the difference between the first parameter and the second parameter.

[0478] For example, assuming that the point cloud includes 10 points, assuming that the current node is the fourth non-zero node in the third layer in Figure 8, and the N-1th layer of the octree where the current node is located includes 4 non-zero nodes, it can be determined that the first parameter corresponding to the current node is 10-4=6.

[0479] Assuming the placeholder information for the current node is 00000010, it can be determined that the current node includes one non-zero child node. Assuming the i-th non-zero child node is the only non-zero child node of the current node, since the placeholder information for the current node is known, the geometric position information of the one non-zero child node of the current node can be determined. Therefore, the geometric position information of the one non-zero child node included in the current node has been encoded. As shown in Figure 8, the non-zero nodes preceding the current node in the third layer are the first, second, and third non-zero nodes in the third layer. Assuming the placeholder information for the first non-zero node is 01010101, the placeholder information for the second non-zero node is 01010100, and the placeholder information for the third non-zero node is 00000100, none of the non-zero child nodes of the first three non-zero nodes contain duplicate points. Based on the above method, it can be determined that the number of first encoded points corresponding to the i-th non-zero child node is 4-1+3-1+1-1+1-1=5. In this embodiment, assuming that the point cloud does not adopt prediction tree encoding, the number of first encoded points corresponding to the i-th non-zero child node, 5, is determined as the second parameter corresponding to the i-th non-zero child node.

[0480] From the above, it can be seen that the first parameter 6 is greater than the second parameter 5, and the i-th non-zero child node is the last non-zero child node of the octree. Therefore, it can be determined that the i-th non-zero child node must include repeated points, and the number of repeated points included is 6-5=1. The repeated point information of the i-th non-zero child node is skipped, thereby saving coding time and improving coding efficiency.

[0481] Mode 3: If the first parameter is greater than the second parameter and the i-th non-zero child node is not the last voxel node of the octree, the duplicate point information of the i-th non-zero child node is encoded.

[0482] In method 3, if the first parameter corresponding to the determined current node is equal to the second parameter corresponding to the i-th non-zero child node in the current node, it means that the i-th non-zero child node and subsequent uncoded leaf nodes may include duplicate points. Therefore, in order to ensure the accuracy of the coding, the duplicate point information of the i-th non-zero child node is encoded.

[0483] For example, assuming that the point cloud includes 10 points, assuming that the current node is the second non-zero node in the third layer in Figure 8, and the N-1th layer of the octree where the current node is located includes 4 non-zero nodes, it can be determined that the first parameter corresponding to the current node is 10-4=6.

[0484] Assuming that the occupancy information of the current node is 01010100, it can be determined that the current node includes 3 non-zero child nodes. Assuming that the i-th non-zero child node is the second non-zero child node of the current node, since the occupancy information of the current node is known, the geometric position information of the three non-zero child nodes of the current node can be determined. Therefore, the geometric position information of the three non-zero child nodes included in the current node has been encoded. As shown in Figure 8, the non-zero nodes located before the current node in the third layer are the first non-zero nodes in the third layer. Assuming that the occupancy information of this first non-zero node is 01010101, and assuming that the third non-zero child node of the current node includes 1 repeated point, therefore, based on the above method, it can be determined that the first number of encoded points corresponding to the i-th non-zero child node is 4-1+3-1=5. In this embodiment, assuming that the point cloud does not use prediction tree encoding, the first number of encoded points corresponding to the i-th non-zero child node, 5, is determined as the second parameter corresponding to the i-th non-zero child node.

[0485] In this example, if the first parameter 6 corresponding to the current node is greater than the second parameter 5 corresponding to the i-th non-zero child node, and the i-th non-zero child node is not the last voxel node of the octree, the duplicate point information of the i-th non-zero child node is encoded.

[0486] In the above case 1, based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer of the octree, the first parameter corresponding to the current node is determined, and the second parameter corresponding to the i-th non-zero child node of the current node is determined. Based on the first parameter and the second parameter, it is determined whether to encode the repeated point information of the i-th non-zero child node. For example, if the first parameter is equal to the second parameter, the repeated point information of the i-th non-zero child node is skipped, thereby reducing the encoding complexity of the point cloud, saving encoding time, and improving encoding efficiency.

[0487] The following describes the process of determining the first parameter corresponding to the current node and geometric encoding of the current node based on the first parameter in case 2.

[0488] In case 2, the above S201 includes the following steps:

[0489] S201-B1. For the i-th non-zero child node in the current node, determine the total number of encoded repeated points corresponding to the i-th non-zero child node;

[0490] S201-B2. Determine the total number of encoded repeated points corresponding to the i-th non-zero child node as a first parameter.

[0491] In this case 2, when determining whether the i-th non-zero child node of the current node includes repeated points, the number of encoded repeated points corresponding to the i-th non-zero child node is first determined, where the encoded repeated points corresponding to the i-th non-zero child node can be understood as the repeated points that have been encoded by the encoding end before encoding the repeated point information of the i-th non-zero child node.

[0492] In some embodiments, the encoding end uses dupCount to record the number of encoded duplicate points, where dupCount is initialized to 0.

[0493] The encoding end determines the total number of encoded repeated points corresponding to the i-th non-zero child node, and determines the total number of encoded repeated points corresponding to the i-th non-zero child node as the first parameter, and then performs geometric encoding on the current node based on the first parameter.

[0494] In some embodiments, determining the total number of encoded repeated points corresponding to the i-th non-zero child node in S201-B1 includes:

[0495] S201-B11. Determine the sum of the number of third encoded repeated points included in each non-zero child node located before the i-th non-zero child node in the octree;

[0496] S201-B12: Determine the total number of encoded repeated points corresponding to the i-th non-zero child node based on the sum of the third number of encoded repeated points.

[0497] In this embodiment, if the i-th non-zero child node is not the first non-zero leaf node in the octree, the sum of the number of coded points included in each non-zero child node located before the i-th non-zero child node in the octree is determined. For the sake of convenience of description, this coded point is recorded as the third coded point.

[0498] For example, as shown in Figure 8, assuming that the current node is the first non-zero node in the N-1th layer, the placeholder information of the current node is 010101010, the i-th non-zero child node is the third non-zero child node in the current node, and in the octree, there are 2 non-zero child nodes located before the i-th non-zero child node. Assuming that one of the two non-zero child nodes includes 2 repeated points and the other non-zero child node includes 1 repeated point, it can be determined that the sum of the third number of encoded repeated points is 2+1=3.

[0499] Based on the above steps, after determining the sum of the third number of encoded repeated points included in each non-zero child node located before the i-th non-zero child node in the octree, the total number of encoded repeated points corresponding to the i-th non-zero child node is determined based on the sum of the third number of encoded repeated points.

[0500] Based on whether the point cloud is encoded using prediction tree, the implementation of determining the total number of encoded duplicate points corresponding to the i-th non-zero child node based on the sum of the third number of encoded duplicate points in S201-B12 includes at least the following two methods:

[0501] Method 1: If the point cloud adopts the prediction tree encoding method, the sum of the fourth number of encoded repeated points included in the first node of the octree using the prediction tree encoding method is determined; based on the sum of the third number of encoded repeated points and the sum of the fourth number of encoded repeated points, the total number of encoded repeated points corresponding to the i-th non-zero child node is determined.

[0502] In this method 1, if the point cloud uses predictive coding, as mentioned above, the encoder completes the nodes in the octree that use predictive tree coding before encoding the current node. This allows the sum of the fourth number of encoded repeated points included in the first node in the octree that uses predictive tree coding to be obtained. Then, based on the sum of the third number of encoded repeated points and the sum of the fourth number of encoded repeated points, the total number of encoded repeated points corresponding to the i-th non-zero child node is determined.

[0503] In some embodiments, if the point cloud is not encoded using IDCM, the sum of the third number of encoded duplicate points and the sum of the fourth number of encoded duplicate points are used to determine the total number of encoded duplicate points corresponding to the i-th non-zero child node.

[0504] In some embodiments, if the point cloud adopts the inferred direct coding mode IDCM, the total number of encoded duplicate points corresponding to the i-th non-zero child node is determined based on the sum of the third number of encoded duplicate points and the sum of the fourth number of encoded duplicate points, including: determining the sum of the fifth number of encoded duplicate points included in the second node using IDCM in the octree; adding the sum of the third number of encoded duplicate points, the sum of the fourth number of encoded duplicate points, and the sum of the fifth number of encoded duplicate points to obtain the total number of encoded duplicate points corresponding to the i-th non-zero child node.

[0505] Method 2: If the point cloud does not use the prediction tree encoding method, the total number of encoded repeated points corresponding to the i-th non-zero child node is determined based on the sum of the third number of encoded repeated points.

[0506] In one implementation of method 2, if the point cloud does not use the prediction tree encoding method and does not use the IDCM encoding method, the total number of encoded repeated points corresponding to the i-th non-zero child node is determined based on the sum of the third number of encoded repeated points determined above.

[0507] In another implementation of method 2, if the point cloud does not adopt the prediction tree encoding method and adopts the IDCM encoding method, then the sum of the fifth number of encoded repeated points included in the second node using IDCM in the octree is determined, and the sum of the fifth number of encoded repeated points is added to the sum of the third number of encoded repeated points to obtain the total number of encoded repeated points corresponding to the i-th non-zero child node.

[0508] Based on the above method, after the total number of encoded repeated points corresponding to the i-th non-zero child node is determined, the total number of encoded repeated points corresponding to the i-th non-zero child node is determined as the first parameter.

[0509] In case 2, the geometric encoding of the current node based on the first parameter in S202 includes the following steps S202-B1 and S202-B2:

[0510] S202-B1, determining the total number of duplicate points in the point cloud;

[0511] S202-B2: Determine whether to encode the duplicate point information of the i-th non-zero child node based on the total number of duplicate points in the point cloud and the total number of encoded duplicate points corresponding to the i-th non-zero child node.

[0512] In case 2, when determining whether to encode the duplicate point information for the i-th non-zero child of the current node, the encoder determines the number of already encoded duplicate points corresponding to the i-th non-zero child as the first parameter based on the above steps. Next, the total number of duplicate points in the point cloud is determined, and the number of already encoded duplicate points corresponding to the i-th non-zero child is compared with the number of duplicate points in the point cloud to determine whether the i-th non-zero child contains duplicate points. This, in turn, determines whether to encode the duplicate point information for the i-th non-zero child.

[0513] In some embodiments, the encoder determines the number of non-zero voxel nodes in the last layer of the octree through the placeholder information of each non-zero node in the N-1th layer of the octree.

[0514] After the encoding end determines the total number of duplicate points in the point cloud based on the above method 1 or method 2, it determines whether to encode the duplicate point information of the i-th non-zero child node based on the total number of duplicate points in the point cloud and the total number of encoded duplicate points corresponding to the i-th non-zero child node.

[0515] In some embodiments, if the total number of encoded duplicate points corresponding to the i-th non-zero child node is equal to the total number of duplicate points in the point cloud, it indicates that all duplicate points in the point cloud have been encoded. At this time, the i-th non-zero child node and the leaf nodes after the i-th non-zero child node do not contain duplicate points. Therefore, the encoding of duplicate point information for the i-th non-zero child node is skipped, thereby reducing the encoding complexity of the point cloud, saving encoding time, and improving encoding efficiency.

[0516] In some embodiments, if the total number of encoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points in the point cloud, and the i-th non-zero child node is the last voxel node of the octree, it means that the i-th non-zero child node includes duplicate points. At this time, the encoding of the duplicate point information of the i-th non-zero child node is skipped, and the difference between the total number of duplicate points in the point cloud and the total number of encoded duplicate points corresponding to the i-th non-zero child node is determined as the number of duplicate points included in the i-th non-zero child node.

[0517] In some embodiments, if the total number of encoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points in the point cloud, and the i-th non-zero child node is the last voxel node of the octree, it means that the i-th non-zero child node or the leaf node after the i-th non-zero child node may include duplicate points. Therefore, in order to improve the encoding accuracy, the encoding end encodes the duplicate point information of the i-th non-zero child node.

[0518] From the above, it can be seen that the encoding end determines the first parameter corresponding to the current node in the octree-based point cloud encoding based on the above-mentioned cases 1 and 2, and encodes the current node based on the first parameter.

[0519] The point cloud geometry encoding method provided by the embodiment of the present application, in point cloud encoding, for example, in AVS-based point cloud encoding, when encoding the current node of the N-1th layer in the octree, first determines the first parameter corresponding to the current node, and the first parameter is used to determine whether at least one non-zero child node of the current node includes duplicate points. The current node is a non-zero node of the N-1th layer in the octree of the point cloud, and N is the total number of layers of the octree. Then, based on the first parameter, the current node is geometrically encoded. For example, when it is determined based on the first parameter that the i-th non-zero child node of the current node does not include duplicate points, the encoding of the duplicate point information of the i-th non-zero child node is skipped, thereby reducing the encoding complexity of the point cloud, saving encoding time, and improving encoding efficiency.

[0520] It should be understood that Figures 6 to 9 are merely examples of the present application and should not be construed as limiting the present application.

[0521] The preferred embodiments of the present application are described in detail above in conjunction with the accompanying drawings. However, the present application is not limited to the specific details in the above embodiments. Within the technical concept of the present application, a variety of simple modifications can be made to the technical solution of the present application, and these simple modifications all fall within the scope of protection of the present application. For example, the various specific technical features described in the above specific embodiments can be combined in any suitable manner unless there is any contradiction. In order to avoid unnecessary repetition, the present application will not further explain various possible combinations. For another example, the various different embodiments of the present application can also be arbitrarily combined, and as long as they do not violate the ideas of the present application, they should also be regarded as the contents disclosed in the present application.

[0522] It should also be understood that in the various method embodiments of the present application, the size of the sequence numbers of the above-mentioned processes does not mean the order of execution, and the execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present application. In addition, in the embodiments of the present application, the term "and / or" is merely a description of the association relationship of associated objects, indicating that three types of relationships can exist. Specifically, A and / or B can represent: A exists alone, A and B exist at the same time, and B exists alone. In addition, the character " / " in this article generally indicates that the related objects before and after are in an "or" relationship.

[0523] The method embodiment of the present application is described in detail above in conjunction with Figures 6 to 9 , and the device embodiment of the present application is described in detail below in conjunction with Figures 10 to 13 .

[0524] FIG10 is a schematic block diagram of a point cloud decoding device according to an embodiment of the present application.

[0525] As shown in FIG10 , the point cloud decoding device 10 may include:

[0526] a determining unit 11, configured to determine a first parameter corresponding to a current node, the first parameter being used to determine whether at least one non-zero child node of the current node includes a duplicate point, the current node being a non-zero node in the N-1th layer of an octree of the point cloud, the octree being obtained by node partitioning the point cloud, and N being a total number of layers of the octree, where N is a positive integer greater than 1;

[0527] The decoding unit 12 is configured to perform geometric decoding on the current node based on the first parameter.

[0528] In some embodiments, the determination unit 11 is specifically used to determine the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer; and determine the first parameter based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer.

[0529] In some embodiments, the determining unit 11 is specifically configured to determine the difference between the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer as the first parameter.

[0530] In some embodiments, the decoding unit 12 is specifically used to determine, for the i-th non-zero child node of the current node, a second parameter corresponding to the i-th non-zero child node, where the second parameter is used to indicate the number of points whose geometric positions in the point cloud have been decoded when decoding the i-th non-zero child node, and i is a positive integer; based on the first parameter and the second parameter, determine whether to decode the repeated point information of the i-th non-zero child node.

[0531] In some embodiments, the decoding unit 12 is specifically used to determine the first number of decoded points corresponding to the i-th non-zero sub-node in the point cloud; and based on the first number of decoded points corresponding to the i-th non-zero sub-node in the point cloud, determine the second parameter corresponding to the i-th non-zero sub-node.

[0532] In some embodiments, if the point cloud does not adopt the prediction tree encoding method, the decoding unit 12 is specifically configured to determine the number of the first decoded points as the second parameter.

[0533] In some embodiments, if the point cloud adopts the prediction tree encoding method, the decoding unit 12 is specifically used to determine the second number of decoded points included in the first node of the octree that adopts the prediction tree encoding method; and determine the sum of the first number of decoded points and the second number of decoded points as the second parameter.

[0534] In some embodiments, the decoding unit 12 is specifically configured to determine the third number of decoded points corresponding to the i-th non-zero child node; and determine the first number of decoded points based on the third number of decoded points.

[0535] In some embodiments, the decoding unit 12 is specifically used to determine the number of non-zero child nodes of the current node if the current node is the first non-zero node in the N-1th layer; and based on the number of non-zero child nodes of the current node, determine the number of third decoded points corresponding to the i-th non-zero child node.

[0536] In some embodiments, the decoding unit 12 is specifically used to determine the number of decoded points corresponding to the i-th non-zero child node as the value obtained by subtracting 1 from the number of non-zero child nodes included in the current node if the i-th non-zero child node is the first non-zero child node of the current node.

[0537] In some embodiments, the decoding unit 12 is specifically used to obtain the sum of the first number of repeated points included in the non-zero child nodes of the current node that are located before the i-th non-zero child node if the i-th non-zero child node is not the first non-zero child node of the current node; subtract 1 from the number of non-zero child nodes included in the current node, and then add the result to the sum of the first number of repeated points to obtain the third number of decoded points.

[0538] In some embodiments, the decoding unit 12 is specifically used to determine the number of decoded points corresponding to each non-zero node located before the current node in the N-1 layer if the current node is not the first non-zero node in the N-1 layer; determine the number of non-zero child nodes of the current node; and determine the third number of decoded points corresponding to the i-th non-zero child node based on the number of decoded points corresponding to each non-zero node located before the current node in the N-1 layer and the number of non-zero child nodes of the current node.

[0539] In some embodiments, the decoding unit 12 is specifically used to obtain, for any non-zero node among the non-zero nodes, the number of non-zero child nodes of the non-zero node and the sum of the second number of repeated points included in the non-zero child nodes of the non-zero node; subtract 1 from the number of non-zero child nodes of the non-zero node, and add the result to the sum of the second number of repeated points to obtain the number of decoded points corresponding to the non-zero node.

[0540] In some embodiments, the decoding unit 12 is specifically used to add the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer to obtain a first sum value; based on the first sum value and the number of non-zero child nodes of the current node, determine the third number of decoded points corresponding to the i-th non-zero child node.

[0541] In some embodiments, the decoding unit 12 is specifically used to add the first sum value and the number of non-zero child nodes included in the current node to obtain a second sum value if the i-th non-zero child node is the first non-zero child node of the current node; and subtract 1 from the second sum value to obtain the third number of decoded points corresponding to the i-th non-zero child node.

[0542] In some embodiments, the decoding unit 12 is specifically used to, if the i-th non-zero child node is not the first non-zero child node of the current node, add the first sum value to the number of non-zero child nodes included in the current node to obtain a second sum value; subtract 1 from the second sum value to obtain a third sum value; obtain the sum of the first number of repeated points included in the non-zero child nodes in the current node that are located before the i-th non-zero child node, and add the third sum value to the sum of the first number of repeated points to obtain the third number of decoded points corresponding to the i-th non-zero child node.

[0543] In some embodiments, if the point cloud does not adopt the inferred direct coding mode IDCM, the decoding unit 12 is specifically configured to determine the third number of decoded points as the first number of decoded points.

[0544] In some embodiments, if the point cloud adopts the inferred direct coding mode IDCM, the decoding unit 12 is specifically used to determine the number of points included in the second node of the octree using IDCM; and the sum of the third number of decoded points and the number of points included in the second node is determined as the first number of decoded points.

[0545] In some embodiments, the decoding unit 12 is specifically configured to skip decoding the repeated point information of the i-th non-zero child node if the first parameter is equal to the second parameter.

[0546] In some embodiments, the decoding unit 12 is specifically used to skip decoding the repeated point information of the i-th non-zero child node if the first parameter is greater than the second parameter and the i-th non-zero child node is the last voxel node of the octree, and determine the difference between the first parameter and the second parameter as the number of repeated points included in the i-th non-zero child node.

[0547] In some embodiments, the decoding unit 12 is specifically configured to decode the duplicate point information of the i-th non-zero child node if the first parameter is greater than the second parameter and the i-th non-zero child node is not the last voxel node of the octree.

[0548] In some embodiments, the determination unit 11 is specifically used to determine the total number of decoded repeated points corresponding to the i-th non-zero child node in the current node, where i is a positive integer; and determine the total number of decoded repeated points corresponding to the i-th non-zero child node as the first parameter.

[0549] In some embodiments, the determination unit 11 is specifically used to determine the sum of the third number of decoded repeated points included in each non-zero child node located before the i-th non-zero child node in the octree; based on the sum of the third number of decoded repeated points, determine the total number of decoded repeated points corresponding to the i-th non-zero child node.

[0550] In some examples, if the point cloud adopts the prediction tree encoding method, the determination unit 11 is specifically used to determine the sum of the fourth number of decoded repeated points included in the first node in the octree that adopts the prediction tree encoding method; based on the sum of the third number of decoded repeated points and the sum of the fourth number of decoded repeated points, determine the total number of decoded repeated points corresponding to the i-th non-zero child node.

[0551] In some embodiments, if the point cloud adopts the inferred direct coding mode IDCM, the determination unit 11 is specifically used to determine the sum of the fifth number of decoded duplicate points included in the second node using IDCM in the octree; the sum of the third number of decoded duplicate points, the sum of the fourth number of decoded duplicate points, and the sum of the fifth number of decoded duplicate points are added to obtain the total number of decoded duplicate points corresponding to the i-th non-zero child node.

[0552] In some embodiments, the decoding unit 12 is specifically used to determine the total number of duplicate points in the point cloud; based on the total number of duplicate points in the point cloud and the total number of decoded duplicate points corresponding to the i-th non-zero child node, determine whether to decode the duplicate point information of the i-th non-zero child node.

[0553] In some embodiments, the decoding unit 12 is specifically used to determine the total number of points in the point cloud and the total number of non-zero voxel nodes in the octree; and the difference between the total number of points in the point cloud and the total number of non-zero voxel nodes in the octree is determined as the total number of repeated points in the point cloud.

[0554] In some embodiments, the decoding unit 12 is specifically configured to skip decoding the repeated point information of the i-th non-zero child node if the total number of decoded repeated points corresponding to the i-th non-zero child node is equal to the total number of repeated points in the point cloud.

[0555] In some embodiments, the decoding unit 12 is specifically used to skip decoding the duplicate point information of the i-th non-zero child node if the total number of decoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points of the point cloud, and the i-th non-zero child node is the last voxel node of the octree, and determine the difference between the total number of duplicate points of the point cloud and the total number of decoded duplicate points corresponding to the i-th non-zero child node as the number of duplicate points included in the i-th non-zero child node.

[0556] In some embodiments, the decoding unit 12 is specifically used to decode the duplicate point information of the i-th non-zero child node if the total number of decoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points of the point cloud, and the i-th non-zero child node is not the last voxel node of the octree.

[0557] In some embodiments, the repeated point information includes the number of repeated points.

[0558] In some embodiments, the decoding unit 12 is specifically configured to decode the geometric code stream of the point cloud to obtain the total number of points in the point cloud.

[0559] In some embodiments, the decoding unit 12 is specifically configured to decode a geometric unit header of the point cloud to obtain the total number of points in the point cloud.

[0560] In some embodiments, the decoding unit 12 is specifically used to decode the geometric unit header to obtain the low-order part of the number of points contained in the slice corresponding to the point cloud and the high-order part of the number of points contained in the slice; based on the low-order part of the number of points contained in the slice and the high-order part of the number of points contained in the slice, the total number of points in the point cloud is obtained.

[0561] In some embodiments, the decoding unit 12 is specifically configured to decode the geometric code stream of the point cloud to obtain the placeholder information of the current node; and based on the placeholder information, obtain the number of non-zero child nodes included in the current node.

[0562] It should be understood that the device embodiment and the method embodiment may correspond to each other, and similar descriptions can refer to the method embodiment. To avoid repetition, no further description is given here. Specifically, the point cloud decoding device 10 shown in FIG10 may correspond to the corresponding subject in the point cloud decoding method of the embodiment of the present application, and the aforementioned and other operations and / or functions of the various units in the point cloud decoding device 10 are respectively for implementing the corresponding processes in the point cloud decoding method. For the sake of brevity, no further description is given here.

[0563] FIG11 is a schematic block diagram of a point cloud encoding device according to an embodiment of the present application.

[0564] As shown in FIG11 , the point cloud encoding device 20 includes:

[0565] a determining unit 21, configured to determine a first parameter corresponding to a current node, the first parameter being used to determine whether at least one non-zero child node of the current node includes a duplicate point, the current node being a non-zero node in the N-1th layer of an octree of the point cloud, the octree being obtained by node partitioning the point cloud, and N being a total number of layers of the octree, where N is a positive integer greater than 1;

[0566] The encoding unit 22 is configured to perform geometric encoding on the current node based on the first parameter.

[0567] In some embodiments, the determination unit 21 is specifically used to determine the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer; and determine the first parameter based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer.

[0568] In some embodiments, the determining unit 21 is specifically configured to determine the difference between the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer as the first parameter.

[0569] In some embodiments, the encoding unit 22 is specifically used to determine, for the i-th non-zero child node of the current node, a second parameter corresponding to the i-th non-zero child node, where the second parameter is used to indicate the number of points whose geometric positions in the point cloud have been encoded when encoding the i-th non-zero child node; based on the first parameter and the second parameter, determine whether to encode the repeated point information of the i-th non-zero child node.

[0570] In some embodiments, if the point cloud does not adopt the prediction tree encoding method, the encoding unit 22 is specifically configured to determine the number of first encoded points corresponding to the i-th non-zero child node in the point cloud as the second parameter.

[0571] In some embodiments, if the point cloud adopts the prediction tree encoding method, in some embodiments, the encoding unit 22 is specifically used to obtain the second number of encoded points included in the first encoding unit using the prediction tree encoding in the encoding unit of the point cloud, and the encoding unit is a non-zero node obtained by performing a preset number of divisions on the bounding box of the point cloud; the sum of the first number of encoded points and the second number of encoded points is determined as the second parameter.

[0572] In some embodiments, the encoding unit 22 is specifically configured to determine the number of third encoded points corresponding to the i-th non-zero child node; and determine the number of first encoded points based on the third number of encoded points.

[0573] In some embodiments, the encoding unit 22 is specifically used to determine the number of non-zero child nodes of the current node if the current node is the first non-zero node in the N-1th layer; and based on the number of non-zero child nodes of the current node, determine the number of third encoded points corresponding to the i-th non-zero child node.

[0574] In some embodiments, the encoding unit 22 is specifically used to, if the i-th non-zero child node is the first non-zero child node of the current node, subtract 1 from the number of non-zero child nodes included in the current node to determine the third number of encoded points corresponding to the i-th non-zero child node.

[0575] In some embodiments, the encoding unit 22 is specifically used to obtain the sum of the first number of repeated points included in the child nodes before the i-th non-zero child node in the current node if the i-th non-zero child node is not the first non-zero child node of the current node; subtract 1 from the number of non-zero child nodes included in the current node, and then add the sum to the first number of repeated points to obtain the third number of encoded points corresponding to the i-th non-zero child node.

[0576] In some embodiments, the encoding unit 22 is specifically used to determine the number of encoded points corresponding to each non-zero node in the N-1 layer before the current node if the current node is not the first non-zero node in the N-1 layer; determine the number of non-zero child nodes of the current node; and determine the third number of encoded points based on the number of encoded points corresponding to each non-zero node in the N-1 layer before the current node and the number of non-zero child nodes of the current node.

[0577] In some embodiments, the encoding unit 22 is specifically used to obtain, for any non-zero node among the non-zero nodes, the number of non-zero child nodes of the non-zero node and the sum of the second number of repeated points included in the non-zero child nodes of the non-zero node; subtract 1 from the number of non-zero child nodes of the non-zero node, and add the result to the sum of the second number of repeated points to obtain the number of encoded points corresponding to the non-zero node.

[0578] In some embodiments, the encoding unit 22 is specifically used to add the number of encoded points corresponding to each non-zero node located before the current node in the N-1th layer to obtain a first sum value; and determine the third number of encoded points based on the first sum value and the number of non-zero child nodes of the current node.

[0579] In some embodiments, the encoding unit 22 is specifically used to add the first sum value and the number of non-zero child nodes included in the current node to obtain a second sum value if the i-th non-zero child node is the first non-zero child node of the current node; and subtract 1 from the second sum value to obtain the third number of encoded points.

[0580] In some embodiments, the encoding unit 22 is specifically used to add the first sum value and the number of non-zero child nodes included in the current node to obtain a second sum value if the i-th non-zero child node is not the first non-zero child node of the current node; subtract 1 from the second sum value to obtain a third sum value; obtain the sum of the first number of repeated points included in the non-zero child nodes in the current node that are located before the i-th non-zero child node, and add the third sum value to the sum of the first number of repeated points to obtain the third number of encoded points.

[0581] In some embodiments, if the point cloud does not adopt the inferred direct coding mode IDCM, the encoding unit 22 is specifically configured to determine the third number of encoded points as the first number of encoded points.

[0582] In some embodiments, if the point cloud adopts the inferred direct coding mode IDCM, the encoding unit 22 is specifically used to determine the number of points included in the second node of the octree using IDCM; the sum of the number of encoded points corresponding to the i-th non-zero child node and the number of points included in the second node is determined as the first number of encoded points.

[0583] In some embodiments, the encoding unit 22 is specifically configured to skip encoding repeated point information of the i-th non-zero child node if the first parameter is equal to the second parameter.

[0584] In some embodiments, the encoding unit 22 is specifically used to skip encoding the repeated point information of the i-th non-zero child node if the first parameter is greater than the second parameter and the i-th non-zero child node is the last voxel node of the octree, and determine the difference between the first parameter and the second parameter as the number of repeated points included in the i-th non-zero child node.

[0585] In some embodiments, the encoding unit 22 is specifically configured to encode the duplicate point information of the i-th non-zero child node if the first parameter is greater than the second parameter and the i-th non-zero child node is not the last voxel node of the octree.

[0586] In some embodiments, the determination unit 21 is specifically used to determine the total number of encoded repeated points corresponding to the i-th non-zero child node in the current node, where i is a positive integer; and determine the total number of encoded repeated points corresponding to the i-th non-zero child node as the first parameter.

[0587] In some embodiments, the determination unit 21 is specifically used to determine the sum of the third number of encoded repeated points included in each non-zero child node located before the i-th non-zero child node in the octree; based on the sum of the third number of encoded repeated points, determine the total number of encoded repeated points corresponding to the i-th non-zero child node.

[0588] In some embodiments, if the point cloud adopts the prediction tree encoding method, the determination unit 21 is specifically used to determine the sum of the fourth number of encoded repeated points included in the first node in the octree that adopts the prediction tree encoding method; based on the sum of the third number of encoded repeated points and the sum of the fourth number of encoded repeated points, determine the total number of encoded repeated points corresponding to the i-th non-zero child node.

[0589] In some embodiments, if the point cloud adopts the inferred direct coding mode IDCM, the determination unit 21 is specifically used to determine the sum of the fifth number of encoded repeated points included in the second node using IDCM in the octree; the sum of the third number of encoded repeated points, the sum of the fourth number of encoded repeated points, and the sum of the fifth number of encoded repeated points are added to obtain the total number of encoded repeated points corresponding to the i-th non-zero child node.

[0590] In some embodiments, the encoding unit 22 is specifically used to determine the total number of repeated points in the point cloud; based on the total number of repeated points in the point cloud and the total number of encoded repeated points corresponding to the i-th non-zero child node, determine whether to encode the repeated point information of the i-th non-zero child node.

[0591] In some embodiments, the encoding unit 22 is specifically used to determine the total number of points in the point cloud and the total number of non-zero voxel nodes in the octree; and the difference between the total number of points in the point cloud and the total number of non-zero voxel nodes in the octree is determined as the total number of repeated points in the point cloud.

[0592] In some embodiments, the encoding unit 22 is specifically configured to skip encoding the duplicate point information of the i-th non-zero child node if the total number of encoded duplicate points corresponding to the i-th non-zero child node is equal to the total number of duplicate points in the point cloud.

[0593] In some embodiments, the encoding unit 22 is specifically used to skip encoding the duplicate point information of the i-th non-zero child node if the total number of encoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points of the point cloud, and the i-th non-zero child node is the last voxel node of the octree, and determine the difference between the total number of duplicate points of the point cloud and the total number of encoded duplicate points corresponding to the i-th non-zero child node as the number of duplicate points included in the i-th non-zero child node.

[0594] In some embodiments, the encoding unit 22 is specifically used to encode the duplicate point information of the i-th non-zero child node if the total number of encoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points of the point cloud, and the i-th non-zero child node is not the last voxel node of the octree.

[0595] In some embodiments, the repeated point information includes the number of repeated points.

[0596] In some embodiments, the encoding unit 22 is further configured to write the total number of points of the point cloud into the geometric code stream of the point cloud.

[0597] In some embodiments, the encoding unit 22 is specifically configured to write the total number of points of the point cloud into a geometric unit header of the point cloud.

[0598] In some embodiments, the encoding unit 22 is specifically used to determine the low-order part of the number of points contained in the slice corresponding to the point cloud and the high-order part of the number of points contained in the slice based on the total number of points in the point cloud; and write the low-order part of the number of points contained in the slice and the high-order part of the number of points contained in the slice into the header of the geometric unit.

[0599] It should be understood that the device embodiment and the method embodiment may correspond to each other, and similar descriptions may refer to the method embodiment. To avoid repetition, no further description is given here. Specifically, the point cloud coding device 20 shown in FIG11 may correspond to the corresponding subject in the point cloud coding method of the embodiment of the present application, and the aforementioned and other operations and / or functions of each unit in the point cloud coding device 20 are respectively for implementing the corresponding processes in the point cloud coding method. For the sake of brevity, no further description is given here.

[0600] The above describes the apparatus and system of the embodiment of the present application from the perspective of functional units in conjunction with the accompanying drawings. It should be understood that the functional unit can be implemented in the form of hardware, can be implemented by instructions in the form of software, or can be implemented by a combination of hardware and software units. Specifically, the steps of the method embodiment in the embodiment of the present application can be completed by the hardware integrated logic circuit and / or software instructions in the processor, and the steps of the method disclosed in the embodiment of the present application can be directly embodied as being executed by a hardware decoding processor, or can be executed by a combination of hardware and software units in the decoding processor. Optionally, the software unit can be located in a mature storage medium in the art such as a random access memory, a flash memory, a read-only memory, a programmable read-only memory, an electrically erasable programmable memory, a register, etc. The storage medium is located in the memory, and the processor reads the information in the memory and completes the steps in the above method embodiment in conjunction with its hardware.

[0601] FIG12 is a schematic block diagram of an electronic device provided in an embodiment of the present application.

[0602] As shown in FIG12 , the electronic device 30 may be a point cloud decoding device or a point cloud encoding device as described in an embodiment of the present application. The electronic device 30 may include:

[0603] The memory 33 and the processor 32 are configured to store a computer program 34 and transmit the program code 34 to the processor 32. In other words, the processor 32 can call and run the computer program 34 from the memory 33 to implement the method in the embodiment of the present application.

[0604] For example, the processor 32 may be configured to execute the steps of the method 200 according to the instructions in the computer program 34 .

[0605] In some embodiments of the present application, the processor 32 may include but is not limited to:

[0606] General-purpose processor, Digital Signal Processor (DSP), Application Specific Integrated Circuit (ASIC), Field Programmable Gate Array (FPGA) or other programmable logic device, discrete gate or transistor logic device, discrete hardware components, etc.

[0607] In some embodiments of the present application, the memory 33 includes but is not limited to:

[0608] Volatile memory and / or non-volatile memory. Non-volatile memory can be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. Volatile memory can be random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link DRAM (SLDRAM), and direct RAM bus random access memory (DR RAM).

[0609] In some embodiments of the present application, the computer program 34 may be divided into one or more units, which are stored in the memory 33 and executed by the processor 32 to implement the method provided by the present application. The one or more units may be a series of computer program instruction segments capable of implementing specific functions, and the instruction segments are used to describe the execution process of the computer program 34 in the electronic device 30.

[0610] As shown in FIG12 , the electronic device 30 may further include:

[0611] The transceiver 33 may be connected to the processor 32 or the memory 33 .

[0612] The processor 32 can control the transceiver 33 to communicate with other devices. Specifically, it can send information or data to other devices or receive information or data sent by other devices. The transceiver 33 may include a transmitter and a receiver. The transceiver 33 may further include an antenna, and the number of antennas may be one or more.

[0613] It should be understood that the various components in the electronic device 30 are connected via a bus system, wherein the bus system includes not only a data bus but also a power bus, a control bus and a status signal bus.

[0614] Figure 13 is a schematic block diagram of the point cloud encoding and decoding system provided in an embodiment of the present application.

[0615] As shown in Figure 13, the point cloud encoding and decoding system 40 may include: a point cloud encoder 41 and a point cloud decoder 42, wherein the point cloud encoder 41 is used to execute the point cloud encoding method involved in the embodiment of the present application, and the point cloud decoder 42 is used to execute the point cloud decoding method involved in the embodiment of the present application.

[0616] The present application also provides a code stream, which is generated according to the above encoding method.

[0617] The present application also provides a computer storage medium having a computer program stored thereon, which, when executed by a computer, enables the computer to perform the method of the above-mentioned method embodiment. In other words, the present application also provides a computer program product containing instructions, which, when executed by a computer, enables the computer to perform the method of the above-mentioned method embodiment.

[0618] When implemented using software, it can be implemented in whole or in part in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, the process or function according to the embodiment of the present application is generated in whole or in part. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another computer-readable storage medium. For example, the computer instructions can be transmitted from one website, computer, server or data center to another website, computer, server or data center via a wired (e.g., coaxial cable, optical fiber, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) method. The computer-readable storage medium can be any available medium that a computer can access or a data storage device such as a server or data center that includes one or more available media integrated. The available medium can be a magnetic medium (e.g., a floppy disk, a hard disk, a tape), an optical medium (e.g., a digital video disc (DVD)), or a semiconductor medium (e.g., a solid state drive (SSD)).

[0619] Those skilled in the art will appreciate that the units and algorithm steps of each example described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are performed in hardware or software depends on the specific application and design constraints of the technical solution. Professional and technical personnel can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.

[0620] In the several embodiments provided in this application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are merely schematic. For example, the division of the unit is only a logical function division. In actual implementation, there may be other division methods, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some interfaces, indirect coupling or communication connection of devices or units, which can be electrical, mechanical or other forms.

[0621] The units described as separate components may or may not be physically separate, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed across multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of this embodiment. For example, the functional units in the various embodiments of the present application may be integrated into a processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit.

[0622] The above content is merely a specific embodiment of the present application, but the scope of protection of the present application is not limited thereto. Any changes or substitutions that can be easily conceived by a person skilled in the art within the technical scope disclosed in this application should be included in the scope of protection of the present application. Therefore, the scope of protection of the present application should be based on the scope of protection of the claims.

Claims

1. A point cloud decoding method, characterized in that: include: Determine a first parameter corresponding to a current node, where the first parameter is used to determine whether at least one non-zero child node of the current node includes a duplicate point, where the current node is a non-zero node in the N-1th layer of an octree of the point cloud, where the octree is obtained by node partitioning the point cloud, and N is a total number of layers in the octree, where N is a positive integer greater than 1; Based on the first parameter, geometric decoding is performed on the current node.

2. The method according to claim 1, characterized in that The determining of the first parameter corresponding to the current node includes: Determine the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer; The first parameter is determined based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer.

3. The method according to claim 2, characterized in that The determining the first parameter based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer includes: The difference between the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer is determined as the first parameter.

4. The method according to claim 3, characterized in that The performing geometric decoding on the current node based on the first parameter includes: For the i-th non-zero child node of the current node, determine a second parameter corresponding to the i-th non-zero child node, where the second parameter is used to indicate the number of points whose geometric positions in the point cloud have been decoded when decoding the i-th non-zero child node, where i is a positive integer; Based on the first parameter and the second parameter, determine whether to decode the repeated point information of the i-th non-zero child node.

5. The method according to claim 4, characterized in that The determining the second parameter corresponding to the i-th non-zero child node includes: Determine the number of first decoded points corresponding to the i-th non-zero child node; Based on the first number of decoded points, a second parameter corresponding to the i-th non-zero child node is determined.

6. The method according to claim 5, characterized in that If the point cloud does not adopt the prediction tree encoding method, determining the second parameter corresponding to the i-th non-zero child node based on the first number of decoded points includes: The number of the first decoded points is determined as the second parameter.

7. The method according to claim 5, characterized in that If the point cloud adopts the prediction tree encoding method, determining the second parameter corresponding to the i-th non-zero child node based on the first number of decoded points includes: Determining the number of second decoded points included in the first node of the octree that adopts the prediction tree encoding method; The sum of the first number of decoded points and the second number of decoded points is determined as the second parameter.

8. The method according to claim 5, characterized in that The determining the number of first decoded points corresponding to the i-th non-zero child node includes: Determine the number of third decoded points corresponding to the i-th non-zero child node; The first number of decoded points is determined based on the third number of decoded points.

9. The method according to claim 8, characterized in that The determining the number of third decoded points corresponding to the i-th non-zero child node includes: If the current node is the first non-zero node in the N-1th layer, determining the number of non-zero child nodes of the current node; The third number of decoded points is determined based on the number of non-zero child nodes of the current node.

10. The method according to claim 9, characterized in that The determining the third number of decoded points based on the number of non-zero child nodes of the current node includes: If the i-th non-zero child node is the first non-zero child node of the current node, the value obtained by subtracting 1 from the number of non-zero child nodes included in the current node is determined as the third number of decoded points.

11. The method according to claim 9, characterized in that The determining the third number of decoded points based on the number of non-zero child nodes of the current node includes: If the i-th non-zero child node is not the first non-zero child node of the current node, then obtaining the sum of the first number of repeated points included in the non-zero child nodes of the current node that are located before the i-th non-zero child node; The number of non-zero child nodes included in the current node is subtracted by 1, and then added to the sum of the first number of repeated points to obtain the third number of decoded points.

12. The method according to claim 8, characterized in that The determining the number of third decoded points corresponding to the i-th non-zero child node includes: If the current node is not the first non-zero node in the N-1th layer, determining the number of decoded points corresponding to each non-zero node before the current node in the N-1th layer; Determine the number of non-zero child nodes of the current node; The third number of decoded points is determined based on the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer and the number of non-zero child nodes of the current node.

13. The method according to claim 12, characterized in that The determining the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer includes: For any non-zero node among the non-zero nodes, obtain the number of non-zero child nodes of the non-zero node and the sum of the number of second repeated points included in the non-zero child nodes of the non-zero node; The number of non-zero child nodes of the non-zero node is subtracted by 1, and then added to the sum of the second number of repeated points to obtain the number of decoded points corresponding to the non-zero node.

14. The method according to claim 12, characterized in that The determining the third number of decoded points based on the number of decoded points corresponding to each non-zero node located before the current node in the N-1th layer and the number of non-zero child nodes of the current node includes: Adding the numbers of decoded points corresponding to the non-zero nodes before the current node in the N-1th layer to obtain a first sum; The third number of decoded points is determined based on the first sum value and the number of non-zero child nodes of the current node.

15. The method according to claim 14, characterized in that The determining the third number of decoded points based on the first sum value and the number of non-zero child nodes of the current node includes: If the i-th non-zero child node is the first non-zero child node of the current node, then adding the first sum value to the number of non-zero child nodes included in the current node to obtain a second sum value; Subtract 1 from the second sum to obtain the third number of decoded points.

16. The method according to claim 14, characterized in that The determining the third number of decoded points based on the first sum value and the number of non-zero child nodes of the current node includes: If the i-th non-zero child node is not the first non-zero child node of the current node, adding the first sum value to the number of non-zero child nodes included in the current node to obtain a second sum value; Subtract 1 from the second sum to obtain a third sum; Obtain the sum of the first number of repeated points included in the non-zero child nodes located before the i-th non-zero child node in the current node, and add the third sum value to the sum of the first number of repeated points to obtain the third number of decoded points.

17. The method according to claim 8, characterized in that If the point cloud does not adopt the inferred direct coding mode IDCM, determining the first number of decoded points based on the third number of decoded points includes: The third number of decoded points is determined as the first number of decoded points.

18. The method according to claim 8, characterized in that If the point cloud adopts an inferred direct coding mode IDCM, determining the first number of decoded points based on the third number of decoded points includes: Determine the number of points included in the second node of the octree using IDCM; The sum of the third number of decoded points and the number of points included in the second node is determined as the first number of decoded points.

19. The method according to any one of claims 4 to 18, characterized in that: The determining, based on the first parameter and the second parameter, whether to decode the repeated point information of the i-th non-zero child node includes: If the first parameter is equal to the second parameter, skip decoding the repeated point information of the i-th non-zero child node.

20. The method according to any one of claims 4 to 18, characterized in that: The determining, based on the first parameter and the second parameter, whether to decode the repeated point information of the i-th non-zero child node includes: If the first parameter is greater than the second parameter, and the i-th non-zero child node is the last voxel node of the octree, skip decoding the repeated point information of the i-th non-zero child node, and determine the difference between the first parameter and the second parameter as the number of repeated points included in the i-th non-zero child node.

21. The method according to any one of claims 4 to 18, characterized in that: The determining, based on the first parameter and the second parameter, whether to decode the repeated point information of the i-th non-zero child node includes: If the first parameter is greater than the second parameter, and the i-th non-zero child node is not the last voxel node of the octree, then the repeated point information of the i-th non-zero child node is decoded.

22. The method according to claim 1, wherein The determining of the first parameter corresponding to the current node includes: For the i-th non-zero child node in the current node, determine the total number of decoded repeated points corresponding to the i-th non-zero child node, where i is a positive integer; The total number of decoded repeated points corresponding to the i-th non-zero child node is determined as the first parameter.

23. The method according to claim 22, characterized in that The determining the total number of decoded repeated points corresponding to the i-th non-zero child node includes: Determine the sum of the numbers of third decoded repeated points included in each non-zero child node located before the i-th non-zero child node in the octree; Based on the sum of the third number of decoded repeated points, the total number of decoded repeated points corresponding to the i-th non-zero child node is determined.

24. The method according to claim 23, wherein If the point cloud adopts the prediction tree encoding method, then determining the total number of decoded repeated points corresponding to the i-th non-zero child node based on the sum of the third number of decoded repeated points includes: Determine a sum of the number of fourth decoded repeated points included in the first node of the octree using the prediction tree encoding method; Based on the sum of the third number of decoded repeated points and the sum of the fourth number of decoded repeated points, the total number of decoded repeated points corresponding to the i-th non-zero child node is determined.

25. The method according to claim 24, characterized in that If the point cloud adopts the inferred direct coding mode IDCM, determining the total number of decoded duplicate points corresponding to the i-th non-zero child node based on the sum of the third number of decoded duplicate points and the sum of the fourth number of decoded duplicate points includes: Determine the sum of the number of fifth decoded repeated points included in the second node using IDCM in the octree; The sum of the third number of decoded repeated points, the sum of the fourth number of decoded repeated points, and the sum of the fifth number of decoded repeated points are added to obtain the total number of decoded repeated points corresponding to the i-th non-zero child node.

26. The method according to any one of claims 22 to 25, characterized in that The performing geometric decoding on the current node based on the first parameter includes: determining a total number of duplicate points in the point cloud; Based on the total number of repeated points in the point cloud and the total number of decoded repeated points corresponding to the i-th non-zero child node, it is determined whether to decode the repeated point information of the i-th non-zero child node.

27. The method according to claim 26, characterized in that Determining the total number of repeated points in the point cloud includes: Determining the total number of points in the point cloud and the total number of non-zero voxel nodes in the octree; The difference between the total number of points in the point cloud and the total number of non-zero voxel nodes in the octree is determined as the total number of repeated points in the point cloud.

28. The method according to claim 27, characterized in that The determining whether to decode the duplicate point information of the i-th non-zero child node based on the total number of duplicate points in the point cloud and the total number of decoded duplicate points corresponding to the i-th non-zero child node includes: If the total number of decoded duplicate points corresponding to the i-th non-zero child node is equal to the total number of duplicate points in the point cloud, decoding of the duplicate point information of the i-th non-zero child node is skipped.

29. The method according to claim 27, characterized in that The determining whether to decode the duplicate point information of the i-th non-zero child node based on the total number of duplicate points in the point cloud and the total number of decoded duplicate points corresponding to the i-th non-zero child node includes: If the total number of decoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points in the point cloud, and the i-th non-zero child node is the last voxel node of the octree, then the decoding of the duplicate point information of the i-th non-zero child node is skipped, and the difference between the total number of duplicate points in the point cloud and the total number of decoded duplicate points corresponding to the i-th non-zero child node is determined as the number of duplicate points included in the i-th non-zero child node.

30. The method according to claim 27, wherein The determining whether to decode the duplicate point information of the i-th non-zero child node based on the total number of duplicate points in the point cloud and the total number of decoded duplicate points corresponding to the i-th non-zero child node includes: If the total number of decoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points in the point cloud, and the i-th non-zero child node is not the last voxel node of the octree, then the duplicate point information of the i-th non-zero child node is decoded.

31. The method according to any one of claims 1 to 18, wherein The repeated point information includes the number of repeated points.

32. The method according to claim 2 or 27, characterized in that Determining the total number of points in the point cloud includes: Decode the geometric code stream of the point cloud to obtain the total number of points in the point cloud.

33. The method according to claim 32, characterized in that Decoding the geometric code stream of the point cloud to obtain the total number of points in the point cloud includes: Decode the geometric unit header of the point cloud to obtain the total number of points in the point cloud.

34. The method according to claim 33, wherein Decoding the geometry unit header to obtain the total number of points in the point cloud includes: Decoding the geometry unit header to obtain a low-order portion of points contained in a slice corresponding to the point cloud and a high-order portion of points contained in the slice; The total number of points in the point cloud is obtained based on the low-order part of the number of points in the slice and the high-order part of the number of points in the slice.

35. The method according to claim 12, wherein Determining the number of non-zero child nodes of the current node includes: Decoding the geometric code stream of the point cloud to obtain the occupancy information of the current node; Based on the placeholder information, the number of non-zero child nodes included in the current node is obtained.

36. A point cloud coding method, characterized in that include: Determine a first parameter corresponding to a current node, where the first parameter is used to determine whether at least one child node of the current node includes a duplicate point, where the current node is a non-zero node in the N-1th layer of an octree of the point cloud, where the octree is obtained by node partitioning the point cloud, and N is a total number of layers in the octree, where N is a positive integer greater than 1; Based on the first parameter, geometric encoding is performed on the current node.

37. The method according to claim 36, wherein The determining of the first parameter corresponding to the current node includes: Determine the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer; The first parameter is determined based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer.

38. The method according to claim 37, wherein The determining the first parameter based on the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer includes: The difference between the total number of points in the point cloud and the number of non-zero nodes in the N-1th layer is determined as the first parameter.

39. The method according to claim 38, characterized in that The performing geometric encoding on the current node based on the first parameter includes: For an i-th non-zero child node of the current node, determine a second parameter corresponding to the i-th non-zero child node, where the second parameter is used to indicate the number of points whose geometric positions in the point cloud have been encoded when encoding the i-th non-zero child node; Based on the first parameter and the second parameter, determine whether to encode the repeated point information of the i-th non-zero child node.

40. The method according to claim 39, wherein The determining the second parameter corresponding to the i-th non-zero child node includes: Determine the number of first encoded points corresponding to the i-th non-zero child node in the point cloud; Based on the number of first encoded points corresponding to the i-th non-zero child node in the point cloud, a second parameter corresponding to the i-th non-zero child node is determined.

41. The method according to claim 40, characterized in that If the point cloud adopts the prediction tree encoding method, determining the second parameter corresponding to the i-th non-zero child node based on the number of first encoded points corresponding to the i-th non-zero child node in the point cloud includes: The number of first encoded points corresponding to the i-th non-zero child node in the point cloud is determined as the second parameter.

42. The method according to claim 40, wherein If the point cloud does not adopt the prediction tree encoding method, determining the second parameter corresponding to the i-th non-zero child node based on the number of first encoded points corresponding to the i-th non-zero child node in the point cloud includes: Obtaining the number of second encoded points included in a first encoding unit encoded using a prediction tree in an encoding unit of the point cloud, wherein the encoding unit is a non-zero node obtained by dividing a bounding box of the point cloud by a preset number of times; The sum of the first number of encoded points and the second number of encoded points is determined as the second parameter.

43. The method according to claim 40, wherein The determining the number of first encoded points corresponding to the i-th non-zero child node in the point cloud includes: Determine the number of third encoded points corresponding to the i-th non-zero child node; Based on the third number of encoded points, the first number of encoded points is determined.

44. The method according to claim 43, wherein The determining the number of third encoded points corresponding to the i-th non-zero child node includes: If the current node is the first non-zero node in the N-1th layer, determining the number of non-zero child nodes of the current node; The third number of coded points is determined based on the number of non-zero child nodes of the current node.

45. The method according to claim 43, wherein The determining the third number of coded points based on the number of non-zero child nodes of the current node includes: If the i-th non-zero child node is the first non-zero child node of the current node, the number of non-zero child nodes included in the current node is reduced by 1 to determine the third number of coded points.

46. ​​The method according to claim 43, wherein The determining the third number of coded points based on the number of non-zero child nodes of the current node includes: If the i-th non-zero child node is not the first non-zero child node of the current node, then obtaining the sum of the first number of repeated points included in the child nodes before the i-th non-zero child node among the non-zero child nodes of the current node; The number of non-zero child nodes included in the current node is subtracted by 1, and then added to the sum of the first number of repeated points to obtain the third number of encoded points.

47. The method according to claim 43, wherein The determining the number of third encoded points corresponding to the i-th non-zero child node in the point cloud includes: If the current node is not the first non-zero node in the N-1th layer, determining the number of encoded points corresponding to each non-zero node in the N-1th layer that precedes the current node; Determine the number of non-zero child nodes of the current node; The third number of coded points is determined based on the number of coded points corresponding to each non-zero node located before the current node in the N-1th layer and the number of non-zero child nodes of the current node.

48. The method according to claim 47, wherein The determining the number of encoded points corresponding to each non-zero node located before the current node in the N-1th layer includes: For any non-zero node among the non-zero nodes, obtain the number of non-zero child nodes of the non-zero node and the sum of the number of second repeated points included in the non-zero child nodes of the non-zero node; The number of non-zero child nodes of the non-zero node is subtracted by 1, and the result is added to the sum of the second number of repeated points to obtain the number of encoded points corresponding to the non-zero node.

49. The method according to claim 47, wherein The determining the third number of coded points based on the number of coded points corresponding to each non-zero node located before the current node in the N-1th layer and the number of non-zero child nodes of the current node includes: Adding the number of encoded points corresponding to each non-zero node before the current node in the N-1th layer to obtain a first sum; The third number of encoded points is determined based on the first sum value and the current number of non-zero child nodes.

50. The method according to claim 49, wherein The determining the third number of encoded points based on the first sum value and the number of non-zero child nodes of the current node includes: If the i-th non-zero child node is the first non-zero child node of the current node, then adding the first sum value to the number of non-zero child nodes included in the current node to obtain a second sum value; Subtract 1 from the second sum to obtain the third number of encoded points.

51. The method according to claim 49, wherein The determining, based on the first sum value and the number of non-zero child nodes of the current node, the number of third encoded points corresponding to the i-th non-zero child node includes: If the i-th non-zero child node is not the first non-zero child node of the current node, adding the first sum value to the number of non-zero child nodes included in the current node to obtain a second sum value; Subtract 1 from the second sum to obtain a third sum; Obtain the sum of the first number of repeated points included in the non-zero child nodes located before the i-th non-zero child node in the current node, and add the third sum value to the sum of the first number of repeated points to obtain the third number of encoded points.

52. The method according to claim 43, wherein If the point cloud does not adopt the inferred direct coding mode IDCM, determining the first number of encoded points based on the third number of encoded points includes: The third number of encoded points is determined as the first number of encoded points.

53. The method according to claim 43, wherein If the point cloud adopts an inferred direct coding mode IDCM, determining the first number of encoded points based on the third number of encoded points includes: Determine the number of points included in the second node of the octree using IDCM; The sum of the number of coded points corresponding to the i-th non-zero child node and the number of points included in the second node is determined as the first number of coded points.

54. The method according to any one of claims 39 to 53, wherein: The determining, based on the first parameter and the second parameter, whether to encode the repeated point information of the i-th non-zero child node includes: If the first parameter is equal to the second parameter, skip encoding the repeated point information of the i-th non-zero child node.

55. The method according to any one of claims 39 to 53, wherein: The determining, based on the first parameter and the second parameter, whether to encode the repeated point information of the i-th non-zero child node includes: If the first parameter is greater than the second parameter, and the i-th non-zero child node is the last voxel node of the octree, then skip encoding the duplicate point information of the i-th non-zero child node, and determine the difference between the first parameter and the second parameter as the number of duplicate points included in the i-th non-zero child node.

56. The method according to any one of claims 39 to 53, wherein: The determining, based on the first parameter and the second parameter, whether to encode the repeated point information of the i-th non-zero child node includes: If the first parameter is greater than the second parameter, and the i-th non-zero child node is not the last voxel node of the octree, then the duplicate point information of the i-th non-zero child node is encoded.

57. The method according to claim 36, wherein The determining of the first parameter corresponding to the current node includes: For the i-th non-zero child node in the current node, determine the total number of encoded repeated points corresponding to the i-th non-zero child node, where i is a positive integer; The total number of encoded repeated points corresponding to the i-th non-zero child node is determined as the first parameter.

58. The method according to claim 57, wherein The determining the total number of encoded repeated points corresponding to the i-th non-zero child node includes: Determine the sum of the numbers of third encoded repeated points included in each non-zero child node located before the i-th non-zero child node in the octree; Based on the sum of the third number of encoded repeated points, the total number of encoded repeated points corresponding to the i-th non-zero child node is determined.

59. The method according to claim 58, characterized in that If the point cloud adopts the prediction tree encoding method, then determining the total number of encoded repeated points corresponding to the i-th non-zero child node based on the sum of the third number of encoded repeated points includes: Determine the sum of the number of fourth encoded repeated points included in the first node of the octree using the prediction tree encoding method; Based on the sum of the third number of encoded repeated points and the sum of the fourth number of encoded repeated points, the total number of encoded repeated points corresponding to the i-th non-zero child node is determined.

60. The method according to claim 59, wherein If the point cloud adopts the inferred direct coding mode IDCM, determining the total number of encoded repeated points corresponding to the i-th non-zero child node based on the sum of the third number of encoded repeated points and the sum of the fourth number of encoded repeated points includes: Determine the sum of the number of fifth coded repeated points included in the second node using IDCM in the octree; The sum of the third number of encoded repeated points, the sum of the fourth number of encoded repeated points, and the sum of the fifth number of encoded repeated points are added to obtain the total number of encoded repeated points corresponding to the i-th non-zero child node.

61. The method according to any one of claims 57 to 60, wherein: The performing geometric encoding on the current node based on the first parameter includes: determining a total number of duplicate points in the point cloud; Based on the total number of repeated points in the point cloud and the total number of encoded repeated points corresponding to the i-th non-zero child node, it is determined whether to encode the repeated point information of the i-th non-zero child node.

62. The method according to claim 61, characterized in that Determining the total number of repeated points in the point cloud includes: Determining the total number of points in the point cloud and the total number of non-zero voxel nodes in the octree; The difference between the total number of points in the point cloud and the total number of non-zero voxel nodes in the octree is determined as the total number of repeated points in the point cloud.

63. The method according to claim 61, characterized in that The determining whether to encode the duplicate point information of the i-th non-zero child node based on the total number of duplicate points in the point cloud and the total number of encoded duplicate points corresponding to the i-th non-zero child node includes: If the total number of encoded duplicate points corresponding to the i-th non-zero child node is equal to the total number of duplicate points in the point cloud, then encoding of duplicate point information of the i-th non-zero child node is skipped.

64. The method according to claim 61, wherein The determining whether to encode the duplicate point information of the i-th non-zero child node based on the total number of duplicate points in the point cloud and the total number of encoded duplicate points corresponding to the i-th non-zero child node includes: If the total number of encoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points in the point cloud, and the i-th non-zero child node is the last voxel node of the octree, then the encoding of the duplicate point information of the i-th non-zero child node is skipped, and the difference between the total number of duplicate points in the point cloud and the total number of encoded duplicate points corresponding to the i-th non-zero child node is determined as the number of duplicate points included in the i-th non-zero child node.

65. The method according to claim 61, wherein The determining whether to encode the duplicate point information of the i-th non-zero child node based on the total number of duplicate points in the point cloud and the total number of encoded duplicate points corresponding to the i-th non-zero child node includes: If the total number of encoded duplicate points corresponding to the i-th non-zero child node is less than the total number of duplicate points in the point cloud, and the i-th non-zero child node is not the last voxel node of the octree, then the duplicate point information of the i-th non-zero child node is encoded.

66. The method according to any one of claims 36 to 53, wherein: The repeated point information includes the number of repeated points.

67. The method according to claim 37 or 62, characterized in that The method further comprises: The total number of points of the point cloud is written into the geometric code stream of the point cloud.

68. The method according to claim 67, characterized in that Writing the total number of points of the point cloud into the geometric code stream of the point cloud includes: The total number of points in the point cloud is written into the geometric unit header of the point cloud.

69. The method according to claim 68, characterized in that Writing the total number of points of the point cloud into the geometric unit header of the point cloud includes: Determining, based on the total number of points in the point cloud, a low-order portion of points contained in a slice corresponding to the point cloud and a high-order portion of points contained in the slice; The low-order portion of the number of points contained in the slice and the high-order portion of the number of points contained in the slice are written into the geometry unit header.

70. A point cloud decoding device, characterized in that include: a determining unit, configured to determine a first parameter corresponding to a current node, the first parameter being used to determine whether at least one non-zero child node of the current node includes a duplicate point, the current node being a non-zero node in the N-1th layer of an octree of the point cloud, the octree being obtained by node partitioning the point cloud, and N being a total number of layers of the octree, where N is a positive integer greater than 1; A decoding unit is used to perform geometric decoding on the current node based on the first parameter.

71. A point cloud encoding device, characterized in that include: a determining unit, configured to determine a first parameter corresponding to a current node, the first parameter being used to determine whether at least one non-zero child node of the current node includes a duplicate point, the current node being a non-zero node in the N-1th layer of an octree of the point cloud, the octree being obtained by node partitioning the point cloud, and N being a total number of layers of the octree, where N is a positive integer greater than 1; An encoding unit, configured to perform geometric encoding on the current node based on the first parameter.

72. An electronic device, characterized in that: include: processor and memory; The memory is used to store computer programs; The processor is configured to call and run the computer program stored in the memory to execute the method according to any one of claims 1 to 35 or 36 to 69.

73. A computer-readable storage medium, characterized in that Used to store a computer program, the computer program causing a computer to execute the method according to any one of claims 1 to 35 or 36 to 69.