WO2020015517A1 - Point cloud encoding method, point cloud decoding method, encoder and decoder - Google Patents

Point cloud encoding method, point cloud decoding method, encoder and decoder Download PDF

Info

Publication number
WO2020015517A1
WO2020015517A1 PCT/CN2019/093972 CN2019093972W WO2020015517A1 WO 2020015517 A1 WO2020015517 A1 WO 2020015517A1 CN 2019093972 W CN2019093972 W CN 2019093972W WO 2020015517 A1 WO2020015517 A1 WO 2020015517A1
Authority
WO
WIPO (PCT)
Prior art keywords
patch
axis
identification information
bitangent
tangent
Prior art date
Application number
PCT/CN2019/093972
Other languages
French (fr)
Inventor
Dejun Zhang
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of WO2020015517A1 publication Critical patent/WO2020015517A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame

Definitions

  • Embodiments of this application relate to the field of encoding/decoding 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 improve point cloud encoding and decoding performance.
  • an embodiment of this application provides a point cloud encoding method, including:
  • auxiliary information of a to-be-encoded patch for example, patchLi st[i]
  • the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patch Li st[i ] . projection idx)
  • the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch);
  • the first identification information (for example, patchList[i] projection idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch.
  • the first identification information for example, patch Li st[i] projection idx
  • a first value for example, 0
  • an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped
  • the first identification information for example, patchLi st[i ] .
  • projection idx is a second value (for example, 1)
  • an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped.
  • the first identification information when the first identification information is the first value (for example, 0), the first identification information indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information is the second value (for example, 1), the first identification information indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch.
  • a first method for example, a method Ml
  • the first identification information indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch.
  • the auxiliary information of the patch further includes second identification information of the patch (patchList[i].have_matched_patch_flag), and the second identification information indicates that there is no reference patch that matches the patch, in a reference point cloud of the patch.
  • the obtaining auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud includes:
  • the second identification information of the patch (patch Li st [i ] . have m atched patch fl ag), where the second identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and when the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array), constructing the first identification information (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch.
  • the reference patch may also be referred to as a matched patch
  • the first identification information for example, patchList[i] projection idx
  • the method further includes:
  • the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch includes:
  • the reference tangent axis is the tangent axis of the patch
  • the reference bitangent axis is the bitangent axis of the patch(for example, querying a table based on the index of the normal axis of the patch to obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes).
  • a reference tangent axis for example, an index of the reference tangent axis
  • a reference bitangent axis for example, an index of the reference bitangent axis
  • normal axis for example, the index of the normal axis
  • the reference tangent axis for example, the index of the reference tangent axis
  • the reference bitangent axis for example, the index of the reference bitangent axis
  • the reference bitangent axis for example, the index of the reference bitangent axis
  • the tangent axis of the patch for example, the index of the tangent axis of the patch
  • the first identification information indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the third method to determine the tangent axis of the patch and the bitangent axis of the patch includes:
  • a reference tangent axis for example, an index of the reference tangent axis
  • a reference bitangent axis for example, an index of the reference bitangent axis
  • normal axis for example, the index of the normal axis
  • an embodiment of this application provides a point cloud decoding method, including:
  • auxiliary information of a to-be-decoded patch for example, patchLi st[i]
  • the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patchList[i] projection idx)
  • the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch);
  • the geometry information of the patch includes geometric information of a plurality of patches.
  • Geometry information of a patch is coordinate values of a point of the patch in a point cloud (for example, each point of the patch in the point cloud) in three-dimensional space.
  • Geometry information of a point cloud is coordinate values of a point in the point cloud (for example, each point in the point cloud) in three-dimensional space.
  • the determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing includes:
  • the first identification information indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch.
  • the first identification information of the patch for example, patchList[i] projection idx
  • a first value for example, 0
  • an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information of the patch (for example, patchList[i] projection idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped.
  • the first identification information of the patch when the first identification information of the patch is the first value (for example, 0), the first identification information indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch is the second value (for example, 1), the first identification information indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch.
  • a first method for example, a method Ml
  • the first identification information of the patch when the first identification information of the patch is the second value (for example, 1), the first identification information indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch.
  • the parsing a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud includes:
  • the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array), parsing the bitstream to obtain the first identification information of the patch (for example, patchLi st[i] . projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch.
  • the reference point cloud of the patch for example, a reference patch array
  • the first identification information when the first identification information is a third value, the first identification information indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch, where the third method is different from the first method, and/or is different from the second method.
  • a third method for example, a method M3
  • the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch includes:
  • the reference tangent axis is the tangent axis of the patch
  • the reference bitangent axis is the bitangent axis of the patch (for example, obtaining an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes).
  • the first identification information indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the second method to determine the tangent axis of the patch and the bitangent axis of the patch includes:
  • the reference tangent axis is used as the bitangent axis of the patch (for example, the index of the reference tangent axis is used as the index of the bitangent axis of the patch), and/or the reference bitangent axis is used as the tangent axis of the patch (for example, the index of the reference bitangent axis is used as the index of the tangent axis of the patch).
  • the first identification information indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the third method to determine the tangent axis of the patch and the bitangent axis of the patch includes:
  • obtaining a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes for example, obtaining an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes); and
  • an embodiment of this application provides another point cloud encoding method, including:
  • auxiliary information of a to-be-encoded patch for example, patchLi st[i]
  • the auxiliary information of the patch includes X th identification information of the patch (for example, patchList[i].have_matched_patch_flag or patchLi st[i ] . matched _patch_flag), and the X th identification information indicates whether there is any reference patch that matches the patch, in a reference point cloud of the patch;
  • the auxiliary information of the patch further includes an index of a normal axis of the patch (for example, patchList[i].normal_axis) and first identification information of the patch (for example, patchList[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch).
  • the auxiliary information of the patch when the X th identification information (for example, patchList[i].have_matched_patch flag) indicates that there is a reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of the reference patch (for example, patchLi st[i ] . matched patch idx), the index of the reference patch is used to obtain first identification information of the reference patch
  • the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. It should be noted that the auxiliary information of the patch may not include the index of the normal axis of the patch, and the first identification information of the reference patch
  • the X th identification information of the patch (for example, patchLi st[i] . matched _patch_flag) is further used to indicate the index of the reference patch that matches the patch, the X th identification information is used to obtain the first identification information of the reference patch
  • the first identification information of the patch indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch.
  • the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) infers or indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch.
  • the first identification information of the patch for example, patchLi st[i ] . projection idx
  • the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped.
  • the first identification information of the patch for example, patch Li st[i] projection idx
  • the first identification information of the reference patch ref_patchList[patchList[i].matched_patch_idx].projection_idx
  • the first identification information of the patch or the first identification information of the reference patch indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch (for example, patchLi st[i ] .
  • projection idx) or the first identification information of the reference patch is the second value (for example, 1), the first identification information of the patch or the first identification information of the reference patch indicates that a second method (for example, a method M2)

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Stored Programmes (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Embodiments of this application disclose a point cloud encoding method, a point cloud decoding method, an encoder, and a decoder, relate to the field of encoding/ decoding technologies, and are used to provide technical solutions for effectively encoding and decoding point cloud data. The method may include: obtaining auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud, where the auxiliary information of the patch includes an index of a normal axis of the patch and first identification information of the patch, and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch; and encoding the auxiliary information of the patch into a bitstream.

Description

POINT CLOUD ENCODING METHOD, POINT CLOUD DECODING METHOD, ENCODER AND DECODER
TECHNICAL FIELD
[0001] Embodiments of this application relate to the field of encoding/decoding technologies, and in particular, to a point cloud encoding method, a point cloud decoding method, an encoder, and a decoder.
BACKGROUND
[0002] With continuous development of 3D sensor (for example, 3D scanner) technologies, it is increasingly convenient to collect point cloud data, with an increasing scale of collected point cloud data. Therefore, how point cloud data is effectively encoded and decoded becomes an issue to be urgently resolved.
SUMMARY
[0003] Embodiments of this application provide a point cloud encoding method, a point cloud decoding method, an encoder, and a decoder, to improve point cloud encoding and decoding performance.
[0004] According to a first aspect, an embodiment of this application provides a point cloud encoding method, including:
obtaining auxiliary information of a to-be-encoded patch (for example, patchLi st[i]) in a to-be-encoded point cloud, where the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patch Li st[i ] . projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch); and
encoding the auxiliary information of the patch into a bitstream.
[0005] In a possible design, the first identification information (for example, patchList[i] projection idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch.
[0006] In a possible design, when the first identification information (for example, patch Li st[i] projection idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information (for example, patchLi st[i ] . projection idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped.
[0007] In a possible design, when the first identification information is the first value (for example, 0), the first identification information indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information is the second value (for example, 1), the first identification information indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch.
[0008] In a possible design, the auxiliary information of the patch further includes second identification information of the patch (patchList[i].have_matched_patch_flag), and the second identification information indicates that there is no reference patch that matches the patch, in a reference point cloud of the patch.
[0009] In a possible design, the obtaining auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud includes:
constructing the second identification information of the patch (patch Li st [i ] . have m atched patch fl ag), where the second identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and when the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array), constructing the first identification information (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch.
[0010] In a possible design, when the first identification information is a third value, the first identification information indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch, where the third method is different from the first method, and/or is different from the second method.
[0011] In a possible design, the method further includes:
after the tangent axis of the patch and the bitangent axis of the patch are determined, projecting the patch from three-dimensional space onto two-dimensional space based on the tangent axis of the patch and the bitangent axis of the patch.
[0012] In a possible design, the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch includes:
obtaining a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch(for example, querying a table based on the index of the normal axis of the patch to obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes).
[0013] In a possible design, the first identification information indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the second method to determine the tangent axis of the patch and the bitangent axis of the patch includes:
obtaining a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and
swapping the reference tangent axis and the reference bitangent axis, where the reference tangent axis (for example, the index of the reference tangent axis) is used as the bitangent axis of the patch (for example, the index of the bitangent axis of the patch), and/or the reference bitangent axis (for example, the index of the reference bitangent axis) is used as the tangent axis of the patch (for example, the index of the tangent axis of the patch).
[0014] In a possible design, the first identification information indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the third method to determine the tangent axis of the patch and the bitangent axis of the patch includes:
obtaining a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and
determining the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is Q , and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is ® .
[0015] According to a second aspect, an embodiment of this application provides a point cloud decoding method, including:
parsing a bitstream to obtain auxiliary information of a to-be-decoded patch (for example, patchLi st[i]) in a to-be-decoded point cloud, where the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patchList[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch);
determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing; and
reconstructing geometry information of the patch based on the tangent axis and the bitangent axis of the patch. In an implementation, the geometry information of the patch is reconstructed based on the normal axis, the tangent axis and the bitangent axis of the patch. The geometric information of the point cloud includes geometric information of a plurality of patches.
[0016] Geometry information of a patch is coordinate values of a point of the patch in a point cloud (for example, each point of the patch in the point cloud) in three-dimensional space.
[0017] Geometry information of a point cloud is coordinate values of a point in the point cloud (for example, each point in the point cloud) in three-dimensional space.
[0018] In a possible design, the determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing includes:
determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis of the patch obtained through parsing, by using the method that is for determining the tangent axis of the patch and the bitangent axis of the patch and that is indicated by the first identification information (for example, patchLi st[i ] . projection idx).
[0019] In a possible design, the first identification information (for example, patchLi st[i ] . projection idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. [0020] In a possible design, when the first identification information of the patch (for example, patchList[i] projection idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information of the patch (for example, patchList[i] projection idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped.
[0021] In a possible design, when the first identification information of the patch is the first value (for example, 0), the first identification information indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch is the second value (for example, 1), the first identification information indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch.
[0022] In a possible design, the auxiliary information of the patch further includes second identification information of the patch (patchList[i].have_matched_patch flag), and the second identification information indicates that there is no reference patch that matches the patch, in a reference point cloud of the patch.
[0023] In a possible design, the parsing a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud includes:
parsing the bitstream to obtain the second identification information of the patch (patchList[i].have_matched_patch flag); and
when the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array), parsing the bitstream to obtain the first identification information of the patch (for example, patchLi st[i] . projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch.
[0024] In a possible design, when the first identification information is a third value, the first identification information indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch, where the third method is different from the first method, and/or is different from the second method.
[0025] In a possible design, the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch includes:
obtaining a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch (for example, obtaining an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes).
[0026] In a possible design, the first identification information indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the second method to determine the tangent axis of the patch and the bitangent axis of the patch includes:
obtaining a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, obtaining an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch, by querying a table based on the index of the normal axis of the patch, and the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes); and swapping the reference tangent axis and the reference bitangent axis (for example, swapping the index of the reference tangent axis and the index of the reference bitangent axis), where
the reference tangent axis is used as the bitangent axis of the patch (for example, the index of the reference tangent axis is used as the index of the bitangent axis of the patch), and/or the reference bitangent axis is used as the tangent axis of the patch (for example, the index of the reference bitangent axis is used as the index of the tangent axis of the patch).
[0027] In a possible design, the first identification information indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the third method to determine the tangent axis of the patch and the bitangent axis of the patch includes:
obtaining a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, obtaining an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes); and
determining the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is Q , and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is ® .
[0028] According to a third aspect, an embodiment of this application provides another point cloud encoding method, including:
obtaining auxiliary information of a to-be-encoded patch (for example, patchLi st[i]) in a to-be-encoded point cloud, where the auxiliary information of the patch includes Xth identification information of the patch (for example, patchList[i].have_matched_patch_flag or patchLi st[i ] . matched _patch_flag), and the Xth identification information indicates whether there is any reference patch that matches the patch, in a reference point cloud of the patch; and
encoding the auxiliary information of the patch into a bitstream.
[0029] In a possible design, when the Xth identification information (for example, patchList[i].have_matched_patch flag) indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of a normal axis of the patch (for example, patchList[i].normal_axis) and first identification information of the patch (for example, patchList[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch).
[0030] In a possible design, when the Xth identification information (for example, patchList[i].have_matched_patch flag) indicates that there is a reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of the reference patch (for example, patchLi st[i ] . matched patch idx), the index of the reference patch is used to obtain first identification information of the reference patch
(ref patchList[patchList[i] matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. It should be noted that the auxiliary information of the patch may not include the index of the normal axis of the patch, and the first identification information of the reference patch
(ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchLi st[i]. projection idx).
[0031] In a possible design, the Xth identification information of the patch (for example, patchLi st[i] . matched _patch_flag) is further used to indicate the index of the reference patch that matches the patch, the Xth identification information is used to obtain the first identification information of the reference patch
(ref patchList[patchList[i] matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. The first identification information of the reference patch (ref patchList[patchList[i] matched _patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx).
[0032] In a possible design, the first identification information of the patch (for example, patchList[i] projection idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. The first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) infers or indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch.
[0033] In a possible design, when the first identification information of the patch (for example, patch Li st[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or
when the first identification information of the patch (for example, patchLi st[i ] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped.
[0034] In a possible design, when the first identification information of the patch (for example, patch Li st[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the first value (for example, 0), the first identification information of the patch or the first identification information of the reference patch indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch (for example, patchLi st[i ] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the second value (for example, 1), the first identification information of the patch or the first identification information of the reference patch indicates that a second method (for example, a method M2)

Claims

is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0035] In a possible design, the obtaining auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud includes: constructing the Xth identification information of the patch (patchList[i].have_matched_patch_flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); constructing the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fourth value (for example, 0) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or constructing the index of the reference patch (for example, patchList[i] matched patch idx), where the index of the reference patch is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fifth value (for example, 1) used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array). The first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0036] In a possible design, the obtaining auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud includes: constructing the Xth identification information of the patch (patchList[i].have_matched_patch_flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); constructing the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a sixth value (for example, UNMATCHED PATCH FLAG) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or the Xth identification information is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a seventh value used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array) and indicate the index of the reference patch. The first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0037] In a possible design, when the first identification information of the patch (for example, patchList[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a third value (for example, 2), the first identification information of the patch or the first identification information of the reference patch indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0038] In a possible design, the method further includes: after the tangent axis of the patch and the bitangent axis of the patch are determined, projecting the patch from three-dimensional space onto two-dimensional space based on the tangent axis of the patch and the bitangent axis of the patch. [0039] In a possible design, the first identification information of the patch or the first identification information of the reference patch indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch includes: obtaining a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch. For example, obtaining an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the normal axis (for example, the index of the normal axis) of the patch and the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. [0040] In a possible design, the first identification information of the patch or the first identification information of the reference patch indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the second method to determine the tangent axis of the patch and the bitangent axis of the patch includes: obtaining a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes, For example, obtaining an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the normal axis (for example, the index of the normal axis) of the patch and the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes; and swapping the reference tangent axis and the reference bitangent axis, where the reference tangent axis (for example, the index of the reference tangent axis) is used as the bitangent axis of the patch (for example, the index of the bitangent axis of the patch), and/or the reference bitangent axis (for example, the index of the reference bitangent axis) is used as the tangent axis of the patch (for example, the index of the tangent axis of the patch). [0041] In a possible design, the first identification information of the patch or the first identification information of the reference patch indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the third method to determine the tangent axis of the patch and the bitangent axis of the patch includes: obtaining a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes for example, obtaining an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis; and determining the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is Q , and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is ® . [0042] According to a fourth aspect, an embodiment of this application provides another point cloud decoding method, including: parsing a bitstream to obtain auxiliary information of a to-be-decoded patch (for example, patchLi st[i]) in a to-be-decoded point cloud, where the auxiliary information of the patch includes Xth identification information of the patch (for example, patchList[i].have_matched_patch flag or patchList[i] matched _patch flag), and the Xth identification information indicates whether there is any reference patch that matches the patch, in a reference point cloud of the patch; and determining a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that includes at least the Xth identification information of the patch; and reconstructing geometry information of the patch based on the tangent axis and the bitangent axis of the patch. In an implementation, the geometry information of the patch is reconstructed based on the normal axis, the tangent axis and the bitangent axis of the patch. [0043] In a possible design, when the Xth identification information (for example, patchList[i].have_matched_patch flag) indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of a normal axis of the patch (for example, patchList[i].normal_axis) and first identification information of the patch (for example, patchList[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch). [0044] In a possible design, when the Xth identification information (for example, patchList[i].have_matched_patch flag) indicates that there is a reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of the reference patch (for example, patchLi st[i ] . matched patch idx), the index of the reference patch is used to obtain first identification information of the reference patch(ref patchList[patchList[i] matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. It should be noted that the auxiliary information of the patch may not include the index of the normal axis of the patch, and the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0045] In a possible design, the Xth identification information of the patch (for example, patchList[i] matched _patch flag) is further used to indicate the index of the reference patch that matches the patch, the Xth identification information is used to obtain the first identification information of the reference patch(ref patchList[patchList[i] matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. [0046] In a possible design, the first identification information of the patch (for example, patch Li st[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. The first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchLi st[i]. projection idx). [0047] In a possible design, when the first identification information of the patch (for example, patch Li st[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information of the patch (for example, patchLi st[i ] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped. [0048] In a possible design, when the first identification information of the patch (for example, patch Li st[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the first value (for example, 0), the first identification information of the patch or the first identification information of the reference patch indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch (for example, patchList[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the second value (for example, 1), the first identification information of the patch or the first identification information of the reference patch indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0049] In a possible design, the parsing a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud includes: parsing the bitstream to obtain the Xth identification information of the patch (for example, patchList[i].have_matched_patch_flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); parsing the bitstream to obtain the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fourth value (for example, 0) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or parsing the bitstream to obtain the index of the reference patch (for example, patchList[i] matched _patch_idx), where the index of the reference patch is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fifth value (for example, 1) used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array). The first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0050] In a possible design, the parsing a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud includes: parsing the bitstream to obtain the Xth identification information of the patch (patchList[i] matched patch flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); parsing the bitstream to obtain the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a sixth value (for example, UNMATCHED PATCH FLAG) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or the Xth identification information is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a seventh value used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array) and indicate the index of the reference patch. The first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0051] In a possible design, the determining a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that includes at least the Xth identification information of the patch includes: determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis of the patch by using the method that is for determining the tangent axis of the patch and the bitangent axis of the patch and that is indicated by the first identification information of the patch (for example, patchList[i] projection idx). [0052] In a possible design, the determining a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that includes at least the Xth identification information of the patch includes: obtaining the first identification information of the reference patch and an index of a normal axis of the reference patch based on the index of the reference patch or the Xth identification information, where the first identification information of the reference patch is used as the first identification information of the patch, and the index of the normal axis of the reference patch is used as the index of the normal axis of the patch; and determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis of the reference patch by using the method that is for determining the tangent axis of the patch and the bitangent axis of the patch and that is indicated by the first identification information of the reference patch. [0053] In a possible design, when the first identification information of the patch (for example, patch Li st[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a third value (for example, 2), the first identification information of the patch or the first identification information of the reference patch indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0054] In a possible design, the first identification information of the patch or the first identification information of the reference patch indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch includes: obtaining a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch. For example, obtaining an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes. [0055] In a possible design, the first identification information of the patch or the first identification information of the reference patch indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the second method to determine the tangent axis of the patch and the bitangent axis of the patch includes: obtaining a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis of the patch (for example, the index of the normal axis) based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. For example, obtaining an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes; and swapping the reference tangent axis and the reference bitangent axis, where swapping the reference tangent axis and the reference bitangent axis (for example, swapping the index of the reference tangent axis and the index of the reference bitangent axis), where the reference tangent axis is used as the bitangent axis of the patch (for example, the index of the reference tangent axis is used as the index of the bitangent axis of the patch), and/or the reference bitangent axis is used as the tangent axis of the patch (for example, the index of the reference bitangent axis is used as the index of the tangent axis of the patch). [0056] In a possible design, the first identification information of the patch or the first identification information of the reference patch indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the third method to determine the tangent axis of the patch and the bitangent axis of the patch includes: obtaining a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. For example, obtaining an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes; and determining the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is Q and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is ® . [0057] According to a fifth aspect, an embodiment of this application provides an encoder, including: a patch information generation module, configured to obtain auxiliary information of a to-be-encoded patch (for example, patchLi st[i ] ) in a to-be-encoded point cloud, where the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patch Li st[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch); and an auxiliary information encoding module, configured to encode the auxiliary information of the patch into a bitstream. [0058] According to a sixth aspect, an embodiment of this application provides a decoder, including: an auxiliary information decoding module, configured to: parse a bitstream to obtain auxiliary information of a to-be-decoded patch (for example, patchList[i]) in a to-be-decoded point cloud, where the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patchList[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch); and determine the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing; and a point cloud geometry information reconstruction module, configured to reconstruct geometry information of the patch based on the tangent axis and the bitangent axis of the patch. In an implementation, the geometry information of the patch is reconstructed based on the normal axis, the tangent axis and the bitangent axis of the patch. [0059] According to a seventh aspect, an embodiment of this application provides another encoder, including: a patch information generation module, configured to obtain auxiliary information of a to-be-encoded patch (for example, patchLi st[i ] ) in a to-be-encoded point cloud, where the auxiliary information of the patch includes Xth identification information of the patch (for example, patch Li st [i ] . have m atched patch fl ag or patchLi st[i ] . matched_patch_flag), and the Xth identification information indicates whether there is any reference patch that matches the patch, in a reference point cloud of the patch; and an auxiliary information encoding module, configured to encode the auxiliary information of the patch into a bitstream. In a possible design, wherein when the Xth identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further comprises an index of a normal axis of the patch and first identification information of the patch, and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch. In a possible design, when the Xth identification information indicates that there is a reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further comprises an index of the reference patch, the index of the reference patch is used to obtain first identification information of the reference patch, and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. In a possible design, the Xth identification information of the patch is further used to indicate the index of the reference patch that matches the patch, the Xth identification information is used to obtain the first identification information of the reference patch, and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. In a possible design, wherein the first identification information of the patch or the first identification information of the reference patch indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. In a possible design, wherein when the first identification information of the patch or the first identification information of the reference patch is a first value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information of the patch or the first identification information of the reference patch is a second value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped. In a possible design, wherein when the first identification information of the patch or the first identification information of the reference patch is the first value, the first identification information of the patch or the first identification information of the reference patch indicates that a first method is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch or the first identification information of the reference patch is the second value, the first identification information of the patch or the first identification information of the reference patch indicates that a second method is used to determine the tangent axis of the patch and the bitangent axis of the patch. In a possible design, wherein the patch information generation module is configured to: construct the Xth identification information of the patch, wherein the Xth identification information indicates whether there is any reference patch that matches the patch, in the reference point cloud of the patch; construct the index of the normal axis of the patch and the first identification information of the patch, wherein the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fourth value used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch; and/or construct the index of the reference patch, wherein the index of the reference patch is used to obtain the first identification information of the reference patch, the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fifth value used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch. In a possible design, wherein the patch information generation module is configured to: construct the Xth identification information of the patch, wherein the Xth identification information indicates whether there is any reference patch that matches the patch, in the reference point cloud of the patch; construct the index of the normal axis of the patch and the first identification information of the patch, wherein the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a sixth value used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch; and/or the Xth identification information is used to obtain the first identification information of the reference patch, the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a seventh value used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch and indicate the index of the reference patch. In a possible design, wherein when the first identification information of the patch or the first identification information of the reference patch is a third value, the first identification information of the patch or the first identification information of the reference patch indicates that a third method is used to determine the tangent axis of the patch and the bitangent axis of the patch. In a possible design, wherein the patch information generation module is further configured to: after the tangent axis of the patch and the bitangent axis of the patch are determined, project the patch from three-dimensional space onto two-dimensional space based on the tangent axis of the patch and the bitangent axis of the patch. In a possible design, wherein the first identification information of the patch or the first identification information of the reference patch indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the first method to determine the tangent axis of the patch and the bitangent axis of the patch, the patch information generation module is specifically configured to: obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes, wherein the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch. For example, obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table comprises a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. In a possible design, wherein the first identification information of the patch or the first identification information of the reference patch indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the second method to determine the tangent axis of the patch and the bitangent axis of the patch, the patch information generation module is specifically configured to: obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. For example, obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes; and swap the reference tangent axis and the reference bitangent axis, wherein the reference tangent axis is used as the bitangent axis of the patch, and/or the reference bitangent axis is used as the tangent axis of the patch. In a possible design, wherein the first identification information of the patch or the first identification information of the reference patch indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the third method to determine the tangent axis of the patch and the bitangent axis of the patch, the patch information generation module is specifically configured to: obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. For example, obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes; and determine the tangent axis of the patch and the bitangent axis of the patch, wherein an orientation angle of the tangent axis of the patch relative to the reference tangent axis is ® , and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is Q . [0060] According to an eighth aspect, an embodiment of this application provides another decoder, including: an auxiliary information decoding module, configured to: parse a bitstream to obtain auxiliary information of a to-be-decoded patch (for example, patchList[i]) in a to-be-decoded point cloud, where the auxiliary information of the patch includes the Xth identification information of the patch (for example, patchList[i].have_matched_patch_flag or patchList[i] matched _patch_flag), and the Xth identification information indicates whether there is any reference patch that matches the patch, in a reference point cloud of the patch; and determine a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that includes at least the Xth identification information of the patch; and a point cloud geometry information reconstruction module, configured to reconstruct geometry information of the patch based on the tangent axis and the bitangent axis of the patch. In an implementation, the geometry information of the patch is reconstructed based on the normal axis, the tangent axis and the bitangent axis of the patch. In a possible design, wherein when the Xth identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further comprises an index of a normal axis of the patch and first identification information of the patch, and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch. In a possible design, wherein when the Xth identification information indicates that there is a reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further comprises an index of the reference patch, the index of the reference patch is used to obtain first identification information of the reference patch, and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. In a possible design, wherein the Xth identification information of the patch is further used to indicate the index of the reference patch that matches the patch, the Xth identification information is used to obtain the first identification information of the reference patch, and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. In a possible design, wherein the first identification information of the patch or the first identification information of the reference patch indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. In a possible design, wherein when the first identification information of the patch or the first identification information of the reference patch is a first value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information of the patch or the first identification information of the reference patch is a second value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped. In a possible design, wherein when the first identification information of the patch or the first identification information of the reference patch is the first value, the first identification information of the patch or the first identification information of the reference patch indicates that a first method is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch or the first identification information of the reference patch is the second value, the first identification information of the patch or the first identification information of the reference patch indicates that a second method is used to determine the tangent axis of the patch and the bitangent axis of the patch. In a possible design, wherein the auxiliary information decoding module is configured to: parse the bitstream to obtain the Xth identification information of the patch, wherein the Xth identification information indicates whether there is any reference patch that matches the patch, in the reference point cloud of the patch; parse the bitstream to obtain the index of the normal axis of the patch and the first identification information of the patch, wherein the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fourth value used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch; and/or parse the bitstream to obtain the index of the reference patch, wherein the index of the reference patch is used to obtain the first identification information of the reference patch, the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fifth value used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch. In a possible design, wherein the auxiliary information decoding module is configured to: parse the bitstream to obtain the Xth identification information of the patch, wherein the Xth identification information indicates whether there is any reference patch that matches the patch, in the reference point cloud of the patch; parse the bitstream to obtain the index of the normal axis of the patch and the first identification information of the patch, wherein the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a sixth value used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch; and/or the Xth identification information is used to obtain the first identification information of the reference patch, the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a seventh value used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch and indicate the index of the reference patch. In a possible design, wherein in the aspect of determining a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that comprises at least the Xth identification information of the patch, the auxiliary information decoding module is configured to: determine the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis of the patch by using the method that is for determining the tangent axis of the patch and the bitangent axis of the patch and that is indicated by the first identification information of the patch. In a possible design, wherein in the aspect of determining a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that comprises at least the Xth identification information of the patch, the auxiliary information decoding module is configured to: obtain the first identification information of the reference patch and an index of a normal axis of the reference patch based on the index of the reference patch or the Xth identification information, wherein the first identification information of the reference patch is used as the first identification information of the patch, and the index of the normal axis of the reference patch is used as the index of the normal axis of the patch; and determine the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis of the reference patch by using the method that is for determining the tangent axis of the patch and the bitangent axis of the patch and that is indicated by the first identification information of the reference patch. In a possible design, wherein when the first identification information of the patch is a third value, the first identification information of the patch or the first identification information of the reference patch indicates that a third method is used to determine the tangent axis of the patch and the bitangent axis of the patch. In a possible design, wherein the first identification information of the patch or the first identification information of the reference patch indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the first method to determine the tangent axis of the patch and the bitangent axis of the patch, the auxiliary information decoding module is configured to: obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes, wherein the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch,. For example, obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes. In a possible design, wherein the first identification information of the patch or the first identification information of the reference patch indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the second method to determine the tangent axis of the patch and the bitangent axis of the patch, the auxiliary information decoding module is configured to: query a table based on the normal axis of the patch to obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. For example, obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes; and swap the reference tangent axis and the reference bitangent axis, wherein swap the reference tangent axis and the reference bitangent axis, wherein the reference tangent axis is used as the bitangent axis of the patch, and/or the reference bitangent axis is used as the tangent axis of the patch. In a possible design, wherein the first identification information of the patch or the first identification information of the reference patch indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the third method to determine the tangent axis of the patch and the bitangent axis of the patch, the auxiliary information decoding module is configured to: obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. For example, obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch by querying a table based on the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes; and determine the tangent axis of the patch and the bitangent axis of the patch, wherein an orientation angle of the tangent axis of the patch relative to the reference tangent axis is ® , and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is Q . [0061] According to a ninth aspect, an embodiment of this application provides a point cloud data encoding device, where 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: obtain auxiliary information of a to-be-encoded patch (for example, patchList[i]) in a to-be-encoded point cloud, where the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patchList[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch); and encode the auxiliary information of the patch into a bitstream. [0062] According to a tenth aspect, an embodiment of this application provides a point cloud data decoding device, where the device may include: a memory, configured to store point cloud data in a bitstream form, where the point cloud data includes a to-be-decoded patch; and a decoder, configured to: parse a bitstream to obtain auxiliary information of a to-be-decoded patch (for example, patchList[i]) in a to-be-decoded point cloud, where the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patchList[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch); determine the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing; and reconstruct geometry information of the patch based on the tangent axis and the bitangent axis of the patch. In an implementation, the geometry information of the patch is reconstructed based on the normal axis, the tangent axis and the bitangent axis of the patch. [0063] According to an eleventh aspect, an embodiment of this application provides another point cloud data encoding device, where 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: obtain auxiliary information of a to-be-encoded patch (for example, patchList[i]) in a to-be-encoded point cloud, where the auxiliary information of the patch includes the Xth identification information of the patch (for example, patchList[i].have_matched_patch flag or patchList[i] matched _patch flag), and the Xth identification information indicates whether there is any reference patch that matches the patch, in a reference point cloud of the patch; and encode the auxiliary information of the patch into a bitstream. [0064] According to a twelfth aspect, an embodiment of this application provides another point cloud data decoding device, where the device may include: a memory, configured to store point cloud data in a bitstream form, where the point cloud data includes a to-be-decoded patch; and a decoder, configured to: parse a bitstream to obtain auxiliary information of a to-be-decoded patch (for example, patchList[i]) in a to-be-decoded point cloud, where the auxiliary information of the patch includes the Xth identification information of the patch (for example, patch Li st [i ] . have m atched patch fl ag or patchList[i] matched_patch_flag), and the Xth identification information indicates whether there is any reference patch that matches the patch, in a reference point cloud of the patch; determine a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that includes at least the Xth identification information of the patch; and reconstruct geometry information of the patch based on the tangent axis and the bitangent axis of the patch. In an implementation, the geometry information of the patch is reconstructed based on the normal axis, the tangent axis and the bitangent axis of the patch. [0065] According to a thirteenth aspect, an embodiment of this application provides an encoding device, including a nonvolatile memory and a processor that are coupled to each other, where the processor invokes program code stored in the memory, to perform some or all of steps in any method according to the first aspect or the third aspect. [0066] According to a fourteenth aspect, an embodiment of this application provides a decoding device, including a nonvolatile memory and a processor that are coupled to each other, where the processor invokes program code stored in the memory, to perform some or all of steps in any method according to the second aspect or the fourth aspect. [0067] According to a fifteenth aspect, an embodiment of this application provides a computer readable storage medium, where the computer readable storage medium stores program code, and the program code includes instructions for performing some or all of steps in any method according to the first aspect to the fourth aspect. [0068] According to a sixteenth aspect, an embodiment of this application provides a computer program product. When the computer program product runs on a computer, the computer is enabled to perform some or all of steps in any method according to the first aspect to the fourth aspect. [0069] It should be understood that beneficial effects of any encoder/decoder, point cloud data encoding/decoding device, apparatus for determining a tangent axis and a bitangent axis of a patch, encoding/decoding apparatus, and computer readable storage medium that are provided above may be corresponding to the beneficial effects of the methods provided in the foregoing corresponding aspects. Details are not described herein again. DESCRIPTION OF DRAWINGS [0070] FIG. 1 is a block diagram of an example point cloud coding system that can be applied to an embodiment of this application; [0071] FIG. 2 is a schematic block diagram of an example encoder that can be applied to an embodiment of this application; [0072] FIG. 3 is a schematic structural diagram of an example bitstream that can be applied to an embodiment of this application; [0073] FIG. 4 is a schematic block diagram of an example decoder that can be applied to an embodiment of this application; [0074] FIG. 5 is a schematic diagram of a patch generation process that can be applied to a TMC2; [0075] FIG. 6 is a schematic diagram of an example patch that can be applied to an embodiment of this application; [0076] FIG. 7 is a schematic diagram of projecting a patch from three-dimensional space onto a two-dimensional plane provided in the prior art; [0077] FIG. 8 is a schematic diagram of an occupancy map of a point cloud provided in the prior art; [0078] FIG. 9 is a schematic flowchart 1 of a point cloud encoding method according to an embodiment of this application; [0079] FIG. 10 is a schematic diagram 1 of a patch, a patch pre-occupied occupancy map, and a patch occupancy map according to an embodiment of this application; [0080] FIG. 11 is a schematic flowchart 1 of a point cloud decoding method according to an embodiment of this application; [0081] FIG. 12 is a schematic flowchart 2 of another point cloud encoding method according to an embodiment of this application; [0082] FIG. 13 is a schematic diagram of orientation according to an embodiment of this application; [0083] FIG. 14 is a schematic flowchart 2 of another point cloud decoding method according to an embodiment of this application; [0084] FIG. 15 is a schematic block diagram 1 of an encoder according to an embodiment of this application; [0085] FIG. 16 is a schematic block diagram 1 of a decoder according to an embodiment of this application; [0086] FIG. 17 is a schematic block diagram 1 of an encoder according to an embodiment of this application; [0087] FIG. 18 is a schematic block diagram 1 of a decoder according to an embodiment of this application; and [0088] FIG. 19 is a schematic block diagram of an encoding device or a decoding device that can be applied to an embodiment of this application. DESCRIPTION OF EMBODIMENTS [0089] In descriptions of this application, 7" means "or" unless otherwise specified. For example, A/B may represent A or B. In this specification, "and/or" describes only an association relationship for describing associated objects and represents that three relationships may exist. For example, 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' refers to two or more than two. In addition, for ease of clear description of technical solutions of the embodiments of this application, terms such as "first" and "second" are used in the embodiments of this application to distinguish between same items having a basically same function and effect or similar items. A person skilled in the art can understand that the terms such as "first" and "second" are not used to limit a quantity and an execution sequence, and that the terms such as "first" and "second" are unnecessarily limited to be different. [0090] In the descriptions of this application, an example is used for description in which a three-dimensional space reference coordinate system is a world coordinate system (or referred to as a physical coordinate system), three coordinate axes of the world coordinate system are an X-axis, a Y-axis, and a Z-axis, and a correspondence between the three coordinate axes and indexes of the three coordinate axes is listed in Table 1. The X-axis is a coordinate axis in a horizontal direction, the Y-axis is a coordinate axis in a vertical direction, and the Z-axis is a coordinate axis perpendicular to a plane on which the X-axis and the Y-axis are located. Unified descriptions are provided herein, and are not repeated in the following. Table 1 [0091] FIG. 1 is a block diagram of an example point cloud coding system 1 that can be applied to an embodiment of this application. A term "point cloud coding" or "coding" may generally be 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 proposed 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, corresponding to the point cloud encoding method used by the encoder 100, proposed in this application. [0092] As shown in FIG. 1, 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 corresponding to the source apparatus 10, the destination apparatus 20, or 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 read-only memory (EEPROM), a flash memory, or any other medium that can be configured to store desired program code in a form of an instruction or a data structure and that can be accessed by a computer, as described in this specification. [0093] 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 similar apparatuses. [0094] The destination apparatus 20 may receive the encoded point cloud data from the source apparatus 10 through 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. In an instance, 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. In this instance, 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 (radio frequency, RF) spectrum or one or more physical transmission lines. The one or more communications media may be 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, an 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 [0095] In another example, the encoded data may be output from an output interface 140 to a storage apparatus 40. Similarly, the encoded point cloud data may be accessed by an input interface 240 from the storage apparatus 40. The storage apparatus 40 may include any one of a plurality of distributed data storage media or locally accessed data storage media, for example, a hard drive, a Blu-ray, a digital versatile disc (digital versatile disc, DVD), a compact disc read-only memory (compact disc read-only memory, 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. [0096] In another instance, the storage apparatus 40 may be corresponding 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. The file server includes a network server (for example, used for a website), a file transfer protocol (file transfer protocol, FTP) server, a network attached storage (network attached storage, NAS) apparatus, or a local disk drive. The destination apparatus 20 may access the encoded point cloud data by using any standard data connection (including an Internet connection). The standard data connection may include a radio channel (for example, a Wi-Fi connection), a wired connection (for example, a digital subscriber line (digital subscriber line, DSL) or a cable modem), or a combination thereof that is suitable for access of the encoded point cloud data stored in 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. [0097] The point cloud coding system 1 described in FIG. 1 is merely an instance, and the technologies in this application may be applicable to a point cloud coding (for example, a point cloud encoding or point cloud decoding) apparatus that participates in any data communication between the point cloud encoding apparatus and the point cloud decoding apparatus. In another instance, data is retrieved from a local memory, is transmitted in a network in a streaming manner, and the like. The point cloud 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. In many instances, apparatuses that only encode data and store the data to the memory and/or retrieve the data from the memory and decode the data and that do not communicate with each other perform encoding and decoding. [0098] In the instance in FIG. 1, the source apparatus 10 includes a data source 120, the encoder 100, and the output interface 140. In some instances, the output interface 140 may include a modulator/demodulator (modem) and/or a sender (or referred to as 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 feeding interface configured to receive point cloud data from a point cloud content provider, and/or a computer graphics system configured to generate point cloud data, or a combination of these sources of point cloud data. [0099] The encoder 100 may encode the point cloud data from the data source 120. In some instances, the source apparatus 10 directly sends the encoded point cloud data to the destination apparatus 20 through the output interface 140. In another instance, the encoded point cloud data may be alternatively stored to the storage apparatus 40, so that the destination apparatus 20 subsequently accesses the encoded point cloud data for decoding and/or play. [0100] In the instance in FIG. 1, the destination apparatus 20 includes the input interface 240, the decoder 200, and a display apparatus 220. In some instances, the input interface 240 includes a receiver and/or a modem. The input interface 240 may receive the encoded point cloud data through 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. Generally, the display apparatus 220 displays the encoded point cloud data. The display apparatus 220 may be one of a plurality of display apparatuses, for example, a liquid crystal display (liquid crystal display, LCD), a plasma display, an organic light-emitting diode (organic light-emitting diode, OLED) display, or another type of display apparatus. [0101] Although not shown in FIG. 1, in some aspects, the encoder 100 and the decoder 200 each may be integrated with an audio encoder and decoder, and may include an appropriate multiplexer-demultiplexer (multiplexer-demultiplexer, MUX-DEMUX) unit or other hardware and software, to process encoding of an audio and a video in a common data stream or a separate data stream. In some instances, if appropriate, the MUX-DEMUX unit can comply with an ITU H.223 multiplexer protocol, or another protocol such as a user datagram protocol (user datagram protocol, UDP). [0102] The encoder 100 and the decoder 200 each may be implemented as any one of the following plurality of circuits: one or more microprocessors, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a discrete logic, hardware, or any combination thereof. If software is used to partially implement this application, the apparatus may store an instruction used for the software to an appropriate nonvolatile computer readable storage medium, 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 into a part of a combined encoder/decoder (codec) in a corresponding apparatus. [0103] In this application, the encoder 100 may generally "send a signal notification" for some pieces of information or "send" some pieces of information to another apparatus such as the decoder 200. The term "send a signal notification" or "send" may roughly 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, may occur when a syntax element is stored to the computer readable storage medium in an encoded bit stream during encoding. Afterwards, the decoding apparatus may retrieve the syntax element at any time after the syntax element is stored to the medium. [0104] FIG. 2 is a schematic block diagram of an example encoder 100 that can be applied to an embodiment of this application. An MPEG (Moving Picture Expert Group) point cloud compression (Point Cloud Compression, PCC) encoding framework is used as an example for description in FIG. 2. In the instance in FIG. 2, the encoder 100 may include a patch information generation module 101, a packing module 102, a geometry image generation module 103, a texture image generation module 104, an image padding module 105, an image 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. [0105] The patch information generation module 101 is configured to use a method to divide a point cloud frame into a plurality of patches, and obtain related information of the generated patches and the like. A patch is a set including some points in a point cloud frame, and generally one connected component region is corresponding to one patch. The patch-related information may include but is not limited to at least one of the following information: a quantity of patches divided from a point cloud, information about a location of each patch in three-dimensional space, an index of a tangent axis, an index of a bitangent axis, and an index of a normal axis that are of each patch, a geometry image resulting from projecting each patch from three-dimensional space onto two-dimensional space, a size of a geometry image (for example, a width and a height of the geometry image) of each patch, and an occupancy map resulting from projecting each patch from three-dimensional space onto two-dimensional space. Some of the related information, such as a quantity of patches divided from a point cloud, an index of a normal axis of each patch, a size of a geometry image of each patch, information about a location of each patch in a point cloud, and size information of an 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). An occupancy map of each patch may be sent to the packing module 102 for packing. Specifically, patches of the point cloud are sorted in a specific order, for example, sorted in descending (ascending) order of widths/heights of occupancy maps of the patches; and then the occupancy maps of the patches are successively inserted into an unoccupied area of an occupancy map of the point cloud according to the sorted sequence of the patches, to obtain an occupancy map of the point cloud. In addition, information about a specific location of each patch in the occupancy map of the point cloud, the geometry image of each patch, and the like may be sent to the geometry image generation module 103. [0106] After obtaining the occupancy map of the point cloud, the packing module 102 may send the occupancy map of the point cloud to the occupancy map encoding module 107 for encoding; and may use the occupancy map of the point cloud to guide the geometry image generation module 103 to generate a geometry image of the point cloud and guide the texture image generation module 104 to generate a texture image of the point cloud. [0107] The geometry image generation module 103 is configured to: generate the geometry image of the point cloud based on the occupancy map of the point cloud and the occupancy map and the geometry image of each patch of the point cloud, and send the generated geometry image to the image padding module 105, so that the image padding module 105 pads an empty pixel in the received geometry image to obtain a padded geometry image. Video encoding is performed on the padded geometry image, video decoding is performed to obtain a decoded geometry image of the point cloud, and geometry information of a reconstructed point cloud is obtained by using the decoded geometry image, 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 colouring module to color the reconstructed point cloud, so as to obtain texture information of the reconstructed point cloud. The texture image generation module 104 is configured to: generate the texture image 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 image to the image padding module 105, so that the image padding module 105 pads an empty pixel in the received texture image to obtain a padded texture image. Optionally, the texture image generation module 104 may further generate the texture image 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. [0108] The padded geometry image and the padded texture image are sent by the image padding module 105 to the image or video-based encoding module 106, to perform image or video-based encoding. [0109] Finally, the image 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, and the multiplexer module 109 performs combination to form a bitstream, where the bitstream may be sent to an output interface 140. [0110] It can be understood that the encoder 100 shown in FIG. 2 is merely an example, and in specific implementation, the encoder 100 may include more or fewer modules than those shown in FIG. 2. This is not limited in this embodiment of this application. For example, 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-frame prediction mode, an intra-frame prediction mode, or the like. The prediction mode of the to-be-encoded point cloud may be used as auxiliary information and is sent to the auxiliary information encoding module 108 for encoding. Optionally, in some embodiments of this application, the prediction mode of the to-be-encoded point cloud may be sent to the patch information generation module 101. Subsequently, 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. [0111] It can be learnt from the foregoing description that the auxiliary information encoding module 108 may encode patch level-based information (such as an index of a normal axis of a patch) and frame level-based information (such as a quantity of patches included in a point cloud) into a bitstream. In an example, the encoder 100 may perform encoding based on a point cloud group, where each point cloud group may include at least two point cloud frames. In this case, the auxiliary information encoding module 108 may further encode GOF level-based information (such as a quantity of point cloud frames included in a point cloud group) into a bitstream. FIG. 3 is a schematic structural diagram of an example bitstream that can be applied to an embodiment of this application. The bitstream shown in FIG. 3 includes a part 1101 used to describe metadata information (may also be referred to as a syntax element) in the bitstream, and the part 1101 specifically includes the following fields. [0112] A field 1102 is metadata information of a frame header in a GOF, is used to describe GOF level information, and may include, for example, identification information of the GOF, a quantity of point cloud frames included in the GOF, and common information of point cloud frames in the GOF (such as the following information used to indicate description information of a bounding box size of a point cloud group). [0113] A field 1103 is metadata information of a first point cloud frame in the GOF, is used to describe frame level information related to the first point cloud frame, and may include, for example, a quantity of patches included in the first point cloud frame, resolutions of occupancy maps of all patches, a maximum quantity of patches that can be included in each smallest unit in the occupancy map of the point cloud, and common information of each patch in the first point cloud frame (such as the following information used to indicate description information of a bounding box size of the point cloud). [0114] A field 1104 is metadata information of patches of the first point cloud frame in the GOF, is used to describe patch level information related to the first point cloud frame, and may specifically include metadata information of the first patch, ...metadata information of the 1th patch, ...metadata information of the Ith patch in the first point cloud frame, where l£i£I, both i and I are integers, and I is a quantity of patched included in the first point cloud frame. Metadata information of a patch may include an index of a normal axis of the patch and the like. [0115] A field 1105 is metadata information of a j*11 point cloud frame in the GOF, and is used to describe frame level information related to the jth point cloud frame, where l<j<J, both i and I are integers, and J is a quantity of point cloud frame included in the GOF. [0116] A field 1106 is metadata information of a patch of a j*11 point cloud frame in the GOF, and is used to describe patch level information related to the j*11 point cloud frame. [0117] FIG. 4 is a schematic block diagram of an example decoder 200 that can be applied to an embodiment of this application. An MPEG PCC decoding framework is used as an example for description in FIG. 4. In the instance in FIG. 4, the decoder 200 may include a demultiplexer module 201, an image or video-based decoding module 202, an occupancy map decoding module 203, an auxiliary information decoding module 204, a point cloud geometry information reconstruction module 205, a filtering module 206, and a point cloud texture information reconstruction module 207. [0118] The demultiplexer module 201 is configured to send an input bitstream (that is, a combined bitstream) to a corresponding decoding module. Specifically, the demultiplexer module 201 sends a bitstream including an encoded texture image and a bitstream including an encoded geometry image to the image or video-based decoding module 202, sends a bitstream including an encoded occupancy map to the occupancy map decoding module 203, and sends a bitstream including encoded auxiliary information to the auxiliary information decoding module 204. [0119] The image or video-based decoding module 202 is configured to: decode the received encoded texture image and the received encoded geometry image, send texture image information obtained through decoding to the point cloud texture information reconstruction module 207, and send geometry image 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 information that indicates the auxiliary information and that is obtained through decoding to the point cloud geometry information reconstruction module 205. [0120] The point cloud geometry information reconstruction module 205 is configured to reconstruct point cloud geometry information based on the received occupancy map information and the received auxiliary information. After being filtered by the filtering module 206, reconstructed point cloud geometry information is sent to the point cloud texture information reconstruction module 207. The point cloud texture information reconstruction module 207 is configured to reconstruct point cloud texture information, to obtain a reconstructed point cloud. [0121] It can be understood that the decoder 200 shown in FIG. 4 is merely an example, and in specific implementation, the decoder 200 may include more or fewer modules than those shown in FIG. 4. This is not limited in this embodiment of this application. [0122] For ease of understanding the technical solutions provided in the embodiments of this application, the following provides a description by using an example in which the patch information generation module 101 generates a patch and the patch information generation module 101 obtains patch-related information. [0123] FIG. 5 is a schematic diagram of a patch generation process that can be applied to a TMC2 (Test Model Category 2). The generation process may include: A KD tree (K-dimension 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 (that is, a projection plane of each point is determined) based on the normal direction vector of the point and a predefined projection plane. A predefined projection plane is six planes of a bounding box of a point cloud. A coarse segmentation method may include: separately calculating included angles between a normal direction vector of each point and normal direction vectors of the six planes, and selecting a plane corresponding to a smallest included angle as a projection plane of the point. Afterwards, fine segmentation is performed on the projection plane of each point obtained through coarse segmentation. Specifically, a coarse segmentation result is adjusted through iterative updating and by using a projection plane of a 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 sampling points in a connected component region is a patch. [0124] FIG. 6 is a schematic diagram of an example patch that can be applied to an embodiment of this application (a) in FIG. 6 represents a point cloud frame (b) in FIG. 6 represents patches generated based on (a) in FIG. 6. A set including points in each connected component region in (b) in FIG. 6 is a patch. [0125] As described above, the patch information generation module 101 may further obtain the related information of the patches generated by using the point cloud. The related information may include the index of the tangent axis, the index of the bitangent axis, and the index of the normal axis that are of each patch. [0126] A tangent axis of a patch is a coordinate axis of a tangent of the patch. A bitangent axis of a patch is a coordinate axis of a bitangent of the patch. The bitangent axis of the patch is perpendicular to the tangent axis of the patch. A normal axis of a patch is a coordinate axis of a normal of the patch. The normal axis of the patch is perpendicular to 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. To simplify subsequent processing, an example is used for description in which "each of the tangent axis, the bitangent axis, and the normal axis of the patch is one of axes in a world coordinate system" in this embodiment of this application. This can reduce complexity of coordinate system transformation during projection of the patch onto two-dimensional space. Certainly, this is not limited in this application. In actual implementation, a three-dimensional coordinate system formed by "the normal axis, the tangent axis, and the bitangent axis of the patch" may be alternatively obtained by applying a transform matrix to the world coordinate system (or another reference coordinate system). [0127] In an MPEG PCC encoding framework, the following method is usually used to determine a tangent axis and a bitangent axis of a patch: first determining an index of a normal axis of a patch, and then querying Table 2 A or Table 2B to obtain an index of a tangent axis and an index of a bitangent axis of the patch. Indexes of coordinate axes in Table 2A are obtained based on Table 1. Table 2A Table 2B [0128] Referring to Table 2A or Table 2B, it can be learnt that when an index of a normal axis of a patch is 0, an index of a tangent axis of the patch is 2, and an index of a bitangent axis of the patch is 1. In other words, when the normal axis of the patch is an X-axis, the tangent axis of the patch is a Z-axis, and the bitangent axis of the patch is a Y-axis. A principle of another example is similar to that described herein, and no more examples are provided. [0129] FIG. 7 is a schematic diagram of projecting a patch from three-dimensional space onto two-dimensional space. In FIG. 7, an origin of coordinates is denoted as O. A letter A shown in (a) in FIG. 7 is a patch in three-dimensional space, and a normal axis of the patch is a Z-axis. In addition, assuming that in two-dimensional space, a tangent direction of the patch is a horizontal axis (that is, a U-axis) and a bitangent direction of the patch is a vertical axis (that is, a V-axis), it can be learnt from Table 2A or Table 2B that a tangent axis of the patch is an X-axis and the bitangent axis of the patch is a Y-axis. In other words, the U-axis and the V-axis of the two-dimensional space onto which the patch is mapped is an X-axis and a Y-axis, respectively. Based on this, after the patch is projected onto the two-dimensional space, an occupancy map shown in (b) in FIG. 7 can be obtained. [0130] After obtaining a tangent axis and a bitangent axis of each patch, the patch information generation module 101 may further obtain the occupancy map generated after the patch is projected onto the two-dimensional space. Coordinate values of each point in the occupancy map are generated based on a coordinate system determined by using "the tangent axis and the bitangent axis of the patch". The packing module 102 may subsequently pack occupancy maps of the patches in the two-dimensional space (that is, the occupancy maps of the patches described in this specification), to obtain an occupancy map of a point cloud. [0131] FIG. 8 is a schematic diagram of an occupancy map of a point cloud. The patch information generation module 101 may generate patches from the point cloud shown in (a) in FIG. 8, and obtain a tangent axis and a bitangent axis of each patch based on Table 2A or Table 2B, 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 (b) in FIG. 8. It can be learnt from (b) in FIG. 8 that in the occupancy map of the point cloud, some patches with relatively great heights (that is, a side on which a Y-axis is located) are vertically arranged and some patches with relatively great heights are horizontally arranged (for example, a patch in a rectangular box). Consequently, there are a large amount of empty space for the occupancy map of the point cloud, such as an area in which empty pixels are located in (b) in FIG. 8. In addition, this leads to a relatively large size of the occupancy map of the point cloud, and is unfavorable for subsequent video compression coding. [0132] Moreover, as shown in FIG. 6, if a tangent axis and a bitangent axis of each patch are obtained based on Table 2A or Table 2B, an occupancy map shown in (c) in FIG. 6 can be obtained based on patches shown in (b) in FIG. 6. [0133] The following describes a point cloud encoding method and a point cloud decoding method that are provided in the embodiments of this application. It should be noted that with reference to the point cloud coding system shown in FIG. 1, any following point cloud encoding method may be performed by the source apparatus 10 in the point cloud coding system, and more specifically performed by the encoder 100 in the source apparatus 10; and any following point cloud decoding method may be performed by the destination apparatus 20 in the point cloud coding system, and more specifically performed by the decoder 200 in the destination apparatus 20. [0134] 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. [0135] S101. Obtain auxiliary information of a to-be-encoded patch (for example, patchLi st[i]) in a to-be-encoded point cloud, where the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patch Li st[i ] . projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch); and the to-be-encoded point cloud may be any to-be-encoded point cloud frame, and the patch may be any patch in the to-be-encoded point cloud. [0136] S104. Encode the auxiliary information of the patch into a bitstream. [0137] In this embodiment of this application, the first identification information (for example, patchLi st[i] . projection idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. [0138] In this embodiment of this application, when the first identification information (for example, patchLi st[i ] . projection idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information (for example, patchList[i] projection idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped. [0139] In this embodiment of this application, when the first identification information is the first value (for example, 0), the first identification information indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information is the second value (for example, 1), the first identification information indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0140] In this embodiment of this application, the auxiliary information of the patch further includes second identification information of the patch (patchList[i].have_matched_patch_flag), and the second identification information indicates that there is no reference patch that matches the patch, in a reference point cloud of the patch. [0141] In this embodiment of this application, the obtaining auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud includes: constructing the second identification information of the patch (patch Li st [i ] . have m atched patch fl ag), where the second identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and when the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array), constructing the first identification information (for example, patch Li st[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. [0142] In this embodiment of this application, when the first identification information is a third value, the first identification information indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch, where the third method is different from the first method, and/or is different from the second method. [0143] In this embodiment of this application, the method further includes the following steps. [0144] S102-S103. After the tangent axis of the patch and the bitangent axis of the patch are determined, project the patch from three-dimensional space onto two-dimensional space based on the tangent axis of the patch and the bitangent axis of the patch. [0145] In this embodiment of this application, the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis of the patch to obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch, and the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, querying a table based on the index of the normal axis of the patch to obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes. [0146] In this embodiment of this application, the first identification information indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the second method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and swapping the reference tangent axis and the reference bitangent axis, where the reference tangent axis (for example, the index of the reference tangent axis) is used as the bitangent axis of the patch (for example, the index of the bitangent axis of the patch), and/or the reference bitangent axis (for example, the index of the reference bitangent axis) is used as the tangent axis of the patch (for example, the index of the tangent axis of the patch). [0147] In this embodiment of this application, the first identification information indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the third method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and determining the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is Q and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is ® . [0148] For ease of description, the reference tangent axis of the patch is referred to as a UO-axis and the reference bitangent axis of the patch is referred to as a VO-axis in the following. For ease of description, an example is used for description in which the UO-axis is an axis in a horizontal direction and the VO-axis is an axis in a vertical direction in the following. Specifically, if the normal axis of the patch is not a Y-axis, the axis in a vertical direction is the Y-axis, and the axis in a horizontal direction is an axis different from both the normal axis and the Y-axis. If the normal axis of the patch is a Y-axis, the axis in a vertical direction is an X-axis, and the axis in a horizontal direction is a Z-axis. Certainly, this is not limited in this application. For ease of description, the tangent axis of the patch is referred to as a Ul-axis and the bitangent axis of the patch is referred to as a VI -axis in the following. [0149] In this embodiment, a relationship between the UO-axis, the VO-axis, the Ul-axis, and the VI -axis that are corresponding to the patch may include the following manners. [0150] 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. In other words, the Ul-axis is the same as the UO-axis, and the VI -axis is the same as the VO-axis. [0151] 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. In other words, the Ul-axis is the same as the VO-axis, and the Vl-axis is the same as the UO-axis. [0152] Based on this, a patch, a patch pre-occupied occupancy map, and a patch occupancy map that are provided in an embodiment of this application are shown in FIG. 10. If a reference tangent axis and a reference bitangent axis of a patch that are shown in (a) in FIG. 10 are obtained by querying Table 2, and the patch is projected from three-dimensional space onto two-dimensional space based on the reference tangent axis and the reference bitangent axis, an obtained patch pre-occupied occupancy map is shown in (b) in FIG. 10. If the relationship between the UO-axis, the VO-axis, the Ul-axis, and the Vl-axis is shown in the manner A, an obtained patch occupancy map is shown in (cl) in FIG. 10. If the relationship between the UO-axis, the VO-axis, the Ul-axis, and the Vl-axis is shown in the manner B, an obtained patch occupancy map is shown in (c2) in FIG. 10. [0153] FIG. 11 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 is corresponding to the point cloud encoding method shown in FIG. 9. Therefore, for an interpretation of related content and beneficial effects in this embodiment, refer to the embodiment shown in FIG. 9. The method shown in FIG. 11 includes the following steps. [0154] S201. Parse a bitstream to obtain auxiliary information of a to-be-decoded patch(for example, patchLi st[i]) in a to-be-decoded point cloud, where the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patchList[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch). [0155] S202. Determine the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing. [0156] S203. Reconstruct geometry information of the patch based on the tangent axis and the bitangent axis of the patch. In an implementation, the geometry information of the patch is reconstructed based on the normal axis, the tangent axis and the bitangent axis of the patch. [0157] In this embodiment, the determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing includes: determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis of the patch obtained through parsing, by using the method that is for determining the tangent axis of the patch and the bitangent axis of the patch and that is indicated by the first identification information (for example, patchLi st[i ] . projection idx). [0158] In this embodiment, the first identification information (for example, patchLi st[i ] . projection idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. [0159] In this embodiment, when the first identification information of the patch (for example, patchLi st[i ] . projection idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information of the patch (for example, patchLi st[i ] . projection idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped. [0160] In this embodiment, when the first identification information of the patch is the first value (for example, 0), the first identification information indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch is the second value (for example, 1), the first identification information indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0161] In this embodiment, the auxiliary information of the patch further includes second identification information of the patch (patchList[i].have_matched_patch flag), and the second identification information indicates that there is no reference patch that matches the patch, in a reference point cloud of the patch. [0162] In this embodiment, S201 includes the following operations: parsing the bitstream to obtain the second identification information of the patch (patchList[i].have_matched_patch flag); and when the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array), parsing the bitstream to obtain the first identification information of the patch (for example, patchLi st[i] . projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. [0163] In this embodiment, when the first identification information is a third value, the first identification information indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch, where the third method is different from the first method, and/or is different from the second method. [0164] In this embodiment, the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis of the patch to obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch, and the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, querying a table based on the index of the normal axis of the patch to obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes. [0165] In this embodiment, the first identification information indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the second method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes); and swapping the reference tangent axis and the reference bitangent axis (for example, swapping the index of the reference tangent axis and the index of the reference bitangent axis), where the reference tangent axis is used as the bitangent axis of the patch (for example, the index of the reference tangent axis is used as the index of the bitangent axis of the patch), and/or the reference bitangent axis is used as the tangent axis of the patch (for example, the index of the reference bitangent axis is used as the index of the tangent axis of the patch). [0166] In this embodiment, the first identification information indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the third method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis of the patch to obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, querying a table based on the index of the normal axis of the patch to obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes); and determining the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is Q and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is [0167] FIG. 12 is a schematic flowchart of another point cloud encoding method according to an embodiment of this application. The method may include the following steps. [0168] S301. Obtain auxiliary information of a to-be-encoded patch (for example, patchLi st[i]) in a to-be-encoded point cloud, where the auxiliary information of the patch includes the Xth identification information of the patch (for example, patchList[i].have_matched_patch_flag or patchLi st[i ] . matched _patch_flag), and the Xth identification information indicates whether there is any reference patch that matches the patch, in a reference point cloud of the patch. [0169] S304. Encode the auxiliary information of the patch into a bitstream. [0170] In this embodiment, when the Xth identification information (for example, patchList[i].have_matched_patch_flag) indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of a normal axis of the patch (for example, patchList[i].normal_axis) and first identification information of the patch (for example, patchLi st[i ] . project on idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch). [0171] In this embodiment, when the Xth identification information (for example, patchList[i].have_matched_patch flag) indicates that there is a reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of the reference patch (for example, patchList[i] matched patch idx), the index of the reference patch is used to obtain first identification information of the reference patch(ref patchList[patchList[i] matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. It should be noted that the auxiliary information of the patch may not include the index of the normal axis of the patch, and the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0172] In this embodiment, the Xth identification information of the patch (for example, patchLi st[i] . matched _patch_flag) is further used to indicate the index of the reference patch that matches the patch, the Xth identification information is used to obtain the first identification information of the reference patch(ref patchList[patchList[i] matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. The first identification information of the reference patch (ref patchList[patchList[i] matched _patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0173] In this embodiment, the first identification information of the patch (for example, patch Li st[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. [0174] In this embodiment, when the first identification information of the patch (for example, patchList[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information of the patch (for example, patchList[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped. [0175] In this embodiment, when the first identification information of the patch (for example, patch Li st[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the first value (for example, 0), the first identification information of the patch or the first identification information of the reference patch indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch (for example, patchLi st[i ] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the second value (for example, 1), the first identification information of the patch or the first identification information of the reference patch indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0176] In this embodiment, the obtaining auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud includes: constructing the Xth identification information of the patch (patchList[i].have_matched_patch_flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); constructing the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fourth value (for example, 0) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or constructing the index of the reference patch (for example, patchList[i] atch ed patch i dx ), where the index of the reference patch is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fifth value (for example, 1) used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array). The first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0177] In this embodiment, the obtaining auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud includes: constructing the Xth identification information of the patch (patchList[i].have_matched_patch_flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); constructing the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a sixth value (for example, UNMATCHED PATCH FLAG) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or the Xth identification information is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a seventh value used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array) and indicate the index of the reference patch. The first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0178] In this embodiment, when the first identification information of the patch (for example, patchList[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a third value (for example, 2), the first identification information of the patch or the first identification information of the reference patch indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0179] In this embodiment, the method further includes the following steps. [0180] S302-S303. After the tangent axis of the patch and the bitangent axis of the patch are determined, project the patch from three-dimensional space onto two-dimensional space based on the tangent axis of the patch and the bitangent axis of the patch. [0181] In this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch, and the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. [0182] In this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the second method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and swapping the reference tangent axis and the reference bitangent axis, where the reference tangent axis (for example, the index of the reference tangent axis) is used as the bitangent axis of the patch (for example, the index of the bitangent axis of the patch), and/or the reference bitangent axis (for example, the index of the reference bitangent axis) is used as the tangent axis of the patch (for example, the index of the tangent axis of the patch). [0183] In this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the third method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and determining the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is Q , and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is ® . [0184] FIG. 14 is a schematic flowchart of another point cloud decoding method according to an embodiment of this application. The point cloud decoding method provided in this embodiment is corresponding to the point cloud encoding method provided in the embodiment shown in FIG. 12. Therefore, for an interpretation of related content in this embodiment, refer to the embodiment shown in FIG. 12. The method shown in FIG. 14 includes the following steps. [0185] S401. Parse a bitstream to obtain auxiliary information of a to-be-decoded patch(for example, patchLi st[i]) in a to-be-decoded point cloud, where the auxiliary information of the patch includes the Xth identification information of the patch (for example, patchList[i].have_matched_patch_flag or patchLi st[i ] . matched _patch_flag), and the Xth identification information indicates whether there is any reference patch that matches the patch, in a reference point cloud of the patch. [0186] S402. Determine a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that includes at least the Xth identification information of the patch. [0187] S403. Reconstruct geometry information of the patch based on the tangent axis and the bitangent axis of the patch. In an implementation, the geometry information of the patch is reconstructed based on the normal axis, the tangent axis and the bitangent axis of the patch. [0188] In this embodiment, when the Xth identification information (for example, patchList[i].have_matched_patch_flag) indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of a normal axis of the patch (for example, patchList[i].normal_axis) and first identification information of the patch (for example, patchLi st[i ] . project on idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch). [0189] In this embodiment, when the Xth identification information (for example, patchList[i].have_matched_patch flag) indicates that there is a reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of the reference patch (for example, patchList[i] matched patch idx), the index of the reference patch is used to obtain first identification information of the reference patch(ref patchList[patchList[i] matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. It should be noted that the auxiliary information of the patch may not include the index of the normal axis of the patch, and the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0190] In this embodiment, the Xth identification information of the patch (for example, patchLi st[i] . matched _patch_flag) is further used to indicate the index of the reference patch that matches the patch, the Xth identification information is used to obtain the first identification information of the reference patch(ref patchList[patchList[i] matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. The first identification information of the reference patch (ref patchList[patchList[i] matched _patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0191] In this embodiment, the first identification information of the patch (for example, patch Li st[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. [0192] In this embodiment, when the first identification information of the patch (for example, patchList[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information of the patch (for example, patchList[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped. [0193] In this embodiment, when the first identification information of the patch (for example, patch Li st[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the first value (for example, 0), the first identification information of the patch or the first identification information of the reference patch indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch (for example, patchLi st[i ] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the second value (for example, 1), the first identification information of the patch or the first identification information of the reference patch indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0194] In this embodiment, the parsing a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud includes: parsing the bitstream to obtain the Xth identification information of the patch (patchList[i].have_matched_patch_flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); parsing the bitstream to obtain the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fourth value (for example, 0) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or parsing the bitstream to obtain the index of the reference patch (for example, patchList[i] matched _patch_idx), where the index of the reference patch is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fifth value (for example, 1) used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array). The first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0195] In this embodiment, the parsing a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud includes: parsing the bitstream to obtain the Xth identification information of the patch (for example, patchList[i] matched_patch_flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); parsing the bitstream to obtain the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a sixth value (for example, UNMATCHED PATCH FLAG) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or the Xth identification information is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a seventh value used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array) and indicate the index of the reference patch. The first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0196] In this embodiment, the determining a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that includes at least the Xth identification information of the patch includes: determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis of the patch by using the method that is for determining the tangent axis of the patch and the bitangent axis of the patch and that is indicated by the first identification information of the patch (for example, patchList[i] projection idx). [0197] In this embodiment, the determining a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that includes at least the Xth identification information of the patch includes: obtaining the first identification information of the reference patch and an index of a normal axis of the reference patch based on the index of the reference patch or the Xth identification information, where the first identification information of the reference patch is used as the first identification information of the patch, and the index of the normal axis of the reference patch is used as the index of the normal axis of the patch; and determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis of the reference patch by using the method that is for determining the tangent axis of the patch and the bitangent axis of the patch and that is indicated by the first identification information of the reference patch. [0198] In this embodiment, when the first identification information of the patch (for example, patchList[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a third value (for example, 2), the first identification information of the patch or the first identification information of the reference patch indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0199] In this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch, and the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. [0200] In this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the second method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis of the patch (for example, the index of the normal axis), where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes); and swapping the reference tangent axis and the reference bitangent axis, where swapping the reference tangent axis and the reference bitangent axis (for example, swapping the index of the reference tangent axis and the index of the reference bitangent axis), where the reference tangent axis is used as the bitangent axis of the patch (for example, the index of the reference tangent axis is used as the index of the bitangent axis of the patch), and/or the reference bitangent axis is used as the tangent axis of the patch (for example, the index of the reference bitangent axis is used as the index of the tangent axis of the patch). [0201] In this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the third method to determine the tangent axis of the patch and the bitangent axis of the patch includes: querying a table based on the normal axis of the patch to obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, querying a table based on the index of the normal axis of the patch to obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes); and determining the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is Q and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is ® . [0202] The foregoing mainly describes, from perspectives of methods, the solutions provided in the embodiments of this application. To implement the foregoing functions, the solutions include corresponding hardware structures and/software modules that perform the functions. A person skilled in the art should easily be aware that, in combination with the examples described in the embodiments disclosed in this specification, units and algorithms steps can be implemented by hardware or a combination of hardware and computer software. Whether a function is performed by hardware or by computer software driving hardware depends on particular applications and design constraints of the technical solutions. A person skilled in the art may use a different method 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. [0203] Division of functional modules may be performed on an encoder and a decoder in the embodiments of this application based on the foregoing method examples. For example, 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, module division is an example in this embodiment of this application, is merely logical function division, and may be other division in actual implementation. [0204] FIG. 15 is a schematic block diagram of an encoder 150 according to an embodiment of this application. The encoder 150 may include a patch information generation module 1501 and an auxiliary information encoding module 1502. In an example, the patch information generation module 1501 may be corresponding to the patch information generation module 101 in FIG. 2, and the auxiliary information encoding module 1502 may be corresponding to the auxiliary information encoding module 108 in FIG. 2. Certainly, this is not limited in this application. [0205] The following describes a feasible implementation of performing encoding by the encoder 150 based on a point cloud. [0206] The patch information generation module 1501 is configured to obtain auxiliary information of a to-be-encoded patch (for example, patchLi st[i ] ) in a to-be-encoded point cloud, where the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patchList[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch). [0207] The auxiliary information encoding module 1502 is configured to encode the auxiliary information of the patch into a bitstream. [0208] In the encoder in this embodiment, the first identification information (for example, patchLi st[i] . projection idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. [0209] In the encoder in this embodiment, when the first identification information (for example, patchLi st[i ] . projection idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information (for example, patchLi st[i]. projection idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped. [0210] In the encoder in this embodiment, when the first identification information is the first value (for example, 0), the first identification information indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information is the second value (for example, 1), the first identification information indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0211] In the encoder in this embodiment, the auxiliary information of the patch further includes second identification information of the patch(patchList[i].have_matched_patch_flag), and the second identification information indicates that there is no reference patch that matches the patch, in a reference point cloud of the patch. [0212] In the encoder in this embodiment, the patch information generation module is configured to: construct the second identification information of the patch (patch Li st [i ] . have m atched_patch_fl ag), where the second identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and when the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array), construct the first identification information (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. [0213] In the encoder in this embodiment, when the first identification information is a third value, the first identification information indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch, where the third method is different from the first method, and/or is different from the second method. [0214] In a feasible implementation, the patch information generation module 1501 is further configured to: after the tangent axis of the patch and the bitangent axis of the patch are determined, project the patch from three-dimensional space onto two-dimensional space based on the tangent axis of the patch and the bitangent axis of the patch. [0215] In the encoder in this embodiment, the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the first method to determine the tangent axis of the patch and the bitangent axis of the patch, the patch information generation module is specifically configured to: query a table based on the normal axis of the patch to obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch, and the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, query a table based on the index of the normal axis of the patch to obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes. [0216] In the encoder in this embodiment, the first identification information indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the second method to determine the tangent axis of the patch and the bitangent axis of the patch, the patch information generation module is specifically configured to: query a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and swap the reference tangent axis and the reference bitangent axis, where the reference tangent axis (for example, the index of the reference tangent axis) is used as the bitangent axis of the patch (for example, the index of the bitangent axis of the patch), and/or the reference bitangent axis (for example, the index of the reference bitangent axis) is used as the tangent axis of the patch (for example, the index of the tangent axis of the patch). [0217] In the encoder in this embodiment, the first identification information indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the third method to determine the tangent axis of the patch and the bitangent axis of the patch, the patch information generation module is specifically configured to: query a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and determine the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is ® , and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is Q . [0218] FIG. 16 is a schematic block diagram of a decoder 160 according to an embodiment of this application. The decoder 160 may include an auxiliary information decoding module 1601 and a point cloud geometry information reconstruction module 1602. In an example, the auxiliary information decoding module 1601 may be corresponding to the auxiliary information decoding module 204 in FIG. 4, and the point cloud geometry information reconstruction module 1602 may be corresponding to the point cloud geometry information reconstruction module 205 in FIG. 4. Certainly, this is not limited in this application. [0219] The following describes a feasible implementation of performing decoding by the decoder 160 based on a point cloud. [0220] The auxiliary information decoding module 1601 is configured to: parse a bitstream to obtain auxiliary information of a to-be-decoded patch (for example, patchLi st[i ] ) in a to-be-decoded point cloud, where the auxiliary information of the patch includes an index of a normal axis (for example, normalAxis) of the patch and first identification information of the patch (for example, patch Li st[i ] . projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch); and determine the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing. [0221] The point cloud geometry information reconstruction module 1602 is configured to reconstruct geometry information of the patch based on the tangent axis and the bitangent axis of the patch. In an implementation, the geometry information of the patch is reconstructed based on the normal axis, the tangent axis and the bitangent axis of the patch. [0222] In the decoder in this embodiment, in the aspect of determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing, the auxiliary information decoding module is configured to: determine the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis of the patch obtained through parsing, by using the method that is for determining the tangent axis of the patch and the bitangent axis of the patch and that is indicated by the first identification information (for example, patchList[i] projection idx). [0223] In the decoder in this embodiment, the first identification information (for example, patchLi st[i] . projection idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. [0224] In the decoder in this embodiment, when the first identification information of the patch (for example, patchLi st[i] . projection idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information of the patch (for example, patchLi st[i ] . projection idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped. [0225] In the decoder in this embodiment, when the first identification information of the patch is the first value (for example, 0), the first identification information indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch is the second value (for example, 1), the first identification information indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0226] In the decoder in this embodiment, the auxiliary information of the patch further includes second identification information of the patch(patchList[i].have_matched_patch flag), and the second identification information indicates that there is no reference patch that matches the patch, in a reference point cloud of the patch. [0227] In the decoder in this embodiment, in the aspect of parsing a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud, the auxiliary information decoding module is configured to: parse the bitstream to obtain the second identification information of the patch (patchList[i].have_matched_patch_flag); and when the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array), parse the bitstream to obtain the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. [0228] In the decoder in this embodiment, when the first identification information is a third value, the first identification information indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch, where the third method is different from the first method, and/or is different from the second method. [0229] In the decoder in this embodiment, the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the first method to determine the tangent axis of the patch and the bitangent axis of the patch, the auxiliary information decoding module is configured to: query a table based on the normal axis of the patch to obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch, and the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, query a table based on the index of the normal axis of the patch to obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes. [0230] In the decoder in this embodiment, the first identification information indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the second method to determine the tangent axis of the patch and the bitangent axis of the patch, the auxiliary information decoding module is configured to: query a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes); and swap the reference tangent axis and the reference bitangent axis (for example, swap the index of the reference tangent axis and the index of the reference bitangent axis), where the reference tangent axis is used as the bitangent axis of the patch (for example, the index of the reference tangent axis is used as the index of the bitangent axis of the patch), and/or the reference bitangent axis is used as the tangent axis of the patch (for example, the index of the reference bitangent axis is used as the index of the tangent axis of the patch). [0231] In the decoder in this embodiment, the first identification information indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the third method to determine the tangent axis of the patch and the bitangent axis of the patch, the auxiliary information decoding module is configured to: query a table based on the normal axis of the patch to obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, query a table based on the index of the normal axis of the patch to obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes); and determine the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is ® , and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is Q . [0232] FIG. 17 is a schematic block diagram of another encoder 170 according to an embodiment of this application. The encoder 170 may include a patch information generation module 1701 and an auxiliary information encoding module 1702. In an example, the patch information generation module 1701 may be corresponding to the patch information generation module 101 in FIG. 2, and the auxiliary information encoding module 1702 may be corresponding to the auxiliary information encoding module 108 in FIG. 2. Certainly, this is not limited in this application. [0233] The following describes a feasible implementation of performing encoding by the encoder 170 based on a point cloud. [0234] The patch information generation module 1701 is configured to obtain auxiliary information of a to-be-encoded patch (for example, patchLi st[i ] ) in a to-be-encoded point cloud, where the auxiliary information of the patch includes the Xth identification information of the patch (for example, patch Li st [i ] . have m atched patch fl ag or patch Li st[i] matched_patch_flag), and the Xth identification information indicates whether there is any reference patch that matches the patch, in a reference point cloud of the patch. [0235] The auxiliary information encoding module 1702 is configured to encode the auxiliary information of the patch into a bitstream. [0236] In the encoder in this embodiment, when the Xth identification information (for example, patchList[i].have_matched_patch_flag) indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of a normal axis of the patch (for example, patchList[i].normal_axis) and first identification information of the patch (for example, patchList[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch). [0237] In the encoder in this embodiment, when the Xth identification information (for example, patchList[i].have_matched_patch flag) indicates that there is a reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of the reference patch (for example, patchLi st[i] . matched patch idx), the index of the reference patch is used to obtain first identification information of the reference patch(ref patchList[patchList[i]. matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. It should be noted that the auxiliary information of the patch may not include the index of the normal axis of the patch, and the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchLi st[i]. projection idx). [0238] In the encoder in this embodiment, the Xth identification information of the patch (for example, patchLi st[i] . matched _patch_flag) is further used to indicate the index of the reference patch that matches the patch, the Xth identification information is used to obtain the first identification information of the reference patch(ref patchList[patchList[i]. matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. The first identification information of the reference patch (ref patchList[patchList[i]. matched _patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0239] In the encoder in this embodiment, the first identification information of the patch (for example, patchList[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. [0240] In the encoder in this embodiment, when the first identification information of the patch (for example, patchLi st[i] . projection idx) or the first identification information of the reference patch (ref j>atchList[patchList[i] matched _patch_idx].projection_idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information of the patch (for example, patchLi st[i ] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped. [0241] In the encoder in this embodiment, when the first identification information of the patch (for example, patchLi st[i] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the first value (for example, 0), the first identification information of the patch or the first identification information of the reference patch indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch (for example, patchLi st[i ] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the second value (for example, 1), the first identification information of the patch or the first identification information of the reference patch indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0242] In the encoder in this embodiment, the patch information generation module is configured to: construct the Xth identification information of the patch (patchList[i].have_matched_patch flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); construct the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fourth value (for example, 0) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or construct the index of the reference patch (for example, patchList[i] matched patch idx), where the index of the reference patch is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and when the Xth identification information is a fifth value (for example, 1) used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array). The first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0243] In the encoder in this embodiment, the patch information generation module is configured to: construct the Xth identification information of the patch (patchList[i].have_matched_patch flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); construct the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a sixth value (for example, UNMATCHED PATCH FLAG) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or the Xth identification information is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a seventh value used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array) and indicate the index of the reference patch. The first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0244] In the encoder in this embodiment, when the first identification information of the patch (for example, patchList[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a third value (for example, 2), the first identification information of the patch or the first identification information of the reference patch indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0245] In the encoder in this embodiment, the patch information generation module is further configured to: after the tangent axis of the patch and the bitangent axis of the patch are determined, project the patch from three-dimensional space onto two-dimensional space based on the tangent axis of the patch and the bitangent axis of the patch. [0246] In the encoder in this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the first method to determine the tangent axis of the patch and the bitangent axis of the patch, the patch information generation module is specifically configured to: query a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch, and the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. [0247] In the encoder in this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the second method to determine the tangent axis of the patch and the bitangent axis of the patch, the patch information generation module is specifically configured to: query a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and swap the reference tangent axis and the reference bitangent axis, where the reference tangent axis (for example, the index of the reference tangent axis) is used as the bitangent axis of the patch (for example, the index of the bitangent axis of the patch), and/or the reference bitangent axis (for example, the index of the reference bitangent axis) is used as the tangent axis of the patch (for example, the index of the tangent axis of the patch). [0248] In the encoder in this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the third method to determine the tangent axis of the patch and the bitangent axis of the patch, the patch information generation module is specifically configured to: query a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and determine the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is ® , and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is Q . [0249] FIG. 18 is a schematic block diagram of another decoder 180 according to an embodiment of this application. The decoder 180 may include an auxiliary information decoding module 1801 and a point cloud geometry information reconstruction module 1802. In an example, the auxiliary information decoding module 1801 may be corresponding to the auxiliary information decoding module 204 in FIG. 4, and the point cloud geometry information reconstruction module 1802 may be corresponding to the point cloud geometry information reconstruction module 205 in FIG. 4. Certainly, this is not limited in this application. [0250] The auxiliary information decoding module 1801 is configured to: parse a bitstream to obtain auxiliary information of a to-be-decoded patch (for example, patchLi st[i ] ) in a to-be-decoded point cloud, where the auxiliary information of the patch includes the Xth identification information of the patch (for example, patchList[i].have_matched_patch_flag or patchLi st[i ] . matched _patch flag), and the Xth identification information indicates whether there is any reference patch that matches the patch, in a reference point cloud of the patch; and determine a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that includes at least the Xth identification information of the patch. [0251] The point cloud geometry information reconstruction module 1802 is configured to reconstruct geometry information of the patch based on the tangent axis and the bitangent axis of the patch. In an implementation, the geometry information of the patch is reconstructed based on the normal axis, the tangent axis and the bitangent axis of the patch. [0252] In the decoder in this embodiment, when the Xth identification information (for example, patchList[i].have_matched_patch_flag) indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of a normal axis of the patch (for example, patchList[i].normal_axis) and first identification information of the patch (for example, patch Li st[i] projection idx), and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch (for example, the first identification information indicates a specific method used for determining the tangent axis of the patch and the bitangent axis of the patch). [0253] In the decoder in this embodiment, when the Xth identification information (for example, patch Li st [i ] . have m atched patch fl ag) indicates that there is a reference patch that matches the patch, in the reference point cloud of the patch, the auxiliary information of the patch further includes an index of the reference patch (for example, patchLi st[i] . matched patch idx), the index of the reference patch is used to obtain first identification information of the reference patch(ref patchList[patchList[i] matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. It should be noted that the auxiliary information of the patch may not include the index of the normal axis of the patch, and the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchLi st[i]. projection idx). [0254] In the decoder in this embodiment, the Xth identification information of the patch (for example, patchList[i] matched _patch_flag) is further used to indicate the index of the reference patch that matches the patch, the Xth identification information is used to obtain the first identification information of the reference patch(ref patchList[patchList[i] matched _patch_idx].projection_idx), and the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch. The first identification information of the reference patch (ref patchList[patchList[i] matched _patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0255] In the decoder in this embodiment, the first identification information of the patch (for example, patchList[i] projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch. [0256] In the decoder in this embodiment, when the first identification information of the patch (for example, patchLi st[i] . projection idx) or the first identification information of the reference patch (ref j>atchList[patchList[i] matched _patch_idx].projection_idx) is a first value (for example, 0), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or when the first identification information of the patch (for example, patchLi st[i ] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a second value (for example, 1), an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped. [0257] In the decoder in this embodiment, when the first identification information of the patch (for example, patchLi st[i] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the first value (for example, 0), the first identification information of the patch or the first identification information of the reference patch indicates that a first method (for example, a method Ml) is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch (for example, patchLi st[i ] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is the second value (for example, 1), the first identification information of the patch or the first identification information of the reference patch indicates that a second method (for example, a method M2) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0258] In the decoder in this embodiment, the auxiliary information decoding module is configured to: parse the bitstream to obtain the Xth identification information of the patch (patchList[i].have_matched_patch_flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); parse the bitstream to obtain the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fourth value (for example, 0) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or parse the bitstream to obtain the index of the reference patch (for example, patchList[i] matched _patch_idx), where the index of the reference patch is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a fifth value (for example, 1) used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array). The first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0259] In the decoder in this embodiment, the auxiliary information decoding module is configured to: parse the bitstream to obtain the Xth identification information of the patch (patchList[i] matched patch flag), where the Xth identification information indicates whether there is any reference patch (the reference patch may also be referred to as a matched patch) that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); parse the bitstream to obtain the index of the normal axis of the patch and the first identification information of the patch (for example, patchList[i] projection idx), where the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a sixth value (for example, UNMATCHED PATCH FLAG) used to indicate that there is no reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array); and/or the Xth identification information is used to obtain the first identification information of the reference patch(ref_patchList[patchList[i].matched_patch_idx].projection_idx), the first identification information of the reference patch indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch, and the Xth identification information is a seventh value used to indicate that there is a reference patch that matches the patch, in the reference point cloud of the patch (for example, a reference patch array) and indicate the index of the reference patch. The first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is used as the first identification information of the patch (patchList[i] projection idx). [0260] In the decoder in this embodiment, in the aspect of determining a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that includes at least the Xth identification information of the patch, the auxiliary information decoding module is configured to: determine the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis of the patch by using the method that is for determining the tangent axis of the patch and the bitangent axis of the patch and that is indicated by the first identification information of the patch (for example, patchList[i] projection idx). [0261] In the decoder in this embodiment, in the aspect of determining a tangent axis of the patch and a bitangent axis of the patch based on the auxiliary information that includes at least the Xth identification information of the patch, the auxiliary information decoding module is configured to: obtain the first identification information of the reference patch and an index of a normal axis of the reference patch based on the index of the reference patch or the Xth identification information, where the first identification information of the reference patch is used as the first identification information of the patch, and the index of the normal axis of the reference patch is used as the index of the normal axis of the patch; and determine the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis of the reference patch by using the method that is for determining the tangent axis of the patch and the bitangent axis of the patch and that is indicated by the first identification information of the reference patch. [0262] In the decoder in this embodiment, when the first identification information of the patch (for example, patchLi st[i] . projection idx) or the first identification information of the reference patch (ref_patchList[patchList[i].matched_patch_idx].projection_idx) is a third value (for example, 2), the first identification information of the patch or the first identification information of the reference patch indicates that a third method (for example, a method M3) is used to determine the tangent axis of the patch and the bitangent axis of the patch. [0263] In the decoder in this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the first method to determine the tangent axis of the patch and the bitangent axis of the patch, the auxiliary information decoding module is configured to: query a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis (for example, the index of the normal axis) of the patch, where the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch, and the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes. [0264] In the decoder in this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the second method to determine the tangent axis of the patch and the bitangent axis of the patch, the auxiliary information decoding module is configured to: query a table based on the normal axis (for example, the index of the normal axis) of the patch to obtain a reference tangent axis (for example, an index of the reference tangent axis) and a reference bitangent axis (for example, an index of the reference bitangent axis) that are corresponding to the normal axis of the patch (for example, the index of the normal axis), where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes); and swap the reference tangent axis and the reference bitangent axis, where swap the reference tangent axis and the reference bitangent axis (for example, swap the index of the reference tangent axis and the index of the reference bitangent axis), where the reference tangent axis is used as the bitangent axis of the patch (for example, the index of the reference tangent axis is used as the index of the bitangent axis of the patch), and/or the reference bitangent axis is used as the tangent axis of the patch (for example, the index of the reference bitangent axis is used as the index of the tangent axis of the patch). [0265] In the decoder in this embodiment, the first identification information of the patch or the first identification information of the reference patch indicates that the third method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, in the aspect of using the third method to determine the tangent axis of the patch and the bitangent axis of the patch, the auxiliary information decoding module is configured to: query a table based on the normal axis of the patch to obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes (for example, query a table based on the index of the normal axis of the patch to obtain an index of the reference tangent axis and an index of the reference bitangent axis that are corresponding to the index of the normal axis of the patch, where the table includes a mapping relationship between a plurality of patch normal axis indexes, a plurality of patch tangent axis indexes, and a plurality of patch bitangent axis indexes); and determine the tangent axis of the patch and the bitangent axis of the patch, where an orientation angle of the tangent axis of the patch relative to the reference tangent axis is ® , and an orientation angle of the bitangent axis of the patch relative to the reference bitangent axis is Q . [0266] During a patch generation procedure in a PCC (Point Cloud Compression) codec TMC2 (Test Model Category 2), a tangentAxis and bitangentAxis of a patch are determined. The tangentAxis and bitangentAxis of the patch are quite important to determine an orientation of an occupancy map, and affect a size of the occupancy map of a point cloud, thereby affecting performance of compressing the occupancy map, a geometry image, and a texture image of the point cloud. [0267] In the current TMC2 framework, a method for determining a tangent axis of a patch and a bitangent axis of the patch is referred to as a method Ml (namely, a first method). [0268] In an example, the method Ml may include: determining, based on a normal axis of a patch, a tangent axis of the patch and a bitangent axis of the patch by using a table, for example, Table 2 A or 2B. [0269] In an example, the digits (or the values) in Table 2A have the following meanings: 0 represent an index of an X-axis, 1 represents an index of a Y-axis, and 2 represents an index of a Z-axis. [0270] If a normal Axis of a patch equals 0, a tangentAxis of the patch equals 2, and a bitangentAxis of the patch equals 1; if a normal Axis of a patch equals 1, a tangentAxis of the patch equals 2, and a bitangentAxis of the patch equals 0; or if a normal Axis of a patch equals 2, a tangentAxis of the patch equals 0, and a bitangentAxis of the patch equals 1. [0271] It can be noted that other values can be alternatively used to represent indexes of an X-axis, a Y-axis, and a Z-axis if needed. Table 2B is an example table. [0272] If a normal Axis equals 3, a tangentAxis of the patch equals 5, and a bitangentAxis of the patch equals 4; if a normalAxis equals 4, a tangentAxis of the patch equals 5, and a bitangentAxis of the patch equals 3; or if a normalAxis equals 5, a tangentAxis of the patch equals 3, and a bitangentAxis of the patch equals 4. [0273] The present disclosure also proposes a method for determining a tangent axis of a patch and a bitangent axis of the patch. By using the method, the occupancy map of the point cloud with a smaller size is obtained, and some gains are obtained when the geometry and texture images of the point cloud are compressed. [0274] The present disclosure also introduces a flag (e.g. projectionldx) to indicate whether a tangent axis of a patch and a bitangent axis of the patch in the point cloud are to be swapped or interchanged. In an example, auxiliary information of a patch may include but is not limited to normalAxis and projectionldx. In another example, auxiliary information of a patch may include but is not limited to uO, vO, ul, vl, dl, sizeUO, sizeVO, normalAxis, and projectionldx. In another example, auxiliary information of a patch may include but is not limited to have_matched_patch_flag, uO, vO, ul, vl, dl, sizeUO, sizeVO, and normalAxis. In another example, auxiliary information of a patch may include but is not limited to have_matched_patch_flag, matched _patch_idx, uO, vO, ul, vl, dl, sizeUO, sizeVO, and normal Axis. In another example, auxiliary information of a patch may include but is not limited to have_matched_patch_flag, uO, vO, ul, vl, dl, sizeUO, sizeVO, normalAxis, and projectionldx. In another example, auxiliary information of a patch may include but is not limited to have_matched_patch_flag, matched patch idx, uO, vO, ul, vl, dl, sizeUO, sizeVO, normalAxis, and projectionldx. [0275] In an example, a description of auxiliary information (i.e. side information) of a patch is illustrated in the following Table 3 A. Table 3A Description of auxiliary information of a patch [0276] In particular, projection ldx is the index of the method (i.e. a process, procedure, or way) for determining a tangentAxis and a bitangentAxis of the patch. [0277] In other words, projection idx is the index for indicating whether a method M2 for determining a tangentAxis and a bitangentAxis of the patch is enabled or not. [0278] In order to describe the method in a clearer and easier way, it is supposed as: Table 4A Method description table [0279] If projection idx equals 0, the method Ml is used. The method Ml may include: determining, based on the normal axis of the patch, the tangent axis of the patch and the bitangent axis of the patch by using a table, for example, Table 2A or 2B. The method Ml may be alternatively another method for determining the tangentAxis and bitangentAxis of the patch, and it is not limited in the present disclosure. [0280] If projection idx equals 1, the method M2 is used. [0281] In an example, the method M2 may include: determining, based on a normal axis of a patch, a reference tangent axis of the patch and a reference bitangent axis of the patch by using a table, for example, Table 1A or 1B; and swapping or interchanging the reference tangent axis of the patch and the reference bitangent axis of the patch, where the reference tangent axis of the patch is used as a bitangent axis of the patch, and/or the reference bitangent axis of the patch is used as a tangent axis of the patch. [0282] In another example, the method M2 may include: determining, a reference tangent axis of a patch and a reference bitangent axis of the patch; and swapping or interchanging the reference tangent axis of the patch and the reference bitangent axis of the patch, where the reference tangent axis of the patch is used as a bitangent axis of the patch, and/or the reference bitangent axis of the patch is used as a tangent axis of the patch. [0283] Suppose, each of A and B are an index of an X-axis, a Y-axis, or a Z-axis. [0284] Herein, swapping means that if the tangentAxis equals A and the bitangentAxis equals B, after swapping, tangentAxis is updated to B and bitangentAxis is updated to A. [0285] Suppose a patch buffer of the input point cloud is patchList[patch_count], where the patch count is a quantity of patches in the patch buffer of the input point cloud. [0286] At an encoder side, the tangentAxis and bitangentAxis of the patch in the patch buffer of the point cloud can be determined through exhaustive trying. It means that all the possible projection idx for each patch are tried, and the one with a minimum height of the occupancy map of the point cloud is found. Suppose there are 10 patches of the point cloud, and the projection idx for each patch have 2 possible values. By using a patch packing method, there are 2L10 = 1024 possible occupancy maps of the point cloud to be generated, the occupancy map with the minimum height among the 1024 possible occupancy maps of the point cloud may be obtained, and values of the projection idx of all the patches can be saved as optimal projection idx of all the patches, respectively. [0287] The syntax format may be as below: Table 5 Syntax format of patch auxiliary information [0288] At a decoder side, in an example, a point cloud decoding method may include the following steps. [0289] Step 1 : Decode patch count information from a bitstream, and iterate buffer patchLi st[patch_count] for patchLi st[i], which is the 1th patch in patch buffer patches. [0290] Step 2: Decode projection idx of patchList[i], and use Table 4A to call or use different methods to determine the tangentAxis and bitangentAxis of patchLi st[i ] : 2.1 If patchList[i].projection_idx equals 0, the method Ml is used: Using patchList[i] normal Axis to determine patchLi st[i ] .tangent Axi s and patchList[i] bitangentAxis, by using Table 2A or 2B. 2.2 If patchList[i].projection_idx equals 1, the method M2 is used: Using patchList[i] normal Axis to determine patchLi st[i ] .tangent Axi s and patchList[i] bitangentAxis, by using Table 2A or 2B. Then, W = patchList[i] tangentAxis; patchList[i] tangentAxis = patchListfi] bitangentAxis; patchList[i] bitangentAxis = W; where W is a variable. [0291] Step 3: Decode other auxiliary information of patchLi st[i] . [0292] Step 4: Use patchList[i] tangentAxis and patchList[i].bitangentAxis to convert patchLi st[i] from 2D to 3D space. [0293] In an example, the method may be performed by an encoder 100, for example, a point cloud encoder. [0294] According to an embodiment of the present disclosure, the swapping method is used to determine the tangentAxis and bitangentAxis of a patch if needed, which is more flexible than existing solutions. [0295] The present disclosure further proposes another method for determining a tangent axis of a patch and a bitangent axis of the patch, i.e. a method M3, which rotates the coordinate system consisting of the tangentAxis and bitangentAxis of the patch. Table 4B Method description table [0296] If projection idx equals 0, the method Ml is used; if projection idx equals 1, the method M2 is used; if projection idx equals 2, the method M3 is used; or if there are any other methods, the projection idx can have more different values, or the projection idx can be set to different values. [0297] Suppose a patch buffer of the input point cloud is patchList[patch_count], where the patch count is a quantity of patches in the patch buffer of the input point cloud. [0298] At an encoder side, the tangentAxis and bitangentAxis of the patches in the patch buffer of the point cloud can be determined through exhaustive trying. It means that all the possible projection idx for each patch are tried, and the one with a minimum height of an occupancy map of the point cloud is found. Suppose there are 10 patches of the point cloud, and the projection idx for each patch have 3 possible values. By using a patch packing method, there are 3L10 = 59049 possible occupancy maps of the point cloud to be generated, the occupancy map with the minimum height among the 59049 possible occupancy maps of the point cloud are obtained, and values of the projection idx of all the patches are also saved as optimal projection idx of all the patches. [0299] The syntax format may be shown in Table 5. [0300] At a decoder side, in an example, a point cloud decoding method may include the following steps. [0301] Step 1 : Decode patch count information from a bitstream, and iterate buffer patchLi st[patch_count] for patchLi st[i ], which is the ith patch in patch buffer patches. [0302] Step 2: Decode projection idx of patchList[i], and use Table 4B to call or use different methods to determine the tangentAxis and bitangentAxis of patchLi st[i] . For example: 2.1 If patchList[i].projection_idx equals 0, the method Ml is used: Using patchList[i].normalAxis to determine patchLi st[i ] .tangent Axi s and patchList[i] bitangentAxis, by using Table 2A or 2B. 2.2 If patchList[i].projection_idx equals 1, the method M2 is used: Using patchList[i].normalAxis to determine patchLi st[i ] .tangent Axi s and patchList[i] bitangentAxis, by using Table 2A or 2B. Then, W = patchList[i] tangentAxis; patchList[i] tangentAxis = patchListfi] bitangentAxis; patchList[i] bitangentAxis = W; where W is a variable. 2.3 If patchList[i].projection_idx equals 2, the method M3 is used: Using patchList[i].normalAxis to determine patchLi st[i ] .tangent Axi s and patchList[i] bitangentAxis, by using Table 2A or 2B. Then, rotate the angles of the tangentAxis and bitangentAxis of the patch. The orientation angle should be the same as the encoder side defined. [0303] Step 3: Decode other auxiliary information of patchLi st[i] . [0304] Step 4: Use patchList[i] tangentAxis and patchList[i].bitangentAxis to convert patchList[i] from 2D to 3D space. [0305] According to another embodiment of the present disclosure, for a patch (i.e. the current patch, the patch to be encoded, or the patch to be decoded) in a current frame, a reference patch can be found from a reference point cloud, and projection idx of the patch can be determined from the reference patch. A possible implementation of the another embodiment of the present disclosure is shown below: Table 6 Description of patch auxiliary information too [0306] At an encoder side, for the reference patch in a patchList buffer, the tangentAxis and bitangentAxis of the patch can be determined from the reference patch in the reference point cloud. For unreference patches, the tangentAxis and bitangentAxis of the patches can be determined through exhaustive trying. It means that all the possible projection idx for each patch are tried, and the one with a minimum height of an occupancy map of the point cloud is found. Suppose there are 10 patches of the point cloud, 7 patches have reference patches, other 3 patches have unreference patches, and the projection idx for each patch have N possible values. By using a patch packing method, there are NL3 possible occupancy maps of the point cloud to be generated, the occupancy map with the minimum height among the NL3 possible occupancy maps of the point cloud may be obtained, and values of the projection idx of all the patches can be saved as optimal projection idx of all the patches. [0307] Possible implementation 1 : If flags have matched patch flag and matched patch idx of the patch are encoded separately, then, the syntax format may be shown in table 7: Table 7 [0308] Notes: have matched patch flag of the patch has 2 possible values, and 1 bit is enough to encode it. matched patch idx of the patch has pre patch count possible values, where pre patch count is a quantity of patch counts for the reference point cloud. [0309] At a decoder side, in another example, a point cloud decoding method may include the following steps. [0310] Step 1 : Decode patch count information from a bitstream, and iterate buffer patchLi st[patch_count] for patchLi st[i ], which is the ith patch in patch buffer patches. [0311] Step 2: Extract patchList[i].have_matched_patch_flag from the bitstream, if patchList[i].have_matched_patch_flag is true, extract patchList[i] matched _patch_idx, obtain projection idx of patchList[i] like: patchList[i] .proj ection idx = ref patchList[patchList[i] .matched _patch_idx] .proj ection idx, and then use Table 4B to call different methods to determine the tangentAxis and bitangentAxis of patchList[i]; or otherwise, if patchList[i].have_matched_patch_flag is false, extract projection idx of patchList[i] from the bitstream. 2.1.1 If patchList[i].projection_idx equals 0, the method Ml is used: Using patchList[i] normal Axis to determine patchList[i] tangentAxis and patchList[i] bitangentAxis, by using Table 2A or 2B. 2.1.2 If patchList[i].projection_idx equals 1, the method M2 is used: Using patchList[i] normal Axis to determine patchList[i] tangentAxis and patchList[i] bitangentAxis, by using Table 2A or 2B. Then,W = patchList[i] tangentAxis; patchList[i] tangentAxis = patchList[i] bitangentAxis; patchList[i] bitangentAxis = W; where W is a variable. 2.1.3 If patchList[i].projection_idx equals 2, the method M3 is used: Using patchList[i] normal Axis to determine patchList[i] tangentAxis and patchList[i] bitangentAxis, by using Table 2A or 2B. Then, rotate the angles of the tangentAxis and bitangentAxis of the patch. The orientation angle should be the same as the encoder side defined. [0312] Step 3: Decode other auxiliary information of patchLi st[i] . [0313] Step 4: Use patchList[i] tangentAxis and patchList[i].bitangentAxis to convert patch Li st[i] from 2d to 3d space. [0314] Possible implementation 2: If flags have matched patch flag and matched _patch_idx of the patch are encoded together, i.e. matched _patch_flag, then, the syntax format may be shown in table 8: Table 8 [0315] matched patch idx of the patch has pre matched patch count possible values, and have matched patch flag of the patch has 2 possible values. If matched patch idx and have matched patch flag are encoded together, it is called matched patch flag, and then matched _patch_flag has pre_matched_patch_count+ 1 possible values. N bits can be used to encode matched patch flag, where N is a quantity of bits in fixed length representation of matched patch flag, and N = ceiling (logifmatched patch flag)). [0316] Notes: UNMATCHED PATCH FLAG is a flag to indicate there is no reference patch in the reference point cloud for the current patch, and is an integer value. For example, if match _patch_idx occupies a range [0, pre matched patch count- 1 ], thenUNMATCHED PATCH FLAG can have any one of the values in[pre matched patch count, 2LN- 1 ] . [0317] bitstream, but instead an index of the reference patch is used to find an index of a normal axis of the reference patch. The normal axis index of the reference patch is derived as the normal axis index of the current patch, i.e. patchList[i].normal_axis = refList[k].normal_axis. [0318] At a decoder side, in another example, a point cloud decoding method may include the following steps. [0319] Step 1 : Decode patch count information from a bitstream, and iterate buffer patchList[patch_count] for patchLi st[i ], which is the ith patch in patch buffer patches. [0320] Step 2: Extract patchLi st[i] . matched _patch flag from the bitstream, if patchLi st[i ] . matched patch flag equals UNMATCHED PATCH FLAQ then it means there is no reference patch found in the reference point cloud. Then, extract projection idx of patchLi st[i ] from the bitstream; or otherwise, obtain patch Li st[i] matched patch idx from patch Li st[i]. matched _patch_flag as: patchList[i] matched _patch_idx = patchList[i] matched _patch_flag, obtain projection idx of patchList[i] like: patchList[i].projection_idx = ref patchList[patchList[i] matched _patch _idx].projection_idx, and then use Table 4B to use or call different methods to determine the tangentAxis and bitangentAxis of patchList[i]; or otherwise, if patchList[i] matched _patch Jlag does not equalUNMA TCHED PA TCH FLAG, . 2.1.1 If patchList[i].projection_idx equals 0, the method Ml is used: Using patchList[i] normal Axis to determine patchList[i] tangentAxis and patchList[i] bitangentAxis, by using Table 2A or 2B. 2.1.2 If patchList[i].projection_idx equals 1, the method M2 is used: Using patchList[i] normal Axis to determine patchList[i] tangentAxis and patchList[i] bitangentAxis, by using Table 2A or 2B. Then,W = patchList[i] tangentAxis; patchList[i] tangentAxis = patchList[i] bitangentAxis; patchList[i] bitangentAxis = W; where W is a variable. 2.1.3 If patchList[i].projection_idx equals 2, the method M3 is used: Using patchList[i] normal Axis to determine patchList[i] tangentAxis and patchList[i] bitangentAxis, by using Table 2A or 2B. Then, rotate the angles of the tangentAxis and bitangentAxis of the patch. The orientation angle should be the same as the encoder side defined. [0321] Step 3: Decode other auxiliary information of patchList[i] [0322] Step 4: Use patchList[i] tangentAxis and patchList[i].bitangentAxis to convert patch Li st[i] from 2d to 3d space. [0323] The point cloud decoding methods provided in the embodiments are corresponding to the point cloud encoding methods provided in the embodiments. The embodiments provide solutions for determining a tangent axis and a bitangent axis of a to-be-decoded patch in a to-be-decoded point cloud, and the technical solutions can support a scenario in which there are a plurality of methods for determining a tangent axis and a bitangent axis of a to-be-decoded patch. [0324] The foregoing mainly describes, from perspectives of methods, the solutions provided in the embodiments of this application. To implement the foregoing functions, the solutions include corresponding hardware structures and/software modules that perform the functions. A person skilled in the art should easily be aware that, in combination with the examples described in the embodiments disclosed in this specification, units and algorithms steps can be implemented by hardware or a combination of hardware and computer software. Whether a function is performed by hardware or by computer software driving hardware depends on particular applications and design constraints of the technical solutions. A person skilled in the art may use a different method 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. [0325] Division of functional modules may be performed on an encoder and a decoder in the embodiments of this application based on the foregoing method examples. For example, 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, module division is an example in this embodiment of this application, is merely logical function division, and may be other division in actual implementation. [0326] It can be understood that modules in the encoder and the decoder in the embodiments of this application are functional entities for implementing execution steps included in the point cloud encoding method and the point cloud decoding method corresponding to this application, that is, functional entities capable of fully implementing the steps in the point cloud encoding method and the point cloud decoding method corresponding to this application and extensions and variants of these steps. For details, refer to descriptions of an image filtering method in this specification. For brevity, details are not described herein. [0327] FIG. 19 is a schematic block diagram of an implementation of an encoding device or a decoding device (referred to as a coding device 230 or a point cloud coding device 230) that is applied to 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 or decoding methods described in this application, and particularly a method for performing filtering on a current image block based on a block size of the current image block. To avoid repetition, details are not described herein. [0328] In this embodiment of this application, the processor 2310 may be a central processing unit (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 the processor may be any conventional processor or the like. [0329] The memory 2330 may include a ROM device or a RAM device. Any other appropriate type of storage device may be alternatively used as the memory 2330. The memory 2330 may include code and data 2331 that is accessed by the processor 2310 by using 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 or decoding method described in this application (particularly the method for performing filtering on a current image block based on a block size of the current image block described in this application). For example, the application program 2335 may include applications 1 to N, and further include a point cloud encoding or decoding application (referred to as a point cloud coding application) for performing the point cloud encoding or decoding method described in this application. [0330] In addition to a data bus, the bus system 2350 may include a power bus, a control bus, a status signal bus, and the like. However, for clear description, various types of buses in the figure are denoted as the bus system 2350. [0331] Optionally, the coding device 230 may further include one or more output devices, such as a display 2370. In an example, the display 2370 may be a touch display, which integrates a display and a touch unit that operably senses a touch input. The display 2370 may be connected to the processor 2310 through the bus 2350. [0332] A person skilled in the art can understand that functions described with reference to various descriptive logical blocks, modules, and algorithm steps disclosed in this specification can be implemented by hardware, software, firmware, or any combination thereof. If implemented in software, the functions described with reference to various descriptive logical blocks, modules, and steps may be stored on or transmitted as one or more instructions or code on a computer readable medium and executed by a hardware-based processing unit. The computer readable medium may include a computer readable storage medium, which is corresponding 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 (for example, according to a communication protocol). In this manner, the computer readable medium generally may be corresponding 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 available medium that can be accessed by one or more computers or one or more processors to retrieve an instruction, code, and/or a data structure for implementation of the technologies described in this application. A computer program product may include a computer readable medium. [0333] As an instance instead of a limitation, such computer readable storage media can include a RAM, a ROM, an EEPROM, a CD-ROM or another optical disk storage apparatus, a magnetic disk storage apparatus or another magnetic storage apparatus, a flash memory, or any other medium that can be configured to store desired program code in a form of an instruction or a data structure and that can be accessed by a computer. In addition, any connection is properly termed a computer readable medium. For example, if an instruction is transmitted from a website, a server, or another remote source using a coaxial cable, a fiber optic cable, a twisted pair, a digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in a definition of a medium. It should be understood, however, that the computer readable storage medium and data storage medium do not include connections, carriers, signals, or other transitory media, but are actually directed to non-transitory tangible storage media. Disk and disc, as used herein, includes a compact disc (CD), a laser disc, an optical disc, a DVD, and a Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the foregoing should also fall within the scope of the computer readable medium. [0334] An instruction may be executed by one or more processors, such as one or more digital signal processors (DSP), a general purpose microprocessor, an application-specific integrated circuit (ASIC), a field-programmable logic array (FPGA), or other equivalent integrated or discrete logic circuits. Therefore, the term "processor" used in this specification may refer to the foregoing structure, or any other structure that is suitable for implementation of the technologies described in this specification. In addition, in some aspects, the functions described with reference to various descriptive logical blocks, modules, and steps described in this specification can be provided in a dedicated hardware and/or software module configured to perform encoding and decoding, or integrated into a combined codec. Moreover, the technologies can be fully implemented by 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 corresponding circuit devices or logic elements. [0335] The technologies in this application may be implemented in a wide variety of apparatuses or devices, including a wireless handset, an integrated circuit (IC), or a set of ICs (for example, a chip set). Various components, modules, or units are described in this application to emphasize functional aspects of an apparatus configured to perform the disclosed technologies, but do not necessarily require implementation by different hardware units. Actually, as described above, various units may be combined in a codec hardware unit or provided by an interoperative hardware unit (including one or more processors as described above), in conjunction with suitable software and/or firmware. [0336] The foregoing descriptions are merely examples of specific implementations of this application, but are not intended to limit the protection scope of this application. Any variation or replacement readily figured out by a person skilled in the art within the technical scope disclosed in this application shall fall within the protection scope of this application. Therefore, the protection scope of this application shall be subject to the protection scope of the claims. CLAIMS What is claimed is:
1. A point cloud encoding method, comprising:
obtaining auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud, wherein the auxiliary information of the patch comprises an index of a normal axis of the patch and first identification information of the patch, wherein the first identification information indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch; and
encoding the auxiliary information of the patch into a bitstream.
2. The method according to claim 1, wherein
when the first identification information is a first value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or
when the first identification information is a second value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped.
3. A point cloud encoding method, comprising:
obtaining auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud, wherein the auxiliary information of the patch comprises an index of a normal axis of the patch and first identification information of the patch, and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch; and
encoding the auxiliary information of the patch into a bitstream.
4. The method according toclaim 3, wherein when the first identification information is the first value, the first identification information indicates that a first method is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or
when the first identification information is the second value, the first identification information indicates that a second method is used to determine the tangent axis of the patch and the bitangent axis of the patch.
5. The method according toclaim 3 or 4, wherein the obtaining auxiliary information of a ill to-be-encoded patch in a to-be-encoded point cloud comprises:
constructing the second identification information of the patch, wherein the second identification information indicates whether there is any reference patch that matches the patch, in the reference point cloud of the patch; and
when the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, constructing the first identification information, wherein the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch.
6. The method according to any one of claims 3 to 5, wherein the method further comprises:
after the tangent axis of the patch and the bitangent axis of the patch are determined, projecting the patch from three-dimensional space onto two-dimensional space based on the tangent axis of the patch and the bitangent axis of the patch.
7. The method according to any one of claims 3 to 6, wherein the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch comprises:
obtaining a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes, wherein the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch.
8. The method according to any one of claims 3 to 6, wherein the first identification information indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the second method to determine the tangent axis of the patch and the bitangent axis of the patch comprises:
obtaining a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and swapping the reference tangent axis and the reference bitangent axis.
9. A point cloud decoding method, comprising:
parsing a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud, wherein the auxiliary information of the patch comprises an index of a normal axis of the patch and first identification information of the patch, and the first identification information indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch.;
determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch; and
reconstructing geometry information of the patch based on the normal axis, the tangent axis and the bitangent axis of the patch.
10. The method according to claim 9, wherein
when the first identification information of the patch is a first value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or
when the first identification information of the patch is a second value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped.
11. A point cloud decoding method, comprising:
parsing a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud, wherein the auxiliary information of the patch comprises an index of a normal axis of the patch and first identification information of the patch, and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch;
determining the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing; and
reconstructing geometry information of the patch based on the normal axis, the tangent axis and the bitangent axis of the patch.
12. The method according toclaim 11, wherein when the first identification information of the patch is the first value, the first identification information indicates that a first method is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch is the second value, the first identification information indicates that a second method is used to determine the tangent axis of the patch and the bitangent axis of the patch.
13. The method according toclaim 11 or 12, wherein the parsing a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud comprises: parsing the bitstream to obtain the second identification information of the patch; and when the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, parsing the bitstream to obtain the first identification information of the patch, wherein the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch.
14. The method according to any one of claims 11 to 13, wherein the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the first method to determine the tangent axis of the patch and the bitangent axis of the patch comprises:
obtaining a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes, wherein the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch.
15. The method according to any one of claims 11 to 13, wherein the first identification information indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, the using the second method to determine the tangent axis of the patch and the bitangent axis of the patch comprises:
obtaining a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes, and a plurality of patch bitangent axes; and swapping the reference tangent axis and the reference bitangent axis.
16. An encoding apparatus, comprising:
a patch information generation module, configured to obtain auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud, wherein the auxiliary information of the patch comprises an index of a normal axis of the patch and first identification information of the patch, and the first identification information indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch; and
an auxiliary information encoding module, configured to encode the auxiliary information of the patch into a bitstream.
17. The apparatus according to claim 16, wherein
when the first identification information is a first value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or
when the first identification information is a second value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped.
18. An encoding apparatus, comprising:
a patch information generation module, configured to obtain auxiliary information of a to-be-encoded patch in a to-be-encoded point cloud, wherein the auxiliary information of the patch comprises an index of a normal axis of the patch and first identification information of the patch, and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch; and
an auxiliary information encoding module, configured to encode the auxiliary information of the patch into a bitstream.
19. The apparatus according toclaim 18, wherein when the first identification information is the first value, the first identification information indicates that a first method is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information is the second value, the first identification information indicates that a second method is used to determine the tangent axis of the patch and the bitangent axis of the patch.
20. The apparatus according to claim 18 or 19, wherein the patch information generation module is configured to:
construct the second identification information of the patch, wherein the second identification information indicates whether there is any reference patch that matches the patch, in the reference point cloud of the patch; and when the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, construct the first identification information, wherein the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch.
21. The apparatus according to any one of claims 18 to 20, wherein the patch information generation module is further configured to:
after the tangent axis of the patch and the bitangent axis of the patch are determined, project the patch from three-dimensional space onto two-dimensional space based on the tangent axis of the patch and the bitangent axis of the patch.
22. The apparatus according to any one of claims 18 to 21, wherein the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and the patch information generation module is specifically configured to:
obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes and a plurality of patch bitangent axes, wherein the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch.
23. The apparatus according to any one of claims 18 to 21, wherein the first identification information indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, and the patch information generation module is specifically configured to:
obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes and a plurality of patch bitangent axes; and swap the reference tangent axis and the reference bitangent axis.
24. A decoding apparatus, comprising:
an auxiliary information decoding module, configured to: parse a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud, wherein the auxiliary information of the patch comprises an index of a normal axis of the patch and first identification information of the patch, and the first identification information indicates whether to swap the tangent axis of the patch and the bitangent axis of the patch; and determine the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing; and
a point cloud geometry information reconstruction module, configured to reconstruct geometry information of the patch based on the normal axis, the tangent axis and the bitangent axis of the patch.
25. The apparatus according to claim 24, wherein
when the first identification information of the patch is a first value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are not to be swapped; and/or
when the first identification information of the patch is a second value, an index of the tangent axis of the patch and an index of the bitangent axis of the patch are to be swapped.
26. A decoding apparatus, comprising:
an auxiliary information decoding module, configured to: parse a bitstream to obtain auxiliary information of a to-be-decoded patch in a to-be-decoded point cloud, wherein the auxiliary information of the patch comprises an index of a normal axis of the patch and first identification information of the patch, and the first identification information indicates a method for determining a tangent axis of the patch and a bitangent axis of the patch; and determine the tangent axis of the patch and the bitangent axis of the patch based on the index of the normal axis and the first identification information of the patch that are obtained through parsing; and
a point cloud geometry information reconstruction module, configured to reconstruct geometry information of the patch based on the normal axis, the tangent axis and the bitangent axis of the patch.
27. The apparatus according toclaim 26, wherein when the first identification information of the patch is the first value, the first identification information indicates that a first method is used to determine the tangent axis of the patch and the bitangent axis of the patch; and/or when the first identification information of the patch is the second value, the first identification information indicates that a second method is used to determine the tangent axis of the patch and the bitangent axis of the patch.
28. The apparatus according toclaim 26 or 27, wherein the auxiliary information decoding module is configured to:
parse the bitstream to obtain the second identification information of the patch; and when the second identification information indicates that there is no reference patch that matches the patch, in the reference point cloud of the patch, parse the bitstream to obtain the first identification information of the patch, wherein the first identification information indicates the method for determining the tangent axis of the patch and the bitangent axis of the patch.
29. The apparatus according to any one of claims 26 to 28, wherein the first identification information indicates that the first method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, and the auxiliary information decoding module is configured to:
obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patch based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes and a plurality of patch bitangent axes, wherein the reference tangent axis is the tangent axis of the patch, the reference bitangent axis is the bitangent axis of the patch.
30. The apparatus according to any one of claims 26 to 28, wherein the first identification information indicates that the second method is used to determine the tangent axis of the patch and the bitangent axis of the patch, and correspondingly, and the auxiliary information decoding module is configured to:
obtain a reference tangent axis and a reference bitangent axis that are corresponding to the normal axis of the patchs based on a mapping relationship between a plurality of patch normal axes, a plurality of patch tangent axes and a plurality of patch bitangent axes; and swap the reference tangent axis and the reference bitangent axis.
31. An encoding apparatus, wherein the apparatus comprises a memory and a processor, the memory is configured to store program code, and the processor is configured to invoke the program code, to perform the point cloud encoding method according to any one of claims 1 to 8.
32. A decoding apparatus, wherein the apparatus comprises a memory and a processor, the memory is configured to store program code, and the processor is configured to invoke the program code, to perform the point cloud decoding method according to any one of claims 9 to 15.
33. A computer readable storage medium, comprising program code, wherein the program code comprises instructions for performing some or all of steps in the point cloud encoding method according to any one of claims 1 to 8, or performing some or all of steps in the point cloud decoding method according to any one of claims 9 to 15.
PCT/CN2019/093972 2018-07-18 2019-06-29 Point cloud encoding method, point cloud decoding method, encoder and decoder WO2020015517A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862700319P 2018-07-18 2018-07-18
US62/700,319 2018-07-18
US201862700921P 2018-07-20 2018-07-20
US62/700,921 2018-07-20

Publications (1)

Publication Number Publication Date
WO2020015517A1 true WO2020015517A1 (en) 2020-01-23

Family

ID=69164996

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/093972 WO2020015517A1 (en) 2018-07-18 2019-06-29 Point cloud encoding method, point cloud decoding method, encoder and decoder

Country Status (1)

Country Link
WO (1) WO2020015517A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023050951A1 (en) * 2021-09-30 2023-04-06 Beijing Xiaomi Mobile Software Co., Ltd. Method and apparatus of encoding/decoding point cloud geometry data sensed by at least one sensor

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010042466A1 (en) * 2008-10-06 2010-04-15 Kevin Scott Williams Apparatus and method for classifying point cloud data based on principal axes
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
CN104715496A (en) * 2015-03-23 2015-06-17 中国科学技术大学 Image prediction method, system and device based on three-dimensional point cloud model under cloud environment
CN105913488A (en) * 2016-04-15 2016-08-31 长安大学 Three-dimensional-mapping-table-based three-dimensional point cloud rapid reconstruction method
WO2017209961A1 (en) * 2016-05-28 2017-12-07 Microsoft Technology Licensing, Llc Motion-compensated compression of dynamic voxelized point clouds

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010042466A1 (en) * 2008-10-06 2010-04-15 Kevin Scott Williams Apparatus and method for classifying point cloud data based on principal axes
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
CN104715496A (en) * 2015-03-23 2015-06-17 中国科学技术大学 Image prediction method, system and device based on three-dimensional point cloud model under cloud environment
CN105913488A (en) * 2016-04-15 2016-08-31 长安大学 Three-dimensional-mapping-table-based three-dimensional point cloud rapid reconstruction method
WO2017209961A1 (en) * 2016-05-28 2017-12-07 Microsoft Technology Licensing, Llc Motion-compensated compression of dynamic voxelized point clouds

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JILL BOYCE ET AL.: "Spherical rotation orientation SEI for HEVC and AVC coding of 360 video", JOINT COLLABORATIVE TEAM ON VIDEO CODING (JCT-VC) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11, 26TH MEETING, 4 January 2017 (2017-01-04), Geneva, CH, XP030118131 *
SEJIN OH ET AL.: "SEI message for signaling of 360-degree video information", JOINT COLLABORATIVE TEAM ON VIDEO CODING (JCT-VC) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC1/SC 29/WG 11, 26TH MEETING, 4 January 2017 (2017-01-04), Geneva, CH, XP030118132 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023050951A1 (en) * 2021-09-30 2023-04-06 Beijing Xiaomi Mobile Software Co., Ltd. Method and apparatus of encoding/decoding point cloud geometry data sensed by at least one sensor

Similar Documents

Publication Publication Date Title
US11704837B2 (en) Point cloud encoding method, point cloud decoding method, encoder, and decoder
US20210183110A1 (en) Point Cloud Encoding Method, Point Cloud Decoding Method, Encoder, and Decoder
US11388442B2 (en) Point cloud encoding method, point cloud decoding method, encoder, and decoder
US20190273929A1 (en) De-Blocking Filtering Method and Terminal
US11875538B2 (en) Point cloud encoding method and encoder
US11961265B2 (en) Point cloud encoding and decoding method and apparatus
CN111479114B (en) Point cloud encoding and decoding method and device
KR20240095364A (en) An apparatus of transmitting point cloud data, a method of transmitting point cloud data, an apparatus of receiving point cloud data, and a method of receiving point cloud data
CN111435551B (en) Point cloud filtering method and device and storage medium
US20220007037A1 (en) Point cloud encoding method and apparatus, point cloud decoding method and apparatus, and storage medium
WO2020015517A1 (en) Point cloud encoding method, point cloud decoding method, encoder and decoder
CN111866484B (en) Point cloud encoding method, point cloud decoding method, device and storage medium
US20240153147A1 (en) V3c syntax extension for mesh compression

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19837226

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19837226

Country of ref document: EP

Kind code of ref document: A1