Filtering method and apparatus, computer storage medium, and computer program product
Patent Information
- Application Number
- PCT/CN2025/083599
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-03-19
- Publication Date
- 2026-09-24
Smart Images

Figure CN2025083599_24092026_PF_FP_ABST
Abstract
Description
Filtering methods, devices, computer storage media, and computer program products Technical Field
[0001] This application belongs to the field of video encoding and decoding technology, specifically relating to a filtering method, device, computer storage medium, and computer program product. Background Technology
[0002] In the color attribute encoding and decoding of dynamic point clouds, filtering the reconstructed point cloud is a key step to improve the quality of the reconstructed point cloud.
[0003] In related technologies, when filtering reconstructed point clouds, each point in the point cloud is typically filtered based on its own color attributes and those of its nearest neighbors. Specifically, for each point in the current point cloud frame, points within a certain range around it are searched as its nearest neighbors.
[0004] However, since the nearest neighbor is a point within a certain range of the current point, existing point cloud filtering has limitations, resulting in low filtering performance, which is not conducive to improving coding performance. Summary of the Invention
[0005] This application provides a filtering method, apparatus, computer storage medium, and computer program product that can improve the filtering effect of point clouds, reduce the amount of residual data during encoding, and thus improve encoding performance.
[0006] In a first aspect, a filtering method is provided, which can be applied to an encoder. The method includes: filtering the first point cloud unit based on the attribute values of points in the first point cloud unit and the nearest neighbor attribute values of the points; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor point of the point in the current frame point cloud, and the attribute value of the nearest neighbor point of the point in the reference frame point cloud.
[0007] In some possible implementations, the first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
[0008] In some possible implementations, the process of filtering the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the nearest neighbors of the points includes: if there is a nearest neighbor of a point in the current frame point cloud and there is no nearest neighbor of that point in the reference frame point cloud, then the first point cloud unit is filtered based on the attribute values of that point and the attribute values of the nearest neighbors of that point in the current frame point cloud.
[0009] In some possible implementations, the process of filtering the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the nearest neighbors of the points includes: if there is no nearest neighbor of a point in the current frame point cloud, but there is a nearest neighbor of the point in the reference frame point cloud, then the first point cloud unit is filtered based on the attribute values of the point and the attribute values of the nearest neighbors of the point in the reference frame point cloud.
[0010] In some possible implementations, the process of filtering the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the nearest neighbors of the points includes: if there is a nearest neighbor of a point in the current frame point cloud and there is a nearest neighbor of that point in the reference frame point cloud, then the first point cloud unit is filtered based on the attribute values of that point, the attribute values of the nearest neighbors of that point in the current frame point cloud, and the attribute values of the nearest neighbors of that point in the reference frame point cloud.
[0011] In some possible implementations, the process of filtering the first point cloud unit based on the attribute value of a point in the first point cloud unit and the attribute value of the nearest neighbor of the point includes: if there is no nearest neighbor of a point in the current frame point cloud and there is no nearest neighbor of the point in the reference frame point cloud, then the first point cloud unit is filtered based on the attribute value of the point and the attribute value of the point, wherein the attribute value of the nearest neighbor of the point is the same as the attribute value of the point.
[0012] In some possible implementations, the filtering method may further include: determining candidate nearest neighbors of the point in the current frame point cloud; determining candidate nearest neighbors of the point in the reference frame point cloud; and determining nearest neighbors of the point from the first candidate nearest neighbors and the second candidate nearest neighbors based on the attribute difference value between the first candidate nearest neighbor and the point determined in the current frame point cloud, and the attribute difference value between the second candidate nearest neighbor and the point determined in the reference frame point cloud.
[0013] In some possible implementations, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the aforementioned first candidate nearest neighbor and the aforementioned second candidate nearest neighbor.
[0014] In some possible implementations, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the first candidate nearest neighbor and the second candidate nearest neighbor and the first color component of the point.
[0015] In some possible implementations, the N nearest neighbors of the aforementioned point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of first candidate nearest neighbors and a plurality of second candidate nearest neighbors, where N is an integer greater than 1.
[0016] In some possible implementations, the nearest neighbor of a point in the current frame point cloud is determined based on the Morton code of the point, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, where the first value is the sequence number or a first specific value of the point in the current frame point cloud.
[0017] In some possible implementations, the aforementioned first specific value is used to characterize that there is no point in the current frame point cloud that is a nearest neighbor of the corresponding first Morton code.
[0018] In some possible implementations, the Morton codes in the above intra-frame point mapping table are generated based on the maximum Morton code of the points in the current frame point cloud.
[0019] In some possible implementations, the nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, where the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
[0020] In some possible implementations, the aforementioned second specific value is used to characterize that there is no nearest neighbor point in the aforementioned reference frame point cloud whose Morton code corresponds to the second Morton code.
[0021] In some possible implementations, the Morton codes in the above inter-frame point correspondence table are generated based on the maximum Morton code of the points in the above reference frame point cloud.
[0022] In some possible implementations, the process of filtering the first point cloud unit based on the attribute values of the points in the first point cloud unit and the attribute values of the points' nearest neighbors may include: filtering the first point cloud unit based on the attribute values of the points in the first point cloud unit, the attribute values of the nearest neighbors, and the filter coefficients.
[0023] In some possible implementations, the filtering method also includes writing the aforementioned filter coefficients into the attribute bitstream.
[0024] The filtering method provided in this application provides filtering for the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the points' nearest neighbors. The attribute values of a point's nearest neighbors include at least one of the following: the attribute value of the point itself, the attribute values of the nearest neighbors of the point in the current frame point cloud, and the attribute values of the nearest neighbors of the point in the current frame point cloud in the reference frame point cloud. This scheme incorporates the corresponding nearest neighbors in the reference frame of the current frame point cloud into the calculation, expanding the nearest neighbors of points in the point cloud from intra-frame to intra-frame and inter-frame. This provides more feature dimensions for filtering, enabling more accurate estimation of the true attributes of points (such as color), improving the filtering effect of the point cloud, reducing the amount of residual data during encoding, and thus improving encoding performance.
[0025] Secondly, a filtering method is provided that can be applied to a decoder. The method includes: parsing the attribute bitstream to obtain filter coefficients; filtering the first point cloud unit based on the filter coefficients and the nearest neighbor attribute values of points in the first point cloud unit; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor point of the point in the current frame point cloud, and the attribute value of the nearest neighbor point of the point in the current frame point cloud in the reference frame point cloud.
[0026] In some possible implementations, the first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
[0027] In some possible implementations, the method further includes: determining candidate nearest neighbors of the point in the current frame point cloud; determining candidate nearest neighbors of the point in the reference frame point cloud; and determining nearest neighbors of the point from the first candidate nearest neighbors and the second candidate nearest neighbors based on the attribute difference value between the first candidate nearest neighbor and the point determined in the current frame point cloud, and the attribute difference value between the second candidate nearest neighbor and the point determined in the reference frame point cloud.
[0028] In some possible implementations, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the aforementioned first candidate nearest neighbor and the aforementioned second candidate nearest neighbor.
[0029] In some possible implementations, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the first candidate nearest neighbor and the second candidate nearest neighbor and the first color component of the point.
[0030] In some possible implementations, the N nearest neighbors of the aforementioned point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of first candidate nearest neighbors and a plurality of second candidate nearest neighbors, where N is an integer greater than 1.
[0031] In some possible implementations, the nearest neighbor of a point in the current frame point cloud is determined based on the Morton code of the point, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, where the first value is the sequence number or a first specific value of the point in the current frame point cloud.
[0032] In some possible implementations, the aforementioned first specific value is used to characterize that there is no point in the current frame point cloud that is a nearest neighbor of the corresponding first Morton code.
[0033] In some possible implementations, the Morton codes in the above intra-frame point mapping table are generated based on the maximum Morton code of the points in the current frame point cloud.
[0034] In some possible implementations, the nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, where the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
[0035] In some possible implementations, the aforementioned second specific value is used to characterize that there is no nearest neighbor point in the aforementioned reference frame point cloud whose Morton code corresponds to the second Morton code.
[0036] In some possible implementations, the Morton codes in the above inter-frame point correspondence table are generated based on the maximum Morton code of the points in the above reference frame point cloud.
[0037] The filtering method of this application embodiment parses the attribute bitstream to obtain filter coefficients; based on the filter coefficients and the nearest neighbor attribute values of points in the first point cloud unit, the first point cloud unit is filtered; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the current frame point cloud in the reference frame point cloud. Through this scheme, the corresponding nearest neighbor points in the reference frame of the current frame point cloud are included in the calculation, thus expanding the nearest neighbor points of points in the point cloud from intra-frame to intra-frame and inter-frame. This provides more feature dimensions for filtering, enabling more accurate estimation of the true attributes of points (such as color), improving the filtering effect of the point cloud, reducing the amount of residual data during decoding, and thereby improving decoding performance.
[0038] Thirdly, a filtering device is provided, which can be applied to an encoder. The device includes: a filtering module; the filtering module is used to filter the first point cloud unit based on the attribute values of points in the first point cloud unit and the nearest neighbor attribute values of the points; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor point of the point in the current frame point cloud, and the attribute value of the nearest neighbor point of the point in the current frame point cloud in the reference frame point cloud.
[0039] In some possible implementations, the first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
[0040] In some possible implementations, the filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point and the attribute value of the point's nearest neighbor in the current frame point cloud if the current frame point cloud has a nearest neighbor and the reference frame point cloud does not have a nearest neighbor.
[0041] In some possible implementations, the filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point and the attribute value of the neighboring point in the reference frame point cloud if there is no neighboring point of the current frame point cloud, but there is a neighboring point of the point in the reference frame point cloud.
[0042] In some possible implementations, the filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point, the attribute value of the point's neighbor in the current frame point cloud, and the attribute value of the point's neighbor in the reference frame point cloud if the current frame point cloud has a neighboring point and the reference frame point cloud has a neighboring point of that point.
[0043] In some possible implementations, the filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point and the attribute value of the point's nearest neighbor if the current frame point cloud does not have a nearest neighbor of the point and the reference frame point cloud does not have a nearest neighbor of the point. The attribute value of the point's nearest neighbor is the same as the attribute value of the point.
[0044] In some possible implementations, the filtering module is further configured to: determine candidate nearest neighbors of the point in the current frame point cloud; determine candidate nearest neighbors of the point in the reference frame point cloud; and determine nearest neighbors of the point from the first candidate nearest neighbors and the second candidate nearest neighbors based on the attribute difference value between the first candidate nearest neighbor and the point determined in the current frame point cloud, and the attribute difference value between the second candidate nearest neighbor and the point determined in the reference frame point cloud.
[0045] In some possible implementations, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the aforementioned first candidate nearest neighbor and the aforementioned second candidate nearest neighbor.
[0046] In some possible implementations, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the first candidate nearest neighbor and the second candidate nearest neighbor and the first color component of the point.
[0047] In some possible implementations, the N nearest neighbors of the aforementioned point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of first candidate nearest neighbors and a plurality of second candidate nearest neighbors, where N is an integer greater than 1.
[0048] In some possible implementations, the nearest neighbor of a point in the current frame point cloud is determined based on the Morton code of the point, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, where the first value is the sequence number or a first specific value of the point in the current frame point cloud.
[0049] In some possible implementations, the aforementioned first specific value is used to characterize that there is no point in the current frame point cloud that is a nearest neighbor of the corresponding first Morton code.
[0050] In some possible implementations, the Morton codes in the above intra-frame point mapping table are generated based on the maximum Morton code of the points in the current frame point cloud.
[0051] In some possible implementations, the nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, where the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
[0052] In some possible implementations, the aforementioned second specific value is used to characterize that there is no nearest neighbor point in the aforementioned reference frame point cloud whose Morton code corresponds to the second Morton code.
[0053] In some possible implementations, the Morton codes in the above inter-frame point correspondence table are generated based on the maximum Morton code of the points in the above reference frame point cloud.
[0054] In some possible implementations, the filtering module is specifically used to filter the first point cloud unit based on the attribute values of the points in the first point cloud unit, the attribute values of the nearest neighbors, and the filter coefficients.
[0055] In some possible implementations, the above apparatus further includes: an encoding module; the encoding module is used to write the filter coefficients into the attribute bitstream.
[0056] The filtering device provided in this application filter the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the points' nearest neighbors. The attribute values of a point's nearest neighbors include at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the current frame point cloud in the reference frame point cloud. This scheme incorporates the corresponding nearest neighbors in the reference frame of the current frame point cloud into the calculation, expanding the nearest neighbors of points in the point cloud from intra-frame to intra-frame and inter-frame. This provides more feature dimensions for filtering, enabling more accurate estimation of the true attributes of points (such as color), improving the filtering effect of the point cloud, reducing the amount of residual data during encoding, and thus improving encoding performance.
[0057] Fourthly, a filtering device is provided, which can be applied to a decoder. The device includes a bitstream parsing module and a filtering module, wherein: the bitstream parsing module is used to parse the attribute bitstream to obtain filter coefficients; the filtering module is used to filter the first point cloud unit based on the filter coefficients parsed by the bitstream parsing module and the nearest neighbor attribute values of points in the first point cloud unit; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor point of the point in the current frame point cloud, and the attribute value of the nearest neighbor point of the point in the current frame point cloud in the reference frame point cloud.
[0058] In some possible implementations, the first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
[0059] In some possible implementations, the filtering module is further configured to: determine candidate nearest neighbors of the point in the current frame point cloud; determine candidate nearest neighbors of the point in the reference frame point cloud; and determine nearest neighbors of the point from the first candidate nearest neighbors and the second candidate nearest neighbors based on the attribute difference value between the first candidate nearest neighbor and the point determined in the current frame point cloud, and the attribute difference value between the second candidate nearest neighbor and the point determined in the reference frame point cloud.
[0060] In some possible implementations, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the aforementioned first candidate nearest neighbor and the aforementioned second candidate nearest neighbor.
[0061] In some possible implementations, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the first candidate nearest neighbor and the second candidate nearest neighbor and the first color component of the point.
[0062] In some possible implementations, the N nearest neighbors of the aforementioned point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of first candidate nearest neighbors and a plurality of second candidate nearest neighbors, where N is an integer greater than 1.
[0063] In some possible implementations, the nearest neighbor of a point in the current frame point cloud is determined based on the Morton code of the point, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, where the first value is the sequence number or a first specific value of the point in the current frame point cloud.
[0064] In some possible implementations, the aforementioned first specific value is used to characterize that there is no point in the current frame point cloud that is a nearest neighbor of the corresponding first Morton code.
[0065] In some possible implementations, the Morton codes in the above intra-frame point mapping table are generated based on the maximum Morton code of the points in the current frame point cloud.
[0066] In some possible implementations, the nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, where the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
[0067] In some possible implementations, the aforementioned second specific value is used to characterize that there is no nearest neighbor point in the aforementioned reference frame point cloud whose Morton code corresponds to the second Morton code.
[0068] In some possible implementations, the Morton codes in the above inter-frame point correspondence table are generated based on the maximum Morton code of the points in the above reference frame point cloud.
[0069] The filtering device in this embodiment parses the attribute bitstream to obtain filter coefficients; based on the filter coefficients and the nearest neighbor attribute values of points in the first point cloud unit, it filters the first point cloud unit; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the current frame point cloud in the reference frame point cloud. This scheme incorporates the corresponding nearest neighbor points in the reference frame of the current frame point cloud into the calculation, expanding the nearest neighbor points of points in the point cloud from intra-frame to intra-frame and inter-frame. This provides more feature dimensions for filtering, enabling more accurate estimation of the true attributes of points (such as color), improving the filtering effect of the point cloud, reducing the amount of residual data during decoding, and thus improving decoding performance. Attached Figure Description
[0070] Figure 1 is a schematic diagram of the architecture of an encoding / decoding system provided in some embodiments of this application;
[0071] Figure 2 is a schematic block diagram of a point cloud encoder provided in some embodiments of this application;
[0072] Figure 3 is a schematic block diagram of a point cloud decoder provided in some embodiments of this application;
[0073] Figure 4 is a schematic block diagram of the attribute encoding module provided in some embodiments of this application;
[0074] Figure 5 is a schematic block diagram of the attribute decoding module provided in some embodiments of this application;
[0075] Figure 6 is a schematic flowchart of point cloud Wiener filtering provided in some embodiments of this application;
[0076] Figure 7 is a flowchart of dynamic point cloud attribute Wiener filtering with filter coefficient inheritance provided in some embodiments of this application;
[0077] Figure 8 is a flowchart illustrating the dynamic point cloud Wiener filter encoding end provided in some embodiments of this application;
[0078] Figure 9 is a flowchart illustrating the dynamic point cloud Wiener filter decoding end provided in some embodiments of this application;
[0079] Figure 10 is a schematic diagram of the nearest neighbor search process provided in some embodiments of this application;
[0080] Figure 11 is a flowchart of the point cloud Wiener filter encoding end provided in some embodiments of this application;
[0081] Figure 12 is a flowchart of the point cloud Wiener filter decoding end provided in some embodiments of this application;
[0082] Figure 13 is a flowchart illustrating the filtering method provided in some embodiments of this application;
[0083] Figure 14 is a flowchart illustrating the filtering method provided in some embodiments of this application;
[0084] Figure 15 is a schematic diagram of the structure of a filtering device provided in some embodiments of this application;
[0085] Figure 16 is a schematic diagram of the structure of a filtering device provided in some embodiments of this application;
[0086] Figure 17 is a possible structural schematic diagram of a filtering device provided in some embodiments of this application;
[0087] Figure 18 is a possible structural schematic diagram of a filtering device provided in some embodiments of this application. Detailed Implementation
[0088] The technical solutions of the embodiments of this application will be clearly described below with reference to the accompanying drawings. Obviously, the described embodiments are only some, not all, of the embodiments of this application. All other embodiments obtained by those skilled in the art based on the embodiments of this application are within the scope of protection of this application.
[0089] In the description of the embodiments of this application, terms such as "first" and "second" are used to distinguish similar objects, not to describe a specific order or sequence. It should be understood that such terms can be used interchangeably where appropriate so that embodiments of this application can be implemented in orders other than those illustrated or described herein, and the objects distinguished by "first" and "second" are generally of the same class, without limiting the number of objects; for example, the first object can be one or more. Furthermore, "or" in this application indicates at least one of the connected objects. For example, "A or B" covers three scenarios: Scenario 1: including A but not B; Scenario 2: including B but not A; Scenario 3: including both A and B. The character " / " generally indicates that the preceding and following objects have an "or" relationship.
[0090] In the description of the embodiments of this application, "instruction" can be either a direct instruction (or explicit instruction) or an indirect instruction (or implicit instruction). A direct instruction can be understood as the sender explicitly informing the receiver of specific information, the operation to be performed, or the requested result in the instruction sent. An indirect instruction can be understood as the receiver determining the corresponding information based on the instruction sent by the sender, or making a judgment and determining the operation to be performed or the requested result based on the judgment result.
[0091] In the description of the embodiments of this application, "at least one (item)," "at least one of," etc., refer to any one, any two, or a combination of two or more of the included objects. For example, at least one (item) of a, b, and c can mean: "a," "b," "c," "a and b," "a and c," "b and c," and "a, b, and c," where a, b, and c can be single or multiple. Similarly, "at least two (items)" refers to two or more, and its meaning is similar to that of "at least one (item)."
[0092] In the description of the embodiments of this application, "multiple" means two or more. For example, multiple prediction units refer to two or more prediction units, and multiple coding blocks refer to two or more coding blocks. The terms "at least two" and "multiple" have similar meanings, and in some embodiments, the two terms may be used interchangeably.
[0093] In the description of embodiments of this application, the terms "including," "comprising," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that includes a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising a..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes that element.
[0094] First, the technical terms involved in the embodiments of this application will be introduced:
[0095] 1. Digital video compression technology
[0096] Digital video compression technology primarily compresses massive amounts of digital video data to facilitate transmission and storage. With the surge in internet video and increasing demands for video clarity, while existing digital video compression standards can save considerable video data, there is still a need to pursue better digital video compression technologies to reduce the bandwidth and traffic burden of digital video transmission.
[0097] In digital video encoding, the encoder reads unequal pixels from raw video sequences of different color formats, including luminance and chrominance components; that is, the encoder reads a black-and-white or color image. This data is then divided into blocks, and the block data is encoded by the encoder. Modern encoders typically use a hybrid frame coding mode, generally including intra-frame and inter-frame prediction, transform and quantization, inverse transform and inverse quantization, loop filtering, and entropy coding.
[0098] Intra-frame prediction refers only to information from the same frame of the image, predicting pixel information within the current segment to eliminate spatial redundancy; inter-frame prediction can refer to image information from different frames, using motion estimation to search for the motion vector information that best matches the current segment to eliminate temporal redundancy; transform converts the predicted image block to the frequency domain, redistributing energy, and combined with quantization, removes information that is not sensitive to the human eye to eliminate visual redundancy; loop filtering uses statistical information of the image to filter the image to improve the subjective and objective quality of the image; entropy coding can eliminate character redundancy based on the current context model and the probability information of the binary code stream.
[0099] 2. Video encoding technology
[0100] Video sequences contain a series of redundant information, including spatial redundancy, temporal redundancy, visual redundancy, information entropy redundancy, structural redundancy, knowledge redundancy, and importance redundancy. To remove as much redundant information as possible from video sequences and reduce the amount of data representing the video, video coding techniques have been proposed to reduce storage space and save transmission bandwidth. Video coding techniques are also known as video compression techniques.
[0101] Internationally accepted video compression coding standards include, for example: Advanced Video Coding (AVC) in Part 10 of the MPEG-2 and MPEG-4 standards developed by the Motion Picture Experts Group (MPEG); H.263, H.264, and H.265 (also known as High Efficiency Video Coding standard (HEVC)) developed by the International Telecommunication Union-Telecommunication Standardization Sector (ITU-T); and H.266 (also known as Versatile Video Coding (VVC)) developed by the Joint Video Experts Team (JVET), which is composed of the Video Coding Experts Group (VCEG) under MPEG and ITU-T. H.266 / VVC, as a next-generation video coding standard, not only helps users store more high-definition video on their devices, thereby reducing network data traffic, but also supports high resolution, high dynamic range, and screen content encoding in the main10 profile. Compared to the previous generation standard H.265 / HEVC, the H.266 / VVC standard further improves compression performance, enabling users to reduce data size by 50% while maintaining the same subjective video quality.
[0102] It should be noted that in encoding algorithms based on a hybrid encoding architecture, the above compression encoding methods can be used in combination.
[0103] 3. Geometry-based Point Cloud Compression (GPCC / G-PCC)
[0104] GPCC is a static point cloud compression standard (ISO / IEC 23090-5) developed by MPEG (Moving Picture Experts Group). It aims to efficiently compress the geometric information (such as XYZ coordinates) and attribute information (such as color and reflectivity) of 3D point cloud data. Its core objective is to reduce point cloud storage and transmission costs by removing spatial redundancy and attribute correlations, thereby promoting the development of 3D immersive applications (such as virtual reality, autonomous driving, and the digitization of cultural heritage).
[0105] GPCC divides compression into two independent modules: Geometry Coding and Attribute Coding. Geometry Coding aims to compress the 3D coordinates of points. Its main processes include: Octree decomposition: recursively dividing the 3D space, encoding only non-empty voxels, suitable for uniformly distributed point clouds; Triangulation: modeling the point cloud surface as a triangular mesh, encoding vertex positions and topological structure, suitable for complex surfaces. Attribute Coding aims to compress attributes such as color and normal vectors. Its main processes include: Region Adaptive Hierarchical Transformation (RAHT): projecting attributes to the frequency domain, utilizing neighborhood correlation to remove redundancy; and Predicting Transform: predicting attribute values based on the geometric structure, encoding only the prediction residuals.
[0106] 4. Wiener Filter:
[0107] Wiener filtering is a widely used filtering technique in both the frequency and spatial domains. It finds the optimal filter coefficients by minimizing the mean square error (MSE), thereby correcting the color attributes of the reconstructed point cloud. As a classic linear filtering method, Wiener filtering possesses theoretical optimality and computational efficiency in 3D data processing such as point cloud filtering, and is widely used in signal denoising and restoration.
[0108] The system architecture used in the embodiments of this application is described below.
[0109] Figure 1 shows a schematic diagram of the architecture of the encoding / decoding system 10 used in an embodiment of this application. As shown in Figure 1, the encoding / decoding system 10 may include a source device 110 and a destination device 120. The source device 110 is used to encode images; therefore, the source device 110 may be referred to as a filtering device or a video encoding device. The destination device 120 is used to decode the encoded image data generated by the source device 110; therefore, the destination device 120 may be referred to as an image decoding device or a video decoding device.
[0110] The source device 110 and the destination device 120 can take various forms, and this application embodiment does not specifically limit them. For example, the source device 110 and the destination device 120 can be desktop computers, mobile computing devices, laptops (e.g., laptops), tablet computers, set-top boxes, handsets such as so-called "smartphones," televisions, cameras, display devices, digital media players, video game consoles, in-vehicle computers, or other similar devices.
[0111] Optionally, the source device 110 and the destination device 120 shown in FIG1 can be two separate devices. Alternatively, the source device 110 and the destination device 120 can also be a single device, that is, the source device 110 or its corresponding functions and the destination device 120 or its corresponding functions can be integrated into the same device.
[0112] Optionally, the source device 110 and the destination device 120 may communicate. For example, the destination device 120 may receive encoded image data from the source device 110. In one example, the source device 110 and the destination device 120 may include one or more communication devices that can be used to transmit the encoded image data from the source device 110 to the destination device 120. These one or more communication devices may include routers, switches, base stations, or any other possible devices that facilitate communication from the source device 110 to the destination device 120, specifically determined according to actual usage requirements; this embodiment does not limit this.
[0113] As shown in Figure 1, the source device 110 may include an encoder 112. Optionally, the source device 110 may also include an image preprocessor 111 and a communication interface 113. The image preprocessor 111 can be used to perform preprocessing on the received image to be encoded. For example, the preprocessing performed by the image preprocessor 111 may include trimming, color format conversion (e.g., from RGB to YUV format), color correction, or noise reduction, or any other possible processing. The encoder 112 can be used to receive the image preprocessed by the image preprocessor 111, process the preprocessed image using a correlation prediction mode, and output encoded image data. In some embodiments, the encoder 112 can be used to perform the encoding process described in the various embodiments below. The communication interface 113 can be used to transmit the encoded image data output by the encoder 112 to the destination device 120 or any other device (such as a storage device) for storage or direct reconstruction. Other devices can be any devices used for decoding or storage. Of course, in actual implementation, the communication interface 113 can also encapsulate the encoded image data output by the encoder 112 into a suitable format before transmission.
[0114] Optionally, the image preprocessor 111, encoder 112, and communication interface 113 may be hardware components in the source device 110, software programs in the source device 110, or a combination of hardware components and software programs in the source device 110. The specific details can be determined according to actual usage requirements, and this application embodiment does not limit this.
[0115] The destination device 120 may include a decoder 122. Optionally, the destination device 120 may also include a communication interface 121 and an image post-processor 123. The communication interface 121 may be used to receive encoded image data from the source device 110 or any other source device, such as a storage device. The communication interface 121 may also decapsulate the data transmitted by the communication interface 113 to obtain encoded image data. The decoder 122 is used to receive the encoded image data and output decoded image data (also referred to as reconstructed image data or reconstructed image data). In some embodiments, the decoder 122 may be used to perform the decoding process described in the various embodiments below. The image post-processor 123 may be used to perform post-processing on the decoded image data to obtain post-processed image data. The post-processing performed by the image post-processor 123 may include color format conversion (e.g., from YUV format to RGB format), color correction, retouching, or resampling, and any possible processing. The image post-processor 123 may also be used to transmit the post-processed image data to a display device for display.
[0116] Optionally, the aforementioned communication interface 121, decoder 122, and image post-processor 123 may be hardware components in the target device 120, software programs in the target device 120, or a combination of hardware components and software programs in the target device 120. The specific details can be determined according to actual usage requirements, and this application embodiment does not limit this.
[0117] Figure 2 is a schematic block diagram of the point cloud encoder 1000 provided in an embodiment of this application. The encoding of points in the point cloud mainly includes position encoding and attribute encoding. The position encoding process includes: preprocessing the points in the point cloud, such as coordinate transformation, quantization, and removal of duplicate points; then, performing geometric encoding on the preprocessed point cloud, for example, constructing an octree, and forming a geometric bitstream based on the constructed octree. Simultaneously, based on the position information output by the constructed octree, the position information of each point in the point cloud data is reconstructed to obtain the reconstructed values of the position information of each point. The attribute encoding process includes: selecting one of three prediction modes for point cloud prediction based on the reconstructed position information and the original values of the attribute information of the input point cloud; quantizing the predicted results; and performing arithmetic encoding to form an attribute bitstream.
[0118] As shown in Figure 2, position encoding can be implemented through the following units: a coordinate transformation unit 1001, a quantization and duplicate point removal unit 1002, an octree analysis unit 1003, a geometry reconstruction unit 1004, and an arithmetic encoding unit 1005. The coordinate transformation unit 1001 can transform the world coordinates of points in the point cloud into relative coordinates. The quantization and duplicate point removal unit 1002 can reduce the number of coordinates through quantization; after quantization, previously different points may be assigned the same coordinates. The octree analysis unit 1003 can encode the position information of the quantized points using octree encoding. For example, the point cloud is divided into octrees, so that the position of a point can correspond one-to-one with the position of the octree. By statistically analyzing the positions of points in the octree and marking their flags as 1, geometric encoding is performed. The geometric reconstruction unit 1004 can perform position reconstruction based on the position information output by the octree analysis unit 1003 to obtain the reconstructed position information of each point in the point cloud data. The first arithmetic coding unit 1005 can use entropy coding to perform arithmetic coding on the position information output by the octree analysis unit 1003, that is, to generate a geometric bitstream from the position information output by the octree analysis unit 1003 using arithmetic coding; the geometric bitstream can also be called a geometric bitstream.
[0119] As shown in Figure 2, attribute encoding can be implemented through the following units: a color space transformation unit 1010, an attribute transformation unit 1011, a region adaptive hierarchical transformation (RAHT) unit 1012, a predicting transform unit 1013, a lifting transform unit 1014, a quantize coefficients unit 1015, and a second arithmetic encoding unit 1016. The color space transformation unit 1010 can be used to transform the RGB color space of points in the point cloud to YCbCr format or other formats. The attribute transformation unit 1011 can be used to transform the attribute information of points in the point cloud to minimize attribute distortion. For example, the attribute transformation unit 1011 can be used to obtain the original values of the point's attribute information. For example, the attribute information can be the color information of the point. After obtaining the original values of the point's attribute information through the attribute transformation unit 1011, any prediction unit can be selected to predict the points in the point cloud. The prediction unit may include a RAHT 1012, a predicting transform unit 1013, and a lifting transform unit 1014 to obtain predicted values of the point's attribute information, and then obtain residual values of the point's attribute information based on the predicted values. For example, the residual value of the point's attribute information may be the original value of the point's attribute information minus the predicted value of the point's attribute information. A quantization unit 1015 may be used to quantize the residual values of the point's attribute information. For example, if the quantization unit 1015 is connected to the predicting transform unit 1013, the quantization unit may be used to quantize the residual values of the point's attribute information output by the predicting transform unit 1013. A second arithmetic coding unit 1016 may use zero-run-length coding to entropy encode the residual values of the point's attribute information to obtain an attribute bitstream. The attribute bitstream may be bitstream information.
[0120] Figure 3 is a schematic block diagram of the point cloud decoder 2000 provided in an embodiment of this application.
[0121] As shown in Figure 3, the decoder 2000 can acquire point cloud bitstreams from the encoding device and obtain the position and attribute information of points in the point cloud through parsing. Point cloud decoding includes position decoding and attribute decoding. The position decoding process includes: performing arithmetic decoding on the geometric bitstream; constructing an octree and merging it to reconstruct the point position information to obtain the reconstructed point position information; performing coordinate transformation on the reconstructed point position information to obtain the point position information. The point position information can also be called the point's geometric information. The attribute decoding process includes: obtaining the residual values of the point attribute information in the point cloud by parsing the attribute bitstream; performing inverse quantization on the residual values of the point attribute information to obtain the inverse quantized residual values of the point attribute information; based on the reconstructed point position information obtained during the position decoding process, selecting one of the following three prediction modes—RAHT, predictive change, and boosting change—to predict the point cloud and obtain the predicted value; adding the predicted value to the residual value to obtain the reconstructed value of the point attribute information; and performing inverse color space transformation on the reconstructed value of the point attribute information to obtain the decoded point cloud.
[0122] As shown in Figure 3, position decoding can be implemented through the following units: first arithmetic decoding unit 2001, octree analysis (synthesize octree) unit 2002, geometry reconstruction (reconstruct geometry) unit 2004, and inverse transform coordinates unit 2005.
[0123] Attribute encoding can be implemented through the following units:
[0124] The second arithmetic decoding unit 2010, the inverse quantize unit 2011, the RAHT unit 2012, the predicting transform unit 2013, the lifting transform unit 2014, and the inverse transform colors unit 2015.
[0125] It should be noted that, referring to Figure 2 above, the point cloud encoder 1000 mainly comprises 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 bitstream, and the attribute encoding module is used to encode the attribute information of the point cloud to form an attribute bitstream. The attribute encoding module in the encoder involved in this application will be described below with reference to Figure 4.
[0126] Figure 4 is a partial block diagram of the attribute encoding module 200 according to an embodiment of this application. The attribute encoding module 200 can be understood as the encoder 112 shown in Figure 1, or a unit within the encoder 112 used to encode attribute information, or the attribute encoding module shown in Figure 2. As shown in Figure 4, the attribute encoding module 200 includes: a preprocessing unit 210, a residual unit 220, a quantization unit 230, a prediction unit 240, an inverse quantization unit 250, a reconstruction unit 260, a filtering unit 270, a decoding buffer unit 280, and an encoding unit 290. It should be noted that the attribute encoding module 200 may also include more, fewer, or different functional components.
[0127] In some embodiments, the preprocessing unit 210 may include a color space conversion unit and an attribute conversion unit; the quantization unit 230 can be understood as a quantization coefficient unit, and the encoding unit 490 can be an arithmetic encoding unit; the prediction unit 240 is used to obtain the reconstructed information of the position information of points in the point cloud, and based on the reconstructed information of the position information of the points, to predict the attribute information of the points in the point cloud to obtain the predicted value of the attribute information of the points; the residual unit 220 can obtain the residual value of the attribute information of the points in the point cloud based on the original value and the reconstructed value of the attribute information of the points in the point cloud, for example, the original value of the attribute information of the points minus the reconstructed value of the attribute information of the points to obtain the residual value of the attribute information of the points; the quantization unit 230 can quantize the residual value of the attribute information, specifically, the quantization unit 230 can quantize the residual value of the attribute information of the points based on the quantization parameter (QP) value associated with the point cloud. The point cloud encoder can adjust the quantization level applied to points by adjusting the QP value associated with the point cloud; the inverse quantization unit 250 can apply inverse quantization to the residual values of the quantized attribute information to reconstruct the residual values of the attribute information from the residual values of the quantized attribute information; the reconstruction unit 260 can add the residual values of the reconstructed attribute information to the predicted values generated by the prediction unit 240 to generate the reconstructed attribute information values of the points in the point cloud; the filtering unit 270 can eliminate or reduce noise in the reconstruction operation; the decoding buffer unit 280 can store the reconstructed attribute information values of the points in the point cloud. The prediction unit 440 can use the reconstructed attribute information values of the points to predict the attribute information of other points. As some possible examples of this application, a filtering method implemented by the encoder 112 (attribute encoding module 200) may include the following steps:
[0128] Step 20: The filtering unit 270 filters the first point cloud unit based on the attribute values of the points in the first point cloud unit and the attribute values of the nearest neighbors of the points.
[0129] Among them, the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of a point, the attribute value of the nearest neighbor of a point in the current frame point cloud, and the attribute value of the nearest neighbor of a point in the reference frame point cloud of the current frame point cloud.
[0130] In some embodiments of this application, the filtering unit 270 can filter the first point cloud unit using the attribute values of points in the first point cloud unit, the attribute values of the points' nearest neighbors, and the filter coefficients.
[0131] In some embodiments of this application, the filter coefficients described above may be filter coefficients inherited from the point cloud of the first frame.
[0132] In some embodiments of this application, the first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
[0133] In some embodiments of this application, step 20 described above can be implemented by step 20a:
[0134] Step 20a: If there is a nearest neighbor of a point in the current frame point cloud and there is no nearest neighbor of the point in the reference frame point cloud, then the filtering unit 270 filters the first point cloud unit based on the attribute value of a point and the attribute value of the nearest neighbor of a point in the current frame point cloud.
[0135] In some embodiments of this application, step 20 described above can be implemented by step 20b:
[0136] Step 20b: If there is no nearest neighbor of a point in the current frame point cloud, but there is a nearest neighbor of the point in the reference frame point cloud, then the filtering unit 270 filters the first point cloud unit based on the attribute value of the point and the attribute value of the nearest neighbor of the point in the reference frame point cloud.
[0137] In some embodiments of this application, step 20 described above can be implemented by step 20c:
[0138] Step 20c: If there is a neighboring point in the current frame point cloud and there is a neighboring point in the reference frame point cloud, then the filtering unit 270 filters the first point cloud unit based on the attribute value of the point, the attribute value of the neighboring point of the point in the current frame point cloud, and the attribute value of the neighboring point of the point in the reference frame point cloud.
[0139] In some embodiments of this application, step 20 described above can be implemented by step 20d:
[0140] If the current frame point cloud does not have a nearest neighbor point, and the reference frame point cloud does not have a nearest neighbor point, then the filtering unit 270 filters the first point cloud unit based on the attribute value of the point and the attribute value of the nearest neighbor point, where the attribute value of the nearest neighbor point is the same as the attribute value of the point.
[0141] In some embodiments of this application, the filtering method may further include steps 22 to 24:
[0142] Step 22: Determine the candidate nearest neighbors of the above point in the current frame point cloud;
[0143] Step 23: Determine the candidate nearest neighbor points of the above point in the point cloud of the above reference frame;
[0144] Step 24: Based on the attribute difference value between the first candidate nearest neighbor point determined in the current frame point cloud and the aforementioned point, and the attribute difference value between the second candidate nearest neighbor point determined in the reference frame point cloud and the aforementioned point, determine the nearest neighbor point of the aforementioned point from the first candidate nearest neighbor point and the second candidate nearest neighbor point.
[0145] In some embodiments of this application, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the aforementioned first candidate nearest neighbor and the aforementioned second candidate nearest neighbor.
[0146] In some embodiments of this application, a nearest neighbor of a point is the candidate nearest neighbor among the first and second candidate nearest neighbors that has the smallest attribute difference value with the point's first color component. The filter coefficients are calculated based on the attribute values of the first color component of a nearest neighbor of the point.
[0147] In some embodiments of this application, the N nearest neighbors of the aforementioned point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of determined first candidate nearest neighbors and a plurality of determined second candidate nearest neighbors, where N is an integer greater than 1.
[0148] In some embodiments of this application, the nearest neighbor of a point in the current frame point cloud is determined based on the Morton code of the point, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, and the first value is the sequence number or a first specific value of the point in the current frame point cloud.
[0149] In some embodiments of this application, the first specific value is used to characterize that there is no nearest neighbor point in the current frame point cloud whose Morton code corresponds to the first Morton code.
[0150] In some embodiments of this application, the Morton codes in the above intra-frame point correspondence table are generated based on the maximum Morton code of the points in the current frame point cloud.
[0151] In some embodiments of this application, the nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, wherein the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
[0152] In some embodiments of this application, the aforementioned second specific value is used to characterize that there is no nearest neighbor point in the reference frame point cloud whose Morton code corresponds to the second Morton code.
[0153] In some embodiments of this application, the Morton codes in the above-mentioned inter-frame point correspondence table are generated based on the maximum Morton code of the points in the above-mentioned reference frame point cloud.
[0154] In some embodiments of this application, step 20 described above can be implemented by step 21a.
[0155] Step 21a: The filtering unit 270 filters the first point cloud unit based on the attribute values of the points in the first point cloud unit, the neighbor attribute values, and the filter coefficients.
[0156] In some embodiments of this application, the filtering method described above may further include the following step 26:
[0157] Step 26: The encoding unit 290 writes the above filter coefficients into the attribute bitstream.
[0158] The filtering method in this application embodiment filters the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the points' nearest neighbors. The attribute values of a point's nearest neighbors include at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the current frame point cloud in the reference frame point cloud. This scheme incorporates the corresponding nearest neighbor in the reference frame of the current frame point cloud into the calculation, expanding the nearest neighbor of a point in the point cloud from intra-frame to intra-frame and inter-frame. This provides more feature dimensions for filtering, enabling more accurate estimation of the true attributes of points (such as color), improving the filtering effect of the point cloud, reducing the amount of residual data during encoding, and thus improving encoding performance.
[0159] It should be noted that the decoder 122 mainly comprises two parts: a position decoding module and an attribute decoding module. The position decoding module is used to decode the geometric bitstream of the point cloud to obtain the position information of the points, while the attribute decoding module is used to decode the attribute bitstream of the point cloud to obtain the attribute information of the points. The attribute decoding module in the point cloud decoder 2000 of this application will be described below with reference to Figure 3B.
[0160] Figure 5 is a partial block diagram of the attribute decoding module 300 according to an embodiment of this application. The attribute decoding module 300 can be understood as the decoder 122 shown in Figure 1 above, or the unit within decoder 122 used to implement attribute bitstream decoding. As shown in Figure 3, the attribute decoding module 300 includes: a decoding unit 310, a prediction unit 320, an inverse quantization unit 330, a reconstruction unit 340, a filtering unit 350, and a decoding buffer unit 360. It should be noted that the attribute decoding module 300 may contain more, fewer, or different functional components.
[0161] In some embodiments, prediction unit 320 can determine the prediction mode of a point based on one or more syntax elements parsed from the bitstream, and use the determined prediction mode to predict the attribute information of the point; dequantization unit 330 can reversibly quantize (i.e., dequantize) the residual value of the quantized attribute information associated with the point in the point cloud to obtain the residual value of the point's attribute information. Dequantization unit 330 can use the QP value associated with the point cloud to determine the degree of quantization; reconstruction unit 340 uses the residual value of the attribute information of the point in the point cloud and the predicted value of the attribute information of the point in the point cloud to reconstruct the attribute information of the point in the point cloud. For example, reconstruction unit 340 can add the residual value of the attribute information of the point in the point cloud to the predicted value of the point's attribute information to obtain the reconstructed value of the point's attribute information; filtering unit 350 can eliminate or reduce noise in the reconstruction operation; attribute decoding module 300 can store the reconstructed value of the attribute information of the point in the point cloud in decoding buffer unit 360. Attribute decoding module 300 can use the reconstructed value of the attribute information in decoding buffer unit 360 as a reference point for subsequent prediction, or transmit the reconstructed value of the attribute information to a display device for presentation.
[0162] Referring to Figures 4 and 5 above, the basic process of encoding and decoding the attribute information of point clouds is as follows: At the encoding end, the attribute information of the point cloud data is preprocessed to obtain the original values of the attribute information of the points in the point cloud. The prediction unit 210 predicts the attribute information of the points in the point cloud based on the reconstructed values of the position information of the points in the point cloud to obtain the predicted values of the attribute information. The residual unit 220 can calculate the residual value of the attribute information based on the original value and the predicted value of the attribute information of the points in the point cloud, that is, the difference between the original value and the predicted value of the attribute information of the points in the point cloud is used as the residual value of the attribute information of the points in the point cloud. This residual value is quantized by the quantization unit 230 to remove information that is not sensitive to the human eye, thereby eliminating visual redundancy. The encoding unit 290 receives the quantized residual value of the attribute information output by the quantization unit 230, encodes the quantized residual value of the attribute information, and outputs the attribute code stream. The dequantization unit 250 can also receive the quantized residual value of the attribute information output by the quantization unit 230, and dequantize the quantized residual value of the attribute information to obtain the residual value of the attribute information of the points in the point cloud. The reconstruction unit 260 obtains the residual values of the attribute information of the points in the point cloud output by the inverse quantization unit 250, and the predicted values of the attribute information of the points in the point cloud output by the prediction unit 210. The residual values and predicted values of the attribute information of the points in the point cloud are added together to obtain the reconstructed values of the point's attribute information. The reconstructed values of the point's attribute information are filtered by the filtering unit 270 and then cached in the decoding cache unit 280 for use in the subsequent prediction process of other points.
[0163] At the decoding end, the decoding unit 310 can parse the attribute bitstream to obtain the residual values, prediction information, quantization coefficients, etc., of the attribute information of the quantized points in the point cloud. The prediction unit 320 predicts the attribute information of the points in the point cloud based on the prediction information to generate predicted values of the point attribute information. The dequantization unit 330 uses the quantization coefficients obtained from the attribute bitstream to dequantize the residual values of the quantized attribute information of the points to obtain the residual values of the point attribute information. The reconstruction unit 340 adds the predicted values and residual values of the point attribute information to obtain the reconstructed values of the point attribute information. The filtering unit 350 filters the reconstructed values of the point attribute information to obtain the decoded attribute information.
[0164] 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.
[0165] As some possible examples of this application, a filtering method implemented by decoder 121 (attribute decoding module 300) may include the following steps:
[0166] Step 31: Decoding unit 310 parses the attribute bitstream to obtain filter coefficients.
[0167] Step 32: The filtering unit 350 filters the first point cloud unit based on the above filter coefficients and the nearest neighbor attribute values of the points in the first point cloud unit.
[0168] The nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the reference frame point cloud.
[0169] In some embodiments of this application, the first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
[0170] In some embodiments of this application, the filtering method may further include steps 33 to 35:
[0171] Step 33: Determine the candidate nearest neighbors of the above point in the current frame point cloud;
[0172] Step 34: Determine the candidate nearest neighbor points of the above point in the point cloud of the above reference frame;
[0173] Step 35: Based on the attribute difference value between the first candidate nearest neighbor point determined in the current frame point cloud and the aforementioned point, and the attribute difference value between the second candidate nearest neighbor point determined in the reference frame point cloud and the aforementioned point, determine the nearest neighbor point of the aforementioned point from the first candidate nearest neighbor point and the second candidate nearest neighbor point.
[0174] In some embodiments of this application, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the aforementioned first candidate nearest neighbor and the aforementioned second candidate nearest neighbor.
[0175] In some embodiments of this application, a nearest neighbor of the aforementioned point is: the candidate nearest neighbor with the smallest attribute difference value of the first color component of the point among the first candidate nearest neighbor and the second candidate nearest neighbor.
[0176] In some embodiments of this application, the N nearest neighbors of the aforementioned point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of determined first candidate nearest neighbors and a plurality of determined second candidate nearest neighbors, where N is an integer greater than 1.
[0177] In some embodiments of this application, the nearest neighbor of a point in the current frame point cloud is determined based on the Morton code of the point, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, and the first value is the sequence number or a first specific value of the point in the current frame point cloud.
[0178] In some embodiments of this application, the first specific value is used to characterize that there is no nearest neighbor point in the current frame point cloud whose Morton code corresponds to the first Morton code.
[0179] In some embodiments of this application, the Morton codes in the above intra-frame point correspondence table are generated based on the maximum Morton code of the points in the current frame point cloud.
[0180] In some embodiments of this application, the nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, wherein the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
[0181] In some embodiments of this application, the aforementioned second specific value is used to characterize that there is no nearest neighbor point in the reference frame point cloud whose Morton code corresponds to the second Morton code.
[0182] In some embodiments of this application, the Morton codes in the above-mentioned inter-frame point correspondence table are generated based on the maximum Morton code of the points in the above-mentioned reference frame point cloud.
[0183] The filtering method of this application embodiment parses the attribute bitstream to obtain filter coefficients; based on the filter coefficients and the nearest neighbor attribute values of points in the first point cloud unit, the first point cloud unit is filtered; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the current frame point cloud in the reference frame point cloud. Through this scheme, the corresponding nearest neighbor points in the reference frame of the current frame point cloud are included in the calculation, thus expanding the nearest neighbor points of points in the point cloud from intra-frame to intra-frame and inter-frame. This provides more feature dimensions for filtering, enabling more accurate estimation of the true attributes of points (such as color), improving the filtering effect of the point cloud, reducing the amount of residual data during decoding, and thereby improving decoding performance.
[0184] The following is a brief introduction to the filtering process of point cloud reconstruction at the encoding and decoding end during the encoding and decoding process. Figure 6 is a schematic diagram of the single-frame point cloud filtering process. As shown in Figure 6, the point cloud filtering process includes at least the following steps: inputting the point cloud; encoding the input point cloud data, which usually includes data compression and format conversion to reduce the amount of data and facilitate subsequent processing; reconstructing the encoded data to generate pre-processed point cloud data; sending the reconstructed point cloud data into a Wiener filter for processing, during which the data is evaluated and optimized by determining the filter coefficients; writing the reconstructed point cloud data to temporarily store or save the point cloud data in the process; further processing the point cloud data in the bitstream module, including reading and parsing the encoded data stream; reading data from the bitstream in preparation for quality assessment or further processing; and judging the read data to evaluate its effectiveness. Based on the evaluation results, data is selectively written; if coefficients were calculated in the previous steps, the coefficients are sent to the Wiener filter for further optimization; the coefficients are used to further optimize the point cloud data to improve data quality; the data optimized by the Wiener filter is reconstructed again to generate the final optimized point cloud data; the final processed point cloud data is used as output for subsequent use or storage.
[0185] In this method, the Wiener filter has an order of K, and the neighborhood of each point is its K nearest neighbors. Then, using the Wiener filtering principle, the optimal coefficients of the Wiener filter are calculated for each color attribute channel (Y, U, V), and these coefficients are used to filter the reconstructed point cloud to obtain a higher quality point cloud. The specific coefficient calculation method and filtering principle are as follows:
[0186] Let the order of the Wiener filter be K, and the number of points in the point cloud be n. Then the original point cloud can be represented as P = (p1, p2, p3, c1, c2, c3) ∈ R. n×6 The geometric position and color attributes are represented by the first three column vectors {p1, p2, p3} and the last three column vectors {c1, c2, c3}, respectively. In this method, the color of the current point is updated by itself and its k-1 nearest neighbors, which can be obtained through k-nearest neighbor (KNN) search. Using matrices... (n points in the current frame) represents the color components of the k neighboring points of all n points in the reconstructed point cloud P. The optimal coefficients of the Wiener filter are a vector h∈R k×1 Apply h to the color components of the reconstructed point cloud, i.e., c. i For i∈{1,2,3}, the filtered color can be obtained.
[0187] Then we can obtain the error y∈R n×1 :
[0188] The goal of the Wiener filter is to find an optimal set of coefficients h. opt To minimize the objective function
[0189] Where E(·) represents the operation of averaging (approximately the expected value) the elements of the vector. To calculate h... opt Set the derivative of the objective function (3) with respect to h to 0:
[0190] Right now:
[0191] Then let the cross-correlation vector Autocorrelation matrix We can obtain: bA×h=0 (6)
[0192] Therefore, we can obtain h opt : h opt =A -1 ×b (7)
[0193] After obtaining the optimal coefficients, the PSNR of the reconstructed point cloud and the filtered point cloud relative to the original point cloud for each channel is calculated. If the PSNR increases after filtering, it is considered that Wiener filtering improves the quality of that color component. At this point, the decision array and filter coefficients are written into the bitstream. On the decoding end, the decision array is first decoded to determine the channels that need filtering. Then, the filter coefficients are decoded, and filtering is performed using these coefficients. The resulting values are then overwritten with the values of the reconstructed point cloud to obtain the improved point cloud. It should be noted that this method is for geometrically lossless but attribute-lossy encoding methods.
[0194] This technique affects the arithmetic coding and subsequent parts of the point cloud coding framework, as well as the attribute reconstruction part of the decoding framework. Referring to Figure 6 above, Figure 7 is a flowchart illustrating the dynamic point cloud attribute Wiener filtering process with inter-frame inheritance of filter coefficients. As shown in Figure 7, after encoding begins, the first frame of point cloud data is processed. Specifically, for the first frame of point cloud data, Wiener filter coefficients are calculated, and these coefficients are used in subsequent filtering processes. When processing the second frame of point cloud data, the Wiener filter coefficients calculated from the first frame are inherited and used. This inheritance strategy significantly reduces computation and improves coding efficiency. Simultaneously, since the Wiener filter coefficients are calculated based on the previous frame's data, the continuity and consistency of point cloud attributes are maintained. Similarly, the processing of intermediate frames of point cloud data is similar to the second frame, inheriting and using the Wiener filter coefficients from the previous frame and performing necessary filtering, until the (L+1)th and (L+2)th frames of point cloud data are processed. For these two frames, Wiener filter coefficients are also calculated and inherited. It should be noted that in frame L+1, the Wiener filter coefficients can be recalculated to adapt to changes in the data; while in frame L+2 and subsequent frames, the coefficients calculated previously are reused. The point cloud in frame 2L is the last frame of point cloud data in the process, and the entire process ends after processing this frame of data.
[0195] Combining Figures 6 and 7 above, Figure 8 is a partial flowchart of the Wiener filtering encoding end of the dynamic point cloud. As shown in Figure 8, after encoding begins, the first frame of point cloud is encoded; the encoded first frame of point cloud is reconstructed to generate a reconstructed point cloud; the reconstructed first frame of point cloud is subjected to Wiener filtering to improve quality; the reconstructed point cloud is enhanced through Wiener filtering to obtain the enhanced first frame of reconstructed point cloud; rate-distortion optimization is performed on the enhanced first frame of reconstructed point cloud to achieve the best balance between bit rate and image quality; the first frame of reconstructed point cloud data after quality enhancement and rate-distortion optimization is passed to the next frame for inter-frame prediction; the Wiener filter coefficients and the rate-distortion optimization flag are written into the bitstream. The second frame point cloud is encoded; the encoded second frame point cloud is reconstructed to generate a reconstructed point cloud; the reconstructed second frame point cloud is subjected to Wiener filtering to improve quality, and the filter coefficients of the Wiener filter are inherited from the filter coefficients of the first frame; the filtered reconstructed point cloud is enhanced in quality, and rate-distortion optimization is performed on the enhanced reconstructed point cloud to achieve the best balance between bit rate and image quality; the reconstructed point cloud data of the second frame after quality enhancement and rate-distortion optimization is passed to the next frame for inter-frame prediction, and the flag bit is written into the bit stream data. Similarly, when processing the reconstructed point cloud of each subsequent frame, the filter coefficients are inherited from the filter coefficients of the reconstructed point cloud of the previous frame.
[0196] Combining Figures 6 to 8 above, Figure 9 is a partial flowchart of the Wiener filter decoding end of the dynamic point cloud. As shown in Figure 9, after decoding begins, the input bitstream is decoded to obtain the flag bits and Wiener filter coefficients; the first frame of decoded point cloud data is stored and its quality is enhanced; the Wiener filter is applied to enhance the quality of the point cloud data, resulting in the first frame of decoded point cloud with improved quality, which is used for inter-frame prediction of the next frame; the second frame is decoded to obtain decoded point cloud data; the decoded data is reconstructed to obtain the second frame of decoded point cloud; the Wiener filter is used to enhance the quality of the second frame of decoded point cloud data, resulting in the second frame of reconstructed point cloud with improved quality. The filter coefficients of this Wiener filter are inherited from the coefficients of the first frame, and this second frame of reconstructed point cloud is used for subsequent processing or display.
[0197] Referring to Figures 6 to 9 above, Figure 10 is a flowchart of the nearest neighbor search process. As shown in Figure 10, the nearest neighbor search process may include the following steps:
[0198] Step 10A: Begin performing nearest neighbor search.
[0199] Step 11A: Input one point from the point cloud.
[0200] For example, the user inputs or the system selects a point in the point cloud, using this point as the starting point for the search.
[0201] Step 12A: Calculate the Morton code for that point.
[0202] For example, calculating the Morton code of the input points can map data points in a high-dimensional space to a one-dimensional space, making indexing and searching easier.
[0203] Step 13A: Determine if the point already has K nearest neighbors; if not, proceed to step 14A; if not, end the search.
[0204] Step 14A: Calculate the Morton code of the adjacent position based on the next offset size in the search table.
[0205] For example, the Morton code of the adjacent position is calculated based on the offset in the search table to find the next checkpoint in the point cloud.
[0206] Step 15A: Determine if the calculated adjacent position is empty (i.e., there is no data point at that position). If yes, proceed to step 16A; otherwise, proceed to step 17A.
[0207] Step 16A: Assign the attribute value of the current point to the attribute value of the nearest neighbor.
[0208] It should be noted that assigning the attribute value of the current point to the nearest neighbor indicates that a nearest neighbor has been found.
[0209] Step 17A: Add the nearest neighbor to the current point's nearest neighbor table.
[0210] After step 17A, return to step 13A and continue the search until the K nearest neighbors are found.
[0211] It should be noted that the multi-frame point cloud color attribute inter-frame Wiener filtering quality improvement technique based on Morton code nearest neighbor search not only extends Wiener filtering quality enhancement from intra-frame coding to inter-frame coding, resulting in better quality enhancement compared to Wiener filtering under intra-frame coding configurations, but also replaces all KNN nearest neighbor search techniques used in Wiener filtering with Morton code-based nearest neighbor search, achieving faster search of more nearest neighbors and reducing encoding and decoding time. Furthermore, by using the same filter coefficients for adjacent point clouds in dynamic point clouds, the number of times filter coefficients are calculated and stored is reduced, further decreasing the time required for Wiener filtering quality enhancement and improving filter performance. In the Morton code-based nearest neighbor search technique, the hole location determination process is optimized, and the nearest neighbor search range is narrowed, accelerating the nearest neighbor search process.
[0212] Combining Figures 6 to 10 above, Figure 11 is a partial flowchart of the Wiener filter encoding end of a multi-frame point cloud. As shown in Figure 11, after encoding begins, the first frame of point cloud is encoded and reconstructed to obtain the first frame reconstructed point cloud; the first frame reconstructed point cloud is classified by Y gradient, resulting in five types of point sets; five sets of Wiener filter coefficients and five sets of flag bits are calculated and generated; the Wiener filter is used to enhance the quality of the point cloud data using the generated five sets of Wiener filter coefficients, resulting in the first frame reconstructed point cloud with enhanced quality; rate-distortion optimization is performed to improve the compression effect and point cloud quality; the five sets of Wiener filter coefficients and five sets of flag bits are written into the bitstream to process the second frame reconstructed point cloud. The process involves: transmitting the enhanced first-frame reconstructed point cloud data to the next frame for inter-frame prediction; encoding and reconstructing the second-frame point cloud to obtain the reconstructed second-frame point cloud data; performing Y-gradient classification on the second-frame reconstructed point cloud, dividing it into five categories of point sets; using the Wiener filter coefficients from the first frame to process the second frame, generating or updating five sets of flags; enhancing the quality of the second-frame reconstructed point cloud data using the five sets of Wiener filter coefficients integrated from the first frame; performing rate-distortion optimization to further optimize compression and point cloud quality; and transmitting the enhanced second-frame reconstructed point cloud data to the next frame for inter-frame prediction.
[0213] Combining Figures 6 to 11 above, Figure 12 is a partial flowchart of the Wiener filter decoding end of a multi-frame point cloud. As shown in Figure 12, after decoding begins, the bitstream is decoded to obtain five sets of Wiener filter coefficients and five sets of flag bits. The decoded data is then reconstructed to restore the original point cloud data, resulting in the first frame of decoded point cloud. The first frame of reconstructed point cloud data is then classified using Y-gradients, i.e., it is divided into five categories based on a certain gradient feature. The point cloud data is then enhanced using the five sets of Wiener filter coefficients through the Wiener filter, resulting in the first frame of reconstructed point cloud with enhanced quality, which is used for inter-frame prediction in the next frame. The bitstream data of the second frame is then decoded. The decoded second frame data is then reconstructed to obtain the second frame of decoded point cloud. The second frame of reconstructed point cloud data is then classified using Y-gradients, resulting in the first frame of reconstructed point cloud divided into five point sets. The Wiener filter is then applied to the second frame of point cloud data based on the five sets of filter coefficients inherited from the first frame, resulting in the second frame of reconstructed point cloud with enhanced quality, which is used for prediction or processing in subsequent frames.
[0214] The filtering method provided in the embodiments of this application will be described exemplarily below with reference to the accompanying drawings.
[0215] Figure 13 is a flowchart illustrating the filtering method provided in an embodiment of this application. This filtering method can be applied to an encoder. As shown in Figure 13, the filtering method may include the following step 401:
[0216] Step 401: Filter the first point cloud unit based on the attribute values of the points in the first point cloud unit and the attribute values of the nearest neighbors of the points.
[0217] The nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the reference frame point cloud.
[0218] It should be noted that the point mentioned above can be understood as the current point.
[0219] In some embodiments of this application, the encoder can filter the first point cloud unit based on the attribute values of a point in the first point cloud unit in the current frame point cloud and the attribute values of that point's nearest neighbors.
[0220] In some embodiments of this application, the aforementioned current frame point cloud can be a reconstructed (reconstructed) frame point cloud, i.e., a reconstructed point cloud. Specifically, the current frame point cloud can be obtained by decoding the prediction residual and reconstructing the attribute values.
[0221] It's important to note that a point cloud is a collection of three-dimensional points, each containing information such as its coordinates and color attributes in three-dimensional space. During encoding, the original point cloud is uncompressed and unquantized point cloud data, retaining the most complete geometric and color information. The reconstructed point cloud is based on the encoded data. Due to the compression and quantization operations during encoding, the reconstructed point cloud may differ from the original point cloud. Therefore, filtering is applied to the reconstructed point cloud to improve its quality.
[0222] In some embodiments of this application, the first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
[0223] In some examples, the first point cloud unit mentioned above can be the entire point cloud of the current frame.
[0224] In some examples, the first point cloud unit described above may also be a subset of the point cloud in the current frame. For example, this subset may be points of a specific type, points of a specific region, or points of a specific object in the point cloud.
[0225] For example, the first point cloud unit may be a set of at least one class (e.g., five classes) of points obtained after performing gradient-based classification on the Y color components in the point cloud.
[0226] It's important to note that gradient classification refers to the process of dividing a point cloud into regions with different brightness variation characteristics based on the brightness gradient values of each point. Brightness gradient values are typically obtained by calculating the brightness difference between adjacent points. A larger gradient value indicates a more drastic brightness change, while a smaller gradient value indicates a more gradual brightness change. Gradient classification better adapts to the brightness variation characteristics of different regions in the point cloud, thereby further improving the effect of Wiener filtering and enhancing image quality.
[0227] In some embodiments of this application, the points in the first point cloud unit can be one or more points in the first point cloud unit.
[0228] In some embodiments of this application, the attribute values of points in the first point cloud unit include, but are not limited to, color and intensity.
[0229] In some embodiments of this application, the nearest neighbor attribute value of a point in the first point cloud unit can be understood as the attribute value of the nearest neighbor point of that point.
[0230] It is understandable that in some cases, a point in a point cloud cell has a nearest neighbor, while in other cases, a point in a point cloud cell does not have a nearest neighbor. That is, there is no data at the nearest neighbor position of the point. In this case, the point can be regarded as its own nearest neighbor.
[0231] It should be noted that nearest neighbors can be points located in the nearest positions of the current point. The nearest neighbors of the current point refer to the nearest neighbors that are on the same plane as the current point, including but not limited to those directly in front of, behind, to the left, to the right, above, and below the current point. During the filtering process for each point, the first point cloud unit is filtered more accurately by finding the K nearest neighbors (e.g., 7) of each point in the point cloud and combining this with the attribute values of the nearest neighbors.
[0232] It's understandable that "nearest neighbor" can also be interpreted as "adjacent location." In scenarios where point cloud data is processed using Morton code, the nearest neighbor refers to the location in the higher-dimensional space corresponding to points that are close to the current point's Morton code in the one-dimensional Morton code space.
[0233] In some embodiments of this application, the nearest neighbor attribute values of points in the first point cloud unit include, but are not limited to, color and intensity.
[0234] It should be noted that the attribute values of the points (or neighboring points) in the embodiments of this application can include at least one of color and intensity.
[0235] In some embodiments of this application, the reference frame point cloud of the current frame point cloud can be an adjacent frame of the current frame or other frames related to the current frame point cloud.
[0236] In some examples, the reference frame point cloud for the current frame point cloud can be the point cloud of the previous frame.
[0237] In some embodiments of this application, the nearest neighbors of a point in the first point cloud unit can be determined by spatial distance, topological structure, or other means. In some examples, for at least some points in the first point cloud unit, the attribute values of their nearest neighbors can be determined by nearest neighbor search. Exemplarily, the nearest neighbor search can be a Merton code-based nearest neighbor search or a KNN nearest neighbor search technique.
[0238] Specifically, nearest neighbor search based on Morton codes can include the following steps: converting multidimensional point cloud data into Morton codes, then sorting the point cloud data according to the Morton codes, and constructing an index structure. During a query search, for a given query point, it is first converted into Morton codes, and then a search is performed in the index structure to find points that are adjacent to the query point's Morton codes.
[0239] It's important to note that in Merton code-based nearest neighbor search, the point cloud data is first converted into Merton codes, and then the search is performed within the Merton code space. Because Merton codes preserve spatial proximity relationships in multidimensional data, searching within the Merton code space can efficiently find points near the query point. Compared to traditional KNN nearest neighbor search techniques, Merton code-based nearest neighbor search can achieve faster searches for more nearest neighbors, reducing encoding and decoding time. Furthermore, since Merton codes preserve spatial proximity relationships in multidimensional data, Merton code-based nearest neighbor search exhibits higher accuracy and robustness when processing point cloud data.
[0240] In some embodiments of this application, the encoder obtains the nearest neighbor attribute values of at least one point (i.e., some or all points) in the first point cloud unit by traversing the points in the first point cloud unit, and then filters the first point cloud unit based on the attribute values of at least one point and the nearest neighbor attribute values of at least one point. Specifically, color attributes can be extracted from each nearest neighbor point. These color attributes are usually represented in a color space, such as YUV, RGB, YCbCr, etc., and are usually processed according to the YCbCr color space in point cloud processing. For example, based on the Y component, Cb component, and Cr component in the attribute values of the current point and at least one of its nearest neighbors, filter each component in the first point cloud unit using the filter coefficients of each component. As another example, for the Y component, U component, and V component in the attribute values of at least one nearest neighbor point, filter each component in the first point cloud unit using the filter coefficients of each component.
[0241] It should be noted that the Y component represents luminance; the Cb component represents blue chromaticity, which is related to the difference in green chromaticity; and the Cr component represents red chromaticity, which is also related to the difference in green chromaticity. U and V represent the blue and red chromaticity components, respectively.
[0242] This scheme proposes to extend the neighbor search from intra-frame to intra-frame plus inter-frame, thereby enabling filtering of the current frame point cloud based on rich contextual information, improving the filtering effect, and thus enhancing the coding effect.
[0243] In some embodiments of this application, the encoder can filter the first point cloud unit based on the attribute values of the first point cloud unit in the current frame point cloud, the attribute values of the nearest neighbor of that point, and the filter coefficients. For example, for any point cloud after the first frame point cloud, the encoder can filter based on the attribute values of the first point cloud unit in the current frame point cloud, the attribute values of the nearest neighbor of that point, and the filter coefficients (inherited from the first frame point cloud).
[0244] In some embodiments of this application, the filter coefficients may include any of the following: filter coefficients inherited from other frame point clouds (such as the first frame point cloud), filter coefficients determined based on the attribute values of points in the current frame point cloud and the attribute values of the nearest neighbors of that point, or preset filter coefficients.
[0245] In some embodiments of this application, the above-mentioned filter coefficients can be the filter coefficients corresponding to the first point cloud unit.
[0246] In some examples, the first point cloud unit mentioned above is the entire point cloud of the current frame, and the first filter coefficient is a set of filter coefficients corresponding to the point cloud of the current frame, which is used to filter the point cloud of the current frame.
[0247] In some examples, the first point cloud unit mentioned above can be a set of points in at least one class obtained after gradient-based classification of the Y color components in the point cloud of the current frame. The first filter coefficient is a set of filter coefficients corresponding to the set of points, which is used to filter the points in the current point set.
[0248] Furthermore, when the first point cloud unit is a point cloud unit in the current frame point cloud, each point cloud unit can be filtered based on a set of filter coefficients corresponding to each point cloud unit to obtain filtered point cloud units. Then, the filtered point cloud units are merged to obtain a filtered frame point cloud.
[0249] In some embodiments of this application, the encoder may employ a Wiener filter to filter the first point cloud unit using the aforementioned filter coefficients, thereby obtaining an image unit with enhanced quality.
[0250] In some embodiments of this application, a filtered point cloud is obtained by applying filter coefficients to each point in the first point cloud unit. Specifically, filtering of the first point cloud unit is achieved by adjusting the attribute values (such as color, intensity, etc.), coordinate positions, or removing points based on the filter coefficients.
[0251] In some embodiments of this application, the encoder uses filter coefficients and nearest neighbor attribute values to filter each point in the first point cloud unit. For example, the filtering algorithm employed by the encoder during the filtering process may include any of the following: weighted average, median filtering, Gaussian filtering, etc.
[0252] It should be noted that the choice of filtering algorithm depends on the characteristics and requirements of the point cloud data, and this application does not limit this.
[0253] For example, suppose the first point cloud unit is a point cloud block in the current frame's point cloud, and the filtering algorithm is a weighted average. For each point P_i in the point cloud block, first find its K nearest neighbors (e.g., K=5) and determine the attribute values (e.g., color values) of these neighbors. Then, use the filter coefficients and the attribute values of the neighbors to calculate the filtered attribute value of P_i, and apply this attribute value to the current point.
[0254] Understandably, the filtered point cloud retains useful information while removing noise and unnecessary details.
[0255] The filtering method provided in this application is illustrated by specific examples below.
[0256] In some examples, during the process of filtering the current point in the first point cloud unit, the encoder searches for K nearest neighbors (e.g., 7 nearest neighbors) of the current point in the current frame point cloud where the first point cloud unit is located. These are the current point position and its coplanar nearest neighbors, such as the nearest neighbors directly in front of, behind, to the left, to the right, above, and below the current point. The encoder also searches for K nearest neighbors of the current point in the reference frame point cloud of the current frame point cloud. These are the current point position and its coplanar nearest neighbors. Then, based on these 2*K nearest neighbors and the filter coefficients, the encoder filters the first point cloud unit to obtain a point cloud unit with enhanced quality.
[0257] It should be noted that the current point is included among the K nearest neighbors, meaning that the current point can be considered as one of its nearest neighbors during processing.
[0258] Currently, filtering methods consider information from nearest neighbors within the same frame, which limits the information filtered for the first point cloud unit. Furthermore, when no nearest neighbor exists for the target in the current frame, the attribute value of the current point is used to assign the attribute value to that nearest neighbor, preventing the Wiener filter from achieving optimal performance. However, with increasing demands for video quality, current filtering methods may not meet the requirements. For example, in dynamic point cloud scenes, due to the movement and changes of points, nearest neighbors within the same frame may not accurately reflect the true neighborhood information of the current point. Additionally, when no nearest neighbor exists for the target in the current frame, using the attribute value of the current point to assign the attribute value to that nearest neighbor introduces errors, resulting in poor filtering performance.
[0259] The filtering method provided in this application embodiment filters the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the points' nearest neighbors. The attribute values of a point's nearest neighbors include at least one of the following: the attribute value of a point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the current frame point cloud in the reference frame point cloud. The first point cloud unit is filtered based on filter coefficients. Through this scheme, the corresponding nearest neighbor points in the reference frame of the current frame point cloud are included in the processing, realizing the expansion of the nearest neighbor points of the points in the point cloud from intra-frame to intra-frame and inter-frame. In this way, more feature dimensions are provided for filtering, thereby enabling more accurate estimation of the true attributes of the points (such as color), improving the filtering effect of the point cloud, reducing the amount of residual data during encoding, and thus improving encoding performance.
[0260] In some embodiments of this application, step 401 described above can be implemented by step 401a.
[0261] Step 401a: If the current frame point cloud has a nearest neighbor of the aforementioned point, and the reference frame point cloud does not have a nearest neighbor of the aforementioned point, then filter the first point cloud unit based on the attribute value of the aforementioned point and the attribute value of the nearest neighbor of the current frame point cloud.
[0262] In some examples, when the encoder searches for the nearest neighbor of the current point in the current frame point cloud and the reference frame point cloud, if there is a nearest neighbor of a point in the current frame point cloud but no nearest neighbor of that point in the reference frame point cloud, then the first point cloud unit is filtered only based on the attribute value of that point in the current frame point cloud and the attribute values of its nearest neighbors.
[0263] For example, during the filtering process of the first point cloud unit, the encoder traverses the points in the first point cloud unit. For a point that has a neighboring point in the current frame point cloud but no neighboring point in the reference frame, the encoder filters the first point cloud unit based on the attribute value of the point, the attribute values of the neighboring points of the point found in the current frame point cloud, the attribute values of other points, and the attribute values of the neighboring points of other points.
[0264] It should be noted that the absence of nearest neighbors for a given point in the reference frame point cloud may be due to significant temporal or spatial differences between the reference frame point cloud and the current frame point cloud, making it impossible to find effective nearest neighbors at the current point's location. Therefore, in this case, filtering of the first point cloud unit can be based solely on information from the current frame point cloud. For example, when processing a dynamically changing point cloud sequence, where the current frame point cloud represents the surface of a moving object, rapid movement or occlusion of the object may cause the reference frame point cloud to lack nearest neighbors for a point in the current frame point cloud, or it may be impossible to completely capture the nearest neighbors of a point in the current frame point cloud.
[0265] It is understandable that, since filtering is typically performed on at least some (usually all) pixels in a first image unit, some points may only have intra-frame neighbors. However, based on inter-frame similarity, some points still have inter-frame neighbors. In other words, for points in other regions of the current frame's point cloud, there may be neighbors of that point in a reference frame. Therefore, the filtering method provided in this application embodiment can improve the overall filtering effect on the current frame's point cloud.
[0266] In this embodiment of the application, when there are only intra-frame nearest neighbors for the current point but no inter-frame nearest neighbors, the first point cloud unit can be filtered based on the attribute value of the point and the attribute value of the intra-frame nearest neighbors, thereby effectively performing filtering processing and ensuring the filtering effect.
[0267] In some embodiments of this application, step 401 described above can be implemented by step 401b.
[0268] Step 401b: If the current frame point cloud does not have a nearest neighbor of the aforementioned point, but the reference frame point cloud has a nearest neighbor of the aforementioned point, then filter the first point cloud unit based on the attribute value of the aforementioned point and the attribute values of the nearest neighbor of the aforementioned point in the reference frame point cloud.
[0269] In some examples, when searching for the nearest neighbor of a point in the current frame point cloud and the reference frame point cloud, if there is no nearest neighbor of a point in the current frame point cloud but there is a nearest neighbor of that point in the reference frame point cloud, the encoder filters the first point cloud unit only based on the attribute value of that point and the attribute value of the nearest neighbor in the reference frame.
[0270] For example, during the filtering process of the first point cloud unit, the encoder traverses the points in the first point cloud unit. For a point that does not have a nearest neighbor in the current frame point cloud but has a nearest neighbor in the reference frame, the first point cloud unit is filtered based on the attribute value of the point, the attribute values of the nearest neighbor of the point found in the frame point cloud, the attribute values of other points, and the attribute values of the nearest neighbor of other points.
[0271] It should be noted that the absence of a nearest neighbor in the current point cloud may be due to sparse point cloud data or occlusion issues, making it impossible to find a valid nearest neighbor in the current frame. In this case, information from a reference frame point cloud can be used to supplement the missing information in the current frame point cloud, thereby filtering the first point cloud unit. For example, when processing a dynamically changing point cloud sequence, where the current frame point cloud represents the surface of a moving object, the rapid movement or occlusion of the object may cause the absence of a nearest neighbor for a certain point in the current frame point cloud, or the inability to completely capture the nearest neighbors of a certain point in the current frame point cloud.
[0272] In this embodiment of the application, when there are no intra-frame nearest neighbors at the current point, but there are inter-frame nearest neighbors, the first point cloud unit can be filtered based on the attribute value of the current point and the attribute value of the inter-frame nearest neighbors, thereby effectively performing filtering processing and improving the filtering effect.
[0273] In some embodiments of this application, step 401 described above can be implemented by step 401c.
[0274] Step 401c: If there are neighboring points of the above-mentioned point in the current frame point cloud and there are neighboring points of the above-mentioned point in the reference frame point cloud, then filter the first point cloud unit based on the attribute value of the above-mentioned point, the attribute value of the neighboring points of the above-mentioned point in the current frame point cloud, and the attribute value of the neighboring points of the above-mentioned point in the reference frame point cloud.
[0275] In some examples, when searching for the nearest neighbor of a point in the current frame point cloud and the reference frame point cloud, if a nearest neighbor of a point exists in both the current frame point cloud and the reference frame point cloud, then the first point cloud unit can be filtered together based on the attribute values of that point, the attribute values of the nearest neighbor of that point in the current frame point cloud, and the attribute values of the nearest neighbor of that point in the reference frame point cloud.
[0276] In some examples, the encoder can calculate the attribute difference between the attribute value of the nearest neighbor of the point in the current frame point cloud and the attribute value of the current point, and calculate the attribute difference between the attribute value of the nearest neighbor of the point in the reference frame point cloud and the attribute value of the current point. Then, the nearest neighbor with the smaller attribute difference value is determined as the nearest neighbor for filtering the first point cloud unit. In other words, the attribute value of the nearest neighbor with the smaller attribute difference value is determined as the nearest attribute value for filtering the first point cloud unit.
[0277] For example, when filtering the first point cloud unit, the points within it are traversed. For a point where a nearest neighbor can be found in both the current frame and the reference frame, the first point cloud unit is filtered based on its own attribute value, the attribute values of the nearest neighbor found in the current frame, and the attribute values of the nearest neighbor found in the reference frame.
[0278] In this embodiment, by comprehensively considering intra-frame and inter-frame information, the first point cloud unit can be filtered more accurately, thereby improving the filtering effect.
[0279] In some embodiments of this application, step 401 described above can be implemented by step 401d.
[0280] Step 401d: If the current frame point cloud does not have a nearest neighbor of the aforementioned point, and the aforementioned reference frame point cloud does not have a nearest neighbor of the aforementioned point, then filter the first point cloud unit based on the attribute value of the aforementioned point and the attribute value of the aforementioned nearest neighbor.
[0281] Among them, the nearest neighbor attribute value of a point is the same as the attribute value of the point.
[0282] In some examples, when searching for the nearest neighbor of a point in the current frame point cloud and the reference frame point cloud, if there is no nearest neighbor of a point in the current frame point cloud and there is no nearest neighbor of the point in the reference frame point cloud, then the first point cloud unit will be filtered based solely on the attribute value of that point and a hypothetical nearest neighbor attribute value that is the same as the attribute value of that point (i.e., the attribute value of that point itself is used as the nearest neighbor attribute value).
[0283] For example, when the encoder filters the first point cloud unit, for points that cannot find nearest neighbors in the current frame and the reference frame, it will filter the first point cloud unit based solely on the point's own attribute values. In this case, since it is impossible to obtain effective nearest neighbor information from within or between frames, it is assumed that the nearest neighbor attribute value of the point is the same as its own attribute value, and filtering is performed based on this.
[0284] It should be noted that this situation may occur when the point cloud of the current frame and the point cloud of the reference frame differ significantly in time and space, or when the point cloud data itself is sparse, making it impossible to find effective nearest neighbors around the current point. In this case, filtering of the first point cloud unit is performed based on the attribute value of the current point to ensure that the filtering process is carried out.
[0285] In some embodiments of this application, the filtering method described above may further include steps 403 to 405:
[0286] Step 403: Determine the candidate nearest neighbor of the above point in the point cloud of the current frame.
[0287] Step 404: Determine the candidate nearest neighbor of the above point in the point cloud of the reference frame.
[0288] Step 405: Based on the attribute difference value between the first candidate nearest neighbor point determined in the current frame point cloud and the point, and the attribute difference value between the second candidate nearest neighbor point determined in the reference frame point cloud and the point, determine the nearest neighbor point of the point from the first candidate nearest neighbor point and the second candidate nearest neighbor point.
[0289] In some examples, the candidate nearest neighbors mentioned above are the set of points related to the current point.
[0290] It should be noted that the first candidate nearest neighbor point determined in the current frame point cloud can be understood as an intra-frame nearest neighbor point, i.e., an intra-frame point; the second candidate nearest neighbor point determined in the reference frame point cloud can be understood as an inter-frame nearest neighbor point, i.e., an inter-frame point.
[0291] In some examples, the first candidate nearest neighbor may include one or more candidate nearest neighbors.
[0292] In some examples, the second candidate nearest neighbor may include one or more candidate nearest neighbors.
[0293] For example, the first candidate nearest neighbor is a nearest neighbor of the current point within the current point cloud frame, and the second candidate nearest neighbor is a nearest neighbor of the current point within the reference frame point cloud. The nearest neighbor within the current point frame point cloud and the nearest neighbor in the reference frame point cloud have a corresponding relationship; that is, they can correspond to the same nearest neighbor position of the current point, such as directly above it. In other words, the first and second candidate nearest neighbors include one or more pairs of nearest neighbors, with each pair corresponding to a nearest neighbor position of the current point.
[0294] In some embodiments of this application, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the aforementioned first candidate nearest neighbor and the aforementioned second candidate nearest neighbor.
[0295] In some examples, the attribute difference values mentioned above can be color difference values.
[0296] In some examples, when there are candidate nearest neighbors in both the reference frame and the current frame that are coplanar with the current point, the color difference between the current point and the first candidate nearest neighbor in the frame and the second candidate nearest neighbor between the frames can be calculated. The candidate nearest neighbor with the smaller color difference value among the first candidate nearest neighbors is then identified as the nearest neighbor of the current point.
[0297] In some examples, the color difference between the current point and intra-frame and inter-frame points is calculated using the following formula:
[0298] Where curColor[i] is the i-th color attribute value of the current point, and neighborColor[i] is the i-th color attribute value of the intra-frame point or inter-frame point. Points with smaller color differences are selected and added as the nearest neighbors of the corresponding coplanar positions of the current point.
[0299] The filtering method provided in this application is illustrated by specific embodiments below.
[0300] For example, in the current frame point cloud, a set of points related to the current point is found based on spatial location or other attributes (such as normal direction) as candidates for intra-frame nearest neighbors; in the reference frame point cloud, a set of points related to the current point is also found based on spatial location or other attributes as candidates for inter-frame nearest neighbors. Then, for each candidate nearest neighbor, its color difference value with the current point is calculated using the above formula (8). The color difference value can be calculated by comparing the color attribute values (such as RGB values) of the two points. If both intra-frame and inter-frame nearest neighbors exist and are coplanar, the color difference value between the intra-frame nearest neighbor and the current point, and the color difference value between the inter-frame nearest neighbor and the current point are calculated respectively, and the point with the smaller difference value is selected as the nearest neighbor of the current point.
[0301] In some examples, for each point in the first image unit, after searching for intra-frame and inter-frame nearest neighbors at the same nearest neighbor position, the color difference between the intra-frame and inter-frame nearest neighbors and the current point can be compared, and the nearest neighbor with the smallest difference can be determined as the nearest neighbor of the current nearest neighbor position. Suppose that in the current frame point cloud, a nearest neighbor P1 located directly above the current point P is found, and a nearest neighbor P2 located directly above the current point is also found in the reference frame, then the color difference value colorDiff_intra between the current point P and the intra-frame nearest neighbor P1 is calculated according to the above formula (8), and the color difference value colorDiff_inter between the current point P and the inter-frame nearest neighbor P2 is calculated. Suppose that the color attribute value of the intra-frame nearest neighbor P1 is YUV(105, 155, 205), and the color attribute value of the current point P is YUV(100, 150, 200), then
[0302] Similarly, calculate the color difference between the nearest neighbor P2 and the current point P in the inter-frame. Assuming the color difference between P2 and the current point is 8, since the color difference between the nearest neighbor P2 and the current point P in the inter-frame is less than the color difference between the nearest neighbor P1 and the current point P in the intra-frame, it indicates that the color attributes of P2 in the reference frame point cloud are more similar to those of the current point P. Therefore, the nearest neighbor P2 in the inter-frame is taken as the nearest neighbor of the current point P.
[0303] In some examples, for each point in the first image unit, after searching for multiple (up to a maximum of 6) intra-frame and inter-frame nearest neighbors of the point, the color difference between the intra-frame and inter-frame nearest neighbors of each nearest neighbor location and the current point is compared, and the nearest neighbor with the smallest difference is determined as the nearest neighbor of the current nearest neighbor location. Suppose that in the current frame point cloud, the nearest neighbor P1 is found to be directly in front of the current point P, the nearest neighbor P2 is directly behind the current point P, the nearest neighbor P3 is directly to the left of the current point P, the nearest neighbor P5 is directly to the right of the current point P, the nearest neighbor P5 is directly above the current point P, and the nearest neighbor P6 is directly below the current point P. In the reference frame, the nearest neighbor P7 is found to be directly in front of the current point P, the nearest neighbor P8 is directly behind the current point P, the nearest neighbor P9 is directly to the left of the current point P, the nearest neighbor P10 is directly to the right of the current point P, the nearest neighbor P11 is directly above the current point P, and the nearest neighbor P12 is directly below the current point P. Then, according to the above formula (8), the color difference value between P1 and P7 and P is calculated respectively. The point with the smaller color difference value between P1 and P7 and P is taken as the nearest neighbor of point P. Similarly, the color difference value between P2 and P8 and the current point P is calculated respectively. The point with the smaller color difference value between P2 and P8 and P is taken as the nearest neighbor of point P. This process is repeated until the six nearest neighbors of point P are finally determined.
[0304] In some embodiments of this application, a nearest neighbor of a point is the candidate nearest neighbor among the first candidate nearest neighbor and the second candidate nearest neighbor whose attribute difference value with the first color component is the smallest. In some embodiments of this application, the first color component can be at least one of a Y component, a U component, and a V component; or the first color component can be at least one of a Y component, a Cb component, and a Cr component.
[0305] In some examples, after determining the first candidate nearest neighbor of the current point in the current frame point cloud and the second candidate nearest neighbor in the reference frame point cloud, the color difference value of the Y component between the first candidate nearest neighbor and the current point is calculated. The nearest neighbor with the smaller color difference value of the Y component from the first and second candidate nearest neighbors is determined as the nearest neighbor for filtering the Y component. Similarly, the color difference value of the U component between the first candidate nearest neighbor and the current point is calculated. The nearest neighbor with the smaller color difference value of the U component from the first and second candidate nearest neighbors is determined as the nearest neighbor for filtering the U component. The color difference value of the V component between the first candidate nearest neighbor and the current point is calculated. The nearest neighbor with the smaller color difference value of the V component from the first and second candidate nearest neighbors is determined as the nearest neighbor for filtering the V component. Then, filtering is performed on each color component based on the color attribute values of the nearest neighbors corresponding to the Y, U, and V color components.
[0306] For example, taking the case where both the first and second candidate nearest neighbors include M nearest neighbors, after determining the M nearest neighbors of the current point in the current frame point cloud and the corresponding M nearest neighbors in the reference frame point cloud, the color differences in the Y component between the M nearest neighbors in the current frame point cloud and the current point, and the color differences in the Y component between the M nearest neighbors in the reference frame point cloud and the current point, are calculated respectively. From these two sets of nearest neighbors, nearest neighbors with smaller color differences in the Y component compared to the current point are selected. Similarly, nearest neighbors with smaller color differences in the V component compared to the current point are selected, as are those with smaller color differences in the V component compared to the current point. Based on the selected nearest neighbors corresponding to different components, the Y, U, and V components are filtered respectively.
[0307] Specifically, suppose that in the point cloud of the current frame, the nearest neighbor P1 directly in front of the current point P, the nearest neighbor P2 directly behind the current point P, the nearest neighbor P3 directly to the left of the current point P, the nearest neighbor P5 directly to the right of the current point P, the nearest neighbor P5 directly above the current point P, and the nearest neighbor P6 directly below the current point P are also found in the reference frame. For a neighboring point P12, calculate the color difference values of the Y components between P1 and P7 and P. Select the point with the smaller color difference value from P1 and P7 as the nearest neighbor for filtering the Y component. Similarly, calculate the color difference values of the Y components between P2 and P8 and the current point P, and select the point with the smaller color difference value from P2 and P8 as the nearest neighbor for filtering the Y component. Continue this process to determine all the nearest neighbors of the current point P used for filtering the Y component. Likewise, the nearest neighbors used for filtering the U and V components can be obtained.
[0308] In some embodiments of this application, the N nearest neighbors of the aforementioned point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of determined first candidate nearest neighbors and a plurality of determined second candidate nearest neighbors, where N is an integer greater than 1.
[0309] In some examples, for a point (such as the current point or the target point), firstly, determine one or more nearest neighbors of that point in the current frame, and one or more nearest neighbors in the reference frame. Then, calculate the color difference values between the current point and each of the nearest neighbors in the current frame, and the color difference values between the current point and each of the nearest neighbors in the reference frame. Next, sort the calculated color difference values in ascending order. Based on this, select the N (e.g., 6) candidate nearest neighbors with the smallest color difference values as the final nearest neighbors of the target point.
[0310] In some embodiments of this application, the N nearest neighbors of the aforementioned point are N candidate nearest neighbors that satisfy the spatial location conditions of the aforementioned point from among a plurality of determined first candidate nearest neighbors and a plurality of determined second candidate nearest neighbors, where N is an integer greater than 1.
[0311] For example, in conjunction with the above example, suppose that in the current frame point cloud, the nearest neighbor P1 is located directly in front of the current point P, the nearest neighbor P2 is located directly behind the current point P, the nearest neighbor P3 is located directly to the left of the current point P, the nearest neighbor P5 is located directly to the right of the current point P, the nearest neighbor P5 is located directly above the current point P, and the nearest neighbor P6 is located directly below the current point P. In the reference frame, the nearest neighbor P7 is located directly in front of the current point P, the nearest neighbor P8 is located directly behind the current point P, the nearest neighbor P9 is located directly to the left of the current point P, the nearest neighbor P10 is located directly to the right of the current point P, the nearest neighbor P11 is located directly above the current point P, and the nearest neighbor P12 is located directly below the current point P. Then, according to the above formula (8), the color difference values between P1 to P12 and P are calculated respectively. The 12 color difference values are sorted in ascending order, and the nearest neighbor corresponding to the first 6 smallest color difference values among P1 to P12 is taken as the nearest neighbor of P.
[0312] In some examples, for a given point, first determine one or more nearest neighbors in the current frame, and one or more nearest neighbors in the reference frame. Then, calculate the color difference between the current point and each of the nearest neighbors in the current frame, and the color difference between the current point and each of the nearest neighbors in the reference frame. Finally, based on the spatial positions of N (e.g., 6) nearest neighbors relative to the current point, select N candidate nearest neighbors as the final nearest neighbors of the target point.
[0313] It should be noted that, in the actual calculation process, at least some points in the first image unit are traversed, and the processing performed on each point is the same as the processing process for the current point, until the nearest neighbor of the at least some points is determined.
[0314] The filtering method in this embodiment extends the nearest neighbor search from intra-frame to intra-frame plus inter-frame, thus doubling the number of searched points. That is, each nearest neighbor position coplanar with the current position becomes two points (intra-frame point plus inter-frame point). Further, when both points exist for each nearest neighbor position coplanar with the current position, the color difference values between the current point and the intra-frame and inter-frame points are calculated, and the point with the smaller color difference is added to the nearest neighbor of the corresponding coplanar position of the current point; or, when only one of the two points exists for each nearest neighbor position coplanar with the current position, that nearest neighbor point is selected and added to the nearest neighbor of the corresponding coplanar position of the current point; or, when neither of the two points exists for each nearest neighbor position coplanar with the current position, the current point is added to the nearest neighbor of the corresponding coplanar position of the current point. This ensures that the final selection of points for filtering remains unchanged, improving the filtering effect while maintaining filtering efficiency.
[0315] In some embodiments of this application, the nearest neighbor of a point in the current frame point cloud is determined based on the Morton code of the point, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, and the first value is the sequence number or a first specific value of the point in the current frame point cloud.
[0316] In some embodiments of this application, the first specific value is used to characterize that there is no nearest neighbor point in the current frame point cloud whose Morton code corresponds to the first Morton code.
[0317] It should be noted that Merton codes are a type of space-filling curve that maps points in a multi-dimensional space to a one-dimensional space while preserving the relative position information of the points. In point cloud processing, Merton codes can be used for operations such as point cloud sorting and spatial indexing.
[0318] In some examples, the preset offset is a fixed value used to adjust the Morton code to find nearest neighbors. By adjusting the Morton code and finding its position in the corresponding table, points adjacent to the current point can be found. Specifically, the sum of the current point's Morton code and the preset offset is either a nearest neighbor position of the current point or the Morton code of a nearest neighbor.
[0319] In some examples, the intra-frame point mapping table stores the correspondence between the Morton codes of points in the current frame point cloud and sequence numbers or specific values. The sequence number is used to uniquely identify each point in the point cloud, while the specific value is used to indicate that there are no nearest neighbors with the corresponding Morton code.
[0320] For example, all points in the current frame's point cloud can be traversed, the Morton code for each point can be calculated, and the sequence number of the point can be stored in the intra-frame point correspondence table according to the order of the Morton codes. If a Morton code does not have a nearest neighbor, then a specific value is stored.
[0321] In some embodiments of this application, the Morton codes in the above intra-frame point correspondence table are generated based on the maximum Morton code of the points in the current frame point cloud.
[0322] Understandably, the intra-frame point mapping table can cover all possible Morton code ranges, thereby improving the completeness and accuracy of nearest neighbor lookup.
[0323] For example, the process iterates through all points in the current frame and its point cloud, calculates the Morton code for each point, and finds the largest Morton code. Then, a mapping table is generated based on the largest Morton code to ensure that the intra-frame point mapping table contains all possible Morton code values.
[0324] The following example illustrates the process of determining nearest neighbors in the current frame point cloud.
[0325] For example, for a point in the current frame's point cloud, its Morton code is first calculated; then, the Morton code is adjusted according to a preset offset to obtain the adjusted Morton code; the sequence number or specific value corresponding to the adjusted Morton code is searched in the intra-frame point correspondence table. Specifically, if a sequence number is found, the corresponding point is a nearest neighbor; if a specific value is found, it means that there is no nearest neighbor with the corresponding Morton code.
[0326] In some embodiments of this application, the nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, wherein the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
[0327] In some embodiments of this application, the aforementioned second specific value is used to characterize that there is no nearest neighbor point in the reference frame point cloud whose Morton code corresponds to the second Morton code.
[0328] In some embodiments of this application, the Morton codes in the above-mentioned inter-frame point correspondence table are generated based on the maximum Morton code of the points in the above-mentioned reference frame point cloud.
[0329] In some examples, the inter-frame point mapping table stores the correspondence between the Morton codes of points in the reference frame point cloud and sequence numbers or specific values. The sequence number is used to uniquely identify each point in the point cloud, while the specific value is used to indicate that there are no nearest neighbors with the corresponding Morton code.
[0330] For example, all points in the current frame's point cloud can be traversed, the Morton code for each point can be calculated, and the sequence number of the point can be stored in an inter-frame point correspondence table according to the order of the Morton codes. If a Morton code does not have a nearest neighbor, a specific value is stored.
[0331] In some embodiments of this application, the Morton codes in the above-mentioned inter-frame point correspondence table are generated based on the maximum Morton code of the points in the above-mentioned reference frame point cloud.
[0332] Understandably, the inter-frame point mapping table can cover all possible Morton code ranges, thereby improving the completeness and accuracy of nearest neighbor lookup.
[0333] For example, all points in the point clouds of the current frame and the reference frame are traversed, the Morton code for each point is calculated, and the largest Morton code is found. Then, a mapping table is generated based on the largest Morton code to ensure that the intra-frame point mapping table contains all possible Morton code values.
[0334] The following example illustrates the process of determining nearest neighbors in the current frame point cloud.
[0335] For example, for a point in the reference frame point cloud, its Morton code is first calculated; then, the Morton code is adjusted according to a preset offset to obtain the adjusted Morton code; the sequence number or specific value corresponding to the adjusted Morton code is searched in the inter-frame point correspondence table; if the sequence number is found, the corresponding point is the nearest neighbor point; if the specific value is found, it means that there is no nearest neighbor point with the corresponding Morton code.
[0336] In this embodiment of the application, by pre-calculating and storing the correspondence between Morton codes and sequence numbers or specific values in the inter-frame point correspondence table, the repeated calculation of Morton codes and complex spatial searches when searching for nearest neighbors in the reference frame are avoided, thereby improving the search efficiency.
[0337] Based on the above embodiments, the specific data flow for searching the K nearest neighbors is described below:
[0338] ① Correspondence Table Construction: Before traversing and reconstructing each point in the point cloud and performing nearest neighbor search, two correspondence tables need to be constructed (inter-frame point correspondence table and intra-frame point correspondence table). The construction process of the correspondence tables is as follows: ① In the previous attribute information encoding process, a sequence of points sorted according to the Morton code size in the point cloud was used, from which the maximum Morton code number among all points can be obtained. Then, a correspondence table is constructed, with the index of the correspondence table ranging from 0 to the maximum Morton code number. All values indexed in the correspondence table are set to -1 (for example, if the maximum Morton code number is 100, then the constructed correspondence table is {0: -1, ..., 100: -1}). ② Iterate through all points in the point cloud. For each point in the point cloud, the index is the Morton code of that point, and the value obtained from the index is the sequence number of that point (for example, if the sequence number of the first point in the sequence is 1 and its Morton code is 4, and the sequence number of the second point is 2 and its Morton code is 6, then the corresponding table is {0: -1, 1: -1, 2: -1, 3: -1, 4: 1, 5: -1, 6: 2, ..., 100: -1}).
[0339] ② Search table construction: The search table stores only seven values, namely the current point position and the offset between the current point position and the nearest neighbor positions coplanar with the current point position (i.e., the nearest neighbor positions directly in front of, behind, to the left, to the right, above, and below the current point). The offsets are written into the search table.
[0340] ③ Nearest Neighbor Search Process: Traverse every point in the point cloud. For each point, calculate the Morton code of its first neighboring position based on the search table. Search the inter-frame and intra-frame correspondence tables based on this Morton code position. If none of the indexed values are -1, it means that both intra-frame and inter-frame nearest neighbors exist. Calculate the color difference between the current point and both intra-frame and inter-frame nearest neighbors, and store the sequence number of the nearest neighbor with the smallest color difference; this point is one of the target point's nearest neighbors. If all the indexed values in the correspondence tables for this position are -1, it means that neither intra-frame nor inter-frame nearest neighbors exist at this position. Then, assign the attribute value of the current point to the attribute value of this nearest neighbor position. If only one of the indexed values for this position is not -1, store the sequence number of this point; this point is one of the target point's nearest neighbors.
[0341] The filtering method provided in this application embodiment is based on Wiener filtering of three-dimensional point clouds using inter-frame nearest neighbor search and color difference comparison. It extends the nearest neighbor search from intra-frame to intra-frame plus inter-frame, selects points with smaller color differences from the current point to filter the current point, thereby improving the performance of the Wiener filter.
[0342] In some embodiments of this application, step 402 described above can be implemented by step 402a.
[0343] Step 402a: Filter the first point cloud unit based on the attribute values of the points in the first point cloud unit, the attribute values of the nearest neighbors, and the filter coefficients.
[0344] In some examples, the attribute value of the current point can be weighted and summed with the attribute values of its nearest neighbors, or the median or other operations can be performed based on the filter coefficients to obtain a new attribute value. This new attribute value can then replace the original attribute value of the current point, thereby achieving filtering.
[0345] In some embodiments of this application, the filtering method described above may further include the following step 406:
[0346] Step 406: Write the above filter coefficients into the attribute bitstream.
[0347] In some examples, after obtaining the filter coefficients, the storage format for filtering the first point cloud unit can be determined according to specific application requirements and encoding standards. For example, fixed-length binary numbers can be used to represent the filter coefficients, or a variable-length encoding method can be used.
[0348] In some examples, filter coefficients can be written into the attribute bitstream according to a defined storage format to facilitate subsequent decoding and processing.
[0349] In some examples, filter coefficients are read from the attribute bitstream at the decoding end or in subsequent processing, and the point cloud is filtered based on the filter coefficients. This makes it easy to obtain the filter coefficients and thus realize the filtering operation on the point cloud.
[0350] In this embodiment, filtering the point cloud based on filter coefficients and nearest neighbor attribute values can more accurately reflect the local features of the point cloud and improve the accuracy of filtering. By writing the filter coefficients into the attribute bitstream, it is easier to obtain and use the filter coefficients in subsequent decoding and processing, thereby improving the flexibility and scalability of point cloud processing.
[0351] As a possible example, step 406 above can be performed after step 402 or step 402a above.
[0352] Figure 14 is a flowchart illustrating the filtering method provided in an embodiment of this application. This filtering method can be applied to a decoder. As shown in Figure 14, the filtering method may include the following steps 501 and 502:
[0353] Step 501: Parse the attribute bitstream to obtain the filter coefficients.
[0354] Step 502: Filter the first point cloud unit based on the above filter coefficients, the attribute values of the points in the first point cloud unit, and the attribute values of the nearest neighbors of the points.
[0355] The nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the reference frame point cloud.
[0356] In some embodiments of this application, the decoder receives and parses the attribute bitstream. Specifically, the decoder performs entropy decoding and inverse quantization on the attribute bitstream to extract parameters such as the filter coefficients of the first point cloud unit from the bitstream.
[0357] In some embodiments of this application, the first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
[0358] In some embodiments of this application, the decoder determines the first point cloud unit that needs to be filtered based on application requirements. Specifically, if the first point cloud unit is the current frame point cloud, the filter coefficients are applied to filter the entire current frame point cloud; if the first point cloud unit is a subset of the current point cloud frame, the subset of the current point cloud frame is filtered.
[0359] In some embodiments of this application, the decoder uses filter coefficients and nearest neighbor attribute values to filter each point in the first point cloud unit. Exemplarily, the filtering algorithm employed by the decoder during filtering may include any of the following: weighted average, median filtering, Gaussian filtering, etc.
[0360] It should be noted that the choice of filtering algorithm depends on the characteristics and requirements of the point cloud data, and this application does not limit this.
[0361] For example, suppose the first point cloud unit is a point cloud block in the current frame's point cloud, and the filtering algorithm is a weighted average. For each point P_i in the point cloud block, first find its K nearest neighbors (e.g., K=5) and determine the attribute values (e.g., color values) of these neighbors. Then, use the filter coefficients and the attribute values of the neighbors to calculate the filtered attribute value of P_i, and apply this attribute value to the current point.
[0362] It should be noted that the specific filtering scheme for the first point cloud unit at the decoding end, based on the filter coefficients and the nearest neighbor attribute values of the points in the first point cloud unit, is the same as that at the encoding end, and the beneficial effects achieved by the specific scheme are also the same. That is, all the contents involved in steps 401 and 402 above can be applied to the decoding end. To avoid repetition, it will not be elaborated here.
[0363] In some embodiments of this application, the filtering method may further include steps 503 to 505:
[0364] Step 503: Determine the candidate nearest neighbor of the above point in the current frame point cloud.
[0365] Step 504: Determine the candidate nearest neighbor of the above point in the point cloud of the above reference frame.
[0366] Step 505: Based on the attribute difference value between the first candidate nearest neighbor point determined in the current frame point cloud and the aforementioned point, and the attribute difference value between the second candidate nearest neighbor point determined in the reference frame point cloud and the aforementioned point, determine the nearest neighbor point of the aforementioned point from the first candidate nearest neighbor point and the second candidate nearest neighbor point.
[0367] In some embodiments of this application, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the aforementioned first candidate nearest neighbor and the aforementioned second candidate nearest neighbor.
[0368] In some embodiments of this application, the N nearest neighbors of the aforementioned point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of determined first candidate nearest neighbors and a plurality of determined second candidate nearest neighbors, where N is an integer greater than 1.
[0369] In some embodiments of this application, the nearest neighbor of a point in the current frame point cloud is determined based on the Morton code of the point, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, and the first value is the sequence number or a first specific value of the point in the current frame point cloud.
[0370] In some embodiments of this application, the first specific value is used to characterize that there is no nearest neighbor point in the current frame point cloud whose Morton code corresponds to the first Morton code.
[0371] In some embodiments of this application, the Morton codes in the above intra-frame point correspondence table are generated based on the maximum Morton code of the points in the current frame point cloud.
[0372] In some embodiments of this application, the nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, wherein the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
[0373] In some embodiments of this application, the aforementioned second specific value is used to characterize that there is no nearest neighbor point in the reference frame point cloud whose Morton code corresponds to the second Morton code.
[0374] In some embodiments of this application, the Morton codes in the above-mentioned inter-frame point correspondence table are generated based on the maximum Morton code of the points in the above-mentioned reference frame point cloud.
[0375] It should be noted that the specific schemes for steps 503 to 505 above are the same as those for the encoding end, and the beneficial effects achieved by the specific schemes are also the same. That is, all the content involved in steps 403 to 405 above can be applied to the decoding end. To avoid repetition, it will not be repeated here.
[0376] The filtering method of this application embodiment parses the attribute bitstream to obtain filter coefficients; based on the filter coefficients, the attribute values of points in the first point cloud unit, and the nearest neighbor attribute values of points in the first point cloud unit, the first point cloud unit is filtered; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the current frame point cloud in the reference frame point cloud. Through this scheme, the corresponding nearest neighbor points in the reference frame of the current frame point cloud are included in the calculation, thus expanding the nearest neighbor points of points in the point cloud from intra-frame to intra-frame and inter-frame. This provides more feature dimensions for filtering, enabling more accurate estimation of the true attributes of points (such as color), improving the filtering effect of the point cloud, reducing the amount of residual data during decoding, and thereby improving decoding performance.
[0377] It should be noted that the explanation of the decoding scheme can be found in the explanation of the encoding scheme above, and will not be repeated here to avoid repetition.
[0378] The following simulation results further illustrate the effects produced by the embodiments of this application. As shown in Table 1, 32 frames of each type of multi-frame dynamic point cloud sequence required by MPEG were taken under different conditions (cat2). During the test, K was set to 7, and the test results are shown in Table 1.
[0379] Table 1. Test results of inter-frame Wiener filtering quality enhancement technology under C1 condition when K=7.
[0380] The results obtained using the previously proposed gradient-based point adaptive Wiener filtering method with K set to 7 are shown in Table 2:
[0381] Table 2. Test results of inter-frame Wiener filtering quality enhancement technology under C1 condition when K=7.
[0382] In this table, C1 represents lossless geometry and nearly lossless attribute coding. End-to-End BD-AttrRate indicates the end-to-end BD-Rate of the attribute values relative to the attribute bitstream. BD-Rate reflects the difference in Peak Signal-to-Noise Ratio (PSNR) curves between the two cases (with and without filtering). A decrease in BD-Rate indicates a reduction in bitrate and improved performance while maintaining the same PSNR; conversely, a increase indicates a decrease in performance. In other words, a greater decrease in BD-Rate results in better compression. Cat2-A average, Cat2-B average, and Cat2-C average represent the average test results of point cloud sequences from the three datasets in Cat2, respectively. Finally, the Overall average is the average test result of all sequences. The test results show that, compared with the previous scheme, the proposed method has increased the encoding time due to the addition of inter-frame search in the nearest neighbor search, and the Luma and Chroma Cr components are slightly reduced. However, due to the considerable improvement in Chroma Cb in the color attributes, the overall performance is still improved.
[0383] The filtering method provided in this application extends the neighbor search from intra-frame to intra-frame plus inter-frame, selects points with smaller color differences from the current point to filter the current point, thereby further improving the performance of the Wiener filter and thus enhancing the encoding and decoding performance.
[0384] It should be noted that the encoding end in any embodiment of this application can be the encoder 112 in Figure 1, the point cloud encoder 1000 in Figure 2, or the attribute encoding module 200 in Figure 4, or the source device 11 in Figure 1. The decoding end in any embodiment of this application can be the decoder 122 in Figure 1, the decoder 2000 in Figure 3, or the attribute decoding module 300 in Figure 5. Alternatively, the attribute decoding module 300 in Figure 5 can also be the destination device 12 in Figure 1. This application does not limit the specific device in this regard.
[0385] Accordingly, this application provides a filtering device. Based on the above method example, the filtering device can be divided into functional modules. For example, each function can be divided into its own functional modules, or two or more functions can be integrated into one processing module. The integrated modules can be implemented in hardware or as software functional modules. It should be noted that the module division in this embodiment is illustrative and represents only one logical functional division; in actual implementation, other division methods may be used.
[0386] With each functional module divided according to its corresponding function, Figure 15 shows a possible structural schematic diagram of the filtering device involved in the above embodiments. As shown in Figure 15, the device 600 includes: a filtering module 601; the filtering module 601 is used to filter the first point cloud unit based on the attribute values of points in the first point cloud unit and the nearest neighbor attribute values of the points; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor point of the point in the current frame point cloud, and the attribute value of the nearest neighbor point of the point in the current frame point cloud in the reference frame point cloud.
[0387] In some possible implementations, the first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
[0388] In some possible implementations, the filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point and the attribute value of the point's nearest neighbor in the current frame point cloud if the current frame point cloud has a nearest neighbor and the reference frame point cloud does not have a nearest neighbor.
[0389] In some possible implementations, the filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point and the attribute value of the neighboring point in the reference frame point cloud if there is no neighboring point of the current frame point cloud, but there is a neighboring point of the point in the reference frame point cloud.
[0390] In some possible implementations, the filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point, the attribute value of the point's neighbor in the current frame point cloud, and the attribute value of the point's neighbor in the reference frame point cloud if the current frame point cloud has a neighboring point and the reference frame point cloud has a neighboring point of that point.
[0391] In some possible implementations, the filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point and the attribute value of the point's nearest neighbor if the current frame point cloud does not have a nearest neighbor of the point and the reference frame point cloud does not have a nearest neighbor of the point. The attribute value of the point's nearest neighbor is the same as the attribute value of the point.
[0392] In some possible implementations, the filtering module is further configured to: determine candidate nearest neighbors of the point in the current frame point cloud; determine candidate nearest neighbors of the point in the reference frame point cloud; and determine nearest neighbors of the point from the first candidate nearest neighbors and the second candidate nearest neighbors based on the attribute difference value between the first candidate nearest neighbor and the point determined in the current frame point cloud, and the attribute difference value between the second candidate nearest neighbor and the point determined in the reference frame point cloud.
[0393] In some possible implementations, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the aforementioned first candidate nearest neighbor and the aforementioned second candidate nearest neighbor.
[0394] In some possible implementations, a nearest neighbor of a given point is the candidate nearest neighbor among the first and second candidate nearest neighbors that has the smallest attribute difference value with the given point's first color component. The filter coefficients are calculated based on the attribute values of the first color component of the given point's nearest neighbor.
[0395] In some possible implementations, the N nearest neighbors of the aforementioned point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of first candidate nearest neighbors and a plurality of second candidate nearest neighbors, where N is an integer greater than 1.
[0396] In some possible implementations, the nearest neighbor of a point in the current frame point cloud is determined based on the Morton code of the point, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, where the first value is the sequence number or a first specific value of the point in the current frame point cloud.
[0397] In some possible implementations, the aforementioned first specific value is used to characterize that there is no point in the current frame point cloud that is a nearest neighbor of the corresponding first Morton code.
[0398] In some possible implementations, the Morton codes in the above intra-frame point mapping table are generated based on the maximum Morton code of the points in the current frame point cloud.
[0399] In some possible implementations, the nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, where the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
[0400] In some possible implementations, the aforementioned second specific value is used to characterize that there is no nearest neighbor point in the aforementioned reference frame point cloud whose Morton code corresponds to the second Morton code.
[0401] In some possible implementations, the Morton codes in the above inter-frame point correspondence table are generated based on the maximum Morton code of the points in the above reference frame point cloud.
[0402] In some possible implementations, the aforementioned filtering module is specifically used to base the attribute values of points in the first point cloud unit, the attribute values of nearest neighbors, and the filter coefficients.
[0403] In some possible implementations, the above apparatus further includes: an encoding module; the encoding module is used to write the filter coefficients into the attribute bitstream.
[0404] The filtering device provided in this application filter the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the points' nearest neighbors. The attribute values of a point's nearest neighbors include at least one of the following: the attribute value of a point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the current frame point cloud in the reference frame point cloud. The first point cloud unit is filtered based on filter coefficients. This scheme incorporates the corresponding nearest neighbors in the reference frame of the current frame point cloud into the calculation, expanding the nearest neighbors of points in the point cloud from intra-frame to intra-frame and inter-frame. This provides more feature dimensions for filtering, enabling more accurate estimation of the true attributes of points (such as color), improving the filtering effect of the point cloud, reducing the amount of residual data during encoding, and thus improving encoding performance.
[0405] It should be noted that the filtering device shown in Figure 15 can be the encoder 112 in Figure 1 or the device in the encoder 112 that performs filtering-related functions, or the encoder 1000 in Figure 2 or the device in the encoder 1000 that performs filtering-related functions; or the attribute encoding module 200 in Figure 4 or the device in the attribute encoding module 200 that performs filtering-related functions.
[0406] Figure 16 illustrates another possible structural diagram of the filtering device involved in the above embodiments when using integrated units. As shown in Figure 16, the filtering device provided in this application embodiment may include: a processing module 701, a communication module 702, and a storage module 703. The processing module 701 can be used to control and manage the operation of the filtering device. For example, the processing module 701 can be used to support the filtering device in executing steps 401 to 405 in the above method embodiments, and / or other processes of the technology described in the embodiments of this application. The communication module 702 can be used to support communication between the filtering device and other network entities. The storage module 703 is used to store the program code and data of the filtering device, such as storing the filtered point cloud or bitstream.
[0407] The processing module 701 can be a processor, such as the encoder 112 in Figure 1. The communication module 702 can be a transceiver, transceiver circuit, or communication interface, such as the communication interface 121 in Figure 1. The storage module 703 can be a memory.
[0408] It should be noted that for more details regarding the modules included in the above-mentioned filtering device that implement the above functions, please refer to the descriptions in the preceding method embodiments, which will not be repeated here. The modules of the above-mentioned filtering device can also be used to perform other actions in the above method embodiments. All relevant content of each step involved in the above method embodiments can be referenced from the functional descriptions of the corresponding functional modules, and will not be elaborated here.
[0409] The filtering device shown in Figure 16 can be the encoder 112 in Figure 1 or the device in the encoder 112 that performs filtering-related functions, or the encoder 1000 in Figure 2 or the device in the encoder 1000 that performs filtering-related functions; or the attribute encoding module 200 in Figure 4 or the device in the attribute encoding module 200 that performs filtering-related functions.
[0410] Each module of the above-mentioned filtering device can also be used to perform other actions in the above-mentioned method embodiments. All relevant content of each step involved in the above-mentioned method embodiments can be referred to in the functional description of the corresponding functional module, and will not be repeated here.
[0411] Accordingly, this application also provides a filtering device. Based on the above method example, the filtering device can be divided into functional modules. For example, each function can be divided into its own functional modules, or two or more functions can be integrated into one processing module. The integrated modules can be implemented in hardware or as software functional modules. It should be noted that the module division in this embodiment is illustrative and only represents one logical functional division; in actual implementation, other division methods may be used.
[0412] Figure 17 shows a possible structural diagram of the filtering device involved in the above embodiments, where each functional module is divided according to its corresponding function. As shown in Figure 17, the filtering device 800 may include a bitstream parsing module 801 and a filtering module 802, wherein: the bitstream parsing module 801 is used to parse the attribute bitstream to obtain filter coefficients; the filtering module 802 is used to filter the first point cloud unit based on the filter coefficients parsed by the bitstream parsing module 801, the attribute values of points in the first point cloud unit, and the nearest neighbor attribute values of the point; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor point of the point in the current frame point cloud, and the attribute value of the nearest neighbor point of the point in the current frame point cloud in the reference frame point cloud.
[0413] In some possible implementations, the first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
[0414] In some possible implementations, the filtering module is further configured to determine candidate nearest neighbors of the point in the current frame point cloud; determine candidate nearest neighbors of the point in the reference frame point cloud; and determine nearest neighbors of the point from the first candidate nearest neighbors and the second candidate nearest neighbors based on the attribute difference value between the first candidate nearest neighbor and the point determined in the current frame point cloud, and the attribute difference value between the second candidate nearest neighbor and the point determined in the reference frame point cloud.
[0415] In some possible implementations, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the aforementioned first candidate nearest neighbor and the aforementioned second candidate nearest neighbor.
[0416] In some possible implementations, a nearest neighbor of the aforementioned point is the candidate nearest neighbor with the smallest attribute difference value between the first candidate nearest neighbor and the second candidate nearest neighbor and the first color component of the point.
[0417] In some possible implementations, the N nearest neighbors of the aforementioned point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of first candidate nearest neighbors and a plurality of second candidate nearest neighbors, where N is an integer greater than 1.
[0418] In some possible implementations, the nearest neighbor of a point in the current frame point cloud is determined based on the Morton code of the point, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, where the first value is the sequence number or a first specific value of the point in the current frame point cloud.
[0419] In some possible implementations, the aforementioned first specific value is used to characterize that there is no point in the current frame point cloud that is a nearest neighbor of the corresponding first Morton code.
[0420] In some possible implementations, the Morton codes in the above intra-frame point mapping table are generated based on the maximum Morton code of the points in the current frame point cloud.
[0421] In some possible implementations, the nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, where the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
[0422] In some possible implementations, the aforementioned second specific value is used to characterize that there is no nearest neighbor point in the aforementioned reference frame point cloud whose Morton code corresponds to the second Morton code.
[0423] In some possible implementations, the Morton codes in the above inter-frame point correspondence table are generated based on the maximum Morton code of the points in the above reference frame point cloud.
[0424] The filtering device in this embodiment parses the attribute bitstream to obtain filter coefficients; based on the filter coefficients and the nearest neighbor attribute values of points in the first point cloud unit, it filters the first point cloud unit; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the current frame point cloud in the reference frame point cloud. This scheme incorporates the corresponding nearest neighbor points in the reference frame of the current frame point cloud into the calculation, expanding the nearest neighbor points of points in the point cloud from intra-frame to intra-frame and inter-frame. This provides more feature dimensions for filtering, enabling more accurate estimation of the true attributes of points (such as color), improving the filtering effect of the point cloud, reducing the amount of residual data during decoding, and thus improving decoding performance.
[0425] It should be noted that the filtering device shown in Figure 17 can be the decoder 122 in Figure 1 or the device in the decoder 122 that performs filtering-related functions, or the decoder 2000 in Figure 3 or the device in the decoder 2000 that performs filtering-related functions, or the attribute decoding module 300 in Figure 5 or the device in the attribute decoding module 300 that performs filtering-related functions.
[0426] Figure 18 illustrates another possible structural diagram of the filtering device involved in the above embodiments when using integrated units. As shown in Figure 18, the filtering device provided in this application embodiment may include: a processing module 801, a communication module 802, and a storage module 803. The processing module 801 can be used to control and manage the operation of the filtering device. For example, the processing module 801 can be used to support the filtering device in executing steps 401 to 405 in the above method embodiments, and / or other processes using the technology described in the embodiments of this application. The communication module 802 can be used to support communication between the filtering device and other network entities. The storage module 803 is used to store the program code and data of the filtering device, such as storing filtered point clouds or bitstreams.
[0427] The processing module 801 can be a processor, such as the encoder 112 in Figure 1. The communication module 802 can be a transceiver, transceiver circuit, or communication interface, such as the communication interface 121 in Figure 1. The storage module 803 can be a memory.
[0428] It should be noted that for more details regarding the modules included in the above-mentioned filtering device that implement the above functions, please refer to the descriptions in the preceding method embodiments, which will not be repeated here. The modules of the above-mentioned filtering device can also be used to perform other actions in the above method embodiments. All relevant content of each step involved in the above method embodiments can be referenced from the functional descriptions of the corresponding functional modules, and will not be elaborated here.
[0429] It should be noted that the filtering device shown in Figure 18 can be the decoder 122 in Figure 1 or the device in the decoder 122 that performs filtering-related functions, or the decoder 2000 in Figure 3 or the device in the decoder 2000 that performs filtering-related functions, or the attribute decoding module 300 in Figure 5 or the device in the attribute decoding module 300 that performs filtering-related functions.
[0430] The modules of the above-described filtering device can also be used to perform other actions in the above method embodiments. All relevant content of each step involved in the above method embodiments can be referred to in the functional description of the corresponding functional module, and will not be repeated here. For more details on how the modules included in the above-described image decoding device implement the above functions, please refer to the descriptions in the previous method embodiments, and will not be repeated here.
[0431] It should be noted that the scope of the methods and apparatus in the embodiments of this application is not limited to performing functions in the order shown or discussed, but may also include performing functions in a substantially simultaneous manner or in the reverse order, depending on the functions involved. For example, the described methods may be performed in a different order than described, and various steps may be added, omitted, or combined. In addition, features described with reference to certain examples may be combined in other examples.
[0432] In the above embodiments, implementation can be achieved, in whole or in part, through software, hardware, firmware, or any combination thereof. When implemented using software programs, implementation can be, in whole or in part, in the form of a computer program product. This computer program product includes one or more computer instructions. When these computer 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 accessible to a computer or a data storage device such as a server or data center integrating one or more available media. The available media can be magnetic media (e.g., floppy disks, hard disks, magnetic tapes), optical media (e.g., digital video discs (DVDs)), or semiconductor media (e.g., solid-state drives (SSDs)).
[0433] Through the above description of the embodiments, those skilled in the art will clearly understand that, for the sake of convenience and brevity, only the division of the above functional modules is used as an example. In practical applications, the above functions can be assigned to different functional modules as needed, that is, the internal structure of the device can be divided into different functional modules to complete all or part of the functions described above. The specific working process of the system, device, and unit described above can be referred to the corresponding process in the foregoing method embodiments, and will not be repeated here.
[0434] 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 or units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units 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, or indirect coupling or communication connection between apparatuses or units, and may be electrical, mechanical, or other forms.
[0435] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.
[0436] Furthermore, the functional units in the various embodiments of this application can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional unit.
[0437] If the integrated unit is implemented as a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this application, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) or processor to execute all or part of the steps of the methods described in the various embodiments of this application. The aforementioned storage medium includes various media capable of storing program code, such as flash memory, portable hard disk, read-only memory, random access memory, magnetic disk, or optical disk.
[0438] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any changes or substitutions within the technical scope 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 filtering method, characterized in that, Applied to the encoding end, the method includes: The first point cloud unit is filtered based on the attribute values of points in the first point cloud unit and the attribute values of the points' nearest neighbors; wherein, the attribute values of a point's nearest neighbors include at least one of the following: the attribute value of the point, the attribute values of the points' nearest neighbors in the current frame point cloud, and the attribute values of the points' nearest neighbors in the reference frame point cloud.
2. The method according to claim 1, characterized in that, The first point cloud unit is the point cloud of the current frame, or the first point cloud unit is a point cloud unit in the point cloud of the current frame.
3. The method according to claim 1 or 2, characterized in that, The filtering of the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the nearest neighbors of the points includes: If there is a nearest neighbor of a point in the current frame point cloud, and there is no nearest neighbor of the point in the reference frame point cloud, then the first point cloud unit is filtered based on the attribute value of the point and the attribute value of the nearest neighbor of the point in the current frame point cloud.
4. The method according to claim 1 or 2, characterized in that, The filtering of the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the nearest neighbors of the points includes: If the current frame point cloud does not have a nearest neighbor of a point, but the reference frame point cloud has a nearest neighbor of the point, then the first point cloud unit is filtered based on the attribute value of the point and the attribute values of the nearest neighbor of the point in the reference frame point cloud.
5. The method according to claim 1 or 2, characterized in that, The filtering of the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the nearest neighbors of the points includes: If there is a neighboring point in the current frame point cloud and a neighboring point in the reference frame point cloud, then the first point cloud unit is filtered based on the attribute value of the point, the attribute value of the neighboring point in the current frame point cloud, and the attribute value of the neighboring point in the reference frame point cloud.
6. The method according to claim 1 or 2, characterized in that, The filtering of the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the nearest neighbors of the points includes: If the current frame point cloud does not have a nearest neighbor of a point, and the reference frame point cloud does not have a nearest neighbor of the point, then the first point cloud unit is filtered based on the attribute value of the point and the attribute value of the point's nearest neighbor, and the attribute value of the point's nearest neighbor is the same as the attribute value of the point.
7. The method according to claim 1 or 2, characterized in that, The method further includes: In the current frame point cloud, determine the candidate nearest neighbors of the point; In the reference frame point cloud, determine the candidate nearest neighbors of the point; Based on the attribute difference value between the first candidate nearest neighbor and the point determined in the current frame point cloud, and the attribute difference value between the second candidate nearest neighbor and the point determined in the reference frame point cloud, the nearest neighbor of the point is determined from the first candidate nearest neighbor and the second candidate nearest neighbor.
8. The method according to claim 7, characterized in that, A nearest neighbor of a point is the candidate nearest neighbor with the smallest attribute difference value between the first candidate nearest neighbor and the second candidate nearest neighbor.
9. The method according to claim 7, characterized in that, A nearest neighbor of a point is the candidate nearest neighbor with the smallest attribute difference value of the first color component of the point among the first candidate nearest neighbor and the second candidate nearest neighbor.
10. The method according to claim 7, characterized in that, The N nearest neighbors of a point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of first candidate nearest neighbors and a plurality of second candidate nearest neighbors, where N is an integer greater than 1.
11. The method according to claim 1 or 2, characterized in that, The nearest neighbor of a point in the current frame point cloud is determined based on the point's Morton code, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, where the first value is the sequence number or a first specific value of the point in the current frame point cloud.
12. The method according to claim 11, characterized in that, The first specific value is used to characterize that there is no nearest neighbor point of the corresponding first Morton code in the current frame point cloud.
13. The method according to claim 11 or 12, characterized in that, The Morton codes in the intra-frame point mapping table are generated based on the maximum Morton code of the points in the current frame point cloud.
14. The method according to claim 1 or 2, characterized in that, The nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, where the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
15. The method according to claim 14, characterized in that, The second specific value is used to characterize that there is no nearest neighbor point in the reference frame point cloud that is the Morton code corresponding to the second Morton code.
16. The method according to claim 14 or 15, characterized in that, The Morton codes in the inter-frame point correspondence table are generated based on the maximum Morton code of the points in the reference frame point cloud.
17. The method according to any one of claims 1 to 16, characterized in that, The filtering of the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the nearest neighbors of the points includes: The first point cloud unit is filtered based on the attribute values of the points in the first point cloud unit, the attribute values of the nearest neighbors, and the filter coefficients.
18. The method according to claim 17, characterized in that, The method further includes: The filter coefficients are written into the attribute bitstream.
19. A filtering method, characterized in that, Applied to the decoding end, including: Analyze the attribute bitstream to obtain the filter coefficients; The first point cloud unit is filtered based on the filter coefficients, the attribute values of points in the first point cloud unit, and the nearest neighbor attribute values of the points. The nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the reference frame point cloud.
20. The method according to claim 19, characterized in that, The first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
21. The method according to claim 19 or 20, characterized in that, The method further includes: In the current frame point cloud, determine the candidate nearest neighbors of the point; In the reference frame point cloud, determine the candidate nearest neighbors of the point; Based on the attribute difference value between the first candidate nearest neighbor and the point determined in the current frame point cloud, and the attribute difference value between the second candidate nearest neighbor and the point determined in the reference frame point cloud, the nearest neighbor of the point is determined from the first candidate nearest neighbor and the second candidate nearest neighbor.
22. The method according to claim 21, characterized in that, The nearest neighbor of a point is the candidate nearest neighbor with the smallest attribute difference value between the first candidate nearest neighbor and the second candidate nearest neighbor.
23. The method according to claim 21, characterized in that, A nearest neighbor of a point is the candidate nearest neighbor with the smallest attribute difference value of the first color component of the point among the first candidate nearest neighbor and the second candidate nearest neighbor.
24. The method according to claim 21, characterized in that, The N nearest neighbors of a point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of first candidate nearest neighbors and a plurality of second candidate nearest neighbors, where N is an integer greater than 1.
25. The method according to claim 19 or 20, characterized in that, The nearest neighbor of a point in the current frame point cloud is determined based on the point's Morton code, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, where the first value is the sequence number or a first specific value of the point in the current frame point cloud.
26. The method according to claim 25, characterized in that, The first specific value is used to characterize that there is no nearest neighbor point of the corresponding first Morton code in the current frame point cloud.
27. The method according to claim 25 or 26, characterized in that, The Morton codes in the intra-frame point mapping table are generated based on the maximum Morton code of the points in the current frame point cloud.
28. The method according to claim 19 or 20, characterized in that, The nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, where the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
29. The method according to claim 28, characterized in that, The second specific value is used to characterize that there is no nearest neighbor point in the reference frame point cloud that is the Morton code corresponding to the second Morton code.
30. The method according to claim 28 or 29, characterized in that, The Morton codes in the inter-frame point correspondence table are generated based on the maximum Morton code of the points in the reference frame point cloud.
31. A filtering device, characterized in that, Applied at the encoding end, the device includes: a filtering module; The filtering module is used to filter the first point cloud unit based on the attribute values of points in the first point cloud unit and the attribute values of the nearest neighbors of the points; the attribute values of the nearest neighbors of a point include at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the reference frame point cloud.
32. The apparatus according to claim 31, characterized in that, The first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
33. The apparatus according to claim 31 or 32, characterized in that, The filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point and the attribute value of the neighboring point of the point in the current frame point cloud if there is a neighboring point of a point in the current frame point cloud and there is no neighboring point of the point in the reference frame point cloud.
34. The apparatus according to claim 31 or 32, characterized in that, The filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point and the attribute value of the neighboring points of the point in the reference frame point cloud if the current frame point cloud does not have a neighboring point of the point, but the reference frame point cloud has a neighboring point of the point.
35. The apparatus according to claim 31 or 32, characterized in that, The filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point, the attribute value of the neighboring point of the point in the current frame point cloud, and the attribute value of the neighboring point of the point in the reference frame point cloud if the current frame point cloud has a neighboring point and the reference frame point cloud has a neighboring point of the point.
36. The apparatus according to claim 31 or 32, characterized in that, The filtering module is specifically used to filter the first point cloud unit based on the attribute value of the point and the attribute value of the point if there is no nearest neighbor of the point in the current frame point cloud and there is no nearest neighbor of the point in the reference frame point cloud. The nearest neighbor attribute value of the point is the same as the attribute value of the point.
37. The apparatus according to claim 31 or 32, characterized in that, The filtering module is also used for: In the current frame point cloud, determine the candidate nearest neighbors of the point; In the reference frame point cloud, determine the candidate nearest neighbors of the point; Based on the attribute difference value between the first candidate nearest neighbor and the point determined in the current frame point cloud, and the attribute difference value between the second candidate nearest neighbor and the point determined in the reference frame point cloud, the nearest neighbor of the point is determined from the first candidate nearest neighbor and the second candidate nearest neighbor.
38. The apparatus according to claim 37, characterized in that, The nearest neighbor of a point is the candidate nearest neighbor with the smallest attribute difference value between the first candidate nearest neighbor and the second candidate nearest neighbor.
39. The method according to claim 37, characterized in that, A nearest neighbor of a point is the candidate nearest neighbor with the smallest attribute difference value of the first color component of the point among the first candidate nearest neighbor and the second candidate nearest neighbor.
40. The apparatus according to claim 37, characterized in that, The N nearest neighbors of a point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of first candidate nearest neighbors and a plurality of second candidate nearest neighbors, where N is an integer greater than 1.
41. The apparatus according to claim 31 or 32, characterized in that, The nearest neighbor of a point in the current frame point cloud is determined based on the point's Morton code, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, where the first value is the sequence number or a first specific value of the point in the current frame point cloud.
42. The apparatus according to claim 41, characterized in that, The first specific value is used to characterize that there is no nearest neighbor point of the corresponding first Morton code in the current frame point cloud.
43. The apparatus according to claim 41 or 42, characterized in that, The Morton codes in the intra-frame point mapping table are generated based on the maximum Morton code of the points in the current frame point cloud.
44. The apparatus according to claim 31 or 32, characterized in that, The nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, where the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
45. The apparatus according to claim 44, characterized in that, The second specific value is used to characterize that there is no nearest neighbor point in the reference frame point cloud that is the Morton code corresponding to the second Morton code.
46. The apparatus according to claim 44 or 45, characterized in that, The Morton codes in the inter-frame point correspondence table are generated based on the maximum Morton code of the points in the reference frame point cloud.
47. The apparatus according to any one of claims 31 to 46, characterized in that, The filtering module is specifically used to filter the first point cloud unit based on the attribute values of the points in the first point cloud unit, the neighbor attribute values, and the filter coefficients.
48. The apparatus according to any one of claims 31 to 47, characterized in that, The device further includes: an encoding module; The encoding module is used to write the filter coefficients into the attribute bitstream.
49. A filtering device, characterized in that, Applied to the decoding end, the device includes: a bitstream parsing module and a filtering module, wherein: The bitstream parsing module is used to parse the attribute bitstream and obtain the filter coefficients; The filtering module is used to filter the first point cloud unit based on the filter coefficients parsed by the code stream parsing module, the attribute values of points in the first point cloud unit, and the nearest neighbor attribute values of the points; the nearest neighbor attribute value of a point includes at least one of the following: the attribute value of the point, the attribute value of the nearest neighbor of the point in the current frame point cloud, and the attribute value of the nearest neighbor of the point in the reference frame point cloud.
50. The apparatus according to claim 49, characterized in that, The first point cloud unit is the current frame point cloud, or the first point cloud unit is a point cloud unit in the current frame point cloud.
51. The apparatus according to claim 49 or 50, characterized in that, The filtering module is also used for: In the current frame point cloud, determine the candidate nearest neighbors of the point; In the reference frame point cloud, determine the candidate nearest neighbors of the point; Based on the attribute difference value between the first candidate nearest neighbor and the point determined in the current frame point cloud, and the attribute difference value between the second candidate nearest neighbor and the point determined in the reference frame point cloud, the nearest neighbor of the point is determined from the first candidate nearest neighbor and the second candidate nearest neighbor.
52. The apparatus according to claim 51, characterized in that, The nearest neighbor of a point is the candidate nearest neighbor with the smallest attribute difference value between the first candidate nearest neighbor and the second candidate nearest neighbor.
53. The apparatus according to claim 51, characterized in that, A nearest neighbor of a point is the candidate nearest neighbor with the smallest attribute difference value of the first color component of the point among the first candidate nearest neighbor and the second candidate nearest neighbor.
54. The apparatus according to claim 51, characterized in that, The N nearest neighbors of a point are the top N candidate nearest neighbors with the smallest attribute difference value among a plurality of first candidate nearest neighbors and a plurality of second candidate nearest neighbors, where N is an integer greater than 1.
55. The apparatus according to claim 49 or 50, characterized in that, The nearest neighbor of a point in the current frame point cloud is determined based on the point's Morton code, a preset offset, and an intra-frame point correspondence table; the intra-frame point correspondence table includes the correspondence between a first Morton code and a first value, where the first value is the sequence number or a first specific value of the point in the current frame point cloud.
56. The apparatus according to claim 55, characterized in that, The first specific value is used to characterize that there is no nearest neighbor point of the corresponding first Morton code in the current frame point cloud.
57. The apparatus according to claim 55 or 56, characterized in that, The Morton codes in the intra-frame point mapping table are generated based on the maximum Morton code of the points in the current frame point cloud.
58. The apparatus according to claim 49 or 50, characterized in that, The nearest neighbor points of a point in the reference frame point cloud are determined based on the Morton code of the point, a preset offset, and an inter-frame point correspondence table; the inter-frame point correspondence table includes the correspondence between a second Morton code and a second value, where the second value is the sequence number or a second specific value of the point in the reference frame point cloud.
59. The apparatus according to claim 58, characterized in that, The second specific value is used to characterize that there is no nearest neighbor point in the reference frame point cloud that is the Morton code corresponding to the second Morton code.
60. The apparatus according to claim 58 or 59, characterized in that, The Morton codes in the inter-frame point correspondence table are generated based on the maximum Morton code of the points in the reference frame point cloud.
61. A computer storage medium, characterized in that, The computer-readable storage medium stores a computer program that, when executed by at least one processor, implements the filtering method as described in any one of claims 1 to 18, or implements the filtering method as described in any one of claims 19 to 30.
62. A computer storage medium, characterized in that, The computer storage medium is used to store the attribute code stream generated by the encoding method as described in any one of claims 1 to 18.
63. A computer program product, characterized in that, It includes computer program instructions that cause a computer to perform the filtering method as described in any one of claims 1 to 18, or to perform the filtering method as described in any one of claims 19 to 30.