Trisoup vertex optimization method, apparatus and device
By identifying and processing unsuitable vertices in Trisoup nodes, the problem of erroneous surface reconstruction caused by the Trisoup geometric coding algorithm is solved, thereby improving the quality of point cloud reconstruction.
Patent Information
- Application Number
- PCT/CN2025/088174
- 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
In the point cloud reconstruction process, the Trisoup geometric coding algorithm based on multi-branch trees leads to erroneous surface reconstruction, resulting in a performance loss in the quality of the reconstructed point cloud.
The axial distribution information and total number of vertices of the Trisoup nodes are determined by the decoding end and the encoding end, respectively. The first type of vertices are identified, deleted or corrected. The first type of vertices are those that are not suitable for point cloud reconstruction.
It reduces performance loss in reconstructed point cloud quality and improves the accuracy and quality of point cloud reconstruction.
Smart Images

Figure CN2025088174_23102025_PF_FP_ABST
Abstract
Description
Trisoup vertex optimization method, device and equipment
[0001] Cross-reference to Related Applications
[0002] This application claims priority to Chinese Patent Application No. 202410464501.9, 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 Trisoup vertex optimization method, device and equipment. BACKGROUND
[0004] In the 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 Triangle soup (Trisoup) geometry encoding algorithm gradually exhibits excellent compression performance.
[0005] In the Trisoup geometry encoding algorithm, the position of a vertex on an edge in each node is not only determined by the original point cloud in the current node, but also affected by the original point cloud in other nodes sharing the edge. Therefore, when reconstructing the point cloud in each node, not all vertices are applicable, for example, there may be no original point cloud around the vertex used for reconstruction, which leads to the reconstruction of some incorrect surfaces and causes performance loss in the quality of the reconstructed point cloud. SUMMARY
[0006] The embodiments of the present application provide a Trisoup vertex optimization method, device and equipment, which can solve the problem of performance loss in the quality of the reconstructed point cloud.
[0007] In a first aspect, a Trisoup vertex optimization method is provided, which is executed by a decoding end, and the method comprises:
[0008] The decoding end determines the axial distribution information of a vertex in a geometry structure corresponding to a Trisoup node and the total number of vertices contained in the geometry structure;
[0009] The decoding end determines a first type of vertex according to the axial distribution information and the total number of vertices;
[0010] The decoding end deletes or corrects the first type of vertex.
[0011] In a second aspect, a Trisoup vertex optimization method is provided, which is performed by an encoding end and includes the following steps.
[0012] The encoding end determines axial distribution information of vertices in a geometric structure corresponding to a Trisoup node and a total number of vertices contained in the geometric structure.
[0013] The encoding end determines a first type of vertex according to the axial distribution information and the total number of vertices.
[0014] The encoding end deletes or corrects the first type of vertex.
[0015] In a third aspect, a Trisoup vertex optimization apparatus is provided, which is applied to a decoding end and includes the following modules.
[0016] A first determining module is configured to determine axial distribution information of vertices in a geometric structure corresponding to a Trisoup node and a total number of vertices contained in the geometric structure.
[0017] A second determining module is configured to determine a first type of vertex according to the axial distribution information and the total number of vertices.
[0018] A first processing module is configured to delete or correct the first type of vertex.
[0019] In a fourth aspect, a Trisoup vertex optimization apparatus is provided, which is applied to an encoding end and includes the following modules.
[0020] A third determining module is configured to determine axial distribution information of vertices in a geometric structure corresponding to a Trisoup node and a total number of vertices contained in the geometric structure.
[0021] A fourth determining module is configured to determine a first type of vertex according to the axial distribution information and the total number of vertices.
[0022] A second processing module is configured to delete or correct the first type of vertex.
[0023] In a fifth aspect, an electronic device is provided, which includes a processor and a memory, the memory storing 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 determine axial distribution information of vertices in a geometry structure corresponding to a Trisoup node and a total number of vertices contained in the geometry structure; determine a first type of vertex according to the axial distribution information and the total number of vertices; and delete or correct the first type of vertex. Alternatively, the processor is configured to determine axial distribution information of vertices in a geometry structure corresponding to a Trisoup node and a total number of vertices contained in the geometry structure; determine a first type of vertex according to the axial distribution information and the total number of vertices; and delete or correct the first type of vertex.
[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 steps of the method according to the second aspect.
[0026] In an eighth aspect, a readable storage medium is provided, on which a program or instructions are stored, which, when executed by a processor, implement steps of the method according to the first aspect or steps of the method according to the second aspect.
[0027] In a ninth aspect, a coding system is provided, including an encoding end device and a decoding end device, the encoding end device being configured to implement steps of the method according to the second aspect, and the decoding end device being configured to implement steps of the method according to the first aspect.
[0028] In a tenth aspect, a chip is provided, 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 steps of the method according to the second aspect.
[0029] In an eleventh aspect, a computer program / program product is provided, which is stored in a storage medium, and is executed by at least one processor to implement steps of the method according to the first aspect or steps of the method according to the second aspect.
[0030] In a twelfth aspect, a computer program product is provided, which, when executed by a processor, implements steps of the method according to the first aspect or steps of the method according to the second aspect.
[0031] In the embodiment of the present application, the decoding end determines the first type vertex according to the axial distribution information of the vertex of the Trisoup node and the total number of the vertex, and deletes or corrects the first type vertex. By deleting or correcting the first type vertex, a large number of error point clouds can be removed, and the performance loss in the quality of the reconstructed point cloud can be reduced. BRIEF DESCRIPTION OF DRAWINGS
[0032] Fig. 1 is a schematic diagram of a coding system provided by an embodiment of the present application;
[0033] Fig. 2a is an encoding flowchart executed by an encoder based on an AVS-PCC encoding framework;
[0034] Fig. 2b is an encoding flowchart executed by an encoder based on an MPEG G-PCC encoding framework;
[0035] Fig. 3a is a decoding flowchart executed by a decoder based on an AVS-PCC decoding framework;
[0036] Fig. 3b is a decoding flowchart executed by a decoder based on an MPEG G-PCC decoding framework;
[0037] Fig. 4 is a flowchart of a Trisoup vertex optimization 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 geometry corresponding to a Trisoup node;
[0040] Fig. 7 is a flowchart of a Trisoup vertex optimization method according to an embodiment of the present application;
[0041] Fig. 8 is a structural diagram of a Trisoup vertex optimization apparatus according to an embodiment of the present application;
[0042] Fig. 9 is a structural diagram of a Trisoup vertex optimization apparatus according to an embodiment of the present application;
[0043] Fig. 10 is a structural diagram of an electronic device according to an embodiment of the present application;
[0044] Fig. 11 is a structural diagram of a terminal according to an embodiment of the present application. DETAILED DESCRIPTION
[0045] The technical solutions in the embodiments of the present application will be clearly described below with reference to the drawings in the embodiments of the present application. Obviously, the described embodiments are only some of the embodiments of the present application, but not all the embodiments of the present application. Based on the embodiments in the present application, all other embodiments obtained by those of ordinary skill in the art belong to the scope of protection of the present application.
[0046] The terms "first", "second", and the like in the present application are used to distinguish similar objects, and are not used to describe a particular 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 those illustrated or described herein, and the objects distinguished by "first", "second" are generally of a kind 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 scenarios, namely, scenario one: including A and not including B; scenario two: including B and not including A; scenario three: including A and B. The character " / " generally represents that the objects before and after are in an "or" relationship.
[0047] Before introducing the technical solutions provided by the embodiments of the present application, the meanings of some terms therein will be introduced first.
[0048] Point cloud: 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. Point clouds can be divided into different categories according to different classification standards. For example, according to the acquisition method, point clouds can be divided into dense point clouds and sparse point clouds; for another example, according to the time sequence type, point clouds can be divided into static point clouds and dynamic point clouds.
[0049] 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, and 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, and for another example, each point in the point cloud can have three attribute information of color information, material information, and laser reflection intensity information.
[0050] 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.
[0051] 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; 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.
[0052] FIG. 1 is a schematic diagram of a codec system 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).
[0053] As shown in FIG. 1, the coding system 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.
[0054] 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.
[0055] 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.
[0056] 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.
[0057] 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).
[0058] 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.
[0059] 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.
[0060] 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.
[0061] 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.
[0062] Communication medium 120 can include a transitory medium, such as a wireless broadcast or wired network transmission. For example, communication medium 120 can include radio frequency (RF) spectrum or one or more physical transmission lines (e.g., cable). Communication medium 120 can form a portion of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. Communication medium 120 can also be in a form of a storage medium, such as a non-transitory storage medium, such as a hard disk, flash drive, compact disc, digital point cloud disc, Blu-ray disc, volatile or non-volatile memory, or any other suitable digital storage media for storing encoded point cloud data.
[0063] 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) 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 the MPEG Media Transport (MMT) protocol, Dynamic Adaptive Streaming over HTTP (DASH) protocol, HTTP Live Streaming (HLS) protocol, or Real Time Streaming Protocol (RTSP), etc.
[0064] 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.
[0065] Output interface 104 and input interface 111 can represent wireless transmitters / receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components operating according to the IEEE 802.11 standard or the IEEE 802.15 standard (e.g., ZigBee™), the Bluetooth standard, etc., or other physical components. In examples where output interface 104 and input interface 111 comprise wireless components, output interface 104 and input interface 111 can be configured to transfer data, such as encoded point cloud data, according to WIFI, Ethernet, cellular networks (such as 4G, LTE (Long-Term Evolution), LTE-Advanced, 5G, 6G, etc.), etc.
[0066] The technology provided by 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 broadcasting, three-dimensional immersive communication, three-dimensional immersive interaction, etc.
[0067] Input interface 111 of destination device 110 receives the encoded bitstream from 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.) that are used to decode the encoded data units to obtain decoded point cloud data. Display device 114 displays the decoded point cloud data to a user. 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, destination device 110 can not have display device 114, e.g., if the decoded point cloud data is used to determine the location of a physical object, display device 114 can be replaced by a processor.
[0068] 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.
[0069] 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.
[0070] 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.
[0071] For the geometry information encoding process, the encoding flow performed by the encoder 200 is as follows:
[0072] 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.
[0073] 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:
[0074] 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.
[0075] 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.
[0076] 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.
[0077] 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.
[0078] 4、Geometry Reconstruction: decoding and reconstruction of the geometry information after geometry coding.
[0079] For the attribute information coding process, the encoder 200 performs the following encoding process:
[0080] 1、Color Transformation: Apply a transform 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.
[0081] 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.
[0082] In some examples, the encoder 200 can not perform color transformation or attribute recoloring.
[0083] 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.
[0084] Among them, prediction encoding refers to determining the neighbor points of the to-be-encoded point in the encoded points as prediction points according to 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 attribute residual information, and quantizing, transforming (optional), and entropy encoding the attribute residual information.
[0085] Transform encoding refers to grouping and transforming attribute information using transform methods such as discrete cosine transform (DCT) and Haar transform (Haar), quantizing 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 it, and entropy encoding the quantized transform coefficients and attribute residual.
[0086] Prediction and transform encoding refers to using prediction to obtain attribute residual information for transform, quantizing transform coefficients, and entropy encoding.
[0087] 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.
[0088] 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.
[0089] 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.
[0090] The hierarchical 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.
[0091] 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.
[0092] 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.
[0093] 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.
[0094] 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.
[0095] The decoding procedure performed by the decoder 300 is as follows:
[0096] 1. Entropy Decoding: Entropy decoding the geometry bitstream and the attribute bitstream to obtain geometry syntax elements and attribute syntax elements.
[0097] 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.
[0098] Octree-based geometry decoding, e.g., octree-based geometry decoding: reconstructing an octree based on the geometry syntax elements parsed from the geometry bitstream.
[0099] Prediction tree-based geometry decoding: reconstructing a prediction tree based on the geometry syntax elements parsed from the geometry bitstream.
[0100] Trisoup-based geometry decoding: reconstructing a triangle model based on the geometry syntax elements parsed from the geometry bitstream.
[0101] 3. Geometry Reconstruction: performing reconstruction to obtain geometry coordinate information of points in the point cloud.
[0102] 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.
[0103] 5. Dequantization: dequantizing the attribute syntax elements.
[0104] 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.
[0105] 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.
[0106] 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.
[0107] As shown in FIG. 4, the embodiment of the present application provides a Trisoup vertex optimization method, executed by a decoding end, comprising:
[0108] Step 401, the decoding end determines the axial distribution information of the vertices in the geometry structure corresponding to the Trisoup node and the total number of vertices contained in the geometry structure.
[0109] Step 402, the decoding end determines the first type of vertices according to the axial distribution information and the total number of vertices.
[0110] Step 403, the decoding end deletes or corrects the first type of vertices.
[0111] In this embodiment, the Trisoup node refers to a multi-branch tree node. The Trisoup conceptualizes the geometry of the point cloud in each node as a surface that intersects the edges of each geometry at most once. The points that intersect the edges of the geometry are called vertices, and these vertices are shared between adjacent nodes, ensuring the continuity of the reconstructed surface between nodes. The existence of vertices on the edges of the geometry corresponding to each node and the quantized position of the vertices on the edges can be represented as 1 bit and 2 bits, respectively. Inside the geometry corresponding to each node, the reconstructed surface is composed of non-planar polygons formed by these vertices, organized as a set of triangles, as shown in FIG. 5. The geometry structure corresponding to the Trisoup node is shown in FIG. 6, for example.
[0112] Optionally, the decoding end can determine the neighbor information of each edge of the geometry structure corresponding to the Trisoup node, which can be used as the context for subsequent entropy decoding. The neighbor information includes the point cloud occupancy information of adjacent edges.
[0113] The decoding end can use the neighbor information to decode the vertex existence flag and the quantized vertex position of each edge of the geometry structure. The quantized vertex position exists when the vertex existence flag indicates the existence of a vertex.
[0114] The decoding end can determine the axial distribution information of the vertices in the geometric structure corresponding to the Trisoup node, the axial direction including x, y, and z axial directions, and the decoding end can respectively count the distribution of the vertices in the x, y, and z axial directions, and count the total number of the vertices contained in the geometric structure. The decoding end determines the first type of vertices contained in the Trisoup node according to the distribution of the vertices in the x, y, and z axial directions and the total number of the vertices. The first type of vertices can be unreasonable vertices, that is, the vertices are not suitable for point cloud reconstruction (for example, there is no original point cloud or the number of original point clouds is small around the vertices, such as the number of original point clouds is less than a predetermined threshold), and in order to avoid the reconstruction of false surfaces, the first type of vertices needs to be deleted or corrected.
[0115] The original point cloud in the embodiments of the present application refers to the point cloud before the point cloud is reconstructed, and the original point cloud distribution information refers to the distribution of the point cloud in the geometric structure before the point cloud is reconstructed.
[0116] Optionally, the decoding end can determine the first type of vertices for the x, y, and z axial directions respectively, for example, determining the first type of vertices according to the distribution of the vertices in the x axial direction and the total number of the vertices (which can be denoted as vertex_total), determining the first type of vertices according to the distribution of the vertices in the y axial direction and the total number of the vertices, and determining the first type of vertices according to the distribution of the vertices in the z axial direction and the total number of the vertices.
[0117] In the embodiments of the present application, the decoding end determines the first type of vertices according to the axial distribution information of the vertices of the Trisoup node and the total number of the vertices, and deletes or corrects the first type of vertices. By deleting or correcting the first type of vertices, a large number of false point clouds can be removed, and the performance loss in the quality of the reconstructed point cloud can be reduced.
[0118] As an optional embodiment, the determination of the axial distribution information of the vertices in the geometric structure corresponding to the Trisoup node includes:
[0119] determining the distribution information of the vertices in the geometric structure corresponding to the Trisoup node in each of the three axial directions.
[0120] The distribution information is used to indicate that the vertices are distributed in the positive or negative half axis of each axial direction, and / or the number of vertices distributed in the positive or negative half axis of each axial direction.
[0121] In this embodiment, the decoding end determines the distribution of the vertex on the x, y and z axes respectively. The specific range of the positive or negative half axis can be determined according to the threshold value. For example, as shown in FIG. 6: for a certain axis, when the distance between the dimension value of the vertex on the axis and the dimension value of the starting point of the edge on the axis is less than or equal to a threshold value th1, it is considered that the vertex is distributed on the negative half axis of the axis; when the distance between the dimension value of the vertex on the axis and the dimension value of the ending point of the edge on the axis is less than or equal to a threshold value th2, it is considered that the vertex is distributed on the positive half axis of the axis.
[0122] When determining the axial distribution information of the vertex, the decoding end determines the distribution of the vertex on a certain axis and the number of all vertices corresponding to the distribution.
[0123] Optionally, the determining the axial distribution information of the vertex in the geometric structure corresponding to the Trisoup node comprises at least one of the following:
[0124] For a target axis among the three axes, in a case where the vertex coordinate satisfies a first condition, it is determined that the vertex is distributed on the negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition comprises that 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 on which the vertex is located on the target axis is less than or equal to a first threshold value.
[0125] For a target axis among the three axes, in a case where the vertex coordinate satisfies a second condition, it is determined that the vertex is distributed on the positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition comprises that 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 on which the vertex is located on the target axis is less than or equal to a second threshold value.
[0126] In this embodiment, the vertex satisfying the first condition is considered to be distributed on the negative half axis of a certain axis, and the vertex satisfying the second condition is considered to be distributed on the positive half axis of a certain axis. Taking the x axis as an example, when the x dimension value of the vertex coordinate is less than or equal to the threshold value th1 from the x dimension value of the starting point of the edge on which the vertex is located, it is considered that the vertex is distributed on the negative half of the x axis, and the total number of vertices satisfying the condition is the first number (for example, vertex_x[0]); when the x dimension value of the vertex coordinate is less than or equal to the threshold value th2 from the ending point of the edge, it is considered that the vertex is distributed on the positive half of the x axis, and the total number of vertices satisfying the condition is the second number (which can be vertex_x[1]). The starting point and the ending point of the edge in the geometric structure are determined according to the direction of the edge.
[0127] As an optional embodiment, the determining the first type vertex according to the axial distribution information and the total number of vertices comprises at least one of the following:
[0128] For a target axial direction in the three axial directions, if a ratio of the first number to the total number of vertices is greater than or equal to a third threshold value, it is determined that a vertex satisfying a third condition is a first type vertex; the third condition comprises that a dimension value of the target axial direction of the vertex coordinate is equal to a dimension value of the target axial direction of an end point of an edge where the vertex is located; the first number is a number of vertices located on a negative half axis of the target axial direction.
[0129] For a target axial direction in the three axial directions, if a ratio of the second number to the total number of vertices is greater than or equal to a fourth threshold value, it is determined that a vertex satisfying a fourth condition is a first type vertex; the fourth condition comprises that a dimension value of the target axial direction of the vertex coordinate is equal to a dimension value of the target axial direction of a start point of an edge where the vertex is located; the second number is a number of vertices located on a positive half axis of the target axial direction.
[0130] In this embodiment, the decoding end determines the first type vertex for each axial direction respectively. Optionally, the decoding end determines the first type vertex when the total number of vertices is greater than or equal to a threshold value. For a certain axial direction, if a ratio of a number of vertices located on a negative half axis of the axial direction (i.e., the first number) to the total number of vertices is greater than or equal to a third threshold value P1, it is determined that all vertices with a dimension value of the axial direction equal to a dimension value of the axial direction of an end point of an edge where the vertex is located are first type vertices. The first type vertex can be an unreasonable vertex, i.e., a vertex that needs to be deleted or corrected.
[0131] For a certain axial direction, if a ratio of a number of vertices located on a positive half axis of the axial direction (i.e., the second number) to the total number of vertices is greater than or equal to a fourth threshold value P4, it is determined that all vertices with a dimension value of the axial direction equal to a dimension value of the axial direction of a start point of an edge where the vertex is located are first type vertices. The first type vertex can be an unreasonable vertex, i.e., a vertex that needs to be deleted or corrected.
[0132] It should be noted that the "ratio" in the embodiments of the present application can be the absolute value of the quantity ratio, or a percentage, which is not limited herein.
[0133] As an optional embodiment, the method further comprises: if there is a first type vertex in at least two of the three axial directions, screening the first type vertex;
[0134] The deleting or correcting the first type vertex comprises: deleting or correcting the screened first type vertex.
[0135] In this embodiment, the determined first type vertex can be considered as an unreasonable vertex. If there is more than one axial direction determining that there is an unreasonable vertex, the unreasonable vertex can be further screened. When the unreasonable vertex is deleted or corrected, the remaining unreasonable vertex after screening is deleted or corrected.
[0136] Optionally, the screening of the first type vertex comprises at least one of the following:
[0137] Determining the intersection between the first type vertices of the at least two axial directions, and the first type vertex in the intersection being the screened first type vertex;
[0138] If there is no intersection between the first type vertices of the at least two axial directions, determining the first type vertex of the axial direction with the most first type vertices as the screened first type vertex.
[0139] In this embodiment, if the first type vertices corresponding to the at least two axial directions with first type vertices exist an intersection, the vertex in the intersection is determined as the final unreasonable vertex. If the first type vertices corresponding to the at least two axial directions with first type vertices do not exist an intersection, the axial directions are sorted according to the number of first type vertices contained by the axial directions, and the first type vertices corresponding to the axial direction containing more first type vertices are preferentially selected as the final unreasonable vertex.
[0140] Taking the first type vertex as an example: if the unreasonable vertices obtained by the three axial directions exist an intersection, the vertex in the intersection is determined as the final unreasonable vertex, and the final unreasonable vertex is deleted or corrected; if there is no intersection, the axial directions are prioritized according to the number of unreasonable vertices obtained by the axial directions, and the unreasonable vertices obtained by the axial direction with more unreasonable vertices are preferentially selected as the final unreasonable vertex, and the final unreasonable vertex is deleted or corrected, and at most all the unreasonable vertices obtained by the three axial directions can be processed.
[0141] As an optional embodiment, the deleting or correcting the first type vertex comprises:
[0142] deleting or modifying the first type of vertex according to the Euclidean distance between the first type of vertex and a second type of vertex, wherein the second type of vertex is a vertex other than the first type of vertex in the geometric structure.
[0143] In this embodiment, the first type of vertex can be an unreasonable vertex, and the second type of vertex can be a reasonable vertex. For an unreasonable vertex, different treatments can be further performed according to its unreasonable degree. The Euclidean distance between the first type of vertex and the second type of vertex can represent the unreasonable degree of the vertex.
[0144] Optionally, the deleting or modifying the first type of vertex comprises at least one of the following:
[0145] deleting the first type of vertex when the Euclidean distance between the first type of vertex and a second type of vertex satisfies a fifth condition;
[0146] modifying the first type of vertex to a target position when the Euclidean distance between the first type of vertex and a second type of vertex does not satisfy the fifth condition.
[0147] Optionally, the fifth condition comprises that the minimum value of the Euclidean distance between the first type of vertex and the second type of vertex is greater than a predetermined threshold. For example, the first type of vertex is an unreasonable vertex, and the second type of vertex is a reasonable vertex. For a certain unreasonable vertex, the Euclidean distance between it and each reasonable vertex is calculated, the minimum value of each Euclidean distance is determined, and if the minimum value is greater than the predetermined threshold, the unreasonable vertex is deleted; if the minimum value is less than or equal to the predetermined threshold, the position of the unreasonable vertex needs to be modified.
[0148] Optionally, the target position is the midpoint of the first type of vertex and a target second type of vertex, and the target second type of vertex is a second type of vertex whose Euclidean distance with the first type of vertex satisfies a sixth condition. Optionally, the sixth condition comprises that the Euclidean distance is less than a predetermined threshold, i.e., the target second type of vertex is a second type of vertex whose Euclidean distance with the first type of vertex is less than a predetermined threshold. Preferably, the target second type of vertex is a second type of vertex with the minimum Euclidean distance with the first type of vertex.
[0149] In this embodiment, for an unreasonable vertex, different treatments can be performed according to its unreasonable degree. When the minimum value of the Euclidean distance between the unreasonable vertex and the reasonable vertex is greater than a certain threshold, the unreasonable vertex is determined to be deleted; otherwise, the unreasonable vertex is modified to the midpoint of the nearest reasonable vertex.
[0150] As an optional embodiment, the method further comprises:
[0151] decoding the first code stream to obtain the offset value of the centroid vertex of the Trisoup node;
[0152] determining the initial position of the centroid vertex of the Trisoup node according to the second type vertex and the corrected first type vertex;
[0153] determining the offset centroid vertex position according to the initial position of the centroid vertex and the offset value.
[0154] In this embodiment, after the unreasonable vertex is deleted or corrected, the decoding end decodes the centroid quantization offset value in the code stream, the centroid quantization offset value is the quantized offset value of the centroid vertex; the initial position of the centroid vertex is calculated according to the processed vertex; the inverse quantization offset value is summed with the initial position of the centroid vertex to obtain the offset centroid vertex position.
[0155] Optionally, the decoding end decodes the code stream of whether the face vertex exists to obtain the information of whether the face vertex exists, and obtains the Trisoup face vertex corresponding to each Trisoup node. Wherein, the decoding end determines the face vertex for each node, and encodes and sends to the decoding end.
[0156] Optionally, the decoding end sorts the vertex coordinates and face vertex coordinates in each node, and then uses the edge vertex, the offset centroid and the face vertex to construct a triangular facet; the triangular facet is ray-traced and sampled to obtain a reconstructed point cloud.
[0157] As an optional embodiment, the method further comprises:
[0158] decoding the second code stream to obtain a first flag, the first flag being used to indicate whether to enable or not to enable the Trisoup vertex optimization technology.
[0159] In the embodiments of the present application, the encoding end encodes the flag of whether the Trisoup vertex optimization method of the present application is enabled, and obtains a second code stream; the decoding end decodes the second code stream to determine whether to enable the Trisoup vertex optimization method; in the case that the Trisoup vertex optimization method is enabled, the implementation process of the Trisoup vertex optimization method of the embodiments of the present application is executed. Optionally, the second code stream and the first code stream can be the same code stream or different code streams.
[0160] Optionally, the decoding end can decode the second code stream in the case that the Trisoup is enabled. The encoding end can encode the flag of whether the Trisoup is enabled; the decoding end can determine whether the Trisoup is enabled by decoding the flag.
[0161] In the embodiments of the present application, the decoding process comprises the following three steps:
[0162] 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;
[0163] 2) Constructing a Trisoup triangle on the Trisoup node;
[0164] 3) Determining the decoding point through Trisoup triangle voxelization.
[0165] The method first needs to transmit the flag of whether the Trisoup vertex optimization of the present application is enabled under the condition that the Trisoup is enabled (Trisoup_enabled_flag=true), which belongs to the gbt parameter set. The vertex corresponding to each Trisoup edge is obtained by the decoding of step 1).
[0166] In the embodiments of the present application, the decoding end determines the first type vertex according to the axial distribution information of the vertex of the Trisoup node and the total number of vertices, and deletes or corrects the first type vertex. By deleting or correcting the first type vertex, a large number of error point clouds can be removed, and the performance loss in the quality of the reconstructed point cloud can be reduced.
[0167] The present application improves the method of sharing the vertex on the shared edge of the adjacent nodes in order to ensure the continuity of the reconstructed surface between blocks and reduce the code stream. When the Trisoup is enabled, it is allowed to select whether to enable the Trisoup vertex optimization technology of the present application. When the technology is enabled, the distribution rule of the vertex in the node is used to infer the unreasonable vertex in the node, and then the unreasonable vertex is corrected or deleted. Finally, the processed vertex is used for subsequent point cloud reconstruction according to the existing technology, which improves the distortion of the reconstructed point cloud in quality; since some error reconstructed point clouds are deleted, the code stream of attribute coding is reduced.
[0168] As shown in FIG. 7, the embodiments of the present application also provide a Trisoup vertex optimization method, which is executed by the encoding end, and the method comprises:
[0169] Step 701, the encoding end determines the axial distribution information of the vertex in the geometric structure corresponding to the Trisoup node and the total number of vertices contained in the geometric structure;
[0170] Step 702, the encoding end determines the first type vertex according to the axial distribution information and the total number of vertices;
[0171] Step 703, the encoding end deletes or corrects the first type vertex.
[0172] In this embodiment, the encoding end can determine the axial distribution information of the vertex in the geometry structure corresponding to the Trisoup node, the axis direction includes x, y, z three axis directions, the encoding end can respectively count the distribution of the vertex in x, y, z three axis directions, and count the total number of the vertex contained in the geometry structure. The encoding end determines the first type vertex contained in the Trisoup node according to the distribution of the vertex in x, y, z three axis directions and the total number of the vertex, the first type vertex can be an unreasonable vertex, which needs to be deleted or corrected.
[0173] Optionally, for each Trisoup node, the encoding end can determine the vertex existence flag and the 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.
[0174] 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 the code stream according to the determined encoding order using the dynamic (Dynamic) instant update optional binarization technology (OBUF).
[0175] Optionally, when determining the first type vertex, the encoding end can determine for x, y, z three axis directions respectively, for example: determining the first type vertex according to the distribution of the vertex in x axis direction and the total number of the vertex (which can be recorded as vertex_total); determining the first type vertex according to the distribution of the vertex in y axis direction and the total number of the vertex; determining the first type vertex according to the distribution of the vertex in z axis direction and the total number of the vertex.
[0176] In the embodiment of the application, the encoding end determines the first type vertex according to the axial distribution information of the vertex of the Trisoup node and the total number of the vertex, and deletes or corrects the first type vertex. By deleting or correcting the first type vertex, a large number of incorrect point clouds can be removed, and the performance loss in the quality of the reconstructed point cloud can be reduced.
[0177] As an optional embodiment, the determination of the axial distribution information of the vertex in the geometry structure corresponding to the Trisoup node includes:
[0178] determine distribution information of a vertex in the geometric structure corresponding to the Trisoup node in each of the three axial directions;
[0179] The distribution information is used to indicate that the vertex is distributed on the positive or negative half axis of each axial direction, and / or the number of vertices distributed on the positive or negative half axis of each axial direction.
[0180] In this embodiment, the encoding end determines the distribution of the vertex in the x, y, and z axial directions respectively. The specific range of the positive or negative half axis of the axial direction can be determined according to a threshold value. For example, for a certain axial direction, if the distance between the dimension value of the vertex on the axial direction and the dimension value of the starting point of the edge on the axial direction is less than or equal to a threshold value th1, it is considered that the vertex is distributed on the negative half axis of the axial direction; if the distance between the dimension value of the vertex on the axial direction and the dimension value of the ending point of the edge on the axial direction is less than or equal to a threshold value th2, it is considered that the vertex is distributed on the positive half axis of the axial direction.
[0181] When determining the axial distribution information of the vertex, the encoding end determines the distribution of the vertex in a certain axial direction and the number of all vertices corresponding to the distribution.
[0182] Optionally, the determining of the axial distribution information of the vertex in the geometric structure corresponding to the Trisoup node comprises at least one of the following:
[0183] For a target axial direction in the three axial directions, in a case where the vertex coordinate satisfies a first condition, it is determined that the vertex is distributed on the negative half axis of the target axial direction, and a first number of vertices located on the negative half axis of the target axial direction is determined; the first condition comprises that the distance between the dimension value of the target axial direction of the vertex coordinate and the dimension value of the starting point of the edge on which the vertex is located on the target axial direction is less than or equal to a first threshold value.
[0184] For a target axial direction in the three axial directions, in a case where the vertex coordinate satisfies a second condition, it is determined that the vertex is distributed on the positive half axis of the target axial direction, and a second number of vertices located on the positive half axis of the target axial direction is determined; the second condition comprises that the distance between the dimension value of the target axial direction of the vertex coordinate and the dimension value of the ending point of the edge on which the vertex is located on the target axial direction is less than or equal to a second threshold value.
[0185] In this embodiment, the vertex satisfying the first condition is considered to be distributed on a negative half-axis of a certain axial direction, and the vertex satisfying the second condition is considered to be distributed on a positive half-axis of a certain axial direction. Taking the x axial direction as an example, when the x dimension value of the vertex coordinate is less than or equal to the threshold value th1 from the x dimension value of the start point of the edge where the vertex is located, the vertex is considered to be distributed on the negative half of the x axial direction, and the total number of vertices satisfying this condition is the first number (for example, vertex_x[0]). When the x dimension value of the vertex coordinate is less than or equal to the threshold value th2 from the end point of the edge where the vertex is located, the vertex is considered to be distributed on the positive half of the x axial direction, and the total number of vertices satisfying this condition is the second number (which can be denoted as vertex_x[1]). The start point and the end point of the edge in the geometric structure are determined according to the direction of the edge.
[0186] As an optional embodiment, the determining the first type vertex according to the axial distribution information and the total number of vertices includes at least one of the following:
[0187] For a target axial direction of the three axial directions, in a case where a ratio of the first number to the total number of vertices is greater than or equal to a third threshold value, the vertex satisfying a third condition is determined to be the first type vertex. The third condition includes that the dimension value of the target axial direction of the vertex coordinate is equal to the dimension value of the target axial direction of the end point of the edge where the vertex is located. The first number is the number of vertices located on the negative half-axis of the target axial direction.
[0188] For a target axial direction of the three axial directions, in a case where a ratio of the second number to the total number of vertices is greater than or equal to a fourth threshold value, the vertex satisfying a fourth condition is determined to be the first type vertex. The fourth condition includes that the dimension value of the target axial direction of the vertex coordinate is equal to the dimension value of the target axial direction of the start point of the edge where the vertex is located. The second number is the number of vertices located on the positive half-axis of the target axial direction.
[0189] In this embodiment, the encoding end determines the first type vertex for each axial direction respectively. Optionally, the encoding end determines the first type vertex when the total number of vertices is greater than or equal to a threshold value. For a certain axial direction, if the ratio of the number of vertices located on the negative half-axis of the axial direction (i.e., the first number) to the total number of vertices is greater than or equal to a third threshold value P1, then all the vertices whose dimension value of the axial direction is equal to the dimension value of the axial direction of the end point of the edge where the vertex is located are determined to be the first type vertex. The first type vertex can be an unreasonable vertex, i.e., a vertex that needs to be deleted or corrected. For example, taking the x axial direction as an example, if the number of vertices vertex_x[0] located on the negative half of the x axial direction accounts for more than or equal to P1 in the total number of vertices vertex_total in the node, then all the vertices whose x dimension value is equal to the x dimension value of the end point of the edge where the vertex is located are determined to be unreasonable vertices (i.e., the first type vertex).
[0190] For an axial direction, if the ratio of the number of vertices located on the positive half of the axial direction (i.e., the second number) to the total number of vertices is greater than or equal to a fourth threshold P4, it is determined that all vertices with the dimension value of the axial direction equal to the dimension value of the axial direction of the starting point of the edge on which the vertex is located are first type vertices. The first type vertices can be unreasonable vertices, i.e., vertices that need to be deleted or corrected. For example, taking the x-axial direction as an example, if the number of vertices located on the positive half of the x-axial direction vertex_x[1] accounts for more than or equal to P4 in the total number of vertices vertex_total in the node, it is determined that all vertices with the x-dimension value equal to the x-dimension value of the starting point of the edge on which the vertex is located are unreasonable vertices (i.e., the first type vertices).
[0191] It should be noted that the "ratio" in the embodiments of the present application can be the absolute value ratio or a percentage, which is not limited herein.
[0192] As an optional embodiment, if there are first type vertices in at least two of the three axial directions, the first type vertices are screened.
[0193] The deleting or correcting the first type vertices includes deleting or correcting the screened first type vertices.
[0194] In this embodiment, the determined first type vertices can be considered as unreasonable vertices. If there are more than one axial direction that determines the existence of unreasonable vertices, the unreasonable vertices can be further screened. When the unreasonable vertices are deleted or corrected, the remaining unreasonable vertices after screening are deleted or corrected.
[0195] Optionally, the screening of the first type vertices includes at least one of the following:
[0196] Determining the intersection between the first type vertices of the at least two axial directions, and the first type vertices in the intersection are the screened first type vertices;
[0197] If there is no intersection between the first type vertices of the at least two axial directions, it is determined that the first type vertices of the axial direction with the largest number of first type vertices are the screened first type vertices.
[0198] In this embodiment, if the first type vertices of the at least two axial directions corresponding to the first type vertices exist an intersection, it is determined that the vertices in the intersection are the final unreasonable vertices. If the first type vertices of the at least two axial directions corresponding to the first type vertices do not exist an intersection, the axial directions are sorted according to the number of first type vertices contained by the axial directions, and the first type vertices corresponding to the axial direction containing more first type vertices are preferentially selected as the final unreasonable vertices.
[0199] For example, if the first type of vertex is an unreasonable vertex, if the unreasonable vertices obtained from three axes have an intersection, the vertex in the intersection is determined as a final unreasonable vertex, and the final unreasonable vertex is deleted or modified; if there is no intersection, the axes are prioritized according to the number of unreasonable vertices obtained from the axes, and the unreasonable vertex obtained from the axis with a larger number of unreasonable vertices is selected as a final unreasonable vertex, and the final unreasonable vertex is deleted or modified. At most, all unreasonable vertices obtained from three axes can be processed.
[0200] Optionally, the deleting or modifying the first type of vertex comprises:
[0201] The first type of vertex is deleted or modified according to the Euclidean distance between the first type of vertex and a second type of vertex; the second type of vertex is a vertex other than the first type of vertex in the geometric structure.
[0202] In this embodiment, the first type of vertex can be an unreasonable vertex, and the second type of vertex can be a reasonable vertex. For an unreasonable vertex, different processing can be performed according to the unreasonable degree of the vertex. The Euclidean distance between the first type of vertex and the second type of vertex can represent the unreasonable degree of the vertex.
[0203] Optionally, the deleting or modifying the first type of vertex comprises at least one of the following:
[0204] In a case where the Euclidean distance between the first type of vertex and the second type of vertex satisfies a fifth condition, the first type of vertex is deleted.
[0205] In a case where the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is modified to a target position.
[0206] Optionally, the fifth condition comprises that a minimum value of the Euclidean distance between the first type of vertex and the second type of vertex is greater than a predetermined threshold. For example, the first type of vertex is an unreasonable vertex, and the second type of vertex is a reasonable vertex. For a certain unreasonable vertex, the Euclidean distance between the unreasonable vertex and each reasonable vertex is calculated, a minimum value of each Euclidean distance is determined, and if the minimum value is greater than a predetermined threshold, the unreasonable vertex is deleted; if the minimum value is less than or equal to the predetermined threshold, the position of the unreasonable vertex needs to be modified.
[0207] Optionally, the target position is a midpoint of the first type vertex and a target second type vertex, and the target second type vertex is a second type vertex having a Euclidean distance from the first type vertex satisfying a sixth condition. Optionally, the sixth condition includes that the Euclidean distance is less than a predetermined threshold, i.e., the target second type vertex is a second type vertex having a minimum Euclidean distance from the first type vertex.
[0208] In this embodiment, for an unreasonable vertex, different treatments can be performed according to its unreasonable degree. When the minimum value of the Euclidean distance between the unreasonable vertex and the reasonable vertex is greater than a certain threshold, the unreasonable vertex is determined to be deleted; otherwise, the unreasonable vertex is corrected to the midpoint of the nearest reasonable vertex.
[0209] As an optional embodiment, the method further includes:
[0210] determining an initial position of a centroid vertex of the Trisoup node according to the second type vertex and the corrected first type vertex;
[0211] determining an offset value of the centroid vertex according to the initial position of the centroid vertex and the original point cloud;
[0212] encoding the offset value into the first code stream, and determining an offset centroid vertex position according to the initial position of the centroid vertex and the offset value.
[0213] In this embodiment, after the unreasonable vertex is deleted or corrected, the encoding end calculates the initial position of the centroid vertex according to the processed vertex; and calculates the offset value of the centroid vertex according to the original point cloud around the initial position of the centroid vertex. Then, the offset value is quantized and encoded and written into the code stream. The offset value after reverse quantization is summed with the initial position of the centroid vertex to obtain the offset centroid vertex position.
[0214] Optionally, the encoding end selectively determines a face vertex for each node. 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 vertices on the edge, the offset centroid vertex and the face vertex to construct a triangular face, and performs ray tracing sampling on the triangular face to obtain a reconstructed point cloud.
[0215] As an optional embodiment, the method further includes: encoding a first flag into the second code stream, and the first flag is used to indicate whether to enable or not to enable the Trisoup vertex optimization technology.
[0216] In the embodiments of the present application, an encoding end encodes a flag indicating whether the Trisoup vertex optimization method of the present application is enabled, to obtain a second code stream; a decoding end decodes the second code stream to determine whether the Trisoup vertex optimization method is enabled; and in the case that the Trisoup vertex optimization method is enabled, an implementation process of the Trisoup vertex optimization 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.
[0217] Optionally, the decoding end can decode the second code stream in the case that the Trisoup is enabled. The encoding end can encode a flag indicating whether the Trisoup is enabled; and the decoding end can determine whether the Trisoup is enabled by decoding the flag.
[0218] In the embodiments of the present application, the encoding end determines the first type of vertex according to the axial distribution information of the vertices of the Trisoup node and the total number of the vertices, and deletes or corrects the first type of vertex. By deleting or correcting the first type of vertex, a large number of incorrect point clouds can be removed, and the performance loss in the quality of the reconstructed point cloud can be reduced.
[0219] The Trisoup vertex optimization method provided by the embodiments of the present application can be executed by a Trisoup vertex optimization device. In the embodiments of the present application, the Trisoup vertex optimization method is executed by the Trisoup vertex optimization device as an example to illustrate the Trisoup vertex optimization device provided by the embodiments of the present application.
[0220] As shown in FIG. 8, the embodiments of the present application provide a Trisoup vertex optimization device 800 applied to a decoding end, and the device comprises:
[0221] A first determining module 810 is configured to determine the axial distribution information of the vertices in the geometric structure corresponding to the Trisoup node and the total number of the vertices contained in the geometric structure;
[0222] A second determining module 820 is configured to determine the first type of vertex according to the axial distribution information and the total number of the vertices.
[0223] A first processing module 830 is configured to delete or correct the first type of vertex.
[0224] Optionally, the first determining module is specifically configured to:
[0225] determine the distribution information of the vertices in the geometric structure corresponding to the Trisoup node in each of the three axial directions;
[0226] The distribution information is used for indicating that the vertex is distributed on a positive half-axis or a negative half-axis of each axial direction, and / or a number of vertices distributed on the positive half-axis or the negative half-axis of each axial direction.
[0227] Optionally, the first determining module is specifically used for performing at least one of the following:
[0228] For a target axial direction of the three axial directions, in a case where the vertex coordinate satisfies a first condition, it is determined that the vertex is distributed on a negative half-axis of the target axial direction, and a first number of vertices located on the negative half-axis of the target axial direction is determined; the first condition includes that a distance between a dimension value of the target axial direction of the vertex coordinate and a dimension value of the target axial direction of a start point of an edge where the vertex is located is less than or equal to a first threshold value.
[0229] For a target axial direction of the three axial directions, in a case where the vertex coordinate satisfies a second condition, it is determined that the vertex is distributed on a positive half-axis of the target axial direction, and a second number of vertices located on the positive half-axis of the target axial direction is determined; the second condition includes that a distance between a dimension value of the target axial direction of the vertex coordinate and a dimension value of the target axial direction of an end point of the edge where the vertex is located is less than or equal to a second threshold value.
[0230] Optionally, the second determining module is specifically used for performing at least one of the following:
[0231] For a target axial direction of the three axial directions, in a case where a ratio of the first number to a total number of the vertices is greater than or equal to a third threshold value, it is determined that a vertex satisfying a third condition is a first type vertex; the third condition includes that the dimension value of the target axial direction of the vertex coordinate is equal to the dimension value of the target axial direction of the end point of the edge where the vertex is located; the first number is a number of vertices located on the negative half-axis of the target axial direction.
[0232] For a target axial direction of the three axial directions, in a case where a ratio of the second number to the total number of the vertices is greater than or equal to a fourth threshold value, it is determined that a vertex satisfying a fourth condition is a first type vertex; the fourth condition includes that the dimension value of the target axial direction of the vertex coordinate is equal to the dimension value of the target axial direction of the start point of the edge where the vertex is located; the second number is a number of vertices located on the positive half-axis of the target axial direction.
[0233] Optionally, the apparatus further includes:
[0234] The second processing module is configured to, if there is a first type vertex in at least two axial directions of the three axial directions, screen the first type vertex.
[0235] The first processing module is specifically configured to delete or correct the screened first type vertex.
[0236] Optionally, the second processing module is specifically configured to perform at least one of the following:
[0237] determine intersections between the first type of vertices of the at least two axial directions, and the first type of vertices in the intersections are the screened first type of vertices;
[0238] if there is no intersection between the first type of vertices of the at least two axial directions, determine that the first type of vertices of the axial direction with the largest number of first type of vertices are the screened first type of vertices.
[0239] Optionally, the first processing module is specifically configured to:
[0240] delete or correct the first type of vertices according to the Euclidean distance between the first type of vertices and the second type of vertices;
[0241] wherein the second type of vertices are other vertices in the geometric structure except the first type of vertices.
[0242] Optionally, the first processing module is specifically configured to perform at least one of the following:
[0243] delete the first type of vertices in the case that the Euclidean distance between the first type of vertices and the second type of vertices satisfies a fifth condition;
[0244] correct the first type of vertices to a target position in the case that the Euclidean distance between the first type of vertices and the second type of vertices does not satisfy the fifth condition.
[0245] Optionally, the target position is a midpoint of the first type of vertices and a target second type of vertices, and the target second type of vertices is a second type of vertices whose Euclidean distance with the first type of vertices satisfies a sixth condition.
[0246] Optionally, the apparatus further comprises:
[0247] a first decoding module configured to decode a first code stream to obtain an offset value of a centroid vertex of the Trisoup node;
[0248] a third determining module configured to determine an initial position of the centroid vertex of the Trisoup node according to the second type of vertices and the corrected first type of vertices;
[0249] a fourth determining module configured to determine an offset centroid vertex position according to the initial position of the centroid vertex and the offset value.
[0250] Optionally, the apparatus further comprises:
[0251] The second decoding module is configured to decode the second code stream to obtain a first flag, where the first flag is used to indicate whether a Trisoup vertex optimization technique is enabled or not.
[0252] According to the embodiment of the present application, the decoding end determines the first type vertex according to the axial distribution information of the vertex of the Trisoup node and the total number of the vertex, and deletes or corrects the first type vertex. By deleting or correcting the first type vertex, a large number of incorrect point clouds can be removed, and the performance loss in the quality of the reconstructed point cloud can be reduced.
[0253] The Trisoup vertex optimization device provided by the embodiment of the present application can implement each process of the method embodiments of FIGS. 4 to 6 and achieve the same technical effects. To avoid repetition, details are not described herein.
[0254] As shown in FIG. 9, the embodiment of the present application provides a Trisoup vertex optimization device 900 applied to the encoding end, and the device comprises:
[0255] The fifth determining module 910 is configured to determine the axial distribution information of the vertex in the geometric structure corresponding to the Trisoup node and the total number of the vertex contained in the geometric structure;
[0256] The sixth determining module 920 is configured to determine the first type vertex according to the axial distribution information and the total number of the vertex.
[0257] The third processing module 930 is configured to delete or correct the first type vertex.
[0258] Optionally, the fifth determining module is specifically configured to:
[0259] determine the distribution information of the vertex in the geometric structure corresponding to the Trisoup node in each of the three axial directions;
[0260] The distribution information is used to indicate that the vertex is distributed in the positive or negative half axis of each axial direction, and / or the number of the vertex distributed in the positive or negative half axis of each axial direction.
[0261] Optionally, the fifth determining module is specifically configured to perform at least one of the following:
[0262] For a target axial direction in the three axial directions, in a case where the vertex coordinate satisfies a first condition, it is determined that the vertex is distributed in the negative half axis of the target axial direction, and a first number of the vertex located in the negative half axis of the target axial direction is determined; the first condition comprises that the distance between the dimension value of the target axial direction of the vertex coordinate and the dimension value of the target axial direction of the starting point of the edge where the vertex is located is less than or equal to a first threshold value.
[0263] For a target axis among the three axes, in a case where the vertex coordinate satisfies a second condition, it is determined that the vertex is distributed on a positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition comprises that a distance between a dimension value of the target axis of the vertex coordinate and a dimension value of the target axis of an end point of an edge where the vertex is located is less than or equal to a second threshold value.
[0264] Optionally, the sixth determining module is specifically configured to perform at least one of the following:
[0265] For a target axis among the three axes, in a case where a ratio of the first number to the total number of vertices is greater than or equal to a third threshold value, it is determined that the vertex satisfying a third condition is a first type vertex; the third condition comprises that a dimension value of the target axis of the vertex coordinate is equal to a dimension value of the target axis of an end point of an edge where the vertex is located; the first number is a number of vertices located on a negative half axis of the target axis.
[0266] For a target axis among the three axes, in a case where a ratio of the second number to the total number of vertices is greater than or equal to a fourth threshold value, it is determined that the vertex satisfying a fourth condition is a first type vertex; the fourth condition comprises that a dimension value of the target axis of the vertex coordinate is equal to a dimension value of the target axis of a start point of an edge where the vertex is located; the second number is a number of vertices located on a positive half axis of the target axis.
[0267] Optionally, the device further comprises:
[0268] The fourth processing module is configured to, if there is a first type vertex in at least two axes among the three axes, screen the first type vertex.
[0269] The third processing module is specifically configured to delete or correct the screened first type vertex.
[0270] Optionally, the fourth processing module is specifically configured to perform at least one of the following:
[0271] Determine an intersection between the first type vertices of the at least two axes, and the first type vertex in the intersection is the screened first type vertex.
[0272] If there is no intersection between the first type vertices of the at least two axes, it is determined that the first type vertex of an axis with the largest number of first type vertices is the screened first type vertex.
[0273] Optionally, the third processing module is specifically configured to:
[0274] Delete or correct the first type vertex according to a Euclidean distance between the first type vertex and a second type vertex.
[0275] wherein the second type of vertex is a vertex in the geometry other than the first type of vertex.
[0276] Optionally, the third processing module is specifically configured to perform at least one of the following:
[0277] in a case where the Euclidean distance between the first type of vertex and the second type of vertex satisfies a fifth condition, deleting the first type of vertex;
[0278] in a case where the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, correcting the first type of vertex to a target position.
[0279] Optionally, the target position is a midpoint of the first type of vertex and a target second type of vertex, and the target second type of vertex is a second type of vertex whose Euclidean distance from the first type of vertex satisfies a sixth condition.
[0280] Optionally, the apparatus further comprises:
[0281] a seventh determining module configured to determine an initial position of a centroid vertex of the Trisoup node according to the second type of vertex and the corrected first type of vertex;
[0282] an eighth determining module configured to determine an offset value of the centroid vertex according to the initial position of the centroid vertex and the original point cloud;
[0283] a first encoding module configured to encode the offset value into a first code stream, and determine an offset centroid vertex position according to the initial position of the centroid vertex and the offset value.
[0284] Optionally, the apparatus further comprises:
[0285] a second encoding module configured to encode a first flag into a second code stream, the first flag being used to indicate whether to enable or not to enable a Trisoup vertex optimization technology.
[0286] Embodiments of the present application, an encoding end determines a first type of vertex according to the axial distribution information of the vertices of the Trisoup node and the total number of vertices, deletes or corrects the first type of vertex. By deleting or correcting the first type of vertex, a large number of incorrect point clouds can be removed, and the performance loss in the quality of the reconstructed point cloud can be reduced.
[0287] The Trisoup vertex optimization apparatus provided by the embodiments of the present application can implement each process implemented by the method embodiment of FIG. 7 and achieve the same technical effects. To avoid repetition, details are not described here.
[0288] As shown in FIG. 10, the embodiment of the present application further provides an electronic device 1000, including a processor 1001 and a memory 1002, the memory 1002 stores programs or instructions which can be run on the processor 1001, for example, when the electronic device 1000 is an encoding terminal device, the programs or instructions are executed by the processor 1001 to implement each step of the Trisoup vertex optimization method embodiment described above, and the same technical effects can be achieved. When the electronic device 1000 is a decoding terminal device, the programs or instructions are executed by the processor 1001 to implement each step of the Trisoup vertex optimization method embodiment described above, and the same technical effects can be achieved. To avoid repetition, it will not be described here. Optionally, the memory 1002 can be the memory 102 or the memory 113 in the embodiment shown in FIG. 1, and the processor 1001 can realize the functions of the encoder 200 or the decoder 300 in the embodiments shown in FIGS. 1-3.
[0289] The embodiment of the present application further provides an electronic device, including a memory configured to store video data, and a processing circuit configured to implement each step of the Trisoup vertex optimization method embodiment described above. Optionally, the memory can be the memory 102 or the memory 113 in the embodiment shown in FIG. 1, and the processing circuit can realize the functions of the encoder 200 or the decoder 300 in the embodiments shown in FIGS. 1-3.
[0290] The embodiment of the present application further provides an electronic device, including a processor and a communication interface, the communication interface and the processor are coupled, and the processor is used to run programs or instructions to implement the steps in the method embodiment shown in FIG. 4 or FIG. 7. The device embodiment corresponds to the method embodiment described above, each implementation process and implementation manner of the method embodiment described above can be applied to the terminal embodiment, and the same technical effects can be achieved.
[0291] The electronic device described above can be a terminal, or other devices other than the terminal, such as a server, a network attached storage (NAS), etc.
[0292] The terminal can be a mobile phone, a tablet personal computer, a laptop computer, a notebook computer, a personal digital assistant (PDA), a palm computer, a netbook, an ultra-mobile personal computer (UMPC), a mobile Internet device (MID), an augmented reality (AR) device, a virtual reality (VR) device, a mixed reality (MR) device, a robot, a wearable device, a flight vehicle, a vehicle user equipment (VUE), a shipboard device, a 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), a game console, a personal computer (PC), a teller machine, or a self-service machine, and the like. 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 anklet, a smart necklace, and the like), a smart wristband, smart clothing, 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 embodiments of the present application.
[0293] The server can be a stand-alone physical server, a server cluster or a distributed system composed of multiple physical servers, or a cloud server. The cloud server can provide cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communications, middleware services, domain name services, security services, content delivery networks (CDNs), or cloud computing services based on big data and artificial intelligence platforms.
[0294] For example, the electronic device can include, but is not limited to, a source device 100 or a destination device 110 as shown in FIG. 1.
[0295] For example, the electronic device can include, but is not limited to, a source device 100 or a destination device 110 as shown in FIG. 1.
[0296] The terminal 1100 includes, but is not limited to, at least part of components such as a radio frequency unit 1101, a network module 1102, an audio output unit 1103, an input unit 1104, a sensor 1105, a display unit 1106, a user input unit 1107, an interface unit 1108, a memory 1109, and a processor 1110.
[0297] Those skilled in the art can understand that the terminal 1100 can further 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 1110 through a power management system, so that the power management system can realize functions such as management of charging, discharging, and power consumption management. The terminal structure shown in FIG. 11 does not constitute a limitation on the terminal, and the terminal can include more or fewer components than those shown, or combine certain components, or different component arrangements, which will not be described here.
[0298] It should be understood that in the embodiments of the present application, the input unit 1104 can include a graphics processor (GPU) 11041 and a microphone 11042. The graphics processor 11041 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 1106 can include a display panel 11061, which can be configured in the form of a liquid crystal display, an organic light-emitting diode, etc. The user input unit 1107 includes at least one of a touch panel 11071 and other input devices 11072. The touch panel 11071 is also called a touch screen. The touch panel 11071 can include two parts of a touch detection device and a touch controller. The other input devices 11072 can include, but are not limited to, a physical keyboard, function keys (such as volume control keys, on-off keys, etc.), trackballs, mice, joysticks, etc., which will not be described here.
[0299] In the embodiments of the present application, the radio frequency unit 1101 can transmit the downlink data received from the network side device to the processor 1110 for processing. In addition, the radio frequency unit 1101 can send uplink data to the network side device. Generally, the radio frequency unit 901 includes, but is not limited to, an antenna, an amplifier, a transceiver, a coupler, a low noise amplifier, a duplexer, etc.
[0300] The memory 1109 can be used to store software programs or instructions and various data. The memory 1109 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 1109 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 1109 in the embodiments of the present application includes but is not limited to these and any other suitable types of memory.
[0301] The processor 1110 can include one or more processing units; optionally, the processor 1110 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 1110.
[0302] In the case where the terminal is a decoding end device:
[0303] The processor 1110 is configured to determine axial distribution information of vertices in a geometric structure corresponding to a Trisoup node and a total number of vertices contained in the geometric structure.
[0304] According to the axial distribution information and the total number of vertices, a first type of vertex is determined.
[0305] deleting or correcting the first type of vertex.
[0306] Optionally, the processor 1110 is specifically configured to:
[0307] determine distribution information of a vertex in a geometric structure corresponding to the Trisoup node in each of three axial directions;
[0308] The distribution information is used to indicate that the vertex is distributed on a positive half axis or a negative half axis of each axial direction, and / or a number of vertices distributed on the positive half axis or the negative half axis of each axial direction.
[0309] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0310] For a target axial direction of the three axial directions, in a case where a vertex coordinate satisfies a first condition, it is determined that the vertex is distributed on a negative half axis of the target axial direction, and a first number of vertices located on the negative half axis of the target axial direction is determined; the first condition includes that a distance between a dimension value of a target axial direction of the vertex coordinate and a dimension value of a target axial direction of a start point of an edge where the vertex is located is less than or equal to a first threshold value.
[0311] For a target axial direction of the three axial directions, in a case where a vertex coordinate satisfies a second condition, it is determined that the vertex is distributed on a positive half axis of the target axial direction, and a second number of vertices located on the positive half axis of the target axial direction is determined; the second condition includes that a distance between a dimension value of a target axial direction of the vertex coordinate and a dimension value of a target axial direction of an end point of an edge where the vertex is located is less than or equal to a second threshold value.
[0312] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0313] For a target axial direction of the three axial directions, in a case where a ratio of the first number to a total number of vertices is greater than or equal to a third threshold value, it is determined that a vertex satisfying a third condition is a first type of vertex; the third condition includes that a dimension value of a target axial direction of the vertex coordinate is equal to a dimension value of a target axial direction of an end point of an edge where the vertex is located; the first number is a number of vertices located on a negative half axis of the target axial direction.
[0314] For a target axial direction of the three axial directions, in a case where a ratio of the second number to the total number of vertices is greater than or equal to a fourth threshold value, it is determined that a vertex satisfying a fourth condition is a first type of vertex; the fourth condition includes that a dimension value of a target axial direction of the vertex coordinate is equal to a dimension value of a target axial direction of a start point of an edge where the vertex is located; the second number is a number of vertices located on a positive half axis of the target axial direction.
[0315] Optionally, the processor 1110 is further configured to:
[0316] If there is a first type vertex in at least two of the three axial directions, the first type vertex is screened;
[0317] The deleting or correcting the first type vertex includes:
[0318] The first type vertex after screening is deleted or corrected.
[0319] Optionally, the processor 1110 is configured to perform at least one of the following:
[0320] Determining the intersection between the first type vertices of the at least two axial directions, and the first type vertices in the intersection are the screened first type vertices;
[0321] If there is no intersection between the first type vertices of the at least two axial directions, the first type vertex of the axial direction with the largest number of first type vertices is determined as the screened first type vertex.
[0322] Optionally, the processor 1110 is specifically configured to:
[0323] According to the Euclidean distance between the first type vertex and the second type vertex, the first type vertex is deleted or corrected;
[0324] The second type vertex is a vertex other than the first type vertex in the geometric structure.
[0325] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0326] In the case that the Euclidean distance between the first type vertex and the second type vertex satisfies a fifth condition, the first type vertex is deleted;
[0327] In the case that the Euclidean distance between the first type vertex and the second type vertex does not satisfy the fifth condition, the first type vertex is corrected to a target position.
[0328] Optionally, the target position is the midpoint of the first type vertex and a target second type vertex, and the target second type vertex is a second type vertex whose Euclidean distance from the first type vertex satisfies a sixth condition.
[0329] Optionally, the processor is further configured to:
[0330] Decoding a first code stream to obtain an offset value of a centroid vertex of the Trisoup node;
[0331] determine an initial position of a centroid vertex of the Trisoup node according to the second type of vertices and the modified first type of vertices;
[0332] determine an offset centroid vertex position according to the initial position of the centroid vertex and the offset value.
[0333] Optionally, the processor is further configured to:
[0334] decode a second bitstream to obtain a first flag, the first flag being used to indicate whether a Trisoup vertex optimization technique is enabled or not.
[0335] In a case where the terminal is an encoding end device:
[0336] The processor 1110 is configured to: determine axial distribution information of vertices in a geometric structure corresponding to a Trisoup node and a total number of vertices contained in the geometric structure; determine a first type of vertices according to the axial distribution information and the total number of vertices; and delete or modify the first type of vertices.
[0337] Optionally, the processor 1110 is specifically configured to:
[0338] determine distribution information of vertices in a geometric structure corresponding to a Trisoup node in each of three axes;
[0339] The distribution information is used to indicate that the vertices are distributed on a positive half axis or a negative half axis of each axis, and / or a number of vertices distributed on the positive half axis or the negative half axis of each axis.
[0340] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0341] For a target axis of the three axes, in a case where a vertex coordinate satisfies a first condition, it is determined that the vertex is distributed on a negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes that a distance between a dimension value of a target axis of a vertex coordinate and a dimension value of a target axis of a start point of an edge on which the vertex is located is less than or equal to a first threshold value.
[0342] For a target axis of the three axes, in a case where a vertex coordinate satisfies a second condition, it is determined that the vertex is distributed on a positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes that a distance between a dimension value of a target axis of a vertex coordinate and a dimension value of a target axis of an end point of an edge on which the vertex is located is less than or equal to a second threshold value.
[0343] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0344] For a target axis among the three axes, if a ratio of the first number to the total number of the vertices is greater than or equal to a third threshold value, it is determined that a vertex satisfying a third condition is a first type vertex; the third condition comprises: a dimension value of the target axis of the vertex coordinate is equal to a dimension value of the target axis of an end point of an edge where the vertex is located; the first number is a number of vertices located on a negative half axis of the target axis;
[0345] For a target axis among the three axes, if a ratio of the second number to the total number of the vertices is greater than or equal to a fourth threshold value, it is determined that a vertex satisfying a fourth condition is a first type vertex; the fourth condition comprises: a dimension value of the target axis of the vertex coordinate is equal to a dimension value of the target axis of a start point of an edge where the vertex is located; the second number is a number of vertices located on a positive half axis of the target axis.
[0346] Optionally, the processor 1110 is further configured to:
[0347] If there is a first type vertex in at least two axes among the three axes, the first type vertex is screened;
[0348] The deleting or correcting the first type vertex comprises:
[0349] The first type vertex after screening is deleted or corrected.
[0350] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0351] An intersection between the first type vertices of the at least two axes is determined, and the first type vertices in the intersection are the first type vertices after screening;
[0352] If there is no intersection between the first type vertices of the at least two axes, it is determined that the first type vertices of an axis with the largest number of first type vertices are the first type vertices after screening.
[0353] Optionally, the processor 1110 is specifically configured to:
[0354] The first type vertex is deleted or corrected according to a Euclidean distance between the first type vertex and a second type vertex;
[0355] The second type vertex is a vertex other than the first type vertex in the geometric structure.
[0356] Optionally, the processor 1110 is specifically configured to perform at least one of the following:
[0357] In a case where the Euclidean distance between the first type of vertex and the second type of vertex satisfies a fifth condition, the first type of vertex is deleted;
[0358] In a case where the Euclidean distance between the first type of vertex and the second type of vertex does not satisfy the fifth condition, the first type of vertex is modified to a target position.
[0359] Optionally, the target position is a midpoint of the first type of vertex and a target second type of vertex, and the target second type of vertex is a second type of vertex whose Euclidean distance from the first type of vertex satisfies a sixth condition.
[0360] Optionally, the processor 1110 is further configured to:
[0361] determine an initial position of a centroid vertex of the Trisoup node according to the second type of vertex and the modified first type of vertex;
[0362] determine an offset value of the centroid vertex according to the initial position of the centroid vertex and the original point cloud;
[0363] encode the offset value into a first code stream, and determine an offset centroid vertex position according to the initial position of the centroid vertex and the offset value.
[0364] Optionally, the processor 1110 is further configured to:
[0365] encode a first flag into a second code stream, and the first flag is used to indicate whether the Trisoup vertex optimization technology is enabled or not.
[0366] In the embodiments of the present application, the encoding end or the decoding end determines the first type of vertex according to the axial distribution information of the vertices of the Trisoup node and the total number of the vertices, and deletes or modifies the first type of vertex. By deleting or modifying the first type of vertex, a large number of incorrect point clouds can be removed, and the performance loss in the quality of the reconstructed point cloud can be reduced.
[0367] It can be understood that the implementation processes of the implementation manners mentioned in the embodiments can refer to the related descriptions of the method embodiments of the Trisoup vertex optimization method, and achieve the same or corresponding technical effects. To avoid repetition, they will not be described here again.
[0368] The embodiments of the present application also provide a readable storage medium, and the readable storage medium stores a program or instructions, which are executed by a processor to implement each process of the above-mentioned Trisoup vertex optimization method embodiments and achieve the same technical effects. To avoid repetition, they will not be described here again.
[0369] The processor is the processor in the terminal in the above embodiments. The readable storage medium includes a computer readable storage medium, such as a ROM, a RAM, a magnetic disk, or an optical disk, etc. In some examples, the readable storage medium can be a non-transitory readable storage medium.
[0370] The embodiment of the present application further provides a chip, which comprises a processor and a communication interface, wherein the communication interface is coupled with the processor, the processor is used to run programs or instructions, realizes the processes of the above Trisoup vertex optimization method embodiments, and can achieve the same technical effects. To avoid repetition, details are not described herein.
[0371] It should be understood that the chip mentioned in the embodiment of the present application can include a system on chip (SOC, also known as system chip, chip system or system on chip), and can also include a standalone display chip, etc.
[0372] The embodiment of the present application further provides a computer program / program product, which is stored in a storage medium, and is executed by at least one processor to realize the processes of the above Trisoup vertex optimization method embodiments, and can achieve the same technical effects. To avoid repetition, details are not described herein.
[0373] The embodiment of the present application further provides a codec system, which comprises an encoding end device and a decoding end device. The encoding end device can be used to execute the steps of the Trisoup vertex optimization method applied to the encoding end as described above. The decoding end device can be used to execute the steps of the Trisoup vertex optimization method applied to the decoding end as described above.
[0374] The embodiment of the present application further provides a computer program product, which is executed by a processor to realize the steps of the Trisoup vertex optimization method as described above, and can achieve the same technical effects. To avoid repetition, details are not described herein.
[0375] It should be noted that, in the present document, the terms "comprises", "comprising", or any other variations thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but can also include other elements not expressly listed or inherent to such process, method, article, or apparatus. An element proceeded by "comprises a", "comprising", or the like does not, without more constraints, preclude the existence of additional identical elements in the process, method, article, or apparatus that comprises the element. Furthermore, it is to be understood that the methods and apparatuses of the present application can be carried out by specific hardware, by software, or by a combination of hardware and software. It is therefore, contemplated to this patent to cover any and all modifications, variations, or equivalents that fall within the scope of the present application. Accordingly, where a concept can have been illustrated in only one of the exemplary embodiments, various aspects of the concept can be modified and / or combined to produce a variety of other embodiments that are not specifically illustrated. Thus, for purposes of describing particular embodiments, reference has been made to orientations. However, it should be understood that the described embodiments can be carried out in other orientations than those explicitly described without departing from the scope of the present application.
[0376] From the above description of the embodiments, it is apparent that the above-described method of the embodiments can be implemented by means of a computer software product and general hardware platform, of course, it can also be implemented 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 the terminal or network side device execute the method described in each embodiment of the present application.
[0377] The embodiments of the present application are described above in combination with the drawings, but the present application is not limited to the above-described specific embodiments, and the above-described specific embodiments are only illustrative, but not restrictive. 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 Trisoup vertex optimization method, comprising: determining, by a decoding end, axial distribution information of vertices in a geometry structure corresponding to a Trisoup node and a total number of vertices contained in the geometry structure; determining, by the decoding end, a first type of vertex according to the axial distribution information and the total number of vertices; deleting or modifying, by the decoding end, the first type of vertex.
2. The method of claim 1, wherein, The determining of the axial distribution information of the vertices in the geometry structure corresponding to the Trisoup node comprises: determining distribution information of the vertices in the geometry structure corresponding to the Trisoup node in each of three axial directions; wherein the distribution information is used to indicate that the vertices are distributed in a positive or negative half axis of each axial direction, and / or the number of vertices distributed in a positive or negative half axis of each axial direction.
3. The method of claim 1 or 2, wherein, The determining of the axial distribution information of the vertices in the geometry structure corresponding to the Trisoup node comprises at least one of the following: for a target axial direction of the three axial directions, in a case where a vertex coordinate satisfies a first condition, determining that the vertex is distributed in a negative half axis of the target axial direction, and determining a first number of vertices located in the negative half axis of the target axial direction; the first condition comprises that a distance between a dimension value of a target axial direction of the vertex coordinate and a dimension value of a target axial direction of a start point of an edge where the vertex is located is less than or equal to a first threshold value; for a target axial direction of the three axial directions, in a case where a vertex coordinate satisfies a second condition, determining that the vertex is distributed in a positive half axis of the target axial direction, and determining a second number of vertices located in the positive half axis of the target axial direction; the second condition comprises that a distance between a dimension value of a target axial direction of the vertex coordinate and a dimension value of a target axial direction of an end point of an edge where the vertex is located is less than or equal to a second threshold value.
4. The method according to any one of claims 1 to 3, wherein, The determining of the first type of vertex according to the axial distribution information and the total number of vertices comprises at least one of the following: for a target axial direction of the three axial directions, in a case where a ratio of the first number to the total number of vertices is greater than or equal to a third threshold value, determining that a vertex satisfying a third condition is the first type of vertex; the third condition comprises that a dimension value of a target axial direction of the vertex coordinate is equal to a dimension value of a target axial direction of an end point of an edge where the vertex is located; the first number is the number of vertices located in the negative half axis of the target axial direction; for a target axial direction of the three axial directions, in a case where a ratio of the second number to the total number of vertices is greater than or equal to a fourth threshold value, determining that a vertex satisfying a fourth condition is the first type of vertex; the fourth condition comprises that a dimension value of a target axial direction of the vertex coordinate is equal to a dimension value of a target axial direction of a start point of an edge where the vertex is located; the second number is the number of vertices located in the positive half axis of the target axial direction. 5.The method of any one of claims 1 to 4, further comprising: if there is a first type of vertex in at least two of the three axial directions, screening the first type of vertex; the deleting or modifying of the first type of vertex comprises: deleting or modifying the screened first type of vertex.
6. The method of claim 5, wherein, screening the first type of vertices, including at least one of the following: determining the intersection between the first type of vertices of the at least two axial directions, and the first type of vertices in the intersection being the screened first type of vertices; if there is no intersection between the first type of vertices of the at least two axial directions, determining the first type of vertices of the axial direction with the largest number of first type of vertices as the screened first type of vertices.
7. The method of claim 1 or 5, wherein, the deleting or correcting the first type of vertices, including: deleting or correcting the first type of vertices according to the Euclidean distance between the first type of vertices and the second type of vertices; wherein the second type of vertices are other vertices in the geometric structure except the first type of vertices.
8. The method of claim 1 or 6 or 7, wherein, the deleting or correcting the first type of vertices, including at least one of the following: deleting the first type of vertices in the case that the Euclidean distance between the first type of vertices and the second type of vertices satisfies a fifth condition; correcting the first type of vertices to a target position in the case that the Euclidean distance between the first type of vertices and the second type of vertices does not satisfy the fifth condition.
9. The method of claim 8, wherein, the target position is the midpoint of the first type of vertices and a target second type of vertices, and the target second type of vertices is a second type of vertices whose Euclidean distance with the first type of vertices satisfies a sixth condition.
10. The method of claim 1, further comprising: decoding a first bitstream to obtain an offset value of a centroid vertex of the Trisoup node; determining an initial position of the centroid vertex of the Trisoup node according to the second type of vertices and the corrected first type of vertices; determining an offset centroid vertex position according to the initial position of the centroid vertex and the offset value.
11. The method of claim 1, further comprising: decoding a second bitstream to obtain a first flag, the first flag being used to indicate whether to enable or not to enable a Trisoup vertex optimization technique.
12. A Trisoup vertex optimization method, comprising: determining, by an encoding end, the axial distribution information of the vertices in the geometric structure corresponding to the Trisoup node and the total number of vertices contained in the geometric structure; determining, by the encoding end, the first type of vertices according to the axial distribution information and the total number of vertices; deleting or correcting, by the encoding end, the first type of vertices.
13. The method of claim 12, wherein, the determining the axial distribution information of the vertices in the geometric structure corresponding to the Trisoup node, including: determining the distribution information of the vertices in the geometric structure corresponding to the Trisoup node in each of the three axial directions; wherein the distribution information is used to indicate that the vertices are distributed in the positive or negative half axis of each axial direction, and / or the number of vertices distributed in the positive or negative half axis of each axial direction.
14. The method of claim 12 or 13, wherein, the determining the axial distribution information of the vertices in the geometric structure corresponding to the Trisoup node, including at least one of the following: For a target axis among the three axes, in a case where the vertex coordinate satisfies a first condition, it is determined that the vertex is distributed on a negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition comprises: a distance between a dimension value of the target axis of the vertex coordinate and a dimension value of the target axis of a start point of an edge where the vertex is located is less than or equal to a first threshold value; For a target axis among the three axes, in a case where the vertex coordinate satisfies a second condition, it is determined that the vertex is distributed on a positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition comprises: a distance between a dimension value of the target axis of the vertex coordinate and a dimension value of the target axis of an end point of the edge where the vertex is located is less than or equal to a second threshold value.
15. The method according to any one of claims 12 to 14, wherein, The determining the first type of vertex according to the axis distribution information and the total number of vertices comprises at least one of the following: For a target axis among the three axes, in a case where a ratio of the first number to the total number of vertices is greater than or equal to a third threshold value, it is determined that a vertex satisfying a third condition is the first type of vertex; the third condition comprises: the dimension value of the target axis of the vertex coordinate is equal to the dimension value of the target axis of the end point of the edge where the vertex is located; the first number is the number of vertices located on the negative half axis of the target axis; For a target axis among the three axes, in a case where a ratio of the second number to the total number of vertices is greater than or equal to a fourth threshold value, it is determined that a vertex satisfying a fourth condition is the first type of vertex; the fourth condition comprises: the dimension value of the target axis of the vertex coordinate is equal to the dimension value of the target axis of the start point of the edge where the vertex is located; the second number is the number of vertices located on the positive half axis of the target axis.
16. The method of any one of claims 12 to 15, further comprising: screening the first type of vertex if there is the first type of vertex in at least two axes among the three axes; the deleting or correcting the first type of vertex comprises: deleting or correcting the screened first type of vertex.
17. The method of claim 16, wherein, The screening the first type of vertex comprises at least one of the following: determining an intersection between the first type of vertex of the at least two axes, and the first type of vertex in the intersection is the screened first type of vertex; if there is no intersection between the first type of vertex of the at least two axes, determining the first type of vertex of an axis with the largest number of first type of vertex as the screened first type of vertex.
18. The method of claim 12 or 16, wherein, The deleting or correcting the first type of vertex comprises: deleting or correcting the first type of vertex according to a Euclidean distance between the first type of vertex and a second type of vertex; wherein the second type of vertex is a vertex other than the first type of vertex in the geometric structure.
19. The method of claim 12 or 17 or 18, wherein, The deleting or correcting the first type of vertex comprises at least one of the following: deleting the first type of vertex in a case where the Euclidean distance between the first type of vertex and the second type of vertex satisfies a fifth condition; In a case where the Euclidean distance between the first type vertex and the second type vertex does not satisfy the fifth condition, the first type vertex is corrected to a target position.
20. The method of claim 19, wherein, The target position is a midpoint of the first type vertex and a target second type vertex, and the target second type vertex is a second type vertex whose Euclidean distance from the first type vertex satisfies a sixth condition.
21. The method of claim 12, further comprising: determining an initial position of a centroid vertex of the Trisoup node according to a second type vertex and the corrected first type vertex; determining an offset value of the centroid vertex according to the initial position of the centroid vertex and the original point cloud; encoding the offset value into a first bitstream and determining an offset centroid vertex position according to the initial position of the centroid vertex and the offset value.
22. The method of claim 12, further comprising: encoding a first flag into a second bitstream, the first flag being used to indicate whether a Trisoup vertex optimization technique is enabled or not.
23. A Trisoup vertex optimization apparatus, comprising: a first determining module configured to determine axial distribution information of vertices in a geometry structure corresponding to a Trisoup node and a total number of vertices contained in the geometry structure; a second determining module configured to determine a first type vertex according to the axial distribution information and the total number of vertices; a first processing module configured to delete or correct the first type vertex.
24. The apparatus of claim 23, wherein, The first determining module is specifically configured to: determine distribution information of vertices in a geometry structure corresponding to a Trisoup node in each of three axes; wherein the distribution information is used to indicate that the vertices are distributed in a positive half-axis or a negative half-axis of each axis, and / or the number of vertices distributed in the positive half-axis or the negative half-axis of each axis.
25. The apparatus of claim 23 or 24, wherein, The first determining module is specifically configured to perform at least one of the following: for a target axis of the three axes, in a case where a vertex coordinate satisfies a first condition, it is determined that the vertex is distributed in a negative half-axis of the target axis, and a first number of vertices located in the negative half-axis of the target axis is determined; the first condition includes that a distance between a dimension value of a target axis of the vertex coordinate and a dimension value of the target axis of a start point of an edge where the vertex is located is less than or equal to a first threshold value; for a target axis of the three axes, in a case where a vertex coordinate satisfies a second condition, it is determined that the vertex is distributed in a positive half-axis of the target axis, and a second number of vertices located in the positive half-axis of the target axis is determined; the second condition includes that a distance between a dimension value of a target axis of the vertex coordinate and a dimension value of a target axis of an end point of an edge where the vertex is located is less than or equal to a second threshold value.
26. The apparatus of claim 23 or 25, wherein, The second determining module is specifically configured to perform at least one of the following: For a target axis among the three axes, if a ratio of the first number to the total number of the vertices is greater than or equal to a third threshold, it is determined that a vertex satisfying a third condition is a first type vertex; the third condition comprises: a dimension value of the target axis of the vertex coordinate is equal to a dimension value of the target axis of an end point of an edge where the vertex is located; the first number is a number of vertices located on a negative half axis of the target axis; For a target axis among the three axes, if a ratio of the second number to the total number of the vertices is greater than or equal to a fourth threshold, it is determined that a vertex satisfying a fourth condition is a first type vertex; the fourth condition comprises: a dimension value of the target axis of the vertex coordinate is equal to a dimension value of the target axis of a start point of an edge where the vertex is located; the second number is a number of vertices located on a positive half axis of the target axis.
27. The apparatus according to any one of claims 23-26, further comprising: a second processing module, configured to screen the first type vertices if there are first type vertices in at least two axes among the three axes; the first processing module is specifically configured to: delete or correct the screened first type vertices.
28. The apparatus of claim 27, wherein, The second processing module is specifically configured to perform at least one of the following: determine an intersection between the first type vertices of the at least two axes, and the first type vertices in the intersection are the screened first type vertices; if there is no intersection between the first type vertices of the at least two axes, determine that the first type vertices of an axis with the largest number of first type vertices are the screened first type vertices.
29. The apparatus of claim 23 or 27, wherein, The first processing module is specifically configured to: delete or correct the first type vertices according to a Euclidean distance between the first type vertices and second type vertices; wherein the second type vertices are other vertices in the geometric structure except the first type vertices.
30. The apparatus of claim 23 or 28 or 29, wherein, The first processing module is specifically configured to perform at least one of the following: delete the first type vertices if the Euclidean distance between the first type vertices and the second type vertices satisfies a fifth condition; correct the first type vertices to a target position if the Euclidean distance between the first type vertices and the second type vertices does not satisfy the fifth condition.
31. The apparatus of claim 30, wherein, The target position is a midpoint of the first type vertices and a target second type vertex, and the target second type vertex is a second type vertex with a Euclidean distance satisfying a sixth condition from the first type vertices.
32. The apparatus according to claim 23, further comprising: a first decoding module, configured to decode a first code stream to obtain an offset value of a centroid vertex of the Trisoup node; a third determining module, configured to determine an initial position of the centroid vertex of the Trisoup node according to second type vertices and the corrected first type vertices; a fourth determining module, configured to determine an offset centroid vertex position according to the initial position of the centroid vertex and the offset value.
33. The apparatus according to claim 23, further comprising: The second decoding module is configured to decode the second code stream to obtain a first flag, where the first flag is used to indicate whether a Trisoup vertex optimization technique is enabled or not.
34. An apparatus for Trisoup vertex optimization, comprising: The fifth determining module is configured to determine axial distribution information of a vertex in a geometric structure corresponding to a Trisoup node and a total number of vertices contained in the geometric structure; The sixth determining module is configured to determine a first type vertex according to the axial distribution information and the total number of vertices. The third processing module is configured to delete or correct the first type vertex.
35. The apparatus of claim 34, wherein, The fifth determining module is specifically configured to: determine distribution information of a vertex in a geometric structure corresponding to a Trisoup node in each of three axes; wherein the distribution information is used to indicate that the vertex is distributed on a positive or negative half axis of each axis, and / or a number of vertices distributed on a positive or negative half axis of each axis.
36. The apparatus of claim 34 or 35, wherein, The fifth determining module is specifically configured to perform at least one of the following: for a target axis of the three axes, in a case where a vertex coordinate satisfies a first condition, it is determined that the vertex is distributed on a negative half axis of the target axis, and a first number of vertices located on the negative half axis of the target axis is determined; the first condition includes that a distance between a dimension value of a target axis of a vertex coordinate and a dimension value of a target axis of a start point of an edge where the vertex is located is less than or equal to a first threshold value; for a target axis of the three axes, in a case where a vertex coordinate satisfies a second condition, it is determined that the vertex is distributed on a positive half axis of the target axis, and a second number of vertices located on the positive half axis of the target axis is determined; the second condition includes that a distance between a dimension value of a target axis of a vertex coordinate and a dimension value of a target axis of an end point of an edge where the vertex is located is less than or equal to a second threshold value.
37. The apparatus of claim 34 or 36, wherein, The sixth determining module is specifically configured to perform at least one of the following: for a target axis of the three axes, in a case where a ratio of the first number to the total number of vertices is greater than or equal to a third threshold value, it is determined that a vertex satisfying a third condition is a first type vertex; the third condition includes that a dimension value of a target axis of a vertex coordinate is equal to a dimension value of a target axis of an end point of an edge where the vertex is located; the first number is a number of vertices located on a negative half axis of the target axis; for a target axis of the three axes, in a case where a ratio of the second number to the total number of vertices is greater than or equal to a fourth threshold value, it is determined that a vertex satisfying a fourth condition is a first type vertex; the fourth condition includes that a dimension value of a target axis of a vertex coordinate is equal to a dimension value of a target axis of a start point of an edge where the vertex is located; the second number is a number of vertices located on a positive half axis of the target axis.
38. The apparatus according to any one of claims 34 to 37, further comprising: The fourth processing module is configured to, if there is a first type vertex in at least two axes of the three axes, screen the first type vertex. The third processing module is specifically configured to: delete or correct the screened first type vertex.
39. The device of claim 38, wherein, The fourth processing module is specifically configured to perform at least one of the following: determine intersections between the first type of vertices of the at least two axial directions, and the first type of vertices in the intersections are the screened first type of vertices; if there is no intersection between the first type of vertices of the at least two axial directions, determine that the first type of vertices of the axial direction with the largest number of first type of vertices are the screened first type of vertices.
40. The apparatus of claim 34 or 38, wherein, The third processing module is specifically configured to: delete or correct the first type of vertices according to the Euclidean distance between the first type of vertices and the second type of vertices; wherein the second type of vertices are other vertices in the geometric structure except the first type of vertices.
41. The apparatus of claim 33 or 39 or 40, wherein, The third processing module is specifically configured to perform at least one of the following: delete the first type of vertices in the case that the Euclidean distance between the first type of vertices and the second type of vertices satisfies a fifth condition; correct the first type of vertices to a target position in the case that the Euclidean distance between the first type of vertices and the second type of vertices does not satisfy the fifth condition.
42. The device of claim 41, wherein, The target position is a midpoint of the first type of vertices and a target second type of vertex, and the target second type of vertex is a second type of vertex with a Euclidean distance from the first type of vertices satisfying a sixth condition.
43. The apparatus of claim 34, further comprising: a seventh determining module configured to determine an initial position of a centroid vertex of the Trisoup node according to the second type of vertices and the corrected first type of vertices; an eighth determining module configured to determine an offset value of the centroid vertex according to the initial position of the centroid vertex and the original point cloud; a first encoding module configured to encode the offset value into a first bitstream, and determine an offset centroid vertex position according to the initial position of the centroid vertex and the offset value.
44. The apparatus of claim 34, further comprising: a second encoding module configured to encode a first flag into a second bitstream, the first flag being used to indicate whether to enable or not to enable the Trisoup vertex optimization technology.
45. An electronic device, comprising a processor and a memory, the memory storing programs or instructions executable on the processor, the programs or instructions being executed by the processor to implement steps of the Trisoup vertex optimization method according to any one of claims 1 to 11, or implement steps of the Trisoup vertex optimization method according to claims 12 to 22.
46. A readable storage medium, the readable storage medium storing programs or instructions, the programs or instructions being executed by a processor to implement the Trisoup vertex optimization method according to any one of claims 1 to 11, or implement steps of the Trisoup vertex optimization method according to any one of claims 12 to 22.
47. A chip, comprising a processor and a communication interface, the communication interface and the processor being coupled, the processor being configured to run programs or instructions to implement steps of the method according to any one of claims 1 to 11, or implement steps of the method according to claims 12 to 22.
48. A computer program product comprising computer instructions which, when executed by a processor, implement the steps of the method of any one of claims 1 to 11, or implement the steps of the method of claims 12 to 22.
Citation Information
Patent Citations
Coding processing method and decoding processing method for geometric information of point cloud and related equipment
CN115471627A
Coding method, decoding method and terminal
CN116843771A
Point cloud coding method, point cloud decoding method and related equipment
CN117857516A
Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method
WO2021242065A1
Method for encoding and decoding for trisoup vertex positions
WO2023197122A1