Geometry reconstruction method and apparatus, and device

By processing the vertices of Trisoup nodes through decoding and encoding, the problem of point cloud distortion caused by uneven point cloud distribution within the node is solved, thus improving the accuracy and efficiency of point cloud reconstruction.

WO2025218557A1PCT designated stage Publication Date: 2025-10-23VIVO MOBILE COMM CO LTD

Patent Information

Application Number
PCT/CN2025/088175
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-04-17
Filing Date
2025-04-10
Publication Date
2025-10-23

AI Technical Summary

Technical Problem

In the Trisoup geometric coding algorithm, when the node is large, the distribution of the point cloud inside the node is uneven, resulting in significant distortion of the reconstructed point cloud, which is difficult to effectively handle with existing technologies.

Method used

The decoder obtains the first marker indicating the original point cloud distribution of the Trisoup nodes by decoding the first bitstream, processes the vertices in the geometry, and reconstructs the point cloud. The encoder encodes the first marker and processes the vertices to reconstruct the point cloud.

Benefits of technology

By processing the vertices, the distortion of the reconstructed point cloud is reduced, thereby improving the performance gain of the reconstructed point cloud.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025088175_23102025_PF_FP_ABST
    Figure CN2025088175_23102025_PF_FP_ABST
Patent Text Reader

Abstract

The present application belongs to the technical field of communications. Disclosed are a geometry reconstruction method and apparatus, and a device. The geometry reconstruction method comprises: a decoding end decoding a first bitstream to obtain a first flag, wherein the first flag is used for indicating distribution information of original point clouds in a geometric structure corresponding to a Trisoup node; the decoding end processing vertices in the geometric structure on the basis of the first flag; and the decoding end using the processed vertices to reconstruct a point cloud.
Need to check novelty before this filing date? Find Prior Art

Description

Geometric reconstruction method, device and equipment

[0001] Cross-reference to Related Applications

[0002] The present application claims priority to Chinese Patent Application No. 202410464478.3, filed on April 17, 2024, the contents of which are incorporated herein by reference in its entirety. TECHNICAL FIELD

[0003] The present application belongs to the field of communication technology, and specifically relates to a geometric reconstruction method, device and equipment. BACKGROUND

[0004] In a point cloud based on geometry (Geometry Point Cloud Compression, G-PCC) encoder framework, the geometry information and attribute information of a point cloud are encoded separately. There are two encoding methods for the geometry information, i.e., a multi-tree based geometry encoding and a prediction tree based geometry encoding. In the multi-tree based geometry encoding method, the Trisoup geometry encoding algorithm gradually exhibits excellent compression performance.

[0005] In the Trisoup geometry encoding algorithm in the related technology, in order to save code streams, only one identification information and 2bit position information of a vertex on an edge shared by nodes is encoded. This practice ignores the difference in point cloud distribution between nodes. Especially when the nodes are large, the point cloud distribution inside the nodes is uneven, such as some vertices around which there is no original point cloud, and therefore not all vertices are suitable for point cloud reconstruction. If the point cloud reconstruction method in the related technology is still used, it is likely to cause large distortion of the reconstructed point cloud. SUMMARY

[0006] Embodiments of the present application provide a geometric reconstruction method, device and equipment, which can solve the problem of large distortion of the reconstructed point cloud.

[0007] In a first aspect, a geometric reconstruction method is provided, which is executed by a decoding end, and the method comprises:

[0008] The decoding end decodes a first code stream to obtain a first flag, the first flag being used to indicate original point cloud distribution information in a geometry structure corresponding to a Triangle soup (Trisoup) node;

[0009] The decoding end processes vertices in the geometry structure according to the first flag;

[0010] The decoding end reconstructs a point cloud using the processed vertices.

[0011] In a second aspect, a geometry reconstruction method is provided, which is performed by an encoding end, and the method comprises the following steps:

[0012] The encoding end encodes a first flag to obtain a first code stream, and the first flag is used to indicate original point cloud distribution information in a geometry structure corresponding to a Trisoup node.

[0013] The encoding end processes vertices in the geometry structure according to the first flag.

[0014] The encoding end reconstructs a point cloud by using the processed vertices.

[0015] In a third aspect, a geometry reconstruction apparatus is provided, which is applied to a decoding end, and the apparatus comprises:

[0016] A first decoding module is configured to decode a first code stream to obtain a first flag, and the first flag is used to indicate original point cloud distribution information in a geometry structure corresponding to a Trisoup node.

[0017] A first processing module is configured to process vertices in the geometry structure according to the first flag.

[0018] A second processing module is configured to reconstruct a point cloud by using the processed vertices.

[0019] In a fourth aspect, a geometry reconstruction apparatus is provided, which is applied to an encoding end, and the apparatus comprises:

[0020] A first encoding module is configured to encode a first flag to obtain a first code stream, and the first flag is used to indicate original point cloud distribution information in a geometry structure corresponding to a Trisoup node.

[0021] A third processing module is configured to process vertices in the geometry structure according to the first flag.

[0022] A fourth processing module is configured to reconstruct a point cloud by using the processed vertices.

[0023] In a fifth aspect, an electronic device is provided, which comprises a processor and a memory, the memory stores programs or instructions executable on the processor, and the programs or instructions are executed by the processor to implement the steps of the method according to the first aspect or the steps of the method according to 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: decode a first bitstream to obtain a first flag, the first flag being used to indicate original point cloud distribution information in a geometry structure corresponding to a Trisoup node; process vertices in the geometry structure according to the first flag; and reconstruct a point cloud using the processed vertices; or the processor is configured to: encode a first flag to obtain a first bitstream, the first flag being used to indicate original point cloud distribution information in a geometry structure corresponding to a Trisoup node; process vertices in the geometry structure according to the first flag; and reconstruct a point cloud using the processed vertices.

[0025] In a seventh aspect, an electronic device is provided, including a memory configured to store video data, and a processing circuit configured to implement steps of the method according to the first aspect, or implement steps of the method according to the second aspect.

[0026] In an eighth aspect, a readable storage medium is provided, the readable storage medium storing a program or instructions, the program or instructions being executed by a processor to implement steps of the method according to the first aspect, or implement steps of the method according to the second aspect.

[0027] In a ninth aspect, a coding system is provided, including an encoding device and a decoding device, the encoding device being configured to implement steps of the method according to the second aspect, and the decoding device being configured to implement steps of the method according to the first aspect.

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

[0029] In an eleventh aspect, a computer program / program product is provided, the computer program / program product being stored in a storage medium, the program / program product being executed by at least one processor to implement steps of the method according to the first aspect, or implement steps of the method according to the second aspect.

[0030] In a twelfth aspect, a computer program product is provided, including computer instructions, the computer instructions being executed by a processor to implement steps of the method according to the first aspect, or implement steps of the method according to the second aspect.

[0031] In the embodiment of the present application, the decoding end decodes to obtain a first flag, and according to the first flag, the distribution of the original point cloud in the geometric structure can be determined, and then the vertices in the geometric structure are processed, and the point cloud is reconstructed using the processed vertices. By processing the vertices, the error point cloud can be removed, the distortion of the reconstructed point cloud is reduced, and the performance gain of the reconstructed point cloud is improved. BRIEF DESCRIPTION OF DRAWINGS

[0032] FIG. 1 is a schematic diagram of a coding system according to an embodiment of the present application;

[0033] FIG. 2a is an encoding flowchart of an encoder based on an AVS-PCC encoding framework;

[0034] FIG. 2b is an encoding flowchart of an encoder based on an MPEG G-PCC encoding framework;

[0035] FIG. 3a is a decoding flowchart of a decoder based on an AVS-PCC decoding framework;

[0036] FIG. 3b is a decoding flowchart of a decoder based on an MPEG G-PCC decoding framework;

[0037] FIG. 4 is a flowchart of a geometry reconstruction method according to an embodiment of the present application;

[0038] FIG. 5 is a schematic diagram of a reconstructed surface according to an embodiment of the present application;

[0039] FIG. 6 is a schematic diagram of a geometric structure corresponding to a Trisoup node;

[0040] FIG. 7 is a flowchart of a decoding process according to an embodiment of the present application;

[0041] FIG. 8 is a flowchart of a geometry reconstruction method according to an embodiment of the present application;

[0042] FIG. 9 is a flowchart of an encoding process according to an embodiment of the present application;

[0043] FIG. 10 is a schematic diagram of a geometry reconstruction apparatus according to an embodiment of the present application;

[0044] FIG. 11 is a schematic diagram of a geometry reconstruction apparatus according to an embodiment of the present application;

[0045] FIG. 12 is a schematic diagram of an electronic device according to an embodiment of the present application;

[0046] FIG. 13 is a schematic diagram of a terminal according to an embodiment of the present application. DETAILED DESCRIPTION

[0047] With reference to the drawings and the embodiments of the present application, the technical solutions in the embodiments of the present application will be clearly described. Obviously, the described embodiments are some but not all of the embodiments of the present application. Based on the embodiments of the present application, all other embodiments obtained by those of ordinary skill in the art are within the scope of the present application.

[0048] The terms "first", "second", and the like in the present application are used to distinguish similar objects, and are not used to describe a specific order or sequence. It should be understood that the terms used in this way can be interchanged under appropriate circumstances, so that the embodiments of the present application can be implemented in an order other than that illustrated or described herein, and the objects distinguished by "first", "second" are usually a class and do not limit the number of objects, for example, the first object can be one or more. In addition, "or" in the present application means at least one of the connected objects. For example, "A or B" covers three schemes, namely, scheme one: including A and not including B; scheme two: including B and not including A; scheme three: including A and including B. The character " / " generally represents that the objects before and after are in an "or" relationship.

[0049] Before introducing the technical solutions provided by the embodiments of the present application, the meanings of some terms therein will be introduced first.

[0050] Point cloud: the point cloud refers to a set of discrete points that are irregularly distributed in space and express the spatial structure and surface attributes of a three-dimensional object or a three-dimensional scene. The point cloud can be divided into different categories according to different classification standards, for example, according to the acquisition method of the point cloud, it can be divided into dense point cloud and sparse point cloud; for example, according to the time sequence type of the point cloud, it can be divided into static point cloud and dynamic point cloud.

[0051] Point cloud data: the geometric coordinate information and attribute information possessed by each point in the point cloud together constitute the point cloud data. The geometric coordinate information can also be referred to as three-dimensional position information, and the geometric coordinate information of a point in the point cloud refers to the spatial coordinates (x, y, z) of the point, which can include the coordinate values of the point in each coordinate axis direction of the three-dimensional coordinate system, for example, the coordinate value x in the X-axis direction, the coordinate value y in the Y-axis direction and the coordinate value z in the Z-axis direction. The attribute information of a point in the point cloud can include at least one of the following: color information, material information, laser reflection intensity information (also referred to as reflectivity). Generally, each point in the point cloud has the same number of attribute information, for example, each point in the point cloud can have two attribute information of color information and laser reflection intensity, for example, each point in the point cloud can have three attribute information of color information, material information and laser reflection intensity information.

[0052] Point Cloud Compression (PCC): Point Cloud Compression refers to a process of encoding geometry coordinate information and attribute information of each point in a point cloud to obtain a compressed bitstream. Point Cloud Compression can include two main processes of geometry coordinate information encoding and attribute information encoding. At present, a point cloud compression framework that can compress a point cloud can be a Geometry Point Cloud Compression (G-PCC) codec framework provided by Moving Picture Experts Group (MPEG) or a Video Point Cloud Compression (V-PCC) codec framework, or an Audio Video Standard (AVS)-PCC codec framework provided by AVS.

[0053] Point Cloud Decoding: Point Cloud Decoding refers to a process of decoding a compressed bitstream obtained by point cloud encoding to reconstruct a point cloud. In detail, it refers to a process of reconstructing geometry coordinate information and attribute information of each point in a point cloud based on geometry bitstream and attribute bitstream in the compressed bitstream. After obtaining the compressed bitstream at the decoding end, for the geometry bitstream, first, entropy decoding is performed to obtain quantized information of each point in the point cloud, and then dequantization is performed to reconstruct the geometry coordinate information of each point in the point cloud. For the attribute bitstream, first, entropy decoding is performed to obtain quantized attribute residual information or quantized transform coefficients of each point in the point cloud; then, dequantization is performed on the quantized attribute residual information to obtain reconstructed residual information, and dequantization is performed on the quantized transform coefficients to obtain reconstructed transform coefficients, and the reconstructed transform coefficients are subjected to inverse transformation to obtain reconstructed residual information, and according to 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 sequentially and one-to-one corresponding to the reconstructed geometry coordinate information to reconstruct the point cloud.

[0054] FIG. 1 is a schematic diagram of a codec system 10 provided by an embodiment of the present application. The technical solution of the embodiment of the present application relates to coding (CODEC) of point cloud data (including encoding or decoding).

[0055] As shown in FIG. 1, the coding system 10 includes a source device 100 that 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 can comprise any one or more of a desktop computer, a notebook (i.e., laptop) computer, a tablet computer, a set-top box, a mobile telephone, a wearable device (e.g., a smart watch or a wearable camera), a television, a camera, a display device, a vehicle-mounted device, a virtual reality (VR) device, an augmented reality (AR) device, a mixed reality (MR) device, a digital media player, a video gaming console, a video conferencing device, a video streaming device, a broadcast receiver device, a broadcast transmitter device, a spacecraft, an airplane, a robot, a satellite, etc.

[0056] In the example of FIG. 1, the source device 100 includes a data source 101, a memory 102, an encoder 200, and an output interface 104. The destination device 110 includes an input interface 111, a decoder 300, a memory 113, and a display device 114. The source device 100 represents an example of an encoding device, while the destination device 110 represents an example of a decoding device. In other examples, the source device 100 and the destination device 110 can not include some of the components in FIG. 1, or can include other components not shown in FIG. 1. For example, the source device 100 can acquire point cloud data through an external capturing device. Also, the destination device 110 can interface with an external display device, rather than include an integrated display device. For another example, the memory 102, the memory 113 can be external memories.

[0057] Although FIG. 1 depicts the source device 100 and the destination device 110 as separate devices, in some examples, the source device 100 and the destination device 110 can be integrated in one device. In such embodiments, the corresponding functionality of the source device 100 and the corresponding functionality of the destination device 110 can be implemented using the same hardware or software, or using separate hardware or software, or any combination thereof.

[0058] In some examples, the source device 100 and the destination device 110 can engage in unidirectional data transmission or bidirectional data transmission. If bidirectional data transmission, then the source device 100 and the destination device 110 can operate in a substantially symmetrical manner, i.e., each including an encoder and a decoder.

[0059] Data source 101 represents a source of point cloud data (i.e., raw, uncoded point cloud data) and provides the encoder 200 with point cloud data to encode. Source device 100 can include a capture device (e.g., a camera device, a sensor device, or a scanning device), an archive including previously captured point cloud data, or a feed interface to receive point cloud data from a data content provider. The camera device can include a conventional camera, a stereo camera, a light field camera, etc., the sensor device can include a laser device, a radar device, etc., and the scanning device can include a three-dimensional laser scanning device, etc. The point cloud data can be obtained by capturing a visual scene of a real world through the capture device. Alternatively, data source 101 can generate computer graphics based data as source data, or combine real-time data, archived data, and computer generated data. For example, the data source generates point cloud data from a virtual object (e.g., a virtual three-dimensional object and a virtual three-dimensional scene obtained by three-dimensional modeling).

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

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

[0062] In some examples, source device 100 can output encoded data from output interface 104 to storage 113. Similarly, destination device 110 can access encoded data from storage 113 via input interface 111. Storage 113 or storage 102 can include any of a variety of distributed or locally accessed data storage media such as a hard drive, Blu-ray discs, Digital Versatile Discs (DVDs), Compact Disc Read-Only Memory (CD-ROMs), flash drives, volatile or non-volatile memory, or any other suitable digital storage media for storing encoded point cloud data.

[0063] Output interface 104 can 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 can include a transmitter or a transceiver, such as an antenna, configured to transmit encoded point cloud data from source device 100 directly to destination device 110 in real-time. The encoded point cloud data can be modulated according to a communication standard of a wireless communication protocol and transmitted to destination device 110.

[0064] Communication medium 120 can include a transient medium such as a wireless broadcast or wired network transmission. For example, communication medium 120 can include one or more physical transmission lines, for example, cable, or a wireless

[0065] In some embodiments, communication medium 120 can include a router, switch, base station, or any other equipment that can be used to facilitate communication from source device 100 to destination device 110. For example, a server (not shown in the figure) can receive the encoded point cloud data from source device 100 and provide to destination device 110, e.g., via a network transmission to destination device 110. The server can include a web server (e.g., for a website), a server configured to provide a file transfer protocol service 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) protocol, Dynamic Adaptive Streaming over HTTP (DASH) protocol, HTTP Live Streaming (HLS) protocol, or Real Time Streaming Protocol (RTSP), etc.

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

[0067] The output interface 104 and the input interface 111 can represent wireless transmitters / receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components that operate according to the IEEE 802.11 standards or the IEEE 802.15 standards (e.g., ZigBee™), the Bluetooth standard, or the like, or other physical components. In examples where the output interface 104 and the input interface 111 comprise wireless components, the output interface 104 and the input interface 111 can be configured to transfer data, such as encoded point cloud data, according to WIFI, Ethernet, cellular networks such as the 4th Generation (4G), Long Term Evolution (LTE), LTE Advanced, 5th Generation (5G), 6th Generation (6G), or the like.

[0068] The technology provided by the embodiments of the present application can be applied to support one or more of the following application scenarios: machine perception point cloud, which can be used in autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, rescue robots, etc.; human eye perception point cloud, which can be used in digital cultural heritage, free-view broadcast, three-dimensional immersive communication, three-dimensional immersive interaction, etc.

[0069] The input interface 111 of the destination device 110 receives the encoded bitstream from the communication medium 120. The encoded bitstream can include high-level syntax elements and encoded data units (e.g., sequences, groups of pictures, pictures, 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 a user. The display device 114 can include a cathode ray tube (CRT), a liquid-crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or other type of display device. In some examples, the destination device 110 can not have the display device 114, e.g., if the decoded point cloud data is used to determine the location of a physical object, the display device 114 can be replaced with a processor.

[0070] The encoder 200 and the decoder 300 can be implemented as one or more of various processing circuitry, which can include one or more microprocessors, Digital Signal Processors (DSPs), Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs), discrete logic circuitry, hardware, or any combinations thereof. When the techniques are implemented in software, a device can store instructions for the software in a suitable, non- transitory computer-readable storage medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure.

[0071] The basic principles of the encoder 200 and the decoder 300 provided in the embodiments of the present application are introduced below taking the G-PCC and AVS-PCC coding framework as an example.

[0072] The coding framework of G-PCC and AVS-PCC is roughly the same. As shown in FIG. 2a, an encoding flowchart performed by an encoder based on the coding framework of AVS-PCC, and as shown in FIG. 2b, an encoding flowchart performed by an encoder based on the coding framework of MPEG G-PCC, the above-mentioned encoders can be the encoder 200 shown in FIG. 1. The above-mentioned encoding frameworks can generally be divided into a geometry coordinate information encoding process and an attribute information encoding process. In the geometry information encoding process, the geometry coordinate information of each point in the point cloud is encoded to obtain a geometry 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 geometry bitstream and the attribute bitstream jointly constitute a compressed code stream of the point cloud.

[0073] For the geometry information encoding process, the encoding flow performed by the encoder 200 is as follows:

[0074] 1. Pre-processing: can include Transform Coordinates and Voxelize. Through the operation of scaling and translation, the pre-processing is to convert the point cloud data in three-dimensional space into an integer form and move its minimum geometric position to the coordinate origin. In some examples, the encoder 200 can not perform pre-processing.

[0075] 2、Geometry Coding: For AVS-PCC coding framework, geometry coding includes two modes, which are Octree-based geometry coding and Prediction Tree-based geometry coding. For G-PCC coding framework, geometry coding includes three modes, which are Octree-based geometry coding, Trisoup-based geometry coding and Prediction Tree-based geometry coding. Among them:

[0076] Octree-based geometry coding, such as Octree-based geometry coding: Octree is a tree data structure, which uniformly divides the pre-set bounding box in three-dimensional space, and each node has eight child nodes. By using "1" and "0" to indicate whether each child node of the Octree is occupied or not, the occupancy code information is obtained as the code stream of the point cloud geometry information.

[0077] Prediction Tree-based geometry coding: a prediction strategy is used to generate a prediction tree, and each node of the prediction tree is traversed from the root node. The residual coordinate value corresponding to each traversed node is encoded.

[0078] Trisoup-based geometry coding: the point cloud is divided into blocks of a certain size, and the intersection points (called vertices) of the edges of the block on the surface of the point cloud are located. The compression of the geometry information is realized by encoding whether there is an intersection point on each edge of the block and the position of the intersection point.

[0079] 3、Geometry Entropy Encoding: statistical compression encoding is performed on the occupancy code information of the Octree, the prediction residual information of the prediction tree and the vertex information of the Trisoup, and finally the binary (0 or 1) compressed code stream is output. Statistical encoding is a lossless encoding method, which can effectively reduce the code rate required to express the same signal. The commonly used statistical encoding method is Content Adaptive Binary Arithmetic Coding (CABAC) based on context.

[0080] 4、Geometry Reconstruction: decoding and reconstruction of the geometry information after geometry coding.

[0081] For the attribute information coding process, the encoder 200 performs the following encoding process:

[0082] 1、Color Transformation: a transformation is applied to transform the color information of the attribute to a different domain, for example, the color information can be transformed from the RGB color space to the YCbCr color space.

[0083] 2. Attribute Recoloring: In lossy coding, after the geometry coordinate information is encoded, the encoder needs to decode and reconstruct the geometry information, i.e., to restore the geometry information of each point in the point cloud. The attribute information of one or more neighboring points in the original point cloud is found and used as the attribute information of the reconstructed point.

[0084] In some examples, the encoder 200 can not perform color transformation or attribute recoloring.

[0085] 3. Attribute information processing: In AVS-PCC, attribute information processing can include three modes, namely, prediction encoding, transform encoding, and prediction and transform encoding, which can be used under different conditions.

[0086] Among them, the prediction encoding refers to determining the neighbor points of the to-be-encoded point in the encoded points as the prediction points according to the distance or spatial relationship information, calculating the predicted attribute information of the to-be-encoded point based on the attribute information of the prediction points according to the set criteria, calculating the difference between the real attribute information of the to-be-encoded point and the predicted attribute information as the attribute residual information, and quantizing, transforming (optional) and entropy encoding the attribute residual information.

[0087] The transform encoding refers to grouping and transforming the attribute information by using a transform method such as discrete cosine transform (DCT) or Haar transform (Haar), quantizing the transform coefficients, obtaining attribute reconstruction information through inverse quantization and inverse transform, calculating the difference between the real attribute information and the attribute reconstruction information to obtain attribute residual information and quantizing the attribute residual information, and entropy encoding the quantized transform coefficients and the attribute residual.

[0088] The prediction and transform encoding refers to using the attribute residual information obtained by prediction to perform transform, quantizing and entropy encoding the transform coefficients.

[0089] In MPEG G-PCC, attribute information processing can include three modes, namely, prediction and transform (Prediction Transform) encoding, lifting transform (Lifting Transform) encoding, and region adaptive hierarchical transform (Region Adaptive Hierarchical Transform, RAHT) encoding, which can be used under different conditions.

[0090] Among them, the prediction transform coding refers to dividing the point cloud into multiple different levels (Level of Detail, LoD) according to the distance selection sub-point set, realizing the multi-quality level point cloud representation from rough to fine. The adjacent layers can realize the prediction from bottom to top, that is, the attribute information of the points introduced in the fine layer is predicted from the adjacent points in the rough layer, and the corresponding attribute residual information is obtained. Among them, the points at the bottom layer are encoded as reference information.

[0091] The lifting transform coding refers to introducing the weight update strategy of the neighborhood points on the basis of the LoD adjacent layer prediction, finally obtaining the predicted attribute information of each point, and obtaining the corresponding attribute residual information.

[0092] The layered region adaptive transform coding refers to that the attribute information is converted into the transform domain through the RAHT transform, and the transform coefficient is called.

[0093] 4, attribute quantization (Attribute Quantization): the fineness of quantization is usually determined by the quantization parameter. The transform coefficient or attribute residual information obtained by processing the attribute information is quantized, and the quantized result is entropy coded, for example, in the prediction transform coding and the lifting transform coding, the attribute residual information after quantization is entropy coded; in the RAHT, the transform coefficient after quantization is entropy coded.

[0094] 5, entropy coding (Entropy Coding): the attribute residual information and / or transform coefficient after quantization is generally compressed by using run length coding (Run Length Coding) and arithmetic coding (Arithmetic Coding). The corresponding coding mode, quantization parameter and other information are also encoded by using the entropy encoder.

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

[0096] FIG. 3a shows a decoding flowchart of a decoder executing a decoding framework based on AVS-PCC, and FIG. 3b shows a decoding flowchart of a decoder executing a decoding framework based on MPEG G-PCC, and the decoder can be the decoder 300 shown in FIG. 1. After the decoder 300 receives the compressed code stream (i.e., the attribute bit stream and the geometric bit stream) transmitted by the encoder 200, the decoder 300 decodes the geometric bit stream to reconstruct the geometric coordinate information of each point in the point cloud, and decodes the attribute bit stream to reconstruct the attribute information of each point in the point cloud.

[0097] The decoding procedure performed by the decoder 300 is as follows:

[0098] 1. Entropy Decoding: Entropy decoding the geometry bitstream and the attribute bitstream to obtain geometry syntax elements and attribute syntax elements.

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

[0100] Octree-based geometry decoding, e.g., octree-based geometry decoding: reconstructing an octree based on the geometry syntax elements parsed from the geometry bitstream.

[0101] Prediction tree-based geometry decoding: reconstructing a prediction tree based on the geometry syntax elements parsed from the geometry bitstream.

[0102] Trisoup-based geometry decoding: reconstructing a triangle model based on the geometry syntax elements parsed from the geometry bitstream.

[0103] 3. Geometry Reconstruction: performing reconstruction to obtain geometry coordinate information of points in the point cloud.

[0104] 4. Coordinate Inverse Transformation: performing inverse transformation on the reconstructed geometry coordinate information to convert the reconstructed coordinates (positions) of points in the point cloud from the transformed domain back to the original domain.

[0105] 5. Dequantization: dequantizing the attribute syntax elements.

[0106] 6. Attribute Information Processing: In AVS-PCC, attribute information processing determines color information of points in the point cloud by predicting or prediction transform on the prediction residual or prediction residual transform coefficients after dequantization, or determines color information of points in the point cloud by transform on the transform coefficients after dequantization.

[0107] In MPEG G-PCC, attribute information processing determines color information of points in the point cloud by RAHT on the attribute information after dequantization, or determines color information of points in the point cloud by LOD and inverse lifting on the attribute information after dequantization.

[0108] 7. Color Inverse Transformation: transforming color information from YCbCr color space to RGB color space. In some examples, the color inverse transformation operation can not be performed.

[0109] As shown in FIG. 4, the application provides a geometry reconstruction method, which is executed by a decoding end, and the method comprises the following steps:

[0110] In step 401, the decoding end decodes a first code stream to obtain a first flag, which is used to indicate original point cloud distribution information in a geometry structure corresponding to a Trisoup node; the original point cloud refers to a point cloud before reconstruction; and the original point cloud distribution information refers to point cloud distribution in the geometry structure before reconstruction.

[0111] In step 402, the decoding end processes vertices in the geometry structure according to the first flag.

[0112] In step 403, the decoding end reconstructs a point cloud by using the processed vertices.

[0113] In this embodiment, the Trisoup node refers to a multi-branch tree node, and the Trisoup conceptualizes the geometry shape of the point cloud in each node as a surface that intersects the edges of each geometry body at most once. The points that intersect the edges of the geometry body are called vertices, and these vertices are shared between adjacent nodes, which ensures the continuity of the reconstructed surface between nodes. The existence of the vertices on the edges of the geometry body corresponding to each node and the quantized positions of the vertices on the edges can be represented as 1 bit and 2 bits respectively. Inside the geometry body corresponding to each node, the reconstructed surface is composed of non-planar polygons formed by these vertices, which are organized as a set of triangles, as shown in FIG. 5.

[0114] Optionally, the decoding end can determine neighbor information of each edge of the geometry structure corresponding to the Trisoup node, and the neighbor information can be used as a context for subsequent entropy decoding. The neighbor information includes point cloud occupancy information of adjacent edges.

[0115] The decoding end can decode the vertex existence flag and the quantized vertex position of each edge of the geometry structure by using the neighbor information. The quantized vertex position exists when the vertex existence flag indicates that there is a vertex.

[0116] The encoding end obtains a first flag used to represent original point cloud distribution information of the Trisoup node according to the occupancy information and the vertex existence flag of the eight sub-geometries obtained by the Trisoup node, encodes the first flag to generate a first code stream, and sends the first code stream to the decoding end. The decoding end decodes the first flag to obtain the original point cloud distribution information. The decoding end performs qualification determination on the vertices in the Trisoup node according to the decoded first flag, for example, determines reasonable vertices (which can be used for point cloud reconstruction), unreasonable vertices (which are not suitable for point cloud reconstruction, for example, there is no original point cloud in a first range around the vertex), more reasonable vertices (for example, there is no original point cloud or less original point cloud in a second range around the vertex, for example, less than a threshold), and the like, so as to delete or correct the vertices according to the determination result. Optionally, the decoding end does not process the reasonable vertices when it is determined that the vertices are reasonable. The decoding end reconstructs the point cloud by using the processed vertices.

[0117] Optionally, the first flag can include one or more flags, that is, the encoding end can determine one or more flags used to indicate the original point cloud distribution, and encode the one or more flags. The decoding end can obtain the one or more flags by decoding. The one or more flags included in the first flag can be flags corresponding to different axial directions, for example, the first flag includes flag 1, flag 2, and flag 3, wherein flag 2 can include three axial direction corresponding flags 2 of x, y, and z, and flag 3 can include three axial direction corresponding flags 3 of x, y, and z.

[0118] In the embodiment of the application, the decoding end decodes the first flag, determines the distribution of the original point cloud in the geometric structure according to the first flag, and processes the vertices in the geometric structure, and reconstructs the point cloud by using the processed vertices. By processing the vertices, the error point cloud can be removed, the distortion of the reconstructed point cloud can be reduced, and the performance gain of the reconstructed point cloud can be improved.

[0119] As an optional embodiment, the method further includes:

[0120] determining a context according to the vertex distribution information in the geometric structure corresponding to the Trisoup node;

[0121] The decoding first code stream to obtain the first flag includes:

[0122] decoding the first code stream according to the context to obtain the first flag.

[0123] In the embodiment, the decoding end can further determine a context according to the vertex distribution in the Trisoup node, and decode the first code stream through the context to obtain the first flag.

[0124] Optionally, the context is used to indicate whether a ratio of a number of vertices in a first region of a target axis to a total number of vertices is greater than or equal to a first threshold value, and the target axis is any one of the three axes.

[0125] In the embodiment, the target axis can be any one of the x, y and z axes, and in a case where the first flag includes multiple flags, the context can include contexts corresponding to the multiple flags. For example, the first flag includes flag 1, flag 2 and flag 3, and the context can include a context of flag 2 and a context of flag 3.

[0126] When decoding the first flag at the decoding end, a context corresponding to an axis of a decoded flag is used, for example, when decoding flag 2 corresponding to the x axis, a context corresponding to the x axis is used, that is, whether a ratio of a number of vertices in a first region of the x axis to a total number of vertices is greater than or equal to a first threshold value; when decoding flag 2 corresponding to the y axis, a context corresponding to the y axis is used, that is, whether a ratio of a number of vertices in a first region of the y axis to a total number of vertices is greater than or equal to a first threshold value; and when decoding flag 3 corresponding to the z axis, a context corresponding to the z axis is used, that is, whether a ratio of a number of vertices in a first region of the z axis to a total number of vertices is greater than or equal to a first threshold value.

[0127] Optionally, the first region can be a preset range of a target region, and the first region can be denoted as a negative half axis or a positive half axis, for example, when a distance between a dimension value of a target axis of a vertex coordinate and a dimension value of a starting point of an edge where the vertex is located is less than a first predetermined threshold value, it is considered that the vertex is located on a negative half axis of the target axis, and in this case, the ratio of the number of vertices in the first region of the target axis to the total number of vertices is a ratio of the number of vertices on the negative half axis of the target axis to the total number of vertices. When a distance between a dimension value of a target axis of a vertex coordinate and a dimension value of an ending point of an edge where the vertex is located is less than a second predetermined threshold value, it is considered that the vertex is located on a positive half axis of the target axis, and in this case, the ratio of the number of vertices in the first region of the target axis to the total number of vertices is a ratio of the number of vertices on the positive half axis of the target axis to the total number of vertices.

[0128] In the case that the first region is the negative or positive half-axis of the target axis direction, the first threshold value indicated in the context can be different, for example: the context indicates whether the ratio of the number of vertices in the negative half-axis of the target axis direction to the total number of vertices is greater than th1, or the context indicates whether the ratio of the number of vertices in the positive half-axis of the target axis direction to the total number of vertices is greater than th2, and th1 and th2 can be different.

[0129] When the decoding end decodes the first flag according to the context, the context of the target axis direction corresponding to the first flag to be decoded is used, for example: the decoding end decodes the flag 2 corresponding to the x-axis direction, and then decodes the flag 2 according to whether the ratio of the number of vertices in the first region of the x-axis direction to the total number of vertices is greater than or equal to the first threshold value; the decoding end decodes the flag 3 corresponding to the y-axis direction, and then decodes the flag 3 according to whether the ratio of the number of vertices in the first region of the y-axis direction to the total number of vertices is greater than or equal to the first threshold value. The decoding of the flags of other axis directions is similar to the above examples, which will not be listed one by one here.

[0130] As an optional embodiment, the first flag includes at least one of the following:

[0131] (1) Flag 1: used to indicate whether there is a vertex in the geometric structure that needs to be corrected; the flag 1 can be denoted as nodeflag, and the nodeflag is used to indicate whether there is a vertex in the geometric structure corresponding to the Trisoup node that needs to be processed, for example: nodeflag = 1 indicates that there is a vertex in the geometric structure that needs to be processed, and nodeflag = 0 indicates that there is no vertex in the geometric structure that needs to be processed. It should be noted that in the case that the nodeflag indicates that there is no vertex in the geometric structure that needs to be processed, the first flag does not include the flag 2 and the flag 3.

[0132] (2) Flag 2: used to indicate whether the dimension value of the vertex in the target axis direction needs to be corrected, and the target axis direction is any one of the three axis directions; the flag 2 can be denoted as axiFlag, and the axiFlag is used to indicate which dimension value of the vertex based on the axis direction needs to be corrected, for example: the axiFlag can include axiFlag_1, axiFlag_2, axiFlag_3, axiFlag_1, axiFlag_2, axiFlag_3 correspond to x, y, z axis direction respectively, and the correspondence between the two is not limited here. For example: axiFlag_1 can be used to indicate whether the dimension value of the vertex in the x-axis direction (or y-axis direction or z-axis direction) needs to be corrected; axiFlag_2 can be used to indicate whether the dimension value of the vertex in the y-axis direction (or z-axis direction or x-axis direction) needs to be corrected; axiFlag_3 can be used to indicate whether the dimension value of the vertex in the z-axis direction (or x-axis direction or y-axis direction) needs to be corrected.

[0133] The value of axiFlag can be used to indicate whether the dimension value of the vertex in a certain axial direction needs to be corrected. For example, axiFlag_1=1 indicates that the dimension value of the vertex in the x axial direction needs to be corrected, and axiFlag_1=0 indicates that the dimension value of the vertex in the x axial direction does not need to be corrected; axiFlag_2=1 indicates that the dimension value of the vertex in the y axial direction needs to be corrected, and axiFlag_2=0 indicates that the dimension value of the vertex in the y axial direction does not need to be corrected; axiFlag_3=1 indicates that the dimension value of the vertex in the z axial direction needs to be corrected, and axiFlag_3=0 indicates that the dimension value of the vertex in the z axial direction does not need to be corrected.

[0134] It should be noted that when axiFlag indicates that the dimension value of the vertex in a certain axial direction does not need to be corrected, the first flag does not include the flag corresponding to the axial direction.

[0135] (3) Flag 3: used to indicate the correction direction when the dimension value of the vertex in the target axial direction needs to be corrected, and the correction direction includes the positive direction or the negative direction of the target axial direction.

[0136] The flag 3 can be denoted as flag01, which is used to indicate the direction in which the dimension value of the vertex in a certain axial direction needs to be corrected when the dimension value of the vertex in the axial direction needs to be corrected. For example, flag01 can include flag01_1, flag01_2, and flag01_3, and flag01_1, flag01_2, and flag01_3 correspond to x, y, and z axial directions, respectively. The correspondence between the two is not limited here.

[0137] For example, flag01_1 can be used to indicate the correction direction when the dimension value of the vertex in the x axial direction (or the y axial direction or the z axial direction) needs to be corrected; flag01_2 can be used to indicate the correction direction when the dimension value of the vertex in the y axial direction (or the z axial direction or the x axial direction) needs to be corrected; and flag01_3 can be used to indicate the correction direction when the dimension value of the vertex in the z axial direction (or the x axial direction or the y axial direction) needs to be corrected.

[0138] The value of flag01 can be used to indicate the correction direction. For example, flag01_1=1 indicates that the dimension value of the vertex in the x axial direction needs to be corrected towards the positive direction of the x axis; flag01_1=0 indicates that the dimension value of the vertex in the x axial direction needs to be corrected towards the negative direction of the x axis; flag01_2=1 indicates that the dimension value of the vertex in the y axial direction needs to be corrected towards the positive direction of the y axis; flag01_2=0 indicates that the dimension value of the vertex in the y axial direction needs to be corrected towards the negative direction of the y axis; flag01_3=1 indicates that the dimension value of the vertex in the z axial direction needs to be corrected towards the positive direction of the z axis; and flag01_3=0 indicates that the dimension value of the vertex in the z axial direction needs to be corrected towards the negative direction of the z axis.

[0139] In this embodiment, the decoding end decodes a first flag, which can include one or more flags for indicating point cloud distribution information. According to the one or more flags, the decoding end can determine the modification of the vertex, thereby processing the vertex.

[0140] As an optional embodiment, the decoding first code stream obtains a first flag, which includes:

[0141] The first code stream is decoded to obtain a flag 1.

[0142] In the case where the flag 1 indicates that there is a vertex needing modification in the geometry structure, a flag 2 corresponding to a first axis is decoded. If the flag 2 corresponding to the first axis indicates that the vertex needing modification is in the dimension value of the first axis, a flag 3 corresponding to the first axis is decoded.

[0143] A flag 2 corresponding to a second axis is decoded. If the flag 2 corresponding to the second axis indicates that the vertex needing modification is in the dimension value of the second axis, a flag 3 corresponding to the second axis is decoded.

[0144] And / or, if the flag 2 corresponding to the first axis indicates that the vertex does not need modification in the dimension value of the first axis, and the flag 2 corresponding to the second axis indicates that the vertex does not need modification in the dimension value of the second axis, it is determined that a flag 2 corresponding to a third axis indicates that the vertex needs modification in the dimension value of the third axis. The flag 3 corresponding to the third axis is decoded.

[0145] In this embodiment, when decoding the first code stream, the decoding end first decodes to obtain a flag 1 (nodeflag), and decodes a flag 2 (axiFlag) according to the indication of the flag 1. If the flag 1 indicates that there is a vertex needing modification, the flag 2 is decoded. If the flag 1 indicates that there is no vertex needing modification, the flag 2 does not need to be decoded. When decoding the flag 2, the flags 2 of two axes can be decoded first according to the code stream order, whether the flag 2 of the third axis needs to be decoded is determined according to the flags 2 of the two axes. Whether the flag 3 (flag01) needs to be decoded is determined according to the indication of the flag 2. When the flag 2 indicates that the vertex does not need modification in the dimension value of an axis, the flag 3 of the axis does not need to be decoded. When the flags 2 of the two axes both indicate that the vertex does not need modification in the dimension value of the corresponding axis, the flag 2 of the third axis does not need to be decoded, and the flag 2 of the third axis can be directly determined to indicate that the vertex needs modification in the dimension value of the axis (because the flag 1 indicates that there is a vertex needing modification, if the flags 2 of the two axes both indicate that the vertex does not need modification, the flag 2 of the third axis must indicate that the vertex needs modification in the dimension value of the axis).

[0146] The following example illustrates the process of decoding the first flag at the decoding end. The decoding code is as follows:

[0147] The decoding process is described as follows: the decoding end first decodes nodeflag. If nodeflag indicates that there is a vertex that needs to be corrected (such as nodeflag=1), it decodes axiFlag_1 (assuming that axiFlag_1 corresponds to the y-axis); if axiFlag_1 indicates that the dimension value of the vertex in the y-axis direction needs to be corrected (such as axiFlag_1=1), it decodes flag01_1 corresponding to the y-axis; decodes axiFlag_2 (assuming that axiFlag_2 corresponds to the z-axis); if axiFlag_2 indicates that the dimension value of the vertex in the z-axis direction needs to be corrected, it decodes flag01_2 corresponding to the z-axis; if axiFlag_1 indicates that the dimension value of the vertex in the y-axis direction does not need to be corrected (such as axiFlag_1=0), and axiFlag_2 both indicate that the dimension value of the vertex in the z-axis direction does not need to be corrected (such as axiFlag_2=0), it can be determined that axiFlag_3 indicates that the dimension value of the vertex in the x-axis direction needs to be corrected (such as axiFlag_3=1); decode flag01_3.

[0148] As an optional embodiment, processing the vertices in the geometric structure according to the first flag includes:

[0149] Marking original point cloud distribution information of the sub-geometric body corresponding to the child node of the Trisoup node according to the first flag;

[0150] Determining the types of vertices in the geometric structure according to the original point cloud distribution information of the sub-geometric body;

[0151] The vertex is processed according to the type of the vertex.

[0152] In this embodiment, after the decoding end decodes the first flag, it can mark whether the original point cloud exists in the eight sub-geometric bodies divided by the current node according to the decoded nodeflag and the three axial axiFlag and flag01. The vertices in this node are qualified, the type of the vertex is determined, and the vertex is processed or not processed according to the type of the vertex. Among them, the type of the vertex may include: a first type of vertex, which is an unreasonable vertex, for example, there is no original point cloud around the vertex; a second type of vertex, which is a more reasonable vertex, for example, the number of original point clouds around the vertex is small, such as the number of original point clouds is less than or equal to a threshold; a third type of vertex, which is a reasonable vertex. Reasonable vertices can be left unprocessed.

[0153] Optionally, the type of the vertex in the geometric structure is determined according to the original point cloud distribution information of the sub-geometric body, and the type of the vertex in the geometric structure comprises at least one of the following:

[0154] In the geometric structure, if the sub-geometric body in the first plane to which the edge where the vertex is located belongs has no original point cloud, the vertex is determined as a first type vertex, and the first plane is any plane to which the edge where the vertex is located belongs.

[0155] In the geometric structure, if the sub-geometric body in the first vertical plane to which the edge where the vertex is located belongs has no original point cloud, and the vertex is in the sub-geometric body in the first vertical plane, the vertex is determined as a second type vertex, and the first vertical plane is any vertical plane to which the edge where the vertex is located belongs.

[0156] In the geometric structure, other vertices except the first type vertex and the second type vertex are determined as third type vertices.

[0157] In this embodiment, when four sub-geometric bodies in the first plane to which the edge where the vertex is located belongs are marked as having no original point cloud, the vertex is determined as an unreasonable vertex, i.e., the first type vertex. For example, as shown in FIG. 6, assuming that the edge where the vertex is located is an edge of the bottom face in FIG. 6 (an edge where sub-geometric bodies 0 and 4 are located), the first plane to which the edge belongs can be a face where sub-geometric bodies 0, 1, 4, and 5 are located, or a face where sub-geometric bodies 0, 2, 4, and 6 are located; if sub-geometric bodies 0, 1, 4, and 5 or sub-geometric bodies 0, 2, 4, and 6 have no original point cloud, the vertex is the first type vertex, i.e., an unreasonable vertex.

[0158] When the sub-geometric body in the first vertical plane to which the edge where the vertex is located belongs has no original point cloud, and the vertex is in the sub-geometric body in the first vertical plane, the vertex is determined as a more reasonable vertex, i.e., the second type vertex. For example, as shown in FIG. 6, assuming that the edge where the vertex is located is an edge of the bottom face in FIG. 6 (an edge where sub-geometric bodies 0 and 4 are located), the first vertical plane to which the edge belongs can be a face where sub-geometric bodies 0, 1, 2, and 3 are located, or a face where sub-geometric bodies 4, 5, 6, and 7 are located. If sub-geometric bodies 0, 1, 2, and 3 have no original point cloud, and the vertex is in any one of sub-geometric bodies 0, 1, 2, and 3, the vertex is determined as the second type vertex, or if sub-geometric bodies 4, 5, 6, and 7 have no original point cloud, and the vertex is in any one of sub-geometric bodies 4, 5, 6, and 7, the vertex is determined as the second type vertex, i.e., a more reasonable vertex.

[0159] In the geometric structure, other vertices except the first type vertex and the second type vertex are determined as third type vertices.

[0160] Optionally, the vertices are processed according to the types of the vertices, including at least one of the following:

[0161] 1) deleting the vertices of the first type; that is, deleting unreasonable vertices;

[0162] 2) correcting the vertices of the second type to the midpoints of the edges on which the vertices of the second type are located; that is, correcting more reasonable vertices to the midpoints of the edges on which the vertices are located.

[0163] Optionally, the vertices of the third type, that is, reasonable vertices, are not processed.

[0164] As an optional embodiment, the method further includes:

[0165] decoding the second code stream to obtain a second flag, the second flag being used to indicate whether the geometry reconstruction technology is enabled or not.

[0166] In the embodiments of the present application, the encoding end encodes a flag indicating whether the geometry reconstruction method of the present application is enabled, to obtain a second code stream; the decoding end decodes the second code stream to determine whether the geometry reconstruction method is enabled; and in the case that the geometry reconstruction method is enabled, the implementation process of the geometry reconstruction method of the embodiments of the present application is performed. Optionally, the second code stream and the first code stream can be the same code stream or different code streams.

[0167] Optionally, the decoding end can decode the second code stream in the case that Trisoup is enabled. The encoding end can encode a flag indicating whether Trisoup is enabled; and the decoding end can determine whether Trisoup is enabled by decoding the flag.

[0168] Optionally, before decoding the first code stream to obtain the first flag, the method further includes:

[0169] determining that the vertices in the geometry structure corresponding to the Trisoup node satisfy a first condition;

[0170] The first condition includes that the total number of the vertices is greater than or equal to a second threshold value, and the ratio of the number of the vertices in a second region in any axial direction to the total number of the vertices is greater than or equal to a third threshold value.

[0171] In this embodiment, whether the Trisoup node enables the geometry reconstruction method of the present application is determined by the value of eligible. When the total number of vertices in the node is greater than or equal to a threshold value Num and the ratio P of the number of vertices in the second region in any axial direction to the total number of vertices is greater than or equal to a threshold value pth1, the value of eligible is set to 1, indicating that the Trisoup node executes the geometry reconstruction method of the present application, that is, in the case that the vertices in the geometry structure corresponding to the Trisoup node satisfy the first condition, the decoding end needs to decode the first code stream; otherwise, the value of eligible is set to 0, indicating that the Trisoup node does not execute the geometry reconstruction method of the present application, and the decoding end does not need to decode the first code stream.

[0172] The second region can be a threshold range, and the second region can be a certain half-axis region in a certain axial direction, for example, the second region can be recorded as a negative half-axis or a positive half-axis in a certain axial direction. The first condition is, for example, the total number of vertices is greater than or equal to a second threshold value, and the ratio P of the number of vertices in a certain half-axis region in any axial direction to the total number of vertices is greater than or equal to a third threshold value. The any axial direction can be any one or several of the x-axis direction, the y-axis direction, and the z-axis direction.

[0173] For example, the distance between the dimension value of the x-axis of the vertex coordinate and the dimension value of the x-axis of the start point of the edge where the vertex is located is less than a threshold value th1, and it is considered that the vertex is located in the negative half-axis of the x-axis. In this case, the ratio of the number of vertices in the second region in the x-axis to the total number of vertices is the ratio of the number of vertices in the negative half-axis of the x-axis to the total number of vertices. The distance between the dimension value of the x-axis of the vertex coordinate and the dimension value of the x-axis of the end point of the edge where the vertex is located is less than a threshold value th2, and it is considered that the vertex is located in the positive half-axis of the x-axis. In this case, the ratio of the number of vertices in the second region in the x-axis to the total number of vertices is the ratio of the number of vertices in the positive half-axis of the x-axis to the total number of vertices.

[0174] As an optional embodiment, the use of the processed vertices to reconstruct the point cloud comprises:

[0175] Determining the offset centroid vertex position according to the processed vertices;

[0176] Decoding a third code stream to determine the face vertices of the Trisoup node;

[0177] Constructing a triangular patch according to the vertices in the geometry structure, the offset centroid vertex position, and the face vertices;

[0178] Performing ray tracing sampling on the triangular patch to obtain a reconstructed point cloud.

[0179] In this embodiment, the decoding end decodes the quantized offset value of the centroid vertex in the code stream; calculates the initial position of the centroid vertex according to the remaining vertex coordinates after processing; sums the inverse quantized offset value and the initial position of the centroid vertex to obtain the position of the offset centroid vertex.

[0180] Optionally, the third code stream and the first code stream can be the same code stream or different code streams. The information of whether the face vertex exists is obtained to obtain the TriSoup face vertex corresponding to each TriSoup node; the vertex coordinates and the face vertex coordinates in each node are sorted, and then the edge vertex, the offset centroid and the face vertex are used to construct a triangular face. The encoding end selectively determines the face vertex for each node and encodes and sends to the decoding end; the decoding end decodes the information of whether the vertex exists to obtain the TriSoup face vertex corresponding to each TriSoup node; the decoding end sorts the vertex coordinates and the face vertex coordinates in each node, and then uses the edge vertex, the offset centroid vertex and the face vertex to construct a triangular face; the triangular face is ray-traced and sampled to obtain a reconstructed point cloud.

[0181] In the embodiment of the application, the decoding process includes the following three steps:

[0182] 1) Decoding the Trisoup edge vertex located on the Trisoup edge to obtain the axial distribution information of the vertex and the total number of vertices;

[0183] 2) Constructing a Trisoup triangle on the Trisoup node;

[0184] 3) Determining the decoding point by Trisoup triangle voxelization.

[0185] This scheme first needs to transmit the Flag indicating whether the geometry reconstruction method of the application is enabled under the condition that the trisoup is enabled (trisoup_enabled_flag=true), which belongs to the gbh parameter set; when the Flag indicates that the geometry reconstruction method of the application is enabled, the eligible operation is performed, and the distribution information and the number information of the vertex in the node are used to infer whether the node really enables the geometry reconstruction method of the application.

[0186] When the node enables the geometry reconstruction method, after the decoding end decodes the Trisoup edge vertex located on the Trisoup edge, the decoding end decodes a first flag for representing the original point cloud distribution in the trisoup node. The first flag includes nodeFlag, axiFlag, flag01. Optionally, the decoding end designs a corresponding context for the flag to be decoded. The decoding end performs qualification determination on whether the vertex in the node can directly participate in the process of constructing the Trisoup triangle of the node, processes the vertex according to the determination result, constructs the Trisoup triangle according to the remaining node after processing, and determines the decoding point through Trisoup triangle voxelization.

[0187] The decoding process of the decoding end is shown in FIG. 7, including:

[0188] Determine the total number of vertices (vertex) corresponding to the geometry structure of the Trisoup node;

[0189] Determine whether the total number of vertices is greater than or equal to a threshold value. If the total number of vertices is greater than or equal to the threshold value, and the ratio P of the number of vertices in the second region in any axial direction to the total number of vertices is greater than or equal to a threshold value th1, set eligible = 1, indicating that the Trisoup node enables the geometry reconstruction method of the present application, otherwise set eligible = 0, indicating that the Trisoup node does not enable the geometry reconstruction method of the present application;

[0190] In the case of eligible = 1, decode nodeflag;

[0191] Determine the value of nodeflag. If nodeflag = 1, it indicates that there is a vertex that needs to be corrected, then decode axiFlag_z. If axiFlag_z = 1, it indicates that the dimension value of the vertex that needs to be corrected is in the z axial direction, then decode the corresponding flag01_z in the z axial direction.

[0192] Decode axiFlag_y. If axiFlag_y = 1, it indicates that the dimension value of the vertex that needs to be corrected is in the y axial direction, then decode the corresponding flag01_y in the y axial direction.

[0193] If axiFlag_z = 0 and axiFlag_y = 0, then determine axiFlag_x = 1, which indicates that the dimension value of the vertex that needs to be corrected is in the x axial direction, then decode flag01_x, and modify the vertex (modify edge vertex) according to the value of flag01_x.

[0194] If axiFlag_z = 1 and / or axiFlag_y = 1, i.e. axiFlag_z = 0 and axiFlag_y = 0 are not satisfied, axiFlag_x is decoded; the value of axiFlag_x is judged, and if axiFlag_x = 1, it indicates that the dimension value of the modified vertex is in the x-axis direction; flag01_x is decoded, and the modified edge vertex is modified according to the value of flag01_x;

[0195] The modified vertex, the centroid and the face vertex are used for ray tracing sampling to obtain a reconstructed point cloud.

[0196] In this embodiment, it is necessary to decode whether the geometry reconstruction technology of the present application is enabled in the case that the trisoup technology is enabled. Whether the geometry reconstruction technology of the present application is enabled is adaptively selected according to the vertex distribution in the trisoup node and the total number of vertices. For the node in which the technology is enabled, three groups of context models are constructed again according to the distribution of the vertices in the trisoup node, which are respectively used for decoding nodeFlag, axiFlag and flag01 representing the distribution of the original point cloud in the node. In addition, the geometry structure corresponding to each Trisoup node is divided into sub-geometries, and the decoded flag is used to infer the distribution of the original point cloud of the sub-geometries in the node, which is further used to judge the rationality of each vertex in the node. After different treatments are performed on the vertices determined to be different rationalities, the subsequent point cloud reconstruction process is performed.

[0197] In the embodiment of the present application, the decoding end decodes to obtain a first flag, according to which the distribution of the original point cloud in the geometry structure can be determined, and then the vertices in the geometry structure are processed, and the point cloud is reconstructed using the processed vertices. By processing the vertices, the error point cloud can be removed, the distortion of the reconstructed point cloud can be reduced, and the performance gain of the reconstructed point cloud can be improved.

[0198] As shown in FIG. 8, the embodiment of the present application further provides a geometry reconstruction method, which is performed by an encoding end, and the method comprises:

[0199] Step 801: The encoding end encodes a first flag to obtain a first code stream, the first flag being used to indicate the distribution information of the original point cloud in the geometry structure corresponding to a Trisoup node;

[0200] Step 802: The encoding end processes the vertices in the geometry structure according to the first flag;

[0201] Step 803: The encoding end reconstructs a point cloud using the processed vertices.

[0202] Optionally, for each Trisoup node, the encoding end can determine a vertex existence flag and a quantized vertex position of each edge of the geometry structure corresponding to the Trisoup node. Wherein, the quantized vertex position exists in the case that the vertex existence flag indicates that the vertex exists.

[0203] The encoding end can reorder the non-repeated edges in dictionary order to determine the encoding order. The encoding end can use the neighbor information to determine the context of the vertex existence flag and the vertex position, and encode the vertex existence flag and the quantized vertex position into a code stream using the dynamic (Dynamic) instant update optional binarization technology (OBUF) according to the determined encoding order.

[0204] In this embodiment, the encoding end can determine a first flag according to the point cloud distribution information, the first flag being used to indicate the original point cloud distribution information of the Trisoup node, the encoding end encoding the first flag to generate a first code stream and sending the first code stream to the decoding end. The encoding end performs qualification determination on the vertices in the Trisoup node according to the first flag, for example, the encoding end determines reasonable vertices, unreasonable vertices, relatively reasonable vertices, etc. according to the first flag, so as to delete or correct the vertices according to the determination result. Optionally, the encoding end does not process the reasonable vertices when determining that the vertices are reasonable. The encoding end reconstructs the point cloud by using the processed vertices.

[0205] Optionally, the first flag can include one or more flags, that is, the encoding end can determine one or more flags for indicating the original point cloud distribution, and encode the one or more flags, so that the decoding end can obtain the one or more flags by decoding.

[0206] In the embodiments of the present application, the encoding end determines and encodes the first flag, and according to the first flag, the distribution of the original point cloud in the geometry structure can be determined, and then the vertices in the geometry structure are processed, and the point cloud is reconstructed by using the processed vertices. By processing the vertices, the error point cloud can be removed, the distortion of the reconstructed point cloud can be reduced, and the performance gain of the reconstructed point cloud can be improved.

[0207] As an optional embodiment, the method further comprises:

[0208] According to the original point cloud distribution information in the geometry structure corresponding to the Trisoup node, mark the original point cloud distribution information of the sub-geometry corresponding to the child node of the Trisoup node, the sub-geometry being obtained by dividing the geometry structure;

[0209] According to the original point cloud distribution information of the sub-geometric body and the vertex existence flag of the edge of the geometric structure, the first flag is determined.

[0210] In this embodiment, the decoding end can divide the Trisoup node into a plurality of sub-geometric bodies, for example, as shown in FIG. 6, and give a flag of whether the sub-geometric body has original point cloud according to the original point cloud distribution information in the node; and the decoding end determines the first flag according to the point cloud occupancy information and the vertex existence flag information of the plurality of sub-geometric bodies divided by the Trisoup node.

[0211] The first flag can include one or more flags, and can be flags corresponding to different axial directions, for example: the first flag includes flag 1, flag 2 and flag 3, wherein flag 2 can include x, y and z axial direction corresponding flag 2, and flag 3 can include x, y and z axial direction corresponding flag 3.

[0212] As an optional embodiment, the first flag includes at least one of the following:

[0213] (1) flag 1: used to indicate whether there is a vertex in the geometric structure that needs to be corrected; the flag 1 can be denoted as nodeflag, and the nodeflag is used to indicate whether there is a vertex in the geometric structure corresponding to the Trisoup node that needs to be processed, for example: nodeflag = 1 indicates that there is a vertex in the geometric structure that needs to be processed, and nodeflag = 0 indicates that there is no vertex in the geometric structure that needs to be processed. It should be noted that in the case of nodeflag indicating that there is no vertex in the geometric structure that needs to be processed, the first flag does not include flag 2 and flag 3.

[0214] (2) flag 2: used to indicate whether the dimension value of the vertex in the target axial direction needs to be corrected, and the target axial direction is any one of the three axial directions; the flag 2 can be denoted as axiFlag, and the axiFlag is used to indicate which axial direction the dimension value of the vertex needs to be corrected based on, for example: axiFlag can include axiFlag_1, axiFlag_2 and axiFlag_3, and axiFlag_1, axiFlag_2 and axiFlag_3 correspond to x, y and z axial directions, respectively, and the correspondence between the two is not limited. For example: axiFlag_1 can be used to indicate whether the dimension value of the vertex in the x axial direction (or the y axial direction or the z axial direction) needs to be corrected; axiFlag_2 can be used to indicate whether the dimension value of the vertex in the y axial direction (or the z axial direction or the x axial direction) needs to be corrected; and axiFlag_3 can be used to indicate whether the dimension value of the vertex in the z axial direction (or the x axial direction or the y axial direction) needs to be corrected.

[0215] The value of axiFlag can be used to indicate whether the dimension value of the vertex in a certain axial direction needs to be corrected. For example, axiFlag_1=1 indicates that the dimension value of the vertex in the x axial direction needs to be corrected, and axiFlag_1=0 indicates that the dimension value of the vertex in the x axial direction does not need to be corrected; axiFlag_2=1 indicates that the dimension value of the vertex in the y axial direction needs to be corrected, and axiFlag_2=0 indicates that the dimension value of the vertex in the y axial direction does not need to be corrected; axiFlag_3=1 indicates that the dimension value of the vertex in the z axial direction needs to be corrected, and axiFlag_3=0 indicates that the dimension value of the vertex in the z axial direction does not need to be corrected.

[0216] It should be noted that when axiFlag indicates that the dimension value of the vertex in a certain axial direction does not need to be corrected, the first flag does not include the flag corresponding to the axial direction.

[0217] (3) Flag 3: used to indicate the correction direction when the dimension value of the vertex in the target axial direction needs to be corrected, and the correction direction includes the positive direction or the negative direction of the target axial direction.

[0218] The flag 3 can be denoted as flag01, which is used to indicate the direction in which the dimension value of the vertex in a certain axial direction needs to be corrected when the dimension value of the vertex in the axial direction needs to be corrected. For example, flag01 can include flag01_1, flag01_2, and flag01_3, and flag01_1, flag01_2, and flag01_3 correspond to x, y, and z axial directions, respectively. The correspondence between the two is not limited here.

[0219] For example, flag01_1 can be used to indicate the correction direction when the dimension value of the vertex in the x axial direction (or the y axial direction or the z axial direction) needs to be corrected; flag01_2 can be used to indicate the correction direction when the dimension value of the vertex in the y axial direction (or the z axial direction or the x axial direction) needs to be corrected; and flag01_3 can be used to indicate the correction direction when the dimension value of the vertex in the z axial direction (or the x axial direction or the y axial direction) needs to be corrected.

[0220] The value of flag01 can be used to indicate the correction direction. For example, flag01_1=1 indicates that the dimension value of the vertex in the x axial direction needs to be corrected towards the positive direction of the x axis; flag01_1=0 indicates that the dimension value of the vertex in the x axial direction needs to be corrected towards the negative direction of the x axis; flag01_2=1 indicates that the dimension value of the vertex in the y axial direction needs to be corrected towards the positive direction of the y axis; flag01_2=0 indicates that the dimension value of the vertex in the y axial direction needs to be corrected towards the negative direction of the y axis; flag01_3=1 indicates that the dimension value of the vertex in the z axial direction needs to be corrected towards the positive direction of the z axis; and flag01_3=0 indicates that the dimension value of the vertex in the z axial direction needs to be corrected towards the negative direction of the z axis.

[0221] In this embodiment, the encoding end further processes the three dimensions of x, y, and z to obtain nodeFlag, axiFlag, and flag01. The encoding end can determine the values of the three flags according to the point cloud distribution information of the plurality of sub-geometries divided by a node and the vertex existence flag information, for example, taking the x dimension as an example, as shown in FIG. 6, when the left four sub-geometries are all identified as not existing original point cloud and vertices exist on the left four edges of the Tirsoup node, flag01_x = 0, axiFlag_x = 1; or when the right four sub-geometries are all identified as not existing original point cloud and vertices exist on the right four edges of the Tirsoup node, flag01_x = 1, axiFlag_x = 1; otherwise, axiFlag_x = 0, and flag01_x does not exist. Similarly, axiFlag_y, flag01_y, axiFlag_z, and flag01_z of each node can be obtained in the y and z dimensions. When any one of axiFlag_x, axiFlag_y, and axiFlag_z has a value of 1, nodeflag = 1 (indicating that a vertex needing correction exists), otherwise, nodeflag = 0 (indicating that a vertex needing correction does not exist).

[0222] As an optional embodiment, the method further comprises:

[0223] determining a context of the first flag;

[0224] The encoding of the first flag to obtain the first code stream comprises encoding the first flag according to the context to obtain the first code stream.

[0225] Optionally, the determination of the context of the first flag comprises:

[0226] determining the context of the first flag according to vertex distribution information in a geometric structure corresponding to the Trisoup node;

[0227] The context is used to indicate whether a ratio of a number of vertices in a first region of a target axis to a total number of vertices is greater than or equal to a first threshold value; the target axis is any one of the three axes.

[0228] In this embodiment, the encoding end can determine the context according to the vertex distribution information in the node, and encode the first flag using the context.

[0229] The target axis can be any one of x, y, and z axes. In the case that the first flag comprises multiple flags, the context can comprise contexts corresponding to the multiple flags. For example, the first flag comprises flag 1, flag 2, and flag 3, and the context can comprise a context of flag 2 and a context of flag 3.

[0230] When encoding the first flag at the encoding end, the context corresponding to the axis of the encoded flag is used. For example, when encoding flag 2 corresponding to the x axis, the context corresponding to the x axis is used, i.e., whether the ratio of the number of vertices in the first region of the x axis to the total number of vertices is greater than or equal to a first threshold value; when encoding flag 2 corresponding to the y axis, the context corresponding to the y axis is used, i.e., whether the ratio of the number of vertices in the first region of the y axis to the total number of vertices is greater than or equal to the first threshold value; when encoding flag 3 corresponding to the z axis, the context corresponding to the z axis is used, i.e., whether the ratio of the number of vertices in the first region of the z axis to the total number of vertices is greater than or equal to the first threshold value. The encoding end can use the context to encode nodeFlag, axiFlag, and flag01 to obtain a first bitstream.

[0231] Optionally, the first region can be a preset range of the target region, and the first region can be denoted as a negative half axis or a positive half axis. For example, if the distance between the dimension value of the target axis of the vertex coordinate and the dimension value of the starting point of the edge where the vertex is located in the target axis is less than a first predetermined threshold value, the vertex is considered to be located in the negative half axis of the target axis, and in this case, the ratio of the number of vertices in the first region of the target axis to the total number of vertices is the ratio of the number of vertices in the negative half axis of the target axis to the total number of vertices. If the distance between the dimension value of the target axis of the vertex coordinate and the dimension value of the ending point of the edge where the vertex is located in the target axis is less than a second predetermined threshold value, the vertex is considered to be located in the positive half axis of the target axis, and in this case, the ratio of the number of vertices in the first region of the target axis to the total number of vertices is the ratio of the number of vertices in the positive half axis of the target axis to the total number of vertices.

[0232] When the first region is the negative half axis or the positive half axis of the target axis, the first threshold value indicated in the context can be different. For example, the context indicates whether the ratio of the number of vertices in the negative half axis of the target axis to the total number of vertices is greater than th1, or the context indicates whether the ratio of the number of vertices in the positive half axis of the target axis to the total number of vertices is greater than th2, and th1 and th2 can be different.

[0233] As an optional embodiment, the encoding of the first flag comprises:

[0234] Encoding flag 1;

[0235] If the flag 1 indicates that there is a vertex needing to be corrected in the geometry structure, encode a flag 2 corresponding to the first axis; if the flag 2 corresponding to the first axis indicates that the dimension value of the vertex needing to be corrected is in the first axis, encode a flag 3 corresponding to the first axis;

[0236] Encode a flag 2 corresponding to the second axis; if the flag 2 corresponding to the second axis indicates that the dimension value of the vertex needing to be corrected is in the second axis, encode a flag 3 corresponding to the second axis.

[0237] If the flag 2 corresponding to the first axis indicates that the dimension value of the vertex does not need to be corrected in the first axis, and the flag 2 corresponding to the second axis indicates that the dimension value of the vertex does not need to be corrected in the second axis, determine that a flag 2 corresponding to the third axis indicates that the dimension value of the vertex needs to be corrected in the third axis; encode a flag 3 corresponding to the third axis.

[0238] In this embodiment, when encoding the first code stream, the encoding end first encodes a flag 1 (nodeflag), and encodes a flag 2 (axiFlag) according to the indication of the flag 1; if the flag 1 indicates that there is a vertex needing to be corrected, encode the flag 2, and if the flag 1 indicates that there is no vertex needing to be corrected, do not encode the flag 2. When encoding the flag 2, first encode the flags 2 of two axes in sequence, determine whether to encode the flag 2 of the third axis according to the flags 2 of the two axes; determine whether to encode a flag 3 (flag01) according to the indication of the flag 2, and do not encode the flag 3 of the axis when the flag 2 indicates that the dimension value of the vertex does not need to be corrected in the axis. When the flags 2 of the two axes both indicate that the dimension value of the vertex does not need to be corrected in the corresponding axis, determine that the flag 2 of the third axis indicates that the dimension value of the vertex needs to be corrected in the axis (because the flag 1 indicates that there is a vertex needing to be corrected, if the flags 2 of the two axes both indicate that the vertex does not need to be corrected, the flag 2 of the third axis must indicate that the dimension value of the vertex needs to be corrected in the axis).

[0239] The following illustrates the process of encoding the first flag by the encoding end, and the encoding code is as follows:

[0240] The encoding process is described as follows: the encoding end first encodes nodeflag, if nodeflag indicates that there is a vertex that needs to be corrected (e.g., nodeflag = 1), axiFlag_1 corresponding to the y-axis is encoded (assuming that axiFlag_1 corresponds to the y-axis); if axiFlag_1 indicates that the dimension value of the vertex that needs to be corrected is in the y-axis direction (e.g., axiFlag_1 = 1), flag01_1 corresponding to the y-axis direction is encoded; axiFlag_2 is encoded (assuming that axiFlag_2 corresponds to the z-axis); if axiFlag_2 indicates that the dimension value of the vertex that needs to be corrected is in the z-axis direction, flag01_2 corresponding to the z-axis direction is encoded; if axiFlag_1 indicates that the dimension value of the vertex that does not need to be corrected is in the y-axis direction (e.g., axiFlag_1 = 0), and axiFlag_2 all indicate that the dimension value of the vertex that does not need to be corrected is in the z-axis direction (e.g., axiFlag_2 = 0), it can be determined that axiFlag_3 indicates that the dimension value of the vertex that needs to be corrected is in the x-axis direction (e.g., axiFlag_3 = 1); flag01_3 is encoded.

[0241] As an optional embodiment, processing the vertex in the geometry structure according to the first flag comprises:

[0242] According to the first flag, marking the original point cloud distribution information of the sub-geometry corresponding to the child node of the Trisoup node;

[0243] According to the original point cloud distribution information of the sub-geometry, determining the type of the vertex in the geometry structure;

[0244] According to the type of the vertex, processing the vertex.

[0245] In this embodiment, the encoding end can mark whether there is original point cloud for the eight sub-geometries divided by the current node according to nodeflag and axiFlag and flag01 of the three axis directions. The eligibility of the vertex in the node is determined to determine the type of the vertex, and the vertex is processed or not processed according to the type of the vertex. The type of the vertex can include: a first type vertex, which is an unreasonable vertex; a second type vertex, which is a more reasonable vertex; and a third type vertex, which is a reasonable vertex. The reasonable vertex can not be processed.

[0246] Optionally, determining the type of the vertex in the geometry structure according to the original point cloud distribution information of the sub-geometry comprises at least one of the following:

[0247] In the geometry structure, if the sub-geometries in the first plane to which the edge where the vertex is located belongs do not have the original point cloud, the vertex is determined as a first type vertex, and the first plane is any plane to which the edge where the vertex is located belongs.

[0248] In the geometry structure, if the sub-geometries in the first vertical plane to which the edge where the vertex is located belongs do not have the original point cloud, and the vertex is in the sub-geometries of the first vertical plane, the vertex is determined as a second type vertex, and the first vertical plane is any vertical plane to which the edge where the vertex is located belongs.

[0249] In the geometry structure, the vertex other than the first type vertex and the second type vertex is determined as a third type vertex.

[0250] In this embodiment, when the four sub-geometries in the first plane to which the edge where the vertex is located belongs are marked as not having the original point cloud, the vertex is determined as an unreasonable vertex, i.e., the first type vertex. For example, as shown in FIG. 6, assuming that the edge where the vertex is located is the edge of the bottom surface in FIG. 6 (an edge where sub-geometries 0 and 4 are located), the first plane to which the edge belongs can be the plane where sub-geometries 0, 1, 4, and 5 are located, or the plane where sub-geometries 0, 2, 4, and 6 are located; if sub-geometries 0, 1, 4, and 5 or sub-geometries 0, 2, 4, and 6 do not have the original point cloud, the vertex is the first type vertex, i.e., the unreasonable vertex.

[0251] When the sub-geometries in the first vertical plane to which the edge where the vertex is located belongs do not have the original point cloud, and the vertex is in the sub-geometries of the first vertical plane, the vertex is determined as a more reasonable vertex, i.e., the second type vertex. For example, as shown in FIG. 6, assuming that the edge where the vertex is located is the edge of the bottom surface in FIG. 6 (an edge where sub-geometries 0 and 4 are located), the first vertical plane to which the edge belongs can be the plane where sub-geometries 0, 1, 2, and 3 are located, or the plane where sub-geometries 4, 5, 6, and 7 are located. If sub-geometries 0, 1, 2, and 3 do not have the original point cloud, and the vertex is in any one of sub-geometries 0, 1, 2, and 3, it is determined that the vertex is the second type vertex, or if sub-geometries 4, 5, 6, and 7 do not have the original point cloud, and the vertex is in any one of sub-geometries 4, 5, 6, and 7, it is determined that the vertex is the second type vertex, i.e., the more reasonable vertex.

[0252] In the geometry structure, the vertex other than the first type vertex and the second type vertex is determined as a third type vertex.

[0253] Optionally, the vertex is processed according to the type of the vertex, including at least one of the following:

[0254] deleting the first type vertex; i.e., deleting the unreasonable vertex;

[0255] The second type of vertex is modified to the midpoint of the edge where the second type of vertex is located; that is, the more reasonable vertex is modified to the midpoint of the edge where the more reasonable vertex is located.

[0256] Optionally, the third type of vertex, that is, the reasonable vertex, is not processed.

[0257] As an optional embodiment, the method further comprises:

[0258] The second flag is encoded into a second code stream, and the second flag is used to indicate whether the geometry reconstruction technology is enabled or not.

[0259] In an embodiment of the present application, a flag indicating whether the geometry reconstruction method of the present application is enabled is encoded at an encoding end to obtain a second code stream; and in the case where the geometry reconstruction method is enabled, an implementation process of the geometry reconstruction method of the embodiment of the present application is performed. Optionally, the second code stream and the first code stream can be the same code stream or different code streams.

[0260] Optionally, the encoding end can encode a second flag into a second code stream in the case where Trisoup is enabled.

[0261] Optionally, the encoding end can encode a flag indicating whether Trisoup is enabled; and the decoding end can determine whether Trisoup is enabled by decoding the flag.

[0262] Optionally, before determining the first flag, the method further comprises:

[0263] It is determined that the vertices in the geometry structure corresponding to the Trisoup node satisfy a first condition.

[0264] The first condition comprises that the total number of vertices is greater than or equal to a second threshold value, and the ratio of the number of vertices in a second region in any axial direction to the total number of vertices is greater than or equal to a third threshold value.

[0265] In this embodiment, whether the Trisoup node enables the geometry reconstruction method of the present application is determined by an eligible value. When the total number of vertices in the node is greater than or equal to a threshold value Num and the ratio P of the number of vertices in a second region in any axial direction to the total number of vertices is greater than or equal to a threshold value pth1, the value of eligible is set to 1, indicating that the Trisoup node performs the geometry reconstruction method of the present application, that is, in the case where the vertices in the geometry structure corresponding to the Trisoup node satisfy the first condition, the encoding end needs to encode a first code stream; otherwise, the value of eligible is set to 0, indicating that the Trisoup node does not perform the geometry reconstruction method of the present application, and the encoding end does not need to encode the first code stream.

[0266] The second region can be a threshold range, the second region can be a certain half-axis region in a certain axial direction, for example, the second region can be recorded as a negative half-axis or a positive half-axis in a certain axial direction, and the first condition is, for example, that the total number of vertices is greater than or equal to a second threshold value, and the ratio P of the number of vertices existing in a certain half-axis region in any axial direction to the total number of vertices is greater than or equal to a third threshold value. The any axial direction can be any one or several of the x-axis direction, the y-axis direction, and the z-axis direction.

[0267] For example, the distance between the dimension value of the x-axis direction of the vertex coordinate and the dimension value of the x-axis direction of the starting point of the edge where the vertex is located is less than a threshold value th1, and it is considered that the vertex is located in the negative half-axis of the x-axis direction. In this case, the ratio of the number of vertices in the second region in the x-axis direction to the total number of vertices is the ratio of the number of vertices in the negative half-axis of the x-axis direction to the total number of vertices. The distance between the dimension value of the x-axis direction of the vertex coordinate and the dimension value of the x-axis direction of the ending point of the edge where the vertex is located is less than a threshold value th2, and it is considered that the vertex is located in the positive half-axis of the x-axis direction. In this case, the ratio of the number of vertices in the second region in the x-axis direction to the total number of vertices is the ratio of the number of vertices in the positive half-axis of the x-axis direction to the total number of vertices.

[0268] As an optional embodiment, the using the processed vertex to reconstruct the point cloud comprises:

[0269] Determining the offset centroid vertex position according to the processed vertex;

[0270] Determining a face vertex for the Trisoup node, and encoding the existence information of the face vertex to obtain a third code stream;

[0271] Constructing a triangular patch according to the vertex in the geometric structure, the offset centroid vertex position, and the face vertex;

[0272] Performing ray tracing sampling on the triangular patch to obtain a reconstructed point cloud.

[0273] In this embodiment, after the vertex is deleted or corrected, the encoding end calculates an initial position of the centroid vertex according to the processed vertex, calculates an offset value of the centroid vertex according to the original point cloud around the initial position of the centroid vertex, quantizes and encodes the offset value, and writes the offset value into a code stream. The offset value after reverse quantization is summed with the initial position of the centroid vertex to obtain an offset centroid vertex position.

[0274] The encoding end selectively determines a face vertex for each node. The existence of the face vertex is encoded and sent to the decoding end. The encoding end sorts the vertex coordinates and the face vertex coordinates in each node, uses the edge vertex, the offset centroid vertex, and the face vertex to construct a triangular patch, and performs ray tracing sampling on the triangular patch to obtain a reconstructed point cloud.

[0275] The encoding process at the encoding end is shown in FIG. 9, including:

[0276] determining the total number of vertices of the geometric structure corresponding to the Trisoup node according to the distribution of the point cloud;

[0277] determining whether the total number of vertices is greater than or equal to a threshold value, if the total number of vertices is greater than or equal to the threshold value, and the ratio P of the number of vertices in the second region in any axial direction to the total number of vertices is greater than or equal to a threshold value th1, setting eligible = 1, indicating that the Trisoup node enables the geometric reconstruction method of the present application, otherwise setting eligible = 0, indicating that the Trisoup node does not enable the geometric reconstruction method of the present application;

[0278] in the case of eligible = 1, the geometric structure corresponding to the Trisoup node is divided into eight sub-geometric bodies, as shown in FIG. 6, and the flag (8) of whether the eight sub-geometric bodies exist original point cloud is given according to the original point cloud information in the node;

[0279] determining nodeflag, axiFlag corresponding to each axial direction, and flag01;

[0280] encoding nodeflag; determining the value of nodeflag, if nodeflag = 1, indicating that there is a vertex that needs to be corrected, encoding axiFlag_z; if axiFlag_z = 1, indicating that the dimension value of the vertex that needs to be corrected is in the z axial direction, then encoding flag01_z corresponding to the z axial direction;

[0281] encoding axiFlag_y, if axiFlag_y = 1, indicating that the dimension value of the vertex that needs to be corrected is in the y axial direction, then decoding and encoding flag01_y corresponding to the y axial direction;

[0282] if axiFlag_z = 0 and axiFlag_y = 0, then axiFlag_x = 1 is determined, indicating that the dimension value of the vertex that needs to be corrected is in the x axial direction, then encoding flag01_x, and modifying the vertex according to the value of flag01_x;

[0283] if axiFlag_z = 1 and / or axiFlag_y = 1, i.e. axiFlag_z = 0 and axiFlag_y = 0 is not satisfied, then axiFlag_x is encoded; determining the value of axiFlag_x, if axiFlag_x = 1, indicating that the dimension value of the vertex that needs to be corrected is in the x axial direction; encoding flag01_x, and modifying the vertex according to the value of flag01_x;

[0284] The light tracing sampling is performed by using the corrected vertex, centroid vertex and face vertex to obtain a reconstructed point cloud.

[0285] In this embodiment, it is needed to determine whether the geometry reconstruction technology of the present application is enabled in the case that the trisoup technology is enabled. It is adaptively selected whether to enable the geometry reconstruction technology of the present application by using the vertex distribution in the trisoup node and the total number of vertices. For the node enabling the technology, three groups of context models are constructed by using the distribution of the vertices in the trisoup node again, which are respectively used for encoding the nodeFlag, the axiFlag and the flag01 representing the distribution of the original point cloud in the node. In addition, the geometry structure corresponding to each trisoup node is divided into sub-geometries, and the original point cloud distribution of the sub-geometries in the node is indicated by using each flag, and then used for judging the rationality of each vertex in the node. After the vertices determined to be different rationalities are processed differently, the subsequent point cloud reconstruction process is performed.

[0286] In the embodiment of the present application, the encoding end determines and encodes the first flag. According to the first flag, the distribution of the original point cloud in the geometry structure can be determined, and then the vertices in the geometry structure are processed, and the point cloud is reconstructed by using the processed vertices. By processing the vertices, the error point cloud can be removed, the distortion of the reconstructed point cloud is reduced, and the performance gain of the reconstructed point cloud is improved.

[0287] The execution subject of the geometry reconstruction method provided in the embodiment of the present application can be a geometry reconstruction device. In the embodiment of the present application, the geometry reconstruction device is taken as an example to execute the geometry reconstruction method, and the geometry reconstruction device provided in the embodiment of the present application is described.

[0288] As shown in FIG. 10, the embodiment of the present application provides a geometry reconstruction device 1000 applied to a decoding end, and the device comprises:

[0289] A first decoding module 1010 is configured to decode a first code stream to obtain a first flag, and the first flag is used to indicate the original point cloud distribution information in the geometry structure corresponding to a Trisoup node.

[0290] A first processing module 1020 is configured to process the vertices in the geometry structure according to the first flag.

[0291] A second processing module 1030 is configured to reconstruct a point cloud by using the processed vertices.

[0292] Optionally, the device further comprises:

[0293] The first determining module is configured to determine a context according to vertex distribution information in a geometric structure corresponding to the Trisoup node.

[0294] The first decoding module is specifically configured to decode the first code stream according to the context to obtain a first flag.

[0295] Optionally, the context is used to indicate whether a ratio of a number of vertices in a first region of a target axial direction to a total number of vertices is greater than or equal to a first threshold value, and the target axial direction is any one of three axial directions.

[0296] Optionally, the first flag comprises at least one of the following:

[0297] Flag 1: used to indicate whether there is a vertex needing to be corrected in the geometric structure;

[0298] Flag 2: used to indicate whether a dimension value of the vertex in a target axial direction needs to be corrected, the target axial direction being any one of the three axial directions;

[0299] Flag 3: used to indicate a correction direction in a case where the dimension value of the vertex in the target axial direction needs to be corrected, the correction direction comprising a positive direction or a negative direction of the target axial direction.

[0300] Optionally, the first decoding module is specifically configured to:

[0301] decode the first code stream to obtain flag 1;

[0302] in a case where the flag 1 indicates that there is a vertex needing to be corrected in the geometric structure, decode a flag 2 corresponding to a first axial direction; and if the flag 2 corresponding to the first axial direction indicates that the dimension value of the vertex in the first axial direction needs to be corrected, decode a flag 3 corresponding to the first axial direction;

[0303] decode a flag 2 corresponding to a second axial direction; and if the flag 2 corresponding to the second axial direction indicates that the dimension value of the vertex in the second axial direction needs to be corrected, decode a flag 3 corresponding to the second axial direction;

[0304] and / or, if the flag 2 corresponding to the first axial direction indicates that the dimension value of the vertex in the first axial direction does not need to be corrected, and the flag 2 corresponding to the second axial direction indicates that the dimension value of the vertex in the second axial direction does not need to be corrected, determine that a flag 2 corresponding to a third axial direction indicates that the dimension value of the vertex in the third axial direction needs to be corrected; and decode a flag 3 corresponding to the third axial direction.

[0305] Optionally, the first processing module is specifically configured to:

[0306] mark original point cloud distribution information of a child geometric body corresponding to a child node of the Trisoup node according to the first flag.

[0307] determine a type of a vertex in the geometry structure according to the original point cloud distribution information of the sub-geometry;

[0308] process the vertex according to the type of the vertex.

[0309] Optionally, the first processing module is specifically configured to perform at least one of the following:

[0310] In the geometry structure, if there is no original point cloud in a sub-geometry in a first plane to which an edge where the vertex is located belongs, the vertex is determined as a first type vertex, and the first plane is any plane to which the edge where the vertex is located belongs.

[0311] In the geometry structure, if there is no original point cloud in a sub-geometry in a first vertical plane to which an edge where the vertex is located belongs, and the vertex is in the sub-geometry in the first vertical plane, the vertex is determined as a second type vertex, and the first vertical plane is any vertical plane to which the edge where the vertex is located belongs.

[0312] In the geometry structure, other vertices than the first type vertex and the second type vertex are determined as third type vertices.

[0313] Optionally, the first processing module is specifically configured to perform at least one of the following:

[0314] delete the first type vertex;

[0315] correct the second type vertex to a midpoint of an edge where the second type vertex is located.

[0316] Optionally, the apparatus further comprises:

[0317] a second decoding module configured to decode a second code stream to obtain a second flag, the second flag being used to indicate whether a geometry reconstruction technology is enabled or not.

[0318] Optionally, the apparatus further comprises:

[0319] a second determining module configured to determine that a vertex in a geometry structure corresponding to a Trisoup node satisfies a first condition;

[0320] The first condition comprises that a total number of the vertex is greater than or equal to a second threshold value, and a ratio of a number of the vertex in a second region in any axial direction to the total number of the vertex is greater than or equal to a third threshold value.

[0321] Optionally, the second processing module is specifically configured to

[0322] determine a position of an offset centroid vertex according to the processed vertex;

[0323] decoding the third code stream to determine a face vertex of the Trisoup node;

[0324] constructing a triangular patch according to the vertex in the geometry structure, the offset centroid vertex position, and the face vertex;

[0325] performing ray tracing sampling on the triangular patch to obtain a reconstructed point cloud.

[0326] Embodiments of the present application can obtain a first flag at a decoding end, and according to the first flag, the distribution of an original point cloud in a geometry structure can be determined, and then the vertex in the geometry structure can be processed, and the reconstructed point cloud can be reconstructed using the processed vertex. By processing the vertex, the error point cloud can be removed, the distortion of the reconstructed point cloud can be reduced, and the performance gain of the reconstructed point cloud can be improved.

[0327] The geometry reconstruction apparatus provided in the embodiments of the present application can implement each process of the method embodiments of FIGS. 4 to 7 and achieve the same technical effects. To avoid repetition, details are not described herein.

[0328] As shown in FIG. 11, the embodiments of the present application further provide a geometry reconstruction apparatus 1100 applied to an encoding end, and the apparatus includes:

[0329] A first encoding module 1110 is configured to encode a first flag to obtain a first code stream, and the first flag is used to indicate the original point cloud distribution information in a geometry structure corresponding to a Trisoup node.

[0330] A third processing module 1120 is configured to process a vertex in the geometry structure according to the first flag.

[0331] A fourth processing module 1130 is configured to reconstruct a point cloud using the processed vertex.

[0332] Optionally, the apparatus further includes a third determining module, which is specifically configured to:

[0333] According to the original point cloud distribution information in the geometry structure corresponding to the Trisoup node, the original point cloud distribution information of a child geometry corresponding to a child node of the Trisoup node is marked, and the child geometry is obtained by dividing the geometry structure;

[0334] According to the original point cloud distribution information of the child geometry and the vertex existence flag of an edge of the geometry structure, the first flag is determined.

[0335] Optionally, the first flag includes at least one of the following:

[0336] Flag 1: used to indicate whether there is a vertex that needs to be corrected in the geometry structure;

[0337] Flag 2 is used to indicate whether the dimension value of the vertex on the target axis needs to be corrected, the target axis being any one of the three axes;

[0338] Flag 3 is used to indicate the correction direction in the case that the dimension value of the vertex on the target axis needs to be corrected, the correction direction including the positive direction or the negative direction of the target axis.

[0339] Optionally, the first encoding module is specifically used for:

[0340] encoding the flag 1;

[0341] if the flag 1 indicates that there is a vertex needing to be corrected in the geometric structure, encoding the flag 2 corresponding to the first axis; if the flag 2 corresponding to the first axis indicates that the dimension value of the vertex on the first axis needs to be corrected, encoding the flag 3 corresponding to the first axis;

[0342] encoding the flag 2 corresponding to the second axis; if the flag 2 corresponding to the second axis indicates that the dimension value of the vertex on the second axis needs to be corrected, encoding the flag 3 corresponding to the second axis;

[0343] and / or, if the flag 2 corresponding to the first axis indicates that the dimension value of the vertex on the first axis does not need to be corrected, and the flag 2 corresponding to the second axis indicates that the dimension value of the vertex on the second axis does not need to be corrected, determining that the flag 2 corresponding to the third axis indicates that the dimension value of the vertex on the third axis needs to be corrected; encoding the flag 3 corresponding to the third axis.

[0344] Optionally, the apparatus further comprises:

[0345] a fourth determining module configured to determine a context of the first flag;

[0346] the first encoding module is specifically used for: encoding the first flag according to the context, to obtain a first code stream.

[0347] Optionally, the fourth determining module is specifically used for:

[0348] determining the context of the first flag according to vertex distribution information in the geometric structure corresponding to the Trisoup node;

[0349] wherein the context is used to indicate whether the ratio of the number of vertices in a first region of a target axis to the total number of vertices is greater than or equal to a first threshold value, the target axis being any one of the three axes.

[0350] Optionally, the third processing module is specifically used for:

[0351] According to the first flag, mark original point cloud distribution information of a child geometry corresponding to a child node of the Trisoup node;

[0352] According to the original point cloud distribution information of the child geometry, determine a type of a vertex in the geometry structure;

[0353] According to the type of the vertex, process the vertex.

[0354] Optionally, the third processing module is specifically configured to perform at least one of the following:

[0355] In the geometry structure, if there is no original point cloud in a child geometry in a first plane to which an edge where the vertex is located belongs, the vertex is determined as a first type vertex, and the first plane is any plane to which the edge where the vertex is located belongs.

[0356] In the geometry structure, if there is no original point cloud in a child geometry in a first vertical plane to which an edge where the vertex is located belongs, and the vertex is in the child geometry in the first vertical plane, the vertex is determined as a second type vertex, and the first vertical plane is any vertical plane to which the edge where the vertex is located belongs.

[0357] In the geometry structure, other vertices except the first type vertex and the second type vertex are determined as third type vertices.

[0358] Optionally, the third processing module is specifically configured to perform at least one of the following:

[0359] Delete the first type vertex;

[0360] Correct the second type vertex to a midpoint of an edge where the second type vertex is located.

[0361] Optionally, the apparatus further comprises:

[0362] A second encoding module configured to encode a second flag as a second code stream, the second flag being used to indicate whether to enable or not to enable a geometry reconstruction technology.

[0363] Optionally, the apparatus further comprises:

[0364] A fifth determining module configured to determine that a vertex in a geometry structure corresponding to a Trisoup node satisfies a first condition.

[0365] The first condition comprises that a total number of vertices is greater than or equal to a second threshold value, and a ratio of a number of vertices in a second region in any axial direction to the total number of vertices is greater than or equal to a third threshold value.

[0366] Optionally, the fourth processing module is specifically configured to:

[0367] determine the offset centroid vertex position according to the processed vertex;

[0368] determine a face vertex for the Trisoup node, encode presence information of the face vertex to obtain a third code stream;

[0369] construct a triangular patch according to the vertex in the geometry structure, the offset centroid vertex position, and the face vertex;

[0370] perform ray tracing sampling on the triangular patch to obtain a reconstructed point cloud.

[0371] Embodiments of the present application encode a first flag at an encoding end and encode the first flag, and the distribution of an original point cloud in a geometry structure can be determined according to the first flag, and then the vertex in the geometry structure is processed, and the point cloud is reconstructed using the processed vertex. By processing the vertex, the error point cloud can be removed, the distortion of the reconstructed point cloud is reduced, and the performance gain of the reconstructed point cloud is improved.

[0372] The geometry reconstruction apparatus provided in the embodiments of the present application can implement each process of the method embodiments of FIGS. 8 to 9 and achieve the same technical effects. To avoid repetition, details are not described herein.

[0373] As shown in FIG. 12, the embodiments of the present application further provide an electronic device 1200, which includes a processor 1201 and a memory 1202, and the memory 1202 stores programs or instructions executable on the processor 1201. For example, when the electronic device 1200 is an encoding end device, the programs or instructions are executed by the processor 1201 to implement each step of the above geometry reconstruction method embodiments and achieve the same technical effects. When the electronic device 1200 is a decoding end device, the programs or instructions are executed by the processor 1201 to implement each step of the above geometry reconstruction method embodiments and achieve the same technical effects. To avoid repetition, details are not described herein. Optionally, the memory 1202 can be the memory 102 or the memory 113 in the embodiments shown in FIG. 1, and the processor 1201 can implement the functions of the encoder 200 or the decoder 300 in the embodiments shown in FIGS. 1 to 3.

[0374] The embodiments of the present application further provide an electronic device, which includes a memory configured to store video data, and a processing circuit configured to implement each step of the above geometry reconstruction method embodiments. Optionally, the memory can be the memory 102 or the memory 113 in the embodiments shown in FIG. 1, and the processing circuit can implement the functions of the encoder 200 or the decoder 300 in the embodiments shown in FIGS. 1 to 3.

[0375] The embodiment of the present application further provides an electronic device, comprising a processor and a communication interface, the communication interface and the processor are coupled, the processor is used to run programs or instructions, and the steps in the method embodiment shown in FIG. 4 or FIG. 8 are realized. The device embodiment corresponds to the above-mentioned method embodiment, each implementation process and implementation manner of the above-mentioned method embodiment can be applied to the terminal embodiment, and the same technical effects can be achieved.

[0376] The electronic device can be a terminal, and can also be other devices except the terminal, such as a server, a network attached storage (NAS) and the like.

[0377] The terminal can be a mobile phone, a tablet personal computer (Tablet Personal Computer), a laptop computer (Laptop Computer), a notebook computer, a personal digital assistant (Personal Digital Assistant, PDA), a palm computer, a netbook, an ultra-mobile personal computer (Ultra-mobile Personal Computer, UMPC), a mobile internet device (Mobile Internet Device, MID), an augmented reality (Augmented Reality, AR) device, a virtual reality (Virtual Reality, VR) device, a mixed reality (mixed reality, MR) device, a robot, a wearable device, a flight vehicle, a vehicle user equipment (Vehicle User Equipment, VUE), a shipboard device, a pedestrian terminal (Pedestrian User Equipment, PUE), a smart home (a home device with a wireless communication function, such as a refrigerator, a television, a washing machine or furniture and the like), a game machine, a personal computer (Personal Computer, PC), a teller machine or a self-service machine and the like terminal side device. The wearable device includes a smart watch, a smart bracelet, a smart earphone, smart glasses, smart jewelry (a smart bracelet, a smart necklace, a smart ring, a smart necklace, a smart ankle bracelet, a smart ankle chain and the like), a smart wristband, smart clothes and the like. The vehicle-mounted device can also be referred to as a vehicle-mounted terminal, a vehicle-mounted controller, a vehicle-mounted module, a vehicle-mounted component, a vehicle-mounted chip or a vehicle-mounted unit and the like. It should be noted that the specific type of the terminal is not limited in the embodiment of the present application.

[0378] The server can be a standalone physical server, a server cluster or a distributed system composed of multiple physical servers, or a cloud server, which 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 (CDN), or cloud computing services based on big data and artificial intelligence platforms, etc.

[0379] For example, the electronic device described above can include, but is not limited to, a type of source device 100 or destination device 110 shown in FIG. 1.

[0380] For example, the electronic device described above can include, but is not limited to, a type of source device 100 or destination device 110 shown in FIG. 1.

[0381] The terminal 1300 includes, but is not limited to, at least part of the components such as a radio frequency unit 1301, a network module 1302, an audio output unit 1303, an input unit 1304, a sensor 1305, a display unit 1306, a user input unit 1307, an interface unit 1308, a memory 1309, and a processor 1310.

[0382] Those skilled in the art can understand that the terminal 1300 can also include a power supply (such as a battery) for supplying power to each component, and the power supply can be logically connected to the processor 1310 through a power management system, so as to realize the functions of power management, such as charging, discharging, and power consumption management, through the power management system. The terminal structure shown in FIG. 13 does not constitute a limitation on the terminal, and the terminal can include more or fewer components than shown, or combine certain components, or different component arrangements, which will not be described here.

[0383] It should be understood that in the embodiments of the present application, the input unit 1304 can include a graphics processor (GPU) 13041 and a microphone 13042. The graphics processor 13041 processes image data of a still picture or a video obtained by an image acquisition device (such as a camera) in a video acquisition mode or an image acquisition mode, or can process obtained point cloud data. The display unit 1306 can include a display panel 13061, which can be configured in the form of a liquid crystal display, an organic light-emitting diode, etc. The user input unit 1307 includes at least one of a touch panel 13071 and other input devices 13072. The touch panel 13071 is also called a touch screen. The touch panel 13071 can include two parts of a touch detection device and a touch controller. The other input devices 13072 can include, but are not limited to, a physical keyboard, function keys (such as volume control keys, on-off keys, etc.), a trackball, a mouse, a joystick, etc., which will not be described here.

[0384] In the embodiments of the present application, after the radio frequency unit 1301 receives the downlink data from the network side device, it can be transmitted to the processor 1310 for processing. In addition, the radio frequency unit 1301 can send uplink data to the network side device. Generally, the radio frequency unit 1301 includes, but is not limited to, an antenna, an amplifier, a transceiver, a coupler, a low noise amplifier, a duplexer, etc.

[0385] The memory 1309 can be used to store software programs or instructions and various data. The memory 1309 can mainly include a first storage area storing programs or instructions and a second storage area storing data, wherein the first storage area can store an operating system, application programs or instructions required by at least one function (such as a sound playing function, an image playing function, etc.), and the like. In addition, the memory 1309 can include a volatile memory or a non-volatile memory. The non-volatile memory can be a Read-Only Memory (ROM), a Programmable ROM (PROM), an Erasable PROM (EPROM), an Electrically EPROM (EEPROM), or a flash memory. The volatile memory can be a Random Access Memory (RAM), a Static RAM (SRAM), a Dynamic RAM (DRAM), a Synchronous DRAM (SDRAM), a Double Data Rate SDRAM (DDR SDRAM), an Enhanced SDRAM (ESDRAM), a Synch link DRAM (SLDRAM), and a Direct Rambus RAM (DRRAM). The memory 1309 in the embodiments of the present application includes but is not limited to these and any other suitable types of memory.

[0386] The processor 1310 can include one or more processing units; optionally, the processor 1310 integrates an application processor and a modem processor, wherein the application processor mainly processes operations related to an operating system, a user interface, and an application program, and the modem processor mainly processes wireless communication signals, such as a baseband processor. It can be understood that the above-mentioned modem processor can also not be integrated into the processor 1310.

[0387] When the terminal is a decoding end device, the processor 1310 is configured to:

[0388] The processor 1310 is configured to: decode the first code stream to obtain a first flag, the first flag being used to indicate original point cloud distribution information in a geometric structure corresponding to a Trisoup node; process vertices in the geometric structure according to the first flag; and reconstruct a point cloud using the processed vertices.

[0389] Optionally, the processor 1310 is further configured to:

[0390] determine the context according to vertex distribution information in the geometry structure corresponding to the Trisoup node;

[0391] decode the first code stream to obtain the first flag, including:

[0392] decode the first code stream according to the context to obtain the first flag.

[0393] Optionally, the context is used to indicate whether a ratio of a number of vertices in a first region of a target axial direction to a total number of vertices is greater than or equal to a first threshold value; the target axial direction is any one of the three axial directions.

[0394] Optionally, the first flag includes at least one of the following:

[0395] Flag 1: used to indicate whether there is a vertex in the geometry structure that needs to be corrected;

[0396] Flag 2: used to indicate whether the dimension value of the vertex in the target axial direction needs to be corrected, the target axial direction being any one of the three axial directions;

[0397] Flag 3: used to indicate a correction direction in the case that the dimension value of the vertex in the target axial direction needs to be corrected, the correction direction including a positive direction or a negative direction of the target axial direction.

[0398] Optionally, the processor 1310 is specifically configured to:

[0399] decode the first code stream to obtain flag 1;

[0400] in the case that the flag 1 indicates that there is a vertex in the geometry structure that needs to be corrected, decode a flag 2 corresponding to a first axial direction; if the flag 2 corresponding to the first axial direction indicates that the dimension value of the vertex in the first axial direction needs to be corrected, decode a flag 3 corresponding to the first axial direction;

[0401] decode a flag 2 corresponding to a second axial direction; if the flag 2 corresponding to the second axial direction indicates that the dimension value of the vertex in the second axial direction needs to be corrected, decode a flag 3 corresponding to the second axial direction;

[0402] and / or, if the flag 2 corresponding to the first axial direction indicates that the dimension value of the vertex in the first axial direction does not need to be corrected, and the flag 2 corresponding to the second axial direction indicates that the dimension value of the vertex in the second axial direction does not need to be corrected, determine that a flag 2 corresponding to a third axial direction indicates that the dimension value of the vertex in the third axial direction needs to be corrected; decode a flag 3 corresponding to the third axial direction.

[0403] Optionally, the processor 1310 is specifically configured to:

[0404] According to the first flag, mark the original point cloud distribution information of the sub-geometry corresponding to the child node of the Trisoup node;

[0405] According to the original point cloud distribution information of the sub-geometry, determine the type of the vertex in the geometry structure;

[0406] According to the type of the vertex, process the vertex.

[0407] Optionally, the processor 1310 is specifically configured to perform at least one of the following:

[0408] In the geometry structure, if there is no original point cloud in the sub-geometry in the first plane to which the edge where the vertex is located belongs, the vertex is determined as a first type vertex, and the first plane is any plane to which the edge where the vertex is located belongs;

[0409] In the geometry structure, if there is no original point cloud in the sub-geometry in the first vertical plane to which the edge where the vertex is located belongs, and the vertex is in the sub-geometry of the first vertical plane, the vertex is determined as a second type vertex, and the first vertical plane is any vertical plane to which the edge where the vertex is located belongs;

[0410] In the geometry structure, other vertices except the first type vertex and the second type vertex are determined as third type vertices.

[0411] Optionally, the processor 1310 is specifically configured to perform at least one of the following:

[0412] Delete the first type vertex;

[0413] Correct the second type vertex to the midpoint of the edge where the second type vertex is located.

[0414] Optionally, the processor 1310 is further configured to:

[0415] Decode a second code stream to obtain a second flag, and the second flag is used to indicate whether to enable or not to enable a geometry reconstruction technology.

[0416] Optionally, the processor 1310 is further configured to:

[0417] Determine that the vertices in the geometry structure corresponding to the Trisoup node satisfy a first condition;

[0418] The first condition includes that the total number of vertices is greater than or equal to a second threshold value, and the ratio of the number of vertices in a second region in any axial direction to the total number of vertices is greater than or equal to a third threshold value.

[0419] Optionally, the processor 1310 is specifically configured to:

[0420] determine an offset centroid vertex position according to the processed vertex;

[0421] decode a third code stream to determine a face vertex of the Trisoup node;

[0422] construct a triangular patch according to the vertex in the geometric structure, the offset centroid vertex position and the face vertex;

[0423] perform ray tracing sampling on the triangular patch to obtain a reconstructed point cloud.

[0424] In a case where the terminal is an encoding end device:

[0425] The processor 1310 is configured to: encode a first flag to obtain a first code stream, the first flag being used to indicate original point cloud distribution information in a geometric structure corresponding to a Trisoup node; process a vertex in the geometric structure according to the first flag; and reconstruct a point cloud using the processed vertex.

[0426] Optionally, the processor 1310 is specifically configured to:

[0427] According to the original point cloud distribution information in the geometric structure corresponding to the Trisoup node, mark original point cloud distribution information of a child geometric body corresponding to a child node of the Trisoup node, the child geometric body being obtained by dividing the geometric structure;

[0428] According to the original point cloud distribution information of the child geometric body and a vertex existing flag of an edge of the geometric structure, determine the first flag.

[0429] Optionally, the first flag comprises at least one of the following:

[0430] Flag 1: used to indicate whether there is a vertex that needs to be corrected in the geometric structure;

[0431] Flag 2: used to indicate whether a dimension value of the vertex in a target axial direction needs to be corrected, the target axial direction being any one of three axial directions;

[0432] Flag 3: used to indicate a correction direction in a case where the dimension value of the vertex in the target axial direction needs to be corrected, the correction direction comprising a positive direction or a negative direction of the target axial direction.

[0433] Optionally, the processor 1310 is specifically configured to:

[0434] encode the flag 1;

[0435] if the flag 1 indicates that there is a vertex needing to be corrected in the geometry structure, encode a first axial correspondence flag 2; if the first axial correspondence flag 2 indicates that the dimension value of the vertex needing to be corrected is in a first axial direction, encode a first axial correspondence flag 3;

[0436] encode a second axial correspondence flag 2; if the second axial correspondence flag 2 indicates that the dimension value of the vertex needing to be corrected is in a second axial direction, encode a second axial correspondence flag 3;

[0437] and / or, if the first axial correspondence flag 2 indicates that the dimension value of the vertex needing to be corrected is not in the first axial direction, and the second axial correspondence flag 2 indicates that the dimension value of the vertex needing to be corrected is not in the second axial direction, determine that a third axial correspondence flag 2 indicates that the dimension value of the vertex needing to be corrected is in a third axial direction; encode a third axial correspondence flag 3.

[0438] Optionally, the processor 1310 is further configured to:

[0439] determine a context of the first flag;

[0440] the encoding of the first flag to obtain the first bitstream, comprising:

[0441] encoding the first flag according to the context to obtain the first bitstream.

[0442] Optionally, the processor 1310 is specifically configured to:

[0443] determine a context of the first flag according to vertex distribution information in a geometry structure corresponding to a Trisoup node;

[0444] wherein the context is used to indicate whether a ratio of a number of vertices in a first region of a target axial direction to a total number of vertices is greater than or equal to a first threshold value; the target axial direction is any one of three axial directions.

[0445] Optionally, the processor 1310 is specifically configured to:

[0446] mark original point cloud distribution information of a child geometry corresponding to a child node of the Trisoup node according to the first flag;

[0447] determine a type of a vertex in the geometry structure according to the original point cloud distribution information of the child geometry;

[0448] process the vertex according to the type of the vertex.

[0449] Optionally, the processor 1310 is specifically configured to perform at least one of the following:

[0450] In the geometry structure, if the sub-geometry in the first plane of the edge where the vertex is located does not have the original point cloud, the vertex is determined as a first type vertex, and the first plane is any plane of the edge where the vertex is located.

[0451] In the geometry structure, if the sub-geometry in the first vertical plane of the edge where the vertex is located does not have the original point cloud, and the vertex is in the sub-geometry of the first vertical plane, the vertex is determined as a second type vertex, and the first vertical plane is any vertical plane of the edge where the vertex is located.

[0452] In the geometry structure, other vertices except the first type vertex and the second type vertex are determined as third type vertices.

[0453] Optionally, the processor 1310 is specifically configured to perform at least one of the following:

[0454] deleting the first type vertex;

[0455] correcting the second type vertex to a midpoint of the edge where the second type vertex is located.

[0456] Optionally, the processor 1310 is further configured to:

[0457] encode a second flag into a second code stream, and the second flag is used to indicate whether to enable or not to enable the geometry reconstruction technology.

[0458] Optionally, the processor 1310 is further configured to:

[0459] determine that the vertices in the geometry structure corresponding to the Trisoup node satisfy a first condition.

[0460] The first condition includes that the total number of vertices is greater than or equal to a second threshold value, and the ratio of the number of vertices in a second region in any axial direction to the total number of vertices is greater than or equal to a third threshold value.

[0461] Optionally, the processor 1310 is specifically configured to:

[0462] determine a position of a centroid vertex after offset according to the processed vertices;

[0463] determine a face vertex for the Trisoup node, encode existence information of the face vertex to obtain a third code stream;

[0464] construct a triangular facet according to the vertices in the geometry structure, the position of the centroid vertex after offset, and the face vertex;

[0465] perform ray tracing sampling on the triangular facet to obtain a reconstructed point cloud.

[0466] The terminal can determine the distribution of the original point cloud in the geometric structure according to the first flag, and then process the vertex in the geometric structure, and reconstruct the point cloud by using the processed vertex. By processing the vertex, the error point cloud can be removed, the distortion of the reconstructed point cloud can be reduced, and the performance gain of the reconstructed point cloud can be improved.

[0467] It can be understood that the implementation process of each implementation mode mentioned in the embodiment can refer to the related description of the geometric reconstruction method in the method embodiment, and achieve the same or corresponding technical effects. To avoid repetition, it will not be repeated here.

[0468] The embodiment of the application also provides a readable storage medium, which stores a program or instructions, and the program or instructions are executed by a processor to implement each process of the above-mentioned geometric reconstruction method embodiment, and achieve the same technical effects. To avoid repetition, it will not be repeated here.

[0469] The processor is the processor in the terminal in the above-mentioned embodiments. The readable storage medium includes a computer readable storage medium, such as ROM, RAM, magnetic disk or optical disk, etc. In some examples, the readable storage medium can be a non-transitory readable storage medium.

[0470] The embodiment of the application further provides a chip, which includes a processor and a communication interface, the communication interface and the processor are coupled, and the processor is used to run a program or instructions to implement each process of the above-mentioned geometric reconstruction method embodiment, and achieve the same technical effects. To avoid repetition, it will not be repeated here.

[0471] It should be understood that the chip mentioned in the embodiment of the application can include a system-level chip (also known as a system chip, a chip system or a system-on-chip chip), and can also include a separate display chip, etc.

[0472] The embodiment of the application further provides a computer program / program product, which is stored in a storage medium, and is executed by at least one processor to implement each process of the above-mentioned geometric reconstruction method embodiment, and achieve the same technical effects. To avoid repetition, it will not be repeated here.

[0473] The embodiment of the application further provides a coding system, which includes an encoding end device and a decoding end device. The encoding end device can be used to execute the steps of the geometric reconstruction method of the encoding end as described above. The decoding end device can be used to execute the steps of the geometric reconstruction method of the decoding end as described above.

[0474] The embodiment of the present application further provides a computer program product comprising computer instructions, which, when executed by a processor, implement the steps of the geometric reconstruction method described above and achieve the same technical effects. To avoid repetition, details are not described herein.

[0475] It should be noted that, in this document, the terms "comprising", "including", or any other variant thereof are intended to cover a non-exclusive inclusion, such that processes, methods, articles, or apparatuses that comprise a list of elements not only include those elements, but also include other elements not expressly listed or inherent to such processes, methods, articles, or apparatuses. Without further limitation, an element defined by an indefinite article "a" or "an" does not exclude the existence of additional identical elements in the process, method, article, or apparatus that includes the element. In addition, it should be pointed out that the scope of the methods and apparatuses in the embodiments of the present application is not limited to performing functions in the order shown or discussed, but can also include performing functions in a substantially simultaneous manner or in reverse order, for example, the described methods can be performed in an order different from that described, and various steps can be added, omitted, or combined. In addition, features described with reference to certain examples can be combined in other examples.

[0476] From the above description of the embodiments, those skilled in the art can clearly understand that the above-mentioned embodiment methods can be realized by means of computer software products and general hardware platforms, and of course, can also be realized by hardware. The computer software product is stored in a storage medium (such as ROM, RAM, magnetic disc, optical disc, etc.), and includes a plurality of instructions for making a terminal or network side device execute the method described in each embodiment of the present application.

[0477] The embodiments of the present application are described above in combination with the drawings, but the present application is not limited to the above-mentioned specific embodiments, and the above-mentioned specific embodiments are only illustrative, but not limiting. Those skilled in the art can make many forms of embodiments under the inspiration of the present application without departing from the scope of the present application and the protection scope of the claims, and these embodiments all belong to the protection scope of the present application.

Claims

1. A geometry reconstruction method, comprising: decoding a first bitstream to obtain a first flag, the first flag being used to indicate original point cloud distribution information in a geometry corresponding to a Trisoup node; processing vertices in the geometry according to the first flag; reconstructing a point cloud using the processed vertices.

2. The method of claim 1, wherein, The method further comprises: determining a context according to the vertex distribution information in the geometry corresponding to the Trisoup node; decoding the first bitstream to obtain the first flag comprises: decoding the first bitstream according to the context to obtain the first flag.

3. The method of claim 2, wherein, The context is used to indicate whether a ratio of a number of vertices in a first region of a target axis to a total number of vertices is greater than or equal to a first threshold value, the target axis being any one of three axes.

4. The method of claim 1 or 2, wherein, The first flag comprises at least one of: a flag 1 used to indicate whether there is a vertex that needs to be corrected in the geometry; a flag 2 used to indicate whether a dimension value of the vertex in a target axis needs to be corrected, the target axis being any one of the three axes; a flag 3 used to indicate a correction direction in the case that the dimension value of the vertex in the target axis needs to be corrected, the correction direction comprising a positive direction or a negative direction of the target axis.

5. The method according to any one of claims 1 to 4, wherein, The decoding of the first bitstream to obtain the first flag comprises: decoding the first bitstream to obtain the flag 1; in the case that the flag 1 indicates that there is a vertex that needs to be corrected in the geometry, decoding a flag 2 corresponding to a first axis; if the flag 2 corresponding to the first axis indicates that the dimension value of the vertex in the first axis needs to be corrected, decoding a flag 3 corresponding to the first axis; decoding a flag 2 corresponding to a second axis; if the flag 2 corresponding to the second axis indicates that the dimension value of the vertex in the second axis needs to be corrected, decoding a flag 3 corresponding to the second axis; and / or, if the flag 2 corresponding to the first axis indicates that the dimension value of the vertex in the first axis does not need to be corrected, and the flag 2 corresponding to the second axis indicates that the dimension value of the vertex in the second axis does not need to be corrected, determining that a flag 2 corresponding to a third axis indicates that the dimension value of the vertex in the third axis needs to be corrected; decoding a flag 3 corresponding to the third axis.

6. The method of claim 1, wherein, The processing of the vertices in the geometry according to the first flag comprises: according to the first flag, marking original point cloud distribution information of a child geometry corresponding to a child node of the Trisoup node; determining a type of the vertex in the geometry according to the original point cloud distribution information of the child geometry; processing the vertex according to the type of the vertex.

7. The method of claim 6, wherein, The determining of the type of the vertex in the geometry according to the original point cloud distribution information of the child geometry comprises at least one of: in the geometry, if there is no original point cloud in a first plane within an edge to which the vertex belongs, determining that the vertex is a first type vertex, the first plane being any plane to which the edge belongs; In the geometry structure, if a sub-geometry in a first vertical plane of an edge where the vertex is located does not have an original point cloud, and the vertex is in the sub-geometry of the first vertical plane, the vertex is determined as a second type vertex, the first vertical plane being any vertical plane of the edge where the vertex is located; In the geometry structure, other vertices except the first type vertex and the second type vertex are determined as third type vertices.

8. The method of claim 6 or 7, wherein, The vertices are processed according to the types of the vertices, including at least one of the following: deleting the first type vertex; correcting the second type vertex to a midpoint of the edge where the second type vertex is located.

9. The method of claim 1, wherein, The method further includes: decoding a second code stream to obtain a second flag, the second flag being used to indicate whether a geometry reconstruction technology is enabled or not.

10. The method of claim 1 or 9, wherein, The method further includes: determining that the vertices in the geometry structure corresponding to the Trisoup node satisfy a first condition; wherein the first condition includes that a total number of the vertices is greater than or equal to a second threshold, and a ratio of a number of the vertices in a second region in any axial direction to the total number of the vertices is greater than or equal to a third threshold.

11. The method of claim 1, wherein, The method further includes: determining a position of an offset centroid vertex according to the processed vertices; decoding a third code stream to determine a face vertex of the Trisoup node; constructing a triangular patch according to the vertices in the geometry structure, the position of the offset centroid vertex, and the face vertex; performing ray tracing sampling on the triangular patch to obtain a reconstructed point cloud.

12. A geometry reconstruction method, including: encoding a first flag at an encoding end to obtain a first code stream, the first flag being used to indicate original point cloud distribution information in a geometry structure corresponding to a Trisoup node; processing vertices in the geometry structure according to the first flag by the encoding end; reconstructing a point cloud using the processed vertices by the encoding end.

13. The method of claim 12, wherein, The method further includes: labeling original point cloud distribution information of a sub-geometry corresponding to a sub-node of the Trisoup node according to the original point cloud distribution information in the geometry structure corresponding to the Trisoup node, the sub-geometry being obtained by division of the geometry structure; determining the first flag according to the original point cloud distribution information of the sub-geometry and a vertex existence flag of an edge of the geometry structure.

14. The method of claim 12 or 13, wherein, The first flag includes at least one of the following: flag 1: used to indicate whether there is a vertex that needs to be corrected in the geometry structure; flag 2: used to indicate whether a dimension value of the vertex in a target axial direction needs to be corrected, the target axial direction being any of three axial directions; flag 3: used to indicate a correction direction in the case that the dimension value of the vertex in the target axial direction needs to be corrected, the correction direction including a positive direction or a negative direction of the target axial direction.

15. The method according to any one of claims 12 to 14, wherein, The encoding of the first flag includes: encoding the flag 1; if the flag 1 indicates that there is a vertex that needs to be corrected in the geometry structure, encoding a flag 2 corresponding to a first axial direction; if the flag 2 corresponding to the first axial direction indicates that the dimension value of the vertex in the first axial direction needs to be corrected, encoding a flag 3 corresponding to the first axial direction. encoding a second axial correspondence flag 2; if the second axial correspondence flag 2 indicates that the dimension value of the vertex in the second axis needs to be corrected, encoding a third axial correspondence flag 3 of the second axial correspondence flag 2; and / or, if the first axial correspondence flag 2 indicates that the dimension value of the vertex in the first axis does not need to be corrected, and the second axial correspondence flag 2 indicates that the dimension value of the vertex in the second axis does not need to be corrected, determining that the third axial correspondence flag 2 indicates that the dimension value of the vertex in the third axis needs to be corrected; encoding the third axial correspondence flag 3.

16. The method according to any one of claims 12 to 15, wherein, The method further comprises: determining a context of the first flag; The encoding of the first flag to obtain the first code stream comprises: encoding the first flag according to the context to obtain the first code stream.

17. The method of claim 16, wherein, The determination of the context of the first flag comprises: determining the context of the first flag according to the vertex distribution information in the geometry structure corresponding to the Trisoup node; The context is used to indicate whether the ratio of the number of vertices in a first region of a target axis to the total number of vertices is greater than or equal to a first threshold value; the target axis is any one of the three axes.

18. The method of claim 12, wherein, The processing of the vertex in the geometry structure according to the first flag comprises: According to the first flag, marking the original point cloud distribution information of the sub-geometry corresponding to the child node of the Trisoup node; determining the type of the vertex in the geometry structure according to the original point cloud distribution information of the sub-geometry; processing the vertex according to the type of the vertex.

19. The method of claim 18, wherein, The determination of the type of the vertex in the geometry structure according to the original point cloud distribution information of the sub-geometry comprises at least one of the following: In the geometry structure, if the sub-geometry in the first plane to which the edge where the vertex is located belongs does not have original point cloud, it is determined that the vertex is a first type vertex, and the first plane is any plane to which the edge where the vertex is located belongs; In the geometry structure, if the sub-geometry in the first vertical plane to which the edge where the vertex is located belongs does not have original point cloud, and the vertex is in the sub-geometry of the first vertical plane, it is determined that the vertex is a second type vertex, and the first vertical plane is any vertical plane to which the edge where the vertex is located belongs; In the geometry structure, it is determined that the vertex other than the first type vertex and the second type vertex is a third type vertex.

20. The method of claim 18 or 19, wherein, The processing of the vertex according to the type of the vertex comprises at least one of the following: deleting the first type vertex; correcting the second type vertex to the midpoint of the edge where the second type vertex is located.

21. The method of claim 12, wherein, The method further comprises: encoding a second flag into a second code stream, the second flag being used to indicate whether to enable or not to enable a geometry reconstruction technology.

22. The method of claim 12 or 21, wherein, The method further comprises: determining that the vertex in the geometry structure corresponding to the Trisoup node satisfies a first condition; The first condition comprises that the total number of vertices is greater than or equal to a second threshold value, and the ratio of the number of vertices in a second region of any axis to the total number of vertices is greater than or equal to a third threshold value.

23. The method of claim 12, wherein, The reconstruction of the point cloud using the processed vertex comprises: determining the position of the offset centroid vertex according to the processed vertex; determine a face vertex for the Trisoup node, encode presence information of the face vertex to obtain a third code stream; construct a triangular patch according to the vertex in the geometry structure, the offset centroid vertex position and the face vertex; perform ray tracing sampling on the triangular patch to obtain a reconstructed point cloud.

24. A geometry reconstruction apparatus, comprising: a first decoding module configured to decode a first code stream to obtain a first flag, the first flag being used to indicate original point cloud distribution information in a geometry structure corresponding to a Trisoup node; a first processing module configured to process a vertex in the geometry structure according to the first flag; a second processing module configured to reconstruct a point cloud using the processed vertex.

25. The apparatus of claim 24, wherein, The apparatus further comprises: a first determining module configured to determine a context according to vertex distribution information in a geometry structure corresponding to a Trisoup node; The first decoding module is specifically configured to decode the first code stream according to the context to obtain a first flag.

26. The apparatus of claim 25, wherein, The context is used to indicate whether a ratio of a number of vertices in a first region of a target axis to a total number of vertices is greater than or equal to a first threshold value; the target axis is any one of three axes.

27. The apparatus of claim 24 or 25, wherein, The first flag comprises at least one of the following: Flag 1: used to indicate whether there is a vertex that needs to be corrected in the geometry structure; Flag 2: used to indicate whether a dimension value of the vertex in the target axis needs to be corrected, the target axis being any one of the three axes; Flag 3: used to indicate a correction direction in the case that the dimension value of the vertex in the target axis needs to be corrected, the correction direction comprising a positive direction or a negative direction of the target axis.

28. The apparatus of any one of claims 24 to 27, wherein, The first decoding module is specifically configured to: decode the first code stream to obtain flag 1; in the case that the flag 1 indicates that there is a vertex that needs to be corrected in the geometry structure, decode a flag 2 corresponding to a first axis; if the flag 2 corresponding to the first axis indicates that the dimension value of the vertex in the first axis needs to be corrected, decode a flag 3 corresponding to the first axis; decode a flag 2 corresponding to a second axis; if the flag 2 corresponding to the second axis indicates that the dimension value of the vertex in the second axis needs to be corrected, decode a flag 3 corresponding to the second axis; and / or, if the flag 2 corresponding to the first axis indicates that the dimension value of the vertex in the first axis does not need to be corrected, and the flag 2 corresponding to the second axis indicates that the dimension value of the vertex in the second axis does not need to be corrected, determine that a flag 2 corresponding to a third axis indicates that the dimension value of the vertex in the third axis needs to be corrected; decode a flag 3 corresponding to the third axis.

29. The apparatus of claim 24, wherein, The first processing module is specifically configured to: according to the first flag, mark original point cloud distribution information of a child geometry corresponding to a child node of the Trisoup node; determine a type of the vertex in the geometry structure according to the original point cloud distribution information of the child geometry; process the vertex according to the type of the vertex.

30. The apparatus of claim 29, wherein, The first processing module is specifically configured to perform at least one of the following: In the geometry structure, if the sub-geometry in a first plane of an edge where the vertex is located does not have the original point cloud, the vertex is determined as a first type vertex, the first plane being any plane of the edge where the vertex is located; In the geometry structure, if the sub-geometry in a first vertical plane of an edge where the vertex is located does not have the original point cloud, and the vertex is in the sub-geometry of the first vertical plane, the vertex is determined as a second type vertex, the first vertical plane being any vertical plane of the edge where the vertex is located; In the geometry structure, other vertices except the first type vertex and the second type vertex are determined as third type vertices.

31. The apparatus of claim 29 or 30, wherein, The first processing module is specifically configured to perform at least one of the following: deleting the first type vertex; correcting the second type vertex to a midpoint of the edge where the second type vertex is located.

32. The apparatus of claim 24, wherein, The apparatus further includes: a second decoding module configured to decode a second code stream to obtain a second flag, the second flag being used to indicate whether to enable or not to enable the geometry reconstruction technology.

33. The apparatus of claim 24 or 32, wherein, The apparatus further includes: a second determining module configured to determine that the vertices in the geometry structure corresponding to the Trisoup node satisfy a first condition. The first condition includes that the total number of the vertices is greater than or equal to a second threshold value, and the ratio of the number of the vertices in a second region in any axial direction to the total number of the vertices is greater than or equal to a third threshold value.

34. The apparatus of claim 24, wherein, The second processing module is specifically configured to determine the position of the offset centroid vertex according to the processed vertices; decode a third code stream to determine the face vertices of the Trisoup node; construct a triangular patch according to the vertices in the geometry structure, the position of the offset centroid vertex, and the face vertices; perform ray tracing sampling on the triangular patch to obtain a reconstructed point cloud.

35. A geometry reconstruction apparatus, comprising: a first encoding module configured to encode a first flag to obtain a first code stream, the first flag being used to indicate the original point cloud distribution information in a geometry structure corresponding to a Trisoup node; a third processing module configured to process the vertices in the geometry structure according to the first flag; a fourth processing module configured to reconstruct a point cloud using the processed vertices.

36. The apparatus of claim 35, wherein, The apparatus further includes a third determining module, which is specifically configured to: label the original point cloud distribution information of a sub-geometry corresponding to a sub-node of the Trisoup node according to the original point cloud distribution information in the geometry structure corresponding to the Trisoup node, the sub-geometry being obtained by dividing the geometry structure; determine the first flag according to the original point cloud distribution information of the sub-geometry and the vertex existence flag of the edge of the geometry structure.

37. The apparatus of claim 35 or 36, wherein, The first flag includes at least one of the following: Flag 1: used to indicate whether there is a vertex that needs to be corrected in the geometry structure; Flag 2: used to indicate whether the dimension value of the vertex in a target axial direction needs to be corrected, the target axial direction being any of the three axial directions; Flag 3: used to indicate the correction direction in the case that the dimension value of the vertex in the target axial direction needs to be corrected, the correction direction including the positive direction or the negative direction of the target axial direction.

38. The apparatus of any one of claims 35 to 37, wherein, The first encoding module is specifically configured to: encode the flag 1; if the flag 1 indicates that there is a vertex needing to be corrected in the geometry structure, encode a first axial corresponding flag 2; if the first axial corresponding flag 2 indicates that the dimension value of the vertex needing to be corrected is in the first axial, encode a first axial corresponding flag 3; encode a second axial corresponding flag 2; if the second axial corresponding flag 2 indicates that the dimension value of the vertex needing to be corrected is in the second axial, encode a second axial corresponding flag 3; and / or, if the first axial corresponding flag 2 indicates that the dimension value of the vertex needing to be corrected is not in the first axial, and the second axial corresponding flag 2 indicates that the dimension value of the vertex needing to be corrected is not in the second axial, determine that a third axial corresponding flag 2 indicates that the dimension value of the vertex needing to be corrected is in the third axial; encode a third axial corresponding flag 3.

39. The apparatus of any one of claims 35 to 38, wherein, The apparatus further includes: a fourth determining module configured to determine a context of the first flag; The first encoding module is specifically configured to: encode the first flag according to the context, to obtain a first code stream.

40. The apparatus of claim 39, wherein, The fourth determining module is specifically configured to: determine the context of the first flag according to vertex distribution information in a geometry structure corresponding to a Trisoup node; The context is used to indicate whether a ratio of a number of vertices in a first region of a target axial to a total number of vertices is greater than or equal to a first threshold value; the target axial is any one of three axials.

41. The apparatus of claim 35, wherein, The third processing module is specifically configured to: mark original point cloud distribution information of a child geometry corresponding to a child node of the Trisoup node according to the first flag; determine a type of a vertex in the geometry structure according to the original point cloud distribution information of the child geometry; process the vertex according to the type of the vertex.

42. The device of claim 41, wherein, The third processing module is specifically configured to perform at least one of the following: in the geometry structure, if a child geometry in a first plane to which an edge where the vertex is located belongs does not have original point cloud, determine that the vertex is a first type vertex, the first plane being any plane to which the edge where the vertex is located belongs; in the geometry structure, if a child geometry in a first vertical plane to which an edge where the vertex is located belongs does not have original point cloud, and the vertex is in the child geometry of the first vertical plane, determine that the vertex is a second type vertex, the first vertical plane being any vertical plane to which the edge where the vertex is located belongs; in the geometry structure, determine that a vertex other than the first type vertex and the second type vertex is a third type vertex.

43. The apparatus of claim 41 or 42, wherein, The third processing module is specifically configured to perform at least one of the following: delete the first type vertex; correct the second type vertex to a midpoint of an edge where the second type vertex is located.

44. The device of claim 35, wherein, The apparatus further includes: a second encoding module configured to encode a second flag as a second code stream, the second flag being used to indicate whether to enable or not to enable a geometry reconstruction technology.

45. The device of claim 35 or 44, wherein, The apparatus further includes: a fifth determining module configured to determine that a vertex in a geometry structure corresponding to a Trisoup node satisfies a first condition; The first condition comprises: the total number of vertices is greater than or equal to a second threshold value, and the ratio of the number of vertices in the second region in any axial direction to the total number of vertices is greater than or equal to a third threshold value.

46. The device of claim 35, wherein, The fourth processing module is specifically configured to: determine the offset centroid vertex position according to the processed vertices; determine a face vertex for the Trisoup node, encode the existence information of the face vertex to obtain a third code stream; construct a triangular facet according to the vertices in the geometric structure, the offset centroid vertex position, and the face vertex; perform ray tracing sampling on the triangular facet to obtain a reconstructed point cloud. 47.An electronic device comprising a processor and a memory, wherein the memory stores programs or instructions executable on the processor, and the programs or instructions are executed by the processor to implement the steps of the geometric reconstruction method according to any one of claims 1 to 11, or implement the steps of the geometric reconstruction method according to claims 12 to 23. 48.A readable storage medium, wherein the readable storage medium stores programs or instructions, and the programs or instructions are executed by a processor to implement the geometric reconstruction method according to any one of claims 1 to 11, or implement the steps of the geometric reconstruction method according to any one of claims 12 to 23. 49.A chip comprising a processor and a communication interface, wherein the communication interface and the processor are coupled, and the processor is configured to execute programs or instructions to implement the steps of the method according to any one of claims 1 to 11, or implement the steps of the method according to claims 12 to 23. 50.A computer program product comprising computer instructions, wherein the computer instructions are executed by a processor to implement the steps of the method according to any one of claims 1 to 11, or implement the steps of the method according to claims 12 to 23.

Citation Information

Patent Citations

  • Method, encoder and decoder for encoding and decoding 3d point clouds

    CN116868572A

  • Method, encoder and decoder for encoding and decoding 3d point clouds

    CN117157671A

  • Information processing apparatus and method

    CN117581545A

  • Method for decoding and encoding a 3D point cloud

    CN117795554A

  • Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method

    US20220239946A1

Cited By

  • Reverse BIM modeling method, system and equipment for existing building space rod system composite structure

    CN121302515A