Point cloud encoding processing method and apparatus, point cloud decoding processing method and apparatus, and device
By dividing the vertices of the nodes and constructing triangular patches, the distortion problem of the triangular patch algorithm when dealing with discontinuous point cloud regions is solved, and more accurate point cloud reconstruction is achieved.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- VIVO MOBILE COMM CO LTD
- Filing Date
- 2026-01-07
- Publication Date
- 2026-07-23
AI Technical Summary
In existing technologies, the triangular patch algorithm suffers from severe distortion after encoding and decoding when processing multiple discontinuous point cloud regions, and cannot effectively reflect the distribution of point clouds within a node.
By dividing the vertices of the nodes, multiple sets of triangular patches of vertices are constructed, and the triangular patches corresponding to each set of vertices are constructed to obtain the reconstructed point cloud.
It reduces distortion after encoding and decoding, and can better reflect the distribution of point clouds within nodes, especially when there are multiple discontinuous point cloud regions.
Smart Images

Figure CN2026071011_23072026_PF_FP_ABST
Abstract
Description
Point cloud encoding processing method, point cloud decoding processing method, apparatus and equipment
[0001] Cross-references to related applications
[0002] This application claims priority to Chinese Patent Application No. 202510058270.6, filed in China on January 14, 2025, the entire contents of which are incorporated herein by reference. Technical Field
[0003] This application belongs to the field of computer technology, specifically relating to a point cloud encoding processing method, a point cloud decoding processing method, an apparatus, and a device. Background Technology
[0004] Point clouds are a representation of three-dimensional objects or scenes, consisting of a set of randomly distributed discrete points in space that express the spatial structure and surface properties of the object or scene. To accurately reflect spatial information, a considerable number of discrete points are required. To reduce the bandwidth consumed during point cloud data storage and transmission, point cloud data needs to be encoded and compressed. Point cloud data typically consists of geometric information describing the location, such as three-dimensional coordinates (x, y, z), and attribute information for that location, such as color (red (R), green (G), blue (B)) or reflectivity. In the point cloud encoding and compression process, the encoding of geometric information and attribute information are performed separately.
[0005] In related technologies, the Triangle Soup (trisoup) algorithm is used to compress and encode geometric information. The trisoup algorithm uses the vertices on the edges of the node to be encoded to represent the intersection points of the original point cloud surface and the edges of the node. These vertices are then connected to a centroid located inside the node, forming multiple triangular facets. Downsampling is then performed on these triangular facets to obtain the reconstructed point cloud. However, in certain scenarios (e.g., when there are multiple discontinuous point cloud regions within the node to be encoded), the triangular facets constructed from the vertices of the node and a centroid located inside the node cannot accurately reflect the distribution of the point cloud within the node, resulting in significant distortion after encoding and decoding. Summary of the Invention
[0006] This application provides a point cloud encoding processing method, a point cloud decoding processing method, an apparatus, and a device, which can solve the problem of severe distortion after encoding and decoding.
[0007] Firstly, a point cloud encoding processing method is provided, executed by the encoding end, the method comprising:
[0008] The encoding end divides the vertices corresponding to the node to be encoded based on the first partitioning condition, resulting in multiple sets of vertices.
[0009] The encoding end constructs the triangular facets corresponding to each of the multiple sets of vertices;
[0010] The encoding end obtains the reconstructed point cloud based on the constructed triangular facets.
[0011] Secondly, a point cloud decoding processing method is provided, executed by the decoding end, the method including:
[0012] The decoding end divides the vertices corresponding to the node to be decoded based on the second partitioning condition or the fourth indication information in the bitstream, and obtains multiple sets of vertices.
[0013] The decoding end constructs the triangular facets corresponding to each of the multiple sets of vertices;
[0014] The decoding end obtains the reconstructed point cloud based on the constructed triangular facets.
[0015] Thirdly, a point cloud encoding processing device is provided, comprising:
[0016] The partitioning module is used to partition the vertices corresponding to the node to be encoded based on the first partitioning condition, and obtain multiple sets of vertices.
[0017] The construction module is used to construct the triangular facets corresponding to each set of vertices in the plurality of sets of vertices;
[0018] The acquisition module is used to acquire reconstructed point clouds based on the constructed triangular facets.
[0019] Fourthly, a point cloud decoding processing device is provided, comprising:
[0020] The partitioning module is used to partition the vertices corresponding to the node to be decoded based on the second partitioning condition or the fourth indicator information in the bitstream, to obtain multiple sets of vertices.
[0021] The construction module is used to construct the triangular facets corresponding to each set of vertices in the plurality of sets of vertices;
[0022] The acquisition module is used to acquire reconstructed point clouds based on the constructed triangular facets.
[0023] Fifthly, an encoding / decoding apparatus is provided, the apparatus being configured to perform the steps of the method described in the first aspect, or to implement the steps of the method described in the second aspect.
[0024] In a sixth 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.
[0025] In a seventh aspect, an electronic device is provided, including a processor and a communication interface, wherein the processor is used for:
[0026] Based on the first partitioning condition, the vertices corresponding to the node to be encoded are partitioned to obtain multiple sets of vertices;
[0027] Construct the triangular facet corresponding to each set of vertices in the plurality of sets of vertices;
[0028] Reconstructed point clouds are obtained based on the constructed triangular facets;
[0029] or,
[0030] The processor is used for:
[0031] Based on the second partitioning condition or the fourth indicator information in the bitstream, the vertices corresponding to the node to be decoded are partitioned to obtain multiple sets of vertices;
[0032] Construct the triangular facet corresponding to each set of vertices in the plurality of sets of vertices;
[0033] Reconstructed point clouds are obtained based on the constructed triangular facets.
[0034] Eighthly, an electronic device is provided, 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.
[0035] A ninth aspect provides a readable storage medium 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.
[0036] In a tenth aspect, a coding / decoding system is provided, comprising: an encoding end device and a decoding end device, wherein the encoding end device is configured to perform the steps of the method described in the first aspect, and the decoding end device is configured to perform the steps of the method described in the second aspect.
[0037] Eleventhly, 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.
[0038] In a twelfth 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.
[0039] In this embodiment, the encoding end divides the vertices corresponding to the node to be encoded based on a first partitioning condition to obtain multiple sets of vertices; the encoding end constructs a triangular facet corresponding to each set of vertices; the encoding end obtains a reconstructed point cloud based on the constructed triangular facets. The decoding end divides the vertices corresponding to the node to be decoded based on a second partitioning condition or a fourth indication information in the bitstream to obtain multiple sets of vertices; the decoding end constructs a triangular facet corresponding to each set of vertices; the decoding end obtains a reconstructed point cloud based on the constructed triangular facets. In this way, by dividing the vertices corresponding to the node (the node to be encoded or decoded) and constructing triangular patches for each group of vertices, the constructed triangular patches can better reflect the distribution of the point cloud within the node compared to constructing triangular patches based on all vertices of the node to be encoded / decoded, thus reducing distortion. In addition, when there are multiple discontinuous point cloud regions within the node, by dividing the vertices corresponding to the node and constructing triangular patches for each group of vertices, the constructed triangular patches can better reflect the distribution of the point cloud within the node with multiple discontinuous point cloud regions, thereby reducing distortion. Attached Figure Description
[0040] Figure 1 is a schematic diagram of an encoding / decoding system provided in an embodiment of this application;
[0041] Figure 2a is one of the coding flowcharts provided in the embodiments of this application;
[0042] Figure 2b is a second encoding flowchart provided in an embodiment of this application;
[0043] Figure 3a is one of the decoding flowcharts provided in the embodiments of this application;
[0044] Figure 3b is a second decoding flowchart provided in an embodiment of this application;
[0045] Figure 4 is a flowchart of a point cloud encoding processing method provided in an embodiment of this application;
[0046] Figure 5 is a schematic diagram of a triangular facet provided in an embodiment of this application;
[0047] Figure 6 is a schematic diagram of a point cloud distribution provided in an embodiment of this application;
[0048] Figure 7 is a flowchart of a point cloud decoding processing method provided in an embodiment of this application;
[0049] Figure 8 is a schematic diagram of a point cloud encoding processing device provided in an embodiment of this application;
[0050] Figure 9 is a schematic diagram of a point cloud decoding processing device provided in an embodiment of this application;
[0051] Figure 10 is a schematic diagram of the structure of an electronic device provided in an embodiment of this application;
[0052] Figure 11 is a schematic diagram of the structure of a terminal provided in an embodiment of this application. Detailed Implementation
[0053] 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.
[0054] 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.
[0055] Before introducing the technical solutions provided in the embodiments of this application, the meanings of some terms will be explained first.
[0056] 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.
[0057] 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.
[0058] 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).
[0059] 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.
[0060] Figure 1 is 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 and decoding point cloud data (including encoding or decoding).
[0061] 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.
[0062] In the example of Figure 1, source device 100 includes a data source 101, a memory 102, an encoder 200, and an output interface 104. Destination device 110 includes an input interface 111, a 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.
[0063] 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.
[0064] In some examples, source device 100 and destination device 110 can perform unidirectional or bidirectional data transmission. In the case of bidirectional data transmission, source device 100 and destination device 110 can operate in a substantially symmetrical manner, i.e., each of source device 100 and destination device 110 includes an encoder and a decoder.
[0065] Data source 101 represents the source of point cloud data (i.e., raw, unencoded point cloud data) and provides the point cloud data to encoder 200, 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).
[0066] Encoder 200 encodes captured, pre-captured, or computer-generated data. Encoder 200 can rearrange point cloud data from the received order (sometimes referred to as the "display order") according to the encoded order. 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.
[0067] 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 decoder 300. Additionally or alternatively, memories 102 and 113 may respectively store software instructions executable by, for example, encoder 200 and decoder 300. Although memories 102 and 113 are shown separately from encoder 200 and decoder 300 in this example, it should be understood that encoder 200 and decoder 300 may also include internal memory for functionally similar or equivalent purposes. If encoder 200 and 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 encoder 200 and input to 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.
[0068] 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.
[0069] 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.
[0070] 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.
[0071] 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).
[0072] Destination device 110 can access encoded point cloud data from a server, for example, via a wireless channel (e.g., WiFi connection) or a wired connection (e.g., Digital subscriber line (DSL), cable modem, etc.) for accessing encoded point cloud data stored on the server.
[0073] 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 Institute of Electrical and Electronics Engineers (IEEE) 802.11 or IEEE 802.15 standard (e.g., ZigBee™ transmission mode), Bluetooth standard, or other physical components. In the example where output interface 104 and input interface 111 include wireless components, output interface 104 and input interface 111 can be configured to operate according to Wireless Fidelity (WIFI), Ethernet, cellular networks (such as 4G (4G)... th Generation 4G mobile communication networks, Long Term Evolution (LTE), Advanced LTE, 5G (5G) th Generation 5G mobile communication network, sixth generation (6G) th Data, such as encoded point cloud data, is transmitted through Generation 6G mobile communication networks.
[0074] 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.
[0075] 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.
[0076] The encoder 200 and 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 wholly or partially in software, 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.
[0077] The basic principles of the encoder 200 and decoder 300 provided in this application embodiment are introduced below, taking the G-PCC and AVS-PCC codec frameworks as examples.
[0078] The encoding and decoding frameworks of G-PCC and AVS-PCC are largely the same. Figure 2a shows the encoding flowchart executed by the encoder based on the AVS-PCC encoding framework, and Figure 2b shows the encoding flowchart executed by the encoder based on the MPEG G-PCC encoding framework. The encoder mentioned above can be the encoder 200 shown in Figure 1. The above encoding frameworks can generally be divided into a geometric coordinate information encoding process and an 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.
[0079] For the geometric information encoding process, the encoding flow executed by encoder 200 is as follows:
[0080] 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, encoder 200 may not perform pre-processing.
[0081] 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, trisoup-based geometric coding, and prediction tree-based prediction coding. Among them:
[0082] 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.
[0083] 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.
[0084] Geometric encoding based on triangulation: The point cloud is divided into blocks of a certain size, and the intersection points (called vertices) of the point cloud surface at the edges of the blocks are located. Geometric information is compressed by encoding whether there are intersection points on the edges of the blocks and the positions of the intersection points.
[0085] 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 representation, finally outputting 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).
[0086] 4. Geometric Reconstruction: Decoding and reconstructing the geometric information after geometric encoding.
[0087] For the attribute information encoding process, the encoding flow executed by encoder 200 is as follows:
[0088] 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.
[0089] 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.
[0090] In some examples, encoder 200 may not perform color transformation or attribute recoloring.
[0091] 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.
[0092] 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.
[0093] 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.
[0094] 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.
[0095] 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.
[0096] 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.
[0097] 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.
[0098] Hierarchical region adaptive transform coding refers to the process of transforming attribute information into the transform domain, which is called the transform coefficient.
[0099] 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.
[0100] 5. Entropy Coding: The quantized attribute residual information 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 encoder.
[0101] The 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 encoder 200 can transmit the encoded geometric bitstream and attribute bitstream together to the decoder 300.
[0102] Figure 3a shows a decoding flowchart executed by the decoder in the AVS-PCC-based decoding framework, and Figure 3b shows a decoding flowchart executed by the decoder in the MPEG G-PCC-based decoding framework. The decoder can be the decoder 300 shown in Figure 1. After receiving the compressed bitstream (i.e., attribute bitstream and geometric bitstream) transmitted by the encoder 200, the 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.
[0103] The decoding process performed by decoder 300 is as follows:
[0104] 1. Entropy Decoding: Perform entropy decoding on the geometric bitstream and attribute bitstream respectively to obtain geometric syntax elements and attribute syntax elements.
[0105] 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.
[0106] Octree-based geometric decoding: reconstructing the octree based on the geometric syntax elements obtained from parsing the geometric bitstream.
[0107] Geometric Decoding Based on Prediction Trees: Reconstructing the prediction tree based on the geometric syntax elements obtained from parsing the geometric bitstream.
[0108] Geometric Decoding Based on Triangle Representation: Reconstructing the triangular model based on the geometric syntax elements obtained from parsing the geometric bitstream.
[0109] 3. Geometric Reconstruction: Perform reconstruction to obtain the geometric coordinate information of the points in the point cloud.
[0110] 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.
[0111] 5. Dequantization: Dequantizes attribute syntax elements.
[0112] 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.
[0113] 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.
[0114] 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.
[0115] Referring to Figure 4, which is a flowchart of a point cloud encoding processing method provided in an embodiment of this application, the method can be applied to the encoding end. As shown in Figure 4, the point cloud encoding processing method includes the following steps:
[0116] Step 11: The encoding end performs partitioning processing on the vertices corresponding to the node to be encoded based on the first partitioning condition, resulting in multiple sets of vertices;
[0117] Step 12: The encoding end constructs the triangular facets corresponding to each group of vertices in the multiple groups of vertices;
[0118] Step 13: The encoding end obtains the reconstructed point cloud based on the constructed triangular facets.
[0119] The node to be encoded can be any node. The vertex corresponding to the node to be encoded can be the vertex on the edge of the node to be encoded, or it can be expressed as the intersection of the original point cloud surface and the edge of the node to be encoded.
[0120] In one implementation, the node to be encoded can be understood or replaced with the current node.
[0121] In one implementation, the node to be encoded can be understood as or replaced by a trisoup node. The vertex corresponding to the node to be encoded can be understood as or replaced by the vertices on the edges of the trisoup node.
[0122] It should be noted that the first partitioning condition can be predefined or preconfigured by the protocol, and this embodiment does not limit the first partitioning condition.
[0123] Optionally, the first partitioning condition is associated with at least one of the following:
[0124] The number of vertices; the distribution of vertices; the centroid offset; the point cloud distribution.
[0125] In one implementation, the first partitioning condition can be associated with the number of vertices in the vertex group obtained after the vertex partitioning.
[0126] In one implementation, the first partitioning condition can be associated with the distribution of vertices in the vertex group obtained after the vertex partitioning.
[0127] In one implementation, the first partitioning condition can be associated with the centroid offset of the vertex group obtained after the vertex partitioning.
[0128] In one implementation, the first partitioning condition can be associated with the point cloud distribution near the centroid of the vertex group obtained after the vertex partitioning.
[0129] Each set of vertices can correspond to a centroid, and the triangular facets corresponding to each set of vertices can be constructed by using each set of vertices and their corresponding centroids.
[0130] The step of obtaining the reconstructed point cloud based on the constructed triangular facets may include: performing ray tracing sampling on the constructed triangular facets to obtain the reconstructed point cloud.
[0131] It should be noted that the encoding end divides the vertices corresponding to the node to be encoded based on the first partitioning condition to obtain multiple sets of vertices, constructs the triangular facets corresponding to each set of vertices, and obtains the reconstructed point cloud based on the constructed triangular facets. This can be considered as enabling the vertex partitioning scheme.
[0132] The decoding end divides the vertices corresponding to the node to be decoded based on the second partitioning condition to obtain multiple sets of vertices, constructs triangular patches corresponding to each set of vertices, and obtains the reconstructed point cloud based on the constructed triangular patches, which can be considered as enabling the vertex partitioning scheme.
[0133] In related technologies, the decoding process corresponding to the trisoup algorithm includes the following three steps:
[0134] 1) Decode the trisoup edge vertices located on the trisoup edge;
[0135] 2) Construct a trisoup triangle on the trisoup node;
[0136] 3) Determine the decoding points by trisoup triangle voxelization.
[0137] The vertex partitioning scheme proposed in this application applies to the second process, specifically to the process of determining the centroid of each trisoup node.
[0138] With the trisoup geometric encoding method enabled, the encoding end decides whether the vertex partitioning scheme of this embodiment is enabled. In this case, an enable flag of 1 bit can be transmitted to maintain the consistency between the encoding and decoding ends; or, the vertex partitioning scheme of this embodiment can be enabled on both the encoding and decoding ends.
[0139] When the vertex partitioning scheme of this application embodiment is enabled, the number of node centroids is allowed to be n, and the specific number of centroids is related to the number of times the vertex partitioning (or segmentation) is successfully performed.
[0140] In one implementation, the vertices corresponding to the node to be encoded can be divided through an iterative segmentation process.
[0141] The iterative segmentation process is as follows:
[0142] (1) On one of the three axes x, y, and z, determine whether the vertex can be divided into two parts on this axis; if it can, continue the subsequent process of the vertex partitioning scheme; otherwise, stop executing the vertex partitioning scheme.
[0143] The selected axis can be the principal axis direction of the triangular facet formed by the vertices of this part;
[0144] The judgment criteria are as follows: when the number of vertices in the two groups after segmentation (or expressed as two parts of vertices) is greater than or equal to 3, and the distance between the two vertices closest to the centroid in the corresponding principal axis direction is greater than or equal to a certain threshold th1 (the quantization step size of the vertex), it can be considered that the vertex can be segmented into two parts in that axis.
[0145] (2) When a set of vertices has a centroid offset, it is judged to pass the eligible process only if the centroid offset value is zero; if there is no centroid offset value, it is judged to pass the eligible process by default. When at least one set of vertices in the two sets of vertices is judged to pass the eligible process, the subsequent process of the vertex partitioning scheme continues to be executed; otherwise, the vertex partitioning scheme is stopped.
[0146] (3) Determine whether to perform vertex segmentation along this axis based on the original point cloud around the centroid. If successful, continue with the subsequent process of the vertex segmentation scheme; otherwise, stop executing the vertex segmentation scheme.
[0147] Among them, it can search for the original point cloud within a certain distance (distance, dist) around the centroid that has not been offset. When the number of original point clouds is less than or equal to a certain threshold th2, it is determined that the vertex partitioning scheme is executed, and the 1-bit Flag information is encoded and synchronized with the decoding end.
[0148] (4) For each group of vertices after segmentation, jump to step (1) for judgment and processing.
[0149] For each group of vertices obtained from the segmentation, its principal axis direction and possible centroid offset will be calculated independently. Then, each group of vertices will be used to construct triangular patches independently. Finally, the reconstructed point cloud will be obtained by ray tracing sampling of the triangular patches.
[0150] The process of determining the principal axis direction is as follows: A centroid is calculated using all the vertices within the node. Then, the x, y, and z directions are assumed as the principal axis directions, and the arrangement order of the vertices is calculated. Triangular facets are constructed with the centroid. Finally, the sum of the normal vectors of each triangular facet is calculated, and the direction with the largest sum of normal vectors is determined as the principal axis direction.
[0151] In one embodiment, when dividing along one of the three axes x, y, and z in step (1), if the principal axis direction of the previous division is the x-axis, then for the two sets of vertices obtained after the division in this direction, the corresponding principal axis direction is calculated for each of the two sets of vertices. If the principal axis direction is still the x-axis, then the division is not continued; if the calculated principal axis direction is different from the principal axis direction of the previous division and is no longer the x-axis, then the judgment on whether subsequent division is possible continues.
[0152] Within the G-PCC coding framework of related technologies, geometric compression algorithms are mainly divided into octree and trisoup. Trisoup, after dividing the original point cloud into octrees to a certain level, constructs triangular patches within each node to fit the surface of the original point cloud passing through that node, thus replacing the placeholder code encoding from the current level to the bottom level (node size 1x1x1) in the octree. As shown in Figure 5, the triangular patch within each node is obtained by combining the vertices (V1, V2, V3, V4) on the node's edges with a centroid (C) located inside the node. The positions of these points are directly related to the positions of the original point cloud; therefore, to ensure consistency in reconstruction between the encoder and decoder, the vertex position information and centroid position information need to be encoded. Finally, these triangular patches are sampled to obtain the reconstructed point cloud.
[0153] The centroid vertex C is encoded as the average centroid C of all vertices. mean The drift value. The vector direction is the normal and direction of all triangular facets.
[0154] In related technologies, the process of geometric compression using the trisoup algorithm includes:
[0155] (1) Determine the position of the vertex on the edge of the trisoup node. For each edge of each trisoup node, consider the original point cloud distribution within the four neighboring nodes sharing this edge, determine whether there is a vertex on this edge, and if the vertex exists, quantize, encode and transmit its relative position with the edge it belongs to.
[0156] (2) Adjust the positions of vertices involved in the construction of triangles within the trisoup node. Due to the differences between nodes, the vertices on the edges may need to be differentiated during reconstruction: in some cases, some vertices are prohibited from participating in the construction of triangles of the current node; in other cases, the corner vertex of the node is used to replace the vertices on the edges connected to that corner vertex in the triangle reconstruction process.
[0157] (3) Determine the centroid position of each node. First, calculate the weighted average position of the vertex coordinates on all edges of the current node as the initial centroid position, where the weight is the distance between two adjacent vertices; then, based on the original point cloud distribution around the initial centroid, obtain the offset centroid position, quantize and encode the magnitude of the offset vector, and transmit it to the decoding end.
[0158] (4) Construction of triangular facets. For each trisoup node, the edges and face vertices are arranged in a certain order, and then combined with the offset centroids in pairs to construct triangular facets. The certain order here is related to the principal axis direction (that is, the triangular facet normal vector) and the largest axial direction.
[0159] (5) 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 projected area of the triangular facets and the axis with the smallest area) to obtain the reconstructed point cloud.
[0160] The basic idea of trisoup technology is to use the vertices on the edges to represent the intersection points of the original point cloud surface and the edges of the current node. Then, by connecting these vertices to a centroid located inside the node, multiple triangular surfaces are formed. The reconstructed point cloud is then obtained by downsampling on the triangular surfaces. When the original point cloud surface is continuous within the node, a centroid may effectively compensate for the shortcomings of using only edge vertices to construct triangular patches. However, the larger the node, the more complex the distribution of the original point cloud inside it becomes. A single centroid will not be sufficient to fully characterize the distribution of the point cloud within the node. As shown in Figure 6, when there are multiple discontinuous point cloud regions (such as point cloud region 1 and point cloud region 2) within the node, the centroid generation method and triangular patch construction rules of related technologies obviously have significant distortions.
[0161] In this embodiment, the encoding end performs a partitioning process on the vertices corresponding to the node to be encoded based on a first partitioning condition, obtaining multiple sets of vertices; the encoding end constructs a triangular facet corresponding to each set of vertices; and the encoding end obtains the reconstructed point cloud based on the constructed triangular facets. Thus, by partitioning the vertices corresponding to the node to be encoded and constructing triangular facets for each set of vertices respectively, compared to constructing triangular facets from all vertices corresponding to the node to be encoded, the constructed triangular facets can better reflect the distribution of the point cloud within the node, thereby reducing distortion. Furthermore, when there are multiple discontinuous point cloud regions within the node to be encoded, by partitioning the vertices corresponding to the node to be encoded and constructing triangular facets for each set of vertices respectively, the constructed triangular facets can better reflect the distribution of the point cloud within the node with multiple discontinuous point cloud regions, further reducing distortion.
[0162] Optionally, the first partitioning condition includes at least one of the following:
[0163] The first condition includes: the number of vertices in each of the two groups of vertices obtained by division is greater than or equal to a first threshold, and the distance between the two vertices in the two groups of vertices that are closest to the centroid in the corresponding principal axis direction is greater than or equal to a second threshold.
[0164] The second condition includes: the target vertex group has no centroid offset, or the target vertex group has a centroid offset and the centroid offset value is zero.
[0165] The third condition includes: the number of point clouds within a preset range of the centroid of the target vertex group is less than or equal to a third threshold.
[0166] The target vertex group is any one of the two groups of vertices obtained from the division.
[0167] The process of determining the principal axis direction of the target vertex group can be as follows: Calculate a centroid using all the vertices in the target vertex group, then calculate the arrangement order of the vertices using the x, y, and z directions as assumed principal axis directions, construct triangular facets with the centroid, and finally calculate the sum of the normal vectors of each triangular facet. The direction with the largest sum of normal vectors is determined as the principal axis direction of the target vertex group.
[0168] In one implementation, the encoding end can partition the vertices corresponding to the node to be encoded based on a first condition, resulting in multiple sets of vertices. The encoding end can iteratively partition the vertices after partitioning, provided the first condition is met, until the first condition is no longer met. This allows the encoding end to consider the number and distribution of vertices after partitioning when deciding whether to proceed with vertex partitioning, ensuring that the triangular patches constructed after vertex partitioning can better reflect the distribution of point clouds within nodes with multiple discontinuous point cloud regions.
[0169] In one implementation, the encoding end can divide the vertices corresponding to the node to be encoded based on a second condition, resulting in multiple sets of vertices. The encoding end can iteratively divide the vertices after division, provided that the second condition is met, until the second condition is no longer met. Thus, the encoding end can consider the centroid offset after vertex division to decide whether to continue vertex division, so that the triangular patches constructed after vertex division can better reflect the distribution of point clouds within nodes with multiple discontinuous point cloud regions.
[0170] In one implementation, the encoding end can partition the vertices corresponding to the node to be encoded based on a third condition, resulting in multiple sets of vertices. The encoding end can iteratively partition the vertices after partitioning, provided that the third condition is met, until the third condition is no longer met. Thus, the encoding end can consider the point cloud distribution after vertex partitioning to decide whether to perform vertex partitioning, so that the triangular patches constructed after vertex partitioning can better reflect the distribution of point clouds within nodes with multiple discontinuous point cloud regions.
[0171] It should be noted that the target vertex group can be searched for the original point cloud within a preset range around the centroid of the target vertex group without offset. If the number of original point clouds within the preset range of the centroid of the target vertex group is less than or equal to the third threshold, then the target vertex group satisfies the third condition.
[0172] Optionally, the step of partitioning the vertices corresponding to the node to be encoded based on the first partitioning condition to obtain multiple sets of vertices includes:
[0173] The vertices corresponding to the node to be encoded are divided into two groups of vertices;
[0174] Determine whether the resulting vertex group satisfies at least one of the first and second conditions;
[0175] If it is determined that there exists a target vertex group in the obtained vertex group that satisfies at least one of the first condition and the second condition, then it is determined whether the target vertex group satisfies the third condition.
[0176] If the target vertex group is determined to satisfy the third condition, the target vertex group is further divided into two groups of vertices. The process then returns to the step of determining whether the divided vertex groups satisfy at least one of the first and second conditions, until none of the divided vertex groups satisfy the third condition, resulting in multiple groups of vertices.
[0177] In one implementation, determining whether the resulting vertex groups satisfy at least one of the first condition and the second condition may include: determining whether the two groups of vertices obtained from the division satisfy the first condition;
[0178] The step of determining whether the target vertex group satisfies the third condition when it is determined that there exists a target vertex group in the partitioned vertex group that satisfies at least one of the first and second conditions includes:
[0179] If the two groups of vertices obtained from the division satisfy the first condition, then determine whether the target vertex group in the two groups of vertices obtained from the division satisfies the third condition.
[0180] In one embodiment, determining whether the resulting vertex groups satisfy at least one of the first condition and the second condition may include: determining whether the two groups of vertices obtained from the division satisfy the second condition;
[0181] The step of determining whether the target vertex group satisfies the third condition when it is determined that there exists a target vertex group in the partitioned vertex group that satisfies at least one of the first and second conditions includes:
[0182] If the two groups of vertices obtained from the division satisfy the second condition, then determine whether the target vertex group in the two groups of vertices obtained from the division satisfies the third condition.
[0183] In this embodiment, the vertices corresponding to the node to be encoded are iteratively divided by at least one of the first and second conditions and the third condition. When there are multiple discontinuous point cloud regions in the node to be encoded, the triangular patches constructed by each group of vertices can correspond to the point clouds of different point cloud regions in the node to be encoded. Thus, the reconstructed point cloud obtained by the triangular patches can more realistically reflect the original point cloud in the node to be encoded, thereby reducing distortion.
[0184] Optionally, determining whether the resulting vertex group satisfies at least one of the first condition and the second condition includes:
[0185] Determine whether the two sets of vertices obtained from the partitioning satisfy the first condition;
[0186] If the two groups of vertices obtained by the division satisfy the first condition, determine whether there is a target vertex group in the two groups of vertices that satisfies the second condition;
[0187] The step of determining whether the target vertex group satisfies the third condition when it is determined that there exists a target vertex group in the partitioned vertex group that satisfies at least one of the first and second conditions includes:
[0188] If it is determined that there exists a target vertex group that satisfies the second condition, then it is determined whether the target vertex group satisfies the third condition.
[0189] In one implementation, the process of dividing the vertices corresponding to the node to be encoded based on the first partitioning condition to obtain multiple sets of vertices includes the following steps:
[0190] (1) Divide the vertices corresponding to the node to be encoded into two groups of vertices;
[0191] (2) Determine whether the two sets of vertices obtained by the partitioning satisfy the first condition;
[0192] If the two sets of vertices obtained by the partition do not meet the first condition, the subsequent steps of the partitioning process are terminated; otherwise, step (3) is continued.
[0193] (3) If it is determined that the two groups of vertices obtained by the division satisfy the first condition, determine whether there is a target vertex group that satisfies the second condition in the two groups of vertices obtained by the division;
[0194] If there is no target vertex group that satisfies the second condition in the two groups of vertices obtained by partitioning, the subsequent steps of the partitioning process are terminated; otherwise, step (4) is continued.
[0195] (4) If it is determined that there exists a target vertex group that satisfies the second condition, determine whether the target vertex group satisfies the third condition;
[0196] If no target vertex group satisfies the third condition, the subsequent steps of the partitioning process are terminated; otherwise, step (5) is continued.
[0197] (5) If the target vertex group satisfies the third condition, the target vertex group is further divided into two groups of vertices. Then, step (2) is returned to perform iterative division until the resulting vertex groups do not satisfy the third condition.
[0198] In one embodiment, the division to obtain two sets of vertices includes: dividing along the principal axis to obtain two sets of vertices.
[0199] In one embodiment, in step (2), the principal axis direction is calculated for the two groups of vertices obtained by division. If the principal axis direction of a certain group of vertices is the same as the principal axis direction of the previous division, the division of that group of vertices will not be performed again. If the principal axis direction of a certain group of vertices is different from the principal axis direction of the previous division, the second condition will be judged for that group of vertices.
[0200] In this embodiment, the vertices corresponding to the node to be encoded are iteratively divided by the first condition, the second condition, and the third condition. The number of vertices, the distribution of vertices, the centroid offset, and the point cloud distribution are taken into account when dividing the vertices corresponding to the node to be encoded. The reconstructed point cloud obtained by constructing triangular patches from each group of vertices can more realistically reflect the original point cloud within the node to be encoded, thereby further reducing distortion.
[0201] Optionally, the division into two groups of vertices includes: dividing into two groups of vertices along a first coordinate axis, wherein the first coordinate axis is the main axis direction;
[0202] or,
[0203] The division to obtain two sets of vertices includes: dividing the vertices in the direction of the first coordinate axis to obtain two sets of vertices; the method further includes: encoding first indication information into the bitstream, wherein the first indication information is used to indicate the direction of the first coordinate axis.
[0204] In one embodiment, when the direction of the first coordinate axis is not the main axis direction, the first indication information is encoded into the bitstream, and the first indication information is used to indicate the direction of the first coordinate axis.
[0205] In one implementation, dividing the vertices corresponding to the node to be encoded into two groups of vertices may include dividing the vertices corresponding to the node to be encoded into two groups of vertices along a first coordinate axis. For example, the first coordinate axis may or may not be a principal axis. The process of determining the principal axis direction corresponding to the node to be encoded can be as follows: A centroid is calculated using all the vertices within the node to be encoded. Then, with x, y, and z directions as assumed principal axis directions and the vertex arrangement order calculated, triangular facets are constructed with the centroid. Finally, the sum of the normal vectors of each triangular facet is calculated, and the direction with the largest sum of normal vectors is determined as the principal axis direction.
[0206] It should be noted that when dividing the vertices into two groups, the vertices located in the negative half-axis of the first coordinate axis can be considered as one group of vertices, and the vertices located in the positive half-axis of the first coordinate axis can be considered as the other group of vertices.
[0207] In this embodiment, two sets of vertices are obtained by dividing the data along the first coordinate axis, which is the main axis. This allows the decoding end to reconstruct the point cloud in a manner consistent with the encoding end, performing vertex division along the main axis, thus achieving consistency between the encoding and decoding ends. Alternatively, the encoding end encodes first indication information into the bitstream. This first indication information indicates the first coordinate axis direction, enabling the decoding end to parse the first indication information in the bitstream and perform vertex division along the first coordinate axis direction indicated by the first indication information, achieving consistency between the encoding and decoding ends. The reconstructed point cloud obtained by the decoding end through the triangular patches constructed from the divided sets of vertices can more realistically reflect the original point cloud, thereby reducing distortion.
[0208] Optionally, the method further includes:
[0209] The encoding end encodes the second indication information into the bitstream, and the second indication information is used to indicate the vertex group that satisfies the third condition.
[0210] In one implementation, if it is determined that the target vertex group satisfies the third condition, the second indication information corresponding to the target vertex group can be set to a second preset value. The decoding end can parse the second indication information in the bitstream to determine whether the target vertex group satisfies the third condition, thereby determining whether to iteratively divide the target vertex group to achieve consistency with the encoding end.
[0211] In addition, the second preset value can be 0 or 1, or "true" or "false". This embodiment does not limit the specific implementation of the second preset value.
[0212] In this embodiment, the encoding end encodes the second indication information into the bitstream. The second indication information is used to indicate the vertex group that meets the third condition. Thus, the decoding end can parse the second indication information in the bitstream and determine whether to continue dividing the target vertex group through the second indication information. This achieves consistency in the vertex division rules between the encoding and decoding ends. The reconstructed point cloud obtained by the decoding end through the triangular facets constructed from each group of vertices can more realistically reflect the original point cloud, thereby reducing distortion.
[0213] Optionally, constructing the triangular facet corresponding to each set of vertices in the plurality of sets of vertices includes:
[0214] Determine the centroid position and centroid offset value for each group of vertices in the plurality of vertices;
[0215] Construct the triangular facet corresponding to each group of vertices based on each group of vertices and its corresponding centroid position;
[0216] The centroid offset value is encoded into the bitstream.
[0217] The encoding end can calculate the weighted average position of the vertex coordinates of each group of vertices as the initial centroid position, with the weights being the distance between adjacent vertices. Based on the original point cloud distribution around the initial centroid, the offset centroid position is obtained, and this offset centroid position is used as the centroid position corresponding to each group of vertices. The centroid offset value can characterize the offset of the offset centroid position relative to the initial centroid position.
[0218] It should be noted that the decoding end can parse the centroid offset value in the bitstream, determine the centroid position of each group of vertices in the multiple groups of vertices based on the centroid offset value in the bitstream, and construct the triangular facet corresponding to each group of vertices based on each group of vertices and its corresponding centroid position.
[0219] In this embodiment, the encoding end encodes the centroid offset value into the bitstream, so that the decoding end can parse the centroid offset value from the bitstream and construct the triangular facets corresponding to each group of vertices using the parsed centroid offset value. This ensures that the centroid offset values used by the encoding and decoding ends are consistent. The reconstructed point cloud obtained by the decoding end through the triangular facets constructed from each group of vertices can more realistically reflect the original point cloud, thereby reducing distortion.
[0220] Optionally, the encoding end performs partitioning processing on the vertices corresponding to the node to be encoded based on the first partitioning condition, including:
[0221] When the third indication information is the first preset value, the encoding end performs division processing on the vertex corresponding to the node to be encoded based on the first division condition;
[0222] The method further includes:
[0223] The encoding end encodes the third indication information into the bitstream.
[0224] The first preset value can be 0 or 1, or "true" or "false". This embodiment does not limit the specific implementation of the first preset value.
[0225] In this embodiment, the encoding end encodes the third indication information into the bitstream, so that the decoding end can perform vertices corresponding to the node to be decoded based on the second partitioning condition when the third indication information is a first preset value. This achieves consistency in whether the encoding and decoding ends perform vertex partitioning, so that the reconstructed point cloud obtained by the constructed triangular facets can more realistically reflect the original point cloud, thereby reducing distortion.
[0226] Optionally, the method further includes:
[0227] The encoding end encodes the fourth indication information into the bitstream. The fourth indication information is used to indicate whether each group of vertices obtained during the division process of the vertices corresponding to the node to be encoded needs to be further divided.
[0228] In this embodiment, the encoding end encodes the fourth indication information into the bitstream, so that the decoding end can divide the vertices corresponding to the node to be decoded into two groups of vertices based on the fourth indication information in the bitstream, and then iteratively divide them to obtain multiple groups of vertices. This ensures consistency in whether the encoding and decoding ends perform vertex division, so that the reconstructed point cloud obtained by the constructed triangular facets can more realistically reflect the original point cloud, thereby reducing distortion.
[0229] Optionally, the method further includes:
[0230] The encoding end encodes the fifth indication information into the bitstream, and the fifth indication information is used to indicate whether the node to be encoded needs to be divided.
[0231] For example, the encoder can transmit 1 bit to indicate whether the node to be encoded (i.e., the initial node) needs to be partitioned. If partitioning is required, then 2 bits need to be transmitted to indicate whether the two groups of vertices obtained in the previous step need to be further partitioned (in these 2 bits, the first bit is the partition identifier of the vertex located in the negative half-axis of the partition axis, and the second bit is the partition identifier of the vertex located in the positive half-axis of the partition axis). If there are still vertex groups that need to be further partitioned in the two groups of vertices obtained in the first step, then 2 bits are transmitted for the vertex groups that need to be partitioned to indicate the partition identifiers of the two groups of vertices obtained from the partitioning, and so on, until all the partitioned vertex groups can no longer be partitioned.
[0232] For example:
[0233] The bit information carried in the bitstream includes: 1|11|1000|00; the first 1 (the fifth indicator information) represents the division of the node to be encoded (which can be considered as the initial vertex group 0), and the bits other than the first 1 are the fourth indicator information; the second 1 indicates that vertex group 1 located on the negative half-axis obtained from the first division needs to be further divided, the third 1 indicates that vertex group 2 located on the positive half-axis obtained from the first division needs to be further divided; the fourth 1 indicates that after vertex group 1 is further divided, vertex group 3 located on the negative half-axis needs to be further divided, the first 0 indicates that after vertex group 1 is further divided, vertex group 4 located on the positive half-axis does not need to be further divided, the second 0 indicates that after vertex group 2 is further divided, vertex group 5 located on the negative half-axis does not need to be further divided, the third 0 indicates that after vertex group 2 is further divided, vertex group 6 located on the positive half-axis does not need to be further divided; the fourth and fifth 0s indicate that the two groups of vertices obtained from the further division of vertex group 3 do not need to be further divided, and the division of this node ends here.
[0234] For the decoding end, only the first bit needs to be decoded; the number of subsequent bits to decode depends on the bit values decoded in the previous sequence. Then, based on all the decoded bits, the current node can be divided into multiple groups of vertices, each of which can be independently reconstructed into a point cloud.
[0235] In this embodiment, the encoding end encodes the fifth indication information into the bitstream, so that the decoding end can determine whether the node to be decoded needs to be divided based on the fifth indication information, thus achieving consistency between the encoding and decoding ends in whether vertex division is performed, and enabling the reconstructed point cloud obtained by the constructed triangular facets to reflect the original point cloud more realistically, thereby reducing distortion.
[0236] The following example will be used to further illustrate this point:
[0237] Example:
[0238] With trisoup enabled, set the enableFlag to indicate whether the vertex partitioning scheme is enabled, or to ensure that the vertex partitioning scheme is always enabled.
[0239] Step (1): For each trisoup node, determine the vertex existence flag and quantize the vertex position (if it exists) for each edge.
[0240] Step (2): Rearrange the non-repeating edges in lexicographical order.
[0241] Step (3): Use neighbor information to determine the context of the vertex presence flag and vertex position. Encode the vertex presence flag and quantized vertex position into a bitstream using a Dynamic Output Buffer (Dynamic OBUF) according to the encoding order determined in Step (2).
[0242] Step (4): Calculate the principal axis direction of the node and sort the vertices. The principal axis direction refers to the direction in which the centroid is calculated using all the vertices in the node, the order of the vertices is calculated in the x, y, and z directions, and then triangular faces are constructed with the centroid. Finally, the sum of the normal vectors of each triangular face is calculated, and the direction with the largest sum of normal vectors is the principal axis direction.
[0243] Step (5): Calculate the initial centroid value based on all vertices within the node; when centroid offset is enabled, calculate the centroid offset vector based on the original points surrounding the initial centroid. The direction of the centroid offset is determined by the normal sum of the triangular facets, and only the offset value of the centroid offset needs to be encoded. This includes whether the offset value is zero, whether the offset value is positive, and the absolute value of the quantized offset value.
[0244] Step (6): On one of the three axes of x, y, and z, determine whether the vertex can be divided into two groups of vertices (or described as two parts of vertices) on this axis; if it can, continue to step (7), otherwise jump to step (9).
[0245] The selected axis can be the principal axis direction of the triangular facet formed by the vertices of this part;
[0246] The judgment criteria are whether the first condition is met: when the number of vertices in the two groups after segmentation (or expressed as two parts of vertices) is greater than or equal to 3, and the distance between the two vertices closest to the centroid in the corresponding principal axis direction is greater than or equal to a certain threshold th1 (the quantization step size of the vertex), it can be considered that the vertex can be segmented into two parts in that axis.
[0247] Step (7): When a set of vertices has a centroid offset, encode whether the centroid offset value is zero. Only when the centroid offset value is zero is it determined to pass the eligible process; if there is no centroid offset value, it is assumed to pass the eligible process, that is, the judgment is based on whether the second condition is met. When at least one set of vertices in the two split sets is determined to pass the eligible process, continue to execute step (8); otherwise, jump to step (9).
[0248] Step (8): Determine whether to perform vertex segmentation along this axis based on the original point cloud around the centroid (judgment criterion is whether the third condition is met). If executed, encode Flag = 1; if not executed, encode Flag = 0. If executed successfully, re-execute step (6) for each group of vertices obtained from the segmentation; otherwise, execute step (9).
[0249] Among them, it can search for the original point cloud within a certain range of dist around the centroid that has not been offset. When the number of original point clouds is less than or equal to a certain threshold th2, it is determined that vertex segmentation is to be performed, and the encoding is Flag=1.
[0250] Step (9): For each group of vertices (or described as each part of the vertices), when the vertices are not segmented, encode the complete centroid offset value, dequantize the encoded centroid offset value, and combine it with the direction of the centroid offset to obtain the centroid of the group of vertices after offset.
[0251] Step (10): Selectively determine the face vertices for each node. The presence or absence of face vertices is written into the bitstream.
[0252] Step (11): Independently sort the vertex coordinates and face vertex coordinates of each part within each node, and then construct triangular patches using edge vertices, centroids, and face vertices. Nodes with the vertex partitioning scheme enabled will independently construct triangular patches for each group of vertices and their respective centroids obtained from the partitioning.
[0253] Step (12): Perform ray tracing sampling on the triangular facets to obtain the reconstructed point cloud.
[0254] This application proposes an adaptive approach to trisoup node, incorporating multiple centroids for triangular facet reconstruction. In this embodiment, vertices are adaptively divided based on the number of vertices within the node, their distribution, and centroid offset. The resulting vertices are further divided, iterating until the division conditions are no longer met. For vertices meeting the division conditions, the decoder retrieves relevant information from the bitstream to determine whether to perform the division, such as a 1-bit Flag. This 1-bit Flag indicates whether the original point cloud exists around the centroid. Division is performed when Flag = 1; otherwise, it is not. For each final divided vertex, its principal axis direction, centroid position, and centroid offset are independently calculated. Finally, triangular facet construction and sampling are performed to obtain the reconstructed point cloud.
[0255] Referring to Figure 7, which is a flowchart of a point cloud decoding processing method provided in an embodiment of this application, the method can be applied to the decoding end. As shown in Figure 7, the point cloud decoding processing method includes the following steps:
[0256] Step 21: The decoding end performs partitioning processing on the vertices corresponding to the node to be decoded based on the second partitioning condition or the fourth indication information in the bitstream, to obtain multiple sets of vertices;
[0257] Step 22: The decoding end constructs the triangular facets corresponding to each set of vertices in the plurality of sets of vertices;
[0258] Step 23: The decoding end obtains the reconstructed point cloud based on the constructed triangular facets.
[0259] The node to be decoded can be any node. The vertex corresponding to the node to be decoded can be a vertex on the edge of the node to be decoded. The node to be decoded corresponds to the node to be encoded at the encoding end.
[0260] In one implementation, the node to be decoded can be understood or replaced by the current node.
[0261] In one implementation, the node to be decoded can be understood as or replaced by a trisoup node. The vertex corresponding to the node to be decoded can be understood as or replaced by the vertices on the edges of the trisoup node.
[0262] It should be noted that the second partitioning condition can be predefined or preconfigured by the protocol; this embodiment does not limit the second partitioning condition. The second partitioning condition corresponds to the first partitioning condition at the encoding end, ensuring consistency in vertex partitioning at the encoding and decryption ends. The description of the second partitioning condition can be found in the description of the first partitioning condition at the encoding end, and will not be repeated here.
[0263] Optionally, the second partitioning condition is associated with at least one of the following:
[0264] The number of vertices; the distribution of vertices; the centroid offset; and the second indicator information in the bitstream.
[0265] Optionally, the second partitioning condition includes at least one of the following:
[0266] The first condition includes: the number of vertices in each of the two groups of vertices obtained by division is greater than or equal to a first threshold, and the distance between the two vertices in the two groups of vertices that are closest to the centroid in the corresponding principal axis direction is greater than or equal to a second threshold.
[0267] The second condition includes: the target vertex group has no centroid offset, or the target vertex group has a centroid offset and the centroid offset value is zero, wherein the target vertex group is any one of the two groups of vertices obtained by division;
[0268] The fourth condition includes: the second indication information in the bitstream is a second preset value.
[0269] It should be noted that the fourth condition on the decoding end corresponds to the third condition on the encoding end, thus ensuring consistency in vertex partitioning between the encoding and decoding ends.
[0270] Optionally, the step of partitioning the vertices corresponding to the node to be decoded based on the second partitioning condition to obtain multiple sets of vertices includes:
[0271] The vertices corresponding to the node to be decoded are divided into two groups of vertices;
[0272] Determine whether the resulting vertex group satisfies at least one of the first and second conditions;
[0273] If it is determined that there exists a target vertex group in the obtained vertex group that satisfies at least one of the first condition and the second condition, then it is determined whether the target vertex group satisfies the fourth condition.
[0274] If the target vertex group is determined to satisfy the fourth condition, the target vertex group is further divided into two groups of vertices. The process then returns to the step of determining whether the divided vertex groups satisfy at least one of the first and second conditions, until none of the divided vertex groups satisfy the fourth condition, resulting in multiple groups of vertices.
[0275] Optionally, determining whether the resulting vertex group satisfies at least one of the first condition and the second condition includes:
[0276] Determine whether the two sets of vertices obtained from the partitioning satisfy the first condition;
[0277] If the two groups of vertices obtained by the division satisfy the first condition, determine whether there is a target vertex group in the two groups of vertices that satisfies the second condition;
[0278] The step of determining whether the target vertex group satisfies the fourth condition when it is determined that there exists a target vertex group in the partitioned vertex group that satisfies at least one of the first and second conditions includes:
[0279] If it is determined that there exists a target vertex group that satisfies the second condition, then it is determined whether the target vertex group satisfies the fourth condition.
[0280] In one implementation, the process of dividing the vertices corresponding to the node to be decoded based on the second partitioning condition to obtain multiple sets of vertices includes the following steps:
[0281] (1) Divide the vertices corresponding to the node to be decoded into two groups of vertices;
[0282] (2) Determine whether the two sets of vertices obtained by the partitioning satisfy the first condition;
[0283] If the two sets of vertices obtained by the partition do not meet the first condition, the subsequent steps of the partitioning process are terminated; otherwise, step (3) is continued.
[0284] (3) If it is determined that the two groups of vertices obtained by the division satisfy the first condition, determine whether there is a target vertex group that satisfies the second condition in the two groups of vertices obtained by the division;
[0285] If there is no target vertex group that satisfies the second condition in the two groups of vertices obtained by partitioning, the subsequent steps of the partitioning process are terminated; otherwise, step (4) is continued.
[0286] (4) If it is determined that there exists a target vertex group that satisfies the second condition, determine whether the target vertex group satisfies the fourth condition;
[0287] If no target vertex group satisfies the fourth condition, the subsequent steps of the partitioning process are terminated; otherwise, step (5) is continued.
[0288] (5) If the target vertex group satisfies the fourth condition, the target vertex group is further divided into two groups of vertices. Then, step (2) is returned to perform iterative division until the resulting vertex groups do not satisfy the fourth condition.
[0289] In one embodiment, the division to obtain two sets of vertices includes: dividing along the principal axis to obtain two sets of vertices.
[0290] In one embodiment, in step (2), the principal axis direction is calculated for the two groups of vertices obtained by division. If the principal axis direction of a certain group of vertices is the same as the principal axis direction of the previous division, the division of that group of vertices will not be performed again. If the principal axis direction of a certain group of vertices is different from the principal axis direction of the previous division, the second condition will be judged for that group of vertices.
[0291] Optionally, the process of dividing the vertices corresponding to the node to be decoded based on the fourth indication information in the bitstream to obtain multiple sets of vertices includes:
[0292] The fifth indicator information in the bitstream is parsed;
[0293] When the fifth indication information indicates that division is required, the vertices corresponding to the node to be decoded are divided into two groups of vertices.
[0294] Based on the fourth indication information in the bitstream, the two groups of vertices obtained from the partitioning are iteratively partitioned to obtain multiple groups of vertices.
[0295] Optionally, the partitioning results in two sets of vertices, including:
[0296] Dividing the coordinates along the first coordinate axis yields two sets of vertices, with the first coordinate axis being the principal axis direction; or,
[0297] The first coordinate axis direction indicated by the first indication information in the bitstream is used to divide the data into two sets of vertices.
[0298] Optionally, constructing the triangular facet corresponding to each set of vertices in the plurality of sets of vertices includes:
[0299] Based on the centroid offset value in the bitstream, determine the centroid position of each group of vertices in the plurality of groups of vertices;
[0300] Based on each set of vertices and its corresponding centroid position, construct the triangular facet corresponding to each set of vertices.
[0301] Optionally, the decoding end performs a partitioning process on the vertices corresponding to the node to be decoded based on the second partitioning condition, including:
[0302] The decoding end parses the third indication information in the bitstream;
[0303] When the third indication information is the first preset value, the decoding end performs division processing on the vertices corresponding to the node to be decoded based on the second division condition.
[0304] The embodiments of this application can reduce distortion.
[0305] It should be noted that this embodiment is an implementation of the decoding end corresponding to the embodiment shown in Figure 4. For the specific implementation, please refer to the relevant description of the embodiment shown in Figure 4. In order to avoid repeated description, this embodiment will not be repeated, and the same beneficial effects can be achieved.
[0306] The following example will be used to further illustrate this point:
[0307] Example:
[0308] With trisoup enabled, the enableFlag indicates whether the vertex partitioning scheme is enabled, or whether the vertex partitioning scheme is always enabled.
[0309] Step (1): Determine the neighbor information for each edge as the context for subsequent entropy decoding.
[0310] Step (2): Use neighbor information to decode the vertex presence flag and quantized vertex position of each edge (only exists when vertex presence flag = 1).
[0311] Step (3): Calculate the initial value of the centroid based on all vertices within the node; when centroid offset is enabled, the direction of the centroid offset is determined by the normal sum of the triangular facets, and only the offset value of the centroid needs to be decoded, including whether the offset value is zero, whether the offset value is positive, and the absolute value of the quantized offset value.
[0312] Step (4): On one of the three axes x, y, and z, determine whether the vertex can be divided into two groups of vertices (or described as two parts of vertices) on this axis; if it can, continue to step (5), otherwise jump to step (7).
[0313] The selected axis can be the principal axis direction of the triangular facet formed by the vertices of this part;
[0314] The judgment criteria are whether the first condition is met: when the number of vertices in the two groups after segmentation (or expressed as two parts of vertices) is greater than or equal to 3, and the distance between the two vertices closest to the centroid in the corresponding principal axis direction is greater than or equal to a certain threshold th1 (the quantization step size of the vertex), it can be considered that the vertex can be segmented into two parts in that axis.
[0315] Step (5): When a set of vertices has a centroid offset, decode whether the centroid offset value is zero. Only when the centroid offset value is zero is it determined to pass the eligible process; if there is no centroid offset value, it is assumed to pass the eligible process, that is, the judgment is based on whether the second condition is met. When at least one set of vertices in the two split sets is determined to pass the eligible process, continue to execute step (6); otherwise, jump to step (7).
[0316] Step (6): Decode the Flag indicating whether vertex segmentation should be performed (judgment is based on whether the fourth condition is met). If Flag = 1, vertex segmentation is performed; if Flag = 0, vertex segmentation is not performed. If the execution is successful, step (4) is re-executed for each group of vertices (or expressed as each part of the vertices) obtained from the segmentation; otherwise, step (7) is executed.
[0317] Step (7): For each group of vertices, when the vertices are not segmented, decode to obtain the complete centroid offset value, and combine it with the centroid offset vector direction to obtain the centroid position of the offset part of the vertices.
[0318] Step (8): Decode the information on whether the face vertex exists, and obtain the face vertex corresponding to each trisoup node.
[0319] Step (9): Independently sort the vertex coordinates and face vertex coordinates of each part within each node, and then construct triangular patches using edge vertices, centroids, and face vertices. Nodes with the vertex partitioning scheme enabled will independently construct triangular patches from the obtained vertices and their respective centroids.
[0320] Step (10): Perform ray tracing sampling on the triangular facets to obtain the reconstructed point cloud.
[0321] The point cloud encoding processing method provided in this application can be executed by a point cloud encoding processing device. As an example, the device can be an electronic device or a component within an electronic device, such as a chip or circuit. This application uses the point cloud encoding processing device executing the point cloud encoding processing method as an example to illustrate the point cloud encoding processing device provided in this application.
[0322] Please refer to Figure 8, which is a structural diagram of a point cloud encoding processing device provided in an embodiment of this application. As shown in Figure 8, the point cloud encoding processing device 400 includes:
[0323] The partitioning module 401 is used to partition the vertices corresponding to the node to be encoded based on the first partitioning condition to obtain multiple sets of vertices.
[0324] Construction module 402 is used to construct the triangular facets corresponding to each set of vertices in the plurality of sets of vertices;
[0325] The acquisition module 403 is used to acquire the reconstructed point cloud based on the constructed triangular facets.
[0326] Optionally, the first partitioning condition is associated with at least one of the following:
[0327] The number of vertices; the distribution of vertices; the centroid offset; the point cloud distribution.
[0328] Optionally, the first partitioning condition includes at least one of the following:
[0329] The first condition includes: the number of vertices in each of the two groups of vertices obtained by division is greater than or equal to a first threshold, and the distance between the two vertices in the two groups of vertices that are closest to the centroid in the corresponding principal axis direction is greater than or equal to a second threshold.
[0330] The second condition includes: the target vertex group has no centroid offset, or the target vertex group has a centroid offset and the centroid offset value is zero.
[0331] The third condition includes: the number of point clouds within a preset range of the centroid of the target vertex group is less than or equal to a third threshold.
[0332] The target vertex group is any one of the two groups of vertices obtained from the division.
[0333] Optionally, the partitioning module includes:
[0334] The first partitioning unit is used to partition the vertices corresponding to the node to be encoded into two groups of vertices;
[0335] The first determining unit is used to determine whether the vertex group obtained by partitioning satisfies at least one of the first condition and the second condition;
[0336] The second determining unit is configured to determine whether the target vertex group satisfies the third condition if, in the case that there is a target vertex group in the divided vertex group that satisfies at least one of the first condition and the second condition, the target vertex group is determined to satisfy the third condition.
[0337] The second partitioning unit is used to further partition the target vertex group into two groups of vertices when it is determined that the target vertex group satisfies the third condition, and then return to the step of determining whether the partitioned vertex groups satisfy at least one of the first condition and the second condition, until the partitioned vertex groups do not satisfy the third condition, thus obtaining multiple groups of vertices.
[0338] Optionally, the first determining unit is specifically used for:
[0339] Determine whether the two sets of vertices obtained from the partitioning satisfy the first condition;
[0340] If the two groups of vertices obtained by the division satisfy the first condition, determine whether there is a target vertex group in the two groups of vertices that satisfies the second condition;
[0341] The second determining unit is specifically used for:
[0342] If it is determined that there exists a target vertex group that satisfies the second condition, then it is determined whether the target vertex group satisfies the third condition.
[0343] Optionally, the partitioning module performs the partitioning to obtain two sets of vertices, including:
[0344] Two sets of vertices are obtained by dividing along the first coordinate axis, with the first coordinate axis being the main axis direction.
[0345] or,
[0346] Dividing along the first coordinate axis yields two sets of vertices;
[0347] The device further includes:
[0348] The first encoding module is used to encode the first indication information into the bit stream, wherein the first indication information is used to indicate the direction of the first coordinate axis.
[0349] Optionally, the device further includes:
[0350] The second encoding module is used to encode the second indication information into the bitstream, wherein the second indication information is used to indicate the vertex group that satisfies the third condition.
[0351] Optionally, the building module is specifically used for:
[0352] Determine the centroid position and centroid offset value for each group of vertices in the plurality of vertices;
[0353] Construct the triangular facet corresponding to each group of vertices based on each group of vertices and its corresponding centroid position;
[0354] The centroid offset value is encoded into the bitstream.
[0355] Optionally, the partitioning module is specifically used for:
[0356] When the third indication information is the first preset value, the vertices corresponding to the node to be encoded are divided based on the first division condition.
[0357] The device further includes:
[0358] The third encoding module is used to encode the third indication information into the bitstream.
[0359] Optionally, the device further includes:
[0360] The fourth encoding module is used to encode the fourth indication information into the bitstream. The fourth indication information is used to indicate whether each group of vertices obtained during the division process of the vertices corresponding to the node to be encoded needs to be further divided.
[0361] Optionally, the device further includes:
[0362] The fifth encoding module is used to encode the fifth indication information into the bitstream, wherein the fifth indication information is used to indicate whether the node to be encoded needs to be divided.
[0363] The point cloud encoding processing apparatus of this application embodiment can reduce distortion.
[0364] The point cloud encoding processing device provided in this application embodiment can implement the various processes implemented in the method embodiment of FIG4 and achieve the same technical effect. To avoid repetition, it will not be described again here.
[0365] The point cloud decoding processing method provided in this application can be executed by a point cloud decoding processing device. As an example, the device can be an electronic device or a component within an electronic device, such as a chip or circuit. This application uses the point cloud decoding processing device executing the point cloud decoding processing method as an example to illustrate the point cloud decoding processing device provided in this application.
[0366] Please refer to Figure 9, which is a structural diagram of a point cloud decoding processing device provided in an embodiment of this application. As shown in Figure 9, the point cloud encoding processing device 500 includes:
[0367] The partitioning module 501 is used to partition the vertices corresponding to the node to be decoded based on the second partitioning condition or the fourth indication information in the bitstream, to obtain multiple sets of vertices.
[0368] Construction module 502 is used to construct the triangular facets corresponding to each set of vertices in the plurality of sets of vertices;
[0369] The acquisition module 503 is used to acquire the reconstructed point cloud based on the constructed triangular facets.
[0370] Optionally, the second partitioning condition is associated with at least one of the following:
[0371] The number of vertices; the distribution of vertices; the centroid offset; and the second indicator information in the bitstream.
[0372] Optionally, the second partitioning condition includes at least one of the following:
[0373] The first condition includes: the number of vertices in each of the two groups of vertices obtained by division is greater than or equal to a first threshold, and the distance between the two vertices in the two groups of vertices that are closest to the centroid in the corresponding principal axis direction is greater than or equal to a second threshold.
[0374] The second condition includes: the target vertex group has no centroid offset, or the target vertex group has a centroid offset and the centroid offset value is zero, wherein the target vertex group is any one of the two groups of vertices obtained by division;
[0375] The fourth condition includes: the second indication information in the bitstream is a second preset value.
[0376] Optionally, the partitioning module includes:
[0377] The first partitioning unit is used to divide the vertices corresponding to the node to be decoded into two groups of vertices;
[0378] The first determining unit is used to determine whether the vertex group obtained by partitioning satisfies at least one of the first condition and the second condition;
[0379] The second determining unit is used to determine whether the target vertex group satisfies the fourth condition if, in the case that there is a target vertex group in the divided vertex group that satisfies at least one of the first condition and the second condition, the target vertex group is determined to exist.
[0380] The second partitioning unit is used to further partition the target vertex group into two groups of vertices when it is determined that the target vertex group satisfies the fourth condition, and then return to the step of determining whether the partitioned vertex groups satisfy at least one of the first condition and the second condition, until the partitioned vertex groups do not satisfy the fourth condition, thus obtaining multiple groups of vertices.
[0381] Optionally, the first determining unit is specifically used for:
[0382] Determine whether the two sets of vertices obtained from the partitioning satisfy the first condition;
[0383] If the two groups of vertices obtained by the division satisfy the first condition, determine whether there is a target vertex group in the two groups of vertices that satisfies the second condition;
[0384] The second determining unit is specifically used for:
[0385] If it is determined that there exists a target vertex group that satisfies the second condition, then it is determined whether the target vertex group satisfies the fourth condition.
[0386] Optionally, the partitioning module is specifically used for:
[0387] The fifth indicator information in the bitstream is parsed;
[0388] When the fifth indication information indicates that division is required, the vertices corresponding to the node to be decoded are divided into two groups of vertices.
[0389] Based on the fourth indication information in the bitstream, the two groups of vertices obtained from the partitioning are iteratively partitioned to obtain multiple groups of vertices.
[0390] Optionally, the partitioning module performs the partitioning to obtain two sets of vertices, including:
[0391] Dividing the coordinates along the first coordinate axis yields two sets of vertices, with the first coordinate axis being the principal axis direction; or,
[0392] The first coordinate axis direction indicated by the first indication information in the bitstream is used to divide the data into two sets of vertices.
[0393] Optionally, the building module is specifically used for:
[0394] Based on the centroid offset value in the bitstream, determine the centroid position of each group of vertices in the plurality of groups of vertices;
[0395] Based on each set of vertices and its corresponding centroid position, construct the triangular facet corresponding to each set of vertices.
[0396] Optionally, the partitioning module is specifically used for:
[0397] Parse the third indicator information in the bitstream;
[0398] When the third indication information is the first preset value, the vertices corresponding to the node to be decoded are divided based on the second division condition.
[0399] The point cloud decoding processing apparatus of this application embodiment can reduce distortion.
[0400] The point cloud decoding processing device provided in this application embodiment can implement the various processes implemented in the method embodiment of FIG7 and achieve the same technical effect. To avoid repetition, it will not be described again here.
[0401] As shown in Figure 10, this application embodiment also provides an electronic device 600, including a processor 601 and a memory 602. The memory 602 stores programs or instructions that can run on the processor 601. For example, when the electronic device 600 is an encoding device, the program or instructions executed by the processor 601 implement the various steps of the above-described point cloud encoding processing method embodiment and achieve the same technical effect. When the electronic device 600 is a decoding device, the program or instructions executed by the processor 601 implement the various steps of the above-described point cloud decoding processing method embodiment and achieve the same technical effect. To avoid repetition, this will not be described again here. Optionally, the memory 602 can be the memory 102 or memory 113 in the embodiment shown in Figure 1, and the processor 601 can implement the functions of the encoder 200 or decoder 300 in the embodiments shown in Figures 1-3.
[0402] 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 processing method or point cloud decoding processing method embodiments 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 encoder 200 or decoder 300 in the embodiments shown in FIG1-3.
[0403] 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 FIG4 or FIG7. 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.
[0404] 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.
[0405] The aforementioned electronic devices can be terminals or other devices besides terminals, such as servers, network attached storage (NAS), etc.
[0406] Among them, the terminal can also be called user equipment (UE), which 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), shipborne equipment, pedestrian user equipment (PUE), smart home (home devices with wireless communication functions, such as refrigerators, televisions, washing machines or furniture, etc.), 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.
[0407] 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.
[0408] 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.
[0409] Taking an electronic device as an example, Figure 11 is a schematic diagram of the hardware structure of a terminal implementing an embodiment of this application.
[0410] The terminal 700 includes, but is not limited to, at least some of the following components: radio frequency unit 701, network module 702, audio output unit 703, input unit 704, sensor 705, display unit 706, user input unit 707, interface unit 708, memory 709, and processor 710.
[0411] Those skilled in the art will understand that the terminal 700 may also include a power supply (such as a battery) for powering various components. The power supply can be logically connected to the processor 710 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 11 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.
[0412] It should be understood that, in this embodiment, the input unit 704 may include a graphics processor 7041 and a microphone 7042. The graphics processor 7041 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 706 may include a display panel 7061, which may be configured in the form of a liquid crystal display, an organic light-emitting diode, etc. The user input unit 707 includes at least one of a touch panel 7071 and other input devices 7072. The touch panel 7071 is also called a touch screen. The touch panel 7071 may include two parts: a touch detection device and a touch controller. Other input devices 7072 may include, but are not limited to, a physical keyboard, function keys (such as volume control buttons, power buttons, etc.), a trackball, a mouse, and a joystick, which will not be described in detail here.
[0413] In this embodiment, after receiving downlink data from the network-side device, the radio frequency unit 701 can transmit it to the processor 710 for processing; in addition, the radio frequency unit 701 can send uplink data to the network-side device. Typically, the radio frequency unit 701 includes, but is not limited to, antennas, amplifiers, transceivers, couplers, low-noise amplifiers, duplexers, etc.
[0414] The memory 709 can be used to store software programs or instructions, as well as various data. The memory 709 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 709 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 709 in the embodiments of this application includes, but is not limited to, these and any other suitable types of memory.
[0415] Processor 710 may include one or more processing units; optionally, processor 710 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 710.
[0416] Where the terminal is an encoding terminal:
[0417] Processor 710, used for:
[0418] Based on the first partitioning condition, the vertices corresponding to the node to be encoded are partitioned to obtain multiple sets of vertices;
[0419] Construct the triangular facet corresponding to each set of vertices in the plurality of sets of vertices;
[0420] Reconstructed point clouds are obtained based on the constructed triangular facets.
[0421] Where the terminal is a decoding end:
[0422] Processor 710, used for:
[0423] Based on the second partitioning condition or the fourth indicator information in the bitstream, the vertices corresponding to the node to be decoded are partitioned to obtain multiple sets of vertices;
[0424] Construct the triangular facet corresponding to each set of vertices in the plurality of sets of vertices;
[0425] Reconstructed point clouds are obtained based on the constructed triangular facets.
[0426] The terminal in this application embodiment can reduce encoding and decoding distortion.
[0427] It is understood that the implementation process of each implementation method mentioned in this embodiment can refer to the relevant description in Figure 4 or Figure 7 of the method embodiment, and achieve the same or corresponding technical effects. To avoid repetition, it will not be described again here.
[0428] 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 above-described point cloud encoding or decoding processing method embodiments and achieve the same technical effect. To avoid repetition, they will not be described again here.
[0429] 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.
[0430] 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 encoding processing method or point cloud decoding processing method embodiments, and can achieve the same technical effect. To avoid repetition, it will not be described again here.
[0431] 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.
[0432] 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 processing method or point cloud decoding processing method embodiments, and can achieve the same technical effect. To avoid repetition, it will not be described again here.
[0433] This application also provides an encoding / 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 processing method described above, and the decoding end device can be used to perform the steps of the point cloud decoding processing method described above.
[0434] 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.
[0435] 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 the computer software product includes several instructions to cause the terminal or network-side device to execute the methods described in the various embodiments of this application.
[0436] 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
1. A point cloud encoding processing method, comprising: The encoding end divides the vertices corresponding to the node to be encoded based on the first partitioning condition, resulting in multiple sets of vertices. The encoding end constructs the triangular facets corresponding to each of the multiple sets of vertices; The encoding end obtains the reconstructed point cloud based on the constructed triangular facets.
2. The method according to claim 1, wherein, The first partitioning condition is associated with at least one of the following: The number of vertices; the distribution of vertices; the centroid offset; the point cloud distribution.
3. The method according to claim 1 or 2, wherein, The first dividing condition includes at least one of the following: The first condition includes: the number of vertices in each of the two groups of vertices obtained by division is greater than or equal to a first threshold, and the distance between the two vertices in the two groups of vertices that are closest to the centroid in the corresponding principal axis direction is greater than or equal to a second threshold. The second condition includes: the target vertex group has no centroid offset, or the target vertex group has a centroid offset and the centroid offset value is zero. The third condition includes: the number of point clouds within a preset range of the centroid of the target vertex group is less than or equal to a third threshold. The target vertex group is any one of the two groups of vertices obtained from the division.
4. The method according to claim 3, wherein, The process of partitioning the vertices corresponding to the node to be encoded based on the first partitioning condition yields multiple sets of vertices, including: The vertices corresponding to the node to be encoded are divided into two groups of vertices; Determine whether the resulting vertex group satisfies at least one of the first and second conditions; If it is determined that there exists a target vertex group in the obtained vertex group that satisfies at least one of the first condition and the second condition, then it is determined whether the target vertex group satisfies the third condition. If the target vertex group is determined to satisfy the third condition, the target vertex group is further divided into two groups of vertices. The process then returns to the step of determining whether the divided vertex groups satisfy at least one of the first and second conditions, until none of the divided vertex groups satisfy the third condition, resulting in multiple groups of vertices.
5. The method according to claim 4, wherein, The determination of whether the resulting vertex group satisfies at least one of the first and second conditions includes: Determine whether the two sets of vertices obtained from the partitioning satisfy the first condition; If the two groups of vertices obtained by the division satisfy the first condition, determine whether there is a target vertex group in the two groups of vertices that satisfies the second condition; The step of determining whether the target vertex group satisfies the third condition when it is determined that there exists a target vertex group in the partitioned vertex group that satisfies at least one of the first and second conditions includes: If it is determined that there exists a target vertex group that satisfies the second condition, then it is determined whether the target vertex group satisfies the third condition.
6. The method according to claim 4 or 5, wherein, The partitioning results in two sets of vertices, including: Two sets of vertices are obtained by dividing along the first coordinate axis, with the first coordinate axis being the main axis direction. or, The division to obtain two sets of vertices includes: dividing the vertices in the direction of the first coordinate axis to obtain two sets of vertices; the method further includes: encoding first indication information into the bitstream, wherein the first indication information is used to indicate the direction of the first coordinate axis.
7. The method according to any one of claims 3-6, further comprising: The encoding end encodes the second indication information into the bitstream, and the second indication information is used to indicate the vertex group that satisfies the third condition.
8. The method according to any one of claims 1-7, wherein, The construction of the triangular facet corresponding to each set of vertices in the plurality of sets of vertices includes: Determine the centroid position and centroid offset value for each group of vertices in the plurality of vertices; Construct the triangular facet corresponding to each group of vertices based on each group of vertices and its corresponding centroid position; The centroid offset value is encoded into the bitstream.
9. The method according to any one of claims 1-8, wherein, The encoding end performs vertices partitioning based on the first partitioning condition, including: When the third indication information is the first preset value, the encoding end performs division processing on the vertex corresponding to the node to be encoded based on the first division condition; The method further includes: The encoding end encodes the third indication information into the bitstream.
10. The method according to any one of claims 1-9, further comprising: The encoding end encodes the fourth indication information into the bitstream. The fourth indication information is used to indicate whether each group of vertices obtained during the division process of the vertices corresponding to the node to be encoded needs to be further divided.
11. The method according to claim 10, further comprising: The encoding end encodes the fifth indication information into the bitstream, and the fifth indication information is used to indicate whether the node to be encoded needs to be divided.
12. A point cloud decoding processing method, comprising: The decoding end divides the vertices corresponding to the node to be decoded based on the second partitioning condition or the fourth indication information in the bitstream, and obtains multiple sets of vertices. The decoding end constructs the triangular facets corresponding to each of the multiple sets of vertices; The decoding end obtains the reconstructed point cloud based on the constructed triangular facets.
13. The method according to claim 12, wherein, The second dividing condition is associated with at least one of the following: The number of vertices; the distribution of vertices; the centroid offset; and the second indicator information in the bitstream.
14. The method according to claim 12 or 13, wherein, The second dividing condition includes at least one of the following: The first condition includes: the number of vertices in each of the two groups of vertices obtained by division is greater than or equal to a first threshold, and the distance between the two vertices in the two groups of vertices that are closest to the centroid in the corresponding principal axis direction is greater than or equal to a second threshold. The second condition includes: the target vertex group has no centroid offset, or the target vertex group has a centroid offset and the centroid offset value is zero, wherein the target vertex group is any one of the two groups of vertices obtained by division; The fourth condition includes: the second indication information in the bitstream is a second preset value.
15. The method according to claim 14, wherein, The process of partitioning the vertices corresponding to the node to be decoded based on the second partitioning condition yields multiple sets of vertices, including: The vertices corresponding to the node to be decoded are divided into two groups of vertices; Determine whether the resulting vertex group satisfies at least one of the first and second conditions; If it is determined that there exists a target vertex group in the obtained vertex group that satisfies at least one of the first condition and the second condition, then it is determined whether the target vertex group satisfies the fourth condition. If the target vertex group is determined to satisfy the fourth condition, the target vertex group is further divided into two groups of vertices. The process then returns to the step of determining whether the divided vertex groups satisfy at least one of the first and second conditions, until none of the divided vertex groups satisfy the fourth condition, resulting in multiple groups of vertices.
16. The method according to claim 15, wherein, The determination of whether the resulting vertex group satisfies at least one of the first and second conditions includes: Determine whether the two sets of vertices obtained from the partitioning satisfy the first condition; If the two groups of vertices obtained by the division satisfy the first condition, determine whether there is a target vertex group in the two groups of vertices that satisfies the second condition; The step of determining whether the target vertex group satisfies the fourth condition when it is determined that there exists a target vertex group in the partitioned vertex group that satisfies at least one of the first and second conditions includes: If it is determined that there exists a target vertex group that satisfies the second condition, then it is determined whether the target vertex group satisfies the fourth condition.
17. The method according to claim 12, wherein, The process of dividing the vertices corresponding to the node to be decoded based on the fourth indicator information in the bitstream yields multiple sets of vertices, including: The fifth indicator information in the bitstream is parsed; When the fifth indication information indicates that division is required, the vertices corresponding to the node to be decoded are divided into two groups of vertices. Based on the fourth indication information in the bitstream, the two groups of vertices obtained from the partitioning are iteratively partitioned to obtain multiple groups of vertices.
18. The method according to any one of claims 15-17, wherein, The partitioning results in two sets of vertices, including: Dividing the coordinates along the first coordinate axis yields two sets of vertices, with the first coordinate axis being the principal axis direction; or, The first coordinate axis direction indicated by the first indication information in the bitstream is used to divide the data into two sets of vertices.
19. The method according to any one of claims 12-18, wherein, The construction of the triangular facet corresponding to each set of vertices in the plurality of sets of vertices includes: Based on the centroid offset value in the bitstream, determine the centroid position of each group of vertices in the plurality of groups of vertices; Based on each set of vertices and its corresponding centroid position, construct the triangular facet corresponding to each set of vertices.
20. The method according to any one of claims 12-19, wherein, The decoding end performs vertices partitioning based on the second partitioning condition, including: The decoding end parses the third indication information in the bitstream; When the third indication information is the first preset value, the decoding end performs division processing on the vertices corresponding to the node to be decoded based on the second division condition.
21. A point cloud encoding processing device, comprising: The partitioning module is used to partition the vertices corresponding to the node to be encoded based on the first partitioning condition, and obtain multiple sets of vertices. The construction module is used to construct the triangular facets corresponding to each set of vertices in the plurality of sets of vertices; The acquisition module is used to acquire reconstructed point clouds based on the constructed triangular facets.
22. The apparatus according to claim 21, wherein, The first partitioning condition is associated with at least one of the following: The number of vertices; the distribution of vertices; the centroid offset; the point cloud distribution.
23. The apparatus according to claim 21 or 22, wherein, The first dividing condition includes at least one of the following: The first condition includes: the number of vertices in each of the two groups of vertices obtained by division is greater than or equal to a first threshold, and the distance between the two vertices in the two groups of vertices that are closest to the centroid in the corresponding principal axis direction is greater than or equal to a second threshold. The second condition includes: the target vertex group has no centroid offset, or the target vertex group has a centroid offset and the centroid offset value is zero. The third condition includes: the number of point clouds within a preset range of the centroid of the target vertex group is less than or equal to a third threshold. The target vertex group is any one of the two groups of vertices obtained from the division.
24. The apparatus according to claim 23, wherein the dividing module comprises: The first partitioning unit is used to partition the vertices corresponding to the node to be encoded into two groups of vertices; The first determining unit is used to determine whether the vertex group obtained by partitioning satisfies at least one of the first condition and the second condition; The second determining unit is configured to determine whether the target vertex group satisfies the third condition if, in the case that there is a target vertex group in the divided vertex group that satisfies at least one of the first condition and the second condition, the target vertex group is determined to satisfy the third condition. The second partitioning unit is used to further partition the target vertex group into two groups of vertices when it is determined that the target vertex group satisfies the third condition, and then return to the step of determining whether the partitioned vertex groups satisfy at least one of the first condition and the second condition, until the partitioned vertex groups do not satisfy the third condition, thus obtaining multiple groups of vertices.
25. A point cloud decoding processing apparatus, comprising: The partitioning module is used to partition the vertices corresponding to the node to be decoded based on the second partitioning condition or the fourth indicator information in the bitstream, to obtain multiple sets of vertices. The construction module is used to construct the triangular facets corresponding to each set of vertices in the plurality of sets of vertices; The acquisition module is used to acquire reconstructed point clouds based on the constructed triangular facets.
26. The apparatus of claim 25, wherein the second dividing condition is associated with at least one of the following: The number of vertices; the distribution of vertices; the centroid offset; and the second indicator information in the bitstream.
27. The apparatus according to claim 25 or 26, wherein the second dividing condition includes at least one of the following: The first condition includes: The number of vertices in each of the two groups of vertices obtained by the division is greater than or equal to the first threshold, and the distance between the two vertices in the two groups of vertices that are closest to the centroid in the corresponding principal axis direction is greater than or equal to the second threshold. The second condition includes: the target vertex group has no centroid offset, or the target vertex group has a centroid offset and the centroid offset value is zero, wherein the target vertex group is any one of the two groups of vertices obtained by division; The fourth condition includes: the second indication information in the bitstream is a second preset value.
28. The apparatus according to claim 27, wherein, The partitioning module includes: The first partitioning unit is used to divide the vertices corresponding to the node to be decoded into two groups of vertices; The first determining unit is used to determine whether the vertex group obtained by partitioning satisfies at least one of the first condition and the second condition; The second determining unit is used to determine whether the target vertex group satisfies the fourth condition if, in the case that there is a target vertex group in the divided vertex group that satisfies at least one of the first condition and the second condition, the target vertex group is determined to exist. The second partitioning unit is used to further partition the target vertex group into two groups of vertices when it is determined that the target vertex group satisfies the fourth condition, and then return to the step of determining whether the partitioned vertex groups satisfy at least one of the first condition and the second condition, until the partitioned vertex groups do not satisfy the fourth condition, thus obtaining multiple groups of vertices.
29. An electronic device comprising 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 point cloud encoding processing method as claimed in any one of claims 1 to 11, or implementing the steps of the point cloud decoding processing method as claimed in any one of claims 12 to 20.
30. A readable storage medium storing a program or instructions that, when executed by a processor, implement the steps of the point cloud encoding processing method as claimed in any one of claims 1 to 11, or implement the steps of the point cloud decoding processing method as claimed in any one of claims 12 to 20.
31. A chip, the chip comprising a processor and a communication interface, the communication interface being coupled to the processor, the processor being configured to run a program or instructions to implement the steps of the point cloud encoding processing method as described in any one of claims 1 to 11, or to implement the steps of the point cloud decoding processing method as described in any one of claims 12 to 20.