Point cloud decoding method, point cloud encoding method and related device

By filtering and processing the first type of edge vertices in the edge vertex processing flow of the Trisoup node, and constructing triangular patches, the problem of erroneous reconstruction in the point cloud encoding framework is solved, and the encoding and decoding performance is improved.

WO2026012360A1PCT designated stage Publication Date: 2026-01-15VIVO MOBILE COMM CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2025/107537
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-07-09
Filing Date
2025-07-08
Publication Date
2026-01-15

AI Technical Summary

Technical Problem

In existing point cloud encoding frameworks based on Trisoup, incorrect point cloud reconstruction leads to poor encoding and decoding performance.

Method used

After determining the edge vertices of the current Trisoup node, we first determine whether there are first-type edge vertices to be processed, process them, obtain the second set of edge vertices, and then construct triangular patches to reconstruct the point cloud.

Benefits of technology

It reduces the number of incorrect point cloud reconstructions and improves point cloud encoding and decoding performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025107537_15012026_PF_FP_ABST
    Figure CN2025107537_15012026_PF_FP_ABST
Patent Text Reader

Abstract

The present application belongs to the field of point cloud encoding and decoding. Disclosed are a point cloud decoding method, a point cloud encoding method and a related device. The point cloud decoding method in an embodiment of the present application comprises: parsing a bitstream, and determining edge vertices of a current Trisoup node to obtain a first set of edge vertices; determining whether first-type edge vertices to be processed are present in the first set of edge vertices, wherein the original point cloud distribution within a preset range adjacent to the first-type edge vertices in the current Trisoup node meets a first preset condition; if it is determined that the first-type edge vertices are present in the first set of edge vertices, processing the first-type edge vertices in the first set of edge vertices to obtain a second set of edge vertices; on the basis of the second set of edge vertices, determining triangular patches; and on the basis of the triangular patches, determining reconstruction points of a reconstructed point cloud.
Need to check novelty before this filing date? Find Prior Art

Description

Point cloud decoding methods, point cloud encoding methods and related equipment

[0001] Cross-references to related applications

[0002] This application is based on and claims priority to Chinese Patent Application No. 202410916756.4, filed on July 9, 2024, the entire contents of which are incorporated herein by reference. Technical Field

[0003] This application relates to the field of point cloud encoding and decoding technology, and more specifically, to a point cloud decoding method, a point cloud encoding method, and related equipment. Background Technology

[0004] In the point cloud geometric information encoding framework based on Trisoup (Triangle Soup) sets, surface approximation of the point cloud using triangular faces is performed to simulate the shape of a 3D object with fewer parameters, thereby achieving efficient encoding of point cloud geometric information. Specifically, the relationship between the edges of the original point cloud and the current Trisoup node is analyzed, and edge vertices are determined at appropriate positions on suitable edges. These edge vertices represent the distribution of the surrounding original point cloud. Furthermore, triangular faces are constructed within the current Trisoup node based on these edge vertices.

[0005] The solutions provided by related technologies may lead to incorrect point cloud reconstruction, which is not conducive to improving encoding and decoding performance. Summary of the Invention

[0006] This application provides a point cloud decoding method, a point cloud encoding method, and related equipment, which can reduce erroneous reconstruction points and improve point cloud encoding and decoding performance.

[0007] Firstly, a point cloud decoding method is provided, executed by a point cloud decoder. This method includes: parsing the bitstream to determine the edge vertices of the current Trisoup node, obtaining a first set of edge vertices; parsing a first node flag, which indicates whether a first type of edge vertex to be processed exists in the first set of edge vertices; if it is determined that a first type of edge vertex exists in the first set of edge vertices, then processing the first type of edge vertices in the first set of edge vertices to obtain a second set of edge vertices; determining triangular facets based on the second set of edge vertices; and determining the reconstruction points of the reconstructed point cloud based on the triangular facets.

[0008] Secondly, a point cloud encoding method is provided, executed by a point cloud encoder. The method includes: determining the edge vertices of the current Trisoup node to obtain a first set of edge vertices; determining whether there are any first-type edge vertices to be processed in the first set of edge vertices based on the distribution information of the original point cloud within the current Trisoup node; if there are first-type edge vertices in the first set of edge vertices, processing the first-type edge vertices in the first set of edge vertices to obtain a second set of edge vertices; determining triangular facets based on the second set of edge vertices; and determining the reconstruction points of the reconstructed point cloud based on the triangular facets.

[0009] Thirdly, a point cloud decoder is provided, comprising: a parsing unit for parsing the bitstream, determining the edge vertices of the current Trisoup node, and obtaining a first set of edge vertices; the parsing unit is further configured to parse a first node flag, the first node flag indicating whether there are any first-type edge vertices to be processed in the first set of edge vertices; a processing unit for processing the first-type edge vertices in the first set of edge vertices if it is determined that there are first-type edge vertices in the first set of edge vertices, to obtain a second set of edge vertices; a first determining unit for determining triangular facets based on the second set of edge vertices; and a second determining unit for determining the reconstruction points of the reconstructed point cloud based on the triangular facets.

[0010] Fourthly, a point cloud encoder is provided, comprising: a first determining unit, configured to determine the edge vertices of the current Trisoup node to obtain a first set of edge vertices; a second determining unit, configured to determine whether there are any first-type edge vertices to be processed in the first set of edge vertices based on the distribution information of the original point cloud within the current Trisoup node; a processing unit, configured to process the first-type edge vertices in the first set of edge vertices if there are first-type edge vertices in the first set of edge vertices to obtain a second set of edge vertices; a third determining unit, configured to determine triangular facets based on the second set of edge vertices; and a fourth determining unit, configured to determine the reconstruction points of the reconstructed point cloud based on the triangular facets.

[0011] Fifthly, a point cloud decoder is provided, the point cloud decoder being configured to perform the steps of the method described in the first aspect.

[0012] In a sixth aspect, a point cloud encoder is provided, the point cloud encoder being configured to perform the steps of the method described in the second aspect.

[0013] In a seventh aspect, an electronic device is provided, the terminal including a processor and a memory, the memory storing a program or instructions executable on the processor, the program or instructions, when executed by the processor, implementing the steps of the method as described in the first aspect, or implementing the steps of the method as described in the second aspect.

[0014] Eighthly, an electronic device is provided, including a processor and a communication interface, wherein the communication interface is coupled to the processor, and the processor is used to run programs or instructions to implement the steps of the point cloud decoding method provided in the first aspect, or to implement the steps of the point cloud encoding method provided in the second aspect.

[0015] A ninth aspect provides an electronic device comprising: a memory configured to store video data, and processing circuitry configured to implement the steps of the method described in the first aspect, or the steps of the method described in the second aspect.

[0016] In a tenth aspect, a readable storage medium is provided, on which a program or instructions are stored, which, when executed by a processor, implement the steps of the method described in the first aspect, or implement the steps of the method described in the second aspect.

[0017] Eleventhly, an encoding / decoding system is provided, comprising: an encoding end device and a decoding end device, wherein the encoding end device can be used to perform the steps of the method described in the first aspect, and the decoding end device can be used to perform the steps of the method described in the second aspect.

[0018] In a twelfth aspect, a chip is provided, the chip including a processor and a communication interface coupled to the processor, the processor being configured to run a program or instructions to implement the steps of the method described in the first aspect, or to implement the steps of the method described in the second aspect.

[0019] In a thirteenth aspect, a computer program / program product is provided, which is stored in a storage medium and is executed by at least one processor to implement the steps of the method as described in the first aspect, or to implement the steps of the method as described in the second aspect.

[0020] In the encoding and decoding scheme provided in this application embodiment, after determining the first set of edge vertices of the current Trisoup node, it is first determined whether there is at least one edge vertex to be processed (denoted as the first type of edge vertex) in the first set of edge vertices. If so, it is processed, and then the triangular facets in the current Trisoup node are constructed based on the obtained second set of edge vertices. This application embodiment does not directly construct triangular facets based on the first set of edge vertices obtained from decoding, which can reduce erroneous point cloud reconstruction and improve encoding and decoding performance. Attached Figure Description

[0021] Figure 1 shows a schematic diagram of the encoding / decoding system provided in an embodiment of this application;

[0022] Figure 2a shows the encoding flowchart performed by the point cloud encoder based on the AVS-PCC encoding framework;

[0023] Figure 2b shows the encoding flowchart performed by the point cloud encoder based on the MPEG G-PCC encoding framework;

[0024] Figure 3a shows the decoding flowchart performed by the point cloud decoder based on the AVS-PCC decoding framework;

[0025] Figure 3b shows the decoding flowchart performed by the point cloud decoder based on the MPEG G-PCC decoding framework;

[0026] Figure 4 shows a schematic diagram of the Trisoup node provided in an embodiment of this application;

[0027] Figure 5 shows a flowchart of the point cloud decoding method provided in an embodiment of this application;

[0028] Figure 6a shows a schematic diagram of the first set of edge vertices and the original point cloud distribution in the Trisoup node;

[0029] Figure 6b shows a schematic diagram of the reconstructed point cloud generated based on the first set of edge vertices in the Trisoup node;

[0030] Figure 7 shows a flowchart of the point cloud decoding method provided in an embodiment of this application;

[0031] Figure 8 shows a schematic diagram of how the Trisoup node is divided into multiple sub-regions perpendicular to the X-axis in an embodiment of this application.

[0032] Figure 9 shows a schematic diagram of the Trisoup node after it is divided based on the directions of the three axes provided in this application embodiment;

[0033] Figure 10 shows a flowchart of the point cloud encoding method provided in an embodiment of this application;

[0034] Figure 11 shows a flowchart of the point cloud encoding method provided in an embodiment of this application;

[0035] Figure 12 shows a schematic diagram of the point cloud decoder provided in an embodiment of this application;

[0036] Figure 13 shows a schematic diagram of the structure of the point cloud encoder provided in an embodiment of this application;

[0037] Figure 14 shows a schematic diagram of the structure of the electronic device provided in an embodiment of this application;

[0038] Figure 15 shows a schematic diagram of the structure of the terminal provided in an embodiment of this application. Detailed Implementation

[0039] The technical solutions of the embodiments of this application will be clearly described below with reference to the accompanying drawings. Obviously, the described embodiments are only some, not all, of the embodiments of this application. All other embodiments obtained by those skilled in the art based on the embodiments of this application are within the scope of protection of this application.

[0040] The terms "first," "second," etc., used in this application are used to distinguish similar objects and not to describe a specific order or sequence. It should be understood that such terms can be used interchangeably where appropriate so that embodiments of this application can be implemented in orders other than those illustrated or described herein, and the objects distinguished by "first" and "second" are generally of the same class, not limited in number; for example, the first object can be one or more. Furthermore, "or" in this application indicates at least one of the connected objects. For example, the scope of protection for "A or B" covers at least three scenarios: Scenario 1: including A but not B; Scenario 2: including B but not A; Scenario 3: including both A and B. In addition, the terms "A and / or B," "at least one of A and B," and "at least one of A or B" also cover at least the above three scenarios. The character " / " generally indicates that the preceding and following objects are in an "or" relationship.

[0041] Before introducing the technical solutions provided in the embodiments of this application, the meanings of some terms will be explained first.

[0042] Point cloud: A point cloud is a set of discrete points in space that are randomly distributed and represent the spatial structure and surface properties of a three-dimensional object or scene. Point clouds can be classified into different categories according to different classification criteria. For example, according to the method of acquiring the point cloud, it can be divided into dense point clouds and sparse point clouds; or according to the temporal type of the point cloud, it can be divided into static point clouds and dynamic point clouds.

[0043] Point cloud data: Point cloud data is composed of the geometric coordinates and attribute information of each point. Geometric coordinate information, also known as 3D position information, refers to the spatial coordinates (x, y, z) of a point in the point cloud. This can include the coordinate values ​​of the point along each coordinate axis of a 3D coordinate system, such as the coordinate value x along the X-axis, the coordinate value y along the Y-axis, and the coordinate value z along the Z-axis. The attribute information of a point in the point cloud can include at least one of the following: color information, material information, and laser reflection intensity information (also known as reflectivity). Typically, each point in the point cloud has the same number of attribute information. For example, each point in the point cloud can have both color information and laser reflection intensity information, or it can have color information, material information, and laser reflection intensity information.

[0044] Point cloud compression (PCC) refers to the process of encoding the geometric coordinates and attribute information of each point in a point cloud to obtain a compressed bitstream. Point cloud compression includes two main processes: geometric coordinate information encoding and attribute information encoding. Currently, point cloud compression frameworks that can compress point clouds include the Geometry Point Cloud Compression (G-PCC) or Video Point Cloud Compression (V-PCC) framework provided by the Moving Picture Experts Group (MPEG), or the AVS-PCC framework provided by the Audio Video Standard (AVS).

[0045] Point cloud decoding: Point cloud decoding refers to decoding the compressed bitstream obtained from point cloud encoding to reconstruct the point cloud. More specifically, it refers to the process of reconstructing the geometric coordinates and attribute information of each point in the point cloud based on the geometric bitstream and attribute bitstream in the compressed bitstream. After obtaining the compressed bitstream at the decoding end, for the geometric bitstream, entropy decoding is first performed to obtain the quantized information of each point in the point cloud, and then inverse quantization is performed to reconstruct the geometric coordinates of each point in the point cloud. For the attribute bitstream, entropy decoding is first performed to obtain the quantized attribute residual information or quantized transform coefficients of each point in the point cloud; then, inverse quantization is performed on the quantized attribute residual information to obtain the reconstructed residual information, and inverse quantization is performed on the quantized transform coefficients to obtain the reconstructed transform coefficients. The reconstructed transform coefficients are then inversely transformed to obtain the reconstructed residual information. Based on the reconstructed residual information of each point in the point cloud, the attribute information of each point in the point cloud can be reconstructed. The reconstructed attribute information of each point in the point cloud is then matched one-to-one with the reconstructed geometric coordinate information in sequence to reconstruct the point cloud.

[0046] Figure 1 shows a schematic diagram of the encoding / decoding system 10 provided in an embodiment of this application. The technical solution of this application embodiment relates to encoding / decoding (CODEC) point cloud data (including encoding or decoding).

[0047] As shown in Figure 1, the encoding / decoding system 10 includes a source device 100, which provides encoded point cloud data to be decoded and displayed by the destination device 110. Specifically, the source device 100 provides the point cloud data to the destination device 110 via a communication medium 120. The source device 100 and the destination device 110 may include any one or more of the following: desktop computer, laptop computer, tablet computer, set-top box, mobile phone, wearable device (e.g., smartwatch or wearable camera), television, camera, display device, in-vehicle device, virtual reality (VR) device, augmented reality (AR) device, mixed reality (MR) device, digital media player, video game console, video conferencing equipment, video streaming equipment, broadcast receiver equipment, broadcast transmitter equipment, spacecraft, aircraft, robot, satellite, etc.

[0048] In the example of Figure 1, source device 100 includes a data source 101, a memory 102, a point cloud encoder 200, and an output interface 104. Destination device 110 includes an input interface 111, a point cloud decoder 300, a memory 113, and a display device 114. Source device 100 represents an example of an encoding device, while destination device 110 represents an example of a decoding device. In other examples, source device 100 and destination device 110 may not include some of the components shown in Figure 1, or they may include components other than those shown in Figure 1. For example, source device 100 may acquire point cloud data through an external capture device. Similarly, destination device 110 may interface with an external display device instead of including an integrated display device. Furthermore, memory 102 and memory 113 may be external memories.

[0049] Although Figure 1 illustrates the source device 100 and the destination device 110 as separate devices, in some examples, they may be integrated into a single device. In such embodiments, the same hardware or software, separate hardware or software, or any combination thereof may be used to implement the functionality corresponding to the source device 100 and the functionality corresponding to the destination device 110.

[0050] In some examples, source device 100 and destination device 110 can perform unidirectional or bidirectional data transmission. If it is bidirectional data transmission, source device 100 and destination device 110 can operate in a substantially symmetrical manner, that is, each of source device 100 and destination device 110 includes a point cloud encoder and a point cloud decoder.

[0051] Data source 101 represents the source of point cloud data (i.e., raw, unencoded point cloud data) and provides point cloud data to point cloud encoder 103, which encodes the point cloud data. Source device 100 may include capture devices (e.g., camera devices, sensing devices, or scanning devices), archives containing previously captured point cloud data, or feed interfaces for receiving point cloud data from data content providers. Camera devices may include ordinary cameras, stereo cameras, and light field cameras; sensing devices may include laser devices, radar devices, etc.; and scanning devices may include 3D laser scanning devices, etc. Point cloud data can be obtained by capturing real-world visual scenes using capture devices. Alternatively, data source 101 may generate computer graphics-based data as source data, or combine real-time data, archived data, and computer-generated data. For example, the data source may generate point cloud data based on virtual objects (e.g., virtual 3D objects and virtual 3D scenes obtained through 3D modeling).

[0052] Point cloud encoder 200 encodes captured, pre-captured, or computer-generated data. Point cloud encoder 200 can rearrange point cloud data from the received order (sometimes referred to as the "display order") according to the encoded order. Point cloud encoder 200 can generate a bitstream including the encoded point cloud data. Source device 100 can then output the encoded point cloud data to communication medium 120 via output interface 104 for reception or retrieval, for example, by input interface 111 of destination device 110.

[0053] The memory 102 of the source device 100 and the memory 113 of the destination device 110 represent general-purpose memory. In some examples, memory 102 may store raw data from data source 101, and memory 113 may store decoded point cloud data from point cloud decoder 300. Additionally or alternatively, memories 102 and 113 may respectively store software instructions executable by, for example, point cloud encoder 200 and point cloud decoder 300. Although memories 102 and 113 are shown separately from point cloud encoder 200 and point cloud decoder 300 in this example, it should be understood that point cloud encoder 200 and point cloud decoder 300 may also include internal memory for functionally similar or equivalent purposes. If point cloud encoder 200 and point cloud decoder 300 are deployed on the same hardware device, memories 102 and 113 may be the same memory. Furthermore, memories 102 and 113 may store, for example, encoded point cloud data output from point cloud encoder 200 and input to point cloud decoder 300. In some examples, portions of memories 102 and 113 may be allocated as one or more point cloud buffers, for example, to store raw, decoded, or encoded point cloud data.

[0054] In some examples, source device 100 can output encoded data from output interface 104 to memory 113. Similarly, destination device 110 can access encoded data from memory 113 via input interface 111. Memory 113 or memory 102 can include any of a variety of distributed or locally accessed data storage media, such as hard drives, Blu-ray discs, digital versatile discs (DVDs), compact disc read-only memory (CD-ROMs), flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded point cloud data.

[0055] Output interface 104 may include any type of medium or device capable of transmitting encoded point cloud data from source device 100 to destination device 110. For example, output interface 104 may include a transmitter or transceiver, such as an antenna, configured to transmit encoded point cloud data directly from source device 100 to destination device 110 in real time. The encoded point cloud data may be modulated according to the communication standards of a wireless communication protocol and transmitted to destination device 110.

[0056] Communication medium 120 may include transient media, such as wireless broadcasting or wired network transmission. For example, communication medium 120 may include radio frequency (RF) spectrum or one or more physical transmission lines (e.g., cables). Communication medium 120 may form part of a packet-based network (such as a local area network, a wide area network, or a global network such as the Internet). Communication medium 120 may also take the form of a storage medium (e.g., a non-transitory storage medium), such as a hard disk, flash drive, compact disk, digital point cloud disk, Blu-ray disc, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded point cloud data.

[0057] In some implementations, the communication medium 120 may include a router, switch, base station, or any other device that can be used to facilitate communication from source device 100 to destination device 110. For example, a server (not shown) may receive encoded point cloud data from source device 100 and provide it to destination device 110, for example, via network transmission. The server may include (e.g., a web server for a website), a server configured to provide file transfer protocol services (such as File Transfer Protocol (FTP) or File Delivery Over Unidirectional Transport (FLUTE) protocol), a content delivery network (CDN) device, a Hypertext Transfer Protocol (HTTP) server, a Multimedia Broadcast Multicast Services (MBMS) or Evolved Multimedia Broadcast Multicast Service (eMBMS) server, or a Network-attached storage (NAS) device, etc. The server can implement one or more HTTP streaming protocols, such as MPEG Media Transport (MMT), Dynamic Adaptive Streaming over HTTP (DASH), HTTP Live Streaming (HLS), or Real Time Streaming Protocol (RTSP).

[0058] Destination device 110 can access encoded point cloud data from a server, for example, via a wireless channel (e.g., Wi-Fi connection) or a wired connection (e.g., Digital subscriber line (DSL), cable modem, etc.) for accessing encoded point cloud data stored on the server.

[0059] Output interface 104 and input interface 111 can represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component operating according to the IEEE 802.11 or IEEE 802.15 standard (e.g., ZigBee™), Bluetooth standard, or other physical components. In an example where output interface 104 and input interface 111 include wireless components, output interface 104 and input interface 111 can be configured to transmit data, such as encoded point cloud data, via Wi-Fi, Ethernet, or cellular networks (such as 4G, LTE (Long Term Evolution), Advanced LTE, 5G, 6G, etc.).

[0060] The technology provided in this application can be applied to support one or more of the following application scenarios: machine-perceived point clouds, which can be used in autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, disaster relief robots, and other scenarios; human-perceived point clouds, which can be used in point cloud application scenarios such as digital cultural heritage, free-viewpoint broadcasting, 3D immersive communication, and 3D immersive interaction.

[0061] The input interface 111 of the destination device 110 receives an encoded bitstream from the communication medium 120. The encoded bitstream may include high-level syntax elements and encoded data units (e.g., sequences, image groups, images, slices, blocks, etc.), where the high-level syntax elements are used to decode the encoded data units to obtain decoded point cloud data. The display device 114 displays the decoded point cloud data to the user. The display device 114 may include a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or other types of display devices. In some examples, the destination device 110 may not have a display device 114; for example, if the decoded point cloud data is used to determine the location of a physical object, the display device 114 may be replaced by a processor.

[0062] The point cloud encoder 200 and point cloud decoder 300 can be implemented as one or more of various processing circuits, which may include microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, or any combination thereof. When the technology is implemented in software in whole or in part, the device may store instructions for the software in a suitable non-transitory computer-readable storage medium and use one or more processors to execute the instructions in hardware to perform the technology provided in the embodiments of this application.

[0063] The basic principles of the point cloud encoder 200 and point cloud decoder 300 provided in this application embodiment are introduced below, taking the G-PCC and AVS-PCC encoding and decoding frameworks as examples.

[0064] The encoding and decoding frameworks of G-PCC and AVS-PCC are largely the same. Figure 2a shows the encoding flowchart executed by a point cloud encoder based on the AVS-PCC encoding framework, and Figure 2b shows the encoding flowchart executed by a point cloud encoder based on the MPEG G-PCC encoding framework. The point cloud encoder mentioned above can be the point cloud encoder 200 shown in Figure 1. The above encoding frameworks can generally be divided into geometric coordinate information encoding process and attribute information encoding process. In the geometric information encoding process, the geometric coordinate information of each point in the point cloud is encoded to obtain a geometric bitstream; in the attribute information encoding process, the attribute information of each point in the point cloud is encoded to obtain an attribute bitstream; the geometric bitstream and the attribute bitstream together constitute the compressed bitstream of the point cloud.

[0065] For the geometric information encoding process, the encoding flow executed by the point cloud encoder 200 is as follows:

[0066] 1. Pre-processing: This can include coordinate transformation and voxelization. Through scaling and translation operations, pre-processing converts the point cloud data in 3D space into integer form and moves its smallest geometric position to the origin. In some examples, the point cloud encoder 200 may not perform pre-processing.

[0067] 2. Geometric Coding: For the AVS-PCC coding framework, geometric coding includes two modes: octree-based geometric coding and prediction tree-based geometric coding. For the G-PCC coding framework, geometric coding includes three modes: octree-based geometric coding, triangle soup (trisoup)-based geometric coding, and prediction tree-based predictive coding. Among them:

[0068] Octree-based geometric encoding: An octree is a tree-like data structure that uniformly divides a predefined bounding box in three-dimensional space, with each node having eight child nodes. By using "1" and "0" to indicate whether each child node of the octree is occupied, occupancy code information is obtained as the bitstream of point cloud geometric information.

[0069] Geometric coding based on prediction trees: A prediction tree is generated using a prediction strategy. Starting from the root node of the prediction tree, each node is traversed, and the residual coordinate value corresponding to each traversed node is encoded.

[0070] Geometric encoding based on triangular patches: The point cloud is divided into blocks of a certain size, and the intersection points (called vertices) of the point cloud surface with the edges of the blocks are located. Geometric information is compressed by encoding whether there are intersection points on each edge of the block and the position of the intersection points.

[0071] 3. Geometric Entropy Encoding: This method uses statistical compression encoding on the occupancy code information of the octree, the prediction residual information of the prediction tree, and the vertex information of the triangular facets to output a binary (0 or 1) compressed bitstream. Statistical coding is a lossless coding method that can effectively reduce the bit rate required to represent the same signal. A commonly used statistical coding method is Content Adaptive Binary Arithmetic Coding (CABAC).

[0072] 4. Geometric Reconstruction: Decoding and reconstructing the geometric information after geometric encoding.

[0073] For the attribute information encoding process, the encoding flow executed by the point cloud encoder 200 is as follows:

[0074] 1. Color Transformation: Apply transformations to change the color information of an attribute to a different domain. For example, color information can be transformed from the RGB color space to the YCbCr color space.

[0075] 2. Attribute Recoloring: In lossy encoding, after encoding the geometric coordinate information, the encoding end needs to decode and reconstruct the geometric information, that is, restore the geometric information of each point in the point cloud. Attribute information corresponding to one or more neighboring points in the original point cloud is used as the attribute information for the reconstructed point.

[0076] In some examples, the point cloud encoder 200 may not perform color transformation or attribute recoloring.

[0077] 3. Attribute information processing: In AVS-PCC, attribute information processing can include three modes: prediction coding, transformation coding, and prediction & transformation coding. These three coding modes can be used under different conditions.

[0078] Predictive coding refers to determining the neighboring points of the point to be coded as prediction points among the already coded points based on information such as distance or spatial relationships. Based on set criteria, the predicted attribute information of the point to be coded is calculated according to the attribute information of the prediction points. The difference between the actual attribute information and the predicted attribute information of the point to be coded is calculated as attribute residual information. This attribute residual information is then quantized, transformed (optional), and entropy encoded.

[0079] Transform coding refers to using transformation methods such as Discrete Cosine Transform (DCT) and Haar Transform (Haar) to group and transform attribute information, quantize the transformation coefficients, obtain attribute reconstruction information through inverse quantization and inverse transformation, calculate the difference between the real attribute information and the attribute reconstruction information to obtain attribute residual information and quantize it, and then entropy-encode the quantized transformation coefficients and attribute residuals.

[0080] Predictive transform coding refers to using the attribute residual information obtained from prediction to perform transformation, and then quantizing and entropy coding the transform coefficients.

[0081] In MPEG G-PCC, attribute information processing can include three modes: Prediction Transform coding, Lifting Transform coding, and Region Adaptive Hierarchical Transform (RAHT) coding. These three coding modes can be used under different conditions.

[0082] Predictive transform coding refers to dividing the point cloud into multiple different levels of detail (LoD) based on distance-selected subsets of points, achieving a multi-quality, hierarchical point cloud representation from coarse to fine. Bottom-up prediction is possible between adjacent layers, where neighboring points in the coarse layer predict the attribute information of points introduced in the fine layer, obtaining the corresponding attribute residual information. The points at the lowest level are encoded as reference information.

[0083] Lift transform coding refers to introducing a weight update strategy for neighboring points on the basis of LoD neighboring layer prediction, and finally obtaining the predicted attribute information of each point and the corresponding attribute residual information.

[0084] Hierarchical region adaptive transform coding refers to the process of transforming attribute information into the transform domain, which is called the transform coefficient.

[0085] 4. Attribute Quantization: The fineness of quantization is usually determined by the quantization parameters. The transformation coefficients or attribute residuals obtained from attribute information processing are quantized, and the quantized results are entropy-coded. For example, in predictive transform coding and boost transform coding, entropy coding is performed on the quantized attribute residuals; in RAHT, entropy coding is performed on the quantized transform coefficients.

[0086] 5. Entropy Coding: The quantized attribute residuals and / or transform coefficients are generally compressed using run-length coding and arithmetic coding. The corresponding coding mode, quantization parameters, and other information are also encoded using an entropy point cloud encoder.

[0087] The point cloud encoder 200 encodes the geometric coordinate information of each point in the point cloud to obtain a geometric bitstream, and encodes the attribute information of each point in the point cloud to obtain an attribute bitstream. The point cloud encoder 200 can transmit the encoded geometric bitstream and attribute bitstream together to the point cloud decoder 300.

[0088] Figure 3a shows the decoding flowchart performed by the point cloud decoder based on the AVS-PCC decoding framework, and Figure 3b shows the decoding flowchart performed by the point cloud decoder based on the MPEG G-PCC decoding framework. The point cloud decoder can be the point cloud decoder 300 shown in Figure 1. After receiving the compressed bitstream (i.e., attribute bitstream and geometric bitstream) transmitted by the point cloud encoder 200, the point cloud decoder 300 decodes the geometric bitstream to reconstruct the geometric coordinate information of each point in the point cloud, and decodes the attribute bitstream to reconstruct the attribute information of each point in the point cloud.

[0089] The decoding process performed by the point cloud decoder 300 is as follows:

[0090] 1. Entropy Decoding: Perform entropy decoding on the geometric bitstream and attribute bitstream respectively to obtain geometric syntax elements and attribute syntax elements.

[0091] 2. Geometric Decoding: For the AVS-PCC coding framework, geometric decoding includes two modes: octree-based geometric decoding and prediction tree-based geometric decoding. For the G-PCC coding framework, geometric decoding includes three modes: octree-based geometric decoding, trisoup-based geometric decoding, and prediction tree-based prediction decoding.

[0092] Octree-based geometric decoding: reconstructing the octree based on the geometric syntax elements obtained from parsing the geometric bitstream.

[0093] Geometric Decoding Based on Prediction Trees: Reconstructing the prediction tree based on the geometric syntax elements obtained from parsing the geometric bitstream.

[0094] Geometric Decoding Based on Triangular Patches: Reconstructing Triangular Models Based on Geometric Syntax Elements Obtained from Geometric Bitstream Parsing.

[0095] 3. Geometric Reconstruction: Perform reconstruction to obtain the geometric coordinate information of the points in the point cloud.

[0096] 4. Inverse coordinate transformation: Perform an inverse transformation on the reconstructed geometric coordinate information to convert the reconstructed coordinates (positions) of points in the point cloud from the transformation domain back to the initial domain.

[0097] 5. Dequantization: Dequantizes attribute syntax elements.

[0098] 6. Attribute Information Processing: In AVS-PCC, attribute information processing determines the color information of points in the point cloud by predicting or predicting the transformation of the inverse-quantized prediction residual or prediction residual transformation coefficients, or by transforming the transformation coefficients of the inverse-quantized transformation.

[0099] In MPEG G-PCC, attribute information processing determines the color information of points in the point cloud by using RAHT to invert the attribute information, or by using LOD and inverse boosting to determine the color information of points in the point cloud.

[0100] 7. Inverse Color Transformation: Transforms color information from the YCbCr color space to the RGB color space. In some examples, the inverse color transformation operation may not be necessary.

[0101] This application relates to a geometric coding scheme based on Trisoup triangular facets.

[0102] In the Trisoup-based point cloud geometric information encoding framework, triangular facets are used to approximate the surface of the point cloud to simulate the shape of a 3D object with fewer parameters, thereby achieving efficient encoding of point cloud geometric information. The current status of standard techniques for Trisoup-based point cloud geometric information encoding is as follows:

[0103] 1. Determine the positions of vertices on the edges of a Trisoup node. For each edge of a Trisoup node, consider the original point cloud distribution within the four neighboring nodes sharing this edge. Determine if a vertex exists on this edge. If a vertex exists, quantize its relative distance to the starting point of this edge into 2 bits for encoding, transmission, and point cloud reconstruction. For example, referring to Trisoup node 40 shown in Figure 4, the node edge contains edge vertices A, B, and C.

[0104] 2. Construction of Triangular Facets. For each Trisoup node, the positions of the vertices on its 12 edges are obtained sequentially. Then, the centroid position is calculated, and subsequently, the face vertex positions are obtained. The edge vertices and face vertices are arranged in a certain order and combined with the centroid in pairs to construct triangular faces. For example, referring to Trisoup node 40 shown in Figure 4, triangular facet ABO is constructed from centroid O and edge vertices A and B, and triangular facet CDO is constructed from centroid O, edge vertex C, and face vertex D.

[0105] 3. Determining the face vertex. When the original point cloud plane passes through two adjacent nodes with centroid offset values, the centroids of the two nodes after offset are connected. The intersection point on the shared surface is the coordinate of the face vertex. Simultaneously, the existence of the face vertex also needs to be considered in relation to whether the reconstructed face at this shared surface is raised relative to the unreconstructed face after the face vertex is introduced (determined by vector product). If it is raised, the face vertex exists. After determining the existence of the face vertex, the encoder searches for the presence of the original point cloud within a certain range around the face vertex to determine whether the face vertex is enabled or disabled. The decoder obtains this flag information from the bitstream (enabled: 1, disabled: 0). For example, refer to the face vertex D shown in Trisoup node 40 in Figure 4.

[0106] 4. Ray Tracing Sampling. For each Trisoup node, the triangular facets constructed within each node are sampled from two of the x, y, and z axes (excluding the axis with the smallest projected area after deleting the triangular facets) to obtain the reconstructed point cloud.

[0107] As can be seen, the Trisoup-based encoding process can be understood as a process from "point" to "surface" and back to "point". The initial "point" refers to the original point cloud. The relationship between the original point cloud and the twelve edges of each Trisoup node is analyzed, and a vertex is determined at a suitable position on a suitable edge. This vertex represents the distribution of the surrounding original point cloud. Within each Trisoup node, a centroid (centroid O in Figure 4) is generated based on the edge vertices. By connecting vertices to the centroid, triangular faces can be constructed; this is the process from "point" to "surface". Then, using ray tracing sampling technology, points are sampled from the face, which are used as reconstructed points in the reconstructed point cloud; this is the process from "surface" back to "point".

[0108] As described above, each edge vertex represents the original point cloud distribution around it (including the current Trisoup node and its neighboring nodes). However, the processes of constructing a "face" from the vertex and converting the "face" to a "point" are performed independently within the current Trisoup node. Therefore, the point cloud reconstruction process provided by related technologies may lead to a large number of erroneous point cloud reconstructions, which adversely affects the point cloud quality and hinders the improvement of encoding and decoding performance.

[0109] To address the aforementioned problems in related technologies, this application provides a point cloud encoding method, comprising: determining the edge vertices of the current Trisoup node to obtain a first set of edge vertices; determining, based on the distribution information of the original point cloud within the current Trisoup node, whether there are any first-type edge vertices to be processed in the first set of edge vertices; if there are first-type edge vertices in the first set of edge vertices, processing the first-type edge vertices in the first set of edge vertices to obtain a second set of edge vertices; determining triangular facets based on the second set of edge vertices; and determining the reconstruction points of the reconstructed point cloud based on the triangular facets.

[0110] This application also provides a point cloud decoding method, including: parsing the bitstream, determining the edge vertices of the current Trisoup node, and obtaining a first set of edge vertices; parsing a first node flag, the first node flag indicating whether there are any first-type edge vertices to be processed in the first set of edge vertices; if it is determined that there are first-type edge vertices in the first set of edge vertices, then processing the first-type edge vertices in the first set of edge vertices to obtain a second set of edge vertices; determining triangular facets based on the second set of edge vertices; and determining the reconstruction points of the reconstructed point cloud based on the triangular facets.

[0111] In the point cloud encoding and decoding scheme provided in this application embodiment, after determining the first set of edge vertices of the current Trisoup node, it is first determined whether there is at least one edge vertex to be processed (denoted as the first type of edge vertex) in the first set of edge vertices. If so, it is processed, and then the triangular facets in the current Trisoup node are constructed based on the obtained second set of edge vertices. This application embodiment does not directly construct triangular facets based on the decoded first set of edge vertices, which can reduce erroneous point cloud reconstruction and improve encoding and decoding performance.

[0112] The point cloud decoding scheme of this application will be described in detail below through some embodiments. These embodiments can be combined with each other, and the same or similar concepts or processes may not be described again in some embodiments.

[0113] Figure 5 shows a flowchart of the point cloud decoding method P500 provided in an embodiment of this application. The executing entity of method P500 is a decoding device, which can be the point cloud decoder 300 shown in Figure 1. Referring to Figure 5, method P500 includes steps S510-S550.

[0114] In step S510, the bitstream is parsed to determine the edge vertices of the current Trisoup node, thus obtaining the first set of edge vertices.

[0115] For example, the point cloud decoder parses the bitstream to determine the neighbor information of each edge (which can be called a node edge) of the current Trisoup node. After determining the neighbor information of each edge, the point cloud decoder enters the substantive decoding stage, which includes, for example, S11, edge vertex existence flag decoding. The point cloud decoder uses the collected neighbor information to decode whether each edge vertex exists; entropy decoding algorithms (such as arithmetic decoding, Huffman decoding, etc.) decode the flag bit according to the probability model provided by the context to determine whether the edge vertex exists. S12, edge vertex position decoding. If the edge vertex existence flag is decoded as 1, it indicates that an edge vertex exists, and the point cloud decoder will further decode the quantized position of the vertex; specifically, the point cloud decoder also uses context information to optimize the decoding process and improve decoding efficiency and accuracy.

[0116] Understandably, the first set of edge vertices represents the distribution of the original point cloud around it (including the current Trisoup node and its related neighboring nodes), and is determined directly by parsing the bitstream.

[0117] Figure 6a shows a schematic diagram of the first set of edge vertices and the original point cloud distribution in a Trisoup node. Referring to the original point cloud distribution and edge vertex distribution within a Trisoup node shown in Figure 6a, it can be seen that within this Trisoup node, there is no original point cloud within a certain range around edge vertices V1 and V2. The reason for generating these edge vertices V1 and V2 is that neighboring nodes have original point clouds in the vicinity of these two points. For edge vertices such as V1 and V2, if the solution provided by the relevant technology is adopted, the triangular facets within this Trisoup node will be constructed based on the first set of edge vertices including V1 and V2, thereby generating the reconstructed points shown in Figure 6b. As shown in Figure 6b, a large number of reconstructed points are distributed near the positions of edge vertices V1 and V2, which is obviously quite different from the original point cloud (shown in Figure 6a).

[0118] As can be seen, some edge vertices in the first group may lead to incorrect reconstruction points. To avoid the phenomenon shown in Figure 6b, in this embodiment, after obtaining the first group of edge vertices of the current Trisoup node, it is first determined whether there are edge vertices to be processed (denoted as first-type edge vertices) in the first group of edge vertices.

[0119] Referring again to Figure 5, in step S520, it is determined whether there are any first-type edge vertices to be processed in the first group of edge vertices, wherein the original point cloud distribution within a preset range adjacent to the first-type edge vertices in the current Trisoup node satisfies the first preset condition.

[0120] In an exemplary embodiment, the first preset condition includes: the number of original point clouds distributed within the preset range is less than or equal to a preset threshold. For example, the distribution of original point clouds within a preset range adjacent to the first type of edge vertex within the current Trisoup node satisfies the first preset condition. That is, if the distribution of original point clouds in a certain area near an edge vertex within the current Trisoup node satisfies the first preset condition, then the edge vertex is likely generated based on the existence of original point clouds in the vicinity of its neighboring nodes. As mentioned above, if it is not processed and instead used directly to construct the triangular facets within the node, the quality of the reconstructed point cloud will be affected. In this embodiment, it is determined as an edge vertex to be processed, as shown by edge vertex V1 and edge vertex V2 in FIG6a.

[0121] In an exemplary embodiment, the value of the first node flag (NodeFlag) indicates whether there are any unprocessed first-type edge vertices within the current Trisoup node. For example, NodeFlag = 0 indicates that there are no unprocessed first-type edge vertices within the current Trisoup node; that is, the edge vertices determined by parsing the bitstream can accurately reflect the distribution of the original point cloud within the current Trisoup node, and there are no edge vertices V1 or V2 as shown in Figure 6a. Therefore, the aforementioned first-type edge vertex group can be used as the second-type edge vertex group for constructing triangular facets. For example, NodeFlag = 1 indicates that there are unprocessed first-type edge vertices within the current Trisoup node.

[0122] Referring again to Figure 5, in step S530, if it is determined that the first type of edge vertex exists in the first group of edge vertices, then the first type of edge vertex in the first group of edge vertices is processed to obtain the second group of edge vertices.

[0123] In an exemplary embodiment, if there are first-type edge vertices to be processed within the current Trisoup node, the first-type edge vertices need to be determined from the first group of edge vertices based on the original point cloud distribution within the current Trisoup node. Since the first-type edge vertices are edge vertices that cannot accurately reflect the original point cloud distribution within the current Trisoup node, the edge vertices to be processed can be filtered out efficiently based on the original point cloud distribution within the current node.

[0124] In some embodiments, the first type of edge vertices selected are deleted to avoid constructing triangular patches based on these edge vertices and reduce erroneous reconstruction points.

[0125] In some embodiments, the positions of the selected first-type edge vertices are corrected to make their positions closer to the distribution of the original point cloud, thereby improving the quality of the reconstructed point cloud through correction. For example, the positions of the first-type edge vertices can also be moved to the midpoint of their respective node edges, thus efficiently correcting the positions of the first-type edge vertices, which helps improve both the quality and efficiency of the reconstructed point cloud.

[0126] In an exemplary embodiment, suppose multiple first-type edge vertices are identified within the same Trisoup node. Specifically, the original point cloud distribution within a first range around edge vertex X1 within the current Trisoup node satisfies the first preset condition, and the original point cloud distribution within a second range around edge vertex X2 within the current Trisoup node also satisfies the first preset condition, wherein the first range is larger and the second range is smaller. One method for processing the aforementioned first-type edge vertices is to delete edge vertex X1 and correct the position of edge vertex X2. That is, for edge vertices whose original point cloud distribution within a larger range of the node satisfies the first preset condition, they are directly deleted from the first group of edge vertices; that is, when constructing the triangular facet within the current Trisoup node, the current edge vertex is no longer considered. For edge vertices whose original point cloud distribution within a smaller range of the node satisfies the first preset condition, their positions can be corrected. The corrected edge vertices can more accurately reflect the distribution of the original point cloud within the node, thus, when constructing the triangular facet within the current Trisoup node, the corrected edge vertices will be used. For example, for the cases of edge vertices X1 and X2 mentioned above, another way to process the first edge vertex is to either delete both or correct their positions. This application does not limit the processing method for the edge vertices described above.

[0127] Referring again to Figure 5, in step S540, a triangular facet is determined based on the second set of edge vertices; and in step S550, the reconstruction points of the reconstructed point cloud are determined based on the triangular facet.

[0128] In this embodiment, for the current Trisoup node, if a first-type edge vertex exists in the first group of edge vertices, the first-type edge vertex is processed to obtain the second group of edge vertices. If the first group of edge vertices is represented as [Z1, Z2, Z3, Z4, Z5], and edge vertex Z3 belongs to the first-type edge vertex, its position is corrected to obtain edge vertex Z3', then the second group of edge vertices is represented as [Z1, Z2, Z3', Z4, Z5]. If the aforementioned edge vertex Z3 belongs to the first-type edge vertex and is deleted, then the second group of edge vertices is represented as [Z1, Z2, Z4, Z5].

[0129] Furthermore, by constructing triangular patches based on the second set of edge vertices, compared to related technologies, the embodiments of this application can reduce the occurrence of erroneous reconstruction points and improve the quality of point cloud reconstruction. The implementation method for point cloud reconstruction based on the second set of edge vertices is shown in steps S21-S27.

[0130] In step S21, the bitstream is parsed to obtain the centroid drift value.

[0131] The point cloud encoder incorporates the centroid offset value into the bitstream. For example, the centroid offset value is determined as follows: the initial centroid value of the current Trisoup node can be determined based on the second set of edge vertices; the centroid drift value can be calculated based on a certain amount of original point cloud distributed around the initial centroid. Therefore, the point cloud decoder can determine the aforementioned centroid drift value by parsing the bitstream.

[0132] In step S22, the initial value of the centroid of the current Trisoup node is determined based on the second set of edge vertices.

[0133] For example, the initial value of the centroid can be determined based on the average coordinates of the second set of edge vertices along each axis.

[0134] In step S23, the position information of the centroid after offset within the current Trisoup node is determined based on the centroid drift value and the initial centroid value.

[0135] After inverse quantizing the centroid drift value, adding it to the initial centroid yields the coordinates of the offset centroid. This offset centroid more accurately reflects the true distribution center of the original point cloud. If the coordinates of the centroid drift value are (x1-x0, y1-y0, z1-z0) and the coordinates of the initial centroid value are (x0, y0, z0), then the position of the offset centroid within the current Trisoup node can be represented as (x1, y1, z1).

[0136] In step S24, the fourth node flag is parsed, whereby the fourth node flag is used to indicate whether the current Trisoup node has face vertices.

[0137] The point cloud encoder encodes the fourth node flag into the bitstream. For example, if the point cloud decoder parses the bitstream and determines that the fourth node flag is 1, it indicates that the current Trisoup node has face vertices; in this case, the point cloud decoder needs to further determine the face vertices of the current Trisoup node. If the point cloud decoder parses the bitstream and determines that the fourth node flag is 0, it indicates that the current Trisoup node does not have face vertices; in this case, the point cloud decoder does not need to further determine the face vertices of the current Trisoup node.

[0138] In step S25, if the fourth node flag indicates that the current Trisoup node has face vertices, the coordinate information of the face vertices of the current Trisoup node is determined based on the position information of the offset centroid within the current Trisoup node and the position information of the offset centroid within the adjacent nodes.

[0139] As mentioned before, when the original point cloud plane passes through two adjacent nodes with centroid offset values, the offset centroids of the two nodes are connected, and the intersection point on the shared surface is the vertex coordinate of the face.

[0140] In step S26, the triangular facets of the current Trisoup node are determined based on the second set of edge vertices, the face vertices of the current Trisoup node, and the position information of the offset centroid within the current Trisoup node.

[0141] For example, for the current Trisoup node, the edge vertices and face vertices in the second set of edge vertices are arranged in a certain order (such as connecting vertices in a preset order, or using a specific triangulation algorithm), and then combined pairwise with the offset centroids to construct the triangular facets within the current Trisoup node. For example, the validity of vertex connections can also be checked to ensure that all triangles formed are valid, while maintaining the continuity and smoothness of the surface as much as possible.

[0142] In step S27, the reconstruction point within the current Trisoup node is determined based on the triangular facet within the current Trisoup node.

[0143] The constructed triangular facets are used to guide the voxelization process of the point cloud. Voxelization involves dividing the 3D space into small cubic units (voxels), and within each voxel, determining whether to place one or more decoding points based on its relationship with the surrounding triangular facets. For each voxel, by analyzing its relationship with the various triangular facets in the triangular facet (e.g., using ray casting), it is determined whether the voxel's interior or surface should contain point cloud data points. This may include calculating the intersections of rays with triangular facets, considering factors such as the orientation of the triangular facets, to ensure that the generated point cloud faithfully reflects the surface morphology of the original data.

[0144] Ray tracing sampling is a technique used to generate reconstructed point clouds from constructed triangular patches. Its purpose is to further optimize or supplement the point cloud data through sampling, ensuring the quality of the reconstruction.

[0145] The specific implementation of ray tracing sampling includes: S31, Selecting the sampling axis direction. For each triangular facet within a Trisoup node, the sampling direction is first determined. Considering the projected area of ​​the triangular facet along the three orthogonal axes (x, y, z), the axis direction with the smallest projected area is removed. This is done because sampling along this axis direction may contribute less to capturing surface details. Therefore, actual sampling will be performed along the remaining two axis directions, which better reflect the features and contours of the triangular facet. S32, Ray tracing and sampling. Starting from the plane containing the triangular facet, a series of rays are generated along the selected two axis directions; the spacing of the rays can be adjusted as needed to balance reconstruction accuracy and computational cost. A denser ray spacing can provide higher reconstruction accuracy but will also increase the computational burden. For each ray, an intersection test is performed between the ray and the triangular facet; this is the core part of ray tracing, and methods such as ray casting algorithms or fast repulsion tests are typically used to efficiently determine the intersection point. Whenever a ray intersects with a triangular facet, the intersection point is recorded as a sampling point. These sampling points directly reflect the surface morphology of the triangular facet and are used to generate or enrich the reconstructed point cloud. S33, Determining reconstruction points. Collect all sampling points and organize them into a new point cloud dataset based on their positions in three-dimensional space; this dataset represents an approximation of the original point cloud after Trisoup encoding and triangular patch reconstruction.

[0146] As shown in the embodiment of Figure 5, the point cloud decoder parses the bitstream, first determining the edge vertices of the current Trisoup node to obtain a first set of edge vertices; then, determining whether there are any unprocessed first-type edge vertices in the first set of edge vertices, wherein the original point cloud distribution within a preset range adjacent to the first-type edge vertices in the current Trisoup node satisfies a first preset condition. If it is determined that the first-type edge vertices exist in the first set of edge vertices, then the first-type edge vertices in the first set of edge vertices are processed. The edge vertices after processing the first-type edge vertices in the first set of edge vertices are determined as the second set of edge vertices. Further, triangular facets are determined based on the second set of edge vertices, and the reconstruction points of the reconstructed point cloud are determined based on the triangular facets. It can be seen that in the solution provided by the embodiments of this application, after determining the first set of edge vertices, it is first determined whether there is at least one unprocessed edge vertex (denoted as a first-type edge vertex) in the first set of edge vertices. If it exists, it is processed, and then triangular facets within the current Trisoup node are constructed based on the obtained second set of edge vertices. The embodiments of this application do not directly construct triangular patches based on the first set of edge vertices obtained from decoding, thereby reducing erroneous point cloud reconstruction and improving encoding and decoding performance.

[0147] Figure 7 shows a flowchart of the point cloud decoding method P700 provided in an embodiment of this application. The executing entity of method P700 is a decoding device, which can be the point cloud decoder 300 shown in Figure 1. Referring to Figure 7, method P700 includes steps S710-S7110.

[0148] In step S710, the third node flag (Flag1) is parsed. The third node flag is a slice-level flag. Specifically, the third node flag indicates whether there is a Trisoup node containing the first type of edge vertex within the current slice.

[0149] For example, if the point cloud decoder determines that Flag1 has a value of 0, then step S7110 is executed: stop the decoding process of the current Trisoup node.

[0150] If the third node flag is the seventh value, execute S720: parse the second node flag, which indicates whether the second threshold comes from the first set of thresholds or the second set of thresholds. That is, if the point cloud decoder determines that Flag1 is 1, continue parsing the second node flag Flag2.

[0151] In some embodiments, the value of the second node flag Flag2 is related to the density of the original point cloud. For example, the density of the entire original point cloud is binarized, and the binarization result is used as the value of Flag2. Alternatively, after segmenting the entire original point cloud according to a certain rule, the density of the portion of the original point cloud containing the current Trisoup node is binarized, and the binarization result is used as the value of Flag2.

[0152] In some embodiments, the value of Flag2 can also be manually set according to the actual situation.

[0153] In an exemplary embodiment, when Flag2 is 0, it indicates that the second threshold used by the current Trisoup node comes from the first set of thresholds. When Flag2 is 1, it indicates that the second threshold used by the current Trisoup node comes from the second set of thresholds. Both the first set of thresholds and the second set of regions contain N second thresholds corresponding to N Trisoup nodes, and each second threshold in each set is related to the number of edge vertices in the corresponding Trisoup node (i.e., the number of vertices in the first set of edge vertices, denoted as P, and the second number). For example, the first set of edge vertex data corresponding to the i-th Trisoup node is represented as P. i And the second threshold corresponding to the i-th Trisoup node in the first set of thresholds is denoted as M. i The second threshold corresponding to the i-th Trisoup node in the second set of thresholds is denoted as M. i', then the second threshold is represented as M i The second threshold is denoted as M i 'All are related to P i Related. Furthermore, if Flag2 is determined based on the binarization result of the original point cloud's density, a value of 0 for Flag2 indicates that the original point cloud is relatively sparse; in this case, P... i The second threshold is M from the first set of thresholds. i If Flag2 is 1, it means the original point cloud is relatively dense, and in this case, P i The second threshold is M from the second set of thresholds. i In this case, a second threshold can be set as M. i A value less than the second threshold is represented as M. i '.

[0154] Referring to Figure 7, the point cloud decoder obtains the value of Flag2 through step S720, and then determines the second threshold corresponding to the current Trisoup node. Next, step S730 is executed: determining whether the current Trisoup node meets the third preset condition. The second threshold is used in the process of determining whether the current Trisoup node meets the third preset condition.

[0155] For example, the first node flag of the current Trisoup node is only parsed for Trisoup nodes that meet the third preset condition (i.e., step S740 is executed). Therefore, if the point cloud decoder determines that the current Trisoup node does not meet the third preset condition, it executes step S7110: stop the decoding process of the current Trisoup node.

[0156] The third preset condition mentioned above refers to at least one axis within the current Trisoup node satisfying the second preset condition. For the current axis in the current Trisoup node, if it is determined that it satisfies at least one of the following conditions, then the current axis is determined to satisfy the second preset condition.

[0157] (1) The second quantity P mentioned above is greater than the first threshold, wherein the first threshold can be a fixed value or a value that is positively correlated with the number of edge vertices in the current Trisoup node;

[0158] (2) The ratio of the first quantity (denoted as Q) and the second quantity P is greater than the second threshold mentioned above, wherein the second threshold is a value determined from the first set of thresholds or the second set of thresholds based on the value of Flag2.

[0159] (3) The current Trisoup node is a cube node, such as a Trisoup node that is not processed as a noncubic node.

[0160] Before introducing the first quantity Q, refer to Figure 8, which shows a schematic diagram of dividing a Trisoup node into multiple sub-regions perpendicular to the X-axis according to an embodiment of this application. In this embodiment, when the point cloud decoder determines that there are first-type edge vertices to be processed within the node, it will locate which edge vertices belong to the first type based on the distribution of the original point cloud within the node. To determine the distribution of the original point cloud within the node, the node can be divided into multiple sub-regions, and the first-type edge vertices can be located based on the distribution of the original point cloud within each sub-region. In addition, the number of edge vertices contained in the sub-region can be used to determine whether the axis meets the second preset condition.

[0161] Referring to Figure 8, a Trisoup node can be divided into multiple sub-regions by a plane Sx perpendicular to the X-axis. Taking two as an example, we obtain sub-regions Mx and Nx. In this embodiment, sub-regions Mx and Nx are denoted as the sub-regions corresponding to the X-axis (to distinguish them from other sub-regions in the text, they are denoted as the first sub-region). In this embodiment, the first quantity Q is defined as the number of edge vertices in any first sub-region corresponding to the current axis. For example, if the first quantity Q of edge vertices in the Trisoup node shown in Figure 8 is 100, the number of edge vertices distributed in sub-region Mx (the second quantity) is 30, and the number of edge vertices distributed in sub-region Nx (the second quantity P) is 70, and if the second threshold is 0.5, then since the ratio of the number of edge vertices distributed in region Nx (the second quantity P) of 70 to the first quantity of 100 is 0.7, that is, there exists an axis where the ratio of the second quantity to the first quantity is greater than the second threshold, the X-axis in the Trisoup node shown in Figure 8 satisfies the above-mentioned second preset condition.

[0162] In an exemplary embodiment, for the current Trisoup node, it is determined whether its three axes (X-axis, Y-axis, and Z-axis) satisfy the aforementioned second preset condition. If the current axis satisfies the preset condition, it can be marked as current axis eligible = 1; otherwise, current axis eligible = 0. Further, the current Trisoup node can be classified according to the judgment results. Specifically, it can be divided into the following categories:

[0163] If the eligible value for the X, Y, and Z axes is all 1, then the Trisoup node is considered a first-class node.

[0164] If the eligible value for the X and Y axes is 1, and the eligible value for the Z axis is 0, then the Trisoup node is considered a second-class node.

[0165] If the eligible value for the X and Z axes is 1, and the eligible value for the Y axis is 0, then the Trisoup node is considered a third-class node.

[0166] If the eligible value for the Y-axis and Z-axis is 1, and the eligible value for the X-axis is 0, then this Trisoup node is considered a fourth-class node.

[0167] If a node has exactly one axis with an eligible value of 1, and the other two axes have an eligible value of 0, then the node is considered a fifth-class node.

[0168] If the eligible value for the X, Y, and Z axes is 0, then the node is considered a sixth-class node; otherwise, the Trisoup node is considered a sixth-class node in all other cases.

[0169] For example, if the current Trisoup node belongs to the first to fifth categories of nodes mentioned above, the current node can be marked as eligible=1.

[0170] For example, if the current Trisoup node belongs to the first to fifth categories of nodes mentioned above, it means that the current Trisoup node meets the third preset condition. Next, it is necessary to decode the node-level flag, namely the first node flag (NodeFlag).

[0171] In step S740, the first node flag (NodeFlag) is parsed to indicate whether there are any first-class edge vertices to be processed in the current node.

[0172] For example, NodeFlag=0 indicates that there are no first-class edge vertices to be processed in the current Trisoup node, and the decoding process for the current Trisoup node is stopped.

[0173] If NodeFlag=1, it indicates that there are unprocessed first-type edge vertices within the current Trisoup node. In this case, it is necessary to further decode the axis flag of the current Trisoup node, and then infer the distribution of the original point cloud within the node based on the axis flag, so as to locate the first-type edge vertices.

[0174] For example, when NodeFlag=1, the point cloud decoder performs step S750: parses the bitstream to obtain the value of the axis flag.

[0175] The axial marker of the current axis in the current Trisoup node is used to indicate whether there is an original point cloud distribution in at least one of the at least two first sub-regions corresponding to the current axis. For example, the original point cloud distribution within the current Trisoup node can be determined based on the value of the parsed axial marker. Further, based on the original point cloud distribution within the current Trisoup node, the first type of edge vertices are determined from the first group of edge vertices.

[0176] For example, the aforementioned axis marker can be represented by a flag, Flag5. For example, the value of Flag5 can be represented by two bits. Specifically, if the current axis's axis marker Flag5 is the eighth value (e.g., 01), it indicates that the first node face contains edge vertices, and the original point cloud distribution within at least one first sub-region of the current Trisoup node satisfies the first preset condition. The first node face is contained within the at least one first sub-region and is perpendicular to the current axis, and the at least one first sub-region is close to the positive direction of the current axis. If the current axis's axis marker Flag5 is the ninth value (e.g., 10), it indicates that the first node face contains edge vertices, and the original point cloud distribution within at least one first sub-region of the current Trisoup node satisfies the first preset condition. The first node face is contained within the at least one first sub-region and is perpendicular to the current axis, and the at least one first sub-region is close to the negative direction of the current axis. If the current axis's axis marker Flag5 is the tenth value (e.g., 11), it indicates that all first sub-regions corresponding to the current axis have original point cloud distributions.

[0177] For example, the aforementioned axial marker can be represented by two markers, including a first axial marker and a second axial marker. The values ​​of the first and second axial markers can each be represented by one bit. If the first axial marker is determined to be a first value (e.g., 1), the second axial marker is then decoded, and the original point cloud distribution within the node is determined based on the values ​​of the two axial markers. Specifically, step S760 in Figure 7 illustrates an implementation method for determining the original point cloud distribution within the node based on the first and second axial markers. If the first axial marker is determined to be a value other than the first value (e.g., 0), then decoding the second axial marker is unnecessary, thereby saving bitstream and improving decoding efficiency.

[0178] The first axial marker, axiFlag, will be introduced below.

[0179] The first axial flag (aixFlag = 1) indicates that the first node face in the current Trisoup node contains edge vertices, and the original point cloud distribution within at least one first sub-region in the current Trisoup node satisfies the first preset condition. Here, the first node face is a node face perpendicular to the current axis, and the at least one first sub-region is a sub-region containing the first node face among all first sub-regions corresponding to the current axis. Referring to Figure 8, the first axial flag aixFlag = 1 on the X-axis indicates that there are edge vertices in the four node edges (L1, L2, L3, or L4) of the node face Nx-1 perpendicular to the X-axis, and that the sub-region Nx containing this node face does not contain an original point cloud distribution. In this case, within the Trisoup node, if there is no original point cloud within a certain region (such as Nx) around the edge vertices of the node face Nx-1, then these edge vertices contain first-type edge vertices.

[0180] It is understandable that if the current Trisoup node has at least one axis with axiFlag=1, it means that the current node has a first-class edge vertex, i.e., NodeFlag=1.

[0181] Referring again to Figure 8, as previously stated, when axiFlag = 1 for the X-axis, it indicates that an edge vertex exists within a node face perpendicular to the X-axis, but no original point cloud is distributed within the sub-region adjacent to that node face. Therefore, when axiFlag = 1 for the current axis, this embodiment further uses an axial second flag (flag01) to indicate that the original point cloud distribution within at least one first sub-region near the positive direction of the current axis satisfies the first preset condition, or that the original point cloud distribution within at least one first sub-region near the negative direction of the current axis satisfies the first preset condition. For example, if there is no original point cloud distribution within at least one first sub-region near the positive direction of the current axis, and the node face contained in the current sub-region contains an edge vertex, then the value of the axial second flag for the current axis is determined to be the fourth value; if there is no original point cloud distribution within at least one first sub-region near the negative direction of the current axis, and the node face contained in the current sub-region contains an edge vertex, then the value of the axial second flag for the current axis is determined to be the fifth value. Therefore, when the point cloud decoder decodes the first flag of the current axis as the first value (e.g., aixFlag=1), it needs to further decode the second flag of the current axis, flag01.

[0182] In cases where the axis marker includes a first axis marker and a second axis marker, to further conserve bitstream, this application provides the following embodiment for decoding the first axis marker and the second axis marker (axiFlag = 1). As previously described, the NodeFlag values ​​of the first to fifth types of nodes are 1, and three axes in the first type of nodes satisfy the aforementioned second preset condition, while two axes in the second to fourth types of nodes satisfy the aforementioned second preset condition. Therefore, for the first four types of nodes, M (positive integers greater than 1) axes satisfy the aforementioned second preset condition. The decoding method for these nodes includes steps S750-1 to S750-3.

[0183] In step S750-1, the axial markers corresponding to the first M-1 axes within the current Trisoup node are decoded.

[0184] For example, if the current Trisoup node belongs to the first type of node, it means that all three axes meet the second preset condition mentioned above. Then, the first axial flag of two of the axes (and the second axial flag flag01 of the current axis if axiFlag is 1) are decoded respectively. For example, if the decoding of the axial flags corresponding to the X and Y axes yields: axiFlag_X = 0; axiFlag_Y = 1, flag01_Y = 1.

[0185] Step S750-2: Perform an OR logic calculation on the first axial markers corresponding to the first M-1 axes.

[0186] As shown above, decoding a Trisoup node belonging to the first type of node yields: axiFlag_X = 0; axiFlag_Y = 1, flag01_Y = 1. Therefore, the corresponding first axial flag or logical calculation result for both axes is true. Conversely, if decoding a Trisoup node belonging to the first type of node yields: axiFlag_X = 0; axiFlag_Y = 0, then the corresponding first axial flag or logical calculation result for both axes is false.

[0187] Step S750-3: Determine whether to decode the first axial marker corresponding to the Mth axis based on the logical calculation result.

[0188] If the above logical calculation result is true, it means that it can be determined that there is at least one axis in the node face that has a first type of edge vertex. Therefore, the value of the first axial flag of the Mth axis cannot be directly determined. Therefore, it is necessary to decode the first axial flag corresponding to the Mth axis.

[0189] If the above logical calculation result is false, it means that it can be determined that there is a first-type edge vertex in the node face corresponding to one axis. Since the NodeFlag indicates that there is a first-type edge vertex in the current node, it can be directly determined that there is a first-type edge vertex in the node face perpendicular to the M-th axis. Therefore, the first flag value of the axis corresponding to the M-th axis can be directly determined to be the first value, without needing to decode the axiFlag corresponding to the M-th axis, thus saving bitstream. Further, since axiFlag corresponding to the M-th axis = 1, it is necessary to further decode the second flag value of the axis corresponding to the M-th axis.

[0190] For example, for the first type of node, the pseudocode for implementing steps S750-1 to S750-3 is as follows:

[0191] To save bitrate, this application also provides the following decoding embodiment. As mentioned above, the NodeFlag value of the fifth type of node is 1, and only one axis in the fifth type of node satisfies the above-mentioned second preset condition. The decoding method for the fifth type of node includes step S750-1'.

[0192] In step S750-1', for axes that meet the second preset condition, the first axial flag of that axis is determined to be a first value. This eliminates the need to decode the axiFlag corresponding to that axis, thus saving bitstream. Further, since the axiFlag corresponding to that axis is 1, the second axial flag value corresponding to that axis needs to be decoded further. An exemplary implementation of step S750-1' is shown in pseudocode below:

[0193] During entropy decoding, unnecessary decoding not only wastes storage space but may also reduce decoding speed. Especially for large amounts of data or continuous data streams, the layer-by-layer context-considering strategy provided in this application can avoid unnecessary decoding operations, which is beneficial for improving the bitstream compression rate and decoding efficiency.

[0194] The following section describes the context required for decoding the axis marker.

[0195] In an exemplary embodiment, before parsing the axial flag of the current axis, the context corresponding to the current axis is first determined. This context is used to perform entropy decoding on the axial flag of the current axis (e.g., Flag5, or the first axial flag (axiFlag) and the second axial flag (flag01, when axiFlag is 1)). Exemplarily, the context corresponding to the current axis includes at least one of the following information.

[0196] (1) First Context; The first context is used to indicate whether the ratio of the first quantity Q to the second quantity P is greater than the third threshold. The third threshold can reuse the second threshold determined according to Flag2. For example, the first context can be represented by one bit, such as "0" indicating that the ratio of the first quantity Q to the second quantity P is not greater than the third threshold, and "1" indicating that the ratio of the first quantity Q to the second quantity P is greater than the third threshold. The third threshold can be a percentage.

[0197] (2) Second Context; The second context is used to indicate whether the vertices of the first group of edges are all distributed within the same sub-region (denoted as the fourth sub-region); wherein, the aforementioned fourth sub-region belongs to the first sub-region corresponding to the other two axes besides the current axis. For example, taking the decoding of the axiFlag of the X-axis as an example, it determines whether the vertices of the first group of edges in the current Trisoup node are distributed within a certain first sub-region corresponding to the Y-axis and Z-axis. The second context can be represented by 1 bit.

[0198] (3) Third context; The third context is used to represent the distribution information of the original point cloud in the neighboring nodes of the current Trisoup node. That is, the determination of the third context takes into account the point cloud distribution in the coplanar neighboring nodes in the left, front and bottom directions of the current Trisoup node.

[0199] For example, the third context of the first flag axiFlag on the current axis is determined as follows: it is determined based on the distribution information of the original point cloud on the current axis among the first type of neighboring nodes, where the first type of neighboring nodes are those coplanar with the negative directions of the other two axes. Taking decoding the axiFlag on the X-axis as an example, consider the point cloud distribution of coplanar neighbors on the Y and Z axes along the X-axis. For example, the third context of axiFlag can be represented by 2 bits.

[0200] For example, the third context of the second flag (flag01) along the current axis is determined as follows: It is determined based on the distribution information of the original point cloud on the current axis among the second type of neighboring nodes, and the distribution information of the original point cloud on the current axis among the first type of neighboring nodes; wherein, the second type of neighboring nodes are those coplanar with the negative direction of the current axis. Taking decoding flag01 on the X-axis as an example, the point cloud distribution of the current node's coplanar neighboring nodes along the negative X-axis is considered, as well as the original point cloud distribution information of coplanar neighbors along the Y and Z axes along the X-axis. For example, the third context of flag01 can be represented by 2 bits.

[0201] In an exemplary embodiment, when the number of contexts corresponding to the current axis within the current Trisoup node is N, this application embodiment also provides the following displacement superposition to generate the comprehensive context of the current axis. That is, the context corresponding to the current Trisoup node is determined based on the following information:

[0202] Ctx=ctx1<<(numBit(ctx2)+numBit(ctx3)+…+numBit(ctxN))

[0203] +ctx2<<(numBit(ctx3)+…+numBit(ctxN))

[0204] +…

[0205] +ctxN

[0206] Where ctxi represents the i-th context in the context corresponding to the current axis, i takes the value 1, 2, ... N, and N takes the value of a positive integer.

[0207] This application embodiment constructs comprehensive context information through a shift-superposition method. By "superimposing" the binary contexts of the first, second, and third contexts of the current axis according to certain rules, a new, comprehensive context information Ctx is formed. Specifically, this "superposition" is achieved through shift operations to distinguish and integrate information. Thus, the context of each axis (ctx1 to ctxn) can be considered as a binary string.

[0208] For example, if N is 4, and ctx1 has 1 bit, ctx2 has 3 bits, ctx3 has 4 bits, and ctx4 has 2 bits, then ctx4 will be placed at the very beginning. ctx3 will be shifted left by the number of bits in ctx4 (2 bits), ctx2 will be shifted left by the sum of the numbers in ctx4 and ctx3 (2+4) = 6 bits, and ctx1 will be shifted left by the sum of the numbers in ctx4, ctx3, and ctx2 (2+4+3) = 9 bits. In this way, even if different context information has different lengths, it can be arranged in an ordered manner within the combined context binary string without overlap, which helps ensure decoding efficiency.

[0209] The displacement superposition context combination method provided in the above embodiments can effectively distinguish and efficiently utilize context information, ultimately helping the point cloud decoder make better decoding decisions and achieve higher compression efficiency.

[0210] After decoding each axis marker of the Trisoup node based on the above embodiment, step S760 is executed: the original point cloud distribution within the current Trisoup node is determined according to the values ​​of the first axis marker and the second axis marker obtained by parsing.

[0211] Figure 9 shows a schematic diagram of the Trisoup node after being divided based on the directions of the three axes according to an embodiment of this application. Referring to Figure 9, when each axis corresponds to two of the above-mentioned sub-regions, the current Trisoup node is divided into eight sub-blocks. The first sub-region corresponding to the X-axis includes: sub-regions near the negative direction of the X-axis [sub-block 0, sub-block 1, sub-block 3, sub-block 2], and sub-regions near the positive direction of the X-axis [sub-block 4, sub-block 5, sub-block 7, sub-block 6]. Similarly, the first sub-region corresponding to the Y-axis includes: sub-regions near the negative direction of the X-axis [sub-block 0, sub-block 1, sub-block 3, sub-block 2], and sub-regions near the positive direction of the X-axis [sub-block 4, sub-block 5, sub-block 7, sub-block 6]; the first sub-region corresponding to the Z-axis includes: sub-regions near the negative direction of the Z-axis [sub-block 1, sub-block 5, sub-block 3, sub-block 7], and sub-regions near the positive direction of the X-axis [sub-block 0, sub-block 4, sub-block 6, sub-block 2].

[0212] Furthermore, based on the values ​​of the first and second axial markers of the current axis, the original point cloud distribution markers within the first sub-region corresponding to the current axis are determined. Taking the X-axis as an example, if the point cloud decoder determines axiFlag_X = 1 and flag01_X = 1, then it can be determined that there is no original point cloud distribution in the first sub-region [sub-block 4, sub-block 5, sub-block 7, sub-block 6] near the positive direction of the X-axis; if the point cloud decoder determines axiFlag_X = 1 and flag_X01 = 0, then it can be determined that there is no original point cloud distribution in the first sub-region [sub-block 0, sub-block 1, sub-block 3, sub-block 2] near the negative direction of the X-axis. Similarly, based on the values ​​of the first and second axial markers of the Y-axis, the original point cloud distribution within the two first sub-regions corresponding to the Y-axis can be determined.

[0213] In step S770, based on the original point cloud distribution within the current Trisoup node, the first type of edge vertices are determined from the first group of edge vertices.

[0214] In an exemplary embodiment, as a specific implementation of step S770, step S770-1 is performed: for any edge vertex in the first group of edge vertices, the associated region is determined from the first sub-region corresponding to all axes of the current Trisoup node; and step S770-2 is performed: based on the original point cloud distribution markings of the associated region, the first type of edge vertex is determined from the first group of edge vertices.

[0215] In one implementation, to determine whether a vertex on the first edge belongs to the first type of edge vertex, step S770-1-1 can be executed: determining the first associated region of the first edge, the first associated region including: sub-regions containing the first edge in the first sub-regions corresponding to the two axes perpendicular to the first edge. For example, referring to FIG9, this application embodiment provides a specific implementation for determining whether edge vertex A belongs to the first type of edge vertex. Specifically, the first associated region of the edge vertex can be determined by executing S41 and S42. Further, based on the distribution information of the original point cloud within the first associated region, the determination result of whether edge vertex A belongs to the first type of edge vertex is obtained.

[0216] S41. First, determine the node edge L where vertex A is located. Each Trisoup node contains 12 node edges.

[0217] S42. Determine the first associated region of node edge L. Specifically, determine the two axes perpendicular to node edge L as the X-axis and Y-axis; further, determine the sub-regions containing node edge L in the first sub-regions corresponding to the X-axis and Y-axis respectively. Referring to Figure 9, the first associated sub-regions include: sub-regions near the positive direction of the X-axis [sub-block 4, sub-block 5, sub-block 7, sub-block 6], and sub-regions near the negative direction of the Y-axis [sub-block 0, sub-block 1, sub-block 5, sub-block 4].

[0218] Further, after determining the first associated region of the edge vertex, step S770-2-1 is executed: if the original point cloud distribution markers corresponding to the first associated region all indicate that the original point cloud distribution satisfies the first preset condition, then the edge vertex is determined to belong to the first type of edge vertex. For example, for the aforementioned edge vertex A, if the original point cloud distribution of its corresponding first associated sub-region (including: sub-regions near the positive X-axis direction [sub-block 4, sub-block 5, sub-block 7, sub-block 6], and sub-regions near the negative Y-axis direction [sub-block 0, sub-block 1, sub-block 5, sub-block 4]) all satisfy the first preset condition, then vertex A can be determined to belong to the first type of edge vertex. Since the original point cloud distribution within the first associated region of the edge vertex (including 8 sub-blocks, representing a relatively large area surrounding the edge vertex within the node) all satisfy the first preset condition, the edge vertex can be deleted.

[0219] In an exemplary embodiment, if the point cloud decoder determines that the execution result of step S770-2-1 is: the original point cloud distribution markers corresponding to the first associated region do not all meet the first preset condition, the edge vertex can be further determined to belong to the first type of edge vertex in the following way. For example, for the aforementioned edge vertex A, if there is no original point cloud distribution in the sub-region near the positive direction of the X-axis in the first associated sub-region, but there is an original point cloud distribution in at least one first sub-region near the negative direction of the Y-axis. Referring to Figure 9, it can be understood that original point clouds are distributed in sub-block 0 and / or sub-block 1. However, based on the distribution of the original point clouds in the first associated region, it is currently impossible to determine whether edge vertex A belongs to the first type of edge vertex. This application embodiment provides an implementation method for further determining whether edge vertex A is a first type of edge vertex, including steps S51-S52.

[0220] Step S51: Determine the second associated region of the node edge L where edge vertex A is located; wherein the second associated region includes two sub-regions in the first sub-region corresponding to the axis Z parallel to the node edge L where edge vertex A is located, including the second sub-region [sub-block 1, sub-block 3, sub-block 7, sub-block 5] and the third sub-region [sub-block 0, sub-block 2, sub-block 6, sub-block 4].

[0221] Step S52: Based on the analysis of the original point cloud distribution within the first associated region of edge vertex A, it can be determined that there is an original point cloud within the second sub-region and / or the third sub-region.

[0222] Case 1: If the original point cloud distribution of the second sub-region satisfies the first preset condition, and the original point cloud distribution marker of the third sub-region indicates the presence of an original point cloud distribution (in conjunction with the above, it can be determined that an original point cloud distribution exists in sub-block 0), and edge vertex A belongs to the second sub-region, it means that within a certain range near edge vertex A in the current Trisoup node (such as sub-blocks 1, 3, 7, 5, 4, and 6 near edge vertex A), the original point cloud distribution satisfies the first preset condition. However, if an original point cloud distribution exists within a larger range within the node (such as sub-block 0), then it is determined that this edge vertex also belongs to the first type of edge vertex. Since there is an original point cloud distribution within the first associated region of the edge vertex (including 8 sub-blocks), but the original point cloud distribution within the second associated region (smaller than the first associated region) satisfies the first preset condition, the position of this edge vertex can be corrected.

[0223] Scenario 2: If the second sub-region has an original point cloud distribution, and the original point cloud distribution in the third sub-region satisfies the first preset condition (in conjunction with the above, it can be determined that an original point cloud distribution exists in sub-block 1), and edge vertex A belongs to the second sub-region, it indicates that sub-blocks 5, 7, 4, and 6 near edge vertex A within the current Trisoup node do not have an original point cloud distribution, but there is an original point cloud distribution within a certain range (such as sub-block 1 near edge vertex A). Edge vertices belonging to this scenario can be processed as first-type edge vertices, or they can be left unprocessed. Whether to process them depends on the actual situation, and this application embodiment does not limit this.

[0224] Scenario 3: If both the second and third sub-regions have original point cloud distributions (based on the above, it can be determined that original point cloud distributions exist in sub-blocks 1 and 0), and edge vertex A belongs to the second sub-region, it indicates that sub-blocks 5, 7, 4, and 6 near edge vertex A within the current Trisoup node do not have original point cloud distributions, but have original point cloud distributions within a certain range (such as sub-blocks 1 and 0 near edge vertex A). Edge vertices belonging to this scenario can be processed as first-type edge vertices, or they can be left unprocessed. The decision to process them depends on the actual situation, and this application does not limit this.

[0225] In another implementation, to determine whether the edge vertex on the second edge belongs to the first type of edge vertex, step S770-1-2 can be directly executed: determine the second associated region of the second edge, the second associated region includes: two sub-regions in the first sub-region corresponding to the axis parallel to the second edge, including the second sub-region and the third sub-region; and execute step S770-2-2: if the original point cloud distribution marker of the second sub-region indicates that the original point cloud distribution satisfies the first preset condition, the original point cloud distribution marker of the third sub-region indicates that there is an original point cloud distribution, and the edge vertex belongs to the second sub-region, then the edge vertex is determined to be a first type of edge vertex.

[0226] For example, referring to FIG9, the specific implementation of this application embodiment for determining whether edge vertex B belongs to the first type of edge vertex may include the following steps.

[0227] Step S61: Determine the node edge L where vertex B is located.

[0228] Step S62: Determine the second associated region of node edge L, specifically the Z-axis parallel to node edge L. Further, the two first sub-regions corresponding to the Z-axis are the second associated sub-regions. Referring to Figure 9, the second associated sub-region includes: the sub-regions near the negative direction of the Z-axis (denoted as the second sub-region) [sub-block 0, sub-block 2, sub-block 6, sub-block 4], and the sub-regions near the positive direction of the Z-axis (denoted as the third sub-region) [sub-block 1, sub-block 3, sub-block 7, sub-block 5].

[0229] Step S63: If there is no original point cloud distribution in the second sub-region where the edge vertex is located, but there is an original point cloud distribution in the third sub-region, then edge vertex B can be determined to belong to the first type of edge vertex. Further, edge vertex B needs to be processed; for example, the position of this first type of edge vertex can be corrected.

[0230] Referring again to Figure 7, in step S780, the first type of edge vertices in the first group of edge vertices are processed to obtain the second group of edge vertices. As mentioned before, the determined first type of edge vertices can be deleted or their positions modified (e.g., moved to the midpoint of the edge where the edge vertex is located) depending on the actual situation.

[0231] In step S790, triangular facets are determined based on the second set of edge vertices; and reconstruction points of the reconstructed point cloud are determined based on the triangular facets. The specific implementation of step S790 can be found in the specific implementations of steps S540 and S550, and will not be repeated here.

[0232] As can be seen from the decoding embodiment provided in Figure 7, the geometric information decoded in the point cloud decoding process based on Trisoup provided in this application embodiment includes, in addition to the existence information of edge vertices, the position information of edge vertices, the offset value of the centroid, and the existence information of face vertices in some nodes (such as the fourth node flag), the following: a flag indicating whether there are unprocessed edge vertices in the current Trisoup node (such as the first node flag), various axial flags in the current Trisoup node (such as the axial flag Flag5, or the first axial flag, and if the first axial flag is 1, the second axial flag, and the flag indicating that the axial satisfies the second preset condition, etc.), a slice-level third node flag, and a second node flag indicating the selection of the second threshold. In this application embodiment, the point cloud decoder can realize the decoding process shown in Figure 7 according to the bitstream information by parsing the above geometric information, thereby reducing the occurrence of erroneous reconstruction points in the point cloud reconstruction process at the decoding end, improving the quality of the reconstructed point cloud, and improving the encoding and decoding performance.

[0233] The point cloud encoding scheme of this application will be described in detail below through some embodiments. These embodiments can be combined with each other, and the same or similar concepts or processes may not be described again in some embodiments.

[0234] Figure 10 shows a flowchart of the point cloud encoding method P1000 provided in an embodiment of this application. The executing entity of method P1000 is an encoding device, which can be the point cloud encoder 200 shown in Figure 1. Referring to Figure 10, method P1000 includes steps S1010-S1050.

[0235] In step S1010, the edge vertices of the current Trisoup node are determined to obtain the first set of edge vertices.

[0236] In the Trisoup encoding scheme, the specific implementation process for vertex processing and encoding within each Trisoup node in point cloud data may include the following steps.

[0237] Step S1010-1: For the current Trisoup node, determine the presence of edge vertices on each node's edge, and quantize the vertex positions if edge vertices exist.

[0238] At the start of Trisoup encoding, the point cloud data enclosed by each Trisoup node (representing a voxel or spatial region) is analyzed to identify the vertices on the edges connecting two adjacent nodes. These vertices may exist due to irregularities or details on the point cloud surface. For each edge, a "vertex presence flag" is assigned, which can be a binary value (typically 1 for vertex presence and 0 for absence), to distinguish between simple edges and edges with additional vertices. Furthermore, for edges marked with vertices, the specific position of that vertex relative to the edge's origin is recorded. This position is usually quantized, i.e., converted into discrete numerical values, to reduce the amount of information required for storage and transmission. The quantization process involves mapping the actual coordinates to a predefined precision range, which helps reduce data redundancy and encoding complexity.

[0239] Step S1010-2: Rearrange the non-repeating edges in lexicographical order.

[0240] The process begins with identifying non-repeating edges. Among multiple adjacent nodes, some edges are shared, meaning they belong to the boundary between the two nodes. To optimize encoding efficiency and avoid encoding the same edge information repeatedly, these repetitions need to be identified and eliminated. Next, all non-repeating edges are sorted lexicographically. This sorting method, based on the coordinates of the edge endpoints, ensures consistency and predictability in the encoding order. This increases the regularity of the encoding, which is beneficial for improving encoding efficiency in subsequent steps.

[0241] Step S1010-3: Use neighbor information to determine the vertex presence flag and the context of the vertex position. Following the encoding order determined in step S1010-2, use Dynamic OBUF to encode the vertex presence flag and quantized vertex position into a bitstream.

[0242] Specifically, before encoding vertex information, a context model is built using information from neighboring nodes to establish vertex presence flags and quantized positions. This context model helps the point cloud encoder better predict the current symbol (here, the vertex flag or position value), thus allowing for more efficient representation of this information using entropy coding (such as arithmetic coding or Huffman coding). Dynamically considering neighbor information can improve prediction accuracy and reduce the number of bits required for encoding. Regarding Dynamic OBUF encoding: OBUF (Order-Based Unary / Binary Encoding) is an order-based point cloud encoding method suitable for encoding data with obvious sequential characteristics. In Dynamic OBUF, the point cloud encoder dynamically adjusts its encoding strategy based on the actual order of data occurrence and contextual information. For vertex flags, Unary coding (for less frequent events, such as a vertex presence flag of 1) or Binary coding (for more frequent events, such as a vertex absence flag of 0) can be used. Quantized vertex positions may use a more complex entropy coding scheme based on their context. In this way, vertex flags and positions are efficiently converted into a continuous bitstream, ready for storage or transmission.

[0243] The above steps enable edge and vertex information processing in Trisoup encoding, which can efficiently represent complex geometric structures in point clouds while minimizing encoding redundancy.

[0244] In step S1020, based on the distribution information of the original point cloud within the current Trisoup node, it is determined whether there are any first-type edge vertices to be processed in the first group of edge vertices, wherein the distribution of the original point cloud within a preset range adjacent to the first-type edge vertices within the current Trisoup node satisfies a third preset condition.

[0245] In an exemplary embodiment, the third preset condition is that the number of original point clouds within a preset range adjacent to the first type of edge vertex within the current Trisoup node is less than or equal to a preset threshold, for example, there is no original point cloud distribution. That is, if the original point cloud distribution within a certain area near an edge vertex within the current Trisoup node satisfies the first preset condition, then that edge vertex is likely generated based on the existence of original point clouds in the vicinity of its neighboring nodes. If it is not processed and instead used directly to construct the triangular facets within that node, the quality of the reconstructed point cloud will be affected. In this embodiment, it is identified as an edge vertex to be processed, as shown by edge vertex V1 and edge vertex V2 in Figure 6a.

[0246] In an exemplary embodiment, the value of the first node flag (NodeFlag) indicates whether there are any unprocessed first-type edge vertices within the current Trisoup node. For example, NodeFlag = 0 indicates that there are no unprocessed first-type edge vertices within the current Trisoup node; that is, the edge vertices determined by parsing the bitstream can accurately reflect the distribution of the original point cloud within the current Trisoup node, and there are no edge vertices V1 or V2 as shown in Figure 6a. Therefore, the aforementioned first-type edge vertex group can be used as the second-type edge vertex group for constructing triangular facets. For example, NodeFlag = 1 indicates that there are unprocessed first-type edge vertices within the current Trisoup node. After determining the NodeFlag value corresponding to the current Trisoup node, the NodeFlag and its value are encoded into the bitstream for reference by the decoding end.

[0247] Referring again to Figure 10, in step S1030, if the first type of edge vertex exists in the first group of edge vertices, then the first type of edge vertex in the first group of edge vertices is processed to obtain the second group of edge vertices.

[0248] In an exemplary embodiment, if there are first-type edge vertices to be processed within the current Trisoup node, the first-type edge vertices need to be determined from the first group of edge vertices based on the original point cloud distribution within the current Trisoup node. Since the first-type edge vertices are edge vertices that cannot accurately reflect the original point cloud distribution within the current Trisoup node, the edge vertices to be processed can be filtered out efficiently based on the original point cloud distribution within the current node.

[0249] In some embodiments, the first type of edge vertices selected are deleted to avoid constructing triangular patches based on these edge vertices and reduce erroneous reconstruction points.

[0250] In some embodiments, the positions of the selected first-type edge vertices are corrected to make their positions closer to the distribution of the original point cloud, thereby improving the quality of the reconstructed point cloud through correction. For example, the positions of the first-type edge vertices can also be moved to the midpoint of their respective node edges, thus efficiently correcting the positions of the first-type edge vertices, which helps improve both the quality and efficiency of the reconstructed point cloud.

[0251] In an exemplary embodiment, suppose multiple first-type edge vertices are identified within the same Trisoup node. Specifically, the original point cloud distribution within a first range around edge vertex X1 within the current Trisoup node satisfies the first preset condition, and the original point cloud distribution within a second range around edge vertex X2 within the current Trisoup node satisfies the first preset condition, wherein the first range is larger and the second range is smaller. One method for processing the aforementioned first edge vertices is to delete edge vertex X1 and correct the position of edge vertex X2. That is, for edge vertices whose original point cloud distribution within a larger range within the node satisfies the first preset condition, they are directly deleted from the first group of edge vertices; that is, when constructing the triangular facet within the current Trisoup node, the current edge vertex is no longer considered. For edge vertices whose original point cloud distribution within a smaller range within the node satisfies the first preset condition, their positions can be corrected. The edge vertices with corrected positions can more accurately reflect the distribution of the original point cloud within the node, thus, when constructing the triangular facet within the current Trisoup node, the corrected edge vertices will be used. For example, for the cases of edge vertices X1 and X2 mentioned above, another way to process the first edge vertex is to either delete both or correct their positions. This application does not limit the processing method for the edge vertices described above.

[0252] Referring again to Figure 10, in step S1040, a triangular facet is determined based on the second set of edge vertices; and in step S1050, the reconstruction points of the reconstructed point cloud are determined based on the triangular facet.

[0253] In this embodiment, for the current Trisoup node, if a first-type edge vertex exists in the first group of edge vertices, the first-type edge vertex is processed to obtain the second group of edge vertices. If the first group of edge vertices is represented as [Z1, Z2, Z3, Z4, Z5], and edge vertex Z3 belongs to the first-type edge vertex, its position is corrected to obtain edge vertex Z3', then the second group of edge vertices is represented as [Z1, Z2, Z3', Z4, Z5]. If the aforementioned edge vertex Z3 belongs to the first-type edge vertex and is deleted, then the second group of edge vertices is represented as [Z1, Z2, Z4, Z5].

[0254] Furthermore, by constructing triangular patches based on the second set of edge vertices, compared to related technologies, the embodiments of this application can reduce the occurrence of erroneous reconstruction points and improve the quality of point cloud reconstruction. The implementation method for point cloud reconstruction based on the second set of edge vertices is shown in steps S81-S88.

[0255] In step S81, the initial value of the initial centroid of the current Trisoup node is determined based on the second set of edge vertices.

[0256] For example, the initial value of the centroid can be determined based on the average coordinates of the second set of edge vertices along each axis.

[0257] In step S82, based on the initial centroid value, the original point cloud distributed within a preset range near the initial centroid is obtained, and the centroid drift value is calculated based on the determined coordinates of the original point cloud.

[0258] For example, after calculating the initial centroid value, the next step is to consider the original point cloud data within a certain range around the initial centroid. This original point cloud data can be a part of the entire model or points of neighboring triangles. A new centroid is calculated based on the determined original point cloud. This centroid represents the center position of the local point cloud. Then, this newly calculated centroid is compared with the initial centroid calculated based on the edge vertices; the difference between the two is the so-called centroid drift value. For instance, if the initial centroid coordinates are (x0, y0, z0), and the centroid coordinates obtained from the original point cloud are (x1, y1, z1), then the centroid drift value can be determined as (x1-x0, y1-y0, z1-z0).

[0259] In step S83, the centroid drift value is quantized and written into the bitstream for reference by the point cloud decoder.

[0260] The centroid drift value is quantized before encoding, meaning it is mapped to a discrete value range. Quantization can be uniform or non-uniform, with the aim of reducing storage requirements while maintaining sufficient precision. The quantized drift value is then encoded and written into the bitstream. Encoding methods may include entropy coding techniques, such as Huffman coding or arithmetic coding, to further compress the data.

[0261] In step S84, the position information of the centroid after offset within the current Trisoup node is determined based on the centroid drift value and the initial centroid value.

[0262] For example, the reverse quantization drift value is summed with the initial centroid to obtain the offset centroid.

[0263] In step S85, the coordinate information of the face vertices of the current Trisoup node is determined based on the position information of the centroid after offset within the current Trisoup node and the position information of the centroid after offset within the adjacent nodes.

[0264] When the original point cloud plane passes through two adjacent nodes with centroid offset values, the offset centroids of the two nodes are connected, and the intersection point on the shared surface is the vertex coordinate of the face.

[0265] In step S86, the value of the fourth node flag is determined, wherein the fourth node flag is used to indicate whether the current Trisoup node has face vertices; and the fourth node flag and its value are written into the bitstream.

[0266] For example, a value of 1 for the fourth node flag indicates that the current Trisoup node has face vertices, while a value of 0 indicates that the current Trisoup node does not have face vertices. The point cloud encoder writes the fourth node flag and its value into the bitstream, so that the point cloud decoder can determine whether it is necessary to further determine the face vertices of the current Trisoup node based on the value of the fourth node flag.

[0267] In step S87, the triangular facets of the current Trisoup node are determined based on the second set of edge vertices, the face vertices of the current Trisoup node, and the position information of the offset centroid within the current Trisoup node.

[0268] For example, for the current Trisoup node, the edge vertices and face vertices in the second set of edge vertices are arranged in a certain order (such as connecting vertices in a preset order, or using a specific triangulation algorithm), and then combined pairwise with the offset centroids to construct the triangular facets within the current Trisoup node. For example, the validity of vertex connections can also be checked to ensure that all triangles formed are valid, while maintaining the continuity and smoothness of the surface as much as possible.

[0269] In step S88, the reconstruction point within the current Trisoup node is determined based on the triangular facet within the current Trisoup node.

[0270] The constructed triangular facets are used to guide the voxelization process of the point cloud. Voxelization involves dividing the 3D space into small cubic units (voxels), and within each voxel, determining whether to place one or more decoding points based on its relationship with the surrounding triangular facets. For each voxel, by analyzing its relationship with the various triangular facets in the triangular facet (e.g., using ray casting), it is determined whether the voxel's interior or surface should contain point cloud data points. This may include calculating the intersections of rays with triangular facets, considering factors such as the orientation of the triangular facets, to ensure that the generated point cloud faithfully reflects the surface morphology of the original data.

[0271] Ray tracing sampling is a technique used to generate reconstructed point clouds from constructed triangular patches. Its purpose is to further optimize or supplement the point cloud data through sampling, ensuring the quality of the reconstruction.

[0272] The specific implementation of ray tracing sampling includes: S31, Selecting the sampling axis direction. For each triangular facet within a Trisoup node, the sampling direction is first determined. Considering the projected area of ​​the triangular facet along the three orthogonal axes (x, y, z), the axis direction with the smallest projected area is removed. This is done because sampling along this axis direction may contribute less to capturing surface details. Therefore, actual sampling will be performed along the remaining two axis directions, which better reflect the features and contours of the triangular facet. S32, Ray tracing and sampling. Starting from the plane containing the triangular facet, a series of rays are generated along the selected two axis directions; the spacing of the rays can be adjusted as needed to balance reconstruction accuracy and computational cost. A denser ray spacing can provide higher reconstruction accuracy but will also increase the computational burden. For each ray, an intersection test is performed between the ray and the triangular facet; this is the core part of ray tracing, and methods such as ray casting algorithms or fast repulsion tests are typically used to efficiently determine the intersection point. Whenever a ray intersects with a triangular facet, the intersection point is recorded as a sampling point. These sampling points directly reflect the surface morphology of the triangular facet and are used to generate or enrich the reconstructed point cloud. S33, Determining reconstruction points. Collect all sampling points and organize them into a new point cloud dataset based on their positions in three-dimensional space; this dataset represents an approximation of the original point cloud after Trisoup encoding and triangular patch reconstruction.

[0273] As shown in the encoding embodiment in Figure 10, the point cloud encoder first determines the edge vertices of the current Trisoup node to obtain a first set of edge vertices. Then, based on the distribution information of the original point cloud within the current Trisoup node, it determines whether there is a first node flag indicating whether there is a first type of edge vertex to be processed in the first set of edge vertices. If it is determined that there is such a first type of edge vertex in the first set of edge vertices, then the first type of edge vertex in the first set of edge vertices is processed. The edge vertices after processing the first type of edge vertex in the first set of edge vertices are determined as the second set of edge vertices. Further, the point cloud encoder determines triangular patches based on the second set of edge vertices, and determines the reconstruction points of the reconstructed point cloud based on the triangular patches. It can be seen that in the scheme provided by this application embodiment, after determining the first set of edge vertices, it first determines whether there is at least one edge vertex to be processed (denoted as a first type of edge vertex) in the first set of edge vertices. If there is, it processes it, and then constructs the triangular patches within the current Trisoup node based on the obtained second set of edge vertices. This application embodiment does not directly construct triangular patches based on the first set of edge vertices obtained by encoding, thereby reducing erroneous reconstruction of the point cloud and improving encoding and decoding performance.

[0274] Figure 11 shows a flowchart of the point cloud encoding method P1100 provided in an embodiment of this application. The executing entity of method P1100 is an encoding device, which can be the point cloud encoder 200 shown in Figure 1. Referring to Figure 11, method P1100 includes steps S1110-S11110.

[0275] In step S1110, the third node flag (Flag1) is encoded. The third node flag is a slice-level flag. Specifically, the third node flag indicates whether there is a Trisoup node containing the first type of edge vertex within the current slice.

[0276] For example, if the point cloud encoder determines that Flag1 is 0, then step S11110 is executed: stop the encoding process of the current Trisoup node.

[0277] If the third node flag takes the seventh value, execute S1120: encode the second node flag, which indicates whether the second threshold comes from the first set of thresholds or the second set of thresholds. That is, if the point cloud encoder determines that Flag1 takes the value 1, continue encoding the second node flag Flag2.

[0278] In some embodiments, the value of the second node flag Flag2 is related to the density of the original point cloud. For example, the density of the entire original point cloud is binarized, and the binarization result is used as the value of Flag2. Alternatively, after segmenting the entire original point cloud according to a certain rule, the density of the portion of the original point cloud containing the current Trisoup node is binarized, and the binarization result is used as the value of Flag2.

[0279] In some embodiments, the value of Flag2 can also be manually set according to the actual situation.

[0280] In an exemplary embodiment, when Flag2 is 0, it indicates that the second threshold used by the current Trisoup node comes from the first set of thresholds. When Flag2 is 1, it indicates that the second threshold used by the current Trisoup node comes from the second set of thresholds. Both the first set of thresholds and the second set of regions contain N second thresholds corresponding to N Trisoup nodes, and each second threshold in each set is related to the number of edge vertices in the corresponding Trisoup node (i.e., the number of vertices in the first set of edge vertices, denoted as P, and the second number). For example, the first set of edge vertex data corresponding to the i-th Trisoup node is represented as P. i And the second threshold corresponding to the i-th Trisoup node in the first set of thresholds is denoted as M. i The second threshold corresponding to the i-th Trisoup node in the second set of thresholds is denoted as M. i', then the second threshold is represented as M i The second threshold is denoted as M i 'All are related to P i Related. Furthermore, if Flag2 is determined based on the binarization result of the original point cloud's density, a value of 0 for Flag2 indicates that the original point cloud is relatively sparse; in this case, P... i The second threshold is M from the first set of thresholds. i If Flag2 is 1, it means the original point cloud is relatively dense, and in this case, P i The second threshold is M from the second set of thresholds. i In this case, a second threshold can be set as M. i A value less than the second threshold is represented as M. i '.

[0281] Referring to Figure 11, the point cloud encoder determines the value of Flag2 in step S1120, and then determines the second threshold corresponding to the current Trisoup node based on the value of Flag2. Next, step S1130 is executed: determining whether the current Trisoup node meets the third preset condition. The second threshold is used in the process of determining whether the current Trisoup node meets the third preset condition.

[0282] For example, the first node flag of the current Trisoup node is encoded only for Trisoup nodes that meet the third preset condition (i.e., step S1140 is executed). Therefore, if the point cloud encoder determines that the current Trisoup node does not meet the third preset condition, step S11110 is executed: the encoding process for the current Trisoup node is stopped.

[0283] The third preset condition mentioned above refers to at least one axis within the current Trisoup node satisfying the second preset condition. For the current axis in the current Trisoup node, if it is determined that it satisfies at least one of the following conditions, then the current axis is determined to satisfy the second preset condition.

[0284] (1) The second quantity P mentioned above is greater than the first threshold, wherein the first threshold can be a fixed value or a value that is positively correlated with the number of edge vertices in the current Trisoup node;

[0285] (2) The ratio of the first quantity (denoted as Q) and the second quantity P is greater than the second threshold mentioned above, wherein the second threshold is a value determined from the first set of thresholds or the second set of thresholds based on the value of Flag2.

[0286] (3) The current Trisoup node is a cube node, such as a Trisoup node that is not processed as a noncubic node.

[0287] Before introducing the first quantity Q, refer to Figure 8, which shows a schematic diagram of dividing a Trisoup node into multiple sub-regions perpendicular to the X-axis according to an embodiment of this application. In this embodiment, when the point cloud encoder determines that there are first-type edge vertices to be processed within the node, it will locate which edge vertices belong to the first type based on the distribution of the original point cloud within the node. To determine the distribution of the original point cloud within the node, the node can be divided into multiple sub-regions, and then the first-type edge vertices can be located based on the distribution of the original point cloud within each sub-region. In addition, the number of edge vertices contained in the sub-region can be used to determine whether the axis meets the second preset condition.

[0288] Referring to Figure 8, a Trisoup node can be divided into multiple sub-regions by a plane Sx perpendicular to the X-axis. Taking two as an example, we obtain sub-regions Mx and Nx. In this embodiment, sub-regions Mx and Nx are denoted as the sub-regions corresponding to the X-axis (to distinguish them from other sub-regions in the text, they are denoted as the first sub-region). In this embodiment, the first quantity Q is defined as the number of edge vertices in any first sub-region corresponding to the current axis. For example, if the first quantity Q of edge vertices in the Trisoup node shown in Figure 8 is 100, the number of edge vertices distributed in sub-region Mx (the second quantity) is 30, and the number of edge vertices distributed in sub-region Nx (the second quantity) is 70, and if the second threshold is 0.5, then since the ratio of the number of edge vertices distributed in region Nx (the second quantity P) of 70 to the first quantity of 100 is 0.7, that is, there exists an axis where the ratio of the second quantity to the first quantity is greater than the second threshold, the X-axis in the Trisoup node shown in Figure 8 satisfies the above-mentioned second preset condition.

[0289] In an exemplary embodiment, for the current Trisoup node, it is determined whether its three axes (X-axis, Y-axis, and Z-axis) satisfy the aforementioned second preset condition. If the current axis satisfies the preset condition, it can be marked as current axis eligible = 1; otherwise, current axis eligible = 0. Further, the current Trisoup node can be classified according to the judgment results. Specifically, it can be divided into the following categories:

[0290] If the eligible value for the X, Y, and Z axes is all 1, then the Trisoup node is considered a first-class node.

[0291] If the eligible value for the X and Y axes is 1, and the eligible value for the Z axis is 0, then the Trisoup node is considered a second-class node.

[0292] If the eligible value for the X and Z axes is 1, and the eligible value for the Y axis is 0, then the Trisoup node is considered a third-class node.

[0293] If the eligible value for the Y-axis and Z-axis is 1, and the eligible value for the X-axis is 0, then this Trisoup node is considered a fourth-class node.

[0294] If a node has exactly one axis with an eligible value of 1, and the other two axes have an eligible value of 0, then the node is considered a fifth-class node.

[0295] If the eligible value for the X, Y, and Z axes is 0, then the node is considered a sixth-class node; otherwise, the Trisoup node is considered a sixth-class node in all other cases.

[0296] For example, if the current Trisoup node belongs to the first to fifth categories of nodes mentioned above, the current node can be marked as eligible=1.

[0297] For example, if the current Trisoup node belongs to the first to fifth categories of nodes mentioned above, it means that the current Trisoup node meets the third preset condition. Next, the node-level flag, namely the first node flag (NodeFlag), needs to be encoded.

[0298] In step S1140, a first node flag (NodeFlag) is encoded to indicate whether there are any first-class edge vertices to be processed in the current node.

[0299] For example, if the first node flag is a third value, such as NodeFlag=0, it indicates that there are no first-class edge vertices to be processed in the current Trisoup node, and the encoding process for the current Trisoup node is stopped.

[0300] If the first node flag is the second value, such as NodeFlag=1, it indicates that there are first-class edge vertices to be processed in the current Trisoup node. Then, the axis flag of the current Trisoup node needs to be further encoded, and the distribution of the original point cloud in the node can be inferred based on the axis flag to achieve the localization of the first-class edge vertices.

[0301] For example, when NodeFlag=1, the point cloud encoder performs step S1150: encoding the axial marker.

[0302] The axial marker of the current axis in the current Trisoup node indicates whether there is an original point cloud distribution in at least one of the at least two first sub-regions corresponding to the current axis. For example, the point cloud decoder can determine the original point cloud distribution within the current Trisoup node based on the parsed axial marker value. Further, the point cloud decoder can determine the first type of edge vertices in the first group of edge vertices based on the original point cloud distribution within the current Trisoup node.

[0303] For example, the aforementioned axis marker can be represented by a flag, Flag5. For example, the value of Flag5 can be represented by two bits. Specifically, if the current axis's axis marker Flag5 is the eighth value (e.g., 01), it indicates that the first node face contains edge vertices, and the original point cloud distribution within at least one first sub-region of the current Trisoup node satisfies the first preset condition; the first node face is contained within the at least one first sub-region and is perpendicular to the current axis; the at least one first sub-region is close to the positive direction of the current axis. If the current axis's axis marker Flag5 is the ninth value (e.g., 10), it indicates that the first node face contains edge vertices, and the original point cloud distribution within at least one first sub-region of the current Trisoup node satisfies the first preset condition; the first node face is contained within the at least one first sub-region and is perpendicular to the current axis; the at least one first sub-region is close to the negative direction of the current axis. If the current axis's axis marker Flag5 is the tenth value (e.g., 11), it indicates that all first sub-regions corresponding to the current axis have original point cloud distributions.

[0304] For example, the aforementioned axial marker can be represented by two markers, including a first axial marker and a second axial marker. The values ​​of the first and second axial markers can each be represented by one bit. If the first marker is determined to be a first value (e.g., 1), the second axial marker is then encoded. Specifically, step S1160 in Figure 11 illustrates an implementation method for determining the original point cloud distribution within a node based on the first and second axial markers. If the first axial marker is determined to be a value other than the first value (e.g., 0), then encoding the second axial marker is unnecessary, thereby saving bitstream and improving encoding efficiency.

[0305] The first axial marker, axiFlag, will be introduced below.

[0306] The first axial flag (aixFlag = 1) indicates that the first node face in the current Trisoup node contains edge vertices, and the original point cloud distribution within at least one first sub-region in the current Trisoup node satisfies the first preset condition. Here, the first node face is a node face perpendicular to the current axis, and the at least one first sub-region is a sub-region containing the first node face among all first sub-regions corresponding to the current axis. Referring to Figure 8, the first axial flag aixFlag = 1 on the X-axis indicates that there are edge vertices in the four node edges (L1, L2, L3, or L4) of the node face Nx-1 perpendicular to the X-axis, and that the sub-region Nx containing this node face does not contain an original point cloud distribution. In this case, within the Trisoup node, if there is no original point cloud within a certain region (such as Nx) around the edge vertices of the node face Nx-1, then these edge vertices contain first-type edge vertices.

[0307] It is understandable that if the current Trisoup node has at least one axis with axiFlag=1, it means that the current node has a first-class edge vertex, i.e., NodeFlag=1.

[0308] Referring again to Figure 8, as previously stated, when axiFlag = 1 for the X-axis, it indicates that an edge vertex exists within a node face perpendicular to the X-axis, but no original point cloud is distributed within the sub-region adjacent to that node face. Therefore, when axiFlag = 1 for the current axis, this embodiment further uses an axial second flag (flag01) to indicate that the original point cloud distribution within at least one first sub-region near the positive direction of the current axis satisfies the first preset condition, or that the original point cloud distribution within at least one first sub-region near the negative direction of the current axis satisfies the first preset condition. For example, if there is no original point cloud distribution within at least one first sub-region near the positive direction of the current axis, and the node face contained in the current sub-region contains an edge vertex, then the value of the axial second flag for the current axis is determined to be the fourth value; if there is no original point cloud distribution within at least one first sub-region near the negative direction of the current axis, and the node face contained in the current sub-region contains an edge vertex, then the value of the axial second flag for the current axis is determined to be the fifth value. Therefore, when the point cloud encoder determines that the first axial flag is the first value (e.g., aixFlag=1), it needs to further encode the second axial flag flag01 of the current axis.

[0309] In cases where the axial marker includes a first axial marker and a second axial marker, to further save bitstream, this application embodiment provides the following encoding embodiment using the first axial marker and the second axial marker (axiFlag = 1). As mentioned above, the NodeFlag value of the first to fifth types of nodes is 1, and three axes in the first type of nodes satisfy the aforementioned second preset condition, while two axes in the second to fourth types of nodes satisfy the aforementioned second preset condition. Therefore, for the first four types of nodes, there are M (positive integers greater than 1) axes that satisfy the aforementioned second preset condition. The encoding method for these nodes includes steps S1150-1 to S1150-3.

[0310] In step S1150-1, the axial markers corresponding to the first M-1 axes within the current Trisoup node are encoded.

[0311] For example, if the current Trisoup node belongs to the first type of node, it means that all three axes meet the second preset condition mentioned above. Then, the first axial flag of two of the axes (and the second axial flag flag01 of the current axis when axiFlag is 1) are encoded respectively. Suppose the axial flags corresponding to the X-axis and Y-axis are determined as follows: axiFlag_X = 0; axiFlag_Y = 1, flag01_Y = 1.

[0312] Step S1150-2: Perform an OR logic calculation on the first axial markers corresponding to the first M-1 axes.

[0313] As described above, for Trisoup nodes belonging to the first type of node, if axiFlag_X = 0, axiFlag_Y = 1, and flag01_Y = 1, then the first axial flag or logical calculation result corresponding to the two axes is true. Conversely, if for Trisoup nodes belonging to the first type of node, axiFlag_X = 0, and axiFlag_Y = 0, then the first axial flag or logical calculation result corresponding to the two axes is false.

[0314] Step S1150-3: Determine whether to encode the first axial marker corresponding to the Mth axis based on the logical calculation result.

[0315] If the above logical calculation result is true, it means that it can be determined that there is at least one axis in the node face that has a first type of edge vertex. Therefore, the value of the first axial flag of the Mth axis cannot be directly determined. Therefore, it is necessary to encode the first axial flag corresponding to the Mth axis.

[0316] If the above logical calculation result is false, it means that it can be determined that there is a first-type edge vertex in the node face corresponding to one axis. Since the NodeFlag indicates that there is a first-type edge vertex in the current node, it can be directly determined that there is a first-type edge vertex in the node face perpendicular to the M-th axis. Therefore, the first axial flag corresponding to the M-th axis can be directly determined to be the first value, without needing to encode the axiFlag corresponding to the M-th axis, thus saving bitstream. Further, since axiFlag corresponding to the M-th axis = 1, the second axial flag value corresponding to the M-th axis needs to be further encoded.

[0317] For example, for the first type of node, the pseudocode for implementing steps S1150-1 to S1150-3 is as follows:

[0318] To save bitrate, this application also provides the following encoding embodiment. As mentioned above, the NodeFlag value of the fifth type of node is 1, and only one axis in the fifth type of node satisfies the above-mentioned second preset condition. The encoding method for the fifth type of node includes step S1150-1'.

[0319] In step S1150-1', for axes that meet the second preset condition, the first axial flag of that axis is determined to be a first value. This eliminates the need to encode the axiFlag corresponding to that axis, thus saving bitstream. Further, since the axiFlag corresponding to that axis is 1, the value of the second axial flag corresponding to that axis needs to be further encoded. An exemplary implementation of step S750-1' is shown in pseudocode below:

[0320] In entropy coding, unnecessary encoding not only wastes storage space but may also reduce encoding speed. Especially for large amounts of data or continuous data streams, the layer-by-layer context-considering strategy provided in this application can avoid unnecessary encoding operations, which is beneficial for improving the bitstream compression rate and encoding efficiency.

[0321] The following section describes the context required for encoding axis markers.

[0322] In an exemplary embodiment, before encoding the first axial flag of the current axis, the context corresponding to the current axis is first determined. This context is used to entropy encode the current axis flag (e.g., Flag5, or the first axial flag (axiFlag) and the second axial flag (flag01, when axiFlag is 1)). Exemplarily, the context corresponding to the current axis includes at least one of the following information.

[0323] (1) First Context; The first context is used to indicate whether the ratio of the first quantity Q to the second quantity P is greater than the third threshold. The third threshold can reuse the second threshold determined according to Flag2. For example, the first context can be represented by one bit, such as "0" indicating that the ratio of the first quantity Q to the second quantity P is not greater than the third threshold, and "1" indicating that the ratio of the first quantity Q to the second quantity P is greater than the third threshold. The third threshold can be a percentage.

[0324] (2) Second Context; The second context is used to indicate whether the vertices of the first group of edges are all distributed within the same sub-region (denoted as the fourth sub-region); wherein, the aforementioned fourth sub-region belongs to the first sub-region corresponding to the other two axes besides the current axis. For example, taking the axiFlag encoding the X-axis as an example, it indicates whether the vertices of the first group of edges in the current Trisoup node are distributed within a certain first sub-region corresponding to the Y-axis and Z-axis. The second context can be represented by 1 bit.

[0325] (3) Third context; The third context is used to represent the distribution information of the original point cloud in the neighboring nodes of the current Trisoup node. That is, the determination of the third context takes into account the point cloud distribution in the coplanar neighboring nodes in the left, front and bottom directions of the current Trisoup node.

[0326] For example, the third context of the first flag axiFlag on the current axis is determined as follows: it is determined based on the distribution information of the original point cloud on the current axis among the first type of neighboring nodes, where the first type of neighboring nodes are those coplanar with the negative directions of the other two axes. Taking the encoding of axiFlag on the X-axis as an example, consider the point cloud distribution of coplanar neighbors on the Y and Z axes along the X-axis. For example, the third context of axiFlag can be represented by 2 bits.

[0327] For example, the third context of the second flag (flag01) along the current axis is determined as follows: It is determined based on the distribution information of the original point cloud on the current axis among the second type of neighboring nodes, and the distribution information of the original point cloud on the current axis among the first type of neighboring nodes; wherein, the second type of neighboring nodes are those coplanar with the negative direction of the current axis. Taking flag01 encoding the X-axis as an example, the point cloud distribution of the current node's coplanar neighboring nodes along the negative X-axis is considered, as well as the original point cloud distribution information of coplanar neighbors along the Y and Z axes along the X-axis. For example, the third context of flag01 can be represented by 2 bits.

[0328] In an exemplary embodiment, when the number of contexts corresponding to the current axis within the current Trisoup node is N, this application embodiment also provides the following displacement superposition to generate the comprehensive context of the current axis. That is, the context corresponding to the current Trisoup node is determined based on the following information:

[0329] Ctx=ctx1<<(numBit(ctx2)+numBit(ctx3)+…+numBit(ctxN))

[0330] +ctx2<<(numBit(ctx3)+…+numBit(ctxN))

[0331] +…

[0332] +ctxN

[0333] Where ctxi represents the i-th context in the context corresponding to the current axis, i takes the value 1, 2, ... N, and N takes the value of a positive integer.

[0334] This application embodiment constructs comprehensive context information through a shift-superposition method. By "superimposing" the binary contexts of the first, second, and third contexts of the current axis according to certain rules, a new, comprehensive context information Ctx is formed. Specifically, this "superposition" is achieved through shift operations to distinguish and integrate information. Thus, the context of each axis (ctx1 to ctxn) can be considered as a binary string.

[0335] For example, if N is 4, and ctx1 has 1 bit, ctx2 has 3 bits, ctx3 has 4 bits, and ctx4 has 2 bits, then ctx4 will be placed at the very beginning. ctx3 will be shifted left by the number of bits in ctx4 (2 bits), ctx2 will be shifted left by the sum of the numbers in ctx4 and ctx3 (2+4) = 6 bits, and ctx1 will be shifted left by the sum of the numbers in ctx4, ctx3, and ctx2 (2+4+3) = 9 bits. In this way, even if different context information has different lengths, it can be arranged in an ordered manner within the binary string of the combined context, without overlap, which helps ensure encoding efficiency.

[0336] The displacement superposition context combination method provided in the above embodiments can effectively distinguish and efficiently utilize context information, ultimately helping the point cloud encoder make better encoding decisions and achieve higher compression efficiency.

[0337] After encoding the axial markers of the Trisoup node based on the above embodiments, step S1160 is executed: the original point cloud distribution within the current Trisoup node is determined according to the values ​​of the first axial marker and the second axial marker.

[0338] Figure 9 shows a schematic diagram of the Trisoup node after being divided based on the directions of the three axes according to an embodiment of this application. Referring to Figure 9, when each axis corresponds to two of the above-mentioned sub-regions, the current Trisoup node is divided into eight sub-blocks. The first sub-region corresponding to the X-axis includes: sub-regions near the negative direction of the X-axis [sub-block 0, sub-block 1, sub-block 3, sub-block 2], and sub-regions near the positive direction of the X-axis [sub-block 4, sub-block 5, sub-block 7, sub-block 6]. Similarly, the first sub-region corresponding to the Y-axis includes: sub-regions near the negative direction of the X-axis [sub-block 0, sub-block 1, sub-block 3, sub-block 2], and sub-regions near the positive direction of the X-axis [sub-block 4, sub-block 5, sub-block 7, sub-block 6]; the first sub-region corresponding to the Z-axis includes: sub-regions near the negative direction of the Z-axis [sub-block 1, sub-block 5, sub-block 3, sub-block 7], and sub-regions near the positive direction of the X-axis [sub-block 0, sub-block 4, sub-block 6, sub-block 2].

[0339] Furthermore, based on the values ​​of the first and second axial markers of the current axis, the original point cloud distribution markers within the first sub-region corresponding to the current axis are determined. Taking the X-axis as an example, if the point cloud encoder determines axiFlag_X = 1 and flag01_X = 1, then it can be determined that there is no original point cloud distribution in the first sub-region [sub-block 4, sub-block 5, sub-block 7, sub-block 6] near the positive direction of the X-axis; if the point cloud encoder determines axiFlag_X = 1 and flag_X01 = 0, then it can be determined that there is no original point cloud distribution in the first sub-region [sub-block 0, sub-block 1, sub-block 3, sub-block 2] near the negative direction of the X-axis. Similarly, based on the values ​​of the first and second axial markers of the Y-axis, the original point cloud distribution within the two first sub-regions corresponding to the Y-axis can be determined.

[0340] In step S1170, based on the original point cloud distribution within the current Trisoup node, the first type of edge vertices are determined from the first group of edge vertices.

[0341] In an exemplary embodiment, as a specific implementation of step S1170, step S1170-1 is performed: for any edge vertex in the first group of edge vertices, the associated region is determined from the first sub-region corresponding to all axes of the current Trisoup node; and step S1170-2 is performed: based on the original point cloud distribution markings of the associated region, the first type of edge vertex is determined from the first group of edge vertices.

[0342] In one implementation, to determine whether a vertex on the first edge belongs to the first type of edge vertex, step S1170-1-1 can be executed: determining the first associated region of the first edge, the first associated region including: sub-regions containing the first edge in the first sub-regions corresponding to the two axes perpendicular to the first edge. For example, referring to FIG9, this application embodiment provides a specific implementation method for determining whether edge vertex A belongs to the first type of edge vertex. Specifically, the first associated region of the edge vertex can be determined by executing S41 and S42. Further, based on the distribution information of the original point cloud within the first associated region, the determination result of whether edge vertex A belongs to the first type of edge vertex is obtained.

[0343] S41. First, determine the node edge L where vertex A is located. Each Trisoup node contains 12 node edges.

[0344] S42. Determine the first associated region of node edge L. Specifically, determine the two axes perpendicular to node edge L as the X-axis and Y-axis; further, determine the sub-regions containing node edge L in the first sub-regions corresponding to the X-axis and Y-axis respectively. Referring to Figure 9, the first associated sub-regions include: sub-regions near the positive direction of the X-axis [sub-block 4, sub-block 5, sub-block 7, sub-block 6], and sub-regions near the negative direction of the Y-axis [sub-block 0, sub-block 1, sub-block 5, sub-block 4].

[0345] Further, after determining the first associated region of the edge vertex, step S1170-2-1 is executed: if the original point cloud distribution marker corresponding to the first associated region indicates that the original point cloud distribution satisfies the first preset condition, then the edge vertex is determined to belong to the first type of edge vertex. For example, for the aforementioned edge vertex A, if the original point cloud distribution of its corresponding first associated sub-region (including: sub-regions near the positive X-axis direction [sub-block 4, sub-block 5, sub-block 7, sub-block 6], and sub-regions near the negative Y-axis direction [sub-block 0, sub-block 1, sub-block 5, sub-block 4]) all satisfy the first preset condition, then vertex A can be determined to belong to the first type of edge vertex. Since the original point cloud distribution within the first associated region of the edge vertex (including 8 sub-blocks, representing a relatively large area surrounding the edge vertex within the node) all satisfy the first preset condition, the edge vertex can be deleted.

[0346] In an exemplary embodiment, if the point cloud encoder determines that the execution result of step S1170-2-1 is: the original point cloud distribution markers corresponding to the first associated region do not all satisfy the first preset condition, the edge vertex can be further determined to belong to the first type of edge vertex in the following way. For example, for the aforementioned edge vertex A, if the sub-region near the positive direction of the X-axis in its corresponding first associated sub-region has no original point cloud distribution, but at least one first sub-region near the negative direction of the Y-axis has an original point cloud distribution. Referring to Figure 9, it can be understood that original point clouds are distributed in sub-block 0 and / or sub-block 1. However, based on the distribution of the original point clouds in the first associated region, it is currently impossible to determine whether edge vertex A belongs to the first type of edge vertex. This application embodiment provides an implementation method for further determining whether edge vertex A is a first type of edge vertex, including steps S51-S52.

[0347] Step S51: Determine the second associated region of the node edge L where edge vertex A is located; wherein the second associated region includes two sub-regions in the first sub-region corresponding to the axis Z parallel to the node edge L where edge vertex A is located, including the second sub-region [sub-block 1, sub-block 3, sub-block 7, sub-block 5] and the third sub-region [sub-block 0, sub-block 2, sub-block 6, sub-block 4].

[0348] Step S52: Based on the analysis of the original point cloud distribution within the first associated region of edge vertex A, it can be determined that there is an original point cloud within the second sub-region and / or the third sub-region.

[0349] Case 1: If the original point cloud distribution of the second sub-region satisfies the first preset condition, and the original point cloud distribution marker of the third sub-region indicates the presence of an original point cloud distribution (in conjunction with the above, it can be determined that an original point cloud distribution exists in sub-block 0), and edge vertex A belongs to the second sub-region, it means that within a certain range near edge vertex A in the current Trisoup node (such as sub-blocks 1, 3, 7, 5, 4, and 6 near edge vertex A), the original point cloud distribution satisfies the first preset condition. However, if an original point cloud distribution exists within a larger range within the node (such as sub-block 0), then it is determined that this edge vertex also belongs to the first type of edge vertex. Since there is an original point cloud distribution within the first associated region of the edge vertex (including 8 sub-blocks), but the original point cloud distribution within the second associated region (smaller than the first associated region) satisfies the first preset condition, the position of this edge vertex can be corrected.

[0350] Scenario 2: If the second sub-region has an original point cloud distribution, and the original point cloud distribution in the third sub-region satisfies the first preset condition (in conjunction with the above, it can be determined that an original point cloud distribution exists in sub-block 1), and edge vertex A belongs to the second sub-region, it indicates that sub-blocks 5, 7, 4, and 6 near edge vertex A in the current Trisoup node do not have an original point cloud distribution, but there is an original point cloud distribution within a certain range (such as sub-block 1 near edge vertex A). Edge vertices belonging to this situation can be processed as first-type edge vertices, or they can be left unprocessed. Whether to process them depends on the actual situation, and this application embodiment does not limit this.

[0351] Scenario 3: If both the second and third sub-regions have original point cloud distributions (based on the above, it can be determined that original point cloud distributions exist in sub-blocks 1 and 0), and edge vertex A belongs to the second sub-region, it indicates that sub-blocks 5, 7, 4, and 6 near edge vertex A within the current Trisoup node do not have original point cloud distributions, but have original point cloud distributions within a certain range (such as sub-blocks 1 and 0 near edge vertex A). Edge vertices belonging to this scenario can be processed as first-type edge vertices, or they can be left unprocessed. The decision to process them depends on the actual situation, and this application does not limit this.

[0352] In another implementation, to determine whether the edge vertex on the second edge belongs to the first type of edge vertex, step S1170-1-2 can be directly executed: determine the second associated region of the second edge, the second associated region includes: two sub-regions in the first sub-region corresponding to the axis parallel to the second edge, including the second sub-region and the third sub-region; and execute step S1170-2-2: if the original point cloud distribution marker of the second sub-region indicates that the original point cloud distribution satisfies the first preset condition, the original point cloud distribution marker of the third sub-region indicates that there is an original point cloud distribution, and the edge vertex belongs to the second sub-region, then the edge vertex is determined to be a first type of edge vertex.

[0353] For example, referring to FIG9, the specific implementation of this application embodiment for determining whether edge vertex B belongs to the first type of edge vertex may include the following steps.

[0354] Step S61: Determine the node edge L where vertex B is located.

[0355] Step S62: Determine the second associated region of node edge L, specifically the Z-axis parallel to node edge L. Further, the two first sub-regions corresponding to the Z-axis are the second associated sub-regions. Referring to Figure 9, the second associated sub-region includes: the sub-regions near the negative direction of the Z-axis (denoted as the second sub-region) [sub-block 0, sub-block 2, sub-block 6, sub-block 4], and the sub-regions near the positive direction of the Z-axis (denoted as the third sub-region) [sub-block 1, sub-block 3, sub-block 7, sub-block 5].

[0356] Step S63: If there is no original point cloud distribution in the second sub-region where the edge vertex is located, but there is an original point cloud distribution in the third sub-region, then edge vertex B can be determined to belong to the first type of edge vertex. Further, edge vertex B needs to be processed; for example, the position of this first type of edge vertex can be corrected.

[0357] Referring again to Figure 11, in step S1180, the first type of edge vertices in the first group of edge vertices are processed to obtain the second group of edge vertices. As mentioned before, the determined first type of edge vertices can be deleted or their positions modified (e.g., moved to the midpoint of the edge where the edge vertex is located) according to the actual situation.

[0358] In step S1190, triangular facets are determined based on the second set of edge vertices; and reconstruction points of the reconstructed point cloud are determined based on the triangular facets. The specific implementation of step S1190 can be found in the specific implementations of steps S1040 and S1050, and will not be repeated here.

[0359] As can be seen from the encoding embodiment provided in Figure 11, the geometric information encoded in the point cloud encoding process based on Trisoup provided in this application embodiment includes, in addition to the existence information of edge vertices, the position information of edge vertices, the offset value of the centroid, and the existence information of face vertices in some nodes (such as the fourth node flag), the following: a flag indicating whether there are unprocessed edge vertices in the current Trisoup node (such as the first node flag), the relevant flags of each axis in the current Trisoup node (such as the axis flag Flag5, or the first axis flag, and if the first axis flag is 1, the second axis flag, and the flag indicating that the axis meets the second preset condition, etc.), the third node flag at the slice level, and the second node flag indicating the selection of the second threshold. In this application embodiment, the above geometric information is encoded into the bitstream so that the point cloud decoder can implement the encoding process shown in Figure 7 according to the bitstream information, thereby reducing the occurrence of erroneous reconstruction points in the point cloud reconstruction process at the encoding and decoding end, improving the quality of the reconstructed point cloud, and improving the encoding and decoding performance.

[0360] The following provides test results obtained from testing the encoding and decoding method provided in the embodiments of this application. Specifically, the following provides test results BD-Rate from two existing MPEG point cloud compression platforms. DeltaRate).

[0361] BD-Rate is used to measure the efficiency of the coding algorithm, specifically the bit rate savings achieved by the coding algorithm provided in this application compared to the reference algorithm while maintaining the same subjective or objective quality indicators. A decrease in BD-Rate indicates improved performance if the bit rate is reduced while maintaining the same peak signal-to-noise ratio (PSNR); conversely, an increase in the bit rate indicates decreased performance. In other words, the greater the decrease in BD-Rate, the better the point cloud compression effect.

[0362] Specifically, Table 1 shows the Geom-BD-rate test results provided by the point cloud compression platform TMC13.

[0363] Table 1

[0364] Table 2 shows the test results Total-BD-rate provided by the point cloud compression platform TMC13.

[0365] Table 2

[0366] Referring to Tables 1 and 2, condition C2 requires both geometric and attribute information to be encoded using lossy geometry and lossy attributes. End-to-End BD-AttrRate represents the BD-Rate of the attribute values ​​relative to the attribute bitstream. End-to-End BD-AttrRate refers to the BD-Rate of attribute information (such as color and texture) during end-to-end encoding and decoding. "All intra" refers to the encoding mode. In point cloud encoding, "all intra" means that each frame (or point cloud) is encoded independently, without the use of inter-frame prediction techniques.

[0367] In the evaluation and analysis of point cloud encoding, different average metrics (such as Solid average, Dense average, Sparse average, Scant average, Am-fused average, Am-frame spinning average, and Am-frame non-spinning average) are commonly used to measure performance under different types of point cloud data or different encoding configurations. Explanation of the above terms:

[0368] Solid refers to a voxelized point cloud with a continuous surface; Dense refers to a voxelized point cloud whose surface is not very continuous, but still has a high point density; Sparse refers to a sparse point cloud with uneven point distribution and low overall density; Scant refers to a very sparse point cloud with a more dispersed point distribution and even lower point density compared to Sparse. This test examines these different types of point clouds to obtain test results of the solution provided in the embodiments of this application under various scenarios.

[0369] D1: Represents the point-to-point error, determined by calculating the Euclidean distance between each point in the compressed point cloud and its nearest neighbor in the original point cloud. D1 can assess the positional difference between points in the compressed point cloud and their corresponding points in the original point cloud.

[0370] D2: Represents the point-to-plane error. It considers not only the distance between the midpoints of the compressed point cloud and the midpoints of the original point cloud, but also the distance between a point in the compressed point cloud and a plane formed by several points in the original point cloud. For each point b_i in the compressed point cloud, first find its nearest neighbor a_j in the original point cloud, and then determine a local plane containing a_j. This local plane can be constructed by calculating the normal directions of a_j and its surrounding neighboring points. Finally, the perpendicular distance from point b_i to this local plane is calculated as the point-to-plane error.

[0371] Table 3 shows the test results Geom-BD-rate provided by the point cloud compression platform Ges-TM.

[0372] Table 3

[0373] Table 4 shows the test results Total-BD-rate provided by the point cloud compression platform Ges-TM.

[0374] Table 4

[0375] Referring to Tables 3 and 4, Cat2-A average, Cat2-B average, and Cat2-C average represent the average test results of point cloud sequences for the three datasets in Cat2, respectively, while the overall average is the average test result of all sequences.

[0376] As can be seen from Tables 1 to 4, the point cloud encoding scheme provided by the embodiments of this application significantly improves the performance of geometric encoding. Furthermore, since the embodiments of this application can reduce erroneous reconstruction points, it also contributes to the improvement of attribute encoding performance.

[0377] The point cloud decoding method provided in this application can be executed by a point cloud decoder. As an example, the point cloud decoder can be an electronic device or a component within an electronic device, such as a chip or circuit. This application uses the execution of the point cloud decoding method by a point cloud decoder as an example to illustrate the point cloud decoder provided in this application.

[0378] Figure 12 shows a schematic diagram of the structure of the point cloud decoder 1200 provided in an embodiment of this application.

[0379] Referring to Figure 12, the point cloud decoder 1200 includes: a parsing unit 1210, a judgment unit 1220, a processing unit 1230, a first determination unit 1240, and a second determination unit 1250;

[0380] The parsing unit 1210 is used to parse the bitstream, determine the edge vertices of the current Trisoup node, and obtain a first set of edge vertices; the judging unit 1220 is also used to determine whether there are any first-type edge vertices to be processed in the first set of edge vertices, wherein the original point cloud distribution within a preset range adjacent to the first-type edge vertices in the current Trisoup node satisfies a first preset condition; the processing unit 1230 is used to process the first-type edge vertices in the first set of edge vertices if it is determined that there are first-type edge vertices in the first set of edge vertices, to obtain a second set of edge vertices; the first determining unit 1240 is used to determine triangular facets based on the second set of edge vertices; and the second determining unit 1250 is used to determine the reconstruction points of the reconstructed point cloud based on the triangular facets.

[0381] In an exemplary embodiment, based on the foregoing scheme, the processing unit 1230 is specifically used to: delete the first type of edge vertices, or correct the position of the first type of edge vertices.

[0382] In an exemplary embodiment, based on the foregoing scheme, the processing unit 1230 is specifically used to: move the position of the first type of edge vertex to the midpoint of the edge of its node.

[0383] In an exemplary embodiment, based on the foregoing scheme, the judgment unit is specifically used to: parse the first node flag, which is used to indicate whether there are any first-type edge vertices to be processed in the first group of edge vertices.

[0384] In an exemplary embodiment, based on the foregoing scheme, the first preset condition includes: the number of original point clouds distributed within the preset range is less than or equal to a preset threshold.

[0385] In an exemplary embodiment, based on the foregoing scheme, the point cloud decoder further includes: a third determining unit and a fourth determining unit; the unit 1210 is further configured to: if the determining unit 1220 determines that the first type of edge vertex exists in the first group of edge vertices, parse the axial marker of the current axis in the current Trisoup node, wherein the axial marker of the current axis is used to indicate whether there is an original point cloud distribution in at least one of the at least two first sub-regions corresponding to the current axis, wherein the at least two first sub-regions corresponding to the current axis are obtained by dividing the current Trisoup node in a direction perpendicular to the current axis;

[0386] The third determining unit is used to determine the original point cloud distribution within the current Trisoup node based on the value of the axial marker obtained from the analysis; the fourth determining unit is used to determine the first type of edge vertex in the first group of edge vertexes based on the original point cloud distribution within the current Trisoup node before the processing module processes the first type of edge vertex in the first group of edge vertexes.

[0387] In an exemplary embodiment, based on the aforementioned scheme, the axial marker of the current axis is set to the eighth value, indicating that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition, the first node face is contained in the at least one first sub-region and is perpendicular to the current axis, and the at least one first sub-region is close to the positive direction of the current axis; or, the axial marker of the current axis is set to the ninth value, indicating that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition, the first node face is contained in the at least one first sub-region and is perpendicular to the current axis, and the at least one first sub-region is close to the negative direction of the current axis; or, the axial marker of the current axis is set to the tenth value, indicating that there is an original point cloud distribution in all first sub-regions corresponding to the current axis.

[0388] In an exemplary embodiment, based on the foregoing scheme, the parsing unit 1210 is specifically used to: parse the first axial marker of the current Trisoup node; if the first axial marker of the current axis is a first value, then parse the second axial marker of the current axis, wherein the first axial marker being a first value indicates that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition, wherein the first node face is contained in the at least one first sub-region and is perpendicular to the current axis.

[0389] In an exemplary embodiment, based on the foregoing scheme, the third determining unit is specifically used to: determine the original point cloud distribution markers within the first sub-region corresponding to the current axis according to the values ​​of the first axial marker and the second axial marker of the current axis, wherein the first sub-region corresponding to the current axis is at least two sub-regions obtained by dividing the current Trisoup node in a direction perpendicular to the current axis;

[0390] The fourth determining unit includes: a first subunit and a second subunit;

[0391] The first subunit is used to determine the associated region from the first sub-region corresponding to all axes of the current Trisoup node for any edge vertex in the first group of edge vertices; the second subunit is used to determine the first type of edge vertex in the first group of edge vertices according to the original point cloud distribution marking of the associated region.

[0392] In an exemplary embodiment, based on the aforementioned scheme, the first sub-unit is specifically used to: determine the first associated region of the first side, wherein the first side is the node edge where the edge vertex in the first group of edge vertices is located, and the first associated region includes: the first sub-regions corresponding to the two axes perpendicular to the first side respectively contain the first side.

[0393] The second subunit is specifically used to: determine the edge vertex as the first type of edge vertex when the original point cloud distribution markers corresponding to the first associated region all represent the original point cloud distribution satisfying the first preset condition;

[0394] The processing unit 1230 is specifically used to: delete the first type of edge vertices from the first group of edge vertices.

[0395] In an exemplary embodiment, based on the aforementioned scheme, the first sub-unit is specifically used to: determine the second associated region of the second side, the second side being the node edge where the edge vertex in the first group of edge vertices is located, and the second associated region includes: two sub-regions in the first sub-region corresponding to the axis parallel to the second side, including the second sub-region and the third sub-region;

[0396] The second sub-unit is specifically used for: if the original point cloud distribution marker of the second sub-region indicates that the original point cloud distribution satisfies the first preset condition, the original point cloud distribution marker of the third sub-region indicates that there is an original point cloud distribution, and the edge vertex belongs to the second sub-region, then the edge vertex is determined to be a first type of edge vertex;

[0397] The processing unit 1230 is specifically used to: correct the position of the first type of edge vertex.

[0398] In an exemplary embodiment, based on the foregoing scheme, the point cloud decoder 1200 further includes: a fifth determining unit;

[0399] The fifth determining unit is configured to determine the context corresponding to the current axis before parsing the axis marker of the current Trisoup node. The context is used to perform entropy decoding on the axis marker of the current axis. The context includes at least one of the following information:

[0400] The first context is used to indicate whether the ratio of the first quantity to the second quantity is greater than the third threshold, wherein the first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, the second quantity is the number of edge vertices in the first group of edge vertices, and the first sub-region is at least two sub-regions obtained by dividing the current Trisoup node in a direction perpendicular to the current axis.

[0401] The second context is used to indicate whether the first group of edge vertices are all distributed in the same fourth sub-region, wherein the fourth sub-region belongs to the first sub-region corresponding to the other two axes besides the current axis;

[0402] The third context is used to represent the distribution information of the original point cloud among the neighboring nodes of the current Trisoup node.

[0403] In an exemplary embodiment, based on the foregoing scheme, the fifth determining unit is specifically configured to: when the context corresponding to the current axis is the third context, determine the third context of the first axial marker of the current axis based on the distribution information of the original point cloud within the first type of neighboring nodes on the current axis, wherein the first type of neighboring nodes are neighboring nodes that are coplanar with the negative directions of the other two axes; determine the third context of the second axial marker of the current axis based on the distribution information of the original point cloud within the second type of neighboring nodes on the current axis, and the distribution information of the original point cloud within the first type of neighboring nodes on the current axis, wherein the second type of neighboring nodes are neighboring nodes that are coplanar with the negative direction of the current axis.

[0404] In an exemplary embodiment, based on the foregoing scheme, the fifth determining unit is further configured to: determine the synthesis context corresponding to the current axis based on the following information when the number of contexts corresponding to the current axis within the current Trisoup node is N:

[0405] Ctx=ctx1<<(numBit(ctx2)+numBit(ctx3)+…+numBit(ctxN))

[0406] +ctx2<<(numBit(ctx3)+…+numBit(ctxN))

[0407] +…

[0408] +ctxN

[0409] Where ctxi represents the i-th context in the context corresponding to the current axis, i takes the value 1, 2, ... N, and N takes the value of a positive integer.

[0410] In an exemplary embodiment, based on the foregoing scheme, the parsing unit 1210 is further configured to: parse the bitstream to obtain the centroid drift value;

[0411] The first determining unit 1240 is specifically used for: determining the initial value of the centroid of the current Trisoup node based on the second set of edge vertices; and determining the position information of the centroid after offset within the current Trisoup node based on the centroid drift value and the initial value of the centroid.

[0412] The parsing unit 1210 is further configured to: parse the fourth node flag, wherein the fourth node flag is used to indicate whether the current Trisoup node has face vertices;

[0413] The first determining unit 1240 is specifically used for: if the fourth node flag indicates that the current Trisoup node has face vertices, determining the coordinate information of the face vertices of the current Trisoup node based on the position information of the offset centroid within the current Trisoup node and the position information of the offset centroid within adjacent nodes; and determining the triangular facets of the current Trisoup node based on the position information of the second set of edge vertices, the face vertices of the current Trisoup node, and the position information of the offset centroid within the current Trisoup node.

[0414] In an exemplary embodiment, based on the foregoing scheme, the point cloud decoder 1200 further includes: a sixth determining unit, configured to: before the parsing unit 1210 parses the first node flag, determine whether the current axis in the current Trisoup node satisfies a second preset condition, wherein if the current axis satisfies at least one of the following information, then the current axis satisfies the second preset condition: a second quantity is greater than a first threshold, the ratio of the first quantity to the second quantity is greater than the second threshold, and the current Trisoup node is a cube node, wherein the first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, and the second quantity is the number of edge vertices in the first group of edge vertices;

[0415] Specifically, for a Trisoup node that satisfies the third preset condition, the first node flag of the current Trisoup node is parsed; wherein, the third preset condition is that at least one axis within the Trisoup node satisfies the second preset condition.

[0416] In an exemplary embodiment, based on the foregoing scheme, the parsing unit 1210 is further configured to: parse a second node flag before determining whether the current axis meets the second preset condition, wherein the second node flag is used to indicate that the second threshold comes from a first set of thresholds or a second set of thresholds, wherein both the first set of thresholds and the second set of thresholds contain second thresholds corresponding to multiple Trisoup nodes respectively.

[0417] In an exemplary embodiment, based on the foregoing scheme, the second thresholds in the first set of thresholds and the second set of thresholds, respectively, which correspond to the current Trisoup node, are related to the first number of the current Trisoup nodes.

[0418] In an exemplary embodiment, based on the aforementioned scheme, the value of the second node flag is related to the density of the original point cloud, or the value of the second node flag is a set value.

[0419] In an exemplary embodiment, based on the foregoing scheme, the parsing unit 1210 is further configured to: decode the first axial marker and / or the second axial marker corresponding to the first M-1 axes in the current Trisoup node when the current Trisoup node contains M axes satisfying the second preset condition, wherein M is an integer greater than 1; perform an OR logic calculation on the first axial marker corresponding to the first M-1 axes; and determine whether to decode the first axial marker corresponding to the Mth axis based on the logic calculation result.

[0420] If the logical calculation result is true, the first axial marker corresponding to the Mth axis is decoded; if the logical calculation result is false, the first axial marker corresponding to the Mth axis is determined to be a first value, and the second axial marker corresponding to the Mth axis is decoded.

[0421] In an exemplary embodiment, based on the foregoing scheme, the parsing unit 1210 is further configured to: when the current Trisoup node contains an axis that satisfies the second preset condition, for the axis that satisfies the second preset condition, determine the first axial marker of the axis as a first value, and decode the second axial marker value corresponding to the axis.

[0422] In an exemplary embodiment, based on the foregoing scheme, the parsing unit 1210 is further configured to: parse a third node flag before parsing the first node flag or parsing the second node flag, wherein the third node flag is a slice-level flag used to indicate whether there is a Trisoup node containing the first type of edge vertex in the current slice; wherein, if the value of the third node flag is determined to be the seventh value, the first node flag or the second node flag is parsed.

[0423] In this embodiment, the parsing unit of the point cloud decoder parses the bitstream, first determining the edge vertices of the current Trisoup node to obtain a first set of edge vertices; then, determining whether there are any unprocessed first-type edge vertices in the first set of edge vertices, wherein the original point cloud distribution within a preset range adjacent to the first-type edge vertices in the current Trisoup node satisfies a first preset condition. If it is determined that the first-type edge vertices exist in the first set of edge vertices, the processing unit processes the first-type edge vertices in the first set of edge vertices. The edge vertices after processing the first-type edge vertices in the first set of edge vertices are determined as the second set of edge vertices. Further, the first determining unit determines triangular facets based on the second set of edge vertices, and the second determining unit determines the reconstruction points of the reconstructed point cloud based on the triangular facets. It can be seen that in the solution provided by this embodiment, after determining the first set of edge vertices, it first determines whether there is at least one unprocessed edge vertex (denoted as a first-type edge vertex) in the first set of edge vertices. If it exists, it processes it, and then constructs triangular facets within the current Trisoup node based on the obtained second set of edge vertices. The embodiments of this application do not directly construct triangular patches based on the first set of edge vertices obtained from decoding, thereby reducing erroneous point cloud reconstruction and improving encoding and decoding performance.

[0424] The point cloud decoder provided in this application embodiment can implement all the processes implemented in the point cloud decoding method embodiments of Figures 5 to 9 and achieve the same technical effect. To avoid repetition, it will not be described again here.

[0425] The point cloud encoding method provided in this application can be executed by a point cloud encoder. As an example, the point cloud encoder can be an electronic device or a component within an electronic device, such as a chip or circuit. This application uses a point cloud encoder executing the point cloud encoding method as an example to illustrate the point cloud encoder provided in this application.

[0426] Figure 13 shows a schematic diagram of the structure of the point cloud encoder 1300 provided in an embodiment of this application.

[0427] Referring to Figure 13, the point cloud encoder 1300 includes: a first determining unit 1310, a second determining unit 1320, a processing unit 1330, a third determining unit 1340, and a fourth determining unit 1350;

[0428] The system comprises: a first determining unit 1310, used to determine the edge vertices of the current Trisoup node to obtain a first set of edge vertices; a second determining unit 1320, used to determine whether there are any first-type edge vertices to be processed in the first set of edge vertices based on the distribution information of the original point cloud within the current Trisoup node, wherein the distribution of the original point cloud within a preset range adjacent to the first-type edge vertices in the current Trisoup node satisfies a first preset condition; a processing unit 1330, used to process the first-type edge vertices in the first set of edge vertices if the first-type edge vertices exist, to obtain a second set of edge vertices; a third determining unit 1340, used to determine triangular facets based on the second set of edge vertices; and a fourth determining unit 1350, used to determine the reconstruction points of the reconstructed point cloud based on the triangular facets.

[0429] In an exemplary embodiment, based on the aforementioned scheme, the processing unit 1330 is specifically used to: delete the first type of edge vertices, or correct the position of the first type of edge vertices.

[0430] In an exemplary embodiment, based on the foregoing scheme, the processing unit 1330 is specifically used to: move the position of the first type of edge vertex to the midpoint of the edge of its node.

[0431] In an exemplary embodiment, based on the foregoing scheme, the first preset condition includes: the number of original point clouds distributed within the preset range is less than or equal to a preset threshold.

[0432] In an exemplary embodiment, based on the foregoing scheme, the point cloud encoder further includes: a generation unit;

[0433] After the second determining unit determines whether there are any first-type edge vertices to be processed in the first group of edge vertices based on the distribution information of the original point cloud within the current Trisoup node, it generates an axial marker of the current axis in the current Trisoup node. The axial marker of the current axis is used to indicate whether there is an original point cloud distribution in at least one of the at least two first sub-regions corresponding to the current axis. The at least two first sub-regions corresponding to the current axis are obtained by dividing the current Trisoup node in a direction perpendicular to the current axis. The axial marker of the current axis in the current Trisoup node is written into the bitstream.

[0434] In an exemplary embodiment, based on the aforementioned scheme, the axial marker of the current axis is set to the eighth value, indicating that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition, the first node face is contained in the at least one first sub-region and is perpendicular to the current axis, and the at least one first sub-region is close to the positive direction of the current axis; or, the axial marker of the current axis is set to the ninth value, indicating that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition, the first node face is contained in the at least one first sub-region and is perpendicular to the current axis, and the at least one first sub-region is close to the negative direction of the current axis; or, the axial marker of the current axis is set to the tenth value, indicating that there is an original point cloud distribution in all first sub-regions corresponding to the current axis.

[0435] In an exemplary embodiment, based on the foregoing scheme, the generation unit is specifically configured to: determine the value of the first axial marker of the current axis in the current Trisoup node, wherein when the first axial marker is a first value, it indicates that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition, wherein the first node face is contained in the at least one first sub-region and is perpendicular to the current axis; if the first axial marker of the current axis is a first value, then determine the value of the second axial marker of the current axis; wherein the second axial marker is used to indicate that there is no original point cloud distribution in at least one first sub-region near the positive direction of the current axis or no original point cloud distribution in at least one first sub-region near the negative direction of the current axis.

[0436] In an exemplary embodiment, based on the aforementioned scheme, the generation unit is specifically configured to: if there is no original point cloud distribution in at least one first sub-region near the positive direction of the current axis, and the node surface contained in the current sub-region contains edge vertices, then determine that the value of the second axial marker of the current axis is a fourth value; if there is no original point cloud distribution in at least one first sub-region near the negative direction of the current axis, and the node surface contained in the current sub-region contains edge vertices, then determine that the value of the second axial marker of the current axis is a fifth value.

[0437] In an exemplary embodiment, based on the foregoing scheme, the generation unit is further configured to: after the second determining unit 1320 determines whether there is a first type of edge vertex to be processed in the first group of edge vertices according to the distribution information of the original point cloud in the current Trisoup node, generate a first node flag according to the distribution information of the original point cloud in the current Trisoup node, the first node flag being used to indicate whether there is a first type of edge vertex in the current Trisoup node; and write the first node flag into the bitstream.

[0438] In an exemplary embodiment, based on the foregoing scheme, the generation unit is specifically configured to: determine the value of the first axial marker of the current Trisoup node, wherein when the first axial marker is a first value, it indicates that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition, wherein the first node face is contained in the at least one first sub-region and is perpendicular to the current axis; if the first axial marker of at least one axis of the current Trisoup node is a first value, then determine that the first node marker is a second value; or, if the first axial marker of all axes of the current Trisoup node is not a first value, then determine that the first node marker is a third value; wherein when the first node marker is the second value, it indicates that there are first-type edge vertices in the current Trisoup node, and when the first node marker is the third value, it indicates that there are no first-type edge vertices in the current Trisoup node.

[0439] In an exemplary embodiment, based on the foregoing scheme, the generation unit is specifically used to: determine the axes in the current Trisoup node that satisfy the second preset condition; for the axes in the current Trisoup node that satisfy the second preset condition, determine the value of the first flag of the axis; wherein, if at least one of the following information is satisfied, the current axis satisfies the second preset condition;

[0440] The information includes: a second quantity greater than a first threshold, a ratio of the first quantity to the second quantity greater than a second threshold, and the current Trisoup node being a cube node. The first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, the second quantity is the number of edge vertices in the first group of edge vertices, and the first sub-region is at least two sub-regions obtained by dividing the current Trisoup node in a direction perpendicular to the current axis.

[0441] In an exemplary embodiment, based on the foregoing scheme, the point cloud encoder further includes: a sixth determining unit, configured to: determine the context corresponding to the current axis, the context being used to entropy encode the axial marker of the current axis; wherein the context includes at least one of the following information:

[0442] The first context is used to indicate whether the ratio of the first quantity to the second quantity is greater than the third threshold, wherein the first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, the second quantity is the number of edge vertices in the first group of edge vertices, and the first sub-region is obtained by dividing the current Trisoup node into at least two sub-regions in a direction perpendicular to the current axis.

[0443] The second context is used to indicate whether the first group of edge vertices are all distributed in the same fourth sub-region, wherein the fourth sub-region belongs to the first sub-region corresponding to the other two axes besides the current axis;

[0444] The third context is used to represent the distribution information of the original point cloud among the neighboring nodes of the current Trisoup node.

[0445] In an exemplary embodiment, based on the foregoing scheme, the sixth determining unit is specifically configured to: when the context corresponding to the current axis is the third context, determine the third context of the first axial marker of the current axis based on the distribution information of the original point cloud within the first type of neighboring nodes on the current axis, wherein the first type of neighboring nodes are neighboring nodes that are coplanar with the negative directions of the other two axes; determine the third context of the second axial marker of the current axis based on the distribution information of the original point cloud within the second type of neighboring nodes on the current axis, and the distribution information of the original point cloud within the first type of neighboring nodes on the current axis, wherein the second type of neighboring nodes are neighboring nodes that are coplanar with the negative direction of the current axis.

[0446] In an exemplary embodiment, based on the foregoing scheme, the sixth determining unit is further configured to: determine the comprehensive context information corresponding to the current axis based on the following information when the number of contexts corresponding to the axis within the current Trisoup node is N:

[0447] Ctx=ctx1<<(numBit(ctx2)+numBit(ctx3)+…+numBit(ctxN))

[0448] +ctx2<<(numBit(ctx3)+…+numBit(ctxN))

[0449] +…

[0450] +ctxN

[0451] Where ctxi represents the i-th context in the context corresponding to the current axis, i takes the value 1, 2, ... N, and N takes the value of a positive integer.

[0452] In an exemplary embodiment, based on the foregoing scheme, the point cloud encoder further includes: a seventh determining unit and an eighth determining unit;

[0453] The seventh determining unit is used to determine the original point cloud distribution mark in the first sub-region corresponding to the current axis based on the value of the first axial marker and the value of the second axial marker of the current axis before the processing unit 1330 processes the first type of edge vertex in the first group of edge vertices. The first sub-region corresponding to the current axis is at least two sub-regions obtained by dividing the current Trisoup node in a direction perpendicular to the current axis.

[0454] The eighth determining unit is used to determine the first type of edge vertex in the first group of edge vertices based on the original point cloud distribution markings of the first sub-region corresponding to all axes of the current Trisoup node.

[0455] In an exemplary embodiment, based on the foregoing scheme, the eighth determining unit includes: a first subunit and a second subunit;

[0456] The first subunit is used to determine the associated region from the first sub-region corresponding to all axes of the current Trisoup node for any edge vertex in the first group of edge vertices; the second subunit is used to determine the first type of edge vertex in the first group of edge vertices according to the original point cloud distribution marking of the associated region.

[0457] In an exemplary embodiment, based on the aforementioned scheme, the first sub-unit is specifically used to: determine the first associated region of the first side, wherein the first side is the node edge where the edge vertex in the first group of edge vertices is located, and the first associated region includes: the first sub-regions corresponding to the two axes perpendicular to the first side respectively contain the first side.

[0458] The second subunit is specifically used to: determine the edge vertex as the first type of edge vertex when the original point cloud distribution markers corresponding to the first associated region all represent the original point cloud distribution satisfying the first preset condition;

[0459] The processing unit 1330 is specifically used to: delete the first type of edge vertices from the first group of edge vertices.

[0460] In an exemplary embodiment, based on the aforementioned scheme, the first sub-unit is specifically used to: determine the second associated region of the second side, the second side being the node edge where the edge vertex in the first group of edge vertices is located, and the second associated region includes: two sub-regions in the first sub-region corresponding to the axis parallel to the second side, including the second sub-region and the third sub-region;

[0461] The second sub-unit is specifically used for: if the original point cloud distribution marker of the second sub-region indicates that the original point cloud distribution satisfies the first preset condition, the original point cloud distribution marker of the third sub-region indicates that there is an original point cloud distribution, and the edge vertex belongs to the second sub-region, then the edge vertex is determined to be a first type of edge vertex;

[0462] The processing unit 1330 is specifically used to: correct the position of the first type of edge vertex.

[0463] In an exemplary embodiment, based on the foregoing scheme, the fifth determining unit is further configured to: determine the initial centroid value of the initial centroid in the current Trisoup node according to the second set of edge vertices; obtain the original point cloud distributed within a preset range of the initial centroid according to the initial centroid value, and calculate the centroid drift value according to the coordinates of the obtained original point cloud; quantize the centroid drift value and write it into the bitstream.

[0464] In an exemplary embodiment, based on the aforementioned scheme, the third determining unit 1340 is specifically used to: determine the position information of the offset centroid within the current Trisoup node based on the centroid drift value and the initial centroid value; determine the coordinate information of the face vertices of the current Trisoup node based on the position information of the offset centroid within the current Trisoup node and the position information of the offset centroids within adjacent nodes; and determine the triangular facets of the current Trisoup node based on the second set of edge vertices, the face vertices of the current Trisoup node, and the position information of the offset centroid within the current Trisoup node.

[0465] In an exemplary embodiment, based on the foregoing scheme, the fifth determining unit is further configured to: after the third determining unit 1340 determines the coordinate information of the face vertices of the current Trisoup node, determine the value of the fourth node flag, wherein the fourth node flag is used to indicate whether the current Trisoup node has face vertices; and write the fourth node flag and its value into the bitstream.

[0466] In an exemplary embodiment, based on the foregoing scheme, the fifth determining unit is further configured to: for the current axis in the current Trisoup node, determine whether at least one of the following information is satisfied: a second quantity is greater than a first threshold, the ratio of the first quantity to the second quantity is greater than the second threshold, the current Trisoup node is a cube node, wherein the first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, and the second quantity is the number of edge vertices in the first group of edge vertices; if it is determined that at least one of the information is satisfied, then it is determined that the current axis satisfies the second preset condition;

[0467] Specifically, the generation unit is used to generate a first node flag for Trisoup nodes that satisfy a third preset condition; wherein, the third preset condition is that at least one axis within the Trisoup node satisfies the second preset condition.

[0468] In an exemplary embodiment, based on the foregoing scheme, the generation unit is further configured to: generate a second node flag before the fifth determining unit determines whether the second preset condition is met, and write the second node flag into the bitstream. The second node flag is used to indicate that the second threshold comes from the first set of thresholds or the second set of thresholds, wherein the first set of thresholds and the second set of thresholds each contain the second threshold corresponding to multiple Trisoup nodes respectively.

[0469] In an exemplary embodiment, based on the foregoing scheme, the second thresholds in the first set of thresholds and the second set of thresholds, respectively, which correspond to the current Trisoup node, are related to the first number of the current Trisoup nodes.

[0470] In an exemplary embodiment, based on the aforementioned scheme, the value of the second node flag is related to the density of the original point cloud, or the value of the second node flag is a set value.

[0471] In an exemplary embodiment, based on the aforementioned scheme, for a Trisoup node that satisfies the third preset condition, it contains M axes that satisfy the second preset condition, where M is an integer greater than 1;

[0472] The fifth determining unit is further configured to: encode the first axial marker and / or the second axial marker corresponding to the first M-1 axes when the first node marker indicates that the Trisoup node contains the first type of edge vertex; perform an OR logic calculation on the first axial marker corresponding to the first M-1 axes; and determine whether to encode the first axial marker corresponding to the Mth axis based on the logic calculation result.

[0473] If the logical calculation result is true, then the first axial marker corresponding to the Mth axis is encoded; if the logical calculation result is false, then the first axial marker corresponding to the Mth axis is not encoded, and the second axial marker corresponding to the Mth axis is encoded.

[0474] In an exemplary embodiment, based on the aforementioned scheme, for a Trisoup node that satisfies the third preset condition, it includes an axis that satisfies the second preset condition;

[0475] The fifth determining unit is further configured to: when the first node flag indicates that there is a first type of edge vertex in the Trisoup node, for an axis that satisfies the second preset condition, encode the axial second flag of the axis and encode the axial second flag corresponding to the axis.

[0476] In an exemplary embodiment, based on the foregoing scheme, the fifth determining unit is further configured to: determine the value of a third node flag before generating the first node flag or generating the second node flag, wherein the third node flag is a slice-level flag used to indicate whether there is a Trisoup node containing the first type of edge vertex in the current slice; wherein, if the value of the third node flag is determined to be the seventh value, the first node flag or the second node flag is generated; and the third node flag and its value are written into the bitstream.

[0477] In this embodiment, the first determining unit in the point cloud encoder first determines the edge vertices of the current Trisoup node to obtain a first set of edge vertices. Then, the second determining unit uses the distribution information of the original point cloud within the current Trisoup node to determine whether there is a first node marker for a first type of edge vertex to be processed in the first set of edge vertices. The original point cloud distribution within a preset range adjacent to the first type of edge vertex in the current Trisoup node satisfies a first preset condition. If it is determined that the first type of edge vertex exists in the first set of edge vertices, the processing unit processes the first type of edge vertex in the first set. The edge vertices processed from the first type of edge vertex in the first set are determined as the second set of edge vertices. Further, the third determining unit in the point cloud encoder determines triangular facets based on the second set of edge vertices, and the fourth determining unit determines the reconstruction points of the reconstructed point cloud based on the triangular facets. As can be seen, in the solution provided by this application embodiment, after determining the first group of edge vertices, it is first determined whether there is at least one edge vertex to be processed (denoted as the first type of edge vertex) in the first group of edge vertices. If it exists, it is processed, and then the triangular facets in the current Trisoup node are constructed based on the obtained second group of edge vertices. This application embodiment does not directly construct triangular facets based on the encoded first group of edge vertices, thereby reducing erroneous reconstruction of point clouds and improving encoding and decoding performance.

[0478] The point cloud encoder provided in this application embodiment can implement all the processes implemented in the point cloud encoding method embodiments of Figures 10 and 11, and achieve the same technical effect. To avoid repetition, it will not be described again here.

[0479] As shown in Figure 14, this application embodiment also provides an electronic device 1400, including a processor 1401 and a memory 1402. The memory 1402 stores programs or instructions that can run on the processor 1401. For example, when the electronic device 1400 is an encoding device, the program or instructions executed by the processor 1401 implement the various steps of the above-described point cloud encoding method embodiment and achieve the same technical effect. When the electronic device 1400 is a decoding device, the program or instructions executed by the processor 1401 implement the various steps of the above-described point cloud decoding method embodiment and achieve the same technical effect. To avoid repetition, this will not be described again here. Optionally, the memory 1402 can be the memory 102 or memory 113 in the embodiment shown in Figure 1, and the processor 1401 can implement the functions of the point cloud encoder 200 or point cloud decoder 300 in the embodiments shown in Figures 1-3.

[0480] This application also provides an electronic device, including: a memory configured to store video data; and a processing circuit configured to implement the various steps of the point cloud encoding method embodiment or the point cloud decoding method embodiment described above. Optionally, the memory may be memory 102 or memory 113 in the embodiment shown in FIG1, and the processing circuit may implement the functions of point cloud encoder 200 or point cloud decoder 300 in the embodiments shown in FIG1-3.

[0481] This application also provides an electronic device, including a processor and a communication interface. The communication interface is coupled to the processor, and the processor is used to run programs or instructions to implement the steps in the method embodiments shown in FIG5 or FIG10. This device embodiment corresponds to the above method embodiment, and all implementation processes and methods of the above method embodiments can be applied to this terminal embodiment and can achieve the same technical effect.

[0482] The processor or processing circuit in this application embodiment may include general-purpose processors, special-purpose processors, etc., such as central processing units (CPUs), microprocessors, digital signal processors (DSPs), artificial intelligence (AI) processors, graphics processing units (GPUs), application-specific integrated circuits (ASICs), network processors (NPs), field-programmable gate arrays (FPGAs), or other programmable logic devices, gate circuits, transistors, discrete hardware components, etc. The communication interface in this application embodiment may include transceivers, pins, circuits, buses, etc.

[0483] The aforementioned electronic devices can be terminals or other devices besides terminals, such as servers, network attached storage (NAS), etc.

[0484] The terminal can be a mobile phone, tablet computer, laptop computer, notebook computer, personal digital assistant (PDA), handheld computer, netbook, ultra-mobile personal computer (UMPC), mobile internet device (MID), augmented reality (AR), virtual reality (VR) device, mixed reality (MR) device, robot, wearable device, flight vehicle, vehicle user equipment (VUE), shipboard equipment, pedestrian user equipment (PUE), smart home (home devices with wireless communication capabilities, such as refrigerators, televisions, washing machines, or furniture), game console, personal computer (PC), ATM or self-service machine, etc. Wearable devices include: smartwatches, smart bracelets, smart earphones, smart glasses, smart jewelry (smart bracelets, smart chains, smart rings, smart necklaces, smart anklets, smart anklets, etc.), smart wristbands, smart clothing, etc. Among these, in-vehicle devices can also be referred to as in-vehicle terminals, in-vehicle controllers, in-vehicle modules, in-vehicle components, in-vehicle chips, or in-vehicle units, etc. It should be noted that the embodiments in this application do not limit the specific type of terminal.

[0485] A server can be a standalone physical server, a server cluster or distributed system consisting of multiple physical servers, or a cloud server. A cloud server can provide cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communication, middleware services, domain name services, security services, content delivery networks (CDNs), or cloud computing services based on big data and artificial intelligence platforms.

[0486] For example, the aforementioned electronic device may include, but is not limited to, the type of source device 100 or destination device 110 shown in FIG1.

[0487] Taking an electronic device as an example, Figure 15 is a schematic diagram of the hardware structure of a terminal implementing an embodiment of this application.

[0488] The terminal 1500 includes, but is not limited to, at least some of the following components: radio frequency unit 1501, network module 1502, audio output unit 1503, input unit 1504, sensor 1505, display unit 1506, user input unit 1507, interface unit 1508, memory 1509, and processor 1510.

[0489] Those skilled in the art will understand that terminal 1500 may also include a power supply (such as a battery) for powering various components. The power supply may be logically connected to processor 1510 through a power management system, thereby enabling functions such as charging, discharging, and power consumption management through the power management system. The terminal structure shown in Figure 15 does not constitute a limitation on the terminal. The terminal may include more or fewer components than shown, or combine certain components, or have different component arrangements, which will not be elaborated here.

[0490] It should be understood that, in this embodiment, the input unit 1504 may include a graphics processor 15041 and a microphone 15042. The graphics processor 15041 processes image data of still images or videos obtained by an image acquisition device (such as a camera) in video acquisition mode or image acquisition mode, or it may process the obtained point cloud data. The display unit 1506 may include a display panel 15061, which may be configured in the form of a liquid crystal display, an organic light-emitting diode, etc. The user input unit 1507 includes at least one of a touch panel 15071 and other input devices 15072. The touch panel 15071 is also called a touch screen. The touch panel 15071 may include a touch detection device and a touch controller. Other input devices 15072 may include, but are not limited to, physical keyboards, function keys (such as volume control buttons, power buttons, etc.), trackballs, mice, and joysticks, which will not be described in detail here.

[0491] In this embodiment, after receiving downlink data from the network-side device, the radio frequency unit 1501 can transmit it to the processor 1510 for processing; in addition, the radio frequency unit 1501 can send uplink data to the network-side device. Typically, the radio frequency unit 1501 includes, but is not limited to, antennas, amplifiers, transceivers, couplers, low-noise amplifiers, duplexers, etc.

[0492] The memory 1509 can be used to store software programs or instructions, as well as various data. The memory 1509 may primarily include a first storage area for storing programs or instructions and a second storage area for storing data. The first storage area may store the operating system, application programs or instructions required for at least one function (such as sound playback, image playback, etc.). Furthermore, the memory 1509 may include volatile memory or non-volatile memory. The non-volatile memory may 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), static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link dynamic random access memory (SLDRAM), and direct memory bus RAM (DRRAM). The memory 1509 in this embodiment includes, but is not limited to, these and any other suitable types of memory.

[0493] Processor 1510 may include one or more processing units; optionally, processor 1510 integrates an application processor and a modem processor, wherein the application processor mainly handles operations involving the operating system, user interface, and applications, and the modem processor mainly handles wireless communication signals, such as a baseband processor. It is understood that the aforementioned modem processor may also not be integrated into processor 1510.

[0494] The processor 1510 is configured to: parse the bitstream, determine the edge vertices of the current Trisoup node, and obtain a first set of edge vertices; parse the first node flag, which indicates whether there are any unprocessed first-type edge vertices in the first set of edge vertices; if it is determined that there are first-type edge vertices in the first set of edge vertices, process the first-type edge vertices in the first set of edge vertices to obtain a second set of edge vertices; determine triangular facets based on the second set of edge vertices; and determine the reconstruction points of the reconstructed point cloud based on the triangular facets. Alternatively...

[0495] The processor 1510 is configured to: determine the edge vertices of the current Trisoup node to obtain a first set of edge vertices; determine whether there are any first-type edge vertices to be processed in the first set of edge vertices based on the distribution information of the original point cloud within the current Trisoup node; if there are first-type edge vertices in the first set of edge vertices, process the first-type edge vertices in the first set of edge vertices to obtain a second set of edge vertices; determine triangular facets based on the second set of edge vertices; and determine the reconstruction points of the reconstructed point cloud based on the triangular facets.

[0496] In the encoding / decoding method provided in this application embodiment, after determining the first set of edge vertices of the current Trisoup node, it first determines whether there is at least one edge vertex to be processed (denoted as the first type of edge vertex) in the first set of edge vertices. If so, it processes it, and then constructs the triangular facet within the current Trisoup node based on the obtained second set of edge vertices. This application embodiment does not directly construct the triangular facet based on the decoded first set of edge vertices, which can reduce erroneous point cloud reconstruction and improve encoding / decoding performance.

[0497] It is understood that the implementation process of each implementation method mentioned in this embodiment can refer to the relevant description of the method embodiment and achieve the same or corresponding technical effect. To avoid repetition, it will not be described again here.

[0498] This application also provides a readable storage medium storing a program or instructions. When the program or instructions are executed by a processor, they implement the various processes of the method embodiments shown in FIG5 or FIG10 above and achieve the same technical effect. To avoid repetition, they will not be described again here.

[0499] The processor mentioned above is the processor in the terminal described in the above embodiments. The readable storage medium includes computer-readable storage media, such as ROM, RAM, magnetic disk, or optical disk. In some examples, the readable storage medium may be a non-transient readable storage medium.

[0500] This application embodiment also provides a chip, which includes a processor and a communication interface. The communication interface is coupled to the processor. The processor is used to run programs or instructions to implement the various processes of the above-described point cloud decoding method or point cloud encoding method embodiments, and can achieve the same technical effect. To avoid repetition, it will not be described again here.

[0501] It should be understood that the chips mentioned in the embodiments of this application may include system-on-a-chip (also known as system chip, chip system, or system-on-a-chip) or discrete display chips, etc.

[0502] This application also provides a computer program / program product, which is stored in a storage medium and executed by at least one processor to implement the various processes of the above-described point cloud encoding method or point cloud decoding method embodiments, and can achieve the same technical effect. To avoid repetition, it will not be described again here.

[0503] This application also provides a point cloud encoding and decoding system, including: an encoding end device and a decoding end device. The encoding end device can be used to perform the steps of the point cloud encoding method described above, and the decoding end device can be used to perform the steps of the point cloud decoding method described above.

[0504] It should be noted that, in this document, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Without further limitations, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes that element. Furthermore, it should be noted that the scope of the methods and apparatuses in the embodiments of this application is not limited to performing functions in the order shown or discussed, but may also include performing functions substantially simultaneously or in the reverse order, depending on the functions involved. For example, the described methods may be performed in a different order than described, and various steps may be added, omitted, or combined. Additionally, features described with reference to certain examples may be combined in other examples.

[0505] From the above description of the embodiments, those skilled in the art can clearly understand that the methods of the above embodiments can be implemented by means of computer software products plus necessary general-purpose hardware platforms, and of course, they can also be implemented by hardware. The computer software product is stored in a storage medium (such as ROM, RAM, magnetic disk, optical disk, etc.) and includes several instructions to cause the terminal or network-side device to execute the methods described in the various embodiments of this application.

[0506] The embodiments of this application have been described above with reference to the accompanying drawings. However, this application is not limited to the specific embodiments described above. The specific embodiments described above are merely illustrative and not restrictive. Those skilled in the art can make many other implementations under the guidance of this application without departing from the spirit and scope of the claims. All of these implementations are within the protection scope of this application.

Claims

A point cloud decoding method, comprising: Parse the bitstream to determine the edge vertices of the current triangle Trisoup node and obtain the first set of edge vertices; Determine whether there are any first-type edge vertices to be processed in the first group of edge vertices, wherein the original point cloud distribution within a preset range adjacent to the first-type edge vertices in the current Trisoup node satisfies a first preset condition. If it is determined that the first type of edge vertex exists in the first group of edge vertices, then the first type of edge vertex in the first group of edge vertices is processed to obtain the second group of edge vertices; Based on the second set of edge vertices, determine the triangular facets; Based on the triangular facets, the reconstruction points of the reconstructed point cloud are determined. According to the method of claim 1, wherein, The processing of the first type of edge vertices in the first group of edge vertices includes: The first type of edge vertices are either deleted or their positions are corrected. The method according to claim 2, wherein, The process of correcting the position of the first type of edge vertex includes: The position of the vertex of the first type of edge is moved to the midpoint of the edge of the node it belongs to. The method according to any one of claims 1 to 3, wherein, The first preset condition includes: the number of original point clouds distributed within the preset range is less than or equal to a preset threshold. The method according to any one of claims 1 to 4, wherein, Determining whether there is a first type of edge vertex to be processed in the first group of edge vertices includes: The first node flag is parsed, which indicates whether there are any first-type edge vertices to be processed in the first group of edge vertices. The method according to any one of claims 1 to 5, wherein, If it is determined that the first type of edge vertex exists in the first group of edge vertices, the method further includes: The axial marker of the current axis in the current Trisoup node is parsed, wherein the axial marker of the current axis is used to indicate whether there is an original point cloud distribution in at least one of the at least two first sub-regions corresponding to the current axis, wherein the at least two first sub-regions corresponding to the current axis are obtained by dividing the current Trisoup node in a direction perpendicular to the current axis; Based on the values ​​of the axial markers obtained from the analysis, the original point cloud distribution within the current Trisoup node is determined; Before processing the first type of edge vertices in the first group of edge vertices, the method further includes: Based on the original point cloud distribution within the current Trisoup node, the first type of edge vertices are determined from the first group of edge vertices. The method according to claim 6, wherein, The axial flag of the current axis is set to the eighth value, indicating that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition. The first node face is perpendicular to the current axis and is contained in the at least one first sub-region, and the at least one first sub-region is close to the positive direction of the current axis. or, The axial flag of the current axis is set to the ninth value, indicating that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition. The first node face is perpendicular to the current axis and is contained within the at least one first sub-region, and the at least one first sub-region is close to the negative direction of the current axis; or... The axial flag of the current axis is set to the tenth value, indicating that there is an original point cloud distribution in all first sub-regions corresponding to the current axis. The method according to claim 6, wherein, The process of parsing the axial marker of the current axis in the current Trisoup node includes: Analyze the first axial marker of the current Trisoup node; If the first axial marker of the current axis is a first value, then the second axial marker of the current axis is parsed. The first axial marker indicates that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition. The first node face is contained in the at least one first sub-region and is perpendicular to the current axis. The method according to claim 6, wherein, The value of the axial marker obtained from the analysis determines the original point cloud distribution within the current Trisoup node, including: Based on the values ​​of the first axial marker and the second axial marker of the current axis, determine the original point cloud distribution marker within the first sub-region corresponding to the current axis; The step of determining the first type of edge vertices in the first group of edge vertices based on the original point cloud distribution within the current Trisoup node includes: For any edge vertex in the first group of edge vertices, determine the associated region from the first sub-region corresponding to all axes of the current Trisoup node; Based on the original point cloud distribution markings of the associated region, the first type of edge vertices are determined in the first group of edge vertices. The method according to claim 9, wherein, Determining the associated region from the first sub-region corresponding to all axes of the current Trisoup node includes: Determine the first associated region of the first side, where the first side is the node edge containing the edge vertex in the first group of edge vertices, and the first associated region includes: the sub-regions containing the first side that are respectively corresponding to the first sub-regions of the two axes perpendicular to the first side; The step of determining the first type of edge vertices in the first group of edge vertices based on the original point cloud distribution markers of the associated region includes: If the original point cloud distribution markers corresponding to the first associated region are all represented as original point cloud distributions that satisfy the first preset condition, then the edge vertex is determined to be the first type of edge vertex. The processing of the first type of edge vertices in the first group of edge vertices includes: Remove the first type of edge vertices from the first group of edge vertices. The method according to claim 9, wherein, Determining the associated region from the first sub-region corresponding to all axes of the current Trisoup node includes: Determine the second associated region of the second side, where the second side is the node edge containing the edge vertex in the first group of edge vertices, and the second associated region includes: two sub-regions in the first sub-region corresponding to the axis parallel to the second side, including the second sub-region and the third sub-region; The step of determining the first type of edge vertices in the first group of edge vertices based on the original point cloud distribution markers of the associated region includes: If the original point cloud distribution marker of the second sub-region indicates that the original point cloud distribution meets the first preset condition, the original point cloud distribution marker of the third sub-region indicates that there is an original point cloud distribution, and the edge vertex belongs to the second sub-region, then the edge vertex is determined to be a first type of edge vertex. The processing of the first type of edge vertices in the first group of edge vertices includes: The positions of the first type of edge vertices are corrected. The method according to any one of claims 6 to 11, wherein, Before resolving the axial marker of the current Trisoup node, the method further includes: Determine the context corresponding to the current axis, the context being used for entropy decoding of the axial marker of the current axis; wherein the context includes at least one of the following: A first context is used to indicate whether the ratio of a first quantity to a second quantity is greater than a third threshold, wherein the first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, and the second quantity is the number of edge vertices in the first group of edge vertices; The second context is used to indicate whether the first group of edge vertices are all distributed in the same fourth sub-region, wherein the fourth sub-region belongs to the first sub-region corresponding to the other two axes besides the current axis; The third context is used to represent the distribution information of the original point cloud among the neighboring nodes of the current Trisoup node. The method according to claim 12, wherein, When the context corresponding to the current axis is the third context, the method further includes: Based on the distribution information of the original point cloud on the current axis within the first type of neighboring nodes, the third context of the first axial marker of the current axis is determined, wherein the first type of neighboring nodes are neighboring nodes that are coplanar with the negative directions of the other two axes. Based on the distribution information of the original point cloud on the current axis within the second type of neighboring nodes, and the distribution information of the original point cloud on the current axis within the first type of neighboring nodes, the third context of the axial second marker of the current axis is determined, wherein the second type of neighboring nodes are neighboring nodes that are coplanar with the negative direction of the current axis. The method according to claim 12 or 13, wherein, When the number of contexts corresponding to the current axis within the current Trisoup node is N, the method further includes: The synthesis context corresponding to the current axis is determined based on the following information: Ctx=ctx1<<(numBit(ctx2)+numBit(ctx3)+…+numBit(ctxN)) +ctx2<<(numBit(ctx3)+…+numBit(ctxN)) +… +ctxN Where ctxi represents the i-th context in the context corresponding to the current axis, i takes the value 1, 2, ... N, and N takes the value of a positive integer. The method according to any one of claims 5 to 14, wherein, Before parsing the first node flag, the method further includes: For the current axis in the current Trisoup node, determine whether the current axis satisfies a second preset condition. If the current axis satisfies at least one of the following conditions, then the current axis satisfies the second preset condition: the second quantity is greater than the first threshold, the ratio of the first quantity to the second quantity is greater than the second threshold, and the current Trisoup node is a cube node. The first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, and the second quantity is the number of edge vertices in the first group of edge vertices. Specifically, for a Trisoup node that satisfies the third preset condition, the first node flag of the current Trisoup node is parsed; wherein, the third preset condition is that at least one axis within the Trisoup node satisfies the second preset condition. The method according to claim 15, wherein, Before determining whether the current axis meets the second preset condition, the method further includes: Parse the second node flag, where the second node flag is used to indicate that the second threshold comes from the first set of thresholds or the second set of thresholds, wherein both the first set of thresholds and the second set of thresholds contain the second threshold corresponding to multiple Trisoup nodes respectively. The method according to claim 16, wherein, The second threshold in the first set of thresholds and the second set of thresholds, respectively, corresponds to the current Trisoup node and is related to the first number of the current Trisoup nodes. The method according to any one of claims 16 to 17, wherein, The value of the second node flag is related to the density of the original point cloud, or the value of the second node flag is a set value. The method according to any one of claims 15 to 18, wherein, If the current Trisoup node contains M axes that satisfy the second preset condition, the method further includes: Decode the axial flags corresponding to the first M-1 axes within the current Trisoup node, where M is an integer greater than 1; Perform an OR logic calculation on the first axial markers corresponding to the first M-1 axes; Determine whether to decode the first axial marker corresponding to the Mth axis based on the logical calculation results; If the logical calculation result is true, the first axial marker corresponding to the Mth axis is decoded; if the logical calculation result is false, the first axial marker corresponding to the Mth axis is determined to be a first value, and the second axial marker corresponding to the Mth axis is decoded. The method according to any one of claims 15 to 18, wherein, If the current Trisoup node contains an axis that satisfies the second preset condition, the method further includes: For an axis that meets the second preset condition, determine the first axial marker of the axis as the first value, and decode the value of the second axial marker corresponding to the axis. The method according to any one of claims 5 to 20, wherein, Before parsing the first node flag or the second node flag, the method further includes: Parse the third node flag, where the third node flag is a slice-level flag used to indicate whether there is a Trisoup node containing the first type of edge vertex in the current slice; Specifically, if the value of the third node flag is determined to be the seventh value, the first node flag or the second node flag is parsed. A point cloud encoding method, comprising: Determine the edge vertices of the current Trisoup node to obtain the first set of edge vertices; Based on the distribution information of the original point cloud within the current Trisoup node, it is determined whether there are any first-type edge vertices to be processed in the first group of edge vertices, wherein the distribution of the original point cloud within a preset range adjacent to the first-type edge vertices in the current Trisoup node satisfies a first preset condition. If the first type of edge vertex exists in the first group of edge vertices, then the first type of edge vertex in the first group of edge vertices is processed to obtain the second group of edge vertices; Based on the second set of edge vertices, determine the triangular facets; Based on the triangular facets, the reconstruction points of the reconstructed point cloud are determined. The method according to claim 22, wherein, The processing of the first type of edge vertices in the first group of edge vertices includes: The first type of edge vertices are either deleted or their positions are corrected. The method according to claim 23, wherein, The process of correcting the position of the first type of edge vertex includes: The position of the vertex of the first type of edge is moved to the midpoint of the edge of the node it belongs to. The method according to any one of claims 22 to 24, wherein, The first preset condition includes: the number of original point clouds distributed within the preset range is less than or equal to a preset threshold. The method according to any one of claims 22 to 24, wherein, After determining whether there are any first-type edge vertices to be processed in the first group of edge vertices based on the distribution information of the original point cloud within the current Trisoup node, the method further includes: Generate an axial marker for the current axis in the current Trisoup node, wherein the axial marker for the current axis is used to indicate whether there is an original point cloud distribution in at least one of the at least two first sub-regions corresponding to the current axis, wherein the at least two first sub-regions corresponding to the current axis are obtained by dividing the current Trisoup node in a direction perpendicular to the current axis; Write the axis flag of the current axis in the current Trisoup node into the bitstream. The method according to claim 26, wherein, The axial flag of the current axis is set to the eighth value, indicating that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition. The first node face is contained in the at least one first sub-region and is perpendicular to the current axis. The at least one first sub-region is close to the positive direction of the current axis. or, The axial flag of the current axis is set to the ninth value, indicating that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition. The first node face is contained in the at least one first sub-region and is perpendicular to the current axis, and the at least one first sub-region is close to the negative direction of the current axis; or... The axial flag of the current axis is set to the tenth value, indicating that there is an original point cloud distribution in all first sub-regions corresponding to the current axis. The method according to claim 26, wherein, The generation of the axial marker of the current axis in the current Trisoup node includes: Determine the value of the first axial marker of the current axis in the current Trisoup node, wherein when the first axial marker is set to a first value, it indicates that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition, wherein the first node face is contained in the at least one first sub-region and is perpendicular to the current axis; If the first axial marker of the current axis is the first value, then the value of the second axial marker of the current axis is determined; wherein the second axial marker is used to indicate that there is no original point cloud distribution in at least one first sub-region near the positive direction of the current axis or no original point cloud distribution in at least one first sub-region near the negative direction of the current axis. The method according to claim 28, wherein, Determining the value of the second axial marker of the current axis includes: If there is no original point cloud distribution in at least one first sub-region close to the positive direction of the current axis, and the node face contained in the current sub-region contains edge vertices, then the value of the second axial flag of the current axis is determined to be the fourth value. If there is no original point cloud distribution in at least one first sub-region near the negative direction of the current axis, and the node face contained in the current sub-region contains edge vertices, then the value of the second axial flag of the current axis is determined to be the fifth value. The method according to claim 28 or 29, wherein, After determining whether there are any first-type edge vertices to be processed in the first group of edge vertices based on the distribution information of the original point cloud within the current Trisoup node, the method further includes: Based on the distribution information of the original point cloud within the current Trisoup node, a first node flag is generated. The first node flag is used to indicate whether the first type of edge vertex exists within the current Trisoup node. Write the first node flag into the bitstream. The method according to claim 30, wherein, The step of generating a first node identifier based on the distribution information of the original point cloud within the current Trisoup node includes: Determine the value of the first axial marker of the current Trisoup node, wherein when the first axial marker is a first value, it indicates that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition, wherein the first node face is contained in the at least one first sub-region and is perpendicular to the current axis; If the axial first flag of at least one axis of the current Trisoup node is the first value, then the value of the first node flag is determined to be the second value; or, If the value of the first axial marker of all axes of the current Trisoup node is not the first value, then the value of the first node marker is determined to be the third value. Wherein, the first node flag is the second value, indicating that there is a first type of edge vertex in the current Trisoup node, and the first node flag is the third value, indicating that there is no first type of edge vertex in the current Trisoup node. The method according to claim 31, wherein, Determining the value of the first axial flag of the current Trisoup node includes: Identify the axes in the current Trisoup node that satisfy the second preset condition; For the axis in the current Trisoup node that satisfies the second preset condition, determine the value of the first flag for the axis. If at least one of the following conditions is met, then the current axis satisfies the second preset condition; The information includes: a second quantity is greater than a first threshold, the ratio of the first quantity to the second quantity is greater than a second threshold, the current Trisoup node is a cube node, wherein the first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, and the second quantity is the number of edge vertices in the first group of edge vertices. The method according to any one of claims 26 to 32, wherein, The method further includes: Determine the context corresponding to the current axis, the context being used to entropy encode the axial marker of the current axis; wherein the context includes at least one of the following: A first context is used to indicate whether the ratio of a first quantity to a second quantity is greater than a third threshold, wherein the first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, and the second quantity is the number of edge vertices in the first group of edge vertices; The second context is used to indicate whether the first group of edge vertices are all distributed in the same fourth sub-region, wherein the fourth sub-region belongs to the first sub-region corresponding to the other two axes besides the current axis; The third context is used to represent the distribution information of the original point cloud among the neighboring nodes of the current Trisoup node. The method according to claim 33, wherein, When the context corresponding to the current axis is the third context, the method further includes: Based on the distribution information of the original point cloud on the current axis within the first type of neighboring nodes, the third context of the first axial marker of the current axis is determined, wherein the first type of neighboring nodes are neighboring nodes that are coplanar with the negative directions of the other two axes. Based on the distribution information of the original point cloud on the current axis within the second type of neighboring nodes, and the distribution information of the original point cloud on the current axis within the first type of neighboring nodes, the third context of the axial second marker of the current axis is determined, wherein the second type of neighboring nodes are neighboring nodes that are coplanar with the negative direction of the current axis. The method according to claim 33 or 34, wherein, When the number of contexts corresponding to the axis within the current Trisoup node is N, the method further includes: The comprehensive context information corresponding to the current axis is determined based on the following information: Ctx=ctx1<<(numBit(ctx2)+numBit(ctx3)+…+numBit(ctxN)) +ctx2<<(numBit(ctx3)+…+numBit(ctxN)) +… +ctxN Where ctxi represents the i-th context in the context corresponding to the current axis, i takes the value 1, 2, ... N, and N takes the value of a positive integer. The method according to any one of claims 28 to 35, wherein, Before processing the first type of edge vertices in the first group of edge vertices, the method further includes: Based on the values ​​of the first axial marker and the second axial marker of the current axis, the original point cloud distribution markers within the first sub-region corresponding to the current axis are determined, wherein the first sub-region corresponding to the current axis is at least two sub-regions obtained by dividing the current Trisoup node in a direction perpendicular to the current axis. Based on the original point cloud distribution labels of the first sub-region corresponding to all axes of the current Trisoup node, the first type of edge vertices are determined in the first group of edge vertices. The method according to claim 35, wherein, The step of determining the first type of edge vertices in the first group of edge vertices based on the original point cloud distribution labels of the first sub-regions corresponding to all axes of the current Trisoup node includes: For any edge vertex in the first group of edge vertices, determine the associated region from the first sub-region corresponding to all axes of the current Trisoup node; Based on the original point cloud distribution markings of the associated region, the first type of edge vertices are determined in the first group of edge vertices. The method according to claim 37, wherein, Determining the associated region from the first sub-region corresponding to all axes of the current Trisoup node includes: Determine the first associated region of the first side, where the first side is the node edge containing the edge vertex in the first group of edge vertices, and the first associated region includes: the sub-regions containing the first side that are respectively corresponding to the first sub-regions of the two axes perpendicular to the first side; The step of determining the first type of edge vertices in the first group of edge vertices based on the original point cloud distribution markers of the associated region includes: If the original point cloud distribution markers corresponding to the first associated region are all represented as original point cloud distributions that satisfy the first preset condition, then the edge vertex is determined to be the first type of edge vertex. The processing of the first type of edge vertices in the first group of edge vertices includes: Remove the first type of edge vertices from the first group of edge vertices. The method according to claim 37, wherein, Determining the associated region from the first sub-region corresponding to all axes of the current Trisoup node includes: Determine the second associated region of the second side, where the second side is the node edge containing the edge vertex in the first group of edge vertices, and the second associated region includes: two sub-regions in the first sub-region corresponding to the axis parallel to the second side, including the second sub-region and the third sub-region; The step of determining the first type of edge vertices in the first group of edge vertices based on the original point cloud distribution markers of the associated region includes: If the original point cloud distribution marker of the second sub-region indicates that the original point cloud distribution meets the first preset condition, the original point cloud distribution marker of the third sub-region indicates that there is an original point cloud distribution, and the edge vertex belongs to the second sub-region, then the edge vertex is determined to be a first type of edge vertex. The processing of the first type of edge vertices in the first group of edge vertices includes: The positions of the first type of edge vertices are corrected. The method according to any one of claims 30 to 39, wherein, Before generating the first node flag, the method further includes: For the current axis in the current Trisoup node, determine whether at least one of the following conditions is met: the second quantity is greater than the first threshold, the ratio of the first quantity to the second quantity is greater than the second threshold, and the current Trisoup node is a cube node; wherein, the first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, and the second quantity is the number of edge vertices in the first group of edge vertices; If it is determined that at least one of the information is satisfied, then it is determined that the current axis satisfies the second preset condition; Specifically, for Trisoup nodes that satisfy the third preset condition, a first node flag is generated; wherein, the third preset condition is that at least one axis within the Trisoup node satisfies the second preset condition. The method according to claim 40, wherein, Before determining whether the second preset condition is met, the method further includes: A second node flag is generated and written into the bitstream. The second node flag is used to indicate whether the second threshold comes from a first set of thresholds or a second set of thresholds. The first set of thresholds and the second set of thresholds each contain a second threshold corresponding to multiple Trisoup nodes. The method according to claim 41, wherein, The second threshold in the first set of thresholds and the second set of thresholds, respectively, corresponds to the current Trisoup node and is related to the first number of the current Trisoup nodes. The method according to any one of claims 40 to 42, wherein, The value of the second node flag is related to the density of the original point cloud, or the value of the second node flag is a set value. The method according to any one of claims 40 to 43, wherein, For a Trisoup node that satisfies the third preset condition, it contains M axes that satisfy the second preset condition, where M is an integer greater than 1; When the first node flag indicates that a vertex of the first type exists within the Trisoup node, the method further includes: Encode the first axial marker and / or the second axial marker corresponding to the first M-1 axes; Perform an OR logic calculation on the first axial markers corresponding to the first M-1 axes; Determine whether to encode the first axial marker corresponding to the Mth axis based on the logical calculation results; If the logical calculation result is true, then the first axial marker corresponding to the Mth axis is encoded; if the logical calculation result is false, then the first axial marker corresponding to the Mth axis is not encoded, and the second axial marker corresponding to the Mth axis is encoded. The method according to any one of claims 40 to 43, wherein, For a Trisoup node that satisfies the third preset condition, it contains an axis that satisfies the second preset condition; When the first node flag indicates that a vertex of the first type exists within the Trisoup node, the method further includes: For an axis that meets the second preset condition, the first axial marker of the axis is determined to be a first value, and the second axial marker corresponding to the axis is encoded. The method according to any one of claims 30 to 45, wherein, Before generating the first node flag or the second node flag, the method further includes: The value of the third node flag is determined. The third node flag is a slice-level flag used to indicate whether there is a Trisoup node containing the first type of edge vertex in the current slice. Specifically, when the third node flag is determined to be the seventh value, the first node flag is generated or the [other node flag] is generated. Second node marker; The method further includes: Write the third node flag and its value into the bitstream. A point cloud decoder, comprising: The parsing unit is used to parse the bitstream, determine the edge vertices of the current Trisoup node, and obtain the first set of edge vertices; The judgment unit is used to determine whether there are any first-type edge vertices to be processed in the first group of edge vertices, wherein the original point cloud distribution within a preset range adjacent to the first-type edge vertex in the current Trisoup node satisfies the first preset condition. The processing unit is configured to process the first type of edge vertices in the first group of edge vertices to obtain a second group of edge vertices if it is determined that the first type of edge vertices exist in the first group of edge vertices. The first determining unit is used to determine the triangular facet based on the second set of edge vertices; The second determining unit is used to determine the reconstruction points of the reconstructed point cloud based on the triangular facets. The point cloud decoder according to claim 47, wherein, The processing unit is specifically used for: The first type of edge vertices are either deleted or their positions are corrected. The point cloud decoder according to claim 47 or 48, wherein, The point cloud decoder further includes: a third determining unit and a fourth determining unit; The parsing unit is further configured to: if it is determined that the first type of edge vertex exists in the first group of edge vertices, parse the axial marker of the current axis in the current Trisoup node, wherein the axial marker of the current axis is used to indicate whether there is an original point cloud distribution in at least one of the at least two first sub-regions corresponding to the current axis, wherein the at least two first sub-regions corresponding to the current axis are obtained by dividing the current Trisoup node in a direction perpendicular to the current axis; The third determining unit is further configured to: determine the original point cloud distribution within the current Trisoup node based on the value of the axial marker obtained from the analysis; and the fourth determining unit is further configured to: determine the first type of edge vertex in the first group of edge vertices based on the original point cloud distribution within the current Trisoup node before the processing unit processes the first type of edge vertex in the first group of edge vertices. The point cloud decoder according to claim 49, wherein, The parsing unit is further configured to: if it is determined that the first type of edge vertex exists in the first group of edge vertices, parse the first axial marker of the current Trisoup node; if the first axial marker of the current axis is a first value, parse the second axial marker of the current axis, wherein the first axial marker being a first value indicates that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition, wherein the first node face is contained in the at least one first sub-region and is perpendicular to the current axis. The point cloud decoder according to claim 49, wherein, The point cloud decoder further includes: a fifth determining unit; The fifth determining unit is configured to determine the context corresponding to the current axis before parsing the axis marker of the current Trisoup node. The context is used to perform entropy decoding on the axis marker of the current axis. The context includes at least one of the following information: A first context is used to indicate whether the ratio of a first quantity to a second quantity is greater than a third threshold, wherein the first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, and the second quantity is the number of edge vertices in the first group of edge vertices; The second context is used to indicate whether the first group of edge vertices are all distributed in the same fourth sub-region, wherein the fourth sub-region belongs to the first sub-region corresponding to the other two axes besides the current axis; The third context is used to represent the distribution information of the original point cloud among the neighboring nodes of the current Trisoup node. A point cloud encoder, comprising: The first determining unit is used to determine the edge vertices of the current Trisoup node and obtain the first set of edge vertices; The second determining unit is used to determine whether there are any first-type edge vertices to be processed in the first group of edge vertices based on the distribution information of the original point cloud in the current Trisoup node, wherein the distribution of the original point cloud within a preset range adjacent to the first-type edge vertex in the current Trisoup node satisfies a first preset condition. The processing unit is configured to process the first type of edge vertices in the first group of edge vertices to obtain a second group of edge vertices if the first type of edge vertices exist in the first group of edge vertices. The third determining unit is used to determine the triangular facet based on the second set of edge vertices; The fourth determining unit is used to determine the reconstruction points of the reconstructed point cloud based on the triangular facets. The point cloud encoder according to claim 52, wherein, The processing unit is specifically used for: The first type of edge vertices are either deleted or their positions are corrected. The point cloud encoder according to claim 53, wherein, The processing unit is specifically used for: The position of the vertex of the first type of edge is moved to the midpoint of the edge of the node it belongs to. The point cloud encoder according to any one of claims 52 to 54, wherein, The point cloud encoder further includes a generation unit, configured to generate an axial marker of the current axis in the current Trisoup node after the second determining unit determines whether there are any first-type edge vertices to be processed in the first group of edge vertices based on the distribution information of the original point cloud within the current Trisoup node, wherein the axial marker of the current axis is used to indicate whether there is an original point cloud distribution in at least one of the at least two first sub-regions corresponding to the current axis, wherein the at least two first sub-regions corresponding to the current axis are obtained by dividing the current Trisoup node in a direction perpendicular to the current axis; and to write the axial marker of the current axis in the current Trisoup node into the bitstream. The point cloud encoder according to claim 55, wherein, The generation unit is specifically used to: determine the value of the first axial marker of the current axis in the current Trisoup node, wherein when the first axial marker is a first value, it indicates that the first node face contains edge vertices, and the original point cloud distribution in at least one first sub-region of the current Trisoup node satisfies the first preset condition, wherein the first node face is contained in the at least one first sub-region and is perpendicular to the current axis; if the first axial marker of the current axis is a first value, then determine the value of the second axial marker of the current axis; wherein the second axial marker is used to indicate that there is no original point cloud distribution in at least one first sub-region near the positive direction of the current axis or no original point cloud distribution in at least one first sub-region near the negative direction of the current axis. The point cloud encoder according to claim 55 or 56, wherein, The point cloud encoder further includes a sixth determining unit, used to determine the context corresponding to the current axis, wherein the context is used to entropy encode the axial marker of the current axis; wherein the context includes at least one of the following information: The first context is used to indicate whether the ratio of the first quantity to the second quantity is greater than the third threshold, wherein the first quantity is the number of edge vertices in any first sub-region corresponding to the current axis, the second quantity is the number of edge vertices in the first group of edge vertices, and the first sub-region is obtained by dividing the current Trisoup node into at least two sub-regions in a direction perpendicular to the current axis. The second context is used to indicate whether the first group of edge vertices are all distributed in the same fourth sub-region, wherein the fourth sub-region belongs to the first sub-region corresponding to the other two axes besides the current axis; The third context is used to represent the distribution information of the original point cloud among the neighboring nodes of the current Trisoup node. An electronic device includes a processor and a memory, the memory storing a program or instructions executable on the processor, the program or instructions being executed by the processor to implement the steps of the point cloud decoding method as claimed in any one of claims 1 to 21, or to implement the steps of the point cloud encoding method as claimed in claims 22 to 46. A readable storage medium storing a program or instructions that, when executed by a processor, implement the point cloud decoding method as described in any one of claims 1 to 21, or the point cloud encoding method as described in any one of claims 22 to 46. A chip includes a processor and a communication interface coupled to the processor, the processor being configured to run a program or instructions to implement the steps of the point cloud decoding method as described in any one of claims 1 to 21, or to implement the steps of the point cloud encoding method as described in claims 22 to 46.

Citation Information

Patent Citations

  • Point cloud encoding and decoding method, encoding device and decoding device

    CN109889840A

  • Three-dimensional scanning data processing method and device, electronic equipment and storage medium

    CN115439631A

  • Point cloud processing method and device, encoder, decoder and readable storage medium

    CN117223287A

  • Method for decoding and encoding a 3D point cloud

    CN117795554A

  • Method for encoding and decoding a 3D point cloud, encoder, decoder

    WO2024082108A1