WO2025217752A1 - 点云编解码方法、编解码器、码流以及存储介质 - Google Patents
点云编解码方法、编解码器、码流以及存储介质Info
- Publication number
- WO2025217752A1 WO2025217752A1 PCT/CN2024/087697 CN2024087697W WO2025217752A1 WO 2025217752 A1 WO2025217752 A1 WO 2025217752A1 CN 2024087697 W CN2024087697 W CN 2024087697W WO 2025217752 A1 WO2025217752 A1 WO 2025217752A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- point
- reconstructed
- point cloud
- neighboring
- points
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
Definitions
- 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.
- G-PCC geometry-based point cloud compression
- 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.
- a point cloud decoding method which is applied to a decoder, including: parsing a code stream to determine a filter coefficient; determining neighboring points of a current point based on position information of points in a first reconstructed point cloud; and filtering the reconstructed attribute value of the current point based on the reconstructed attribute value and filter coefficient of the neighboring points of the current point.
- a point cloud encoding method which is applied to an encoder, including: determining the neighboring points of a point in the first reconstructed point cloud based on the position information of the point in the first reconstructed point cloud; determining the filter coefficient based on the reconstructed attribute values of the neighboring points of the point in the first reconstructed point cloud; and filtering the reconstructed attribute value of the current point based on the reconstructed attribute values and the filter coefficients of the neighboring points of the current point.
- a decoder comprising: a first determination unit configured to parse a code stream and determine a filter coefficient; a second determination unit configured to determine neighboring points of a current point based on position information of points in a first reconstructed point cloud; and a filtering unit configured to filter the reconstructed attribute value of the current point based on the reconstructed attribute value and the filter coefficient of the neighboring points of the current point.
- a decoder comprising: a memory for storing a computer program; and a processor for executing the method of the first aspect when running the computer program.
- an encoder comprising: a first determination unit, configured to determine the neighboring points of a point in the first reconstructed point cloud based on the position information of the point in the first reconstructed point cloud; a second determination unit, configured to determine the filter coefficient based on the reconstructed attribute values of the neighboring points of the point in the first reconstructed point cloud; and a filtering unit, configured to filter the reconstructed attribute value of the current point based on the reconstructed attribute values and the filter coefficients of the neighboring points of the current point.
- an encoder comprising: a memory for storing a computer program; and a processor for executing the method of the second aspect when running the computer program.
- a 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.
- a non-volatile computer-readable storage medium for 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 of the first aspect and the encoding method is the method of the second aspect.
- a code stream comprising a code stream generated according to the method of the second aspect.
- the reconstructed attribute information can be filtered to improve the quality of the reconstructed point cloud.
- the present embodiment determines neighboring points for filtering based on the position information (such as Morton codes or three-dimensional coordinate values) of points in the reconstructed point cloud, which can improve filtering efficiency and, in turn, help improve the encoding and decoding efficiency of attribute information.
- Figure 1 is a schematic diagram of a point cloud encoding and decoding network architecture.
- FIG2A is a schematic diagram of a composition framework of a G-PCC encoder.
- FIG2B is a schematic diagram of a composition framework of a G-PCC decoder.
- FIG3 is a schematic diagram of adjacent positions of a current point.
- FIG4 is a schematic diagram of neighboring points of a current point.
- FIG5 is a flow chart of reconstructing a point cloud frame and performing Wiener filtering.
- FIG6 is a flow chart of a decoding method provided in an embodiment of the present application.
- FIG7 is a flow chart of the encoding method provided in an embodiment of the present application.
- FIG8 is a schematic diagram of a process for determining neighboring points based on Morton codes according to an embodiment of the present application.
- FIG9 is a schematic diagram of the process of reconstructing a point cloud frame for inter-frame prediction.
- FIG10 is a schematic diagram of a process of performing inter-frame prediction based on the filtered reconstructed point cloud frame at the encoding end according to an embodiment of the present application.
- FIG11 is a flow chart showing the process of performing inter-frame prediction based on the filtered reconstructed point cloud frame at the decoding end provided in an embodiment of the present application.
- FIG12 is a schematic diagram of the structure of a decoder provided in an embodiment of the present application.
- FIG13 is a schematic structural diagram of a decoder provided in another embodiment of the present application.
- FIG14 is a schematic diagram of the structure of an encoder provided in one embodiment of the present application.
- FIG15 is a schematic diagram of the structure of an encoder provided in another embodiment of the present application.
- 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.
- 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.
- each pixel In a two-dimensional image, each pixel contains information and is distributed regularly, so there's no need to record its location. However, the distribution of points in a point cloud in three-dimensional space is random and irregular, so recording the location of each point in space is necessary to fully represent the point cloud. Similar to a two-dimensional image, each location in the acquisition process has corresponding attribute information, typically an RGB color value, which reflects the object's color. For a point cloud, in addition to color information, each point's corresponding attribute information often includes reflectance values, which reflect the surface texture 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.
- point geometric information can be the point's three-dimensional coordinates (x, y, z).
- Point attribute information can include color information and/or reflectance.
- 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. Here, R represents red (red), G represents green (green), and B represents blue (blue).
- the color information may be luminance and chrominance (YCbCr, YUV) information, where Y represents brightness (luma), Cb (U) represents blue color difference, and Cr (V) represents red color difference.
- a point cloud generated using laser measurement principles can include both its 3D coordinates and its reflectivity.
- a point cloud generated using photogrammetry principles can include both its 3D coordinates and its 3D color information.
- a point cloud generated using a combination of laser measurement and photogrammetry principles can include both its 3D coordinates, its reflectivity, and its 3D color information.
- point cloud coding frameworks that can compress point clouds include the G-PCC codec framework provided by the Moving Picture Experts Group (MPEG), the video-based point cloud compression (V-PCC) codec framework, the AVS-PCC codec framework provided by AVS, or the geometry-based solid content test model (GES-TM).
- 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 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 can be based on the Point Cloud Compression Test Platform (Test Model Compression 2, TMC2).
- G-PCC codec framework is also called the Point Cloud Codec TMC13
- V-PCC codec framework is also called the Point Cloud Codec TMC2.
- GES-TM is a codec framework proposed for dense point clouds, such as point clouds collected in augmented reality (AR) or virtual reality (VR) scenes.
- 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.
- 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.
- the electronic device can be various types of devices with point cloud encoding and decoding functions.
- 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.
- the decoder or encoder in the embodiment of the present application can be the above-mentioned electronic device.
- 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).
- a point cloud encoder ie, encoder
- a point cloud decoder ie, decoder
- the point cloud data for the point cloud data to be encoded, firstly through slices (also called strips) The point cloud data is divided into multiple slices. In each slice, the geometric information of the point cloud and the attribute information corresponding to each point are encoded separately.
- Figure 2A shows a schematic diagram of the G-PCC encoder architecture.
- the geometric information is transformed so that the entire point cloud is contained within a bounding box.
- Quantization is then performed. This quantization step primarily serves a scaling purpose. Due to quantization rounding, the geometric information of some point clouds remains identical. Parameters are then used to determine whether to remove duplicate points. This process of quantization and removing duplicate points is also known as voxelization.
- the bounding box is then partitioned into an octree or constructed as a prediction tree. During this process, arithmetic coding is performed on the points within the leaf nodes of the partition to generate a binary geometry bitstream.
- arithmetic coding is performed on the intersections (vertex) of the partition (surface fitting based on the intersections) to generate a binary geometry bitstream.
- color conversion is performed to convert the color information (i.e., attribute information) from the RGB color space to the YUV color space.
- the reconstructed geometry is then used to recolor the point cloud, aligning the unencoded attribute information with the reconstructed geometry.
- Attribute encoding is mainly performed on color information. In the process of color information encoding, there are three main transformation methods. The first two methods rely on the level of detail (LOD) division, which are distance-based lifting transformation and prediction transformation respectively.
- LOD level of detail
- the third method is to directly perform RAHT. All three methods will convert color information from the spatial domain to the frequency domain, and obtain high-frequency coefficients and low-frequency coefficients through transformation. Finally, the coefficients are quantized and then arithmetic coding is performed on the quantized coefficients to generate a binary attribute bit stream.
- Figure 2B shows a schematic diagram of the composition framework of a G-PCC decoder.
- the geometric bit stream and attribute bit stream in the binary bit stream are first decoded independently.
- the geometric information of the point cloud is obtained through arithmetic decoding-reconstruction of the octree/reconstruction of the prediction tree-reconstruction of the geometry-coordinate inverse conversion;
- the attribute information of the point cloud is obtained through arithmetic decoding-inverse quantization-LOD partitioning/RAHT-color inverse conversion, and the point cloud data to be encoded (i.e., the output point cloud) is restored based on the geometric information and attribute information.
- the current geometric coding and decoding of G-PCC can be divided into octree-based geometric coding and decoding (marked by a dotted box) and prediction tree-based geometric coding and decoding (marked by a dotted box).
- octree-based geometry encoding includes: first, coordinate conversion of the geometric information so that all point clouds are contained in a bounding box. Then quantization is performed. This step of quantization mainly plays a role of scaling. Due to the quantization rounding, the geometric information of some points is the same. The parameters are used to decide whether to remove duplicate points. The process of quantization and removal of duplicate points is also called voxelization. Next, the bounding box is continuously divided into trees (such as octree, quadtree, binary tree, etc.) in the order of breadth-first traversal, and the placeholder code of each node is encoded.
- trees such as octree, quadtree, binary tree, etc.
- an implicit geometric division method is proposed.
- the bounding box of the point cloud is calculated. Assuming dx > dy > dz , the bounding box corresponds to a cuboid.
- binary tree partitioning is first performed along the x-axis, resulting in two child nodes.
- octree partitioning is performed until the resulting leaf node is a 1 ⁇ 1 ⁇ 1 unit cube.
- the points in the leaf node are encoded to generate a binary bitstream.
- Two parameters, K and M, are introduced during the binary/quadtree/octree partitioning process.
- Parameter K indicates the maximum number of binary/quadtree partitions to be performed before performing an octree partition.
- Parameter M indicates the minimum block side length corresponding to the binary/quadtree partitioning is 2M .
- parameter K satisfies: K ⁇ d max - d min ;
- parameter M satisfies: M ⁇ d min .
- the current G-PCC coding framework includes two attribute encoding methods: predicting transform (PT) and lifting transform (LT). These two methods predictively encode point clouds based on the order in which levels of detail (LOD) are generated. Before constructing the LOD, the points in the point cloud are first Morton sorted to ensure strong attribute correlation between neighboring points. Then, the attribute values of the points in the point cloud are weightedly predicted based on the nearest neighbor attribute prediction coding method. The following describes a scheme for finding neighboring points based on the Morton code of the points in the point cloud.
- each point in the point cloud is sorted in the order of the Morton code, then when the point cloud is relatively dense, each point can usually find a neighboring point in a 3 ⁇ 3 ⁇ 3 cube centered on it.
- a point is a voxel (a unit cube), and the position of the point within the voxel is quantized to the voxel center.
- the spatial position difference between the current point and the neighboring point 2 is (0,1,0), and this spatial position difference is also the offset of the spatial position between the current point and the neighboring point. If the spatial position difference (0,1,0) is represented by the Morton code, the offset between the current point and the neighboring point 2 can be expressed as 2.
- MortonSub(a,b) ((a&m)-(b&m)&m)
- MortonSub(a,b) is the function of subtracting b from a
- m is the constant 0x9249249249249
- a is the Morton code of the current point
- b is the offset.
- the Morton code-based approach for finding neighboring points is applicable to predictive transform and lifting transform coding modes. In both coding modes, only previously encoded points can be used to predict the current point, so the Morton code of the available points must be smaller than the current point. Furthermore, to simplify calculations, related techniques use predictive coding for adjacent points whose coordinates in all three directions (X, Y, and Z) are smaller than those of the current point.
- the G-PCC codec framework After the point cloud is reconstructed on the codec side, the G-PCC codec framework only performs a basic reconstruction of the point cloud sequence. For attribute lossy encoding, no corresponding post-processing is performed to further improve the quality of the reconstructed point cloud's color attributes. This can result in significant differences between the reconstructed point cloud and the original, leading to severe distortion and impacting the overall point cloud quality. Therefore, related technologies propose filtering the attribute information of the reconstructed point cloud to enhance its image quality.
- the original point cloud and the reconstructed point cloud are used as input.
- the order of the Wiener filter is K, and the neighborhood of each point is the K nearest neighbors of that point.
- the optimal filter coefficient of the Wiener filter is calculated for each color attribute channel (such as Y, U, and V), and the reconstructed point cloud is filtered using this filter coefficient to obtain a quality-enhanced point cloud.
- the original point cloud can be represented as (p1, p2, p3, c1, c2, c3) ⁇ R n ⁇ 6 .
- the geometric position and color attributes of the original point cloud are represented by the first three column vectors ⁇ p1, p2, p3 ⁇ and the last three column vectors ⁇ c1, c2, c3 ⁇ respectively.
- the color of the current point is updated by itself and its k-1 nearest neighbor points. These nearest neighbor points can be found by K-nearest neighbors (KNN) search.
- the optimal coefficient of the Wiener filter is a vector h ⁇ R k ⁇ 1 .
- the error y ⁇ Rn ⁇ 1 can be obtained:
- Wiener filter finds an optimal set of coefficients h opt to minimize the objective function E(y 2 ):
- the peak signal-to-noise ratio (PSNR) of the reconstructed point cloud for each channel and the filtered reconstructed point cloud relative to the original point cloud is calculated. If the PSNR of the filtered reconstructed point cloud increases, it is considered that the Wiener filter has improved the quality of that color component.
- the decision array and filter coefficients are written into the bitstream. On the decoding side, the decision array is first decoded to determine the channel that needs to be filtered. Then, the filter coefficients of the filter are decoded and used to filter the reconstructed point cloud. The obtained values are overwritten with the values of the reconstructed point cloud to obtain a point cloud with improved quality. This scheme affects the arithmetic coding and subsequent parts in the point cloud coding framework, as well as the part after attribute reconstruction in the decoding framework.
- the nearest neighbor search method used in the filtering scheme of the related technology is less efficient in searching k neighboring points.
- the KNN nearest neighbor search needs to calculate the distance between the current point and all encoded points, resulting in a significant increase in encoding and decoding time, thereby reducing the encoding and decoding efficiency of the point cloud.
- the related technology only performs Wiener filtering on the attribute information within one frame of the reconstructed point cloud, but does not use the filtered reconstructed point cloud frame for point cloud reconstruction of other frames.
- the filtering scheme of the related technology is only applied to the G-PCC TMC13 reference software, and is not applied to the GES-TM reference software.
- the GES-TM reference software is a reference software specifically used for inter-frame prediction encoding of multi-frame dynamic dense point clouds. That is to say, in the related technology, the filtered reconstructed point cloud frame is not used for inter-frame prediction of other frames.
- the filtered reconstructed point cloud frame The image quality is better. If it can be applied to inter-frame prediction, the image quality of the point cloud will be further improved.
- an embodiment of the present application provides an encoding method, including: determining the neighboring points of a point in a first reconstructed point cloud based on the position information of the point in the first reconstructed point cloud; determining the filter coefficient based on the reconstructed attribute values of the neighboring points of the point in the first reconstructed point cloud; and filtering the reconstructed attribute value of the current point based on the reconstructed attribute values of the neighboring points of the current point and the filter coefficient.
- An embodiment of the present application also provides a decoding method, including: parsing the code stream to determine the filter coefficient; determining the neighboring points of the current point based on the position information of the points in the first reconstructed point cloud; filtering the reconstructed attribute value of the current point based on the reconstructed attribute value of the neighboring points of the current point and the filter coefficient.
- the embodiment of the present application determines the neighboring points for filtering based on the position information of the points in the reconstructed point cloud (such as Morton codes or three-dimensional coordinate values), which can improve the efficiency of filtering and thus help improve the encoding and decoding efficiency of attribute information.
- the position information of the points in the reconstructed point cloud such as Morton codes or three-dimensional coordinate values
- Figure 6 is a flow chart of the decoding method provided in an embodiment of the present application.
- the decoding method of Figure 6 can be applied to a decoder.
- the decoding method of Figure 6 can be used to decode the attribute information of a point cloud.
- the decoding method can be applied to G-PCC.
- the decoding method can be applied to a geometry-based solid content test model (GES-TM).
- GES-TM is a coding and decoding framework proposed for dense point clouds (such as point clouds collected in augmented reality (AR) or virtual reality (VR) scenes).
- step S610 the code stream is parsed and the filter coefficients are determined.
- the above filter coefficients are used to filter the reconstructed attribute values of points in the point cloud.
- the attribute values here can refer to the color information of the points in the point cloud.
- the color information can be RGB information.
- the color information can be luminance and chrominance (YCbCr, YUV) information.
- step S620 neighboring points of the current point are determined based on the position information of the points in the first reconstructed point cloud.
- neighboring points may be determined in an N ⁇ N ⁇ N voxel centered at the current point, where N may be any integer greater than or equal to 1. For example, N may be 5, or 3.
- N ⁇ N ⁇ N voxels When determining the nearest neighbor points, you can search in N ⁇ N ⁇ N voxels in a certain order. For example, you can divide the N ⁇ N ⁇ N voxels into multiple hierarchical ranges, and search for the nearest neighbor points of the current point based on the hierarchical range.
- the 3 ⁇ 3 ⁇ 3 voxel centered on the current point is set as the first hierarchical range
- the 5 ⁇ 5 ⁇ 5-3 ⁇ 3 ⁇ 3 voxel is set as the second hierarchical range; then, when searching, you can first search for the nearest neighbor points within the first hierarchical range, and then search for the nearest neighbor points within the second hierarchical range if the nearest neighbor points within the first hierarchical range are insufficient.
- the embodiments of the present application do not specifically limit the number of neighboring points of the current point.
- the number of neighboring points may correspond to the order K of the filter. For example, if the order K of the Wiener filter is 4, then at least 4 neighboring points of the current point need to be determined; or, if the order K of the Wiener filter is 8, then at least 8 neighboring points of the current point need to be determined.
- the location information of a point may refer to relevant information representing the three-dimensional coordinates of the point.
- the location information of a point may be the Morton code of the point.
- the location information of a point may also be the three-dimensional coordinate values of the point.
- the neighboring points of the current point can be determined based on the Morton code of the point in the first reconstructed point cloud.
- the Morton code here can refer to the Morton code determined during the LOD layer division process of the point cloud.
- the Morton codes of the neighboring points can be determined first.
- the Morton codes of the neighboring points of the current point can be determined based on the Morton codes of the adjacent positions of the current point. For example, the Morton code of the first adjacent position can be compared with the Morton codes of points in the point cloud; if the Morton code of a point is the same as the Morton code of the first adjacent position, then the point is a neighboring point of the current point, or in other words, the Morton code of the point is the Morton code of the neighboring point.
- the Morton code of the adjacent position can be determined based on the offset value of the spatial position between the current point and the adjacent position.
- the spatial position here can refer to the geometric information of the point, such as the three-dimensional coordinate value (x, y, z) of the point.
- the offset value of the spatial position here can refer to the difference between the three-dimensional coordinate value of the current point and the three-dimensional coordinate value of the adjacent position.
- the Morton code of the adjacent position can be determined based on the Morton code of the current point and the above offset value; then, the neighboring point of the current point can be determined based on the Morton code of the adjacent position and the Morton code of the point in the first reconstructed point cloud.
- the offset value of each neighboring position relative to the current point is determined within a 5 ⁇ 5 ⁇ 5 voxel centered on the current point, and all offset values are included in a search set.
- the Morton code of the first neighboring position in the search set is then calculated. If the Morton code of this neighboring position is the same as the Morton code of the point in the point cloud, then the neighboring position is not empty, meaning that a neighboring point exists.
- the spatial position difference i.e., offset value
- the spatial position difference is converted into the form of Morton code, and the offset value is 2; then, the Morton code 18 of the current point is subtracted from the offset value 2 to obtain the Morton code 16 of the adjacent position; finally, find whether there is a point in the point cloud with a Morton code of 16. If the point exists, it is determined that there is a neighboring point of the current point in the adjacent position.
- related technologies use the KNN method to search for neighboring points of the current point.
- This method requires calculating the distance between the current point and all encoded points. Therefore, the time spent on filtering by the related technology is relatively long, resulting in low efficiency in encoding and decoding of attribute information.
- the embodiment of the present application determines the neighboring points for filtering based on the Morton codes of the points in the reconstructed point cloud.
- the sorting characteristics of Morton coding can make the Morton codes of points with close geometric information (such as three-dimensional coordinate values) adjacent. Therefore, it is only necessary to determine the Morton codes of adjacent positions within a specific range centered on the current point (or adjacent Morton codes) to determine the neighboring points of the current point. This method shortens the time for searching for neighboring points and can improve the efficiency of filtering, thereby helping to improve the decoding efficiency of attribute information.
- the position information of a point may refer to the three-dimensional coordinate value of the point.
- the neighboring points of the current point may be determined based on the three-dimensional coordinate value of the point in the first reconstructed point cloud.
- the three-dimensional coordinate value of the adjacent position (second adjacent position) of the current point can be determined based on the three-dimensional coordinate value of the point in the first reconstructed point cloud; then, the neighboring point of the current point can be determined based on the three-dimensional coordinate value of the adjacent position.
- the offset value of each adjacent position and the three-dimensional coordinate of the current point is determined, and the offset values of all three-dimensional coordinates are included in a search set; then, all adjacent positions of the current point in the 5 ⁇ 5 ⁇ 5 voxel are determined based on the offset values of the three-dimensional coordinates in the search set; finally, all adjacent positions are searched for neighboring points, thereby finding k neighboring points.
- the embodiment of the present application determines the neighboring points of the current point within a specific range (such as 5 ⁇ 5 ⁇ 5 voxels) based on the three-dimensional coordinate values of the points in the reconstructed point cloud.
- a specific range such as 5 ⁇ 5 ⁇ 5 voxels
- the time required for determining neighboring points based on three-dimensional coordinate values is shorter, which can improve the efficiency of filtering, thereby helping to improve the encoding and decoding efficiency of attribute information.
- filtering the reconstructed attribute values of the reconstructed point cloud requires determining at least K neighboring points. If the number of neighboring points determined in step S620 is less than K, for example, if some points at the edge of the point cloud may not have all K neighboring points, the decoding method shown in FIG6 can also determine the remaining neighboring points (or first neighboring points) based on other methods.
- the reconstructed property value of the first neighboring point may be determined based on the reconstructed property values of the neighboring points determined in step S620. For example, the reconstructed property value of the first neighboring point may be determined based on the average of the reconstructed property values of all the determined neighboring points. In another example, the reconstructed property value of one of the determined neighboring points may be determined based on the reconstructed property value of the first neighboring point.
- step S630 the reconstructed attribute value of the current point is filtered according to the reconstructed attribute values and filter coefficients of the neighboring points of the current point.
- the filtered reconstructed point cloud frame can be used as a reference frame to perform inter-frame prediction on the attribute values of other frames (such as the next frame after the current frame in the decoding order).
- the filtered reconstructed point cloud frame has better image quality, and using it as a reference frame helps improve the prediction effect of the point cloud attribute information, which in turn helps improve the decoding efficiency of the point cloud attribute information.
- the filtering mentioned above can be any weighted sum of attribute values within a neighborhood.
- the type of filtering can be Wiener filtering.
- the order of the Wiener filter can be arbitrary, for example, the order K of the Wiener filter can be 4 or 8.
- the reconstructed attribute values of neighboring points of the current point may be used as inputs of the Wiener filter, and combined with the filter coefficients, the output of the Wiener filter may be used as the reconstructed attribute value of the current point after filtering.
- the reconstructed attribute value after filtering at the current point can be determined based on the following formula:
- a set of filter coefficients parsed from the bitstream can be used to filter the reconstructed attribute values of only one frame of reconstructed point cloud.
- a set of filter coefficients can be used to filter the reconstructed attribute values of multiple frames of reconstructed point clouds. For example, when the attribute values of two adjacent frames of reconstructed point clouds are similar, the reconstructed attribute values of the two frames of reconstructed point clouds can be filtered based on the same set of filter coefficients. This can reduce the number of times the filter coefficients are obtained, thereby further reducing the time required for filtering.
- a frame of reconstructed point cloud can correspond to one or more filters.
- the target filter can be determined based on the difference between the reconstructed attribute value of the current point and the reconstructed attribute value of the current point.
- the multiple filters here can correspond to multiple filter coefficients.
- the multiple filters may correspond to different neighborhood difference ranges.
- the multiple filters may include a first filter and a second filter. If the neighborhood difference between the reconstructed property value of the current point and the reconstructed property value of the neighboring point is within a first range, the first filter may be selected; alternatively, if the neighborhood difference between the reconstructed property value of the current point and the reconstructed property value of the neighboring point is within a second range, the second filter may be selected.
- the codec can determine whether to filter the reconstruction attribute values of the reconstructed point cloud frame based on predefined rules.
- the encoder can also determine whether to filter the reconstruction attribute values of the reconstructed point cloud frame, and then write the determination result into the bitstream in the form of a syntax element to guide point cloud reconstruction at the decoder.
- the bitstream is parsed to determine first information indicating whether to filter the reconstructed attribute values of the reconstructed point cloud frame.
- the bitstream is parsed to determine second information indicating a filter coefficient for filtering the reconstructed attribute values.
- the following compares the test results obtained by testing the encoding and decoding method provided by the embodiment of the present application with the performance test results obtained by testing based on related technologies to verify the performance improvement brought about by the embodiment of the present application.
- Tables 1 to 4 were obtained by testing 32 frames per category of a multi-frame dynamic point cloud sequence required by MPEG in the GPCC reference software ges-tm v4.0-rc1 under the C1 test condition.
- the related art uses the KNN method to search for neighboring points and uses the reconstructed point cloud after the Wiener filter for inter-frame prediction.
- the embodiment of the present application uses the Morton code method to search for neighboring points and uses the reconstructed point cloud after the Wiener filter for inter-frame prediction.
- the related art uses the KNN method to search for neighboring points and uses the reconstructed point cloud after the Wiener filter for inter-frame prediction.
- K 4 indicates that the order of the Wiener filter is 4.
- the embodiment of the present application uses the Morton code method to search for neighboring points and uses the reconstructed point cloud after the Wiener filter for inter-frame prediction.
- End-to-End BD-AttrRate represents the BD-Rate of the attribute bitstream for the end-to-end attribute value.
- BD-Rate reflects the difference in PSNR curves between two scenarios (with and without filtering).
- a decrease in BD-Rate indicates improved performance when the bitrate decreases, while an increase in bitrate decreases performance when the PSNR remains the same. In other words, the greater the decrease in BD-Rate, the better the point cloud compression.
- Cat2-Aaverage, Cat2-Baverage, and Cat2-Caverage represent the average test results of the point cloud sequences for the three Cat2 datasets, respectively. Overall average represents the average test results of all sequences.
- Figure 7 is a flow chart of the encoding method provided in an embodiment of the present application.
- the encoding method of Figure 7 can be applied to an encoder.
- the encoding method of Figure 7 can be used to encode attribute information of a point cloud.
- the encoding method can be applied to G-PCC.
- the encoding method can be applied to a geometry-based solid content test model (GES-TM).
- GES-TM is a coding and decoding framework proposed for dense point clouds (such as point clouds collected in augmented reality (AR) or virtual reality (VR) scenes).
- step S710 neighboring points of a point in the first reconstructed point cloud are determined based on position information of the point in the first reconstructed point cloud.
- neighboring points may be determined in an N ⁇ N ⁇ N voxel centered at the current point, where N may be any integer greater than or equal to 1. For example, N may be 5, or 3.
- N ⁇ N ⁇ N voxels When determining the nearest neighbor points, you can search in N ⁇ N ⁇ N voxels in a certain order. For example, you can divide the N ⁇ N ⁇ N voxels into multiple hierarchical ranges, and search for the nearest neighbor points of the current point based on the hierarchical range.
- the 3 ⁇ 3 ⁇ 3 voxel centered on the current point is set as the first hierarchical range
- the 5 ⁇ 5 ⁇ 5-3 ⁇ 3 ⁇ 3 voxel is set as the second hierarchical range; then, when searching, you can first search for the nearest neighbor points within the first hierarchical range, and then search for the nearest neighbor points within the second hierarchical range if the nearest neighbor points within the first hierarchical range are insufficient.
- the embodiments of the present application do not specifically limit the number of neighboring points of the current point.
- the number of neighboring points may correspond to the order K of the filter. For example, if the order K of the Wiener filter is 4, then at least 4 neighboring points of the current point need to be determined; or, if the order K of the Wiener filter is 8, then at least 8 neighboring points of the current point need to be determined.
- the location information of a point may refer to relevant information representing the three-dimensional coordinates of the point.
- the location information of a point may be the Morton code of the point.
- the location information of a point may also be the three-dimensional coordinate values of the point.
- the neighboring points of a point in the first reconstructed point cloud may be determined based on the Morton code of the point in the first reconstructed point cloud.
- the Morton code here may refer to the Morton code determined during the LOD layer division process of the point cloud.
- the Morton codes of the neighboring points can be determined first.
- the Morton codes of the neighboring points of the current point can be The Morton code of the neighboring points of the current point is determined based on the Morton code of the neighboring points. For example, the Morton code of the first neighboring point can be compared with the Morton code of the points in the point cloud. If the Morton code of a point is the same as the Morton code of the first neighboring point, then the point is a neighbor of the current point, or in other words, the Morton code of the point is the Morton code of the neighboring point.
- the Morton code of the adjacent position can be determined based on the offset value of the spatial position between the current point and the adjacent position.
- the spatial position here can refer to the geometric information of the point, such as the three-dimensional coordinates (x, y, z) of the point.
- the offset value of the spatial position here can refer to the difference between the three-dimensional coordinates of the current point and the three-dimensional coordinates of the adjacent position.
- the Morton code of the adjacent position can be determined based on the Morton code of the current point and the above offset value; then, the neighboring point of the current point can be determined based on the Morton code of the adjacent position and the Morton code of the point in the first reconstructed point cloud.
- the offset value of each neighboring location relative to the current point is determined and all offset values are included in a search set.
- the Morton code of the first neighboring location in the search set is calculated. If the Morton code of this neighboring location is the same as the Morton code of the point in the point cloud, the neighboring location is not empty, indicating that a neighboring point exists. This process is repeated until k neighboring points are found.
- the Morton code of the current point is 18, the spatial position difference between an adjacent position of the current point and the current point (i.e., the offset value) is (0, 1, 0), and the spatial position difference is converted into the form of Morton code, and the offset value is 2; then, the Morton code 18 of the current point is subtracted from the offset value 2 to obtain the Morton code 16 of the adjacent position; finally, find out whether there is a point with a Morton code of 16 in the point cloud. If so, it is determined that there is a neighbor point of the current point at the adjacent position.
- related technologies use the KNN method to search for neighboring points of the current point.
- This method requires calculating the distance between the current point and all encoded points. Therefore, the time spent on filtering by the related technology is relatively long, resulting in low efficiency in encoding and decoding of attribute information.
- the embodiment of the present application determines the neighboring points for filtering based on the Morton codes of the points in the reconstructed point cloud.
- the sorting characteristics of Morton coding can make the Morton codes of points with close geometric information (such as coordinate information) adjacent. Therefore, it is only necessary to determine the Morton codes (or adjacent Morton codes) of the adjacent positions of the current point within a certain range to determine the neighboring points of the current point. This method shortens the time for searching for neighboring points and can improve the efficiency of filtering, thereby helping to improve the encoding efficiency of attribute information.
- the position information of a point may refer to the three-dimensional coordinate value of the point.
- the neighboring points of the point in the first reconstructed point cloud may be determined based on the three-dimensional coordinate value of the point in the first reconstructed point cloud.
- the three-dimensional coordinate value of the adjacent position (second adjacent position) of the current point can be determined based on the three-dimensional coordinate value of the point in the first reconstructed point cloud; then, the neighboring point of the current point can be determined based on the three-dimensional coordinate value of the adjacent position.
- the offset value of each adjacent position and the three-dimensional coordinate of the current point is determined, and the offset values of all three-dimensional coordinates are included in a search set; then, all adjacent positions of the current point in the 5 ⁇ 5 ⁇ 5 voxel are determined based on the offset values of the three-dimensional coordinates in the search set; finally, all adjacent positions are searched for neighboring points, thereby finding k neighboring points.
- the embodiment of the present application determines the neighboring points of the current point within a specific range (such as 5 ⁇ 5 ⁇ 5 voxels) based on the three-dimensional coordinate values of the points in the reconstructed point cloud.
- a specific range such as 5 ⁇ 5 ⁇ 5 voxels
- the time required for determining neighboring points based on three-dimensional coordinate values is shorter, which can improve the efficiency of filtering, thereby helping to improve the encoding efficiency of attribute information.
- filtering the reconstructed attribute values of the reconstructed point cloud requires determining at least K neighboring points. If the number of neighboring points determined in step S710 is less than K, for example, if some points at the edge of the point cloud may not have all K neighboring points, the encoding method shown in FIG7 can also determine the remaining neighboring points (or first neighboring points) based on other methods.
- the reconstructed property value of the first neighboring point may be determined based on the reconstructed property values of the neighboring points determined in step S710. For example, the reconstructed property value of the first neighboring point may be determined based on the average of the reconstructed property values of all the determined neighboring points. In another example, the reconstructed property value of one of the determined neighboring points may be determined based on the reconstructed property value of the first neighboring point.
- a filter coefficient is determined based on the reconstructed attribute values of neighboring points of the point in the first reconstructed point cloud.
- the above filter coefficients are used to filter the reconstructed attribute values of points in the point cloud.
- the attribute values here can refer to the color information of the points in the point cloud.
- the color information can be RGB information.
- the color information can be luminance and chrominance (YCbCr, YUV) information.
- the method of executing step S720 may include: determining the autocorrelation matrix and the cross-correlation matrix based on the reconstructed attribute values of the neighboring points of the points in the first reconstructed point cloud and the original attribute values of the points in the first reconstructed point cloud; then, determining the filter coefficients based on the autocorrelation matrix and the cross-correlation matrix.
- the cross-correlation matrix can be determined based on the following formula:
- b represents the cross-correlation matrix
- ci represents the original color component of the point in the first reconstructed point cloud
- the values of i include 1, 2, and 3, representing three color components.
- the autocorrelation matrix can be determined based on the following formula:
- A is the autocorrelation matrix, represents the reconstructed color component of the neighboring points, Represents the transpose of the reconstructed color components of the neighboring points
- the values of i include 1, 2, and 3, indicating three color components.
- h opt represents the filter coefficient
- A represents the autocorrelation matrix
- b represents the cross-correlation matrix
- step S730 the reconstructed attribute value of the current point is filtered according to the reconstructed attribute values and filter coefficients of the neighboring points of the current point.
- the filtered reconstructed point cloud frame After filtering the reconstructed attribute values of all points in the reconstructed point cloud frame, the filtered reconstructed point cloud frame can be used as a reference frame to perform inter-frame prediction on the attribute values of other frames (such as the frame next to the current frame in the encoding order).
- the filtered reconstructed point cloud frame has better image quality, and using it as a reference frame helps improve the prediction of point cloud attribute information, thereby helping to improve the encoding efficiency of point cloud attribute information.
- the filtering mentioned above can be any weighted sum of attribute values within a neighborhood.
- the type of filtering can be Wiener filtering.
- the order of the Wiener filter can be arbitrary, for example, the order K of the Wiener filter can be 4 or 8.
- the reconstructed attribute values of neighboring points of the current point may be used as inputs of the Wiener filter, and combined with the filter coefficients, the output of the Wiener filter may be used as the reconstructed attribute value of the current point after filtering.
- the reconstructed attribute value after filtering at the current point can be determined based on the following formula:
- a set of filter coefficients can only filter the reconstructed attribute values of one frame of reconstructed point cloud.
- a set of filter coefficients can filter the reconstructed attribute values of multiple frames of reconstructed point clouds. For example, when the attribute values of two adjacent frames of reconstructed point clouds are similar, the reconstructed attribute values of the two frames of reconstructed point clouds can be filtered based on the same set of filter coefficients. This can reduce the number of times the filter coefficients are obtained, thereby further reducing the time required for filtering.
- a frame of reconstructed point cloud can correspond to one or more filters.
- the target filter can be determined based on the difference between the reconstructed attribute value of the current point and the reconstructed attribute value of the current point.
- the multiple filters here can correspond to multiple filter coefficients.
- the multiple filters may correspond to different neighborhood difference ranges.
- the multiple filters may include a first filter and a second filter. If the neighborhood difference between the reconstructed property value of the current point and the reconstructed property value of the neighboring point is within a first range, the first filter may be selected; alternatively, if the neighborhood difference between the reconstructed property value of the current point and the reconstructed property value of the neighboring point is within a second range, the second filter may be selected.
- the codec can determine whether to filter the reconstructed point cloud frame based on predefined rules. Of course, it is also possible to determine whether to filter the reconstructed point cloud frame at the encoder, and then write the determination result into the bitstream in the form of a syntax element to guide the point cloud reconstruction at the decoder. For example, at the encoder, the PSNR of the reconstructed point cloud after filtering is compared with the PSNR of the original point cloud. If the PSNR of the reconstructed point cloud after filtering increases, it is determined that the reconstructed point cloud frame is filtered.
- first information may be written into the bitstream.
- the first information is used to indicate whether to filter the reconstructed attribute values of the reconstructed point cloud frame.
- second information may be written into the bitstream. The second information is used to indicate a filter coefficient for filtering the reconstructed attribute values.
- this example incorporates a nearest neighbor search method based on point location information into the Wiener filter process for reconstructing attribute values.
- this example calculates the offset from the target point to each position within a 5 ⁇ 5 ⁇ 5 cube centered on the target point and lists the offset in a search table.
- the search table can be determined based on the following methods:
- Method 1 The closer the area is to the current point (i.e., the center point), the denser the neighboring points may be, and the more likely it is that neighboring points with attribute values similar to the current point will appear. Therefore, in order to end the search as quickly as possible and to make the search results more accurate, when writing the offset into the search table, the order is written from the inside to the outside, that is, the current point position is written first (i.e., the first nearest neighbor found is itself), then the position offset of the first outer layer (the number is 3 ⁇ 3 ⁇ 3-1), and then the position offset of the third layer (the number is 5 ⁇ 5 ⁇ 5-3 ⁇ 3 ⁇ 3).
- Method 2 Considering that in the voxelized point cloud, the voxel blocks that are coplanar with the current voxel block are more likely to be collinear with the current block. It has a higher similarity with the current block, so the position of the voxel block coplanar with the current point is searched first.
- this example includes two ways to perform neighbor search based on the location information of the point: neighbor search based on the Morton code of the point and neighbor search based on the three-dimensional coordinate value of the point.
- Search method 1 For any target point, first calculate the Morton code of its first neighboring position using the search table. If this position is not empty, that is, a point exists, then this point is one of the target point's nearest neighbors. If this position is empty, that is, no point exists, then calculate the Morton code of the next neighboring position using the search table. Repeat this process until all K nearest neighbors are found, at which point the search stops.
- Search method 2 For any target point, first calculate the three-dimensional coordinate value of its first adjacent position according to the search table; then determine whether there is a neighboring point at the adjacent position; finally, calculate the three-dimensional coordinate values of all adjacent positions and search for neighboring points at all adjacent positions to find k neighboring points.
- step S810 a the search begins.
- step S810b the current point in the point cloud is input.
- step S820a the Morton code of the current point is determined.
- step S820b it is determined whether the current point has K neighboring points. If the current point has K neighboring points, step S830 is executed, and the search ends; otherwise, step S840 is executed.
- step S840 it is determined whether the search table has been exhausted.
- the contents of the search table are the offset values between the spatial positions of the current point and all its neighboring points. The method for calculating the offset values has been described above and will not be repeated here. If the search table has not been exhausted, step S850 is executed; otherwise, step S880 is executed.
- step S850 the Morton code of the adjacent position is determined based on the offset value of the search table.
- the method for determining the Morton code of the adjacent position has been introduced above and will not be repeated here.
- step S860 it is determined whether the adjacent position is empty. If the adjacent position is empty, the process proceeds to step S840; otherwise, it is determined that there is a neighboring point in the adjacent position, and the process proceeds to step S870.
- step S870 the neighboring points are added to the neighboring point list of the current point.
- step S880 the reconstructed attribute values of the remaining K-N neighboring points are determined based on the average of the reconstructed attribute values of the N neighboring points.
- step S890 the search ends.
- This example proposes an inter-frame Wiener filtering scheme for multi-frame point cloud attribute values.
- the predicted point cloud of the previous frame is motion compensated to obtain the reconstructed point cloud of the previous frame.
- the current point cloud can use the reconstructed point cloud of the previous frame as a reference frame for inter-frame prediction.
- the reconstructed point cloud of the first frame, processed by Wiener filtering is used to perform inter-frame prediction on the point cloud of the second frame. This is described in detail below with reference to Figures 10 and 11.
- Figure 10 shows a flow chart of inter-frame prediction at the encoding end provided by an embodiment of the present application.
- the Wiener filter coefficient is first determined based on the scheme introduced above, and the Wiener filter coefficient is applied to the reconstructed point cloud of the first frame to enhance its quality, and the quality-enhanced point cloud is overwritten with the reconstructed point cloud.
- the quality-enhanced reconstructed point cloud of the first frame is used for inter-frame prediction of the second frame, thereby obtaining the reconstructed point cloud of the second frame.
- quality enhancement is performed again based on Wiener filtering for inter-frame prediction of the next frame.
- Figure 11 shows a flow chart of inter-frame prediction at the decoding end provided by an embodiment of the present application.
- the flag indicating whether to use Wiener filtering for quality enhancement and the Wiener filter coefficient are decoded first, and then the reconstructed point cloud is obtained by decoding, and then the quality is enhanced based on the Wiener filter, and the quality-enhanced point cloud is overwritten with the original decoded point cloud.
- the quality-enhanced first frame decoded point cloud is used for the decoding process of the second frame point cloud to obtain the second frame decoded point cloud.
- quality enhancement is performed again based on the Wiener filter for use in inter-frame prediction of the next frame.
- the multi-frame point cloud attribute inter-frame Wiener filtering quality enhancement scheme proposed in this application example extends the Wiener filtering quality enhancement technology from intra-frame coding to inter-frame coding, bringing better quality enhancement effects compared to Wiener filtering under the intra-frame coding configuration.
- the Morton code-based nearest neighbor search scheme proposed in this application example replaces the KNN nearest neighbor search used in related technologies, achieving rapid search of more neighbor points and reducing encoding and decoding time.
- This application example can be used to reconstruct point clouds under the conditions of geometric lossless and attribute loss, or geometric loss and attribute loss. Line quality enhancement.
- multi-frame point cloud Wiener filtering a different set of parameters is calculated for each frame of point cloud. If the same filter coefficients are used for adjacent similar point clouds, the number of times the filter coefficients are calculated can be reduced, thereby further reducing the time required for quality enhancement using Wiener filtering.
- neighborhood differences are considered. Due to the large variations in attribute values at point cloud contours or boundaries, a single filter may not be able to cover the entire point cloud, resulting in room for improvement. Therefore, classification is performed based on neighborhood difference values, and separate filters are applied to different categories, transferring multiple filter coefficients to achieve adaptive selection of filters for better filtering results.
- FIG12 is a schematic diagram of the structure of a decoder provided by an embodiment of the present application.
- the decoder 1200 may include a first determining unit 1210 , a second determining unit 1220 , and a filtering unit 1230 .
- the first determining unit 1210 is configured to parse the code stream and determine the filter coefficient
- the second determining unit 1220 is configured to determine neighboring points of the current point based on the position information of the points in the first reconstructed point cloud;
- the filtering unit 1230 is configured to filter the reconstructed property value of the current point according to the reconstructed property values of the neighboring points of the current point and the filtering coefficient.
- the decoder 1200 further includes a third determination unit configured to filter the reconstructed attribute values of the reconstructed point cloud of the first frame to determine the second reconstructed point cloud; and perform inter-frame prediction on the point cloud of the second frame based on the second reconstructed point cloud to determine the first reconstructed point cloud.
- the second frame is the next frame after the first frame in decoding order.
- the second determining unit 1220 is further configured to determine neighboring points of the current point based on the Morton codes of the points in the first reconstructed point cloud.
- the Morton code of the neighboring point of the current point is determined based on the Morton code of the first neighboring position of the current point.
- the Morton code of the first neighboring position is determined based on an offset value of a spatial position between the current point and the first neighboring position.
- the second determination unit 1220 is further configured to determine the Morton code of the first adjacent position based on the Morton code of the current point and the offset value; and determine the neighboring points of the current point based on the Morton code of the first adjacent position and the Morton code of the point in the first reconstructed point cloud.
- the second determining unit 1220 is further configured to determine neighboring points of the current point based on the three-dimensional coordinate values of the points in the first reconstructed point cloud.
- the second determination unit 1220 is further configured to determine the three-dimensional coordinate value of the second adjacent position of the current point based on the three-dimensional coordinate value of the point in the first reconstructed point cloud; and determine the neighboring point of the current point based on the three-dimensional coordinate value of the second adjacent position.
- the decoder 1200 further includes a fourth determining unit configured to determine the reconstructed property value of the first neighboring point according to the reconstructed property value of the neighboring point of the current point.
- the reconstructed property value of the first neighboring point is determined based on an average value of the reconstructed property values of the neighboring points of the current point.
- the first reconstructed point cloud corresponds to a plurality of filters
- the filter coefficients correspond to target filters
- the target filters are determined based on a difference between a reconstructed attribute value of a neighboring point of the current point and the reconstructed attribute value of the current point.
- the neighboring points of the current point belong to N ⁇ N ⁇ N voxels, where N is an integer greater than 3.
- N is 5.
- the filtering is Wiener filtering.
- the order of the Wiener filter is 4 or 8.
- the decoder 1200 further includes a fifth determination unit configured to parse the code stream and determine first information, wherein the first information is used to indicate whether to filter the reconstructed attribute value of the first reconstructed point cloud; and/or parse the code stream and determine second information, wherein the second information is used to indicate the filter coefficient.
- a fifth determination unit configured to parse the code stream and determine first information, wherein the first information is used to indicate whether to filter the reconstructed attribute value of the first reconstructed point cloud; and/or parse the code stream and determine second information, wherein the second information is used to indicate the filter coefficient.
- 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.
- 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.
- the integrated unit is implemented in the form of a software function module and is not sold or used as an independent product, it can be stored in a computer-readable storage medium.
- the technical solution of this embodiment is essentially 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 storage A storage medium includes instructions for causing a computer device (which may be a personal computer, server, or network device) 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 capable of storing program code, such as a USB flash drive, a mobile hard drive, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.
- an embodiment of the present application provides a computer-readable storage medium, which is applied to the decoder 1200.
- 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.
- the encoder 1300 may include: a communication interface 1310, a memory 1320 and a processor 1330; each component is coupled together through a bus system 1340. It can be understood that the bus system 1340 is used to realize the connection and communication between these components.
- the bus system 1340 also includes a power bus, a control bus and a status signal bus.
- various buses are labeled as bus system 1340 in Figure 13. Among them,
- the communication interface 1310 is used to receive and send signals when sending and receiving information with other external network elements
- Memory 1320 for storing computer programs
- the processor 1330 is configured to, when running the computer program, execute:
- the reconstructed property value of the current point is filtered according to the reconstructed property value of the neighboring point of the current point and the filter coefficient.
- the memory 1320 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.
- 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.
- RAM static RAM
- DRAM dynamic RAM
- SDRAM synchronous DRAM
- DDR SDRAM double data rate SDRAM
- ESDRAM enhanced SDRAM
- SLDRAM synchlink DRAM
- DRRAM direct RAM bus RAM
- the processor 1330 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above method can be completed by hardware integrated logic circuits or software instructions in the processor 1330.
- the above-mentioned processor 1330 can 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 devices, discrete gate or transistor logic devices, or discrete hardware components.
- DSP digital signal processor
- ASIC application-specific integrated circuit
- FPGA field programmable gate array
- the various methods, steps, and logic block diagrams disclosed in the embodiments of this application can be implemented or executed.
- the general-purpose processor can be a microprocessor or any conventional processor.
- the steps of the method 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 in the decoding processor.
- the software module can be located in a storage medium mature 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 1320 , and the processor 1330 reads the information in the memory 1320 and completes the steps of the above method in combination with its hardware.
- the embodiments described in this application can be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof.
- 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 in this application, or a combination thereof.
- ASICs application specific integrated circuits
- DSPs digital signal processors
- DSPDs digital signal processing devices
- PLDs programmable logic devices
- FPGAs field programmable gate arrays
- the technology described in this application can be implemented by modules (such as processes, functions, etc.) that perform the functions described in this application.
- 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.
- the processor 1330 is further configured to execute the decoding method described in any one of the aforementioned embodiments when running the computer program.
- FIG14 is a schematic diagram of the structure of an encoder provided by an embodiment of the present application.
- the encoder 1400 includes a first determining unit 1410 , a second determining unit 1420 , and a filtering unit 1430 .
- a first determining unit 1410 is configured to determine neighboring points of a point in the first reconstructed point cloud based on position information of the point in the first reconstructed point cloud;
- a second determining unit 1420 is configured to determine a filter coefficient according to the reconstructed attribute values of neighboring points of the point in the first reconstructed point cloud;
- the filtering unit 1430 is configured to filter the reconstructed property value of the current point according to the reconstructed property values of the neighboring points of the current point and the filtering coefficient.
- the encoder 1400 further includes a third determination unit configured to filter the reconstructed attribute values of the reconstructed point cloud of the first frame to determine a second reconstructed point cloud; and perform inter-frame prediction on the point cloud of the second frame based on the second reconstructed point cloud to determine the first reconstructed point cloud.
- a third determination unit configured to filter the reconstructed attribute values of the reconstructed point cloud of the first frame to determine a second reconstructed point cloud; and perform inter-frame prediction on the point cloud of the second frame based on the second reconstructed point cloud to determine the first reconstructed point cloud.
- the second frame is a next frame to the first frame.
- the first determining unit 1410 is further configured to determine neighboring points of a point in the first reconstructed point cloud according to a Morton code of the point in the first reconstructed point cloud.
- the Morton code of the neighboring point of the current point is determined based on the Morton code of the first neighboring position of the current point.
- the Morton code of the first neighboring position is determined based on an offset value of a spatial position between the current point and the first neighboring position.
- the first determination unit 1410 is further configured to determine the Morton code of the first adjacent position based on the Morton code of the current point and the offset value; and determine the neighboring points of the current point based on the Morton code of the first adjacent position and the Morton code of the point in the first reconstructed point cloud.
- the first determining unit 1410 is further configured to determine neighboring points of a point in the first reconstructed point cloud according to the three-dimensional coordinate values of the point in the first reconstructed point cloud.
- the first determination unit 1410 is further configured to determine the three-dimensional coordinate value of the second adjacent position of the current point based on the three-dimensional coordinate value of the point in the first reconstructed point cloud; and determine the neighboring point of the current point based on the three-dimensional coordinate value of the second adjacent position.
- the second determination unit 1420 is further configured to determine an autocorrelation matrix and a cross-correlation matrix based on the reconstructed attribute values of the neighboring points of the points in the first reconstructed point cloud and the original attribute values of the points in the first reconstructed point cloud; and determine the filter coefficients based on the autocorrelation matrix and the cross-correlation matrix.
- the current point further includes a first neighboring point
- the encoder 1400 further includes a fourth determination unit configured to determine the reconstructed property value of the first neighboring point based on the reconstructed property value of the neighboring point of the current point.
- the reconstructed property value of the first neighboring point is determined based on an average value of the reconstructed property values of the neighboring points of the current point.
- the first reconstructed point cloud corresponds to a plurality of filters
- the filter coefficients correspond to target filters
- the target filters are determined based on a difference between a reconstructed attribute value of a neighboring point of the current point and the reconstructed attribute value of the current point.
- the neighboring points of the current point belong to N ⁇ N ⁇ N voxels, where N is an integer greater than 3.
- N is 5.
- the filtering is Wiener filtering.
- the order of the Wiener filter is 4 or 8.
- the encoder 1400 further includes a fourth determination unit configured to write first information into a bitstream, wherein the first information is used to indicate whether to filter the reconstructed attribute value of the first reconstructed point cloud; and/or write second information into the bitstream, wherein the second information is used to indicate the filter coefficient.
- 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.
- 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.
- 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.
- 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.
- an embodiment of the present application provides a computer-readable storage medium, which is applied to the encoder 1400.
- 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.
- the encoder 1500 may include: a communication interface 1510, a memory 1520 and a processor 1530; each component is coupled together through a bus system 1540. It can be understood that the bus system 1540 is used to realize the connection and communication between these components.
- the bus system 1540 also includes a power bus, a control bus and a status signal bus.
- various buses are labeled as bus system 1540 in Figure 15. Among them,
- Communication interface 1510 used for sending and receiving signals when sending and receiving information with other external network elements
- Memory 1520 for storing computer programs
- the processor 1530 is configured to, when running the computer program, execute:
- the reconstructed attribute value of the current point is filtered according to the reconstructed attribute value of the neighboring point of the current point and the filter coefficient.
- the memory 1520 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.
- many forms of RAM are available, such as SRAM, DRAM, SDRAM, DDRSDRAM, ESDRAM, SLDRAM, and DRRAM.
- the memory 1520 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
- Processor 1530 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above method may be performed by hardware integrated logic circuits within processor 1530 or by software instructions.
- Processor 1530 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 may 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 may 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 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, or registers.
- This storage medium is located in memory 1520.
- Processor 1530 reads information from memory 1520 and, in conjunction with its hardware, completes the steps of the above method.
- the embodiments described herein can be implemented with hardware, software, firmware, middleware, microcode, or a combination thereof.
- 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.
- 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.
- the processor 1530 is further configured to execute the encoding method described in any one of the aforementioned embodiments when running the computer program.
- 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.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请实施例提供了一种点云编解码方法、编解码器、码流以及存储介质。所述点云解码方法包括:解析码流,确定滤波系数;根据第一重建点云中的点的位置信息,确定当前点的近邻点;根据所述当前点的近邻点的重建属性值和所述滤波系数,对所述当前点的重建属性值进行滤波。
Description
本申请涉及点云编解码技术领域,尤其涉及一种点云编解码方法、编解码器、码流以及存储介质。
在基于几何的点云压缩(geometry-based point cloud compression,G-PCC)编解码框架中,点云的几何信息和属性信息是分开进行编解码的。如何提高属性信息的编解码性能,是需要解决的问题。
发明内容
本申请实施例提供一种点云编解码方法、编解码器、码流以及存储介质。下面对本申请涉及的各个方面进行介绍。
第一方面,提供一种点云解码方法,应用于解码器,包括:解析码流,确定滤波系数;根据第一重建点云中的点的位置信息,确定当前点的近邻点;根据当前点的近邻点的重建属性值和滤波系数,对当前点的重建属性值进行滤波。
第二方面,提供一种点云编码方法,应用于编码器,包括:根据第一重建点云中的点的位置信息,确定第一重建点云中的点的近邻点;根据第一重建点云中的点的近邻点的重建属性值,确定滤波系数;根据当前点的近邻点的重建属性值和滤波系数,对当前点的重建属性值进行滤波。
第三方面,提供一种解码器,包括:第一确定单元,配置为解析码流,确定滤波系数;第二确定单元,配置为根据第一重建点云中的点的位置信息,确定当前点的近邻点;滤波单元,配置为根据当前点的近邻点的重建属性值和滤波系数,对当前点的重建属性值进行滤波。
第四方面,提供一种解码器,解码器包括:存储器,用于存储计算机程序;处理器,用于在运行计算机程序时,执行如第一方面的方法。
第五方面,提供一种编码器,包括:第一确定单元,配置为根据第一重建点云中的点的位置信息,确定第一重建点云中的点的近邻点;第二确定单元,配置为根据第一重建点云中的点的近邻点的重建属性值,确定滤波系数;滤波单元,配置为根据当前点的近邻点的重建属性值和滤波系数,对当前点的重建属性值进行滤波。
第六方面,提供一种编码器,编码器包括:存储器,用于存储计算机程序;处理器,用于在运行计算机程序时,执行如第二方面的方法。
第七方面,提供一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机程序,计算机程序被执行时实现如第一方面或第二方面的方法。
第八方面,提供一种存储比特流的非易失性计算机可读存储介质,比特流通过利用编码器的编码方法而生成,或者,比特流通过利用解码器的解码方法而解码,其中,解码方法为如第一方面的方法、编码方法为如第二方面的方法。
第九方面,提供一种码流,包括根据第二方面的方法生成的码流。
点云在重建之后,可以对重建属性信息进行滤波以提高重建点云的质量。本申请实施例基于重建点云中的点的位置信息(如莫顿码或三维坐标值),确定用于滤波的近邻点,能够提高滤波的效率,进而有助于提高属性信息的编解码效率。
图1为一种点云编解码的网络架构示意图。
图2A为一种G-PCC编码器的组成框架示意图。
图2B为一种G-PCC解码器的组成框架示意图。
图3为一种当前点的相邻位置的示意图。
图4为一种当前点的近邻点的示意图。
图5为重建点云帧进行维纳滤波的流程示意图。
图6为本申请实施例提供的解码方法的流程示意图。
图7为本申请实施例提供的编码方法的流程示意图。
图8为本申请实施例提供的基于莫顿码确定近邻点的流程示意图。
图9为重建点云帧进行帧间预测的流程示意图。
图10为本申请实施例提供的编码端基于滤波后的重建点云帧进行帧间预测的流程示意图。
图11为本申请实施例提供的解码端基于滤波后的重建点云帧进行帧间预测的流程示意图。
图12为本申请一实施例提供的解码器的结构示意图。
图13为本申请另一实施例提供的解码器的结构示意图。
图14为本申请一实施例提供的编码器的结构示意图。
图15为本申请另一实施例提供的编码器的结构示意图。
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实现方式”,其描述了所有可能实施例的子集,但是可以理解,“一些实现方式”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
还需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
点云是空间中一组无规则分布的、表达三维物体或场景的空间结构及表面属性的离散点集,这些点包含了用于表示空间位置的几何信息和用于表示点云外观纹理的属性信息。
二维图像在每一个像素点均有信息表达,分布规则,因此不需要额外记录其位置信息;然而点云中的点在三维空间中的分布具有随机性和不规则性,因此需要记录每一个点在空间中的位置,才能完整地表达一幅点云。与二维图像类似,采集过程中每一个位置均有对应的属性信息,通常为RGB颜色值,颜色值反映物体的色彩;对于点云来说,每一个点所对应的属性信息除了颜色信息以外,还有比较常见的是反射率(reflectance)值,反射率值反映物体的表面材质。因此,点云数据通常包括点的位置信息和点的属性信息。其中,点的位置信息也可称为点的几何信息。例如,点的几何信息可以是点的三维坐标值(x,y,z)。点的属性信息可以包括颜色信息和/或反射率等等。例如,反射率可以是一维反射率信息(r);颜色信息可以是任意一种色彩空间上的信息,或者颜色信息也可以是三维颜色信息,如RGB信息。在这里,R表示红色(red,R),G表示绿色(green,G),B表示蓝色(blue,B)。再如,颜色信息可以是亮度色度(YCbCr,YUV)信息。其中,Y表示明亮度(luma),Cb(U)表示蓝色色差,Cr(V)表示红色色差。
根据激光测量原理得到的点云,点云中的点可以包括点的三维坐标值和点的反射率值。再如,根据摄影测量原理得到的点云,点云中的点可以可包括点的三维坐标值和点的三维颜色信息。再如,结合激光测量和摄影测量原理得到点云,点云中的点可以可包括点的三维坐标值、点的反射率值和点的三维颜色信息。
目前,可对点云进行压缩的点云编码框架可以是运动图像专家组(moving picture experts group,MPEG)提供的G-PCC编解码框架或基于视频的点云压缩(video-based point cloud compression,V-PCC)编解码框架,也可以是AVS提供的AVS-PCC编解码框架或基于几何的稠密点云测试模型(geometry-based solid content test model,GES-TM)。G-PCC编解码框架可用于针对第一类静态点云和第三类动态获取点云进行压缩,其可以是基于点云压缩测试平台(test model compression 13,TMC13),V-PCC编解码框架可用于针对第二类动态点云进行压缩,其可以是基于点云压缩测试平台(test model compression2,TMC2)。故G-PCC编解码框架也称为点云编解码器TMC13,V-PCC编解码框架也称为点云编解码器TMC2。GES-TM是针对稠密点云(如在增强现实(augmented reality,AR)或虚拟现实(virtual reality,VR)场景采集到的点云)而提出的编解码框架。
本申请实施例提供了一种包含解码方法和编码方法的点云编解码系统的网络架构,图1为本申请实施例提供的一种点云编解码的网络架构示意图。如图1所示,该网络架构包括一个或多个电子设备13至1N和通信网络01,其中,电子设备13至1N可以通过通信网络01进行视频交互。电子设备在实施的过程中可以为各种类型的具有点云编解码功能的设备,例如,所述电子设备可以包括手机、平板电脑、个人计算机、个人数字助理、导航仪、数字电话、视频电话、电视机、传感设备、服务器等,本申请实施例不作限制。其中,本申请实施例中的解码器或编码器就可以为上述电子设备。
其中,本申请实施例中的电子设备具有点云编解码功能,一般包括点云编码器(即编码器)和点云解码器(即解码器)。
下面以G-PCC编解码框架和AVS编解码框架为例进行相关技术的说明。
可以理解,在点云G-PCC编解码框架中,针对待编码的点云数据,首先通过片(slice,也称为条
带)划分,将点云数据划分为多个slice。在每一个slice中,点云的几何信息和每个点所对应的属性信息是分开进行编码的。
图2A示出了一种G-PCC编码器的组成框架示意图。如图2A所示,在几何编码过程中,对几何信息进行坐标转换,使点云全都包含在一个包围盒(bounding box)中,然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点云的几何信息相同,于是再基于参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。接着对包围盒进行八叉树划分或者预测树构建。在该过程中,针对划分的叶子结点中的点进行算术编码,生成二进制的几何比特流;或者,针对划分产生的交点(vertex)进行算术编码(基于交点进行表面拟合),生成二进制的几何比特流。在属性编码过程中,几何编码完成,对几何信息进行重建后,需要先进行颜色转换,将颜色信息(即属性信息)从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色,使得未编码的属性信息与重建的几何信息对应起来。属性编码主要针对颜色信息进行,在颜色信息编码过程中,主要有三种变换方法,前两种方法依赖于细节层次(level of detail,LOD)划分,分别是基于距离的提升变换和预测变换,第三种方法是直接进行RAHT,这三种方法都会将颜色信息从空间域转换到频域,通过变换得到高频系数和低频系数,最后对系数进行量化,再对量化系数进行算术编码,可以生成二进制的属性比特流。
图2B示出了一种G-PCC解码器的组成框架示意图。如图2B所示,针对所获取的二进制比特流,首先对二进制比特流中的几何比特流和属性比特流分别进行独立解码。在对几何比特流的解码时,通过算术解码-重构八叉树/重构预测树-重建几何-坐标逆转换,得到点云的几何信息;在对属性比特流的解码时,通过算术解码-反量化-LOD划分/RAHT-颜色逆转换,得到点云的属性信息,基于几何信息和属性信息还原待编码的点云数据(即输出点云)。
需要说明的是,在如图2A或图2B所示,目前G-PCC的几何编解码可以分为基于八叉树的几何编解码(用虚线框标识)和基于预测树的几何编解码(用点划线框标识)。
对于基于八叉树的几何编码(octree geometry encoding,OctGeomEnc)而言,基于八叉树的几何编码包括:首先对几何信息进行坐标转换,使点云全都包含在一个包围盒中。然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点的几何信息相同,根据参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化过程。接下来,按照广度优先遍历的顺序不断对包围盒进行树划分(例如八叉树、四叉树、二叉树等),对每个节点的占位码进行编码。在相关技术中,提出了一种隐式几何的划分方式,首先计算点云的包围盒假设dx>dy>dz,该包围盒对应为一个长方体。在几何划分时,首先会基于x轴一直进行二叉树划分,得到两个子节点;直到满足dx=dy>dz条件时,才会基于x和y轴一直进行四叉树划分,得到四个子节点;当最终满足dx=dy=dz条件时,会一直进行八叉树划分,直到划分得到的叶子结点为1×1×1的单位立方体时停止划分,对叶子结点中的点进行编码,生成二进制码流。在基于二叉树/四叉树/八叉树划分的过程中,引入两个参数:K、M。参数K指示在进行八叉树划分之前二叉树/四叉树划分的最多次数;参数M用来指示在进行二叉树/四叉树划分时对应的最小块边长为2M。同时K和M必须满足条件:假设dmax=max(dx,dy,dz),dmin=min(dx,dy,dz),参数K满足:K≥dmax-dmin;参数M满足:M≥dmin。参数K与M之所以满足上述的条件,是因为目前G-PCC在几何隐式划分的过程中,划分方式的优先级为二叉树、四叉树和八叉树,当节点块大小不满足二叉树/四叉树的条件时,才会对节点一直进行八叉树的划分,直到划分到叶子节点最小单位1×1×1。基于八叉树的几何信息编码模式可以通过利用空间中近邻点之间的相关性来对点云的几何信息进行有效的编码。
目前G-PCC编码框架包含两种属性编码方法:预测变换(predicting transform,PT)、提升变换(lifting transform,LT)。这两种方法以细节层次(Level-of-details,LOD)的生成顺序为依据对点云预测编码。在构造LOD之前,首先对点云中的点进行莫顿(Morton)排序,来保证近邻点之间具有较强的属性相关性。然后,基于最近邻属性预测编码的方式对点云中的点的属性值进行加权预测。下面介绍一种基于点云中的点的莫顿码寻找近邻点的方案。
在G-PCC的编解码框架中,如果采用莫顿码的顺序对点云中的点进行排序,那么在点云比较密集的情况下,通常每个点都能在以它为中心的大小为3×3×3的立方体中找到相邻的点。如图3所示,在体素级,一个点就是一个体素(一个单位立方体),点在体素内的位置被量化到体素中心。将图3中粗虚线表示的体素设为当前点,则可以利用点的空间关系使用其莫顿码来计算近邻点的莫顿码。示例性地,如图4所示,假设当前点与近邻点2之间的空间位置差为(0,1,0),该空间位置差也即是当前点与近邻点之间的空间位置的偏移量。如果采用莫顿码的方式来表示空间位置差(0,1,0),则当前点与近邻点2之间的偏移量可以表示为2。
定义莫顿码减法公式为:
MortonSub(a,b)=((a&m)-(b&m)&m)|
((a&m<<1)-(b&m<<1)&m<<1)|((a&m<<2)-(b&m<<2)&m<<2) (1)
MortonSub(a,b)=((a&m)-(b&m)&m)|
((a&m<<1)-(b&m<<1)&m<<1)|((a&m<<2)-(b&m<<2)&m<<2) (1)
其中,MortonSub(a,b)为a减去b的函数,m为常数0x9249249249249,a为当前点的莫顿码,b为偏移量。
接着,从当前点的莫顿码中减去偏移量,即可得到近邻点2的莫顿码。
需了解是,上述基于莫顿码寻找近邻点的方案的应用场景是预测变换和提升变换编码模式。在这两种编码模式中,只有经过编码的点才能用于预测当前点,所以可用点的莫顿码必须小于当前点。此外,为了简化计算,相关技术中选择了XYZ三个方向的坐标值都比当前点小的相邻的点用于预测编码。
在编解码端对点云进行重建之后,G-PCC编解码框架只会对点云序列进行基础性的重建。对于属性有损编码方式,并未采取相应的后处理操作来进一步提升重建点云颜色属性的质量。这样可能会使得重建点云和原始点云相差比较大,失真较严重,会影响到整个点云的质量。因此,相关技术提出对重建点云的属性信息进行滤波以增强重建点云的图像质量。
示例性地,以对重建点云的属性信息进行维纳滤波为例,如图5所示,在编码端,以原始点云与重建点云作为输入,维纳滤波器的阶数为K,则每个点的邻域即为该点的K近邻;然后,利用维纳滤波原理,对于颜色属性每一通道(如Y、U和V)计算该维纳滤波器的最优滤波系数,并利用该滤波系数对重建点云进行滤波得到质量增强的点云。下面介绍滤波过程中滤波系数的计算方式及滤波原理。
假设维纳滤波器的阶数为K,点云中的点个数为n,则原始点云可以表示为(p1,p2,p3,c1,c2,c3)∈Rn×6。原始点云的几何位置和颜色属性分别由前三个列向量{p1,p2,p3}和后三个列向量{c1,c2,c3}表示。在该方法中,当前点的颜色由自身和其k-1个近邻点来更新。这些近邻点可以通过K-最近邻搜索(K-nearest neighbors,KNN)搜索得到。使用矩阵表示重构点云P的所有n个点的k个近邻点的颜色分量维纳滤波器的最优系数是一个向量h∈Rk×1。将h应用于重构点云的颜色分量,即ci,i∈{1,2,3},可以得到滤波后的颜色属性
可以基于如下公式确定:
根据原始点云的颜色属性和滤波后的颜色属性可以得到误差y∈Rn×1:
维纳滤波器的目的是找到一组最优的系数hopt,以最小化目标函数E(y2)∶
其中E(·)表示对向量元素的求取平均(期望的近似值)操作。为了计算hopt,将目标函数E(y2)对h的导数设为0,即:
也即是:
然后令互相关向量自相关矩阵可得:
b-A×h=0 (7)
b-A×h=0 (7)
由此可得hopt:
hopt=A-1×b (8)
hopt=A-1×b (8)
在得到最优滤波系数之后,计算每一通道重建点云以及滤波后的重建点云相对于原始点云的峰值信噪比(peak signal-to-noise ratio,PSNR)。如果滤波后的重建点云的PSNR有所增加,即认为维纳滤波使得该颜色分量质量提升,此时将判定数组和滤波系数写入码流。在解码端,首先解码出判定数组,确定需要滤波的通道;然后,继续解码出滤波器的滤波系数,并利用该滤波系数对重建点云滤波,并将得到的值覆盖重建点云的值,得到质量提升的点云。该方案影响点云编码框架中的算术编码及以后的部分,以及解码框架中的属性重建之后的部分。
上文介绍了相关技术通过对重建点云的属性信息进行维纳滤波以增强重建点云的图像质量。然而,相关技术中的维纳滤波方案仍然存在一些问题需要解决。
例如,相关技术的滤波方案使用的最近邻搜索方法搜索k个近邻点的效率较低,例如KNN近邻搜索需要计算当前点与所有已编码点的距离,导致编解码时间大幅增长,从而降低了点云的编解码效率。
又如,相关技术仅对重建点云一帧内的属性信息进行维纳滤波,但是并没有将滤波后的重建点云帧用于其他帧的点云重建。示例性地,相关技术的滤波方案仅在G-PCC TMC13参考软件应用,并没有应用在GES-TM参考软件上。GES-TM参考软件为专门用于多帧动态稠密点云帧间预测编码的参考软件,也就是说,在相关技术中,滤波后的重建点云帧并没有用于其他帧的帧间预测。滤波后的重建点云帧的
图像质量更好,如果能应用到帧间预测中,将进一步提升点云的图像质量。
针对上述问题,本申请实施例提供一种编码方法,包括:根据第一重建点云中的点的位置信息,确定所述第一重建点云中的点的近邻点;根据所述第一重建点云中的点的近邻点的重建属性值,确定滤波系数;根据当前点的近邻点的重建属性值和所述滤波系数,对所述当前点的重建属性值进行滤波。
本申请实施例还提供一种解码方法,包括:解析码流,确定滤波系数;根据第一重建点云中的点的位置信息,确定当前点的近邻点;根据所述当前点的近邻点的重建属性值和所述滤波系数,对所述当前点的重建属性值进行滤波。
本申请实施例基于重建点云中的点的位置信息(如莫顿码或三维坐标值),确定用于滤波的近邻点,能够提高滤波的效率,进而有助于提高属性信息的编解码效率。
下文将结合附图对本申请实施例提供的解码方法进行详细说明。
图6为本申请实施例提供的解码方法的流程示意图。图6的解码方法可应用于解码器。图6的解码方法可用于对点云的属性信息进行解码。在一些实现方式中,该解码方法可应用于G-PCC。或者,在另一些实现方式中,该解码方法可应用于基于几何的稠密点云测试模型(geometry-based solid content test model,GES-TM)。GES-TM是针对稠密点云(如在增强现实(augmented reality,AR)或虚拟现实(virtual reality,VR)场景采集到的点云)而提出的编解码框架。
参见图6,在步骤S610,解析码流,确定滤波系数。
上述滤波系数用于对点云中的点的重建属性值进行滤波。这里的属性值可以指的是点云中的点的颜色信息。例如,颜色信息可以是RGB信息。又如,颜色信息可以是亮度色度(YCbCr,YUV)信息。
在步骤S620,根据第一重建点云中的点的位置信息,确定当前点的近邻点。
在一些实现方式中,可以在以当前点为中心的N×N×N的体素中确定近邻点。这里的N可以是任意大于或者等于1的整数。例如,N可以是5,或者,N也可以是3。
确定近邻点时可以按照一定的顺序在N×N×N的体素中进行搜索。例如,可以将N×N×N的体素分成多个层级范围,并基于层级范围搜索当前点的近邻点。示例性地,以当前点为中心的5×5×5的体素为例,将以当前点为中心3×3×3的体素设为第一层级范围,将5×5×5-3×3×3的体素设为第二层级范围;然后,搜索时可以先搜索第一层级范围内的近邻点,在第一层级范围内的近邻点不足的情况下再搜索第二层级范围内的近邻点。由于越靠近当前点(即中心点)的区域,近邻点可能越密集,也越可能出现与当前点属性值相似的近邻点,因此基于层级范围搜索近邻点有助于提高搜索效率。
又如,在N×N×N的体素中搜索近邻点时,可以先搜索与当前体素块(即当前点)共面的体素块,然后再搜索与当前块共线的体素块。由于与当前体素块共面的体素块与当前体素块有更高的相似度,因此搜索到近邻点的概率更大,从而有助于提高搜索效率。
本申请实施例对当前点的近邻点的数量不作具体限定。近邻点的数量可以对应滤波器的阶数K。示例性地,如果维纳滤波器的阶数K为4,则需要确定当前点的至少4个近邻点;或者,如果维纳滤波器的阶数K为8,则需要确定当前点的至少8个近邻点。
点的位置信息可以指的是表示点的三维坐标的相关信息。例如,点的位置信息可以是点的莫顿码。又如,点的位置信息还可以是点的三维坐标值。
在一些实现方式中,可以根据第一重建点云中的点的莫顿码,确定当前点的近邻点。示例性地,这里的莫顿码可以指的是点云在划分LOD层的过程中确定的莫顿码。
在步骤S620中要确定当前点的近邻点,可以先确定近邻点的莫顿码。在一些实现方式中,当前点的近邻点的莫顿码可以基于当前点的相邻位置的莫顿码确定。例如,可以将第一相邻位置的莫顿码与点云中的点的莫顿码进行比较;如果一个点的莫顿码与第一相邻位置的莫顿码相同,那么这个点即为当前点的近邻点,或者说,这个点的莫顿码即为该近邻点的莫顿码。
在一些实现方式中,可以根据当前点与相邻位置之间的空间位置的偏移值确定相邻位置的莫顿码。这里的空间位置可以指的是点的几何信息,例如点的三维坐标值(x,y,z)。相应地,这里的空间位置的偏移值可以指的是当前点的三维坐标值与相邻位置的三维坐标之间的差值。
例如,可以根据当前点的莫顿码和上述偏移值,确定相邻位置的莫顿码;然后,根据相邻位置的莫顿码和第一重建点云中的点的莫顿码,确定当前点的近邻点。
示例性地,在以当前点为中心的大小为5×5×5的体素中确定每一个相邻位置与当前点的偏移值,并将所有的偏移值列入一个搜索集合中。然后,依据搜索集合先计算出它的第一个相邻位置的莫顿码;如果这个相邻位置的莫顿码与点云中的点的莫顿码相同,则表示该相邻位置非空,即有近邻点存在。
示例性地,如图3所示,假设当前点的莫顿码为18,当前点的一个相邻位置与当前点的空间位置差(即偏移值)为(0,1,0),将该空间位置差转换成莫顿码的形式,可得到偏移值为2;然后,将当前点的莫顿码18减去偏移值2即可得到相邻位置的莫顿码16;最后,在点云中寻找是否存在莫顿码为16
的点,如果存在,则确定该相邻位置存在当前点的近邻点。
在前文的描述中,相关技术例如采用KNN的方式搜索当前点的近邻点,这种方式需要计算当前点与所有已编码点之间距离,因此相关技术进行滤波所花费的时间较长,从而导致属性信息的编解码的效率较低。本申请实施例基于重建点云中的点的莫顿码,确定用于滤波的近邻点。莫顿编码的排序特性可以将几何信息(如三维坐标值)接近的点的莫顿码相邻,因此,只需要确定以当前点为中心的特定范围内的相邻位置的莫顿码(或称相邻莫顿码)就可以确定当前点的近邻点。这种方式缩短了搜索近邻点的时间,能够提高滤波的效率,从而有助于提高属性信息的解码效率。
上文提到,点的位置信息可以指的是点的三维坐标值。在一些实现方式中,可以根据第一重建点云中的点的三维坐标值,确定当前点的近邻点。
例如,可以根据第一重建点云中的点的三维坐标值,确定当前点的相邻位置(第二相邻位置)的三维坐标值;然后,根据相邻位置的三维坐标值,确定当前点的近邻点。
示例性地,在以当前点为中心的大小为5×5×5的体素中,确定每一个相邻位置与当前点的三维坐标的偏移值,并将所有的三维坐标的偏移值列入一个搜索集合中;然后,依据搜索集合中的三维坐标的偏移值确定当前点在5×5×5的体素中所有相邻位置;最后,在所有的相邻位置上搜索是否有近邻点,从而找到k个近邻点。
本申请实施例基于重建点云中的点的三维坐标值,在特定的范围内(如5×5×5的体素中)确定当前点的近邻点,相较于相关技术基于KNN确定近邻点,基于三维坐标值确定近邻点所需的时间更短,能够提高滤波的效率,从而有助于提高属性信息的编解码效率。
如上文中的介绍,对重建点云的重建属性值进行滤波需要确定至少K个近邻点。如果基于步骤S620确定的近邻点的数量少于K,例如点云中部分边缘位置的点可能找不齐K个近邻点,那么图6所示的解码方法还可以基于其他的方式确定剩余的近邻点(或称第一近邻点)。
在一些实现方式中,可以根据步骤S620中确定的近邻点的重建属性值,确定第一近邻点的重建属性值。例如,可以根据已确定的所有近邻点的重建属性值的平均值作为第一近邻点的重建属性值。又如,可以将已确定的一个近邻点的重建属性值作为第一近邻点的重建属性值。
在步骤S630,根据当前点的近邻点的重建属性值和滤波系数,对当前点的重建属性值进行滤波。
在重建点云帧中的所有点的重建属性值完成邻域之后,可以将滤波处理的重建点云帧作为参考帧,以对其他帧(如当前帧在解码顺序中的下一帧)的属性值进行帧间预测。滤波处理的重建点云帧的图像质量更好,将其作为参考帧有助于提高点云的属性信息的预测效果,进而有助于提高点云的属性信息的解码效率。
上文提及的滤波可以是任意的对邻域内属性值的加权求和。在一些实现方式中,滤波的类型可以是维纳滤波。维纳滤波器的阶数可以是任意的,例如,维纳滤波器的阶数K为4或者8。
示例性地,可以将当前点的近邻点的重建属性值作为维纳滤波器的输入,结合滤波系数,将维纳滤波器的输出作为当前点滤波后的重建属性值。
示例性地,当前点滤波后的重建属性值可以基于以下公式确定:
其中,表示当前点滤波后的重建属性值;表示当前点的k个近邻点的重建属性值;hopt表示维纳滤波器对应的滤波系数。
需理解的是,本申请实施例对滤波系数的应用范围并不作具体限定。例如,从码流中解析出来的一组滤波系数可以仅对一帧重建点云的重建属性值进行滤波处理。或者,在一些实现方式中,一组滤波系数可以对多帧的重建点云的重建属性值进行滤波处理。例如,在相邻的两帧重建点云的属性值相似的情况下,可以基于同一组滤波系数对这两帧重建点云的重建属性值进行滤波处理。这样可以减少获取滤波器系数的次数,进而进一步减少滤波所需的时间。
一帧重建点云可以对应一个或者多个滤波器。例如,如果一帧重建点云对应多个滤波器时,那么可以基于当前点的近邻点的重建属性值和当前点的重建属性值之间的差异确定目标滤波器。这里的多个滤波器可以对应多个滤波系数。
示例性地,多个滤波器可以对应不同的邻域差异范围。例如,多个滤波器可以包括第一滤波器和第二滤波器。如果当前点的重建属性值与近邻点的重建属性值之间的邻域差异在第一范围内,则可以选择第一滤波器;或者,如果当前点的重建属性值与近邻点的重建属性值之间的邻域差异在第二范围内,则可以选择第二滤波器。
在点云重建过程中,可以基于预定义的规则默认编解码端的是否对重建点云帧的重建属性值进行滤波。当然,还可以在编码端确定是否对重建点云帧的重建属性值进行滤波,然后将确定的结果以语法元素的形式写入码流,以指导解码端的点云重建。
在一些实现方式中,解析码流,确定第一信息。第一信息用于指示是否对重建点云帧的重建属性值进行滤波。或者,解析码流,确定第二信息。第二信息用于指示对重建属性值进行滤波的滤波系数。
下面将基于本申请实施例提供的编解码方法进行测试得的测试结果与基于相关技术进行测试得到的性能测试结果进行比较,以验证本申请实施例带来的性能提升。
表一:K=8,C1条件下基于相关技术的编解码方法得到的测试结果
表二:K=8,C1条件下基于本申请实施例的编解码方法得到的测试结果
表三:K=4,C1条件下基于相关技术的编解码方法得到的测试结果
表四:K=4,C1条件下基于本申请实施例的编解码方法得到的测试结果
表一至表四的测试结果,是在GPCC参考软件ges-tm v4.0-rc1中,以C1测试条件下对MPEG要求的多帧动态点云序列每类取出32帧进行测试得到的。表一中,K=8表示维纳滤波的阶数为8,相关技术采用KNN的方式搜索近邻点,并将维纳滤波后的重建点云用于帧间预测。表二中,K=8表示维纳滤波的阶数为8,本申请实施例采用莫顿码的方式搜索近邻点,并将维纳滤波后的重建点云用于帧间预测。表三中,K=4表示维纳滤波的阶数为4,相关技术采用KNN的方式搜索近邻点,并将维纳滤波后的重建点云用于帧间预测。表四中,K=4表示维纳滤波的阶数为4,本申请实施例采用莫顿码的方式搜索近邻点,并将维纳滤波后的重建点云用于帧间预测。
C1条件为几何无损、属性几乎无损编码方式(lossless geometry,nearlylossless attribute),End-to-End BD-AttrRate表示端到端属性值针对属性码流的BD-Rate。BD-Rate反映的是两种情况下(即有无滤波)PSNR曲线的差异。BD-Rate减少时,表示在PSNR相等的情况下,如果码率减少,则表示性能提高;反之,如果码率增加,则表示性能降低,也就是说,BD-Rate下降越多则点云的压缩效果越好。Cat2-Aaverage,Cat2-B average以及Cat2-C average分别代表Cat2中三类数据集各自点云序列测试效果的平均值,Overall average为所有序列测试效果的平均值。
由表一至表四中的测试结果可以看出,在帧间预测中引入维纳滤波可以带来非常可观的性能改善,且本申请实施例基于莫顿码搜索近邻点相较于相关技术使用KNN搜索近邻点,可以显著节省编码时间和解码时间。
上文结合图6,详细描述了本申请实施例提供的解码方法。下面结合图7,详细描述本申请实施例提供的编码方法。
图7为本申请实施例提供的编码方法的流程示意图。图7的编码方法可应用于编码器。图7的编码方法可用于对点云的属性信息进行编码。在一些实现方式中,该编码方法可应用于G-PCC。或者,在另一些实现方式中,该编码方法可应用于基于几何的稠密点云测试模型(geometry-based solid content test model,GES-TM)。GES-TM是针对稠密点云(如在增强现实(augmented reality,AR)或虚拟现实(virtual reality,VR)场景采集到的点云)而提出的编解码框架。
参见图7,在步骤S710,根据第一重建点云中的点的位置信息,确定第一重建点云中的点的近邻点。
在一些实现方式中,可以在以当前点为中心的N×N×N的体素中确定近邻点。这里的N可以是任意大于或者等于1的整数。例如,N可以是5,或者,N也可以是3。
确定近邻点时可以按照一定的顺序在N×N×N的体素中进行搜索。例如,可以将N×N×N的体素分成多个层级范围,并基于层级范围搜索当前点的近邻点。示例性地,以当前点为中心的5×5×5的体素为例,将以当前点为中心3×3×3的体素设为第一层级范围,将5×5×5-3×3×3的体素设为第二层级范围;然后,搜索时可以先搜索第一层级范围内的近邻点,在第一层级范围内的近邻点不足的情况下再搜索第二层级范围内的近邻点。由于越靠近当前点(即中心点)的区域,近邻点可能越密集,也越可能出现与当前点属性值相似的近邻点,因此基于层级范围搜索近邻点有助于提高搜索效率。
又如,在N×N×N的体素中搜索近邻点时,可以先搜索与当前体素块(即当前点)共面的体素块,然后再搜索与当前块共线的体素块。由于与当前体素块共面的体素块与当前体素块有更高的相似度,因此搜索到近邻点的概率更大,从而有助于提高搜索效率。
本申请实施例对当前点的近邻点的数量不作具体限定。近邻点的数量可以对应滤波器的阶数K。示例性地,如果维纳滤波器的阶数K为4,则需要确定当前点的至少4个近邻点;或者,如果维纳滤波器的阶数K为8,则需要确定当前点的至少8个近邻点。
点的位置信息可以指的是表示点的三维坐标的相关信息。例如,点的位置信息可以是点的莫顿码。又如,点的位置信息还可以是点的三维坐标值。
在一些实现方式中,可以根据第一重建点云中的点的莫顿码,确定第一重建点云中的点的近邻点。示例性地,这里的莫顿码可以指的是点云在划分LOD层的过程中确定的莫顿码。
要确定点的近邻点,可以先确定近邻点的莫顿码。在一些实现方式中,当前点的近邻点的莫顿码可
以基于当前点的相邻位置的莫顿码确定。例如,可以将第一相邻位置的莫顿码与点云中的点的莫顿码进行比较;如果一个点的莫顿码与第一相邻位置的莫顿码相同,那么这个点即为当前点的近邻点,或者说,这个点的莫顿码即为该近邻点的莫顿码。
在一些实现方式中,可以根据当前点与相邻位置之间的空间位置的偏移值确定相邻位置的莫顿码。这里的空间位置可以指的是点的几何信息,例如点的三维坐标(x,y,z)。相应地,这里的空间位置的偏移值可以指的是当前点的三维坐标与相邻位置的三维坐标之间的差值。
例如,可以根据当前点的莫顿码和上述偏移值,确定相邻位置的莫顿码;然后,根据相邻位置的莫顿码和第一重建点云中的点的莫顿码,确定当前点的近邻点。
示例性地,在以当前点为中心的大小为5×5×5的体素中确定每一个相邻位置与当前点的偏移值,并将所有的偏移值列入一个搜索集合中。然后,依据搜索集合先计算出它的第一个相邻位置的莫顿码;如果这个相邻位置的莫顿码与点云中的点的莫顿码相同,则表示该相邻位置非空,即有近邻点存在。重复上述操作,直到找到k个近邻点。
示例性地,如图3所示,假设当前点的莫顿码为18,当前点的一个相邻位置与当前点的空间位置差(即偏移值)为(0,1,0),将该空间位置差转换成莫顿码的形式,可得到偏移值为2;然后,将当前点的莫顿码18减去偏移值2即可得到相邻位置的莫顿码16;最后,在点云中寻找是否存在莫顿码为16的点,如果存在,则确定该相邻位置存在当前点的近邻点。
在前文的描述中,相关技术例如采用KNN的方式搜索当前点的近邻点,这种方式需要计算当前点与所有已编码点之间距离,因此相关技术进行滤波所花费的时间较长,从而导致属性信息的编解码的效率较低。本申请实施例基于重建点云中的点的莫顿码,确定用于滤波的近邻点。莫顿编码的排序特性可以将几何信息(如坐标信息)接近的点的莫顿码相邻,因此,只需要确定当前点在一定范围内的相邻位置的莫顿码(或称相邻莫顿码)就可以确定当前点的近邻点。这种方式缩短了搜索近邻点的时间,能够提高滤波的效率,从而有助于提高属性信息的编码效率。
上文提到,点的位置信息可以指的是点的三维坐标值。在一些实现方式中,可以根据第一重建点云中的点的三维坐标值,确定第一重建点云中的点的近邻点。
例如,可以根据第一重建点云中的点的三维坐标值,确定当前点的相邻位置(第二相邻位置)的三维坐标值;然后,根据相邻位置的三维坐标值,确定当前点的近邻点。
示例性地,在以当前点为中心的大小为5×5×5的体素中,确定每一个相邻位置与当前点的三维坐标的偏移值,并将所有的三维坐标的偏移值列入一个搜索集合中;然后,依据搜索集合中的三维坐标的偏移值确定当前点在5×5×5的体素中所有相邻位置;最后,在所有的相邻位置上搜索是否有近邻点,从而找到k个近邻点。
本申请实施例基于重建点云中的点的三维坐标值,在特定的范围内(如5×5×5的体素中)确定当前点的近邻点,相较于相关技术基于KNN确定近邻点,基于三维坐标值确定近邻点所需的时间更短,能够提高滤波的效率,从而有助于提高属性信息的编码效率。
如上文中的介绍,对重建点云的重建属性值进行滤波需要确定至少K个近邻点。如果基于步骤S710确定的近邻点的数量少于K,例如点云中部分边缘位置的点可能找不齐K个近邻点,那么图7所示的编码方法还可以基于其他的方式确定剩余的近邻点(或称第一近邻点)。
在一些实现方式中,可以根据步骤S710中确定的近邻点的重建属性值,确定第一近邻点的重建属性值。例如,可以根据已确定的所有近邻点的重建属性值的平均值作为第一近邻点的重建属性值。又如,可以将已确定的一个近邻点的重建属性值作为第一近邻点的重建属性值。
在步骤S720,根据第一重建点云中的点的近邻点的重建属性值,确定滤波系数。
上述滤波系数用于对点云中的点的重建属性值进行滤波。这里的属性值可以指的是点云中的点的颜色信息。例如,颜色信息可以是RGB信息。又如,颜色信息可以是亮度色度(YCbCr,YUV)信息。
执行步骤S720的方式可以包括:根据第一重建点云中的点的近邻点的重建属性值和第一重建点云中的点的原始属性值,确定自相关矩阵和互相关矩阵;然后,根据自相关矩阵和互相关矩阵,确定滤波系数。
示例性地,互相关矩阵可以基于如下公式确定:
其中,b表示互相关矩阵,ci表示第一重建点云中的点的原始颜色分量,表示近邻点的重建颜色分量的转置形式,i的取值包括1,2,3,表示3种颜色分量。
自相关矩阵可以基于如下公式确定:
其中,A表示为自相关矩阵,表示近邻点的重建颜色分量,表示近邻点的重建颜色分量的转置
形式,i的取值包括1,2,3,表示3种颜色分量。
滤波系数可以基于如下公式确定:
hopt=A-1×b (12)
hopt=A-1×b (12)
其中,hopt表示滤波系数,A表示自相关矩阵,b表示互相关矩阵。
在步骤S730,根据当前点的近邻点的重建属性值和滤波系数,对当前点的重建属性值进行滤波。
在重建点云帧中的所有点的重建属性值完成滤波之后,可以将滤波处理的重建点云帧作为参考帧,以对其他帧(如当前帧在编码顺序中的下一帧)的属性值进行帧间预测。滤波处理的重建点云帧的图像质量更好,将其作为参考帧有助于提高点云的属性信息的预测效果,进而有助于提高点云的属性信息的编码效率。
上文提及的滤波可以是任意的对邻域内属性值的加权求和。在一些实现方式中,滤波的类型可以是维纳滤波。维纳滤波器的阶数可以是任意的,例如,维纳滤波器的阶数K为4或者8。
示例性地,可以将当前点的近邻点的重建属性值作为维纳滤波器的输入,结合滤波系数,将维纳滤波器的输出作为当前点滤波后的重建属性值。
示例性地,当前点滤波后的重建属性值可以基于以下公式确定:
其中,表示当前点滤波后的重建属性值;表示当前点的k个近邻点的重建属性值;hopt表示维纳滤波器对应的滤波系数。
需理解的是,本申请实施例对滤波系数的应用范围并不作具体限定。例如,一组滤波系数可以仅对一帧重建点云的重建属性值进行滤波处理。或者,在一些实现方式中,一组滤波系数可以对多个帧的重建点云的重建属性值进行滤波处理。例如,在相邻的两帧重建点云的属性值相似的情况下,可以基于同一组滤波系数对这两帧重建点云的重建属性值进行滤波处理。这样可以减少获取滤波器系数的次数,进而进一步减少滤波所需的时间。
一帧重建点云可以对应一个或者多个滤波器。例如,如果一帧重建点云对应多个滤波器时,那么可以基于当前点的近邻点的重建属性值和当前点的重建属性值之间的差异确定目标滤波器。这里的多个滤波器可以对应多个滤波系数。
示例性地,多个滤波器可以对应不同的邻域差异范围。例如,多个滤波器可以包括第一滤波器和第二滤波器。如果当前点的重建属性值与近邻点的重建属性值之间的邻域差异在第一范围内,则可以选择第一滤波器;或者,如果当前点的重建属性值与近邻点的重建属性值之间的邻域差异在第二范围内,则可以选择第二滤波器。
在点云重建过程中,可以基于预定义的规则默认编解码端的是否对重建点云帧进行滤波。当然,还可以在编码端确定是否对重建点云帧进行滤波,然后将确定的结果以语法元素的形式写入码流,以指导解码端的点云重建。例如,在编码端将基于滤波后的重建点云的PSNR和原始点云的PSNR进行比较,如果滤波后重建点云的PSNR有所增加,则确定对重建点云帧进行滤波。
在一些实现方式中,可以将第一信息写入码流。第一信息用于指示是否对重建点云帧的重建属性值进行滤波。或者,可以将第二信息写入码流。第二信息用于指示对重建属性值进行滤波的滤波系数。
下面结合具体例子,更加详细地描述本申请实施例。应注意,下文中的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将本申请实施例限于所示例的具体数值或具体场景。本领域技术人员根据所给出的下文中的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本申请实施例的范围内。
示例1:
在计算维纳滤波系数的过程中,需要搜索点云中每个点的K个近邻点。为了解决大量使用KNN最近邻搜索方法所带来的编解码时间增长的问题,本示例将基于点的位置信息的近邻搜索方式引入到重建属性值的维纳滤波过程中。
由于维纳滤波需要使用较多的近邻点,所以若只在以目标点为中心的大小为3×3×3的立方体中搜索,可能并不能满足需要。为了解决这个问题,本示例计算出以目标点为中心的大小为5×5×5的立方体中的每一个位置距离目标点的偏移量,列入一个搜索表中。搜索表可以基于以下方式确定:
方式一:越靠近当前点(即中心点)的区域,近邻点可能越密集,也越可能出现与当前点属性值相似的近邻点,故为了尽量快地结束搜索,也为了搜索到的结果更准确,在把偏移量写入搜索表的过程中,采取由内到外的顺序进行书写,即先写入当前点位置(即查到的最近邻的第一个就是它本身),再写入第一个外层(数目为3×3×3-1)的位置偏移量,而后再写入第三层(数目为5×5×5-3×3×3)的位置偏移量。
方式二:考虑到在体素化后的点云中,与当前体素块共面的体素块会比与当前块共线的体素块可能
和当前块有更高的相似度,所以优先搜索与当前点共面的体素块的位置。
得到搜索表后,本示例基于点的位置信息进行近邻搜索的方式包括两种,分别为:基于点的莫顿码进行近邻搜索以及基于点的三维坐标值进行近邻搜索。
搜索方式一:对于任一目标点,依据搜索表先计算出它的第一个相邻位置的莫顿码;如果这个位置非空,即有点存在,则该点为目标点的近邻点之一;如果这个位置是空的,即没有点存在,则依据搜索表计算出下一个相邻位置的莫顿码。重复上述操作,直到找齐K个最近邻,找齐后即停止搜索。
搜索方式二:对于任一目标点,依据搜索表先计算出它的第一个相邻位置的三维坐标值;然后,确定该相邻位置是否存在近邻点;最后,计算出所有相邻位置的三维坐标值,并在所有的相邻位置上搜索是否有近邻点,从而找到k个近邻点。
经验证,K分别取值4和8时可以满足基本上所有点的最近邻搜索要求。但是为了避免例如位置边缘的点找不齐近邻点导致算不出维纳滤波的系数的问题,可以添加以下方案:
假设点云每一个点都要找齐K个最近邻,但是某一点经过基于莫顿码的近邻搜索方法后只找到了N(N<M)个最近邻,则求取这N个最近邻的属性平均值,赋给剩下K-N个最近邻,作为它们的属性值。
示例2
下文结合图8对本示例确定近邻点的方式进行详细地介绍。
参见图8,在步骤S810a,搜索开始。
在步骤S810b,输入点云中的当前点。
在步骤S820a,确定当前点的莫顿码。
在步骤S820b,确定当前点是否有K个近邻点。如果当前点有K个近邻点,则执行步骤S830,即搜索结束;否则,执行步骤S840。
在步骤S840,确定搜索表是否已将查完。搜索表的内容为当前点与所有近邻点的空间位置的偏移值。偏移值的计算方法在前文中已经介绍,在此不再赘述。如果搜索表未查完,则执行步骤S850;否则,执行步骤S880。
在步骤S850,依据搜索表的偏移值确定相邻位置的莫顿码。相邻位置的莫顿码的确定方式在前文中已经介绍,在此不再赘述。
在步骤S860,判断相邻位置是否为空。如果相邻位置为空,则继续执行步骤S840;否则,确定该相邻位置存在近邻点,执行步骤S870。
在步骤S870,相近邻点添加入当前点的近邻点列表中。
在步骤S880,根据N个近邻点的重建属性值的平均值,确定剩余K-N个近邻点的重建属性值。
在步骤S890,搜索结束。
示例3
本示例提出了一种针对多帧点云属性值的帧间维纳滤波方案。如图9所示,前一帧的预测帧点云在运动补偿后,得到前一帧的重建点云。当前帧点云可以将前一帧的重建点云作为参考帧,以进行帧间预测。在本示例中,将维纳滤波处理后的第一帧重建点云用于对第二帧的点云进行帧间预测,下面结合图10和图11进行详细地介绍。
图10示出了本申请实施例提供的编码端的帧间预测的流程示意图。如图10所示,在编码端,首先,对于多帧点云中的第一帧点云,先基于前文介绍的方案确定维纳滤波系数,并将维纳滤波系数应用于第一帧的重建点云对其进行质量增强,并将此质量增强点云覆盖重建点云。接着,对于多帧点云中的第二帧,使用质量增强后的第一帧重建点云用于第二帧的帧间预测,进而得到第二帧的重建点云。最后,对于第二帧的重建点云,再次基于维纳滤波进行质量增强,以用于下一帧的帧间预测。
图11示出了本申请实施例提供的解码端的帧间预测的流程示意图。如图11所示,在解码端,首先,对于多帧点云中的第一帧点云,先解码出指示是否使用维纳滤波进行质量增强的标志位和维纳滤波系数,随后解码获得重建点云,再基于维纳滤波对其进行质量增强,并将此质量增强点云覆盖原解码点云。接着,在多帧点云中的第二帧点云的解码过程中,使用质量增强后的第一帧解码点云用于第二帧点云的解码过程,得到第二帧解码点云。最后,对于第二帧解码点云,再次基于维纳滤波进行质量增强,以用于下一帧的帧间预测。
本申请示例提出的多帧点云属性帧间维纳滤波质量增强方案,把维纳滤波质量增强技术从帧内编码扩展到帧间编码,与在帧内编码的配置下进行维纳滤波相比,带来了更好的质量增强效果。同时,本申请示例提出的基于莫顿码的近邻搜索方案替换掉了相关技术中用到的KNN最近邻搜索,实现了较多近邻点的快速搜索,减少了编解码时间。
本申请示例可以在几何无损,属性有损的条件下,或者几何有损,属性有损的条件下的重建点云进
行质量增强。
在多帧点云维纳滤波中,对每一帧点云都求一组不同的参数,如果对相邻的相似点云使用相同的滤波器系数,可以减少求取滤波器系数的次数,进而进一步减少使用维纳滤波进行质量增强所需的时间。
滤波时考虑邻域差异,由于点云轮廓或边界处属性值变化较大,单个滤波器可能难以覆盖全点云的滤波,导致效果仍有提升的空间。因此根据邻域差异值进行分类,不同类别应用单独的滤波器、传递多个滤波器系数,从而实现自适应选择滤波器进行滤波以达到更好的效果。
上文结合图1至图11,详细描述了本申请的方法实施例,下面结合图12至图15,详细描述本申请的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图12是本申请一个实施例提供的解码器的结构示意图。如图12所示,所述解码器1200可以包括第一确定单元1210、第二确定单元1220和滤波单元1230。
第一确定单元1210,配置为解析码流,确定滤波系数;
第二确定单元1220,配置为根据第一重建点云中的点的位置信息,确定当前点的近邻点;
滤波单元1230,配置为根据所述当前点的近邻点的重建属性值和所述滤波系数,对所述当前点的重建属性值进行滤波。
在一些实现方式中,解码器1200还包括第三确定单元,配置为所述对第一帧的重建点云的重建属性值进行滤波,确定第二重建点云;根据所述第二重建点云对第二帧的点云进行帧间预测,确定所述第一重建点云。
在一些实现方式中,在解码顺序中,所述第二帧为所述第一帧的下一帧。
在一些实现方式中,所述第二确定单元1220还配置为根据所述第一重建点云中的点的莫顿码,确定所述当前点的近邻点。
在一些实现方式中,所述当前点的近邻点的莫顿码基于所述当前点的第一相邻位置的莫顿码确定。
在一些实现方式中,所述第一相邻位置的莫顿码基于所述当前点与所述第一相邻位置之间的空间位置的偏移值确定。
在一些实现方式中,所述第二确定单元1220还配置为根据所述当前点的莫顿码和所述偏移值,确定所述第一相邻位置的莫顿码;根据所述第一相邻位置的莫顿码和所述第一重建点云中的点的莫顿码,确定所述当前点的近邻点。
在一些实现方式中,所述第二确定单元1220还配置为根据所述第一重建点云中的点的三维坐标值,确定所述当前点的近邻点。
在一些实现方式中,所述第二确定单元1220还配置为根据所述第一重建点云中的点的三维坐标值,确定所述当前点的第二相邻位置的三维坐标值;根据所述第二相邻位置的三维坐标值,确定所述当前点的近邻点。
在一些实现方式中,解码器1200还包括第四确定单元,配置为根据所述当前点的近邻点的重建属性值,确定所述第一近邻点的重建属性值。
在一些实现方式中,所述第一近邻点的重建属性值基于所述当前点的近邻点的重建属性值的平均值确定。
在一些实现方式中,所述第一重建点云对应多个滤波器,所述滤波系数对应目标滤波器,所述目标滤波器基于所述当前点的近邻点的重建属性值和所述当前点的重建属性值之间的差异确定。
在一些实现方式中,所述当前点的近邻点属于N×N×N的体素,N为大于3的整数。
在一些实现方式中,N为5。
在一些实现方式中,所述滤波为维纳滤波。
在一些实现方式中,所述维纳滤波的阶数为4或8。
在一些实现方式中,解码器1200还包括第五确定单元,配置为解析码流,确定第一信息,所述第一信息用于指示是否对所述第一重建点云的重建属性值进行滤波;和/或,解析码流,确定第二信息,所述第二信息用于指示所述滤波系数。
可以理解,在本申请实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储
在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本申请实施例提供了一种计算机可读存储介质,应用于解码器1200,该计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现前述实施例中任一项所述的解码方法。
基于上述解码器1200的组成以及计算机可读存储介质,参见图13,其示出了本申请实施例提供的编码器1300的具体硬件结构示意图。如图13所示,编码器1300可以包括:通信接口1310、存储器1320和处理器1330;各个组件通过总线系统1340耦合在一起。可理解,总线系统1340用于实现这些组件之间的连接通信。总线系统1340除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图13中将各种总线都标为总线系统1340。其中,
通信接口1310,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
存储器1320,用于存储计算机程序;
处理器1330,用于在运行所述计算机程序时,执行:
解析码流,确定滤波系数;
根据第一重建点云中的点的位置信息,确定当前点的近邻点;
根据所述当前点的近邻点的重建属性值和所述滤波系数,对所述当前点的重建属性值进行滤波。
可以理解,本申请实施例中的存储器1320可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(doubledata rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。本申请描述的系统和方法的存储器1320旨在包括但不限于这些和任意其它适合类型的存储器。
而处理器1330可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1330中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1330可以是通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1320,处理器1330读取存储器1320中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本申请描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(application specific integrated circuits,ASIC)、数字信号处理器(digital signal processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(programmable logic device,PLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。对于软件实现,可通过执行本申请所述功能的模块(例如过程、函数等)来实现本申请所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
可选地,作为另一个实施例,处理器1330还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的解码方法。
图14是本申请一个实施例提供的编码器的结构示意图。如图14所示,编码器1400包括第一确定单元1410、第二确定单元1420和滤波单元1430。
第一确定单元1410,配置为根据第一重建点云中的点的位置信息,确定所述第一重建点云中的点的近邻点;
第二确定单元1420,配置为根据所述第一重建点云中的点的近邻点的重建属性值,确定滤波系数;
滤波单元1430,配置为根据当前点的近邻点的重建属性值和所述滤波系数,对所述当前点的重建属性值进行滤波。
在一些实现方式中,所述编码器1400还包括第三确定单元,配置为对第一帧的重建点云的重建属性值进行滤波,确定第二重建点云;根据所述第二重建点云对第二帧的点云进行帧间预测,确定所述第一重建点云。
在一些实现方式中,所述第二帧为所述第一帧的下一帧。
在一些实现方式中,第一确定单元1410还配置为根据所述第一重建点云中的点的莫顿码,确定所述第一重建点云中的点的近邻点。
在一些实现方式中,所述当前点的近邻点的莫顿码基于所述当前点的第一相邻位置的莫顿码确定。
在一些实现方式中,所述第一相邻位置的莫顿码基于所述当前点与所述第一相邻位置之间的空间位置的偏移值确定。
在一些实现方式中,第一确定单元1410还配置为根据所述当前点的莫顿码和所述偏移值,确定所述第一相邻位置的莫顿码;根据所述第一相邻位置的莫顿码和所述第一重建点云中的点的莫顿码,确定所述当前点的近邻点。
在一些实现方式中,第一确定单元1410还配置为根据所述第一重建点云中的点的三维坐标值,确定所述第一重建点云中的点的近邻点。
在一些实现方式中,第一确定单元1410还配置为根据所述第一重建点云中的点的三维坐标值,确定所述当前点的第二相邻位置的三维坐标值;根据所述第二相邻位置的三维坐标值,确定所述当前点的近邻点。
在一些实现方式中,第二确定单元1420还配置为根据所述第一重建点云中的点的近邻点的重建属性值和所述第一重建点云中的点的原始属性值,确定自相关矩阵和互相关矩阵;根据所述自相关矩阵和所述互相关矩阵,确定所述滤波系数。
在一些实现方式中,所述当前点还包括第一近邻点,所述编码器1400还包括第四确定单元,配置为根据所述当前点的近邻点的重建属性值,确定所述第一近邻点的重建属性值。
在一些实现方式中,所述第一近邻点的重建属性值基于所述当前点的近邻点的重建属性值的平均值确定。
在一些实现方式中,所述第一重建点云对应多个滤波器,所述滤波系数对应目标滤波器,所述目标滤波器基于所述当前点的近邻点的重建属性值和所述当前点的重建属性值之间的差异确定。
在一些实现方式中,所述当前点的近邻点属于N×N×N的体素,N为大于3的整数。
在一些实现方式中,N为5。
在一些实现方式中,所述滤波为维纳滤波。
在一些实现方式中,所述维纳滤波的阶数为4或8。
在一些实现方式中,所述编码器1400还包括第四确定单元,配置为将第一信息写入码流,所述第一信息用于指示是否对所述第一重建点云的重建属性值进行滤波;和/或,将第二信息写入码流,所述第二信息用于指示所述滤波系数。
可以理解,在本申请实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本申请实施例提供了一种计算机可读存储介质,应用于编码器1400,该计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现前述实施例中任一项所述的解码方法。
基于上述编码器1400的组成以及计算机可读存储介质,参见图15,其示出了本申请实施例提供的编码器1500的具体硬件结构示意图。如图15所示,编码器1500可以包括:通信接口1510、存储器1520和处理器1530;各个组件通过总线系统1540耦合在一起。可理解,总线系统1540用于实现这些组件之间的连接通信。总线系统1540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图15中将各种总线都标为总线系统1540。其中,
通信接口1510,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
存储器1520,用于存储计算机程序;
处理器1530,用于在运行所述计算机程序时,执行:
根据第一重建点云中的点的位置信息,确定所述第一重建点云中的点的近邻点;
根据所述第一重建点云中的点的近邻点的重建属性值,确定滤波系数;
根据当前点的近邻点的重建属性值和所述滤波系数,对所述当前点的重建属性值进行滤波。
可以理解,本申请实施例中的存储器1520可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是ROM、PROM、EPROM、EEPROM或闪存。易失性存储器可以是RAM,其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如SRAM、DRAM、SDRAM、DDRSDRAM、ESDRAM、SLDRAM和DRRAM。本申请描述的系统和方法的存储器1520旨在包括但不限于这些和任意其它适合类型的存储器。
而处理器1530可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1530中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1530可以是通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1520,处理器1530读取存储器1520中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本申请描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个ASIC、DSP、DSPD、PLD、FPGA、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。对于软件实现,可通过执行本申请所述功能的模块(例如过程、函数等)来实现本申请所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
可选地,作为另一个实施例,处理器1530还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的编码方法。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质为存储比特流的非易失性计算机可读存储介质,所述比特流可以通过利用编码器的编码方法而生成,或者,所述比特流通过利用解码器的解码方法而解码,其中,所述解码方法可以为前文任一实施例所述的解码方法、所述编码方法可以为前文任一实施例所述的编码方法。
需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (42)
- 一种点云解码方法,应用于解码器,包括:解析码流,确定滤波系数;根据第一重建点云中的点的位置信息,确定当前点的近邻点;根据所述当前点的近邻点的重建属性值和所述滤波系数,对所述当前点的重建属性值进行滤波。
- 根据权利要求1所述的方法,其中,所述方法还包括:对第一帧的重建点云的重建属性值进行滤波,确定第二重建点云;根据所述第二重建点云对第二帧的点云进行帧间预测,确定所述第一重建点云。
- 根据权利要求2所述的方法,其中,在解码顺序中,所述第二帧为所述第一帧的下一帧。
- 根据权利要求1至3中任一项所述的方法,其中,所述根据第一重建点云中的点的位置信息,确定当前点的近邻点,包括:根据所述第一重建点云中的点的莫顿码,确定所述当前点的近邻点。
- 根据权利要求4所述的方法,其中,所述当前点的近邻点的莫顿码基于所述当前点的第一相邻位置的莫顿码确定。
- 根据权利要求5所述的方法,其中,所述第一相邻位置的莫顿码基于所述当前点与所述第一相邻位置之间的空间位置的偏移值确定。
- 根据权利要求6所述的方法,其中,所述根据所述第一重建点云中的点的莫顿码,确定所述当前点的近邻点,包括:根据所述当前点的莫顿码和所述偏移值,确定所述第一相邻位置的莫顿码;根据所述第一相邻位置的莫顿码和所述第一重建点云中的点的莫顿码,确定所述当前点的近邻点。
- 根据权利要求1至3中任一项所述的方法,其中,所述根据第一重建点云中的点的位置信息,确定当前点的近邻点,包括:根据所述第一重建点云中的点的三维坐标值,确定所述当前点的近邻点。
- 根据权利要求8所述的方法,其中,所述根据所述第一重建点云中的点的三维坐标值,确定所述当前点的近邻点,包括:根据所述第一重建点云中的点的三维坐标值,确定所述当前点的第二相邻位置的三维坐标值;根据所述第二相邻位置的三维坐标值,确定所述当前点的近邻点。
- 根据权利要求4至9中任一项所述的方法,其中,所述当前点还包括第一近邻点,所述方法还包括:根据所述当前点的近邻点的重建属性值,确定所述第一近邻点的重建属性值。
- 根据权利要求10所述的方法,其中,所述第一近邻点的重建属性值基于所述当前点的近邻点的重建属性值的平均值确定。
- 根据权利要求1至11中任一项所述的方法,其中,所述第一重建点云对应多个滤波器,所述滤波系数对应目标滤波器,所述目标滤波器基于所述当前点的近邻点的重建属性值和所述当前点的重建属性值之间的差异确定。
- 根据权利要求1至12中任一项所述的方法,其中,所述当前点的近邻点属于N×N×N的体素,N为大于3的整数。
- 根据权利要求13所述的方法,其中,N为5。
- 根据权利要求1所述的方法,其中,所述滤波为维纳滤波。
- 根据权利要求15所述的方法,其中,所述维纳滤波的阶数为4或8。
- 根据权利要求1至16中任一项所述的方法,其中,所述方法还包括:解析码流,确定第一信息,所述第一信息用于指示是否对所述第一重建点云的重建属性值进行滤波;和/或,解析码流,确定第二信息,所述第二信息用于指示所述滤波系数。
- 一种点云编码方法,应用于编码器,包括:根据第一重建点云中的点的位置信息,确定所述第一重建点云中的点的近邻点;根据所述第一重建点云中的点的近邻点的重建属性值,确定滤波系数;根据当前点的近邻点的重建属性值和所述滤波系数,对所述当前点的重建属性值进行滤波。
- 根据权利要求18所述的方法,其中,所述方法还包括:对第一帧的重建点云的重建属性值进行滤波,确定第二重建点云;根据所述第二重建点云对第二帧的点云进行帧间预测,确定所述第一重建点云。
- 根据权利要求19所述的方法,其中,在编码顺序中,所述第二帧为所述第一帧的下一帧。
- 根据权利要求18至20中任一项所述的方法,其中,所述根据第一重建点云中的点的位置信息,确定所述第一重建点云中的点的近邻点,包括:根据所述第一重建点云中的点的莫顿码,确定所述第一重建点云中的点的近邻点。
- 根据权利要求21所述的方法,其中,所述当前点的近邻点的莫顿码基于所述当前点的第一相邻位置的莫顿码确定。
- 根据权利要求22所述的方法,其中,所述第一相邻位置的莫顿码基于所述当前点与所述第一相邻位置之间的空间位置的偏移值确定。
- 根据权利要求23所述的方法,其中,所述根据所述第一重建点云中的点的莫顿码,确定所述第一重建点云中的点的近邻点,包括:根据所述当前点的莫顿码和所述偏移值,确定所述第一相邻位置的莫顿码;根据所述第一相邻位置的莫顿码和所述第一重建点云中的点的莫顿码,确定所述当前点的近邻点。
- 根据权利要求18至20中任一项所述的方法,其中,所述根据第一重建点云中的点的位置信息,确定所述第一重建点云中的点的近邻点,包括:根据所述第一重建点云中的点的三维坐标值,确定所述第一重建点云中的点的近邻点。
- 根据权利要求25所述的方法,其中,所述根据所述第一重建点云中的点的三维坐标值,确定所述第一重建点云中的点的近邻点,包括:根据所述第一重建点云中的点的三维坐标值,确定所述当前点的第二相邻位置的三维坐标值;根据所述第二相邻位置的三维坐标值,确定所述当前点的近邻点。
- 根据权利要求18至26中任一项所述的方法,其中,所述根据所述第一重建点云中的点的近邻点的重建属性值,确定滤波系数,包括:根据所述第一重建点云中的点的近邻点的重建属性值和所述第一重建点云中的点的原始属性值,确定自相关矩阵和互相关矩阵;根据所述自相关矩阵和所述互相关矩阵,确定所述滤波系数。
- 根据权利要求18至27中任一项所述的方法,其中,所述当前点还包括第一近邻点,所述方法还包括:根据所述当前点的近邻点的重建属性值,确定所述第一近邻点的重建属性值。
- 根据权利要求28所述的方法,其中,所述第一近邻点的重建属性值基于所述当前点的近邻点的重建属性值的平均值确定。
- 根据权利要求18至29中任一项所述的方法,其中,所述第一重建点云对应多个滤波器,所述滤波系数对应目标滤波器,所述目标滤波器基于所述当前点的近邻点的重建属性值和所述当前点的重建属性值之间的差异确定。
- 根据权利要求18至30中任一项所述的方法,其中,所述当前点的近邻点属于N×N×N的体素,N为大于3的整数。
- 根据权利要求31所述的方法,其中,N为5。
- 根据权利要求18所述的方法,其中,所述滤波为维纳滤波。
- 根据权利要求33所述的方法,其中,所述维纳滤波的阶数为4或8。
- 根据权利要求18至34中任一项所述的方法,其中,所述方法还包括:将第一信息写入码流,所述第一信息用于指示是否对所述第一重建点云的重建属性值进行滤波;和/或,将第二信息写入码流,所述第二信息用于指示所述滤波系数。
- 一种解码器,包括:第一确定单元,配置为解析码流,确定滤波系数;第二确定单元,配置为根据第一重建点云中的点的位置信息,确定当前点的近邻点;滤波单元,配置为根据所述当前点的近邻点的重建属性值和所述滤波系数,对所述当前点的重建属性值进行滤波。
- 一种解码器,包括:存储器,用于存储计算机程序;处理器,用于在运行所述计算机程序时,执行如权利要求1至17中任一项所述的方法。
- 一种编码器,包括:第一确定单元,配置为根据第一重建点云中的点的位置信息,确定所述第一重建点云中的点的近邻点;第二确定单元,配置为根据所述第一重建点云中的点的近邻点的重建属性值,确定滤波系数;滤波单元,配置为根据当前点的近邻点的重建属性值和所述滤波系数,对所述当前点的重建属性值进行滤波。
- 一种编码器,包括:存储器,用于存储计算机程序;处理器,用于在运行所述计算机程序时,执行如权利要求18至35中任一项所述的方法。
- 一种存储比特流的非易失性计算机可读存储介质,所述比特流通过利用编码器的编码方法而生成,或者,所述比特流通过利用解码器的解码方法而解码,其中,所述解码方法为如权利要求1至17中任一项所述的方法、所述编码方法为如权利要求18至35中任一项所述的方法。
- 一种码流,所述码流包括如权利要求18至35中任一项所述的方法生成的码流。
- 一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机程序,所述计算机程序被执行时实现如权利要求1至17,或18至35中任一项所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2024/087697 WO2025217752A1 (zh) | 2024-04-15 | 2024-04-15 | 点云编解码方法、编解码器、码流以及存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2024/087697 WO2025217752A1 (zh) | 2024-04-15 | 2024-04-15 | 点云编解码方法、编解码器、码流以及存储介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2025217752A1 true WO2025217752A1 (zh) | 2025-10-23 |
Family
ID=97402767
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2024/087697 Pending WO2025217752A1 (zh) | 2024-04-15 | 2024-04-15 | 点云编解码方法、编解码器、码流以及存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2025217752A1 (zh) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190311502A1 (en) * | 2018-04-10 | 2019-10-10 | Apple Inc. | Point cloud attribute transfer algorithm |
| CN113615207A (zh) * | 2019-03-21 | 2021-11-05 | Lg电子株式会社 | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 |
| WO2022140937A1 (zh) * | 2020-12-28 | 2022-07-07 | Oppo广东移动通信有限公司 | 点云编解码方法与系统、及点云编码器与点云解码器 |
| WO2023123467A1 (zh) * | 2021-12-31 | 2023-07-06 | Oppo广东移动通信有限公司 | 编解码方法、码流、编码器、解码器以及存储介质 |
| CN117793372A (zh) * | 2020-12-03 | 2024-03-29 | Oppo广东移动通信有限公司 | 预测方法、编码器、解码器以及计算机存储介质 |
-
2024
- 2024-04-15 WO PCT/CN2024/087697 patent/WO2025217752A1/zh active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190311502A1 (en) * | 2018-04-10 | 2019-10-10 | Apple Inc. | Point cloud attribute transfer algorithm |
| CN113615207A (zh) * | 2019-03-21 | 2021-11-05 | Lg电子株式会社 | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 |
| CN117793372A (zh) * | 2020-12-03 | 2024-03-29 | Oppo广东移动通信有限公司 | 预测方法、编码器、解码器以及计算机存储介质 |
| WO2022140937A1 (zh) * | 2020-12-28 | 2022-07-07 | Oppo广东移动通信有限公司 | 点云编解码方法与系统、及点云编码器与点云解码器 |
| WO2023123467A1 (zh) * | 2021-12-31 | 2023-07-06 | Oppo广东移动通信有限公司 | 编解码方法、码流、编码器、解码器以及存储介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN115474041B (zh) | 点云属性的预测方法、装置及相关设备 | |
| US20250086847A1 (en) | Encoding method, decoding method, and readable storage medium | |
| CN116708769A (zh) | 点云编解码方法与系统、及点云编码器与点云解码器 | |
| CN116648915A (zh) | 点云编解码方法、编码器、解码器以及计算机存储介质 | |
| CN115086716B (zh) | 点云中邻居点的选择方法、装置及编解码器 | |
| CN119522567A (zh) | 用于对张量进行编码和解码的方法、设备和系统 | |
| KR20220157490A (ko) | 인트라 예측 방법, 장치, 인코더, 디코더 및 저장 매체 | |
| WO2025217752A1 (zh) | 点云编解码方法、编解码器、码流以及存储介质 | |
| WO2024216493A1 (zh) | 点云编解码方法、编码器、解码器、码流及存储介质 | |
| WO2024174086A1 (zh) | 解码方法、编码方法、解码器以及编码器 | |
| WO2024168613A1 (zh) | 解码方法、编码方法、解码器以及编码器 | |
| WO2024011739A1 (zh) | 点云编解码方法、编解码器及计算机存储介质 | |
| CN118805200A (zh) | 索引确定方法、装置、解码器以及编码器 | |
| CN116830580A (zh) | 点云解码方法、解码器及计算机存储介质 | |
| WO2026085893A1 (zh) | 点云编解码方法、编解码器以及存储介质 | |
| WO2026085894A1 (zh) | 点云编解码方法、编解码器以及存储介质 | |
| WO2026007126A1 (zh) | 点云编解码方法、编解码器以及存储介质 | |
| WO2026085891A1 (zh) | 点云编解码方法、编解码器以及存储介质 | |
| WO2025213480A1 (zh) | 编解码方法及装置、点云编解码器、码流、设备、存储介质 | |
| WO2025260335A1 (zh) | 点云编解码方法、编解码器、码流以及存储介质 | |
| WO2026090809A1 (zh) | 点云编解码方法、编解码器以及存储介质 | |
| WO2025138048A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
| WO2026011274A1 (zh) | 点云编解码方法、编解码器以及存储介质 | |
| WO2024103304A1 (zh) | 点云编解码方法、编码器、解码器、码流及存储介质 | |
| WO2025076659A1 (zh) | 点云编解码方法、码流、编码器、解码器以及存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 24935308 Country of ref document: EP Kind code of ref document: A1 |