Coding method, device and equipment of point cloud attribute, and storage medium
Patent Information
- Application Number
- CN202111478233.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2021-12-06
- Publication Date
- 2026-10-13
- Estimated Expiration
- 2041-12-06
AI Technical Summary
[0004]但是,对点云的各属性信息逐一进行压缩时,无法实现对点云中部分点云的编码或解码,使得点云的属性信息的编解码灵活性差
[0022]第十一方面,提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面至第二方面中任一方面或其各实现方式中的方法。
Smart Images

Figure CN116233467B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of video encoding and decoding technology, and in particular to a method, apparatus, device, and storage medium for encoding and decoding point cloud attributes. Background Technology
[0002] Point cloud data is generated by collecting data from the surface of an object using acquisition devices. This data consists of hundreds of thousands or even more points. During video production, the point cloud data is transmitted between the video production equipment and the point cloud encoding equipment as a point cloud media file. However, the sheer volume of points presents a challenge for transmission; therefore, the video production equipment needs to compress the point cloud data before transmission.
[0003] The compression of point cloud data mainly includes the compression of location information and the compression of attribute information. When compressing attribute information, the various attribute information of the point cloud is compressed one by one. For example, the color attribute of the point cloud is encoded first, and then the reflectivity attribute of the point cloud is encoded.
[0004] However, when compressing each attribute information of a point cloud one by one, it is impossible to encode or decode parts of the point cloud, resulting in poor flexibility in encoding and decoding the attribute information of the point cloud. Summary of the Invention
[0005] This application provides a method, apparatus, device, and storage medium for encoding and decoding point cloud attributes, thereby improving the flexibility of point cloud attribute encoding and decoding.
[0006] Firstly, this application provides a method for encoding point cloud attributes, including:
[0007] Obtain a point cloud, wherein each point in the point cloud includes N attribute information, where N is a positive integer greater than 1;
[0008] After the encoding of N attribute information of the previous point is completed, the values to be encoded corresponding to the N attribute information of the current point are determined respectively;
[0009] The values to be encoded corresponding to the N attribute information of the current point are encoded to obtain the bitstream of the point cloud.
[0010] Secondly, this application provides a method for encoding point cloud attributes, including:
[0011] Obtain the bitstream of the point cloud, wherein each point in the point cloud includes N attribute information, where N is a positive integer greater than 1;
[0012] After the decoding of N attribute information of the previous point is completed, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point.
[0013] Based on the values to be decoded corresponding to the N attribute information of the current point, the reconstructed values corresponding to the N attribute information of the current point are obtained.
[0014] Thirdly, a point cloud attribute encoding device is provided for executing the methods described in the first aspect or its various implementations. Specifically, the point cloud encoding device includes functional modules for executing the methods described in the first aspect or its various implementations.
[0015] Fourthly, a point cloud attribute decoding device is provided for executing the methods in the second aspect or its implementations described above. Specifically, the point cloud decoding device includes functional modules for executing the methods in the second aspect or its implementations described above.
[0016] Fifthly, an encoding device is provided, including a processor and a memory. The memory is used to store a computer program, and the processor is used to call and run the computer program stored in the memory to perform the methods in the first aspect or its implementations described above.
[0017] Sixthly, a decoding device is provided, including a processor and a memory. The memory is used to store a computer program, and the processor is used to call and run the computer program stored in the memory to perform the methods in the second aspect or its implementations described above.
[0018] In a seventh aspect, an encoding / decoding system is provided, including the encoding device of the fifth aspect and the decoding device of the sixth aspect.
[0019] Eighthly, a chip is provided for implementing the methods of any one of the first to second aspects or their respective implementations. Specifically, the chip includes a processor for calling and running a computer program from a memory, causing a device on which the chip is mounted to perform the methods of any one of the first to second aspects or their respective implementations.
[0020] Ninthly, a computer-readable storage medium is provided for storing a computer program that causes a computer to perform the methods of any one of the first to second aspects or their respective implementations.
[0021] In a tenth aspect, a computer program product is provided, comprising computer program instructions that cause a computer to perform the methods of any one of the first to second aspects or their respective implementations.
[0022] Eleventhly, a computer program is provided that, when run on a computer, causes the computer to perform the methods of any one of the first to second aspects or their respective implementations.
[0023] In a twelfth aspect, an electrical device is provided, including a processor and a memory, the memory for storing a computer program, and the processor for calling and running the computer program stored in the memory to perform the method described in either the first aspect or the second aspect.
[0024] In summary, this application acquires a point cloud, where each point includes N attribute information. After the encoding of the N attribute information of the previous point is completed, the values to be encoded corresponding to the N attribute information of the current point are determined. The values to be encoded corresponding to the N attribute information of the current point are then encoded to obtain the bitstream of the point cloud. That is, this application encodes the attribute information of points in the point cloud point by point during encoding, for example, first encoding all attribute information of the previous point in the point cloud, and then encoding all attribute information of the next point in the point cloud. This allows for decoding of the attribute information of any one or several points in the point cloud, thereby improving the flexibility of point cloud attribute information encoding and decoding. Furthermore, this application allows for parallel encoding or decoding of the attribute information of each point, ensuring the random access requirements of point cloud encoding, greatly reducing the computational complexity of encoding and decoding multi-attribute point clouds, and improving the efficiency of point cloud encoding and decoding. Attached Figure Description
[0025] To more clearly illustrate the technical solutions in the embodiments of the present invention, the accompanying drawings used in the description of the embodiments will be briefly introduced below. Obviously, the accompanying drawings described below are only some embodiments of the present invention. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.
[0026] Figure 1 This is a schematic block diagram of a point cloud encoding and decoding system according to an embodiment of this application;
[0027] Figure 2 This is a schematic block diagram of the coding framework provided in the embodiments of this application;
[0028] Figure 3 This is a schematic block diagram of the decoding framework provided in the embodiments of this application;
[0029] Figure 4 A flowchart illustrating a point cloud attribute encoding method provided in an embodiment of this application;
[0030] Figure 5A This is a schematic diagram of a point cloud sorting method according to an embodiment of this application;
[0031] Figure 5B This is a schematic diagram illustrating another point cloud sorting method involved in an embodiment of this application;
[0032] Figure 5C This is a schematic diagram of a reference point search process involved in this application;
[0033] Figure 6 A flowchart illustrating a point cloud attribute decoding method provided in an embodiment of this application;
[0034] Figure 7 Another flowchart of a point cloud attribute decoding method provided in an embodiment of this application;
[0035] Figure 8 This is a schematic block diagram of a point cloud attribute encoding device according to an embodiment of this application;
[0036] Figure 9 This is a schematic block diagram of a point cloud attribute decoding device according to an embodiment of this application;
[0037] Figure 10 This is a schematic block diagram of the electronic device provided in the embodiments of this application. Detailed Implementation
[0038] The technical solutions in the embodiments of this application will now be described with reference to the accompanying drawings.
[0039] It should be understood that, in the embodiments of the present invention, "B corresponding to A" means that B is associated with A. In one implementation, B can be determined based on A. However, it should also be understood that determining B based on A does not mean determining B solely based on A; B can also be determined based on A and / or other information.
[0040] In the description of this application, unless otherwise stated, "a plurality of" means two or more.
[0041] Furthermore, to facilitate a clear description of the technical solutions in the embodiments of this application, the terms "first" and "second" are used in the embodiments of this application to distinguish identical or similar items with essentially the same function and effect. Those skilled in the art will understand that the terms "first" and "second" do not limit the quantity or execution order, and that "first" and "second" are not necessarily different. To facilitate understanding of the embodiments of this application, the relevant concepts involved in the embodiments of this application are briefly introduced as follows:
[0042] A point cloud is a set of discrete points in space that are randomly distributed and represent the spatial structure and surface properties of a three-dimensional object or scene.
[0043] Point cloud data is a specific record of a point cloud. Points in a point cloud can include their location information and attribute information. For example, the location information can be the point's three-dimensional coordinates. This location information can also be referred to as the point's geometric information. Attribute information can include color information and / or reflectivity, etc. For example, the color information can be information in any color space. For example, the color information can be (RGB). Alternatively, the color information can be luminance / chromaticity (YcbCr, YUV) information. For example, Y represents luminance (Luma), Cb(U) represents blue color difference, Cr(V) represents red, and U and V represent chromaticity (Chroma) used to describe color difference information. For example, a point cloud obtained based on laser measurement principles can include the point's three-dimensional coordinate information and the point's laser reflection intensity. Similarly, a point cloud obtained based on photogrammetry principles can include the point's three-dimensional coordinate information and the point's color information. For example, point clouds can be obtained by combining laser measurement and photogrammetry principles. The points in the point cloud may include the three-dimensional coordinate information of the points, the laser reflection intensity of the points, and the color information of the points.
[0044] Point cloud data can be acquired through at least one of the following methods: (1) Computer-generated data. Computer-generated data can be generated based on virtual 3D objects and virtual 3D scenes. (2) 3D laser scanning. Point cloud data of static real-world 3D objects or 3D scenes can be acquired through 3D laser scanning, with millions of point cloud data acquired per second. (3) 3D photogrammetry. Point cloud data of real-world visual scenes can be acquired by collecting data from real-world visual scenes using 3D photography equipment (i.e., a set of cameras or a camera device with multiple lenses and sensors). Point cloud data of dynamic real-world 3D objects or 3D scenes can be acquired through 3D photography. (4) Point cloud data of biological tissues and organs can be acquired through medical equipment. In the medical field, point cloud data of biological tissues and organs can be acquired through medical equipment such as magnetic resonance imaging (MRI), computed tomography (CT), and electromagnetic positioning information.
[0045] Point clouds can be classified into dense point clouds and sparse point clouds according to the acquisition method.
[0046] Point clouds are classified according to the temporal type of the data as follows:
[0047] The first static point cloud: that is, the object is stationary and the device acquiring the point cloud is also stationary;
[0048] The second type of dynamic point cloud: The object is in motion, but the device acquiring the point cloud is stationary;
[0049] The third type of dynamic point cloud acquisition: The device acquiring the point cloud is in motion.
[0050] Point clouds can be divided into two main categories based on their uses:
[0051] Category 1: Machine-perceived point cloud, which can be used in scenarios such as autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, and disaster relief robots;
[0052] Category 2: Human eye-perceived point clouds, which can be used in point cloud application scenarios such as digital cultural heritage, free-viewpoint broadcasting, 3D immersive communication, and 3D immersive interaction.
[0053] Figure 1 This is a schematic block diagram of a point cloud encoding / decoding system according to an embodiment of this application. It should be noted that... Figure 1 This is merely an example; the point cloud encoding / decoding system in this application includes, but is not limited to, [other examples]. Figure 1 As shown. Figure 1 As shown, the point cloud encoding / decoding system 100 includes an encoding device 110 and a decoding device 120. The encoding device encodes (can be understood as compressing) the point cloud data to generate a bitstream, and transmits the bitstream to the decoding device. The decoding device decodes the bitstream generated by the encoding device to obtain the decoded point cloud data.
[0054] The encoding device 110 in this application embodiment can be understood as a device with point cloud encoding function, and the decoding device 120 can be understood as a device with point cloud decoding function. That is, the encoding device 110 and the decoding device 120 in this application embodiment include a wider range of devices, such as smartphones, desktop computers, mobile computing devices, laptops (e.g., laptop computers), tablet computers, set-top boxes, televisions, cameras, display devices, digital media players, video game consoles, vehicle computers, etc.
[0055] In some embodiments, encoding device 110 may transmit encoded point cloud data (such as a bitstream) to decoding device 120 via channel 130. Channel 130 may include one or more media and / or means capable of transmitting encoded point cloud data from encoding device 110 to decoding device 120.
[0056] In one example, channel 130 includes one or more communication media that enable encoding device 110 to directly transmit encoded point cloud data to decoding device 120 in real time. In this example, encoding device 110 can modulate the encoded point cloud data according to a communication standard and transmit the modulated point cloud data to decoding device 120. The communication media includes wireless communication media, such as radio frequency spectrum; optionally, the communication media may also include wired communication media, such as one or more physical transmission lines.
[0057] In another example, channel 130 includes a storage medium that can store point cloud data encoded by encoding device 110. The storage medium includes various local access data storage media, such as optical discs, DVDs, flash memory, etc. In this example, decoding device 120 can retrieve the encoded point cloud data from this storage medium.
[0058] In another example, channel 130 may include a storage server that stores the point cloud data encoded by encoding device 110. In this example, decoding device 120 can download the stored encoded point cloud data from the storage server. Optionally, the storage server can store the encoded point cloud data and transmit the encoded point cloud data to decoding device 120, such as a web server (e.g., for a website), a file transfer protocol (FTP) server, etc.
[0059] In some embodiments, the encoding device 110 includes a point cloud encoder 112 and an output interface 113. The output interface 113 may include a modulator / demodulator (modem) and / or a transmitter.
[0060] In some embodiments, in addition to the point cloud encoder 112 and the input interface 113, the encoding device 110 may also include a video source 111.
[0061] The video source 111 may include at least one of a video acquisition device (e.g., a video camera), a video archive, a video input interface, and a computer graphics system, wherein the video input interface is used to receive point cloud data from a video content provider, and the computer graphics system is used to generate the point cloud data.
[0062] The point cloud encoder 112 encodes the point cloud data from the video source 111 to generate a bitstream. The point cloud encoder 112 transmits the encoded point cloud data directly or indirectly to the decoding device 120 via the output interface 113. The encoded point cloud data can also be stored on a storage medium or a storage server for subsequent reading by the decoding device 120.
[0063] In some embodiments, the decoding device 120 includes an input interface 121 and a point cloud decoder 122.
[0064] In some embodiments, in addition to the input interface 121 and the point cloud decoder 122, the decoding device 120 may also include a display device 123.
[0065] The input interface 121 includes a receiver and / or a modem. The input interface 121 can receive encoded point cloud data through channel 130.
[0066] The point cloud decoder 122 is used to decode the encoded point cloud data to obtain the decoded point cloud data, and transmit the decoded point cloud data to the display device 123.
[0067] Display device 123 displays the decoded point cloud data. Display device 123 may be integrated with decoding device 120 or external to decoding device 120. Display device 123 may include various display devices, such as liquid crystal display (LCD), plasma display, organic light-emitting diode (OLED) display, or other types of display devices.
[0068] also, Figure 1 This is merely an example; the technical solutions in the embodiments of this application are not limited to... Figure 1 For example, the technology of this application can also be applied to one-sided point cloud encoding or one-sided point cloud decoding.
[0069] Since point clouds are collections of massive points, storing them not only consumes a lot of memory but also hinders transmission. Furthermore, there is not enough bandwidth to support the direct transmission of point clouds at the network layer without compression. Therefore, compressing point clouds is essential.
[0070] Currently, point clouds can be compressed using a point cloud encoding framework.
[0071] Point cloud coding frameworks can be either the Geometry Point Cloud Compression (G-PCC) or Video Point Cloud Compression (V-PCC) framework provided by the Moving Picture Experts Group (MPEG), or the AVS-PCC framework provided by the Audio Video Standard (AVS) organization. Both G-PCC and AVS-PCC are designed for static, sparse point clouds, and their coding frameworks are largely the same. The G-PCC framework can be used to compress first-type static point clouds and third-type dynamically acquired point clouds, while the V-PCC framework can be used to compress second-type dynamic point clouds. The G-PCC framework is also known as the point cloud codec TMC13, and the V-PCC framework is also known as the point cloud codec TMC2.
[0072] The following describes the applicable encoding and decoding frameworks for the embodiments of this application using the G-PCC encoding and decoding framework.
[0073] Figure 2 This is a schematic block diagram of the coding framework provided in the embodiments of this application.
[0074] like Figure 2 As shown, the encoding framework 200 can acquire the location information (also known as geometric information or geometric location) and attribute information of the point cloud from the acquisition device. The encoding of the point cloud includes location encoding and attribute encoding.
[0075] The location encoding process includes: preprocessing the original point cloud by performing coordinate transformation and quantization to remove duplicate points; and then encoding the octree to form a geometric bitstream.
[0076] The attribute encoding process includes: using the reconstructed information of the location information and the true values of the attribute information of the given input point cloud, selecting one of three prediction modes to perform point cloud prediction, quantizing the prediction results, and performing arithmetic encoding to form an attribute code stream.
[0077] like Figure 2 As shown, position encoding can be implemented using the following units:
[0078] Coordinate translation and quantization unit 201, octree construction unit 202, octree reconstruction unit 203, entropy coding unit 204.
[0079] The coordinate translation and quantization unit 201 can be used to transform the world coordinates of points in a point cloud into relative coordinates and quantize the coordinates, which can reduce the number of coordinates; after quantization, previously different points may be assigned the same coordinates.
[0080] The octree building unit 202 can encode the position information of quantized points using octree encoding. For example, the point cloud can be divided into octrees, so that the position of a point can correspond one-to-one with the position of the octree. By counting the positions of points in the octree and marking their flags as 1, geometric encoding can be performed.
[0081] The octree reconstruction unit 203 is used to reconstruct the geometric position of each point in the point cloud, thus obtaining the reconstructed geometric position of the point.
[0082] Entropy coding unit 204 can use entropy coding to perform arithmetic coding on the position information output by octree construction unit 202, that is, use arithmetic coding to generate a geometric bitstream from the position information output by octree construction unit 202; the geometric bitstream can also be called a geometric bitstream.
[0083] Attribute encoding can be implemented through the following units:
[0084] The system includes a spatial transformation unit 210, an attribute interpolation unit 211, an attribute prediction unit 212, a residual quantization unit 213, and an entropy coding unit 214.
[0085] The spatial transformation unit 210 can be used to transform the RGB color space of points in a point cloud into YCbCr format or other formats.
[0086] The attribute transformation unit 211 can be used to transform the attribute information of points in a point cloud to minimize attribute distortion. For example, the attribute transformation unit 211 can be used to obtain the true values of the point's attribute information. For example, the attribute information may be the color information of the point.
[0087] The attribute prediction unit 212 can be used to predict the attribute information of points in the point cloud to obtain the predicted value of the point's attribute information, and then obtain the residual value of the point's attribute information based on the predicted value of the point's attribute information. For example, the residual value of the point's attribute information can be the actual value of the point's attribute information minus the predicted value of the point's attribute information.
[0088] The residual quantization unit 213 can be used to quantize the residual value of the attribute information of the point.
[0089] Entropy coding unit 214 can use zero-run-length coding to entropy code the residual values of the attribute information of the points to obtain an attribute bitstream. The attribute bitstream can be bitstream information.
[0090] Combination Figure 2 The main operations and processing for geometric structure encoding in this application are as follows:
[0091] (1) Pre-processing: This includes coordinate transformation and voxelization. By scaling and translation, the point cloud data in 3D space is converted into integer form, and its smallest geometric position is moved to the origin.
[0092] (2) Geometry encoding: Geometry encoding includes two modes that can be used under different conditions.
[0093] (a) Octree-based geometric coding: An octree is a tree-like data structure used in 3D spatial partitioning to uniformly divide a predefined bounding box, with each node having eight child nodes. By using '1' and '0' to indicate whether each child node of the octree is occupied, occupancy code information is obtained as the bitstream of point cloud geometric information.
[0094] (b) Trisoup-based geometric coding: The point cloud is divided into blocks of a certain size, and the intersection points of the point cloud surface with the edges of the blocks are located and triangles are constructed. Geometric information is compressed by encoding the intersection points.
[0095] (3) Geometry quantization: The fineness of quantization is usually determined by the quantization parameter (QP). A larger QP value means that coefficients with a wider range of values will be quantized into the same output, which usually leads to greater distortion and a lower bit rate. Conversely, a smaller QP value means that coefficients with a smaller range of values will be quantized into the same output, which usually leads to less distortion and a higher bit rate. In point cloud coding, quantization is performed directly on the coordinate information of the points.
[0096] (4) Geometric entropy encoding: This method uses statistical compression encoding on the occupancy code information of the octet to output a binary (0 or 1) compressed bitstream. Statistical coding is a lossless coding method that can effectively reduce the bit rate required to express the same signal. A commonly used statistical coding method is context-adaptive binary arithmetic coding (CABAC).
[0097] The main operations and processing for attribute information encoding are as follows:
[0098] (1) Attribute Recoloring: In lossy encoding, after the geometric information is encoded, the encoding end needs to decode and reconstruct the geometric information, that is, restore the coordinate information of each point in the 3D 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.
[0099] (2) Attribute prediction and attribute transformation:
[0100] (a) Prediction: Based on information such as distance or spatial relationships, determine the neighboring points of the point to be coded as prediction points among the coded points, and calculate the predicted value of the point according to the set criteria. Calculate the difference between the current point attribute value and the predicted value as the residual, and quantize, transform (optionally), and entropy encode the residual information.
[0101] (b) Transformation: The attribute information is grouped and transformed using transformation methods such as Discrete Cosine Transform (DCT) and Haar Transform, and the transformation coefficients are quantized. The attribute reconstruction value is obtained after inverse quantization and inverse transformation. The attribute residual is obtained by calculating the difference between the original attribute and the attribute reconstruction value and then quantizing it. The quantized transformation coefficients and attribute residuals are then encoded.
[0102] (3) Attribute quantization: The fineness of quantization is usually determined by the quantization parameter (QP). In predictive coding, the residual values are quantized and then entropy encoded; in transform coding, the transform coefficients are quantized and then entropy encoded.
[0103] (4) Attribute entropy coding: The quantized attribute residual signal or transform coefficients are generally compressed using run-length coding and arithmetic coding. The corresponding coding mode, quantization parameters, and other information are also encoded using an entropy encoder.
[0104] From the above Figure 2 As can be seen, the point cloud encoder 200 mainly includes two parts in terms of function: a position encoding module and an attribute encoding module. The position encoding module is used to encode the position information of the point cloud to form a geometric code stream, and the attribute encoding module is used to encode the attribute information of the point cloud to form an attribute code stream. This application mainly involves the encoding of attribute information.
[0105] Figure 3 This is a schematic block diagram of the decoding framework provided in the embodiments of this application.
[0106] like Figure 3 As shown, the decoding framework 300 can acquire the bitstream of the point cloud from the encoding device and obtain the position and attribute information of the points in the point cloud through the parsing code. Point cloud decoding includes position decoding and attribute decoding.
[0107] The location decoding process includes: performing arithmetic decoding on the geometric bitstream; constructing and merging octrees to reconstruct the point location information; and performing coordinate transformation on the reconstructed point location information to obtain the point's actual location information. The point's location information can also be referred to as its geometric information.
[0108] The attribute decoding process includes: obtaining the residual values of the attribute information of points in the point cloud by parsing the attribute code stream; obtaining the residual values of the attribute information of points by inverse quantization; selecting one of three prediction modes to predict the point cloud based on the reconstructed information of the position information of points obtained in the position decoding process, and obtaining the reconstructed values of the attribute information of points; and performing color space inverse conversion on the reconstructed values of the attribute information of points to obtain the decoded point cloud.
[0109] like Figure 3 As shown, position decoding can be implemented using the following unit:
[0110] Entropy decoding unit 301, octree reconstruction unit 302, inverse coordinate quantization unit 303, and inverse coordinate translation unit 304.
[0111] Attribute encoding can be implemented through the following units:
[0112] Entropy decoding unit 310, inverse quantization unit 311, attribute reconstruction unit 312, and inverse space transformation unit 313.
[0113] Decompression is the reverse process of compression. Similarly, the functions of each unit in the decoding frame 300 can be found in the functions of the corresponding units in the encoding frame 200.
[0114] At the decoding end, after obtaining the compressed bitstream, the decoder first performs entropy decoding to obtain various mode information, quantized geometric information, and attribute information. First, the geometric information undergoes inverse quantization to obtain the reconstructed 3D point position information. On the other hand, the attribute information undergoes inverse quantization to obtain residual information, and the reference signal is confirmed according to the adopted transform mode to obtain the reconstructed attribute information. This reconstructed attribute information is then sequentially matched with the geometric information to generate the output reconstructed point cloud data.
[0115] It should be noted that the prediction, quantization, encoding, filtering, and other mode information or parameter information determined during the encoding of attribute information at the encoding end are carried in the attribute bitstream when necessary. The decoding end determines the same prediction, quantization, encoding, filtering, and other mode information or parameter information as the encoding end by parsing the attribute bitstream and analyzing existing information, thereby ensuring that the reconstructed values of the attribute information obtained at the encoding end and the reconstructed values of the attribute information obtained at the decoding end are the same.
[0116] The above describes the basic process of a point cloud codec based on the G-PCC encoding and decoding framework. With the development of technology, some modules or steps of this framework or process may be optimized. This application applies to the basic process of the point cloud codec based on the G-PCC encoding and decoding framework, but is not limited to this framework and process.
[0117] Run-length coding
[0118] (1) Binarize and entropy-encode the transformed signed attribute prediction residuals. The specific method is as follows:
[0119] Iterate through the attribute prediction residuals Res for each point and count the number of points with consecutive attribute prediction residuals of 0, run_length. If the attribute prediction residual Res is non-zero, first encode the run_length value, then encode the non-zero attribute prediction residual, and finally set the run_length value to 0 to restart the counting.
[0120] (2) For each component of the non-zero attribute prediction residual Res i (i = 0, 1, 2) are encoded sequentially, and the encoding method is as follows:
[0121] Step 1: When the attribute information to be encoded is color, first use the context to process the attribute residual component Res. i Whether the value is 0 is determined through arithmetic encoding. When the attribute information to be encoded is reflectance, this step is not required for the prediction residuals of non-zero attributes.
[0122] Step 2, in Res i If the value is not 0, use bypass coding for its symbol.
[0123] Step 3, utilize the context to analyze the attribute residual components Res i Arithmetic encoding is performed based on whether the absolute value is equal to 1.
[0124] Step 4, in the attribute residual component Res i When the absolute value is greater than 1, utilize the context to evaluate the attribute residual component Res. i Arithmetic encoding is performed based on whether the absolute value equals 2.
[0125] Step 5, in the attribute residual component Res i When the absolute value is greater than 2, use the context pair (Res) i The absolute value minus 3) is used for exponential Golomb coding. When the attribute information is reflectance, a 3rd order exponential Golomb code is used; when the attribute information is color, a 1st order exponential Golomb code is used.
[0126] Currently, point cloud attribute encoding involves encoding multiple attributes one by one, such as encoding the color attribute first and then the reflectivity attribute. However, compressing each attribute individually makes it impossible to encode or decode only parts of the point cloud. For example, decoding requires decoding the color attribute of all points in the point cloud first, and then decoding the reflectivity attribute of all points in the point cloud, making it impossible to decode the attribute information of only some points in the point cloud. This results in poor flexibility in the encoding and decoding of point cloud attribute information.
[0127] To address the aforementioned technical issues, this application encodes the attribute information of points in the point cloud point cloud point by point during encoding. For example, it first encodes all attribute information of the previous point in the point cloud, and then encodes all attribute information of the next point in the point cloud. This allows for decoding of the attribute information of any one or several points in the point cloud, thereby improving the flexibility of point cloud attribute information encoding and decoding. Furthermore, this application allows for parallel encoding and decoding of the attribute information of each point, reducing encoding and decoding complexity and improving the efficiency of point cloud encoding and decoding.
[0128] The technical solutions of the embodiments of this application will be described in detail below through some examples. The following embodiments can be combined with each other, and the same or similar concepts or processes may not be described again in some embodiments.
[0129] First, taking the encoding end as an example, the encoding method for point cloud attributes provided in the embodiments of this application will be described.
[0130] Figure 4 This is a flowchart illustrating a point cloud attribute encoding method according to an embodiment of this application. The executing entity of this method is a device with the function of encoding point cloud attribute information, such as a point cloud encoding device. This point cloud encoding device can be the point cloud encoding equipment described above or a part thereof. For ease of description, the following embodiment uses a point cloud encoding device as an example for illustration. Figure 4 As shown, the method in this embodiment includes:
[0131] S401. Obtain a point cloud, where each point in the point cloud includes N attribute information.
[0132] Where N is a positive integer greater than 1.
[0133] The point cloud in this application embodiment can refer to the overall point cloud or a partial point cloud, such as a partial point cloud obtained through an octree or other means, or a subset of the overall point cloud.
[0134] Point cloud encoding devices can acquire point clouds in the following ways:
[0135] Method 1: If the point cloud encoding device has a point cloud acquisition function, then the point cloud can be acquired by the point cloud encoding device.
[0136] Method 2: The point cloud is obtained by the point cloud encoding device from other storage devices. For example, the point cloud acquisition device stores the acquired point cloud in a storage device, and the point cloud encoding device reads the point cloud from that storage device.
[0137] Method 3: The point cloud mentioned above is obtained by the point cloud encoding device from the point cloud acquisition device. For example, the point cloud acquisition device sends the acquired point cloud to the point cloud encoding device.
[0138] If the above point cloud is a complete point cloud, the point cloud encoding device will obtain the complete point cloud in the above manner as the research object of this application for subsequent encoding steps.
[0139] If the aforementioned point cloud is a partial point cloud, the point cloud encoding device will divide the obtained overall point cloud into partial point clouds. For example, the point cloud encoding device may use methods such as octrees or quadtrees to divide the overall point cloud, and take the partial point cloud corresponding to a node as the research object of this application for subsequent encoding steps.
[0140] After obtaining the point cloud using the above method, geometric encoding and attribute encoding are performed on the points in the point cloud. For example, geometric encoding is performed first, followed by attribute encoding. This application mainly relates to attribute encoding of point clouds.
[0141] The aforementioned N types of attribute information include color attributes, reflectivity attributes, normal vector attributes, material attributes, etc. This application does not impose any limitations on these.
[0142] S402. After the encoding of the N attribute information of the previous point is completed, determine the values to be encoded corresponding to the N attribute information of the current point.
[0143] In this application, point cloud attribute encoding is performed point-by-point. For example, the N attribute information of the previous point in the point cloud is encoded, and then the N attribute information of the next point in the point cloud is encoded. In this way, the N attribute information of each point in the point cloud is independent of each other and does not interfere with each other, which makes it easier for the decoding end to decode the attribute information of one or several points in the point cloud, thereby improving the encoding and decoding flexibility of the point cloud.
[0144] The current point can be understood as the point in the point cloud that is being encoded. When encoding the current point, it is first necessary to determine whether the encoding of the N attribute information of the previous point has been completed. After the encoding of the N attribute information of the previous point has been completed, the N attribute information of the current point is encoded.
[0145] The encoding process of attribute information of all points in the point cloud is the same as that of the current point. This application uses the current point as an example for illustration.
[0146] When encoding the current point, the values to be encoded corresponding to the N attribute information of the current point are determined. The encoding methods used for the N attribute information can be the same or different, and this application does not impose any restrictions on this. The values to be encoded can be understood as data that undergoes entropy encoding.
[0147] In some embodiments, each of the N attribute information of the current point uses the same encoding method, and correspondingly, the type of the value to be encoded for each of the N attribute information is also the same.
[0148] In some embodiments, the encoding method used for each of the N attribute information of the current point is different, and correspondingly, the type of the value to be encoded for each of the N attribute information is also different.
[0149] In some embodiments, some of the N attribute information of the current point uses the same encoding method, while some of the attribute information uses different encoding methods. Correspondingly, the types of the values to be encoded for some of the N attribute information are the same, while the types of the values to be encoded for some of the attribute information are different.
[0150] In some embodiments, the value to be encoded corresponding to each of the N attribute information includes any one of the following: the residual value of the attribute information, the transformation coefficient of the attribute information, and the transformation coefficient of the attribute residual.
[0151] In some embodiments, when encoding the N attribute information of the current point, the N attribute information can be encoded sequentially according to a preset encoding order. For example, the color attribute of the current point can be encoded first, followed by the reflectivity attribute. Alternatively, the reflectivity attribute can be encoded first, followed by the color attribute. This application does not restrict the encoding order of the N attribute information of the current point; it can be determined according to actual needs. In some embodiments, the N attribute information of the current point can also be encoded in parallel to improve encoding efficiency.
[0152] It should be noted that if the encoding end uses a preset encoding order to encode the N attribute information of the current point, the decoding end will also decode the N attribute information of the current point sequentially according to the same encoding order. Optionally, the encoding order of the N attribute information is the default, in which case the decoding end will decode the N attribute information of the current point sequentially according to the default encoding order. Optionally, if the encoding end uses a different encoding order for the N attribute information than the default, the encoding end will instruct the decoding end to use that encoding order, so that the decoding end will decode the N attribute information of the current point sequentially according to the default encoding order, ensuring consistency between encoding and decoding.
[0153] The methods by which this application determines the values to be encoded corresponding to the N attribute information of the current point in S402 above include, but are not limited to, the following:
[0154] Method 1: If the value to be encoded includes the residual value of the j-th attribute information of the current point or the transformation coefficient of the attribute residual, then the above S402 includes the following steps S402-A1 to S402-A4:
[0155] S402-A1. For the j-th attribute information out of N attribute information, determine K reference points for the current point from the coded points in the point cloud.
[0156] Where K is a positive integer, and j is any value in N.
[0157] In this first method, we will take the j-th attribute among the N attribute information of the current point as an example. It should be noted that each of the N attribute information of the current point can use this first method to determine the value to be encoded. Alternatively, one or more of the N attribute information of the current point can use this first method to determine the value to be encoded; this application does not impose any restrictions on this.
[0158] If the j-th attribute information of the current point is determined to be encoded using method one, first execute S402-A1 above to determine the K reference points of the current point.
[0159] In some embodiments, the K reference points of the current point are also called the K prediction points of the current point, or the K neighbor points of the current point.
[0160] In this step, the methods for determining the K reference points of the current point include, but are not limited to, the following examples:
[0161] Example 1: Reorder the points in the point cloud to obtain the Morton order or Hilbert order of the point cloud. Among the first maxNumOfNeighbours (maximum number of neighboring points) points in the Morton order or Hilbert order, find the K points closest to the current point.
[0162] Optionally, maxNumOfNeighbours defaults to 128, k defaults to 3, and the distance is calculated using Manhattan distance, i.e., d = |x1-x2| + |y1-y2| + |z1-z2|. Alternatively, other distance calculation methods can also be used.
[0163] In one possible implementation, the Morton order of the point cloud can be determined by: obtaining the coordinates of all point clouds and sorting them according to Morton order 1, such as... Figure 5A As shown.
[0164] In some embodiments, a fixed value (j1,j2,j3) is added to the coordinates (x,y,z) of all point clouds, and the Morton codes corresponding to the point clouds are generated using the new coordinates (x+j1,y+j2,z+j3). The Morton order 2 is then obtained according to the Morton sort, as shown below. Figure 5B As shown. Note that... Figure 5A Move A, B, C, and D to... Figure 5B The Morton codes change at different positions within the code, but their relative positions remain unchanged. Additionally, in... Figure 5B In the problem, point D has a Morton code of 23, and its neighbor point B has a Morton code of 21. Therefore, point B can be found by searching at most two points forward from point D. However, Figure 5A In this case, it takes a maximum of 14 points to search forward from point D (Morton code 16) to find point B (Morton code 2).
[0165] According to the Morton order, find the nearest predicted point of the current point. For example, in Morton order 1, select the first N1 points of the current point as candidates, where N1 is greater than or equal to 1. In Morton order 2, select the first N2 points of the current point as candidates, where N2 is greater than or equal to 1.
[0166] The above N1 points and N2 points constitute maxNumOfNeighbours. In maxNumOfNeighbours, the distance d from each point to the current point is calculated. The coordinates of the current point are (x, y, x), and the coordinates of the candidate points are (x1, y1, z1). Optionally, the distance d is calculated as d = |x - x1| + |y - y1| + |z - z1|. From these N1 + N2 points, the K decoded points with the smallest distance are selected as the reference points of the current point.
[0167] Example 2 involves reordering the points in a point cloud to obtain either a Morton order or a Hilbert order. Based on the spatial relationships and distances within the point cloud within the Morton or Hilbert order, K reference points are determined for the current point. The specific steps include:
[0168] Step 11, calculate the initial right shift for point cloud sampling: Determine the initial neighbor range size for LOD partitioning search, i.e., determine the initial right shift bits (the initial neighbor range size is 2N0). Here, N0 is the minimum value within which a point in the point cloud searches for its neighbors, satisfying the condition that the average number of neighbors for each point is greater than or equal to 1. If, under this condition, the proportion of sampled points having neighbors is less than 0.6, the neighbor range is expanded once, i.e., the N0 value is increased by 3. After obtaining this N0, N0+6 is the right shift bit corresponding to the current block, and N0+9 is the initial right shift bit corresponding to the parent block.
[0169] Step 12, the point cloud is traversed in a certain order, such as... Figure 5C As shown, the current point P to be decoded searches for its nearest neighbor among the decoded points within the parent block of its own block B and its coplanar, collinear, and contiguous neighboring blocks (limited to the first maxNumOfNeighbours points). If not enough neighbors are found, the search continues forward within the layer by maxNumOfNeighbours points to find the nearest neighbor of the current point.
[0170] Step 13: Among all neighbor candidate points, calculate the Manhattan distance d = |x-x1|+|y-y1|+|z-z1| from each point (x1,y1,z1) to the current point to be decoded (x,y,z). Determine the maximum distance value among the p points with the smallest distance. Take all neighbor candidate points with a distance less than or equal to the maximum distance value as the neighbors of the current point, that is, determine the K closest points as the reference points of the current point.
[0171] Example 3 involves reordering the points in a point cloud to obtain its Hilbert order, grouping the points according to the Hilbert order, and then finding the K reference points for the current point within its group. The specific steps include:
[0172] Step 21, grouping based on Hilbert codes.
[0173] After reordering, the geometric points of the point cloud are grouped sequentially, with points having the same L bits after their Hilbert code grouped together. If the total number of geometric points in a group is greater than or equal to 8, then finer subdivision is performed within that group. During finer subdivision, every four points are grouped together sequentially. If the last group has less than four points, it is merged with the second-to-last group. Fine subdivision ensures that Ki ≤ 8. If the total number of geometric points in a group is less than or equal to 8, no fine subdivision is performed.
[0174] Step 22, predict the weighted attributes of the same group.
[0175] Under the Hilbert order, find the K points closest to the current point from the maxNumOfNeighbours points preceding the first point in the group to which the current point belongs.
[0176] The optional values are maxNumOfNeighbours (default value is 128) and k (default value is 3).
[0177] Optionally, the distance can be calculated using the Manhattan distance, i.e., d = |x1-x2| + |y1-y2| + |z1-z2|.
[0178] It should be noted that the methods for determining the K reference points of the current point in the embodiments of this application include, but are not limited to, the three examples above.
[0179] After determining the K reference points for the current point according to the above examples, perform the following steps S402-A2.
[0180] S402-A2: Based on the j-th attribute information corresponding to K reference points, determine the predicted value of the j-th attribute information of the current point.
[0181] For example, the average value of the j-th attribute information corresponding to each of the K reference points is used as the predicted value of the j-th attribute information of the current point.
[0182] For example, the weighted average of the j-th attribute information corresponding to K reference points is used as the predicted value of the j-th attribute information of the current point.
[0183] In one example, the attribute weights of the reference point are determined according to the following formula (1):
[0184]
[0185] Among them, w ij Let (xi, yi, zi) be the attribute weight of the j-th neighbor of the current point i, (xi, yi, zi) be the geometric information of the current point, and (xij, yij, zij) be the geometric information of the j-th neighbor.
[0186] Optionally, the weights in formula (1) can be calculated using different weights for the components in the x, y, and z directions. In this case, the weight calculation for each neighbor becomes as shown in formula (2):
[0187]
[0188] Where 'a' is the weight coefficient of the first component of the current point, 'b' is the weight coefficient of the second component of the current point, and 'c' is the weight coefficient of the third component of the current point. Optionally, 'a', 'b', and 'c' can be obtained by looking up a table or are preset fixed values.
[0189] After determining the attribute weights of neighboring points according to the above formula, the attribute prediction value of the current point is calculated according to the following formula (3):
[0190]
[0191] in, Let j be the reconstructed value of the j-th attribute information of the j-th neighbor point, where j = 0, 1, ..., k. This is the predicted value of the j-th attribute information for the current point.
[0192] In another example, the weights for each of the K points are based on distance and other parameters. Specifically, the weight of each reference point is w = 1 / d, and the optimized weight of neighbor candidate points whose distance equals the maximum distance value is wk = (1 / d) * dwk, where the size of dwk is the minimum between the Qstep (attribute quantization step size) and the number of neighbor candidate points whose distance equals the maximum distance value. The weighted average of the attribute information of the K reference points is calculated to obtain the predicted value of the attribute information of the current point.
[0193] Optional, K is less than or equal to 16.
[0194] In some embodiments, if there are duplicate points in the point cloud, that is, points with the same geometric information in the point cloud are called duplicate points, and the current point is one of the duplicate points, then the previous duplicate point of the current point can be determined as the reference point of the current point, i.e., K=1, and then the reconstructed value of the j-th attribute information of the duplicate point can be determined as the predicted value of the j-th attribute information of the current point.
[0195] Before performing the above steps, it is necessary to sort the duplicate points in the point cloud. The methods for sorting duplicate points include, but are not limited to, the following:
[0196] Method 1: Sort the N attribute information of the duplicate points separately according to the preset encoding order.
[0197] For example, a point cloud contains 10 repeating points and N attribute information, including attribute A and attribute B. The encoding order is to encode attribute A first, then attribute B. Thus, for attribute A, the 10 repeating points are sorted in ascending order of magnitude, resulting in their ranking under attribute A. When predicting attribute A for the current point, the previous repeating point 1 is found in the ranking under attribute A, and the reconstructed attribute A value of repeating point 1 is determined as the predicted attribute A value for the current point. Similarly, for attribute B, the 10 repeating points are sorted in ascending order of magnitude, resulting in their ranking under attribute B. When predicting attribute B for the current point, the previous repeating point 2 is found in the ranking under attribute B, and the reconstructed attribute B value of repeating point 2 is determined as the predicted attribute B value for the current point.
[0198] In one example, the 10 repeating points can be sorted first according to the size of attribute A. Then, the remaining points with the same attribute A among these 10 repeating points can be sorted according to the size of attribute B to obtain a sort of 10 repeating points. In this sort, the previous repeating point of the current point is found and determined as the reference point of the current point. Then, based on the N attribute information of the reference point, the predicted values of the N attribute information of the current point are determined.
[0199] Method 2: Sort the repeated points based on the magnitude of one of the N attribute information.
[0200] For example, based on the size of the color attribute, the repeated points are sorted in ascending order, and in this sorting, the previous repeated point of the current point is determined as the reference point of the current point.
[0201] After determining the predicted value of the j-th attribute information of the current point according to the above method, the following steps S402-A3 are executed.
[0202] S402-A3. Determine the residual value of the j-th attribute information based on the original value and the predicted value of the j-th attribute information at the current point.
[0203] For example, the difference between the original value and the predicted value of the j-th attribute information at the current point is determined as the residual value of the j-th attribute information at the current point.
[0204] S402-A4. Based on the residual value of the j-th attribute information, determine the value to be encoded corresponding to the j-th attribute information of the current point.
[0205] In one example, the residual value of the j-th attribute information is determined as the value to be encoded corresponding to the j-th attribute information of the current point.
[0206] In another example, the residual value of the j-th attribute information is transformed to obtain the transformation coefficient of the attribute residual of the j-th attribute information at the current point. The transformation coefficient of the attribute residual of the j-th attribute information is determined as the value to be encoded corresponding to the j-th attribute information at the current point.
[0207] For example, when the K reference points of the current point are determined using the method in Example 2 above, a K_i-ary DCT transformation (K_i = 2…8) is performed on the residual value of the j-th attribute information of each point in the group to which the current point belongs, to obtain the value to be encoded corresponding to the j-th attribute information of the current point.
[0208] When K_i = 1, no transformation calculation is performed; the attribute residual value is directly entropy encoded or quantized and then entropy encoded.
[0209] Optionally, the DCT transform matrix can be magnified by 512 times to achieve fixed-point estimation.
[0210] Based on the above method one, the attribute residual value or transformation coefficient of the j-th attribute information of the current point can be determined.
[0211] Method 2: If the value to be encoded includes the transformation coefficients of the j-th attribute information of the current point, then the above S402 includes the following steps S402-B1 to S402-B2:
[0212] S402-B1. Transform the j-th attribute information of the current point to obtain the transformation coefficient of the j-th attribute information, where j is any value in N.
[0213] For example, the point cloud is grouped to obtain the group to which the current point belongs, and the j-th attribute information of the points in the group to be transformed to obtain the transformation coefficient of the j-th attribute information of the current point.
[0214] This step does not restrict the way point clouds are grouped; any existing grouping method can be used.
[0215] S402-B2, Determine the transformation coefficient of the j-th attribute information as the value to be encoded corresponding to the j-th attribute information of the current point.
[0216] In this second method, the transformation coefficient of the j-th attribute information of the current point is determined, and the transformation coefficient is determined as the value to be encoded corresponding to the j-th attribute information of the current point.
[0217] In some embodiments, among the N attribute information of the current point, all attribute information is determined to be encoded using either method one or method two described above.
[0218] In some embodiments, among the N attribute information of the current point, some attribute information is used to determine the value to be encoded using the method described above (method 1), and some attribute information is used to determine the value to be encoded using the method described above (method 2).
[0219] It should be noted that the methods for determining the values to be encoded corresponding to the N attribute information of the current point in this embodiment include, but are not limited to, the above-mentioned method one and method two.
[0220] After determining the values to be encoded corresponding to the N attribute information of the current point according to the above method, the following step S403 is executed.
[0221] S403. Encode the values to be encoded corresponding to the N attribute information of the current point to obtain the bit stream of the point cloud.
[0222] The implementation methods of S403 mentioned above include, but are not limited to, the following:
[0223] Method 1: Write the values to be encoded corresponding to the N attribute information of the current point into the bit stream according to the preset encoding order.
[0224] In this method, the values to be encoded corresponding to the N attribute information of the current point are directly encoded into the bit stream.
[0225] Optionally, before encoding the values to be encoded corresponding to the N attribute information of the current point into the bitstream, the values to be encoded corresponding to the N attribute information of the current point are quantized, and the quantized values to be encoded corresponding to the N attribute information of the current point are encoded into the bitstream.
[0226] In Method 1, the decoding end decodes the bitstream and can directly obtain the values to be encoded corresponding to the N attribute information of the current point. Then, based on the values to be encoded corresponding to the N attribute information of the current point, the reconstructed values corresponding to the N attribute information of the current point are obtained. The whole process is simple, reducing the complexity of encoding and decoding and improving the efficiency of encoding and decoding.
[0227] Method 2: Use run-length encoding to encode the values to be encoded corresponding to the N attribute information of the current point.
[0228] Specifically, for the i-th attribute information among the N attribute information of the current point, if the value to be encoded corresponding to the i-th attribute information is not 0, then the length marker corresponding to the i-th attribute information is determined to be the first value, and run-length encoding is used to write the length marker and the value to be encoded corresponding to the i-th attribute information into the bit stream respectively.
[0229] The length marker mentioned above is used to indicate whether the value to be encoded corresponding to the i-th attribute information is 0.
[0230] The length marker written in the bitstream takes the first value, which indicates that the value to be encoded corresponding to the i-th attribute information of the current point is not 0.
[0231] Optionally, the first value mentioned above is 0.
[0232] Where i is a positive integer from 1 to N.
[0233] For example, the length marker mentioned above is represented by the character len(i).
[0234] For example, if the i-th attribute information is A, and the value to be encoded corresponding to A is not equal to 0, then len(A) = 0 and the value to be encoded corresponding to the attribute information A at the current point are encoded into the bitstream. For example, if the value to be encoded corresponding to the attribute information A at the current point is the residual value res(A), then len(A) = 0 and res(A) are encoded into the bitstream.
[0235] Based on the above method, run-length encoding can be performed on the value to be encoded corresponding to each of the N attribute information of the current point to obtain the bit stream.
[0236] In some embodiments, during run-length encoding, the same attribute information of each point in the point cloud can be treated as a whole and run-length encoded. For example, according to the method described above, the values to be encoded corresponding to N attribute information of each point in the point cloud are determined point by point. For each of the N attribute information, run-length encoding is performed on the values to be encoded corresponding to all points in the point cloud under that attribute information to obtain the bitstream of the point cloud under that attribute information. Taking the color attribute as an example, the values to be encoded for the color attribute of each point in the point cloud are treated as a whole and run-length encoded to obtain the bitstream of the point cloud under the color attribute. During run-length encoding, the length of the point cloud with zero color attribute residual is recorded as len(A). When the residual is not zero, len(A) = 0 and the color attribute residual corresponding to the current point are encoded.
[0237] In some embodiments, S403 includes:
[0238] S403-A: Using the same entropy encoder or different entropy encoders, the values to be encoded corresponding to the N attribute information of the current point are encoded respectively.
[0239] In other words, the N attribute information of the point cloud can be encoded using the same entropy encoder or different entropy encoders.
[0240] In some embodiments, the entropy encoder employs at least one of exponential Golomb coding, arithmetic coding, and adaptive context arithmetic coding.
[0241] In some embodiments, if the entropy encoder adopts an adaptive context arithmetic encoding method, then the above S403-A1, which uses the same entropy encoder or different entropy encoders to encode the values to be encoded corresponding to the N attribute information of the current point, includes at least the following implementation examples:
[0242] Example 1 uses the same entropy encoder and the same context model to encode the values to be encoded for the N attribute information of the current point.
[0243] Example 1 uses the same entropy encoder and different context models to encode the values to be encoded for the N attribute information of the current point.
[0244] Example 3 uses different entropy encoders and different context models to encode the values to be encoded for the N attribute information of the current point.
[0245] Example 4 uses different entropy encoders and the same context model to encode the values to be encoded for the N attribute information of the current point.
[0246] In some embodiments, when using the above context model for attribute information encoding, it is necessary to initialize the context model, specifically including the following examples:
[0247] Example 1: If the same entropy encoder and the same context model are used to encode the values to be encoded corresponding to the N attribute information of the current point, the context model is initialized before encoding the N attribute information, or the context model is initialized when encoding the first attribute information among the N attribute information.
[0248] Example 2: If the same entropy encoder and different context models are used to encode the values to be encoded corresponding to the N attribute information of the current point, the different context models are initialized before encoding the N attribute information.
[0249] Example 3: If different entropy encoders and different context models are used to encode the values to be encoded corresponding to the N attribute information of the current point, the different context models are initialized before encoding the N attribute information.
[0250] Example 4: If different entropy encoders and the same context model are used to encode the values to be encoded corresponding to the N attribute information of the current point, the context model is initialized before encoding the N attribute information.
[0251] The point cloud attribute encoding method provided in this application involves acquiring a point cloud, where each point includes N attribute information, where N is a positive integer greater than 1. After the encoding of the N attribute information of the previous point is completed, the values to be encoded corresponding to the N attribute information of the current point are determined. The values to be encoded corresponding to the N attribute information of the current point are then encoded to obtain the bitstream of the point cloud. In other words, this application encodes the attribute information of points in the point cloud point by point during encoding, for example, first encoding all attribute information of the previous point in the point cloud, and then encoding all attribute information of the next point in the point cloud. This allows for decoding of the attribute information of any one or several points in the point cloud, thereby improving the flexibility of point cloud attribute encoding and decoding. Furthermore, this application allows for parallel encoding or decoding of the attribute information of each point, ensuring the random access requirements of point cloud encoding, greatly reducing the computational complexity of encoding and decoding multi-attribute point clouds, and improving the encoding and decoding efficiency of point clouds.
[0252] The above describes the point cloud encoding method provided in this application embodiment using the encoding end as an example. The following section will combine... Figure 6Taking the decoding end as an example, the technical solution of this application will be introduced.
[0253] Figure 6 This is a flowchart illustrating a point cloud attribute decoding method according to an embodiment of this application. The executing entity of this method is a device capable of decoding point cloud attribute information, such as a point cloud decoding device. This point cloud decoding device can be the point cloud decoding equipment described above or a part thereof. For ease of description, the following embodiment uses a point cloud decoding device as an example for illustration. Figure 6 As shown, it includes:
[0254] S601. Obtain the bitstream of the point cloud, where each point in the point cloud includes N attribute information.
[0255] Where N is a positive integer greater than 1.
[0256] S602. After the decoding of the N attribute information of the previous point is completed, the bit stream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point.
[0257] It should be noted that this embodiment involves the decoding process of point cloud attribute information, which is performed after the point cloud position information is decoded. The position information of the point cloud is also referred to as its geometric information.
[0258] In this embodiment, the decoded points can be understood as points whose geometric information has been decoded and points whose attribute information has been decoded. Specifically, the point cloud bitstream includes a geometric bitstream and an attribute bitstream. The decoding end first decodes the geometric bitstream of the point cloud to obtain the reconstructed values of the geometric information of the points in the point cloud. Then, the receiving end decodes the attribute bitstream of the point cloud to obtain the reconstructed values of the attribute information of the points in the point cloud. The geometric information and attribute information of the points in the point cloud are combined to obtain the decoded point cloud. This embodiment involves the decoding process of the point cloud attribute bitstream.
[0259] In the process of decoding the attribute code stream of a point cloud, the decoding process for each point in the point cloud is the same, taking the current point to be decoded in the point cloud as an example.
[0260] The current point to be decoded in this application includes N types of attribute information, such as color attribute, reflectivity attribute, normal vector attribute, material attribute, etc.
[0261] In some embodiments, the inclusion of N types of attribute information at the current point can be understood as all points in the point cloud including N types of attribute information. The decoding process of attribute information for all points in the point cloud is consistent with the decoding process of attribute information for the current point. This application embodiment uses the current point as an example for description.
[0262] This application encodes each point in the point cloud point by point during encoding, and correspondingly decodes each point in the point cloud point by point during decoding.
[0263] Specifically, when decoding the current point, it is first determined whether the decoding of the N attribute information of the previous point has been completed. If the decoding of the N attribute information of the previous point has been completed, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point.
[0264] In some embodiments, the value to be decoded corresponding to each of the N attribute information includes any one of the following: the residual value of the attribute information, the transformation coefficient of the attribute information, and the transformation coefficient of the attribute residual.
[0265] The methods for decoding the bitstream in S602 above to obtain the decoded values corresponding to the N attribute information of the current point include, but are not limited to, the following:
[0266] Method 1: According to the preset decoding order, decode the values to be decoded corresponding to the N attribute information of the current point in the bit stream, and obtain the values to be decoded corresponding to the N attribute information of the current point.
[0267] Method 2: For the i-th attribute information among the N attribute information of the current point, decode the bitstream to obtain the length marker corresponding to the i-th attribute information. If the value of the length marker is the first value (e.g., 0), continue decoding the bitstream to obtain the value to be encoded corresponding to the i-th attribute information.
[0268] The length marker is used to indicate whether the value to be encoded corresponding to the i-th attribute information is 0, and the first value is used to indicate that the value to be encoded corresponding to the i-th attribute information of the current point is not 0, where i is a positive integer from 1 to N.
[0269] For example, suppose the above N attribute information includes attributes A and B, and the value to be decoded is res(A). i ) and res(B i Taking point cloud as an example, we analyze the run length len(A) and residual value res(A) of each point in the point cloud point cloud point by point. i ), and len(B) and res(B) i Specifically, such as Figure 7 As shown, it includes the following steps:
[0270] Step 60, Begin.
[0271] Step 61: First, initialize i = 0, lenA = 0, and lenB = 0.
[0272] Step 62: Determine if lenA is greater than 0. If so, proceed to step 67, which determines resAi = 0 and sets lenA = lenA - 1 for the next point. Then, proceed to step 68 to parse attribute B of point i.
[0273] If lenA is found to be 0, it means that the residual value of attribute A at point i may not be 0. In this case, decode the bitstream and execute steps 63 to 65 to obtain resAi.
[0274] Step 63: Parse the bitstream and update lenA.
[0275] Step 64: Determine if the updated lenA is greater than 0. If yes, proceed to step 67; otherwise, proceed to step 65. If lenA is greater than 0, it means resAi is 0; if lenA is equal to 0, it means resAi is not 0.
[0276] Step 65: Parse the bitstream to obtain resAi.
[0277] Step 67: Set resAi = 0 and lenA = lenA - 1. Then execute step 68.
[0278] In this example, after the attribute information A of point i is decoded, the attribute information B of point i is decoded, instead of decoding the attribute information A of the next point. In other words, this application decodes the attribute information of the next point after all the attribute information of point i is decoded, thus achieving point-by-point decoding.
[0279] Step 68: Determine if lenB is greater than 0. If yes, proceed to step 72; otherwise, proceed to step 69.
[0280] The parsing process for attribute B is basically the same as that for attribute A, as described above.
[0281] Step 69: Parse the bitstream and update lenB.
[0282] Step 70: Determine if the updated lenB is greater than 0. If yes, proceed to step 72; otherwise, proceed to step 71. If lenB is greater than 0, it means resBi is 0; if lenB is equal to 0, it means resBi is not 0.
[0283] Step 71: Parse the bitstream to obtain resBi.
[0284] Step 72, let resBi = 0, and let lenB = lenB-1.
[0285] After the parsing of attributes A and B of point i is completed, step 73 is executed to parse the attributes A and B of the next point.
[0286] Step 73, let i = i + 1.
[0287] Step 74: Determine if the current i is less than M. If yes, return to step 62 above; otherwise, end.
[0288] Step 75, End.
[0289] In this embodiment, the attribute information of each point in the point cloud is decoded point by point. In this way, when it is necessary to decode part of the points in the point cloud, only N attribute information of the part of the points need to be decoded, and it is not necessary to decode the attribute information of other points in the point cloud, thereby improving the flexibility of decoding.
[0290] In some embodiments, the decoding of the bitstream in S602 above to obtain the values to be decoded corresponding to the N attribute information of the current point includes:
[0291] S602-A: Use the same entropy decoder or different entropy decoders to decode the bitstream and obtain the values to be decoded corresponding to the N attribute information of the current point.
[0292] In some embodiments, the entropy encoder employs at least one of exponential Golomb coding, arithmetic coding, and adaptive context arithmetic coding.
[0293] In some embodiments, if the entropy encoder employs an adaptive context arithmetic encoding method, then the above S602-A includes, but is not limited to, the following examples:
[0294] Example 1 uses the same entropy decoder and the same context model to decode the bitstream and obtain the values to be decoded corresponding to the N attribute information of the current point.
[0295] Example 2: Using the same entropy decoder and different context models, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point.
[0296] Example 3: Using different entropy decoders and different context models, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point.
[0297] Example 4: Using different entropy decoders and the same context model, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point.
[0298] When using a context model to decode a bitstream, the context model needs to be initialized. The initialization methods include the following examples:
[0299] Example 1: If the same entropy decoder and the same context model are used to decode the bitstream, the context model should be initialized before decoding the bitstream, or the context model should be initialized when decoding the first attribute information among N attribute information.
[0300] Example 2: If the same entropy decoder and different context models are used to decode the bitstream, the different context models are initialized before decoding the bitstream.
[0301] Example 3: If different entropy decoders and different context models are used to decode the bitstream, the different context models are initialized before decoding the bitstream.
[0302] Example 4: If different entropy decoders and the same context model are used to decode the bitstream, the context model is initialized before decoding the bitstream.
[0303] S603. Based on the values to be decoded corresponding to the N attribute information of the current point, obtain the reconstructed values corresponding to the N attribute information of the current point.
[0304] The implementation methods of the above S603 include, but are not limited to, the following:
[0305] Method 1: If the value to be decoded includes residual values of attribute information, then S603 above includes the following steps S603-A1 to S603-A3:
[0306] S603-A1. For the j-th attribute information among N attribute information, determine K reference points for the current point from the decoded points of the point cloud, where K is a positive integer and j is any value in N;
[0307] S603-A2. Based on the j-th attribute information corresponding to K reference points, determine the predicted value of the j-th attribute information of the current point;
[0308] S603-A3. Based on the predicted value and residual value of the j-th attribute information of the current point, determine the reconstructed value of the j-th attribute information of the current point.
[0309] Method 2: If the value to be decoded includes the transformation coefficients of the attribute residual, then the above S603 includes the following steps S603-B1 to S603-B4:
[0310] S603-B1. For the j-th attribute information among N attribute information, determine K reference points for the current point from the decoded points of the point cloud, where K is a positive integer and j is any value in N;
[0311] S603-B2. Based on the j-th attribute information corresponding to K reference points, determine the predicted value of the j-th attribute information of the current point;
[0312] S603-B3, Perform an inverse transformation on the transformation coefficients of the attribute residual corresponding to the j-th attribute information to obtain the residual value of the j-th attribute information;
[0313] S603-B4. Based on the predicted value and residual value of the j-th attribute information of the current point, determine the reconstructed value of the j-th attribute information of the current point.
[0314] Method 3: If the value to be decoded includes transformation coefficients of attribute information, then the above S603 includes the following steps S603-C1:
[0315] S603-C1. For the j-th attribute information among N attribute information, perform an inverse transformation on the transformation coefficients of the j-th attribute information to obtain the reconstructed value of the j-th attribute information.
[0316] It should be understood that the decoding method for point cloud attributes is the reverse process of the encoding method for point cloud attributes described above. The steps in the point cloud attribute decoding method can be referred to the corresponding steps in the point cloud attribute encoding method; to avoid repetition, they will not be repeated here.
[0317] The point cloud decoding method provided in this application obtains the bitstream of a point cloud, where each point includes N attribute information. After the decoding of the N attribute information of the previous point is completed, the bitstream is decoded to obtain the undecoded values corresponding to the N attribute information of the current point. Based on the undecoded values corresponding to the N attribute information of the current point, the reconstructed values corresponding to the N attribute information of the current point are obtained. That is, this application can decode the attribute information of any one or several points in the point cloud, thereby improving the flexibility of point cloud attribute information encoding and decoding. Furthermore, the decoding of attribute information of each point can be performed in parallel, greatly reducing the computational complexity of encoding and decoding multi-attribute point clouds and improving the decoding efficiency of point clouds.
[0318] The preferred embodiments of this application have been described in detail above with reference to the accompanying drawings. However, this application is not limited to the specific details of the above embodiments. Within the scope of the technical concept of this application, various simple modifications can be made to the technical solutions of this application, and these simple modifications all fall within the protection scope of this application. For example, the various specific technical features described in the above specific embodiments can be combined in any suitable manner without contradiction. To avoid unnecessary repetition, this application will not describe the various possible combinations separately. Furthermore, various different embodiments of this application can also be arbitrarily combined, as long as they do not violate the spirit of this application, they should also be considered as the content disclosed in this application.
[0319] It should also be understood that, in the various method embodiments of this application, the order of the above-mentioned processes does not imply the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of this application.
[0320] The above text combined Figures 1 to 7 The method embodiments of this application are described in detail below, in conjunction with... Figures 8 to 10 The following describes in detail the device embodiments of this application.
[0321] Figure 8 This is a schematic block diagram of a point cloud attribute encoding device according to an embodiment of this application.
[0322] like Figure 8 As shown, the point cloud attribute encoding device 10 may include:
[0323] Acquisition unit 11 is used to acquire point cloud, wherein each point in the point cloud includes N attribute information, and N is a positive integer greater than 1;
[0324] The determining unit 12 is used to determine the values to be encoded corresponding to the N attribute information of the current point after the encoding of the N attribute information of the previous point is completed;
[0325] The encoding unit 13 is used to encode the values to be encoded corresponding to the N attribute information of the current point to obtain the bit stream of the point cloud.
[0326] In some embodiments, the value to be encoded corresponding to each of the N attribute information includes any one of the following: the residual value of the attribute information, the transformation coefficient of the attribute information, and the transformation coefficient of the attribute residual.
[0327] In some embodiments, the encoding unit 13 is specifically used to write the values to be encoded corresponding to the N attribute information of the current point into the bitstream according to a preset encoding order; or,
[0328] For the i-th attribute information among the N attribute information of the current point, if the value to be encoded corresponding to the i-th attribute information is not 0, then the length marker corresponding to the i-th attribute information is determined to be a first value, and run-length encoding is used to write the length marker and the value to be encoded corresponding to the i-th attribute information into the bit stream respectively. The length marker is used to indicate whether the value to be encoded corresponding to the i-th attribute information is 0, and the first value is used to indicate that the value to be encoded corresponding to the i-th attribute information of the current point is not 0, where i is a positive integer from 1 to N.
[0329] In some embodiments, the encoding unit 13 is specifically used to encode the values to be encoded corresponding to the N attribute information of the current point using the same entropy encoder or different entropy encoders.
[0330] In some embodiments, the entropy encoder employs at least one of exponential Golomb coding, arithmetic coding, and adaptive context arithmetic coding.
[0331] In some embodiments, if the entropy encoder employs an adaptive context arithmetic encoding method, then in some embodiments, the encoding unit 13 is specifically used to encode the values to be encoded corresponding to the N attribute information of the current point using the same entropy encoder and the same context model; or...
[0332] Using the same entropy encoder and different context models, the values to be encoded corresponding to the N attribute information of the current point are encoded respectively; or...
[0333] Different entropy encoders and different context models are used to encode the values to be encoded corresponding to the N attribute information of the current point; or,
[0334] Using different entropy encoders and the same context model, the values to be encoded corresponding to the N attribute information of the current point are encoded respectively.
[0335] In some embodiments, the encoding unit 13 is further configured to initialize the context model before encoding the N attribute information when encoding the values to be encoded corresponding to the N attribute information respectively using the same entropy encoder and the same context model, or to initialize the context model when encoding the first attribute information among the N attribute information; or...
[0336] If the same entropy encoder and different context models are used to encode the values to be encoded corresponding to the N attribute information of the current point, the different context models are initialized respectively before encoding the N attribute information; or,
[0337] If different entropy encoders and different context models are used to encode the values to be encoded corresponding to the N attribute information of the current point, the different context models are initialized before encoding the N attribute information; or,
[0338] If different entropy encoders and the same context model are used to encode the values to be encoded corresponding to the N attribute information of the current point, the context model is initialized before encoding the N attribute information.
[0339] In some embodiments, the determining unit 12 is specifically configured to, for the j-th attribute information among the N attribute information, determine K reference points from the encoded points of the point cloud for the current point, where K is a positive integer and j is any value in N; determine the predicted value of the j-th attribute information of the current point based on the j-th attribute information corresponding to the K reference points; determine the residual value of the j-th attribute information based on the original value and the predicted value of the j-th attribute information of the current point; and determine the value to be encoded corresponding to the j-th attribute information of the current point based on the residual value of the j-th attribute information.
[0340] In some embodiments, the determining unit 12 is specifically used to determine the residual value of the j-th attribute information as the value to be encoded corresponding to the j-th attribute information of the current point; or, to transform the residual value of the j-th attribute information to obtain the transformation coefficient of the attribute residual of the j-th attribute information, and to determine the transformation coefficient of the attribute residual of the j-th attribute information as the value to be encoded corresponding to the j-th attribute information of the current point.
[0341] In some embodiments, the determining unit 12 is specifically used to transform the j-th attribute information among the N attribute information to obtain the transformation coefficient of the j-th attribute information, where j is any value in N; and to determine the transformation coefficient of the j-th attribute information as the value to be encoded corresponding to the j-th attribute information of the current point.
[0342] It should be understood that the device embodiments and method embodiments can correspond to each other, and similar descriptions can be referred to the method embodiments. To avoid repetition, further details will not be provided here. Specifically, Figure 8 The apparatus 10 shown can execute the above-described embodiment of the point cloud attribute encoding method, and the aforementioned and other operations and / or functions of each module in the apparatus 10 are respectively for implementing the method embodiment corresponding to the encoding device. For the sake of brevity, they will not be described in detail here.
[0343] Figure 9 This is a schematic block diagram of a point cloud attribute decoding device according to an embodiment of this application.
[0344] like Figure 9 As shown, the point cloud attribute decoding device 20 may include:
[0345] The acquisition unit 21 is used to acquire the bitstream of the point cloud, wherein each point in the point cloud includes N attribute information, and N is a positive integer greater than 1;
[0346] Decoding unit 22 is used to decode the bitstream after the decoding of N attribute information of the previous point of the current point is completed, so as to obtain the values to be decoded corresponding to the N attribute information of the current point respectively;
[0347] The reconstruction unit 23 is used to obtain the reconstruction values corresponding to the N attribute information of the current point based on the values to be decoded corresponding to the N attribute information of the current point.
[0348] In some embodiments, the value to be decoded corresponding to each of the N attribute information includes any one of the following: the residual value of the attribute information, the transformation coefficient of the attribute information, and the transformation coefficient of the attribute residual.
[0349] In some embodiments, the decoding unit 22 is specifically used to decode the values to be decoded corresponding to the N attribute information of the current point in the bitstream according to a preset decoding order, to obtain the values to be decoded corresponding to the N attribute information of the current point; or, for the i-th attribute information among the N attribute information of the current point, the bitstream is decoded to obtain the length marker corresponding to the i-th attribute information, and if the value of the length marker is a first value, the bitstream is decoded again to obtain the value to be encoded corresponding to the i-th attribute information, wherein the length marker is used to indicate whether the value to be encoded corresponding to the i-th attribute information is 0, the first value is used to indicate that the value to be encoded corresponding to the i-th attribute information of the current point is not 0, and i is a positive integer from 1 to N.
[0350] In some embodiments, the decoding unit 22 is specifically used to decode the bitstream using the same entropy decoder or different entropy decoders to obtain the values to be decoded corresponding to the N attribute information of the current point.
[0351] In some embodiments, the entropy decoder employs at least one of the following decoding methods: exponential Columbus decoding, arithmetic decoding, and adaptive contextual arithmetic decoding.
[0352] In some embodiments, if the entropy decoder adopts an adaptive context arithmetic decoding method, then the decoding unit 22 is specifically used to decode the bitstream using the same entropy decoder and the same context model to obtain the values to be decoded corresponding to the N attribute information of the current point; or,
[0353] Using the same entropy decoder and different context models, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point; or...
[0354] By employing different entropy decoders and different context models, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point; or,
[0355] By using different entropy decoders and the same context model, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point.
[0356] In some embodiments, the decoding unit 22 is further configured to initialize the context model before decoding the bitstream if the same entropy decoder and the same context model are used to decode the bitstream, or to initialize the context model when decoding the first attribute information among the N attribute information; or...
[0357] If the same entropy decoder and different context models are used to decode the bitstream, the different context models are initialized separately before decoding the bitstream; or,
[0358] If different entropy decoders and different context models are used to decode the bitstream, the different context models are initialized respectively before decoding the bitstream; or,
[0359] If different entropy decoders and the same context model are used to decode the bitstream, the context model is initialized before decoding the bitstream.
[0360] In some embodiments, if the value to be decoded includes residual values of attribute information, the reconstruction unit 23 is specifically configured to, for the j-th attribute information among the N attribute information, determine K reference points from the decoded points of the point cloud for the current point, where K is a positive integer and j is any value in N; determine the predicted value of the j-th attribute information of the current point based on the j-th attribute information corresponding to the K reference points; and determine the reconstructed value of the j-th attribute information of the current point based on the predicted value and residual value of the j-th attribute information of the current point.
[0361] In some embodiments, if the value to be decoded includes the transformation coefficients of the attribute residual, the reconstruction unit 23 is specifically configured to, for the j-th attribute information among the N attribute information, determine K reference points from the decoded points of the point cloud for the current point, where K is a positive integer and j is any value in N; determine the predicted value of the j-th attribute information of the current point based on the j-th attribute information corresponding to the K reference points; perform an inverse transformation on the transformation coefficients of the attribute residual corresponding to the j-th attribute information to obtain the residual value of the j-th attribute information; and determine the reconstructed value of the j-th attribute information of the current point based on the predicted value and the residual value of the j-th attribute information of the current point.
[0362] In some embodiments, if the value to be decoded includes transformation coefficients of attribute information, the reconstruction unit 23 is specifically used to perform an inverse transformation on the transformation coefficients of the j-th attribute information among the N attribute information to obtain the reconstructed value of the j-th attribute information.
[0363] It should be understood that the device embodiments and method embodiments can correspond to each other, and similar descriptions can be referred to the method embodiments. To avoid repetition, further details will not be provided here. Specifically, Figure 9 The apparatus 20 shown can execute a method embodiment for decoding point cloud attributes, and the aforementioned and other operations and / or functions of each module in the apparatus 20 are respectively for implementing the method embodiment corresponding to the decoding device. For the sake of brevity, they will not be described in detail here.
[0364] The apparatus of this application embodiment has been described above from the perspective of functional modules in conjunction with the accompanying drawings. It should be understood that this functional module can be implemented in hardware, in software instructions, or in a combination of hardware and software modules. Specifically, the steps of the method embodiments in this application can be completed by integrated logic circuits in the processor's hardware and / or by software instructions. The steps of the method disclosed in this application embodiment can be directly embodied as being executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. Optionally, the software module can reside in a mature storage medium in the art, such as random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, etc. This storage medium is located in memory, and the processor reads information from the memory and, in conjunction with its hardware, completes the steps in the above method embodiments.
[0365] Figure 10 This is a schematic block diagram of the electronic device provided in the embodiments of this application. Figure 10 The electronic device can be the point cloud encoding device or the point cloud decoding device mentioned above, or it can have the functions of both encoding and decoding devices.
[0366] like Figure 10 As shown, the electronic device 900 may include:
[0367] The system includes a memory 910 and a processor 920. The memory 910 stores a computer program 911 and transfers the program code 911 to the processor 920. In other words, the processor 920 can retrieve and run the computer program 911 from the memory 910 to implement the methods described in the embodiments of this application.
[0368] For example, the processor 920 can be used to execute the steps in the method 200 described above according to the instructions in the computer program 911.
[0369] In some embodiments of this application, the processor 920 may include, but is not limited to:
[0370] General-purpose processors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc.
[0371] In some embodiments of this application, the memory 910 includes, but is not limited to:
[0372] Volatile memory and / or non-volatile memory. Non-volatile memory can be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. Volatile memory can be random access memory (RAM), which is used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as Static RAM (SRAM), Dynamic RAM (DRAM), Synchronous DRAM (SDRAM), Double Data Rate SDRAM (DDR SDRAM), Enhanced Synchronous DRAM (ESDRAM), Synchronous Link DRAM (SLDRAM), and Direct Rambus RAM (DR RAM).
[0373] In some embodiments of this application, the computer program 911 may be divided into one or more modules, which are stored in the memory 910 and executed by the processor 920 to complete the page recording method provided in this application. The one or more modules may be a series of computer program instruction segments capable of performing specific functions, which describe the execution process of the computer program 911 in the electronic device 900.
[0374] like Figure 10 As shown, the electronic device 900 may further include:
[0375] Transceiver 930, which can be connected to processor 920 or memory 910.
[0376] The processor 920 can control the transceiver 930 to communicate with other devices; specifically, it can send information or data to other devices or receive information or data sent by other devices. The transceiver 930 may include a transmitter and a receiver. The transceiver 930 may further include antennas, and the number of antennas may be one or more.
[0377] It should be understood that the various components in the electronic device 900 are connected through a bus system, which includes a data bus, a power bus, a control bus, and a status signal bus.
[0378] According to one aspect of this application, a computer storage medium is provided that stores a computer program thereon, which, when executed by a computer, enables the computer to perform the methods of the above-described method embodiments. Alternatively, embodiments of this application also provide a computer program product containing instructions that, when executed by a computer, cause the computer to perform the methods of the above-described method embodiments.
[0379] According to another aspect of this application, a computer program product or computer program is provided, comprising computer instructions stored in a computer-readable storage medium. A processor of a computer device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computer device to perform the method described in the above-described method embodiments.
[0380] In other words, when implemented using software, it can be implemented wholly or partially in the form of a computer program product. This computer program product includes one or more computer instructions. When these computer program instructions are loaded and executed on a computer, all or part of the processes or functions described in the embodiments of this application are generated. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, the computer instructions can be transmitted from one website, computer, server, or data center to another via wired (e.g., coaxial cable, fiber optic, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) means. The computer-readable storage medium can be any available medium that a computer can access or a data storage device such as a server or data center that integrates one or more available media. The available medium can be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., digital video disc (DVD)), or a semiconductor medium (e.g., solid-state disk (SSD)).
[0381] Those skilled in the art will recognize that the modules and algorithm steps of the various examples described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.
[0382] In the several embodiments provided in this application, it should be understood that the disclosed systems, apparatuses, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of modules is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple modules or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the coupling or direct coupling or communication connection shown or discussed may be through some interfaces; the indirect coupling or communication connection between apparatuses or modules may be electrical, mechanical, or other forms.
[0383] The modules described as separate components may or may not be physically separate. The components shown as modules may or may not be physical modules; that is, they may be located in one place or distributed across multiple network units. Some or all of the modules can be selected to achieve the purpose of this embodiment according to actual needs. For example, the functional modules in the various embodiments of this application may be integrated into one processing module, or each module may exist physically separately, or two or more modules may be integrated into one module.
[0384] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any variations or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.
Claims
1. A method for encoding point cloud attributes, characterized in that, include: A point cloud is obtained, wherein each point in the point cloud includes N attribute information, including color attribute, reflectivity attribute, normal vector attribute, and material attribute, and N is a positive integer greater than 1; After the encoding of N attribute information of the previous point is completed, the values to be encoded corresponding to the N attribute information of the current point are determined respectively; The values to be encoded corresponding to the N attribute information of the current point are encoded to obtain the bitstream of the point cloud. The N attribute information of the current point is stored together in the bitstream and is independent of the N attribute information of other points, so that the decoding end can independently decode the attribute information of any one or several points in the point cloud.
2. The method according to claim 1, characterized in that, The value to be encoded for each of the N attribute information includes any one of the following: the residual value of the attribute information, the transformation coefficient of the attribute information, and the transformation coefficient of the attribute residual.
3. The method according to claim 1, characterized in that, The process of encoding the values to be encoded corresponding to the N attribute information of the current point includes: According to a preset encoding order, the values to be encoded corresponding to the N attribute information of the current point are written into the bitstream; or, For the i-th attribute information among the N attribute information of the current point, if the value to be encoded corresponding to the i-th attribute information is not 0, then the length marker corresponding to the i-th attribute information is determined to be a first value, and run-length encoding is used to write the length marker and the value to be encoded corresponding to the i-th attribute information into the bit stream respectively. The length marker is used to indicate whether the value to be encoded corresponding to the i-th attribute information is 0, and the first value is used to indicate that the value to be encoded corresponding to the i-th attribute information of the current point is not 0, where i is a positive integer from 1 to N.
4. The method according to any one of claims 1-3, characterized in that, The process of encoding the values to be encoded corresponding to the N attribute information of the current point includes: The same entropy encoder or different entropy encoders are used to encode the values to be encoded corresponding to the N attribute information of the current point.
5. The method according to claim 4, characterized in that, The entropy encoder employs at least one of the following encoding methods: exponential Golomb coding, arithmetic coding, and adaptive context arithmetic coding.
6. The method according to claim 5, characterized in that, If the entropy encoder adopts an adaptive context arithmetic encoding method, then the process of encoding the values to be encoded corresponding to the N attribute information of the current point using the same entropy encoder or different entropy encoders includes: Using the same entropy encoder and the same context model, the values to be encoded corresponding to the N attribute information of the current point are encoded respectively; or... Using the same entropy encoder and different context models, the values to be encoded corresponding to the N attribute information of the current point are encoded respectively; or... Different entropy encoders and different context models are used to encode the values to be encoded corresponding to the N attribute information of the current point; or, Using different entropy encoders and the same context model, the values to be encoded corresponding to the N attribute information of the current point are encoded respectively.
7. The method according to claim 6, characterized in that, The method further includes: If the same entropy encoder and the same context model are used to encode the values to be encoded corresponding to the N attribute information of the current point, the context model is initialized before encoding the N attribute information, or the context model is initialized when encoding the first attribute information among the N attribute information; or... If the same entropy encoder and different context models are used to encode the values to be encoded corresponding to the N attribute information of the current point, the different context models are initialized respectively before encoding the N attribute information; or, If different entropy encoders and different context models are used to encode the values to be encoded corresponding to the N attribute information of the current point, the different context models are initialized before encoding the N attribute information; or, If different entropy encoders and the same context model are used to encode the values to be encoded corresponding to the N attribute information of the current point, the context model is initialized before encoding the N attribute information.
8. The method according to any one of claims 1-3, characterized in that, The process of determining the values to be encoded corresponding to the N attribute information of the current point includes: For the j-th attribute information among the N attribute information, determine K reference points for the current point from the encoded points of the point cloud, where K is a positive integer and j is any value in N; Based on the j-th attribute information corresponding to the K reference points, determine the predicted value of the j-th attribute information of the current point; Based on the original value and predicted value of the j-th attribute information at the current point, determine the residual value of the j-th attribute information; Based on the residual value of the j-th attribute information, determine the value to be encoded corresponding to the j-th attribute information of the current point.
9. The method according to claim 8, characterized in that, The step of determining the value to be encoded corresponding to the j-th attribute information of the current point based on the residual value of the j-th attribute information includes: The residual value of the j-th attribute information is determined as the value to be encoded corresponding to the j-th attribute information of the current point; or... The residual value of the j-th attribute information is transformed to obtain the transformation coefficient of the attribute residual of the j-th attribute information. The transformation coefficient of the attribute residual of the j-th attribute information is determined as the value to be encoded corresponding to the j-th attribute information of the current point.
10. The method according to any one of claims 1-3, characterized in that, The process of determining the values to be encoded corresponding to the N attribute information of the current point includes: For the j-th attribute among the N attribute information, the j-th attribute information is transformed to obtain the transformation coefficient of the j-th attribute information, where j is any value in N; The transformation coefficient of the j-th attribute information is determined as the value to be encoded corresponding to the j-th attribute information of the current point.
11. A method for decoding point cloud attributes, characterized in that, include: The bitstream of a point cloud is obtained. Each point in the point cloud includes N attribute information, including color attribute, reflectivity attribute, normal vector attribute, and material attribute. The N attribute information of the current point in the bitstream is stored together and is independent of the N attribute information of other points, so that the decoding end can independently decode the attribute information of any one or several points in the point cloud. N is a positive integer greater than 1. After the decoding of N attribute information of the previous point is completed, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point. Based on the values to be decoded corresponding to the N attribute information of the current point, the reconstructed values corresponding to the N attribute information of the current point are obtained.
12. The method according to claim 11, characterized in that, The value to be decoded for each of the N attribute information includes any one of the following: the residual value of the attribute information, the transformation coefficient of the attribute information, and the transformation coefficient of the attribute residual.
13. The method according to claim 11, characterized in that, Decoding the bitstream to obtain the values to be decoded corresponding to the N attribute information of the current point includes: According to a preset decoding order, the values to be decoded corresponding to the N attribute information of the current point in the bitstream are decoded respectively to obtain the values to be decoded corresponding to the N attribute information of the current point; or, For the i-th attribute information among the N attribute information of the current point, the bitstream is decoded to obtain the length marker corresponding to the i-th attribute information. If the value of the length marker is a first value, the bitstream is decoded again to obtain the value to be encoded corresponding to the i-th attribute information. The length marker is used to indicate whether the value to be encoded corresponding to the i-th attribute information is 0, and the first value is used to indicate that the value to be encoded corresponding to the i-th attribute information of the current point is not 0. i is a positive integer from 1 to N.
14. The method according to any one of claims 11-13, characterized in that, Decoding the bitstream to obtain the values to be decoded corresponding to the N attribute information of the current point includes: The bitstream is decoded using the same entropy decoder or different entropy decoders to obtain the values to be decoded corresponding to the N attribute information of the current point.
15. The method according to claim 14, characterized in that, The entropy decoder employs at least one of the following decoding methods: exponential Columbus decoding, arithmetic decoding, and adaptive context arithmetic decoding.
16. The method according to claim 15, characterized in that, If the entropy decoder adopts an adaptive context arithmetic decoding method, then the process of decoding the bitstream using the same entropy decoder or different entropy decoders to obtain the values to be decoded corresponding to the N attribute information of the current point includes: Using the same entropy decoder and the same context model, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point; or... Using the same entropy decoder and different context models, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point; or... By employing different entropy decoders and different context models, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point; or, By using different entropy decoders and the same context model, the bitstream is decoded to obtain the values to be decoded corresponding to the N attribute information of the current point.
17. The method according to claim 16, characterized in that, The method further includes: If the same entropy decoder and the same context model are used to decode the bitstream, the context model is initialized before decoding the bitstream, or the context model is initialized when decoding the first attribute information among the N attribute information; or... If the same entropy decoder and different context models are used to decode the bitstream, the different context models are initialized separately before decoding the bitstream; or, If different entropy decoders and different context models are used to decode the bitstream, the different context models are initialized respectively before decoding the bitstream; or, If different entropy decoders and the same context model are used to decode the bitstream, the context model is initialized before decoding the bitstream.
18. The method according to any one of claims 11-13, characterized in that, If the value to be decoded includes residual values of attribute information, the step of obtaining the reconstructed values corresponding to the N attribute information of the current point based on the values to be decoded corresponding to the N attribute information of the current point includes: For the j-th attribute information among the N attribute information, determine K reference points for the current point from the decoded points of the point cloud, where K is a positive integer and j is any value in N; Based on the j-th attribute information corresponding to the K reference points, determine the predicted value of the j-th attribute information of the current point; Based on the predicted value and residual value of the j-th attribute information of the current point, determine the reconstructed value of the j-th attribute information of the current point.
19. The method according to any one of claims 11-13, characterized in that, If the value to be decoded includes the transformation coefficients of the attribute residuals, the step of obtaining the reconstructed values corresponding to the N attribute information of the current point based on the value to be decoded corresponding to the N attribute information of the current point includes: For the j-th attribute information among the N attribute information, determine K reference points for the current point from the decoded points of the point cloud, where K is a positive integer and j is any value in N; Based on the j-th attribute information corresponding to the K reference points, determine the predicted value of the j-th attribute information of the current point; The transformation coefficients of the attribute residual corresponding to the j-th attribute information are inversely transformed to obtain the residual value of the j-th attribute information; Based on the predicted value and residual value of the j-th attribute information of the current point, determine the reconstructed value of the j-th attribute information of the current point.
20. The method according to any one of claims 11-13, characterized in that, If the value to be decoded includes transformation coefficients of attribute information, the step of obtaining the reconstructed values corresponding to the N attribute information of the current point based on the value to be decoded corresponding to the N attribute information of the current point includes: For the j-th attribute among the N attribute information, the transformation coefficients of the j-th attribute information are inversely transformed to obtain the reconstructed value of the j-th attribute information.
21. An encoding device for point cloud attributes, characterized in that, include: An acquisition unit is used to acquire a point cloud, wherein each point in the point cloud includes N attribute information, including color attribute, reflectivity attribute, normal vector attribute, and material attribute, and N is a positive integer greater than 1; The determining unit is used to determine the values to be encoded corresponding to the N attribute information of the current point after the encoding of the N attribute information of the previous point is completed; The encoding unit is used to encode the values to be encoded corresponding to the N attribute information of the current point to obtain the bit stream of the point cloud. The N attribute information of the current point is stored together in the bit stream and is independent of the N attribute information of other points, so that the decoding end can independently decode the attribute information of any one or several points in the point cloud.
22. A decoding device for point cloud attributes, characterized in that, include: An acquisition unit is used to acquire the bitstream of a point cloud. Each point in the point cloud includes N attribute information, including color attribute, reflectivity attribute, normal vector attribute, and material attribute. The N attribute information of the current point in the bitstream is stored together and is independent of the N attribute information of other points, so that the decoding end can independently decode the attribute information of any one or several points in the point cloud. N is a positive integer greater than 1. The decoding unit is used to decode the bitstream after the decoding of N attribute information of the previous point of the current point is completed, so as to obtain the values to be decoded corresponding to the N attribute information of the current point respectively; The reconstruction unit is used to obtain the reconstruction values corresponding to the N attribute information of the current point based on the values to be decoded corresponding to the N attribute information of the current point.
23. An encoding device, characterized in that, include: A processor and a memory, the memory being used to store a computer program, the processor being used to invoke and run the computer program stored in the memory to perform the method according to any one of claims 1 to 10.
24. A decoding device, characterized in that, include: A processor and a memory, the memory being used to store a computer program, the processor being used to invoke and run the computer program stored in the memory to perform the method of any one of claims 11 to 20.
25. An electronic device, characterized in that, include: A processor and a memory, the memory for storing a computer program, the processor for calling and running the computer program stored in the memory to perform the method of any one of claims 1 to 10 or 11 to 20.
26. A computer-readable storage medium, characterized in that, Used to store a computer program that causes a computer to perform the method as described in any one of claims 1 to 10 or 11 to 20.
Citation Information
Patent Citations
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
WO2021132595A1