Point cloud encoding method, point cloud decoding method, encoders, decoders, bitstream and storage media
Patent Information
- Application Number
- PCT/CN2024/080127
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-03-05
- Publication Date
- 2025-10-02
AI Technical Summary
In the existing point cloud encoding and decoding technology, background pixels participate in the filtering during the neighborhood filtering process, resulting in low efficiency and affecting the encoding and decoding performance.
The background pixels are distinguished by reconstructing the occupancy map corresponding to the frame to avoid the background pixels from participating in the neighborhood filtering, and the foreground pixels are filtered by weighted averaging or Wiener filtering.
The performance of point cloud encoding and decoding is improved, image quality and encoding and decoding efficiency are enhanced, and unnecessary calculations are reduced.
Smart Images

Figure CN2024080127_02102025_PF_FP_ABST
Abstract
Description
Point cloud encoding and decoding methods, codecs, bitstreams, and storage media Technical Field
[0001] The present application relates to the field of point cloud encoding and decoding technology, and in particular to a point cloud encoding and decoding method, codec, bit stream and storage medium. Background Art
[0002] In the video-based point cloud compression (V-PCC) codec framework, related technologies improve image quality by performing neighborhood filtering on reconstructed frames. Improving the effectiveness of neighborhood filtering, and thereby improving point cloud codec performance, is a challenge that needs to be addressed.
[0003] Summary of the Invention
[0004] The present invention provides a point cloud encoding and decoding method, codec, code stream, and storage medium. The following describes various aspects of the present invention.
[0005] In a first aspect, a point cloud decoding method is provided, which is applied to a decoder, including: determining a first reconstructed frame; performing neighborhood filtering on the first reconstructed frame according to an occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0006] In a second aspect, a point cloud encoding method is provided, which is applied to an encoder, including: determining a first reconstructed frame; performing neighborhood filtering on the first reconstructed frame according to an occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0007] According to a third aspect, a decoder is provided, comprising: a first determination unit configured to determine a first reconstructed frame; and a second determination unit configured to perform neighborhood filtering on the first reconstructed frame according to an occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0008] In a fourth aspect, a decoder is provided, comprising: a memory for storing a computer program; and a processor for executing the method of the first aspect when running the computer program.
[0009] In a fifth aspect, an encoder is provided, comprising: a first determination unit configured to determine a first reconstructed frame; and a second determination unit configured to perform neighborhood filtering on the first reconstructed frame according to an occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0010] In a sixth aspect, an encoder is provided, comprising: a memory for storing a computer program; and a processor for executing the method of the second aspect when running the computer program.
[0011] In a seventh aspect, a computer-readable storage medium is provided, wherein the computer-readable storage medium stores a computer program, and when the computer program is executed, the method of the first aspect or the second aspect is implemented.
[0012] In an eighth aspect, a non-volatile computer-readable storage medium for storing a bit stream is provided, wherein the bit stream is generated by an encoding method using an encoder, or the bit stream is decoded by a decoding method using a decoder, wherein the decoding method is the method of the first aspect and the encoding method is the method of the second aspect.
[0013] According to a ninth aspect, a code stream is provided, comprising a code stream generated according to the method of the second aspect.
[0014] The embodiment of the present application distinguishes background pixels by reconstructing the occupancy map corresponding to the frame to avoid background pixels from participating in neighborhood filtering, thereby achieving better filtering effect and helping to improve the encoding and decoding performance of the point cloud. BRIEF DESCRIPTION OF THE DRAWINGS
[0015] Figure 1 is a schematic diagram of a point cloud encoding and decoding network architecture.
[0016] FIG2 is a schematic diagram of the encoding process of a V-PCC encoder.
[0017] FIG3 is a schematic diagram of a decoding process of a V-PCC decoder.
[0018] FIG4 is a flow chart of a decoding method provided in an embodiment of the present application.
[0019] FIG5 is an example diagram of occupancy map upsampling provided in an embodiment of the present application.
[0020] FIG6 is an example diagram of a current pixel and its eight neighboring pixels.
[0021] FIG7 is an example diagram showing the difference between the current pixel and its eight nearest neighboring pixels.
[0022] FIG8 is a flow chart of the encoding method provided in an embodiment of the present application.
[0023] FIG9 is a schematic diagram of a process for determining the optimal combination according to an embodiment of the present application.
[0024] FIG10 is a comparative example diagram of the reconstructed point cloud according to an embodiment of the present application.
[0025] FIG11 is a schematic diagram of the structure of a decoder provided in an embodiment of the present application.
[0026] FIG12 is a schematic diagram of the structure of a decoder provided in another embodiment of the present application.
[0027] FIG13 is a schematic diagram of the structure of an encoder provided in one embodiment of the present application.
[0028] FIG14 is a schematic diagram of the structure of an encoder provided in another embodiment of the present application. DETAILED DESCRIPTION
[0029] In order to enable a more detailed understanding of the features and technical contents of the embodiments of the present application, the implementation of the embodiments of the present application is described in detail below with reference to the accompanying drawings. The attached drawings are for reference only and are not used to limit the embodiments of the present application.
[0030] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by those skilled in the art to which this application pertains. The terms used herein are for the purpose of describing the embodiments of this application only and are not intended to limit this application.
[0031] In the following description, reference is made to “some embodiments”, which describes a subset of all possible embodiments, but it will be understood that “some embodiments” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.
[0032] It should also be pointed out that the terms "first\second\third" involved in the embodiments of the present application are only used to distinguish similar objects and do not represent a specific ordering of the objects. It can be understood that "first\second\third" can be interchanged with a specific order or sequence where permitted, so that the embodiments of the present application described here can be implemented in an order other than that illustrated or described here.
[0033] A point cloud is a set of irregularly distributed discrete points in space that express the spatial structure and surface properties of a three-dimensional object or scene. These points contain geometric information used to represent spatial position and attribute information used to represent the appearance texture of the point cloud.
[0034] The distribution of points in a point cloud in three-dimensional space is random and irregular, so recording the spatial position of each point is necessary to fully represent a point cloud. Similar to two-dimensional images, each location in the acquisition process has corresponding attribute information, typically RGB color values, which reflect the color of the object. For point clouds, in addition to color information, each point's corresponding attribute information also commonly includes reflectance values, which reflect the surface material of the object. Therefore, point cloud data typically includes both point location information and point attribute information. Point location information can also be referred to as point geometric information. For example, point geometric information can be the point's three-dimensional coordinate information (x, y, z). Point attribute information can include color information and / or reflectance. For example, reflectance can be one-dimensional reflectance information (r); color information can be information in any color space, or it can be three-dimensional color information, such as RGB information. Here, R represents red (R), G represents green (G), and B represents blue (B). Another example of color information is luminance and chrominance (YCbCr, YUV) information. Among them, Y represents brightness (luma), Cb (U) represents blue color difference, and Cr (V) represents red color difference.
[0035] Currently, point cloud coding frameworks that can compress point clouds can be the geometry-based point cloud compression (G-PCC) codec framework or the video-based point cloud compression (V-PCC) codec framework provided by the Moving Picture Experts Group (MPEG), or the AVS-PCC codec framework provided by AVS. The G-PCC codec framework can be used to compress the first type of static point clouds and the third type of dynamically acquired point clouds, and it can be based on the point cloud compression test platform (test model compression 13, TMC13). The V-PCC codec framework can be used to compress the second type of dynamic point clouds, and it can be based on the point cloud compression test platform (test model compression 2, TMC2). Therefore, the G-PCC codec framework is also called the point cloud codec TMC13, and the V-PCC codec framework is also called the point cloud codec TMC2.
[0036] An embodiment of the present application provides a network architecture of a point cloud encoding and decoding system including a decoding method and an encoding method. FIG1 is a schematic diagram of a network architecture of a point cloud encoding and decoding system provided by an embodiment of the present application. As shown in FIG1 , the network architecture includes one or more electronic devices 13 to 1N and a communication network 01, wherein the electronic devices 13 to 1N can perform video interaction through the communication network 01. During the implementation process, the electronic device can be various types of devices with point cloud encoding and decoding functions. For example, the electronic device can include a mobile phone, a tablet computer, a personal computer, a personal digital assistant, a navigator, a digital phone, a video phone, a television, a sensor device, a server, etc., which is not limited by the embodiment of the present application. Among them, the decoder or encoder in the embodiment of the present application can be the above-mentioned electronic device.
[0037] Among them, the electronic device in the embodiment of the present application has a point cloud encoding and decoding function, generally including a point cloud encoder (ie, encoder) and a point cloud decoder (ie, decoder).
[0038] The following describes the relevant technologies using the V-PCC codec framework as an example.
[0039] Figure 2 illustrates the encoding process of a V-PCC encoder. As shown in Figure 2, V-PCC first calculates the normal vector of each point and clusters points with similar normal vectors to its neighbors into patches, thereby segmenting the 3D point cloud model into dozens to hundreds of 3D patches of varying sizes. A few isolated points fail to form 3D patches during this process and are discarded during the lossy encoding of the point cloud. Each clustered 3D patch is then projected onto a 2D plane, forming a geometric frame that records the point's spatial information and a texture frame that records its attribute information. To prevent multiple points from being projected into a single pixel during the projection process, each patch is projected onto two 2D planes. The first layer records information about multiple points located on the outermost surface of the point cloud, while the second layer records information about points located in the innermost layer. Due to the irregular shapes of the projected 2D planes, large unprojected blank areas remain in the plane. These blank areas cause spatial discontinuities in the video, thus affecting video encoding efficiency. Therefore, blank areas are filled based on surrounding pixels to improve the spatial correlation of the video and subsequent encoding compression efficiency. In addition to the geometry and texture videos, V-PCC lossy point cloud coding also generates an occupancy map. Each pixel in the occupancy map indicates whether a pixel in the texture geometry frame actually corresponds to a point in the 3D point cloud. Specifically, in the occupancy map video, if the pixel value is 1, it means that the corresponding pixel in the geometry video corresponds to an actual point in the point cloud. Conversely, if the pixel value is 0, there is no corresponding point in the point cloud. The occupancy map video directly determines whether a corresponding point exists at a location in space and plays a guiding role in point cloud reconstruction. Finally, as shown in Figure 2, after compressing the patch sequence, geometry frame, texture frame, and occupancy map, the patch substream, texture substream, geometry substream, and occupancy substream are obtained; these multiple substreams are multiplexed to produce the compressed bitstream.
[0040] Figure 3 is a schematic diagram of the decoding process of a V-PCC decoder. As shown in Figure 3, first, the compressed code stream is demultiplexed to output the sequence parameter set (SPS), patch sub-stream, texture sub-stream, geometry sub-stream, and occupancy sub-stream. After decompression, the above-mentioned multiple sub-streams obtain syntax elements, patch information, occupancy map, geometry frame, and texture frame, and are reconstructed to obtain reconstructed geometry frame and reconstructed texture frame. Then, the reconstructed geometry frame is smoothed according to the syntax elements. Finally, texture conversion and smoothing are performed based on the input syntax elements, texture frame, and smoothed reconstructed geometry frame, and the smoothed reconstructed point cloud frame is output.
[0041] In V-PCC, the video frames obtained by decoding after lossy compression are smoothed multiple times. For example, as shown in Figure 2, at the encoding end, the reconstructed geometry frame is smoothed, and the reconstructed texture frame is smoothed (not shown in the figure); as shown in Figure 3, at the decoding end, the reconstructed geometry frame is smoothed and the reconstructed point cloud is smoothed.
[0042] For texture frames, V-PCC addresses the problem that non-adjacent blocks (patches) in three-dimensional space may be very close to each other in the image, causing the patch-based video encoder to confuse adjacent pixels and cause reconstruction artifacts. A color smoothing algorithm can be used to find the pixels corresponding to the patch boundary points in the reconstructed frame using the occupancy map, and then smoothed using a median filter. For geometric video frames, V-PCC addresses the problem that the reconstructed point cloud patches may be discontinuous. A boundary filtering algorithm can be used to find the pixels corresponding to the patch boundary points and locally change the depth value of the patch edge. For the reconstructed point cloud, 3D points can be added to make the boundary continuous to address the problem of patch discontinuity. To address the problem of outliers and noise caused by distortion, the reconstructed point cloud can be gridded, and the patch edge points can be trilinearly filtered using the center of the grid to improve the visual effect of the point cloud.
[0043] The V-PCC codec framework performs only image smoothing after basic reconstruction of decoded video frames, meaning there's still significant room for improvement in the quality of the reconstructed point cloud. This enhanced point cloud with minimal bitrate change can further improve point cloud compression performance.
[0044] Applying Wiener filtering to images can enhance image quality. However, related techniques for applying Wiener filtering to images have some drawbacks. For example, when the filter order K is constant, using the same set of coefficients to filter large-scale images or images with significant local variations does not effectively enhance image quality. Furthermore, simply increasing the filter order K only slightly improves image filtering, while also increasing the bitstream size and time complexity, leading to worse overall performance. Furthermore, the commonly used adaptive loop filter (ALF) is also based on Wiener filtering and classifies filters into 25 categories. The filter category for each 4x4 patch in the image is determined by calculating the gradient direction and degree of variation. The filter coefficients are then calculated, and filtering is performed. However, this method cannot address the issues of densely packed patches and large neighborhood variations in V-PCC image frames. Furthermore, this method requires a large amount of data transmission, resulting in high bitstream overhead. Therefore, the Wiener filtering method applied to loop filtering cannot enhance image quality during encoding and decoding.
[0045] To enhance image quality after Wiener filtering, a related technique has been proposed that performs neighborhood-difference-based adaptive Wiener filtering on V-PCC geometrically reconstructed frames. This technique achieves point cloud geometry denoising and improves subjective quality. This technique is described in detail below.
[0046] First, for the geometric frame generated by V-PCC, the 8-neighborhood difference is calculated for each pixel, and the pixels are grouped according to the neighborhood difference. Among them, pixels with the same total difference can be considered as pixels with similar neighborhood differences and are divided into the same group. In order to improve efficiency, a maximum difference threshold d can be set, and all pixels with neighborhood differences exceeding this threshold are divided into the last group. Then, the filtering effects of the combinations of different neighborhood difference groups are compared, and the combinations with the best filtering effects are selected as the final filtering combinations. In particular, for the combination of different neighborhood difference groups, the principle of adjacent combination must be followed. For example, groups with neighborhood differences of {1,2} can be combined, while groups {1,3} or {1,2,4} will not be combined because the neighborhood differences are not adjacent. A single group can also be regarded as a combination. Next, we iterate through all cases (for example, from {0} to {0, 1, 2…, d}), calculate the filter coefficients for each combination, and compare the filtering effects (for example, the filtering effect can be determined based on the improvement in peak signal-to-noise ratio (PSNR)). The combination with the best filtering effect is selected as the optimal combination. The optimal Wiener filter coefficients are calculated using the pixels in this combination, and the pixels in this combination are filtered (the remaining pixel values remain unchanged). After filtering the optimal combination, the filtered pixels are removed, and the iterative search for the optimal combination continues for the remaining groups until a set filtering threshold is reached. Finally, the rate-distortion cost of the reconstructed image after filtering using this technique is calculated, and the rate-distortion cost of the reconstructed image after filtering using the original method is calculated, and the two are compared. If the cost of the filtered reconstructed image is higher, the reconstructed image is not filtered at the decoder, and the filter flag is set to 0. Finally, the flag, combination information, and filter coefficients are written into the bitstream. At the decoder, the pixels are combined using the same method, the filter information is decoded, and filtering is performed.
[0047] In related art, another method for finding the optimal combination mentioned above has been proposed. In this method, instead of traversing all pixel combinations, the optimal combination is pre-set. For example, at low bit rates (such as R01 and R02), the 4-10 combination (i.e., the combination of pixels whose neighborhood differences belong to {4, 5, 6, 7, 8, 9, 10}) appears the most frequently, while at bit rates of R03 and above, the 4-8 combination is most frequently selected. Based on the experimental results, the optimal combination can be set as follows: at bit rates of R01 and R02, the optimal combination is [4, 10]; at bit rates of R03, R04, and R05, the optimal combination is [4, 8]. By pre-setting the optimal combination, time loss can be significantly reduced without compromising filtering performance.
[0048] Related technologies offer two methods for writing the aforementioned filtering information into the bitstream. Method one creates a new SSVU bitstream single cloud, called V3C_WF, specifically to store filtering-related information. This includes the V-PCC filter total flag, combination information, number of frames, per-frame flag, and per-frame coefficients, while also specifying the percentage contribution of each parameter. This sub-bitstream is then written into the total bitstream and transmitted to the decoder. This approach ensures smooth and organized program execution. Method two further optimizes the bitstream structure. V-PCC includes a grammatical structure for storing parameters for optimization and adjustment methods, known as supplemental enhancement information (SEI), which is used to transmit additional text data. The SEI can create structures related to Wiener filtering for geometric frames, such as defining payload types, specifying write content, location, and method, thereby standardizing the bitstream structure. Since image filtering is not essential during the encoding and decoding process, this approach avoids adding new bitstream units.
[0049] In the above introduction, the related art proposes a V-PCC point cloud adaptive Wiener filtering quality enhancement technology based on neighborhood differences to enhance the quality of the image after filtering. However, this technology still has some problems to be solved. For example, the participation of background pixels in filtering may affect the filtering effect. First, filtering background pixels is meaningless and consumes unnecessary time. Secondly, in order to make the filtered value of the background pixel close to the true value (that is, remain unchanged), the Wiener filter may need to change the filter coefficient, that is, to change the filter coefficient in a direction that is beneficial to the background pixel, which will affect the filtering effect of other pixels. Therefore, it is absolutely necessary to effectively prohibit background pixels from participating in filtering.
[0050] In response to the above problem, an embodiment of the present application provides an encoding method, including: determining a first reconstructed frame; performing neighborhood filtering on the first reconstructed frame according to an occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0051] An embodiment of the present application further provides a decoding method, comprising: determining a first reconstructed frame; performing neighborhood filtering on the first reconstructed frame according to an occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0052] The embodiment of the present application distinguishes background pixels by reconstructing the occupancy map corresponding to the frame to avoid background pixels from participating in neighborhood filtering, thereby achieving better filtering effect and helping to improve the encoding and decoding performance of the point cloud.
[0053] The decoding method provided in the embodiments of the present application will be described in detail below with reference to the accompanying drawings.
[0054] Figure 4 is a flow chart of a decoding method provided in an embodiment of the present application. The decoding method of Figure 4 can be applied to a decoder. In some implementations, the decoding method can be applied to V-PCC.
[0055] 4 , in step S410 , a first reconstructed frame is determined.
[0056] In some implementations, the first reconstructed frame may be a reconstructed geometry frame, or the first reconstructed frame may be a reconstructed texture frame.
[0057] In some implementations, the first reconstructed frame may be a far-layer reconstructed frame, or the first reconstructed frame may be a near-layer reconstructed frame.
[0058] In step S420, neighborhood filtering is performed on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0059] The embodiment of the present application does not specifically limit the method of neighborhood filtering. For example, the neighborhood filtering can be a weighted average filter. In some implementations, the neighborhood filtering can be a Wiener filter. Furthermore, the neighborhood filtering can be performed on the first reconstructed frame based on a diamond filter.
[0060] The occupancy map mentioned above may be an occupancy map of the same size as the first reconstructed frame (a first occupancy map). In some implementations, determining the first occupancy map may include: parsing the bitstream to determine a second occupancy map; and then determining the first occupancy map based on the second occupancy map. The size of the second occupancy map is smaller than the size of the first reconstructed frame.
[0061] There are various ways to determine the first occupancy map based on the second occupancy map. For example, the first occupancy map can be determined by directly upsampling the values of the second occupancy map. In another example, the first occupancy map can be determined by interpolating the values of the second occupancy map.
[0062] As an example, referring to FIG5 , the second occupancy map includes two values 0 and 1. The value of each pixel position can be directly used as the value of all pixels of the 4×4 block with the upper left corner of the pixel as the starting pixel after upsampling, thereby obtaining the first occupancy map.
[0063] In the method shown in step S420, the occupancy map can be used to determine whether the current pixel meets a specific condition (the first condition mentioned above). If the current pixel meets the specific condition, neighborhood filtering is performed on the current pixel; if the current pixel does not meet the specific condition, neighborhood filtering is not performed on the current pixel. The specific condition here is related to the value of the corresponding pixel in the occupancy map of the current pixel or the neighboring pixels of the current pixel.
[0064] In some implementations, whether to perform neighborhood filtering can be determined based on the value of the corresponding pixel of the current pixel in the occupancy map. For example, if the value of the corresponding pixel of the current pixel in the occupancy map is a first value, neighborhood filtering is performed on the current pixel. Alternatively, if the value of the corresponding pixel of the current pixel in the occupancy map is a second value, neighborhood filtering is not performed on the current pixel. The above-mentioned first value indicates occupation, and the value of the first value can be, for example, 1. The above-mentioned second value indicates non-occupancy, and the value of the second value can be, for example, 0. If the value of the corresponding pixel of the current pixel in the occupancy map is the second value, it means that the current pixel is not occupied, that is, the current pixel is a background pixel. The embodiment of the present application can avoid neighborhood filtering of background pixels, thereby improving filtering efficiency, and thus helping to improve decoding performance.
[0065] In some implementations, whether to perform neighborhood filtering can be determined based on the values of the corresponding pixels of the neighboring pixels of the current pixel in the occupancy map. For example, if among the multiple neighboring pixels of the current pixel, at least one neighboring pixel has a value of the second value for the corresponding pixel in the occupancy map (that is, the neighboring pixel is the target pixel), then neighborhood filtering is not performed on the current pixel. For another example, if among the multiple neighboring pixels of the current pixel, the number of neighboring pixels whose corresponding pixels in the occupancy map have a value of the second value is greater than or equal to a first threshold, then neighborhood filtering is not performed on the current pixel. If the value of the corresponding pixel of the neighboring pixel of the current pixel in the occupancy map is the second value, it means that the neighboring pixel is not occupied, that is, the neighboring pixel is a background pixel. The embodiment of the present application can avoid background pixels from participating in neighborhood filtering, thereby preventing background pixels from affecting the filter coefficient, thereby helping to improve decoding performance.
[0066] As an example, as shown in Figure 6, Figure 6 shows the current pixel (middle) and its eight nearest neighboring pixels. Assume that the current pixel is located at (x, y) in the image, and the positions of its eight nearest neighboring pixels are (x, y+1), (x, y-1), (x+1, y), (x+1, y+1), (x+1, y-1), (x-1, y), (x-1, y+1), (x-1, y-1). If at least one of the current pixel or its eight nearest neighboring pixels has a corresponding pixel value of 0 in the occupancy map (i.e., it is not occupied and is a background pixel), then neighborhood filtering is not performed on the current pixel.
[0067] In some implementations, the method of performing neighborhood filtering in step S420 may include: determining the group to which the current pixel belongs based on the difference in pixel values between the current pixel and the neighboring pixels, the group to which the current pixel belongs being one of multiple groups, and the multiple groups corresponding one-to-one to multiple value ranges of the difference; then, determining a target combination of the multiple groups, the target combination including at least one group from the multiple groups; and then, performing neighborhood filtering on the pixels in the target combination based on the filtering coefficient corresponding to the target combination.
[0068] The method for determining the difference in pixel values between the current pixel and the neighboring pixels may be, for example: taking the difference between the pixel value of the current pixel and the pixel values of multiple neighboring pixels to determine multiple pixel difference values; calculating the sum of the absolute values of the multiple pixel difference values, and using the sum of the absolute values as the difference in pixel values between the current pixel and the neighboring pixels.
[0069] As an example, as shown in Figure 7, Figure 7 is an example diagram of calculating the difference between the current pixel (middle) and its eight nearest neighboring pixels. Assuming that the difference between the pixel values of the current pixel and its eight nearest neighboring pixels is d, d can be expressed as:
[0070] Among them, a is the current pixel value, a i is the value of the i-th neighboring pixel. Furthermore, based on the above differences, pixels with the same difference can be divided into the same group. For example, when d = 0, the current pixel is divided into the 0th group; when d = 1, the current pixel is divided into the 1st group; when d ≥ T (T is the set threshold), the current pixel is divided into the Tth group.
[0071] Before determining the target combination based on multiple groups, multiple groups can be combined to obtain multiple combinations. For example, groups with a difference of 1 and a difference of 2 can be combined into the combination {1, 2}, and a single group can also be considered a combination. By combining all groups with different differences, we can obtain all combinations from {0} to {0, 1, 2…, d}, and the target combination mentioned above can be determined from these combinations.
[0072] There are various ways to determine a target combination from multiple combinations. In some implementations, the filter coefficients of each combination can be calculated separately and the filtering effects of each combination can be compared. The combination with the best filtering effect is selected as the target combination, where the filtering effect can be determined based on the amount of PSNR improvement.
[0073] In other implementations, a target combination can be specified based on the bitrate from among multiple combinations. For example, if the bitrate of the bitstream falls within the first bitrate range, the corresponding differences of the groups in the target combination are {4, 5, 6, 7, 8, 9, 10}. If the bitrate of the bitstream falls within the second bitrate range, the corresponding differences of the groups in the target combination are in the range of {4, 5, 6, 7, 8}.
[0074] The first code rate range may be a lower code rate range relative to the second code rate range. For example, the first code rate range may include R01 and R02 code rates, and the second code rate range may include R03, R04, and R05 code rates.
[0075] As mentioned above, the first reconstructed frame can be subjected to Wiener filtering based on a diamond filter, that is, the pixels in the target combination can be subjected to Wiener filtering based on a diamond filter. The diamond filter can be a filter of order k=25.
[0076] The above describes in detail how to perform neighborhood filtering on the first reconstructed frame based on the occupancy map. The decoding end performs neighborhood filtering on the first reconstructed frame based on auxiliary information (such as syntax elements) for neighborhood filtering in the bitstream. The following is a detailed example of the auxiliary information that may be used to implement the neighborhood filtering scheme at the decoding end. It should be understood that the auxiliary information mentioned below is optional information. In some implementations, the codec end can perform neighborhood filtering on the first reconstructed frame according to the same predefined rules without the need for such auxiliary information.
[0077] The first information is used to indicate whether the decoder enables neighborhood filtering. For example, the first information can be represented based on Wiener_filtering_flag. The value of Wiener_filtering_flag can be 0 (false) or 1 (true). When the value of Wiener_filtering_flag is 0 (false), the decoder does not perform neighborhood filtering; when the value of Wiener_filtering_flag is 1 (true), the decoder performs neighborhood filtering.
[0078] The second information is used to indicate the number of reconstructed frames. For example, the second information can be represented based on frame_num.
[0079] The third information is used to indicate the target group. For example, the third information can be represented based on groups.
[0080] The fourth information is used to indicate whether neighborhood filtering is enabled for a reconstructed frame. The fourth information can be represented based on filtering_flag_of_each_frame, which can take a value of 0 (false) or 1 (true). When the value of filtering_flag_of_each_frame is 0 (false), it indicates that neighborhood filtering is not performed on the first reconstructed frame at the decoding end; when the value of filtering_flag_of_each_frame is 1 (true), it indicates that neighborhood filtering is performed on the first reconstructed frame at the decoding end.
[0081] The fifth information is used to indicate a filter coefficient corresponding to a reconstructed frame. For example, the fifth information can be represented based on WFcoef.
[0082] The present embodiment does not specifically limit the storage location of the aforementioned various auxiliary information in the bitstream. For example, a separate bitstream unit may be established for the aforementioned various auxiliary information. In some implementations, the aforementioned various auxiliary information may also be written into the Supplemental Enhancement Information (SEI) of the bitstream.
[0083] In some implementations, the decoding method shown in Figure 4 may further include: parsing the code stream to determine one or more of the following parameters: a sequence parameter set (SPS), patch auxiliary information, an occupancy map sub-code stream, a geometry frame sub-code stream, and a texture frame sub-code stream.
[0084] In some implementations, the decoding method shown in FIG4 may further include: determining geometric information of the reconstructed point cloud based on the second reconstructed frame and the occupancy map; and then determining the reconstructed point cloud based on the geometric information of the reconstructed point cloud and the reconstructed texture frame.
[0085] The following describes the test results obtained by testing the decoding method provided in the embodiments of the present application.
[0086] Comprehensive testing of all standard test sequences, including 32 intra-frame and 32 inter-frame frames, was conducted using relevant software under both geometric and attribute loss conditions, resulting in the test results shown in Tables 1 and 2. PSNR in the table represents peak signal-to-noise ratio. A positive PSNR value indicates improved image quality; a negative PSNR value indicates a decrease in image quality. BD-TotalRate in the table represents codec efficiency. A negative BD-TotalRate value indicates a reduction in coded bits, meaning improved coding efficiency; a positive BD-TotalRate value indicates an increase in coded bits, meaning reduced coding efficiency. Table 1 shows that under the ctc-all-intra test condition, the average PSNR value is positive, indicating improved image quality, while the average BD-TotalRate value decreases, indicating increased codec efficiency. Table 2 shows that under the ctc-random-access test condition, the average PSNR value is positive, indicating improved image quality, while the average BD-TotalRate value decreases, indicating increased codec efficiency. As can be seen, the decoding method provided in the embodiments of this application performs neighborhood filtering on the reconstructed frames, resulting in significant improvements in both reconstruction quality and compression rate. Furthermore, since some pixels (such as background pixels) no longer require gradient calculations or filtering, the resulting operating efficiency is almost identical to that of the standard V-PCC program.
[0087] Table 1: Test results of 32 frames under the CTC all-intra test condition (ctc-all-intra)
[0088] Table 2: Test results of 32 frames under the CTC random access test condition (ctc-random-access)
[0089] The decoding method provided by the embodiment of the present application is described in detail above in conjunction with Figure 4. The encoding method provided by the embodiment of the present application is described in detail below in conjunction with Figure 8.
[0090] FIG8 is a flow chart of an encoding method according to an embodiment of the present application. The encoding method of FIG8 can be applied to an encoder. In some implementations, the encoding method can be applied to V-PCC.
[0091] 8 , in step S810 , a first reconstructed frame is determined.
[0092] In some implementations, the first reconstructed frame may be a reconstructed geometry frame, or the first reconstructed frame may be a reconstructed texture frame.
[0093] In some implementations, the first reconstructed frame may be a far-layer reconstructed frame, or the first reconstructed frame may be a near-layer reconstructed frame.
[0094] In step S820, neighborhood filtering is performed on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0095] The embodiment of the present application does not specifically limit the method of neighborhood filtering. For example, the neighborhood filtering can be a weighted average filter. In some implementations, the neighborhood filtering can be a Wiener filter. Furthermore, the neighborhood filtering can be performed on the first reconstructed frame based on a diamond filter.
[0096] The occupancy map mentioned above may be an occupancy map of the same size as the first reconstructed frame (a first occupancy map). In some implementations, determining the first occupancy map may include: first determining a second occupancy map; and then determining the first occupancy map based on the second occupancy map. The size of the second occupancy map is smaller than the size of the first reconstructed frame.
[0097] There are various ways to determine the first occupancy map based on the second occupancy map. For example, the first occupancy map can be determined by directly upsampling the values of the second occupancy map. Another example is to determine the first occupancy map by performing interpolation based on the values of the second occupancy map.
[0098] As an example, referring to FIG5 , the second occupancy map includes two values 0 and 1. The value of each pixel position can be directly used as the value of all pixels of the 4×4 block with the upper left corner of the pixel as the starting pixel after upsampling, thereby obtaining the first occupancy map.
[0099] In the method shown in step S820, the occupancy map can be used to determine whether the current pixel meets a specific condition (the first condition mentioned above). If the current pixel meets the specific condition, neighborhood filtering is performed on the current pixel; if the current pixel does not meet the specific condition, neighborhood filtering is not performed on the current pixel. The specific condition here is related to the value of the corresponding pixel in the occupancy map of the current pixel or the neighboring pixels of the current pixel.
[0100] In some implementations, whether to perform neighborhood filtering can be determined based on the value of the corresponding pixel of the current pixel in the occupancy map. For example, if the value of the corresponding pixel of the current pixel in the occupancy map is a first value, neighborhood filtering is performed on the current pixel. Alternatively, if the value of the corresponding pixel of the current pixel in the occupancy map is a second value, neighborhood filtering is not performed on the current pixel. The above-mentioned first value represents occupation, and the value of the first value can be, for example, 1. The above-mentioned second value represents non-occupancy, and the value of the second value can be, for example, 0. If the value of the corresponding pixel of the current pixel in the occupancy map is the second value, it means that the current pixel is not occupied, that is, the current pixel is a background pixel. The embodiment of the present application can avoid neighborhood filtering of background pixels, thereby improving filtering efficiency, and thus helping to improve encoding performance.
[0101] In some implementations, whether to perform neighborhood filtering can be determined based on the values of the corresponding pixels of the neighboring pixels of the current pixel in the occupancy map. For example, if among the multiple neighboring pixels of the current pixel, at least one neighboring pixel has a value of the second value for the corresponding pixel in the occupancy map (that is, the neighboring pixel is the target pixel), then neighborhood filtering is not performed on the current pixel. For another example, if among the multiple neighboring pixels of the current pixel, the number of neighboring pixels whose corresponding pixels in the occupancy map have a value of the second value is greater than or equal to a first threshold, then neighborhood filtering is not performed on the current pixel. If the value of the corresponding pixel of the neighboring pixel of the current pixel in the occupancy map is the second value, it means that the neighboring pixel is not occupied, that is, the neighboring pixel is a background pixel. The embodiment of the present application can avoid background pixels from participating in neighborhood filtering, thereby preventing background pixels from affecting the filter coefficient, thereby helping to improve the performance of encoding.
[0102] As an example, as shown in Figure 6, Figure 6 shows the current pixel (middle) and its eight nearest neighboring pixels. Assume that the current pixel is located at (x, y) in the image, and the positions of its eight nearest neighboring pixels are (x, y+1), (x, y-1), (x+1, y), (x+1, y+1), (x+1, y-1), (x-1, y), (x-1, y+1), (x-1, y-1). If at least one of the current pixel or its eight nearest neighboring pixels has a corresponding pixel value of 0 in the occupancy map (i.e., it is not occupied and is a background pixel), then neighborhood filtering is not performed on the current pixel.
[0103] In some implementations, the method of performing neighborhood filtering in step S820 may include: determining the group to which the current pixel belongs based on the difference in pixel values between the current pixel and the neighboring pixels, the group to which the current pixel belongs being one of multiple groups, and the multiple groups corresponding one-to-one to multiple value ranges of the difference; then, determining a target combination of the multiple groups, the target combination including at least one group from the multiple groups; and then, performing neighborhood filtering on the pixels in the target combination based on the filter coefficient corresponding to the target combination.
[0104] The method for determining the difference in pixel values between the current pixel and the neighboring pixels may be, for example: taking the difference between the pixel value of the current pixel and the pixel values of multiple neighboring pixels to determine multiple pixel difference values; calculating the sum of the absolute values of the multiple pixel difference values, and using the sum of the absolute values as the difference in pixel values between the current pixel and the neighboring pixels.
[0105] As an example, as shown in Figure 7, Figure 7 shows the current pixel (middle) and its eight nearest neighboring pixels. Assuming that the difference in pixel value between the current pixel and its eight nearest neighboring pixels is d, d can be expressed as:
[0106] Among them, a is the current pixel value, a i is the value of the i-th neighboring pixel. Furthermore, based on the above differences, pixels with the same difference can be divided into the same group. For example, when d = 0, the current pixel is divided into the 0th group; when d = 1, the current pixel is divided into the 1st group; when d ≥ T (T is the set threshold), the current pixel is divided into the Tth group.
[0107] Before determining the target combination based on multiple groups, multiple groups can be combined to obtain multiple combinations. For example, groups with a difference of 1 and a difference of 2 can be combined into the combination {1, 2}, and a single group can also be considered a combination. By combining all groups with different differences, we can obtain all combinations from {0} to {0, 1, 2…, d}. The target combination mentioned above can be determined from all these combinations.
[0108] There are various ways to determine a target combination from multiple combinations. In some implementations, the filter coefficients of each combination can be calculated separately and the filtering effects of each combination can be compared. The combination with the best filtering effect is selected as the target combination, where the filtering effect can be determined based on the amount of PSNR improvement.
[0109] In other implementations, a target combination can be specified based on the bitrate from among multiple combinations. For example, if the bitrate of the bitstream falls within the first bitrate range, the corresponding differences of the groups in the target combination are {4, 5, 6, 7, 8, 9, 10}. If the bitrate of the bitstream falls within the second bitrate range, the corresponding differences of the groups in the target combination are in the range of {4, 5, 6, 7, 8}.
[0110] The first code rate range may be a lower code rate range relative to the second code rate range. For example, the first code rate range may include R01 and R02 code rates, and the second code rate range may include R03, R04, and R05 code rates.
[0111] As mentioned above, the first reconstructed frame can be subjected to Wiener filtering based on a diamond filter, that is, the pixels in the target combination can be subjected to Wiener filtering based on a diamond filter. The diamond filter can be a filter of order k=25.
[0112] The above describes in detail how to perform neighborhood filtering on the first reconstructed frame based on the occupancy map. In some scenarios, the rate-distortion cost can be used to determine whether the decoder uses the reconstructed frame after neighborhood filtering to reconstruct the point cloud. For example, as shown in formula (3), D is the SSE of the original frame and the initial reconstructed frame or the filtered reconstructed frame, that is, the sum of the squares of the corresponding point errors; λ is a quantity related to the quantization parameter QP, R is the total bitstream size divided by the number of frames. Assume that the rate-distortion cost J corresponding to the second reconstructed frame after filtering is f Less than the rate-distortion cost J corresponding to the first reconstructed frame r , it means that the decoder uses the second reconstructed frame of the neighborhood filter to reconstruct the point cloud; conversely, if the rate-distortion cost J corresponding to the second reconstructed frame after filtering is f Greater than the rate-distortion cost J corresponding to the first reconstructed frame r , it means that the decoder does not use the second reconstructed frame of the neighborhood filter to reconstruct the point cloud. J=D+λ×R (3)
[0113] After the encoder performs neighborhood filtering on the reconstructed frame, auxiliary information for the neighborhood filtering (such as syntax elements) can be written into the bitstream to assist the decoder in performing the neighborhood filtering operation. The following provides detailed examples of auxiliary information that may be used in implementing the neighborhood filtering scheme on the decoder. It should be understood that the auxiliary information mentioned below is optional information. In some implementations, the encoder and decoder can perform neighborhood filtering on the first reconstructed frame according to the same predefined rules without the need for such auxiliary information.
[0114] The first information is used to indicate whether the decoder enables neighborhood filtering. For example, the first information can be represented based on Wiener_filtering_flag. The value of Wiener_filtering_flag can be 0 (false) or 1 (true). When the value of Wiener_filtering_flag is 0 (false), the decoder does not perform neighborhood filtering; when the value of Wiener_filtering_flag is 1 (true), the decoder performs neighborhood filtering.
[0115] The second information is used to indicate the number of reconstructed frames. For example, the second information can be represented based on frame_num.
[0116] The third information is used to indicate the target group. For example, the third information can be represented based on groups.
[0117] The fourth information is used to indicate whether neighborhood filtering is enabled for a reconstructed frame. The fourth information can be represented based on filtering_flag_of_each_frame, which can take a value of 0 (false) or 1 (true). When the value of filtering_flag_of_each_frame is 0 (false), it indicates that neighborhood filtering is not performed on the first reconstructed frame at the decoding end; when the value of filtering_flag_of_each_frame is 1 (true), it indicates that neighborhood filtering is performed on the first reconstructed frame at the decoding end.
[0118] The fifth information is used to indicate a filter coefficient corresponding to a reconstructed frame. For example, the fifth information can be represented based on WFcoef.
[0119] The present embodiment does not specifically limit the storage location of the aforementioned various auxiliary information in the bitstream. For example, a separate bitstream unit may be established for the aforementioned various auxiliary information. In some implementations, the aforementioned various auxiliary information may also be written into the Supplemental Enhancement Information (SEI) of the bitstream.
[0120] In some implementations, the encoding method shown in FIG8 may further include writing parameters such as a sequence parameter set (SPS), patch auxiliary information, an occupancy map substream, a geometry frame substream, and a texture frame substream into the bitstream.
[0121] In some implementations, the encoding method shown in FIG8 may further include: determining patches based on the initial point cloud; and then determining a geometry frame and a texture frame based on the patches. For example, the patches may be divided by calculating the normal vector of each point in the point cloud; then, the patches are projected onto corresponding planes based on the direction of the patch normal vectors, and then all patches are closely arranged in the image to obtain the geometry frame and the texture frame.
[0122] The following examples are used to describe the embodiments of the present application in more detail. It should be noted that the examples below are only intended to help those skilled in the art understand the embodiments of the present application, rather than to limit the embodiments of the present application to the specific numerical values or specific scenarios illustrated. It is apparent that those skilled in the art can make various equivalent modifications or changes based on the examples given below, and such modifications or changes also fall within the scope of the embodiments of the present application.
[0123] FIG9 is a flow chart of determining the optimal combination according to an embodiment of the present application. As shown in FIG9 , in this example, the adaptive Wiener filtering of the geometric video frame can be guided by the occupancy map generated by V-PCC to improve the performance of the technology. The occupancy map can provide information about background pixels more accurately, indicating which pixels are background pixels. Therefore, the occupancy map can be used to skip pixels before gradient calculation. The pixels that meet the conditions are grouped, and then the optimal combination is determined based on the bit rate. Next, the filter coefficients of the Wiener filter are determined based on the optimal combination, and the pixels within the optimal combination are subjected to neighborhood filtering. The above process is described in detail below.
[0124] For the reconstructed geometric video frame, the occupancy map is first used to skip pixels. If the current pixel or any of its eight neighboring pixels is not occupied, no subsequent operations (including gradient calculation, grouping, and filtering) are performed on the pixel, and the value of the final image at that pixel remains the reconstructed value. For example, if the occupancy map value corresponding to the middle pixel or its eight neighboring pixels is 0 (background pixel), subsequent processing of the current pixel is skipped. As shown in Figure 2, specifically, assume that the current point is located at (x, y) in the image. For the following 9 pixels: (x, y), (x, y+1), (x, y-1), (x+1, y), (x+1, y+1), (x+1, y-1), (x-1, y), (x-1, y+1), (x-1, y-1), if the occupancy map value corresponding to at least one of the pixels is 0 (i.e., not occupied, a background pixel), the current pixel is not subjected to subsequent operations such as filtering. For pixels that are not skipped, gradient values are calculated and grouped. The optimal combination information is determined in advance based on the bitrate. This optimal combination based on the occupancy map is then used for subsequent filtering operations. This optimization must be applied simultaneously to the encoder and decoder, and must be consistent.
[0125] Specifically, since the occupancy map is inconsistent with the reconstructed geometric video frame size, generally 1 / 4 of its height and width, the occupancy map needs to be upsampled first. Since the occupancy map has only two values 0 and 1, there is no need for interpolation. The value of each pixel position is directly used as the value of all pixels in the 4×4 block with the upper left corner of the pixel as the starting pixel after upsampling, as shown in Figure 3. This process is consistent with the V-PCC occupancy map upsampling method. Afterwards, a pixel skipping process based on the occupancy map is performed. As long as there is a pixel with a corresponding occupancy map value of 0 (that is, a background pixel) in the 3×3 block centered on the pixel, subsequent grouping and filtering operations will not be performed. We do not want the current pixel to be a background pixel, nor do we want the background pixel to affect the calculation of the current pixel gradient value, so pixel skipping is performed uniformly in both cases. The subsequent process is consistent with the previously proposed method. For the retained pixels, grouping, combination and filtering are performed. For the skipped pixels, the reconstructed value is retained without any additional operations. The calculation method of the neighborhood difference d can be expressed as:
[0126] Among them, a is the current pixel value, a i is the value of the ith neighborhood pixel.
[0127] According to the neighborhood differences, the pixels are grouped. When d = 0, the pixel is in group 0, d = 1 is in group 1, and so on. When d ≥ T (T is an artificially set threshold), the pixel is divided into group T. Then the best combination is determined. At the R01 and R02 bit rates, the best combination is [4, 10]; at the R03, R04 and R05 bit rates, the best combination is [4, 8]. Diamond is selected as the shape of the Wiener filter. In this scheme, a k = 25 order filter is used. In this process, the optimal coefficients corresponding to the filter and the geometric video frame after filtering can be calculated. The cost function is then used to balance the rate and distortion: J = D + λ × R (5)
[0128] Where D is the SSE (sum of squared errors) between the original and reconstructed or filtered video frames, or the sum of squared errors between corresponding points. λ is a variable related to the quantization parameter (QP), which in this scheme is set to 0.85 × 2^((QP - 12) / 3). R is the total geometric bitstream size divided by the number of frames. If the filtered cost J_f is less than the cost of the reconstructed point set J_r, the filter flag for that frame is set to 1, recording the coefficient set and the best combination information. Otherwise, the flag is set to 0.
[0129] Considering that each point cloud frame generates two geometric video frames (far and near frames), this example can filter these two frames separately, calculate the rate-distortion cost, and record information such as coefficients.
[0130] At the same time, the code stream writing method still follows the definition in the "Code stream syntax structure optimization scheme for V-PCC point cloud geometric frame Wiener filter quality enhancement technology", and the auxiliary information is written into the code stream and transmitted to the decoding end.
[0131] Specifically, the auxiliary information includes: a total flag bit (1 bit for V-PCC in this example), the number of frames to be filtered (7 bits), optimal combination information (8 bits, recording the start and end groups), a per-frame flag bit (1 bit x number of frames), and the optimal coefficients for each frame (32 bits x k x number of frames). This auxiliary information is written into the bitstream as part of the SEI in the V3C_AD bitstream unit. We construct a Wiener filter block in the SEI and write the above information into it for transmission to the decoder.
[0132] In the decoding end, the method of Figure 9 is still used to determine whether the pixel is skipped. Specifically, V-PCC can decode the reconstructed geometric video frame and obtain the occupancy map at the same time. The occupancy map is upsampled four times to facilitate subsequent use. For the pixels in the reconstructed geometric video frame, they are judged one by one, assuming that the position of the current point in the image is (x, y). For the pixels at the following 9 positions: (x, y), (x, y+1), (x, y-1), (x+1, y), (x+1, y+1), (x+1, y-1), (x-1, y), (x-1, y+1), (x-1, y-1), if the occupancy map corresponding to the pixel at at least one position has a value of 0 (that is, it is not occupied and is a background pixel), the current pixel will not be subjected to subsequent operations such as filtering. For pixels that are not skipped, gradient value calculation and grouping are performed. Based on the best combination information obtained by decoding, the best combination based on the occupancy map is obtained. Then, based on the filter flag and filter coefficient of the decoded frame, subsequent filtering operations are performed (when the filter flag is turned on), thereby obtaining a point cloud after filtering based on the scheme of this example.
[0133] Figure 10 is a comparison chart of the reconstructed point clouds of the embodiments of the present application. Figure 10 shows a comparison chart of the subjective image quality. As shown in Figure 10, after implementing the solution of the present application, the noise and outliers in the reconstructed point cloud are reduced compared to the comparison reconstructed point cloud (without implementing the solution of the present application), the 3D patch reconstruction is more accurate, and the contours and textures are clearer, giving people a better subjective experience.
[0134] The method embodiment of the present application is described in detail above in conjunction with Figures 1 to 10 . The device embodiment of the present application is described in detail below in conjunction with Figures 11 to 14 . It should be understood that the description of the method embodiment corresponds to the description of the device embodiment. Therefore, for parts not described in detail, reference can be made to the above method embodiment.
[0135] FIG11 is a schematic diagram of the structure of a decoder provided by an embodiment of the present application. As shown in FIG11 , the decoder 1100 may include a first determining unit 1110 and a second determining unit 1120 .
[0136] The first determining unit 1110 is configured to determine a first reconstructed frame.
[0137] The second determining unit 1120 is configured to perform neighborhood filtering on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0138] In some implementations, the second determination unit 1120 is further configured to perform neighborhood filtering on the current pixel if the current pixel in the first reconstructed frame satisfies a first condition; and / or not perform neighborhood filtering on the current pixel if the current pixel in the first reconstructed frame does not satisfy the first condition; wherein the first condition is related to the value of the corresponding pixel of the current pixel or the neighboring pixels of the current pixel in the occupancy map.
[0139] In some implementations, the first condition includes: a value of a corresponding pixel of the current pixel in the occupancy map is a first value, and the first value indicates occupancy.
[0140] In some implementations, the first condition includes: the neighboring pixels of the current pixel include at least one target pixel; or, the number of target pixels in the current pixel is greater than or equal to a first threshold; wherein the value of the corresponding pixel of the target pixel in the occupancy map is a second value, and the second value indicates non-occupancy.
[0141] In some implementations, the second determination unit 1120 is further configured to determine the group to which the current pixel belongs based on the difference in pixel values between the current pixel and the neighboring pixels, the group to which the current pixel belongs being one of a plurality of groups, and the plurality of groups corresponding one-to-one to a plurality of value ranges of the difference; determine a target combination of the plurality of groups, the target combination including at least one group among the plurality of groups; and perform neighborhood filtering on the pixels in the target combination based on the filter coefficient corresponding to the target combination.
[0142] In some implementations, the target combination is determined based on a bit rate of the bitstream.
[0143] In some implementations, if the bit rate of the code stream belongs to the first bit rate range, the value range of the difference corresponding to the grouping in the target combination is 4 to 10; or, if the bit rate of the code stream belongs to the second bit rate range, the value range of the difference corresponding to the grouping in the target combination is 4 to 8.
[0144] In some implementations, the neighborhood filtering is Wiener filtering.
[0145] In some implementations, the neighborhood filtering is performed based on a diamond filter.
[0146] In some implementations, the decoder 1100 further includes: a third determination unit 1130, configured to parse the code stream and determine relevant information of the neighborhood filtering, where the relevant information of the neighborhood filtering includes one or more of the following: first information, used to indicate whether the neighborhood filtering is enabled; second information, used to indicate the number of reconstructed frames; third information, used to indicate a target combination, where the target combination includes one or more groups, and the one or more groups correspond one-to-one to multiple value ranges, and the multiple value ranges are the value ranges of the difference between the pixel to be filtered and the neighboring pixels of the pixel to be filtered; fourth information, used to indicate whether neighborhood filtering is enabled for a reconstructed frame; and fifth information, used to indicate the filter coefficient corresponding to a reconstructed frame.
[0147] In some implementations, the neighborhood filtering related information is carried in SEI.
[0148] In some implementations, the first reconstructed frame is a reconstructed geometry frame or a reconstructed texture frame.
[0149] In some implementations, the occupancy map is a first occupancy map, and a size of the first occupancy map is equal to a size of the first reconstructed frame. The decoder 1100 further includes: a fourth determination unit 1140, configured to parse the bitstream, determine a second occupancy map, where the size of the second occupancy map is smaller than the size of the first reconstructed frame; and determine the first occupancy map based on the second occupancy map.
[0150] In some implementations, the fourth determining unit 1140 is further configured to upsample or interpolate the second occupancy map to determine the first occupancy map.
[0151] In some implementations, the decoder 1100 further includes: a fifth determination unit 1150 configured to parse the bitstream and determine one or more of the following parameters: a sequence parameter set (SPS), patch auxiliary information, an occupancy map substream, a geometry frame substream, and a texture frame substream.
[0152] In some implementations, the decoder 1100 further includes: a sixth determination unit 1160, configured to determine geometric information of the reconstructed point cloud based on the second reconstructed frame and the occupancy map; and determine the reconstructed point cloud based on the geometric information of the reconstructed point cloud and the reconstructed texture frame.
[0153] It is understood that in the embodiments of the present application, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and can also be a module or a non-modular device. Moreover, the various components in this embodiment can be integrated into a processing unit, or each unit can exist physically separately, or two or more units can be integrated into a single unit. The above-mentioned integrated units can be implemented in the form of hardware or in the form of software functional modules.
[0154] If the integrated unit is implemented in the form of a software functional module and is not 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 embodiment, or the part that contributes to the existing technology, or all or part of the technical solution can be embodied in the form of a software product. The computer software product is stored in a storage medium and includes a number of instructions for causing a computer device (which can be a personal computer, server, or network device, etc.) or a processor to execute all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes various media that can store program code, such as a USB flash drive, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.
[0155] Therefore, an embodiment of the present application provides a computer-readable storage medium, which is applied to the decoder 1100. The computer-readable storage medium stores a computer program, and when the computer program is executed by a processor, it implements the decoding method described in any one of the aforementioned embodiments.
[0156] Based on the composition of the above-mentioned decoder 1100 and the computer-readable storage medium, refer to Figure 12, which shows a specific hardware structure diagram of the encoder 1200 provided in an embodiment of the present application. As shown in Figure 12, the encoder 1200 may include: a communication interface 1210, a memory 1220 and a processor 1230; each component is coupled together through a bus system 1240. It can be understood that the bus system 1240 is used to realize the connection and communication between these components. In addition to the data bus, the bus system 1240 also includes a power bus, a control bus and a status signal bus. However, for the sake of clarity, various buses are labeled as bus system 1240 in Figure 12. Among them,
[0157] The communication interface 1210 is used to receive and send signals when sending and receiving information with other external network elements;
[0158] Memory 1220, used for storing computer programs;
[0159] The processor 1230 is configured to, when running the computer program, execute:
[0160] Determine a first reconstructed frame; and perform neighborhood filtering on the first reconstructed frame according to an occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0161] It is understood that the memory 1220 in the embodiment of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDRSDRAM), enhanced SDRAM (ESDRAM), synchlink DRAM (SLDRAM), and direct rambus RAM (DRRAM). The memory 1220 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0162] Processor 1230 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above method may be completed by hardware integrated logic circuits or software instructions in processor 1230. The above-mentioned processor 1230 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic device, discrete gate or transistor logic device, or discrete hardware component. It can implement or execute the various methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the method disclosed in conjunction with the embodiments of this application may be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. The software module may be located in a storage medium well-known in the art, such as random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, etc. The storage medium is located in the memory 1220 , and the processor 1230 reads the information in the memory 1220 and completes the steps of the above method in combination with its hardware.
[0163] It is understood that the embodiments described herein can be implemented with hardware, software, firmware, middleware, microcode or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described herein or a combination thereof. For software implementation, the technology described herein can be implemented by a module (such as a process, a function, etc.) that performs the functions described herein. The software code can be stored in a memory and executed by a processor. The memory can be implemented in a processor or outside a processor.
[0164] Optionally, as another embodiment, the processor 1230 is further configured to execute the decoding method described in any one of the aforementioned embodiments when running the computer program.
[0165] FIG13 is a schematic diagram of the structure of an encoder provided by an embodiment of the present application. As shown in FIG13 , the encoder 1300 includes a first determining unit 1310 and a second determining unit 1320 .
[0166] The first determining unit 1310 is configured to determine a first reconstructed frame.
[0167] The second determining unit 1320 is configured to perform neighborhood filtering on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0168] In some implementations, the second determination unit 1320 is further configured to perform neighborhood filtering on the current pixel if the current pixel in the first reconstructed frame satisfies a first condition; and / or not perform neighborhood filtering on the current pixel if the current pixel in the first reconstructed frame does not satisfy the first condition; wherein the first condition is related to the value of the corresponding pixel of the current pixel or the neighboring pixels of the current pixel in the occupancy map.
[0169] In some implementations, the first condition includes: a value of a corresponding pixel of the current pixel in the occupancy map is a first value, and the first value indicates occupancy.
[0170] In some implementations, the first condition includes: the neighboring pixels of the current pixel include at least one target pixel; or, the number of target pixels in the current pixel is greater than or equal to a first threshold; wherein the value of the corresponding pixel of the target pixel in the occupancy map is a second value, and the second value indicates non-occupancy.
[0171] In some implementations, the second determination unit 1320 is further configured to determine the group to which the current pixel belongs based on the difference in pixel values between the current pixel and the neighboring pixels, the group to which the current pixel belongs being one of a plurality of groups, and the plurality of groups corresponding one-to-one to a plurality of value ranges of the difference; determine a target combination of the plurality of groups, the target combination including at least one group among the plurality of groups; and perform neighborhood filtering on the pixels in the target combination based on the filter coefficient corresponding to the target combination.
[0172] In some implementations, the target combination is determined based on a bit rate of the bitstream.
[0173] In some implementations, if the bit rate of the code stream belongs to the first bit rate range, the value range of the difference corresponding to the grouping in the target combination is 4 to 10; or, if the bit rate of the code stream belongs to the second bit rate range, the value range of the difference corresponding to the grouping in the target combination is 4 to 8.
[0174] In some implementations, the neighborhood filtering is Wiener filtering.
[0175] In some implementations, the neighborhood filtering is performed based on a diamond filter.
[0176] In some implementations, the encoder 1300 also includes: a third determination unit 1330, configured to determine relevant information of the neighborhood filtering, wherein the relevant information of the neighborhood filtering includes one or more of the following: first information, used to indicate whether the neighborhood filtering is enabled; second information, used to indicate the number of reconstructed frames; third information, used to indicate a target combination, wherein the target combination includes one or more groups, and the one or more groups correspond one-to-one to multiple value ranges, and the multiple value ranges are the value ranges of the difference between the pixel to be filtered and the neighboring pixels of the pixel to be filtered; fourth information, used to indicate whether neighborhood filtering is enabled for a reconstructed frame; fifth information, used to indicate the filter coefficient corresponding to a reconstructed frame.
[0177] In some implementations, the neighborhood filtering related information is carried in SEI.
[0178] In some implementations, the first reconstructed frame is a reconstructed geometry frame or a reconstructed texture frame.
[0179] In some implementations, the occupancy map is a first occupancy map, and a size of the first occupancy map is equal to a size of the first reconstructed frame. The encoder 1300 further includes: a fourth determination unit 1340, configured to determine a second occupancy map, where a size of the second occupancy map is smaller than a size of the first reconstructed frame; and determine the first occupancy map based on the second occupancy map.
[0180] In some implementations, the fourth determining unit 1340 is further configured to upsample or interpolate the second occupancy map to determine the first occupancy map.
[0181] In some implementations, the encoder 1300 further includes: a fifth determining unit 1350 configured to determine a patch according to the initial point cloud; and determine a geometry frame and a texture frame according to the patch.
[0182] In some implementations, the encoder 1300 further includes: a first encoding unit 1360 configured to write one or more of the following parameters into the bitstream: a sequence parameter set (SPS), patch auxiliary information, an occupancy map substream, a geometry frame substream, and a texture frame substream.
[0183] It is understood that in the embodiments of the present application, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and can also be a module or a non-modular device. Moreover, the various components in this embodiment can be integrated into a processing unit, or each unit can exist physically separately, or two or more units can be integrated into a single unit. The above-mentioned integrated units can be implemented in the form of hardware or in the form of software functional modules.
[0184] If the integrated unit is implemented as a software functional module and is not 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 embodiment, or the portion 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 for causing a computer device (which can be a personal computer, server, or network device, etc.) or a processor to execute all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes various media that can store program code, such as a USB flash drive, a mobile hard drive, ROM, RAM, a magnetic disk, or an optical disk.
[0185] Therefore, an embodiment of the present application provides a computer-readable storage medium, which is applied to the encoder 1300. The computer-readable storage medium stores a computer program, and when the computer program is executed by a processor, it implements the decoding method described in any one of the aforementioned embodiments.
[0186] Based on the composition of the above-mentioned encoder 1300 and the computer-readable storage medium, refer to Figure 14, which shows a specific hardware structure diagram of the encoder 1400 provided in an embodiment of the present application. As shown in Figure 14, the encoder 1400 may include: a communication interface 1410, a memory 1420 and a processor 1430; each component is coupled together through a bus system 1440. It can be understood that the bus system 1440 is used to realize the connection and communication between these components. In addition to the data bus, the bus system 1440 also includes a power bus, a control bus and a status signal bus. However, for the sake of clarity, various buses are labeled as bus system 1440 in Figure 14. Among them,
[0187] The communication interface 1410 is used to receive and send signals when sending and receiving information with other external network elements;
[0188] Memory 1420, for storing computer programs;
[0189] The processor 1430 is configured to, when running the computer program, execute:
[0190] Determine a first reconstructed frame; and perform neighborhood filtering on the first reconstructed frame according to an occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
[0191] It will be appreciated that the memory 1420 in the embodiments of the present application may be a volatile memory or a non-volatile memory, or may include both volatile and non-volatile memory. The non-volatile memory may be a ROM, PROM, EPROM, EEPROM, or flash memory. The volatile memory may be a RAM, which serves as an external cache. By way of example and not limitation, many forms of RAM are available, such as SRAM, DRAM, SDRAM, DDRSDRAM, ESDRAM, SLDRAM, and DRRAM. The memory 1420 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0192] Processor 1430 may be an integrated circuit chip with signal processing capabilities. During implementation, the steps of the above method can be performed by hardware integrated logic circuits or software instructions within processor 1430. Processor 1430 may be a general-purpose processor, DSP, ASIC, FPGA, or other programmable logic device, discrete gate or transistor logic device, or discrete hardware component. It can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. A general-purpose processor may be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this application can be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules within the decoding processor. The software modules can be located in a storage medium well-known in the art, such as random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, or registers. This storage medium is located in memory 1420. Processor 1430 reads information from memory 1420 and, in conjunction with its hardware, completes the steps of the above method.
[0193] It is understood that the embodiments described herein can be implemented with hardware, software, firmware, middleware, microcode, or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more ASICs, DSPs, DSPDs, PLDs, FPGAs, general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described herein, or a combination thereof. For software implementation, the technology described herein can be implemented by modules (e.g., processes, functions, etc.) that perform the functions described herein. The software code can be stored in a memory and executed by a processor. The memory can be implemented in the processor or outside the processor.
[0194] Optionally, as another embodiment, the processor 1430 is further configured to execute the encoding method described in any one of the aforementioned embodiments when running the computer program.
[0195] An embodiment of the present application also provides a computer-readable storage medium, which is a non-volatile computer-readable storage medium for storing a bit stream. The bit stream can be generated by an encoding method of an encoder, or the bit stream can be decoded by a decoding method of a decoder, wherein the decoding method can be the decoding method described in any of the foregoing embodiments, and the encoding method can be the encoding method described in any of the foregoing embodiments.
[0196] It should be noted that, in this application, the terms "comprises," "includes," or any other variations thereof are intended to encompass non-exclusive inclusion, such that a process, method, article, or apparatus comprising a series of elements includes not only those elements but also other elements not explicitly listed, or elements inherent to such process, method, article, or apparatus. In the absence of further limitations, an element defined by the phrase "comprising a ..." does not exclude the presence of other identical elements in the process, method, article, or apparatus comprising the element.
[0197] The serial numbers of the above embodiments of the present application are for description only and do not represent the advantages or disadvantages of the embodiments.
[0198] The methods disclosed in the several method embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments.
[0199] The features disclosed in the several product embodiments provided in this application can be arbitrarily combined without conflict to obtain new product embodiments.
[0200] The features disclosed in the several method or device embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments or device embodiments.
[0201] The above description is merely a specific embodiment of the present application, but the scope of protection of the present application is not limited thereto. Any changes or substitutions that can be easily conceived by a person skilled in the art within the technical scope disclosed in this application should be included in the scope of protection of the present application. Therefore, the scope of protection of the present application should be based on the scope of protection of the claims.
Claims
1. A point cloud decoding method, applied to a decoder, comprising: determining a first reconstructed frame; Perform neighborhood filtering on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
2. The method according to claim 1, wherein The performing neighborhood filtering on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame to determine the second reconstructed frame includes: If the current pixel in the first reconstructed frame satisfies a first condition, performing neighborhood filtering on the current pixel; and / or If the current pixel in the first reconstructed frame does not meet the first condition, no neighborhood filtering is performed on the current pixel; The first condition is related to the value of a corresponding pixel of the current pixel or a neighboring pixel of the current pixel in the occupancy map.
3. The method according to claim 2, wherein: The first condition includes: the value of the corresponding pixel of the current pixel in the occupancy map is a first value, and the first value represents occupancy.
4. The method according to claim 2 or 3, wherein: The first condition includes: The neighboring pixels of the current pixel include at least one target pixel; or, The number of target pixels in the neighboring pixels is greater than or equal to a first threshold; The value of the corresponding pixel of the target pixel in the occupancy map is a second value, and the second value indicates non-occupancy.
5. The method according to any one of claims 2 to 4, wherein The performing neighborhood filtering on the current pixel includes: Determining, based on a difference in pixel values between the current pixel and the neighboring pixels, a group to which the current pixel belongs, wherein the group to which the current pixel belongs is one of a plurality of groups, and the plurality of groups correspond one-to-one to a plurality of value ranges of the difference; determining a target combination of the plurality of groups, the target combination including at least one group among the plurality of groups; Neighborhood filtering is performed on pixels in the target combination according to the filter coefficients corresponding to the target combination.
6. The method according to claim 5, wherein: The target combination is determined based on a bit rate of the bit stream.
7. The method according to claim 6, wherein: If the code rate of the code stream belongs to the first code rate range, the value range of the difference corresponding to the groups in the target combination is 4 to 10; or, If the code rate of the code stream belongs to the second code rate range, the value range of the difference corresponding to the groups in the target combination is 4 to 8.
8. The method according to claim 1, wherein The neighborhood filtering is Wiener filtering.
9. The method according to claim 1, wherein The neighborhood filtering is performed based on a diamond filter.
10. The method of claim 1, wherein The method further comprises: Parse the bitstream to determine relevant information of the neighborhood filtering, where the relevant information of the neighborhood filtering includes one or more of the following: First information, used to indicate whether to start the neighborhood filtering; The second information is used to indicate the number of reconstructed frames; The third information is used to indicate a target combination, where the target combination includes one or more groups, and the one or more groups correspond one-to-one to multiple value ranges, where the multiple value ranges are value ranges of differences between a pixel to be filtered and adjacent pixels of the pixel to be filtered; The fourth information is used to indicate whether neighborhood filtering is enabled for a reconstructed frame; The fifth information is used to indicate a filter coefficient corresponding to a reconstructed frame.
11. The method according to claim 10, wherein: The related information of the neighborhood filtering is carried in the supplemental enhancement information SEI.
12. The method according to claim 1, wherein The first reconstructed frame is a reconstructed geometry frame or a reconstructed texture frame.
13. The method according to claim 1, wherein The occupancy map is a first occupancy map, and a size of the first occupancy map is equal to a size of the first reconstructed frame.
14. The method according to claim 13, wherein: Before performing neighborhood filtering on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame, the method further includes: parsing the bitstream to determine a second occupancy map, wherein a size of the second occupancy map is smaller than a size of the first reconstructed frame; The first occupancy map is determined based on the second occupancy map.
15. The method according to claim 14, wherein The determining the first occupancy map according to the second occupancy map comprises: The second occupancy map is upsampled or interpolated to determine the first occupancy map.
16. The method according to claim 1, wherein The method further comprises: Parse the code stream and determine one or more of the following parameters: Sequence parameter set SPS, patch auxiliary information, occupancy map sub-stream, geometry frame sub-stream and texture frame sub-stream.
17. The method according to claim 1, wherein The method further comprises: determining geometric information of a reconstructed point cloud based on the second reconstructed frame and the occupancy map; The reconstructed point cloud is determined according to the geometric information of the reconstructed point cloud and the reconstructed texture frame.
18. A point cloud encoding method, applied to an encoder, comprising: determining a first reconstructed frame; Perform neighborhood filtering on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
19. The method according to claim 18, wherein The performing neighborhood filtering on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame to determine the second reconstructed frame includes: If the current pixel in the first reconstructed frame satisfies a first condition, performing neighborhood filtering on the current pixel; and / or If the current pixel in the first reconstructed frame does not meet the first condition, no neighborhood filtering is performed on the current pixel; The first condition is related to the value of a corresponding pixel of the current pixel or a neighboring pixel of the current pixel in the occupancy map.
20. The method according to claim 19, wherein The first condition includes: the value of the corresponding pixel of the current pixel in the occupancy map is a first value, and the first value represents occupancy.
21. The method according to claim 19 or 20, wherein The first condition includes: The neighboring pixels of the current pixel include at least one target pixel; or, The number of target pixels in the neighboring pixels is greater than or equal to a first threshold; The value of the corresponding pixel of the target pixel in the occupancy map is a second value, and the second value indicates non-occupancy.
22. The method according to any one of claims 19 to 21, wherein The performing neighborhood filtering on the current pixel includes: Determining, based on a difference in pixel values between the current pixel and the neighboring pixels, a group to which the current pixel belongs, wherein the group to which the current pixel belongs is one of a plurality of groups, and the plurality of groups correspond one-to-one to a plurality of value ranges of the difference; determining a target combination of the plurality of groups, the target combination including at least one group among the plurality of groups; Neighborhood filtering is performed on pixels in the target combination according to the filter coefficients corresponding to the target combination.
23. The method according to claim 22, wherein The target combination is determined based on a bit rate of the bit stream.
24. The method of claim 23, wherein: If the code rate of the code stream belongs to the first code rate range, the value range of the difference corresponding to the groups in the target combination is 4 to 10; or, If the code rate of the code stream belongs to the second code rate range, the value range of the difference corresponding to the groups in the target combination is 4 to 8.
25. The method according to claim 18, wherein The neighborhood filtering is Wiener filtering.
26. The method according to claim 18, wherein The neighborhood filtering is performed based on a diamond filter.
27. The method according to claim 18, wherein The method further comprises: The relevant information of the neighborhood filtering is written into the bitstream, where the relevant information of the neighborhood filtering includes one or more of the following: First information, used to indicate whether to start the neighborhood filtering; The second information is used to indicate the number of reconstructed frames to be subjected to neighborhood filtering; The third information is used to indicate a target combination, where the target combination includes one or more groups, and the one or more groups correspond one-to-one to multiple value ranges, where the multiple value ranges are value ranges of differences between a pixel to be filtered and adjacent pixels of the pixel to be filtered; The fourth information is used to indicate whether neighborhood filtering is enabled for a reconstructed frame; The fifth information is used to indicate a filter coefficient corresponding to a reconstructed frame.
28. The method according to claim 27, wherein The related information of the neighborhood filtering is carried in the supplemental enhancement information SEI.
29. The method according to claim 18, wherein The first reconstructed frame is a reconstructed geometry frame or a reconstructed texture frame.
30. The method of claim 18, wherein The occupancy map is a first occupancy map, and a size of the first occupancy map is equal to a size of the first reconstructed frame.
31. The method according to claim 30, wherein Before performing neighborhood filtering on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame, the method further includes: determining a second occupancy map, the second occupancy map having a size smaller than a size of the first reconstructed frame; The first occupancy map is determined based on the second occupancy map.
32. The method according to claim 31, wherein The determining the first occupancy map according to the second occupancy map comprises: The second occupancy map is upsampled or interpolated to determine the first occupancy map.
33. The method of claim 18, wherein: The method further comprises: Determine the patch based on the initial point cloud; A geometry frame and a texture frame are determined based on the patches.
34. The method of claim 18, wherein The method further comprises: Write one or more of the following parameters into the codestream: Sequence parameter set SPS, patch auxiliary information, occupancy map sub-stream, geometry frame sub-stream and texture frame sub-stream.
35. A decoder comprising: a first determining unit, configured to determine a first reconstructed frame; The second determining unit is configured to perform neighborhood filtering on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
36. A decoder comprising: Memory for storing computer programs; A processor, configured to execute the method according to any one of claims 1 to 17 when running the computer program.
37. An encoder comprising: a first determining unit, configured to determine a first reconstructed frame; The second determining unit is configured to perform neighborhood filtering on the first reconstructed frame according to the occupancy map corresponding to the first reconstructed frame to determine a second reconstructed frame.
38. An encoder comprising: Memory for storing computer programs; A processor, configured to perform the method according to any one of claims 18 to 34 when running the computer program.
39. A non-volatile computer-readable storage medium storing a bit stream, wherein the bit stream is generated by an encoding method using an encoder, or the bit stream is decoded by a decoding method using a decoder, wherein: The decoding method is the method according to any one of claims 1 to 17, and the encoding method is the method according to any one of claims 18 to 34.
40. A code stream, comprising a code stream generated by the method according to any one of claims 18 to 34.
41. A computer-readable storage medium, wherein: The computer-readable storage medium stores a computer program, and when the computer program is executed, the method according to any one of claims 1 to 17 or 18 to 34 is implemented.