Trisoup vertex optimization method, apparatus and device
By identifying and processing the axial distribution information and vertex count of Trisoup nodes, the problem of erroneous surface reconstruction caused by missing vertices in the Trisoup geometric coding algorithm is solved, thereby improving the quality and efficiency of point cloud reconstruction.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- VIVO MOBILE COMM CO LTD
- Filing Date
- 2025-04-10
- Publication Date
- 2026-04-23
AI Technical Summary
In the Trisoup geometric coding algorithm, point cloud reconstruction may result in incorrect surface reconstruction because the original point cloud may not exist around the vertices, affecting the quality of the reconstructed point cloud.
The axial distribution information and total number of vertices of the Trisoup nodes are determined by the decoding and encoding ends, and the first type of vertices are identified, deleted or corrected to ensure the accuracy of point cloud reconstruction.
It reduces the performance loss in the quality of reconstructed point clouds and improves the accuracy and efficiency of point cloud reconstruction.
Smart Images

Figure CN2025088174_23042026_PF_FP_ABST
Abstract
Description
Trisoup Vertex Optimization Method, Apparatus and Equipment
[0001] Cross-reference to related applications
[0002] This application claims priority to Chinese Patent Application No. 202410464501.9, filed in China on April 17, 2024, the entire contents of which are incorporated herein by reference. Technical Field
[0003] This application belongs to the field of communication technology, specifically relating to a Trisoup vertex optimization method, apparatus, and device. Background Technology
[0004] In the Geometry Point Cloud Compression (G-PCC) encoder framework, the geometric and attribute information of the point cloud are encoded separately. Two encoding methods exist for the geometric information: multi-branch tree-based geometric coding and prediction tree-based geometric coding. Among the multi-branch tree-based geometric coding methods, the triangle soup (Trisoup) geometric coding algorithm has gradually demonstrated superior compression performance.
[0005] In the Trisoup geometric encoding algorithm, the vertex position on the edge within each node is not only determined by the original point cloud within the current node, but is also influenced by the original point clouds of other nodes sharing the same edge. Therefore, not all vertices are applicable when reconstructing the point cloud for each node. For example, the original point cloud may not exist around the vertex used for reconstruction, leading to the reconstruction of some incorrect surfaces and resulting in a performance loss in the quality of the reconstructed point cloud. Summary of the Invention
[0006] This application provides a Trisoup vertex optimization method, apparatus, and device that can solve the problem of performance loss in the quality of reconstructed point clouds.
[0007] Firstly, a Trisoup vertex optimization method is provided, executed by the decoding end, which includes:
[0008] The decoding end determines the axial distribution information of the vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry.
[0009] The decoding end determines the first type of vertex based on the axial distribution information and the total number of vertices;
[0010] The decoding end deletes or modifies the first type of vertex.
[0011] Secondly, a Trisoup vertex optimization method is provided, executed by the encoding end, which includes:
[0012] The encoding end determines the axial distribution information of vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry.
[0013] The encoding end determines the first type of vertex based on the axial distribution information and the total number of vertices;
[0014] The encoding end deletes or modifies the first type of vertex.
[0015] Thirdly, a Trisoup vertex optimization device is provided for use at the decoding end, the device comprising:
[0016] The first determining module is used to determine the axial distribution information of vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry.
[0017] The second determining module is used to determine the first type of vertex based on the axial distribution information and the total number of vertices;
[0018] The first processing module is used to delete or modify vertices of the first type.
[0019] Fourthly, a Trisoup vertex optimization device is provided for use in the encoding end, the device comprising:
[0020] The third determining module is used to determine the axial distribution information of vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry.
[0021] The fourth determining module is used to determine the first type of vertex based on the axial distribution information and the total number of vertices;
[0022] The second processing module is used to delete or modify the vertices of the first type.
[0023] Fifthly, an electronic device is provided, 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 method as described in the first aspect, or implementing the steps of the method as described in the second aspect.
[0024] In a sixth aspect, an electronic device is provided, including a processor and a communication interface, wherein the processor is configured to determine the axial distribution information of vertices in a geometry corresponding to a Trisoup node and the total number of vertices contained in the geometry; determine a first type of vertex based on the axial distribution information and the total number of vertices; and delete or modify the first type of vertex; or, the processor is configured to determine the axial distribution information of vertices in a geometry corresponding to a Trisoup node and the total number of vertices contained in the geometry; determine a first type of vertex based on the axial distribution information and the total number of vertices; and delete or modify the first type of vertex.
[0025] A seventh aspect provides an electronic device, comprising: a memory configured to store video data, and processing circuitry configured to implement the steps of the method described in the first aspect, or the steps of the method described in the second aspect.
[0026] Eighthly, a readable storage medium is provided, on which a program or instructions are stored, which, when executed by a processor, implement the steps of the method described in the first aspect, or implement the steps of the method described in the second aspect.
[0027] A ninth aspect provides an encoding / decoding system, 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 second aspect, and the decoding end device is configured to perform the steps of the method described in the first aspect.
[0028] In a tenth aspect, a chip is provided, the chip including a processor and a communication interface coupled to the processor, the processor being configured to run a program or instructions to implement the steps of the method described in the first aspect, or to implement the steps of the method described in the second aspect.
[0029] Eleventhly, 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.
[0030] In a twelfth aspect, a computer program product is provided, wherein the computer instructions, 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.
[0031] In this embodiment, the decoding end determines a first type of vertex based on the axial distribution information of the vertices in the Trisoup node and the total number of vertices, and then deletes or corrects the first type of vertices. By deleting or correcting the first type of vertices, a large number of erroneous point clouds can be removed, reducing the performance loss in the quality of the reconstructed point cloud. Attached Figure Description
[0032] Figure 1 is a schematic diagram of the encoding and decoding system provided in an embodiment of this application;
[0033] Figure 2a is a flowchart of the encoding process performed by an encoder based on the AVS-PCC encoding framework;
[0034] Figure 2b is a flowchart of the encoding process performed by the encoder based on the MPEG G-PCC encoding framework;
[0035] Figure 3a is a flowchart of the decoding process performed by the decoder based on the AVS-PCC decoding framework;
[0036] Figure 3b is a flowchart of the decoding process performed by the decoder based on the MPEG G-PCC decoding framework;
[0037] Figure 4 is one of the flowcharts of the Trisoup vertex optimization method according to an embodiment of this application;
[0038] Figure 5 is a schematic diagram of the reconstructed surface according to an embodiment of this application;
[0039] Figure 6 is a schematic diagram of the geometry corresponding to the Trisoup node;
[0040] Figure 7 is a second schematic flowchart of the Trisoup vertex optimization method according to an embodiment of this application;
[0041] Figure 8 is a schematic diagram of one of the structures of the Trisoup vertex optimization device according to an embodiment of this application;
[0042] Figure 9 is a second schematic diagram of the Trisoup vertex optimization device according to an embodiment of this application;
[0043] Figure 10 is a schematic diagram of the structure of an electronic device according to an embodiment of this application;
[0044] Figure 11 is a schematic diagram of the terminal structure according to an embodiment of this application. Detailed Implementation
[0045] 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.
[0046] 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, without limiting the number of objects; 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, "A or B" covers three scenarios: Scenario 1: including A but not B; Scenario 2: including B but not A; Scenario 3: including both A and B. The character " / " generally indicates that the preceding and following objects are in an "or" relationship.
[0047] Before introducing the technical solutions provided in the embodiments of this application, the meanings of some terms will be explained first.
[0048] 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.
[0049] 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.
[0050] 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).
[0051] 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 to reconstruct the point cloud.
[0052] Figure 1 is a schematic diagram of the encoding / decoding system provided in an embodiment of this application. The technical solution of this application embodiment relates to encoding / decoding (CODEC) point cloud data (including encoding or decoding).
[0053] As shown in Figure 1, the encoding / decoding system includes a source device 100, which provides encoded point cloud data to be decoded and displayed by a 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.
[0054] 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.
[0055] 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, or 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.
[0056] 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, that is, each of source device 100 and destination device 110 includes an encoder and a decoder.
[0057] 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).
[0058] 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.
[0059] 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.
[0060] 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.
[0061] 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.
[0062] 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.
[0063] 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).
[0064] Destination device 110 can access encoded point cloud data from a server, for example, via a wireless channel (e.g., Wi-Fi connection) or a wired connection (e.g., Digital subscriber line (DSL), cable modem, etc.) for accessing encoded point cloud data stored on the server.
[0065] Output interface 104 and input interface 111 can represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component operating according to the IEEE 802.11 or IEEE 802.15 standard (e.g., ZigBee™), Bluetooth standard, or other physical components. In an example where output interface 104 and input interface 111 include wireless components, output interface 104 and input interface 111 can be configured to transmit data, such as encoded point cloud data, via Wi-Fi, Ethernet, or cellular networks (such as 4G, LTE (Long Term Evolution), Advanced LTE, 5G, 6G, etc.).
[0066] 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.
[0067] 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.
[0068] 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.
[0069] 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.
[0070] 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.
[0071] For the geometric information encoding process, the encoding flow executed by encoder 200 is as follows:
[0072] 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.
[0073] 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:
[0074] Geometric coding based on multi-way trees, such as geometric coding based on octrees: 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 code stream of point cloud geometric information.
[0075] 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.
[0076] 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 with 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.
[0077] 3. Geometric Entropy Encoding: This method uses statistical compression encoding to encode the occupancy code information of the multi-way tree, 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).
[0078] 4. Geometric Reconstruction: Decoding and reconstructing the geometric information after geometric encoding.
[0079] For the attribute information encoding process, the encoding flow executed by encoder 200 is as follows:
[0080] 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.
[0081] 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 found and used as the attribute information for the reconstructed point.
[0082] In some examples, encoder 200 may not perform color transformation or attribute recoloring.
[0083] 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.
[0084] 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.
[0085] 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.
[0086] 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.
[0087] 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.
[0088] Predictive transform coding refers to dividing the point cloud into multiple different levels of detail (LoD) based on distance-based selection of 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.
[0089] 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.
[0090] Hierarchical region adaptive transform coding refers to the process of transforming attribute information into the transform domain, which is called the transform coefficient.
[0091] 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.
[0092] 5. Entropy Coding: The quantized attribute residuals and / or transform coefficients are generally compressed using run-length coding and arithmetic coding. The corresponding coding mode, quantization parameters, and other information are also encoded using an entropy encoder.
[0093] 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.
[0094] 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.
[0095] The decoding process performed by decoder 300 is as follows:
[0096] 1. Entropy Decoding: Perform entropy decoding on the geometric bitstream and attribute bitstream respectively to obtain geometric syntax elements and attribute syntax elements.
[0097] 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.
[0098] Geometric decoding based on multi-way trees, such as geometric decoding based on octrees: reconstructing the octree based on the geometric syntax elements obtained from parsing the geometric bitstream.
[0099] Geometric Decoding Based on Prediction Trees: Reconstructing the prediction tree based on the geometric syntax elements obtained from parsing the geometric bitstream.
[0100] Geometric Decoding Based on Triangle Representation: Reconstructing the triangular model based on the geometric syntax elements obtained from parsing the geometric bitstream.
[0101] 3. Geometric Reconstruction: Perform reconstruction to obtain the geometric coordinate information of the points in the point cloud.
[0102] 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.
[0103] 5. Dequantization: Dequantizes attribute syntax elements.
[0104] 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 coefficients of the inverse-quantized prediction residuals, or by transforming the transformation coefficients of the inverse-quantized points.
[0105] 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.
[0106] 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.
[0107] As shown in Figure 4, this application embodiment provides a Trisoup vertex optimization method, executed by the decoding end, including:
[0108] Step 401: The decoding end determines the axial distribution information of the vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry.
[0109] Step 402: The decoding end determines the first type of vertex based on the axial distribution information and the total number of vertices;
[0110] Step 403: The decoding end deletes or modifies the first type of vertex.
[0111] In this embodiment, a Trisoup node refers to a multi-branch tree node. Trisoup conceptualizes the geometry of the point cloud within each node as a surface that intersects the edge of each geometry at most once. The points that intersect the edge of the geometry are called vertices, and these vertices are shared between adjacent nodes, ensuring the continuity of the reconstructed surface between nodes. The existence of vertices on the edge of the geometry corresponding to each node and the quantized position of the vertices on the edge can be represented by 1 bit and 2 bits, respectively. Inside the geometry corresponding to each node, the reconstructed surface is composed of non-planar polygons formed through these vertices, as shown in Figure 5, organized as a set of triangles. The geometric structure corresponding to a Trisoup node is shown in Figure 6.
[0112] Optionally, the decoding end can determine the neighbor information of each edge of the geometry corresponding to the Trisoup node, and this neighbor information can be used as the context for subsequent entropy decoding. The neighbor information includes the point cloud occupancy information of adjacent edges.
[0113] The decoding end can use the neighbor information to decode the vertex presence flag and quantized vertex position of each edge of the geometry. The quantized vertex position exists when the vertex presence flag indicates the presence of a vertex.
[0114] The decoding end can determine the axial distribution information of vertices in the geometry corresponding to the Trisoup node. The axes include x, y, and z. The decoding end can count the distribution of vertices along the x, y, and z axes respectively, and count the total number of vertices contained in the geometry. Based on the distribution of vertices along the x, y, and z axes and the total number of vertices, the decoding end determines the first type of vertices contained in the Trisoup node. The first type of vertices may be unreasonable vertices, that is, vertices that are not suitable for point cloud reconstruction (e.g., there is no original point cloud around the vertex or the number of original point clouds is small, such as the number of original point clouds is less than a predetermined threshold). In order to avoid the reconstruction of erroneous surfaces, it is necessary to delete or correct vertices of this type.
[0115] The original point cloud mentioned in this application refers to the point cloud before reconstruction; the original point cloud distribution information refers to the point cloud distribution in the geometric structure before reconstruction.
[0116] Optionally, when determining the first type of vertex, the decoding end can make judgments for the three axes x, y, and z respectively. For example, the first type of vertex can be determined based on the distribution of vertices along the x-axis and the total number of vertices (which can be denoted as vertex_total); the first type of vertex can be determined based on the distribution of vertices along the y-axis and the total number of vertices; and the first type of vertex can be determined based on the distribution of vertices along the z-axis and the total number of vertices.
[0117] In embodiments of this application, the decoding end determines a first type of vertex based on the axial distribution information of the vertices in the Trisoup node and the total number of vertices, and then deletes or corrects the first type of vertices. By deleting or correcting the first type of vertices, a large number of erroneous point clouds can be removed, reducing the performance loss in the quality of the reconstructed point cloud.
[0118] As an optional embodiment, determining the axial distribution information of vertices in the geometry corresponding to the Trisoup node includes:
[0119] Determine the distribution information of vertices in the geometry corresponding to the Trisoup node in each of the three axes;
[0120] The distribution information is used to indicate that the vertices are distributed along the positive or negative half-axis of each axis, and / or the number of vertices distributed along the positive or negative half-axis of each axis.
[0121] In this embodiment, the decoding end determines the distribution of vertices along the x, y, and z axes. The specific range of the positive or negative half-axis can be determined based on thresholds. For example, as shown in Figure 6: for a certain axis, if the distance between the dimension value of a vertex along that axis and the dimension value of the starting point of its edge along that axis is less than or equal to a threshold th1, the vertex is considered to be distributed along the negative half-axis of that axis; if the distance between the dimension value of a vertex along that axis and the dimension value of the ending point of its edge along that axis is less than or equal to a threshold th2, the vertex is considered to be distributed along the positive half-axis of that axis.
[0122] When determining the axial distribution information of a vertex, the decoding end determines the distribution of the vertex along a certain axis and the number of all vertices corresponding to that distribution.
[0123] Optionally, determining the axial distribution information of vertices in the geometry corresponding to the Trisoup node includes at least one of the following:
[0124] For the target axis among the three axes, if the vertex coordinates satisfy the first condition, it is determined that the vertex is distributed on the negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the starting point of the edge where the vertex is located is less than or equal to a first threshold.
[0125] For the target axis among the three axes, if the vertex coordinates satisfy the second condition, the vertex is determined to be distributed on the positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the endpoint of the edge where the vertex is located is less than or equal to a second threshold.
[0126] In this embodiment, vertices satisfying the first condition are considered to be distributed on the negative half of a certain axis, and vertices satisfying the second condition are considered to be distributed on the positive half of a certain axis. Taking the x-axis as an example, when the x-dimensional value of the vertex coordinate is less than or equal to the x-dimensional value of the starting point of the edge where the vertex is located, the vertex is considered to be distributed in the negative half of the x-axis, and the total number of vertices satisfying this condition is the first quantity (for example, denoted as vertex_x[0]); when the x-dimensional value of the vertex coordinate is less than or equal to the ending point of the edge where it is located, the vertex is considered to be distributed in the positive half of the x-axis, and the total number of vertices satisfying this condition is the second quantity (which can be denoted as vertex_x[1]). The starting point and ending point of the edge in the geometric structure are determined according to the direction of the edge.
[0127] As an optional embodiment, determining the first type of vertex based on the axial distribution information and the total number of vertices includes at least one of the following:
[0128] For a target axis among the three axes, if the ratio of the first quantity to the total number of vertices is greater than or equal to a third threshold, a vertex satisfying the third condition is determined to be a first type vertex; the third condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the endpoint of the edge where the vertex is located; the first quantity is the number of vertices located on the negative half axis of the target axis.
[0129] For the target axis among the three axes, if the ratio of the second quantity to the total number of vertices is greater than or equal to the fourth threshold, the vertex that satisfies the fourth condition is determined to be a first type vertex; the fourth condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the starting point of the edge where the vertex is located; the second quantity is the number of vertices located on the positive half axis of the target axis.
[0130] In this embodiment, the decoding end determines the first type of vertex for each axis. Optionally, the decoding end determines the first type of vertex when the total number of vertices is greater than or equal to a threshold. For a certain axis, if the ratio of the number of vertices located in the negative half of the axis (i.e., the first number) to the total number of vertices is greater than or equal to a third threshold P1, then all vertices whose dimension value is equal to the dimension value of the endpoint of the edge where the vertex is located are determined to be first type vertices. The first type of vertex can be an unreasonable vertex, that is, a vertex that needs to be deleted or corrected. For example, taking the x-axis as an example, if the number of vertices vertex_x[0] located in the negative half of the x-axis is greater than or equal to P1 in the total number of vertices vertex_total in the node, then all vertices whose x-dimensional value is equal to the x-dimensional value of the endpoint of the edge where the vertex is located are determined to be unreasonable vertices (i.e., the first type of vertex).
[0131] For a certain axis, if the ratio of the number of vertices located on the positive half of the axis (i.e., the second number) to the total number of vertices is greater than or equal to the fourth threshold P4, then all vertices whose dimension value is equal to the dimension value of the axis at the starting point of the edge where the vertex is located are determined to be first type vertices. The first type of vertices can be unreasonable vertices, that is, vertices that need to be deleted or corrected. For example, taking the x-axis as an example, if the number of vertices vertex_x[1] located on the positive half of the x-axis is greater than or equal to P4 in the total number of vertices vertex_total in the node, then all vertices whose x-dimensional value is equal to the x-dimensional value of the starting point of the edge where the vertex is located are determined to be unreasonable vertices (i.e., first type vertices).
[0132] It should be noted that the "ratio" mentioned in the embodiments of this application can be the absolute value of the quantity or a percentage, and is not limited here.
[0133] As an optional embodiment, the method further includes: if at least two of the three axes have a first type of vertex, then filtering the first type of vertex;
[0134] The deletion or modification of the first type of vertices includes: deleting or modifying the filtered first type of vertices.
[0135] In this embodiment, the identified first-type vertices can be considered unreasonable vertices. If more than one axis indicates the existence of unreasonable vertices, further filtering of these unreasonable vertices is performed. When deleting or correcting unreasonable vertices, the remaining unreasonable vertices after filtering are deleted or corrected.
[0136] Optionally, filtering of the first type of vertices includes at least one of the following:
[0137] Determine the intersection between the first type vertices of the at least two axes, wherein the first type vertices within the intersection are the filtered first type vertices;
[0138] If there is no intersection between the first type vertices of the at least two axes, then the first type vertex of the axis with the largest number of first type vertices is determined as the filtered first type vertex.
[0139] In this embodiment, if at least two axes corresponding to first-type vertices of the first type have an intersection, then the vertices within the intersection are determined to be the final unreasonable vertices. If at least two axes corresponding to first-type vertices of the first type do not have an intersection, then the different axes are sorted according to the number of first-type vertices they contain, and the first-type vertices corresponding to the axes containing more first-type vertices are preferentially selected as the final unreasonable vertices.
[0140] Taking the first type of vertices as an example of unreasonable vertices: if there is an intersection of unreasonable vertices obtained from the three axes, then the vertices within the intersection are determined to be the final unreasonable vertices, and these final unreasonable vertices are deleted or corrected; if there is no intersection, then the different axes are prioritized according to the number of unreasonable vertices they produce, and the unreasonable vertices obtained from the axis with the larger number of unreasonable vertices are selected as the final unreasonable vertices, and these final unreasonable vertices are deleted or corrected. At most, all unreasonable vertices obtained from the three axes can be processed.
[0141] As an optional embodiment, the deletion or modification of the first type of vertex includes:
[0142] Based on the Euclidean distance between the first type of vertex and the second type of vertex, the first type of vertex is deleted or modified; wherein, the second type of vertex is any other vertex in the geometric structure besides the first type of vertex.
[0143] In this embodiment, the first type of vertex can be an unreasonable vertex, and the second type of vertex can be a reasonable vertex. For unreasonable vertices, different processing can be applied based on their degree of unreasonableness. The Euclidean distance between the first type of vertex and the second type of vertex can represent the degree of unreasonableness of the vertex.
[0144] Optionally, the deletion or modification of the first type of vertex includes at least one of the following:
[0145] If the Euclidean distance between the first type of vertex and the second type of vertex satisfies the fifth condition, the first type of vertex is deleted.
[0146] If the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is corrected to the target position.
[0147] Optionally, the fifth condition includes: the minimum Euclidean distance between the first type of vertex and the second type of vertex is greater than a predetermined threshold. For example, if the first type of vertex is an unreasonable vertex and the second type of vertex is a reasonable vertex, for an unreasonable vertex, calculate its Euclidean distance to each reasonable vertex, determine the minimum value among the various Euclidean distances, and if the minimum value is greater than the predetermined threshold, then the unreasonable vertex is deleted; if the minimum value is less than or equal to the predetermined threshold, then the position of the unreasonable vertex needs to be corrected.
[0148] Optionally, the target position is the midpoint between the first type vertex and the target second type vertex, where the target second type vertex is a second type vertex whose Euclidean distance to the first type vertex satisfies a sixth condition. Optionally, the sixth condition includes: the Euclidean distance is less than a predetermined threshold, i.e., the target second type vertex is a second type vertex whose Euclidean distance to the first type vertex is less than a predetermined threshold. Preferably, the target second type vertex is the second type vertex with the smallest Euclidean distance to the first type vertex.
[0149] In this embodiment, unreasonable vertices can be processed differently depending on their degree of unreasonableness. When the minimum Euclidean distance between an unreasonable vertex and a reasonable vertex is greater than a certain threshold, the unreasonable vertex is determined to be deleted; otherwise, the unreasonable vertex is corrected to the midpoint of its nearest reasonable vertex.
[0150] As an optional embodiment, the method further includes:
[0151] Decode the first bitstream to obtain the offset value of the centroid vertex of the Trisoup node;
[0152] The initial position of the centroid vertex of the Trisoup node is determined based on the second type of vertex and the modified first type of vertex;
[0153] The position of the centroid vertex after offset is determined based on the initial position of the centroid vertex and the offset value.
[0154] In this embodiment, after deleting or correcting unreasonable vertices, the decoder decodes the centroid quantization offset value in the bitstream. This centroid quantization offset value is the quantized offset value of the centroid vertex. The initial position of the centroid vertex is calculated based on the processed vertices. The inverse quantization offset value is summed with the initial position of the centroid vertex to obtain the offset centroid vertex position.
[0155] Optionally, the decoding end decodes the bitstream indicating whether face vertices exist, obtains information on the existence of face vertices, and obtains the Trisoup face vertices corresponding to each Trisoup node. Specifically, the decoding end determines the face vertices for each node and encodes and sends them to the decoding end.
[0156] Optionally, the decoding end sorts the vertex coordinates and face vertex coordinates within each node, and then constructs triangular patches using edge vertices, offset centroids, and face vertices; it then performs ray tracing sampling on the triangular patches to obtain the reconstructed point cloud.
[0157] As an optional embodiment, the method further includes:
[0158] Decoding the second bitstream yields a first flag, which indicates whether Trisoup vertex optimization technology is enabled or disabled.
[0159] In embodiments of this application, the encoding end encodes a flag indicating whether the Trisoup vertex optimization method of this application is enabled to obtain a second bitstream; the decoding end decodes the second bitstream to determine whether the Trisoup vertex optimization method is enabled; if the Trisoup vertex optimization method is enabled, the implementation process of the Trisoup vertex optimization method of this application is executed. Optionally, the second bitstream and the first bitstream can be the same bitstream or different bitstreams.
[0160] Optionally, the decoding end can decode the second bitstream if Trisoup is enabled. The encoding end can encode a flag indicating whether Trisoup is enabled; the decoding end can determine whether Trisoup is enabled by decoding the flag.
[0161] In the embodiments of this application, the decoding process includes the following three steps:
[0162] 1) Decode the Trisoup edge vertices located on the Trisoup edge to obtain the axial distribution information of the vertices and the total number of vertices;
[0163] 2) Construct a Trisoup triangle on the Trisoup node;
[0164] 3) Determine the decoding points using Trisoup triangular voxelization.
[0165] This method first requires transmitting the flag indicating whether Trisoup vertex optimization is enabled (Trisoup_enabled_flag = true) in this application, which belongs to the gbh parameter set. The vertex corresponding to each Trisoup edge is obtained by decoding in step 1).
[0166] In embodiments of this application, the decoding end determines a first type of vertex based on the axial distribution information of the vertices in the Trisoup node and the total number of vertices, and then deletes or corrects the first type of vertices. By deleting or correcting the first type of vertices, a large number of erroneous point clouds can be removed, reducing the performance loss in the quality of the reconstructed point cloud.
[0167] This application improves upon the method of adjacent nodes sharing vertices on common edges to ensure the continuity of reconstructed surfaces between blocks and reduce bitstream. When Trisoup is enabled, the application allows users to choose whether to enable the Trisoup vertex optimization technique. When enabled, this technique uses the distribution patterns of vertices within a node to infer unreasonable vertices, which are then corrected or deleted. Finally, the processed vertices are used for subsequent point cloud reconstruction according to existing techniques, improving the quality of the reconstructed point cloud; and by removing some erroneous reconstructed point clouds, the bitstream of attribute encoding is reduced.
[0168] As shown in Figure 7, this application embodiment also provides a Trisoup vertex optimization method, executed by the encoding end, the method including:
[0169] Step 701: The encoding end determines the axial distribution information of the vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry.
[0170] Step 702: The encoding end determines the first type of vertex based on the axial distribution information and the total number of vertices;
[0171] Step 703: The encoding end deletes or modifies the first type of vertex.
[0172] In this embodiment, the encoding end can determine the axial distribution information of vertices in the geometry corresponding to the Trisoup node. The axes include x, y, and z. The encoding end can statistically analyze the distribution of vertices along the x, y, and z axes, and count the total number of vertices contained within the geometry. Based on the distribution of vertices along the x, y, and z axes and the total number of vertices, the encoding end determines the first type of vertices contained in the Trisoup node. These first type of vertices may be unreasonable vertices that need to be deleted or corrected.
[0173] Optionally, for each Trisoup node, the encoder can determine the vertex presence flag and quantized vertex position for each edge of the geometry corresponding to the Trisoup node. The quantized vertex position exists if the vertex presence flag indicates the presence of a vertex.
[0174] The encoding end can reorder non-repeating edges lexicographically to determine the encoding order. The encoding end can use neighbor information to determine the vertex presence flag and the context of the vertex position, and then use Dynamic Optional Binarization with Update on the Fly (OBUF) to encode the vertex presence flag and quantized vertex position into a bitstream according to the determined encoding order.
[0175] Optionally, when determining the first type of vertex, the encoding end can make judgments for the three axes x, y, and z respectively. For example, the first type of vertex can be determined based on the distribution of vertices along the x-axis and the total number of vertices (which can be denoted as vertex_total); the first type of vertex can be determined based on the distribution of vertices along the y-axis and the total number of vertices; and the first type of vertex can be determined based on the distribution of vertices along the z-axis and the total number of vertices.
[0176] In embodiments of this application, the encoding end determines a first type of vertex based on the axial distribution information of the vertices in the Trisoup node and the total number of vertices, and then deletes or corrects the first type of vertices. By deleting or correcting the first type of vertices, a large number of erroneous point clouds can be removed, reducing the performance loss in the quality of the reconstructed point cloud.
[0177] As an optional embodiment, determining the axial distribution information of vertices in the geometry corresponding to the Trisoup node includes:
[0178] Determine the distribution information of vertices in the geometry corresponding to the Trisoup node in each of the three axes;
[0179] The distribution information is used to indicate that the vertices are distributed along the positive or negative half-axis of each axis, and / or the number of vertices distributed along the positive or negative half-axis of each axis.
[0180] In this embodiment, the encoding end determines the distribution of vertices along the x, y, and z axes. The specific range of the positive or negative half-axis can be determined based on thresholds. For example, for a certain axis, if the distance between the dimension value of a vertex along that axis and the dimension value of the starting point of its edge along that axis is less than or equal to a threshold th1, the vertex is considered to be distributed along the negative half-axis of that axis; if the distance between the dimension value of a vertex along that axis and the dimension value of the ending point of its edge along that axis is less than or equal to a threshold th2, the vertex is considered to be distributed along the positive half-axis of that axis.
[0181] When determining the axial distribution information of a vertex, the encoder determines the distribution of the vertex along a certain axis and the number of all vertices corresponding to that distribution.
[0182] Optionally, determining the axial distribution information of vertices in the geometry corresponding to the Trisoup node includes at least one of the following:
[0183] For the target axis among the three axes, if the vertex coordinates satisfy the first condition, it is determined that the vertex is distributed on the negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the starting point of the edge where the vertex is located is less than or equal to a first threshold.
[0184] For the target axis among the three axes, if the vertex coordinates satisfy the second condition, the vertex is determined to be distributed on the positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the endpoint of the edge where the vertex is located is less than or equal to a second threshold.
[0185] In this embodiment, vertices satisfying the first condition are considered to be distributed on the negative half of a certain axis, and vertices satisfying the second condition are considered to be distributed on the positive half of a certain axis. Taking the x-axis as an example, when the x-dimensional value of the vertex coordinate is less than or equal to the x-dimensional value of the starting point of the edge where the vertex is located, the vertex is considered to be distributed in the negative half of the x-axis, and the total number of vertices satisfying this condition is the first quantity (for example, denoted as vertex_x[0]); when the x-dimensional value of the vertex coordinate is less than or equal to the ending point of the edge where it is located, the vertex is considered to be distributed in the positive half of the x-axis, and the total number of vertices satisfying this condition is the second quantity (which can be denoted as vertex_x[1]). The starting point and ending point of the edge in the geometric structure are determined according to the direction of the edge.
[0186] As an optional embodiment, determining the first type of vertex based on the axial distribution information and the total number of vertices includes at least one of the following:
[0187] For a target axis among the three axes, if the ratio of the first quantity to the total number of vertices is greater than or equal to a third threshold, a vertex satisfying the third condition is determined to be a first type vertex; the third condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the endpoint of the edge where the vertex is located; the first quantity is the number of vertices located on the negative half axis of the target axis.
[0188] For the target axis among the three axes, if the ratio of the second quantity to the total number of vertices is greater than or equal to the fourth threshold, the vertex that satisfies the fourth condition is determined to be a first type vertex; the fourth condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the starting point of the edge where the vertex is located; the second quantity is the number of vertices located on the positive half axis of the target axis.
[0189] In this embodiment, the encoder determines the first type of vertex for each axis. Optionally, the encoder determines the first type of vertex when the total number of vertices is greater than or equal to a threshold. For a certain axis, if the ratio of the number of vertices located in the negative half of the axis (i.e., the first number) to the total number of vertices is greater than or equal to a third threshold P1, then all vertices whose dimension value is equal to the dimension value of the endpoint of the edge where the vertex is located are determined to be first type vertices. The first type of vertex can be an unreasonable vertex, that is, a vertex that needs to be deleted or corrected. For example, taking the x-axis as an example, if the number of vertices vertex_x[0] located in the negative half of the x-axis is greater than or equal to P1 in the total number of vertices vertex_total in the node, then all vertices whose x-dimensional value is equal to the x-dimensional value of the endpoint of the edge where the vertex is located are determined to be unreasonable vertices (i.e., the first type of vertex).
[0190] For a certain axis, if the ratio of the number of vertices located on the positive half of the axis (i.e., the second number) to the total number of vertices is greater than or equal to the fourth threshold P4, then all vertices whose dimension value is equal to the dimension value of the axis at the starting point of the edge where the vertex is located are determined to be first type vertices. The first type of vertices can be unreasonable vertices, that is, vertices that need to be deleted or corrected. For example, taking the x-axis as an example, if the number of vertices vertex_x[1] located on the positive half of the x-axis is greater than or equal to P4 in the total number of vertices vertex_total in the node, then all vertices whose x-dimensional value is equal to the x-dimensional value of the starting point of the edge where the vertex is located are determined to be unreasonable vertices (i.e., first type vertices).
[0191] It should be noted that the "ratio" mentioned in the embodiments of this application can be the absolute value of the quantity or a percentage, and is not limited here.
[0192] As an optional embodiment, if at least two of the three axes contain vertices of the first type, then the vertices of the first type are filtered.
[0193] The deletion or modification of the first type of vertices includes: deleting or modifying the filtered first type of vertices.
[0194] In this embodiment, the identified first-type vertices can be considered unreasonable vertices. If more than one axis indicates the existence of unreasonable vertices, further filtering of these unreasonable vertices is performed. When deleting or correcting unreasonable vertices, the remaining unreasonable vertices after filtering are deleted or corrected.
[0195] Optionally, filtering of the first type of vertices includes at least one of the following:
[0196] Determine the intersection between the first type vertices of the at least two axes, wherein the first type vertices within the intersection are the filtered first type vertices;
[0197] If there is no intersection between the first type vertices of the at least two axes, then the first type vertex of the axis with the largest number of first type vertices is determined as the filtered first type vertex.
[0198] In this embodiment, if at least two axes corresponding to first-type vertices of the first type have an intersection, then the vertices within the intersection are determined to be the final unreasonable vertices. If at least two axes corresponding to first-type vertices of the first type do not have an intersection, then the different axes are sorted according to the number of first-type vertices they contain, and the first-type vertices corresponding to the axes containing more first-type vertices are preferentially selected as the final unreasonable vertices.
[0199] Taking the first type of vertices as an example of unreasonable vertices: if there is an intersection of unreasonable vertices obtained from the three axes, then the vertices within the intersection are determined to be the final unreasonable vertices, and these final unreasonable vertices are deleted or corrected; if there is no intersection, then the different axes are prioritized according to the number of unreasonable vertices they produce, and the unreasonable vertices obtained from the axis with the larger number of unreasonable vertices are selected as the final unreasonable vertices, and these final unreasonable vertices are deleted or corrected. At most, all unreasonable vertices obtained from the three axes can be processed.
[0200] Optionally, the deletion or modification of the first type of vertex includes:
[0201] Based on the Euclidean distance between the first type of vertex and the second type of vertex, the first type of vertex is deleted or modified; wherein, the second type of vertex is any other vertex in the geometric structure besides the first type of vertex.
[0202] In this embodiment, the first type of vertex can be an unreasonable vertex, and the second type of vertex can be a reasonable vertex. For unreasonable vertices, different processing can be applied based on their degree of unreasonableness. The Euclidean distance between the first type of vertex and the second type of vertex can represent the degree of unreasonableness of the vertex.
[0203] Optionally, the deletion or modification of the first type of vertex includes at least one of the following:
[0204] If the Euclidean distance between the first type of vertex and the second type of vertex satisfies the fifth condition, the first type of vertex is deleted.
[0205] If the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is corrected to the target position.
[0206] Optionally, the fifth condition includes: the minimum Euclidean distance between the first type of vertex and the second type of vertex is greater than a predetermined threshold. For example, if the first type of vertex is an unreasonable vertex and the second type of vertex is a reasonable vertex, for an unreasonable vertex, calculate its Euclidean distance to each reasonable vertex, determine the minimum value among the various Euclidean distances, and if the minimum value is greater than the predetermined threshold, then the unreasonable vertex is deleted; if the minimum value is less than or equal to the predetermined threshold, then the position of the unreasonable vertex needs to be corrected.
[0207] Optionally, the target position is the midpoint between the first type vertex and the target second type vertex, where the target second type vertex is a second type vertex whose Euclidean distance to the first type vertex satisfies a sixth condition. Optionally, the sixth condition includes: the Euclidean distance is less than a predetermined threshold, i.e., the target second type vertex is a second type vertex whose Euclidean distance to the first type vertex is less than a predetermined threshold. Preferably, the target second type vertex is the second type vertex with the smallest Euclidean distance to the first type vertex.
[0208] In this embodiment, unreasonable vertices can be processed differently depending on their degree of unreasonableness. When the minimum Euclidean distance between an unreasonable vertex and a reasonable vertex is greater than a certain threshold, the unreasonable vertex is determined to be deleted; otherwise, the unreasonable vertex is corrected to the midpoint of its nearest reasonable vertex.
[0209] As an optional embodiment, the method further includes:
[0210] The initial position of the centroid vertex of the Trisoup node is determined based on the second type of vertex and the modified first type of vertex;
[0211] The offset value of the centroid vertex is determined based on the initial position of the centroid vertex and the original point cloud.
[0212] The offset value is encoded into a first bitstream, and the offset position of the centroid vertex is determined based on the initial position of the centroid vertex and the offset value.
[0213] In this embodiment, after deleting or correcting unreasonable vertices, the encoder calculates the initial position of the centroid vertex based on the processed vertices; it then calculates the offset value of the centroid vertex based on the original points surrounding the initial position. This offset value is then quantized, encoded, and written into the bitstream. The inverse quantization drift value is summed with the initial position of the centroid vertex to obtain the offset position of the centroid vertex.
[0214] Optionally, the encoding end selectively determines face vertices for each node. The storage of face vertices is encoded and sent to the decoding end; the encoding end sorts the vertex coordinates and face vertex coordinates within each node, and constructs triangular patches using edge vertices, offset centroid vertices, and face vertices; ray tracing is performed on the triangular patches to obtain the reconstructed point cloud.
[0215] As an optional embodiment, the method further includes: encoding a first flag into a second bitstream, the first flag being used to indicate whether Trisoup vertex optimization technology is enabled or disabled.
[0216] In embodiments of this application, the encoding end encodes a flag indicating whether the Trisoup vertex optimization method of this application is enabled to obtain a second bitstream; the decoding end decodes the second bitstream to determine whether the Trisoup vertex optimization method is enabled; if the Trisoup vertex optimization method is enabled, the implementation process of the Trisoup vertex optimization method of this application is executed. Optionally, the second bitstream and the first bitstream can be the same bitstream or different bitstreams.
[0217] Optionally, the decoding end can decode the second bitstream if Trisoup is enabled. The encoding end can encode a flag indicating whether Trisoup is enabled; the decoding end can determine whether Trisoup is enabled by decoding the flag.
[0218] In embodiments of this application, the encoding end determines a first type of vertex based on the axial distribution information of the vertices in the Trisoup node and the total number of vertices, and then deletes or corrects the first type of vertices. By deleting or correcting the first type of vertices, a large number of erroneous point clouds can be removed, reducing the performance loss in the quality of the reconstructed point cloud.
[0219] The Trisoup vertex optimization method provided in this application can be executed by a Trisoup vertex optimization device. This application uses the execution of the Trisoup vertex optimization method by a Trisoup vertex optimization device as an example to illustrate the Trisoup vertex optimization device provided in this application.
[0220] As shown in Figure 8, this application embodiment provides a Trisoup vertex optimization device 800, applied at the decoding end, the device comprising:
[0221] The first determining module 810 is used to determine the axial distribution information of vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry.
[0222] The second determining module 820 is used to determine the first type of vertex based on the axial distribution information and the total number of vertices;
[0223] The first processing module 830 is used to delete or modify the vertices of the first type.
[0224] Optionally, the first determining module is specifically used for:
[0225] Determine the distribution information of vertices in the geometry corresponding to the Trisoup node in each of the three axes;
[0226] The distribution information is used to indicate that the vertices are distributed along the positive or negative half-axis of each axis, and / or the number of vertices distributed along the positive or negative half-axis of each axis.
[0227] Optionally, the first determining module is specifically configured to perform at least one of the following:
[0228] For the target axis among the three axes, if the vertex coordinates satisfy the first condition, it is determined that the vertex is distributed on the negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the starting point of the edge where the vertex is located is less than or equal to a first threshold.
[0229] For the target axis among the three axes, if the vertex coordinates satisfy the second condition, the vertex is determined to be distributed on the positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the endpoint of the edge where the vertex is located is less than or equal to a second threshold.
[0230] Optionally, the second determining module is specifically used to perform at least one of the following:
[0231] For a target axis among the three axes, if the ratio of the first quantity to the total number of vertices is greater than or equal to a third threshold, a vertex satisfying the third condition is determined to be a first type vertex; the third condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the endpoint of the edge where the vertex is located; the first quantity is the number of vertices located on the negative half axis of the target axis.
[0232] For the target axis among the three axes, if the ratio of the second quantity to the total number of vertices is greater than or equal to the fourth threshold, the vertex that satisfies the fourth condition is determined to be a first type vertex; the fourth condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the starting point of the edge where the vertex is located; the second quantity is the number of vertices located on the positive half axis of the target axis.
[0233] Optionally, the device further includes:
[0234] The second processing module is used to filter the first type of vertices if at least two of the three axes have a first type of vertex.
[0235] The first processing module is specifically used to delete or modify the first type of vertices after filtering.
[0236] Optionally, the second processing module is specifically configured to perform at least one of the following:
[0237] Determine the intersection between the first type vertices of the at least two axes, wherein the first type vertices within the intersection are the filtered first type vertices;
[0238] If there is no intersection between the first type vertices of the at least two axes, then the first type vertex of the axis with the largest number of first type vertices is determined as the filtered first type vertex.
[0239] Optionally, the first processing module is specifically used for:
[0240] Based on the Euclidean distance between the first type of vertex and the second type of vertex, the first type of vertex is deleted or modified;
[0241] The second type of vertex refers to the vertices in the geometry other than the first type of vertex.
[0242] Optionally, the first processing module is specifically configured to perform at least one of the following:
[0243] If the Euclidean distance between the first type of vertex and the second type of vertex satisfies the fifth condition, the first type of vertex is deleted.
[0244] If the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is corrected to the target position.
[0245] Optionally, the target position is the midpoint between the first type vertex and the target second type vertex, wherein the target second type vertex is a second type vertex whose Euclidean distance from the first type vertex satisfies the sixth condition.
[0246] Optionally, the device further includes:
[0247] The first decoding module is used to decode the first bitstream to obtain the offset value of the centroid vertex of the Trisoup node;
[0248] The third determining module is used to determine the initial position of the centroid vertex of the Trisoup node based on the second type of vertex and the corrected first type of vertex;
[0249] The fourth determining module is used to determine the offset position of the centroid vertex based on the initial position of the centroid vertex and the offset value.
[0250] Optionally, the device further includes:
[0251] The second decoding module is used to decode the second bitstream to obtain a first flag, which is used to indicate whether Trisoup vertex optimization technology is enabled or disabled.
[0252] In embodiments of this application, the decoding end determines a first type of vertex based on the axial distribution information of the vertices in the Trisoup node and the total number of vertices, and then deletes or corrects the first type of vertices. By deleting or correcting the first type of vertices, a large number of erroneous point clouds can be removed, reducing the performance loss in the quality of the reconstructed point cloud.
[0253] The Trisoup vertex optimization device provided in this application embodiment can implement the various processes implemented in the method embodiments of Figures 4 to 6 and achieve the same technical effect. To avoid repetition, it will not be described again here.
[0254] As shown in Figure 9, this application embodiment provides a Trisoup vertex optimization device 900, applied at the encoding end, the device comprising:
[0255] The fifth determining module 910 is used to determine the axial distribution information of vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry.
[0256] The sixth determining module 920 is used to determine the first type of vertex based on the axial distribution information and the total number of vertices;
[0257] The third processing module 930 is used to delete or modify the first type of vertices.
[0258] Optionally, the fifth determining module is specifically used for:
[0259] Determine the distribution information of vertices in the geometry corresponding to the Trisoup node in each of the three axes;
[0260] The distribution information is used to indicate that the vertices are distributed along the positive or negative half-axis of each axis, and / or the number of vertices distributed along the positive or negative half-axis of each axis.
[0261] Optionally, the fifth determining module is specifically used to perform at least one of the following:
[0262] For the target axis among the three axes, if the vertex coordinates satisfy the first condition, it is determined that the vertex is distributed on the negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the starting point of the edge where the vertex is located is less than or equal to a first threshold.
[0263] For the target axis among the three axes, if the vertex coordinates satisfy the second condition, the vertex is determined to be distributed on the positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the endpoint of the edge where the vertex is located is less than or equal to a second threshold.
[0264] Optionally, the sixth determining module is specifically used to perform at least one of the following:
[0265] For a target axis among the three axes, if the ratio of the first quantity to the total number of vertices is greater than or equal to a third threshold, a vertex satisfying the third condition is determined to be a first type vertex; the third condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the endpoint of the edge where the vertex is located; the first quantity is the number of vertices located on the negative half axis of the target axis.
[0266] For the target axis among the three axes, if the ratio of the second quantity to the total number of vertices is greater than or equal to the fourth threshold, the vertex that satisfies the fourth condition is determined to be a first type vertex; the fourth condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the starting point of the edge where the vertex is located; the second quantity is the number of vertices located on the positive half axis of the target axis.
[0267] Optionally, the device further includes:
[0268] The fourth processing module is used to filter the first type of vertices if at least two of the three axes have a first type of vertex.
[0269] The third processing module is specifically used to delete or modify the first type of vertices after filtering.
[0270] Optionally, the fourth processing module is specifically used to perform at least one of the following:
[0271] Determine the intersection between the first type vertices of the at least two axes, wherein the first type vertices within the intersection are the filtered first type vertices;
[0272] If there is no intersection between the first type vertices of the at least two axes, then the first type vertex of the axis with the largest number of first type vertices is determined as the filtered first type vertex.
[0273] Optionally, the third processing module is specifically used for:
[0274] Based on the Euclidean distance between the first type of vertex and the second type of vertex, the first type of vertex is deleted or modified;
[0275] The second type of vertex refers to the vertices in the geometry other than the first type of vertex.
[0276] Optionally, the third processing module is specifically used to perform at least one of the following:
[0277] If the Euclidean distance between the first type of vertex and the second type of vertex satisfies the fifth condition, the first type of vertex is deleted.
[0278] If the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is corrected to the target position.
[0279] Optionally, the target position is the midpoint between the first type vertex and the target second type vertex, wherein the target second type vertex is a second type vertex whose Euclidean distance from the first type vertex satisfies the sixth condition.
[0280] Optionally, the device further includes:
[0281] The seventh determining module is used to determine the initial position of the centroid vertex of the Trisoup node based on the second type of vertex and the corrected first type of vertex;
[0282] The eighth determining module is used to determine the offset value of the centroid vertex based on the initial position of the centroid vertex and the original point cloud.
[0283] The first encoding module is used to encode the offset value into a first bitstream, and determine the offset position of the centroid vertex based on the initial position of the centroid vertex and the offset value.
[0284] Optionally, the device further includes:
[0285] The second encoding module is used to encode the first flag into the second bitstream, and the first flag is used to indicate whether Trisoup vertex optimization technology is enabled or disabled.
[0286] In embodiments of this application, the encoding end determines a first type of vertex based on the axial distribution information of the vertices in the Trisoup node and the total number of vertices, and then deletes or corrects the first type of vertices. By deleting or correcting the first type of vertices, a large number of erroneous point clouds can be removed, reducing the performance loss in the quality of the reconstructed point cloud.
[0287] The Trisoup vertex optimization 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.
[0288] As shown in Figure 10, this application embodiment also provides an electronic device 1000, including a processor 1001 and a memory 1002. The memory 1002 stores programs or instructions that can run on the processor 1001. For example, when the electronic device 1000 is an encoding device, the program or instructions executed by the processor 1001 implement the various steps of the above-described Trisoup vertex optimization method embodiment and achieve the same technical effect. When the electronic device 1000 is a decoding device, the program or instructions executed by the processor 1001 implement the various steps of the above-described Trisoup vertex optimization method embodiment and achieve the same technical effect. To avoid repetition, this will not be repeated here. Optionally, the memory 1002 can be the memory 102 or memory 113 in the embodiment shown in Figure 1, and the processor 1001 can implement the functions of the encoder 200 or decoder 300 in the embodiments shown in Figures 1 to 3.
[0289] 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 Trisoup vertex optimization method embodiment described above. Optionally, the memory may be memory 102 or memory 113 in the embodiment shown in FIG1, and the processing circuit may implement the functions of encoder 200 or decoder 300 in the embodiments shown in FIG1 to FIG3.
[0290] 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.
[0291] The aforementioned electronic devices can be terminals or other devices besides terminals, such as servers, network attached storage (NAS), etc.
[0292] The terminal can be a mobile phone, tablet computer, laptop computer, notebook computer, personal digital assistant (PDA), handheld computer, netbook, ultra-mobile personal computer (UMPC), mobile internet device (MID), augmented reality (AR), virtual reality (VR) device, mixed reality (MR) device, robot, wearable device, flight vehicle, vehicle user equipment (VUE), shipboard device, pedestrian user equipment (PUE), smart home (home devices with wireless communication capabilities, such as refrigerators, televisions, washing machines, or furniture), game console, personal computer (PC), ATM or self-service machine, etc. Wearable devices include: smartwatches, smart bracelets, smart earphones, smart glasses, smart jewelry (smart bracelets, smart chains, smart rings, smart necklaces, smart anklets, smart anklets, etc.), smart wristbands, smart clothing, etc. Among these, in-vehicle devices can also be referred to as in-vehicle terminals, in-vehicle controllers, in-vehicle modules, in-vehicle components, in-vehicle chips, or in-vehicle units, etc. It should be noted that the embodiments in this application do not limit the specific type of terminal.
[0293] 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.
[0294] 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.
[0295] 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.
[0296] The terminal 1100 includes, but is not limited to, at least some of the following components: radio frequency unit 1101, network module 1102, audio output unit 1103, input unit 1104, sensor 1105, display unit 1106, user input unit 1107, interface unit 1108, memory 1109, and processor 1110.
[0297] Those skilled in the art will understand that terminal 1100 may also include a power supply (such as a battery) for powering various components. The power supply can be logically connected to processor 1110 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.
[0298] It should be understood that, in this embodiment, the input unit 1104 may include a graphics processing unit (GPU) 11041 and a microphone 11042. The GPU 11041 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 1106 may include a display panel 11061, which may be configured in the form of a liquid crystal display, an organic light-emitting diode, etc. The user input unit 1107 includes at least one of a touch panel 11071 and other input devices 11072. The touch panel 11071 is also called a touch screen. The touch panel 11071 may include a touch detection device and a touch controller. Other input devices 11072 may include, but are not limited to, physical keyboards, function keys (such as volume control buttons, power buttons, etc.), trackballs, mice, joysticks, etc., which will not be described in detail here.
[0299] In this embodiment, after receiving downlink data from the network-side device, the radio frequency unit 1101 can transmit it to the processor 1110 for processing; in addition, the radio frequency unit 1101 can send uplink data to the network-side device. Typically, the radio frequency unit 901 includes, but is not limited to, antennas, amplifiers, transceivers, couplers, low-noise amplifiers, duplexers, etc.
[0300] The memory 1109 can be used to store software programs or instructions, as well as various data. The memory 1109 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 1109 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 1109 in this embodiment includes, but is not limited to, these and any other suitable types of memory.
[0301] Processor 1110 may include one or more processing units; optionally, processor 1110 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 1110.
[0302] Where the terminal is a decoding device:
[0303] The processor 1110 is used to: determine the axial distribution information of vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry;
[0304] Based on the axial distribution information and the total number of vertices, a first type of vertex is determined;
[0305] Delete or modify the vertices of the first type.
[0306] Optionally, the processor 1110 is specifically used for:
[0307] Determine the distribution information of vertices in the geometry corresponding to the Trisoup node in each of the three axes;
[0308] The distribution information is used to indicate that the vertices are distributed along the positive or negative half-axis of each axis, and / or the number of vertices distributed along the positive or negative half-axis of each axis.
[0309] Optionally, processor 1110 is specifically configured to perform at least one of the following:
[0310] For the target axis among the three axes, if the vertex coordinates satisfy the first condition, it is determined that the vertex is distributed on the negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the starting point of the edge where the vertex is located is less than or equal to a first threshold.
[0311] For the target axis among the three axes, if the vertex coordinates satisfy the second condition, the vertex is determined to be distributed on the positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the endpoint of the edge where the vertex is located is less than or equal to a second threshold.
[0312] Optionally, processor 1110 is specifically configured to perform at least one of the following:
[0313] For a target axis among the three axes, if the ratio of the first quantity to the total number of vertices is greater than or equal to a third threshold, a vertex satisfying the third condition is determined to be a first type vertex; the third condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the endpoint of the edge where the vertex is located; the first quantity is the number of vertices located on the negative half axis of the target axis.
[0314] For the target axis among the three axes, if the ratio of the second quantity to the total number of vertices is greater than or equal to the fourth threshold, the vertex that satisfies the fourth condition is determined to be a first type vertex; the fourth condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the starting point of the edge where the vertex is located; the second quantity is the number of vertices located on the positive half axis of the target axis.
[0315] Optionally, the processor 1110 is further configured to:
[0316] If at least two of the three axes contain vertices of the first type, then the vertices of the first type are filtered out.
[0317] The deletion or modification of the first type of vertex includes:
[0318] Delete or modify the first type of vertices after filtering.
[0319] Optionally, the processor 1110 is configured to perform at least one of the following:
[0320] Determine the intersection between the first type vertices of the at least two axes, wherein the first type vertices within the intersection are the filtered first type vertices;
[0321] If there is no intersection between the first type vertices of the at least two axes, then the first type vertex of the axis with the largest number of first type vertices is determined as the filtered first type vertex.
[0322] Optionally, the processor 1110 is specifically used for:
[0323] Based on the Euclidean distance between the first type of vertex and the second type of vertex, the first type of vertex is deleted or modified;
[0324] The second type of vertex refers to the vertices in the geometry other than the first type of vertex.
[0325] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0326] If the Euclidean distance between the first type of vertex and the second type of vertex satisfies the fifth condition, the first type of vertex is deleted.
[0327] If the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is corrected to the target position.
[0328] Optionally, the target position is the midpoint between the first type vertex and the target second type vertex, wherein the target second type vertex is a second type vertex whose Euclidean distance from the first type vertex satisfies the sixth condition.
[0329] Optionally, the processor is further configured to:
[0330] Decode the first bitstream to obtain the offset value of the centroid vertex of the Trisoup node;
[0331] The initial position of the centroid vertex of the Trisoup node is determined based on the second type of vertex and the modified first type of vertex;
[0332] The position of the centroid vertex after offset is determined based on the initial position of the centroid vertex and the offset value.
[0333] Optionally, the processor is further configured to:
[0334] Decoding the second bitstream yields a first flag, which indicates whether Trisoup vertex optimization technology is enabled or disabled.
[0335] Where the terminal is an encoding device:
[0336] The processor 1110 is configured to: determine the axial distribution information of vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry; determine a first type of vertex based on the axial distribution information and the total number of vertices; and delete or modify the first type of vertex.
[0337] Optionally, the processor 1110 is specifically used for:
[0338] Determine the distribution information of vertices in the geometry corresponding to the Trisoup node in each of the three axes;
[0339] The distribution information is used to indicate that the vertices are distributed along the positive or negative half-axis of each axis, and / or the number of vertices distributed along the positive or negative half-axis of each axis.
[0340] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0341] For the target axis among the three axes, if the vertex coordinates satisfy the first condition, it is determined that the vertex is distributed on the negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the starting point of the edge where the vertex is located is less than or equal to a first threshold.
[0342] For the target axis among the three axes, if the vertex coordinates satisfy the second condition, the vertex is determined to be distributed on the positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the endpoint of the edge where the vertex is located is less than or equal to a second threshold.
[0343] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0344] For a target axis among the three axes, if the ratio of the first quantity to the total number of vertices is greater than or equal to a third threshold, a vertex satisfying the third condition is determined to be a first type vertex; the third condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the endpoint of the edge where the vertex is located; the first quantity is the number of vertices located on the negative half axis of the target axis.
[0345] For the target axis among the three axes, if the ratio of the second quantity to the total number of vertices is greater than or equal to the fourth threshold, the vertex that satisfies the fourth condition is determined to be a first type vertex; the fourth condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the starting point of the edge where the vertex is located; the second quantity is the number of vertices located on the positive half axis of the target axis.
[0346] Optionally, the processor 1110 is further configured to:
[0347] If at least two of the three axes contain vertices of the first type, then the vertices of the first type are filtered out.
[0348] The deletion or modification of the first type of vertex includes:
[0349] Delete or modify the first type of vertices after filtering.
[0350] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0351] Determine the intersection between the first type vertices of the at least two axes, wherein the first type vertices within the intersection are the filtered first type vertices;
[0352] If there is no intersection between the first type vertices of the at least two axes, then the first type vertex of the axis with the largest number of first type vertices is determined as the filtered first type vertex.
[0353] Optionally, the processor 1110 is specifically used for:
[0354] Based on the Euclidean distance between the first type of vertex and the second type of vertex, the first type of vertex is deleted or modified;
[0355] The second type of vertex refers to the vertices in the geometry other than the first type of vertex.
[0356] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0357] If the Euclidean distance between the first type of vertex and the second type of vertex satisfies the fifth condition, the first type of vertex is deleted.
[0358] If the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is corrected to the target position.
[0359] Optionally, the target position is the midpoint between the first type vertex and the target second type vertex, wherein the target second type vertex is a second type vertex whose Euclidean distance from the first type vertex satisfies the sixth condition.
[0360] Optionally, the processor 1110 is further configured to:
[0361] The initial position of the centroid vertex of the Trisoup node is determined based on the second type of vertex and the modified first type of vertex;
[0362] The offset value of the centroid vertex is determined based on the initial position of the centroid vertex and the original point cloud.
[0363] The offset value is encoded into a first bitstream, and the offset position of the centroid vertex is determined based on the initial position of the centroid vertex and the offset value.
[0364] Optionally, the processor 1110 is further configured to:
[0365] The first flag is encoded as the second bitstream, and the first flag is used to indicate whether Trisoup vertex optimization technology is enabled or disabled.
[0366] In embodiments of this application, the encoding or decoding end determines a first type of vertex based on the axial distribution information of the vertices in the Trisoup node and the total number of vertices, and then deletes or corrects the first type of vertices. By deleting or correcting the first type of vertices, a large number of erroneous point clouds can be removed, reducing the performance loss in the quality of the reconstructed point cloud.
[0367] It is understood that the implementation process of each implementation method mentioned in this embodiment can refer to the relevant description of the Trisoup vertex optimization method in the method embodiment, and achieve the same or corresponding technical effect. To avoid repetition, it will not be described again here.
[0368] 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 Trisoup vertex optimization method embodiments and achieve the same technical effect. To avoid repetition, they will not be described again here.
[0369] 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.
[0370] 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 Trisoup vertex optimization method embodiment and achieve the same technical effect. To avoid repetition, it will not be described again here.
[0371] 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.
[0372] 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 Trisoup vertex optimization method embodiments, and can achieve the same technical effect. To avoid repetition, it will not be described again here.
[0373] 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 Trisoup vertex optimization method applied to the encoding end as described above, and the decoding end device can be used to perform the steps of the Trisoup vertex optimization method applied to the decoding end as described above.
[0374] This application also provides a computer program product, wherein when the computer instructions are executed by a processor, they implement the steps of the Trisoup vertex optimization method described above and achieve the same technical effect. To avoid repetition, the details will not be repeated here.
[0375] 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.
[0376] From the above description of the embodiments, those skilled in the art can clearly understand that the methods of the above embodiments can be implemented by means of computer software products plus necessary general-purpose hardware platforms, and of course, they can also be implemented by hardware. The computer software product is stored in a storage medium (such as ROM, RAM, magnetic disk, optical disk, etc.) and includes several instructions to cause the terminal or network-side device to execute the methods described in the various embodiments of this application.
[0377] 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 Trisoup vertex optimization method, comprising: The decoding end determines the axial distribution information of the vertices in the geometric structure corresponding to the Trisoup node of the triangle set, as well as the total number of vertices contained in the geometric structure. The decoding end determines the first type of vertex based on the axial distribution information and the total number of vertices; The decoding end deletes or modifies the first type of vertex.
2. The method of claim 1, wherein, The determination of the axial distribution information of vertices in the geometry corresponding to the Trisoup node includes: Determine the distribution information of vertices in the geometry corresponding to the Trisoup node in each of the three axes; The distribution information is used to indicate that the vertices are distributed along the positive or negative half-axis of each axis, and / or the number of vertices distributed along the positive or negative half-axis of each axis.
3. The method of claim 1 or 2, wherein, Determining the axial distribution information of vertices in the geometry corresponding to the Trisoup node includes at least one of the following: For the target axis among the three axes, if the vertex coordinates satisfy the first condition, it is determined that the vertex is distributed on the negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the starting point of the edge where the vertex is located is less than or equal to a first threshold. For the target axis among the three axes, if the vertex coordinates satisfy the second condition, the vertex is determined to be distributed on the positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the endpoint of the edge where the vertex is located is less than or equal to a second threshold.
4. The method according to any one of claims 1 to 3, wherein, The determination of the first type of vertex based on the axial distribution information and the total number of vertices includes at least one of the following: For a target axis among the three axes, if the ratio of the first quantity to the total number of vertices is greater than or equal to the third threshold, the vertex that satisfies the third condition is determined to be a first type vertex; the third condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the endpoint of the edge where the vertex is located; the first quantity is the number of vertices located on the negative half axis of the target axis. For the target axis among the three axes, if the ratio of the second quantity to the total number of vertices is greater than or equal to the fourth threshold, the vertex that satisfies the fourth condition is determined to be a first type vertex; the fourth condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the starting point of the edge where the vertex is located; the second quantity is the number of vertices located on the positive half axis of the target axis.
5. The method according to any one of claims 1 to 4, further comprising: If at least two of the three axes contain vertices of the first type, then the vertices of the first type are filtered out. The deletion or modification of the first type of vertex includes: Delete or modify the first type of vertices after filtering.
6. The method of claim 5, wherein, Filtering the first type of vertices includes at least one of the following: Determine the intersection between the first type vertices of the at least two axes, wherein the first type vertices within the intersection are the filtered first type vertices; If there is no intersection between the first type vertices of the at least two axes, then the first type vertex of the axis with the largest number of first type vertices is determined as the filtered first type vertex.
7. The method of claim 1 or 5, wherein, The deletion or modification of the first type of vertex includes: Based on the Euclidean distance between the first type of vertex and the second type of vertex, the first type of vertex is deleted or modified; The second type of vertex refers to the vertices in the geometry other than the first type of vertex.
8. The method of claim 1 or 6 or 7, wherein, The deletion or modification of the first type of vertex includes at least one of the following: If the Euclidean distance between the first type of vertex and the second type of vertex satisfies the fifth condition, the first type of vertex is deleted. If the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is corrected to the target position.
9. The method of claim 8, wherein, The target position is the midpoint between the first type vertex and the target second type vertex, where the target second type vertex is a second type vertex whose Euclidean distance from the first type vertex satisfies the sixth condition.
10. The method according to claim 1, further comprising: Decode the first bitstream to obtain the offset value of the centroid vertex of the Trisoup node; The initial position of the centroid vertex of the Trisoup node is determined based on the second type of vertex and the modified first type of vertex; The position of the centroid vertex after offset is determined based on the initial position of the centroid vertex and the offset value.
11. The method according to claim 1, further comprising: Decoding the second bitstream yields a first flag, which indicates whether Trisoup vertex optimization technology is enabled or disabled.
12. A Trisoup vertex optimization method, comprising: The encoding end determines the axial distribution information of vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry. The encoding end determines the first type of vertex based on the axial distribution information and the total number of vertices; The encoding end deletes or modifies the first type of vertex.
13. The method of claim 12, wherein, The determination of the axial distribution information of vertices in the geometry corresponding to the Trisoup node includes: Determine the distribution information of vertices in the geometry corresponding to the Trisoup node in each of the three axes; The distribution information is used to indicate that the vertices are distributed along the positive or negative half-axis of each axis, and / or the number of vertices distributed along the positive or negative half-axis of each axis.
14. The method of claim 12 or 13, wherein, Determining the axial distribution information of vertices in the geometry corresponding to the Trisoup node includes at least one of the following: For the target axis among the three axes, if the vertex coordinates satisfy the first condition, it is determined that the vertex is distributed on the negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the starting point of the edge where the vertex is located is less than or equal to a first threshold. For the target axis among the three axes, if the vertex coordinates satisfy the second condition, the vertex is determined to be distributed on the positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the endpoint of the edge where the vertex is located is less than or equal to a second threshold.
15. The method according to any one of claims 12 to 14, wherein, The determination of the first type of vertex based on the axial distribution information and the total number of vertices includes at least one of the following: For a target axis among the three axes, if the ratio of the first quantity to the total number of vertices is greater than or equal to the third threshold, the vertex that satisfies the third condition is determined to be a first type vertex; the third condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the endpoint of the edge where the vertex is located; the first quantity is the number of vertices located on the negative half axis of the target axis. For the target axis among the three axes, if the ratio of the second quantity to the total number of vertices is greater than or equal to the fourth threshold, the vertex that satisfies the fourth condition is determined to be a first type vertex; the fourth condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the starting point of the edge where the vertex is located; the second quantity is the number of vertices located on the positive half axis of the target axis.
16. The method according to any one of claims 12 to 15, wherein the method further comprises: If at least two of the three axes contain vertices of the first type, then the vertices of the first type are filtered out. The deletion or modification of the first type of vertex includes: Delete or modify the first type of vertices after filtering.
17. The method of claim 16, wherein, Filtering the first type of vertices includes at least one of the following: Determine the intersection between the first type vertices of the at least two axes, wherein the first type vertices within the intersection are the filtered first type vertices; If there is no intersection between the first type vertices of the at least two axes, then the first type vertex of the axis with the largest number of first type vertices is determined as the filtered first type vertex.
18. The method of claim 12 or 16, wherein, The deletion or modification of the first type of vertex includes: Based on the Euclidean distance between the first type of vertex and the second type of vertex, the first type of vertex is deleted or modified; The second type of vertex refers to the vertices in the geometry other than the first type of vertex.
19. The method of claim 12 or 17 or 18, wherein, The deletion or modification of the first type of vertex includes at least one of the following: If the Euclidean distance between the first type of vertex and the second type of vertex satisfies the fifth condition, the first type of vertex is deleted. If the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is corrected to the target position.
20. The method of claim 19, wherein, The target location is the midpoint between the first type vertex and the target second type vertex, where the target second type vertex is a second type vertex whose Euclidean distance from the first type vertex satisfies the sixth condition.
21. The method according to claim 12, further comprising: The initial position of the centroid vertex of the Trisoup node is determined based on the second type of vertex and the modified first type of vertex; The offset value of the centroid vertex is determined based on the initial position of the centroid vertex and the original point cloud. The offset value is encoded into a first bitstream, and the offset position of the centroid vertex is determined based on the initial position of the centroid vertex and the offset value.
22. The method according to claim 12, further comprising: The first flag is encoded as the second bitstream, and the first flag is used to indicate whether Trisoup vertex optimization technology is enabled or disabled.
23. A Trisoup vertex optimization device, comprising: The first determining module is used to determine the axial distribution information of vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry. The second determining module is used to determine the first type of vertex based on the axial distribution information and the total number of vertices; The first processing module is used to delete or modify vertices of the first type.
24. The apparatus of claim 23, wherein, The first determining module is specifically used for: Determine the distribution information of vertices in the geometry corresponding to the Trisoup node in each of the three axes; The distribution information is used to indicate that the vertices are distributed along the positive or negative half-axis of each axis, and / or the number of vertices distributed along the positive or negative half-axis of each axis.
25. The apparatus of claim 23 or 24, wherein, The first determining module is specifically used to perform at least one of the following: For the target axis among the three axes, if the vertex coordinates satisfy the first condition, it is determined that the vertex is distributed on the negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the starting point of the edge where the vertex is located is less than or equal to a first threshold. For the target axis among the three axes, if the vertex coordinates satisfy the second condition, the vertex is determined to be distributed on the positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the endpoint of the edge where the vertex is located is less than or equal to a second threshold.
26. The apparatus of claim 23 or 25, wherein, The second determining module is specifically used to perform at least one of the following: For a target axis among the three axes, if the ratio of the first quantity to the total number of vertices is greater than or equal to a third threshold, a vertex satisfying the third condition is determined to be a first type vertex; the third condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the endpoint of the edge where the vertex is located; the first quantity is the number of vertices located on the negative half axis of the target axis. For the target axis among the three axes, if the ratio of the second quantity to the total number of vertices is greater than or equal to the fourth threshold, the vertex that satisfies the fourth condition is determined to be a first type vertex; the fourth condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the starting point of the edge where the vertex is located; the second quantity is the number of vertices located on the positive half axis of the target axis.
27. The apparatus according to any one of claims 23 to 26, further comprising: The second processing module is used to filter the first type of vertices if at least two of the three axes have a first type of vertex. The first processing module is specifically used to delete or modify the first type of vertices after filtering.
28. The apparatus of claim 27, wherein, The second processing module is specifically used to perform at least one of the following: Determine the intersection between the first type vertices of the at least two axes, wherein the first type vertices within the intersection are the filtered first type vertices; If there is no intersection between the first type vertices of the at least two axes, then the first type vertex of the axis with the largest number of first type vertices is determined as the filtered first type vertex.
29. The apparatus of claim 23 or 27, wherein, The first processing module is specifically used for: Based on the Euclidean distance between the first type of vertex and the second type of vertex, the first type of vertex is deleted or modified; The second type of vertex refers to the vertices in the geometry other than the first type of vertex.
30. The apparatus of claim 23 or 28 or 29, wherein, The first processing module is specifically used to perform at least one of the following: If the Euclidean distance between the first type of vertex and the second type of vertex satisfies the fifth condition, the first type of vertex is deleted. If the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is corrected to the target position.
31. The apparatus of claim 30, wherein, The target position is the midpoint between the first type vertex and the target second type vertex, where the target second type vertex is a second type vertex whose Euclidean distance from the first type vertex satisfies the sixth condition.
32. The apparatus of claim 23, further comprising: The first decoding module is used to decode the first bitstream to obtain the offset value of the centroid vertex of the Trisoup node; The third determining module is used to determine the initial position of the centroid vertex of the Trisoup node based on the second type of vertex and the corrected first type of vertex; The fourth determining module is used to determine the offset position of the centroid vertex based on the initial position of the centroid vertex and the offset value.
33. The apparatus of claim 23, further comprising: The second decoding module is used to decode the second bitstream to obtain a first flag, which is used to indicate whether Trisoup vertex optimization technology is enabled or disabled.
34. A Trisoup vertex optimization device, comprising: The fifth determining module is used to determine the axial distribution information of vertices in the geometry corresponding to the Trisoup node and the total number of vertices contained in the geometry. The sixth determining module is used to determine the first type of vertex based on the axial distribution information and the total number of vertices; The third processing module is used to delete or modify the vertices of the first type.
35. The apparatus of claim 34, wherein, The fifth determining module is specifically used for: Determine the distribution information of vertices in the geometry corresponding to the Trisoup node in each of the three axes; The distribution information is used to indicate that the vertices are distributed along the positive or negative half-axis of each axis, and / or the number of vertices distributed along the positive or negative half-axis of each axis.
36. The apparatus of claim 34 or 35, wherein, The fifth determining module is specifically used to perform at least one of the following: For the target axis among the three axes, if the vertex coordinates satisfy the first condition, it is determined that the vertex is distributed on the negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the starting point of the edge where the vertex is located is less than or equal to a first threshold. For the target axis among the three axes, if the vertex coordinates satisfy the second condition, the vertex is determined to be distributed on the positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes: the distance between the dimension value of the target axis of the vertex coordinates and the dimension value of the target axis of the endpoint of the edge where the vertex is located is less than or equal to a second threshold.
37. The apparatus of claim 34 or 36, wherein, The sixth determining module is specifically used to perform at least one of the following: For a target axis among the three axes, if the ratio of the first quantity to the total number of vertices is greater than or equal to a third threshold, a vertex satisfying the third condition is determined to be a first type vertex; the third condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the endpoint of the edge where the vertex is located; the first quantity is the number of vertices located on the negative half axis of the target axis. For the target axis among the three axes, if the ratio of the second quantity to the total number of vertices is greater than or equal to the fourth threshold, the vertex that satisfies the fourth condition is determined to be a first type vertex; the fourth condition includes: the dimension value of the target axis of the vertex coordinates is equal to the dimension value of the target axis of the starting point of the edge where the vertex is located; the second quantity is the number of vertices located on the positive half axis of the target axis.
38. The apparatus according to any one of claims 34 to 37, further comprising: The fourth processing module is used to filter the first type of vertices if at least two of the three axes have a first type of vertex. The third processing module is specifically used for: Delete or modify the first type of vertices after filtering.
39. The device of claim 38, wherein, The fourth processing module is specifically used to perform at least one of the following: Determine the intersection between the first type vertices of the at least two axes, wherein the first type vertices within the intersection are the filtered first type vertices; If there is no intersection between the first type vertices of the at least two axes, then the first type vertex of the axis with the largest number of first type vertices is determined as the filtered first type vertex.
40. The apparatus of claim 34 or 38, wherein, The third processing module is specifically used for: Based on the Euclidean distance between the first type of vertex and the second type of vertex, the first type of vertex is deleted or modified; The second type of vertex refers to the vertices in the geometry other than the first type of vertex.
41. The apparatus of claim 33 or 39 or 40, wherein, The third processing module is specifically used to perform at least one of the following: If the Euclidean distance between the first type of vertex and the second type of vertex satisfies the fifth condition, the first type of vertex is deleted. If the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is corrected to the target position.
42. The device of claim 41, wherein, The target position is the midpoint between the first type vertex and the target second type vertex, where the target second type vertex is a second type vertex whose Euclidean distance from the first type vertex satisfies the sixth condition.
43. The apparatus of claim 34, further comprising: The seventh determining module is used to determine the initial position of the centroid vertex of the Trisoup node based on the second type of vertex and the corrected first type of vertex; The eighth determining module is used to determine the offset value of the centroid vertex based on the initial position of the centroid vertex and the original point cloud. The first encoding module is used to encode the offset value into a first bitstream, and determine the offset position of the centroid vertex based on the initial position of the centroid vertex and the offset value.
44. The apparatus of claim 34, further comprising: The second encoding module is used to encode the first flag into the second bitstream, and the first flag is used to indicate whether Trisoup vertex optimization technology is enabled or disabled.
45. 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 Trisoup vertex optimization method as claimed in any one of claims 1 to 11, or implementing the steps of the Trisoup vertex optimization method as claimed in claims 12 to 22.
46. A readable storage medium storing a program or instructions that, when executed by a processor, implement the Trisoup vertex optimization method as claimed in any one of claims 1 to 11, or implement the steps of the Trisoup vertex optimization method as claimed in any one of claims 12 to 22.
47. A chip comprising 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 as claimed in any one of claims 1 to 11, or to implement the steps of the method as claimed in claims 12 to 22.
48. A computer program product comprising computer instructions which, when executed by a processor, implement the steps of the method of any one of claims 1 to 11, or implement the steps of the method of claims 12 to 22.