WO2020220941A1 - Point cloud encoding method, point cloud decoding method, apparatuses, and storage medium - Google Patents
Point cloud encoding method, point cloud decoding method, apparatuses, and storage medium Download PDFInfo
- Publication number
- WO2020220941A1 WO2020220941A1 PCT/CN2020/083492 CN2020083492W WO2020220941A1 WO 2020220941 A1 WO2020220941 A1 WO 2020220941A1 CN 2020083492 W CN2020083492 W CN 2020083492W WO 2020220941 A1 WO2020220941 A1 WO 2020220941A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- patch
- information
- point cloud
- decoded
- identifier
- 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.)
- Ceased
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- 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
-
- 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
Definitions
- This application relates to the field of data processing technology, and in particular to a point cloud encoding method, point cloud decoding method, device and storage medium.
- This application provides a point cloud encoding method, point cloud decoding method, device and storage medium, which can solve the problem of how to effectively encode and decode point clouds in related technologies.
- the technical solution is as follows:
- a point cloud encoding method includes: obtaining auxiliary information of a patch to be encoded (point cloud block) and a first identifier of the patch to be encoded; when the first identifier is a first value, Encode the auxiliary information of the patch and the first identifier into the code stream, and the patch to be encoded is the first patch in the current point cloud frame; or, when the first identifier is the first value, encode the auxiliary information of the patch to be encoded into the code Stream, the patch to be coded is the non-first patch in the current point cloud frame; the first identifier is the first value to indicate that the patch to be coded is the first type of patch, and the auxiliary information of the patch to be coded includes three-dimensional information.
- the patch to be encoded may be any patch included in the current point cloud frame to be encoded.
- the first identifier may indicate the type of patch to be encoded.
- the first identified syntax element may be patch_mode or patch_type, etc. The value of the first identifier is different, and the type of the patch to be encoded is different.
- the first identifier is the first value
- the first type of patch can be a global matching patch in the current point cloud group.
- the auxiliary information of the patch to be encoded includes three-dimensional information. Including two-dimensional information, rotation transformation information and normal coordinate axis information.
- the first type of patch exists in the current point cloud group
- the number of the first type of patch in the current point cloud group can be the same in each point cloud frame, and when the number of the first type of patch is greater than 1
- the first-type patches in each point cloud frame in the current point cloud group can be arranged in the same order, so when the first identifier is the first value, and the patch to be encoded is the first patch in the current point cloud frame, Indicates that the patch to be encoded is the first patch of the first type in the current point cloud frame.
- the auxiliary information and the first identifier of the patch to be encoded can be encoded into the code stream; when the first identifier is the first value, the patch to be encoded is When the current point cloud frame is not the first patch, it indicates that the patch to be coded is the non-first type I patch in the current point cloud frame.
- the auxiliary information of the patch to be coded can be encoded into the code stream instead of the waiting
- the first identifier of the encoded patch is encoded into the code stream, so that the format of the encoded code stream can be simplified.
- the auxiliary information of the patch to be coded may include three-dimensional information, but not two-dimensional information, rotation transformation information and normal direction. Coordinate axis information.
- the patches in each point cloud frame can be arranged in the order of the first type of patch, the second type of patch and the third type of patch, and then the first type of patch and the second type of patch are also used when encoding.
- the type patch and the third type patch are coded sequentially. So if there is a first-type patch in the current point cloud group, the first patch in each point cloud frame is the first-type patch.
- the number of the first-type patches in each point cloud frame in the current point cloud group can be the same, and when the number of the first-type patches is greater than 1, the number of the first type of patches in each point cloud frame in the current point cloud group
- One type of patches can be arranged in the same order, that is, there is a matching relationship between the first type of patches at the same position in each point cloud frame.
- the first identification of all patches included in the first point cloud frame can be Set to the third value, the patches in other point cloud frames are still arranged in the order of the first type of patch, the second type of patch, and the third type of patch. Therefore, when the first identifier of the patch to be encoded is the first value, it can be determined that the current point cloud frame is the non-first point cloud frame in the current point cloud group.
- the current point cloud frame may be the Kth point cloud frame in the current point cloud group, and K is an integer greater than or equal to 3. That is, the third point cloud frame in the current point cloud group and each point cloud frame after the third point cloud frame can be coded in the manner of S902.
- the point cloud frames in the current point cloud group can be numbered according to two numbering methods.
- the first numbering method point cloud frame 0, point cloud frame 1, point cloud frame 2...;
- the second numbering method point cloud frame 1, point cloud frame 2, point cloud frame 3... Therefore, the above Kth point cloud frame can refer to the point cloud frame 2 in the first numbering method and any point cloud frame after the point cloud frame 2, or it can refer to the point cloud frame 3 and the point cloud frame in the second numbering method.
- the Kth point cloud frame can refer to the third point cloud frame in the actual current point cloud group and the point cloud frames after the third.
- the third point cloud frame in the current point cloud group and each point cloud frame after the third point cloud frame can be coded in the above manner, and for the second point cloud frame in the current point cloud group
- Point cloud frames can be encoded in the following two ways:
- the first possible implementation manner if the current point cloud frame is the second point cloud frame in the current point cloud group, then, when the first identifier of the patch to be encoded is the first value, and the patch to be encoded is the current point cloud
- the first identifier of the patch to be encoded, the number of first-type patches in the current point cloud group, and the auxiliary information of the patch to be encoded can be incorporated into the code stream.
- the auxiliary information of the patch to be coded can be encoded into the code stream instead of the patch to be coded
- the first identifier is incorporated into the code stream.
- the number of first-type patches in the current point cloud group can be obtained.
- the operation of encoding the first identifier of the patch to be encoded, the number of first-type patches in the current point cloud group, and the auxiliary information of the patch to be encoded into the code stream may be: editing the first identifier of the patch to be encoded Enter the code stream, and then encode the number of first-type patches in the current point cloud group into the code stream, and finally, encode the auxiliary information of the patch to be encoded into the code stream. That is, the number of the first-type patch in the current point cloud group is compiled into the code stream after the first identifier of the patch to be encoded.
- the fixed-length encoding method can be used to encode the number of patches of the first type into the code stream, and the variable-length encoding method can also be used to encode the number of patches of the first type into the code stream. Not limited.
- the current point cloud frame is the second point cloud frame in the current point cloud group
- the first value of the patch to be coded can be set
- An identification and auxiliary information are compiled into the code stream. That is, the first identification and auxiliary information of all the first-type patches in the second point cloud frame need to be encoded into the code stream, so that the number of the first-type patches in the current point cloud group can be indicated without The number of the first type patch in the current point cloud group is compiled into the code stream.
- the number of the first-type patch in the current point cloud group can be determined through the second point cloud frame.
- the first patch that is, the first identifier of the first first type patch can be coded It is not necessary to encode the first identifier of the non-first first-type patch into the code stream.
- the first identifier of the patch to be encoded is the third value
- the patch to be encoded is the first patch in the current point cloud frame
- the third point cloud frame in the current point cloud group and the point cloud frames after the third point cloud frame only the first identifier of the first type patch can be compiled into the code stream, instead of the non-first point cloud frame.
- the first identifier of the first type patch is encoded into the code stream, which improves the coding efficiency and reduces the bit overhead of the code stream.
- the first patch in the current point cloud frame can correspond to an identification information, which can also be called an index, and this identification information can uniquely indicate the first patch in the current point cloud frame patch, and the identification information of the first patch can usually be incorporated into the code stream.
- an identification information which can also be called an index
- this identification information can uniquely indicate the first patch in the current point cloud frame patch
- the identification information of the first patch can usually be incorporated into the code stream.
- a counter can be used to determine which patch is the current point cloud frame. Among them, the counter starts counting when the first patch of the current point cloud frame is determined.
- the three-dimensional information of the patch to be encoded may include the offset of the patch to be encoded in the 3D space along the tangent direction (3d_shift_tangent_axis), and the offset of the patch to be encoded in the 3D space along the bitangent direction (3d_shift_bitangent_axis), And the offset of the patch to be encoded in the 3D space along the normal direction (3d_shift_normal_axis).
- the three-dimensional information of the patch to be encoded can be encoded into the code stream according to the three-dimensional information of the reference patch of the patch to be encoded.
- the differential encoding method can be used to encode the three-dimensional information of the patch to be encoded.
- the 3D information is encoded into the code stream, or directly into the code stream, and the specific encoding method is not limited.
- the fixed-length encoding method is adopted to encode the first identifier of the patch to be encoded into the code stream.
- differential encoding to encode the three-dimensional information of the patch to be encoded into the code stream refers to encoding the difference between the three-dimensional information of the patch to be encoded and the three-dimensional information of the reference patch of the patch to be encoded into the code stream.
- the auxiliary information of the patch to be encoded and the first identifier are encoded into the code stream.
- the first identifier when the first identifier is the second value, it indicates that the patch to be encoded is a second type of patch.
- the second type of patch can be a local matching patch in the current point cloud group.
- the auxiliary information of the patch to be encoded includes two-dimensional information and three-dimensional information. Information and identification information of the reference patch of the patch to be encoded.
- the first identifier is the third value, it indicates that the patch to be coded is a third type of patch.
- the third type of patch can be a non-matching patch in the current point cloud group.
- the auxiliary information of the patch to be coded includes two-dimensional information, three-dimensional information, Rotation transformation information and normal coordinate axis information.
- the second type of patch has a matching relationship in the reference frame of the current point cloud frame, and the rotation transformation information and normal coordinate axis information between the second type of patch and its reference patch are the same, and the two-dimensional information and the three-dimensional information It may be different.
- the third type of patch does not have a matching patch in the reference frame of the current point cloud frame. Therefore, in order to reduce the bit overhead of the code stream and improve the coding efficiency, when the first identifier is the first value
- the auxiliary information of the patch to be encoded may include three-dimensional information, but not two-dimensional information, rotation transformation information, and normal coordinate axis information.
- the auxiliary information of the patch to be encoded may include two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded, but does not include rotation transformation information and normal coordinate axis information.
- the auxiliary information of the patch to be encoded may include two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
- the two-dimensional information of the patch to be encoded may include the offset (2d_shift_u) of the patch to be encoded in the current point cloud frame occupancy map along the u axis, and the patch to be encoded in the current point cloud frame occupancy map along the v axis
- the syntax element of the reference patch of the patch to be encoded may be patchIndex, which is used to indicate the identification information of the reference patch; the syntax element may also include the identification information of the reference frame where the reference patch is located: frameIndex.
- the syntax element of the rotation transformation information of the patch to be encoded may be rotation.
- the identification information of the reference patch of the patch to be encoded may be used to indicate the reference patch of the patch to be encoded.
- the normal axis information may be the normal axis index of the patch to be encoded, for example, the normal axis index of the normalAxis may be 0, 1, or 2, for the X axis, Y axis, and Z axis, respectively.
- the two-dimensional information and three-dimensional information of the patch to be encoded can be compiled into the code stream according to the two-dimensional information and three-dimensional information of the reference patch of the patch to be encoded.
- the differential encoding method encodes the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream, and a more accurate predictive differential method can also be used to encode the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream.
- the specific encoding method is not used. limited.
- the identification information and the first identification of the reference patch of the patch to be encoded are encoded into the code stream using a fixed-length encoding method.
- the fixed-length encoding method can be used to encode the two-dimensional information, three-dimensional information, rotation transformation information, normal axis information and the first identifier of the patch to be encoded into the code stream, or variable
- the long encoding method encodes the two-dimensional information, three-dimensional information, rotation transformation information, normal coordinate axis information, and first identifier of the patch to be encoded into the code stream, which is not limited in the embodiment of the present application.
- using differential encoding to encode the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream refers to the difference between the two-dimensional information of the patch to be encoded and the two-dimensional information of the reference patch of the patch to be encoded, and The difference between the three-dimensional information of the coded patch and the three-dimensional information of the reference patch of the patch to be coded is encoded into the code stream.
- the first identifier of the first first-type patch in the current point cloud frame the first identifier of each second-type patch, and the first identifier of each third-type patch in the current point cloud frame
- the logo needs to be programmed into the code stream.
- the auxiliary information of each patch included in the current point cloud frame also needs to be compiled into the code stream. There may be the following three possible implementation methods for the encoding method of the first identification and auxiliary information.
- the first identifiers of multiple patches included in the current point cloud frame can be packaged together and compiled into the code stream, and the first identifiers of the multiple patches include the first identifier of the patch to be encoded, and Except the patch to be coded, the remaining first identifier of the patch whose value is the second value or the third value among the multiple patches.
- the auxiliary information of each patch included in the current point cloud frame can be individually packaged and compiled into a code stream. For example, the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged together and compiled into the code stream. Then, the auxiliary information of each patch included in the current point cloud frame is packaged one by one and compiled into the code stream.
- the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged separately
- the auxiliary information of each patch included in the current point cloud frame can also be packaged separately and compiled into the code stream. For example, you can first encode the first identifier of the first patch in the current point cloud frame into the code stream, and then encode the auxiliary information of the first patch into the code stream. Then, the auxiliary information of other first-type patches in the current point cloud frame is compiled into the code stream one by one. Finally, for the remaining patches, that is, the second type of patch and the third type of patch, the coding can be performed in a way that the first identifier is first compiled, and then the auxiliary information is compiled.
- the first identifiers of multiple patches included in the current point cloud frame can be packaged together and compiled into the code stream, and the first identifiers of the multiple patches include the first identifier of the patch to be encoded, and Except the patch to be coded, the remaining first identifier of the patch whose value is the second value or the third value among the multiple patches.
- the same type of information in the auxiliary information of each patch can be packaged together and compiled into the code stream. Different types of information in the auxiliary information of each patch can be individually packaged and compiled into the code stream.
- the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged together and compiled into the code stream.
- the auxiliary information of each patch includes rotation transformation information and normal coordinate axis information
- some auxiliary information of patches includes two-dimensional information or three-dimensional information
- some auxiliary information of patches does not include two-dimensional information or
- the rotation transformation information and normal coordinate axis information in the auxiliary information of each patch are packaged together and compiled into the code stream.
- the two-dimensional information and three-dimensional information in the auxiliary information of each patch are individually packaged and compiled into the code stream.
- the first value, the second value, and the third value may be binary 10, 11, and 00 respectively, or the first value, the second value, and the third value may be binary 11, 10, and 00, etc., respectively.
- the reference patch of the coded patch is included in the reference frame of the current point cloud frame, which is not limited in the embodiment of the present application.
- the patches in each point cloud frame in the current point cloud group can be arranged in the order of the first type of patch, the second type of patch, and the third type of patch.
- the patch to be coded is the first third type of patch
- the fixed-length encoding method may be used for encoding, or the variable-length encoding method may be used, which is not limited in the embodiment of the present application.
- the 2D information and 3D information of the patch to be coded can be encoded into the code stream using the differential encoding method, and other The information is also encoded using the fixed-length encoding method described above.
- the different values of the first identifier indicate different types of patches. Therefore, different types of patches can be distinguished by the first identifier, and for different types of patches, the content of the auxiliary information compiled into the code stream may be different, and for the first type of patch and the second type of patch , Only part of the auxiliary information is compiled into the code stream. In this way, the format of the code stream can be simplified, and the bit overhead of the code stream can be further reduced, thereby improving the coding efficiency.
- a point cloud decoding method includes: when the point cloud block patch to be decoded is the first patch in the current point cloud frame, parsing the first identifier of the patch to be decoded from the code stream; When the first identifier is the first value, the auxiliary information of the patch to be decoded is parsed from the code stream.
- the auxiliary information includes the three-dimensional information of the patch to be decoded; when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and less than or equal to the number of patches of the first type in the reference point cloud frame of the current point cloud frame, parse the auxiliary information of the patch to be decoded from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded; Decode the auxiliary information of the patch and reconstruct the patch to be decoded.
- the to be decoded can be parsed from the code stream The first ID of the patch.
- the code stream includes the identification information of the patch to be decoded, and if the identification information of the patch to be decoded is included, it can be determined that the patch to be decoded is the first patch in the current point cloud frame. If the identification information of the patch to be decoded is not included, it can be determined that the patch to be decoded is the non-first patch in the current point cloud frame. At this time, the number of the patch to be decoded in the current point cloud frame can be determined according to the counter. Among them, the counter starts counting when the first patch of the current point cloud frame is determined.
- the first identifier is the first value, it indicates that the patch to be decoded is the first type of patch, that is, the patch to be decoded has a matching patch in all point cloud frames in the current point cloud group.
- the auxiliary information of the patch to be decoded can be parsed from the code stream.
- the auxiliary information includes the three-dimensional information of the patch to be decoded, but does not include the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
- the number of patches of the first type can be parsed from the code stream by a method that matches the encoding end.
- fixed-length decoding or variable-length decoding can be used to parse the number of patches of the first type from the code stream.
- the first identifier when the first identifier is the first value, it can indicate that the current point cloud frame is the non-first point cloud frame in the current point cloud group.
- the patch to be decoded can be decoded through the following two possible implementation methods.
- the first possible implementation is the first identification of the first patch in the second point cloud frame in the current point cloud group, and the number of the first type of patch included in each point cloud frame in the current point cloud group Code stream together.
- the first patch to be decoded can be parsed from the code stream. Identification, when the first identification is the first value, the number of the first-type patches included in each point cloud frame in the current point cloud group is analyzed from the code stream. Then parse the auxiliary information of the patch to be decoded from the code stream.
- the first identifiers of the first type patch included in the second point cloud frame in the current point cloud group are all encoded into the code stream.
- the first identifier of the patch to be decoded can be parsed from the code stream.
- the first identifier is the first value
- the patch to be decoded is parsed from the code stream. Supplementary information.
- the first identifier of the non-first first-type patch is not encoded into the code stream, so when the patch to be decoded is the nth in the current point cloud frame
- n is greater than 1 and less than or equal to the number of first-type patches in the reference point cloud frame of the current point cloud frame, it indicates that the patch to be decoded is not the first first-type patch in the current point cloud frame.
- the auxiliary information of the patch to be decoded can be parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
- the auxiliary information of the first type of patch that is encoded into the code stream during the encoding process includes three-dimensional information, but does not include two-dimensional information, rotation transformation information and normal coordinate axis information
- the patch to be decoded is the first type of patch
- the auxiliary information parsed from the code stream includes the three-dimensional information of the patch to be decoded, but does not include the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
- the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded can also be obtained according to the auxiliary information of the reference patch of the patch to be decoded.
- a method matching the encoding end may be used for decoding, for example, a differential decoding method may be used to parse the three-dimensional information of the patch to be decoded from the code stream.
- the identification information of the reference frame of the current point cloud frame can be parsed from the code stream, and then according to the The identification information of the reference frame determines the reference frame of the current point cloud frame, and then obtains the two-dimensional information, rotation transformation information and normal coordinate axis information of the reference patch of the patch to be decoded from the reference frame of the current point cloud frame, and refers to the patch
- the two-dimensional information, rotation transformation information and normal coordinate axis information of the patch are used as the two-dimensional information, rotation transformation information and normal coordinate axis information of the patch to be decoded.
- the reference frame of the current point cloud frame may also have a corresponding reference frame, that is, the reference patch in the reference frame of the current point cloud frame also has a corresponding reference patch.
- the reference frame of the current point cloud frame is recorded Is the first reference frame, and the reference frame corresponding to the reference frame of the current point cloud frame is marked as the second reference frame.
- the auxiliary information of the reference patch in the first reference frame can be based on the corresponding reference in the second reference frame
- the auxiliary information of the patch is determined.
- the auxiliary information of the patch to be decoded can be obtained step by step according to the reference frame of the current point cloud frame, the reference frame corresponding to the reference frame of the current point cloud frame, etc.
- the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch whose position is the same as that of the patch to be decoded in the current point cloud frame can be obtained from the decoded point cloud, and the obtained two-dimensional information,
- the rotation transformation information and the normal coordinate axis information are used as the two-dimensional information, the rotation transformation information and the normal coordinate axis information of the patch to be decoded.
- the auxiliary information of the patch to be decoded can also be obtained according to the auxiliary information of the reference patch of the to-be-decoded patch to assist
- the information includes two-dimensional information, rotation transformation information, and normal coordinate axis information.
- reconstructing the patch to be decoded according to the auxiliary information of the patch to be decoded includes: reconstructing the patch to be decoded according to the two-dimensional information, three-dimensional information, normal coordinate axis information, and rotation transformation information of the decoded patch.
- the reference patch of the patch to be decoded can be the position in the reference frame of the current point cloud frame and the patch to be decoded A patch with the same position in the current point cloud frame.
- the counter can be used to determine the number of patches in the current point cloud frame to be decoded.
- the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame
- the patch to be decoded can be determined It is the non-first first-type patch in the current point cloud frame, so that the auxiliary information of the patch to be decoded can be parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
- the number of first-type patches included in each point cloud frame in the current point cloud group can be determined in two ways.
- the first possible implementation is that after decoding the first identifier of the first patch in the second point cloud frame in the current point cloud group, each point in the current point cloud group can be directly parsed from the code stream The number of first-type patches included in the cloud frame.
- the second possible implementation manner after decoding the first identifiers of all patches of the second point cloud frame in the current point cloud group, the number of patches with the first identifier as the first value can be determined, so as to determine The number of first-type patches included in the second point cloud frame, that is, the number of first-type patches included in each point cloud frame in the current point cloud group. That is, the number of first-type patches included in each point cloud frame in the current point cloud group can be determined through the second point cloud frame.
- the second point cloud frame in the current point cloud group can be used as the reference point cloud frame of the third point cloud frame
- the third point cloud frame can be used as the reference point cloud frame of the fourth point cloud frame Point cloud frame, and so on.
- the third point cloud frame and the point cloud frames after the third can determine whether n in the nth patch in the current point cloud frame is greater than 1 and based on the number of the first type of patch in the reference point cloud frame
- the number of the first-type patch in the reference point cloud frame of the current point cloud frame is less than or equal to, so as to determine whether the patch to be decoded is the first-type patch.
- the first identifier of the first patch in the current point cloud frame, and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged separately and compiled into the code stream, Can be packaged together and compiled into code stream. Therefore, for the respective methods of packaging and encoding into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identifier of the patch to be decoded can be parsed from the code stream. Of course, for patches that take the second value or the third value other than the first patch, the first identifier of the patch to be decoded can also be parsed from the code stream.
- the first identifier of the first patch to be decoded in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be parsed in sequence.
- the patch to be decoded is the first patch in the current point cloud frame
- the first identification of multiple patches included in the current point cloud frame can be parsed from the code stream
- the multiple first identifiers parsed include the first identifier of the patch to be decoded. That is, the first identifiers of multiple patches included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis.
- the same type of information in the auxiliary information of each patch included in the current point cloud frame is also packaged and compiled into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, you can The code stream parses the same type of information in the auxiliary information of each patch included in the current point cloud frame. That is, the same type of information in the auxiliary information of each patch included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis.
- a method of matching with the encoding end may be used to parse the first identifier of the patch to be decoded from the code stream.
- a fixed-length decoding method can be used to parse the first identifier of the patch to be decoded from the code stream.
- the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and greater than the number of first-type patches in the reference point cloud frame of the current point cloud frame, the to-be-decoded patch is parsed from the code stream The first ID of the patch.
- the first identifier is encoded into the code stream, so when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and greater than the current
- the point cloud frame refers to the number of the first-type patch in the point cloud frame, it indicates that the patch to be decoded is a second-type patch or a third-type patch.
- the first identifier of the patch to be decoded can be parsed from the code stream.
- the auxiliary information of the patch to be decoded is parsed from the code stream.
- the auxiliary information includes the two-dimensional information, the three-dimensional information of the patch to be decoded, and the identification information of the reference patch of the patch to be decoded.
- the first identifier is the second value, it indicates that the patch to be decoded is a second type of patch, that is, there is a reference patch matching the patch to be decoded in the reference frame of the current point cloud frame.
- the auxiliary information of the patch to be decoded can be parsed from the code stream.
- the auxiliary information includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be decoded, but does not include rotation transformation information and normal coordinate axis information.
- the identification information of the reference patch of the patch to be decoded can be parsed from the code stream by a method matching the encoding end, for example, a fixed-length decoding method can be used for analysis.
- the reference patch of the reference patch to be decoded can be determined through the identification information of the reference patch to be decoded, and then the rotation transformation information and normal coordinates of the reference patch to be decoded are obtained.
- the two-dimensional information and three-dimensional information of the patch to be decoded can be parsed from the code stream in a differential decoding manner. That is, for the second type of patch, two-dimensional information and three-dimensional information can be parsed from the code stream, while the rotation transformation information and the normal coordinate axis information are derived or obtained, thus avoiding the need to include in the code stream
- the rotation transformation information and the normal coordinate axis information also reduce the bit overhead of the code stream and improve the decoding efficiency at the same time.
- reconstructing the patch to be decoded according to the auxiliary information of the patch to be decoded includes: reconstructing the patch to be decoded according to the two-dimensional information, three-dimensional information, normal coordinate axis information, and rotation transformation information of the patch to be decoded.
- the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information includes the two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information of the patch to be decoded.
- the first identifier is the third value, it indicates that the patch to be decoded is a third type of patch, that is, there is no reference patch matching the patch to be decoded in the current point cloud group.
- the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded can be parsed from the code stream.
- a method that matches the encoding end can be used for decoding.
- fixed-length decoding can be used to parse the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded from the code stream.
- the variable-length decoding method can also be used to parse the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded from the code stream, which is not limited in the embodiment of the present application.
- the auxiliary information of the first third-type patch is coded according to fixed-length coding or variable-length coding
- the two-dimensional information and three-dimensional information of the non-first third-type patch are coded by differential coding
- other auxiliary information is coded Encode with fixed-length encoding.
- the two-dimensional information and three-dimensional information of the patch to be decoded are parsed from the code stream by differential decoding, and fixed
- the long decoding method parses the rotation transformation information and normal coordinate axis information of the patch to be decoded from the code stream.
- the non-first third type of patch two-dimensional information and three-dimensional information can be parsed from the code stream, and the rotation transformation information and the normal coordinate axis information are derived or obtained, so as to avoid
- the bit overhead of the code stream is also reduced, and the decoding efficiency is improved.
- the first value, the second value, and the third value may be binary 10, 11, and 00 respectively, or the first value, the second value, and the third value may be binary 11, 10, and 00, etc., respectively.
- the application embodiment does not limit this.
- the first type patch, the second type patch, and the third type patch in each point cloud frame in the current point cloud group can be arranged in sequence.
- the patch to be decoded is the first in the current point cloud frame A patch
- the auxiliary information of the patch to be decoded that is, after obtaining the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded
- the auxiliary information can be reproduced according to but not limited to these auxiliary information.
- this application does not limit the specific information needed to reconstruct the patch to be decoded.
- auxiliary information needs to be parsed from the code stream, and other auxiliary information can be derived or obtained, which can simplify the format of the code stream. , Reduce the bit overhead of the code stream, thereby improving the efficiency of decoding.
- a point cloud coding method includes: obtaining auxiliary information of a point cloud block patch to be coded and a first identifier of the patch to be coded; when the first identifier is a first value, the patch to be coded.
- the auxiliary information, the first identifier, and the second identifier of the patch to be encoded are encoded into the code stream, and the patch to be encoded is the first patch in the current point cloud frame; or, when the first identifier is the first value, the patch to be encoded
- the auxiliary information and the second identifier of the patch to be encoded are encoded into the code stream, the patch to be encoded is the non-first patch in the current point cloud frame; the first identifier is the first value to indicate that the patch to be encoded is the first type of patch ;
- the second identifier is the fourth value to indicate that the three-dimensional information of the patch to be encoded is not encoded into the code stream; or the second identifier is the fifth value to indicate
- the first type of patch has matching patches in all point cloud frames in the current point cloud group, and the two-dimensional information, rotation transformation information and normal coordinate axis between the first type of patches in the current point cloud group
- the information is the same, but the three-dimensional information may be different, but in some cases, the three-dimensional information of the first type of patch can also be the same.
- the first identifier is the first value, it can indicate that the patch to be encoded is the first type of patch, and the information encoded into the code stream can also include the second identifier.
- the second identifier is used to indicate whether the three-dimensional information of the patch to be encoded has been encoded into the code stream.
- the syntax element of the second identification may be override_3d_shift_data_flag.
- the second identifier is the fourth value, it can indicate that the three-dimensional information of the patch to be encoded is not encoded into the code stream. That is, the three-dimensional information of the patch to be encoded is the same as the three-dimensional information of the reference patch of the patch to be encoded, so there is no need to re-encode the three-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded may not include the three-dimensional information. information.
- the second identifier is the fifth value
- the specific encoding method is not limited here. For example, a differential encoding method may be used, or a fixed-length encoding method may be used.
- the syntax element of the fourth value may be false, and the syntax element of the fifth value may be true.
- the first identifier when the first identifier is the second value, it may indicate that the patch to be encoded is a second-type patch. That is, there is a reference patch that matches the patch to be encoded in the reference frame of the current point cloud frame.
- the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded.
- the first identifier when it is a third value, it may indicate that the patch to be encoded is a third-type patch. That is, there is no reference patch that matches the patch to be encoded in the reference frame of the current point cloud frame.
- the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information.
- the patch to be encoded is the first patch in the current point cloud frame.
- the auxiliary information, the first identifier and the second identifier of the patch to be encoded can be encoded into the code stream; when the first identifier is the first value, When the patch to be coded is the non-first patch in the current point cloud frame, it indicates that the patch to be coded is the non-first type 1 patch in the current point cloud frame, and the auxiliary information and the second identifier of the patch to be coded can be coded Instead of coding the first identifier of the patch to be coded into the code stream, the format of the code stream can be simplified.
- the second identifier is an identifier used to indicate whether the three-dimensional information of the patch to be encoded has been encoded into the code stream.
- the second identifier is the fourth value, it indicates that the three-dimensional information of the patch to be encoded is not encoded into the code stream. That is, the three-dimensional information of the patch to be encoded is the same as the three-dimensional information of the reference patch of the patch to be encoded, so there is no need to re-encode the three-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded may not include the three-dimensional information. Information, in this way, can further reduce the bit overhead of the code stream, thereby improving the coding efficiency.
- a point cloud decoding method includes: when the point cloud block patch to be decoded is the first patch in the current point cloud frame, parsing the first identifier of the patch to be decoded from the code stream; When an identifier is the first value, analyze the second identifier of the patch to be decoded from the code stream; when the second identifier is the fourth value, determine the auxiliary information of the patch to be decoded according to the auxiliary information of the reference patch of the patch to be decoded; When the second identifier is the fifth value, the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded; when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and less than or equal to the number of first-type patches in the reference point cloud frame of the current point cloud frame, the second identifier of the patch to be decoded is parsed
- the second identifier when the second identifier is the fourth value, it may indicate that the three-dimensional information of the patch to be decoded is not encoded into the code stream. That is, the 3D information of the patch to be decoded is the same as the 3D information of the reference patch of the patch to be decoded.
- the auxiliary information of the patch to be decoded can be determined according to the auxiliary information of the reference patch of the patch to be decoded. Specifically, the auxiliary information of the reference patch of the patch to be decoded may be used as the auxiliary information of the patch to be decoded.
- the second identifier When the second identifier is the fifth value, it can indicate that the 3D information of the patch to be decoded has been encoded into the bitstream, and the auxiliary information of the patch to be decoded includes 3D information.
- the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
- a differential decoding method can be used to parse the auxiliary information of the patch to be decoded from the code stream. The specific method can refer to the previous article.
- the second identifiers of the non-first first-type patch in the current point cloud frame are all encoded into the bitstream, when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and greater than the current
- the point cloud frame refers to the number of the first-type patch in the point cloud frame, that is, when the patch to be decoded is not the first first-type patch
- the second identifier of the patch to be decoded can be parsed from the code stream.
- the patch to be decoded is parsed from the code stream
- the first identifier is the first value, it indicates that the patch to be decoded is the first patch of the first type.
- the second identifier of the patch to be decoded can be parsed from the code stream.
- the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame, it indicates that the patch to be decoded is not the first A first-type patch, at this time, the second identifier of the patch to be decoded can be parsed from the code stream.
- the second identifier is the fourth value, it indicates that the three-dimensional information of the patch to be decoded is not encoded into the code stream. That is, the three-dimensional information of the patch to be decoded is the same as the three-dimensional information of the reference patch of the patch to be decoded.
- the three-dimensional information of the reference patch of the patch to be decoded can be used as the three-dimensional information of the patch to be decoded, without the need to extract from the code stream Parsing the three-dimensional information of the patch to be decoded can simplify the format of the parsing code stream, reduce the bit overhead of the code stream, and improve the efficiency of decoding.
- a point cloud coding method comprising: obtaining auxiliary information of a point cloud block to be coded and a first identifier of the patch to be coded; when the first identifier is a first value, the patch to be coded When the first identifier is the second value or the third value, the auxiliary information of the patch to be encoded and the first identifier are encoded into the code stream; where the first identifier is the first value to indicate The patch to be coded is the first type of patch; the first identifier is the second value to indicate that the patch to be coded is the second type of patch, and the auxiliary information of the patch to be coded includes two-dimensional information, three-dimensional information and the reference patch of the patch to be coded Identification information; where the first identification is a third value to indicate that the patch to be encoded is a third type of patch.
- the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
- the first identifier When the first identifier is the first value, it indicates that the patch to be encoded is the first type of patch.
- the first-type patch has patches with matching relationships in all point cloud frames in the current point cloud group, and two-dimensional information between the first-type patches in the current point cloud group , 3D information, rotation transformation information and normal coordinate axis information are all the same. Therefore, in order to reduce the bit overhead of the code stream and improve the coding efficiency, when the first identifier is the first value, the first identifier of the patch to be coded is encoded into the code stream instead of the auxiliary information of the patch to be coded. Code stream.
- the first identifier of the patch to be encoded is the first value
- the first identifier of the patch to be coded can be encoded into the code stream, instead of coding the auxiliary information of the patch to be coded into the code stream, so that the format of the code stream can be simplified.
- the value of the first identifier may be the first value, the second value, and the third value. Different values indicate different types of patches.
- auxiliary information encoded in the code stream may be different, and for the first type of patch and the second type of patch , Only part of the auxiliary information is compiled into the code stream. In this way, the format of the code stream can be simplified, and the bit overhead of the code stream can be further reduced, thereby improving the coding efficiency.
- a point cloud decoding method includes: parsing a first identifier of a point cloud block patch to be decoded from a code stream; when the first identifier is a first value, according to the reference patch of the patch to be decoded
- the auxiliary information determines the auxiliary information of the patch to be decoded.
- the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information; when the first identifier is the second value, it is parsed from the code stream The auxiliary information of the patch to be decoded.
- the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be decoded; when the first identifier is the third value, parse the patch to be decoded from the code stream
- the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information; according to the auxiliary information of the patch to be decoded, the patch to be decoded is reconstructed.
- the first identifiers of all patches in the current point cloud frame can be individually packaged and compiled into a code stream, or they can be packaged together and compiled into a code stream. Therefore, for the respective methods of packaging and encoding into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identifier of the patch to be decoded can be parsed from the code stream. Of course, for the non-first patch, the first identifier of the patch to be decoded can also be parsed from the code stream. That is, the first identifier of each patch to be decoded in the current point cloud frame can be analyzed sequentially.
- the patch to be decoded is the first patch in the current point cloud frame
- the first identification of multiple patches included in the current point cloud frame can be parsed from the code stream , wherein the multiple first identifiers parsed include the first identifier of the patch to be decoded. That is, the first identifiers of multiple patches included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis.
- a method of matching with the encoding end may be used to parse the first identifier of the patch to be decoded from the code stream.
- a fixed-length decoding method can be used to parse the first identifier of the patch to be decoded from the code stream.
- the reference patch of the patch to be decoded can be Auxiliary information to obtain 2D information, 3D information, rotation transformation information and normal coordinate axis information of the patch to be decoded.
- the identification information of the reference frame of the current point cloud frame can be parsed from the code stream, so as to determine the reference frame of the current point cloud frame according to the identification information of the reference frame, and then from the reference frame of the current point cloud frame Obtain the 2D information, 3D information, rotation transformation information and normal coordinate axis information of the reference patch of the patch to be decoded, and use the 2D information, 3D information, rotation transformation information and normal coordinate axis information of the reference patch as the information to be decoded Patch's two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information.
- the reference frame of the current point cloud frame may also have a corresponding reference frame, that is, the reference patch in the reference frame of the current point cloud frame also has a corresponding reference patch.
- the reference frame of the current point cloud frame is recorded Is the first reference frame, and the reference frame corresponding to the reference frame of the current point cloud frame is marked as the second reference frame.
- the auxiliary information of the reference patch in the first reference frame can be based on the corresponding reference in the second reference frame
- the auxiliary information of the patch is determined.
- the auxiliary information of the patch to be decoded can be obtained step by step according to the reference frame of the current point cloud frame, the reference frame corresponding to the reference frame of the current point cloud frame, etc.
- the position of the patch whose position is the same as that of the patch to be decoded in the current point cloud frame can also be obtained from the decoded point cloud.
- Two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information, and the obtained two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information are used as the two-dimensional information, rotation transformation information and information of the patch to be decoded. Normal axis information.
- the reference patch of the patch to be decoded can be the reference of the current point cloud frame
- the patch whose position in the frame is the same as the position of the patch to be decoded in the current point cloud frame.
- the auxiliary information of the second type of patch that is incorporated into the code stream during the encoding process includes two-dimensional information, three-dimensional information, and identification information of the reference patch, but does not include rotation transformation information and normal coordinate axis information
- the auxiliary information parsed from the code stream includes the two-dimensional information, three-dimensional information of the patch to be decoded, and the identification information of the reference patch of the patch to be decoded, but does not include the rotation transformation information and information of the patch to be decoded.
- Normal axis information At this time, the rotation transformation information and normal coordinate axis information of the patch to be decoded can also be obtained according to the identification information of the reference patch of the patch to be decoded.
- auxiliary information can be derived or obtained.
- the auxiliary information can also be derived or obtained. In this way, the format of the parsing code stream can be simplified, the bit overhead of the code stream can be reduced, and the decoding efficiency can be improved.
- a point cloud encoding device comprising: a point cloud block patch information acquisition module for acquiring auxiliary information of the point cloud block patch to be encoded and a first identifier of the patch to be encoded; auxiliary information encoding module , Used to encode the auxiliary information of the patch to be encoded and the first identifier into the code stream when the first identifier is the first value, the patch to be encoded is the first patch in the current point cloud frame; or the auxiliary information encoding module, using When the first identifier is the first value, the auxiliary information of the patch to be encoded is encoded into the code stream, and the patch to be encoded is the non-first patch in the current point cloud frame; the first identifier is the first value to indicate the The coded patch is the first type of patch, and the auxiliary information of the patch to be coded includes three-dimensional information.
- the current point cloud frame is the Kth point cloud frame in the current group, and K is an integer greater than or equal to 3.
- the auxiliary information encoding module is also used for:
- the first identifier is the second value or the third value
- the first identifier is the second value to indicate that the patch to be encoded is a second type of patch, and the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded;
- the first identifier is a third value to indicate that the patch to be encoded is a third type of patch.
- the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
- the auxiliary information encoding module is also used for:
- the first identifiers of the multiple patches included in the current point cloud frame are encoded into the code stream, the first identifiers of the multiple patches include the first identifiers of the patch to be encoded, and the first identifiers of the multiple patches are excluding the patch to be encoded
- the remaining first identifier besides the first identifier is the second value or the third value.
- the first value, the second value and the third value are binary 10, 11 and 00 respectively,
- the first value, the second value, and the third value are 11, 10, and 00 in binary, respectively.
- the first identifier of the patch to be encoded is the third value, and the patch to be encoded is the first patch in the current point cloud frame.
- the reference patch of the patch to be encoded is included in the reference frame of the current point cloud frame.
- the first type of patch is a global matching patch in the current group
- the second type of patch is a local matching patch in the current group
- the third type of patch is a non-matching patch in the current group.
- a point cloud decoding device includes: an auxiliary information decoding module, configured to parse the to-be-decoded point cloud block patch from the current point cloud frame when the patch to be decoded is the first patch in the current point cloud frame The first identifier of the patch; the auxiliary information decoding module is also used to parse the auxiliary information of the patch to be decoded from the code stream when the first identifier is the first value.
- the auxiliary information includes the three-dimensional information of the patch to be decoded; the auxiliary information
- the decoding module is also used for when the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame, from
- the auxiliary information of the patch to be decoded is parsed in the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded; the reconstruction module is used to reconstruct the patch to be decoded according to the auxiliary information of the patch to be decoded.
- the current point cloud frame is the Kth point cloud frame in the current group, and K is an integer greater than or equal to 3.
- the auxiliary information decoding module is also used for:
- the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and greater than the number of the first type of patch in the reference point cloud frame of the current point cloud frame, parse the patch to be decoded from the code stream First logo
- the auxiliary information includes the two-dimensional information, three-dimensional information of the patch to be decoded, and identification information of the reference patch of the patch to be decoded;
- the auxiliary information of the patch to be decoded is parsed from the code stream.
- the auxiliary information includes the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
- the auxiliary information decoding module is also used for:
- the first identifiers of multiple patches included in the current point cloud frame are parsed from the code stream, and the multiple first identifiers parsed include the patch to be decoded A first identifier, and the remaining first identifiers among the plurality of first identifiers except the first identifier of the patch to be decoded are the second value or the third value.
- the first value, the second value and the third value are binary 10, 11 and 00 respectively,
- the first value, the second value, and the third value are 11, 10, and 00 in binary, respectively.
- the current point cloud frame is the first point cloud frame.
- the auxiliary information decoding module is further configured to:
- the reconstruction module is also used to:
- the patch to be decoded is reconstructed.
- the auxiliary information decoding module is also used to:
- the reconstruction module is also used to:
- the patch to be decoded is reconstructed.
- the reference patch of the patch to be decoded is included in the reference frame of the current point cloud frame.
- a point cloud encoding device comprising: a point cloud block patch information acquisition module for acquiring auxiliary information of the point cloud block patch to be encoded and a first identifier of the patch to be encoded; auxiliary information encoding module , Used to encode the auxiliary information of the patch to be encoded, the first identifier and the second identifier of the patch to be encoded into the code stream when the first identifier is the first value, the patch to be encoded is the first patch in the current point cloud frame Or auxiliary information encoding module, when the first identifier is the first value, the auxiliary information of the patch to be encoded and the second identifier of the patch to be encoded into the code stream, and the patch to be encoded is the non-information in the current point cloud frame
- the first patch; where the first identifier is the first value to indicate that the patch to be encoded is the first type of patch; where the second identifier is the fourth value to indicate that the three-dimensional information of the patch to be
- a point cloud decoding device includes: an auxiliary information decoding module for analyzing the to-be-decoded point cloud block patch from the current point cloud frame when the patch to be decoded is the first patch in the current point cloud frame The first identifier of the patch; the auxiliary information decoding module is also used to parse the second identifier of the patch to be decoded from the code stream when the first identifier is the first value; the auxiliary information decoding module is also used to When the identifier is the fourth value, the auxiliary information of the patch to be decoded is determined according to the auxiliary information of the reference patch of the patch to be decoded; when the second identifier is the fifth value, the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information Including the three-dimensional information of the patch to be decoded; the auxiliary information decoding module is also used when the patch to be decoded is the nth patch in the current point cloud frame
- a point cloud encoding device comprising: a point cloud block patch information acquisition module for acquiring auxiliary information of the point cloud block patch to be encoded and a first identifier of the patch to be encoded; auxiliary information encoding The module is used to encode the first identifier of the patch to be encoded into the code stream when the first identifier is the first value; the auxiliary information encoding module is also used to when the first identifier is the second value or the third value, The auxiliary information of the patch to be encoded and the first identifier are encoded into the code stream; the first identifier is the first value to indicate that the patch to be encoded is a first type of patch; the first identifier is the second value to indicate the patch to be encoded It is the second type of patch.
- the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded; the first identifier is a third value to indicate that the patch to be encoded is a third-type patch,
- the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information.
- a point cloud decoding device includes: an auxiliary information decoding module for parsing the first identifier of the point cloud block patch to be decoded from the code stream; the auxiliary information decoding module is also used for When the first identifier is the first value, the auxiliary information of the patch to be decoded is determined according to the auxiliary information of the reference patch of the patch to be decoded.
- the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis. Information; the auxiliary information decoding module is also used to parse the auxiliary information of the patch to be decoded from the code stream when the first identifier is the second value.
- the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information and the patch to be decoded Reference patch identification information; the auxiliary information decoding module is also used to parse the auxiliary information of the patch to be decoded from the code stream when the first identifier is the third value.
- the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information Information, rotation transformation information, and normal coordinate axis information; the reconstruction module is used to reconstruct the patch to be decoded according to the auxiliary information of the patch to be decoded.
- the auxiliary information decoding module is also used to:
- the reconstruction module is also used to:
- the patch to be decoded is reconstructed.
- a device for encoding point cloud data may include a memory and an encoder.
- the memory is used to store point cloud data.
- the encoder is used to implement the point cloud coding method provided by the first aspect or any possible design of the first aspect, or the encoder is used to implement the points provided by the third aspect or any possible design of the third aspect.
- the cloud coding method, or the encoder is used to execute the point cloud coding method provided by any possible design of the fifth aspect or the fifth aspect.
- a device for decoding point cloud data may include a memory and a decoder.
- the memory is used to store point cloud data in the form of a code stream.
- the decoder is used to implement the point cloud decoding method provided by the foregoing second aspect or any possible design of the second aspect, or the decoder is used to implement the points provided by any possible design of the foregoing fourth aspect or the fourth aspect
- the cloud decoding method, or the decoder is used to execute the point cloud decoding method provided by the sixth aspect or any one of the possible designs of the sixth aspect.
- an encoding device including: a memory and a processor; wherein the memory is used for storing program code; the processor is used for calling the program code to execute the first aspect or the third aspect or the fifth aspect.
- Point cloud coding method provided by the aspect.
- a decoding device including: a memory and a processor; wherein the memory is used to store program code; the processor is used to call the program code to execute the second aspect or the fourth aspect or the sixth aspect.
- the point cloud decoding method provided by the aspect.
- the present application also provides a computer-readable storage medium, including program code, which when run on a computer, causes the computer to execute the first aspect and its possible designs, or the third aspect and its possible designs, Or any point cloud coding method provided by the fifth aspect and its possible designs.
- This application also provides a computer-readable storage medium, including program code, which when run on a computer, causes the computer to execute the second aspect and its possible designs, or the fourth aspect and its possible designs, or Any point cloud decoding method provided by the sixth aspect and its possible designs.
- This application also provides a computer program product, which when the computer program product runs on a computer, causes the computer to execute any possible design of the first aspect or the first aspect, or execute the third aspect or the third aspect Any possible design, or execute part or all of the steps of the point cloud coding method provided by the fifth aspect or any possible design of the fifth aspect.
- This application also provides a computer program product, which when the computer program product runs on a computer, causes the computer to execute any possible design of the second aspect or the second aspect, or execute the fourth aspect or the fourth aspect Any possible design, or execute part or all of the steps of the point cloud decoding method provided by the sixth aspect or any possible design of the sixth aspect.
- the auxiliary information and the first identifier of the patch to be encoded can be encoded into the code stream; when the first identifier is the first value, the patch to be encoded is When the current point cloud frame is not the first patch, it indicates that the patch to be coded is the non-first type I patch in the current point cloud frame.
- the auxiliary information of the patch to be coded can be encoded into the code stream instead of the waiting
- the first identifier of the encoded patch is encoded into the code stream, so that the format of the encoded code stream can be simplified. Further reduce the bit overhead of the code stream, thereby improving the coding efficiency.
- FIG. 1 is a schematic block diagram of a point cloud decoding system provided by an embodiment of this application;
- Fig. 2 is a schematic block diagram of an encoder that can be used in an embodiment of the present application
- Fig. 3 is a schematic diagram of a point cloud applicable to an embodiment of the present application.
- FIG. 4 is a schematic diagram of a point cloud patch applicable to an embodiment of the present application.
- FIG. 5 is a schematic diagram of an occupancy map of a point cloud applicable to an embodiment of the present application.
- Fig. 6 is a schematic block diagram of a decoder that can be used in an embodiment of the present application.
- FIG. 7 is a schematic diagram of a frame group that can be used in an embodiment of the present application.
- FIG. 8 is a schematic diagram of the first current point cloud group provided by an embodiment of this application.
- FIG. 9 is a flowchart of the first point cloud encoding method provided by an embodiment of the application.
- FIG. 10 is a schematic diagram of a second current point cloud group provided by an embodiment of this application.
- FIG. 11 is a flowchart of the first point cloud decoding method provided by an embodiment of this application.
- FIG. 12 is a flowchart of a second point cloud encoding method provided by an embodiment of this application.
- FIG. 13 is a flowchart of a second point cloud decoding method provided by an embodiment of this application.
- FIG. 14 is a flowchart of a third point cloud encoding method provided by an embodiment of this application.
- FIG. 16 is a schematic block diagram of a first encoding device provided by an embodiment of this application.
- FIG. 17 is a schematic block diagram of a first decoding device provided by an embodiment of this application.
- FIG. 18 is a schematic block diagram of a second encoding device provided by an embodiment of this application.
- FIG. 19 is a schematic block diagram of a second decoding apparatus provided by an embodiment of this application.
- FIG. 20 is a schematic block diagram of a third encoding device provided by an embodiment of this application.
- FIG. 21 is a schematic block diagram of a third decoding apparatus provided by an embodiment of this application.
- FIG. 22 is a schematic block diagram of an implementation manner of a decoding device used in an embodiment of the present application.
- FIG. 1 is a schematic block diagram of a point cloud decoding system provided by an embodiment of this application.
- the term "point cloud decoding” or “decoding” may generally refer to point cloud encoding or point cloud decoding.
- the point cloud decoding system includes a source device 10, a destination device 20, a link 30 and a storage device 40.
- the source device 10 can generate coded point cloud data. Therefore, the source device 10 may also be referred to as a point cloud encoding device.
- the destination device 20 may decode the encoded point cloud data generated by the source device 10. Therefore, the destination device 20 may also be referred to as a point cloud decoding device.
- the link 30 can receive the coded point cloud data generated by the source device 10 and can transmit the coded point cloud data to the destination device 20.
- the storage device 40 can receive the coded point cloud data generated by the source device 10, and can store the coded point cloud data, so that the destination device 20 can directly obtain the coded point cloud from the storage device 40 data.
- the storage device 40 may correspond to a file server or another intermediate storage device that can save the encoded point cloud data generated by the source device 10, so that the destination device 20 may stream or download the stored data of the storage device 40 Coded point cloud data.
- Both the source device 10 and the destination device 20 may include one or more processors and a memory coupled to the one or more processors.
- the memory may include random access memory (RAM), read-only memory ( read-only memory, ROM), electrically erasable programmable read-only memory (EEPROM), flash memory, which can be used to store the desired program in the form of instructions or data structures that can be accessed by a computer Any other media of the code, etc.
- both the source device 10 and the destination device 20 may include desktop computers, mobile computing devices, notebook (e.g., laptop) computers, tablet computers, set-top boxes, telephone handsets such as so-called "smart" phones, Televisions, cameras, display devices, digital media players, video game consoles, on-board computers, or the like.
- the link 30 may include one or more media or devices capable of transmitting the encoded point cloud data from the source device 10 to the destination device 20.
- the link 30 may include one or more communication media that enable the source device 10 to directly send the encoded point cloud data to the destination device 20 in real time.
- the source device 10 may modulate the coded point cloud data according to a communication standard, which may be a wireless communication protocol or the like, and may send the modulated point cloud data to the destination device 20.
- the one or more communication media may include wireless and/or wired communication media.
- the one or more communication media may include a radio frequency (RF) spectrum or one or more physical transmission lines.
- RF radio frequency
- the one or more communication media may form part of a packet-based network, and the packet-based network may be a local area network, a wide area network, or a global network (for example, the Internet).
- the one or more communication media may include routers, switches, base stations, or other devices that facilitate communication from the source device 10 to the destination device 20, and the embodiment of the present application does not specifically limit this.
- the storage device 40 may store the received encoded point cloud data sent by the source device 10, and the destination device 20 may directly obtain the encoded point cloud data from the storage device 40 .
- the storage device 40 may include any of a variety of distributed or locally accessed data storage media.
- any of the multiple distributed or locally accessed data storage media may be a hard disk drive, Blu-ray disc, digital versatile disc (DVD), compact disc read-only memory (CD-ROM), flash memory, volatile or non-volatile memory, or used to store Any other suitable digital storage media for encoding point cloud data, etc.
- the storage device 40 can correspond to a file server or another intermediate storage device that can store the encoded point cloud data generated by the source device 10, and the destination device 20 can be stored via streaming or downloading.
- the file server may be any type of server capable of storing the coded point cloud data and transmitting the coded point cloud data to the destination device 20.
- the file server may include a network server, a file transfer protocol (FTP) server, a network attached storage (NAS) device, or a local disk drive.
- FTP file transfer protocol
- NAS network attached storage
- the destination device 20 can obtain the coded point cloud data through any standard data connection (including an Internet connection).
- Any standard data connection can include a wireless channel (for example, Wi-Fi connection), a wired connection (for example, digital subscriber line (DSL), cable modem, etc.), or is suitable for obtaining the encoded data stored on the file server The combination of the two point cloud data.
- the transmission of the encoded point cloud data from the storage device 40 may be a streaming transmission, a download transmission, or a combination of both.
- the point cloud decoding system shown in FIG. 1 is only one possible implementation, and the technology of the present application can not only be applied to the source device 10 that can encode the point cloud shown in FIG.
- the destination device 20 for decoding point cloud data may also be applicable to other devices that can encode point clouds and decode encoded point cloud data, which is not specifically limited in the embodiment of the present application.
- the source device 10 includes a data source 120, an encoder 100 and an output interface 140.
- the output interface 140 may include a regulator/demodulator (modem) and/or a transmitter, where the transmitter may also be referred to as a transmitter.
- the data source 120 may include a point cloud capture device (for example, a camera, etc.), a point cloud archive containing previously captured point cloud data, a point cloud feed interface for receiving point cloud data from a point cloud content provider, and/or A computer graphics system used to generate point cloud data, or a combination of these sources of point cloud data.
- the data source may send a point cloud to the encoder 100, and the encoder 100 may encode the point cloud received from the data source 120 to obtain encoded point cloud data.
- the encoder can send the encoded point cloud data to the output interface.
- the source device 10 directly sends the encoded point cloud data to the destination device 20 via the output interface 140.
- the encoded point cloud data may also be stored on the storage device 40 for the destination device 20 to obtain later and use for decoding and/or playback.
- the destination device 20 includes an input interface 240, a decoder 200 and a display device 220.
- the input interface 240 includes a receiver and/or a modem.
- the input interface 240 can receive the encoded point cloud data via the link 30 and/or from the storage device 40, and then send it to the decoder 200.
- the decoder 200 can decode the received encoded point cloud data to obtain the Decoded point cloud data.
- the decoder may send the decoded point cloud data to the display device 220.
- the display device 220 may be integrated with the destination device 20 or may be external to the destination device 20. Generally, the display device 220 displays the decoded point cloud data.
- the display device 220 may be any one of multiple types of display devices.
- the display device 220 may be a liquid crystal display (LCD), a plasma display, or an organic light-emitting diode (OLED). Display or other type of display device.
- LCD liquid crystal display
- OLED organic light-emitting
- the encoder 100 and the decoder 200 may each be integrated with an audio encoder and decoder, and may include an appropriate multiplexer-demultiplexer (multiplexer- demultiplexer, MUX-DEMUX) unit or other hardware and software, used for encoding both audio and video in a common data stream or separate data streams.
- MUX-DEMUX multiplexer-demultiplexer
- the MUX-DEMUX unit may conform to the ITU H.223 multiplexer protocol, or other protocols such as the user datagram protocol (UDP).
- Each of the encoder 100 and the decoder 200 can be any of the following circuits: one or more microprocessors, digital signal processing (DSP), application specific integrated circuit, ASIC ), field-programmable gate array (FPGA), discrete logic, hardware, or any combination thereof.
- DSP digital signal processing
- ASIC application specific integrated circuit
- FPGA field-programmable gate array
- the device may store instructions for the software in a suitable non-volatile computer-readable storage medium, and may use one or more processors to execute the instructions in hardware So as to implement the technology of this application. Any of the foregoing (including hardware, software, a combination of hardware and software, etc.) can be regarded as one or more processors.
- Each of the encoder 100 and the decoder 200 may be included in one or more encoders or decoders, and any of the encoders or the decoders may be integrated as a combined encoding in the corresponding device Part of the decoder/decoder (codec).
- This application may generally refer to the encoder 100 as “signaling” or “sending” certain information to another device such as the decoder 200.
- the term “signaling” or “sending” may generally refer to the transmission of syntax elements and/or other data used to decode compressed point cloud data. This transmission can occur in real time or almost in real time. Alternatively, this communication may occur after a period of time, for example, when the syntax element is stored in a computer-readable storage medium in the encoded bitstream during encoding, and the decoding device may then store the syntax element on this medium. retrieve the syntax element at any time.
- FIG. 2 is a schematic block diagram of an encoder 100 provided by an embodiment of the application.
- Fig. 2 illustrates the point cloud compression (PCC) coding framework of MPEG (moving pictrue expert group) as an example.
- the encoder 100 may include a point cloud block information generation module 101, a packing module 102, a depth map generation module 103, a texture map generation module 104, a depth map filling module 105, a texture map filling module 106, image-based or video-based Encoding module 107, occupancy map encoding module 108, auxiliary information encoding module 109, multiplexing module 110, point cloud occupancy map down-sampling module 111, point cloud occupancy map filling module 112, point cloud reconstruction module 113, and point cloud filtering module 114 .
- PCC point cloud compression
- the point cloud block information generation module 101 may receive one or more point cloud groups sent by the data source 120, where each point cloud group may include one or more frames of point clouds.
- each point cloud group may include one or more frames of point clouds.
- the current point cloud group will be unified in the following Take the current point cloud frame in as an example.
- the point cloud block information generation module 101 can determine the three-dimensional coordinates of each point included in the current point cloud frame in the three-dimensional space coordinate system, and the normal direction vector of each point in the three-dimensional space, and determine each point according to the determined
- the normal direction vector in the three-dimensional space and the predefined projection plane divide the current point cloud frame into multiple patches (point cloud blocks). Each patch includes one or more points in the current point cloud frame.
- the point cloud block information generating module 101 can also determine the occupancy map of each patch and the depth map of each patch.
- the point cloud block information generating module 101 can also determine the three-dimensional information of each patch and the normal coordinate axis information of each patch, which can be used as auxiliary information of each patch.
- the point cloud block information generating module 101 can divide the patch into three types, namely the first type patch, the second type patch, and the third type patch.
- the first identifier is used to indicate the type of each patch.
- the point cloud block information generating module 101 may send the first identification of each patch and the auxiliary information of each patch in the current point cloud frame to the auxiliary information encoding module 109 for encoding, which may also be called compression encoding.
- the three-dimensional information of each patch may include the offset of the patch to be encoded in the 3D space along the tangent direction, the offset of the patch to be encoded in the 3D space along the double tangent direction, and the offset of the patch to be encoded in the 3D space. Offset in the normal direction.
- the point cloud block information generating module 101 may also send the occupancy map of each patch and the auxiliary information of each patch to the packaging module 102.
- the point cloud block information generating module 101 can also send the depth map of each patch to the depth map generating module 103.
- the packing module 102 may pack the received occupancy map of each patch and the auxiliary information of each patch sent by the point cloud block information generating module 101 to obtain the occupancy map of the current point cloud frame.
- the packaging module 102 can arrange the occupancy map of each patch in a specific order, for example, in descending order (or ascending order) of the width/height of the occupancy map of each patch, and then arrange the occupancy map of each patch in descending order (or ascending order). In the order of the occupancy map, insert the occupancy map of each patch into the available area of the occupancy map of the current point cloud frame to obtain the occupancy map of the current point cloud frame and the packing information of the patch.
- the packing module 102 may send the occupancy map of the current point cloud frame and the packing information of the patch to the auxiliary information encoding module 109 for compression encoding.
- the packing information of the patch may include the two-dimensional information of each patch in the occupancy map of the current point cloud frame, the identification information of the reference patch of each patch, the rotation transformation information of each patch, and the reference of the current point cloud frame The identification information of the frame.
- the two-dimensional information of each patch in the occupancy map of the current point cloud frame may be referred to as the two-dimensional information of each patch.
- the two-dimensional information of each patch can include the offset of each patch along the u axis in the current point cloud frame occupancy map, the offset of each patch along the v axis in the current point cloud frame occupancy map, and each patch
- the current point cloud frame occupies the width of the figure, and each patch occupies the height of the figure in the current point cloud frame.
- the packing module 102 may also send the packing information of the patch to the depth map generating module 103 and the point cloud occupancy map down-sampling module 111.
- FIG. 4 is a schematic diagram of the patch of the point cloud of the frame
- Fig. 5 is the occupancy diagram of each patch of the point cloud of the frame shown in Fig. 4, the frame point obtained by packing by the packing module 102 Schematic diagram of cloud occupancy map.
- the point cloud shown in FIG. 3 may be the current point cloud frame in the embodiment of the present application
- the patch of the point cloud shown in FIG. 4 may be the patch of the current point cloud frame in the embodiment of the present application
- the cloud occupancy map may be the occupancy map of the current point cloud frame in the embodiment of the present application.
- the auxiliary information encoding module 109 receives the occupancy map of the current point cloud frame and the packing information of the patch sent by the packing module 102, as well as the first identification of each patch and the first identification of each patch sent by the point cloud block information generating module 101. After the auxiliary information, the current point cloud frame and each patch included in the current point cloud frame can be encoded to obtain a code stream including the encoded auxiliary information, and then the obtained code stream including the encoded auxiliary information is sent to the complex Use module 110. Among them, the two-dimensional information of each patch and the identification information of the reference patch of each patch in the packaging information of the patch may also be referred to as auxiliary information of each patch.
- the depth map generation module 103 may receive the patch packaging information sent by the packaging module 102 and the depth map of each patch sent by the point cloud block information generation module 101, and then according to the packaging information of each patch and each The depth map of the patch generates the depth map of the current point cloud frame. Then the generated depth map of the current point cloud frame is sent to the depth map filling module 105 to fill the blank pixels in the depth map of the current point cloud frame to obtain the filled depth map of the current point cloud frame.
- the depth map filling module 105 may send the obtained filled depth map of the current point cloud frame to the image or video-based encoding module 107 to perform image or video-based encoding on the filled depth map of the current point cloud frame, Obtain the reconstructed current point cloud depth map and the code stream including the encoded current point cloud frame depth map, and may send the obtained reconstructed current point cloud frame depth map to the point cloud reconstruction module 113 , And send the code stream including the encoded depth map of the current point cloud frame to the multiplexing module 110.
- the point cloud occupancy map down-sampling module 111 may perform down-sampling processing on the received occupancy map of the current point cloud frame sent by the packing module 102 to obtain a low-resolution occupancy map of the current point cloud frame. After that, the point cloud occupancy map down-sampling module 111 may also send the occupancy map of the current low-resolution point cloud frame to the occupancy map encoding module 108 and the point cloud occupancy map filling module 112.
- the occupancy map encoding module 108 can encode the received occupancy map of the current low-resolution point cloud frame to obtain a code stream including the occupancy map of the encoded low-resolution current point cloud frame, and the occupancy map encoding module 108 can also The code stream including the coded low-resolution occupancy map of the current point cloud frame may be sent to the multiplexing module 110.
- the point cloud occupancy map filling module 112 fills the occupancy map of the current point cloud frame with the original resolution according to the received occupancy map of the low-resolution current point cloud frame to obtain the filled occupancy map of the current point cloud frame, The occupancy map of the filled current point cloud frame has the original resolution.
- the point cloud reconstruction module 113 may be based on the received occupancy map of the filled current point cloud frame sent by the point cloud occupancy map filling module 112, and the reconstructed current point cloud frame sent by the image or video-based encoding module 107.
- the depth map, patch packing information and patch auxiliary information reconstruct the geometry of the current point cloud frame to output the reconstructed point cloud.
- the point cloud reconstruction module 113 can also output the reconstructed points in the reconstructed point cloud. Correspondence with patch, and the packaging position of the reconstructed point in the reconstructed point cloud.
- the point cloud reconstruction module 113 can send the reconstructed point cloud, the corresponding relationship between the reconstructed point in the reconstructed point cloud and the patch to the point cloud filtering module 114, and the point cloud reconstruction module 113 can also reconstruct the reconstructed point cloud.
- the packing positions of the points are sent to the texture generation module 104.
- the point cloud filtering module 114 may filter the reconstructed point cloud after receiving the reconstructed point cloud sent by the point cloud reconstruction module 113 and the corresponding relationship between the reconstructed points in the reconstructed point cloud and the patch. Specifically, defects such as obvious noise points and gaps in the reconstructed point cloud can be removed to obtain a filtered reconstructed point cloud, which can also be referred to as a smooth reconstructed point cloud. Or it can be said that the point cloud filtering block 114 can perform smoothing processing on the reconstructed point cloud.
- the texture map generating module 104 receives the smooth reconstructed point cloud sent by the point cloud filtering module 114, the packed position of the reconstructed point in the reconstructed point cloud sent by the point cloud reconstruction module 113, and is sent by the data source 120 After the current point cloud frame, the texture map of the current point cloud frame can be generated according to the smooth reconstructed point cloud, the packaging position of the reconstructed point in the reconstructed point cloud and the current point cloud frame, and the generated current point cloud The texture map of the frame is sent to the texture map filling module 106 to fill the blank pixels in the texture map of the current point cloud frame to obtain the filled texture map of the current point cloud frame.
- the texture map filling module 106 may send the obtained filled texture map of the current point cloud frame to the image or video-based encoding module 107 to perform image or video-based encoding on the filled texture map of the current point cloud frame, Obtain the code stream including the texture map of the reconstructed current point cloud frame.
- the image or video-based encoding module 107 may also send the obtained code stream including the reconstructed texture map of the current point cloud frame to the multiplexing module 110.
- the image or video-based encoding module 107, the occupancy map encoding module 108, and the auxiliary information encoding module 109 can send the obtained code streams to the multiplexing module 110, and the multiplexing module 110 can combine the received code streams To form a combined code stream, and send the combined code stream to the output interface 140.
- the output interface 140 may send the combined code stream to the decoder 200.
- the encoder 100 shown in FIG. 2 is only an embodiment provided by the present application.
- the encoder 100 may include more or less modules than those shown in FIG. 2 Module.
- the embodiments of the present application do not specifically limit this.
- FIG. 6 is a schematic block diagram of a decoder 200 according to an embodiment of the application.
- the decoder 200 may include a demultiplexing module 201, an image or video-based decoding module 202, an occupancy map decoding module 203, an auxiliary information decoding module 204, a point cloud occupancy map filling module 205, and point cloud geometric information reconstruction Structuring module 206, point cloud filtering module 207, and point cloud texture information reconstruction module 208.
- the demultiplexing module 201 may receive the combined code stream sent by the output interface 140 of the encoder 100 through the input interface 204, and send the combined code stream to the corresponding decoding module. Specifically, the demultiplexing module 201 sends the code stream of the texture map of the current point cloud frame encoded and the code stream of the depth map of the encoded current point cloud frame to the image or video-based decoding module 202, and The code stream including the occupancy map of the current point cloud frame with the encoded low resolution is sent to the occupancy map decoding module 203, and the code stream including the encoded auxiliary information is sent to the auxiliary information decoding module 204.
- the image or video-based decoding module 202 can decode the received bitstream including the texture map of the encoded current point cloud frame and the bitstream including the depth map of the encoded current point cloud frame to obtain the reconstructed current
- the texture map information of the point cloud frame and the depth map information of the reconstructed current point cloud frame, and the reconstructed texture map information of the current point cloud frame can be sent to the point cloud texture information reconstruction module 208,
- the constructed depth map information of the current point cloud frame is sent to the point cloud geometric information reconstruction module 206.
- the occupancy map decoding module 203 can decode the received bitstream including the occupancy map of the current point cloud frame with encoded low resolution to obtain the occupancy map information of the reconstructed current point cloud frame with low resolution, and
- the reconstructed low-resolution current point cloud frame occupancy map information is sent to the point cloud occupancy map filling module 205.
- the point cloud occupancy map filling module 205 can obtain the reconstructed occupancy map information of the current point cloud frame with the original resolution according to the occupancy map information of the reconstructed low-resolution current point cloud frame, and then the reconstructed has The occupancy map information of the current point cloud frame at the original resolution is sent to the geometric information reconstruction module 206 of the point cloud.
- the reconstructed occupancy map information of the current point cloud frame with the original resolution will be uniformly referred to as the occupancy map information of the reconstructed current point cloud frame.
- the auxiliary information decoding module 204 may decode the received code stream including the encoded auxiliary information to obtain auxiliary information, and may send the auxiliary information to the geometric information reconstruction module 206 of the point cloud.
- the specific decoding method will be described in subsequent embodiments.
- the geometric information reconstruction module 206 of the point cloud can be based on the received depth map information of the reconstructed current point cloud frame sent by the image or video-based decoding module 202, and the reconstructed information sent by the point cloud occupancy map filling module 205.
- the occupancy map information of the current point cloud frame and the auxiliary information sent by the auxiliary information decoding module 204 reconstruct the geometry of the current point cloud frame to obtain the reconstructed point cloud.
- the reconstructed point cloud is similar to the reconstructed point cloud obtained by the point cloud reconstruction module 112 in the encoder 100, and the specific reconstruction process can refer to the reconstruction process of the point cloud reconstruction module 112 in the encoder 100. I won't repeat it here.
- the geometric information reconstruction module 206 of the point cloud may also send the reconstructed point cloud to the point cloud filtering module 207.
- the point cloud filtering module 207 can filter the reconstructed point cloud according to the received reconstructed point cloud to obtain a smooth reconstructed point cloud.
- the specific filtering process can refer to the filtering process of the point cloud filtering module 114 in the encoder 100 , I won’t repeat it here.
- the point cloud filtering module 207 may send the smooth reconstructed point cloud to the texture information reconstruction module 208 of the point cloud.
- the texture information reconstruction module 208 of the point cloud receives the smooth reconstructed point cloud sent by the point cloud filtering module 207 and the texture map information of the reconstructed current point cloud frame sent by the image or video-based decoding module 202. Afterwards, the texture information of the reconstructed point cloud can be reconstructed to obtain the reconstructed point cloud reconstructed by the texture information.
- the decoder 200 shown in FIG. 6 is only an example, and in a specific implementation, the decoder 200 may include more or less modules than those shown in FIG. 6. The embodiment of the present application does not limit this.
- the current point cloud group may be a group of frame (GOF), and a frame group may include 32 frames of point clouds, that is, the current point cloud group may include 32 frames of point clouds.
- the number of frames of the point cloud included in the current point cloud group may also be other values, which is not limited in the embodiment of the present application.
- a frame group may also be divided into multiple subgroups, each subgroup may include one or more frames of point clouds, and the current point cloud group may be any one of the multiple subgroups.
- FIG. 7 is a schematic diagram of a frame group provided by an embodiment of the application. As shown in FIG.
- a frame group can be divided into 10 subgroups, and the first subgroup includes the first, second, and third subgroups.
- Frame point cloud the second subgroup includes the 4th frame point cloud
- the third subgroup includes the 5th, 6, 7, and 8th frame point clouds
- the 10th subgroup includes the 30th, 31st, and 32th frame point clouds
- the current point cloud group can be any one of these 10 subgroups.
- FIG. 7 only exemplarily shows the point clouds included in the first subgroup, the second subgroup, the third subgroup, and the tenth subgroup, and the point clouds included in the other subgroups are not described in detail.
- the current point cloud group can be a frame group, or the current point cloud group can be a subgroup of a frame group.
- the current point cloud group can also be other forms of point cloud groups, such as custom ones.
- the point cloud group is not limited in this embodiment of the application.
- patches can be divided into three types, namely the first type of patch, the second type of patch and the third type of patch.
- the patch can also be divided into a global matching patch (SKIP_patch), a local matching patch (local_patch), and a non-matching patch (I_INTRA, or P_INTRA). That is, the first type of patch can be a global matching patch, the second type of patch can be a local matching patch, and the third type of patch can be a non-matching patch.
- the three types of patches are described.
- the patch to be coded is any patch in the current point cloud frame, and the current point cloud frame is any of the current point cloud groups.
- a frame of point cloud If the patch to be coded is the first type of patch, the patch to be coded has a matching relationship in all the point cloud frames in the current point cloud group, this can be called a global matching patch; if the patch to be coded is the second For the patch type, the patch to be encoded has a patch with a matching relationship in the reference frame of the current point cloud frame, but only a patch with a matching relationship exists in a part of the point cloud frame in the current point cloud group.
- the reference frame of the current point cloud frame may be located in the current point cloud group.
- the reference frame of the current point cloud frame may be the previous point cloud frame of the current point cloud frame.
- the patches included in all point cloud frames in the current point cloud group can be arranged in the order of the first type of patch, the second type of patch, and the third type of patch.
- the first type of patch in the current point cloud group is The number in each point cloud frame is the same, and when the number of the first-type patches is greater than 1, the first-type patches in each point cloud frame in the current point cloud group can also be arranged in the same order , That is, there is a matching relationship between the first-type patches at the same position in each point cloud frame.
- the w-th first-type patch in each point cloud frame has a matching relationship with each other, and w is less than or equal to the number of first-type patches.
- the two-dimensional information, rotation transformation information, and normal coordinate axis information of the first-type patch in the occupancy map of the current point cloud frame are the same, but the three-dimensional information is different.
- the two-dimensional information of the first-type patch can also be different, or the three-dimensional information can also be the same. That is, the rotation transformation information and the normal coordinate axis information of the first type patch may be the same, and the two-dimensional information and the three-dimensional information may be the same or different. In this way, for two-dimensional information and three-dimensional information, there may be three situations.
- the following takes the patch to be coded as an example.
- the two-dimensional information of the reference patch of the patch to be encoded is the same as the two-dimensional information of the patch to be encoded, and the three-dimensional information of the reference patch of the patch to be encoded Same as the three-dimensional information of the patch to be encoded.
- the two-dimensional information of the reference patch of the patch to be encoded is the same as the two-dimensional information of the patch to be encoded
- the three-dimensional information of the reference patch of the patch to be encoded is the same as The three-dimensional information of the patch to be encoded is different.
- the two-dimensional information of the reference patch of the patch to be encoded is different from the two-dimensional information of the patch to be encoded, and the three-dimensional information of the reference patch of the patch to be encoded The information is different from the three-dimensional information of the patch to be encoded.
- the reference patch of the patch to be coded may be the same position in the reference frame of the current point cloud frame where the patch to be coded is located Patch. For example, if the patch to be coded is in the third position in the current point cloud frame, the third patch in the reference frame of the current point cloud frame is the reference patch of the patch to be coded.
- the rotation transformation information may be rotation angle information, coordinate axis transformation information, or mirror transformation information.
- the rotation angle information includes a specific rotation angle value or rotation angle index. For example, if the rotation angle value of the patch to be coded is 0, it means that the patch to be coded does not rotate; if the rotation angle value of the patch to be coded is 20, it means that the patch to be coded is rotated by 20°; if the rotation angle of the patch to be coded is A value of 80 means that the patch to be coded is rotated by 80°.
- the rotation angle index of the patch to be coded is 0, it means that the patch to be coded does not rotate; if the rotation angle index of the patch to be coded is 1, it means that the patch to be coded is rotated by 15°; if the rotation angle of the patch to be coded is If the index is 2, it means that the patch to be coded is rotated by 30°; if the rotation angle index of the patch to be coded is 3, it means that the patch to be coded is rotated by 45°.
- the rotation angle information can also be characterized in other forms, which is not specifically limited here. For example, it can also be described in the form of a matrix, especially when accelerated processing is performed in a GPU (graphic process unit, image processor), the use of the matrix form will increase the processing speed.
- rotation of the patch to be encoded can be clockwise or counterclockwise.
- the coordinate axis exchange information can be expressed as the coordinate axis exchange flag.
- the coordinate axis exchange flag when the coordinate axis exchange flag is false or 0, it indicates the tangent coordinate axis of the patch to be encoded and the double tangent coordinate of the patch to be encoded
- the axes are not swapped; for example, when the coordinate axis swap flag is ture or 1, the tangent coordinate axis of the patch to be coded and the double tangent coordinate axis of the patch to be coded are swapped.
- the index of the coordinate axis of the patch to be encoded can be 0, 1, or 2.
- the tangent axis index of the patch to be encoded and the double tangent axis index of the patch to be encoded can be 0, 1, and 2. Any two.
- the tangent axis of the patch can be called the U axis
- the double tangent axis of the patch can be called the V axis.
- the obtained tangent axis index of the current patch and the double tangent axis index of the patch to be encoded are 0 and 2, respectively.
- the tangent of the patch to be encoded is not exchanged
- any of the following point cloud encoding methods may be the point cloud decoding system.
- the execution by the encoder 100 may be executed by the auxiliary information encoding module 109 in the encoder 100.
- FIG. 9 is a flowchart of a point cloud encoding method provided by an embodiment of the present application, and the method is applied to a point cloud decoding system. Referring to Figure 9, the method includes:
- S901 Obtain auxiliary information of the patch to be encoded and the first identifier of the patch to be encoded.
- the patch to be encoded may be any patch included in the current point cloud frame to be encoded.
- the first identifier may indicate the type of patch to be encoded.
- the first identified syntax element may be patch_mode or patch_type, etc. The value of the first identifier is different, and the type of the patch to be encoded is different.
- the first identifier is the first value
- the first type of patch can be a global matching patch in the current point cloud group.
- the auxiliary information of the patch to be encoded includes three-dimensional information. Including two-dimensional information, rotation transformation information and normal coordinate axis information.
- the auxiliary information of the patch to be coded may include three-dimensional information, but not two-dimensional information, rotation transformation information and normal direction. Coordinate axis information.
- the patches in each point cloud frame can be arranged in the order of the first type of patch, the second type of patch and the third type of patch, and then the first type of patch and the second type of patch are also used when encoding.
- the type patch and the third type patch are coded sequentially. So if there is a first-type patch in the current point cloud group, the first patch in each point cloud frame is the first-type patch.
- the number of the first-type patches in each point cloud frame in the current point cloud group can be the same, and when the number of the first-type patches is greater than 1, the number of the first type of patches in each point cloud frame in the current point cloud group
- One type of patches can be arranged in the same order, that is, there is a matching relationship between the first type of patches at the same position in each point cloud frame. If the first-type patch does not exist in the current point cloud group, the first patch in each point cloud frame may be the second-type patch or the third-type patch. If the first patch in each point cloud frame is a third-type patch, it can indicate that only this point cloud frame is included in the current point cloud group, and the first identifiers of all patches in this point cloud frame are third value.
- the first identifier of all patches included in the first point cloud frame can be set to the third value, and the patches in other point cloud frames are still in accordance with the first type of patch and the second type.
- the patch and the third type of patch are arranged in the order. Therefore, when the first identifier of the patch to be encoded is the first value, it can be determined that the current point cloud frame is the non-first point cloud frame in the current point cloud group.
- the current point cloud frame may be the Kth point cloud frame in the current point cloud group, and K is an integer greater than or equal to 3. That is, the third point cloud frame in the current point cloud group and each point cloud frame after the third point cloud frame can be coded in the manner of S902.
- the point cloud frames in the current point cloud group can be numbered according to two numbering methods.
- the first numbering method point cloud frame 0, point cloud frame 1, point cloud frame 2...;
- the second numbering method point cloud frame 1, point cloud frame 2, point cloud frame 3... Therefore, the above Kth point cloud frame can refer to the point cloud frame 2 in the first numbering method and any point cloud frame after the point cloud frame 2, or it can refer to the point cloud frame 3 and the point cloud frame in the second numbering method.
- the Kth point cloud frame can refer to the third point cloud frame in the actual current point cloud group and the point cloud frames after the third.
- the third point cloud frame in the current point cloud group and each point cloud frame after the third point cloud frame can be encoded in the manner of S902, and for the second point cloud frame in the current point cloud group
- a point cloud frame can be encoded in the following two ways:
- the first possible implementation manner if the current point cloud frame is the second point cloud frame in the current point cloud group, then, when the first identifier of the patch to be encoded is the first value, and the patch to be encoded is the current point cloud
- the first identifier of the patch to be encoded, the number of first-type patches in the current point cloud group, and the auxiliary information of the patch to be encoded can be incorporated into the code stream.
- the auxiliary information of the patch to be coded can be encoded into the code stream instead of the patch to be coded
- the first identifier is incorporated into the code stream.
- the number of first-type patches in the current point cloud group can be obtained.
- the operation of encoding the first identifier of the patch to be encoded, the number of first-type patches in the current point cloud group, and the auxiliary information of the patch to be encoded into the code stream may be: editing the first identifier of the patch to be encoded Enter the code stream, and then encode the number of first-type patches in the current point cloud group into the code stream, and finally, encode the auxiliary information of the patch to be encoded into the code stream. That is, the number of the first-type patch in the current point cloud group is compiled into the code stream after the first identifier of the patch to be encoded.
- the fixed-length encoding method can be used to encode the number of patches of the first type into the code stream, and the variable-length encoding method can also be used to encode the number of patches of the first type into the code stream. Not limited.
- the current point cloud frame is the second point cloud frame in the current point cloud group
- the first value of the patch to be coded can be set
- An identification and auxiliary information are compiled into the code stream. That is, the first identification and auxiliary information of all the first-type patches in the second point cloud frame need to be encoded into the code stream, so that the number of the first-type patches in the current point cloud group can be indicated without The number of the first type patch in the current point cloud group is compiled into the code stream.
- the number of the first-type patch in the current point cloud group can be determined through the second point cloud frame.
- the first patch that is, the first identifier of the first first type patch can be coded It is not necessary to encode the first identifier of the non-first first-type patch into the code stream.
- the first identifier of the patch to be encoded is the third value
- the patch to be encoded is the first patch in the current point cloud frame
- the third point cloud frame in the current point cloud group and the point cloud frames after the third point cloud frame only the first identifier of the first type patch can be compiled into the code stream, instead of the non-first point cloud frame.
- the first identifier of the first type patch is encoded into the code stream, which improves the coding efficiency and reduces the bit overhead of the code stream.
- the first patch in the current point cloud frame can correspond to an identification information, which can also be called an index, and this identification information can uniquely indicate the first patch in the current point cloud frame patch, and the identification information of the first patch can usually be incorporated into the code stream.
- an identification information which can also be called an index
- this identification information can uniquely indicate the first patch in the current point cloud frame patch
- the identification information of the first patch can usually be incorporated into the code stream.
- a counter can be used to determine which patch is the current point cloud frame. Among them, the counter starts counting when the first patch of the current point cloud frame is determined.
- the three-dimensional information of the patch to be encoded may include the offset of the patch to be encoded in the 3D space along the tangent direction (3d_shift_tangent_axis), and the offset of the patch to be encoded in the 3D space along the bitangent direction (3d_shift_bitangent_axis), And the offset of the patch to be encoded in the 3D space along the normal direction (3d_shift_normal_axis).
- the three-dimensional information of the patch to be encoded can be encoded into the code stream according to the three-dimensional information of the reference patch of the patch to be encoded.
- the differential encoding method can be used to encode the three-dimensional information of the patch to be encoded.
- the 3D information is encoded into the code stream, or directly into the code stream, and the specific encoding method is not limited.
- the fixed-length encoding method is adopted to encode the first identifier of the patch to be encoded into the code stream.
- differential encoding to encode the three-dimensional information of the patch to be encoded into the code stream refers to encoding the difference between the three-dimensional information of the patch to be encoded and the three-dimensional information of the reference patch of the patch to be encoded into the code stream.
- this article exemplifies a partial syntax structure when the first identifier of the patch to be encoded is the first value, as shown in Table 1 and Table 2.
- skip_patch_data_unit in Table 1 is the information of the patch to be encoded that is encoded into the code stream when the first identifier of the patch to be encoded is the first value, which can also be called the data unit of the patch to be encoded.
- the auxiliary information of the patch to be encoded and the first identifier can be encoded into the code stream. That is, for each patch in the first point cloud frame in the current point cloud group, the auxiliary information and the first identifier of each patch can be encoded into the code stream. For the non-first-type patches in the non-first point cloud frame in the current point cloud group, the auxiliary information and the first identifier of each patch can be encoded into the code stream.
- the first identifier when the first identifier is the second value, it indicates that the patch to be encoded is a second type of patch.
- the second type of patch can be a local matching patch in the current point cloud group.
- the auxiliary information of the patch to be encoded includes two-dimensional information and three-dimensional information. Information and identification information of the reference patch of the patch to be encoded.
- the first identifier is the third value, it indicates that the patch to be coded is a third type of patch.
- the third type of patch can be a non-matching patch in the current point cloud group.
- the auxiliary information of the patch to be coded includes two-dimensional information, three-dimensional information, Rotation transformation information and normal coordinate axis information.
- the second type of patch has a matching patch in the reference frame of the current point cloud frame, and the rotation transformation information and the normal coordinate axis information between the second type of patch and its reference patch are the same, while the two-dimensional information It may be different from the three-dimensional information.
- the third type of patch does not have a matching patch in the reference frame of the current point cloud frame. Therefore, in order to reduce the bit overhead of the code stream and improve the coding efficiency, when the first identifier is the first When the value is one, the auxiliary information of the patch to be encoded may include three-dimensional information, but not two-dimensional information, rotation transformation information, and normal coordinate axis information.
- the auxiliary information of the patch to be encoded may include two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded, but does not include rotation transformation information and normal coordinate axis information.
- the auxiliary information of the patch to be encoded may include two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
- the two-dimensional information of the patch to be encoded may include the offset (2d_shift_u) of the patch to be encoded in the current point cloud frame occupancy map along the u axis, and the patch to be encoded in the current point cloud frame occupancy map along the v axis
- the syntax element of the reference patch of the patch to be encoded may be patchIndex, which is used to indicate the identification information of the reference patch; the syntax element may also include the identification information of the reference frame where the reference patch is located: frameIndex.
- the syntax element of the rotation transformation information of the patch to be encoded may be rotation.
- the identification information of the reference patch of the patch to be encoded may be used to indicate the reference patch of the patch to be encoded.
- the normal axis information may be the normal axis index of the patch to be encoded, for example, the normal axis index of the normalAxis may be 0, 1, or 2, for the X axis, Y axis, and Z axis, respectively.
- the two-dimensional information and three-dimensional information of the patch to be encoded can be compiled into the code stream according to the two-dimensional information and three-dimensional information of the reference patch of the patch to be encoded.
- the differential encoding method encodes the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream, and a more accurate predictive differential method can also be used to encode the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream.
- the specific encoding method is not used. limited.
- the identification information and the first identification of the reference patch of the patch to be encoded are encoded into the code stream using a fixed-length encoding method.
- the fixed-length encoding method can be used to encode the two-dimensional information, three-dimensional information, rotation transformation information, normal axis information and the first identifier of the patch to be encoded into the code stream, or variable
- the long encoding method encodes the two-dimensional information, three-dimensional information, rotation transformation information, normal coordinate axis information, and first identifier of the patch to be encoded into the code stream, which is not limited in the embodiment of the present application.
- using differential encoding to encode the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream refers to the difference between the two-dimensional information of the patch to be encoded and the two-dimensional information of the reference patch of the patch to be encoded, and The difference between the three-dimensional information of the coded patch and the three-dimensional information of the reference patch of the patch to be coded is encoded into the code stream.
- the first identifier of the first first-type patch in the current point cloud frame the first identifier of each second-type patch, and the first identifier of each third-type patch in the current point cloud frame
- the logo needs to be programmed into the code stream.
- the auxiliary information of each patch included in the current point cloud frame also needs to be compiled into the code stream. There may be the following three possible implementation methods for the encoding method of the first identification and auxiliary information.
- the first identifiers of multiple patches included in the current point cloud frame can be packaged together and compiled into the code stream, and the first identifiers of the multiple patches include the first identifier of the patch to be encoded, and Except the patch to be coded, the remaining first identifier of the patch whose value is the second value or the third value among the multiple patches.
- the auxiliary information of each patch included in the current point cloud frame can be individually packaged and compiled into a code stream. For example, the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged together and compiled into the code stream. Then, the auxiliary information of each patch included in the current point cloud frame is packaged one by one and compiled into the code stream.
- the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged separately.
- Code stream, the auxiliary information of each patch included in the current point cloud frame can also be packaged separately and compiled into code stream.
- the first identifier of the first patch in the current point cloud frame can be compiled into the code stream, and then the auxiliary information of the first patch can be compiled into the code stream. Then, the auxiliary information of other first-type patches in the current point cloud frame is compiled into the code stream one by one.
- the coding can be performed in a way that the first identifier is first compiled, and then the auxiliary information is compiled.
- the first identifiers of multiple patches included in the current point cloud frame can be packaged together and compiled into the code stream, and the first identifiers of the multiple patches include the first identifier of the patch to be encoded, and Except the patch to be coded, the remaining first identifier of the patch whose value is the second value or the third value among the multiple patches.
- the same type of information in each patch auxiliary information can be packaged together and compiled into the code stream. Different types of information in the auxiliary information of each patch can be individually packaged and compiled into the code stream.
- the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged together and compiled into the code stream.
- the auxiliary information of each patch includes rotation transformation information and normal coordinate axis information
- some auxiliary information of patches includes two-dimensional information or three-dimensional information
- some auxiliary information of patches does not include two-dimensional information or
- the rotation transformation information and normal coordinate axis information in the auxiliary information of each patch are packaged together and compiled into the code stream.
- the two-dimensional information and three-dimensional information in the auxiliary information of each patch are individually packaged and compiled into the code stream.
- the first value, the second value, and the third value may be binary 10, 11, and 00 respectively, or the first value, the second value, and the third value may be binary 11, 10, and 00, etc., respectively.
- the reference patch of the coded patch is included in the reference frame of the current point cloud frame, which is not limited in the embodiment of the present application.
- the third type of patch when encoding is performed in the order shown in Figure 8, for the third type of patch, other methods other than the encoding methods described above can also be used for encoding, for example, if The patch to be coded is the first third-type patch, then the fixed-length coding method may be used for coding, or the variable-length coding method may be used, which is not limited in the embodiment of the application. If the patch to be coded is not the first type 3 patch, at this time, according to the 2D information and 3D information of the first type 3 patch, the 2D information and 3D information of the patch to be coded can be encoded into the code stream using differential encoding. , And other information is also encoded in the manner described above.
- using differential encoding to encode the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream means: the two-dimensional information and the first
- the difference between the two-dimensional information of the third-type patch and the difference between the three-dimensional information of the patch to be encoded and the first three-dimensional patch of the third type are encoded into the code stream.
- the auxiliary information and the first identifier of the patch to be encoded can be encoded into the code stream; when the first identifier is the first value, the patch to be encoded is When the current point cloud frame is not the first patch, it indicates that the patch to be coded is the non-first type I patch in the current point cloud frame.
- the auxiliary information of the patch to be coded can be encoded into the code stream instead of the waiting
- the first identifier of the coded patch is encoded into the code stream, so that the format of the code stream can be simplified, the bit overhead of the code stream is further reduced, and the coding efficiency is improved.
- any of the following point cloud decoding methods may be the point cloud decoding system.
- What is executed by the decoder 200 more specifically, may be executed by the auxiliary information decoding module 204 in the decoder 200.
- the decoding method includes:
- the to be decoded can be parsed from the code stream The first ID of the patch.
- the code stream includes the identification information of the patch to be decoded, and if the identification information of the patch to be decoded is included, it can be determined that the patch to be decoded is the first patch in the current point cloud frame. If the identification information of the patch to be decoded is not included, it can be determined that the patch to be decoded is the non-first patch in the current point cloud frame. At this time, the number of the patch to be decoded in the current point cloud frame can be determined according to the counter. Among them, the counter starts counting when the first patch of the current point cloud frame is determined.
- the first identifier is the first value, it indicates that the patch to be decoded is the first type of patch, that is, the patch to be decoded has a matching patch in all point cloud frames in the current point cloud group.
- the auxiliary information of the patch to be decoded can be parsed from the code stream.
- the auxiliary information includes the three-dimensional information of the patch to be decoded, but does not include the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
- the number of patches of the first type can be parsed from the code stream by a method that matches the encoding end.
- fixed-length decoding or variable-length decoding can be used to parse the number of patches of the first type from the code stream.
- the first identifier when the first identifier is the first value, it can indicate that the current point cloud frame is the non-first point cloud frame in the current point cloud group. At this time, if the current point cloud frame is the second point cloud frame in the current point cloud group, the patch to be decoded can be decoded through the following two possible implementation methods.
- the first possible implementation is the first identification of the first patch in the second point cloud frame in the current point cloud group, and the number of the first type of patch included in each point cloud frame in the current point cloud group Code stream together.
- the current point cloud frame is the second point cloud frame in the current point cloud group
- the patch to be decoded is the first patch in the current point cloud frame
- the first patch to be decoded can be parsed from the code stream. Identification, when the first identification is the first value, the number of the first-type patches in the current point cloud group is analyzed from the code stream. Then parse the auxiliary information of the patch to be decoded from the code stream.
- the first identifiers of the first type patch included in the second point cloud frame in the current point cloud group are all encoded into the code stream.
- the first identifier of the patch to be decoded can be parsed from the code stream.
- the first identifier is the first value
- the patch to be decoded is parsed from the code stream. Supplementary information.
- the first identifier of the non-first first-type patch is not encoded into the code stream, so when the patch to be decoded is the first in the current point cloud frame n patches, when n is greater than 1 and less than or equal to the number of first-type patches in the reference point cloud frame of the current point cloud frame, it indicates that the patch to be decoded is not the first first-type patch in the current point cloud frame,
- the auxiliary information of the patch to be decoded can be parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
- the auxiliary information of the first type of patch that is encoded into the code stream during the encoding process includes three-dimensional information, but does not include two-dimensional information, rotation transformation information and normal coordinate axis information
- the patch to be decoded is the first type of patch
- the auxiliary information parsed from the code stream includes the three-dimensional information of the patch to be decoded, but does not include the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
- the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded can also be obtained according to the auxiliary information of the reference patch of the patch to be decoded.
- a method matching the encoding end may be used for decoding, for example, a differential decoding method may be used to parse the three-dimensional information of the patch to be decoded from the code stream.
- the identification information of the reference frame of the current point cloud frame can be parsed from the code stream, and then according to the The identification information of the reference frame determines the reference frame of the current point cloud frame, and then obtains the two-dimensional information, rotation transformation information and normal coordinate axis information of the reference patch of the patch to be decoded from the reference frame of the current point cloud frame, and refers to the patch
- the two-dimensional information, rotation transformation information and normal coordinate axis information of the patch are used as the two-dimensional information, rotation transformation information and normal coordinate axis information of the patch to be decoded.
- the reference frame of the current point cloud frame may also have a corresponding reference frame, that is, the reference patch in the reference frame of the current point cloud frame also has a corresponding reference patch.
- the reference frame of the current point cloud frame is recorded Is the first reference frame, and the reference frame corresponding to the reference frame of the current point cloud frame is marked as the second reference frame.
- the auxiliary information of the reference patch in the first reference frame can be based on the corresponding reference in the second reference frame
- the auxiliary information of the patch is determined.
- the auxiliary information of the patch to be decoded can be obtained step by step according to the reference frame of the current point cloud frame, the reference frame corresponding to the reference frame of the current point cloud frame, etc.
- the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch whose position is the same as that of the patch to be decoded in the current point cloud frame can be obtained from the decoded point cloud, and the obtained two-dimensional information,
- the rotation transformation information and the normal coordinate axis information are used as the two-dimensional information, the rotation transformation information and the normal coordinate axis information of the patch to be decoded.
- the reference patch of the patch to be decoded can be the position in the reference frame of the current point cloud frame and the patch to be decoded at the current point Patches with the same position in the cloud frame.
- the method of using differential decoding to parse the 3D information of the patch to be decoded from the code stream may specifically be: obtaining the 3D information of the patch whose position is the same as the position of the patch to be decoded in the current point cloud frame from the decoded point cloud. Or, obtain the three-dimensional information of the reference patch of the patch to be decoded from the reference frame of the current point cloud frame. Then, the obtained three-dimensional information is added with the difference of the three-dimensional information parsed from the code stream to obtain the three-dimensional information of the patch to be decoded.
- the counter can be used to determine the number of patches in the current point cloud frame to be decoded.
- the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame
- the patch to be decoded can be determined It is the non-first first-type patch in the current point cloud frame, so that the auxiliary information of the patch to be decoded can be parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
- the number of patches of the first type included in each point cloud frame in the current point cloud group can be determined in two ways.
- the first identifier in the current point cloud group can be directly parsed from the code stream. The number of class patches.
- the number of patches with the first identifier as the first value can be determined, so as to determine The number of first-type patches included in the second point cloud frame, that is, the number of first-type patches in the current point cloud group. That is, the number of first-type patches included in each point cloud frame in the current point cloud group can be determined through the second point cloud frame.
- the second point cloud frame in the current point cloud group can be used as the reference point cloud frame of the third point cloud frame
- the third point cloud frame can be used as the reference point cloud frame of the fourth point cloud frame Point cloud frame, and so on.
- the third point cloud frame and the point cloud frames after the third can determine whether the nth patch in the current point cloud frame is the first type patch according to the number of the first type patch in the reference point cloud frame.
- the first identifier of the first patch in the current point cloud frame, and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged separately and compiled into the code stream, Can be packaged together and compiled into code stream. Therefore, for the respective methods of packaging and encoding into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identifier of the patch to be decoded can be parsed from the code stream. Of course, for patches that take the second value or the third value other than the first patch, the first identifier of the patch to be decoded can also be parsed from the code stream.
- the first identifier of the first patch to be decoded in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be parsed in sequence.
- the patch to be decoded is the first patch in the current point cloud frame
- the first identification of multiple patches included in the current point cloud frame can be parsed from the code stream
- the multiple first identifiers parsed include the first identifier of the patch to be decoded. That is, the first identifiers of multiple patches included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis.
- the same type of information in the auxiliary information of each patch included in the current point cloud frame is also packaged and compiled into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, you can The code stream parses the same type of information in the auxiliary information of each patch included in the current point cloud frame. That is, the same type of information in the auxiliary information of each patch included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis.
- a method of matching with the encoding end may be used to parse the first identifier of the patch to be decoded from the code stream.
- a fixed-length decoding method can be used to parse the first identifier of the patch to be decoded from the code stream.
- S1104 When the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and greater than the number of the first-type patch in the reference point cloud frame of the current point cloud frame, analyze the to-be-decoded patch from the code stream The first ID of the patch.
- the first identifier is encoded into the code stream, so when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and greater than the current
- the point cloud frame refers to the number of the first-type patch in the point cloud frame, it indicates that the patch to be decoded is a second-type patch or a third-type patch.
- the first identifier of the patch to be decoded can be parsed from the code stream.
- the auxiliary information includes the two-dimensional information and three-dimensional information of the patch to be decoded, and the identification information of the reference patch of the patch to be decoded.
- the first identifier is the second value, it indicates that the patch to be decoded is a second type of patch, that is, there is a reference patch matching the patch to be decoded in the reference frame of the current point cloud frame.
- the auxiliary information of the patch to be decoded can be parsed from the code stream.
- the auxiliary information includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be decoded, but does not include rotation transformation information and normal coordinate axis information.
- the auxiliary information of the second type of patch that is encoded into the code stream during the encoding process includes two-dimensional information, three-dimensional information and identification information of the reference patch, but does not include the rotation transformation information and the normal coordinate axis information, so when the patch to be decoded When it is the second type of patch, the auxiliary information parsed from the code stream includes the two-dimensional information, three-dimensional information of the patch to be decoded and the identification information of the reference patch of the patch to be decoded, but does not include the rotation transformation information and normal direction of the patch to be decoded Coordinate axis information. At this time, the rotation transformation information and normal coordinate axis information of the patch to be decoded can also be obtained according to the identification information of the reference patch of the patch to be decoded.
- the identification information of the reference patch of the patch to be decoded can be parsed from the code stream by a method matching the encoding end, for example, a fixed-length decoding method can be used for analysis.
- the reference patch of the reference patch to be decoded can be determined through the identification information of the reference patch to be decoded, and then the rotation transformation information and normal coordinates of the reference patch to be decoded are obtained.
- the two-dimensional information and three-dimensional information of the patch to be decoded can be parsed from the code stream in a differential decoding manner.
- the reference patch of the patch to be decoded can be determined by the identification information of the reference patch of the patch to be decoded, and then the two-dimensional information and three-dimensional information of the reference patch of the patch to be decoded can be obtained. Then, the obtained two-dimensional information and three-dimensional information are respectively added with the two-dimensional information difference and the three-dimensional information difference parsed from the code stream, so as to obtain the two-dimensional information and the three-dimensional information of the patch to be decoded.
- the auxiliary information includes the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
- the first identifier is the third value, it indicates that the patch to be decoded is a third type of patch, that is, there is no reference patch matching the patch to be decoded in the current point cloud group.
- the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded can be parsed from the code stream.
- the first value, the second value, and the third value may be binary 10, 11, and 00 respectively, or the first value, the second value, and the third value may be binary 11, 10, and 00, etc., respectively.
- the application embodiment does not limit this.
- the first type patch, the second type patch and the third type patch in each point cloud frame in the current point cloud group can be arranged as shown in Figure 8.
- the patch to be decoded is The first patch in the current point cloud frame
- the fixed-length decoding method can be used to parse the two-dimensional information, three-dimensional information, rotation transformation information, and normal axis information of the patch to be decoded from the code stream, or the variable-length decoding method can be used to parse the to-be-decoded patch from the code stream.
- the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the decoded patch are not limited in the embodiment of the present application.
- the auxiliary information of the first third-type patch is coded according to fixed-length coding or variable-length coding
- the two-dimensional information and three-dimensional information of the non-first third-type patch are coded by differential coding
- other auxiliary information is coded Encode with fixed-length encoding.
- differential decoding can be used to parse the two-dimensional information and three-dimensional information of the patch to be decoded from the code stream
- fixed-length decoding can be used to parse the to-be-decoded patch from the code stream. Decode the rotation transformation information and normal axis information of the patch.
- the method of using differential decoding to parse the two-dimensional information and three-dimensional information of the patch to be decoded from the code stream is: parse the two-dimensional information and the first information of the patch to be decoded from the code stream.
- the difference between the two-dimensional information of the third-type patch is added to the two-dimensional information of the first third-type patch to obtain the two-dimensional information of the patch to be decoded.
- the auxiliary information of the patch to be decoded that is, after obtaining the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded
- the auxiliary information can be reproduced according to but not limited to these auxiliary information.
- this application does not limit the specific information needed to reconstruct the patch to be decoded.
- the first identifier of the first patch in the current point cloud frame is encoded into the code stream
- the first identifier of the patch to be decoded is parsed from the code stream.
- the first identifier is the first value, it indicates that the patch to be decoded is the first type of patch.
- the auxiliary information of the patch to be decoded can be parsed from the code stream.
- the information includes the three-dimensional information of the patch to be decoded.
- the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame, it indicates that the patch to be decoded is not the first A first-type patch, at this time, the auxiliary information of the patch to be decoded can be parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
- the first identifier is the second value, it indicates that the patch to be decoded is a second type of patch. At this time, the auxiliary information of the patch to be decoded can be parsed from the code stream.
- the auxiliary information includes the two-dimensional information, three-dimensional information and information of the patch to be decoded.
- the first identifier is the third value, it indicates that the patch to be decoded is a third type of patch.
- the auxiliary information of the patch to be decoded can be parsed from the code stream.
- the auxiliary information includes the two-dimensional information, three-dimensional information, and Rotation transformation information and normal coordinate axis information.
- the first identifier needs to be parsed from the code stream, while for the non-first type first patch, the first identifier does not need to be parsed from the code stream, and for the first type patch and the second type
- the first identifier does not need to be parsed from the code stream, and for the first type patch and the second type
- auxiliary information needs to be parsed from the code stream, and other auxiliary information can be derived or obtained. In this way, the format of the parsed code stream can be simplified, the bit overhead of the code stream can be reduced, and the decoding efficiency can be improved.
- any of the following point cloud encoding methods may be the point cloud decoding system.
- the execution by the encoder 100 more specifically, may be executed by the auxiliary information encoding module 109 in the encoder 100. Referring to Figure 12, the method includes:
- S1201 Obtain auxiliary information of the patch to be encoded and the first identifier of the patch to be encoded.
- S1201 may refer to S901 in the embodiment shown in FIG. 9, and this is not repeated in this embodiment of the application.
- the first-type patch has patches with matching relationships in all point cloud frames in the current point cloud group, and the two-dimensional information, rotation transformation information and information between the first-type patches in the current point cloud group
- the normal coordinate axis information is the same, but the three-dimensional information may be different, but in some cases, the three-dimensional information of the first type of patch may also be the same.
- the first identifier is the first value, it may indicate that the patch to be encoded is a first-type patch, and the information encoded into the code stream may also include the second identifier.
- the second identifier is used to indicate whether the three-dimensional information of the patch to be encoded has been encoded into the code stream.
- the syntax element of the second identification may be override_3d_shift_data_flag.
- the second identifier is the fourth value, it can indicate that the three-dimensional information of the patch to be encoded is not encoded into the code stream. That is, the three-dimensional information of the patch to be encoded is the same as the three-dimensional information of the reference patch of the patch to be encoded, so there is no need to re-encode the three-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded may not include the three-dimensional information. information.
- the second identifier is the fifth value
- the specific encoding method is not limited here. For example, a differential encoding method may be used, or a fixed-length encoding method may be used.
- the syntax element of the fourth value may be false, and the syntax element of the fifth value may be true.
- this article exemplifies a partial syntax structure when the first identifier of the patch to be encoded is the first value, and the information encoded into the code stream includes the second identifier, see Table 1 and Table 3.
- the information encoded into the code stream may also include a third identifier for indicating whether the two-dimensional information of the patch to be encoded has been encoded into the code stream.
- the third-identified syntax element may be override_2d_shift_data_flag. Among them, the second identifier has already been described, so it will not be repeated here.
- the third identifier is the sixth value, it may indicate that the two-dimensional information of the patch to be encoded is not encoded into the code stream. That is, the two-dimensional information of the patch to be encoded is the same as the two-dimensional information of the reference patch of the patch to be encoded, so there is no need to re-encode the two-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded can be Does not include two-dimensional information.
- the third identifier is the seventh value, it can indicate that the two-dimensional information of the patch to be encoded has been encoded into the code stream.
- the two-dimensional information of the patch to be encoded is not the same as the two-dimensional information of the reference patch of the patch to be encoded. Therefore, it is necessary to encode the two-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded may include Two-dimensional information.
- the syntax element of the sixth value may be false, and the syntax element of the seventh value may be true.
- this article illustrates a partial syntax structure when the first identifier of the patch to be encoded is the first value, and the information encoded into the code stream includes the second identifier and the third identifier, see Table 1 and Table 4 .
- the two-dimensional information of the patch to be encoded and the three-dimensional information of the reference patch, and the two-dimensional information of the patch to be encoded and the two-dimensional information of the reference patch are not the same, not only the above-mentioned second and third marks can be used to indicate the coding Whether the information of the stream includes two-dimensional information and three-dimensional information of the patch to be encoded. It can also be indicated in other ways.
- the fourth identifier can also be used to indicate whether the two-dimensional information and three-dimensional information of the patch to be encoded have been encoded into the code stream, that is, when the first identifier is the first value , It can indicate that the patch to be encoded is the first type of patch, and the information encoded into the code stream can also include a fourth identifier.
- the fourth identified syntax element may be override_patch_data_flag.
- the fourth identifier is the eighth value, it may indicate that the two-dimensional information and three-dimensional information of the patch to be encoded are the same as the two-dimensional information and three-dimensional information of the reference patch of the patch to be encoded, and the code stream is not included.
- the fourth identifier is a ninth value
- it can indicate that the two-dimensional information and three-dimensional information of the patch to be encoded are different from the two-dimensional information and three-dimensional information of the reference patch of the patch to be encoded, and both have been encoded into the code stream.
- the syntax element of the eighth value can be flase, and the syntax element of the ninth value can be true.
- the three-dimensional information of the patch to be encoded may include the offset of the patch to be encoded in the 3D space along the tangent direction (3d_shift_tangent_axis), the offset of the patch to be encoded in the 3D space along the bitangent direction (3d_shift_bitangent_axis), and The offset of the encoded patch in the 3D space along the normal direction (3d_shift_normal_axis).
- the two-dimensional information of the patch to be encoded may include the offset of the patch to be encoded in the current point cloud frame occupancy map along the u-axis direction (2d_shift_u), and the offset of the patch to be encoded in the current point cloud frame occupancy map along the v-axis direction ( 2d_shift_v), the width of the patch to be encoded in the current point cloud frame occupancy map (2d_size_u), and the height of the patch to be encoded in the current point cloud frame occupancy map (2d_size_v).
- each of the above identifiers can have two values, and the syntax elements of the two values can be true and false.
- the meaning of each value can refer to the meaning of different values of the second identifier, the third identifier or the fourth identifier, which will not be repeated here.
- this article exemplifies when the first identifier of the patch to be encoded is the first value, and the information encoded into the code stream includes the fourth identifier, and the identifier used to indicate different two-dimensional information and three-dimensional information. Part of the grammatical structure, see Table 1 and Table 5.
- the first identifier when the first identifier is the second value, it may indicate that the patch to be encoded is a second-type patch. That is, there is a reference patch that matches the patch to be encoded in the reference frame of the current point cloud frame.
- the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded.
- the first identifier when it is a third value, it may indicate that the patch to be encoded is a third-type patch. That is, there is no reference patch that matches the patch to be encoded in the reference frame of the current point cloud frame.
- the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information.
- the auxiliary information, the first identifier and the second identifier of the patch to be encoded can be encoded into the code stream; when the first identifier is the first value, When the patch to be coded is the non-first patch in the current point cloud frame, it indicates that the patch to be coded is the non-first type 1 patch in the current point cloud frame, and the auxiliary information and the second identifier of the patch to be coded can be coded Instead of coding the first identifier of the patch to be coded into the code stream, the format of the code stream can be simplified.
- the second identifier is an identifier used to indicate whether the three-dimensional information of the patch to be encoded has been encoded into the code stream.
- the second identifier is the fourth value, it indicates that the three-dimensional information of the patch to be encoded is not encoded into the code stream. That is, the three-dimensional information of the patch to be encoded is the same as the three-dimensional information of the reference patch of the patch to be encoded, so there is no need to re-encode the three-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded may not include the three-dimensional information. Information, in this way, can further reduce the bit overhead of the code stream, thereby improving the coding efficiency.
- any of the following point cloud decoding methods may be the point cloud decoding system.
- What is executed by the decoder 200 more specifically, may be executed by the auxiliary information decoding module 204 in the decoder 200.
- the decoding method includes:
- the second identifier when the second identifier is the fourth value, it may indicate that the three-dimensional information of the patch to be decoded is not encoded into the code stream. That is, the 3D information of the patch to be decoded is the same as the 3D information of the reference patch of the patch to be decoded.
- the auxiliary information of the patch to be decoded can be determined according to the auxiliary information of the reference patch of the patch to be decoded. Specifically, the auxiliary information of the reference patch of the patch to be decoded may be used as the auxiliary information of the patch to be decoded.
- the second identifier When the second identifier is the fifth value, it can indicate that the 3D information of the patch to be decoded has been encoded into the bitstream, and the auxiliary information of the patch to be decoded includes 3D information.
- the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
- a differential decoding method can be used to parse the auxiliary information of the patch to be decoded from the code stream. The specific method can refer to the previous article.
- the information of the codestream may also include a third identifier for indicating whether the two-dimensional information of the patch to be encoded has been encoded into the codestream. That is, when the first identifier is the first value, in addition to parsing the second identifier of the patch to be decoded from the code stream, the third identifier of the patch to be decoded can also be parsed from the code stream.
- the third identifier is the sixth value, it can indicate that the two-dimensional information of the patch to be decoded is not encoded into the code stream. That is, the two-dimensional information of the patch to be decoded is the same as the two-dimensional information of the reference patch of the patch to be decoded, so the two-dimensional information of the reference patch of the patch to be decoded can be used as the two-dimensional information of the patch to be decoded.
- the third identifier is the seventh value, it can indicate that the two-dimensional information of the patch to be decoded has been encoded into the code stream.
- the specific decoding method may be a decoding method that matches the encoding method, which will not be repeated here.
- step 1202 when the three-dimensional information of the patch to be encoded and the three-dimensional information of the reference patch, and the two-dimensional information of the patch to be encoded and the two-dimensional information of the reference patch are different, not only
- the above-mentioned second identifier and third identifier can be used to indicate whether the information compiled into the code stream includes the two-dimensional information and three-dimensional information of the patch to be decoded. It can also be indicated in other ways.
- the fourth identifier can also be used to indicate whether the two-dimensional information and three-dimensional information of the patch to be decoded have been encoded into the code stream.
- the fourth identifier of the patch to be decoded can be parsed from the code stream.
- the fourth identifier is the eighth value, it can indicate that the two-dimensional information and three-dimensional information of the patch to be decoded are the same as the two-dimensional information and three-dimensional information of the reference patch of the patch to be decoded, and the code stream is not encoded, so the to-be decoded
- the 2D information and 3D information of the reference patch of the patch are used as the 2D information and 3D information of the patch to be decoded.
- the fourth identifier is the ninth value, it can indicate that the two-dimensional information and three-dimensional information of the patch to be decoded are different from the two-dimensional information and three-dimensional information of the reference patch of the patch to be decoded, and both have been encoded into the code stream. Parse the two-dimensional information and three-dimensional information of the patch to be decoded from the code stream.
- the specific decoding method may be a decoding method that matches the encoding method, which will not be repeated here.
- the identifier used to indicate whether 2d_shift_u has been encoded into the code stream (override_2d_shift_u)
- the identifier used to indicate whether 2d_shift_v has been encoded into the code stream (override_2d_shift_v)
- the second identifiers of the non-first first-type patch in the current point cloud frame are all encoded into the bitstream, when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and greater than the current
- the point cloud frame refers to the number of the first-type patch in the point cloud frame, that is, when the patch to be decoded is not the first first-type patch
- the second identifier of the patch to be decoded can be parsed from the code stream.
- the first identifier of the first patch in the current point cloud frame is encoded into the code stream
- the point cloud block patch to be decoded is the first patch in the current point cloud frame
- the first identifier of the patch to be decoded is parsed in the code stream.
- the first identifier is the first value, it indicates that the patch to be decoded is the first patch of the first type.
- the second identifier of the patch to be decoded can be parsed from the code stream.
- the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame, it indicates that the patch to be decoded is not the first A first-type patch, at this time, the second identifier of the patch to be decoded can be parsed from the code stream.
- the second identifier is the fourth value, it indicates that the three-dimensional information of the patch to be decoded is not encoded into the code stream. That is, the three-dimensional information of the patch to be decoded is the same as the three-dimensional information of the reference patch of the patch to be decoded.
- the three-dimensional information of the reference patch of the patch to be decoded can be used as the three-dimensional information of the patch to be decoded, without the need to extract from the code stream Parsing the three-dimensional information of the patch to be decoded can simplify the format of the parsing code stream, reduce the bit overhead of the code stream, and improve the efficiency of decoding.
- any of the following point cloud encoding methods may be the point cloud decoding system.
- the execution by the encoder 100 may be executed by the auxiliary information encoding module 109 in the encoder 100. Referring to Figure 14, the method includes:
- S1401 Obtain auxiliary information of the patch to be encoded and the first identifier of the patch to be encoded.
- the first identifier When the first identifier is the first value, it indicates that the patch to be encoded is the first type of patch.
- the first-type patch has patches with matching relationships in all point cloud frames in the current point cloud group, and two-dimensional information between the first-type patches in the current point cloud group , 3D information, rotation transformation information and normal coordinate axis information are all the same. Therefore, in order to reduce the bit overhead of the code stream and improve the coding efficiency, when the first identifier is the first value, the first identifier of the patch to be coded is encoded into the code stream instead of the auxiliary information of the patch to be coded. Code stream.
- the first identifier of the patch to be encoded is the first value, the second value or the third value
- the first identifier needs to be encoded into the code stream.
- the first identifiers of all patches in the current point cloud frame can be packaged into the code stream. Of course, they can also be packaged into the code stream separately.
- Different values indicate different types of patches. Therefore, different types of patches can be distinguished by the first identifier, and for different types of patches, the content of the auxiliary information compiled into the code stream may be different, and for the first type of patch and the second type of patch , Only part of the auxiliary information is compiled into the code stream. In this way, the format of the code stream can be simplified, and the bit overhead of the code stream can be further reduced, thereby improving the coding efficiency.
- any of the following point cloud decoding methods may be the point cloud decoding system.
- What is executed by the decoder 200 more specifically, may be executed by the auxiliary information decoding module 204 in the decoder 200.
- the decoding method includes:
- the first identifiers of all patches in the current point cloud frame can be individually packaged and compiled into a code stream, or they can be packaged together and compiled into a code stream. Therefore, for the respective methods of packaging and encoding into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identifier of the patch to be decoded can be parsed from the code stream. Of course, for the non-first patch, the first identifier of the patch to be decoded can also be parsed from the code stream. That is, the first identifier of each patch to be decoded in the current point cloud frame can be analyzed sequentially.
- the patch to be decoded is the first patch in the current point cloud frame
- the first identification of multiple patches included in the current point cloud frame can be parsed from the code stream , wherein the multiple first identifiers parsed include the first identifier of the patch to be decoded. That is, the first identifiers of multiple patches included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis.
- a method of matching with the encoding end may be used to parse the first identifier of the patch to be decoded from the code stream.
- a fixed-length decoding method can be used to parse the first identifier of the patch to be decoded from the code stream.
- the auxiliary information of the patch to be decoded includes 2D information, 3D information, rotation transformation information, and method. Axis information.
- the reference patch of the patch to be decoded can be Auxiliary information to obtain 2D information, 3D information, rotation transformation information and normal coordinate axis information of the patch to be decoded.
- the identification information of the reference frame of the current point cloud frame can be parsed from the code stream, so as to determine the reference frame of the current point cloud frame according to the identification information of the reference frame, and then from the reference frame of the current point cloud frame Obtain the 2D information, 3D information, rotation transformation information and normal coordinate axis information of the reference patch of the patch to be decoded, and use the 2D information, 3D information, rotation transformation information and normal coordinate axis information of the reference patch as the information to be decoded Patch's two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information.
- the reference frame of the current point cloud frame may also have a corresponding reference frame, that is, the reference patch in the reference frame of the current point cloud frame also has a corresponding reference patch.
- the reference frame of the current point cloud frame is recorded Is the first reference frame, and the reference frame corresponding to the reference frame of the current point cloud frame is marked as the second reference frame.
- the auxiliary information of the reference patch in the first reference frame can be based on the corresponding reference in the second reference frame
- the auxiliary information of the patch is determined.
- the auxiliary information of the patch to be decoded can be obtained step by step according to the reference frame of the current point cloud frame, the reference frame corresponding to the reference frame of the current point cloud frame, etc.
- the position of the patch whose position is the same as that of the patch to be decoded in the current point cloud frame can also be obtained from the decoded point cloud.
- Two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information, and the obtained two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information are used as the two-dimensional information, rotation transformation information and information of the patch to be decoded. Normal axis information.
- the reference patch of the patch to be decoded can be the position in the reference frame of the current point cloud frame and the patch to be decoded at the current point Patches with the same position in the cloud frame.
- the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be decoded.
- the auxiliary information of the second type of patch that is incorporated into the code stream during the encoding process includes two-dimensional information, three-dimensional information, and identification information of the reference patch, but does not include rotation transformation information and normal coordinate axis information
- the auxiliary information parsed from the code stream includes the two-dimensional information, three-dimensional information of the patch to be decoded, and the identification information of the reference patch of the patch to be decoded, but does not include the rotation transformation information and information of the patch to be decoded.
- Normal axis information At this time, the rotation transformation information and normal coordinate axis information of the patch to be decoded can also be obtained according to the identification information of the reference patch of the patch to be decoded.
- the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
- the first identifier of the point cloud block patch to be decoded is first parsed from the code stream.
- the first identifier is the first value, it indicates that the patch to be decoded is the first type of patch, and the code stream does not include the Decode the auxiliary information of the patch.
- the auxiliary information of the patch to be decoded can be determined according to the auxiliary information of the reference patch of the patch to be decoded.
- the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information.
- the first identifier is the second value, it indicates that the patch to be decoded is a second type of patch.
- the auxiliary information of the patch to be decoded can be parsed from the code stream.
- the auxiliary information of the patch to be decoded includes two-dimensional information and three-dimensional information. Information and identification information of the reference patch of the patch to be decoded. When the first identifier is the third value, it indicates that the patch to be decoded is of the third type.
- the auxiliary information of the patch to be decoded is parsed from the code stream.
- the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, and rotation. Transformation information and normal axis information. That is, for the first type of patch, only the first identifier needs to be parsed from the code stream, and other auxiliary information can be derived or obtained.
- auxiliary information For the second type of patch, only part of the auxiliary information needs to be parsed from the code stream. Other auxiliary information can also be derived or obtained. In this way, the format of the parsing code stream can be simplified, the bit overhead of the code stream can be reduced, and the decoding efficiency can be improved.
- the encoding apparatus 1600 may include:
- the patch information obtaining module 1601 is used to obtain auxiliary information of the point cloud block to be coded and the first identifier of the patch to be coded;
- the auxiliary information encoding module 1602 is used to encode the auxiliary information of the patch to be encoded and the first identifier into the code stream when the first identifier is the first value, and the patch to be encoded is the first patch in the current point cloud frame; or
- the auxiliary information encoding module 1602 is used to encode the auxiliary information of the patch to be encoded into the code stream when the first identifier is the first value, and the patch to be encoded is the non-first patch in the current point cloud frame;
- the first identifier is a first value to indicate that the patch to be encoded is a first type of patch, and the auxiliary information of the patch to be encoded includes three-dimensional information.
- the current point cloud frame is the Kth point cloud frame in the current group, and K is an integer greater than or equal to 3.
- the auxiliary information encoding module 1602 is also used for:
- the first identifier is the second value or the third value
- the first identifier is the second value to indicate that the patch to be encoded is a second type of patch, and the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded;
- the first identifier is a third value to indicate that the patch to be encoded is a third type of patch.
- the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
- the auxiliary information encoding module 1602 is also used for:
- the first identifiers of the multiple patches included in the current point cloud frame are encoded into the code stream, the first identifiers of the multiple patches include the first identifiers of the patch to be encoded, and the first identifiers of the multiple patches are excluding the patch to be encoded
- the remaining first identifier besides the first identifier is the second value or the third value.
- the first value, the second value and the third value are binary 10, 11 and 00 respectively,
- the first value, the second value, and the third value are 11, 10, and 00 in binary, respectively.
- the first identifier of the patch to be encoded is the third value, and the patch to be encoded is the first patch in the current point cloud frame.
- the reference patch of the patch to be encoded is included in the reference frame of the current point cloud frame.
- the first type of patch is a global matching patch in the current group
- the second type of patch is a local matching patch in the current group
- the third type of patch is a non-matching patch in the current group.
- the patch information acquisition module 1601 is used to execute the related content of step S901 of the embodiment shown in FIG. 9, and the auxiliary information encoding module 1602 is used to execute the related content of step S902 and step S903 of the embodiment shown in FIG. 9.
- the patch information acquisition module 1601 may correspond to the combination of the point cloud block information generation module 101 and the packing module 102 in FIG. 2
- the auxiliary information encoding module 1602 may correspond to the auxiliary information encoding module 109 in FIG. 2, in other words,
- the function of the patch information acquisition module 1601 may be implemented by the point cloud block information generating module 101 and the packing module 102 in FIG.
- the function of the auxiliary information generating module 1602 may be implemented by the auxiliary information encoding module 109 in FIG. 2.
- the point cloud block information generation module 101 is used to obtain the three-dimensional information, normal coordinate axis information, and first identification of the patch to be encoded
- the packaging module 102 is used to obtain the rotation transformation information of the patch to be encoded and the reference patch Identification information and two-dimensional information, etc.
- this application is not limited to this.
- FIG. 17 is a schematic structural diagram of the first point cloud decoding apparatus provided by an embodiment of the application.
- the decoding apparatus 1700 may include:
- the auxiliary information decoding module 1701 is used to parse the first identifier of the patch to be decoded from the code stream when the point cloud block patch to be decoded is the first patch in the current point cloud frame;
- the auxiliary information decoding module 1701 is further configured to parse auxiliary information of the patch to be decoded from the code stream when the first identifier is the first value, and the auxiliary information includes the three-dimensional information of the patch to be decoded;
- the auxiliary information decoding module 1701 is also used for when the patch to be decoded is the nth patch in the current point cloud frame, where n is greater than 1 and less than or equal to the number of the first-type patch in the reference point cloud frame of the current point cloud frame Analyze the auxiliary information of the patch to be decoded from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded;
- the reconstruction module 1702 is used to reconstruct the patch to be decoded according to the auxiliary information of the patch to be decoded.
- the current point cloud frame is the Kth point cloud frame in the current group, and K is an integer greater than or equal to 3.
- the auxiliary information decoding module 1701 is also used for:
- the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and greater than the number of the first type of patch in the reference point cloud frame of the current point cloud frame, parse the patch to be decoded from the code stream First logo
- the auxiliary information includes the two-dimensional information, three-dimensional information of the patch to be decoded, and identification information of the reference patch of the patch to be decoded;
- the auxiliary information of the patch to be decoded is parsed from the code stream.
- the auxiliary information includes the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
- the auxiliary information decoding module 1701 is also used for:
- the first identifiers of multiple patches included in the current point cloud frame are parsed from the code stream, and the multiple first identifiers parsed include the patch to be decoded A first identifier, and the remaining first identifiers among the plurality of first identifiers except the first identifier of the patch to be decoded are the second value or the third value.
- the first value, the second value and the third value are binary 10, 11 and 00 respectively,
- the first value, the second value, and the third value are 11, 10, and 00 in binary, respectively.
- the current point cloud frame is the first point cloud frame.
- the auxiliary information decoding module 1701 is further configured to:
- the reconstruction module 1702 is also used to:
- the patch to be decoded is reconstructed.
- the auxiliary information decoding module 1701 is further configured to:
- the reconstruction module 1702 is also used to:
- the patch to be decoded is reconstructed.
- the reference patch of the patch to be decoded is included in the reference frame of the current point cloud frame.
- the auxiliary information decoding module 1701 is used to execute the related content of steps S1101-S1106 in the embodiment shown in FIG. 11, and the reconstruction module 1702 is used to execute the related content of step S1107 in the embodiment shown in FIG.
- the auxiliary information decoding module 1701 in FIG. 17 corresponds to the auxiliary information decoding module 204 in FIG. 6, and the reconstruction module 1702 in FIG. 17 corresponds to the geometric information reconstruction module 206 of the point cloud in FIG. 5.
- the function of the auxiliary information decoding module 1701 may be implemented by the auxiliary information decoding module 204 in FIG. 6, and the function of the reconstruction module 1702 may be implemented by the geometric information reconstruction module 206 of the point cloud in FIG. 6.
- this application is not limited to this.
- FIG. 18 is a schematic structural diagram of the first point cloud encoding device provided by an embodiment of the application.
- the encoding device 1800 may include:
- the patch information obtaining module 1801 is used to obtain auxiliary information of the point cloud block to be coded and the first identifier of the patch to be coded;
- the auxiliary information encoding module 1802 is used to encode the auxiliary information of the patch to be encoded, the first identification, and the second identification of the patch to be encoded into the code stream when the first identifier is the first value, and the patch to be encoded is the current point cloud frame The first patch in; or
- the auxiliary information encoding module 1802 is used to encode the auxiliary information of the patch to be encoded and the second identification of the patch to be encoded into the code stream when the first identifier is the first value.
- the patch to be encoded is the non-first identifier in the current point cloud frame. Patch;
- the first identifier is the first value to indicate that the patch to be encoded is the first type of patch
- the second identifier is a fourth value to indicate that the three-dimensional information of the patch to be encoded is not encoded into the code stream;
- the second identifier is a fifth value to indicate that the three-dimensional information of the patch to be encoded has been encoded into the code stream, and the auxiliary information of the patch to be encoded includes three-dimensional information.
- the patch information acquisition module 1801 is used to execute the related content of step S1201 in the embodiment shown in FIG. 12, and the auxiliary information encoding module 1802 is used to execute the related content of step S1202 in the embodiment shown in FIG.
- the patch information acquisition module 1801 may correspond to the combination of the point cloud block information generation module 101 and the packing module 102 in FIG. 2
- the auxiliary information encoding module 1802 may correspond to the auxiliary information encoding module 109 in FIG. 2
- the function of the patch information acquisition module 1801 may be implemented by the point cloud block information generating module 101 and the packing module 102 in FIG. 2
- the function of the auxiliary information generating module 1802 may be implemented by the auxiliary information encoding module 109 in FIG.
- the point cloud block information generation module 101 is used to obtain three-dimensional information, normal coordinate axis information, first identification and second identification of the patch to be encoded, and the packaging module 102 is used to obtain rotation transformation information of the patch to be encoded , Refer to patch identification information and two-dimensional information, etc.
- this application is not limited to this.
- the decoding apparatus 1900 may include:
- the auxiliary information decoding module 1901 is used to parse the first identifier of the patch to be decoded from the code stream when the point cloud block patch to be decoded is the first patch in the current point cloud frame;
- the auxiliary information decoding module 1901 is further configured to parse the second identifier of the patch to be decoded from the code stream when the first identifier is the first value;
- the auxiliary information decoding module 1901 is further configured to determine the auxiliary information of the patch to be decoded according to the auxiliary information of the reference patch of the patch to be decoded when the second identifier is the fourth value; when the second identifier is the fifth value, from the code stream Parse the auxiliary information of the patch to be decoded, and the auxiliary information includes the three-dimensional information of the patch to be decoded;
- the auxiliary information decoding module 1901 is also used for when the patch to be decoded is the n-th patch in the current point cloud frame, n is greater than 1 and less than or equal to the number of the first-type patch in the reference point cloud frame of the current point cloud frame Parse the second identifier of the patch to be decoded from the code stream;
- the auxiliary information decoding module 1901 is further configured to determine the auxiliary information of the patch to be decoded according to the auxiliary information of the reference patch of the patch to be decoded when the second identifier is the fourth value; when the second identifier is the fifth value, from the code stream Parse the auxiliary information of the patch to be decoded, and the auxiliary information includes the three-dimensional information of the patch to be decoded;
- the reconstruction module 1902 is used to reconstruct the patch to be decoded according to the auxiliary information of the patch to be decoded.
- the auxiliary information decoding module 1901 is used to execute the related content of steps S1301-S1305 in the embodiment shown in FIG. 13, and the reconstruction module 1902 is used to execute the related content of step S1306 in the embodiment shown in FIG. 13.
- the auxiliary information decoding module 1901 in FIG. 19 corresponds to the auxiliary information decoding module 204 in FIG. 6, and the reconstruction module 1902 in FIG. 19 corresponds to the geometric information reconstruction module 206 of the point cloud in FIG. 5.
- the function of the auxiliary information decoding module 1901 may be implemented by the auxiliary information decoding module 204 in FIG. 6, and the function of the reconstruction module 1902 may be implemented by the point cloud geometric information reconstruction module 206 in FIG. 6.
- this application is not limited to this.
- FIG. 20 is a schematic structural diagram of the first point cloud encoding device provided by an embodiment of the application.
- the encoding device 2000 may include:
- the patch information acquisition module 2001 is used to acquire auxiliary information of the point cloud block patch to be encoded and the first identifier of the patch to be encoded;
- the auxiliary information encoding module 2002 is configured to encode the first identifier of the patch to be encoded into the code stream when the first identifier is the first value;
- the auxiliary information encoding module 2002 is further configured to encode the auxiliary information of the patch to be encoded and the first identifier into the code stream when the first identifier is the second value or the third value;
- the first identifier is the first value to indicate that the patch to be encoded is the first type of patch
- the first identifier is the second value to indicate that the patch to be encoded is a second type of patch, and the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded;
- the first identifier is a third value to indicate that the patch to be encoded is a third type of patch.
- the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
- the patch information acquisition module 2001 is used to execute the related content of step S1401 in the embodiment shown in FIG. 14, and the auxiliary information encoding module 2002 is used to execute the related content of step S1402 and step S1403 in the embodiment shown in FIG. 14.
- the patch information acquisition module 2001 may correspond to the combination of the point cloud block information generation module 101 and the packing module 102 in FIG. 2
- the auxiliary information encoding module 2002 may correspond to the auxiliary information encoding module 109 in FIG. 2
- the function of the patch information acquisition module 2001 can be implemented by the point cloud block information generation module 101 and the packing module 102 in FIG. 2
- the function of the auxiliary information generation module 2002 can be implemented by the auxiliary information encoding module 109 in FIG. 2.
- the point cloud block information generation module 101 is used to obtain the three-dimensional information, normal coordinate axis information, and first identification of the patch to be encoded
- the packaging module 102 is used to obtain the rotation transformation information of the patch to be encoded and the reference patch Identification information and two-dimensional information, etc.
- this application is not limited to this.
- FIG. 21 is a schematic structural diagram of a first point cloud decoding apparatus provided by an embodiment of this application.
- the decoding apparatus 2100 may include:
- the auxiliary information decoding module 2101 is used to parse the first identifier of the point cloud block patch to be decoded from the code stream;
- the auxiliary information decoding module 2101 is further configured to determine auxiliary information of the patch to be decoded according to auxiliary information of the reference patch of the patch to be decoded when the first identifier is the first value.
- the auxiliary information of the patch to be decoded includes two-dimensional information and three-dimensional information , Rotation transformation information and normal coordinate axis information;
- the auxiliary information decoding module 2101 is also used to parse the auxiliary information of the patch to be decoded from the code stream when the first identifier is the second value.
- the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, and references to the patch to be decoded. Patch identification information;
- the auxiliary information decoding module 2101 is also used to parse the auxiliary information of the patch to be decoded from the code stream when the first identifier is the third value.
- the auxiliary information of the patch to be decoded includes 2D information, 3D information, rotation transformation information, and method. To coordinate axis information;
- the reconstruction module 2102 is used to reconstruct the patch to be decoded according to the auxiliary information of the patch to be decoded.
- the auxiliary information decoding module 2101 is further configured to:
- the reconstruction module 2102 is also used to:
- the patch to be decoded is reconstructed.
- the auxiliary information decoding module 2101 is used to execute the related content of steps S1501-S1504 in the embodiment shown in FIG. 15, and the reconstruction module 2102 is used to execute the related content of step S1506 in the embodiment shown in FIG. 15.
- the auxiliary information decoding module 2101 in FIG. 21 corresponds to the auxiliary information decoding module 204 in FIG. 6, and the reconstruction module 2102 in FIG. 21 corresponds to the geometric information reconstruction module 206 of the point cloud in FIG. 5.
- the function of the auxiliary information decoding module 2101 may be implemented by the auxiliary information decoding module 204 in FIG. 6, and the function of the reconstruction module 2102 may be implemented by the point cloud geometric information reconstruction module 206 in FIG. 6.
- this application is not limited to this.
- FIG. 22 is a schematic block diagram of an implementation manner of a decoding device 2200 used in an embodiment of the present application.
- the acquiring apparatus 2200 may include a processor 2201, a memory 2202, and a bus system 2203.
- the processor 2201 and the memory 2202 are connected through a bus system 2203.
- the memory 2202 is used to store instructions.
- the processor 2201 is used to execute the instructions stored in the memory 2202 to execute various point cloud encoding or decoding methods described in this application. , Especially the method of filtering the current image block based on the block size of the current image block. To avoid repetition, it will not be described in detail here.
- the processor 2201 may be a central processing unit (CPU), and the processor 2201 may also be other general-purpose processors, DSPs, ASICs, FPGAs or other programmable logic devices, discrete gates. Or transistor logic devices, discrete hardware components, etc.
- the general-purpose processor may be a microprocessor or the processor may also be any conventional processor or the like.
- the memory 2202 may include a ROM device or a RAM device. Any other suitable type of storage device can also be used as the memory 2202.
- the memory 2202 may include code and data 22021 accessed by the processor 2201 using the bus 2203.
- the memory 2202 may further include an operating system 22023 and an application program 22022.
- the application program 22022 includes at least one of the point cloud encoding or decoding methods described in this application (especially the point cloud encoding and decoding methods described in this application) that allows the processor 2201 to execute program.
- the application program 22022 may include applications 1 to N, which further include a point cloud encoding or decoding application (referred to as a point cloud decoding application) that executes the point cloud encoding or decoding method described in this application.
- the bus system 2203 may also include a power bus, a control bus, and a status signal bus.
- various buses are marked as the bus system 2203 in the figure.
- the encoding apparatus 2200 may further include one or more output devices, such as a display 2204.
- the display 2204 may be a touch-sensitive display that merges the display with a touch-sensitive unit operable to sense touch input.
- the display 2204 may be connected to the processor 2201 via a bus 2203.
- the decoding device 2200 can execute the point cloud encoding method in this application, and can also execute the point cloud decoding method in this application.
- the computer-readable medium may include a computer-readable storage medium, which corresponds to a tangible medium, such as a data storage medium, or a communication medium that includes any medium that facilitates the transfer of a computer program from one place to another (for example, according to a communication protocol) .
- computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media, or (2) communication media, such as signals or carrier waves.
- Data storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and/or data structures for implementing the techniques described in this application.
- the computer program product may include a computer-readable medium.
- such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage devices, magnetic disk storage devices or other magnetic storage devices, flash memory, or structures that can be used to store instructions or data Any other media that can be accessed by the computer in the form of desired program code. And, any connection is properly termed a computer-readable medium.
- any connection is properly termed a computer-readable medium.
- coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave to transmit instructions from a website, server, or other remote source
- coaxial cable Wire, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwave are included in the definition of media.
- the computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other temporary media, but are actually directed to non-transitory tangible storage media.
- magnetic disks and optical disks include compact disks (CDs), laser disks, optical disks, DVDs, and Blu-ray disks, where disks usually reproduce data magnetically, and optical disks use lasers to reproduce data optically. Combinations of the above should also be included in the scope of computer-readable media.
- DSP digital signal processors
- ASIC application-specific integrated circuits
- FPGA field programmable logic arrays
- processor may refer to any of the foregoing structure or any other structure suitable for implementing the techniques described herein.
- the functions described by the various illustrative logical blocks, modules, and steps described herein may be provided in dedicated hardware and/or software modules configured for encoding and decoding, or combined Into the combined codec.
- the technology may be fully implemented in one or more circuits or logic elements.
- various illustrative logical blocks, units, and modules in the encoder 100 and the decoder 200 can be understood as corresponding circuit devices or logical elements.
- the technology of this application can be implemented in a variety of devices or devices, including wireless handsets, integrated circuits (ICs), or a set of ICs (for example, chipsets).
- ICs integrated circuits
- a set of ICs for example, chipsets.
- Various components, modules, or units are described in this application to emphasize the functional aspects of the device for performing the disclosed technology, but they do not necessarily need to be implemented by different hardware units.
- various units can be combined with appropriate software and/or firmware in the codec hardware unit, or by interoperating hardware units (including one or more processors as described above). provide.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Description
本申请要求于2019年4月30日提交的申请号为201910364032.2、发明名称为“点云编码方法、点云解码方法、装置及存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。This application claims the priority of the Chinese patent application filed on April 30, 2019 with the application number 201910364032.2 and the invention title "point cloud encoding method, point cloud decoding method, device and storage medium", the entire content of which is incorporated by reference In this application.
本申请涉及数据处理技术领域,特别涉及一种点云编码方法、点云解码方法、装置及存储介质。This application relates to the field of data processing technology, and in particular to a point cloud encoding method, point cloud decoding method, device and storage medium.
随着三维传感技术的不断发展,点云的采集越来越便捷,并且采集到的点云的质量也越来越高,规模也越来越大。因此,如何有效地对点云进行编码和解码,成为目前亟待解决的问题。With the continuous development of 3D sensing technology, the collection of point clouds has become more and more convenient, and the quality of the collected point clouds has become higher and higher, and the scale has also become larger. Therefore, how to effectively encode and decode the point cloud has become an urgent problem to be solved.
发明内容Summary of the invention
本申请提供了一种点云编码方法、点云解码方法、装置及存储介质,可以解决相关技术的如何有效地对点云进行编码和解码的问题。所述技术方案如下:This application provides a point cloud encoding method, point cloud decoding method, device and storage medium, which can solve the problem of how to effectively encode and decode point clouds in related technologies. The technical solution is as follows:
第一方面,提供了一种点云编码方法,该方法包括:获取待编码patch(点云块)的辅助信息和待编码patch的第一标识;当第一标识为第一值时,将待编码patch的辅助信息和第一标识编入码流,待编码patch为当前点云帧中的首个patch;或,当第一标识为第一值时,将待编码patch的辅助信息编入码流,待编码patch为当前点云帧中的非首个patch;其中第一标识为第一值,以指示待编码patch为第一类patch,待编码patch的辅助信息包括三维信息。In a first aspect, a point cloud encoding method is provided, the method includes: obtaining auxiliary information of a patch to be encoded (point cloud block) and a first identifier of the patch to be encoded; when the first identifier is a first value, Encode the auxiliary information of the patch and the first identifier into the code stream, and the patch to be encoded is the first patch in the current point cloud frame; or, when the first identifier is the first value, encode the auxiliary information of the patch to be encoded into the code Stream, the patch to be coded is the non-first patch in the current point cloud frame; the first identifier is the first value to indicate that the patch to be coded is the first type of patch, and the auxiliary information of the patch to be coded includes three-dimensional information.
需要说明的是,待编码patch可以是待编码的当前点云帧包括的patch中的任一patch。第一标识可以指示待编码patch的类型。第一标识的语法元素可以是patch_mode或patch_type等。第一标识的取值不同,待编码patch的类型不同。It should be noted that the patch to be encoded may be any patch included in the current point cloud frame to be encoded. The first identifier may indicate the type of patch to be encoded. The first identified syntax element may be patch_mode or patch_type, etc. The value of the first identifier is different, and the type of the patch to be encoded is different.
其中,第一标识为第一值时,可以指示待编码patch为第一类patch,第一类patch可以为当前点云组中的全局匹配patch,待编码patch的辅助信息包括三维信息,而不包括二维信息、旋转变换信息和法向坐标轴信息。Where the first identifier is the first value, it can indicate that the patch to be encoded is the first type of patch. The first type of patch can be a global matching patch in the current point cloud group. The auxiliary information of the patch to be encoded includes three-dimensional information. Including two-dimensional information, rotation transformation information and normal coordinate axis information.
当当前点云组内存在第一类patch时,由于当前点云组内的第一类patch在每个点云帧中的数量可以是相同的,且当第一类patch的数量大于1时,当前点云组内的每个点云帧中的第一类patch可以按照相同的顺序依次排列,所以当第一标识为第一值,待编码patch为当前点云帧中的首个patch时,表明待编码patch为当前点云帧中的首个第一类patch,此时可以将待编码patch的辅助信息和第一标识编入码流;当第一标识为第一值,待编码patch为当前点云帧中的非首个patch时,表明待编码patch为当前点云帧中的非首个第一类patch,此时可以将待编码patch的辅助信息编入码流,而不用将待编码patch的第一标识编入码流,从而可以简化编入码流的格式。When the first type of patch exists in the current point cloud group, since the number of the first type of patch in the current point cloud group can be the same in each point cloud frame, and when the number of the first type of patch is greater than 1, The first-type patches in each point cloud frame in the current point cloud group can be arranged in the same order, so when the first identifier is the first value, and the patch to be encoded is the first patch in the current point cloud frame, Indicates that the patch to be encoded is the first patch of the first type in the current point cloud frame. At this time, the auxiliary information and the first identifier of the patch to be encoded can be encoded into the code stream; when the first identifier is the first value, the patch to be encoded is When the current point cloud frame is not the first patch, it indicates that the patch to be coded is the non-first type I patch in the current point cloud frame. At this time, the auxiliary information of the patch to be coded can be encoded into the code stream instead of the waiting The first identifier of the encoded patch is encoded into the code stream, so that the format of the encoded code stream can be simplified.
由于第一类patch在当前点云组内的所有点云帧中都存在具有匹配关系的patch,且当前点云组内的第一类patch之间的二维信息、旋转变换信息和法向坐标轴信息相同,而三维信息可能不相同。因此,为了减少码流的比特开销,进而提高编码的效率,当第一标识为第一值时,待编码patch的辅助信息可以包括三维信息,而不包括二维信息、旋转变换信息和法向坐标轴信息。Because the first-type patch has matching patches in all point cloud frames in the current point cloud group, and the two-dimensional information, rotation transformation information and normal coordinates between the first-type patches in the current point cloud group The axis information is the same, but the three-dimensional information may be different. Therefore, in order to reduce the bit overhead of the code stream and improve the coding efficiency, when the first identifier is the first value, the auxiliary information of the patch to be coded may include three-dimensional information, but not two-dimensional information, rotation transformation information and normal direction. Coordinate axis information.
在一种可能的情况中,每个点云帧中的patch可以按照第一类patch、第二类patch和第三类patch的顺序进行排列,然后编码的时候也按照第一类patch、第二类patch和第三类patch顺序进行编码。所以如果当前点云组内存在第一类patch,则每个点云帧中的首个patch即为第一类patch。当前点云组内的第一类patch在每个点云帧中的数量可以是相同的,并且当第一类patch的数量大于1时,当前点云组内的每个点云帧中的第一类patch可以按照相同的顺序依次排列,也即是,每个点云帧中相同位置的第一类patch之间具备匹配关系。In a possible situation, the patches in each point cloud frame can be arranged in the order of the first type of patch, the second type of patch and the third type of patch, and then the first type of patch and the second type of patch are also used when encoding. The type patch and the third type patch are coded sequentially. So if there is a first-type patch in the current point cloud group, the first patch in each point cloud frame is the first-type patch. The number of the first-type patches in each point cloud frame in the current point cloud group can be the same, and when the number of the first-type patches is greater than 1, the number of the first type of patches in each point cloud frame in the current point cloud group One type of patches can be arranged in the same order, that is, there is a matching relationship between the first type of patches at the same position in each point cloud frame.
但是,为了便于区分哪些点云帧可以组成一个点云组,如图10所示,对于当前点云组内的首个点云帧,可以将首个点云帧包括的所有patch的第一标识设置为第三值,其他点云帧中的patch还是按照第一类patch、第二类patch和第三类patch的顺序进行排列。因此,当待编码patch的第一标识为第一值时,可以确定当前点云帧为当前点云组内的非首个点云帧。而且,当前点云帧可以为当前点云组中的第K个点云帧,K为大于或等于3的整数。也即是,对于当前点云组内的第3个点云帧以及第3个点云帧之后的每个点云帧,均可以按照S902的方式进行编码。However, in order to easily distinguish which point cloud frames can form a point cloud group, as shown in Figure 10, for the first point cloud frame in the current point cloud group, the first identification of all patches included in the first point cloud frame can be Set to the third value, the patches in other point cloud frames are still arranged in the order of the first type of patch, the second type of patch, and the third type of patch. Therefore, when the first identifier of the patch to be encoded is the first value, it can be determined that the current point cloud frame is the non-first point cloud frame in the current point cloud group. Moreover, the current point cloud frame may be the Kth point cloud frame in the current point cloud group, and K is an integer greater than or equal to 3. That is, the third point cloud frame in the current point cloud group and each point cloud frame after the third point cloud frame can be coded in the manner of S902.
其中,由于当前点云组中的点云帧可以按照两种编号方式进行编号。第一种编号方式:点云帧0、点云帧1、点云帧2……;第二种编号方式:点云帧1、点云帧2、点云帧3……。所以上述第K个点云帧可以是指第一种编号方式中的点云帧2及点云帧2之后的任一点云帧,也可以是指第二种编号方式中的点云帧3及点云帧3之后的任一点云帧。无论当前点云组中的点云帧按何种编号方式进行编号,第K个点云帧均可以指实际的当前点云组中第3个点云帧及第3个之后的点云帧。Among them, because the point cloud frames in the current point cloud group can be numbered according to two numbering methods. The first numbering method: point cloud frame 0,
基于上述描述,当前点云组内的第3个点云帧以及第3个点云帧之后的每个点云帧,均可以按照上述方式进行编码,而对于当前点云组内的第2个点云帧,可以按照下述两种方式进行编码:Based on the above description, the third point cloud frame in the current point cloud group and each point cloud frame after the third point cloud frame can be coded in the above manner, and for the second point cloud frame in the current point cloud group Point cloud frames can be encoded in the following two ways:
第一种可能的实现方式,如果当前点云帧为当前点云组内的第2个点云帧,那么,当待编码patch的第一标识为第一值,且待编码patch为当前点云帧中的首个patch时,可以将待编码patch的第一标识、当前点云组内的第一类patch的个数,以及待编码patch的辅助信息编入码流。当待编码patch的第一标识为第一值,且待编码patch为当前点云帧中的非首个patch时,可以将待编码patch的辅助信息编入码流,而不用将待编码patch的第一标识编入码流。The first possible implementation manner, if the current point cloud frame is the second point cloud frame in the current point cloud group, then, when the first identifier of the patch to be encoded is the first value, and the patch to be encoded is the current point cloud For the first patch in the frame, the first identifier of the patch to be encoded, the number of first-type patches in the current point cloud group, and the auxiliary information of the patch to be encoded can be incorporated into the code stream. When the first identifier of the patch to be coded is the first value, and the patch to be coded is not the first patch in the current point cloud frame, the auxiliary information of the patch to be coded can be encoded into the code stream instead of the patch to be coded The first identifier is incorporated into the code stream.
其中,在将当前点云组内的首个点云帧包括的所有patch的第一标识设置为第三值的过程中,可以获取当前点云组内的第一类patch的个数。Wherein, in the process of setting the first identifiers of all patches included in the first point cloud frame in the current point cloud group to the third value, the number of first-type patches in the current point cloud group can be obtained.
而且,将待编码patch的第一标识、当前点云组内的第一类patch的个数,以及待编码patch的辅助信息编入码流的操作可以为:将待编码patch的第一标识编入码流,然后,将当前点云组内的第一类patch的个数编入码流,最后,将待编码patch的辅助信息编入码流。也即是,当前点云组内的第一类patch的个数是在待编码patch的第一标识之后编入码流的。Moreover, the operation of encoding the first identifier of the patch to be encoded, the number of first-type patches in the current point cloud group, and the auxiliary information of the patch to be encoded into the code stream may be: editing the first identifier of the patch to be encoded Enter the code stream, and then encode the number of first-type patches in the current point cloud group into the code stream, and finally, encode the auxiliary information of the patch to be encoded into the code stream. That is, the number of the first-type patch in the current point cloud group is compiled into the code stream after the first identifier of the patch to be encoded.
需要说明的是,可以采用定长编码方式将第一类patch的个数编入码流,也可以采用变 长编码方式将第一类patch的个数编入码流,本申请实施例对此不做限定。It should be noted that the fixed-length encoding method can be used to encode the number of patches of the first type into the code stream, and the variable-length encoding method can also be used to encode the number of patches of the first type into the code stream. Not limited.
第二种可能的实现方式,如果当前点云帧为当前点云组内的第2个点云帧,那么,当待编码patch的第一标识为第一值时,可以将待编码patch的第一标识和辅助信息编入码流。也即是,第2个点云帧中的所有第一类patch的第一标识和辅助信息都需要编入码流,从而可以指示当前点云组内的第一类patch的个数,而无需在码流中编入当前点云组内的第一类patch的个数。In the second possible implementation manner, if the current point cloud frame is the second point cloud frame in the current point cloud group, then when the first identifier of the patch to be coded is the first value, the first value of the patch to be coded can be set An identification and auxiliary information are compiled into the code stream. That is, the first identification and auxiliary information of all the first-type patches in the second point cloud frame need to be encoded into the code stream, so that the number of the first-type patches in the current point cloud group can be indicated without The number of the first type patch in the current point cloud group is compiled into the code stream.
不论通过上述何种实现方式对第2个点云帧中的第一类patch进行编码,都可以通过第2个点云帧确定出当前点云组内的第一类patch的个数。这样,对于当前点云组内的第3个点云帧及第3个点云帧之后的点云帧,可以只将首个patch,也即首个第一类patch的第一标识编入码流,而不用将非首个第一类patch的第一标识编入码流。Regardless of the foregoing implementation manners for encoding the first-type patch in the second point cloud frame, the number of the first-type patch in the current point cloud group can be determined through the second point cloud frame. In this way, for the third point cloud frame in the current point cloud group and the point cloud frames after the third point cloud frame, only the first patch, that is, the first identifier of the first first type patch can be coded It is not necessary to encode the first identifier of the non-first first-type patch into the code stream.
综上,当待编码patch的第一标识为第三值,且待编码patch为当前点云帧中的首个patch时,即可确定当前点云帧为当前点云组内的首个点云帧。这样就无需在码流中编入当前点云组的点云帧的长度。并且,对于当前点云组内的第3个点云帧及第3个点云帧之后的点云帧可以只将首个第一类patch的第一标识编入码流,而不用将非首个第一类patch的第一标识编入码流,提高了编码效率,同时减少了码流的比特开销。In summary, when the first identifier of the patch to be encoded is the third value, and the patch to be encoded is the first patch in the current point cloud frame, it can be determined that the current point cloud frame is the first point cloud in the current point cloud group frame. In this way, there is no need to program the length of the point cloud frame of the current point cloud group in the code stream. In addition, for the third point cloud frame in the current point cloud group and the point cloud frames after the third point cloud frame, only the first identifier of the first first type patch can be compiled into the code stream, instead of the non-first point cloud frame. The first identifier of the first type patch is encoded into the code stream, which improves the coding efficiency and reduces the bit overhead of the code stream.
值得注意的是,在一种可能的实现方式中,当前点云帧中的首个patch可以对应一个标识信息,也可以称为索引,通过这个标识信息可以唯一指示当前点云帧中的首个patch,且首个patch的标识信息通常可以编入码流中。对于当前点云帧中的其他patch,可以采用计数器来确定其他patch为当前点云帧中的第几个patch。其中,计数器是在确定当前点云帧的首个patch时开始计数。It is worth noting that, in a possible implementation, the first patch in the current point cloud frame can correspond to an identification information, which can also be called an index, and this identification information can uniquely indicate the first patch in the current point cloud frame patch, and the identification information of the first patch can usually be incorporated into the code stream. For other patches in the current point cloud frame, a counter can be used to determine which patch is the current point cloud frame. Among them, the counter starts counting when the first patch of the current point cloud frame is determined.
需要说明的是,待编码patch的三维信息可以包括待编码patch在3D空间中沿着切线方向的偏移(3d_shift_tangent_axis)、待编码patch在3D空间中沿着双切线方向的偏移(3d_shift_bitangent_axis),以及待编码patch在3D空间中沿着法线方向的偏移(3d_shift_normal_axis)。It should be noted that the three-dimensional information of the patch to be encoded may include the offset of the patch to be encoded in the 3D space along the tangent direction (3d_shift_tangent_axis), and the offset of the patch to be encoded in the 3D space along the bitangent direction (3d_shift_bitangent_axis), And the offset of the patch to be encoded in the 3D space along the normal direction (3d_shift_normal_axis).
作为一种示例,当第一标识为第一值时,可以根据待编码patch的参考patch的三维信息,将待编码patch的三维信息编入码流,具体可以采用差分编码方式将待编码patch的三维信息编入码流,也可以直接编入码流,具体的编码方式不做限定。采用定长编码方式将待编码patch的第一标识编入码流。As an example, when the first identifier is the first value, the three-dimensional information of the patch to be encoded can be encoded into the code stream according to the three-dimensional information of the reference patch of the patch to be encoded. Specifically, the differential encoding method can be used to encode the three-dimensional information of the patch to be encoded. The 3D information is encoded into the code stream, or directly into the code stream, and the specific encoding method is not limited. The fixed-length encoding method is adopted to encode the first identifier of the patch to be encoded into the code stream.
其中,采用差分编码方式将待编码patch的三维信息编入码流是指将待编码patch的三维信息与待编码patch的参考patch的三维信息之间的差值编入码流。Wherein, using differential encoding to encode the three-dimensional information of the patch to be encoded into the code stream refers to encoding the difference between the three-dimensional information of the patch to be encoded and the three-dimensional information of the reference patch of the patch to be encoded into the code stream.
其中,当第一标识为第二值或第三值时,将待编码patch的辅助信息和第一标识编入码流。Wherein, when the first identifier is the second value or the third value, the auxiliary information of the patch to be encoded and the first identifier are encoded into the code stream.
其中,第一标识为第二值时,以指示待编码patch为第二类patch,第二类patch可以为当前点云组中的局部匹配patch,待编码patch的辅助信息包括二维信息、三维信息和待编码patch的参考patch的标识信息。第一标识为第三值时,以指示待编码patch为第三类patch,第三类patch可以为当前点云组中的非匹配patch,待编码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。Wherein, when the first identifier is the second value, it indicates that the patch to be encoded is a second type of patch. The second type of patch can be a local matching patch in the current point cloud group. The auxiliary information of the patch to be encoded includes two-dimensional information and three-dimensional information. Information and identification information of the reference patch of the patch to be encoded. When the first identifier is the third value, it indicates that the patch to be coded is a third type of patch. The third type of patch can be a non-matching patch in the current point cloud group. The auxiliary information of the patch to be coded includes two-dimensional information, three-dimensional information, Rotation transformation information and normal coordinate axis information.
由于第二类patch在当前点云帧的参考帧中存在具有匹配关系的patch,且第二类patch与其参考patch之间的旋转变换信息和法向坐标轴信息相同,而二维信息和三维信息可能不 相同,第三类patch在当前点云帧的参考帧中不存在具有匹配关系的patch,因此,为了减少码流的比特开销,进而提高编码的效率,当第一标识为第一值时,待编码patch的辅助信息可以包括三维信息,而不包括二维信息、旋转变换信息和法向坐标轴信息。当第一标识为第二值时,待编码patch的辅助信息可以包括二维信息、三维信息和待编码patch的参考patch的标识信息,而不包括旋转变换信息和法向坐标轴信息。当第一标识为第三值时,待编码patch的辅助信息可以包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。Because the second type of patch has a matching relationship in the reference frame of the current point cloud frame, and the rotation transformation information and normal coordinate axis information between the second type of patch and its reference patch are the same, and the two-dimensional information and the three-dimensional information It may be different. The third type of patch does not have a matching patch in the reference frame of the current point cloud frame. Therefore, in order to reduce the bit overhead of the code stream and improve the coding efficiency, when the first identifier is the first value The auxiliary information of the patch to be encoded may include three-dimensional information, but not two-dimensional information, rotation transformation information, and normal coordinate axis information. When the first identifier is the second value, the auxiliary information of the patch to be encoded may include two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded, but does not include rotation transformation information and normal coordinate axis information. When the first identifier is the third value, the auxiliary information of the patch to be encoded may include two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
需要说明的是,待编码patch的二维信息可以包括待编码patch在当前点云帧占用图中沿u轴方向的偏移(2d_shift_u)、待编码patch在当前点云帧占用图中沿v轴方向的偏移(2d_shift_v)、待编码patch在当前点云帧占用图中的宽度(2d_size_u),以及待编码patch在当前点云帧占用图中的高度(2d_size_v)。另外,待编码patch的参考patch的语法元素可以为patchIndex,用于指示参考patch的标识信息;语法元素还可以包括参考patch所在参考帧的标识信息:frameIndex。待编码patch的旋转变换信息的语法元素可以是rotation。再者,待编码patch的参考patch的标识信息可以用于指示待编码patch的参考patch。法向坐标轴信息可以为待编码patch的法向轴索引,例如normalAxis法向轴索引可以为0,1或者2,分别对于X轴、Y轴和Z轴。It should be noted that the two-dimensional information of the patch to be encoded may include the offset (2d_shift_u) of the patch to be encoded in the current point cloud frame occupancy map along the u axis, and the patch to be encoded in the current point cloud frame occupancy map along the v axis The direction shift (2d_shift_v), the width of the patch to be encoded in the current point cloud frame occupancy map (2d_size_u), and the height of the patch to be encoded in the current point cloud frame occupancy map (2d_size_v). In addition, the syntax element of the reference patch of the patch to be encoded may be patchIndex, which is used to indicate the identification information of the reference patch; the syntax element may also include the identification information of the reference frame where the reference patch is located: frameIndex. The syntax element of the rotation transformation information of the patch to be encoded may be rotation. Furthermore, the identification information of the reference patch of the patch to be encoded may be used to indicate the reference patch of the patch to be encoded. The normal axis information may be the normal axis index of the patch to be encoded, for example, the normal axis index of the normalAxis may be 0, 1, or 2, for the X axis, Y axis, and Z axis, respectively.
作为一种示例,当第一标识为第二值时,可以根据待编码patch的参考patch的二维信息和三维信息,将待编码patch的二维信息和三维信息编入码流,具体可以采用差分编码方式将待编码patch的二维信息和三维信息编入码流,也可以采用更加精确的预测差分方式将待编码patch的二维信息和三维信息编入码流,具体的编码方式不做限定。采用定长编码方式将待编码patch的参考patch的标识信息和第一标识编入码流。当第一标识为第三值时,可以采用定长编码方式将待编码patch的二维信息、三维信息、旋转变换信息、法向坐标轴信息和第一标识编入码流,也可以采用变长编码方式将待编码patch的二维信息、三维信息、旋转变换信息、法向坐标轴信息和第一标识编入码流,本申请实施例对此不做限定。As an example, when the first identifier is the second value, the two-dimensional information and three-dimensional information of the patch to be encoded can be compiled into the code stream according to the two-dimensional information and three-dimensional information of the reference patch of the patch to be encoded. The differential encoding method encodes the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream, and a more accurate predictive differential method can also be used to encode the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream. The specific encoding method is not used. limited. The identification information and the first identification of the reference patch of the patch to be encoded are encoded into the code stream using a fixed-length encoding method. When the first identifier is the third value, the fixed-length encoding method can be used to encode the two-dimensional information, three-dimensional information, rotation transformation information, normal axis information and the first identifier of the patch to be encoded into the code stream, or variable The long encoding method encodes the two-dimensional information, three-dimensional information, rotation transformation information, normal coordinate axis information, and first identifier of the patch to be encoded into the code stream, which is not limited in the embodiment of the present application.
其中,采用差分编码方式将待编码patch的二维信息和三维信息编入码流是指将待编码patch的二维信息与待编码patch的参考patch的二维信息之间的差值,以及待编码patch的三维信息与待编码patch的参考patch的三维信息之间的差值编入码流。Among them, using differential encoding to encode the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream refers to the difference between the two-dimensional information of the patch to be encoded and the two-dimensional information of the reference patch of the patch to be encoded, and The difference between the three-dimensional information of the coded patch and the three-dimensional information of the reference patch of the patch to be coded is encoded into the code stream.
基于上述描述,对于当前点云帧而言,当前点云帧中的首个第一类patch的第一标识,以及每个第二类patch的第一标识和每个第三类patch的第一标识需要编入码流。当前点云帧包括的每个patch的辅助信息也需要编入码流。对于第一标识和辅助信息的编码方式可能会存在如下三种可能的实现方式。Based on the above description, for the current point cloud frame, the first identifier of the first first-type patch in the current point cloud frame, the first identifier of each second-type patch, and the first identifier of each third-type patch in the current point cloud frame The logo needs to be programmed into the code stream. The auxiliary information of each patch included in the current point cloud frame also needs to be compiled into the code stream. There may be the following three possible implementation methods for the encoding method of the first identification and auxiliary information.
第一种可能的实现方式,可以将当前点云帧包括的多个patch的第一标识一起打包并编入码流,该多个patch的第一标识中包括待编码patch的第一标识,以及该多个patch中除待编码patch之外剩余的取值为第二值或第三值的patch的第一标识。对于当前点云帧包括的每个patch的辅助信息,可以各自打包并编入码流。例如,可以先将当前点云帧中的首个patch的第一标识,以及首个patch之外的取值为第二值或第三值的patch的第一标识一起打包并编入码流。然后,将当前点云帧包括的每个patch的辅助信息逐个打包并编入码流。In the first possible implementation manner, the first identifiers of multiple patches included in the current point cloud frame can be packaged together and compiled into the code stream, and the first identifiers of the multiple patches include the first identifier of the patch to be encoded, and Except the patch to be coded, the remaining first identifier of the patch whose value is the second value or the third value among the multiple patches. The auxiliary information of each patch included in the current point cloud frame can be individually packaged and compiled into a code stream. For example, the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged together and compiled into the code stream. Then, the auxiliary information of each patch included in the current point cloud frame is packaged one by one and compiled into the code stream.
第二种可能的实现方式下,可以将当前点云帧中的首个patch的第一标识,以及首个patch之外的取值为第二值或第三值的patch的第一标识各自打包并编入码流,对于当前点云帧包括的每个patch的辅助信息,也可以各自打包并编入码流。例如,可以先将当前点云帧中的 首个patch的第一标识编入码流,然后将首个patch的辅助信息编入码流。然后,将当前点云帧中的其他第一类patch的辅助信息逐个编入码流。最后,对于剩余的patch,即第二类patch和第三类patch,可以按照先编入第一标识,再编入辅助信息的方式进行编码。In the second possible implementation mode, the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged separately And compiled into the code stream, the auxiliary information of each patch included in the current point cloud frame can also be packaged separately and compiled into the code stream. For example, you can first encode the first identifier of the first patch in the current point cloud frame into the code stream, and then encode the auxiliary information of the first patch into the code stream. Then, the auxiliary information of other first-type patches in the current point cloud frame is compiled into the code stream one by one. Finally, for the remaining patches, that is, the second type of patch and the third type of patch, the coding can be performed in a way that the first identifier is first compiled, and then the auxiliary information is compiled.
第三种可能的实现方式,可以将当前点云帧包括的多个patch的第一标识一起打包并编入码流,该多个patch的第一标识中包括待编码patch的第一标识,以及该多个patch中除待编码patch之外剩余的取值为第二值或第三值的patch的第一标识。对于当前点云帧包括的每个patch的辅助信息,可以将每个patch的辅助信息中同一类型的信息一起打包并编入码流。对于每个patch的辅助信息中不同类型的信息可以各自打包并编入码流。In a third possible implementation manner, the first identifiers of multiple patches included in the current point cloud frame can be packaged together and compiled into the code stream, and the first identifiers of the multiple patches include the first identifier of the patch to be encoded, and Except the patch to be coded, the remaining first identifier of the patch whose value is the second value or the third value among the multiple patches. For the auxiliary information of each patch included in the current point cloud frame, the same type of information in the auxiliary information of each patch can be packaged together and compiled into the code stream. Different types of information in the auxiliary information of each patch can be individually packaged and compiled into the code stream.
例如,可以先将当前点云帧中的首个patch的第一标识,以及首个patch之外的取值为第二值或第三值的patch的第一标识一起打包并编入码流。假设,每个patch的辅助信息中都包括旋转变换信息和法向坐标轴信息,而有的patch的辅助信息中包括二维信息或者三维信息,有的patch的辅助信息中不包括二维信息或者三维信息,那么,将每个patch的辅助信息中的旋转变换信息和法向坐标轴信息一起打包并编入码流。每个patch的辅助信息中的二维信息和三维信息各自打包并编入码流。For example, the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged together and compiled into the code stream. Suppose that the auxiliary information of each patch includes rotation transformation information and normal coordinate axis information, while some auxiliary information of patches includes two-dimensional information or three-dimensional information, and some auxiliary information of patches does not include two-dimensional information or For three-dimensional information, the rotation transformation information and normal coordinate axis information in the auxiliary information of each patch are packaged together and compiled into the code stream. The two-dimensional information and three-dimensional information in the auxiliary information of each patch are individually packaged and compiled into the code stream.
其中,第一值、第二值和第三值可以分别是二进制的10、11和00,或者,第一值、第二值和第三值可以分别是二进制的11、10和00等,待编码patch的参考patch包括于当前点云帧的参考帧中,本申请实施例对此不做限定。Among them, the first value, the second value, and the third value may be binary 10, 11, and 00 respectively, or the first value, the second value, and the third value may be binary 11, 10, and 00, etc., respectively. The reference patch of the coded patch is included in the reference frame of the current point cloud frame, which is not limited in the embodiment of the present application.
为了进一步减少码流的比特开销,当前点云组内的每个点云帧中的patch可以按照第一类patch、第二类patch和第三类patch的顺序依次进行排列,此时,对于第三类patch而言,如果待编码patch为首个第三类patch,那么,可以采用定长编码方式进行编码,也可以采用变长编码方式,本申请实施例对此不做限定。如果待编码patch不是首个第三类patch,此时,可以根据首个第三类patch的三维信息,采用差分编码方式将待编码patch的二维信息和三维信息编入码流,而其他的信息还采用前文所述定长编码方式进行编码。In order to further reduce the bit overhead of the code stream, the patches in each point cloud frame in the current point cloud group can be arranged in the order of the first type of patch, the second type of patch, and the third type of patch. For the three types of patches, if the patch to be coded is the first third type of patch, then the fixed-length encoding method may be used for encoding, or the variable-length encoding method may be used, which is not limited in the embodiment of the present application. If the patch to be coded is not the
由于第一标识的不同的取值指示不同类型的patch。因此,可以通过第一标识将不同类型的patch进行区分,并且针对不同类型的patch,编入码流中的辅助信息包括的内容可以不相同,且对于第一类patch和第二类patch而言,只有部分辅助信息编入码流。这样,可以简化编入码流的格式,进一步减少码流的比特开销,从而提高编码的效率。The different values of the first identifier indicate different types of patches. Therefore, different types of patches can be distinguished by the first identifier, and for different types of patches, the content of the auxiliary information compiled into the code stream may be different, and for the first type of patch and the second type of patch , Only part of the auxiliary information is compiled into the code stream. In this way, the format of the code stream can be simplified, and the bit overhead of the code stream can be further reduced, thereby improving the coding efficiency.
第二方面,提供了一种点云解码方法,该方法包括:当待解码点云块patch为当前点云帧中的首个patch时,从码流中解析待解码patch的第一标识;当第一标识为第一值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息;当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息;根据待解码patch的辅助信息,重构待解码patch。In a second aspect, a point cloud decoding method is provided. The method includes: when the point cloud block patch to be decoded is the first patch in the current point cloud frame, parsing the first identifier of the patch to be decoded from the code stream; When the first identifier is the first value, the auxiliary information of the patch to be decoded is parsed from the code stream. The auxiliary information includes the three-dimensional information of the patch to be decoded; when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and less than or equal to the number of patches of the first type in the reference point cloud frame of the current point cloud frame, parse the auxiliary information of the patch to be decoded from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded; Decode the auxiliary information of the patch and reconstruct the patch to be decoded.
由于当前点云帧中的首个patch的第一标识是编入码流中的,所以当待解码点云块patch为当前点云帧中的首个patch时,可以从码流中解析待解码patch的第一标识。Since the first identifier of the first patch in the current point cloud frame is encoded in the code stream, when the point cloud block to be decoded is the first patch in the current point cloud frame, the to be decoded can be parsed from the code stream The first ID of the patch.
在一种可能的实现方式中,可以判断码流中是否包括待解码patch的标识信息,如果包括待解码patch的标识信息,则可以确定待解码patch为当前点云帧中的首个patch。如果不包括待解码patch的标识信息,则可以确定待解码patch为当前点云帧中的非首个patch。此 时,可以根据计数器来确定待解码patch为当前点云帧中的第几个patch。其中,计数器是在确定当前点云帧的首个patch时开始计数。In a possible implementation manner, it can be determined whether the code stream includes the identification information of the patch to be decoded, and if the identification information of the patch to be decoded is included, it can be determined that the patch to be decoded is the first patch in the current point cloud frame. If the identification information of the patch to be decoded is not included, it can be determined that the patch to be decoded is the non-first patch in the current point cloud frame. At this time, the number of the patch to be decoded in the current point cloud frame can be determined according to the counter. Among them, the counter starts counting when the first patch of the current point cloud frame is determined.
需要说明的是,当第一标识为第一值时,表明待解码patch为第一类patch,也即待解码patch在当前点云组内的所有点云帧中都存在相匹配的patch。此时,可以从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息,但不包括待解码patch的二维信息、旋转变换信息和法向坐标轴信息。It should be noted that when the first identifier is the first value, it indicates that the patch to be decoded is the first type of patch, that is, the patch to be decoded has a matching patch in all point cloud frames in the current point cloud group. At this time, the auxiliary information of the patch to be decoded can be parsed from the code stream. The auxiliary information includes the three-dimensional information of the patch to be decoded, but does not include the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
作为一种示例,可以采用与编码端匹配的方法从码流中解析第一类patch的个数。例如可以采用定长解码方式或变长解码方式从码流中解析第一类patch的个数。As an example, the number of patches of the first type can be parsed from the code stream by a method that matches the encoding end. For example, fixed-length decoding or variable-length decoding can be used to parse the number of patches of the first type from the code stream.
由上述第一方面提供的方法可知,当第一标识为第一值时,可以表明当前点云帧为当前点云组内的非首个点云帧。此时,如果当前点云帧为当前点云组内的第2个点云帧,则可以通过如下两种可能的实现方式对待解码patch进行解码。It can be known from the method provided in the above first aspect that when the first identifier is the first value, it can indicate that the current point cloud frame is the non-first point cloud frame in the current point cloud group. At this time, if the current point cloud frame is the second point cloud frame in the current point cloud group, the patch to be decoded can be decoded through the following two possible implementation methods.
第一种可能的实现方式,当前点云组内的第2个点云帧中的首个patch的第一标识,以及当前点云组内每个点云帧包括的第一类patch的个数共同编入码流。此时,如果当前点云帧为当前点云组内的第2个点云帧,待解码patch为当前点云帧中的首个patch,则可以先从码流中解析待解码patch的第一标识,当第一标识为第一值时,再从码流中解析当前点云组内每个点云帧包括的第一类patch的个数。然后再从码流中解析待解码patch的辅助信息。The first possible implementation is the first identification of the first patch in the second point cloud frame in the current point cloud group, and the number of the first type of patch included in each point cloud frame in the current point cloud group Code stream together. At this point, if the current point cloud frame is the second point cloud frame in the current point cloud group, and the patch to be decoded is the first patch in the current point cloud frame, the first patch to be decoded can be parsed from the code stream. Identification, when the first identification is the first value, the number of the first-type patches included in each point cloud frame in the current point cloud group is analyzed from the code stream. Then parse the auxiliary information of the patch to be decoded from the code stream.
第二种可能的实现方式,当前点云组内的第2个点云帧包括的第一类patch的第一标识均编入码流,此时,如果当前点云帧为当前点云组内的第2个点云帧,待解码patch为首个patch,则可以从码流中解析待解码patch的第一标识,当第一标识为第一值时,再从码流中解析待解码patch的辅助信息。In the second possible implementation manner, the first identifiers of the first type patch included in the second point cloud frame in the current point cloud group are all encoded into the code stream. At this time, if the current point cloud frame is in the current point cloud group If the patch to be decoded is the first patch in the second point cloud frame, the first identifier of the patch to be decoded can be parsed from the code stream. When the first identifier is the first value, the patch to be decoded is parsed from the code stream. Supplementary information.
由上述第一方面提供的方法可知,第一类patch在编码过程中,非首个第一类patch的第一标识没有编入码流,所以当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,表明待解码patch为当前点云帧中的非首个第一类patch,此时可以从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息。It can be seen from the method provided by the above first aspect that during the encoding process of the first-type patch, the first identifier of the non-first first-type patch is not encoded into the code stream, so when the patch to be decoded is the nth in the current point cloud frame When n is greater than 1 and less than or equal to the number of first-type patches in the reference point cloud frame of the current point cloud frame, it indicates that the patch to be decoded is not the first first-type patch in the current point cloud frame. At this time, the auxiliary information of the patch to be decoded can be parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
由于第一类patch在编码的过程中编入码流的辅助信息包括三维信息,但不包括二维信息、旋转变换信息和法向坐标轴信息,所以,当待解码patch为第一类patch时,从码流中解析的辅助信息包括待解码patch的三维信息,但不包括待解码patch的二维信息、旋转变换信息和法向坐标轴信息。此时,还可以根据待解码patch的参考patch的辅助信息,获取待解码patch的二维信息、旋转变换信息和法向坐标轴信息。Since the auxiliary information of the first type of patch that is encoded into the code stream during the encoding process includes three-dimensional information, but does not include two-dimensional information, rotation transformation information and normal coordinate axis information, when the patch to be decoded is the first type of patch The auxiliary information parsed from the code stream includes the three-dimensional information of the patch to be decoded, but does not include the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded. At this time, the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded can also be obtained according to the auxiliary information of the reference patch of the patch to be decoded.
作为一种示例,可以采用与编码端匹配的方法进行解码,例如可以采用差分解码方式从码流中解析待解码patch的三维信息。对于待解码patch的其他辅助信息,例如,待解码patch的二维信息、旋转变换信息和法向坐标轴信息,可以先从码流中解析当前点云帧的参考帧的标识信息,从而根据该参考帧的标识信息确定当前点云帧的参考帧,然后从当前点云帧的参考帧中获取待解码patch的参考patch的二维信息、旋转变换信息和法向坐标轴信息,并将参考patch的二维信息、旋转变换信息和法向坐标轴信息作为待解码patch的二维信息、旋转变换信息和法向坐标轴信息。其中,当前点云帧的参考帧也可以存在对应的参考帧,也即当前点云帧的参考帧中的参考patch也存在对应的参考patch,为了便于描述,将当前点云帧的参考帧记为第一参考帧,将当前点云帧的参考帧对应的参考帧记为第二参考帧,这样,第一参 考帧中的参考patch的辅助信息,可以根据第二参考帧中的对应的参考patch的辅助信息确定。通过这样的方式,可以根据当前点云帧的参考帧、当前点云帧的参考帧对应的参考帧等中逐级获取待解码patch的辅助信息。另外,还可以从已解码的点云中获取位置与待解码patch在当前点云帧中位置相同的patch的二维信息、旋转变换信息和法向坐标轴信息,并将获取的二维信息、旋转变换信息和法向坐标轴信息作为待解码patch的二维信息、旋转变换信息和法向坐标轴信息。As an example, a method matching the encoding end may be used for decoding, for example, a differential decoding method may be used to parse the three-dimensional information of the patch to be decoded from the code stream. For other auxiliary information of the patch to be decoded, for example, the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded, the identification information of the reference frame of the current point cloud frame can be parsed from the code stream, and then according to the The identification information of the reference frame determines the reference frame of the current point cloud frame, and then obtains the two-dimensional information, rotation transformation information and normal coordinate axis information of the reference patch of the patch to be decoded from the reference frame of the current point cloud frame, and refers to the patch The two-dimensional information, rotation transformation information and normal coordinate axis information of the patch are used as the two-dimensional information, rotation transformation information and normal coordinate axis information of the patch to be decoded. Among them, the reference frame of the current point cloud frame may also have a corresponding reference frame, that is, the reference patch in the reference frame of the current point cloud frame also has a corresponding reference patch. For ease of description, the reference frame of the current point cloud frame is recorded Is the first reference frame, and the reference frame corresponding to the reference frame of the current point cloud frame is marked as the second reference frame. In this way, the auxiliary information of the reference patch in the first reference frame can be based on the corresponding reference in the second reference frame The auxiliary information of the patch is determined. In this way, the auxiliary information of the patch to be decoded can be obtained step by step according to the reference frame of the current point cloud frame, the reference frame corresponding to the reference frame of the current point cloud frame, etc. In addition, the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch whose position is the same as that of the patch to be decoded in the current point cloud frame can be obtained from the decoded point cloud, and the obtained two-dimensional information, The rotation transformation information and the normal coordinate axis information are used as the two-dimensional information, the rotation transformation information and the normal coordinate axis information of the patch to be decoded.
换句话说,当第一标识为第一值时,从码流中解析出待解码patch的三维信息之后,还可以根据待解码patch的参考patch的辅助信息,获取待解码patch的辅助信息,辅助信息包括二维信息、旋转变换信息和法向坐标轴信息。这样,根据待解码patch的辅助信息,重构待解码patch,包括:根据解码patch的二维信息、三维信息、法向坐标轴信息和旋转变换信息重构待解码patch。In other words, when the first identifier is the first value, after the three-dimensional information of the patch to be decoded is parsed from the code stream, the auxiliary information of the patch to be decoded can also be obtained according to the auxiliary information of the reference patch of the to-be-decoded patch to assist The information includes two-dimensional information, rotation transformation information, and normal coordinate axis information. In this way, reconstructing the patch to be decoded according to the auxiliary information of the patch to be decoded includes: reconstructing the patch to be decoded according to the two-dimensional information, three-dimensional information, normal coordinate axis information, and rotation transformation information of the decoded patch.
当点云中的patch按照第一类patch、第二类patch和第三类patch依次排列的方式进行编码时,待解码patch的参考patch可以为当前点云帧的参考帧中位置与待解码patch在当前点云帧中的位置相同的patch。When the patch in the point cloud is coded in the order of the first type of patch, the second type of patch and the third type of patch, the reference patch of the patch to be decoded can be the position in the reference frame of the current point cloud frame and the patch to be decoded A patch with the same position in the current point cloud frame.
基于上述描述,如果待解码patch为当前点云帧中的非首个patch,可以通过计数器确定待解码patch为当前点云帧中的第几个patch。这样,当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,可以确定待解码patch为当前点云帧中的非首个第一类patch,从而可以从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息。Based on the above description, if the patch to be decoded is the non-first patch in the current point cloud frame, the counter can be used to determine the number of patches in the current point cloud frame to be decoded. In this way, when the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame, the patch to be decoded can be determined It is the non-first first-type patch in the current point cloud frame, so that the auxiliary information of the patch to be decoded can be parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
其中,可以通过两种方式确定当前点云组内每个点云帧包括的第一类patch的个数。第一种可能的实现方式,在对当前点云组内的第2个点云帧中的首个patch的第一标识解码后,可以直接从码流中解析出当前点云组内每个点云帧包括的第一类patch的个数。第二种可能的实现方式,在对当前点云组内的第2个点云帧的所有patch的第一标识解码后,可以确定第一标识为第一值的patch的个数,从而可以确定第2个点云帧包括的第一类patch的个数,也即当前点云组内每个点云帧包括的第一类patch的个数。也即是,通过第2个点云帧可以确定当前点云组内每个点云帧包括的第一类patch的个数。Among them, the number of first-type patches included in each point cloud frame in the current point cloud group can be determined in two ways. The first possible implementation is that after decoding the first identifier of the first patch in the second point cloud frame in the current point cloud group, each point in the current point cloud group can be directly parsed from the code stream The number of first-type patches included in the cloud frame. In the second possible implementation manner, after decoding the first identifiers of all patches of the second point cloud frame in the current point cloud group, the number of patches with the first identifier as the first value can be determined, so as to determine The number of first-type patches included in the second point cloud frame, that is, the number of first-type patches included in each point cloud frame in the current point cloud group. That is, the number of first-type patches included in each point cloud frame in the current point cloud group can be determined through the second point cloud frame.
在一种可能的情况中,当前点云组内的第2个点云帧可以作为第3个点云帧的参考点云帧,第3个点云帧可以作为第4个点云帧的参考点云帧,并依次类推。这样,第3个点云帧及第3个之后的点云帧可以根据参考点云帧中第一类patch的个数,确定当前点云帧中的第n个patch中的n是否大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数,从而确定待解码patch是否为第一类patch。In a possible situation, the second point cloud frame in the current point cloud group can be used as the reference point cloud frame of the third point cloud frame, and the third point cloud frame can be used as the reference point cloud frame of the fourth point cloud frame Point cloud frame, and so on. In this way, the third point cloud frame and the point cloud frames after the third can determine whether n in the nth patch in the current point cloud frame is greater than 1 and based on the number of the first type of patch in the reference point cloud frame The number of the first-type patch in the reference point cloud frame of the current point cloud frame is less than or equal to, so as to determine whether the patch to be decoded is the first-type patch.
另外,由于当前点云帧中的首个patch的第一标识,以及首个patch之外的取值为第二值或第三值的patch的第一标识可以各自打包并编入码流,也可以打包在一起并编入码流。因此,对于各自打包并编入码流的方式而言,如果待解码patch为当前点云帧中的首个patch,那么,可以从码流中解析待解码patch的第一标识。当然,对于首个patch之外的取值为第二值或第三值的patch,也可以从码流中解析待解码patch的第一标识。也即是,可以依次解析当前点云帧中待解码的首个patch的第一标识,以及首个patch之外的取值为第二值或第三值的patch的第一标识。对于打包在一起并编入码流的方式而言,如果待解码patch为当前点云帧中的首个patch,那么,可以从码流中解析当前点云帧包括的多个patch的第一标识,其中 解析出的多个第一标识中包括待解码patch的第一标识。也即是,通过一次解析即可得到当前点云帧包括的多个patch的第一标识,而无需分多次进行解析。同理,当当前点云帧包括的每个patch的辅助信息中同一类型的信息也一起打包并编入码流时,如果待解码patch为当前点云帧中的首个patch,那么,可以从码流中解析当前点云帧包括的每个patch的辅助信息中同一类型的信息。也即是,通过一次解析即可得到当前点云帧包括的每个patch的辅助信息中同一类型的信息,而无需分多次进行解析。In addition, since the first identifier of the first patch in the current point cloud frame, and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged separately and compiled into the code stream, Can be packaged together and compiled into code stream. Therefore, for the respective methods of packaging and encoding into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identifier of the patch to be decoded can be parsed from the code stream. Of course, for patches that take the second value or the third value other than the first patch, the first identifier of the patch to be decoded can also be parsed from the code stream. That is, the first identifier of the first patch to be decoded in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be parsed in sequence. For the method of packing together and compiling into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identification of multiple patches included in the current point cloud frame can be parsed from the code stream , Wherein the multiple first identifiers parsed include the first identifier of the patch to be decoded. That is, the first identifiers of multiple patches included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis. Similarly, when the same type of information in the auxiliary information of each patch included in the current point cloud frame is also packaged and compiled into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, you can The code stream parses the same type of information in the auxiliary information of each patch included in the current point cloud frame. That is, the same type of information in the auxiliary information of each patch included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis.
作为一种示例,可以采用与编码端匹配的方法从码流中解析待解码patch的第一标识。例如可以采用定长解码方式从码流中解析待解码patch的第一标识。As an example, a method of matching with the encoding end may be used to parse the first identifier of the patch to be decoded from the code stream. For example, a fixed-length decoding method can be used to parse the first identifier of the patch to be decoded from the code stream.
其中,当待解码patch为当前点云帧中的第n个patch,n大于1且大于当前点云帧的参考点云帧中的第一类patch的个数时,从码流中解析待解码patch的第一标识。Among them, when the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and greater than the number of first-type patches in the reference point cloud frame of the current point cloud frame, the to-be-decoded patch is parsed from the code stream The first ID of the patch.
由于第二类patch和第三类patch的编码过程中,第一标识均是编入码流中的,所以当待解码patch为当前点云帧中的第n个patch,n大于1且大于当前点云帧的参考点云帧中的第一类patch的个数时,表明待解码patch为第二类patch或第三类patch,此时可以从码流中解析待解码patch的第一标识。Since in the encoding process of the second type patch and the third type patch, the first identifier is encoded into the code stream, so when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and greater than the current When the point cloud frame refers to the number of the first-type patch in the point cloud frame, it indicates that the patch to be decoded is a second-type patch or a third-type patch. At this time, the first identifier of the patch to be decoded can be parsed from the code stream.
其中,当第一标识为第二值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的二维信息、三维信息和待解码patch的参考patch的标识信息。Wherein, when the first identifier is the second value, the auxiliary information of the patch to be decoded is parsed from the code stream. The auxiliary information includes the two-dimensional information, the three-dimensional information of the patch to be decoded, and the identification information of the reference patch of the patch to be decoded.
需要说明的是,当第一标识为第二值时,表明待解码patch为第二类patch,也即当前点云帧的参考帧中存在与待解码patch相匹配的参考patch。此时,可以从码流中解析待解码patch的辅助信息,该辅助信息包括二维信息、三维信息和待解码patch的参考patch的标识信息,但不包括旋转变换信息和法向坐标轴信息。It should be noted that when the first identifier is the second value, it indicates that the patch to be decoded is a second type of patch, that is, there is a reference patch matching the patch to be decoded in the reference frame of the current point cloud frame. At this time, the auxiliary information of the patch to be decoded can be parsed from the code stream. The auxiliary information includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be decoded, but does not include rotation transformation information and normal coordinate axis information.
当第一标识为第二值时,对于待解码patch的参考patch的标识信息,可以采用与编码端匹配的方法从码流中解析,例如可以采用定长解码方式来解析。对于待解码patch的旋转变换信息和法向坐标轴信息,可以通过待解码patch的参考patch的标识信息确定待解码patch的参考patch,进而获取待解码patch的参考patch的旋转变换信息和法向坐标轴信息,并将参考patch的旋转变换信息和法向坐标轴信息作为待解码patch的旋转变换信息和法向坐标轴信息。对于待解码patch的二维信息和三维信息,作为一种示例,可以采用与编码端匹配的方法进行解码,例如可以差分解码方式从码流中解析待解码patch的二维信息和三维信息。也即是,对于第二类patch,可以从码流中解析二维信息和三维信息,而旋转变换信息和法向坐标轴信息是推导或者获取得到的,这样就避免了在码流中编入旋转变换信息和法向坐标轴信息,从而也减少了码流的比特开销,同时提高了解码效率。When the first identifier is the second value, the identification information of the reference patch of the patch to be decoded can be parsed from the code stream by a method matching the encoding end, for example, a fixed-length decoding method can be used for analysis. For the rotation transformation information and normal coordinate axis information of the patch to be decoded, the reference patch of the reference patch to be decoded can be determined through the identification information of the reference patch to be decoded, and then the rotation transformation information and normal coordinates of the reference patch to be decoded are obtained. Axis information, and use the rotation transformation information and normal coordinate axis information of the reference patch as the rotation transformation information and normal coordinate axis information of the patch to be decoded. For the two-dimensional information and three-dimensional information of the patch to be decoded, as an example, a method that matches the encoding end can be used for decoding. For example, the two-dimensional information and three-dimensional information of the patch to be decoded can be parsed from the code stream in a differential decoding manner. That is, for the second type of patch, two-dimensional information and three-dimensional information can be parsed from the code stream, while the rotation transformation information and the normal coordinate axis information are derived or obtained, thus avoiding the need to include in the code stream The rotation transformation information and the normal coordinate axis information also reduce the bit overhead of the code stream and improve the decoding efficiency at the same time.
换句话说,当所述第一标识为第二值时,从码流中解析出待解码patch的二维信息、三维信息和待解码patch的参考patch的标识信息之后,还可以根据待解码patch的参考patch的标识信息,获取待解码patch的旋转变换信息和法向坐标轴信息。这样,根据待解码patch的辅助信息,重构待解码patch,包括:根据所述待解码patch的二维信息、三维信息、法向坐标轴信息和旋转变换信息重构所述待解码patch。In other words, when the first identifier is the second value, after the two-dimensional information, three-dimensional information of the patch to be decoded and the identification information of the reference patch of the patch to be decoded are parsed from the code stream, it can also be based on the patch to be decoded. Refer to the identification information of the patch to obtain the rotation transformation information and the normal coordinate axis information of the patch to be decoded. In this way, reconstructing the patch to be decoded according to the auxiliary information of the patch to be decoded includes: reconstructing the patch to be decoded according to the two-dimensional information, three-dimensional information, normal coordinate axis information, and rotation transformation information of the patch to be decoded.
其中,当第一标识为第三值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息。Wherein, when the first identifier is the third value, the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information includes the two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information of the patch to be decoded.
需要说明的是,当第一标识为第三值时,表明待解码patch为第三类patch,也即当前点云组中不存在与待解码patch相匹配的参考patch。此时,可以从码流中解析出待解码patch 的二维信息、三维信息、旋转变换信息和法向坐标轴信息。It should be noted that when the first identifier is the third value, it indicates that the patch to be decoded is a third type of patch, that is, there is no reference patch matching the patch to be decoded in the current point cloud group. At this point, the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded can be parsed from the code stream.
作为一种示例,可以采用与编码端匹配的方法进行解码,例如,可以采用定长解码方式从码流中解析待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息,也可以采用变长解码方式从码流中解析待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息,本申请实施例对此不做限定。但是,如果首个第三类patch的辅助信息按照定长编码方式或变长编码方式进行编码,非首个第三类patch的二维信息和三维信息采用差分编码方式进行编码,其他辅助信息采用定长编码方式进行编码。那么,对于非首个第三类patch来说,根据首个第三类patch的二维信息和三维信息,采用差分解码方式从码流中解析待解码patch的二维信息和三维信息,采用定长解码方式从码流中解析待解码patch的旋转变换信息和法向坐标轴信息。也即是,对于第三类patch,可以从码流中解析非首个第三类patch二维信息和三维信息,而旋转变换信息和法向坐标轴信息是推导或者获取得到的,这样就避免了在码流中编入旋转变换信息和法向坐标轴信息,从而也减少了码流的比特开销,同时提高了解码效率。As an example, a method that matches the encoding end can be used for decoding. For example, fixed-length decoding can be used to parse the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded from the code stream. The variable-length decoding method can also be used to parse the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded from the code stream, which is not limited in the embodiment of the present application. However, if the auxiliary information of the first third-type patch is coded according to fixed-length coding or variable-length coding, the two-dimensional information and three-dimensional information of the non-first third-type patch are coded by differential coding, and other auxiliary information is coded Encode with fixed-length encoding. Then, for the non-first third-type patch, according to the two-dimensional information and three-dimensional information of the first third-type patch, the two-dimensional information and three-dimensional information of the patch to be decoded are parsed from the code stream by differential decoding, and fixed The long decoding method parses the rotation transformation information and normal coordinate axis information of the patch to be decoded from the code stream. That is, for the third type of patch, the non-first third type of patch two-dimensional information and three-dimensional information can be parsed from the code stream, and the rotation transformation information and the normal coordinate axis information are derived or obtained, so as to avoid In order to encode the rotation transformation information and the normal coordinate axis information in the code stream, the bit overhead of the code stream is also reduced, and the decoding efficiency is improved.
其中,第一值、第二值和第三值可以分别是二进制的10、11和00,或者,第一值、第二值和第三值可以分别是二进制的11、10和00等,本申请实施例对此不做限定。Among them, the first value, the second value, and the third value may be binary 10, 11, and 00 respectively, or the first value, the second value, and the third value may be binary 11, 10, and 00, etc., respectively. The application embodiment does not limit this.
基于上述描述,当前点云组内的每个点云帧中的第一类patch、第二类patch和第三类patch可以依次排列,此时,如果待解码patch为当前点云帧中的首个patch,那么,从码流中解析待解码patch的第一标识之后,即可根据第一标识的取值确定当前点云帧是否为当前点云组内的首帧点云。也即是,当待解码patch为当前点云帧中的首个patch,且第一标识为第三值时,可以确定当前点云帧为当前点云组内的首帧点云。这样,就不需要在码流中编入一个点云组的长度。Based on the above description, the first type patch, the second type patch, and the third type patch in each point cloud frame in the current point cloud group can be arranged in sequence. At this time, if the patch to be decoded is the first in the current point cloud frame A patch, then, after parsing the first identifier of the patch to be decoded from the code stream, it can be determined whether the current point cloud frame is the first point cloud in the current point cloud group according to the value of the first identifier. That is, when the patch to be decoded is the first patch in the current point cloud frame, and the first identifier is the third value, it can be determined that the current point cloud frame is the first point cloud in the current point cloud group. In this way, there is no need to program the length of a point cloud group in the code stream.
需要说明的是,在获取待解码patch的辅助信息之后,也即获取到了待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息之后,可以根据但不限于这些辅助信息重构待解码patch,本申请对重构待解码patch需要的具体信息不做限定。It should be noted that after obtaining the auxiliary information of the patch to be decoded, that is, after obtaining the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded, the auxiliary information can be reproduced according to but not limited to these auxiliary information. To construct the patch to be decoded, this application does not limit the specific information needed to reconstruct the patch to be decoded.
综上,也即是,对于第一类patch和第二类patch而言,只需要从码流中解析部分辅助信息,其他的辅助信息可以推导或者获取得到,这样,可以简化解析码流的格式,减少码流的比特开销,从而提高解码的效率。In summary, that is, for the first type of patch and the second type of patch, only part of the auxiliary information needs to be parsed from the code stream, and other auxiliary information can be derived or obtained, which can simplify the format of the code stream. , Reduce the bit overhead of the code stream, thereby improving the efficiency of decoding.
第三方面,提供了一种点云编码方法,该方法包括:获取待编码点云块patch的辅助信息和待编码patch的第一标识;当第一标识为第一值时,将待编码patch的辅助信息、第一标识和待编码patch的第二标识编入码流,待编码patch为当前点云帧中的首个patch;或,当第一标识为第一值时,将待编码patch的辅助信息和待编码patch的第二标识编入码流,待编码patch为当前点云帧中的非首个patch;其中第一标识为第一值,以指示待编码patch为第一类patch;其中第二标识为第四值,以指示待编码patch的三维信息未编入码流;或者,第二标识为第五值,以指示待编码patch的三维信息已编入码流,待编码patch的辅助信息包括三维信息。In a third aspect, a point cloud coding method is provided. The method includes: obtaining auxiliary information of a point cloud block patch to be coded and a first identifier of the patch to be coded; when the first identifier is a first value, the patch to be coded The auxiliary information, the first identifier, and the second identifier of the patch to be encoded are encoded into the code stream, and the patch to be encoded is the first patch in the current point cloud frame; or, when the first identifier is the first value, the patch to be encoded The auxiliary information and the second identifier of the patch to be encoded are encoded into the code stream, the patch to be encoded is the non-first patch in the current point cloud frame; the first identifier is the first value to indicate that the patch to be encoded is the first type of patch ; Wherein the second identifier is the fourth value to indicate that the three-dimensional information of the patch to be encoded is not encoded into the code stream; or the second identifier is the fifth value to indicate that the three-dimensional information of the patch to be encoded has been encoded into the code stream and is to be encoded The auxiliary information of the patch includes three-dimensional information.
第一类patch在当前点云组内的所有点云帧中都存在具有匹配关系的patch,且当前点云组内的第一类patch之间的二维信息、旋转变换信息和法向坐标轴信息相同,而三维信息可能不相同,但是在某些情况下,第一类patch的三维信息也可以相同。在这种情况下,当第 一标识为第一值时,可以指示待编码patch为第一类patch,且编入码流的信息还可以包括第二标识。The first type of patch has matching patches in all point cloud frames in the current point cloud group, and the two-dimensional information, rotation transformation information and normal coordinate axis between the first type of patches in the current point cloud group The information is the same, but the three-dimensional information may be different, but in some cases, the three-dimensional information of the first type of patch can also be the same. In this case, when the first identifier is the first value, it can indicate that the patch to be encoded is the first type of patch, and the information encoded into the code stream can also include the second identifier.
需要说明的是,第二标识用于指示待编码patch的三维信息是否已编入码流。第二标识的语法元素可以是override_3d_shift_data_flag。第二标识为第四值时,可以指示待编码patch的三维信息未编入码流。也即是,待编码patch的三维信息与待编码patch的参考patch的三维信息相同,因此可以不用将待编码patch的三维信息再次编入码流,也即待编码patch的辅助信息可以不包括三维信息。第二标识为第五值时,可以指示待编码patch的三维信息已编入码流。也即是,待编码patch的三维信息与待编码patch的参考patch的三维信息不相同,因此需要将待编码patch的三维信息编入码流,也即待编码patch的辅助信息可以包括三维信息。具体编码方法在此不做限定,例如可以采用差分编码方式,也可以采用定长编码方式。其中,第四值的语法元素可以是false,第五值的语法元素可以是true。It should be noted that the second identifier is used to indicate whether the three-dimensional information of the patch to be encoded has been encoded into the code stream. The syntax element of the second identification may be override_3d_shift_data_flag. When the second identifier is the fourth value, it can indicate that the three-dimensional information of the patch to be encoded is not encoded into the code stream. That is, the three-dimensional information of the patch to be encoded is the same as the three-dimensional information of the reference patch of the patch to be encoded, so there is no need to re-encode the three-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded may not include the three-dimensional information. information. When the second identifier is the fifth value, it can indicate that the three-dimensional information of the patch to be encoded has been encoded into the code stream. That is, the three-dimensional information of the patch to be encoded is different from the three-dimensional information of the reference patch of the patch to be encoded. Therefore, it is necessary to encode the three-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded may include three-dimensional information. The specific encoding method is not limited here. For example, a differential encoding method may be used, or a fixed-length encoding method may be used. The syntax element of the fourth value may be false, and the syntax element of the fifth value may be true.
其中,第一标识为第二值时,可以指示待编码patch为第二类patch。也即当前点云帧的参考帧中存在与待编码patch相匹配的参考patch。待编码patch的辅助信息包括二维信息、三维信息和待编码patch的参考patch的标识信息。Wherein, when the first identifier is the second value, it may indicate that the patch to be encoded is a second-type patch. That is, there is a reference patch that matches the patch to be encoded in the reference frame of the current point cloud frame. The auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded.
其中,第一标识为第三值时,可以指示待编码patch为第三类patch。也即当前点云帧的参考帧中不存在与待编码patch相匹配的参考patch。待编码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。Wherein, when the first identifier is a third value, it may indicate that the patch to be encoded is a third-type patch. That is, there is no reference patch that matches the patch to be encoded in the reference frame of the current point cloud frame. The auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information.
由于当前点云组内的第一类patch在每个点云帧中的数量可以是相同的,所以当第一标识为第一值,待编码patch为当前点云帧中的首个patch时,表明待编码patch为当前点云帧中的首个第一类patch,此时可以将待编码patch的辅助信息、第一标识和第二标识编入码流;当第一标识为第一值,待编码patch为当前点云帧中的非首个patch时,表明待编码patch为当前点云帧中的非首个第一类patch,可以将待编码patch的辅助信息和第二标识编入码流,而不用将待编码patch的第一标识编入码流,从而可以简化编入码流的格式。其中,第二标识是用于指示待编码patch的三维信息是否已编入码流的标识。当第二标识为第四值时,表明待编码patch的三维信息未编入码流。也即是,待编码patch的三维信息与待编码patch的参考patch的三维信息相同,因此可以不用将待编码patch的三维信息再次编入码流,也即待编码patch的辅助信息可以不包括三维信息,这样,可以进一步减少码流的比特开销,从而提高编码的效率。Since the number of the first-type patches in each point cloud frame in the current point cloud group can be the same, when the first identifier is the first value, and the patch to be encoded is the first patch in the current point cloud frame, Indicates that the patch to be encoded is the first patch of the first type in the current point cloud frame. At this time, the auxiliary information, the first identifier and the second identifier of the patch to be encoded can be encoded into the code stream; when the first identifier is the first value, When the patch to be coded is the non-first patch in the current point cloud frame, it indicates that the patch to be coded is the
第四方面,提供一种点云解码方法,该方法包括:当待解码点云块patch为当前点云帧中的首个patch时,从码流中解析待解码patch的第一标识;当第一标识为第一值时,从码流中解析待解码patch的第二标识;当第二标识为第四值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息;当第二标识为第五值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息;当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,从码流中解析待解码patch的第二标识;当第二标识为第四值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息;当第二标识为第五值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息;根据待解码patch的辅助信息,重构待解码patch。In a fourth aspect, a point cloud decoding method is provided. The method includes: when the point cloud block patch to be decoded is the first patch in the current point cloud frame, parsing the first identifier of the patch to be decoded from the code stream; When an identifier is the first value, analyze the second identifier of the patch to be decoded from the code stream; when the second identifier is the fourth value, determine the auxiliary information of the patch to be decoded according to the auxiliary information of the reference patch of the patch to be decoded; When the second identifier is the fifth value, the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded; when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and less than or equal to the number of first-type patches in the reference point cloud frame of the current point cloud frame, the second identifier of the patch to be decoded is parsed from the code stream; when the second identifier is the fourth value, according to the The auxiliary information of the decoded patch refers to the auxiliary information of the patch to be decoded to determine the auxiliary information of the patch to be decoded; when the second identifier is the fifth value, the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded; The auxiliary information of the patch to be decoded is reconstructed.
需要说明的是,第二标识为第四值时,可以指示待解码patch的三维信息未编入码流。也即是,待解码patch的三维信息与待解码patch的参考patch的三维信息相同,此时可以根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息。具体地,可以将待解码patch的参考patch的辅助信息作为待解码patch的辅助信息。第二标识为第五值时,可以指示待解码patch的三维信息已编入码流,待解码patch的辅助信息包括三维信息。此时,从码流中解析待解码patch的辅助信息,辅助信息包括待解码patch的三维信息。作为一种示例,可以采用差分解码方式从码流中解析待解码patch的辅助信息。具体方式可以参考前文。It should be noted that when the second identifier is the fourth value, it may indicate that the three-dimensional information of the patch to be decoded is not encoded into the code stream. That is, the 3D information of the patch to be decoded is the same as the 3D information of the reference patch of the patch to be decoded. At this time, the auxiliary information of the patch to be decoded can be determined according to the auxiliary information of the reference patch of the patch to be decoded. Specifically, the auxiliary information of the reference patch of the patch to be decoded may be used as the auxiliary information of the patch to be decoded. When the second identifier is the fifth value, it can indicate that the 3D information of the patch to be decoded has been encoded into the bitstream, and the auxiliary information of the patch to be decoded includes 3D information. At this time, the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded. As an example, a differential decoding method can be used to parse the auxiliary information of the patch to be decoded from the code stream. The specific method can refer to the previous article.
由于当前点云帧中的非首个第一类patch的第二标识均是编入码流中的,所以当待解码patch为当前点云帧中的第n个patch,n大于1且大于当前点云帧的参考点云帧中的第一类patch的个数时,也即待解码patch为非首个第一类patch时,可以从码流中解析待解码patch的第二标识。Since the second identifiers of the non-first first-type patch in the current point cloud frame are all encoded into the bitstream, when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and greater than the current When the point cloud frame refers to the number of the first-type patch in the point cloud frame, that is, when the patch to be decoded is not the first first-type patch, the second identifier of the patch to be decoded can be parsed from the code stream.
由于当前点云帧中的首个patch的第一标识是编入码流中的,所以当待解码点云块patch为当前点云帧中的首个patch时,从码流中解析待解码patch的第一标识,当第一标识为第一值时,表明待解码patch为首个第一类patch,此时可以从码流中解析待解码patch的第二标识。当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,表明待解码patch为非首个第一类patch,此时可以从码流中解析待解码patch的第二标识。其中,第二标识为第四值时,表明待解码patch的三维信息未编入码流。也即是,待解码patch的三维信息与待解码patch的参考patch的三维信息相同,此时可以将待解码patch的参考patch的三维信息作为待解码patch的三维信息,而不需要从码流中解析待解码patch的三维信息,可以简化解析码流的格式,减少码流的比特开销,从而提高解码的效率。Since the first identifier of the first patch in the current point cloud frame is encoded into the code stream, when the point cloud block to be decoded is the first patch in the current point cloud frame, the patch to be decoded is parsed from the code stream When the first identifier is the first value, it indicates that the patch to be decoded is the first patch of the first type. At this time, the second identifier of the patch to be decoded can be parsed from the code stream. When the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame, it indicates that the patch to be decoded is not the first A first-type patch, at this time, the second identifier of the patch to be decoded can be parsed from the code stream. Wherein, when the second identifier is the fourth value, it indicates that the three-dimensional information of the patch to be decoded is not encoded into the code stream. That is, the three-dimensional information of the patch to be decoded is the same as the three-dimensional information of the reference patch of the patch to be decoded. At this time, the three-dimensional information of the reference patch of the patch to be decoded can be used as the three-dimensional information of the patch to be decoded, without the need to extract from the code stream Parsing the three-dimensional information of the patch to be decoded can simplify the format of the parsing code stream, reduce the bit overhead of the code stream, and improve the efficiency of decoding.
第五方面,提供了一种点云编码方法,该方法包括:获取待编码点云块patch的辅助信息和待编码patch的第一标识;当第一标识为第一值时,将待编码patch的第一标识编入码流;当第一标识为第二值或第三值时,将待编码patch的辅助信息和第一标识编入码流;其中第一标识为第一值,以指示待编码patch为第一类patch;其中第一标识为第二值,以指示待编码patch为第二类patch,待编码patch的辅助信息包括二维信息、三维信息和待编码patch的参考patch的标识信息;其中第一标识为第三值,以指示待编码patch为第三类patch,待编码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。In a fifth aspect, a point cloud coding method is provided, the method comprising: obtaining auxiliary information of a point cloud block to be coded and a first identifier of the patch to be coded; when the first identifier is a first value, the patch to be coded When the first identifier is the second value or the third value, the auxiliary information of the patch to be encoded and the first identifier are encoded into the code stream; where the first identifier is the first value to indicate The patch to be coded is the first type of patch; the first identifier is the second value to indicate that the patch to be coded is the second type of patch, and the auxiliary information of the patch to be coded includes two-dimensional information, three-dimensional information and the reference patch of the patch to be coded Identification information; where the first identification is a third value to indicate that the patch to be encoded is a third type of patch. The auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
当第一标识为第一值时,表明待编码patch为第一类patch。在一种可能的实现方式中,第一类patch在当前点云组内的所有点云帧中都存在具有匹配关系的patch,且当前点云组内的第一类patch之间的二维信息、三维信息、旋转变换信息和法向坐标轴信息均相同。因此,为了减少码流的比特开销,进而提高编码的效率,当第一标识为第一值时,将待编码patch的第一标识编入码流,而不用将待编码patch的辅助信息编入码流。When the first identifier is the first value, it indicates that the patch to be encoded is the first type of patch. In a possible implementation, the first-type patch has patches with matching relationships in all point cloud frames in the current point cloud group, and two-dimensional information between the first-type patches in the current point cloud group , 3D information, rotation transformation information and normal coordinate axis information are all the same. Therefore, in order to reduce the bit overhead of the code stream and improve the coding efficiency, when the first identifier is the first value, the first identifier of the patch to be coded is encoded into the code stream instead of the auxiliary information of the patch to be coded. Code stream.
由于当前点云组内的第一类patch之间的二维信息、旋转变换信息和法向坐标轴信息和三维信息均可以相同,所以当待编码patch第一标识为第一值时,表明待编码patch为第一类patch,此时,可以将待编码patch的第一标识编入码流,而不用将待编码patch的辅助信息编入码流,从而可以简化编入码流的格式。另外,由于第一标识的取值可以为第一值、第二值和第三值。不同的取值指示不同类型的patch。因此,可以通过第一标识将不同类型的patch 进行区分,并且针对不同类型的patch,编入码流中的辅助信息包括的内容可以不相同,且对于第一类patch和第二类patch而言,只有部分辅助信息编入码流。这样,可以简化编入码流的格式,进一步减少码流的比特开销,从而提高编码的效率。Since the two-dimensional information, rotation transformation information and normal coordinate axis information and three-dimensional information among the first-type patches in the current point cloud group can be the same, when the first identifier of the patch to be encoded is the first value, it indicates that the The coded patch is the first type of patch. At this time, the first identifier of the patch to be coded can be encoded into the code stream, instead of coding the auxiliary information of the patch to be coded into the code stream, so that the format of the code stream can be simplified. In addition, the value of the first identifier may be the first value, the second value, and the third value. Different values indicate different types of patches. Therefore, different types of patches can be distinguished by the first identifier, and for different types of patches, the content of the auxiliary information encoded in the code stream may be different, and for the first type of patch and the second type of patch , Only part of the auxiliary information is compiled into the code stream. In this way, the format of the code stream can be simplified, and the bit overhead of the code stream can be further reduced, thereby improving the coding efficiency.
第六方面,提供了一种点云解码方法,该方法包括:从码流中解析待解码点云块patch的第一标识;当第一标识为第一值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息,待解码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息;当第一标识为第二值时,从码流中解析待解码patch的辅助信息,待解码patch的辅助信息包括二维信息、三维信息和待解码patch的参考patch的标识信息;当第一标识为第三值时,从码流中解析待解码patch的辅助信息,待解码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息;根据待解码patch的辅助信息,重构待解码patch。In a sixth aspect, a point cloud decoding method is provided. The method includes: parsing a first identifier of a point cloud block patch to be decoded from a code stream; when the first identifier is a first value, according to the reference patch of the patch to be decoded The auxiliary information determines the auxiliary information of the patch to be decoded. The auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information; when the first identifier is the second value, it is parsed from the code stream The auxiliary information of the patch to be decoded. The auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be decoded; when the first identifier is the third value, parse the patch to be decoded from the code stream Auxiliary information, the auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information; according to the auxiliary information of the patch to be decoded, the patch to be decoded is reconstructed.
由于当前点云帧中的所有patch的第一标识可以各自打包并编入码流,也可以打包在一起并编入码流。因此,对于各自打包并编入码流的方式而言,如果待解码patch为当前点云帧中的首个patch,那么,可以从码流中解析待解码patch的第一标识。当然,对于非首个patch,也可以从码流中解析待解码patch的第一标识。也即是,可以依次解析当前点云帧中待解码的每个patch的第一标识。对于打包在一起并编入码流的方式而言,如果待解码patch为当前点云帧中的首个patch,那么,可以从码流中解析当前点云帧包括的多个patch的第一标识,其中解析出的多个第一标识中包括待解码patch的第一标识。也即是,通过一次解析即可得到当前点云帧包括的多个patch的第一标识,而无需分多次进行解析。Because the first identifiers of all patches in the current point cloud frame can be individually packaged and compiled into a code stream, or they can be packaged together and compiled into a code stream. Therefore, for the respective methods of packaging and encoding into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identifier of the patch to be decoded can be parsed from the code stream. Of course, for the non-first patch, the first identifier of the patch to be decoded can also be parsed from the code stream. That is, the first identifier of each patch to be decoded in the current point cloud frame can be analyzed sequentially. For the method of packing together and compiling into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identification of multiple patches included in the current point cloud frame can be parsed from the code stream , Wherein the multiple first identifiers parsed include the first identifier of the patch to be decoded. That is, the first identifiers of multiple patches included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis.
作为一种示例,可以采用与编码端匹配的方法从码流中解析待解码patch的第一标识。例如可以采用定长解码方式从码流中解析待解码patch的第一标识。As an example, a method of matching with the encoding end may be used to parse the first identifier of the patch to be decoded from the code stream. For example, a fixed-length decoding method can be used to parse the first identifier of the patch to be decoded from the code stream.
由于第一类patch在编码的过程中没有将辅助信息编入码流,当第一标识为第一值时,也即待解码patch为第一类patch时,可以根据待解码patch的参考patch的辅助信息,获取待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息。Because the first type of patch does not encode auxiliary information into the code stream during the encoding process, when the first identifier is the first value, that is, when the patch to be decoded is the first type of patch, the reference patch of the patch to be decoded can be Auxiliary information to obtain 2D information, 3D information, rotation transformation information and normal coordinate axis information of the patch to be decoded.
作为一种示例,可以先从码流中解析出当前点云帧的参考帧的标识信息,从而根据该参考帧的标识信息确定当前点云帧的参考帧,然后从当前点云帧的参考帧中获取待解码patch的参考patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息,并将参考patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息作为待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息。其中,当前点云帧的参考帧也可以存在对应的参考帧,也即当前点云帧的参考帧中的参考patch也存在对应的参考patch,为了便于描述,将当前点云帧的参考帧记为第一参考帧,将当前点云帧的参考帧对应的参考帧记为第二参考帧,这样,第一参考帧中的参考patch的辅助信息,可以根据第二参考帧中的对应的参考patch的辅助信息确定。通过这样的方式,可以根据当前点云帧的参考帧、当前点云帧的参考帧对应的参考帧等中逐级获取待解码patch的辅助信息。另外,对于待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息,还可以从已解码的点云中获取位置与待解码patch在当前点云帧中位置相同的patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息,并将获取的二维信息、三维信息、旋转变换信息和法向坐标轴信息作为待解码patch的二维信息、旋转变换信息和法向坐标轴信息。As an example, the identification information of the reference frame of the current point cloud frame can be parsed from the code stream, so as to determine the reference frame of the current point cloud frame according to the identification information of the reference frame, and then from the reference frame of the current point cloud frame Obtain the 2D information, 3D information, rotation transformation information and normal coordinate axis information of the reference patch of the patch to be decoded, and use the 2D information, 3D information, rotation transformation information and normal coordinate axis information of the reference patch as the information to be decoded Patch's two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information. Among them, the reference frame of the current point cloud frame may also have a corresponding reference frame, that is, the reference patch in the reference frame of the current point cloud frame also has a corresponding reference patch. For ease of description, the reference frame of the current point cloud frame is recorded Is the first reference frame, and the reference frame corresponding to the reference frame of the current point cloud frame is marked as the second reference frame. In this way, the auxiliary information of the reference patch in the first reference frame can be based on the corresponding reference in the second reference frame The auxiliary information of the patch is determined. In this way, the auxiliary information of the patch to be decoded can be obtained step by step according to the reference frame of the current point cloud frame, the reference frame corresponding to the reference frame of the current point cloud frame, etc. In addition, for the two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information of the patch to be decoded, the position of the patch whose position is the same as that of the patch to be decoded in the current point cloud frame can also be obtained from the decoded point cloud. Two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information, and the obtained two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information are used as the two-dimensional information, rotation transformation information and information of the patch to be decoded. Normal axis information.
当前点云组内的每个点云帧中的patch按照第一类patch、第二类patch和第三类patch的 顺序排列进行编码时,待解码patch的参考patch可以为当前点云帧的参考帧中位置与待解码patch在当前点云帧中的位置相同的patch。When the patch in each point cloud frame in the current point cloud group is encoded in the order of the first type of patch, the second type of patch and the third type of patch, the reference patch of the patch to be decoded can be the reference of the current point cloud frame The patch whose position in the frame is the same as the position of the patch to be decoded in the current point cloud frame.
其中,由于第二类patch在编码的过程中编入码流的辅助信息包括二维信息、三维信息和参考patch的标识信息,但不包括旋转变换信息和法向坐标轴信息,所以,当待解码patch为第二类patch时,从码流中解析的辅助信息包括待解码patch的二维信息、三维信息和待解码patch的参考patch的标识信息,但不包括待解码patch的旋转变换信息和法向坐标轴信息。此时,还可以根据待解码patch的参考patch的标识信息,获取待解码patch的旋转变换信息和法向坐标轴信息。Among them, because the auxiliary information of the second type of patch that is incorporated into the code stream during the encoding process includes two-dimensional information, three-dimensional information, and identification information of the reference patch, but does not include rotation transformation information and normal coordinate axis information, so when When the decoded patch is the second type of patch, the auxiliary information parsed from the code stream includes the two-dimensional information, three-dimensional information of the patch to be decoded, and the identification information of the reference patch of the patch to be decoded, but does not include the rotation transformation information and information of the patch to be decoded. Normal axis information. At this time, the rotation transformation information and normal coordinate axis information of the patch to be decoded can also be obtained according to the identification information of the reference patch of the patch to be decoded.
综上,对于第一类patch而言只需从码流中解析第一标识,其他的辅助信息可以推导或者获取得到,对于第二类patch而言只需要从码流中解析部分辅助信息,其他的辅助信息也可以推导或者获取得到。这样,可以简化解析码流的格式,减少码流的比特开销,从而提高解码的效率。In summary, for the first type of patch, only the first identifier needs to be parsed from the code stream, and other auxiliary information can be derived or obtained. For the second type of patch, only part of the auxiliary information needs to be parsed from the code stream. The auxiliary information can also be derived or obtained. In this way, the format of the parsing code stream can be simplified, the bit overhead of the code stream can be reduced, and the decoding efficiency can be improved.
第七方面,提供了一种点云编码装置,该装置包括:点云块patch信息获取模块,用于获取待编码点云块patch的辅助信息和待编码patch的第一标识;辅助信息编码模块,用于当第一标识为第一值时,将待编码patch的辅助信息和第一标识编入码流,待编码patch为当前点云帧中的首个patch;或辅助信息编码模块,用于当第一标识为第一值时,将待编码patch的辅助信息编入码流,待编码patch为当前点云帧中的非首个patch;其中第一标识为第一值,以指示待编码patch为第一类patch,待编码patch的辅助信息包括三维信息。In a seventh aspect, a point cloud encoding device is provided, the device comprising: a point cloud block patch information acquisition module for acquiring auxiliary information of the point cloud block patch to be encoded and a first identifier of the patch to be encoded; auxiliary information encoding module , Used to encode the auxiliary information of the patch to be encoded and the first identifier into the code stream when the first identifier is the first value, the patch to be encoded is the first patch in the current point cloud frame; or the auxiliary information encoding module, using When the first identifier is the first value, the auxiliary information of the patch to be encoded is encoded into the code stream, and the patch to be encoded is the non-first patch in the current point cloud frame; the first identifier is the first value to indicate the The coded patch is the first type of patch, and the auxiliary information of the patch to be coded includes three-dimensional information.
其中,当前点云帧为当前组中的第K个点云帧,K为大于或等于3的整数。Among them, the current point cloud frame is the Kth point cloud frame in the current group, and K is an integer greater than or equal to 3.
其中,该辅助信息编码模块还用于:Among them, the auxiliary information encoding module is also used for:
当第一标识为第二值或第三值时,将待编码patch的辅助信息和第一标识编入码流;When the first identifier is the second value or the third value, encode the auxiliary information of the patch to be encoded and the first identifier into the code stream;
其中第一标识为第二值,以指示待编码patch为第二类patch,待编码patch的辅助信息包括二维信息、三维信息和待编码patch的参考patch的标识信息;The first identifier is the second value to indicate that the patch to be encoded is a second type of patch, and the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded;
其中第一标识为第三值,以指示待编码patch为第三类patch,待编码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。The first identifier is a third value to indicate that the patch to be encoded is a third type of patch. The auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
其中,该辅助信息编码模块还用于:Among them, the auxiliary information encoding module is also used for:
将当前点云帧包括的多个patch的第一标识编入码流,该多个patch的第一标识中包括待编码patch的第一标识,该多个patch的第一标识中除待编码patch的第一标识之外剩余的第一标识为第二值或第三值。The first identifiers of the multiple patches included in the current point cloud frame are encoded into the code stream, the first identifiers of the multiple patches include the first identifiers of the patch to be encoded, and the first identifiers of the multiple patches are excluding the patch to be encoded The remaining first identifier besides the first identifier is the second value or the third value.
其中,第一值、第二值和第三值分别是二进制的10、11和00,Among them, the first value, the second value and the third value are binary 10, 11 and 00 respectively,
或者,第一值、第二值和第三值分别是二进制的11、10和00。Or, the first value, the second value, and the third value are 11, 10, and 00 in binary, respectively.
其中,待编码patch的第一标识为第三值,待编码patch为当前点云帧中的首个patch。The first identifier of the patch to be encoded is the third value, and the patch to be encoded is the first patch in the current point cloud frame.
其中,待编码patch的参考patch包括于当前点云帧的参考帧中。Wherein, the reference patch of the patch to be encoded is included in the reference frame of the current point cloud frame.
其中,第一类patch为当前组中的全局匹配patch,第二类patch为当前组中的局部匹配patch,第三类patch为当前组中的非匹配patch。Among them, the first type of patch is a global matching patch in the current group, the second type of patch is a local matching patch in the current group, and the third type of patch is a non-matching patch in the current group.
第八方面,提供了一种点云解码装置,该装置包括:辅助信息解码模块,用于当待解码点云块patch为当前点云帧中的首个patch时,从码流中解析待解码patch的第一标识;该辅 助信息解码模块,还用于当第一标识为第一值时,从码流中解析待解码patch的辅助信息,辅助信息包括待解码patch的三维信息;该辅助信息解码模块,还用于当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息;重构模块,用于根据待解码patch的辅助信息,重构待解码patch。In an eighth aspect, a point cloud decoding device is provided. The device includes: an auxiliary information decoding module, configured to parse the to-be-decoded point cloud block patch from the current point cloud frame when the patch to be decoded is the first patch in the current point cloud frame The first identifier of the patch; the auxiliary information decoding module is also used to parse the auxiliary information of the patch to be decoded from the code stream when the first identifier is the first value. The auxiliary information includes the three-dimensional information of the patch to be decoded; the auxiliary information The decoding module is also used for when the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame, from The auxiliary information of the patch to be decoded is parsed in the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded; the reconstruction module is used to reconstruct the patch to be decoded according to the auxiliary information of the patch to be decoded.
其中,当前点云帧为当前组中的第K个点云帧,K为大于或等于3的整数。Among them, the current point cloud frame is the Kth point cloud frame in the current group, and K is an integer greater than or equal to 3.
其中,该辅助信息解码模块还用于:Among them, the auxiliary information decoding module is also used for:
当待解码patch为当前点云帧中的第n个patch,n大于1且大于当前点云帧的参考点云帧中的第一类patch的个数时,从码流中解析待解码patch的第一标识;When the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and greater than the number of the first type of patch in the reference point cloud frame of the current point cloud frame, parse the patch to be decoded from the code stream First logo
当第一标识为第二值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的二维信息、三维信息和待解码patch的参考patch的标识信息;When the first identifier is the second value, parse the auxiliary information of the patch to be decoded from the code stream, and the auxiliary information includes the two-dimensional information, three-dimensional information of the patch to be decoded, and identification information of the reference patch of the patch to be decoded;
当第一标识为第三值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息。When the first identifier is the third value, the auxiliary information of the patch to be decoded is parsed from the code stream. The auxiliary information includes the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
其中,该辅助信息解码模块还用于:Among them, the auxiliary information decoding module is also used for:
当待解码patch为当前点云帧中的首个patch时,从码流中解析当前点云帧包括的多个patch的第一标识,其中解析出的多个第一标识中包括待解码patch的第一标识,该多个第一标识中除待解码patch的第一标识之外剩余的第一标识为第二值或第三值。When the patch to be decoded is the first patch in the current point cloud frame, the first identifiers of multiple patches included in the current point cloud frame are parsed from the code stream, and the multiple first identifiers parsed include the patch to be decoded A first identifier, and the remaining first identifiers among the plurality of first identifiers except the first identifier of the patch to be decoded are the second value or the third value.
其中,第一值、第二值和第三值分别是二进制的10、11和00,Among them, the first value, the second value and the third value are binary 10, 11 and 00 respectively,
或者,第一值、第二值和第三值分别是二进制的11、10和00。Or, the first value, the second value, and the third value are 11, 10, and 00 in binary, respectively.
其中,当待解码patch为当前点云帧中的首个patch,且第一标识为第三值时,当前点云帧为首个点云帧。Wherein, when the patch to be decoded is the first patch in the current point cloud frame, and the first identifier is the third value, the current point cloud frame is the first point cloud frame.
其中,当第一标识为第一值时,该辅助信息解码模块还用于:Wherein, when the first identifier is the first value, the auxiliary information decoding module is further configured to:
根据待解码patch的参考patch的辅助信息,获取待解码patch的二维信息、旋转变换信息和法向坐标轴信息;Obtain the two-dimensional information, rotation transformation information and normal coordinate axis information of the patch to be decoded according to the auxiliary information of the reference patch of the patch to be decoded;
该重构模块还用于:The reconstruction module is also used to:
根据待解码patch的二维信息、三维信息、法向坐标轴信息和旋转变换信息重构待解码patch。According to the two-dimensional information, three-dimensional information, normal coordinate axis information and rotation transformation information of the patch to be decoded, the patch to be decoded is reconstructed.
其中,当第一标识为第二值时,该辅助信息解码模块还用于:Wherein, when the first identifier is the second value, the auxiliary information decoding module is also used to:
根据待解码patch的参考patch的标识信息,获取待解码patch的旋转变换信息和法向坐标轴信息;Obtain the rotation transformation information and normal coordinate axis information of the patch to be decoded according to the identification information of the reference patch of the patch to be decoded;
该重构模块还用于:The reconstruction module is also used to:
根据待解码patch的二维信息、三维信息、法向坐标轴信息和旋转变换信息重构待解码patch。According to the two-dimensional information, three-dimensional information, normal coordinate axis information and rotation transformation information of the patch to be decoded, the patch to be decoded is reconstructed.
其中,待解码patch的参考patch包括于当前点云帧的参考帧中。The reference patch of the patch to be decoded is included in the reference frame of the current point cloud frame.
第九方面,提供了一种点云编码装置,该装置包括:点云块patch信息获取模块,用于获取待编码点云块patch的辅助信息和待编码patch的第一标识;辅助信息编码模块,用于当第一标识为第一值时,将待编码patch的辅助信息、第一标识和待编码patch的第二标识编入码流,待编码patch为当前点云帧中的首个patch;或辅助信息编码模块,用于当第一标识为 第一值时,将待编码patch的辅助信息和待编码patch的第二标识编入码流,待编码patch为当前点云帧中的非首个patch;其中第一标识为第一值,以指示待编码patch为第一类patch;其中第二标识为第四值,以指示待编码patch的三维信息未编入码流;或者,第二标识为第五值,以指示待编码patch的三维信息已编入码流,待编码patch的辅助信息包括三维信息。In a ninth aspect, a point cloud encoding device is provided, the device comprising: a point cloud block patch information acquisition module for acquiring auxiliary information of the point cloud block patch to be encoded and a first identifier of the patch to be encoded; auxiliary information encoding module , Used to encode the auxiliary information of the patch to be encoded, the first identifier and the second identifier of the patch to be encoded into the code stream when the first identifier is the first value, the patch to be encoded is the first patch in the current point cloud frame Or auxiliary information encoding module, when the first identifier is the first value, the auxiliary information of the patch to be encoded and the second identifier of the patch to be encoded into the code stream, and the patch to be encoded is the non-information in the current point cloud frame The first patch; where the first identifier is the first value to indicate that the patch to be encoded is the first type of patch; where the second identifier is the fourth value to indicate that the three-dimensional information of the patch to be encoded is not encoded into the code stream; or, the first The second flag is the fifth value to indicate that the three-dimensional information of the patch to be encoded has been encoded into the bitstream, and the auxiliary information of the patch to be encoded includes three-dimensional information.
第十方面,提供了一种点云解码装置,该装置包括:辅助信息解码模块,用于当待解码点云块patch为当前点云帧中的首个patch时,从码流中解析待解码patch的第一标识;该辅助信息解码模块,还用于当第一标识为第一值时,从码流中解析待解码patch的第二标识;该辅助信息解码模块,还用于当第二标识为第四值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息;当第二标识为第五值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息;该辅助信息解码模块,还用于当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,从码流中解析待解码patch的第二标识;该辅助信息解码模块,还用于当第二标识为第四值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息;当第二标识为第五值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息;重构模块,用于根据待解码patch的辅助信息,重构待解码patch。In a tenth aspect, a point cloud decoding device is provided. The device includes: an auxiliary information decoding module for analyzing the to-be-decoded point cloud block patch from the current point cloud frame when the patch to be decoded is the first patch in the current point cloud frame The first identifier of the patch; the auxiliary information decoding module is also used to parse the second identifier of the patch to be decoded from the code stream when the first identifier is the first value; the auxiliary information decoding module is also used to When the identifier is the fourth value, the auxiliary information of the patch to be decoded is determined according to the auxiliary information of the reference patch of the patch to be decoded; when the second identifier is the fifth value, the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information Including the three-dimensional information of the patch to be decoded; the auxiliary information decoding module is also used when the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the reference point cloud frame of the current point cloud frame When the number of the first type of patch, the second identifier of the patch to be decoded is parsed from the code stream; the auxiliary information decoding module is also used for when the second identifier is the fourth value, according to the reference patch of the patch to be decoded The auxiliary information determines the auxiliary information of the patch to be decoded; when the second identifier is the fifth value, the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded; the reconstruction module is used according to The auxiliary information of the patch to be decoded is reconstructed.
第十一方面,提供了一种点云编码装置,该装置包括:点云块patch信息获取模块,用于获取待编码点云块patch的辅助信息和待编码patch的第一标识;辅助信息编码模块,用于当第一标识为第一值时,将待编码patch的第一标识编入码流;该辅助信息编码模块,还用于当第一标识为第二值或第三值时,将待编码patch的辅助信息和第一标识编入码流;其中第一标识为第一值,以指示待编码patch为第一类patch;其中第一标识为第二值,以指示待编码patch为第二类patch,待编码patch的辅助信息包括二维信息、三维信息和待编码patch的参考patch的标识信息;其中第一标识为第三值,以指示待编码patch为第三类patch,待编码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。In an eleventh aspect, a point cloud encoding device is provided, the device comprising: a point cloud block patch information acquisition module for acquiring auxiliary information of the point cloud block patch to be encoded and a first identifier of the patch to be encoded; auxiliary information encoding The module is used to encode the first identifier of the patch to be encoded into the code stream when the first identifier is the first value; the auxiliary information encoding module is also used to when the first identifier is the second value or the third value, The auxiliary information of the patch to be encoded and the first identifier are encoded into the code stream; the first identifier is the first value to indicate that the patch to be encoded is a first type of patch; the first identifier is the second value to indicate the patch to be encoded It is the second type of patch. The auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded; the first identifier is a third value to indicate that the patch to be encoded is a third-type patch, The auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information.
第十二方面,提供了一种点云解码装置,该装置包括:辅助信息解码模块,用于从码流中解析待解码点云块patch的第一标识;该辅助信息解码模块,还用于当第一标识为第一值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息,待解码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息;该辅助信息解码模块,还用于当第一标识为第二值时,从码流中解析待解码patch的辅助信息,待解码patch的辅助信息包括二维信息、三维信息和待解码patch的参考patch的标识信息;该辅助信息解码模块,还用于当第一标识为第三值时,从码流中解析待解码patch的辅助信息,待解码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息;重构模块,用于根据待解码patch的辅助信息,重构待解码patch。In a twelfth aspect, a point cloud decoding device is provided. The device includes: an auxiliary information decoding module for parsing the first identifier of the point cloud block patch to be decoded from the code stream; the auxiliary information decoding module is also used for When the first identifier is the first value, the auxiliary information of the patch to be decoded is determined according to the auxiliary information of the reference patch of the patch to be decoded. The auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis. Information; the auxiliary information decoding module is also used to parse the auxiliary information of the patch to be decoded from the code stream when the first identifier is the second value. The auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information and the patch to be decoded Reference patch identification information; the auxiliary information decoding module is also used to parse the auxiliary information of the patch to be decoded from the code stream when the first identifier is the third value. The auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information Information, rotation transformation information, and normal coordinate axis information; the reconstruction module is used to reconstruct the patch to be decoded according to the auxiliary information of the patch to be decoded.
其中,当第一标识为第二值时,该辅助信息解码模块还用于:Wherein, when the first identifier is the second value, the auxiliary information decoding module is also used to:
根据待解码patch的参考patch的标识信息,获取待解码patch的旋转变换信息和法向坐标轴信息;Obtain the rotation transformation information and normal coordinate axis information of the patch to be decoded according to the identification information of the reference patch of the patch to be decoded;
该重构模块还用于:The reconstruction module is also used to:
根据待解码patch的二维信息、三维信息、法向坐标轴信息和旋转变换信息重构待解码patch。According to the two-dimensional information, three-dimensional information, normal coordinate axis information and rotation transformation information of the patch to be decoded, the patch to be decoded is reconstructed.
第十三方面,提供一种用于编码点云数据的设备,该设备可以包括:存储器和编码器。存储器用于存储点云数据。编码器用于执行上述第一方面或第一方面的任一种可能的设计提供的点云编码方法,或者,编码器用于执行上述第三方面或第三方面的任一种可能的设计提供的点云编码方法,或者,编码器用于执行上述第五方面或第五方面的任一种可能的设计提供的点云编码方法。In a thirteenth aspect, a device for encoding point cloud data is provided. The device may include a memory and an encoder. The memory is used to store point cloud data. The encoder is used to implement the point cloud coding method provided by the first aspect or any possible design of the first aspect, or the encoder is used to implement the points provided by the third aspect or any possible design of the third aspect. The cloud coding method, or the encoder is used to execute the point cloud coding method provided by any possible design of the fifth aspect or the fifth aspect.
第十四方面,提供一种用于解码点云数据的设备,该设备可以包括:存储器和解码器。存储器用于存储码流形式的点云数据。解码器用于执行上述第二方面或第二方面的任一种可能的设计提供的点云解码方法,或者,解码器用于执行上述第四方面或第四方面的任一种可能的设计提供的点云解码方法,或者,解码器用于执行上述第六方面或第六方面的任一种可能的设计提供的点云解码方法。In a fourteenth aspect, a device for decoding point cloud data is provided. The device may include a memory and a decoder. The memory is used to store point cloud data in the form of a code stream. The decoder is used to implement the point cloud decoding method provided by the foregoing second aspect or any possible design of the second aspect, or the decoder is used to implement the points provided by any possible design of the foregoing fourth aspect or the fourth aspect The cloud decoding method, or the decoder is used to execute the point cloud decoding method provided by the sixth aspect or any one of the possible designs of the sixth aspect.
第十五方面,提供一种编码装置,包括:存储器和处理器;其中,该存储器用于存储程序代码;该处理器用于调用该程序代码,以执行上述第一方面或第三方面或第五方面提供的点云编码方法。In a fifteenth aspect, an encoding device is provided, including: a memory and a processor; wherein the memory is used for storing program code; the processor is used for calling the program code to execute the first aspect or the third aspect or the fifth aspect. Point cloud coding method provided by the aspect.
第十六方面,提供一种解码装置,包括:存储器和处理器;其中,该存储器用于存储程序代码;该处理器用于调用该程序代码,以执行上述第二方面或第四方面或第六方面提供的点云解码方法。In a sixteenth aspect, there is provided a decoding device, including: a memory and a processor; wherein the memory is used to store program code; the processor is used to call the program code to execute the second aspect or the fourth aspect or the sixth aspect. The point cloud decoding method provided by the aspect.
本申请还提供一种计算机可读存储介质,包括程序代码,该程序代码在计算机上运行时,使得该计算机执行如上述第一方面及其可能的设计,或第三方面及其可能的设计,或第五方面及其可能的设计提供的任一种点云编码方法。The present application also provides a computer-readable storage medium, including program code, which when run on a computer, causes the computer to execute the first aspect and its possible designs, or the third aspect and its possible designs, Or any point cloud coding method provided by the fifth aspect and its possible designs.
本申请还提供一种计算机可读存储介质,包括程序代码,该程序代码在计算机上运行时,使得该计算机执行上述第二方面及其可能的设计,或第四方面及其可能的设计,或第六方面及其可能的设计提供的任一种点云解码方法。This application also provides a computer-readable storage medium, including program code, which when run on a computer, causes the computer to execute the second aspect and its possible designs, or the fourth aspect and its possible designs, or Any point cloud decoding method provided by the sixth aspect and its possible designs.
本申请还提供一种计算机程序产品,当该计算机程序产品在计算机上运行时使得该计算机执行第一方面或第一方面的任一种可能的设计,或,执行第三方面或第三方面的任一种可能的设计,或,执行第五方面或第五方面的任一种可能的设计提供的点云编码方法的部分或全部步骤。This application also provides a computer program product, which when the computer program product runs on a computer, causes the computer to execute any possible design of the first aspect or the first aspect, or execute the third aspect or the third aspect Any possible design, or execute part or all of the steps of the point cloud coding method provided by the fifth aspect or any possible design of the fifth aspect.
本申请还提供一种计算机程序产品,当该计算机程序产品在计算机上运行时使得该计算机执行第二方面或第二方面的任一种可能的设计,或,执行第四方面或第四方面的任一种可能的设计,或,执行第六方面或第六方面的任一种可能的设计提供的点云解码方法的部分或全部步骤。This application also provides a computer program product, which when the computer program product runs on a computer, causes the computer to execute any possible design of the second aspect or the second aspect, or execute the fourth aspect or the fourth aspect Any possible design, or execute part or all of the steps of the point cloud decoding method provided by the sixth aspect or any possible design of the sixth aspect.
应当理解的是,上述提供的任一种编解码装置、计算机可读存储介质和计算机程序产品的有益效果均可以对应参考上文对应方面提供的方法实施例的有益效果,不再赘述。It should be understood that the beneficial effects of any codec device, computer-readable storage medium, and computer program product provided above can be referred to the beneficial effects of the method embodiments provided in the corresponding aspects above, and details are not repeated.
本申请提供的技术方案至少可以带来以下有益效果:The technical solution provided in this application can at least bring about the following beneficial effects:
在本申请实施例中,先获取待编码patch的辅助信息和待编码patch的第一标识。由于当前点云组内的第一类patch在每个点云帧中的数量可以是相同的,所以当第一标识为第一值,待编码patch为当前点云帧中的首个patch时,表明待编码patch为当前点云帧中的首个第一类patch,此时可以将待编码patch的辅助信息和第一标识编入码流;当第一标识为第一值,待编码patch为当前点云帧中的非首个patch时,表明待编码patch为当前点云帧中的非首个第一类patch,此时可以将待编码patch的辅助信息编入码流,而不用将待编码patch的第一标识编入码流,从而可以简化编入码流的格式。进一步减少码流的比特开销,从而提高编码的效率。In this embodiment of the application, first obtain the auxiliary information of the patch to be encoded and the first identifier of the patch to be encoded. Since the number of the first-type patches in each point cloud frame in the current point cloud group can be the same, when the first identifier is the first value, and the patch to be encoded is the first patch in the current point cloud frame, Indicates that the patch to be encoded is the first patch of the first type in the current point cloud frame. At this time, the auxiliary information and the first identifier of the patch to be encoded can be encoded into the code stream; when the first identifier is the first value, the patch to be encoded is When the current point cloud frame is not the first patch, it indicates that the patch to be coded is the non-first type I patch in the current point cloud frame. At this time, the auxiliary information of the patch to be coded can be encoded into the code stream instead of the waiting The first identifier of the encoded patch is encoded into the code stream, so that the format of the encoded code stream can be simplified. Further reduce the bit overhead of the code stream, thereby improving the coding efficiency.
图1为本申请实施例提供的一种点云译码系统的示意性框图;FIG. 1 is a schematic block diagram of a point cloud decoding system provided by an embodiment of this application;
图2为可用于本申请实施例的一种编码器的示意性框图;Fig. 2 is a schematic block diagram of an encoder that can be used in an embodiment of the present application;
图3为可适用于本申请实施例的一种点云的示意图;Fig. 3 is a schematic diagram of a point cloud applicable to an embodiment of the present application;
图4为可适用于本申请实施例的一种点云的patch的示意图;FIG. 4 is a schematic diagram of a point cloud patch applicable to an embodiment of the present application;
图5为可适用于本申请实施例的一种点云的占用图的示意图;FIG. 5 is a schematic diagram of an occupancy map of a point cloud applicable to an embodiment of the present application;
图6为可用于本申请实施例的一种解码器的示意性框图;Fig. 6 is a schematic block diagram of a decoder that can be used in an embodiment of the present application;
图7为可用于本申请实施例的一种帧组的示意图;FIG. 7 is a schematic diagram of a frame group that can be used in an embodiment of the present application;
图8为本申请实施例提供的第一种当前点云组的示意图;FIG. 8 is a schematic diagram of the first current point cloud group provided by an embodiment of this application;
图9为本申请实施例提供的第一种点云编码方法的流程图;FIG. 9 is a flowchart of the first point cloud encoding method provided by an embodiment of the application;
图10为本申请实施例提供的第二种当前点云组的示意图;FIG. 10 is a schematic diagram of a second current point cloud group provided by an embodiment of this application;
图11为本申请实施例提供的第一种点云解码方法的流程图;FIG. 11 is a flowchart of the first point cloud decoding method provided by an embodiment of this application;
图12为本申请实施例提供的第二种点云编码方法的流程图;FIG. 12 is a flowchart of a second point cloud encoding method provided by an embodiment of this application;
图13为本申请实施例提供的第二种点云解码方法的流程图;FIG. 13 is a flowchart of a second point cloud decoding method provided by an embodiment of this application;
图14为本申请实施例提供的第三种点云编码方法的流程图;FIG. 14 is a flowchart of a third point cloud encoding method provided by an embodiment of this application;
图15为本申请实施例提供的第三种点云解码方法的流程图;15 is a flowchart of a third point cloud decoding method provided by an embodiment of this application;
图16为本申请实施例提供的第一种编码装置的示意性框图;FIG. 16 is a schematic block diagram of a first encoding device provided by an embodiment of this application;
图17为本申请实施例提供的第一种解码装置的示意性框图;FIG. 17 is a schematic block diagram of a first decoding device provided by an embodiment of this application;
图18为本申请实施例提供的第二种编码装置的示意性框图;FIG. 18 is a schematic block diagram of a second encoding device provided by an embodiment of this application;
图19为本申请实施例提供的第二种解码装置的示意性框图;FIG. 19 is a schematic block diagram of a second decoding apparatus provided by an embodiment of this application;
图20为本申请实施例提供的第三种编码装置的示意性框图;FIG. 20 is a schematic block diagram of a third encoding device provided by an embodiment of this application;
图21为本申请实施例提供的第三种解码装置的示意性框图;FIG. 21 is a schematic block diagram of a third decoding apparatus provided by an embodiment of this application;
图22为用于本申请实施例的译码设备的一种实现方式的示意性框图。FIG. 22 is a schematic block diagram of an implementation manner of a decoding device used in an embodiment of the present application.
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。In order to make the objectives, technical solutions, and advantages of the present application clearer, the following will further describe the embodiments of the present application in detail with reference to the accompanying drawings.
本申请实施例中的术语“多个”是指两个或两个以上。在本申请的描述中,除非另有说明, “/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。The term "plurality" in the embodiments of the present application refers to two or more. In the description of this application, unless otherwise specified, "/" means or, for example, A/B can mean A or B; "and/or" in this document is only an association relationship describing associated objects, It means that there can be three kinds of relationships, for example, A and/or B, which can mean: A alone exists, A and B exist at the same time, and B exists alone. In addition, in order to facilitate a clear description of the technical solutions of the embodiments of the present application, in the embodiments of the present application, words such as "first" and "second" are used to distinguish the same or similar items with substantially the same function and effect. Those skilled in the art can understand that words such as "first" and "second" do not limit the quantity and order of execution, and words such as "first" and "second" do not limit the difference.
在对本申请实施例进行详细的解释说明之前,先对本申请实施例的实施环境进行介绍:Before explaining the embodiments of the present application in detail, first introduce the implementation environment of the embodiments of the present application:
本申请实施例提供的一种实施环境包括点云译码系统。图1为本申请实施例提供的一种点云译码系统的示意性框图。其中,术语“点云译码”或“译码”可一般地指代点云编码或点云解码。参见图1,点云译码系统包括源装置10、目的地装置20、链路30和存储装置40。其中,源装置10可以产生经编码的点云数据。因此,源装置10也可以被称为点云编码装置。目的地装置20可以对由源装置10所产生的经编码的点云数据进行解码。因此,目的地装置20也可以被称为点云解码装置。链路30可以接收源装置10所产生的经编码的点云数据,并可以将该经编码的点云数据传输给目的地装置20。存储装置40可以接收源装置10所产生的经编码的点云数据,并可以将该经编码的点云数据进行存储,这样,目的地装置20可以直接从存储装置40中获取经编码的点云数据。或者,存储装置40可以对应于文件服务器或可以保存由源装置10产生的经编码的点云数据的另一中间存储装置,这样,目的地装置20可以经由流式传输或下载存储装置40存储的经编码的点云数据。An implementation environment provided by an embodiment of the application includes a point cloud decoding system. FIG. 1 is a schematic block diagram of a point cloud decoding system provided by an embodiment of this application. Among them, the term "point cloud decoding" or "decoding" may generally refer to point cloud encoding or point cloud decoding. Referring to FIG. 1, the point cloud decoding system includes a source device 10, a destination device 20, a
源装置10和目的地装置20均可以包括一个或多个处理器以及耦合到该一个或多个处理器的存储器,该存储器可以包括随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)、带电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、快闪存储器、可用于以可由计算机存取的指令或数据结构的形式存储所要的程序代码的任何其它媒体等。例如,源装置10和目的地装置20均可以包括桌上型计算机、移动计算装置、笔记型(例如,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话等电话手持机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机或其类似者。Both the source device 10 and the destination device 20 may include one or more processors and a memory coupled to the one or more processors. The memory may include random access memory (RAM), read-only memory ( read-only memory, ROM), electrically erasable programmable read-only memory (EEPROM), flash memory, which can be used to store the desired program in the form of instructions or data structures that can be accessed by a computer Any other media of the code, etc. For example, both the source device 10 and the destination device 20 may include desktop computers, mobile computing devices, notebook (e.g., laptop) computers, tablet computers, set-top boxes, telephone handsets such as so-called "smart" phones, Televisions, cameras, display devices, digital media players, video game consoles, on-board computers, or the like.
链路30可以包括能够将经编码的点云数据从源装置10传输到目的地装置20的一个或多个媒体或装置。在一种可能的实现方式中,链路30可以包括能够使源装置10实时地将经编码的点云数据直接发送到目的地装置20的一个或多个通信媒体。在本申请实施例中,源装置10可以根据通信标准来调制经编码的点云数据,该通信标准可以为无线通信协议等,并且可以将经调制的点云数据发送给目的地装置20。该一个或多个通信媒体可以包括无线和/或有线通信媒体,例如该一个或多个通信媒体可以包括射频(radio frequency,RF)频谱或一个或多个物理传输线。该一个或多个通信媒体可以形成基于分组的网络的一部分,基于分组的网络可以为局域网、广域网或全球网络(例如,因特网)等。该一个或多个通信媒体可以包括路由器、交换器、基站或促进从源装置10到目的地装置20的通信的其它设备等,本申请实施例对此不做具体限定。The
在一种可能的实现方式中,存储装置40可以将接收到的由源装置10发送的经编码的点云数据进行存储,目的地装置20可以直接从存储装置40中获取经编码的点云数据。这样,存储装置40可以包括多种分布式或本地存取的数据存储媒体中的任一者,例如,该多种分布 式或本地存取的数据存储媒体中的任一者可以为硬盘驱动器、蓝光光盘、数字多功能光盘(digital versatile disc,DVD)、只读光盘(compact disc read-only memory,CD-ROM)、快闪存储器、易失性或非易失性存储器,或用于存储经编码点云数据的任何其它合适的数字存储媒体等。In a possible implementation manner, the
在一种可能的实现方式中,存储装置40可以对应于文件服务器或可以保存由源装置10产生的经编码点云数据的另一中间存储装置,目的地装置20可经由流式传输或下载存储装置40存储的点云数据。文件服务器可以为能够存储经编码的点云数据并且将经编码的点云数据发送给目的地装置20的任意类型的服务器。在一种可能的实现方式中,文件服务器可以包括网络服务器、文件传输协议(file transfer protocol,FTP)服务器、网络附属存储(network attached storage,NAS)装置或本地磁盘驱动器等。目的地装置20可以通过任意标准数据连接(包括因特网连接)来获取经编码点云数据。任意标准数据连接可以包括无线信道(例如,Wi-Fi连接)、有线连接(例如,数字用户线路(digital subscriber line,DSL)、电缆调制解调器等),或适合于获取存储在文件服务器上的经编码的点云数据的两者的组合。经编码的点云数据从存储装置40的传输可为流式传输、下载传输或两者的组合。In a possible implementation, the
图1所示的点云译码系统仅为一种可能的实现方式,并且本申请的技术不仅可以适用于图1所示的可以对点云进行编码的源装置10,以及可以对经编码的点云数据进行解码的目的地装置20,还可以适用于其他可以对点云进行编码和对经编码的点云数据进行解码的装置,本申请实施例对此不做具体限定。The point cloud decoding system shown in FIG. 1 is only one possible implementation, and the technology of the present application can not only be applied to the source device 10 that can encode the point cloud shown in FIG. The destination device 20 for decoding point cloud data may also be applicable to other devices that can encode point clouds and decode encoded point cloud data, which is not specifically limited in the embodiment of the present application.
在图1所示的点云译码系统中,源装置10包括数据源120、编码器100和输出接口140。在一些实施例中,输出接口140可以包括调节器/解调器(调制解调器)和/或发送器,其中发送器也可以称为发射器。数据源120可以包括点云捕获装置(例如,摄像机等)、含有先前捕获的点云数据的点云存档、用于从点云内容提供者接收点云数据的点云馈入接口,和/或用于产生点云数据的计算机图形系统,或点云数据的这些来源的组合。In the point cloud decoding system shown in FIG. 1, the source device 10 includes a
数据源可以向编码器100发送点云,编码器100可以对接收到由数据源120发送的点云进行编码,得到经编码的点云数据。编码器可以将经编码的点云数据发送给输出接口。在一些实施例中,源装置10经由输出接口140将经编码的点云数据直接发送到目的地装置20。在其它实施例中,经编码的点云数据还可存储到存储装置40上,供目的地装置20以后获取并用于解码和/或播放。The data source may send a point cloud to the
在图1的实施例中,目的地装置20包括输入接口240、解码器200和显示装置220。在一些实施例中,输入接口240包括接收器和/或调制解调器。输入接口240可经由链路30和/或从存储装置40接收经编码的点云数据,然后再发送给解码器200,解码器200可以对接收到的经编码的点云数据进行解码,得到经解码的点云数据。解码器可以将经解码的点云数据发送给显示装置220。显示装置220可与目的地装置20集成或可在目的地装置20外部。一般来说,显示装置220显示经解码的点云数据。显示装置220可以为多种类型中的任一种类型的显示装置,例如,显示装置220可以为液晶显示器(liquid crystal display,LCD)、等离子显示器、有机发光二极管(organic light-emitting diode,OLED)显示器或其它类型的显示装置。In the embodiment of FIG. 1, the destination device 20 includes an
尽管图1中未示出,但在一些方面,编码器100和解码器200可各自与音频编码器和解码器集成,且可以包括适当的多路复用器-多路分用器(multiplexer-demultiplexer, MUX-DEMUX)单元或其它硬件和软件,用于共同数据流或单独数据流中的音频和视频两者的编码。在一些实施例中,如果适用的话,那么MUX-DEMUX单元可符合ITU H.223多路复用器协议,或例如用户数据报协议(user datagram protocol,UDP)等其它协议。Although not shown in FIG. 1, in some aspects, the
编码器100和解码器200各自可为以下各项电路中的任一者:一个或多个微处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)、离散逻辑、硬件或其任何组合。如果部分地以软件来实施本申请,那么装置可将用于软件的指令存储在合适的非易失性计算机可读存储媒体中,且可使用一个或多个处理器在硬件中执行所述指令从而实施本申请技术。前述内容(包括硬件、软件、硬件与软件的组合等)中的任一者可被视为一个或多个处理器。编码器100和解码器200中的每一者都可以包括在一个或多个编码器或解码器中,所述编码器或所述解码器中的任一者可以集成为相应装置中的组合编码器/解码器(编码解码器)的一部分。Each of the
本申请可大体上将编码器100称为将某些信息“发信号通知”或“发送”到例如解码器200的另一装置。术语“发信号通知”或“发送”可大体上指代用于对经压缩点云数据进行解码的语法元素和/或其它数据的传送。此传送可实时或几乎实时地发生。替代地,此通信可经过一段时间后发生,例如可在编码时在经编码位流中将语法元素存储到计算机可读存储媒体时发生,解码装置接着可在所述语法元素存储到此媒体之后的任何时间检索所述语法元素。This application may generally refer to the
图2为本申请实施例提供的一种编码器100的示意性框图。图2是以MPEG(moving pictrue expert group)点云压缩(point cloud compression,PCC)编码框架为例进行说明的。参见图2,编码器100可以包括点云块信息生成模块101、打包模块102、深度图生成模块103、纹理图生成模块104、深度图填充模块105、纹理图填充模块106、基于图像或视频的编码模块107、占用图编码模块108、辅助信息编码模块109、复用模块110、点云占用图下采样模块111、点云占用图填充模块112、点云重构模块113和点云滤波模块114。FIG. 2 is a schematic block diagram of an
点云块信息生成模块101可以接收由数据源120发送的一个或多个点云组,其中每个点云组可以包括一帧或多帧点云,为了方便描述,后续统一以当前点云组中的当前点云帧为例进行说明。点云块信息生成模块101可以确定当前点云帧包括的每个点在三维空间坐标系中的三维坐标,以及每个点在三维空间中的法线方向矢量,并根据确定出的每个点在三维空间中的法线方向矢量和预定义的投影平面将当前点云帧分割为多个patch(点云块)。每个patch包括当前点云帧中的一个或多个点。点云块信息生成模块101还可以确定每个patch的占用图和每个patch的深度图。点云块信息生成模块101还可以确定出每个patch的三维信息以及每个patch的法向坐标轴信息,这些信息可以作为每个patch的辅助信息。另外,点云块信息生成模块101可以将patch分为三种类型,分别为第一类patch、第二类patch和第三类patch。并通过第一标识来指示每个patch的类型。点云块信息生成模块101可以将当前点云帧中的每个patch的第一标识和每个patch的辅助信息发送给辅助信息编码模块109,以进行编码,也可以称为进行压缩编码。其中,每个patch的三维信息可以包括待编码patch在3D空间中沿着切线方向的偏移、待编码patch在3D空间中沿着双切线方向的偏移,以及待编码patch在3D空间中沿着法线方向的偏移。点云块信息生成模块101还可以将每个patch的占用图和每个patch的辅助信息发送给打包模块102。另外,点云块信息生成模块101还可以将每个patch的深度图发送给深度图生成模块103。The point cloud block information generation module 101 may receive one or more point cloud groups sent by the
打包模块102可以将接收到的由点云块信息生成模块101发送的每个patch的占用图和每个patch的辅助信息进行打包,得到当前点云帧的占用图。具体地,打包模块102可以将每个patch的占用图按照特定的顺序进行排列,例如按照每个patch的占用图的宽/高降序(或升序)排列,然后,按照排列后的每个patch的占用图的顺序,依次将每个patch的占用图插入当前点云帧的占用图的可用区域中,得到当前点云帧的占用图和patch的打包信息。打包模块102可以将当前点云帧的占用图和patch的打包信息发送给辅助信息编码模块109,进行压缩编码。其中,patch的打包信息可以包括每个patch在当前点云帧的占用图中的二维信息、每个patch的参考patch的标识信息、每个patch的旋转变换信息,以及当前点云帧的参考帧的标识信息。其中,每个patch在当前点云帧的占用图中的二维信息可以简称为每个patch的二维信息。每个patch的二维信息可以包括每个patch在当前点云帧占用图中沿u轴方向的偏移、每个patch在当前点云帧占用图中沿v轴方向的偏移、每个patch在当前点云帧占用图中的宽度,以及每个patch在当前点云帧占用图中的高度。另外,打包模块102还可以将patch的打包信息发送给深度图生成模块103和点云占用图下采样模块111。The packing module 102 may pack the received occupancy map of each patch and the auxiliary information of each patch sent by the point cloud block information generating module 101 to obtain the occupancy map of the current point cloud frame. Specifically, the packaging module 102 can arrange the occupancy map of each patch in a specific order, for example, in descending order (or ascending order) of the width/height of the occupancy map of each patch, and then arrange the occupancy map of each patch in descending order (or ascending order). In the order of the occupancy map, insert the occupancy map of each patch into the available area of the occupancy map of the current point cloud frame to obtain the occupancy map of the current point cloud frame and the packing information of the patch. The packing module 102 may send the occupancy map of the current point cloud frame and the packing information of the patch to the auxiliary information encoding module 109 for compression encoding. Among them, the packing information of the patch may include the two-dimensional information of each patch in the occupancy map of the current point cloud frame, the identification information of the reference patch of each patch, the rotation transformation information of each patch, and the reference of the current point cloud frame The identification information of the frame. Among them, the two-dimensional information of each patch in the occupancy map of the current point cloud frame may be referred to as the two-dimensional information of each patch. The two-dimensional information of each patch can include the offset of each patch along the u axis in the current point cloud frame occupancy map, the offset of each patch along the v axis in the current point cloud frame occupancy map, and each patch The current point cloud frame occupies the width of the figure, and each patch occupies the height of the figure in the current point cloud frame. In addition, the packing module 102 may also send the packing information of the patch to the depth map generating module 103 and the point cloud occupancy map down-sampling module 111.
需要说明的是,为了更加直观地了解本申请技术中涉及的点云、点云的patch以及点云的占用图,参见图3、图4和图5,图3为可适用于本申请实施例的一帧点云的示意图,图4为该帧点云的patch的示意图,图5为图4所示的该帧点云的每个patch的占用图,经打包模块102打包得到的该帧点云的占用图的示意图。图3所示的点云可以是本申请实施例中的当前点云帧,图4所示的点云的patch可以是本申请实施例中的当前点云帧的patch,图5所示的点云的占用图可以是本申请实施例中的当前点云帧的占用图。It should be noted that, in order to more intuitively understand the point cloud, the patch of the point cloud, and the occupancy map of the point cloud involved in the technology of this application, see Figures 3, 4 and 5, and Figure 3 is an embodiment applicable to the application. Fig. 4 is a schematic diagram of the patch of the point cloud of the frame, and Fig. 5 is the occupancy diagram of each patch of the point cloud of the frame shown in Fig. 4, the frame point obtained by packing by the packing module 102 Schematic diagram of cloud occupancy map. The point cloud shown in FIG. 3 may be the current point cloud frame in the embodiment of the present application, the patch of the point cloud shown in FIG. 4 may be the patch of the current point cloud frame in the embodiment of the present application, and the point shown in FIG. 5 The cloud occupancy map may be the occupancy map of the current point cloud frame in the embodiment of the present application.
辅助信息编码模块109在接收到由打包模块102发送的当前点云帧的占用图和patch的打包信息,以及由点云块信息生成模块101发送的每个patch的第一标识和每个patch的辅助信息之后,可以将当前点云帧以及当前点云帧包括的每个patch进行编码,得到包括经编码的辅助信息的码流,然后将得到的包括经编码的辅助信息的码流发送给复用模块110。其中,patch的打包信息中的每个patch的二维信息和每个patch的参考patch的标识信息也可以称作每个patch的辅助信息。The auxiliary information encoding module 109 receives the occupancy map of the current point cloud frame and the packing information of the patch sent by the packing module 102, as well as the first identification of each patch and the first identification of each patch sent by the point cloud block information generating module 101. After the auxiliary information, the current point cloud frame and each patch included in the current point cloud frame can be encoded to obtain a code stream including the encoded auxiliary information, and then the obtained code stream including the encoded auxiliary information is sent to the
深度图生成模块103可以在接收到由打包模块102发送的patch的打包信息,以及由点云块信息生成模块101发送的每个patch的深度图打包之后,根据每个patch的打包信息和每个patch的深度图生成当前点云帧的深度图。然后将所生成的当前点云帧的深度图发送给深度图填充模块105,以对当前点云帧的深度图中的空白像素点进行填充,得到经填充的当前点云帧的深度图。深度图填充模块105可以将得到的经填充的当前点云帧的深度图发送给基于图像或视频的编码模块107,以对经填充的当前点云帧的深度图进行基于图像或视频的编码,得到重构的当前点云的深度图,以及包括经编码的当前点云帧的深度图的码流,并可以将得到的重构的当前点云帧的深度图发送给点云重构模块113,将包括经编码的当前点云帧的深度图的码流发送给复用模块110。The depth map generation module 103 may receive the patch packaging information sent by the packaging module 102 and the depth map of each patch sent by the point cloud block information generation module 101, and then according to the packaging information of each patch and each The depth map of the patch generates the depth map of the current point cloud frame. Then the generated depth map of the current point cloud frame is sent to the depth map filling module 105 to fill the blank pixels in the depth map of the current point cloud frame to obtain the filled depth map of the current point cloud frame. The depth map filling module 105 may send the obtained filled depth map of the current point cloud frame to the image or video-based encoding module 107 to perform image or video-based encoding on the filled depth map of the current point cloud frame, Obtain the reconstructed current point cloud depth map and the code stream including the encoded current point cloud frame depth map, and may send the obtained reconstructed current point cloud frame depth map to the point
点云占用图下采样模块111可以将接收到的由打包模块102发送的当前点云帧的占用图进行下采样处理,以得到低分辨率的当前点云帧的占用图。之后点云占用图下采样模块111还可以将该低分辨率的当前点云帧的占用图发送给占用图编码模块108和点云占用图填充模块112。占用图编码模块108可以对接收到的低分辨率的当前点云帧的占用图进行编码,得到包括经编码的低分辨率的当前点云帧的占用图的码流,占用图编码模块108还可以将包括 经编码的低分辨率的当前点云帧的占用图的码流发送给复用模块110。点云占用图填充模块112根据接收到的低分辨率的当前点云帧的占用图对于具有原始分辨率的当前点云帧的占用图进行填充,得到经填充的当前点云帧的占用图,该经填充的当前点云帧的占用图具有原始分辨率。The point cloud occupancy map down-sampling module 111 may perform down-sampling processing on the received occupancy map of the current point cloud frame sent by the packing module 102 to obtain a low-resolution occupancy map of the current point cloud frame. After that, the point cloud occupancy map down-sampling module 111 may also send the occupancy map of the current low-resolution point cloud frame to the occupancy map encoding module 108 and the point cloud occupancy map filling module 112. The occupancy map encoding module 108 can encode the received occupancy map of the current low-resolution point cloud frame to obtain a code stream including the occupancy map of the encoded low-resolution current point cloud frame, and the occupancy map encoding module 108 can also The code stream including the coded low-resolution occupancy map of the current point cloud frame may be sent to the
点云重构模块113可以根据接收到的由点云占用图填充模块112发送的经填充的当前点云帧的占用图、由基于图像或视频的编码模块107发送的重构的当前点云帧的深度图、patch的打包信息和patch的辅助信息对当前点云帧的几何进行重构,以输出重构点云,另外,点云重构模块113还可以输出重构点云中重构点和patch的对应关系,以及重构点云中重构点的打包位置。点云重构模块113可以将重构点云、重构点云中重构点和patch的对应关系发送给点云滤波模块114,点云重构模块113还可以将重构点云中重构点的打包位置发送给纹理生成模块104。The point
点云滤波模块114在接收到由点云重构模块113发送的重构点云、重构点云中重构点和patch的对应关系之后,可以对重构点云进行滤波。具体地,可以是去除重构点云中明显的噪声点和缝隙等瑕疵以得到经滤波的重构点云,也可以称为平滑的重构点云。或者也可以说,点云滤波块114可以对重构点云进行平滑处理。The point cloud filtering module 114 may filter the reconstructed point cloud after receiving the reconstructed point cloud sent by the point
纹理图生成模块104在接收到由点云滤波模块114发送的平滑的重构点云、由点云重构模块113发送的重构点云中重构点的打包位置,以及由数据源120发送的当前点云帧之后,可以根据平滑的重构点云、重构点云中重构点的打包位置和当前点云帧生成当前点云帧的纹理图,并可以将所生成的当前点云帧的纹理图发送给纹理图填充模块106,以对当前点云帧的纹理图中的空白像素点进行填充,得到经填充的当前点云帧的纹理图。纹理图填充模块106可以将得到的经填充的当前点云帧的纹理图发送给基于图像或视频的编码模块107,以对经填充的当前点云帧的纹理图进行基于图像或视频的编码,得到包括重构的当前点云帧的纹理图的码流。基于图像或视频的编码模块107还可以将得到的包括重构的当前点云帧的纹理图的码流发送给复用模块110。The texture map generating module 104 receives the smooth reconstructed point cloud sent by the point cloud filtering module 114, the packed position of the reconstructed point in the reconstructed point cloud sent by the point
通过上述描述,基于图像或视频的编码模块107、占用图编码模块108、辅助信息编码模块109可以将得到的码流发送给复用模块110,复用模块110可以将接收到的这些码流合并成一个合并的码流,并将该合并的码流发送给输出接口140。输出接口140可以将该合并的码流发送给解码器200。Through the above description, the image or video-based encoding module 107, the occupancy map encoding module 108, and the auxiliary information encoding module 109 can send the obtained code streams to the
应当理解的是,图2所示的编码器100仅为本申请提供的一种实施例,在具体的实现方式中,编码器100可以包括比图2中所示的模块更多或更少的模块。本申请实施例对此不做具体限定。It should be understood that the
图6为本申请实施例提供的一种解码器200的示意性框图。图6是以MPEG PCC解码框架为例进行说明的。参见图6,解码器200可以包括解复用模块201、基于图像或视频的解码模块202、占用图解码模块203、辅助信息解码模块204、点云占用图填充模块205、点云的几何信息重构模块206、点云滤波模块207和点云的纹理信息重构模块208。FIG. 6 is a schematic block diagram of a
解复用模块201可以通过输入接口204接收由编码器100的输出接口140发送的合并的码流,并将该合并的码流发送到相应解码模块。具体地,解复用模块201将包括经编码的当前点云帧的纹理图的码流和经编码的当前点云帧的深度图的码流,发送给基于图像或视频的 解码模块202,将包括经编码的低分辨率的当前点云帧的占用图的码流发送给占用图解码模块203,将包括经编码的辅助信息的码流发送给辅助信息解码模块204。The demultiplexing module 201 may receive the combined code stream sent by the
基于图像或视频的解码模块202可以对接收到的包括经编码的当前点云帧的纹理图的码流和包括经编码的当前点云帧的深度图的码流进行解码,得到重构的当前点云帧的纹理图信息和重构的当前点云帧的深度图信息,并可以将该重构的当前点云帧的纹理图信息发送给点云的纹理信息重构模块208,将该重构的当前点云帧的深度图信息发送给点云的几何信息重构模块206。占用图解码模块203可以对接收到的包括经编码的低分辨率的当前点云帧的占用图的码流进行解码,得到重构的低分辨率的当前点云帧的占用图信息,并将该重构的低分辨率的当前点云帧的占用图信息发送给点云占用图填充模块205。点云占用图填充模块205根据重构的低分辨率的当前点云帧的占用图信息,可以得到重构的具有原始分辨率的当前点云帧的占用图信息,然后将该重构的具有原始分辨率的当前点云帧的占用图信息发送给点云的几何信息重构模块206。为了方便描述,后续统一将重构的具有原始分辨率的当前点云帧的占用图信息,简称为重构的当前点云帧的占用图信息。The image or video-based decoding module 202 can decode the received bitstream including the texture map of the encoded current point cloud frame and the bitstream including the depth map of the encoded current point cloud frame to obtain the reconstructed current The texture map information of the point cloud frame and the depth map information of the reconstructed current point cloud frame, and the reconstructed texture map information of the current point cloud frame can be sent to the point cloud texture information reconstruction module 208, The constructed depth map information of the current point cloud frame is sent to the point cloud geometric information reconstruction module 206. The occupancy map decoding module 203 can decode the received bitstream including the occupancy map of the current point cloud frame with encoded low resolution to obtain the occupancy map information of the reconstructed current point cloud frame with low resolution, and The reconstructed low-resolution current point cloud frame occupancy map information is sent to the point cloud occupancy map filling module 205. The point cloud occupancy map filling module 205 can obtain the reconstructed occupancy map information of the current point cloud frame with the original resolution according to the occupancy map information of the reconstructed low-resolution current point cloud frame, and then the reconstructed has The occupancy map information of the current point cloud frame at the original resolution is sent to the geometric information reconstruction module 206 of the point cloud. For the convenience of description, the reconstructed occupancy map information of the current point cloud frame with the original resolution will be uniformly referred to as the occupancy map information of the reconstructed current point cloud frame.
辅助信息解码模块204可以对接收到的包括经编码的辅助信息的码流进行解码,得到辅助信息,并可以将该辅助信息发送给点云的几何信息重构模块206。具体的解码方法会在后续实施例中进行说明。The auxiliary information decoding module 204 may decode the received code stream including the encoded auxiliary information to obtain auxiliary information, and may send the auxiliary information to the geometric information reconstruction module 206 of the point cloud. The specific decoding method will be described in subsequent embodiments.
点云的几何信息重构模块206可以根据接收到的由基于图像或视频的解码模块202发送的重构的当前点云帧的深度图信息、由点云占用图填充模块205发送的重构的当前点云帧的占用图信息,以及由辅助信息解码模块204发送的辅助信息对当前点云帧的几何进行重构,得到重构点云。该重构点云与编码器100中的点云重构模块112得到的重构点云类似,且具体的重构过程可以参考编码器100中的点云重构模块112的重构过程,此处不再赘述。点云的几何信息重构模块206还可以将该重构点云发送给点云滤波模块207。点云滤波模块207可以根据接收到的重构点云,对重构点云进行滤波,得到平滑的重构点云,具体的滤波过程可以参考编码器100中的点云滤波模块114的滤波过程,此处不再赘述。点云滤波模块207可以将该平滑的重构点云发送给点云的纹理信息重构模块208。点云的纹理信息重构模块208在接收到由点云滤波模块207发送的平滑的重构点云,以及由基于图像或视频的解码模块202发送的重构的当前点云帧的纹理图信息之后,可以对重构点云的纹理信息进行重构,得到经纹理信息重构的重构点云。The geometric information reconstruction module 206 of the point cloud can be based on the received depth map information of the reconstructed current point cloud frame sent by the image or video-based decoding module 202, and the reconstructed information sent by the point cloud occupancy map filling module 205. The occupancy map information of the current point cloud frame and the auxiliary information sent by the auxiliary information decoding module 204 reconstruct the geometry of the current point cloud frame to obtain the reconstructed point cloud. The reconstructed point cloud is similar to the reconstructed point cloud obtained by the point cloud reconstruction module 112 in the
应当理解的是,图6所示的解码器200仅为示例,具体实现时,解码器200可以包括比图6中所示的更多或更少的模块。本申请实施例对此不进行限定。It should be understood that the
为了便于理解,接下来先对本申请实施例中涉及的技术术语进行说明。For ease of understanding, the technical terms involved in the embodiments of the present application will be described first.
在一种示例中,当前点云组可以是一个帧组(group of frame,GOF),一个帧组可以包括32帧点云,也即是当前点云组可以包括32帧点云。当然当前点云组包括的点云的帧数也可以为其他数值,本申请实施例对此不做限定。在一种示例中,一个帧组还可以划分为多个子组,每个子组可以包括一帧或多帧点云,当前点云组可以为该多个子组中的任意一个子组。例如,参见图7,图7为本申请实施例提供的一种帧组的示意图,如图7所示,一个帧组可以划分为10个子组,第一个子组包括第1,2,3帧点云,第二个子组包括第4帧点云,第三个子组包括第5,6,7,8帧点云,……,第10个子组包括第30,31,32帧点云,当前点云组即可以 是这10个子组中的任意一个子组。图7中仅是以示例性地表示出第一个子组、第二个子组、第三个子组和第十个子组中包括的点云,其他子组中包括的点云不作具体说明。综上,当前点云组可以是一个帧组,或者,当前点云组可以是一个帧组中的一个子组,当然,当前点云组还可以是其他形式的点云组,比如自定义的点云组,本申请实施例对此不做限定。In an example, the current point cloud group may be a group of frame (GOF), and a frame group may include 32 frames of point clouds, that is, the current point cloud group may include 32 frames of point clouds. Of course, the number of frames of the point cloud included in the current point cloud group may also be other values, which is not limited in the embodiment of the present application. In an example, a frame group may also be divided into multiple subgroups, each subgroup may include one or more frames of point clouds, and the current point cloud group may be any one of the multiple subgroups. For example, referring to FIG. 7, FIG. 7 is a schematic diagram of a frame group provided by an embodiment of the application. As shown in FIG. 7, a frame group can be divided into 10 subgroups, and the first subgroup includes the first, second, and third subgroups. Frame point cloud, the second subgroup includes the 4th frame point cloud, the third subgroup includes the 5th, 6, 7, and 8th frame point clouds,..., the 10th subgroup includes the 30th, 31st, and 32th frame point clouds, The current point cloud group can be any one of these 10 subgroups. FIG. 7 only exemplarily shows the point clouds included in the first subgroup, the second subgroup, the third subgroup, and the tenth subgroup, and the point clouds included in the other subgroups are not described in detail. In summary, the current point cloud group can be a frame group, or the current point cloud group can be a subgroup of a frame group. Of course, the current point cloud group can also be other forms of point cloud groups, such as custom ones. The point cloud group is not limited in this embodiment of the application.
基于上述描述,patch可以分为三种类型,分别为第一类patch、第二类patch和第三类patch。示例性地,根据patch在当前点云组内的匹配情况,patch也可以分为全局匹配patch(SKIP_patch)、局部匹配patch(local_patch)和非匹配patch(I_INTRA,或者P_INTRA)。也即是,第一类patch可以为全局匹配patch,第二类patch可以为局部匹配patch,第三类patch可以为非匹配patch。为了便于描述,以待编码patch为例,对这三类patch进行说明,应当理解的是,待编码patch为当前点云帧中的任一patch,当前点云帧为当前点云组内的任一帧点云。如果待编码patch为第一类patch,则待编码patch在当前点云组内的所有点云帧中都存在具有匹配关系的patch,这种可以称为全局匹配patch;如果待编码patch为第二类patch,则待编码patch在当前点云帧的参考帧中存在具有匹配关系的patch,但只在当前点云组内的部分点云帧中存在具有匹配关系的patch,这种可以称为局部匹配patch;如果待编码patch为第三类patch,则待编码patch在当前点云组内的任意点云帧中都不存在具有匹配关系的patch,这种可以称为非匹配patch。Based on the above description, patches can be divided into three types, namely the first type of patch, the second type of patch and the third type of patch. Exemplarily, according to the matching situation of the patch in the current point cloud group, the patch can also be divided into a global matching patch (SKIP_patch), a local matching patch (local_patch), and a non-matching patch (I_INTRA, or P_INTRA). That is, the first type of patch can be a global matching patch, the second type of patch can be a local matching patch, and the third type of patch can be a non-matching patch. For ease of description, taking the patch to be coded as an example, the three types of patches are described. It should be understood that the patch to be coded is any patch in the current point cloud frame, and the current point cloud frame is any of the current point cloud groups. A frame of point cloud. If the patch to be coded is the first type of patch, the patch to be coded has a matching relationship in all the point cloud frames in the current point cloud group, this can be called a global matching patch; if the patch to be coded is the second For the patch type, the patch to be encoded has a patch with a matching relationship in the reference frame of the current point cloud frame, but only a patch with a matching relationship exists in a part of the point cloud frame in the current point cloud group. This can be called local Matching patch; if the patch to be coded is the third type of patch, there is no patch with a matching relationship in any point cloud frame in the current point cloud group for the patch to be coded. This can be called a non-matching patch.
在一种可能的实现方式中,参见图8,当前点云帧的参考帧可以位于当前点云组内。示例性地,当前点云帧的参考帧可以是当前点云帧的前一个点云帧。另外,当前点云组中的所有点云帧包括的patch可以按照第一类patch、第二类patch和第三类patch的顺序依次进行排列,其中,当前点云组内的第一类patch在每个点云帧中的个数是相同的,并且当第一类patch的数量大于1时,当前点云组内的每个点云帧中的第一类patch还可以按照相同的顺序依次排列,也即是,每个点云帧中相同位置的第一类patch之间具备匹配关系。比如,每个点云帧中的第w个第一类patch相互之间具有匹配关系,w小于等于第一类patch的数量。In a possible implementation manner, referring to FIG. 8, the reference frame of the current point cloud frame may be located in the current point cloud group. Exemplarily, the reference frame of the current point cloud frame may be the previous point cloud frame of the current point cloud frame. In addition, the patches included in all point cloud frames in the current point cloud group can be arranged in the order of the first type of patch, the second type of patch, and the third type of patch. Among them, the first type of patch in the current point cloud group is The number in each point cloud frame is the same, and when the number of the first-type patches is greater than 1, the first-type patches in each point cloud frame in the current point cloud group can also be arranged in the same order , That is, there is a matching relationship between the first-type patches at the same position in each point cloud frame. For example, the w-th first-type patch in each point cloud frame has a matching relationship with each other, and w is less than or equal to the number of first-type patches.
通常情况下,第一类patch在当前点云帧的占用图中的二维信息、旋转变换信息和法向坐标轴信息相同,而三维信息不同。但是在某些情况下,第一类patch的二维信息也可以不同,或者三维信息也可以相同。也即是,第一类patch的旋转变换信息和法向坐标轴信息可以相同,而二维信息和三维信息可能相同,也可能不同。这样,对于二维信息和三维信息而言,可能存在三种情况。为了便于描述,接下来以待编码patch为例进行说明。在第一种可能的情况中,当待编码patch为第一类patch时,待编码patch的参考patch的二维信息与待编码patch的二维信息相同,并且待编码patch的参考patch的三维信息与待编码patch的三维信息相同。在第二种可能的情况中,当待编码patch为第一类patch时,待编码patch的参考patch的二维信息和待编码patch的二维信息相同,待编码patch的参考patch的三维信息与待编码patch的三维信息不相同。在第三种可能的情况中,当待编码patch为第一类patch时,待编码patch的参考patch的二维信息与待编码patch的二维信息不相同,并且待编码patch的参考patch的三维信息与待编码patch的三维信息不相同。Generally, the two-dimensional information, rotation transformation information, and normal coordinate axis information of the first-type patch in the occupancy map of the current point cloud frame are the same, but the three-dimensional information is different. However, in some cases, the two-dimensional information of the first-type patch can also be different, or the three-dimensional information can also be the same. That is, the rotation transformation information and the normal coordinate axis information of the first type patch may be the same, and the two-dimensional information and the three-dimensional information may be the same or different. In this way, for two-dimensional information and three-dimensional information, there may be three situations. For ease of description, the following takes the patch to be coded as an example. In the first possible situation, when the patch to be encoded is the first type of patch, the two-dimensional information of the reference patch of the patch to be encoded is the same as the two-dimensional information of the patch to be encoded, and the three-dimensional information of the reference patch of the patch to be encoded Same as the three-dimensional information of the patch to be encoded. In the second possible situation, when the patch to be encoded is the first type of patch, the two-dimensional information of the reference patch of the patch to be encoded is the same as the two-dimensional information of the patch to be encoded, and the three-dimensional information of the reference patch of the patch to be encoded is the same as The three-dimensional information of the patch to be encoded is different. In the third possible situation, when the patch to be encoded is the first type of patch, the two-dimensional information of the reference patch of the patch to be encoded is different from the two-dimensional information of the patch to be encoded, and the three-dimensional information of the reference patch of the patch to be encoded The information is different from the three-dimensional information of the patch to be encoded.
当按照图8所示的方式对当前点云组中的所有点云帧包括的patch进行排列时,待编码patch的参考patch可以为待编码patch所在的当前点云帧的参考帧中处于同一位置的patch。比如,待编码patch在当前点云帧中处于第三个位置,那么,当前点云帧的参考帧中的第三个patch即为待编码patch的参考patch。When the patches included in all the point cloud frames in the current point cloud group are arranged in the manner shown in FIG. 8, the reference patch of the patch to be coded may be the same position in the reference frame of the current point cloud frame where the patch to be coded is located Patch. For example, if the patch to be coded is in the third position in the current point cloud frame, the third patch in the reference frame of the current point cloud frame is the reference patch of the patch to be coded.
旋转变换信息可以为旋转角度信息、坐标轴变换信息或镜像变换信息。其中,旋转角度信息包括具体的旋转角度值或旋转角度索引。比如若待编码patch的旋转角度值为0时,则表示该待编码patch不旋转;若待编码patch的旋转角度值为20,则表示该待编码patch旋转20°;若待编码patch的旋转角度值为80,则表示该待编码patch旋转80°。再比如若待编码patch的旋转角度索引为0,则表示该待编码patch不旋转;若待编码patch的旋转角度索引为1,则表示该待编码patch旋转15°;若待编码patch的旋转角度索引为2,则表示该待编码patch旋转30°;若待编码patch的旋转角度索引为3,则表示该待编码patch旋转45°。旋转角度信息也可以用其他形式进行表征,在此不做具体限定。例如也可以用矩阵的形式进行描述,特别是在GPU(graphic procession unit,图像处理器)中进行加速处理时,采用矩阵形式会提高处理速度。The rotation transformation information may be rotation angle information, coordinate axis transformation information, or mirror transformation information. Wherein, the rotation angle information includes a specific rotation angle value or rotation angle index. For example, if the rotation angle value of the patch to be coded is 0, it means that the patch to be coded does not rotate; if the rotation angle value of the patch to be coded is 20, it means that the patch to be coded is rotated by 20°; if the rotation angle of the patch to be coded is A value of 80 means that the patch to be coded is rotated by 80°. For another example, if the rotation angle index of the patch to be coded is 0, it means that the patch to be coded does not rotate; if the rotation angle index of the patch to be coded is 1, it means that the patch to be coded is rotated by 15°; if the rotation angle of the patch to be coded is If the index is 2, it means that the patch to be coded is rotated by 30°; if the rotation angle index of the patch to be coded is 3, it means that the patch to be coded is rotated by 45°. The rotation angle information can also be characterized in other forms, which is not specifically limited here. For example, it can also be described in the form of a matrix, especially when accelerated processing is performed in a GPU (graphic process unit, image processor), the use of the matrix form will increase the processing speed.
需要说明的是,待编码patch的旋转可以是顺时针旋转,也可以是逆时针旋转。It should be noted that the rotation of the patch to be encoded can be clockwise or counterclockwise.
若旋转变换信息为坐标轴交换信息时,坐标轴交换信息可以表示为坐标轴交换标识,比如坐标轴交换标识为false或者0时,表示待编码patch的切线坐标轴和待编码patch的双切线坐标轴不交换;比如坐标轴交换标识为ture或者1时,待编码patch的切线坐标轴和待编码patch的双切线坐标轴交换。例如,待编码patch的坐标轴的索引可以为0,1,或者2。假设X轴的索引为0,Y轴的索引为1,Z轴的索引为2,则待编码patch的切线坐标轴索引和待编码patch的双切线坐标轴索引可以是0,1和2中的任意2个。一般情况下,patch的切线坐标轴可以称为U轴,patch的双切线坐标轴可以称为V轴。假设在某种情况下,获得的当前patch的切线坐标轴索引和待编码patch的双切线坐标轴索引分别为0和2,如果坐标轴交换标识为false或者0,则不交换待编码patch的切线坐标轴的索引和待编码patch的双切线坐标轴的索引;如果坐标轴交换标识为ture或者1,则交换待编码patch的切线坐标轴的索引和待编码patch的双切线坐标轴的索引,即待编码patch的切线坐标轴的索引更新为2,待编码patch的双切线坐标轴的索引更新为0。If the rotation transformation information is the coordinate axis exchange information, the coordinate axis exchange information can be expressed as the coordinate axis exchange flag. For example, when the coordinate axis exchange flag is false or 0, it indicates the tangent coordinate axis of the patch to be encoded and the double tangent coordinate of the patch to be encoded The axes are not swapped; for example, when the coordinate axis swap flag is ture or 1, the tangent coordinate axis of the patch to be coded and the double tangent coordinate axis of the patch to be coded are swapped. For example, the index of the coordinate axis of the patch to be encoded can be 0, 1, or 2. Assuming that the index of the X axis is 0, the index of the Y axis is 1, and the index of the Z axis is 2, then the tangent axis index of the patch to be encoded and the double tangent axis index of the patch to be encoded can be 0, 1, and 2. Any two. In general, the tangent axis of the patch can be called the U axis, and the double tangent axis of the patch can be called the V axis. Assuming that under certain circumstances, the obtained tangent axis index of the current patch and the double tangent axis index of the patch to be encoded are 0 and 2, respectively. If the axis exchange flag is false or 0, the tangent of the patch to be encoded is not exchanged The index of the coordinate axis and the index of the double tangent axis of the patch to be encoded; if the axis exchange flag is true or 1, then the index of the tangent axis of the patch to be encoded and the index of the double tangent axis of the patch to be encoded are exchanged, namely The index of the tangent axis of the patch to be coded is updated to 2, and the index of the double tangent axis of the patch to be coded is updated to 0.
接下来,对本申请实施例提供的第一种点云编码方法进行说明。需要说明的是,结合图1所示的点云译码系统,以及图2所示的编码器100的示意性框图,下文中的任一种点云编码方法可以是点云译码系统中的编码器100执行的,更具体地,可以是编码器100中的辅助信息编码模块109执行的。Next, the first point cloud coding method provided by the embodiment of the present application will be described. It should be noted that, in combination with the point cloud decoding system shown in FIG. 1 and the schematic block diagram of the
图9是本申请实施例提供的一种点云编码方法的流程图,该方法应用于点云译码系统。参见图9,该方法包括:FIG. 9 is a flowchart of a point cloud encoding method provided by an embodiment of the present application, and the method is applied to a point cloud decoding system. Referring to Figure 9, the method includes:
S901:获取待编码patch的辅助信息和待编码patch的第一标识。S901: Obtain auxiliary information of the patch to be encoded and the first identifier of the patch to be encoded.
需要说明的是,待编码patch可以是待编码的当前点云帧包括的patch中的任一patch。第一标识可以指示待编码patch的类型。第一标识的语法元素可以是patch_mode或patch_type等。第一标识的取值不同,待编码patch的类型不同。It should be noted that the patch to be encoded may be any patch included in the current point cloud frame to be encoded. The first identifier may indicate the type of patch to be encoded. The first identified syntax element may be patch_mode or patch_type, etc. The value of the first identifier is different, and the type of the patch to be encoded is different.
S902:当第一标识为第一值时,将待编码patch的辅助信息和第一标识编入码流,待编码patch为当前点云帧中的首个patch;或,当第一标识为第一值时,将待编码patch的辅助信息编入码流,待编码patch为当前点云帧中的非首个patch。S902: When the first identifier is the first value, encode the auxiliary information of the patch to be encoded and the first identifier into the code stream, and the patch to be encoded is the first patch in the current point cloud frame; or, when the first identifier is the first When the value is one, the auxiliary information of the patch to be encoded is encoded into the code stream, and the patch to be encoded is the non-first patch in the current point cloud frame.
其中,第一标识为第一值时,可以指示待编码patch为第一类patch,第一类patch可以为当前点云组中的全局匹配patch,待编码patch的辅助信息包括三维信息,而不包括二维信 息、旋转变换信息和法向坐标轴信息。Where the first identifier is the first value, it can indicate that the patch to be encoded is the first type of patch. The first type of patch can be a global matching patch in the current point cloud group. The auxiliary information of the patch to be encoded includes three-dimensional information. Including two-dimensional information, rotation transformation information and normal coordinate axis information.
通常情况下,由于第一类patch在当前点云组内的所有点云帧中都存在具有匹配关系的patch,且当前点云组内的第一类patch之间的二维信息、旋转变换信息和法向坐标轴信息相同,而三维信息可能不相同。因此,为了减少码流的比特开销,进而提高编码的效率,当第一标识为第一值时,待编码patch的辅助信息可以包括三维信息,而不包括二维信息、旋转变换信息和法向坐标轴信息。Generally, because the first-type patch has matching patches in all point cloud frames in the current point cloud group, and the two-dimensional information and rotation transformation information between the first-type patches in the current point cloud group The information is the same as the normal axis, but the three-dimensional information may be different. Therefore, in order to reduce the bit overhead of the code stream and improve the coding efficiency, when the first identifier is the first value, the auxiliary information of the patch to be coded may include three-dimensional information, but not two-dimensional information, rotation transformation information and normal direction. Coordinate axis information.
在一种可能的情况中,每个点云帧中的patch可以按照第一类patch、第二类patch和第三类patch的顺序进行排列,然后编码的时候也按照第一类patch、第二类patch和第三类patch顺序进行编码。所以如果当前点云组内存在第一类patch,则每个点云帧中的首个patch即为第一类patch。当前点云组内的第一类patch在每个点云帧中的数量可以是相同的,并且当第一类patch的数量大于1时,当前点云组内的每个点云帧中的第一类patch可以按照相同的顺序依次排列,也即是,每个点云帧中相同位置的第一类patch之间具备匹配关系。如果当前点云组内不存在第一类patch,则每个点云帧中的首个patch可能为第二类patch,也可能为第三类patch。如果每个点云帧中的首个patch为第三类patch,那么可以表明当前点云组内仅仅包括这一个点云帧,且这个点云帧中的所有patch的第一标识均为第三值。In a possible situation, the patches in each point cloud frame can be arranged in the order of the first type of patch, the second type of patch and the third type of patch, and then the first type of patch and the second type of patch are also used when encoding. The type patch and the third type patch are coded sequentially. So if there is a first-type patch in the current point cloud group, the first patch in each point cloud frame is the first-type patch. The number of the first-type patches in each point cloud frame in the current point cloud group can be the same, and when the number of the first-type patches is greater than 1, the number of the first type of patches in each point cloud frame in the current point cloud group One type of patches can be arranged in the same order, that is, there is a matching relationship between the first type of patches at the same position in each point cloud frame. If the first-type patch does not exist in the current point cloud group, the first patch in each point cloud frame may be the second-type patch or the third-type patch. If the first patch in each point cloud frame is a third-type patch, it can indicate that only this point cloud frame is included in the current point cloud group, and the first identifiers of all patches in this point cloud frame are third value.
对于当前点云组内每个点云帧中的首个patch为第一类patch或第二类patch的情况,为了便于区分哪些点云帧可以组成一个点云组,如图10所示,对于当前点云组内的首个点云帧,可以将首个点云帧包括的所有patch的第一标识设置为第三值,其他点云帧中的patch还是按照第一类patch、第二类patch和第三类patch的顺序进行排列。因此,当待编码patch的第一标识为第一值时,可以确定当前点云帧为当前点云组内的非首个点云帧。而且,当前点云帧可以为当前点云组中的第K个点云帧,K为大于或等于3的整数。也即是,对于当前点云组内的第3个点云帧以及第3个点云帧之后的每个点云帧,均可以按照S902的方式进行编码。For the case where the first patch in each point cloud frame in the current point cloud group is the first type of patch or the second type of patch, in order to distinguish which point cloud frames can form a point cloud group, as shown in Figure 10, for For the first point cloud frame in the current point cloud group, the first identifier of all patches included in the first point cloud frame can be set to the third value, and the patches in other point cloud frames are still in accordance with the first type of patch and the second type. The patch and the third type of patch are arranged in the order. Therefore, when the first identifier of the patch to be encoded is the first value, it can be determined that the current point cloud frame is the non-first point cloud frame in the current point cloud group. Moreover, the current point cloud frame may be the Kth point cloud frame in the current point cloud group, and K is an integer greater than or equal to 3. That is, the third point cloud frame in the current point cloud group and each point cloud frame after the third point cloud frame can be coded in the manner of S902.
其中,由于当前点云组中的点云帧可以按照两种编号方式进行编号。第一种编号方式:点云帧0、点云帧1、点云帧2……;第二种编号方式:点云帧1、点云帧2、点云帧3……。所以上述第K个点云帧可以是指第一种编号方式中的点云帧2及点云帧2之后的任一点云帧,也可以是指第二种编号方式中的点云帧3及点云帧3之后的任一点云帧。无论当前点云组中的点云帧按何种编号方式进行编号,第K个点云帧均可以指实际的当前点云组中第3个点云帧及第3个之后的点云帧。Among them, because the point cloud frames in the current point cloud group can be numbered according to two numbering methods. The first numbering method: point cloud frame 0,
基于上述描述,当前点云组内的第3个点云帧以及第3个点云帧之后的每个点云帧,均可以按照S902的方式进行编码,而对于当前点云组内的第2个点云帧,可以按照下述两种方式进行编码:Based on the above description, the third point cloud frame in the current point cloud group and each point cloud frame after the third point cloud frame can be encoded in the manner of S902, and for the second point cloud frame in the current point cloud group A point cloud frame can be encoded in the following two ways:
第一种可能的实现方式,如果当前点云帧为当前点云组内的第2个点云帧,那么,当待编码patch的第一标识为第一值,且待编码patch为当前点云帧中的首个patch时,可以将待编码patch的第一标识、当前点云组内的第一类patch的个数,以及待编码patch的辅助信息编入码流。当待编码patch的第一标识为第一值,且待编码patch为当前点云帧中的非首个patch时,可以将待编码patch的辅助信息编入码流,而不用将待编码patch的第一标识编入码流。The first possible implementation manner, if the current point cloud frame is the second point cloud frame in the current point cloud group, then, when the first identifier of the patch to be encoded is the first value, and the patch to be encoded is the current point cloud For the first patch in the frame, the first identifier of the patch to be encoded, the number of first-type patches in the current point cloud group, and the auxiliary information of the patch to be encoded can be incorporated into the code stream. When the first identifier of the patch to be coded is the first value, and the patch to be coded is not the first patch in the current point cloud frame, the auxiliary information of the patch to be coded can be encoded into the code stream instead of the patch to be coded The first identifier is incorporated into the code stream.
其中,在将当前点云组内的首个点云帧包括的所有patch的第一标识设置为第三值的过程中,可以获取当前点云组内的第一类patch的个数。Wherein, in the process of setting the first identifiers of all patches included in the first point cloud frame in the current point cloud group to the third value, the number of first-type patches in the current point cloud group can be obtained.
而且,将待编码patch的第一标识、当前点云组内的第一类patch的个数,以及待编码patch 的辅助信息编入码流的操作可以为:将待编码patch的第一标识编入码流,然后,将当前点云组内的第一类patch的个数编入码流,最后,将待编码patch的辅助信息编入码流。也即是,当前点云组内的第一类patch的个数是在待编码patch的第一标识之后编入码流的。Moreover, the operation of encoding the first identifier of the patch to be encoded, the number of first-type patches in the current point cloud group, and the auxiliary information of the patch to be encoded into the code stream may be: editing the first identifier of the patch to be encoded Enter the code stream, and then encode the number of first-type patches in the current point cloud group into the code stream, and finally, encode the auxiliary information of the patch to be encoded into the code stream. That is, the number of the first-type patch in the current point cloud group is compiled into the code stream after the first identifier of the patch to be encoded.
需要说明的是,可以采用定长编码方式将第一类patch的个数编入码流,也可以采用变长编码方式将第一类patch的个数编入码流,本申请实施例对此不做限定。It should be noted that the fixed-length encoding method can be used to encode the number of patches of the first type into the code stream, and the variable-length encoding method can also be used to encode the number of patches of the first type into the code stream. Not limited.
第二种可能的实现方式,如果当前点云帧为当前点云组内的第2个点云帧,那么,当待编码patch的第一标识为第一值时,可以将待编码patch的第一标识和辅助信息编入码流。也即是,第2个点云帧中的所有第一类patch的第一标识和辅助信息都需要编入码流,从而可以指示当前点云组内的第一类patch的个数,而无需在码流中编入当前点云组内的第一类patch的个数。In the second possible implementation manner, if the current point cloud frame is the second point cloud frame in the current point cloud group, then when the first identifier of the patch to be coded is the first value, the first value of the patch to be coded can be set An identification and auxiliary information are compiled into the code stream. That is, the first identification and auxiliary information of all the first-type patches in the second point cloud frame need to be encoded into the code stream, so that the number of the first-type patches in the current point cloud group can be indicated without The number of the first type patch in the current point cloud group is compiled into the code stream.
不论通过上述何种实现方式对第2个点云帧中的第一类patch进行编码,都可以通过第2个点云帧确定出当前点云组内的第一类patch的个数。这样,对于当前点云组内的第3个点云帧及第3个点云帧之后的点云帧,可以只将首个patch,也即首个第一类patch的第一标识编入码流,而不用将非首个第一类patch的第一标识编入码流。Regardless of the foregoing implementation manners for encoding the first-type patch in the second point cloud frame, the number of the first-type patch in the current point cloud group can be determined through the second point cloud frame. In this way, for the third point cloud frame in the current point cloud group and the point cloud frames after the third point cloud frame, only the first patch, that is, the first identifier of the first first type patch can be coded It is not necessary to encode the first identifier of the non-first first-type patch into the code stream.
综上,当待编码patch的第一标识为第三值,且待编码patch为当前点云帧中的首个patch时,即可确定当前点云帧为当前点云组内的首个点云帧。这样就无需在码流中编入当前点云组的点云帧的长度。并且,对于当前点云组内的第3个点云帧及第3个点云帧之后的点云帧可以只将首个第一类patch的第一标识编入码流,而不用将非首个第一类patch的第一标识编入码流,提高了编码效率,同时减少了码流的比特开销。In summary, when the first identifier of the patch to be encoded is the third value, and the patch to be encoded is the first patch in the current point cloud frame, it can be determined that the current point cloud frame is the first point cloud in the current point cloud group frame. In this way, there is no need to program the length of the point cloud frame of the current point cloud group in the code stream. In addition, for the third point cloud frame in the current point cloud group and the point cloud frames after the third point cloud frame, only the first identifier of the first first type patch can be compiled into the code stream, instead of the non-first point cloud frame. The first identifier of the first type patch is encoded into the code stream, which improves the coding efficiency and reduces the bit overhead of the code stream.
值得注意的是,在一种可能的实现方式中,当前点云帧中的首个patch可以对应一个标识信息,也可以称为索引,通过这个标识信息可以唯一指示当前点云帧中的首个patch,且首个patch的标识信息通常可以编入码流中。对于当前点云帧中的其他patch,可以采用计数器来确定其他patch为当前点云帧中的第几个patch。其中,计数器是在确定当前点云帧的首个patch时开始计数。It is worth noting that, in a possible implementation, the first patch in the current point cloud frame can correspond to an identification information, which can also be called an index, and this identification information can uniquely indicate the first patch in the current point cloud frame patch, and the identification information of the first patch can usually be incorporated into the code stream. For other patches in the current point cloud frame, a counter can be used to determine which patch is the current point cloud frame. Among them, the counter starts counting when the first patch of the current point cloud frame is determined.
需要说明的是,待编码patch的三维信息可以包括待编码patch在3D空间中沿着切线方向的偏移(3d_shift_tangent_axis)、待编码patch在3D空间中沿着双切线方向的偏移(3d_shift_bitangent_axis),以及待编码patch在3D空间中沿着法线方向的偏移(3d_shift_normal_axis)。It should be noted that the three-dimensional information of the patch to be encoded may include the offset of the patch to be encoded in the 3D space along the tangent direction (3d_shift_tangent_axis), and the offset of the patch to be encoded in the 3D space along the bitangent direction (3d_shift_bitangent_axis), And the offset of the patch to be encoded in the 3D space along the normal direction (3d_shift_normal_axis).
作为一种示例,当第一标识为第一值时,可以根据待编码patch的参考patch的三维信息,将待编码patch的三维信息编入码流,具体可以采用差分编码方式将待编码patch的三维信息编入码流,也可以直接编入码流,具体的编码方式不做限定。采用定长编码方式将待编码patch的第一标识编入码流。As an example, when the first identifier is the first value, the three-dimensional information of the patch to be encoded can be encoded into the code stream according to the three-dimensional information of the reference patch of the patch to be encoded. Specifically, the differential encoding method can be used to encode the three-dimensional information of the patch to be encoded. The 3D information is encoded into the code stream, or directly into the code stream, and the specific encoding method is not limited. The fixed-length encoding method is adopted to encode the first identifier of the patch to be encoded into the code stream.
其中,采用差分编码方式将待编码patch的三维信息编入码流是指将待编码patch的三维信息与待编码patch的参考patch的三维信息之间的差值编入码流。Wherein, using differential encoding to encode the three-dimensional information of the patch to be encoded into the code stream refers to encoding the difference between the three-dimensional information of the patch to be encoded and the three-dimensional information of the reference patch of the patch to be encoded into the code stream.
作为一种示例,本文示例一种待编码patch的第一标识为第一值时的部分语法结构,参见表1和表2所示。As an example, this article exemplifies a partial syntax structure when the first identifier of the patch to be encoded is the first value, as shown in Table 1 and Table 2.
表1Table 1
表2Table 2
其中,表1中的skip_patch_data_unit即是待编码patch的第一标识为第一值时,编入码 流的待编码patch的信息,也可以称为待编码patch的数据单元。Among them, skip_patch_data_unit in Table 1 is the information of the patch to be encoded that is encoded into the code stream when the first identifier of the patch to be encoded is the first value, which can also be called the data unit of the patch to be encoded.
其中,当第一标识为第二值或第三值时,可以将待编码patch的辅助信息和第一标识编入码流。也即是,对于当前点云组内的首个点云帧中的每个patch,可以将每个patch的辅助信息和第一标识编入码流。对于当前点云组内的非首个点云帧中的非第一类patch,可以将每个patch的辅助信息和第一标识编入码流。Wherein, when the first identifier is the second value or the third value, the auxiliary information of the patch to be encoded and the first identifier can be encoded into the code stream. That is, for each patch in the first point cloud frame in the current point cloud group, the auxiliary information and the first identifier of each patch can be encoded into the code stream. For the non-first-type patches in the non-first point cloud frame in the current point cloud group, the auxiliary information and the first identifier of each patch can be encoded into the code stream.
其中,第一标识为第二值时,以指示待编码patch为第二类patch,第二类patch可以为当前点云组中的局部匹配patch,待编码patch的辅助信息包括二维信息、三维信息和待编码patch的参考patch的标识信息。第一标识为第三值时,以指示待编码patch为第三类patch,第三类patch可以为当前点云组中的非匹配patch,待编码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。Wherein, when the first identifier is the second value, it indicates that the patch to be encoded is a second type of patch. The second type of patch can be a local matching patch in the current point cloud group. The auxiliary information of the patch to be encoded includes two-dimensional information and three-dimensional information. Information and identification information of the reference patch of the patch to be encoded. When the first identifier is the third value, it indicates that the patch to be coded is a third type of patch. The third type of patch can be a non-matching patch in the current point cloud group. The auxiliary information of the patch to be coded includes two-dimensional information, three-dimensional information, Rotation transformation information and normal coordinate axis information.
通常情况下,第二类patch在当前点云帧的参考帧中存在具有匹配关系的patch,且第二类patch与其参考patch之间的旋转变换信息和法向坐标轴信息相同,而二维信息和三维信息可能不相同,第三类patch在当前点云帧的参考帧中不存在具有匹配关系的patch,因此,为了减少码流的比特开销,进而提高编码的效率,当第一标识为第一值时,待编码patch的辅助信息可以包括三维信息,而不包括二维信息、旋转变换信息和法向坐标轴信息。当第一标识为第二值时,待编码patch的辅助信息可以包括二维信息、三维信息和待编码patch的参考patch的标识信息,而不包括旋转变换信息和法向坐标轴信息。当第一标识为第三值时,待编码patch的辅助信息可以包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。Generally, the second type of patch has a matching patch in the reference frame of the current point cloud frame, and the rotation transformation information and the normal coordinate axis information between the second type of patch and its reference patch are the same, while the two-dimensional information It may be different from the three-dimensional information. The third type of patch does not have a matching patch in the reference frame of the current point cloud frame. Therefore, in order to reduce the bit overhead of the code stream and improve the coding efficiency, when the first identifier is the first When the value is one, the auxiliary information of the patch to be encoded may include three-dimensional information, but not two-dimensional information, rotation transformation information, and normal coordinate axis information. When the first identifier is the second value, the auxiliary information of the patch to be encoded may include two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded, but does not include rotation transformation information and normal coordinate axis information. When the first identifier is the third value, the auxiliary information of the patch to be encoded may include two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
需要说明的是,待编码patch的二维信息可以包括待编码patch在当前点云帧占用图中沿u轴方向的偏移(2d_shift_u)、待编码patch在当前点云帧占用图中沿v轴方向的偏移(2d_shift_v)、待编码patch在当前点云帧占用图中的宽度(2d_size_u),以及待编码patch在当前点云帧占用图中的高度(2d_size_v)。另外,待编码patch的参考patch的语法元素可以为patchIndex,用于指示参考patch的标识信息;语法元素还可以包括参考patch所在参考帧的标识信息:frameIndex。待编码patch的旋转变换信息的语法元素可以是rotation。再者,待编码patch的参考patch的标识信息可以用于指示待编码patch的参考patch。法向坐标轴信息可以为待编码patch的法向轴索引,例如normalAxis法向轴索引可以为0,1或者2,分别对于X轴、Y轴和Z轴。It should be noted that the two-dimensional information of the patch to be encoded may include the offset (2d_shift_u) of the patch to be encoded in the current point cloud frame occupancy map along the u axis, and the patch to be encoded in the current point cloud frame occupancy map along the v axis The direction shift (2d_shift_v), the width of the patch to be encoded in the current point cloud frame occupancy map (2d_size_u), and the height of the patch to be encoded in the current point cloud frame occupancy map (2d_size_v). In addition, the syntax element of the reference patch of the patch to be encoded may be patchIndex, which is used to indicate the identification information of the reference patch; the syntax element may also include the identification information of the reference frame where the reference patch is located: frameIndex. The syntax element of the rotation transformation information of the patch to be encoded may be rotation. Furthermore, the identification information of the reference patch of the patch to be encoded may be used to indicate the reference patch of the patch to be encoded. The normal axis information may be the normal axis index of the patch to be encoded, for example, the normal axis index of the normalAxis may be 0, 1, or 2, for the X axis, Y axis, and Z axis, respectively.
作为一种示例,当第一标识为第二值时,可以根据待编码patch的参考patch的二维信息和三维信息,将待编码patch的二维信息和三维信息编入码流,具体可以采用差分编码方式将待编码patch的二维信息和三维信息编入码流,也可以采用更加精确的预测差分方式将待编码patch的二维信息和三维信息编入码流,具体的编码方式不做限定。采用定长编码方式将待编码patch的参考patch的标识信息和第一标识编入码流。当第一标识为第三值时,可以采用定长编码方式将待编码patch的二维信息、三维信息、旋转变换信息、法向坐标轴信息和第一标识编入码流,也可以采用变长编码方式将待编码patch的二维信息、三维信息、旋转变换信息、法向坐标轴信息和第一标识编入码流,本申请实施例对此不做限定。As an example, when the first identifier is the second value, the two-dimensional information and three-dimensional information of the patch to be encoded can be compiled into the code stream according to the two-dimensional information and three-dimensional information of the reference patch of the patch to be encoded. The differential encoding method encodes the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream, and a more accurate predictive differential method can also be used to encode the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream. The specific encoding method is not used. limited. The identification information and the first identification of the reference patch of the patch to be encoded are encoded into the code stream using a fixed-length encoding method. When the first identifier is the third value, the fixed-length encoding method can be used to encode the two-dimensional information, three-dimensional information, rotation transformation information, normal axis information and the first identifier of the patch to be encoded into the code stream, or variable The long encoding method encodes the two-dimensional information, three-dimensional information, rotation transformation information, normal coordinate axis information, and first identifier of the patch to be encoded into the code stream, which is not limited in the embodiment of the present application.
其中,采用差分编码方式将待编码patch的二维信息和三维信息编入码流是指将待编码patch的二维信息与待编码patch的参考patch的二维信息之间的差值,以及待编码patch的三维信息与待编码patch的参考patch的三维信息之间的差值编入码流。Among them, using differential encoding to encode the two-dimensional information and three-dimensional information of the patch to be encoded into the code stream refers to the difference between the two-dimensional information of the patch to be encoded and the two-dimensional information of the reference patch of the patch to be encoded, and The difference between the three-dimensional information of the coded patch and the three-dimensional information of the reference patch of the patch to be coded is encoded into the code stream.
基于上述描述,对于当前点云帧而言,当前点云帧中的首个第一类patch的第一标识, 以及每个第二类patch的第一标识和每个第三类patch的第一标识需要编入码流。当前点云帧包括的每个patch的辅助信息也需要编入码流。对于第一标识和辅助信息的编码方式可能会存在如下三种可能的实现方式。Based on the above description, for the current point cloud frame, the first identifier of the first first-type patch in the current point cloud frame, the first identifier of each second-type patch, and the first identifier of each third-type patch in the current point cloud frame The logo needs to be programmed into the code stream. The auxiliary information of each patch included in the current point cloud frame also needs to be compiled into the code stream. There may be the following three possible implementation methods for the encoding method of the first identification and auxiliary information.
第一种可能的实现方式,可以将当前点云帧包括的多个patch的第一标识一起打包并编入码流,该多个patch的第一标识中包括待编码patch的第一标识,以及该多个patch中除待编码patch之外剩余的取值为第二值或第三值的patch的第一标识。对于当前点云帧包括的每个patch的辅助信息,可以各自打包并编入码流。例如,可以先将当前点云帧中的首个patch的第一标识,以及首个patch之外的取值为第二值或第三值的patch的第一标识一起打包并编入码流。然后,将当前点云帧包括的每个patch的辅助信息逐个打包并编入码流。In the first possible implementation manner, the first identifiers of multiple patches included in the current point cloud frame can be packaged together and compiled into the code stream, and the first identifiers of the multiple patches include the first identifier of the patch to be encoded, and Except the patch to be coded, the remaining first identifier of the patch whose value is the second value or the third value among the multiple patches. The auxiliary information of each patch included in the current point cloud frame can be individually packaged and compiled into a code stream. For example, the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged together and compiled into the code stream. Then, the auxiliary information of each patch included in the current point cloud frame is packaged one by one and compiled into the code stream.
第二种可能的实现方式,可以将当前点云帧中的首个patch的第一标识,以及首个patch之外的取值为第二值或第三值的patch的第一标识各自打包并编入码流,对于当前点云帧包括的每个patch的辅助信息,也可以各自打包并编入码流。例如,可以先将当前点云帧中的首个patch的第一标识编入码流,然后将首个patch的辅助信息编入码流。然后,将当前点云帧中的其他第一类patch的辅助信息逐个编入码流。最后,对于剩余的patch,即第二类patch和第三类patch,可以按照先编入第一标识,再编入辅助信息的方式进行编码。In the second possible implementation, the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged separately. Code stream, the auxiliary information of each patch included in the current point cloud frame can also be packaged separately and compiled into code stream. For example, the first identifier of the first patch in the current point cloud frame can be compiled into the code stream, and then the auxiliary information of the first patch can be compiled into the code stream. Then, the auxiliary information of other first-type patches in the current point cloud frame is compiled into the code stream one by one. Finally, for the remaining patches, that is, the second type of patch and the third type of patch, the coding can be performed in a way that the first identifier is first compiled, and then the auxiliary information is compiled.
第三种可能的实现方式,可以将当前点云帧包括的多个patch的第一标识一起打包并编入码流,该多个patch的第一标识中包括待编码patch的第一标识,以及该多个patch中除待编码patch之外剩余的取值为第二值或第三值的patch的第一标识。对于当前点云帧包括的每个patch的辅助信息,可以将每个patch辅助信息中同一类型的信息一起打包并编入码流。对于每个patch的辅助信息中不同类型的信息可以各自打包并编入码流。In a third possible implementation manner, the first identifiers of multiple patches included in the current point cloud frame can be packaged together and compiled into the code stream, and the first identifiers of the multiple patches include the first identifier of the patch to be encoded, and Except the patch to be coded, the remaining first identifier of the patch whose value is the second value or the third value among the multiple patches. For the auxiliary information of each patch included in the current point cloud frame, the same type of information in each patch auxiliary information can be packaged together and compiled into the code stream. Different types of information in the auxiliary information of each patch can be individually packaged and compiled into the code stream.
例如,可以先将当前点云帧中的首个patch的第一标识,以及首个patch之外的取值为第二值或第三值的patch的第一标识一起打包并编入码流。假设,每个patch的辅助信息中都包括旋转变换信息和法向坐标轴信息,而有的patch的辅助信息中包括二维信息或者三维信息,有的patch的辅助信息中不包括二维信息或者三维信息,那么,将每个patch的辅助信息中的旋转变换信息和法向坐标轴信息一起打包并编入码流。每个patch的辅助信息中的二维信息和三维信息各自打包并编入码流。For example, the first identifier of the first patch in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged together and compiled into the code stream. Suppose that the auxiliary information of each patch includes rotation transformation information and normal coordinate axis information, while some auxiliary information of patches includes two-dimensional information or three-dimensional information, and some auxiliary information of patches does not include two-dimensional information or For three-dimensional information, the rotation transformation information and normal coordinate axis information in the auxiliary information of each patch are packaged together and compiled into the code stream. The two-dimensional information and three-dimensional information in the auxiliary information of each patch are individually packaged and compiled into the code stream.
其中,第一值、第二值和第三值可以分别是二进制的10、11和00,或者,第一值、第二值和第三值可以分别是二进制的11、10和00等,待编码patch的参考patch包括于当前点云帧的参考帧中,本申请实施例对此不做限定。Among them, the first value, the second value, and the third value may be binary 10, 11, and 00 respectively, or the first value, the second value, and the third value may be binary 11, 10, and 00, etc., respectively. The reference patch of the coded patch is included in the reference frame of the current point cloud frame, which is not limited in the embodiment of the present application.
为了进一步减少码流的比特开销,当按照图8所示的顺序进行编码时,对于第三类patch而言,还可以采用除前文所述的编码方式之外的其他方式进行编码,比如,如果待编码patch为首个第三类patch,那么,可以采用定长编码方式进行编码,也可以采用变长编码方式,本申请实施例对此不做限定。如果待编码patch不是首个第三类patch,此时,可以根据首个第三类patch的二维信息和三维信息,采用差分编码方式将待编码patch的二维信息和三维信息编入码流,而其他的信息还采用前文所述的方式进行编码。其中,根据首个第三类patch的二维信息和三维信息,采用差分编码方式将待编码patch的二维信息和三维信息编入码流是指:将待编码patch的二维信息和首个第三类patch的二维信息之间的差值,以及待编码patch的三维信息和首个第三类patch的三维信息之间的差值编入码流。In order to further reduce the bit overhead of the code stream, when encoding is performed in the order shown in Figure 8, for the third type of patch, other methods other than the encoding methods described above can also be used for encoding, for example, if The patch to be coded is the first third-type patch, then the fixed-length coding method may be used for coding, or the variable-length coding method may be used, which is not limited in the embodiment of the application. If the patch to be coded is not the
在本申请实施例中,先获取待编码patch的辅助信息和待编码patch的第一标识。由于当 前点云组内的第一类patch在每个点云帧中的数量可以是相同的,所以当第一标识为第一值,待编码patch为当前点云帧中的首个patch时,表明待编码patch为当前点云帧中的首个第一类patch,此时可以将待编码patch的辅助信息和第一标识编入码流;当第一标识为第一值,待编码patch为当前点云帧中的非首个patch时,表明待编码patch为当前点云帧中的非首个第一类patch,此时可以将待编码patch的辅助信息编入码流,而不用将待编码patch的第一标识编入码流,从而可以简化编入码流的格式,进一步减少码流的比特开销,从而提高编码的效率。In this embodiment of the present application, first obtain the auxiliary information of the patch to be encoded and the first identifier of the patch to be encoded. Since the number of the first-type patches in each point cloud frame in the current point cloud group can be the same, when the first identifier is the first value, and the patch to be encoded is the first patch in the current point cloud frame, Indicates that the patch to be encoded is the first patch of the first type in the current point cloud frame. At this time, the auxiliary information and the first identifier of the patch to be encoded can be encoded into the code stream; when the first identifier is the first value, the patch to be encoded is When the current point cloud frame is not the first patch, it indicates that the patch to be coded is the non-first type I patch in the current point cloud frame. At this time, the auxiliary information of the patch to be coded can be encoded into the code stream instead of the waiting The first identifier of the coded patch is encoded into the code stream, so that the format of the code stream can be simplified, the bit overhead of the code stream is further reduced, and the coding efficiency is improved.
接下来对基于上述图9所示的实施例的点云编码方法对应的点云解码方法进行说明。需要说明的是,结合图1所示的点云译码系统,以及图6所示的解码器200的示意性框图,下文中的任一种点云解码方法可以是点云译码系统中的解码器200执行的,更具体地,可以是解码器200中的辅助信息解码模块204执行的。参见图11,该解码方法包括:Next, the point cloud decoding method corresponding to the point cloud encoding method based on the embodiment shown in FIG. 9 will be described. It should be noted that, in combination with the point cloud decoding system shown in FIG. 1 and the schematic block diagram of the
S1101:当待解码patch为当前点云帧中的首个patch时,从码流中解析待解码patch的第一标识。S1101: When the patch to be decoded is the first patch in the current point cloud frame, analyze the first identifier of the patch to be decoded from the code stream.
由于当前点云帧中的首个patch的第一标识是编入码流中的,所以当待解码点云块patch为当前点云帧中的首个patch时,可以从码流中解析待解码patch的第一标识。Since the first identifier of the first patch in the current point cloud frame is encoded in the code stream, when the point cloud block to be decoded is the first patch in the current point cloud frame, the to be decoded can be parsed from the code stream The first ID of the patch.
在一种可能的实现方式中,可以判断码流中是否包括待解码patch的标识信息,如果包括待解码patch的标识信息,则可以确定待解码patch为当前点云帧中的首个patch。如果不包括待解码patch的标识信息,则可以确定待解码patch为当前点云帧中的非首个patch。此时,可以根据计数器来确定待解码patch为当前点云帧中的第几个patch。其中,计数器是在确定当前点云帧的首个patch时开始计数。In a possible implementation manner, it can be determined whether the code stream includes the identification information of the patch to be decoded, and if the identification information of the patch to be decoded is included, it can be determined that the patch to be decoded is the first patch in the current point cloud frame. If the identification information of the patch to be decoded is not included, it can be determined that the patch to be decoded is the non-first patch in the current point cloud frame. At this time, the number of the patch to be decoded in the current point cloud frame can be determined according to the counter. Among them, the counter starts counting when the first patch of the current point cloud frame is determined.
S1102:当第一标识为第一值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息。S1102: When the first identifier is the first value, parse the auxiliary information of the patch to be decoded from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
需要说明的是,当第一标识为第一值时,表明待解码patch为第一类patch,也即待解码patch在当前点云组内的所有点云帧中都存在相匹配的patch。此时,可以从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息,但不包括待解码patch的二维信息、旋转变换信息和法向坐标轴信息。It should be noted that when the first identifier is the first value, it indicates that the patch to be decoded is the first type of patch, that is, the patch to be decoded has a matching patch in all point cloud frames in the current point cloud group. At this time, the auxiliary information of the patch to be decoded can be parsed from the code stream. The auxiliary information includes the three-dimensional information of the patch to be decoded, but does not include the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
作为一种示例,可以采用与编码端匹配的方法从码流中解析第一类patch的个数。例如可以采用定长解码方式或变长解码方式从码流中解析第一类patch的个数。As an example, the number of patches of the first type can be parsed from the code stream by a method that matches the encoding end. For example, fixed-length decoding or variable-length decoding can be used to parse the number of patches of the first type from the code stream.
由上述图9所示的实施例可知,当第一标识为第一值时,可以表明当前点云帧为当前点云组内的非首个点云帧。此时,如果当前点云帧为当前点云组内的第2个点云帧,则可以通过如下两种可能的实现方式对待解码patch进行解码。It can be seen from the embodiment shown in FIG. 9 that, when the first identifier is the first value, it can indicate that the current point cloud frame is the non-first point cloud frame in the current point cloud group. At this time, if the current point cloud frame is the second point cloud frame in the current point cloud group, the patch to be decoded can be decoded through the following two possible implementation methods.
第一种可能的实现方式,当前点云组内的第2个点云帧中的首个patch的第一标识,以及当前点云组内每个点云帧包括的第一类patch的个数共同编入码流。此时,如果当前点云帧为当前点云组内的第2个点云帧,待解码patch为当前点云帧中的首个patch,则可以先从码流中解析待解码patch的第一标识,当第一标识为第一值时,再从码流中解析当前点云组内的第一类patch的个数。然后再从码流中解析待解码patch的辅助信息。The first possible implementation is the first identification of the first patch in the second point cloud frame in the current point cloud group, and the number of the first type of patch included in each point cloud frame in the current point cloud group Code stream together. At this point, if the current point cloud frame is the second point cloud frame in the current point cloud group, and the patch to be decoded is the first patch in the current point cloud frame, the first patch to be decoded can be parsed from the code stream. Identification, when the first identification is the first value, the number of the first-type patches in the current point cloud group is analyzed from the code stream. Then parse the auxiliary information of the patch to be decoded from the code stream.
第二种可能的实现方式,当前点云组内的第2个点云帧包括的第一类patch的第一标识均编入码流,此时,如果当前点云帧为当前点云组内的第2个点云帧,待解码patch为首个 patch,则可以从码流中解析待解码patch的第一标识,当第一标识为第一值时,再从码流中解析待解码patch的辅助信息。In the second possible implementation manner, the first identifiers of the first type patch included in the second point cloud frame in the current point cloud group are all encoded into the code stream. At this time, if the current point cloud frame is in the current point cloud group If the patch to be decoded is the first patch in the second point cloud frame, the first identifier of the patch to be decoded can be parsed from the code stream. When the first identifier is the first value, the patch to be decoded is parsed from the code stream. Supplementary information.
接下来通过S1103和S1104对待解码patch为当前点云帧中的第n个patch的情况进行说明。Next, the case where the patch to be decoded is the nth patch in the current point cloud frame is described through S1103 and S1104.
S1103:当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息。S1103: When the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first-type patch in the reference point cloud frame of the current point cloud frame, analyze from the code stream The auxiliary information of the patch to be decoded, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
由上述图9所示的实施例可知,第一类patch在编码过程中,非首个第一类patch的第一标识没有编入码流,所以当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,表明待解码patch为当前点云帧中的非首个第一类patch,此时可以从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息。It can be seen from the embodiment shown in FIG. 9 that, during the encoding process of the first-type patch, the first identifier of the non-first first-type patch is not encoded into the code stream, so when the patch to be decoded is the first in the current point cloud frame n patches, when n is greater than 1 and less than or equal to the number of first-type patches in the reference point cloud frame of the current point cloud frame, it indicates that the patch to be decoded is not the first first-type patch in the current point cloud frame, At this time, the auxiliary information of the patch to be decoded can be parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
由于第一类patch在编码的过程中编入码流的辅助信息包括三维信息,但不包括二维信息、旋转变换信息和法向坐标轴信息,所以,当待解码patch为第一类patch时,从码流中解析的辅助信息包括待解码patch的三维信息,但不包括待解码patch的二维信息、旋转变换信息和法向坐标轴信息。此时,还可以根据待解码patch的参考patch的辅助信息,获取待解码patch的二维信息、旋转变换信息和法向坐标轴信息。Since the auxiliary information of the first type of patch that is encoded into the code stream during the encoding process includes three-dimensional information, but does not include two-dimensional information, rotation transformation information and normal coordinate axis information, when the patch to be decoded is the first type of patch The auxiliary information parsed from the code stream includes the three-dimensional information of the patch to be decoded, but does not include the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded. At this time, the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded can also be obtained according to the auxiliary information of the reference patch of the patch to be decoded.
作为一种示例,可以采用与编码端匹配的方法进行解码,例如可以采用差分解码方式从码流中解析待解码patch的三维信息。对于待解码patch的其他辅助信息,例如,待解码patch的二维信息、旋转变换信息和法向坐标轴信息,可以先从码流中解析当前点云帧的参考帧的标识信息,从而根据该参考帧的标识信息确定当前点云帧的参考帧,然后从当前点云帧的参考帧中获取待解码patch的参考patch的二维信息、旋转变换信息和法向坐标轴信息,并将参考patch的二维信息、旋转变换信息和法向坐标轴信息作为待解码patch的二维信息、旋转变换信息和法向坐标轴信息。其中,当前点云帧的参考帧也可以存在对应的参考帧,也即当前点云帧的参考帧中的参考patch也存在对应的参考patch,为了便于描述,将当前点云帧的参考帧记为第一参考帧,将当前点云帧的参考帧对应的参考帧记为第二参考帧,这样,第一参考帧中的参考patch的辅助信息,可以根据第二参考帧中的对应的参考patch的辅助信息确定。通过这样的方式,可以根据当前点云帧的参考帧、当前点云帧的参考帧对应的参考帧等中逐级获取待解码patch的辅助信息。另外,还可以从已解码的点云中获取位置与待解码patch在当前点云帧中位置相同的patch的二维信息、旋转变换信息和法向坐标轴信息,并将获取的二维信息、旋转变换信息和法向坐标轴信息作为待解码patch的二维信息、旋转变换信息和法向坐标轴信息。As an example, a method matching the encoding end may be used for decoding, for example, a differential decoding method may be used to parse the three-dimensional information of the patch to be decoded from the code stream. For other auxiliary information of the patch to be decoded, for example, the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded, the identification information of the reference frame of the current point cloud frame can be parsed from the code stream, and then according to the The identification information of the reference frame determines the reference frame of the current point cloud frame, and then obtains the two-dimensional information, rotation transformation information and normal coordinate axis information of the reference patch of the patch to be decoded from the reference frame of the current point cloud frame, and refers to the patch The two-dimensional information, rotation transformation information and normal coordinate axis information of the patch are used as the two-dimensional information, rotation transformation information and normal coordinate axis information of the patch to be decoded. Among them, the reference frame of the current point cloud frame may also have a corresponding reference frame, that is, the reference patch in the reference frame of the current point cloud frame also has a corresponding reference patch. For ease of description, the reference frame of the current point cloud frame is recorded Is the first reference frame, and the reference frame corresponding to the reference frame of the current point cloud frame is marked as the second reference frame. In this way, the auxiliary information of the reference patch in the first reference frame can be based on the corresponding reference in the second reference frame The auxiliary information of the patch is determined. In this way, the auxiliary information of the patch to be decoded can be obtained step by step according to the reference frame of the current point cloud frame, the reference frame corresponding to the reference frame of the current point cloud frame, etc. In addition, the two-dimensional information, rotation transformation information, and normal coordinate axis information of the patch whose position is the same as that of the patch to be decoded in the current point cloud frame can be obtained from the decoded point cloud, and the obtained two-dimensional information, The rotation transformation information and the normal coordinate axis information are used as the two-dimensional information, the rotation transformation information and the normal coordinate axis information of the patch to be decoded.
当前点云组内的每个点云帧中的patch按照图8所示的排列方式进行编码时,待解码patch的参考patch可以为当前点云帧的参考帧中位置与待解码patch在当前点云帧中的位置相同的patch。When the patch in each point cloud frame in the current point cloud group is encoded according to the arrangement shown in Figure 8, the reference patch of the patch to be decoded can be the position in the reference frame of the current point cloud frame and the patch to be decoded at the current point Patches with the same position in the cloud frame.
关于采用差分解码方式从码流中解析待解码patch的三维信息的方式,具体可以为:从已解码的点云中获取位置与待解码patch在当前点云帧中位置相同的patch的三维信息,或者,从当前点云帧的参考帧中获取待解码patch的参考patch的三维信息。然后,将获取的三维信息与从码流中解析出的三维信息差值进行相加,从而得到待解码patch的三维信息。Regarding the method of using differential decoding to parse the 3D information of the patch to be decoded from the code stream, it may specifically be: obtaining the 3D information of the patch whose position is the same as the position of the patch to be decoded in the current point cloud frame from the decoded point cloud. Or, obtain the three-dimensional information of the reference patch of the patch to be decoded from the reference frame of the current point cloud frame. Then, the obtained three-dimensional information is added with the difference of the three-dimensional information parsed from the code stream to obtain the three-dimensional information of the patch to be decoded.
基于上述描述,如果待解码patch为当前点云帧中的非首个patch,可以通过计数器确定待解码patch为当前点云帧中的第几个patch。这样,当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,可以确定待解码patch为当前点云帧中的非首个第一类patch,从而可以从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息。Based on the above description, if the patch to be decoded is the non-first patch in the current point cloud frame, the counter can be used to determine the number of patches in the current point cloud frame to be decoded. In this way, when the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame, the patch to be decoded can be determined It is the non-first first-type patch in the current point cloud frame, so that the auxiliary information of the patch to be decoded can be parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded.
其中,基于上述S1102的描述,可以通过两种方式确定当前点云组内每个点云帧包括的第一类patch的个数。第一种可能的实现方式,在对当前点云组内的第2个点云帧中的首个patch的第一标识解码后,可以直接从码流中解析出当前点云组内的第一类patch的个数。第二种可能的实现方式,在对当前点云组内的第2个点云帧的所有patch的第一标识解码后,可以确定第一标识为第一值的patch的个数,从而可以确定第2个点云帧包括的第一类patch的个数,也即当前点云组内的第一类patch的个数。也即是,通过第2个点云帧可以确定当前点云组内每个点云帧包括的第一类patch的个数。Among them, based on the description of S1102, the number of patches of the first type included in each point cloud frame in the current point cloud group can be determined in two ways. In the first possible implementation, after decoding the first identifier of the first patch in the second point cloud frame in the current point cloud group, the first identifier in the current point cloud group can be directly parsed from the code stream. The number of class patches. In the second possible implementation manner, after decoding the first identifiers of all patches of the second point cloud frame in the current point cloud group, the number of patches with the first identifier as the first value can be determined, so as to determine The number of first-type patches included in the second point cloud frame, that is, the number of first-type patches in the current point cloud group. That is, the number of first-type patches included in each point cloud frame in the current point cloud group can be determined through the second point cloud frame.
在一种可能的情况中,当前点云组内的第2个点云帧可以作为第3个点云帧的参考点云帧,第3个点云帧可以作为第4个点云帧的参考点云帧,并依次类推。这样,第3个点云帧及第3个之后的点云帧可以根据参考点云帧中第一类patch的个数,确定当前点云帧中的第n个patch是否为第一类patch。In a possible situation, the second point cloud frame in the current point cloud group can be used as the reference point cloud frame of the third point cloud frame, and the third point cloud frame can be used as the reference point cloud frame of the fourth point cloud frame Point cloud frame, and so on. In this way, the third point cloud frame and the point cloud frames after the third can determine whether the nth patch in the current point cloud frame is the first type patch according to the number of the first type patch in the reference point cloud frame.
另外,由于当前点云帧中的首个patch的第一标识,以及首个patch之外的取值为第二值或第三值的patch的第一标识可以各自打包并编入码流,也可以打包在一起并编入码流。因此,对于各自打包并编入码流的方式而言,如果待解码patch为当前点云帧中的首个patch,那么,可以从码流中解析待解码patch的第一标识。当然,对于首个patch之外的取值为第二值或第三值的patch,也可以从码流中解析待解码patch的第一标识。也即是,可以依次解析当前点云帧中待解码的首个patch的第一标识,以及首个patch之外的取值为第二值或第三值的patch的第一标识。对于打包在一起并编入码流的方式而言,如果待解码patch为当前点云帧中的首个patch,那么,可以从码流中解析当前点云帧包括的多个patch的第一标识,其中解析出的多个第一标识中包括待解码patch的第一标识。也即是,通过一次解析即可得到当前点云帧包括的多个patch的第一标识,而无需分多次进行解析。同理,当当前点云帧包括的每个patch的辅助信息中同一类型的信息也一起打包并编入码流时,如果待解码patch为当前点云帧中的首个patch,那么,可以从码流中解析当前点云帧包括的每个patch的辅助信息中同一类型的信息。也即是,通过一次解析即可得到当前点云帧包括的每个patch的辅助信息中同一类型的信息,而无需分多次进行解析。In addition, since the first identifier of the first patch in the current point cloud frame, and the first identifier of the patch whose value is the second or third value other than the first patch can be packaged separately and compiled into the code stream, Can be packaged together and compiled into code stream. Therefore, for the respective methods of packaging and encoding into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identifier of the patch to be decoded can be parsed from the code stream. Of course, for patches that take the second value or the third value other than the first patch, the first identifier of the patch to be decoded can also be parsed from the code stream. That is, the first identifier of the first patch to be decoded in the current point cloud frame and the first identifier of the patch whose value is the second or third value other than the first patch can be parsed in sequence. For the method of packing together and compiling into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identification of multiple patches included in the current point cloud frame can be parsed from the code stream , Wherein the multiple first identifiers parsed include the first identifier of the patch to be decoded. That is, the first identifiers of multiple patches included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis. Similarly, when the same type of information in the auxiliary information of each patch included in the current point cloud frame is also packaged and compiled into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, you can The code stream parses the same type of information in the auxiliary information of each patch included in the current point cloud frame. That is, the same type of information in the auxiliary information of each patch included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis.
作为一种示例,可以采用与编码端匹配的方法从码流中解析待解码patch的第一标识。例如可以采用定长解码方式从码流中解析待解码patch的第一标识。As an example, a method of matching with the encoding end may be used to parse the first identifier of the patch to be decoded from the code stream. For example, a fixed-length decoding method can be used to parse the first identifier of the patch to be decoded from the code stream.
S1104:当待解码patch为当前点云帧中的第n个patch,n大于1且大于当前点云帧的参考点云帧中的第一类patch的个数时,从码流中解析待解码patch的第一标识。S1104: When the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and greater than the number of the first-type patch in the reference point cloud frame of the current point cloud frame, analyze the to-be-decoded patch from the code stream The first ID of the patch.
由于第二类patch和第三类patch的编码过程中,第一标识均是编入码流中的,所以当待解码patch为当前点云帧中的第n个patch,n大于1且大于当前点云帧的参考点云帧中的第一类patch的个数时,表明待解码patch为第二类patch或第三类patch,此时可以从码流中解析待解码patch的第一标识。Since in the encoding process of the second type patch and the third type patch, the first identifier is encoded into the code stream, so when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and greater than the current When the point cloud frame refers to the number of the first-type patch in the point cloud frame, it indicates that the patch to be decoded is a second-type patch or a third-type patch. At this time, the first identifier of the patch to be decoded can be parsed from the code stream.
S1105:当第一标识为第二值时,从码流中解析待解码patch的辅助信息,该辅助信息包 括待解码patch的二维信息、三维信息和待解码patch的参考patch的标识信息。S1105: When the first identifier is the second value, parse the auxiliary information of the patch to be decoded from the code stream. The auxiliary information includes the two-dimensional information and three-dimensional information of the patch to be decoded, and the identification information of the reference patch of the patch to be decoded.
需要说明的是,当第一标识为第二值时,表明待解码patch为第二类patch,也即当前点云帧的参考帧中存在与待解码patch相匹配的参考patch。此时,可以从码流中解析待解码patch的辅助信息,该辅助信息包括二维信息、三维信息和待解码patch的参考patch的标识信息,但不包括旋转变换信息和法向坐标轴信息。It should be noted that when the first identifier is the second value, it indicates that the patch to be decoded is a second type of patch, that is, there is a reference patch matching the patch to be decoded in the reference frame of the current point cloud frame. At this time, the auxiliary information of the patch to be decoded can be parsed from the code stream. The auxiliary information includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be decoded, but does not include rotation transformation information and normal coordinate axis information.
由于第二类patch在编码的过程中编入码流的辅助信息包括二维信息、三维信息和参考patch的标识信息,但不包括旋转变换信息和法向坐标轴信息,所以,当待解码patch为第二类patch时,从码流中解析的辅助信息包括待解码patch的二维信息、三维信息和待解码patch的参考patch的标识信息,但不包括待解码patch的旋转变换信息和法向坐标轴信息。此时,还可以根据待解码patch的参考patch的标识信息,获取待解码patch的旋转变换信息和法向坐标轴信息。Because the auxiliary information of the second type of patch that is encoded into the code stream during the encoding process includes two-dimensional information, three-dimensional information and identification information of the reference patch, but does not include the rotation transformation information and the normal coordinate axis information, so when the patch to be decoded When it is the second type of patch, the auxiliary information parsed from the code stream includes the two-dimensional information, three-dimensional information of the patch to be decoded and the identification information of the reference patch of the patch to be decoded, but does not include the rotation transformation information and normal direction of the patch to be decoded Coordinate axis information. At this time, the rotation transformation information and normal coordinate axis information of the patch to be decoded can also be obtained according to the identification information of the reference patch of the patch to be decoded.
其中,对于待解码patch的参考patch的标识信息,可以采用与编码端匹配的方法从码流中解析,例如可以采用定长解码方式来解析。对于待解码patch的旋转变换信息和法向坐标轴信息,可以通过待解码patch的参考patch的标识信息确定待解码patch的参考patch,进而获取待解码patch的参考patch的旋转变换信息和法向坐标轴信息,并将参考patch的旋转变换信息和法向坐标轴信息作为待解码patch的旋转变换信息和法向坐标轴信息。对于待解码patch的二维信息和三维信息,作为一种示例,可以采用与编码端匹配的方法进行解码,例如可以差分解码方式从码流中解析待解码patch的二维信息和三维信息。具体地,可以通过待解码patch的参考patch的标识信息确定待解码patch的参考patch,进而获取待解码patch的参考patch的二维信息和三维信息。然后,将获取的二维信息和三维信息分别与从码流中解析出的二维信息差值和三维信息差值对应相加,从而得到待解码patch的二维信息和三维信息。Among them, the identification information of the reference patch of the patch to be decoded can be parsed from the code stream by a method matching the encoding end, for example, a fixed-length decoding method can be used for analysis. For the rotation transformation information and normal coordinate axis information of the patch to be decoded, the reference patch of the reference patch to be decoded can be determined through the identification information of the reference patch to be decoded, and then the rotation transformation information and normal coordinates of the reference patch to be decoded are obtained. Axis information, and use the rotation transformation information and normal coordinate axis information of the reference patch as the rotation transformation information and normal coordinate axis information of the patch to be decoded. For the two-dimensional information and three-dimensional information of the patch to be decoded, as an example, a method that matches the encoding end can be used for decoding. For example, the two-dimensional information and three-dimensional information of the patch to be decoded can be parsed from the code stream in a differential decoding manner. Specifically, the reference patch of the patch to be decoded can be determined by the identification information of the reference patch of the patch to be decoded, and then the two-dimensional information and three-dimensional information of the reference patch of the patch to be decoded can be obtained. Then, the obtained two-dimensional information and three-dimensional information are respectively added with the two-dimensional information difference and the three-dimensional information difference parsed from the code stream, so as to obtain the two-dimensional information and the three-dimensional information of the patch to be decoded.
S1106:当第一标识为第三值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息。S1106: When the first identifier is the third value, parse the auxiliary information of the patch to be decoded from the code stream. The auxiliary information includes the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
需要说明的是,当第一标识为第三值时,表明待解码patch为第三类patch,也即当前点云组中不存在与待解码patch相匹配的参考patch。此时,可以从码流中解析出待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息。It should be noted that when the first identifier is the third value, it indicates that the patch to be decoded is a third type of patch, that is, there is no reference patch matching the patch to be decoded in the current point cloud group. At this point, the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded can be parsed from the code stream.
其中,第一值、第二值和第三值可以分别是二进制的10、11和00,或者,第一值、第二值和第三值可以分别是二进制的11、10和00等,本申请实施例对此不做限定。Among them, the first value, the second value, and the third value may be binary 10, 11, and 00 respectively, or the first value, the second value, and the third value may be binary 11, 10, and 00, etc., respectively. The application embodiment does not limit this.
基于上述描述,当前点云组内的每个点云帧中的第一类patch、第二类patch和第三类patch可以按照如图8所示的方式排列,此时,如果待解码patch为当前点云帧中的首个patch,那么,从码流中解析待解码patch的第一标识之后,即可根据第一标识的取值确定当前点云帧是否为当前点云组内的首帧点云。也即是,当待解码patch为当前点云帧中的首个patch,且第一标识为第三值时,可以确定当前点云帧为当前点云组内的首帧点云。Based on the above description, the first type patch, the second type patch and the third type patch in each point cloud frame in the current point cloud group can be arranged as shown in Figure 8. At this time, if the patch to be decoded is The first patch in the current point cloud frame, then, after parsing the first identifier of the patch to be decoded from the code stream, you can determine whether the current point cloud frame is the first frame in the current point cloud group according to the value of the first identifier Point cloud. That is, when the patch to be decoded is the first patch in the current point cloud frame, and the first identifier is the third value, it can be determined that the current point cloud frame is the first point cloud in the current point cloud group.
作为一种示例,可以采用定长解码方式从码流中解析待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息,也可以采用变长解码方式从码流中解析待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息,本申请实施例对此不做限定。但是,如果首个第三类patch的辅助信息按照定长编码方式或变长编码方式进行编码,非首个第三类patch的二维信息和三维信息采用差分编码方式进行编码,其他辅助信息采用定长编 码方式进行编码。那么,在本步骤中,对于非首个第三类patch来说,可以采用差分解码方式从码流中解析待解码patch的二维信息和三维信息,采用定长解码方式从码流中解析待解码patch的旋转变换信息和法向坐标轴信息。其中,对于非首个第三类patch来说,采用差分解码方式从码流中解析待解码patch的二维信息和三维信息的方式为:从码流中解析待解码patch的二维信息与首个第三类patch的二维信息之间的差值,将该差值与首个第三类patch的二维信息相加,得到待解码patch的二维信息。从码流中解析待解码patch的三维信息与首个第三类patch的三维信息之间的差值,将该差值与首个第三类patch的三维信息相加,得到待解码patch的三维信息。As an example, the fixed-length decoding method can be used to parse the two-dimensional information, three-dimensional information, rotation transformation information, and normal axis information of the patch to be decoded from the code stream, or the variable-length decoding method can be used to parse the to-be-decoded patch from the code stream. The two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the decoded patch are not limited in the embodiment of the present application. However, if the auxiliary information of the first third-type patch is coded according to fixed-length coding or variable-length coding, the two-dimensional information and three-dimensional information of the non-first third-type patch are coded by differential coding, and other auxiliary information is coded Encode with fixed-length encoding. Then, in this step, for non-first type III patches, differential decoding can be used to parse the two-dimensional information and three-dimensional information of the patch to be decoded from the code stream, and fixed-length decoding can be used to parse the to-be-decoded patch from the code stream. Decode the rotation transformation information and normal axis information of the patch. Among them, for the non-first third-type patch, the method of using differential decoding to parse the two-dimensional information and three-dimensional information of the patch to be decoded from the code stream is: parse the two-dimensional information and the first information of the patch to be decoded from the code stream. The difference between the two-dimensional information of the third-type patch is added to the two-dimensional information of the first third-type patch to obtain the two-dimensional information of the patch to be decoded. Analyze the difference between the 3D information of the patch to be decoded and the 3D information of the first third type patch from the code stream, and add the difference to the 3D information of the first third type patch to obtain the 3D information of the patch to be decoded information.
S1107:根据待解码patch的辅助信息,重构待解码patch。S1107: According to the auxiliary information of the patch to be decoded, reconstruct the patch to be decoded.
需要说明的是,在获取待解码patch的辅助信息之后,也即获取到了待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息之后,可以根据但不限于这些辅助信息重构待解码patch,本申请对重构待解码patch需要的具体信息不做限定。It should be noted that after obtaining the auxiliary information of the patch to be decoded, that is, after obtaining the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded, the auxiliary information can be reproduced according to but not limited to these auxiliary information. To construct the patch to be decoded, this application does not limit the specific information needed to reconstruct the patch to be decoded.
在本申请实施例中,由于当前点云帧中的首个patch的第一标识是编入码流中的,所以当待解码点云块patch为当前点云帧中的首个patch时,可以从码流中解析待解码patch的第一标识,当第一标识为第一值时,表明待解码patch为第一类patch,此时可以从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息。当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,表明待解码patch为非首个第一类patch,此时可以从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息。当第一标识为第二值时,表明待解码patch为第二类patch,此时可以从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的二维信息、三维信息和待解码patch的参考patch的标识信息。当第一标识为第三值时,表明待解码patch为第三类patch,此时可以从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息。也即是,对于首个第一类patch需要从码流中解析第一标识,而对于非首个第一类patch则无需从码流中解析第一标识,并且对于第一类patch和第二类patch而言,只需要从码流中解析部分辅助信息,其他的辅助信息可以推导或者获取得到,这样,可以简化解析码流的格式,减少码流的比特开销,从而提高解码的效率。In the embodiment of this application, since the first identifier of the first patch in the current point cloud frame is encoded into the code stream, when the patch to be decoded is the first patch in the current point cloud frame, The first identifier of the patch to be decoded is parsed from the code stream. When the first identifier is the first value, it indicates that the patch to be decoded is the first type of patch. At this time, the auxiliary information of the patch to be decoded can be parsed from the code stream. The information includes the three-dimensional information of the patch to be decoded. When the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame, it indicates that the patch to be decoded is not the first A first-type patch, at this time, the auxiliary information of the patch to be decoded can be parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded. When the first identifier is the second value, it indicates that the patch to be decoded is a second type of patch. At this time, the auxiliary information of the patch to be decoded can be parsed from the code stream. The auxiliary information includes the two-dimensional information, three-dimensional information and information of the patch to be decoded. The identification information of the reference patch of the patch to be decoded. When the first identifier is the third value, it indicates that the patch to be decoded is a third type of patch. At this time, the auxiliary information of the patch to be decoded can be parsed from the code stream. The auxiliary information includes the two-dimensional information, three-dimensional information, and Rotation transformation information and normal coordinate axis information. That is, for the first type one patch, the first identifier needs to be parsed from the code stream, while for the non-first type first patch, the first identifier does not need to be parsed from the code stream, and for the first type patch and the second type For patch-like, only part of the auxiliary information needs to be parsed from the code stream, and other auxiliary information can be derived or obtained. In this way, the format of the parsed code stream can be simplified, the bit overhead of the code stream can be reduced, and the decoding efficiency can be improved.
以下,对本申请实施例提供的第二种点云编码方法进行说明。需要说明的是,结合图1所示的点云译码系统,以及图2所示的编码器100的示意性框图,下文中的任一种点云编码方法可以是点云译码系统中的编码器100执行的,更具体地,可以是编码器100中的辅助信息编码模块109执行的。参见图12,该方法包括:Hereinafter, the second point cloud coding method provided by the embodiment of the present application will be described. It should be noted that, in combination with the point cloud decoding system shown in FIG. 1 and the schematic block diagram of the
S1201:获取待编码patch的辅助信息和待编码patch的第一标识。S1201: Obtain auxiliary information of the patch to be encoded and the first identifier of the patch to be encoded.
需要说明的时,S1201的内容可以参考上述图9所示的实施例中的S901,本申请实施例对此不再赘述。When it needs to be explained, the content of S1201 may refer to S901 in the embodiment shown in FIG. 9, and this is not repeated in this embodiment of the application.
S1202:当第一标识为第一值时,将待编码patch的辅助信息、第一标识和待编码patch的第二标识编入码流,待编码patch为当前点云帧中的首个patch;或,当第一标识为第一值时,将待编码patch的辅助信息和待编码patch的第二标识编入码流,待编码patch为当前点云帧中的非首个patch。S1202: When the first identifier is the first value, encode the auxiliary information of the patch to be encoded, the first identifier, and the second identifier of the patch to be encoded into the code stream, and the patch to be encoded is the first patch in the current point cloud frame; Or, when the first identifier is the first value, the auxiliary information of the patch to be encoded and the second identifier of the patch to be encoded are encoded into the code stream, and the patch to be encoded is the non-first patch in the current point cloud frame.
通常情况下,第一类patch在当前点云组内的所有点云帧中都存在具有匹配关系的patch,且当前点云组内的第一类patch之间的二维信息、旋转变换信息和法向坐标轴信息相同,而三维信息可能不相同,但是在某些情况下,第一类patch的三维信息也可以相同。在这种情况下,当第一标识为第一值时,可以指示待编码patch为第一类patch,且编入码流的信息还可以包括第二标识。Generally, the first-type patch has patches with matching relationships in all point cloud frames in the current point cloud group, and the two-dimensional information, rotation transformation information and information between the first-type patches in the current point cloud group The normal coordinate axis information is the same, but the three-dimensional information may be different, but in some cases, the three-dimensional information of the first type of patch may also be the same. In this case, when the first identifier is the first value, it may indicate that the patch to be encoded is a first-type patch, and the information encoded into the code stream may also include the second identifier.
需要说明的是,第二标识用于指示待编码patch的三维信息是否已编入码流。第二标识的语法元素可以是override_3d_shift_data_flag。第二标识为第四值时,可以指示待编码patch的三维信息未编入码流。也即是,待编码patch的三维信息与待编码patch的参考patch的三维信息相同,因此可以不用将待编码patch的三维信息再次编入码流,也即待编码patch的辅助信息可以不包括三维信息。第二标识为第五值时,可以指示待编码patch的三维信息已编入码流。也即是,待编码patch的三维信息与待编码patch的参考patch的三维信息不相同,因此需要将待编码patch的三维信息编入码流,也即待编码patch的辅助信息可以包括三维信息。具体编码方法在此不做限定,例如可以采用差分编码方式,也可以采用定长编码方式。其中,第四值的语法元素可以是false,第五值的语法元素可以是true。It should be noted that the second identifier is used to indicate whether the three-dimensional information of the patch to be encoded has been encoded into the code stream. The syntax element of the second identification may be override_3d_shift_data_flag. When the second identifier is the fourth value, it can indicate that the three-dimensional information of the patch to be encoded is not encoded into the code stream. That is, the three-dimensional information of the patch to be encoded is the same as the three-dimensional information of the reference patch of the patch to be encoded, so there is no need to re-encode the three-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded may not include the three-dimensional information. information. When the second identifier is the fifth value, it can indicate that the three-dimensional information of the patch to be encoded has been encoded into the code stream. That is, the three-dimensional information of the patch to be encoded is different from the three-dimensional information of the reference patch of the patch to be encoded. Therefore, it is necessary to encode the three-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded may include three-dimensional information. The specific encoding method is not limited here. For example, a differential encoding method may be used, or a fixed-length encoding method may be used. The syntax element of the fourth value may be false, and the syntax element of the fifth value may be true.
作为一种示例,本文示例一种待编码patch的第一标识为第一值,且编入码流的信息包括第二标识时的部分语法结构,参见表1和表3所示。As an example, this article exemplifies a partial syntax structure when the first identifier of the patch to be encoded is the first value, and the information encoded into the code stream includes the second identifier, see Table 1 and Table 3.
表3table 3
进一步地,在一种可能的情况中,待编码patch的第一标识为第一值时,也即待编码patch为第一类patch时,待编码patch的三维信息与参考patch的三维信息,以及待编码patch的二维信息与参考patch的二维信息都不相同。这样,当第一标识为第一值时,编入码流的信 息除了包括第二标识之外,还可以包括用于指示待编码patch的二维信息是否已编入码流的第三标识。第三标识的语法元素可以是override_2d_shift_data_flag。其中,第二标识已做过描述,所以此处不再赘述。Further, in a possible situation, when the first identifier of the patch to be encoded is the first value, that is, when the patch to be encoded is the first type of patch, the three-dimensional information of the patch to be encoded and the three-dimensional information of the reference patch, and The two-dimensional information of the patch to be encoded is different from the two-dimensional information of the reference patch. In this way, when the first identifier is the first value, in addition to the second identifier, the information encoded into the code stream may also include a third identifier for indicating whether the two-dimensional information of the patch to be encoded has been encoded into the code stream. The third-identified syntax element may be override_2d_shift_data_flag. Among them, the second identifier has already been described, so it will not be repeated here.
第三标识为第六值时,可以指示待编码patch的二维信息未编入码流。也即是,待编码patch的二维信息与待编码patch的参考patch的二维信息相同,因此可以不用将待编码patch的二维信息再次编入码流,也即待编码patch的辅助信息可以不包括二维信息。第三标识为第七值时,可以指示待编码patch的二维信息已编入码流。也即是,待编码patch的二维信息与待编码patch的参考patch的二维信息不相同,因此需要将待编码patch的二维信息编入码流,也即待编码patch的辅助信息可以包括二维信息。其中,第六值的语法元素可以是false,第七值的语法元素可以是true。When the third identifier is the sixth value, it may indicate that the two-dimensional information of the patch to be encoded is not encoded into the code stream. That is, the two-dimensional information of the patch to be encoded is the same as the two-dimensional information of the reference patch of the patch to be encoded, so there is no need to re-encode the two-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded can be Does not include two-dimensional information. When the third identifier is the seventh value, it can indicate that the two-dimensional information of the patch to be encoded has been encoded into the code stream. That is, the two-dimensional information of the patch to be encoded is not the same as the two-dimensional information of the reference patch of the patch to be encoded. Therefore, it is necessary to encode the two-dimensional information of the patch to be encoded into the code stream, that is, the auxiliary information of the patch to be encoded may include Two-dimensional information. The syntax element of the sixth value may be false, and the syntax element of the seventh value may be true.
作为一种示例,本文示例一种待编码patch的第一标识为第一值,且编入码流的信息包括第二标识和第三标识时的部分语法结构,参见表1和表4所示。As an example, this article illustrates a partial syntax structure when the first identifier of the patch to be encoded is the first value, and the information encoded into the code stream includes the second identifier and the third identifier, see Table 1 and Table 4 .
表4Table 4
当待编码patch的三维信息与参考patch的三维信息,以及待编码patch的二维信息与参考patch的二维信息都不相同时,不仅可以通过上述第二标识和第三标识来指示编入码流的信息中是否包括待编码patch的二维信息和三维信息。还可以通过其他的方式来指示,比如,还可以通过第四标识来指示待编码patch的二维信息和三维信息是否均已编入码流,也即是,当第一标识为第一值时,可以指示待编码patch为第一类patch,且编入码流的信息还可以包括第四标识。第四标识的语法元素可以是override_patch_data_flag。当第四标识为第八值时,可以指示待编码patch的二维信息和三维信息均与待编码patch的参考patch的二维信息和三维信息相同,且未编入码流。当第四标识为第九值时,可以指示待编码patch的二维信息和三维信息均与待编码patch的参考patch的二维信息和三维信息不相同,且均已编入码流。其中,第八值的语法元素可以为flase,第九值的语法元素可以为true。When the three-dimensional information of the patch to be encoded and the three-dimensional information of the reference patch, and the two-dimensional information of the patch to be encoded and the two-dimensional information of the reference patch are not the same, not only the above-mentioned second and third marks can be used to indicate the coding Whether the information of the stream includes two-dimensional information and three-dimensional information of the patch to be encoded. It can also be indicated in other ways. For example, the fourth identifier can also be used to indicate whether the two-dimensional information and three-dimensional information of the patch to be encoded have been encoded into the code stream, that is, when the first identifier is the first value , It can indicate that the patch to be encoded is the first type of patch, and the information encoded into the code stream can also include a fourth identifier. The fourth identified syntax element may be override_patch_data_flag. When the fourth identifier is the eighth value, it may indicate that the two-dimensional information and three-dimensional information of the patch to be encoded are the same as the two-dimensional information and three-dimensional information of the reference patch of the patch to be encoded, and the code stream is not included. When the fourth identifier is a ninth value, it can indicate that the two-dimensional information and three-dimensional information of the patch to be encoded are different from the two-dimensional information and three-dimensional information of the reference patch of the patch to be encoded, and both have been encoded into the code stream. The syntax element of the eighth value can be flase, and the syntax element of the ninth value can be true.
其中,由于待编码patch的三维信息可以包括待编码patch在3D空间中沿着切线方向的偏移(3d_shift_tangent_axis)、待编码patch在3D空间中沿着双切线方向的偏移(3d_shift_bitangent_axis),以及待编码patch在3D空间中沿着法线方向的偏移(3d_shift_normal_axis)。待编码patch的二维信息可以包括待编码patch在当前点云帧占用图中沿u轴方向的偏移(2d_shift_u)、待编码patch在当前点云帧占用图中沿v轴方向的偏移(2d_shift_v)、待编码patch在当前点云帧占用图中的宽度(2d_size_u),以及待编码patch在当前点云帧占用图中的高度(2d_size_v)。所以,还可以通过用于指示3d_shift_tangent_axis是否已编入码流的标识(override_3d_shift_tangent_axis)、用于指示3d_shift_bitangent_axis是否已编入码流的标识(override_3d_shift_bitangent_axis)和用于指示3d_shift_normal_axis是否已编入码流的标识(override_3d_shift_normal_axis)来指示待编码patch的三维信息是否已编入码流,以及通过用于指示2d_shift_u是否已编入码流的标识(override_2d_shift_u)、用于指示2d_shift_v是否已编入码流的标识(override_2d_shift_v)、用于指示2d_size_u是否已编入码流的标识(override_2d_size_u)和用于指示2d_size_v是否已编入码流的标识(override_2d_size_v)来指示待编码patch的二维信息是否已编入码流。与第二标识、第三标识和第四标识类似地,上述各个标识均可以有两种取值,这两种取值的语法元素可以为true和false。每种取值的含义可以参考第二标识、第三标识或第四标识的不同取值的含义,此处不再赘述。Among them, because the three-dimensional information of the patch to be encoded may include the offset of the patch to be encoded in the 3D space along the tangent direction (3d_shift_tangent_axis), the offset of the patch to be encoded in the 3D space along the bitangent direction (3d_shift_bitangent_axis), and The offset of the encoded patch in the 3D space along the normal direction (3d_shift_normal_axis). The two-dimensional information of the patch to be encoded may include the offset of the patch to be encoded in the current point cloud frame occupancy map along the u-axis direction (2d_shift_u), and the offset of the patch to be encoded in the current point cloud frame occupancy map along the v-axis direction ( 2d_shift_v), the width of the patch to be encoded in the current point cloud frame occupancy map (2d_size_u), and the height of the patch to be encoded in the current point cloud frame occupancy map (2d_size_v). Therefore, it is also possible to pass the flag (override_3d_shift_tangent_axis) used to indicate whether 3d_shift_tangent_axis has been coded into the code stream, the flag used to indicate whether 3d_shift_bitangent_axis has been coded into the code stream (override_3d_shift_bitangent_axis) and the flag (override_3d_shift_bitangent_axis) used to indicate whether the 3d_shift_normal_axis has been coded override_3d_shift_normal_axis) to indicate whether the three-dimensional information of the patch to be encoded has been encoded into the code stream, and through the flag (override_2d_shift_u) used to indicate whether 2d_shift_u has been encoded into the code stream, and the flag used to indicate whether 2d_shift_v has been encoded into the code stream (override_2d_shift_v) An identifier (override_2d_size_u) used to indicate whether 2d_size_u has been encoded into the code stream and an identifier (override_2d_size_v) used to indicate whether 2d_size_v has been encoded into the code stream to indicate whether the two-dimensional information of the patch to be encoded has been encoded into the code stream. Similar to the second identifier, the third identifier, and the fourth identifier, each of the above identifiers can have two values, and the syntax elements of the two values can be true and false. The meaning of each value can refer to the meaning of different values of the second identifier, the third identifier or the fourth identifier, which will not be repeated here.
作为一种示例,本文示例一种待编码patch的第一标识为第一值,且编入码流的信息包括第四标识,以及分别用于指示不同的二维信息和三维信息的标识时的部分语法结构,参见表1和表5所示。As an example, this article exemplifies when the first identifier of the patch to be encoded is the first value, and the information encoded into the code stream includes the fourth identifier, and the identifier used to indicate different two-dimensional information and three-dimensional information. Part of the grammatical structure, see Table 1 and Table 5.
表5table 5
其中,第一标识为第二值时,可以指示待编码patch为第二类patch。也即当前点云帧的参考帧中存在与待编码patch相匹配的参考patch。待编码patch的辅助信息包括二维信息、三维信息和待编码patch的参考patch的标识信息。Wherein, when the first identifier is the second value, it may indicate that the patch to be encoded is a second-type patch. That is, there is a reference patch that matches the patch to be encoded in the reference frame of the current point cloud frame. The auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded.
其中,第一标识为第三值时,可以指示待编码patch为第三类patch。也即当前点云帧的参考帧中不存在与待编码patch相匹配的参考patch。待编码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。Wherein, when the first identifier is a third value, it may indicate that the patch to be encoded is a third-type patch. That is, there is no reference patch that matches the patch to be encoded in the reference frame of the current point cloud frame. The auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information.
需要说明的是,本申请实施例与图9所示实施例中相同的内容不再赘述,可以参考图9所示实施例中的描述。It should be noted that the same content in the embodiment of the present application and the embodiment shown in FIG. 9 will not be repeated, and reference may be made to the description in the embodiment shown in FIG. 9.
在本申请实施例中,先获取待编码patch的辅助信息和待编码patch的第一标识。由于当前点云组内的第一类patch在每个点云帧中的数量可以是相同的,所以当第一标识为第一值,待编码patch为当前点云帧中的首个patch时,表明待编码patch为当前点云帧中的首个第一类patch,此时可以将待编码patch的辅助信息、第一标识和第二标识编入码流;当第一标识为第一值,待编码patch为当前点云帧中的非首个patch时,表明待编码patch为当前点云帧中的非首个第一类patch,可以将待编码patch的辅助信息和第二标识编入码流,而不用将待编码patch的第一标识编入码流,从而可以简化编入码流的格式。其中,第二标识是用于指示待编码patch的三维信息是否已编入码流的标识。当第二标识为第四值时,表明待编码patch的三维信息未编入码流。也即是,待编码patch的三维信息与待编码patch的参考patch的三维信息相同,因此可以不用将待编码patch的三维信息再次编入码流,也即待编码patch的辅助信息可以不包括三维信息,这样,可以进一步减少码流的比特开销,从而提高编码的效率。In this embodiment of the present application, first obtain the auxiliary information of the patch to be encoded and the first identifier of the patch to be encoded. Since the number of the first-type patches in each point cloud frame in the current point cloud group can be the same, when the first identifier is the first value, and the patch to be encoded is the first patch in the current point cloud frame, Indicates that the patch to be encoded is the first patch of the first type in the current point cloud frame. At this time, the auxiliary information, the first identifier and the second identifier of the patch to be encoded can be encoded into the code stream; when the first identifier is the first value, When the patch to be coded is the non-first patch in the current point cloud frame, it indicates that the patch to be coded is the
接下来对基于上述图12所示的实施例的点云编码方法的点云解码方法进行说明。需要说明的是,结合图1所示的点云译码系统,以及图6所示的解码器200的示意性框图,下文中的任一种点云解码方法可以是点云译码系统中的解码器200执行的,更具体地,可以是解码器200中的辅助信息解码模块204执行的。参见图13,该解码方法包括:Next, the point cloud decoding method based on the point cloud encoding method of the embodiment shown in FIG. 12 will be described. It should be noted that, in combination with the point cloud decoding system shown in FIG. 1 and the schematic block diagram of the
S1301:当待解码patch为当前点云帧中的首个patch时,从码流中解析待解码patch的第一标识。S1301: When the patch to be decoded is the first patch in the current point cloud frame, analyze the first identifier of the patch to be decoded from the code stream.
需要说明的是,S1301的内容可以参考上述S1101的内容,此处不再赘述。It should be noted that the content of S1301 can refer to the content of S1101, which will not be repeated here.
S1302:当第一标识为第一值时,从码流中解析待解码patch的第二标识。S1302: When the first identifier is the first value, parse the second identifier of the patch to be decoded from the code stream.
需要说明的是,第二标识已在上述S1202中做过说明,所以此处不再赘述。It should be noted that the second identifier has been described in S1202 above, so it will not be repeated here.
S1303:当第二标识为第四值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息;当第二标识为第五值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息。S1303: When the second identifier is the fourth value, determine the auxiliary information of the patch to be decoded according to the auxiliary information of the reference patch of the patch to be decoded; when the second identifier is the fifth value, parse the auxiliary information of the patch to be decoded from the code stream The auxiliary information includes the three-dimensional information of the patch to be decoded.
需要说明的是,第二标识为第四值时,可以指示待解码patch的三维信息未编入码流。也即是,待解码patch的三维信息与待解码patch的参考patch的三维信息相同,此时可以根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息。具体地,可以将待解码patch的参考patch的辅助信息作为待解码patch的辅助信息。第二标识为第五值时,可以指示待解码patch的三维信息已编入码流,待解码patch的辅助信息包括三维信息。此时,从码流中解析待解码patch的辅助信息,辅助信息包括待解码patch的三维信息。作为一种示例,可以采用差分解码方式从码流中解析待解码patch的辅助信息。具体方式可以参考前文。It should be noted that when the second identifier is the fourth value, it may indicate that the three-dimensional information of the patch to be decoded is not encoded into the code stream. That is, the 3D information of the patch to be decoded is the same as the 3D information of the reference patch of the patch to be decoded. At this time, the auxiliary information of the patch to be decoded can be determined according to the auxiliary information of the reference patch of the patch to be decoded. Specifically, the auxiliary information of the reference patch of the patch to be decoded may be used as the auxiliary information of the patch to be decoded. When the second identifier is the fifth value, it can indicate that the 3D information of the patch to be decoded has been encoded into the bitstream, and the auxiliary information of the patch to be decoded includes 3D information. At this time, the auxiliary information of the patch to be decoded is parsed from the code stream, and the auxiliary information includes the three-dimensional information of the patch to be decoded. As an example, a differential decoding method can be used to parse the auxiliary information of the patch to be decoded from the code stream. The specific method can refer to the previous article.
在一些实施例中,基于步骤1202的描述,在待编码patch的三维信息与参考patch的三维信息,以及待编码patch的二维信息与参考patch的二维信息都不相同的情况下,编入码流的信息除了包括第二标识之外,还可以包括用于指示待编码patch的二维信息是否已编入码流的第三标识。也即是,当第一标识为第一值时,除了从码流中解析待解码patch的第二标识之外,还可以从码流中解析待解码patch的第三标识。第三标识为第六值时,可以指示待解码patch的二维信息未编入码流。也即是,待解码patch的二维信息与待解码patch的参考patch的二维信息相同,因此可以将待解码patch的参考patch的二维信息作为待解码patch的二维信息。当第三标识为第七值时,可以指示待解码patch的二维信息已编入码流。也即是, 待解码patch的二维信息与待解码patch的参考patch的二维信息不相同,因此可以从码流中解析待解码patch二维信息。具体解码方式可以为与编码方法匹配的解码方法,此处不再赘述。In some embodiments, based on the description of step 1202, when the three-dimensional information of the patch to be encoded and the three-dimensional information of the reference patch, and the two-dimensional information of the patch to be encoded and the two-dimensional information of the reference patch are not the same, the In addition to the second identifier, the information of the codestream may also include a third identifier for indicating whether the two-dimensional information of the patch to be encoded has been encoded into the codestream. That is, when the first identifier is the first value, in addition to parsing the second identifier of the patch to be decoded from the code stream, the third identifier of the patch to be decoded can also be parsed from the code stream. When the third identifier is the sixth value, it can indicate that the two-dimensional information of the patch to be decoded is not encoded into the code stream. That is, the two-dimensional information of the patch to be decoded is the same as the two-dimensional information of the reference patch of the patch to be decoded, so the two-dimensional information of the reference patch of the patch to be decoded can be used as the two-dimensional information of the patch to be decoded. When the third identifier is the seventh value, it can indicate that the two-dimensional information of the patch to be decoded has been encoded into the code stream. That is, the two-dimensional information of the patch to be decoded is different from the two-dimensional information of the reference patch of the patch to be decoded, so the two-dimensional information of the patch to be decoded can be parsed from the code stream. The specific decoding method may be a decoding method that matches the encoding method, which will not be repeated here.
在另一些实施例中,基于步骤1202的描述,在待编码patch的三维信息与参考patch的三维信息,以及待编码patch的二维信息与参考patch的二维信息都不相同的情况下,不仅可以通过上述第二标识和第三标识来指示编入码流的信息中是否包括待解码patch的二维信息和三维信息。还可以通过其他的方式来指示,比如,还可以通过第四标识来指示待解码patch的二维信息和三维信息是否均已编入码流。也即是,当第一标识为第一值时,可以从码流中解析待解码patch的第四标识。第四标识为第八值时,可以指示待解码patch的二维信息和三维信息均与待解码patch的参考patch的二维信息和三维信息相同,且未编入码流,因此可以将待解码patch的参考patch的二维信息和三维信息作为待解码patch的二维信息和三维信息。当第四标识为第九值时,可以指示待解码patch的二维信息和三维信息均与待解码patch的参考patch的二维信息和三维信息不相同,且均已编入码流,因此可以从码流中解析待解码patch二维信息和三维信息。具体解码方式可以为与编码方法匹配的解码方法,此处不再赘述。In other embodiments, based on the description of step 1202, when the three-dimensional information of the patch to be encoded and the three-dimensional information of the reference patch, and the two-dimensional information of the patch to be encoded and the two-dimensional information of the reference patch are different, not only The above-mentioned second identifier and third identifier can be used to indicate whether the information compiled into the code stream includes the two-dimensional information and three-dimensional information of the patch to be decoded. It can also be indicated in other ways. For example, the fourth identifier can also be used to indicate whether the two-dimensional information and three-dimensional information of the patch to be decoded have been encoded into the code stream. That is, when the first identifier is the first value, the fourth identifier of the patch to be decoded can be parsed from the code stream. When the fourth identifier is the eighth value, it can indicate that the two-dimensional information and three-dimensional information of the patch to be decoded are the same as the two-dimensional information and three-dimensional information of the reference patch of the patch to be decoded, and the code stream is not encoded, so the to-be decoded The 2D information and 3D information of the reference patch of the patch are used as the 2D information and 3D information of the patch to be decoded. When the fourth identifier is the ninth value, it can indicate that the two-dimensional information and three-dimensional information of the patch to be decoded are different from the two-dimensional information and three-dimensional information of the reference patch of the patch to be decoded, and both have been encoded into the code stream. Parse the two-dimensional information and three-dimensional information of the patch to be decoded from the code stream. The specific decoding method may be a decoding method that matches the encoding method, which will not be repeated here.
并且,对于通过用于指示3d_shift_tangent_axis是否已编入码流的标识(override_3d_shift_tangent_axis)、用于指示3d_shift_bitangent_axis是否已编入码流的标识(override_3d_shift_bitangent_axis)和用于指示3d_shift_normal_axis是否已编入码流的标识(override_3d_shift_normal_axis)来指示待解码patch的三维信息是否已编入码流,以及通过用于指示2d_shift_u是否已编入码流的标识(override_2d_shift_u)、用于指示2d_shift_v是否已编入码流的标识(override_2d_shift_v)、用于指示2d_size_u是否已编入码流的标识(override_2d_size_u)和用于指示2d_size_v是否已编入码流的标识(override_2d_size_v)来指示待解码patch的二维信息是否已编入码流的方式,与上述第二标识、第三标识和第四标识类似,此处不再赘述。In addition, the identification (override_3d_shift_tangent_axis) used to indicate whether 3d_shift_tangent_axis has been coded into the code stream, the flag (override_3d_shift_bitangent_axis) used to indicate whether the 3d_shift_bitangent_axis has been coded into the code stream, and the flag (override_shift_normal_axis) used to indicate whether 3d_shift_normal_axis has been coded into the code stream ) To indicate whether the three-dimensional information of the patch to be decoded has been encoded into the code stream, and the identifier used to indicate whether 2d_shift_u has been encoded into the code stream (override_2d_shift_u), the identifier used to indicate whether 2d_shift_v has been encoded into the code stream (override_2d_shift_v), The flag used to indicate whether 2d_size_u has been encoded into the code stream (override_2d_size_u) and the flag used to indicate whether 2d_size_v has been encoded into the code stream (override_2d_size_v) to indicate whether the two-dimensional information of the patch to be decoded has been encoded into the code stream, and The above-mentioned second identification, third identification and fourth identification are similar and will not be repeated here.
S1304:当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,从码流中解析待解码patch的第二标识。S1304: When the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame, analyze from the code stream The second identifier of the patch to be decoded.
由于当前点云帧中的非首个第一类patch的第二标识均是编入码流中的,所以当待解码patch为当前点云帧中的第n个patch,n大于1且大于当前点云帧的参考点云帧中的第一类patch的个数时,也即待解码patch为非首个第一类patch时,可以从码流中解析待解码patch的第二标识。Since the second identifiers of the non-first first-type patch in the current point cloud frame are all encoded into the bitstream, when the patch to be decoded is the nth patch in the current point cloud frame, n is greater than 1 and greater than the current When the point cloud frame refers to the number of the first-type patch in the point cloud frame, that is, when the patch to be decoded is not the first first-type patch, the second identifier of the patch to be decoded can be parsed from the code stream.
S1305:当第二标识为第四值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息;当第二标识为第五值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息。S1305: When the second identifier is the fourth value, determine the auxiliary information of the patch to be decoded according to the auxiliary information of the reference patch of the patch to be decoded; when the second identifier is the fifth value, parse the auxiliary information of the patch to be decoded from the code stream The auxiliary information includes the three-dimensional information of the patch to be decoded.
需要说明的是,S1305的内容可以参考上述S1303的内容,此处不再赘述。It should be noted that, for the content of S1305, reference may be made to the content of S1303, which is not repeated here.
S1306:根据待解码patch的辅助信息,重构待解码patch。S1306: According to the auxiliary information of the patch to be decoded, reconstruct the patch to be decoded.
需要说明的是,S1306的内容可以参考上述S1107的内容,此处不再赘述。It should be noted that the content of S1306 can refer to the content of S1107, which will not be repeated here.
在本申请实施例中,由于当前点云帧中的首个patch的第一标识是编入码流中的,所以当待解码点云块patch为当前点云帧中的首个patch时,从码流中解析待解码patch的第一标识,当第一标识为第一值时,表明待解码patch为首个第一类patch,此时可以从码流中解析待解码patch的第二标识。当待解码patch为当前点云帧中的第n个patch,n大于1且小于或 等于当前点云帧的参考点云帧中的第一类patch的个数时,表明待解码patch为非首个第一类patch,此时可以从码流中解析待解码patch的第二标识。其中,第二标识为第四值时,表明待解码patch的三维信息未编入码流。也即是,待解码patch的三维信息与待解码patch的参考patch的三维信息相同,此时可以将待解码patch的参考patch的三维信息作为待解码patch的三维信息,而不需要从码流中解析待解码patch的三维信息,可以简化解析码流的格式,减少码流的比特开销,从而提高解码的效率。In the embodiment of this application, since the first identifier of the first patch in the current point cloud frame is encoded into the code stream, when the point cloud block patch to be decoded is the first patch in the current point cloud frame, from The first identifier of the patch to be decoded is parsed in the code stream. When the first identifier is the first value, it indicates that the patch to be decoded is the first patch of the first type. At this time, the second identifier of the patch to be decoded can be parsed from the code stream. When the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and less than or equal to the number of the first type of patch in the reference point cloud frame of the current point cloud frame, it indicates that the patch to be decoded is not the first A first-type patch, at this time, the second identifier of the patch to be decoded can be parsed from the code stream. Wherein, when the second identifier is the fourth value, it indicates that the three-dimensional information of the patch to be decoded is not encoded into the code stream. That is, the three-dimensional information of the patch to be decoded is the same as the three-dimensional information of the reference patch of the patch to be decoded. At this time, the three-dimensional information of the reference patch of the patch to be decoded can be used as the three-dimensional information of the patch to be decoded, without the need to extract from the code stream Parsing the three-dimensional information of the patch to be decoded can simplify the format of the parsing code stream, reduce the bit overhead of the code stream, and improve the efficiency of decoding.
以下,对本申请实施例提供的第三种点云编码方法进行说明。需要说明的是,结合图1所示的点云译码系统,以及图2所示的编码器100的示意性框图,下文中的任一种点云编码方法可以是点云译码系统中的编码器100执行的,更具体地,可以是编码器100中的辅助信息编码模块109执行的。参见图14,该方法包括:In the following, the third point cloud coding method provided by the embodiment of the present application will be described. It should be noted that, in combination with the point cloud decoding system shown in FIG. 1 and the schematic block diagram of the
S1401:获取待编码patch的辅助信息和待编码patch的第一标识。S1401: Obtain auxiliary information of the patch to be encoded and the first identifier of the patch to be encoded.
需要说明的是,S1401的内容可以参考上述图9所示的实施例中的S901,本申请实施例对此不再赘述。It should be noted that, for the content of S1401, reference may be made to S901 in the embodiment shown in FIG. 9, which will not be repeated in this embodiment of the application.
S1402:当第一标识为第一值时,将待编码patch的第一标识编入码流。S1402: When the first identifier is the first value, encode the first identifier of the patch to be encoded into the code stream.
当第一标识为第一值时,表明待编码patch为第一类patch。在一种可能的实现方式中,第一类patch在当前点云组内的所有点云帧中都存在具有匹配关系的patch,且当前点云组内的第一类patch之间的二维信息、三维信息、旋转变换信息和法向坐标轴信息均相同。因此,为了减少码流的比特开销,进而提高编码的效率,当第一标识为第一值时,将待编码patch的第一标识编入码流,而不用将待编码patch的辅助信息编入码流。When the first identifier is the first value, it indicates that the patch to be encoded is the first type of patch. In a possible implementation, the first-type patch has patches with matching relationships in all point cloud frames in the current point cloud group, and two-dimensional information between the first-type patches in the current point cloud group , 3D information, rotation transformation information and normal coordinate axis information are all the same. Therefore, in order to reduce the bit overhead of the code stream and improve the coding efficiency, when the first identifier is the first value, the first identifier of the patch to be coded is encoded into the code stream instead of the auxiliary information of the patch to be coded. Code stream.
S1403:当第一标识为第二值或第三值时,将待编码patch的辅助信息和第一标识编入码流。S1403: When the first identifier is the second value or the third value, encode the auxiliary information of the patch to be encoded and the first identifier into the code stream.
基于S1402和S1403的描述可知,不管待编码patch的第一标识为第一值、第二值还是第三值,都需要将第一标识编入码流。在这种情况下,可以将当前点云帧中的所有patch的第一标识一起打包编入码流。当然,也可以各自打包编入码流。Based on the description of S1402 and S1403, it can be known that no matter whether the first identifier of the patch to be encoded is the first value, the second value or the third value, the first identifier needs to be encoded into the code stream. In this case, the first identifiers of all patches in the current point cloud frame can be packaged into the code stream. Of course, they can also be packaged into the code stream separately.
需要说明的是,本申请实施例与图9所示实施例中相同的内容不再赘述,可以参考图9所示实施例中的描述。It should be noted that the same content in the embodiment of the present application and the embodiment shown in FIG. 9 will not be repeated, and reference may be made to the description in the embodiment shown in FIG. 9.
在本申请实施例中,先获取待编码点云块patch的辅助信息和待编码patch的第一标识。由于当前点云组内的第一类patch之间的二维信息、旋转变换信息和法向坐标轴信息和三维信息均可以相同,所以当待编码patch第一标识为第一值时,表明待编码patch为第一类patch,此时,可以将待编码patch的第一标识编入码流,而不用将待编码patch的辅助信息编入码流,从而可以简化编入码流的格式。另外,由于第一标识的取值可以为第一值、第二值和第三值。不同的取值指示不同类型的patch。因此,可以通过第一标识将不同类型的patch进行区分,并且针对不同类型的patch,编入码流中的辅助信息包括的内容可以不相同,且对于第一类patch和第二类patch而言,只有部分辅助信息编入码流。这样,可以简化编入码流的格式,进一步减少码流的比特开销,从而提高编码的效率。In the embodiment of the present application, first obtain the auxiliary information of the patch to be encoded and the first identifier of the patch to be encoded. Since the two-dimensional information, rotation transformation information and normal coordinate axis information and three-dimensional information among the first-type patches in the current point cloud group can be the same, when the first identifier of the patch to be encoded is the first value, it indicates that the The coded patch is the first type of patch. At this time, the first identifier of the patch to be coded can be encoded into the code stream, instead of coding the auxiliary information of the patch to be coded into the code stream, so that the format of the code stream can be simplified. In addition, the value of the first identifier may be the first value, the second value, and the third value. Different values indicate different types of patches. Therefore, different types of patches can be distinguished by the first identifier, and for different types of patches, the content of the auxiliary information compiled into the code stream may be different, and for the first type of patch and the second type of patch , Only part of the auxiliary information is compiled into the code stream. In this way, the format of the code stream can be simplified, and the bit overhead of the code stream can be further reduced, thereby improving the coding efficiency.
接下来对基于上述图14所示的实施例的点云编码方法对应的点云解码方法进行说明。需要说明的是,结合图1所示的点云译码系统,以及图6所示的解码器200的示意性框图,下 文中的任一种点云解码方法可以是点云译码系统中的解码器200执行的,更具体地,可以是解码器200中的辅助信息解码模块204执行的。参见图15,该解码方法包括:Next, the point cloud decoding method corresponding to the point cloud encoding method based on the embodiment shown in FIG. 14 will be described. It should be noted that, in combination with the point cloud decoding system shown in FIG. 1 and the schematic block diagram of the
S1501:从码流中解析待解码patch的第一标识。S1501: Parse the first identifier of the patch to be decoded from the code stream.
由于当前点云帧中的所有patch的第一标识可以各自打包并编入码流,也可以打包在一起并编入码流。因此,对于各自打包并编入码流的方式而言,如果待解码patch为当前点云帧中的首个patch,那么,可以从码流中解析待解码patch的第一标识。当然,对于非首个patch,也可以从码流中解析待解码patch的第一标识。也即是,可以依次解析当前点云帧中待解码的每个patch的第一标识。对于打包在一起并编入码流的方式而言,如果待解码patch为当前点云帧中的首个patch,那么,可以从码流中解析当前点云帧包括的多个patch的第一标识,其中解析出的多个第一标识中包括待解码patch的第一标识。也即是,通过一次解析即可得到当前点云帧包括的多个patch的第一标识,而无需分多次进行解析。Because the first identifiers of all patches in the current point cloud frame can be individually packaged and compiled into a code stream, or they can be packaged together and compiled into a code stream. Therefore, for the respective methods of packaging and encoding into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identifier of the patch to be decoded can be parsed from the code stream. Of course, for the non-first patch, the first identifier of the patch to be decoded can also be parsed from the code stream. That is, the first identifier of each patch to be decoded in the current point cloud frame can be analyzed sequentially. For the method of packing together and compiling into the code stream, if the patch to be decoded is the first patch in the current point cloud frame, then the first identification of multiple patches included in the current point cloud frame can be parsed from the code stream , Wherein the multiple first identifiers parsed include the first identifier of the patch to be decoded. That is, the first identifiers of multiple patches included in the current point cloud frame can be obtained through one analysis, without the need for multiple analysis.
作为一种示例,可以采用与编码端匹配的方法从码流中解析待解码patch的第一标识。例如可以采用定长解码方式从码流中解析待解码patch的第一标识。As an example, a method of matching with the encoding end may be used to parse the first identifier of the patch to be decoded from the code stream. For example, a fixed-length decoding method can be used to parse the first identifier of the patch to be decoded from the code stream.
S1502:当第一标识为第一值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息,该待解码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。S1502: When the first identifier is the first value, determine the auxiliary information of the patch to be decoded according to the auxiliary information of the reference patch of the patch to be decoded. The auxiliary information of the patch to be decoded includes 2D information, 3D information, rotation transformation information, and method. Axis information.
由于第一类patch在编码的过程中没有将辅助信息编入码流,当第一标识为第一值时,也即待解码patch为第一类patch时,可以根据待解码patch的参考patch的辅助信息,获取待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息。Because the first type of patch does not encode auxiliary information into the code stream during the encoding process, when the first identifier is the first value, that is, when the patch to be decoded is the first type of patch, the reference patch of the patch to be decoded can be Auxiliary information to obtain 2D information, 3D information, rotation transformation information and normal coordinate axis information of the patch to be decoded.
作为一种示例,可以先从码流中解析出当前点云帧的参考帧的标识信息,从而根据该参考帧的标识信息确定当前点云帧的参考帧,然后从当前点云帧的参考帧中获取待解码patch的参考patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息,并将参考patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息作为待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息。其中,当前点云帧的参考帧也可以存在对应的参考帧,也即当前点云帧的参考帧中的参考patch也存在对应的参考patch,为了便于描述,将当前点云帧的参考帧记为第一参考帧,将当前点云帧的参考帧对应的参考帧记为第二参考帧,这样,第一参考帧中的参考patch的辅助信息,可以根据第二参考帧中的对应的参考patch的辅助信息确定。通过这样的方式,可以根据当前点云帧的参考帧、当前点云帧的参考帧对应的参考帧等中逐级获取待解码patch的辅助信息。另外,对于待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息,还可以从已解码的点云中获取位置与待解码patch在当前点云帧中位置相同的patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息,并将获取的二维信息、三维信息、旋转变换信息和法向坐标轴信息作为待解码patch的二维信息、旋转变换信息和法向坐标轴信息。As an example, the identification information of the reference frame of the current point cloud frame can be parsed from the code stream, so as to determine the reference frame of the current point cloud frame according to the identification information of the reference frame, and then from the reference frame of the current point cloud frame Obtain the 2D information, 3D information, rotation transformation information and normal coordinate axis information of the reference patch of the patch to be decoded, and use the 2D information, 3D information, rotation transformation information and normal coordinate axis information of the reference patch as the information to be decoded Patch's two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information. Among them, the reference frame of the current point cloud frame may also have a corresponding reference frame, that is, the reference patch in the reference frame of the current point cloud frame also has a corresponding reference patch. For ease of description, the reference frame of the current point cloud frame is recorded Is the first reference frame, and the reference frame corresponding to the reference frame of the current point cloud frame is marked as the second reference frame. In this way, the auxiliary information of the reference patch in the first reference frame can be based on the corresponding reference in the second reference frame The auxiliary information of the patch is determined. In this way, the auxiliary information of the patch to be decoded can be obtained step by step according to the reference frame of the current point cloud frame, the reference frame corresponding to the reference frame of the current point cloud frame, etc. In addition, for the two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information of the patch to be decoded, the position of the patch whose position is the same as that of the patch to be decoded in the current point cloud frame can also be obtained from the decoded point cloud. Two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information, and the obtained two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information are used as the two-dimensional information, rotation transformation information and information of the patch to be decoded. Normal axis information.
当前点云组内的每个点云帧中的patch按照图8所示的排列方式进行编码时,待解码patch的参考patch可以为当前点云帧的参考帧中位置与待解码patch在当前点云帧中的位置相同的patch。When the patch in each point cloud frame in the current point cloud group is encoded according to the arrangement shown in Figure 8, the reference patch of the patch to be decoded can be the position in the reference frame of the current point cloud frame and the patch to be decoded at the current point Patches with the same position in the cloud frame.
S1503:当第一标识为第二值时,从码流中解析待解码patch的辅助信息,该待解码patch的辅助信息包括二维信息、三维信息和待解码patch的参考patch的标识信息。S1503: When the first identifier is the second value, parse the auxiliary information of the patch to be decoded from the code stream. The auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be decoded.
需要说明的是,S1503的内容可以参考上述图11所示的实施例中的S1105,本申请实施 例对此不再赘述。It should be noted that, for the content of S1503, reference may be made to S1105 in the embodiment shown in FIG. 11, which will not be repeated in this embodiment of the application.
其中,由于第二类patch在编码的过程中编入码流的辅助信息包括二维信息、三维信息和参考patch的标识信息,但不包括旋转变换信息和法向坐标轴信息,所以,当待解码patch为第二类patch时,从码流中解析的辅助信息包括待解码patch的二维信息、三维信息和待解码patch的参考patch的标识信息,但不包括待解码patch的旋转变换信息和法向坐标轴信息。此时,还可以根据待解码patch的参考patch的标识信息,获取待解码patch的旋转变换信息和法向坐标轴信息。Among them, because the auxiliary information of the second type of patch that is incorporated into the code stream during the encoding process includes two-dimensional information, three-dimensional information, and identification information of the reference patch, but does not include rotation transformation information and normal coordinate axis information, so when When the decoded patch is the second type of patch, the auxiliary information parsed from the code stream includes the two-dimensional information, three-dimensional information of the patch to be decoded, and the identification information of the reference patch of the patch to be decoded, but does not include the rotation transformation information and information of the patch to be decoded. Normal axis information. At this time, the rotation transformation information and normal coordinate axis information of the patch to be decoded can also be obtained according to the identification information of the reference patch of the patch to be decoded.
S1504:当第一标识为第三值时,从码流中解析待解码patch的辅助信息,该待解码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。S1504: When the first identifier is the third value, parse the auxiliary information of the patch to be decoded from the code stream. The auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
需要说明的是,S1504的内容可以参考上述图11所示的实施例中的S1106,本申请实施例对此不再赘述。It should be noted that, for the content of S1504, reference may be made to S1106 in the embodiment shown in FIG. 11, which is not repeated in this embodiment of the application.
S1505:根据待解码patch的辅助信息,重构待解码patch。S1505: According to the auxiliary information of the patch to be decoded, reconstruct the patch to be decoded.
需要说明的是,S1505的内容可以参考上述图11所示的实施例中的S1107,本申请实施例对此不再赘述。It should be noted that, for the content of S1505, reference may be made to S1107 in the embodiment shown in FIG. 11, which is not repeated in this embodiment of the application.
在本申请实施例中,先从码流中解析待解码点云块patch的第一标识,当第一标识为第一值时,表明待解码patch为第一类patch,码流中不包括待解码patch的辅助信息,此时可以根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息,该待解码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。当第一标识为第二值时,表明待解码patch为第二类patch,此时可以从码流中解析所述待解码patch的辅助信息,该待解码patch的辅助信息包括二维信息、三维信息和待解码patch的参考patch的标识信息。当第一标识为第三值时,表明待解码patch为第三类patch,此时从码流中解析待解码patch的辅助信息,该待解码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。也即是,对于第一类patch而言只需从码流中解析第一标识,其他的辅助信息可以推导或者获取得到,对于第二类patch而言只需要从码流中解析部分辅助信息,其他的辅助信息也可以推导或者获取得到。这样,可以简化解析码流的格式,减少码流的比特开销,从而提高解码的效率。In this embodiment of the application, the first identifier of the point cloud block patch to be decoded is first parsed from the code stream. When the first identifier is the first value, it indicates that the patch to be decoded is the first type of patch, and the code stream does not include the Decode the auxiliary information of the patch. At this time, the auxiliary information of the patch to be decoded can be determined according to the auxiliary information of the reference patch of the patch to be decoded. The auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, rotation transformation information and normal coordinate axis information. When the first identifier is the second value, it indicates that the patch to be decoded is a second type of patch. At this time, the auxiliary information of the patch to be decoded can be parsed from the code stream. The auxiliary information of the patch to be decoded includes two-dimensional information and three-dimensional information. Information and identification information of the reference patch of the patch to be decoded. When the first identifier is the third value, it indicates that the patch to be decoded is of the third type. At this time, the auxiliary information of the patch to be decoded is parsed from the code stream. The auxiliary information of the patch to be decoded includes two-dimensional information, three-dimensional information, and rotation. Transformation information and normal axis information. That is, for the first type of patch, only the first identifier needs to be parsed from the code stream, and other auxiliary information can be derived or obtained. For the second type of patch, only part of the auxiliary information needs to be parsed from the code stream. Other auxiliary information can also be derived or obtained. In this way, the format of the parsing code stream can be simplified, the bit overhead of the code stream can be reduced, and the decoding efficiency can be improved.
参见图16,图16为本申请实施例提供的第一种点云编码装置的结构示意图。如图16所示,该编码装置1600可以包括:Refer to FIG. 16, which is a schematic structural diagram of a first point cloud encoding device provided by an embodiment of the application. As shown in FIG. 16, the
patch信息获取模块1601,用于获取待编码点云块patch的辅助信息和待编码patch的第一标识;The patch
辅助信息编码模块1602,用于当第一标识为第一值时,将待编码patch的辅助信息和第一标识编入码流,待编码patch为当前点云帧中的首个patch;或The auxiliary
辅助信息编码模块1602,用于当第一标识为第一值时,将待编码patch的辅助信息编入码流,待编码patch为当前点云帧中的非首个patch;The auxiliary
其中第一标识为第一值,以指示待编码patch为第一类patch,待编码patch的辅助信息包括三维信息。The first identifier is a first value to indicate that the patch to be encoded is a first type of patch, and the auxiliary information of the patch to be encoded includes three-dimensional information.
其中,当前点云帧为当前组中的第K个点云帧,K为大于或等于3的整数。Among them, the current point cloud frame is the Kth point cloud frame in the current group, and K is an integer greater than or equal to 3.
其中,辅助信息编码模块1602还用于:Among them, the auxiliary
当第一标识为第二值或第三值时,将待编码patch的辅助信息和第一标识编入码流;When the first identifier is the second value or the third value, encode the auxiliary information of the patch to be encoded and the first identifier into the code stream;
其中第一标识为第二值,以指示待编码patch为第二类patch,待编码patch的辅助信息包括二维信息、三维信息和待编码patch的参考patch的标识信息;The first identifier is the second value to indicate that the patch to be encoded is a second type of patch, and the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded;
其中第一标识为第三值,以指示待编码patch为第三类patch,待编码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。The first identifier is a third value to indicate that the patch to be encoded is a third type of patch. The auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
其中,辅助信息编码模块1602还用于:Among them, the auxiliary
将当前点云帧包括的多个patch的第一标识编入码流,该多个patch的第一标识中包括待编码patch的第一标识,该多个patch的第一标识中除待编码patch的第一标识之外剩余的第一标识为第二值或第三值。The first identifiers of the multiple patches included in the current point cloud frame are encoded into the code stream, the first identifiers of the multiple patches include the first identifiers of the patch to be encoded, and the first identifiers of the multiple patches are excluding the patch to be encoded The remaining first identifier besides the first identifier is the second value or the third value.
其中,第一值、第二值和第三值分别是二进制的10、11和00,Among them, the first value, the second value and the third value are binary 10, 11 and 00 respectively,
或者,第一值、第二值和第三值分别是二进制的11、10和00。Or, the first value, the second value, and the third value are 11, 10, and 00 in binary, respectively.
其中,待编码patch的第一标识为第三值,待编码patch为当前点云帧中的首个patch。The first identifier of the patch to be encoded is the third value, and the patch to be encoded is the first patch in the current point cloud frame.
其中,待编码patch的参考patch包括于当前点云帧的参考帧中。Wherein, the reference patch of the patch to be encoded is included in the reference frame of the current point cloud frame.
其中,第一类patch为当前组中的全局匹配patch,第二类patch为当前组中的局部匹配patch,第三类patch为当前组中的非匹配patch。Among them, the first type of patch is a global matching patch in the current group, the second type of patch is a local matching patch in the current group, and the third type of patch is a non-matching patch in the current group.
需要说明的是,patch信息获取模块1601用于执行图9所示实施例的步骤S901的相关内容,辅助信息编码模块1602用于执行图9所示实施例的步骤S902和步骤S903的相关内容。作为一个示例,patch信息获取模块1601可以对应于图2中的点云块信息生成模块101和打包模块102的组合,辅助信息编码模块1602可以对应于图2中的辅助信息编码模块109,换言之,patch信息获取模块1601的功能可以由图2中的点云块信息生成模块101和打包模块102实现,辅助信息生成模块1602的功能可以由图2中的辅助信息编码模块109来实现。在一个示例中,点云块信息生成模块101用于获取待编码patch的三维信息、法向坐标轴信息和第一标识等,打包模块102用于获取待编码patch的旋转变换信息、参考patch的标识信息和二维信息等。当然本申请不限于此。其他细节可以参考现有技术或上文中对图2所示的编码器的原理的解释,此处不再赘述。It should be noted that the patch
参见图17,图17为本申请实施例提供的第一种点云解码装置的结构示意图。如图17所示,该解码装置1700可以包括:Referring to FIG. 17, FIG. 17 is a schematic structural diagram of the first point cloud decoding apparatus provided by an embodiment of the application. As shown in FIG. 17, the
辅助信息解码模块1701,用于当待解码点云块patch为当前点云帧中的首个patch时,从码流中解析待解码patch的第一标识;The auxiliary
辅助信息解码模块1701,还用于当第一标识为第一值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息;The auxiliary
辅助信息解码模块1701,还用于当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息;The auxiliary
重构模块1702,用于根据待解码patch的辅助信息,重构待解码patch。The
其中,当前点云帧为当前组中的第K个点云帧,K为大于或等于3的整数。Among them, the current point cloud frame is the Kth point cloud frame in the current group, and K is an integer greater than or equal to 3.
其中,辅助信息解码模块1701还用于:Among them, the auxiliary
当待解码patch为当前点云帧中的第n个patch,n大于1且大于当前点云帧的参考点云 帧中的第一类patch的个数时,从码流中解析待解码patch的第一标识;When the patch to be decoded is the nth patch in the current point cloud frame, and n is greater than 1 and greater than the number of the first type of patch in the reference point cloud frame of the current point cloud frame, parse the patch to be decoded from the code stream First logo
当第一标识为第二值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的二维信息、三维信息和待解码patch的参考patch的标识信息;When the first identifier is the second value, parse the auxiliary information of the patch to be decoded from the code stream, and the auxiliary information includes the two-dimensional information, three-dimensional information of the patch to be decoded, and identification information of the reference patch of the patch to be decoded;
当第一标识为第三值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的二维信息、三维信息、旋转变换信息和法向坐标轴信息。When the first identifier is the third value, the auxiliary information of the patch to be decoded is parsed from the code stream. The auxiliary information includes the two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information of the patch to be decoded.
其中,辅助信息解码模块1701还用于:Among them, the auxiliary
当待解码patch为当前点云帧中的首个patch时,从码流中解析当前点云帧包括的多个patch的第一标识,其中解析出的多个第一标识中包括待解码patch的第一标识,该多个第一标识中除待解码patch的第一标识之外剩余的第一标识为第二值或第三值。When the patch to be decoded is the first patch in the current point cloud frame, the first identifiers of multiple patches included in the current point cloud frame are parsed from the code stream, and the multiple first identifiers parsed include the patch to be decoded A first identifier, and the remaining first identifiers among the plurality of first identifiers except the first identifier of the patch to be decoded are the second value or the third value.
其中,第一值、第二值和第三值分别是二进制的10、11和00,Among them, the first value, the second value and the third value are binary 10, 11 and 00 respectively,
或者,第一值、第二值和第三值分别是二进制的11、10和00。Or, the first value, the second value, and the third value are 11, 10, and 00 in binary, respectively.
其中,当待解码patch为当前点云帧中的首个patch,且第一标识为第三值时,当前点云帧为首个点云帧。Wherein, when the patch to be decoded is the first patch in the current point cloud frame, and the first identifier is the third value, the current point cloud frame is the first point cloud frame.
其中,当第一标识为第一值时,辅助信息解码模块1701还用于:Wherein, when the first identifier is the first value, the auxiliary
根据待解码patch的参考patch的辅助信息,获取待解码patch的二维信息、旋转变换信息和法向坐标轴信息;Obtain the two-dimensional information, rotation transformation information and normal coordinate axis information of the patch to be decoded according to the auxiliary information of the reference patch of the patch to be decoded;
重构模块1702还用于:The
根据待解码patch的二维信息、三维信息、法向坐标轴信息和旋转变换信息重构待解码patch。According to the two-dimensional information, three-dimensional information, normal coordinate axis information and rotation transformation information of the patch to be decoded, the patch to be decoded is reconstructed.
其中,当第一标识为第二值时,辅助信息解码模块1701还用于:Wherein, when the first identifier is the second value, the auxiliary
根据待解码patch的参考patch的标识信息,获取待解码patch的旋转变换信息和法向坐标轴信息;Obtain the rotation transformation information and normal coordinate axis information of the patch to be decoded according to the identification information of the reference patch of the patch to be decoded;
重构模块1702还用于:The
根据待解码patch的二维信息、三维信息、法向坐标轴信息和旋转变换信息重构待解码patch。According to the two-dimensional information, three-dimensional information, normal coordinate axis information and rotation transformation information of the patch to be decoded, the patch to be decoded is reconstructed.
其中,待解码patch的参考patch包括于当前点云帧的参考帧中。The reference patch of the patch to be decoded is included in the reference frame of the current point cloud frame.
需要说明的是,辅助信息解码模块1701用于执行图11所示实施例的步骤S1101-S1106的相关内容,重构模块1702用于执行图11所示实施例的步骤S1107的相关内容。作为一个示例,图17中的辅助信息解码模块1701对应于图6中的辅助信息解码模块204,图17中的重构模块1702对应于图5中的点云的几何信息重构模块206,换言之,辅助信息解码模块1701的功能可以由图6中的辅助信息解码模块204来实现,重构模块1702的功能可以由图6中的点云的几何信息重构模块206来实现。当然本申请不限于此。其他细节可以参考现有技术或上文中对图6所示的解码器的原理的解释,此处不再赘述。It should be noted that the auxiliary
参见图18,图18为本申请实施例提供的第一种点云编码装置的结构示意图。如图18所示,该编码装置1800可以包括:Referring to FIG. 18, FIG. 18 is a schematic structural diagram of the first point cloud encoding device provided by an embodiment of the application. As shown in FIG. 18, the
patch信息获取模块1801,用于获取待编码点云块patch的辅助信息和待编码patch的第一标识;The patch
辅助信息编码模块1802,用于当第一标识为第一值时,将待编码patch的辅助信息、第 一标识和待编码patch的第二标识编入码流,待编码patch为当前点云帧中的首个patch;或The auxiliary
辅助信息编码模块1802,用于当第一标识为第一值时,将待编码patch的辅助信息和待编码patch的第二标识编入码流,待编码patch为当前点云帧中的非首个patch;The auxiliary
其中第一标识为第一值,以指示待编码patch为第一类patch;The first identifier is the first value to indicate that the patch to be encoded is the first type of patch;
其中第二标识为第四值,以指示待编码patch的三维信息未编入码流;The second identifier is a fourth value to indicate that the three-dimensional information of the patch to be encoded is not encoded into the code stream;
或者,第二标识为第五值,以指示待编码patch的三维信息已编入码流,待编码patch的辅助信息包括三维信息。Alternatively, the second identifier is a fifth value to indicate that the three-dimensional information of the patch to be encoded has been encoded into the code stream, and the auxiliary information of the patch to be encoded includes three-dimensional information.
需要说明的是,patch信息获取模块1801用于执行图12所示实施例的步骤S1201的相关内容,辅助信息编码模块1802用于执行图12所示实施例的步骤S1202的相关内容。作为一个示例,patch信息获取模块1801可以对应于图2中的点云块信息生成模块101和打包模块102的组合,辅助信息编码模块1802可以对应于图2中的辅助信息编码模块109,换言之,patch信息获取模块1801的功能可以由图2中的点云块信息生成模块101和打包模块102实现,辅助信息生成模块1802的功能可以由图2中的辅助信息编码模块109来实现。在一个示例中,点云块信息生成模块101用于获取待编码patch的三维信息、法向坐标轴信息、第一标识和第二标识等,打包模块102用于获取待编码patch的旋转变换信息、参考patch的标识信息和二维信息等。当然本申请不限于此。其他细节可以参考现有技术或上文中对图2所示的编码器的原理的解释,此处不再赘述。It should be noted that the patch
参见图19,图19为本申请实施例提供的第一种点云解码装置的结构示意图。如图19所示,该解码装置1900可以包括:Refer to FIG. 19, which is a schematic structural diagram of a first point cloud decoding apparatus provided by an embodiment of this application. As shown in FIG. 19, the
辅助信息解码模块1901,用于当待解码点云块patch为当前点云帧中的首个patch时,从码流中解析待解码patch的第一标识;The auxiliary
辅助信息解码模块1901,还用于当第一标识为第一值时,从码流中解析待解码patch的第二标识;The auxiliary
辅助信息解码模块1901,还用于当第二标识为第四值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息;当第二标识为第五值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息;The auxiliary
辅助信息解码模块1901,还用于当待解码patch为当前点云帧中的第n个patch,n大于1且小于或等于当前点云帧的参考点云帧中的第一类patch的个数时,从码流中解析待解码patch的第二标识;The auxiliary
辅助信息解码模块1901,还用于当第二标识为第四值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息;当第二标识为第五值时,从码流中解析待解码patch的辅助信息,该辅助信息包括待解码patch的三维信息;The auxiliary
重构模块1902,用于根据待解码patch的辅助信息,重构待解码patch。The
需要说明的是,辅助信息解码模块1901用于执行图13所示实施例的步骤S1301-S1305的相关内容,重构模块1902用于执行图13所示实施例的步骤S1306的相关内容。作为一个示例,图19中的辅助信息解码模块1901对应于图6中的辅助信息解码模块204,图19中的重构模块1902对应于图5中的点云的几何信息重构模块206,换言之,辅助信息解码模块1901的功能可以由图6中的辅助信息解码模块204来实现,重构模块1902的功能可以由图6中的 点云的几何信息重构模块206来实现。当然本申请不限于此。其他细节可以参考现有技术或上文中对图6所示的解码器的原理的解释,此处不再赘述。It should be noted that the auxiliary
参见图20,图20为本申请实施例提供的第一种点云编码装置的结构示意图。如图20所示,该编码装置2000可以包括:Referring to FIG. 20, FIG. 20 is a schematic structural diagram of the first point cloud encoding device provided by an embodiment of the application. As shown in FIG. 20, the
patch信息获取模块2001,用于获取待编码点云块patch的辅助信息和待编码patch的第一标识;The patch
辅助信息编码模块2002,用于当第一标识为第一值时,将待编码patch的第一标识编入码流;The auxiliary
辅助信息编码模块2002,还用于当第一标识为第二值或第三值时,将待编码patch的辅助信息和第一标识编入码流;The auxiliary
其中第一标识为第一值,以指示待编码patch为第一类patch;The first identifier is the first value to indicate that the patch to be encoded is the first type of patch;
其中第一标识为第二值,以指示待编码patch为第二类patch,待编码patch的辅助信息包括二维信息、三维信息和待编码patch的参考patch的标识信息;The first identifier is the second value to indicate that the patch to be encoded is a second type of patch, and the auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, and identification information of the reference patch of the patch to be encoded;
其中第一标识为第三值,以指示待编码patch为第三类patch,待编码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息。The first identifier is a third value to indicate that the patch to be encoded is a third type of patch. The auxiliary information of the patch to be encoded includes two-dimensional information, three-dimensional information, rotation transformation information, and normal coordinate axis information.
需要说明的是,patch信息获取模块2001用于执行图14所示实施例的步骤S1401的相关内容,辅助信息编码模块2002用于执行图14所示实施例的步骤S1402和步骤S1403的相关内容。作为一个示例,patch信息获取模块2001可以对应于图2中的点云块信息生成模块101和打包模块102的组合,辅助信息编码模块2002可以对应于图2中的辅助信息编码模块109,换言之,patch信息获取模块2001的功能可以由图2中的点云块信息生成模块101和打包模块102实现,辅助信息生成模块2002的功能可以由图2中的辅助信息编码模块109来实现。在一个示例中,点云块信息生成模块101用于获取待编码patch的三维信息、法向坐标轴信息和第一标识等,打包模块102用于获取待编码patch的旋转变换信息、参考patch的标识信息和二维信息等。当然本申请不限于此。其他细节可以参考现有技术或上文中对图2所示的编码器的原理的解释,此处不再赘述。It should be noted that the patch
参见图21,图21为本申请实施例提供的第一种点云解码装置的结构示意图。如图21所示,该解码装置2100可以包括:Referring to FIG. 21, FIG. 21 is a schematic structural diagram of a first point cloud decoding apparatus provided by an embodiment of this application. As shown in FIG. 21, the
辅助信息解码模块2101,用于从码流中解析待解码点云块patch的第一标识;The auxiliary
辅助信息解码模块2101,还用于当第一标识为第一值时,根据待解码patch的参考patch的辅助信息确定待解码patch的辅助信息,待解码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息;The auxiliary
辅助信息解码模块2101,还用于当第一标识为第二值时,从码流中解析待解码patch的辅助信息,待解码patch的辅助信息包括二维信息、三维信息和待解码patch的参考patch的标识信息;The auxiliary
辅助信息解码模块2101,还用于当第一标识为第三值时,从码流中解析待解码patch的辅助信息,待解码patch的辅助信息包括二维信息、三维信息、旋转变换信息和法向坐标轴信息;The auxiliary
重构模块2102,用于根据待解码patch的辅助信息,重构待解码patch。The
其中,当第一标识为第二值时,辅助信息解码模块2101还用于:Wherein, when the first identifier is the second value, the auxiliary
根据待解码patch的参考patch的标识信息,获取待解码patch的旋转变换信息和法向坐标轴信息;Obtain the rotation transformation information and normal coordinate axis information of the patch to be decoded according to the identification information of the reference patch of the patch to be decoded;
重构模块2102还用于:The
根据待解码patch的二维信息、三维信息、法向坐标轴信息和旋转变换信息重构待解码patch。According to the two-dimensional information, three-dimensional information, normal coordinate axis information and rotation transformation information of the patch to be decoded, the patch to be decoded is reconstructed.
需要说明的是,辅助信息解码模块2101用于执行图15所示实施例的步骤S1501-S1504的相关内容,重构模块2102用于执行图15所示实施例的步骤S1506的相关内容。作为一个示例,图21中的辅助信息解码模块2101对应于图6中的辅助信息解码模块204,图21中的重构模块2102对应于图5中的点云的几何信息重构模块206,换言之,辅助信息解码模块2101的功能可以由图6中的辅助信息解码模块204来实现,重构模块2102的功能可以由图6中的点云的几何信息重构模块206来实现。当然本申请不限于此。其他细节可以参考现有技术或上文中对图6所示的解码器的原理的解释,此处不再赘述。It should be noted that the auxiliary
图22为用于本申请实施例的译码装置2200的一种实现方式的示意性框图。其中,获取装置2200可以包括处理器2201、存储器2202和总线系统2203。其中,处理器2201和存储器2202通过总线系统2203相连,该存储器2202用于存储指令,该处理器2201用于执行该存储器2202存储的指令,以执行本申请描述的各种点云编码或解码方法,尤其是基于当前图像块的块尺寸对当前图像块进行滤波的方法。为避免重复,这里不再详细描述。FIG. 22 is a schematic block diagram of an implementation manner of a
在本申请实施例中,该处理器2201可以是中央处理单元(central processing unit,CPU),该处理器2201还可以是其他通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。In this embodiment of the application, the
该存储器2202可以包括ROM设备或者RAM设备。任何其他适宜类型的存储设备也可以用作存储器2202。存储器2202可以包括由处理器2201使用总线2203访问的代码和数据22021。存储器2202可以进一步包括操作系统22023和应用程序22022,该应用程序22022包括允许处理器2201执行本申请描述的点云编码或解码方法(尤其是本申请描述的点云的编解码方法)的至少一个程序。例如,应用程序22022可以包括应用1至N,其进一步包括执行在本申请描述的点云编码或解码方法的点云编码或解码应用(简称点云译码应用)。The
该总线系统2203除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统2203。In addition to the data bus, the
可选的,编码装置2200还可以包括一个或多个输出设备,诸如显示器2204。在一个示例中,显示器2204可以是触感显示器,其将显示器与可操作地感测触摸输入的触感单元合并。显示器2204可以经由总线2203连接到处理器2201。Optionally, the
需要指出的是,译码装置2200可以执行本申请中的点云的编码方法,也可执行本申请中的点云的解码方法。It should be pointed out that the
本领域技术人员能够领会,结合本文公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明 性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,根据通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本申请中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。Those skilled in the art can understand that the functions described in conjunction with the various illustrative logical blocks, modules, and algorithm steps disclosed herein can be implemented by hardware, software, firmware, or any combination thereof. If implemented in software, the functions described by various illustrative logical blocks, modules, and steps can be stored or transmitted as one or more instructions or codes on a computer-readable medium and executed by a hardware-based processing unit. The computer-readable medium may include a computer-readable storage medium, which corresponds to a tangible medium, such as a data storage medium, or a communication medium that includes any medium that facilitates the transfer of a computer program from one place to another (for example, according to a communication protocol) . In this manner, computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media, or (2) communication media, such as signals or carrier waves. Data storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and/or data structures for implementing the techniques described in this application. The computer program product may include a computer-readable medium.
作为实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、DSL或例如红外线、无线电和微波等无线技术包含在媒体的定义中。但是,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、DVD和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。By way of example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage devices, magnetic disk storage devices or other magnetic storage devices, flash memory, or structures that can be used to store instructions or data Any other media that can be accessed by the computer in the form of desired program code. And, any connection is properly termed a computer-readable medium. For example, if you use coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave to transmit instructions from a website, server, or other remote source, then the coaxial cable Wire, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwave are included in the definition of media. However, it should be understood that the computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other temporary media, but are actually directed to non-transitory tangible storage media. As used herein, magnetic disks and optical disks include compact disks (CDs), laser disks, optical disks, DVDs, and Blu-ray disks, where disks usually reproduce data magnetically, and optical disks use lasers to reproduce data optically. Combinations of the above should also be included in the scope of computer-readable media.
可通过例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的各种说明性逻辑框、模块、和步骤所描述的功能可以提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。在一种示例下,编码器100及解码器200中的各种说明性逻辑框、单元、模块可以理解为对应的电路器件或逻辑元件。It can be processed by one or more digital signal processors (DSP), general-purpose microprocessors, application-specific integrated circuits (ASIC), field programmable logic arrays (FPGA), or other equivalent integrated or discrete logic circuits, for example To execute instructions. Therefore, the term "processor" as used herein may refer to any of the foregoing structure or any other structure suitable for implementing the techniques described herein. In addition, in some aspects, the functions described by the various illustrative logical blocks, modules, and steps described herein may be provided in dedicated hardware and/or software modules configured for encoding and decoding, or combined Into the combined codec. Moreover, the technology may be fully implemented in one or more circuits or logic elements. In an example, various illustrative logical blocks, units, and modules in the
本申请的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本申请中描述各种组件、模块或单元是为了强调用于执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元(包含如上文所描述的一或多个处理器)来提供。The technology of this application can be implemented in a variety of devices or devices, including wireless handsets, integrated circuits (ICs), or a set of ICs (for example, chipsets). Various components, modules, or units are described in this application to emphasize the functional aspects of the device for performing the disclosed technology, but they do not necessarily need to be implemented by different hardware units. In fact, as described above, various units can be combined with appropriate software and/or firmware in the codec hardware unit, or by interoperating hardware units (including one or more processors as described above). provide.
以上所述,仅为本申请示例性的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。The above are only exemplary specific implementations of this application, but the protection scope of this application is not limited thereto. Any person skilled in the art can easily think of changes or changes within the technical scope disclosed in this application. Replacement shall be covered within the scope of protection of this application. Therefore, the protection scope of this application should be subject to the protection scope of the claims.
Claims (46)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910364032.2 | 2019-04-30 | ||
| CN201910364032.2A CN111866484B (en) | 2019-04-30 | 2019-04-30 | Point cloud encoding method, point cloud decoding method, device and storage medium |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2020220941A1 true WO2020220941A1 (en) | 2020-11-05 |
Family
ID=72965202
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2020/083492 Ceased WO2020220941A1 (en) | 2019-04-30 | 2020-04-07 | Point cloud encoding method, point cloud decoding method, apparatuses, and storage medium |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN111866484B (en) |
| WO (1) | WO2020220941A1 (en) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7143115B2 (en) * | 2003-04-15 | 2006-11-28 | Pocket Soft, Inc. | Method and apparatus for finding differences between two computer files efficiently in linear time and for using these differences to update computer files |
| CN104298971A (en) * | 2014-09-28 | 2015-01-21 | 北京理工大学 | Method for identifying objects in 3D point cloud data |
| US20180053040A1 (en) * | 2016-08-19 | 2018-02-22 | Umm Al-Qura University | System and method for 3d local surface matching |
| WO2018102190A1 (en) * | 2016-11-29 | 2018-06-07 | Blackmore Sensors and Analytics Inc. | Method and system for classification of an object in a point cloud data set |
| US20190087979A1 (en) * | 2017-09-18 | 2019-03-21 | Apple Inc. | Point cloud compression |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1110957C (en) * | 1995-07-21 | 2003-06-04 | 大宇电子株式会社 | Method for dividing and estimating motion of moving objective by layering structure of motion model |
| US20130095920A1 (en) * | 2011-10-13 | 2013-04-18 | Microsoft Corporation | Generating free viewpoint video using stereo imaging |
| CN103916665B (en) * | 2013-01-07 | 2018-05-29 | 华为技术有限公司 | A kind of decoding of image, coding method and device |
| CN103218817B (en) * | 2013-04-19 | 2015-11-18 | 深圳先进技术研究院 | The dividing method of plant organ point cloud and system |
| CN103942757B (en) * | 2014-03-19 | 2017-08-29 | 王斌君 | Images fragment matching process and system based on content characteristic |
| CN105491414B (en) * | 2015-11-19 | 2017-05-17 | 深圳市鹰硕技术有限公司 | Synchronous display method and device of images |
| CN105825207B (en) * | 2016-04-20 | 2019-05-14 | 北京航空航天大学 | The high-voltage line detection method and device of fragmentation |
| CN107230225B (en) * | 2017-04-25 | 2020-06-09 | 华为技术有限公司 | Method and apparatus for three-dimensional reconstruction |
| EP3429206A1 (en) * | 2017-07-13 | 2019-01-16 | Thomson Licensing | Method and device for encoding a point cloud |
| CN108680100B (en) * | 2018-03-07 | 2020-04-17 | 福建农林大学 | Method for matching three-dimensional laser point cloud data with unmanned aerial vehicle point cloud data |
| CN108632607B (en) * | 2018-05-09 | 2019-06-21 | 北京大学深圳研究生院 | A point cloud attribute compression method based on multi-angle adaptive intra prediction |
| CN111479114B (en) * | 2019-01-23 | 2022-07-22 | 华为技术有限公司 | Point cloud encoding and decoding method and device |
| CN111726616B (en) * | 2019-03-19 | 2024-03-01 | 华为技术有限公司 | Point cloud encoding method, point cloud decoding method, device and storage medium |
-
2019
- 2019-04-30 CN CN201910364032.2A patent/CN111866484B/en active Active
-
2020
- 2020-04-07 WO PCT/CN2020/083492 patent/WO2020220941A1/en not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7143115B2 (en) * | 2003-04-15 | 2006-11-28 | Pocket Soft, Inc. | Method and apparatus for finding differences between two computer files efficiently in linear time and for using these differences to update computer files |
| CN104298971A (en) * | 2014-09-28 | 2015-01-21 | 北京理工大学 | Method for identifying objects in 3D point cloud data |
| US20180053040A1 (en) * | 2016-08-19 | 2018-02-22 | Umm Al-Qura University | System and method for 3d local surface matching |
| WO2018102190A1 (en) * | 2016-11-29 | 2018-06-07 | Blackmore Sensors and Analytics Inc. | Method and system for classification of an object in a point cloud data set |
| US20190087979A1 (en) * | 2017-09-18 | 2019-03-21 | Apple Inc. | Point cloud compression |
Also Published As
| Publication number | Publication date |
|---|---|
| CN111866484A (en) | 2020-10-30 |
| CN111866484B (en) | 2023-06-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102800685B1 (en) | Point cloud encoding method and device, point cloud decoding method and device, and storage medium | |
| JP7057453B2 (en) | Point cloud coding method, point cloud decoding method, encoder, and decoder | |
| US11961265B2 (en) | Point cloud encoding and decoding method and apparatus | |
| US11388442B2 (en) | Point cloud encoding method, point cloud decoding method, encoder, and decoder | |
| CN114697668B (en) | Encoding and decoding method of point cloud media and related products | |
| CN111435551B (en) | Point cloud filtering method and device and storage medium | |
| WO2020151496A1 (en) | Point cloud encoding/decoding method and apparatus | |
| CN110944187B (en) | Point cloud encoding method and encoder | |
| US12278995B2 (en) | Methods and apparatus to signal enabled views per atlas in immersive video | |
| WO2020187283A1 (en) | Point cloud encoding method, point cloud decoding method, apparatus, and storage medium | |
| EP4451692A1 (en) | Transmission device for point cloud data, method performed by said transmission device, reception device for point cloud data, and method performed by said reception device | |
| WO2020220941A1 (en) | Point cloud encoding method, point cloud decoding method, apparatuses, and storage medium | |
| CN113453006B (en) | Picture packaging method, device and storage medium | |
| US12356015B2 (en) | Method and apparatus for signaling CMAF switching sets in ISOBMFF | |
| CN116648904B (en) | Video encoding method, video decoding method, device and storage medium | |
| KR20240161128A (en) | A device for transmitting point cloud data and a method performed in the device for transmitting point cloud data, and a device for receiving point cloud data and a method performed in the device for receiving point cloud data | |
| KR20240161126A (en) | A device for transmitting point cloud data and a method performed in the device for transmitting point cloud data, and a device for receiving point cloud data and a method performed in the device for receiving point cloud data | |
| KR20240136930A (en) | A device for transmitting point cloud data and a method performed in the device for transmitting point cloud data, and a device for receiving point cloud data and a method performed in the device for receiving point cloud data | |
| CN119013988A (en) | Transmitting device for point cloud data, method executed in same transmitting device, receiving device for point cloud data, and method executed in same receiving device | |
| WO2020057338A1 (en) | Point cloud coding method and encoder |
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: 20799242 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 20799242 Country of ref document: EP Kind code of ref document: A1 |






