US12165366B2 - Point cloud encoding method and decoding method using rotation matrixes, encoder, and decoder - Google Patents
Point cloud encoding method and decoding method using rotation matrixes, encoder, and decoder Download PDFInfo
- Publication number
- US12165366B2 US12165366B2 US17/145,998 US202117145998A US12165366B2 US 12165366 B2 US12165366 B2 US 12165366B2 US 202117145998 A US202117145998 A US 202117145998A US 12165366 B2 US12165366 B2 US 12165366B2
- Authority
- US
- United States
- Prior art keywords
- patch
- axis
- encoded
- point cloud
- decoded
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 183
- 239000011159 matrix material Substances 0.000 claims abstract description 110
- 230000001131 transforming effect Effects 0.000 claims abstract 5
- 238000003860 storage Methods 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 18
- 230000009466 transformation Effects 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 22
- 238000013507 mapping Methods 0.000 description 72
- 238000013461 design Methods 0.000 description 69
- 238000010586 diagram Methods 0.000 description 29
- 230000006870 function Effects 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 12
- 238000012856 packing Methods 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000011218 segmentation Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 241001416181 Axis axis Species 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004040 coloring Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/816—Monomedia components thereof involving special video data, e.g 3D video
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
- G06T3/602—Rotation of whole images or parts thereof by block rotation, e.g. by recursive reversal or rotation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- 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/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
-
- 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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- 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/46—Embedding additional information in the video signal during the compression process
-
- 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
-
- 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/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
Definitions
- Embodiments of this application relate to the field of coding technologies, and in particular, to a point cloud encoding method, a point cloud decoding method, an encoder, and a decoder.
- Embodiments of this application provide a point cloud encoding method, a point cloud decoding method, an encoder, and a decoder, to help improve point cloud coding performance.
- an embodiment of this application provides a point cloud encoding method.
- the method includes acquiring a normal axis of a to-be-encoded patch in a to-be-encoded point cloud and description information of a minimum bounding rectangle corresponding to the to-be-encoded patch, where the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch are used to determine a tangent axis of the to-be-encoded patch and a bitangent axis of the to-be-encoded patch, and encoding a syntax element into a bitstream, where the syntax element is used to indicate the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, and the syntax element includes an index of the normal axis of the to-be-encoded patch and information used to indicate the description information of the minimum bounding rectangle
- the minimum bounding rectangle corresponding to the to-be-encoded patch is a minimum bounding rectangle of a two-dimensional image (which is referred to as a pre-occupancy map hereinafter) obtained by pre-projecting the patch from a three-dimensional space to a two-dimensional space.
- the description information of the minimum bounding rectangle corresponding to the patch is information used to describe the minimum bounding rectangle corresponding to the patch, and is further used to describe a side size (which may also be referred to as a two-dimensional size) of the minimum bounding rectangle.
- Both the index of the normal axis of the to-be-encoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch are patch-level information.
- the description information of the minimum bounding rectangle corresponding to the patch may include a relationship between sizes of sides of the minimum bounding rectangle corresponding to the patch.
- the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch may include an index of the relationship between sizes of sides of the minimum bounding rectangle corresponding to the to-be-encoded patch, or size information (or side size information) of the minimum bounding rectangle corresponding to the to-be-encoded patch.
- the description information of the minimum bounding rectangle corresponding to the patch may reflect a pose of the patch.
- the pose of the patch may be represented by whether an occupancy map obtained by mapping the patch from the three-dimensional space to the two-dimensional space is vertical or horizontal.
- whether an occupancy map of a patch of a same pose is vertical or horizontal affects a size of an occupancy map of a point cloud obtained by packing the occupancy map of the patch. Therefore, the tangent axis and the bitangent axis of the to-be-encoded patch are determined based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch.
- occupancy maps of patches are closely arranged in the occupancy map of the point cloud by adjusting an orientation (a vertical orientation or a horizontal orientation) of the occupancy map of the to-be-encoded patch, thereby helping perform image-/video-based encoding on a depth map and a texture map that are determined based on the occupancy map of the point cloud. That is, this can improve point cloud encoding performance, and further improve point cloud decoding performance.
- the method may further include determining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, and projecting the to-be-encoded patch from the three-dimensional space to the two-dimensional space based on the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch.
- determining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch may include determining, according to a projection rule, the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, where the projection rule refers to distribution, in the two-dimensional space, of one or more occupancy map obtained by projecting one or more patches in the to-be-encoded point cloud to the two-dimensional space.
- the projection rule may indicate vertical projection or horizontal projection.
- the projection rule may be a preset projection rule (or the projection rule is referred to as a predefined rule, for example, the projection rule may be a rule predefined according to a protocol for an encoder side and a decoder side, or the projection rule may be a default rule).
- the projection rule may not be preset.
- the projection rule may be determined according to a rate-distortion cost criterion.
- the syntax element may further include information used to indicate the projection rule.
- the information used to indicate the projection rule is frame-level information.
- determining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch may include determining, based on a mapping relationship, a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, where the mapping relationship is a mapping relationship between the following items: a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch, and the target tangent axis is the tangent axis
- mapping relationship may be predefined.
- mapping relationship is predefined according to a protocol.
- mapping relationship may be stored, for example but not limited to, in one or more tables. In this case, the possible design may be implemented by looking up a table.
- determining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch may include looking up a table based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, to obtain a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, where the target tangent axis is the tangent axis of the to-be-encoded patch, and the target bitangent axis is the bitangent axis of the to-be-encoded patch, and the table that is
- an axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the bitangent axis of the to-be-encoded patch
- an axis on which a shortest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the tangent axis of the to-be-encoded patch
- an axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the bitangent axis of the to-be-encoded patch.
- the projection rule refers to distribution, in the two-dimensional space, of one or more occupancy map obtained by projecting one or more patches in the to-be-encoded point cloud to the two-dimensional space.
- the normal axis of the to-be-encoded patch is perpendicular to the two-dimensional space. This possible design is described using an example in which “a horizontal axis of a two-dimensional plane is a tangent axis of a patch, and a vertical axis of the two-dimensional plane is a bitangent axis of the patch”.
- the horizontal axis of the two-dimensional plane is the bitangent axis of the patch
- the vertical axis of the two-dimensional plane is the tangent axis of the patch
- an axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the tangent axis of the to-be-encoded patch
- an axis on which a shortest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the bitangent axis of the to-be-encoded patch
- an axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the bitangent axis of the to-be-encoded patch
- an axis on which a shortest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the bitangent axis of the to-be-encoded patch
- the tangent axis that is of the to-be-encoded patch and that is used in a pre-projection process is referred to as a reference tangent axis of the to-be-encoded patch, and the tangent axis is denoted as a U0 axis
- the bitangent axis that is of the to-be-encoded patch and that is used in the pre-projection process is referred to as a reference bitangent axis of the to-be-encoded patch
- the bitangent axis is denoted as a V0 axis.
- the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch that are determined based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch are respectively denoted as a U1 axis and a V1 axis. Based on this, there may be the following cases.
- the U1 axis is the same as the U0 axis
- the V1 axis is the same as the V0 axis.
- the U1 axis is the same as the V0 axis, and the V1 axis is the same as the U0 axis.
- a horizontal axis of a two-dimensional plane is a tangent axis of a patch
- a vertical axis of the two-dimensional plane is a bitangent axis of the patch
- an embodiment of this application provides a point cloud decoding method.
- the method includes parsing a bitstream to obtain a syntax element, where the syntax element includes an index of a normal axis of a to-be-decoded patch in a to-be-decoded point cloud and information used to indicate description information of a minimum bounding rectangle corresponding to the to-be-decoded patch, determining a tangent axis of the to-be-decoded patch and a bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the index and the information are obtained through parsing, and reconstructing geometry information of the to-be-decoded point cloud based on one or more tangent axes and one or more bitangent axes of one or more patches in the to-be-decoded
- Geometry information of a point cloud refers to coordinate values of a point in the point cloud (for example, each point in the point cloud) in a three-dimensional space.
- the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch includes a relationship between sizes of sides of the minimum bounding rectangle corresponding to the to-be-decoded patch.
- the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch includes an index of the relationship between sizes of sides of the minimum bounding rectangle corresponding to the to-be-decoded patch, or size information of the minimum bounding rectangle corresponding to the to-be-decoded patch.
- determining a tangent axis of the to-be-decoded patch and a bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the index and the information are obtained through parsing includes determining, according to a projection rule, the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch based on the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the projection rule refers to distribution, in a two-dimensional space, one or more occupancy map obtained by projecting one or more patches in the to-be-decoded point cloud to the two-dimensional space.
- the projection rule is preset, or the syntax element further includes information used to indicate the projection rule, and correspondingly, the projection rule is a projection rule indicated by the syntax element that is obtained by parsing the bitstream.
- determining a tangent axis of the to-be-decoded patch and a bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the index and the information are obtained through parsing includes determining, based on a mapping relationship, a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the mapping relationship is a mapping relationship between the following items a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes
- determining a tangent axis of the to-be-decoded patch and a bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the index and the information are obtained through parsing includes looking up a table based on the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, to obtain a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the target tangent axis is the tangent axis of the to-be-decoded patch, and the target bitangent axis is the
- an axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-decoded patch is located is the bitangent axis of the to-be-decoded patch
- an axis on which a shortest side of the minimum bounding rectangle corresponding to the to-be-decoded patch is located is the tangent axis of the to-be-decoded patch
- an axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-decoded patch is located is the bitangent axis of the to-be-decoded patch.
- the projection rule refers to distribution, in a two-dimensional space, of one or more occupancy map obtained by projecting one or more patches in the to-be-decoded point cloud to the two-dimensional space.
- the normal axis of the to-be-decoded patch is perpendicular to the two-dimensional space.
- an embodiment of this application provides a point cloud encoding method.
- the method includes obtaining a reference tangent axis of a to-be-encoded patch in a to-be-encoded point cloud and a reference bitangent axis of the to-be-encoded patch, determining a tangent axis of the to-be-encoded patch and a bitangent axis of the to-be-encoded patch based on the reference tangent axis of the to-be-encoded patch and the reference bitangent axis of the to-be-encoded patch, where a rotation angle of the tangent axis of the to-be-encoded patch relative to the reference tangent axis of the to-be-encoded patch is ⁇ , and a rotation angle of the bitangent axis of the to-be-encoded patch relative to the reference bitangent axis of the to-be-encoded patch is ⁇ , and
- the rotation angle ⁇ may be an angle obtained by counterclockwise rotating the tangent axis of the to-be-encoded patch relative to the reference tangent axis of the to-be-encoded patch, and is an angle obtained by counterclockwise rotating the bitangent axis of the to-be-encoded patch relative to the reference bitangent axis of the to-be-encoded patch.
- the rotation angle ⁇ may be an angle obtained by clockwise rotating the tangent axis of the to-be-encoded patch relative to the reference tangent axis of the to-be-encoded patch, and is an angle obtained by clockwise rotating the bitangent axis of the to-be-encoded patch relative to the reference bitangent axis of the to-be-encoded patch.
- positions of occupancy maps of patches in an occupancy map of a point cloud may be adjusted by properly setting the rotation angle such that the occupancy maps of the patches are closely arranged in the occupancy map of the point cloud.
- This improves point cloud encoding performance, and further improves point cloud decoding performance.
- the positions of the occupancy maps of the patches in the occupancy map of the point cloud can be more flexibly set such that the occupancy maps of the patches are arranged more densely (or more closely) in the occupancy map of the point cloud.
- the information used to indicate the rotation angle ⁇ of the to-be-encoded patch includes the rotation angle ⁇ , or an index of the rotation angle ⁇ , or an identifier of a patch that matches the to-be-encoded patch.
- the identifier of the patch that matches the to-be-encoded patch is used to indicate an index of the patch that matches the to-be-encoded patch, or used to indicate that there is the patch that matches the to-be-encoded patch in an encoded point cloud and an index of the patch that matches the to-be-encoded patch.
- the method may further include determining the rotation angle ⁇ from a plurality of candidate rotation angles according to a rate-distortion cost criterion.
- the information used to indicate the rotation angle ⁇ of the to-be-encoded patch includes the rotation angle ⁇ , or an index of the rotation angle ⁇ .
- the method may further include obtaining a rotation angle of the patch that matches the to-be-encoded patch in the encoded point cloud, and using the obtained rotation angle as the rotation angle ⁇ of the to-be-encoded patch.
- the information used to indicate the rotation angle ⁇ of the to-be-encoded patch includes an index of the patch that matches the to-be-encoded patch.
- the encoder needs to transmit, to a decoder, the identifier of the patch that matches the to-be-encoded patch. Therefore, in this possible design, the information used to indicate the rotation angle ⁇ does not need to be additionally transmitted. Therefore, bitstream transmission overheads can be reduced. In addition, the encoder does not need to obtain the rotation angle ⁇ . Therefore, calculation complexity of the encoder can be reduced.
- the method may further include projecting the to-be-encoded patch from a three-dimensional space to a two-dimensional space based on the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, to obtain an occupancy map of the to-be-encoded patch, and determining a minimum bounding rectangle of the occupancy map of the to-be-encoded patch, where the syntax element further includes size information of the minimum bounding rectangle of the occupancy map of the to-be-encoded patch.
- an embodiment of this application provides a point cloud decoding method.
- the method includes parsing a bitstream to obtain a syntax element, where the syntax element includes an index of a normal axis of a to-be-decoded patch in a to-be-decoded point cloud and information used to indicate a rotation angle ⁇ of the to-be-decoded patch, obtaining a reference tangent axis of the to-be-decoded patch and a reference bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch, where the index is obtained through parsing, determining a tangent axis of the patch and a bitangent axis of the patch based on the reference tangent axis of the to-be-decoded patch, the reference bitangent axis of the to-be-decoded patch, and the information that is used to indicate the rotation angle ⁇ of the to-be-
- the information used to indicate the rotation angle ⁇ of the to-be-decoded patch includes the rotation angle ⁇ , or an index of the rotation angle ⁇ , or an identifier of a patch that matches the to-be-decoded patch.
- the identifier of the patch that matches the to-be-decoded patch is used to indicate an index of the patch that matches the to-be-decoded patch, or used to indicate whether there is the patch that matches the to-be-decoded patch in a decoded point cloud and an index of the patch that matches the to-be-decoded patch.
- the information used to indicate the rotation angle ⁇ of the to-be-decoded patch includes the identifier of the patch that matches the to-be-decoded patch, and determining a tangent axis of the patch and a bitangent axis of the patch based on the reference tangent axis of the to-be-decoded patch, the reference bitangent axis of the to-be-decoded patch, and the information that is used to indicate the rotation angle ⁇ of the to-be-decoded patch and that is obtained through parsing includes determining, based on the identifier that is of the patch matching the to-be-decoded patch and that is obtained through parsing, the patch that matches the to-be-decoded patch, and obtaining a rotation angle ⁇ of the patch that matches the to-be-decoded patch, and determining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch
- the syntax element further includes size information of a minimum bounding rectangle of an occupancy map of the to-be-decoded patch
- the reconstructing geometry information of the to-be-decoded point cloud based on one or more tangent axes and one or more bitangent axes of one or more patches in the to-be-decoded point cloud includes reconstructing the geometry information of the to-be-decoded point cloud based on the one or more tangent axes and the one or more bitangent axes of the one or more patches in the to-be-decoded point cloud and the size information of the minimum bounding rectangle of the occupancy map of the to-be-decoded patch, where the size information is obtained by parsing the bitstream.
- an embodiment of this application provides a point cloud encoding method.
- the method includes determining a prediction mode of a to-be-encoded point cloud from a candidate prediction mode set, where the candidate prediction mode set includes an inter prediction mode and an intra prediction mode, and the prediction mode of the to-be-encoded point cloud is used to determine a method for obtaining a tangent axis of a to-be-encoded patch in the to-be-encoded point cloud and a bitangent axis of the to-be-encoded patch, and encoding a syntax element into a bitstream, where the syntax element is used to indicate the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, and the syntax element includes information used to indicate the prediction mode of the to-be-encoded point cloud.
- the method may be performed by an encoder.
- This technical solution provides an implementation solution to determining “a method for obtaining a tangent axis and a bitangent axis of a to-be-encoded patch”. This technical solution can support a scenario in which a plurality of methods for obtaining the tangent axis and the bitangent axis of the to-be-encoded patch coexist.
- the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch includes obtaining a reference tangent axis of the to-be-encoded patch and a reference bitangent axis of the to-be-encoded patch, determining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the reference tangent axis of the to-be-encoded patch and the reference bitangent axis of the to-be-encoded patch, where a rotation angle of the tangent axis of the to-be-encoded patch relative to the reference tangent axis of the to-be-encoded patch is ⁇ , and a rotation angle of the bitangent axis of the to-be-encoded patch
- the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch includes obtaining a reference tangent axis of the to-be-encoded patch and a reference bitangent axis of the to-be-encoded patch, determining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the reference tangent axis of the to-be-encoded patch and the reference bitangent axis of the to-be-encoded patch, where a rotation angle of the tangent axis of the to-be-encoded patch relative to the reference tangent axis of the to-be-encoded patch is ⁇ , and a rotation angle of the bitangent axis of the to-be-encoded patch
- the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch includes acquiring a normal axis of the to-be-encoded patch and description information of a minimum bounding rectangle corresponding to the to-be-encoded patch, and determining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, where the syntax element further includes an index of the normal axis of the to-be-encoded patch and information that is used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch.
- an embodiment of this application provides a point cloud decoding method.
- the method includes parsing a bitstream to obtain a syntax element, where the syntax element is used to indicate a method for obtaining a tangent axis of a to-be-decoded patch in a to-be-decoded point cloud and a bitangent axis of the to-be-decoded patch, the syntax element includes information used to indicate a prediction mode of the to-be-decoded point cloud, and the prediction mode of the to-be-decoded point cloud includes an inter prediction mode or an intra prediction mode, and obtaining the method for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch according to the method, indicated by the syntax element, for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch.
- the method for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch includes obtaining a reference tangent axis of the to-be-decoded patch and a reference bitangent axis of the to-be-decoded patch based on the index that is of the normal axis of the to-be-decoded patch and that is obtained through parsing, determining, based on the identifier that is of the patch matching the to-be-decoded patch and that is obtained through parsing, the patch that matches the to-be-decoded patch, and obtaining a rotation angle ⁇ of the patch that matches the to-be-de
- the method for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch includes obtaining a reference tangent axis of the to-be-decoded patch and a reference bitangent axis of the to-be-decoded patch based on the index that is of the normal axis of the to-be-decoded patch and that is obtained through parsing, and determining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch based on the reference tangent axis of the
- the method for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch includes determining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the index of the normal axis and the information used to indicate the description information are obtained through parsing.
- the related design in the second aspect refer to the related design in the second aspect.
- an embodiment of this application provides an encoder.
- the encoder includes a patch information generation module configured to acquire a normal axis of a to-be-encoded patch in a to-be-encoded point cloud and description information of a minimum bounding rectangle corresponding to the to-be-encoded patch, where the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch are used to determine a tangent axis of the to-be-encoded patch and a bitangent axis of the to-be-encoded patch, and an auxiliary information encoding module configured to encode a syntax element into a bitstream, where the syntax element is used to indicate the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, and the syntax element includes an index of the normal axis of the to-be-encoded patch and information used to
- an embodiment of this application provides a decoder.
- the decoder includes an auxiliary information decoding module configured to parse a bitstream to obtain a syntax element, where the syntax element includes an index of a normal axis of a to-be-decoded patch in a to-be-decoded point cloud and information used to indicate description information of a minimum bounding rectangle corresponding to the to-be-decoded patch, and determine a tangent axis of the to-be-decoded patch and a bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the index and the information are obtained through parsing, and a point cloud geometry information reconstruction module configured to reconstruct geometry information of the to-be-decoded point cloud based on one or more tangent axes and one or more bitangent
- an embodiment of this application provides an encoder.
- the encoder includes a patch information generation module configured to obtain a reference tangent axis of a to-be-encoded patch in a to-be-encoded point cloud and a reference bitangent axis of the to-be-encoded patch, and determine a tangent axis of the to-be-encoded patch and a bitangent axis of the to-be-encoded patch based on the reference tangent axis of the to-be-encoded patch and the reference bitangent axis of the to-be-encoded patch, where a rotation angle of the tangent axis of the to-be-encoded patch relative to the reference tangent axis of the to-be-encoded patch is ⁇ , and a rotation angle of the bitangent axis of the to-be-encoded patch relative to the reference bitangent axis of the to-be-encoded patch is
- an embodiment of this application provides a decoder.
- the decoder includes an auxiliary information decoding module configured to parse a bitstream to obtain a syntax element, where the syntax element includes an index of a normal axis of a to-be-decoded patch in a to-be-decoded point cloud and information used to indicate a rotation angle ⁇ of the to-be-decoded patch, obtain a reference tangent axis of the to-be-decoded patch and a reference bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch, where the index is obtained through parsing, and determine a tangent axis of the patch and a bitangent axis of the patch based on the reference tangent axis of the to-be-decoded patch, the reference bitangent axis of the to-be-decoded patch, and the information that is used to indicate the
- an embodiment of this application provides an encoder.
- the encoder includes a prediction mode determining module configured to determine a prediction mode of a to-be-encoded point cloud from a candidate prediction mode set, where the candidate prediction mode set includes an inter prediction mode and an intra prediction mode, and the prediction mode of the to-be-encoded point cloud is used to determine a method for obtaining a tangent axis of a to-be-encoded patch in the to-be-encoded point cloud and a bitangent axis of the to-be-encoded patch, and an auxiliary information encoding module configured to encode a syntax element into a bitstream, where the syntax element is used to indicate the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, and the syntax element includes information used to indicate the prediction mode of the to-be-encoded point cloud.
- an embodiment of this application provides decoder.
- the decoder includes an auxiliary information decoding module configured to parse a bitstream to obtain a syntax element, where the syntax element is used to indicate a method for obtaining a tangent axis of a to-be-decoded patch in a to-be-decoded point cloud and a bitangent axis of the to-be-decoded patch, the syntax element includes information used to indicate a prediction mode of the to-be-decoded point cloud, and the prediction mode of the to-be-decoded point cloud includes an inter prediction mode or an intra prediction mode, and obtain the method for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch according to the method, indicated by the syntax element, for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch
- an embodiment of this application provides a point cloud data encoding device, and the device may include a memory configured to store point cloud data, where the point cloud data includes a to-be-encoded patch, and an encoder configured to encode an identifier into a bitstream, where the identifier is used to indicate whether to determine a tangent axis and a bitangent axis of the to-be-encoded patch based on description information of a minimum bounding rectangle corresponding to the to-be-encoded patch. That is, the identifier is used to indicate whether to encode the to-be-encoded patch using the point cloud encoding method provided in the first aspect.
- the encoder When the identifier is used to indicate to determine the tangent axis and the bitangent axis of the to-be-encoded patch based on the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch in a to-be-encoded point cloud, the encoder performs encoding according to any point cloud encoding method provided in the first aspect.
- the identifier is used to indicate whether to determine the tangent axis and the bitangent axis of the to-be-encoded patch based on a rotation angle ⁇ of the tangent axis of the to-be-encoded patch relative to a reference tangent axis of the to-be-encoded patch.
- the encoder may perform encoding according to any point cloud encoding method provided in the third aspect.
- an embodiment of this application provides a point cloud data decoding device, and the device may include a memory configured to store point cloud data in form of a bitstream, where the point cloud data includes a to-be-decoded patch, and a decoder configured to parse the bitstream to obtain an identifier, where the identifier is used to indicate whether to determine a tangent axis and a bitangent axis of the to-be-decoded patch based on description information of a minimum bounding rectangle corresponding to the to-be-decoded patch. That is, the identifier is used to indicate whether to decode the to-be-decoded patch using the point cloud decoding method provided in the second aspect.
- the decoder When the identifier is used to indicate to determine the tangent axis and the bitangent axis of the to-be-decoded patch based on the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch in a to-be-decoded point cloud, the decoder performs decoding according to any point cloud decoding method provided in the second aspect.
- the identifier is used to indicate whether to determine the tangent axis and the bitangent axis of the to-be-decoded patch based on a rotation angle ⁇ of the tangent axis of the to-be-decoded patch relative to a reference tangent axis of the to-be-decoded patch.
- the decoder may perform decoding according to any point cloud decoding method provided in the fourth aspect.
- an embodiment of this application provides an encoding device.
- the encoding device includes a nonvolatile memory and a processor that are coupled to each other, where the processor invokes program code stored in the memory to perform a portion of or all steps in any method according to the first aspect, the third aspect, or the fifth aspect.
- an embodiment of this application provides a decoding device.
- the decoding device includes a nonvolatile memory and a processor that are coupled to each other, where the processor invokes program code stored in the memory to perform a portion of or all steps in any method according to the second aspect, the fourth aspect, or the sixth aspect.
- an embodiment of this application provides a method for determining a tangent axis and a bitangent axis of a patch.
- the method may include acquiring a normal axis of a patch in a point cloud and description information of a minimum bounding rectangle corresponding to the patch, and determining a tangent axis of the patch and a bitangent axis of the patch based on the normal axis of the patch and the description information of the minimum bounding rectangle corresponding to the patch.
- the method may include obtaining a reference tangent axis of a patch and a reference bitangent axis of the patch in a point cloud, and determining a tangent axis of the patch and a bitangent axis of the patch based on the reference tangent axis of the patch and the reference bitangent axis of the patch, where a rotation angle of the tangent axis of the patch relative to the reference tangent axis of the patch is ⁇ , and a rotation angle of the bitangent axis of the patch relative to the reference bitangent axis of the patch is ⁇ .
- an embodiment of this application provides an apparatus for determining a tangent axis and a bitangent axis of a patch.
- the apparatus can be configured to perform any method provided in the seventeenth aspect.
- the apparatus may be a chip.
- functional modules of the apparatus may be obtained through division according to the method provided in the seventeenth aspect.
- the functional modules may be obtained through division corresponding to functions, or two or more functions may be integrated into one processing module.
- the apparatus may include a memory and a processor.
- the memory is configured to store program code, and when the program code is executed by the processor, any method provided in the seventeenth aspect is performed.
- an embodiment of this application provides a processing apparatus configured to implement functions of the foregoing apparatus for determining a tangent axis and a bitangent axis of a patch, or the encoder, or the decoder.
- the processing apparatus includes a processor and an interface.
- the processing apparatus may be a chip.
- the processor may be implemented using hardware or software.
- the processor may be a logic circuit, an integrated circuit, or the like.
- the processor When the processor is implemented using software, the processor may be a general-purpose processor, and is implemented by reading software code stored in a memory.
- the memory may be integrated into the processor, or may be located outside the processor and exist independently.
- an embodiment of this application provides a point cloud encoding method.
- the method includes projecting a to-be-encoded patch from a three-dimensional space to a two-dimensional space, to obtain a first occupancy map of the to-be-encoded patch, obtaining a second occupancy map of the to-be-encoded patch, where the second occupancy map of the to-be-encoded patch is obtained by counterclockwise or clockwise rotating the first occupancy map of the to-be-encoded patch by a rotation angle ⁇ , and encoding a syntax element into a bitstream, where the syntax element includes information used to indicate the rotation angle ⁇ .
- an occupancy map obtained through projection is named as the first occupancy map, and corresponds to “a reference occupancy map” in the embodiments.
- the second occupancy map corresponds to “an occupancy map” in the embodiments.
- the descriptions are applicable to any solution (for example, any solution provided in the twentieth aspect to a twenty-third aspect) provided in the embodiments of this application.
- coordinates (x2, y2) of a point in the second occupancy map of the to-be-encoded patch are obtained based on coordinates (x1, y1) of a point in the first occupancy map of the to-be-encoded patch and a rotation matrix, where the rotation matrix corresponds to the rotation angle.
- the rotation matrix is determined based on the rotation angle ⁇ , or is determined based on a functional relationship of the rotation angle ⁇ .
- the rotation matrix is represented as
- coordinates (x1, y1) of a point P1 in the first occupancy map of the to-be-encoded patch and coordinates (x2, y2) of a point P2 in the second occupancy map of the to-be-encoded patch satisfy the following formula, where the coordinates (x2, y2) of the point P2 are obtained through rotation:
- coordinates (x2, y2) of P2 in the second occupancy map of the to-be-encoded patch are obtained according to the following formula:
- the second occupancy map is obtained by counterclockwise or clockwise rotating the first occupancy map of the to-be-encoded patch by the rotation angle ⁇ around a coordinate origin of a coordinate system constituted by a first tangent axis and a first bitangent axis.
- the first tangent axis corresponds to a reference tangent axis in the embodiments
- the first bitangent axis corresponds to a reference bitangent axis in the embodiments.
- the descriptions are applicable to any solution (for example, any solution provided in the twentieth aspect to the twenty-third aspect) provided in the embodiments of this application.
- the information used to indicate the rotation angle ⁇ is an index used to indicate the rotation angle ⁇ .
- a rotation angle by which a second tangent axis of the to-be-encoded patch rotates relative to a first tangent axis of the to-be-encoded patch is ⁇
- a rotation angle by which a second bitangent axis of the to-be-encoded patch rotates relative to a first bitangent axis of the to-be-encoded patch is ⁇
- the second tangent axis corresponds to a tangent axis in the embodiments
- the second bitangent axis corresponds to a bitangent axis in the embodiments.
- an embodiment of this application provides a point cloud decoding method.
- the method includes parsing a bitstream to obtain a syntax element, where the syntax element includes information used to indicate a rotation angle ⁇ of a to-be-decoded patch, obtaining a second occupancy map of the to-be-decoded patch, obtaining a first occupancy map of the to-be-decoded patch, where the first occupancy map of the to-be-decoded patch is obtained by counterclockwise or clockwise counter-rotating the second occupancy map of the to-be-decoded patch by the rotation angle ⁇ , and reconstructing geometry information of the to-be-decoded point cloud based on one or more first occupancy maps of one or more patches in the to-be-decoded point cloud, where the one or more patches include the to-be-decoded patch.
- coordinates (x1, y1) of a point in the first occupancy map of the to-be-decoded patch are obtained based on coordinates (x2, y2) of a point in the second occupancy map of the to-be-decoded patch and a rotation matrix, where the rotation matrix corresponds to the rotation angle.
- the rotation matrix is determined based on the rotation angle ⁇ , or is determined based on a functional relationship of the rotation angle ⁇ .
- the rotation matrix is represented as
- the rotation matrix is represented as an inverse matrix of
- the rotation matrix is represented as an inverse matrix of
- coordinates (x2, y2) of a point P2 in the second occupancy map of the to-be-decoded patch and coordinates (x1, y1) of a point P1 in the first occupancy map of the to-be-decoded patch satisfy the following formula, where the coordinates (x1, y1) of the point P1 are obtained through counter-rotation:
- coordinates (x1, y1) of a point P1 in the first occupancy map of the to-be-decoded patch are obtained according to the following formula:
- the first occupancy map of the to-be-decoded patch is obtained by counterclockwise or clockwise counter-rotating the second occupancy map of the to-be-decoded patch by the rotation angle ⁇ around a coordinate origin of a coordinate system constituted by a first tangent axis and a first bitangent axis.
- the information used to indicate the rotation angle ⁇ is an index used to indicate the rotation angle ⁇ .
- a rotation angle by which a second tangent axis of the to-be-decoded patch rotates relative to a first tangent axis of the to-be-decoded patch is ⁇
- a rotation angle by which a second bitangent axis of the to-be-decoded patch rotates relative to a first bitangent axis of the to-be-decoded patch is ⁇
- the obtaining a second occupancy map of the to-be-decoded patch includes parsing the bitstream to obtain the second occupancy map of the to-be-decoded patch, or parsing the bitstream to obtain information (for example, size information of a minimum bounding rectangle of the second occupancy map of the to-be-decoded patch) that is used to indicate the second occupancy map of the to-be-decoded patch, and obtaining the second occupancy map of the to-be-decoded patch based on the information that is used to indicate the second occupancy map of the to-be-decoded patch.
- information for example, size information of a minimum bounding rectangle of the second occupancy map of the to-be-decoded patch
- an embodiment of this application provides a point cloud encoding method.
- the method includes projecting a to-be-encoded patch from a three-dimensional space to a two-dimensional space, to obtain a first occupancy map of the to-be-encoded patch, obtaining a second occupancy map of the to-be-encoded patch, where coordinates (x2, y2) of a point in the second occupancy map of the to-be-encoded patch are obtained based on coordinates (x1, y1) of a point in the first occupancy map of the to-be-encoded patch and a rotation matrix, where the rotation matrix corresponds to a rotation angle ⁇ , and encoding a syntax element into a bitstream, where the syntax element includes information used to indicate the rotation angle ⁇ .
- the rotation matrix is determined based on the rotation angle ⁇ , or is determined based on a functional relationship of the rotation angle ⁇ .
- an embodiment of this application provides a point cloud decoding method.
- the method includes reconstructing geometry information of a to-be-decoded point cloud based on one or more first occupancy maps of one or more to-be-decoded patches in the to-be-decoded point cloud, where the one or more patches include a to-be-decoded patch, coordinates (x1, y1) of a first point of the to-be-decoded patch are obtained based on coordinates (x2, y2) of a second point of the to-be-decoded patch and a rotation matrix, and the rotation matrix corresponds to a rotation angle ⁇ of the to-be-decoded patch.
- that coordinates (x1, y1) of a first point of the to-be-decoded patch are obtained based on coordinates (x2, y2) of a second point of the to-be-decoded patch and a rotation matrix means that coordinates (x1, y1) of a point in a first occupancy map of the to-be-decoded patch are obtained based on coordinates (x2, y2) of a point in a second occupancy map of the to-be-decoded patch and a rotation matrix.
- the coordinates (x1, y1) of the first point of the to-be-decoded patch are coordinates (x1, y1) of a point in a first occupancy map of the to-be-decoded patch
- the coordinates (x2, y2) of the second point of the to-be-decoded patch are coordinates (x2, y2) of a point in a second occupancy map of the to-be-decoded patch.
- a first occupancy map of the to-be-decoded patch is obtained by counterclockwise or clockwise counter-rotating a second occupancy map of the to-be-decoded patch by the rotation angle ⁇ , or a second occupancy map of the to-be-decoded patch is obtained by counterclockwise or clockwise rotating a first occupancy map of the to-be-decoded patch by the rotation angle ⁇ .
- the rotation matrix is determined based on the rotation angle ⁇ , or is determined based on a functional relationship of the rotation angle ⁇ .
- coordinates (x1, y1) of a point P1 in the first occupancy map of the to-be-decoded patch and coordinates (x2, y2) of a point P2 in the second occupancy map of the to-be-decoded patch satisfy the following formula, where the coordinates (x2, y2) of the point P2 are obtained through rotation:
- an embodiment of this application provides an encoding apparatus.
- the apparatus includes a memory and a processor.
- the memory is configured to store program code.
- the processor is configured to invoke the program code to perform any point cloud encoding method in the first aspect, the third aspect, the fifth aspect, the twentieth aspect, or the twenty-second aspect.
- an embodiment of this application provides a decoding apparatus.
- the apparatus includes a memory and a processor.
- the memory is configured to store program code.
- the processor is configured to invoke the program code to perform any point cloud decoding method in the second aspect, the fourth aspect, the sixth aspect, the twenty-first aspect, or the twenty-third aspect.
- an embodiment of this application provides a computer-readable storage medium.
- the computer-readable storage medium stores program code.
- the program code includes an instruction used to perform a portion of or all steps of any method in the first aspect to the sixth aspect, the twentieth aspect, or the twenty-third aspect, or an instruction used to perform a portion of or all steps of the method in the seventeenth aspect.
- an embodiment of this application provides a computer program product.
- the computer program product runs on a computer
- the computer is enabled to perform a portion of or all steps of any method in the first aspect to the sixth aspect, the twentieth aspect, or the twenty-third aspect, or the computer is enabled to perform a portion of or all steps of the method in the seventeenth aspect.
- FIG. 1 is a block diagram of an example point cloud coding system applicable to an embodiment of this application.
- FIG. 2 is a schematic block diagram of an example encoder applicable to an embodiment of this application.
- FIG. 3 is a schematic structural diagram of an example bitstream applicable to an embodiment of this application.
- FIG. 4 is a schematic block diagram of an example decoder applicable to an embodiment of this application.
- FIG. 5 is a schematic diagram of a patch generation process applicable to a Test Model Category 2 (TMC2).
- TMC2 Test Model Category 2
- FIG. 6 A , FIG. 6 B , and FIG. 6 C are a schematic diagram of an example patch applicable to an embodiment of this application.
- FIG. 7 A and FIG. 7 B are a schematic diagram of projection of a patch from a three-dimensional space to a two-dimensional plane in a current technology.
- FIG. 8 A and FIG. 8 B are a schematic diagram of an occupancy map of a point cloud according to a current technology.
- FIG. 9 is a schematic flowchart of a point cloud encoding method according to an embodiment of this application.
- FIG. 10 A , FIG. 10 B , FIG. 10 C , and FIG. 10 D are a schematic diagram 1 of a patch, a pre-occupancy map of the patch, and an occupancy map of the patch according to an embodiment of this application.
- FIG. 11 is a schematic diagram of a minimum bounding rectangle corresponding to an example patch applicable to an embodiment of this application.
- FIG. 12 is a schematic flowchart of a point cloud decoding method according to an embodiment of this application.
- FIG. 13 is a schematic flowchart of a point cloud encoding method according to an embodiment of this application.
- FIG. 14 A , FIG. 14 B , and FIG. 14 C are a schematic diagram of a patch, a pre-occupancy map of the patch, and an occupancy map of the patch according to an embodiment of this application.
- FIG. 15 is a schematic flowchart of a point cloud decoding method according to an embodiment of this application.
- FIG. 16 is a schematic flowchart of a point cloud encoding method according to an embodiment of this application.
- FIG. 17 is a schematic flowchart of a point cloud decoding method according to an embodiment of this application.
- FIG. 18 is a schematic block diagram of an encoder according to an embodiment of this application.
- FIG. 19 is a schematic block diagram of a decoder according to an embodiment of this application.
- FIG. 20 is a schematic block diagram of an encoder according to an embodiment of this application.
- FIG. 21 is a schematic block diagram of a decoder according to an embodiment of this application.
- FIG. 22 is a schematic block diagram of an encoding device or a decoding device applicable to an embodiment of this application.
- A/B may represent A or B.
- “and/or” describes only an association relationship for describing associated objects and represents that three relationships may exist.
- a and/or B may represent the following three cases only A exists, both A and B exist, and only B exists.
- “A plurality of” means “two or more”.
- terms such as “first” and “second” are used in the embodiments of this application to distinguish between same items or similar items that have basically same functions and purposes. A person skilled in the art may understand that the terms such as “first” and “second” do not limit a quantity or an execution order, and the terms such as “first” and “second” do not indicate a definite difference.
- a reference coordinate system of a three-dimensional space is used as a world coordinate system (or referred to as a physical coordinate system)
- three axes of the world coordinate system are an X axis, a Y axis, and a Z axis
- Table 1 a correspondence between the three axes and indexes of the three axes is shown in Table 1 is used as an example for description.
- the X axis is a horizontal axis
- the Y axis is a vertical axis
- the Z axis is an axis perpendicular to a plane on which the X axis and the Y axis are located.
- FIG. 1 is a block diagram of an example point cloud coding system 1 applicable to an embodiment of this application.
- a term “point cloud coding” or “coding” may generally refer to point cloud encoding or point cloud decoding.
- An encoder 100 in the point cloud coding system 1 may encode a to-be-encoded point cloud according to any point cloud encoding method provided in this application.
- a decoder 200 in the point cloud coding system 1 may decode a to-be-decoded point cloud according to a point cloud decoding method, provided in this application, corresponding to a point cloud encoding method used by the encoder.
- the point cloud coding system 1 includes a source apparatus 10 and a destination apparatus 20 .
- the source apparatus 10 generates encoded point cloud data. Therefore, the source apparatus 10 may be referred to as a point cloud encoding apparatus.
- the destination apparatus 20 may decode the encoded point cloud data generated by the source apparatus 10 . Therefore, the destination apparatus 20 may be referred to as a point cloud decoding apparatus.
- Various implementation solutions of the source apparatus 10 , the destination apparatus 20 , or both the source apparatus 10 and the destination apparatus 20 may include one or more processors and a memory coupled to the one or more processors.
- the memory may include but is not limited to a random-access memory (RAM), a read-only memory (ROM), an electrically erasable programmable ROM (EEPROM), a flash memory, or any other medium that can be used to store desired program code in a form of an instruction or a data structure that can be accessed by a computer, as described in this specification.
- RAM random-access memory
- ROM read-only memory
- EEPROM electrically erasable programmable ROM
- flash memory or any other medium that can be used to store desired program code in a form of an instruction or a data structure that can be accessed by a computer, as described in this specification.
- the source apparatus 10 and the destination apparatus 20 may include various apparatuses, including a desktop computer, a mobile computing apparatus, a notebook (for example, laptop) computer, a tablet computer, a set top box, a handheld telephone set such as a “smart” phone, a television set, a camera, a display apparatus, a digital media player, a video game console, an in-vehicle computer, and a similar apparatus.
- the destination apparatus 20 may receive the encoded point cloud data from the source apparatus 10 over a link 30 .
- the link 30 may include one or more media or apparatuses that can move the encoded point cloud data from the source apparatus 10 to the destination apparatus 20 .
- the link 30 may include one or more communications media that enable the source apparatus 10 to directly send the encoded point cloud data to the destination apparatus 20 in real time.
- the source apparatus 10 may modulate the encoded point cloud data according to a communication standard (for example, a wireless communication protocol), and may send modulated point cloud data to the destination apparatus 20 .
- the one or more communications media may include a wireless and/or wired communications medium, for example, a radio frequency (RF) spectrum or one or more physical transmission lines.
- RF radio frequency
- the one or more communications media may constitute a part of a packet-based network, and the packet-based network is, for example, a local area network, a wide area network, or a global network (for example, the internet).
- the one or more communications media may include a router, a switch, a base station, or another device facilitating communication from the source apparatus 10 to the destination apparatus 20 .
- the encoded data may be output to a storage apparatus 40 through an output interface 140 .
- the encoded point cloud data may be accessed from the storage apparatus 40 through an input interface 240 .
- the storage apparatus 40 may include any one of a plurality of distributed data storage media or locally accessible data storage media, for example, a hard drive, a BLU-RAY, a digital versatile disc (DVD), a compact disc (CD) ROM (CD-ROM), a flash memory, a volatile or nonvolatile memory, or any other appropriate digital storage medium configured to store the encoded point cloud data.
- the storage apparatus 40 may correspond to a file server or another intermediate storage apparatus that can store the encoded point cloud data generated by the source apparatus 10 .
- the destination apparatus 20 may access the stored point cloud data through streaming transmission or downloading from the storage apparatus 40 .
- the file server may be any type of server that can store the encoded point cloud data and send the encoded point cloud data to the destination apparatus 20 .
- Examples of the file server include a network server (for example, used for a website), a File Transfer Protocol (FTP) server, a network attached storage (NAS) apparatus, or a local disk drive.
- the destination apparatus 20 may access the encoded point cloud data through any standard data connection (including an internet connection).
- the standard data connection may include a wireless channel (for example, a WI-FI connection), a wired connection (for example, a digital subscriber line (DSL) or a cable modem), or a combination thereof that is suitable for access to the encoded point cloud data stored on the file server.
- Transmission of the encoded point cloud data from the storage apparatus 40 may be streaming transmission, downloading transmission, or a combination thereof.
- the point cloud coding system 1 described in FIG. 1 is merely an example, and technologies in this application are applicable to a point cloud coding (for example, point cloud encoding or point cloud decoding) apparatus that does not necessarily include any data communication between a point cloud encoding apparatus and a point cloud decoding apparatus.
- data is retrieved from a local memory, is transmitted on a network in a streaming manner, and the like.
- the point cloud encoding apparatus may encode the data and store the data to the memory, and/or the point cloud decoding apparatus may retrieve the data from the memory and decode the data.
- apparatuses that only encode data and store the data to the memory and/or retrieve the data from the memory and decode the data but that do not communicate with each other perform encoding and decoding.
- the source apparatus 10 includes a data source 120 , the encoder 100 , and the output interface 140 .
- the output interface 140 may include a modulator/demodulator (modem) and/or a transmitter.
- the data source 120 may include a point cloud capture apparatus (for example, a camera), a point cloud archive including previously captured point cloud data, a point cloud feed-in interface configured to receive point cloud data from a point cloud content provider, a computer graphics system configured to generate point cloud data, or a combination of these sources of point cloud data.
- the encoder 100 may encode the point cloud data from the data source 120 .
- the source apparatus 10 directly sends the encoded point cloud data to the destination apparatus 20 through the output interface 140 .
- the encoded point cloud data may be alternatively stored on the storage apparatus 40 such that the destination apparatus 20 subsequently accesses the encoded point cloud data for decoding and/or playing.
- the destination apparatus 20 includes the input interface 240 , the decoder 200 , and a display apparatus 220 .
- the input interface 240 includes a receiver and/or a modem.
- the input interface 240 may receive the encoded point cloud data over the link 30 and/or from the storage apparatus 40 .
- the display apparatus 220 may be integrated with the destination apparatus 20 or may be located outside the destination apparatus 20 .
- the display apparatus 220 displays decoded point cloud data.
- the display apparatus 220 may be, for example, a liquid-crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or another type of display apparatus.
- LCD liquid-crystal display
- OLED organic light-emitting diode
- the encoder 100 and the decoder 200 may be respectively integrated with an audio encoder and an audio decoder, and may include an appropriate multiplexer-demultiplexer (MUX-DEMUX) unit or other hardware and software, to process encoding of both audio and a video in a same data stream or separate data streams.
- MUX-DEMUX multiplexer-demultiplexer
- the MUX-DEMUX unit may comply with the International Telecommunication Union (ITU) H.223 multiplexer protocol or another protocol such as a User Datagram Protocol (UDP).
- ITU International Telecommunication Union
- UDP User Datagram Protocol
- the encoder 100 and the decoder 200 each may be implemented, for example, as any one of a plurality of circuits one or more microprocessors, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), discrete logic, hardware, or any combination thereof.
- DSP digital signal processor
- ASIC application-specific integrated circuit
- FPGA field-programmable gate array
- the apparatus may store, in an appropriate non-volatile computer-readable storage medium, an instruction used for the software, and may use one or more processors to execute the instruction in hardware, to implement the technologies in this application. Any one of the foregoing content (including hardware, software, a combination of hardware and software, and the like) may be considered as one or more processors.
- the encoder 100 and the decoder 200 each may be included in one or more encoders or decoders, and the encoder or the decoder may be integrated as a part of a combined encoder/decoder (codec) in a corresponding apparatus.
- codec combined encoder/decoder
- the encoder 100 may be generally an apparatus that “signals” or “sends” some information to another apparatus such as the decoder 200 .
- the term “signal” or “send” may generally refer to transmission of a syntax element and/or other data used for decoding compressed point cloud data. The transmission may occur in real time or almost in real time. Alternatively, the communication may occur after a period of time. For example, the communication may occur when a syntax element in an encoded bitstream is stored into a computer-readable storage medium during encoding, and the decoding apparatus may then retrieve the syntax element at any time after the syntax element is stored in the medium.
- FIG. 2 is a schematic block diagram of an example encoder 100 applicable to an embodiment of this application.
- a Moving Picture Expert Group (MPEG) point cloud compression (PCC) encoding framework is used as an example for description in FIG. 2 .
- the encoder 100 may include a patch information generation module 101 , a packing module 102 , a depth map generation module 103 , a texture map generation module 104 , an image filling module 105 , an image-based or video-based encoding module 106 , an occupancy map encoding module 107 , an auxiliary information encoding module 108 , a multiplexer module 109 , and the like.
- MPEG Moving Picture Expert Group
- PCC point cloud compression
- the patch information generation module 101 is configured to segment a frame of point cloud into a plurality of patches using a method, and obtain related information and the like of the generated patches.
- the patch is a set of some points in one frame of point cloud, and generally one connected component region corresponds to one patch.
- the related information of the patch may include but is not limited to at least one of the following information: a quantity of patches obtained by segmenting a point cloud, position information of each patch in a three-dimensional space, an index of a tangent axis of each patch, an index of a bitangent axis of each patch, an index of a normal axis of each patch, a depth map generated when each patch is projected from the three-dimensional space to a two-dimensional space, a size of the depth map of each patch (for example, the width and the height of the depth map), an occupancy map generated when each patch is projected from the three-dimensional space to the two-dimensional space, and the like.
- Some of the related information such as the quantity of patches obtained by segmenting the point cloud, the index of the normal axis of each patch, the size of the depth map of each patch, the position information of each patch in the point cloud, and size information of the occupancy map of each patch, may be used as auxiliary information and sent to the auxiliary information encoding module 108 for encoding (that is, compression coding).
- the occupancy map of each patch may be sent to the packing module 102 for packing.
- patches in the point cloud are sorted in a specific order, for example, sorted in descending (ascending) order of the widths/heights of the occupancy maps of the patches, and then the occupancy maps of the patches are successively inserted into an available region of an occupancy map of the point cloud in the order of the sorted patches, to obtain the occupancy map of the point cloud.
- information about a specific position of each patch in the occupancy map of the point cloud, the depth map of each patch, and the like may be sent to the depth map generation module 103 .
- the packing module 102 may send the occupancy map of the point cloud to the occupancy map encoding module 107 for encoding.
- the occupancy map of the point cloud may be used to guide the depth map generation module 103 to generate a depth map of the point cloud and guide the texture map generation module 104 to generate a texture map of the point cloud.
- the depth map generation module 103 is configured to generate the depth map of the point cloud based on the occupancy map of the point cloud, and the occupancy map and the depth map of each patch of the point cloud, and send the generated depth map to the image filling module 105 such that the image filling module 105 fills empty pixels in the depth map, to obtain a depth map obtained through filling.
- Video encoding is performed on the depth map obtained through filling
- video decoding is performed to obtain a decoded depth map
- geometry information of a reconstructed point cloud is obtained based on the decoded depth map, the occupancy map of the point cloud, and the auxiliary information of each patch. Texture information of the point cloud and the geometry information of the reconstructed point cloud are sent to a coloring module.
- the coloring module is configured to color the reconstructed point cloud to obtain texture information of the reconstructed point cloud.
- the texture map generation module 104 is configured to generate the texture map of the point cloud based on the occupancy map of the point cloud, the texture information of the reconstructed point cloud, and the occupancy map of each patch of the point cloud, and send the generated texture map to the image filling module 105 such that the image filling module 105 fills empty pixels in the received texture map, to obtain a texture map obtained through filling.
- the texture map generation module 104 may alternatively generate the texture map of the point cloud based on information obtained through filtering performed by a filtering module 110 on the geometry information of the reconstructed point cloud.
- the image filling module 105 sends the depth map and the texture map that are obtained through filling to the image-based or video-based encoding module 106 , for image-based or video-based encoding.
- the image-based or video-based encoding module 106 , the occupancy map encoding module 107 , and the auxiliary information encoding module 108 send obtained encoding results (that is, bitstreams) to the multiplexer module 109 .
- the multiplexer module 109 combines the bitstreams into one bitstream, where the bitstream may be sent to the output interface 140 .
- the encoder 100 shown in FIG. 2 is merely an example.
- the encoder 100 may include more or fewer modules than the modules shown in FIG. 2 .
- the encoder 100 may further include a prediction mode determining module configured to determine a prediction mode of a to-be-encoded point cloud, where the prediction mode may include an inter prediction mode, an intra prediction mode, or the like.
- the prediction mode of the to-be-encoded point cloud may be used as auxiliary information and sent to the auxiliary information encoding module 108 for encoding.
- the prediction mode of the to-be-encoded point cloud may be sent to the patch information generation module 101 .
- the patch information generation module 101 may determine a tangent axis and a bitangent axis of a patch based on the prediction mode of the to-be-encoded point cloud.
- the auxiliary information encoding module 108 may encode patch-level information (for example, the index of the normal axis of the patch) and frame-level information (for example, the quantity of patches included in the point cloud) into a bitstream.
- the encoder 100 may perform encoding based on a point cloud group, where each point cloud group may include at least two frames of point clouds.
- the auxiliary information encoding module 108 may further encode group of frames (GOF)-level information (for example, a quantity of frames of point clouds frames included in a point cloud group) into a bitstream.
- FIG. 3 is a schematic structural diagram of an example bitstream applicable to an embodiment of this application.
- the bitstream shown in FIG. 3 includes a part 1101 that is used to describe metadata information (which may also be referred to as a syntax element) in the bitstream.
- the part 1101 further includes the following fields.
- a field 1102 is metadata information of a frame header of a GOF, and is used to describe GOF-level information.
- the field 1102 may include, for example, identification information of the GOF, a quantity of frames of point clouds included in the GOF, and common information (such as the following information used to indicate description information of a size of a bounding box of a point cloud group) of all the frames of point clouds in the GOF.
- a field 1103 is metadata information of the 1 st frame of point cloud in the GOF, and is used to describe frame-level information related to the 1 st frame of point cloud.
- the field 1103 may include, for example, a quantity of patches included in the 1 st frame of point cloud, resolutions of occupancy maps of all patches, a maximum quantity of patches that can be included in each smallest unit in occupancy maps of point clouds, and common information (such as the following information used to indicate description information of a size of a bounding box of the point cloud) of all patches in the 1 st frame of point cloud.
- a field 1104 is metadata information of a patch of the 1 st frame of point cloud in the GOF, and is used to describe patch-level information related to the 1 st frame of point cloud.
- the patch-level information related to the 1 st frame of point cloud may sequentially include metadata information of the 1 st patch in the 1 st frame of point cloud, . . . , metadata information of the i th patch, . . . , and metadata information of the I th patch, where 1 ⁇ i ⁇ I, both i and I are integers, and I represents the quantity of patches included in the 1 st frame of point cloud.
- the metadata information of the patch may include an index of a normal axis of the patch, and the like.
- a field 1105 is metadata information of the j th frame of point cloud in the GOF, and is used to describe frame-level information related to the j th frame of point cloud. 1 ⁇ j ⁇ J, and both j and J are integers. J represents the quantity of frames of point clouds included in the GOF.
- a field 1106 is metadata information of a patch of the j th frame of point cloud in the GOF, and is used to describe patch-level information related to the j th frame of point cloud.
- FIG. 4 is a schematic block diagram of an example decoder 200 applicable to an embodiment of this application.
- An MPEG PCC decoding framework is used as an example for description in FIG. 4 .
- the decoder 200 may include a demultiplexer module 201 , an image-based or video-based decoding module 202 , an occupancy map decoding module 203 , an auxiliary information decoding module 204 , a point cloud geometry information reconstruction module 205 , a filtering module 206 , and a point cloud texture information reconstruction module 207 .
- the demultiplexer module 201 is configured to send an input bitstream (that is, a combined bitstream) to a corresponding decoding module. Further, a bitstream including an encoded texture map and an encoded depth map is sent to the image-based or video-based decoding module 202 , a bitstream including an encoded occupancy map is sent to the occupancy map decoding module 203 , and a bitstream including encoded auxiliary information is sent to the auxiliary information decoding module 204 .
- the image-based or video-based decoding module 202 is configured to decode the received encoded texture map and the received encoded depth map, send texture map information obtained through decoding to the point cloud texture information reconstruction module 207 , and send depth map information obtained through decoding to the point cloud geometry information reconstruction module 205 .
- the occupancy map decoding module 203 is configured to decode the received bitstream including the encoded occupancy map, and send occupancy map information obtained through decoding to the point cloud geometry information reconstruction module 205 .
- the auxiliary information decoding module 204 is configured to decode the received encoded auxiliary information, and send, to the point cloud geometry information reconstruction module 205 , information that indicates the auxiliary information and that is obtained through decoding.
- the point cloud geometry information reconstruction module 205 is configured to reconstruct geometry information of a point cloud based on the received occupancy map information and the received auxiliary information. After filtering is performed on the reconstructed geometry information of the point cloud by the filtering module 206 , filtered reconstructed geometry information of the point cloud is sent to the point cloud texture information reconstruction module 207 .
- the point cloud texture information reconstruction module 207 is configured to reconstruct texture information of the point cloud, to obtain a reconstructed point cloud.
- the decoder 200 shown in FIG. 4 is merely an example. In specific implementation, the decoder 200 may include more or fewer modules than the modules shown in FIG. 4 . This is not limited in the embodiments of this application.
- the following describes, using examples, a process of generating a patch by the patch information generation module 101 and related information that is of the patch and that is obtained by the patch information generation module 101 .
- FIG. 5 is a schematic diagram of a patch generation process applicable to a TMC2. Details may include, a K-dimension (KD) tree is constructed based on a point cloud, a neighborhood point of each point in the point cloud is determined based on the KD tree, and a normal direction vector (that is, a normal vector) of each point is obtained based on the neighborhood point of the point. Then, coarse segmentation is performed on the point cloud based on the normal direction vector of each point and a predefined projection plane (that is, a projection plane of each point is determined).
- KD K-dimension
- a normal direction vector that is, a normal vector
- coarse segmentation is performed on the point cloud based on the normal direction vector of each point and a predefined projection plane (that is, a projection plane of each point is determined).
- One type of predefined projection plane includes six planes of a bounding box of a point cloud.
- a method for coarse segmentation may include calculating an included angle between the normal direction vector of each point and each of normal direction vectors of the six planes, and selecting a plane corresponding to a smallest included angle as a projection plane of the point. Then, fine segmentation is performed on the projection plane that is of each point and that is obtained through coarse segmentation. Further, a coarse segmentation result is adjusted by iteratively updating a projection plane of the neighborhood point of each point. The projection plane of each point in the point cloud is determined based on a fine segmentation result. Finally, a connected component region is detected based on each projection plane, to generate a patch. For example, a set including all samples in a connected component region is a patch.
- FIG. 6 A to FIG. 6 C are a schematic diagram of an example patch applicable to an embodiment of this application.
- FIG. 6 A shows one frame of point cloud.
- FIG. 6 B shows patches generated based on FIG. 6 A .
- a set including points in each connected component region in FIG. 6 B is a patch.
- the patch information generation module 101 may further obtain the related information of the generated patch of the point cloud.
- the related information may include an index of a tangent axis, an index of a bitangent axis, an index of a normal axis, and the like of each patch.
- the tangent axis of the patch is an axis on which a tangent of the patch is located.
- the bitangent axis of the patch is an axis on which a bitangent of the patch is located.
- the bitangent axis of the patch is perpendicular to the tangent axis of the patch.
- the normal axis of the patch is an axis on which a normal of the patch is located.
- the normal axis of the patch is perpendicular to a two-dimensional space (that is, a projection plane of the patch) in which the tangent axis and the bitangent axis of the patch are located.
- the tangent axis and the bitangent axis of the patch are generally determined according to the following method.
- the index of the normal axis of the patch is first determined, and the index of the tangent axis and the index of the bitangent axis of the patch are then obtained by looking up Table 2.
- the indexes of the axes in Table 2 are obtained based on Table 1.
- FIG. 7 A and FIG. 7 B are a schematic diagram of projection of a patch from a three-dimensional space to a two-dimensional space.
- the coordinate origin is denoted as O.
- a character “A” shown in FIG. 7 A represents a patch in the three-dimensional space, and a normal axis of the patch is a Z axis.
- a tangent direction of the patch is a horizontal axis (a U axis)
- a bitangent direction of the patch is a vertical axis (a V axis).
- a tangent axis of the patch is an X axis
- the bitangent axis is a Y axis. That is, in the two-dimensional space to which the patch is mapped, the U axis is the X axis, and the V axis is the Y axis. Based on this, after the patch is projected to the two-dimensional space, an occupancy map shown in FIG. 7 B may be obtained.
- the patch information generation module 101 may further obtain an occupancy map obtained by projecting the patch to the two-dimensional space. Coordinate values of each point in the occupancy map are determined based on a coordinate system that is constituted by “the tangent axis and the bitangent axis of the patch”. Then, the packing module 102 may pack occupancy maps of these patches in the two-dimensional space (that is, occupancy maps of the patches described in this specification), to obtain an occupancy map of a point cloud.
- FIG. 8 A and FIG. 8 B are a schematic diagram of an occupancy map of a point cloud.
- the patch information generation module 101 may generate patches based on the point cloud shown in FIG. 8 A , and obtain a tangent axis and a bitangent axis of each patch based on Table 2, to obtain an occupancy map of each patch. Based on this, after packing the occupancy maps of the patches, the packing module 102 may obtain the occupancy map of the point cloud shown in FIG. 8 B . It can be learned from FIG. 8 B that in the occupancy map of the point cloud, some patches that are relatively high (which are located on a side on which the Y axis is located) are vertically arranged and some patches that are relatively high (for example, patches in a rectangular box) are horizontally arranged.
- an occupancy map shown in FIG. 6 C may be obtained based on the patches shown in FIG. 6 B .
- any one of the following point cloud encoding methods may be performed by the source apparatus 10 in the point cloud coding system.
- the point cloud encoding method is performed by the encoder 100 in the source apparatus 10 .
- Any of the following point cloud decoding methods may be performed by the destination apparatus 20 in the point cloud coding system.
- the point cloud decoding method is performed by the decoder 200 in the destination apparatus 20 .
- FIG. 9 is a schematic flowchart of a point cloud encoding method according to an embodiment of this application. The method may include the following steps.
- S 101 Acquire a normal axis of a to-be-encoded patch in a to-be-encoded point cloud and description information of a minimum bounding rectangle corresponding to the to-be-encoded patch.
- the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch are used to determine a tangent axis and a bitangent axis of the to-be-encoded patch.
- the to-be-encoded point cloud may be any frame of to-be-encoded point cloud.
- the to-be-encoded patch may be any patch in the to-be-encoded point cloud.
- the minimum bounding rectangle corresponding to the patch is a minimum bounding rectangle of a two-dimensional image (referred to as a pre-occupancy map hereinafter) obtained by pre-projecting the patch from a three-dimensional space to a two-dimensional space.
- a pre-occupancy map hereinafter
- one side of the minimum bounding rectangle corresponding to the patch is a first axis of a world coordinate system or is parallel to a first axis
- another side is a second axis of the world coordinate system or is parallel to a second axis.
- the first axis may be any axis in the world coordinate system
- the second axis may be any axis, other than the first axis, in the world coordinate system.
- Pre-projection is a term introduced to describe the technical solutions provided in the embodiments of this application more clearly, and is used to distinguish from a real mapping process.
- a process of pre-projecting a patch is a process of projecting the patch from the three-dimensional space to the two-dimensional space, and the pre-projection process is performed before a tangent axis and a bitangent axis of the patch are determined. Details are as follows.
- the process of pre-projecting the patch may include determining a reference tangent axis and a reference bitangent axis of the patch, and then projecting the patch from the three-dimensional space to the two-dimensional space based on the determined reference tangent axis and the determined reference bitangent axis of the patch.
- One of the reference tangent axis and the reference bitangent axis of the patch is the first axis described above, and the other is the second axis described above. How to determine the reference tangent axis and the reference bitangent axis of the patch is not limited in this embodiment of this application.
- the tangent axis and the bitangent axis of the patch may be determined using any method (for example, by looking up Table 2) provided in a current technology, the determined tangent axis is used as the reference tangent axis of the patch, and the determined bitangent axis is determined as the reference bitangent axis of the patch.
- a process of mapping of the patch may include determining the tangent axis and the bitangent axis of the patch, and then projecting the patch from the three-dimensional space to the two-dimensional space based on the determined tangent axis and the determined bitangent axis of the patch.
- one of the tangent axis and the bitangent axis of the patch is the first axis described above, and the other is the second axis described above.
- the reference tangent axis of the patch is referred to as a U0 axis
- the reference bitangent axis of the patch is referred to as a V0 axis.
- the U0 axis is a horizontal axis
- the V0 axis is a vertical axis
- the normal axis of the patch is not a Y axis
- the vertical axis is the Y axis
- the horizontal axis is an axis that is different from both the normal axis and the Y axis.
- the normal axis of the patch is the Y axis
- the vertical axis is an X axis
- the horizontal axis is a Z axis.
- the tangent axis of the patch is referred to as a U1 axis
- the bitangent axis of the patch is referred to as a V1 axis.
- a relationship between the U0 axis, the V0 axis, the U1 axis, and the V1 axis that correspond to the patch may include the following manners.
- Manner A The tangent axis of the patch is the same as the reference tangent axis of the patch, and the bitangent axis of the patch is the same as the reference bitangent axis of the patch. That is, the U1 axis is the same as the U0 axis, and the V1 axis is the same as the V0 axis.
- Manner B The tangent axis of the patch is the same as the reference bitangent axis of the patch, and the bitangent axis of the patch is the same as the reference tangent axis of the patch. That is, the U1 axis is the same as the V0 axis, and the V1 axis is the same as the U0 axis.
- FIG. 10 A to FIG. 10 D a patch, a pre-occupancy map of the patch, and an occupancy map of the patch that are provided in this embodiment of this application are shown in FIG. 10 A to FIG. 10 D .
- a reference tangent axis and a reference bitangent axis of the patch shown in FIG. 10 A are obtained by looking up Table 2, and the patch is mapped from the three-dimensional space to the two-dimensional space based on the reference tangent axis and the reference bitangent axis, an obtained pre-occupancy map of the patch is shown in FIG. 10 B .
- the description information of the minimum bounding rectangle corresponding to the patch is information used to describe the minimum bounding rectangle corresponding to the patch, and is further used to describe a side size (which may also be referred to as a two-dimensional size) of the minimum bounding rectangle.
- B U0 and B V0 may be used to describe sizes of sides of the minimum bounding rectangle corresponding to the patch, as shown in FIG. 11 .
- B U0 represents a size of a side, on the U0 axis (or an axis parallel to the U0 axis), of the minimum bounding rectangle corresponding to the patch
- B V0 represents a size of a side, on the V0 axis (or an axis parallel to the V0 axis), of the minimum bounding rectangle corresponding to the patch.
- the description information of the minimum bounding rectangle corresponding to the patch may include a relationship between sizes of sides of the minimum bounding rectangle corresponding to the patch.
- a side corresponding to a larger value of B U0 and B V0 of the patch is a longest side of the minimum bounding rectangle corresponding to the patch
- a side corresponding to a smaller value is a shortest side of the minimum bounding rectangle corresponding to the patch.
- B U0 is equal to B V0
- either of B U0 and B V0 may be used as the longest side of the minimum bounding rectangle corresponding to the patch
- the other one is used as the shortest side of the minimum bounding rectangle corresponding to the patch.
- the general patch includes the to-be-encoded patch.
- a manner of obtaining the normal axis of the to-be-encoded patch is not limited in this embodiment of this application.
- the normal axis of the to-be-encoded patch is one of the X axis, the Y axis, and the Z axis of the world coordinate system is used for description.
- the tangent axis and the bitangent axis of the to-be-encoded patch may be determined by performing the following S 102 .
- S 102 Determine the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch.
- an encoder may predefine the following mapping relationship, for example, according to a protocol.
- the mapping relationship is a mapping relationship between the following items: a plurality of normal axes (or indexes of the plurality of normal axes) of a patch, a plurality of types of description information (or indexes of the plurality of types of description information) of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes (or indexes of the plurality of tangent axes) of the patch, and a plurality of bitangent axes (or indexes of the plurality of bitangent axes) of the patch.
- the encoder obtains the normal axis (or an index of the normal axis) of the to-be-encoded patch and the description information (or an index of the description information) of the minimum bounding rectangle corresponding to the to-be-encoded patch
- the encoder obtains the tangent axis (or an index of the tangent axis of the to-be-encoded patch) and the bitangent axis (or an index of the bitangent axis) of the to-be-encoded patch based on the foregoing mapping relationship.
- mapping relationship may be in a form of a table, a formula, or a logical judgment (for example, an if else operation or a switch operation) performed based on a condition.
- the following mainly uses an example in which the mapping relationship is in a form of a table for description. Based on this, when S 102 is performed, the encoder may obtain the tangent axis and the bitangent axis of the to-be-encoded patch by looking up the table.
- the foregoing mapping relationship is embodied in one or more tables. This is not limited in this embodiment of this application. For ease of description, the embodiments of this application are described using an example in which the foregoing mapping relationship is embodied in one table. A general description is provided herein, and details are not described below.
- the description information of the minimum bounding rectangle corresponding to the patch includes the relationship between sizes of sides of the minimum bounding rectangle corresponding to the patch
- possible description information of the minimum bounding rectangle corresponding to the patch and indexes of the description information may be shown in Table 3.
- Table 3 is merely an example, and does not constitute any limitation on the possible description information of the minimum bounding rectangle corresponding to the patch and the indexes of the description information, where the possible description information and the indexes of the description information are provided in this embodiment of this application.
- the following uses the example in which “possible description information of the minimum bounding rectangle corresponding to the patch and indexes of the description information” shown in Table 3 for description.
- S 103 Project the to-be-encoded patch from the three-dimensional space to the two-dimensional space based on the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, to obtain an occupancy map of the to-be-encoded patch.
- a pre-occupancy map of the to-be-encoded patch may be directly used as the occupancy map of the to-be-encoded patch, as shown in FIG. 10 B and FIG. 10 C .
- the occupancy map of the to-be-encoded patch may be obtained based on a pre-occupancy map of the to-be-encoded patch, as shown in FIG. 10 B and FIG. 10 D .
- S 103 may be alternatively implemented using the current technology.
- S 104 Encode a syntax element into a bitstream, where the syntax element is used to indicate the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, and the syntax element includes the index of the normal axis of the to-be-encoded patch and information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch.
- the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch may include information 1 or information 2.
- whether the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch includes the information 1 or the information 2 may be predefined (for example, predefined according to a protocol). Certainly, this application is not limited thereto.
- information encoded into the bitstream may further include auxiliary information such as size information of a minimum bounding rectangle of an occupancy map of the to-be-encoded patch.
- the encoder may further encode the size information of the minimum bounding rectangle of the occupancy map of the to-be-encoded patch into the bitstream.
- the encoder may not encode the size information of the minimum bounding rectangle of the occupancy map of the to-be-encoded patch into the bitstream. In this way, bitstream transmission overheads can be reduced.
- a decoder may determine, based on the size information (that is, B U0 and B V0 ) of the minimum bounding rectangle corresponding to the to-be-encoded patch (a minimum bounding rectangle of a pre-occupancy map of the to-be-encoded patch), whether the tangent axis of the to-be-encoded patch is the same as the reference tangent axis or the reference bitangent axis.
- Both the index of the normal axis of the to-be-encoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch are patch-level information. Therefore, with reference to the bitstream structure shown in FIG. 3 , if the to-be-encoded point cloud is the 1 st frame of point cloud in the GOF, the two pieces of information may be encoded into the field 1104 in the bitstream. The two pieces of information may be encoded into the bitstream at the same time, or certainly, the two pieces of information may be encoded into the bitstream at different times.
- An order of performing S 102 and S 103 and performing S 104 is not limited in this embodiment of this application.
- S 102 and S 103 may be performed before S 104
- S 104 may be performed before S 102 and S 103
- S 104 may be performed in a process of performing S 102 and S 103 .
- the description information of the minimum bounding rectangle corresponding to the patch may reflect a pose of the patch.
- the pose of the patch may be represented by whether an occupancy map obtained by mapping the patch from the three-dimensional space to the two-dimensional space is vertical or horizontal.
- the occupancy map of the patch shown in FIG. 10 C is vertical
- the occupancy map of the patch shown in FIG. 10 D is horizontal.
- whether an occupancy map of a patch of a same pose is vertical or horizontal affects a size of an occupancy map of a point cloud obtained by packing the occupancy map of the patch.
- the tangent axis and the bitangent axis of the to-be-encoded patch are determined based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch.
- This is favorable to implementing that occupancy maps of patches are closely arranged in the occupancy map of the point cloud by adjusting an orientation (a vertical orientation or a horizontal orientation) of the occupancy map of the to-be-encoded patch, that is, there are a comparatively few empty pixels in the occupancy map of the point cloud, thereby helping perform image-/video-based encoding on a depth map and a texture map that are determined based on the occupancy map of the point cloud.
- this can improve point cloud encoding performance, and further improve point cloud decoding performance.
- the occupancy map of each patch in FIG. 8 B can be set to be vertical or horizontal such that the occupancy maps of the patches in the point cloud are closely arranged in the occupancy map of the point cloud.
- a mapping relationship between the normal axis of the patch, the description information of the minimum bounding rectangle corresponding to the patch, the tangent axis of the patch, and the bitangent axis of the patch may be the case in the following Solution 1 or Solution 2.
- the mapping relationship is the case in Solution 1 or Solution 2 may be predefined (for example, predefined according to a protocol), or may be notified by the encoder to the decoder by encoding indication information into a bitstream.
- Specific content of the indication information is not limited in this embodiment of this application.
- the indication information may be an identifier of Solution 1 or Solution 2, or may be information used to indicate a projection rule below.
- An axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the bitangent axis of the to-be-encoded patch, and an axis on which a shortest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the tangent axis of the to-be-encoded patch.
- the reference tangent axis (the U0 axis) of the patch is the Z axis
- the reference bitangent axis (the V0 axis) of the patch is the Y axis
- the tangent axis (the U1 axis) of the patch is the Y axis
- the bitangent axis (the V1 axis) of the patch is the Z axis.
- Solution 2 An axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the tangent axis of the to-be-encoded patch, and an axis on which a shortest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the bitangent axis of the to-be-encoded patch.
- the reference tangent axis (the U0 axis) of the patch is the Z axis
- the reference bitangent axis (the V0 axis) of the patch is the Y axis
- the normal axis of the patch is the X axis
- B U0 ⁇ B V0 the tangent axis (the U1 axis) of the patch is the Z axis
- the bitangent axis (the V1 axis) of the patch is the Y axis.
- S 102 may be implemented using one of the following steps S 102 A to S 102 C (not shown).
- S 102 A Determine, based on the mapping relationship, a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, where the mapping relationship is a mapping relationship between the following items: a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch.
- the target tangent axis is the tangent axis of the to-be-encoded patch
- the target bitangent axis is the bitangent axis of the to-be-encoded patch.
- S 102 A may be replaced with the following content.
- the index of the target tangent axis is an index of the tangent axis of the to-be-encoded patch
- the index of the target bitangent axis is an index of the bitangent axis of the to-be-encoded patch.
- the mapping relationship may be shown in Table 4 or Table 5.
- S 102 B Look up a table based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, to obtain a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch.
- the target tangent axis is the tangent axis of the to-be-encoded patch
- the target bitangent axis is the bitangent axis of the to-be-encoded patch.
- the table that is looked up includes a mapping relationship between the following items: a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch.
- S 102 B may be replaced with the following content.
- the index of the target tangent axis is an index of the tangent axis of the to-be-encoded patch
- the index of the target bitangent axis is an index of the bitangent axis of the to-be-encoded patch.
- the table that is looked up includes a mapping relationship between the following items a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch.
- the table that is looked up may be Table 4 or Table 5. Certainly, this embodiment of this application is not limited thereto.
- S 102 C Determine, according to the projection rule, the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch.
- the projection rule refers to distribution, in the two-dimensional space, of one or more occupancy map obtained by projecting one or more patches (for example, all patches) in the to-be-encoded point cloud to the two-dimensional space.
- the projection rule may include vertical projection or horizontal projection.
- Vertical projection refers to a rule for enabling occupancy maps obtained by projecting most or all patches in a point cloud to a two-dimensional space to be vertically distributed in the two-dimensional space. For example, if the tangent axis of the patch is the horizontal axis, and the bitangent axis of the patch is the vertical axis, vertical projection refers to a rule for enabling a longest side of a minimum bounding rectangle of occupancy maps obtained by projecting all the patches in the point cloud to the two-dimensional space to be located on the bitangent axis.
- Horizontal projection refers to a rule for enabling occupancy maps obtained by projecting most or all patches in a point cloud to a two-dimensional space to be horizontally distributed in the two-dimensional space. For example, if the tangent axis of the patch is the horizontal axis, and the bitangent axis of the patch is the vertical axis, horizontal projection refers to a rule for enabling a longest side of a minimum bounding rectangle of occupancy maps obtained by projecting all the patches in the point cloud to the two-dimensional space to be located on the tangent axis of the patch.
- the projection rule may be predefined, for example, predefined according to a protocol.
- the projection rule may be determined according to a rate-distortion cost criterion.
- the projection rule is determined from a candidate projection rule set according to the rate-distortion cost criterion.
- the candidate projection rule set may include at least two projection rules, for example, including horizontal projection and vertical projection.
- the encoder may encode, into the bitstream, information used to indicate the projection rule in order to notify the projection rule to the decoder.
- the information used to indicate the projection rule is frame-level information. Therefore, with reference to FIG. 3 , if the to-be-encoded point cloud is the 1 st frame of point cloud in the GOF, the information used to indicate the projection rule may be encoded into the field 1103 in the bitstream.
- the mapping relationship between the following items a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch may be the case in the foregoing Solution 1.
- the encoder may obtain the tangent axis and the bitangent axis of the to-be-encoded patch by looking up Table 4.
- the mapping relationship may be the case in the foregoing Solution 2.
- the encoder may obtain the tangent axis and the bitangent axis of the to-be-encoded patch by looking up Table 5.
- the projection rule includes vertical projection and horizontal projection.
- the projection rule may further include another projection rule.
- the encoder may predefine (for example, predefine according to a protocol) a correspondence between each projection rule and “the mapping relationship between the following items: a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch”.
- the encoder may obtain “the mapping relationship between the following items: a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch” that corresponds to the projection rule, and further determine the tangent axis and the bitangent axis of the to-be-encoded patch based on the mapping relationship.
- FIG. 12 is a schematic flowchart of a point cloud decoding method according to an embodiment of this application.
- the point cloud decoding method provided in this embodiment corresponds to the point cloud encoding method provided in the embodiment shown in FIG. 9 . Therefore, for explanations of related content and beneficial effects in this embodiment, refer to the embodiment shown in FIG. 9 .
- the method shown in FIG. 12 may include the following steps.
- S 201 Parse a bitstream to obtain a syntax element, where the syntax element includes an index of a normal axis of a to-be-decoded patch in a to-be-decoded point cloud and information used to indicate description information of a minimum bounding rectangle corresponding to the to-be-decoded patch.
- the to-be-decoded point cloud may be a point cloud that is transmitted by an encoder to a decoder after the encoder encodes the to-be-encoded point cloud in the embodiment shown in FIG. 9 .
- the to-be-decoded patch may be a patch that is transmitted by the encoder to the decoder after the encoder encodes the to-be-encoded patch in the embodiment shown in FIG. 9 .
- S 201 may include parsing the field 1104 , to obtain the index of the normal axis of the to-be-decoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch.
- the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch may include a relationship between sizes of sides of the minimum bounding rectangle corresponding to the to-be-decoded patch.
- the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch may include an index of the relationship between sizes of sides of the minimum bounding rectangle corresponding to the to-be-decoded patch, or size information (or side size information) of the minimum bounding rectangle corresponding to the to-be-decoded patch.
- a specific type of included information may be predefined, for example, predefined according to a protocol, and the information is consistent with information predefined by the encoder. Certainly, this embodiment of this application is not limited thereto.
- S 202 Determine a tangent axis and a bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the index and the information are obtained through parsing.
- the decoder may predefine the following mapping relationship, for example, according to a protocol, where the mapping relationship is consistent with a mapping relationship predefined by the encoder.
- the mapping relationship is a mapping relationship between the following items: a plurality of normal axes (or indexes of the plurality of normal axes) of a patch, a plurality of types of description information (or indexes of the plurality of types of description information) of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes (or indexes of the plurality of tangent axes) of the patch, and a plurality of bitangent axes (or indexes of the plurality of bitangent axes) of the patch.
- the decoder parses the bitstream to obtain the index of the normal axis of the to-be-decoded patch and the description information used to indicate the minimum bounding rectangle corresponding to the to-be-decoded patch
- the decoder obtains the tangent axis of the to-be-decoded patch (or an index of the tangent axis of the to-be-decoded patch) and the bitangent axis of the to-be-decoded patch (or an index of the bitangent axis of the to-be-decoded patch) based on the foregoing mapping relationship.
- the decoder may first obtain, based on the size information of the minimum bounding rectangle corresponding to the to-be-decoded patch, the description information (or the index of the description information) of the minimum bounding rectangle corresponding to the to-be-decoded patch, and then obtain the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch based on the foregoing mapping relationship.
- the decoder may store the foregoing mapping relationship in form of a table
- the foregoing mapping relationship may be the mapping relationship shown in Table 4 or Table 5. Based on this, the decoder may obtain the tangent axis and the bitangent axis of the to-be-decoded patch by looking up the table.
- S 203 Reconstruct geometry information of the to-be-decoded point cloud based on one or more tangent axes and one or more bitangent axes of one or more patches (for example, all patches) in the to-be-decoded point cloud, where the one or more patches include the to-be-decoded patch.
- point cloud decoding method provided in this embodiment corresponds to the point cloud encoding method provided above, for beneficial effects that can be achieved in this embodiment, refer to the related descriptions in the foregoing embodiment of the point cloud encoding method.
- S 202 may be implemented using one of the following steps S 202 A to S 202 C (not shown).
- S 202 A Determine, based on the mapping relationship, a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the mapping relationship is a mapping relationship between the following items: a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch.
- the target tangent axis is the tangent axis of the to-be-decoded patch
- the target bitangent axis is the bitangent axis of the to-be-decoded patch.
- S 202 A may be replaced with the following content.
- the index of the target tangent axis is an index of the tangent axis of the to-be-decoded patch
- the index of the target bitangent axis is an index of the bitangent axis of the to-be-decoded patch. Further, the mapping relationship may be shown in Table 4 or Table 5.
- S 202 B Look up a table based on the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, to obtain a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch.
- the target tangent axis is the tangent axis of the to-be-decoded patch
- the target bitangent axis is the bitangent axis of the to-be-decoded patch.
- the table that is looked up includes a mapping relationship between the following items: a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch.
- S 202 B may be replaced with the following content.
- the index of the target tangent axis is an index of the tangent axis of the to-be-decoded patch
- the index of the target bitangent axis is an index of the bitangent axis of the to-be-decoded patch.
- the table that is looked up includes a mapping relationship between the following items: a plurality of normal axes of the patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch.
- the table that is looked up may be Table 4 or Table 5. Certainly, this embodiment of this application is not limited thereto.
- S 202 C Determine, according to a projection rule (that is, a projection rule used for projecting the to-be-decoded point cloud), the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch based on the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch.
- the projection rule refers to distribution, in a two-dimensional space, of one or more occupancy map obtained by projecting one or more patches in the to-be-decoded point cloud to the two-dimensional space.
- the projection rule includes vertical projection or horizontal projection.
- the projection rule may be predefined, for example, predefined according to a protocol.
- the projection rule is consistent with a projection rule predefined by the encoder.
- the projection rule may be obtained by the decoder by parsing the bitstream.
- the syntax element obtained by parsing the bitstream includes information used to indicate the projection rule.
- the information used to indicate the projection rule is frame-level information. Specific information used to indicate the projection rule is not limited in this embodiment of this application.
- the information may be an index of the projection rule. For example, if the projection rule indicates vertical projection, the index of the projection rule may be 0. If the projection rule indicates horizontal projection, the index of the projection rule may be 1. Certainly, this application is not limited thereto.
- the mapping relationship between the following items: a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch may be the case in the foregoing Solution 1.
- the decoder may obtain the tangent axis and the bitangent axis of the to-be-decoded patch by looking up Table 4.
- the mapping relationship may be the case in the foregoing Solution 2.
- the decoder may obtain the tangent axis and the bitangent axis of the to-be-decoded patch by looking up Table 5.
- the decoder may directly determine the tangent axis and the bitangent axis of the to-be-decoded patch in one of the following Manners 1 to 3.
- the decoder may first determine the relationship between sizes of sides of the minimum bounding rectangle corresponding to the to-be-decoded patch, and then determine the tangent axis and the bitangent axis of the to-be-decoded patch in one of the following Manners 1 to 3.
- FIG. 13 is a schematic flowchart of a point cloud encoding method according to an embodiment of this application. The method may include the following steps.
- S 301 Obtain a reference tangent axis of a to-be-encoded patch in a to-be-encoded point cloud and a reference bitangent axis of the to-be-encoded patch.
- a reference tangent axis of a to-be-encoded patch in a to-be-encoded point cloud and a reference bitangent axis of the to-be-encoded patch.
- an index of the reference tangent axis of the to-be-encoded patch and an index of the reference bitangent axis of the to-be-encoded patch are obtained by looking up Table 2 based on an index of a normal axis of the to-be-encoded patch, and then the reference tangent axis and the reference bitangent axis of the to-be-encoded patch are obtained by looking up Table 1.
- this embodiment of this application is not limited thereto.
- S 302 Determine a tangent axis of the to-be-encoded patch and a bitangent axis of the to-be-encoded patch based on the reference tangent axis of the to-be-encoded patch and the reference bitangent axis of the to-be-encoded patch, where a rotation angle of the tangent axis of the to-be-encoded patch relative to the reference tangent axis of the to-be-encoded patch is ⁇ , and a rotation angle of the bitangent axis of the to-be-encoded patch relative to the reference bitangent axis of the to-be-encoded patch is ⁇ .
- the rotation angle ⁇ may be an angle obtained by counterclockwise or clockwise rotating the tangent axis of the to-be-encoded patch relative to the reference tangent axis of the to-be-encoded patch.
- the tangent axis herein may be replaced with the bitangent axis.
- the reference tangent axis may be replaced with the reference bitangent axis.
- a relationship between the U0 axis, the V0 axis, the U1 axis, and the V1 axis in this embodiment is that a rotation angle of the U1 axis relative to the U0 axis is ⁇ , and a rotation angle of the V1 axis relative to the V0 axis is ⁇ .
- FIG. 14 A to FIG. 14 C a patch, a pre-occupancy map of the patch, and an occupancy map of the patch that are provided in this embodiment of this application are shown in FIG. 14 A to FIG. 14 C .
- a reference tangent axis and a reference bitangent axis of the patch shown in FIG. 14 A are obtained by looking up Table 2, and the patch is mapped from a three-dimensional space to a two-dimensional space based on the reference tangent axis and the reference bitangent axis
- the obtained pre-occupancy map of the patch is shown in FIG. 14 B .
- the obtained occupancy map of the patch is shown in FIG. 14 C .
- S 304 Determine a size of a minimum bounding rectangle of the occupancy map of the to-be-encoded patch. Subsequently, an encoder may obtain a depth map, a texture map, and the like of the to-be-encoded patch based on the size of the minimum bounding rectangle of the occupancy map of the to-be-encoded patch.
- the minimum bounding rectangle is established based on a coordinate system that is constituted by the reference tangent axis and the reference bitangent axis of the to-be-encoded patch. That is, an axis on which a side of the minimum bounding rectangle is located is an axis other than the normal axis of the to-be-encoded patch in a world coordinate system or an axis parallel to the axis, and an axis on which another side is located is another axis in the world coordinate system or an axis parallel to the other axis.
- S 303 and S 304 are optional technical features.
- S 305 Encode a syntax element into a bitstream, where the syntax element is used to indicate the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, and the syntax element includes an index of the normal axis of the to-be-encoded patch and information used to indicate the rotation angle ⁇ of the to-be-encoded patch.
- the syntax element may further include the size, determined in S 304 , of the minimum bounding rectangle of the occupancy map of the to-be-encoded patch, for example, a size of the minimum bounding rectangle on each axis of the coordinate system that is constituted by the reference tangent axis and the reference bitangent axis of the to-be-encoded patch.
- the size of the minimum bounding rectangle of the occupancy map of the to-be-encoded patch is used by a decoder side to obtain the depth map, the texture map, and the like of the to-be-encoded patch, to reconstruct geometry information of the to-be-decoded patch.
- Both the index of the normal axis of the to-be-encoded patch and the information used to indicate the rotation angle ⁇ of the to-be-encoded patch are patch-level information. Therefore, with reference to the bitstream structure shown in FIG. 3 , if the to-be-encoded point cloud is the 1 st frame of point cloud in the GOF, the two pieces of information may be encoded into the field 1104 in the bitstream. The two pieces of information may be encoded into the bitstream at the same time, or the two pieces of information may be encoded into the bitstream at different times. In addition, size information of the minimum bounding rectangle of the occupancy map of the to-be-encoded patch is also patch-level information.
- the information used to indicate the rotation angle ⁇ of the to-be-encoded patch may include the rotation angle ⁇ , or an index of the rotation angle ⁇ , or an identifier of a patch that matches the to-be-encoded patch.
- the tangent axis and the bitangent axis of the to-be-encoded patch are obtained by rotating the reference tangent axis and the reference bitangent axis of the to-be-encoded patch.
- positions of occupancy maps of patches in an occupancy map of a point cloud may be adjusted by properly setting the rotation angle such that the occupancy maps of the patches are closely arranged in the occupancy map of the point cloud. This improves point cloud encoding performance, and further improves point cloud decoding performance.
- the positions of the occupancy maps of the patches in the occupancy map of the point cloud can be more flexibly set such that the occupancy maps of the patches are arranged more densely (or more closely) in the occupancy map of the point cloud.
- the method may further include determining the rotation angle ⁇ in one of the following manners.
- Manner 1 Determine the rotation angle ⁇ of the to-be-encoded patch from a plurality of candidate rotation angles according to a rate-distortion cost criterion.
- the plurality of candidate rotation angles may be angles obtained by evenly dividing 360° into N parts, where N is an integer greater than or equal to 2.
- N is an integer greater than or equal to 2.
- the plurality of candidate rotation angles may be 0°, 90°, 180°, and 270°.
- the plurality of candidate rotation angles may be alternatively angles obtained by unevenly dividing 360° into N parts.
- Manner 1 may include the following steps 1 to 3.
- Step 1 Perform the following steps 1-1 and 1-2 on a patch i (which is denoted as a patch[i]) in the to-be-encoded point cloud.
- a patch[i] which is denoted as a patch[i]
- i is denoted as a patch[i]
- I represents a quantity of patches included in the to-be-encoded point cloud.
- Step 1-1 Project the patch[i] from the three-dimensional space to the two-dimensional space using a reference tangent axis and a reference bitangent axis of the patch[i], to obtain a reference occupancy map of the patch[i].
- Step 1-2 First, traverse N possible rotation angles, and counterclockwise rotate the reference occupancy map of the patch[i] by each possible rotation angle, where a reference occupancy map, obtained through rotation, of the patch[i] is a pre-occupancy map of the patch[i]. Then, insert the pre-occupancy map of the patch [i] into an available region of a pre-occupancy map of the to-be-encoded point cloud.
- the available region is a region, in the pre-occupancy map of the to-be-encoded point cloud, into which a pre-occupancy map of a patch can be inserted.
- an image obtained by counterclockwise rotating the reference occupancy map of the patch [i] by ⁇ j around the coordinate origin of a coordinate system that is constituted by the reference tangent axis and the reference bitangent axis of the patch [i] is the pre-occupancy map of the patch [i] obtained through rotation of the rotation angle ⁇ j . If coordinates of a point P1 in an occupancy map (that is, the reference occupancy map) of the patch [i] are (x1, y1), coordinates of a point P2 obtained through rotation are (x2, y2), and
- Step 2 After all patches in the to-be-encoded point cloud are processed according to step 1, collect statistics about a size of each obtained pre-occupancy map in the to-be-encoded point cloud.
- a possible rotation angle of each patch may be determined based on requirements (for example, based on a calculation complexity requirement and a bitstream transmission overhead requirement).
- Step 3 Select, according to the rate-distortion cost criterion from pre-occupancy maps of the to-be-encoded point cloud that are obtained based on all possible combinations, a pre-occupancy map that enables bitstream transmission overheads to be lowest or a value of bitstream overheads to be less than or equal to a preset threshold (for example, selecting a pre-occupancy map that is of the to-be-encoded point cloud and that has a smallest size), and use a rotation angle of each patch corresponding to the selected pre-occupancy map as an optimal rotation angle of the corresponding patch.
- a preset threshold for example, selecting a pre-occupancy map that is of the to-be-encoded point cloud and that has a smallest size
- the selected pre-occupancy map may be subsequently used as the occupancy map of the to-be-encoded point cloud.
- the pre-occupancy map that has the smallest size and that is selected from the 4 3 pre-occupancy maps of the to-be-encoded point cloud according to the rate-distortion cost criterion is an occupancy map 5
- rotation angles included in a combination 5 are correspondingly used as optimal rotation angles of patches in the to-be-encoded point cloud.
- the combination 5 includes a rotation angle of the patch 1 is 0°, a rotation angle of the patch 2 is 90°, and a rotation angle of the patch 3 is 180°
- the rotation angle ⁇ of the to-be-encoded patch is 0°
- the rotation angle ⁇ of the to-be-encoded patch is 90°
- the rotation angle ⁇ of the to-be-encoded patch is 180°.
- the information used to indicate the rotation angle ⁇ of the to-be-encoded patch may include the rotation angle ⁇ , or the index of the rotation angle ⁇ .
- Manner 2 Obtain a rotation angle of a patch that matches the to-be-encoded patch in an encoded point cloud, and use the obtained rotation angle as the rotation angle ⁇ of the to-be-encoded patch.
- the encoded point cloud may be any frame of encoded point cloud previous to the to-be-encoded point cloud.
- the encoded point cloud may be an encoded point cloud that belongs to a same GOF as the to-be-encoded point cloud.
- the encoded point cloud may be a previous frame of encoded point cloud of the to-be-encoded point cloud.
- the patch that matches the to-be-encoded patch is a patch with a minimum matching cost.
- the patch may be a patch that is in the encoded point cloud, has a same normal axis as the to-be-encoded patch, and has a largest intersection-over-union (IoU) between a corresponding minimum bounding rectangle and the minimum bounding rectangle corresponding to the to-be-encoded patch.
- IOU intersection-over-union
- the information used to indicate the rotation angle ⁇ of the to-be-encoded patch may include the identifier of the patch that matches the to-be-encoded patch, or the rotation angle ⁇ , or the index of the rotation angle ⁇ .
- the identifier of the patch that matches the to-be-encoded patch is used to indicate an index of the patch that matches the to-be-encoded patch.
- the syntax element may further include information used to indicate whether there is a patch that matches the to-be-encoded patch in the encoded point cloud.
- the syntax element may include an identifier 1, and the identifier 1 is used to indicate whether there is a patch that matches the to-be-encoded patch in the encoded point cloud.
- the syntax element may further include an identifier 2, and the identifier 2 is an index of the patch that matches the to-be-encoded patch.
- the identifier of the patch that matches the to-be-encoded patch is used to indicate that there is the patch that matches the to-be-encoded patch in the encoded point cloud and an index of the patch that matches the to-be-encoded patch. For example, it is assumed that when there is a patch that matches the to-be-encoded patch in the encoded point cloud, the index of the patch that matches the to-be-encoded patch ranges from 0 to P ⁇ 1, where P is an integer greater than or equal to 1. When there is no patch that matches the to-be-encoded patch in the encoded point cloud, the index of the patch that matches the to-be-encoded patch is a default value ⁇ 1.
- the bitstream may include a value that is obtained by adding 1 to the index of the patch that matches the to-be-encoded patch. That is, when there is a patch that matches the to-be-encoded patch in the encoded point cloud, the identifier of the patch that matches the to-be-encoded patch is a value greater than 0, and is a value obtained by adding 1 to the index of the patch that matches the to-be-encoded patch. When there is no patch that matches the to-be-encoded patch in the encoded point cloud, the identifier of the patch that matches the to-be-encoded patch is 0.
- the identifier of the patch that matches the to-be-encoded patch is included in the syntax element to indirectly indicate the rotation angle ⁇ of the to-be-encoded patch. Because in an inter prediction mode, the encoder needs to transmit, to the decoder, the identifier of the patch that matches the to-be-encoded patch, it may be considered that in the technical solution provided in Manner 2, the information used to indicate the rotation angle ⁇ does not need to be additionally transmitted. Therefore, bitstream transmission overheads can be reduced. In addition, the encoder does not need to obtain the rotation angle ⁇ . Therefore, calculation complexity of the encoder can be reduced.
- FIG. 15 is a schematic flowchart of a point cloud decoding method according to an embodiment of this application.
- the point cloud decoding method provided in this embodiment corresponds to the point cloud encoding method provided in the embodiment shown in FIG. 13 . Therefore, for explanations of related content in this embodiment, refer to the embodiment shown in FIG. 13 .
- the method shown in FIG. 15 may include the following steps.
- S 01 Parse a bitstream to obtain a syntax element, where the syntax element includes an index of a normal axis of a to-be-decoded patch in a to-be-decoded point cloud and information used to indicate a rotation angle ⁇ of the to-be-decoded patch.
- the to-be-decoded point cloud may be a point cloud that is transmitted by an encoder to a decoder after the encoder encodes the to-be-encoded point cloud in the embodiment shown in FIG. 13 .
- the to-be-decoded patch may be a patch that is transmitted by the encoder to the decoder after the encoder encodes the to-be-encoded patch in the embodiment shown in FIG. 13 .
- S 401 may include parsing the field 1104 , to obtain the index of the normal axis of the to-be-decoded patch and the information used to indicate the rotation angle ⁇ of the to-be-decoded patch.
- the information used to indicate the rotation angle ⁇ of the to-be-decoded patch may include the rotation angle ⁇ , or an index of the rotation angle ⁇ , or an identifier of a patch that matches the to-be-decoded patch.
- a specific type of included information may be predefined, for example, predefined according to a protocol, and the information is consistent with information predefined by the encoder. Certainly, this embodiment of this application is not limited thereto.
- the identifier of the patch that matches the to-be-decoded patch is used to indicate an index of the patch that matches the to-be-decoded patch, or used to indicate that there is the patch that matches the to-be-decoded patch in a decoded point cloud and an index of the patch that matches the to-be-decoded patch.
- a specific type of information that is indicated by the identifier of the patch that matches the to-be-decoded patch may be predefined, for example, predefined according to a protocol, and the information is consistent with information predefined by the encoder. Certainly, this embodiment of this application is not limited thereto.
- S 402 Obtain a reference tangent axis of the to-be-decoded patch and a reference bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch, where the index is obtained through parsing. For example, an index of the reference tangent axis of the to-be-decoded patch and an index of the reference bitangent axis of the to-be-decoded patch are obtained by looking up Table 2 based on the index of the normal axis of the to-be-decoded patch, and then the reference tangent axis and the reference bitangent axis of the to-be-decoded patch are obtained by looking up Table 2.
- S 403 Determine a tangent axis of the patch and a bitangent axis of the patch based on the reference tangent axis of the to-be-encoded patch, the reference bitangent axis of the to-be-decoded patch, and the information that is used to indicate the rotation angle ⁇ of the to-be-decoded patch and that is obtained through parsing.
- S 403 may be implemented using one of the following steps S 403 A to S 403 C (not shown).
- the reference tangent axis of the to-be-decoded patch is counterclockwise rotated, around the coordinate origin (that is, the coordinate origin of a coordinate system constituted by the reference tangent axis and the reference bitangent axis of the to-be-decoded patch) by ⁇ (that is, clockwise rotated by ⁇ ), to obtain the tangent axis of the to-be-decoded patch.
- the reference bitangent axis of the to-be-decoded patch is counterclockwise rotated by ⁇ (that is, clockwise rotated by ⁇ ) around the coordinate origin, to obtain the bitangent axis of the to-be-decoded patch.
- the patch that matches the to-be-decoded patch may be obtained by looking up a table based on the index.
- the table that is looked up includes a mapping relationship between the following items: a plurality of patches and indexes of the patches.
- the identifier of the patch that matches the to-be-decoded patch is used to indicate that there are the patch that matches the to-be-decoded patch in the decoded point cloud and the index of the patch that matches the to-be-decoded patch, optionally, if a value of the identifier is not 0, it indicates that there is the patch that matches the to-be-decoded patch in the decoded point cloud, and a value obtained by subtracting 1 from the value of the identifier is used as the index of the patch that matches the to-be-decoded patch.
- S 404 Reconstruct geometry information of the to-be-decoded point cloud based on one or more tangent axes and one or more bitangent axes of one or more patches in the to-be-decoded point cloud, where the one or more patches include the to-be-decoded patch.
- the syntax element further includes information used to indicate a size of a minimum bounding rectangle of an occupancy map of the to-be-decoded patch.
- S 404 may include reconstructing the geometry information of the to-be-decoded point cloud based on the one or more tangent axes and the one or more bitangent axes of the one or more patches in the to-be-decoded point cloud and the size information of the minimum bounding rectangle of the occupancy map of the to-be-decoded patch, where the size information is obtained by parsing the bitstream.
- the geometry information of the point cloud and the size information of the minimum bounding rectangle of the occupancy map of the to-be-decoded patch refer to the foregoing descriptions.
- point cloud decoding method provided in this embodiment corresponds to the point cloud encoding method provided in the embodiment shown in FIG. 13 , for beneficial effects that can be achieved in this embodiment, refer to the related descriptions in the embodiment shown in FIG. 13 .
- FIG. 16 is a schematic flowchart of a point cloud encoding method according to an embodiment of this application. The method may include the following steps.
- S 501 Determine a prediction mode of a to-be-encoded point cloud from a candidate prediction mode set, where the candidate prediction mode set includes an inter prediction mode and an intra prediction mode, and the prediction mode of the to-be-encoded point cloud is used to determine a method for obtaining a tangent axis and a bitangent axis of a to-be-encoded patch in the to-be-encoded point cloud.
- the inter prediction mode is a mode in which the to-be-encoded patch in the point cloud is encoded based on a correlation between point clouds.
- the inter prediction mode is a mode in which a to-be-encoded patch in another point cloud is encoded based on information about an encoded point cloud (for example, a rotation angle of a patch in the encoded point cloud).
- the intra prediction mode is a mode in which the to-be-encoded patch in the point cloud is encoded based on information about the point cloud (for example, a projection rule of the point cloud).
- the inter prediction mode may further include an inter prediction mode 1, an inter prediction mode 2, . . . , and an inter prediction mode M1, where M1 is an integer greater than or equal to 2.
- the intra prediction mode may further include an intra prediction mode 1, an intra prediction mode 2, . . . , and an intra prediction mode M2, where M2 is an integer greater than or equal to 2.
- S 502 Encode a syntax element into a bitstream, where the syntax element is used to indicate the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, and the syntax element includes information used to indicate the prediction mode of the to-be-encoded point cloud.
- the information used to indicate the prediction mode of the to-be-encoded point cloud is frame-level information.
- the information may be encoded into the field 1103 in the bitstream.
- the information used to indicate the prediction mode of the to-be-encoded point cloud may be an index of the prediction mode of the to-be-encoded point cloud.
- the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch includes obtaining a reference tangent axis of the to-be-encoded patch and a reference bitangent axis of the to-be-encoded patch, determining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the reference tangent axis of the to-be-encoded patch and the reference bitangent axis of the to-be-encoded patch, where a rotation angle of the tangent axis of the to-be-encoded patch relative to the reference tangent axis of the to-be-encoded patch is ⁇ , and a rotation angle of the bitangent axis of the to-be-encoded patch
- the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch includes obtaining a reference tangent axis of the to-be-encoded patch and a reference bitangent axis of the to-be-encoded patch, determining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the reference tangent axis of the to-be-encoded patch and the reference bitangent axis of the to-be-encoded patch, where a rotation angle of the tangent axis of the to-be-encoded patch relative to the reference tangent axis of the to-be-encoded patch is ⁇ , and a rotation angle of the bitangent axis of the to-be-encoded patch
- the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch includes acquiring a normal axis of the to-be-encoded patch and description information of a minimum bounding rectangle corresponding to the to-be-encoded patch, and determining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, where the syntax element further includes an index of the normal axis of the to-be-encoded patch and information that is used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch.
- the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch includes obtaining a normal axis of the to-be-encoded patch, and determining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch.
- the tangent axis and the bitangent axis of the to-be-encoded patch are determined by looking up Table 2.
- the syntax element further includes an index of the normal axis of the to-be-encoded patch.
- This embodiment provides an implementation solution to determining “a method for obtaining a tangent axis and a bitangent axis of a to-be-encoded patch in a to-be-encoded point cloud”.
- This technical solution can support a scenario in which a plurality of methods for obtaining the tangent axis and the bitangent axis of the to-be-encoded patch coexist.
- FIG. 17 is a schematic flowchart of a point cloud decoding method according to an embodiment of this application.
- the point cloud decoding method provided in this embodiment corresponds to the point cloud encoding method provided in the embodiment shown in FIG. 16 . Therefore, for explanations of related content in this embodiment, refer to the embodiment shown in FIG. 16 .
- the method shown in FIG. 17 may include the following steps.
- S 601 Parse a bitstream to obtain a syntax element, where the syntax element is used to indicate a method for obtaining a tangent axis of a to-be-decoded patch in a to-be-decoded point cloud and a bitangent axis of the to-be-decoded patch, the syntax element includes information used to indicate a prediction mode of the to-be-decoded point cloud, and the prediction mode of the to-be-decoded point cloud includes an inter prediction mode or an intra prediction mode.
- the to-be-decoded point cloud may be a point cloud that is transmitted by an encoder to a decoder after the encoder encodes the to-be-encoded point cloud in the embodiment shown in FIG. 16 .
- the to-be-decoded patch may be a patch that is transmitted by the encoder to the decoder after the encoder encodes the to-be-encoded patch in the embodiment shown in FIG. 16 .
- S 601 may include parsing the field 1103 to obtain the information used to indicate the prediction mode of the to-be-decoded point cloud.
- the information used to indicate the prediction mode of the to-be-decoded point cloud may be an index of the prediction mode of the to-be-decoded point cloud.
- S 602 Obtain the method for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch according to the method, indicated by the syntax element, for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch.
- the method for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch includes obtaining a reference tangent axis of the to-be-decoded patch and a reference bitangent axis of the to-be-decoded patch based on the index that is of the normal axis of the to-be-decoded patch and that is obtained through parsing, determining, based on the identifier that is of the patch matching the to-be-decoded patch and that is obtained through parsing, the patch that matches the to-be-decoded patch, and obtaining a rotation angle ⁇ of the patch that matches the to-be-decoded patch
- the method for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch includes obtaining a reference tangent axis of the to-be-decoded patch and a reference bitangent axis of the to-be-decoded patch based on the index that is of the normal axis of the to-be-decoded patch and that is obtained through parsing, and determining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch based on the reference tangent axis of the to-be-decoded patch
- the method for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch includes determining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the index of the normal axis and the information used to indicate the description information are obtained through parsing.
- the method for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch includes determining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch based on the index that is of the normal axis of the to-be-decoded patch and that is obtained through parsing. For example, the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch are determined by looking up Table 2.
- the point cloud decoding method provided in this embodiment corresponds to the point cloud encoding method provided in the embodiment shown in FIG. 16 .
- This embodiment provides an implementation solution to determining “a method for obtaining a tangent axis and a bitangent axis of a to-be-decoded patch in a to-be-decoded point cloud”.
- This technical solution can support a scenario in which a plurality of methods for obtaining the tangent axis and the bitangent axis of the to-be-decoded patch coexist.
- apparatuses include corresponding hardware structures and/or software modules for performing the functions.
- a person skilled in the art should be easily aware that, in combination with units and algorithm steps of the examples described in the embodiments disclosed in this specification, this application may be implemented by hardware or a combination of hardware and computer software. Whether a function is performed by hardware or hardware driven by computer software depends on particular applications and design constraints of the technical solutions. A person skilled in the art may use different methods to implement the described functions for each particular application, but it should not be considered that the implementation goes beyond the scope of this application.
- Division into functional modules may be performed on an encoder and a decoder in the embodiments of this application based on the foregoing method examples.
- each functional module may be obtained through division in correspondence to each function, or at least two functions may be integrated into one processing module.
- the integrated module may be implemented in a form of hardware, or may be implemented in a form of a software functional module. It should be noted that, in the embodiments of this application, division into the modules is an example, and is merely a logical function division. In actual implementation, division into the modules may be performed in another manner.
- FIG. 18 is a schematic block diagram of an encoder 180 according to an embodiment of this application.
- the encoder 180 may include a patch information generation module 1801 and an auxiliary information encoding module 1802 .
- the patch information generation module 1801 may correspond to the patch information generation module 101 in FIG. 2
- the auxiliary information encoding module 1802 may correspond to the auxiliary information encoding module 108 in FIG. 2 .
- this application is not limited thereto.
- the following describes a feasible implementation of performing point cloud-based encoding by the encoder 180 .
- the patch information generation module 1801 is configured to acquire a normal axis of a to-be-encoded patch in a to-be-encoded point cloud and description information of a minimum bounding rectangle corresponding to the to-be-encoded patch, where the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch are used to determine a tangent axis of the to-be-encoded patch and a bitangent axis of the to-be-encoded patch, and the auxiliary information encoding module 1802 is configured to encode a syntax element into a bitstream, where the syntax element is used to indicate the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, and the syntax element includes an index of the normal axis of the to-be-encoded patch and information used to indicate the description information of the minimum bounding rectangle
- the patch information generation module 1801 can be configured to perform S 101 in FIG. 9 and/or another step described in the embodiments of this application
- the auxiliary information encoding module 1802 can be configured to perform S 104 in FIG. 9 and/or another step described in the embodiments of this application.
- the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch may include a relationship between sizes of sides of the minimum bounding rectangle corresponding to the to-be-encoded patch.
- the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch includes an index of the relationship between sizes of sides of the minimum bounding rectangle corresponding to the to-be-encoded patch, or size information of the minimum bounding rectangle corresponding to the to-be-encoded patch.
- the patch information generation module 1801 is further configured to determine the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, and project the to-be-encoded patch from a three-dimensional space to a two-dimensional space based on the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch.
- the patch information generation module 1801 can be configured to perform S 101 in FIG. 9 and/or another step described in the embodiments of this application
- the auxiliary information encoding module 1802 can be configured to perform S 104 in FIG. 9 and/or another step described in the embodiments of this application.
- the patch information generation module 1801 is further configured to determine, according to a projection rule, the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, where the projection rule refers to distribution, in the two-dimensional space, of one or more occupancy map obtained by projecting one or more patches in the to-be-encoded point cloud to the two-dimensional space.
- the projection rule is preset, or the projection rule is determined according to a rate-distortion cost criterion.
- the syntax element further includes information used to indicate the projection rule.
- the patch information generation module 1801 is further configured to determine, based on a mapping relationship, a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, where the mapping relationship is a mapping relationship between the following items a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch, and the target tangent axis is the tangent axis of the to-be-encoded patch, and the target bitangent axis is the bitangent axis of the to-be-encoded patch.
- the mapping relationship is a mapping relationship between the following items a plurality of normal axes of a patch, a plurality of types of description
- the patch information generation module 1801 is configured to look up a table based on the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, to obtain a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-encoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-encoded patch, where the target tangent axis is the tangent axis of the to-be-encoded patch, and the target bitangent axis is the bitangent axis of the to-be-encoded patch, and the table includes a mapping relationship between the following items a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axe
- an axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the bitangent axis of the to-be-encoded patch
- an axis on which a shortest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the tangent axis of the to-be-encoded patch.
- an axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the tangent axis of the to-be-encoded patch
- an axis on which a shortest side of the minimum bounding rectangle corresponding to the to-be-encoded patch is located is the bitangent axis of the to-be-encoded patch.
- the projection rule refers to distribution, in the two-dimensional space, of one or more occupancy map obtained by projecting one or more patches in the to-be-encoded point cloud to the two-dimensional space.
- the normal axis of the to-be-encoded patch is perpendicular to the two-dimensional space.
- FIG. 19 is a schematic block diagram of a decoder 190 according to an embodiment of this application.
- the decoder 190 may include an auxiliary information decoding module 1901 and a point cloud geometry information reconstruction module 1902 .
- the auxiliary information decoding module 1901 may correspond to the auxiliary information decoding module 204 in FIG. 4
- the point cloud geometry information reconstruction module 1902 may correspond to the point cloud geometry information reconstruction module 205 in FIG. 4 .
- this application is not limited thereto.
- the following describes a feasible implementation of performing point cloud-based decoding by the decoder 190 .
- the auxiliary information decoding module 1901 is configured to parse a bitstream to obtain a syntax element, where the syntax element includes an index of a normal axis of a to-be-decoded patch in a to-be-decoded point cloud and information used to indicate description information of a minimum bounding rectangle corresponding to the to-be-decoded patch, and determine a tangent axis of the to-be-decoded patch and a bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch and the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the index and the information are obtained through parsing.
- the point cloud geometry information reconstruction module 1902 is configured to reconstruct geometry information of the to-be-decoded point cloud based on one or more tangent axes and one or more bitangent axes of one or more patches in the to-be-decoded point cloud, where the one or more patches include the to-be-decoded patch.
- the auxiliary information decoding module 1901 can be configured to perform S 201 and S 202 in FIG. 12 and/or another step described in the embodiments of this application
- the point cloud geometry information reconstruction module 1902 can be configured to perform S 203 in FIG. 12 and/or another step described in the embodiments of this application.
- the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch includes a relationship between sizes of sides of the minimum bounding rectangle corresponding to the to-be-decoded patch.
- the information used to indicate the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch includes an index of the relationship between sizes of sides of the minimum bounding rectangle corresponding to the to-be-decoded patch, or size information of the minimum bounding rectangle corresponding to the to-be-decoded patch.
- the auxiliary information decoding module 1901 is further configured to determine, according to a projection rule, the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch based on the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the projection rule refers to distribution, in a two-dimensional space, of one or more occupancy map obtained by projecting one or more patches in the to-be-decoded point cloud to the two-dimensional space.
- the projection rule is preset, or the syntax element further includes information used to indicate the projection rule, and correspondingly, the projection rule is a projection rule indicated by the syntax element that is obtained by parsing the bitstream.
- the auxiliary information decoding module 1901 is further configured to determine, based on a mapping relationship, a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the mapping relationship is a mapping relationship between the following items a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent axes of the patch, and the target tangent axis is the tangent axis of the to-be-decoded patch, and the target bitangent axis is the bitangent axis of the to-be-decoded patch.
- the mapping relationship is a mapping relationship between the following items a plurality of normal axes of a patch, a plurality of types of
- the auxiliary information decoding module 1901 is further configured to look up a table based on the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, to obtain a target tangent axis and a target bitangent axis that correspond to both the normal axis of the to-be-decoded patch and the description information of the minimum bounding rectangle corresponding to the to-be-decoded patch, where the target tangent axis is the tangent axis of the to-be-decoded patch, and the target bitangent axis is the bitangent axis of the to-be-decoded patch, and the table includes a mapping relationship between the following items a plurality of normal axes of a patch, a plurality of types of description information of a minimum bounding rectangle corresponding to the patch, a plurality of tangent axes of the patch, and a plurality of bitangent
- an axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-decoded patch is located is the bitangent axis of the to-be-decoded patch
- an axis on which a shortest side of the minimum bounding rectangle corresponding to the to-be-decoded patch is located is the tangent axis of the to-be-decoded patch
- an axis on which a longest side of the minimum bounding rectangle corresponding to the to-be-decoded patch is located is the bitangent axis of the to-be-decoded patch.
- the projection rule refers to distribution, in a two-dimensional space, of one or more occupancy map obtained by projecting one or more patches in the to-be-decoded point cloud to the two-dimensional space, and the normal axis of the to-be-decoded patch is perpendicular to the two-dimensional space.
- the patch information generation module 1801 is configured to obtain a reference tangent axis of a to-be-encoded patch in a to-be-encoded point cloud and a reference bitangent axis of the to-be-encoded patch, and determine a tangent axis of the to-be-encoded patch and a bitangent axis of the to-be-encoded patch based on the reference tangent axis of the to-be-encoded patch and the reference bitangent axis of the to-be-encoded patch, where a rotation angle of the tangent axis of the to-be-encoded patch relative to the reference tangent axis of the to-be-encoded patch is ⁇ , and a rotation angle of the bitangent axis of the to-be-encoded patch relative to the reference bitangent axis of the to-be-encoded patch is ⁇ , and the auxiliary information encoding module 1802
- the patch information generation module 1801 can be configured to perform S 301 and S 302 in FIG. 13 and/or another step described in the embodiments of this application
- the auxiliary information encoding module 1802 can be configured to perform S 305 in FIG. 13 and/or another step described in the embodiments of this application.
- the information used to indicate the rotation angle ⁇ of the to-be-encoded patch includes the rotation angle ⁇ , or an index of the rotation angle ⁇ , or an identifier of a patch that matches the to-be-encoded patch.
- the identifier of the patch that matches the to-be-encoded patch is used to indicate an index of the patch that matches the to-be-encoded patch, or used to indicate that there is the patch that matches the to-be-encoded patch in an encoded point cloud and an index of the patch that matches the to-be-encoded patch.
- the patch information generation module 1801 is further configured to determine the rotation angle ⁇ from a plurality of candidate rotation angles according to a rate-distortion cost criterion, or obtain a rotation angle of the patch that matches the to-be-encoded patch from the encoded point cloud, and use the obtained rotation angle as the rotation angle ⁇ of the to-be-encoded patch.
- the patch information generation module 1801 is further configured to project the to-be-encoded patch from a three-dimensional space to a two-dimensional space based on the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, to obtain an occupancy map of the to-be-encoded patch, and determine a minimum bounding rectangle of the occupancy map of the to-be-encoded patch.
- the syntax element further includes size information of the minimum bounding rectangle of the occupancy map of the to-be-encoded patch.
- the patch information generation module 1801 can be configured to perform S 303 and S 304 in FIG. 13 .
- the auxiliary information decoding module 1901 is configured to parse a bitstream to obtain a syntax element, where the syntax element includes an index of a normal axis of a to-be-decoded patch in a to-be-decoded point cloud and information used to indicate a rotation angle ⁇ of the to-be-decoded patch, obtain a reference tangent axis of the to-be-decoded patch and a reference bitangent axis of the to-be-decoded patch based on the index of the normal axis of the to-be-decoded patch, where the index is obtained through parsing, and determine a tangent axis of the patch and a bitangent axis of the patch based on the reference tangent axis of the to-be-decoded patch, the reference bitangent axis of the to-be-decoded patch, and the information that is used to indicate the rotation angle ⁇ of the to-be-decoded patch and that is obtained
- the auxiliary information decoding module 1901 can be configured to perform S 401 , S 402 , and S 403 in FIG. 15 and/or another step described in the embodiments of this application
- the point cloud geometry information reconstruction module 1902 can be configured to perform S 404 in FIG. 15 and/or another step described in the embodiments of this application.
- the information used to indicate the rotation angle ⁇ of the to-be-decoded patch includes the rotation angle ⁇ , or an index of the rotation angle ⁇ , or an identifier of a patch that matches the to-be-decoded patch.
- the identifier of the patch that matches the to-be-decoded patch is used to indicate an index of the patch that matches the to-be-decoded patch, or used to indicate whether there is the patch that matches the to-be-decoded patch in a decoded point cloud and an index of the patch that matches the to-be-decoded patch.
- the information used to indicate the rotation angle ⁇ of the to-be-decoded patch includes the identifier of the patch that matches the to-be-decoded patch
- the auxiliary information decoding module 1901 is further configured to determine, based on the identifier that is of the patch matching the to-be-decoded patch and that is obtained through parsing, the patch that matches the to-be-decoded patch, and obtain a rotation angle ⁇ of the patch that matches the to-be-decoded patch, and determine the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch based on the reference tangent axis of the to-be-decoded patch, the reference bitangent axis of the to-be-decoded patch, and the rotation angle ⁇ .
- the syntax element further includes size information of a minimum bounding rectangle of an occupancy map of the to-be-decoded patch
- the point cloud geometry information reconstruction module 1902 is further configured to reconstruct the geometry information of the to-be-decoded point cloud based on the one or more tangent axes and the one or more bitangent axes of the one or more patches in the to-be-decoded point cloud and the size information of the minimum bounding rectangle of the occupancy map of the to-be-decoded patch, where the size information is obtained by parsing the bitstream.
- the patch information generation module 1801 is configured to project a to-be-encoded patch from a three-dimensional space to a two-dimensional space, to obtain a first occupancy map of the to-be-encoded patch, and obtain a second occupancy map of the to-be-encoded patch, where the second occupancy map of the to-be-encoded patch is obtained by counterclockwise or clockwise rotating the first occupancy map of the to-be-encoded patch by a rotation angle ⁇
- the auxiliary information encoding module 1802 is configured to encode a syntax element into a bitstream, where the syntax element includes information used to indicate the rotation angle ⁇ .
- coordinates (x2, y2) of a point in the second occupancy map of the to-be-encoded patch are obtained based on coordinates (x1, y1) of a point in the first occupancy map of the to-be-encoded patch and a rotation matrix, where the rotation matrix corresponds to the rotation angle.
- the rotation matrix is determined based on the rotation angle ⁇ , or is determined based on a functional relationship of the rotation angle ⁇ .
- the rotation matrix is represented as
- coordinates (x1, y1) of a point P1 in the first occupancy map of the to-be-encoded patch and coordinates (x2, y2) of a point P2 in the second occupancy map of the to-be-encoded patch satisfy the following formula, where the coordinates (x2, y2) of the point P2 are obtained through rotation
- coordinates (x2, y2) of P2 in the second occupancy map of the to-be-encoded patch are obtained according to the following formula
- the second occupancy map is obtained by counterclockwise or clockwise rotating the first occupancy map of the to-be-encoded patch by the rotation angle ⁇ around a coordinate origin of a coordinate system constituted by a first tangent axis and a first bitangent axis.
- the information used to indicate the rotation angle ⁇ is an index used to indicate the rotation angle ⁇ .
- a rotation angle by which a second tangent axis of the to-be-encoded patch rotates relative to a first tangent axis of the to-be-encoded patch is ⁇
- a rotation angle by which a second bitangent axis of the to-be-encoded patch rotates relative to a first bitangent axis of the to-be-encoded patch is ⁇
- the auxiliary information decoding module 1901 is configured to parse a bitstream to obtain a syntax element, where the syntax element includes information used to indicate a rotation angle ⁇ of a to-be-decoded patch, and obtain a second occupancy map of the to-be-decoded patch
- the point cloud geometry information reconstruction module 1902 is configured to obtain a first occupancy map of the to-be-decoded patch, where the first occupancy map of the to-be-decoded patch is obtained by counterclockwise or clockwise counter-rotating the second occupancy map of the to-be-decoded patch by the rotation angle ⁇ , and reconstruct a to-be-decoded point cloud based on one or more first occupancy maps of one or more patches in the to-be-decoded point cloud, where the one or more patches include the to-be-decoded patch.
- coordinates (x1, y1) of a point in the first occupancy map of the to-be-decoded patch are obtained based on coordinates (x2, y2) of a point in the second occupancy map of the to-be-decoded patch and a rotation matrix, where the rotation matrix corresponds to the rotation angle.
- the rotation matrix is determined based on the rotation angle ⁇ , or is determined based on a functional relationship of the rotation angle ⁇ .
- the rotation matrix is represented as
- the rotation matrix is represented as an inverse matrix of
- the rotation matrix is represented as an inverse matrix of
- coordinates (x2, y2) of a point P2 in the second occupancy map of the to-be-decoded patch and coordinates (x1, y1) of a point P1 in the first occupancy map of the to-be-decoded patch satisfy the following formula, where the coordinates (x1, y1) of the point P1 are obtained through counter-rotation:
- coordinates (x1, y1) of a point P1 in the first occupancy map of the to-be-decoded patch are obtained according to the following formula:
- the first occupancy map of the to-be-decoded patch is obtained by counterclockwise or clockwise counter-rotating the second occupancy map of the to-be-decoded patch by the rotation angle ⁇ around a coordinate origin of a coordinate system constituted by a first tangent axis and a first bitangent axis.
- the information used to indicate the rotation angle ⁇ is an index used to indicate the rotation angle ⁇ .
- a rotation angle by which a second tangent axis of the to-be-decoded patch rotates relative to a first tangent axis of the to-be-decoded patch is ⁇
- a rotation angle by which a second bitangent axis of the to-be-decoded patch rotates relative to a first bitangent axis of the to-be-decoded patch is ⁇
- the auxiliary information decoding module 1901 is further configured to parse the bitstream to obtain the second occupancy map of the to-be-decoded patch, or parse the bitstream to obtain information that is used to indicate the second occupancy map of the to-be-decoded patch, and obtain the second occupancy map of the to-be-decoded patch based on the information that is used to indicate the second occupancy map of the to-be-decoded patch.
- the patch information generation module 1801 is configured to project a to-be-encoded patch from a three-dimensional space to a two-dimensional space, to obtain a first occupancy map of the to-be-encoded patch, and obtain a second occupancy map of the to-be-encoded patch, where coordinates (x2, y2) of a point in the second occupancy map of the to-be-encoded patch are obtained based on coordinates (x1, y1) of a point in the first occupancy map of the to-be-encoded patch and a rotation matrix, where the rotation matrix corresponds to a rotation angle ⁇ , and the auxiliary information encoding module 1802 is configured to encode a syntax element into a bitstream, where the syntax element includes information used to indicate the rotation angle ⁇ .
- the rotation matrix is determined based on the rotation angle ⁇ , or is determined based on a functional relationship of the rotation angle ⁇ .
- the rotation matrix is represented as
- coordinates (x1, y1) of a point P1 in the first occupancy map of the to-be-encoded patch and coordinates (x2, y2) of a point P2 in the second occupancy map of the to-be-encoded patch satisfy the following formula, where the coordinates (x2, y2) of the point P2 are obtained through rotation:
- an embodiment of this application provides a decoding apparatus, including a point cloud memory and a point cloud decoder.
- the point cloud memory is configured to store point cloud data.
- the point cloud decoder is configured to reconstruct geometry information of a to-be-decoded point cloud based on one or more first occupancy maps of one or more to-be-decoded patches in the to-be-decoded point cloud, where the one or more patches include the to-be-decoded patch, coordinates (x1, y1) of a first point of the to-be-decoded patch are obtained based on coordinates (x2, y2) of a second point of the to-be-decoded patch and a rotation matrix, and the rotation matrix corresponds to a rotation angle ⁇ of the to-be-decoded patch.
- the coordinates (x1, y1) of the first point of the to-be-decoded patch are coordinates (x1, y1) of a point in a first occupancy map of the to-be-decoded patch
- the coordinates (x2, y2) of the second point of the to-be-decoded patch are coordinates (x2, y2) of a point in a second occupancy map of the to-be-decoded patch.
- a first occupancy map of the to-be-decoded patch is obtained by counterclockwise or clockwise counter-rotating a second occupancy map of the to-be-decoded patch by the rotation angle ⁇ , or a second occupancy map of the to-be-decoded patch is obtained by counterclockwise or clockwise rotating a first occupancy map of the to-be-decoded patch by the rotation angle ⁇ .
- the rotation matrix is determined based on the rotation angle ⁇ , or is determined based on a functional relationship of the rotation angle ⁇ .
- the rotation matrix is represented as
- coordinates (x1, y1) of a point P1 in the first occupancy map of the to-be-decoded patch and coordinates (x2, y2) of a point P2 in the second occupancy map of the to-be-decoded patch satisfy the following formula, where the coordinates (x2, y2) of the point P2 are obtained through rotation:
- FIG. 20 is a schematic block diagram of an encoder 210 according to an embodiment of this application.
- the encoder 210 may include a prediction mode determining module 2101 and an auxiliary information encoding module 2102 .
- the prediction mode determining module 2101 may correspond to the prediction mode determining module related in the foregoing descriptions of the encoder shown in FIG. 2
- the auxiliary information encoding module 2102 may correspond to the auxiliary information encoding module 108 in FIG. 2 .
- this application is not limited thereto.
- the prediction mode determining module 2101 is configured to determine a prediction mode of a to-be-encoded point cloud from a candidate prediction mode set, where the candidate prediction mode set includes an inter prediction mode and an intra prediction mode, and the prediction mode of the to-be-encoded point cloud is used to determine a method for obtaining a tangent axis of a to-be-encoded patch in the to-be-encoded point cloud and a bitangent axis of the to-be-encoded patch, and the auxiliary information encoding module 2102 is configured to encode a syntax element into a bitstream, where the syntax element is used to indicate the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch, and the syntax element includes information used to indicate the prediction mode of the to-be-encoded point cloud.
- the prediction mode determining module 2101 can be configured to perform S 501 in FIG. 16
- the prediction mode of the to-be-encoded point cloud is the inter prediction mode or the intra prediction mode
- the method for obtaining the tangent axis of the to-be-encoded patch and the bitangent axis of the to-be-encoded patch refer to the related designs in the fifth aspect in the summary part or the related descriptions in the embodiment shown in FIG. 16 .
- FIG. 21 is a schematic block diagram of a decoder 220 according to an embodiment of this application.
- the decoder 220 may include an auxiliary information decoding module 2201 .
- the auxiliary information decoding module 2201 may correspond to the auxiliary information decoding module 204 in FIG. 4 .
- this application is not limited thereto.
- the auxiliary information decoding module 2201 is configured to parse a bitstream to obtain a syntax element, where the syntax element is used to indicate a method for obtaining a tangent axis of a to-be-decoded patch in a to-be-decoded point cloud and a bitangent axis of the to-be-decoded patch, the syntax element includes information used to indicate a prediction mode of the to-be-decoded point cloud, and the prediction mode of the to-be-decoded point cloud includes an inter prediction mode or an intra prediction mode, and obtain the method for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch according to the method, indicated by the syntax element, for obtaining the tangent axis of the to-be-decoded patch and the bitangent axis of the to-be-decoded patch.
- the auxiliary information decoding module 2201 can be configured to
- the prediction mode of the to-be-decoded point cloud is the inter prediction mode or the intra prediction mode
- the prediction mode of the to-be-decoded point cloud is the inter prediction mode or the intra prediction mode
- the modules in the encoder/decoder in the embodiments of this application are functional entities that implement various execution steps included in the point cloud encoding/decoding method corresponding to this application.
- the modules are functional entities that can implement all steps in the point cloud encoding/decoding method corresponding to this application and extension and transformation of these steps.
- the modules refer to descriptions of the point cloud encoding/decoding method in this specification. For brevity, details are not described in this specification.
- FIG. 22 is a schematic block diagram of an implementation of an encoding device or a decoding device (briefly referred to as a coding device 230 or a point cloud coding device 230 ) used in an embodiment of this application.
- the coding device 230 may include a processor 2310 , a memory 2330 , and a bus system 2350 .
- the processor 2310 is connected to the memory 2330 through the bus system 2350 .
- the memory 2330 is configured to store an instruction, and the processor 2310 is configured to execute the instruction stored in the memory 2330 , to perform various point cloud encoding/decoding methods described in this application. To avoid repetition, details are not described herein again.
- the processor 2310 may be a central processing unit (CPU), or the processor 2310 may be another general-purpose processor, a DSP, an ASIC, an FPGA, another programmable logic device, a discrete gate, a transistor logic device, a discrete hardware component, or the like.
- the general-purpose processor may be a microprocessor, or may be any conventional processor or the like.
- the memory 2330 may include a ROM device or a RAM device. Any other appropriate type of storage device may also be used as the memory 2330 .
- the memory 2330 may include code and data 2331 that are accessed by the processor 2310 through the bus system 2350 .
- the memory 2330 may further include an operating system 2333 and an application program 2335 .
- the application program 2335 includes at least one program that enables the processor 2310 to perform the point cloud encoding/decoding method described in this application.
- the application program 2335 may include applications 1 to N, and further include a point cloud encoding/decoding application (referred to as a point cloud coding application) for performing the point cloud encoding/decoding method described in this application.
- the bus system 2350 may further include a power bus, a control bus, a status signal bus, and the like, in addition to a data bus.
- various types of buses in the figure are denoted as the bus system 2350 .
- the coding device 230 may further include one or more output devices, such as a display 2370 .
- the display 2370 may be a touch sensitive display that combines a display and a touch unit that operably senses touch input.
- the display 2370 may be connected to the processor 2310 through the bus system 2350 .
- 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 communications medium including any medium that facilitates transfer of a computer program from one place to another place (for example, according to a communication protocol).
- the computer-readable medium may generally correspond to (1) a non-transitory tangible computer-readable storage medium, or (2) a communications medium such as a signal or a carrier.
- the data storage medium may be any usable medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and/or data structures for implementing the technologies described in this application.
- a computer program product may include a computer-readable medium.
- such computer-readable storage media may include a RAM, a ROM, an EEPROM, a CD-ROM or another compact disc storage apparatus, a magnetic disk storage apparatus or another magnetic storage apparatus, a flash memory, or any other medium that can be used to store desired program code in a form of an instruction or a data structure and that can be accessed by a computer.
- any connection is properly termed a computer-readable medium.
- the coaxial cable, the fiber optic cable, the twisted pair, the DSL, or the wireless technologies such as infrared, radio, and microwave are included in a definition of the medium.
- the computer-readable storage medium and the data storage medium do not include connections, carriers, signals, or other transitory media, but actually mean non-transitory tangible storage media.
- Disks and discs used in this specification include a compact disc (CD), a laser disc, an optical disc, a DVD, and a BLU-RAY DISC.
- the disks usually reproduce data magnetically, whereas the discs reproduce data optically with lasers. Combinations of the foregoing should also be included in the scope of the computer-readable media.
- processors such as one or more DSP, general-purpose microprocessors, ASIC, FPGA, or other equivalent integrated circuit or discrete logic circuits. Therefore, the term “processor” used in this specification may be any one of the foregoing structures or any other structure suitable for implementing the technologies described in this specification.
- processors such as one or more DSP, general-purpose microprocessors, ASIC, FPGA, or other equivalent integrated circuit or discrete logic circuits. Therefore, the term “processor” used in this specification may be any one of the foregoing structures or any other structure suitable for implementing the technologies described in this specification.
- the functions described with reference to the illustrative logical blocks, modules, and steps described in this specification may be provided within dedicated hardware and/or software modules configured for encoding and decoding, or may be incorporated into a combined codec.
- the technologies may be completely implemented in one or more circuits or logic elements. In an example, various descriptive logical blocks, units, and modules in the encoder 100 and the decoder 200 can be understood as
- the technologies in this application may be implemented in various apparatuses or devices, including a wireless handset, an integrated circuit (IC), or a set of ICs (for example, a chip set).
- IC integrated circuit
- Various components, modules, or units are described in this application to emphasize functional aspects of the apparatuses configured to perform the disclosed technologies, but are not necessarily implemented by different hardware units.
- various units may be combined into a codec hardware unit in combination with appropriate software and/or firmware, or may be provided by interoperable hardware units (including one or more processors described above).
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Processing Or Creating Images (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Description
when the rotation angle θ is 90°, the rotation matrix is represented as
when the rotation angle θ is 180°, the rotation matrix is represented as
and/or when the rotation angle θ is 270°, the rotation matrix is represented as
where (x1, y1) represents coordinates of a point P1 in the first occupancy map of the to-be-encoded patch, and represents the rotation angle.
or the rotation matrix is represented as an inverse matrix of
when the rotation angle θ is 90°, the rotation matrix is represented as
when the rotation angle θ is 180°, the rotation matrix is represented as
and/or when the rotation angle θ is 270°, the rotation matrix is represented as
when the rotation angle θ is 90°, the rotation matrix is represented as an inverse matrix of
when the rotation angle θ is 180°, the rotation matrix is represented as an inverse matrix of
and/or when the rotation angle θ is 270°, the rotation matrix is represented as an inverse matrix of
where (x2, y2) represents coordinates of a point P2 in the second occupancy map of the to-be-decoded patch, and θ represents the rotation angle.
TABLE 1 | |||
X axis | Y | Z axis | |
0 | 1 | 2 | |
TABLE 2 | ||
Index of the | ||
normal axis | Index of the tangent axis | Index of the bitangent axis |
of the patch | (a U axis) of the patch | (a V axis) of the |
0 | 2 | 1 |
1 | 2 | 0 |
2 | 0 | 1 |
TABLE 3 | ||
Relationship between sizes of | ||
sides of the minimum bounding | ||
rectangle corresponding to a patch |
BU0 ≥ | BV0 > | ||
BV0 | BU0 | ||
Index of the relationship between | 0 | 1 |
sizes of sides of the minimum | ||
bounding rectangle corresponding to | ||
the patch | ||
TABLE 4 | ||||
Index of the relationship | ||||
between sizes of sides of | Index of the | |||
Index of the | the minimum bounding | Index of the | bitangent | |
normal axis | rectangle corresponding to | tangent axis | axis of the | |
of the patch | the patch | of the | patch | |
0 | 0 | 1 | 2 | |
1 | 2 | 1 | ||
1 | 0 | 0 | 2 | |
1 | 2 | 0 | ||
2 | 0 | 1 | 0 | |
1 | 0 | 1 | ||
TABLE 5 | ||||
Index of the relationship | ||||
between sizes of sides of | Index of the | |||
Index of the | the minimum bounding | Index of the | bitangent | |
normal axis | rectangle corresponding to | tangent axis | axis of the | |
of the patch | the patch | of the | patch | |
0 | 0 | 2 | 1 | |
1 | 1 | 2 | ||
1 | 0 | 2 | 0 | |
1 | 0 | 2 | ||
2 | 0 | 0 | 1 | |
1 | 1 | 0 | ||
when the rotation angle θ is 90°, the rotation matrix is represented as
when the rotation angle θ is 180°, the rotation matrix is represented as
and/or when the rotation angle θ is 270°, the rotation matrix is represented as
where (x1, y1) represents coordinates of a point P1 in the first occupancy map of the to-be-encoded patch, and represents the rotation angle.
or the rotation matrix is represented as an inverse matrix of
when the rotation angle θ is 90°, the rotation matrix is represented as
when the rotation angle θ is 180°, the rotation matrix is represented as
and/or when the rotation angle θ is 270°, the rotation matrix is represented as
when the rotation angle θ is 90°, the rotation matrix is represented as an inverse matrix of
when the rotation angle θ is 180°, the rotation matrix is represented as an inverse matrix of
and/or when the rotation angle θ is 270°, the rotation matrix is represented as an inverse matrix of
where (x2, y2) represents coordinates of a point P2 in the second occupancy map of the to-be-decoded patch, and θ represents the rotation angle.
when the rotation angle θ is 90°, the rotation matrix is represented as
when the rotation angle θ is 180°, the rotation matrix is represented as
and/or when the rotation angle θ is 270°, the rotation matrix is represented as
when the rotation angle θ is 90°, the rotation matrix is represented as
when the rotation angle θ is 180°, the rotation matrix is represented as
and/or when the rotation angle θ is 270°, the rotation matrix is represented as
Claims (18)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810766911.3A CN110719497B (en) | 2018-07-12 | 2018-07-12 | Point cloud coding and decoding method and coder-decoder |
CN201810766911.3 | 2018-07-12 | ||
PCT/CN2019/095884 WO2020011265A1 (en) | 2018-07-12 | 2019-07-12 | Point cloud coding and decoding method and coder-decoder |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2019/095884 Continuation WO2020011265A1 (en) | 2018-07-12 | 2019-07-12 | Point cloud coding and decoding method and coder-decoder |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/945,110 Continuation US20250069271A1 (en) | 2018-07-12 | 2024-11-12 | Point Cloud Encoding Method, and Decoding Method Using Rotation Matrices, Encoder, and Decoder |
Publications (2)
Publication Number | Publication Date |
---|---|
US20210183110A1 US20210183110A1 (en) | 2021-06-17 |
US12165366B2 true US12165366B2 (en) | 2024-12-10 |
Family
ID=69143170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/145,998 Active US12165366B2 (en) | 2018-07-12 | 2021-01-11 | Point cloud encoding method and decoding method using rotation matrixes, encoder, and decoder |
Country Status (9)
Country | Link |
---|---|
US (1) | US12165366B2 (en) |
EP (1) | EP3813377B1 (en) |
JP (1) | JP7264572B2 (en) |
KR (3) | KR102698120B1 (en) |
CN (1) | CN110719497B (en) |
BR (1) | BR112021000366A2 (en) |
MX (1) | MX2021000396A (en) |
SG (1) | SG11202100255QA (en) |
WO (1) | WO2020011265A1 (en) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110719497B (en) * | 2018-07-12 | 2021-06-22 | 华为技术有限公司 | Point cloud coding and decoding method and coder-decoder |
US10650554B2 (en) * | 2018-09-27 | 2020-05-12 | Sony Corporation | Packing strategy signaling |
WO2021060850A1 (en) * | 2019-09-24 | 2021-04-01 | 엘지전자 주식회사 | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method |
CN112470469B (en) * | 2020-03-31 | 2023-07-07 | 深圳市大疆创新科技有限公司 | Method and equipment for point cloud coding and decoding |
CN111729322A (en) * | 2020-06-15 | 2020-10-02 | 完美世界(北京)软件科技发展有限公司 | Model stroke processing method and device, computer equipment and readable storage medium |
CN114078191A (en) * | 2020-08-18 | 2022-02-22 | 腾讯科技(深圳)有限公司 | Data processing method, device, equipment and medium for point cloud media |
JP7589368B2 (en) * | 2021-03-19 | 2024-11-25 | エルジー エレクトロニクス インコーポレイティド | Point cloud data transmitting device, point cloud data transmitting method, point cloud data receiving device, and point cloud data receiving method |
EP4329310A4 (en) * | 2021-04-21 | 2024-10-16 | LG Electronics Inc. | POINT CLOUD DATA TRANSMITTING DEVICE, POINT CLOUD DATA TRANSMITTING METHOD, POINT CLOUD DATA RECEIVING DEVICE, AND POINT CLOUD DATA RECEIVING METHOD |
WO2023287220A1 (en) * | 2021-07-15 | 2023-01-19 | 엘지전자 주식회사 | Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device |
US20230014820A1 (en) * | 2021-07-19 | 2023-01-19 | Tencent America LLC | Methods and apparatuses for dynamic mesh compression |
EP4160535A1 (en) * | 2021-09-30 | 2023-04-05 | Beijing Xiaomi Mobile Software Co., Ltd. | Method and apparatus of encoding/decoding point cloud geometry data sensed by at least one sensor |
Citations (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100207936A1 (en) | 2009-02-13 | 2010-08-19 | Harris Corporation | Fusion of a 2d electro-optical image and 3d point cloud data for scene interpretation and registration performance assessment |
US20120206438A1 (en) | 2011-02-14 | 2012-08-16 | Fatih Porikli | Method for Representing Objects with Concentric Ring Signature Descriptors for Detecting 3D Objects in Range Images |
US20130215115A1 (en) | 2010-06-30 | 2013-08-22 | Barry Lynn Jenkins | Delivering and controlling streaming interactive media comprising rendered geometric, texture and lighting data |
US20130321393A1 (en) | 2012-05-31 | 2013-12-05 | Microsoft Corporation | Smoothing and robust normal estimation for 3d point clouds |
CN104298998A (en) | 2014-09-28 | 2015-01-21 | 北京理工大学 | 3D point cloud data processing method |
US20150070354A1 (en) | 2013-09-10 | 2015-03-12 | Fu Tai Hua Industry (Shenzhen) Co., Ltd. | Computing device and method for reconstructing curved surface of point cloud data |
JP2016163342A (en) | 2015-03-03 | 2016-09-05 | 芳隆 大吉 | Method for distributing or broadcasting three-dimensional shape information |
WO2017126314A1 (en) | 2016-01-22 | 2017-07-27 | Mitsubishi Electric Corporation | Method for compressing point cloud |
CN107403456A (en) | 2017-07-28 | 2017-11-28 | 北京大学深圳研究生院 | A kind of point cloud genera compression method based on KD trees and optimization figure conversion |
US20170347120A1 (en) | 2016-05-28 | 2017-11-30 | Microsoft Technology Licensing, Llc | Motion-compensated compression of dynamic voxelized point clouds |
CN107633539A (en) | 2017-09-25 | 2018-01-26 | 潍坊学院 | A kind of three-dimensional point cloud model data compression method based on four side patch divisions |
CN108235007A (en) | 2016-12-12 | 2018-06-29 | 上海天荷电子信息有限公司 | Each pattern uses the data compression method and device of different accuracy coding parameter of the same race |
JP2019012431A (en) | 2017-06-30 | 2019-01-24 | 昇 染矢 | Labor Management System |
US20190197739A1 (en) * | 2017-12-22 | 2019-06-27 | Samsung Electronics Co., Ltd. | Handling duplicate points in point cloud compression |
US20190311500A1 (en) * | 2018-04-10 | 2019-10-10 | Apple Inc. | Point cloud compression |
WO2019199726A1 (en) * | 2018-04-11 | 2019-10-17 | Interdigital Vc Holdings, Inc. | A method for encoding depth values of a set of 3d points once orthogonally projected into at least one image region of a projection plane |
WO2019234290A1 (en) * | 2018-06-04 | 2019-12-12 | Nokia Technologies Oy | An apparatus, a method and a computer program for volumetric video |
CN110662087A (en) | 2018-06-30 | 2020-01-07 | 华为技术有限公司 | Point cloud coding and decoding method and coder-decoder |
US20200014953A1 (en) * | 2018-07-05 | 2020-01-09 | Apple Inc. | Point cloud compression with multi-resolution video encoding |
US20200013235A1 (en) * | 2018-07-03 | 2020-01-09 | Industrial Technology Research Institute | Method and apparatus for processing patches of point cloud |
US20200074593A1 (en) * | 2017-03-01 | 2020-03-05 | Peking University Shenzhen Graduate School | Panoramic image mapping method, apparatus, and device |
US20200153885A1 (en) * | 2018-10-01 | 2020-05-14 | Lg Electronics Inc. | Apparatus for transmitting point cloud data, a method for transmitting point cloud data, an apparatus for receiving point cloud data and/or a method for receiving point cloud data |
US20210176474A1 (en) * | 2018-04-11 | 2021-06-10 | Sony Corporation | Image processing apparatus and method |
US20210304443A1 (en) * | 2018-12-13 | 2021-09-30 | Huawei Technologies Co., Ltd. | Point Cloud Encoding and Decoding Method and Apparatus |
US20210337237A1 (en) * | 2019-01-14 | 2021-10-28 | Huawei Technologies Co., Ltd. | Efficient Patch Rotation in Point Cloud Coding |
KR102473729B1 (en) | 2018-07-12 | 2022-12-01 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Point cloud encoding method, point cloud decoding method, encoder, and decoder |
US11651523B2 (en) * | 2017-12-28 | 2023-05-16 | Nokia Technologies Oy | Apparatus, a method and a computer program for volumetric video |
US11699248B2 (en) * | 2018-07-11 | 2023-07-11 | Sony Corporation | Image processing apparatus and method |
-
2018
- 2018-07-12 CN CN201810766911.3A patent/CN110719497B/en active Active
-
2019
- 2019-07-12 MX MX2021000396A patent/MX2021000396A/en unknown
- 2019-07-12 KR KR1020227042009A patent/KR102698120B1/en active IP Right Grant
- 2019-07-12 KR KR1020247027693A patent/KR20240133753A/en not_active Application Discontinuation
- 2019-07-12 JP JP2021500967A patent/JP7264572B2/en active Active
- 2019-07-12 WO PCT/CN2019/095884 patent/WO2020011265A1/en unknown
- 2019-07-12 SG SG11202100255QA patent/SG11202100255QA/en unknown
- 2019-07-12 KR KR1020217004225A patent/KR102473729B1/en active IP Right Grant
- 2019-07-12 EP EP19834190.1A patent/EP3813377B1/en active Active
- 2019-07-12 BR BR112021000366-5A patent/BR112021000366A2/en unknown
-
2021
- 2021-01-11 US US17/145,998 patent/US12165366B2/en active Active
Patent Citations (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102317973A (en) | 2009-02-13 | 2012-01-11 | 哈里公司 | Fusion of a 2d electro-optical image and 3d point cloud data for scene interpretation and registration performance assessment |
US20100207936A1 (en) | 2009-02-13 | 2010-08-19 | Harris Corporation | Fusion of a 2d electro-optical image and 3d point cloud data for scene interpretation and registration performance assessment |
US20130215115A1 (en) | 2010-06-30 | 2013-08-22 | Barry Lynn Jenkins | Delivering and controlling streaming interactive media comprising rendered geometric, texture and lighting data |
CN107093201A (en) | 2010-09-13 | 2017-08-25 | 巴里·林恩·詹金斯 | Transport and control streaming interactive media including rendered geometry, texture and lighting data |
US20120206438A1 (en) | 2011-02-14 | 2012-08-16 | Fatih Porikli | Method for Representing Objects with Concentric Ring Signature Descriptors for Detecting 3D Objects in Range Images |
US20130321393A1 (en) | 2012-05-31 | 2013-12-05 | Microsoft Corporation | Smoothing and robust normal estimation for 3d point clouds |
US9767598B2 (en) | 2012-05-31 | 2017-09-19 | Microsoft Technology Licensing, Llc | Smoothing and robust normal estimation for 3D point clouds |
US20150070354A1 (en) | 2013-09-10 | 2015-03-12 | Fu Tai Hua Industry (Shenzhen) Co., Ltd. | Computing device and method for reconstructing curved surface of point cloud data |
CN104424655A (en) | 2013-09-10 | 2015-03-18 | 鸿富锦精密工业(深圳)有限公司 | System and method for reconstructing point cloud curved surface |
CN104298998A (en) | 2014-09-28 | 2015-01-21 | 北京理工大学 | 3D point cloud data processing method |
JP2016163342A (en) | 2015-03-03 | 2016-09-05 | 芳隆 大吉 | Method for distributing or broadcasting three-dimensional shape information |
WO2017126314A1 (en) | 2016-01-22 | 2017-07-27 | Mitsubishi Electric Corporation | Method for compressing point cloud |
US20170347120A1 (en) | 2016-05-28 | 2017-11-30 | Microsoft Technology Licensing, Llc | Motion-compensated compression of dynamic voxelized point clouds |
CN108235007A (en) | 2016-12-12 | 2018-06-29 | 上海天荷电子信息有限公司 | Each pattern uses the data compression method and device of different accuracy coding parameter of the same race |
US20200074593A1 (en) * | 2017-03-01 | 2020-03-05 | Peking University Shenzhen Graduate School | Panoramic image mapping method, apparatus, and device |
JP2019012431A (en) | 2017-06-30 | 2019-01-24 | 昇 染矢 | Labor Management System |
CN107403456A (en) | 2017-07-28 | 2017-11-28 | 北京大学深圳研究生院 | A kind of point cloud genera compression method based on KD trees and optimization figure conversion |
US20190355152A1 (en) | 2017-07-28 | 2019-11-21 | Peking University Shenzen Graduate School | Point cloud attribute compression method based on kd tree and optimized graph transformation |
CN107633539A (en) | 2017-09-25 | 2018-01-26 | 潍坊学院 | A kind of three-dimensional point cloud model data compression method based on four side patch divisions |
US20190197739A1 (en) * | 2017-12-22 | 2019-06-27 | Samsung Electronics Co., Ltd. | Handling duplicate points in point cloud compression |
US11651523B2 (en) * | 2017-12-28 | 2023-05-16 | Nokia Technologies Oy | Apparatus, a method and a computer program for volumetric video |
US20190311500A1 (en) * | 2018-04-10 | 2019-10-10 | Apple Inc. | Point cloud compression |
US20210176474A1 (en) * | 2018-04-11 | 2021-06-10 | Sony Corporation | Image processing apparatus and method |
WO2019199726A1 (en) * | 2018-04-11 | 2019-10-17 | Interdigital Vc Holdings, Inc. | A method for encoding depth values of a set of 3d points once orthogonally projected into at least one image region of a projection plane |
WO2019234290A1 (en) * | 2018-06-04 | 2019-12-12 | Nokia Technologies Oy | An apparatus, a method and a computer program for volumetric video |
CN110662087A (en) | 2018-06-30 | 2020-01-07 | 华为技术有限公司 | Point cloud coding and decoding method and coder-decoder |
US11328450B2 (en) * | 2018-06-30 | 2022-05-10 | Huawei Technologies Co., Ltd. | Point cloud encoding method, point cloud decoding method, encoder, and decoder |
US20200013235A1 (en) * | 2018-07-03 | 2020-01-09 | Industrial Technology Research Institute | Method and apparatus for processing patches of point cloud |
JP2020017946A (en) | 2018-07-03 | 2020-01-30 | 財團法人工業技術研究院Industrial Technology Research Institute | Point cloud patch processing method and apparatus |
US20200014953A1 (en) * | 2018-07-05 | 2020-01-09 | Apple Inc. | Point cloud compression with multi-resolution video encoding |
US11699248B2 (en) * | 2018-07-11 | 2023-07-11 | Sony Corporation | Image processing apparatus and method |
KR102473729B1 (en) | 2018-07-12 | 2022-12-01 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Point cloud encoding method, point cloud decoding method, encoder, and decoder |
US20200153885A1 (en) * | 2018-10-01 | 2020-05-14 | Lg Electronics Inc. | Apparatus for transmitting point cloud data, a method for transmitting point cloud data, an apparatus for receiving point cloud data and/or a method for receiving point cloud data |
US20210304443A1 (en) * | 2018-12-13 | 2021-09-30 | Huawei Technologies Co., Ltd. | Point Cloud Encoding and Decoding Method and Apparatus |
US20210337237A1 (en) * | 2019-01-14 | 2021-10-28 | Huawei Technologies Co., Ltd. | Efficient Patch Rotation in Point Cloud Coding |
Non-Patent Citations (8)
Title |
---|
"Geometric Transformations" found at https://web.ma.utexas.edu/users/gilbert/M340L/LA05GeometricTrans.pdf (Year: 2013). * |
"Some linear transformations on R2" Fall 2013 lecture notes for MATH130 at Clark University found at: https://www2.clarku.edu/faculty/djoyce/ma130/lintrans2.pdf (Year: 2013). * |
Anonymous, Rotation matrix, Wikipedia, Jul. 10, 2018, 22 pages. |
C. Guede(Technicolor) et al, Geometry image coding improvements, International Organisation for Standardisation Organisation Internationale De Normalisation, Coding of Moving Pictures and Audio, ISO/IEC JTC1/SC29/WG11 MPEG2016/ M42111, Jan. 2018, Gwangju, Korea, 15 pages1 XP030070453. |
Mammou, K., "First Working Draft for PCC Category 2," Internatonal Organizaton for Standardization Organisaton Internatonale De Normalisaton, ISO/IEC JTC 1/SC 29/WG 11, Coding of Moving Pictures and Audio, ISO/IEC JTC1/SC29/WG11, MPEG 2012/N17374, Jan. 2018, Gwangju, Korea, 5 pages. |
Sebastian Schwarz(Nokia Technologies), Nokia's response to CfP for Point Cloud Compression (Category 2), International Organisation for Standardisation Organisation Internationale De Normalisation, Coding of Moving Pictures and Audio, ISO/IEC JTC1/SC29/WG11 MPEG2017/M41779, Oct. 2017, Macau, CN, 22 pages. XP030070121. |
Wikipedia, "Rotation matrix" (published on Apr. 28, 2018), https://web.archive.org/web/20180428010630/https://en.wikipedia.org/wiki/Rotation_matrix, 21 pages. |
Zhou, J., et al., "Trends and technologies of video coding," Telecommunications Science, 2017, 10 pages. |
Also Published As
Publication number | Publication date |
---|---|
KR20240133753A (en) | 2024-09-04 |
CN110719497A (en) | 2020-01-21 |
US20210183110A1 (en) | 2021-06-17 |
MX2021000396A (en) | 2021-05-12 |
KR20210030440A (en) | 2021-03-17 |
SG11202100255QA (en) | 2021-02-25 |
EP3813377B1 (en) | 2024-10-02 |
KR102473729B1 (en) | 2022-12-01 |
KR102698120B1 (en) | 2024-08-22 |
JP2021524642A (en) | 2021-09-13 |
KR20220165287A (en) | 2022-12-14 |
EP3813377A1 (en) | 2021-04-28 |
WO2020011265A1 (en) | 2020-01-16 |
BR112021000366A2 (en) | 2021-04-06 |
JP7264572B2 (en) | 2023-04-25 |
EP3813377A4 (en) | 2021-06-02 |
CN110719497B (en) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12165366B2 (en) | Point cloud encoding method and decoding method using rotation matrixes, encoder, and decoder | |
US11704837B2 (en) | Point cloud encoding method, point cloud decoding method, encoder, and decoder | |
US11875538B2 (en) | Point cloud encoding method and encoder | |
US11388442B2 (en) | Point cloud encoding method, point cloud decoding method, encoder, and decoder | |
US11961265B2 (en) | Point cloud encoding and decoding method and apparatus | |
CN111479114B (en) | Point cloud encoding and decoding method and device | |
WO2020063294A1 (en) | Point cloud encoding and decoding method and encoder/decoder | |
US12212762B2 (en) | Point cloud encoding method and apparatus, point cloud decoding method and apparatus, and storage medium | |
WO2020147379A1 (en) | Point cloud filtering method and device and storage medium | |
US20250069271A1 (en) | Point Cloud Encoding Method, and Decoding Method Using Rotation Matrices, Encoder, and Decoder | |
WO2020063718A1 (en) | Point cloud encoding/decoding method and encoder/decoder | |
EP4513874A2 (en) | Point cloud encoding method, point cloud decoding method, encoder, and decoder | |
WO2020015517A1 (en) | Point cloud encoding method, point cloud decoding method, encoder and decoder | |
WO2020143725A1 (en) | Point cloud decoding method and decoder | |
WO2020057338A1 (en) | Point cloud coding method and encoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: APPLICATION DISPATCHED FROM PREEXAM, NOT YET DOCKETED |
|
AS | Assignment |
Owner name: HUAWEI TECHNOLOGIES CO., LTD., CHINA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ZHANG, DEJUN;LIU, BO;HU, WEI;AND OTHERS;SIGNING DATES FROM 20210304 TO 20210513;REEL/FRAME:056243/0590 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION COUNTED, NOT YET MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: AWAITING TC RESP., ISSUE FEE NOT PAID |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction |