Global scaling of point cloud data

By combining a global scaling factor and a refinement value, the problem of point locations exceeding the bounding box in point cloud data compression is solved, improving compression efficiency and quality. This method is suitable for applications such as autonomous vehicles, scanners, cameras, and sensors.

CN115315950BActive Publication Date: 2026-06-09QUALCOMM INC

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
QUALCOMM INC
Filing Date
2021-04-08
Publication Date
2026-06-09

Smart Images

  • Figure CN115315950B_ABST
    Figure CN115315950B_ABST
Patent Text Reader

Abstract

An apparatus for decoding point cloud data includes a memory configured to store point cloud data and one or more processors implemented in circuitry and configured to decode a frame of the point cloud data including a plurality of points, each point of the plurality of points being associated with a position value defining a respective position of the point, determine a global scaling factor for the frame, and scale the position value of each point by the global scaling factor. The scaling can be clipped to prevent points from exceeding a boundary of a corresponding bounding box that includes the respective point.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application claims priority to U.S. Application No. 17 / 224,984, filed April 7, 2021; U.S. Provisional Application No. 63 / 007,288, filed April 8, 2020; U.S. Provisional Application No. 63 / 010,546, filed April 15, 2020; U.S. Provisional Application No. 63 / 013,934, filed April 22, 2020; and U.S. Provisional Application No. 63 / 041,668, filed June 19, 2020, all of which are incorporated herein by reference in their entirety. U.S. Application No. 17 / 224,984 claims the interests in U.S. Provisional Application No. 63 / 007,288, filed April 8, 2020; U.S. Provisional Application No. 63 / 010,546, filed April 15, 2020; U.S. Provisional Application No. 63 / 013,934, filed April 22, 2020; and U.S. Provisional Application No. 63 / 041,668, filed June 19, 2020. Technical Field

[0002] This disclosure relates to point cloud encoding and decoding. Summary of the Invention

[0003] This disclosure generally describes techniques for improving the quantization and scaling of point cloud data. The techniques disclosed herein can be used in conjunction with any techniques for compressing (e.g., encoding and decoding) point cloud data, including geometry-based point cloud compression (G-PCC). Specifically, points in a frame can be scaled globally. That is, all points in a frame can be scaled in the same manner. Both global and local scaling can be performed in a way that avoids causing the position of a point to exceed its corresponding bounding box.

[0004] In one example, a method for decoding point cloud data includes: decoding a frame of point cloud data comprising multiple points, each point being associated with a position value defining the corresponding location of that point; determining a global scaling factor for the frame; and scaling the position value of each point using the global scaling factor.

[0005] In another example, the device for decoding point cloud data includes a memory configured to store the point cloud data; and one or more processors implemented in a circuit and configured to: decode a frame of the point cloud data comprising a plurality of points, each of the plurality of points being associated with a position value defining a corresponding location of the point; determine a global scaling factor for the frame; and scale the position value of each point using the global scaling factor.

[0006] In another example, a computer-readable storage medium has instructions stored thereon that, when executed, cause a processor to: decode a frame of point cloud data comprising a plurality of points, each of the plurality of points being associated with a position value defining the corresponding location of that point; determine a global scaling factor for the frame; and scale the position value of each point using the global scaling factor.

[0007] In another example, a device for decoding point cloud data includes: a component for decoding a frame of point cloud data comprising multiple points, each point being associated with a position value defining a corresponding location of that point; determining a global scaling factor for the frame; and scaling the position value of each point using the global scaling factor.

[0008] In another example, a method for encoding point cloud data includes encoding a frame of point cloud data comprising multiple points, each point being associated with a location value defining the corresponding location of that point; determining an initial global scaling factor for the frame; determining the number of bits used to specify a refinement value to be applied to the initial global scaling factor; determining a scaling factor refinement value having the number of bits; and generating a bit stream comprising data representing the encoded frame, the number of bits used to specify the refinement value, and the scaling factor refinement value.

[0009] Details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the specification, drawings, and claims. Attached Figure Description

[0010] Figure 1 This is a block diagram illustrating an exemplary encoding and decoding system that can perform the techniques of this disclosure.

[0011] Figure 2 This is a block diagram illustrating an exemplary geometric point cloud compression (G-PCC) encoder.

[0012] Figure 3 This is a block diagram illustrating an exemplary G-PCC decoder.

[0013] Figure 4 This is a graph illustrating an exemplary step size function.

[0014] Figure 5 This is a flowchart illustrating an exemplary method for encoding geometry-based point cloud data according to the technology of this disclosure.

[0015] Figure 6 This is a flowchart illustrating an exemplary method for decoding geometry-based point cloud data according to the technology of this disclosure. Detailed Implementation

[0016] Figure 1This is a block diagram illustrating an exemplary encoding and decoding system 100 capable of implementing the techniques of this disclosure. The techniques of this disclosure are generally aimed at encoding and / or decoding point cloud data, i.e., supporting point cloud compression. Typically, point cloud data includes any data used for processing point clouds. Encoding and decoding can be effective when compressing and / or decompressing point cloud data.

[0017] like Figure 1 As shown, system 100 includes a source device 102 and a destination device 116. The source device 102 provides encoded point cloud data to be decoded by the destination device 116. Specifically, in Figure 1 In this example, source device 102 provides point cloud data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 can include any of a wide range of devices, including desktop computers, laptop computers, tablet computers, set-top boxes, handsets such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, land or sea vehicles, spacecraft, aircraft, robots, LIDAR (Light Detection and Ranging) devices, satellites, etc. In some cases, source device 102 and destination device 116 may be equipped for wireless communication.

[0018] exist Figure 1 In the example, source device 102 includes a data source 104, a memory 106, a G-PCC encoder 200, and an output interface 108. Destination device 116 includes an input interface 122, a G-PCC decoder 300, a memory 120, and a data consumer 118. According to this disclosure, the G-PCC encoder 200 of source device 102 and the G-PCC decoder 300 of destination device 116 may be configured to apply techniques of this disclosure related to: (1) determining whether a scaled point cloud violates Sequence Parameter Set (SPS) bounding box constraints; (2) determining a global scaling factor of the point cloud using normalized scaling syntax elements; (3) determining a scaling power value based on syntax elements or one or more QP values; and / or (4) determining bounding boxes within SPS bounding boxes. Thus, source device 102 represents an example of an encoding device, and destination device 116 represents an example of a decoding device. In other examples, source device 102 and destination device 116 may include other components or arrangements. For example, source device 102 may receive data (e.g., point cloud data) from internal or external sources. Similarly, destination device 116 may interface with an external data consumer, rather than including the data consumer in the same device.

[0019] like Figure 1The system 100 shown is merely an example. Generally, other digital encoding and / or decoding devices can perform the techniques associated with the present invention, including: (1) determining whether a scaled point cloud violates Sequence Parameter Set (SPS) bounding box constraints; (2) determining a global scaling factor for the point cloud using normalized scaling syntax elements; (3) determining a scaling power value based on syntax elements or one or more QP values; and / or (4) determining bounding boxes within SPS bounding boxes. Source device 102 and destination device 116 are merely examples of such devices in which source device 102 generates encoded data for transmission to destination device 116. This disclosure refers to “coding” devices as devices that perform the encoding and / or decoding of data. Thus, G-PCC encoder 200 and G-PCC decoder 300 represent examples of encoding and decoding devices, particularly encoders and decoders. In some examples, source device 102 and destination device 116 may operate in a substantially symmetrical manner, such that each of source device 102 and destination device 116 includes both encoding and decoding components. Therefore, system 100 can support one-way or two-way transmission between source device 102 and destination device 116, for example, for streaming, replay, broadcasting, telephone, navigation and other applications.

[0020] Typically, data source 104 represents a data source (i.e., raw, unencoded point cloud data) and provides a continuous sequence of "frames" of data to G-PCC encoder 200, which encodes the data in the frames. Data source 104 of source device 102 may include a point cloud capture device, such as any of a variety of cameras or sensors, for example, a 3D scanner or light detection and ranging (LIDAR) device, one or more video cameras, an archive file containing previously captured data, and / or a data feed interface that receives data from a data content provider. Alternatively or additionally, the point cloud data may be computer-generated from a scanner, camera, sensor, or other data source. For example, data source 104 may generate computer-graphics-based data as source data, or produce a combination of live data, archived data, and computer-generated data. In each case, G-PCC encoder 200 encodes the captured, pre-captured, or computer-generated data. G-PCC encoder 200 may rearrange frames from their received order (sometimes referred to as "display order") into an encoding / decoding order for encoding and decoding. The G-PCC encoder 200 can generate one or more bit streams including encoded data. The source device 102 can then output the encoded data to a computer-readable medium 110 via the output interface 108 for reception and / or acquisition by, for example, the input interface 122 of the destination device 116.

[0021] The memory 106 of the source device 102 and the memory 120 of the destination device 116 can represent general-purpose memory. In some examples, memory 106 and memory 120 may store raw data, such as raw data from data source 104 and raw decoded data from G-PCC decoder 300. Alternatively or additionally, memory 106 and memory 120 may store software instructions executable by, for example, G-PCC encoder 200 and G-PCC decoder 300. Although memory 106 and memory 120 are shown separately from G-PCC encoder 200 and G-PCC decoder 300 in this example, it should be understood that G-PCC encoder 200 and G-PCC decoder 300 may also include internal memory for functionally similar or equivalent purposes. Furthermore, memory 106 and memory 120 may store encoded data, such as encoded data output from G-PCC encoder 200 and input to G-PCC decoder 300. In some examples, portions of memory 106 and memory 120 may be allocated as one or more buffers, for example, to store raw, decoded, and / or encoded data. For instance, memory 106 and memory 120 may store data representing point clouds.

[0022] Computer-readable medium 110 can represent any type of medium or device capable of transmitting encoded data from source device 102 to destination device 116. In one example, computer-readable medium 110 represents a communication medium that enables source device 102 to transmit encoded data to destination device 116 in real time, for example, via a radio frequency network or a computer-based network. Depending on the communication standard, such as a wireless communication protocol, output interface 108 can modulate the transmitted signal including the encoded data, and input interface 122 can demodulate the received transmitted signal. The communication medium can include any wireless or wired communication medium, such as radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form part of a packet-based network, such as a local area network, a wide area network, or a global network, such as the Internet. The communication medium can include a router, a switch, a base station, or any other equipment that facilitates communication from source device 102 to destination device 116.

[0023] In some examples, source device 102 can output encoded data to storage device 112 from output interface 108. Similarly, destination device 116 can access encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessible data storage media, such as hard disks, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded data.

[0024] In some examples, source device 102 may output encoded data to file server 114 or another intermediate storage device that may store the encoded video generated by source device 102. Destination device 116 may access the stored data from file server 114 via streaming or downloading. File server 114 may be any type of server device capable of storing encoded data and sending it to destination device 116. File server 114 may represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. Destination device 116 may access the encoded data from file server 114 via any standard data connection, including an internet connection. This may include a wireless channel (e.g., Wi-Fi connection), a wired connection (e.g., digital subscriber line (DSL), cable modem, etc.), or a combination of both, suitable for accessing the encoded data stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming protocol, a download transfer protocol, or a combination thereof.

[0025] Output interface 108 and input interface 122 may represent a wireless transmitter / receiver, a modem, a wired network component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 include wireless components, output interface 108 and input interface 122 may be configured to transmit data such as encoded data according to cellular communication standards such as 4G, 4G-LTE (Long Term Evolution), LTE Advanced, 5G, or similar standards. In some examples where output interface 108 includes a wireless transmitter, output interface 108 and input interface 122 may be configured to operate according to other wireless standards, such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee). TM ),Bluetooth TM Standards or similar standards are used to transmit data, such as encoded data. In some examples, source device 102 and / or destination device 116 may include their respective system-on-chip (SoC) devices. For example, source device 102 may include an SoC device performing functionality belonging to G-PCC encoder 200 and / or output interface 108, and destination device 116 may include an SoC device performing functionality belonging to G-PCC decoder 300 and / or input interface 122.

[0026] The technology disclosed herein can be applied to encoding and decoding of any of the following applications: such as communication between autonomous vehicles, communication between scanners, cameras, sensors and processing devices such as local or remote servers, geographic mapping, or other applications.

[0027] The input interface 122 of the destination device 116 receives an encoded bitstream from a computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, etc.). The encoded bitstream may include signaling information defined by the G-PCC encoder 200 and used by the G-PCC decoder 300, such as syntax elements having values ​​describing the characteristics and / or processing of the encoded / decoded units (e.g., stripes, pictures, picture groups, sequences, etc.). The data consumer 118 uses the decoded data. For example, the data consumer 118 may use the decoded data to determine the location of a physical object. In some examples, the data consumer 118 may include a display for presenting a point cloud-based image.

[0028] The G-PCC encoder 200 and G-PCC decoder 300 can each be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the technology is partially implemented in software, the device may store instructions for software in a suitable non-transitory computer-readable medium and use one or more processors to execute those instructions in hardware to perform the technology of this disclosure. Each of the G-PCC encoder 200 and G-PCC decoder 300 may be included in one or more encoders or decoders, either of which may be integrated as part of a combined encoder / decoder (CODEC) in the respective device. Devices including the G-PCC encoder 200 and / or G-PCC decoder 300 may include one or more integrated circuits, microprocessors, and / or other types of devices.

[0029] The G-PCC encoder 200 and G-PCC decoder 300 may operate according to encoding / decoding standards, such as the Video Point Cloud Compression (V-PCC) standard or the Geometric Point Cloud Compression (G-PCC) standard. This disclosure may generally relate to the encoding and decoding (e.g., encoding and decoding) of images, including the process of encoding or decoding image data. Encoded bitstreams typically contain a series of values ​​for syntax elements representing encoding / decoding decisions (e.g., encoding / decoding modes).

[0030] This disclosure may generally relate to “signaling” specific information, such as syntax elements. The term “signaling” can generally refer to the transmission of values ​​for syntax elements and / or other data used to decode encoded data. That is, the G-PCC encoder 200 can signal values ​​for syntax elements in the bit stream. Typically, signaling refers to generating values ​​in the bit stream. As described above, source device 102 can transmit the bit stream to destination device 116 substantially in real time (or non-real time, such as when syntax elements are stored in storage device 112 for later retrieval by destination device 116).

[0031] ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is investigating the potential need for standardization of point cloud encoding and decoding techniques with compression capabilities significantly exceeding current methods and will work towards creating such a standard. This exploration is being undertaken collaboratively within a team called the 3D Graphics Team (3DG) to evaluate compression technology designs proposed by their experts in the field.

[0032] Point cloud compression activities are categorized into two distinct approaches. The first is “Video Point Cloud Compression” (V-PCC), which segments a 3D object and projects these segments onto multiple 2D planes (represented as “patch” images within a 2D frame). These segments are then encoded and decoded by a traditional 2D video codec, such as the High Efficiency Video Codec (HEVC) (ITU-TH.265) codec. The second approach is “Geometry-Based Point Cloud Compression” (G-PCC), which directly compresses 3D geometry—the location of a set of points in 3D space—and the associated attribute values ​​(for each point associated with the 3D geometry). G-PCC is used for compressing point clouds in Type 1 (static point clouds) and Type 3 (dynamically acquired point clouds). The latest draft of the G-PCC standard is available in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19088, presented in Brussels, Belgium, in January 2020, and the codec description is available in G-PCC Codec Description v6, ISO / IEC JTC1 / SC29 / WG11 w19091, also presented in January 2020.

[0033] A point cloud contains a set of points in 3D space and can have attributes associated with those points. Attributes can be color information, such as R, G, B or Y, Cb, Cr, or reflectance information, or other attributes. Point clouds can be captured by various cameras or sensors, such as LiDAR sensors and 3D scanners, and can also be computer-generated. Point cloud data is used in a variety of applications, including but not limited to architecture (modeling), graphics (3D models for visualization and animation), and the automotive industry (LiDAR sensors for navigation aids).

[0034] The 3D space occupied by point cloud data can be surrounded by virtual bounding boxes. The positions of points within the bounding boxes can be represented with a specific precision; therefore, the positions of one or more points can be quantized based on this precision. At the smallest level, the bounding box is divided into voxels, which are the smallest units of space represented by unit cubes. A voxel within a bounding box can be associated with zero, one, or more points. The bounding box can be segmented into multiple cubic / cuboid regions, which can be called tiles. Each tile can be encoded into one or more slices. Segmenting the bounding box into tiles and slices can be based on the number of points in each segment, or on other considerations (e.g., a specific region can be encoded into a slice). Slice regions can be further segmented using segmentation decisions similar to those in video codecs.

[0035] Figure 2 This is a block diagram illustrating a set of exemplary components of a G-PCC encoder 200. Figure 3 This is a block diagram illustrating a set of exemplary components of a G-PCC decoder 300. The modules shown are logical and do not necessarily correspond one-to-one with the code implemented in the reference implementation of the G-PCC codec, namely the TMC13 test model software studied by ISO / IEC MPEG (JTC 1 / SC 29 / WG 11).

[0036] In the G-PCC encoder 200 and G-PCC decoder 300, the individual point cloud locations are first encoded and decoded. Attribute encoding and decoding depend on the geometry being decoded. Figure 2 and Figure 3 In the diagram, the gray-shaded module is typically used for Category 1 data. The diagonal crosshair module is typically used for Category 3 data. All other modules are common to both Category 1 and Category 3.

[0037] For Category 3 data, the compressed geometry is typically represented as an octree from the root down to the leaf level of individual voxels. For Category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root down to the leaf level of blocks larger than voxels) plus a model of the surface in each leaf of the pruned octree. In this way, Category 1 and Category 3 data share the octree encoding / decoding mechanism, while Category 1 data can additionally approximate the voxels within each leaf using a surface model. The surface model used is a triangulation consisting of 1-10 triangles per block, resulting in a triangle set (soup). Therefore, the Category 1 geometry codec is called the Trisoup geometry codec, while the Category 3 geometry codec is called the octree geometry codec.

[0038] At each node in the octree, the occupancy of one or more of its child nodes (up to eight nodes) is signaled (when not inferred). Multiple neighborhoods are specified, including (a) nodes sharing a face with the current octree node, (b) nodes sharing a face, edge, or vertex with the current octree node, etc. Within each neighborhood, the occupancy of the node and / or its child nodes can be used to predict the occupancy of the current node or its child nodes. For points sparsely distributed among some nodes in the octree, the codec also supports a direct encoding / decoding mode, where the 3D position of the point is directly encoded. A flag can be signaled to indicate the direct signaling mode. At the lowest level, the number of points associated with an octree node / leaf node can also be encoded / decoded.

[0039] Once the geometry is encoded or decoded, the attributes corresponding to the points within the geometry are also encoded or decoded. When there are multiple attribute points corresponding to a reconstructed / decoded geometric point, the attribute values ​​representing the reconstructed point can be derived.

[0040] G-PCC employs three attribute encoding / decoding methods: Region Adaptive Hierarchical Transform (RAHT) encoding / decoding, interpolation-based hierarchical nearest neighbor prediction (prediction transform), and interpolation-based hierarchical nearest neighbor prediction (lifting transform) with update / lifting steps. RAHT and lifting are typically used for Class 1 data, while prediction is typically used for Class 3 data. However, any method can be used for any data, and, like the geometry codec in G-PCC, the attribute encoding / decoding method used for encoding / decoding point clouds is specified in the bitstream.

[0041] Attribute encoding and decoding can be performed at the Level-of-Detail (LOD) level, where a more refined representation of the point cloud attributes can be obtained at each LOD level. Each LOD level can be specified based on a distance metric from neighboring nodes or based on the sampling distance.

[0042] At the G-PCC encoder 200, the residuals obtained from the output of the encoding / decoding method, which is an attribute, are quantized. Context-adaptive arithmetic encoding / decoding can be used to encode and decode the quantized residuals.

[0043] exist Figure 2 In the example, the G-PCC encoder 200 may include a coordinate transformation unit 202, a color transformation unit 204, a voxelization unit 206, an attribute transfer unit 208, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic coding unit 214, a geometric reconstruction unit 216, a RAHT unit 218, a LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic coding unit 226.

[0044] like Figure 2 As shown in the example, the G-PCC encoder 200 can receive a set of locations and a set of attributes. The locations can include the coordinates of points in the point cloud. The attributes can include information about the points in the point cloud, such as the colors associated with the points in the point cloud.

[0045] The coordinate transformation unit 202 can apply transformations to the coordinates of a point to transform the coordinates from the initial domain to the transformation domain. The transformed coordinates may be referred to as transformed coordinates in this disclosure. The color transformation unit 204 can apply transformations to transform the color information of an attribute to different domains. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space.

[0046] In addition, Figure 2 In the example, voxelization unit 206 can voxelize the transformed coordinates. Voxelization of the transformed coordinates may include quantization and removal of some points in the point cloud. In other words, multiple points in the point cloud can be contained within a single "voxel," which can then be treated as a single point in some respects.

[0047] According to the techniques disclosed herein, the voxelization unit 206 can determine a global quantization factor applicable to the position values ​​of all points in a frame of geometry-based point cloud data. In some examples, the G-PCC encoder 200 can explicitly signal data representing the global quantization factor (which may also be referred to as a global scaling factor, since the G-PCC decoder 300 can use this factor to perform scaling). In some examples, the position values ​​of these points can be expressed at a first high bit depth, and the voxelization unit 206 can quantize these position values ​​to a second lower bit depth. In some examples, the G-PCC encoder 200 can encode data representing the second bit depth.

[0048] The voxelization unit 206 can use a quantization (or scaling) factor with two parts to quantize the position values ​​of points in a frame of geometry-based point cloud data: the first part is a power of two, and the second part is used as a refinement value. The refinement value can have a specific number of bits, and therefore a specific number of divisions between the power of two values. Similarly, the G-PCC encoder 200 can encode data representing the number of bits for the refinement value. As an example, if there are two bits for the refinement value, the refinement value can be one of 0, 1, 2, or 3, and the interval between the powers of two can be divided into quarters. The table below shows examples of quantization / scaling factors and their corresponding power-law and refinement values:

[0049] Furthermore, the octree analysis unit 210 can generate an octree based on voxelized transformed coordinates. Additionally, in Figure 2 In the example, the surface approximation analysis unit 212 can analyze these points to potentially determine a surface representation of the point set. The arithmetic coding unit 214 can entropy encode the syntax elements representing the octree and / or surface information determined by the surface approximation analysis unit 212. The G-PCC encoder 200 can output these syntax elements in a geometric bitstream.

[0050] The geometric reconstruction unit 216 can reconstruct the transformed coordinates of points in the point cloud based on an octree, data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. Due to voxelization and surface approximation, the number of transformed coordinates reconstructed by the geometric reconstruction unit 216 may differ from the original number of points in the point cloud. The resulting points may be referred to as reconstructed points. The attribute transfer unit 208 can transfer attributes of the initial points of the point cloud to the reconstructed points of the point cloud.

[0051] Furthermore, RAHT unit 218 can apply RAHT encoding / decoding to the attributes of the reconstructed point. Alternatively or additionally, LOD generation unit 220 and lifting unit 222 can respectively apply LOD processing and lifting to the attributes of the reconstructed point. RAHT unit 218 and lifting unit 222 can generate coefficients based on the attributes. Coefficient quantization unit 224 can quantize the coefficients generated by RAHT unit 218 or lifting unit 222. Arithmetic encoding unit 226 can apply arithmetic encoding / decoding to the syntax elements representing the quantized coefficients. G-PCC encoder 200 can output these syntax elements in the attribute bitstream.

[0052] exist Figure 3In the example, the G-PCC decoder 300 includes a geometric arithmetic decoding unit 302, an attribute arithmetic decoding unit 304, an octree synthesis unit 306, an inverse quantization unit 308, a surface approximation synthesis unit 310, a geometric reconstruction unit 312, a RAHT unit 314, an LOD generation unit 316, an inverse lifting unit 318, an inverse coordinate transformation unit 320, and an inverse color transformation unit 322.

[0053] The G-PCC decoder 300 can obtain a geometry bitstream and an attribute bitstream. The geometry arithmetic decoding unit 302 of the decoder 300 can apply arithmetic decoding (e.g., context-adaptive binary arithmetic codec (CABAC) or other types of arithmetic decoding) to syntax elements in the geometry bitstream. Similarly, the attribute arithmetic decoding unit 304 can apply arithmetic decoding to syntax elements in the attribute bitstream.

[0054] Octree synthesis unit 306 can synthesize octrees based on syntax elements parsed from the geometric bitstream. In the case of using surface approximation in the geometric bitstream, surface approximation synthesis unit 310 can determine the surface model based on syntax elements parsed from the geometric bitstream and based on the octree.

[0055] Furthermore, the geometric reconstruction unit 312 can perform reconstruction to determine the coordinates of points in the point cloud. The inverse coordinate transformation unit 320 can apply an inverse transformation to the reconstructed coordinates to transform the reconstructed coordinates (positions) of points in the point cloud from the transformation domain back to the initial domain.

[0056] According to the technology disclosed herein, the geometry reconstruction unit 312 can scale the position values ​​of points in a frame of geometry-based point cloud data using a scaling factor. In some examples, the geometry reconstruction unit 312 can scale the position values ​​in a way that avoids exceeding the boundaries of the corresponding bounding box. For example, if scaling would cause one of the position values ​​to exceed the boundaries of the corresponding bounding box, then the geometry reconstruction unit 312 can limit that position value to instead remain within the boundaries of the corresponding bounding box.

[0057] In some examples, the geometry reconstruction unit 312 can decode a global scaling factor for a frame of geometry-based point cloud data. The global scaling factor can have two components: a power-law component and a thinning component. The geometry reconstruction unit 312 can use the power-law component and the thinning component to calculate a global scaling factor for the position values ​​of all points in a frame of geometry-based point cloud data to be used for scaling. Typically, conceptually, the geometry reconstruction unit 312 can decode N as the value to be applied to calculate the power-law factor (2^N). N The index of ) will 2 N and 2 N+1 Divide the range between the possible refinement values ​​by the number of possible refinement values, and multiply the refinement value R (with B bits) by the value obtained from the division. The result is then concatenated with the power factor.

[0058] As described above, the geometric reconstruction unit 312 can perform this calculation according to the following pseudocode:

[0059] GlobalScaleBase = 1 <global_scale_refinement_num_bits

[0060] GlobalScaleShift=global_scale_refinement_num_bits

[0061] GlobalScaleOffset=GlobalScaleShift? 1<<(GlobalScaleShift–1):0

[0062] GlobalScale=(GlobalScaleBase+global_scale_refinement_factor)< <global_scale_factor_log2

[0063] Specifically, as described above, the G-PCC decoder 300 can decode the logarithmic portion of the global scaling factor (e.g., global_scale_factor_log2), the value representing the number of refinement bits (e.g., global_scale_refinement_num_bits), and the global scaling refinement value (e.g., global_scale_factor_refinement). The G-PCC decoder 300 can decode these values ​​from the sequence parameter set. The geometric reconstruction unit 312 can then apply these values ​​to the pseudocode described above to calculate the global scaling factor. Finally, the geometric reconstruction unit 312 can then use the global scaling factor to globally scale the position values ​​of these points as described above.

[0064] In addition, Figure 3 In the example, the inverse quantization unit 308 reversibly quantizes the attribute value. The attribute value can be based on a syntax element obtained from the attribute bitstream (e.g., including a syntax element decoded by the attribute arithmetic decoding unit 304).

[0065] Depending on how the attribute values ​​are encoded, RAHT unit 314 can perform RAHT encoding / decoding to determine the color values ​​of points in the point cloud based on the inverse quantized attribute values. Alternatively, LOD generation unit 316 and inverse boosting unit 318 can use level-of-detail techniques to determine the color values ​​of points in the point cloud.

[0066] In addition, Figure 3In the example, the inverse color transformation unit 322 can apply an inverse color transformation to the color value. The inverse color transformation can be the inverse of the color transformation applied by the color transformation unit 204 of the encoder 200. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space. Therefore, the inverse color transformation unit 322 can transform color information from the YCbCr color space to the RGB color space.

[0067] Figure 2 and Figure 3 The various units are illustrated to aid in understanding the operations performed by encoder 200 and decoder 300. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit is a circuit that provides a specific function and is pre-defined in terms of the operations it can perform. A programmable circuit is a circuit that can be programmed to perform various tasks and provides flexible functionality in the operations it can perform. For example, a programmable circuit can run software or firmware that causes it to operate in a manner defined by the instructions of the software or firmware. A fixed-function circuit can run software instructions (e.g., to receive or output parameters), but the type of operation performed by a fixed-function circuit is typically immutable. In some examples, one or more of the units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more units may be integrated circuits.

[0068] G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can represent raw point clouds in floating-point format or at very high bit depths. A G-PCC codec can quantize the input point cloud and voxelize the quantized input point cloud at a certain bit depth, such as... Figure 2 voxelization unit 206 and Figure 3 The inverse quantization unit 308 is shown, and then the G-PCC block diagram is quantized and removed (see, for example, see...). Figure 2 The G-PCC encoder 200 can apply quantization at the encoder within this block for voxelization, and can perform scaling on the decoder side, primarily for mapping the decoded point cloud (i.e., in voxels) into an application-specific physical space (i.e., in physical dimensions). The syntax elements `sps_source_scale_factor_numerator_minus1` and `sps_source_scale_factor_denominator_minus1` can be used to signal the scaling values ​​available for this operation by the decoder. Quantization is a preprocessing step (e.g., before encoding), while scaling is a post-processing step (e.g., after decoding), which does not affect the overall encoding / decoding process; for example, they are inherently non-normalized.

[0069] sps_source_scale_factor_numerator_minus1 ue(v) sps_source_scale_factor_denominator_minus1 ue(v)

[0070] For the purposes of this disclosure, on the encoder side (e.g., G-PCC encoder 200), a point cloud before non-normalized quantization may be referred to as a non-normalized point cloud, and a point cloud after non-normalized quantization may be referred to as a quantized point cloud; this quantization is independent of the quantization that can be performed by the G-PCC codec. Similarly, the output of the G-PCC decoder 300 is referred to as a quantized point cloud; any non-normalized scaling output on the decoder side is referred to as a non-quantized point cloud. The output of the G-PCC decoder 300 may be the result of a normalized scaling operation.

[0071] Similar to the concepts of width and height in images and videos, point clouds can have the concept of bounding boxes, whereby all points in the point cloud are considered to exist within the bounding box. In other words, a bounding box can be defined such that it includes or contains all points in the point cloud.

[0072] When capturing or generating a point cloud, a bounding box can be specified to capture all points. This bounding box can be referred to as the source bounding box. In G-PCC, an SPS bounding box is specified that can indicate the source bounding box. For the purposes of this disclosure, the SPS bounding box can be referred to as the source bounding box. No cells describing the source bounding box are defined in G-PCC; the application is left to determine these cells. The following provides the syntax and semantics associated with the SPS bounding box.

[0073] It is assumed (because this behavior is not defined in the G-PCC specification) that the output of the G-PCC decoder 300 can be scaled using source scaling factors (derived from sps_source_scale_factor_numerator_minus1 and sps_source_scale_factor_denominator_minus1), and that the (non-normalized) scaled output is contained within the SPS bounding box.

[0074] The following table shows an exemplary set of sequence parameters (SPS) that includes exemplary source bounding box syntax elements:

[0075]

[0076] The semantics of certain syntactic elements of the exemplary source bounding box syntax in the above exemplary SPS can be defined as follows:

[0077] `main_profile_compatibility_23bitsflag` equal to 1 indicates that the bitstream conforms to the main profile. `main_profile_compatibility_flag` equal to 0 indicates that the bitstream conforms to a profile other than the main profile.

[0078] The reserved_profile_compatibility_22 bits should be equal to 0 in this version of the bitstream conforming to this specification. Other values ​​for reserved_profile_compatibility_22 bits are reserved for future use by ISO / IEC. The decoder will ignore the value of reserved_profile_compatibility_2 bits.

[0079] A unique_point_positions_constraint_flag value of 1 indicates that all output points have unique positions in every point cloud frame referencing the current SPS. A unique_point_positions_constraint_flag value of 0 indicates that two or more output points may have the same position in any point cloud frame referencing the current SPS.

[0080] Note that, for example, even if all points are unique within each strip, points from different strips in a frame may overlap. In this case, the unique_point_positions_constraint_flag should be set to 0.

[0081] `level_idc` indicates that the bit stream conforms to the level specified in Appendix A. The bit stream should not contain any value of `level_idc` other than those specified in Appendix A. Other values ​​for `level_idc` are reserved for future use by ISO / IEC.

[0082] `sps_seq_parameter_set_id` provides an identifier for SPS for reference by other syntax elements. In bitstreams conforming to this version of the specification, the value of `sps_seq_parameter_set_id` should be 0. Values ​​of `sps_seq_parameter_set_id` other than 0 are reserved for future use by ISO / IEC.

[0083] A value of 1 for sps_bounding_box_present_flag indicates that the bounding box parameters are signaled in SPS. A value of 0 for sps_bounding_box_present_flag indicates that the size of the bounding box is not defined.

[0084] `sps_bounding_box_offset_x`, `sps_bounding_box_offset_y`, and `sps_bounding_box_offset_z` indicate the quantized x, y, and z offsets of the source bounding box in Cartesian coordinates. When these values ​​are not present, they are each inferred as 0.

[0085] `sps_bounding_box_offset_log2_scale` indicates the scaling factor used to scale the x, y, and z source bounding box offsets for quantization. When it does not exist, the value of `sps_bounding_box_offset_log2_scale` is inferred to be 0.

[0086] sps_bounding_box_size_width, sps_bounding_box_size_height, and sps_bounding_box_size_depth indicate the width, height, and depth of the source bounding box in Cartesian coordinates.

[0087] sps_source_scale_factor_numerator_minus1 plus 1 indicates the scaling factor numerator of the source point cloud.

[0088] sps_source_scale_factor_denominator_minus1 plus 1 indicates the scaling factor denominator of the source point cloud.

[0089] In addition to the source bounding box, the G-PCC codec can determine (e.g., specify) the tile bounding box. The tile bounding box can be associated with points on a tile. The G-PCC encoder (e.g., G-PCC encoder 200) can signal the tile bounding box in the `tile_inventory()` syntax. Each `tile_inventory()` syntax structure can be associated with the frame specified by `tile_frame_idx`.

[0090] The following table shows an example slice inventory syntax structure:

[0091] tile_inventory(){ descriptor tile_frame_idx ? num_tiles_minus1 u(16) for(i=0;i<=num_tiles_minus1;i++){ tile_bounding_box_offset_x[i] se(v) tile_bounding_box_offset_y[i] se(v) tile_bounding_box_offset_z[i] se(v) tile_bounding_box_size_width[i] ue(v) tile_bounding_box_size_height[i] ue(v) tile_bounding_box_size_depth[i] ue(v) } byte_alignment() }

[0092] The semantics of an exemplary slice inventory syntax structure can be defined as follows:

[0093] Increasing 1 to num_tiles_minus1 specifies the number of tile bounding boxes present in the tile list.

[0094] tile_bounding_box_offset_x[i], tile_bounding_box_offset_y[i], and tile_bounding_box_offset_z[i] indicate the x, y, and z offsets of the i-th tile in Cartesian coordinates.

[0095] tile_bounding_box_size_width[i], tile_bounding_box_size_height[i], and tile_bounding_box_size_depth[i] indicate the width, height, and depth of the i-th tile in Cartesian coordinates.

[0096] Although the bounding box used for the strip may not be explicitly specified, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) may determine (e.g., specify) a box that may include points in the strip (which may be referred to as the strip frame or strip bounding box). The specification of the strip frame may include specifying a corner of the frame as well as the strip origin for the width, height, and depth of the frame.

[0097] The geometry parameter set (GPS) may have an indication of whether an explicit strip origin is signaled for the strip. If an explicit strip origin exists, the G-PCC encoder (e.g., G-PCC encoder 200) may signal the associated scaling value at the GPS or at the geometry strip header (GSH). When no explicit strip origin is signaled, the G-PCC decoder (e.g., G-PCC decoder 300) may infer that the associated scaling value is equal to (0, 0, 0).

[0098] The table below shows an example syntax structure for the strip (boundary) box, which includes examples of GPS and geometry strip headers.

[0099]

[0100]

[0101] The semantics of the syntax elements of the above exemplary GPS can be defined as follows:

[0102] The `gps_geom_parameter_set_id` provides an identifier for GPS use, which is then referenced by other syntax elements. The value of `gps_seq_parameter_set_id` should be in the range of 0 to 15, including the end values.

[0103] The `gps_seq_parameter_set_id` specifies the value of `sps_seq_parameter_set_id` for the active SPS. The value of `gps_seq_parameter_set_id` should be in the range of 0 to 15, inclusive.

[0104] A value of 1 for `gps_box_present_flag` specifies that additional bounding box information is provided in the geometry header referencing the current GPS. A value of 0 for `gps_bounding_box_present_flag` specifies that additional bounding box information is not signaled in the geometry header.

[0105] A `gps_gsh_box_log2_scale_present_flag` value of 1 indicates that `gsh_box_log2_scale` is signaled in the header of each geometry strip referenced to the current GPS. A `gps_gsh_box_log2_scale_present_flag` value of 0 indicates that `gsh_box_log2_scale` is not signaled in the header of each geometry strip, and the common scaling of all strips is signaled in the `gps_gsh_box_log2_scale` of the current GPS.

[0106] gps_gsh_box_log2_scale indicates the common scaling factor that references the origin of the bounding box of all strips of the current GPS.

[0107] The following is the semantics of the relevant syntax elements in the geometry stripe header:

[0108] The gsh_geometry_parameter_set_id specifies the value of the gps_geom_parameter_set_id for the active GPS.

[0109] `gsh_tile_id` specifies the value of the tile identifier (tile id) referenced by GSH. The value of `gsh_tile_id` should be in the range of 0 to XX, inclusive.

[0110] The `gsh_slice_id` identifier is used to define the slice header for reference by other syntax elements. The value of `gsh_slice_id` should be in the range of 0 to XX, inclusive.

[0111] `frame_idx` specifies the log2_max_frame_idx+1 least significant bits of the conceptual frame count counter. Consecutive stripes with different values ​​of `frame_idx` form portions of different output point cloud frames. Consecutive stripes with the same `frame_idx` value but without inserted frame boundary marker data units form portions of the same output point cloud frame.

[0112] `gsh_num_points` specifies the maximum number of points that are encoded and decoded in a stripe. Bitstream compliance requires that `gsh_num_points` be greater than or equal to the number of decoded points in the stripe.

[0113] gsh_box_log2_scale specifies the scaling factor used for the origin of the bounding box of the strip.

[0114] Gsh_box_origin_x specifies the x-value of the origin of the bounding box, which is scaled by the gsh_box_log2_scale value.

[0115] gsh_box_origin_y specifies the y-value of the origin of the bounding box, which is scaled by the gsh_box_log2_scale value.

[0116] gsh_box_origin_z specifies the z-value of the origin of the bounding box, which is scaled by the gsh_box_log2_scale value.

[0117] The derivation of variables slice_origin_x, slice_origin_y, and slice_origin_z is as follows:

[0118] If gps_gsh_box_log2_scale_present_flag equals 0

[0119] Then originScale is set to equal gsh_box_log2_scale.

[0120] Otherwise (gps_gshs_box_log2_scale_present_flag equals 1),

[0121] originScale is set to equal gps_gsh_box_log2_scale.

[0122] If gps_box_present_flag equals 0

[0123] The values ​​of slice_origin_x, slice_origin_y, and slice_origin_z are inferred to be 0.

[0124] Otherwise (gps_box_present_flag equals 1), apply the following:

[0125] slice_origin_x=gsh_box_origin_x< <originScale

[0126] slice_origin_y=gsh_box_origin_x< <originScale

[0127] slice_origin_z=gsh_box_origin_x< <originScale

[0128] gsh_log2_max_nodesize_x specifies the bounding box size in the x-dimensional dimension, i.e., MaxNodesizeXLog2 used in the following decoding process.

[0129] MaxNodeSizeXLog2=gsh_log2_max_nodesize_x

[0130] MaxNodeSizeX = 1 <MaxNodeSizeXLog2

[0131] `gsh_log2_max_nodesize_y_minus_x` specifies the bounding box size in the y-dimensional dimension. Specifically, the `MaxNodesizeYlog2` used during decoding is as follows:

[0132] MaxNodeSizeYLog2=gsh_log2_max_nodesize_y_minus_x+MaxNodeSizeXLog2.

[0133] MaxNodeSizeY = 1 <MaxNodeSizeYLog2。

[0134] gsh_log2_max_nodesize_z_minus_y specifies the bounding box size in the z dimension, i.e., MaxNodesizeZLog2 used in the decoding process as follows.

[0135] MaxNodeSizeZLog2=gsh_log2_max_nodesize_z_minus_y+MaxNodeSizeYLog2

[0136] MaxNodeSizeZ = 1 <MaxNodeSizeZLog2

[0137] If gps_implicit_geom_partition_flag equals 1, then gsh_log2_max_nodesize is deduced as follows.

[0138] gsh_log2_max_nodesize=max{MaxNodeSizeXLog2,MaxNodeSizeYLog2,MaxNodeSizeZLog2}

[0139] `gsh_log2_max_nodesize` specifies the size of the root geometric octree node when `gps_implicit_geom_partition_flag` equals 0. The derivation of the variables `MaxNodeSize` and `MaxGeometryOctreeDepth` is as follows.

[0140] MaxNodeSize = 1 <gsh_log2_max_nodesize

[0141] MaxGeometryOctreeDepth=gsh_log2_max_nodesize-log2_trisoup_node_size

[0142] Then update variables K and M as follows.

[0143]

[0144] In addition to the bounding boxes specified above, G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can support signal notification of region boxes, which are used to indicate modified QP values ​​for attributes of specific regions of the point cloud. Typically, the QP value associated with an attribute can be specified in the attribute strip header (in addition to some syntax elements in the attribute parameter set). However, some regions of the point cloud may have special characteristics that differ from the rest of the strip; for example, denser regions of the strip may require a finer representation (lower QP), or sparser regions may only require a coarser representation (higher QP). Region boxes can be useful for specifying different QPs for attributes of specific regions of a strip.

[0145] The following table shows example attribute bar headers for syntax elements related to region boxes:

[0146]

[0147]

[0148] The semantics of the region box syntax elements in the table above can be defined as follows:

[0149] ash_attr_parameter_set_id specifies the value of APS_attr_parameter_set_id for the active APS.

[0150] `ash_attr_sps_attr_idx` specifies the order of attribute sets in the active SPS. In the active SPS, the value of `ash_attr_sps_attr_idx` should be in the range of 0 to `sps_num_attribute_sets`.

[0151] ash_attr_geom_slice_id specifies the value of gsh_slice_id for the active geometry stripe header.

[0152] The `ash_attr_layer_qp_delta_present_flag` value of 1 indicates that the `ash_attr_layer_qp_delta_luma` and `ash_attr_layer_qp_delta_chroma` syntax elements exist in the current ASH. The `ash_attr_layer_qp_delta_present_flag` value of 0 indicates that the `ash_attr_layer_qp_delta_luma` and `ash_attr_layer_qp_delta_chroma` syntax elements do not exist in the current ASH.

[0153] `ash_attr_num_layer_qp_minus1` incremented by 1 specifies the number of layers that signal `ash_attr_qp_delta_luma` and `ash_attr_qp_delta_chroma`. When no signal is sent to `ash_attr_num_layer_qp`, its value is inferred to be 0. The derivation of the value of `NumLayerQp` is as follows:

[0154] NumLayerQp=num_layer_qp_minus1+1

[0155] ash_attr_qp_delta_luma specifies the brightness delta (increment) qp from the initial strip qp in the active attribute parameter set. When ash_attr_qp_delta_luma is not signaled, its value is inferred to be 0.

[0156] `ash_attr_qp_delta_chroma` specifies the chromaticity delta `qp` of the initial stripe `qp` from the active attribute parameter set. When no signal is given for `ash_attr_qp_delta_chroma`, its value is inferred to be 0.

[0157] The derivation of variables InitialSliceQpY and InitialSliceQpC is as follows:

[0158] InitialSliceQpY=aps_attrattr_initial_qp+ash_attr_qp_delta_luma

[0159] InitialSliceQpC=aps_attrattr_initial_qp+aps_attr_chroma_qp_offset+ash_attr_qp_delta_chroma

[0160] `ash_attr_layer_qp_delta_luma` specifies the luminance delta `qp` from `InitialSliceQpY` in each layer. When `ash_attr_layer_qp_delta_luma` is not signaled, the value of `ash_attr_layer_qp_delta_luma` for all layers is inferred to be 0.

[0161] `ash_attr_layer_qp_delta_chroma` specifies the chroma delta `qp` from the `InitialSliceQpC` in each layer. When no signal is sent for `ash_attr_layer_qp_delta_chroma`, the value of `ash_attr_layer_qp_delta_chroma` for all layers is inferred to be 0.

[0162] The variables SliceQpY[i] and SliceQpC[i], where i = 0…NumLayerQPNumQPLayer-1, are derived as follows:

[0163] for(i=0; i <NumLayerQPNumQPLayer;i++){

[0164] SliceQpY[i]=InitialSliceQpY+ash_attr_layer_qp_delta_luma[i]

[0165] SliceQpC[i]=InitialSliceQpC+ash_attr_layer_qp_delta_chroma[i]

[0166] }

[0167] An ash_attr_region_qp_delta_present_flag value of 1 indicates that ash_attr_region_qp_delta, the origin of the region bounding box, and its size exist in the current ASH. An ash_attr_region_qp_delta_present_flag value of 0 indicates that ash_attr_region_qp_delta, the origin of the region bounding box, and its size do not exist in the current ASH.

[0168] `ash_attr_qp_region_box_origin_x` indicates the x-offset of the region bounding box relative to `slice_origin_x`. If it does not exist, the value of `ash_attr_qp_region_box_origin_x` is inferred to be 0.

[0169] `ash_attr_qp_region_box_origin_y` indicates the y-offset of the region bounding box relative to `slice_origin_y`. If it does not exist, the value of `ash_attr_qp_region_box_origin_y` is inferred to be 0.

[0170] `ash_attr_qp_region_box_origin_z` indicates the z-offset of the region bounding box relative to `slice_origin_z`. If it does not exist, the value of `ash_attr_qp_region_box_origin_z` is inferred to be 0.

[0171] The variables RegionBoxX, RegionBoxY, and RegionBoxZ, which specify the origin of the region box, are set to equal ash_attr_qp_region_box_origin_x, ash_attr_qp_region_box_origin_y, and ash_attr_qp_region_box_origin_z, respectively.

[0172] `ash_attr_qp_region_box_size_width` indicates the width of the region bounding box. If it does not exist, the value of `ash_attr_qp_region_box_size_width` is inferred to be 0.

[0173] `ash_attr_qp_region_box_size_height` indicates the height of the region bounding box. If it does not exist, the value of `ash_attr_qp_region_box_size_height` is inferred to be 0.

[0174] `ash_attr_qp_region_box_size_depth` indicates the depth of the region bounding box. If it does not exist, the value of `ash_attr_qp_region_box_size_depth` is inferred to be 0.

[0175] The variables RegionBoxWidth, RegionBoxHeight, and RegionBoxDepth, which specify the size of the region box, are set to equal ash_attr_qp_region_box_size_width, ash_attr_qp_region_box_size_height, and ash_attr_qp_region_box_size_depth, respectively.

[0176] ash_attr_region_qp_delta specifies the increment qp (deltaqp) from SliceQpY[i] and SliceQpC[i] (where i = 0…NumLayerQPNumQPLayer–1) of the region specified by ash_attr_qp_region_box. When it does not exist, the value of ash_attr_region_qp_delta is inferred to be 0.

[0177] The variable RegionBoxDeltaQp, which specifies the region box incremental quantization parameter, is set to equal ash_attr_region_qp_delta.

[0178] G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can control the quantization and / or scaling of geometric coordinates and / or positions within the codec via flags and QP values ​​in the geometry parameter set, or geometric scaling as referred to in G-PCC. G-PCC encoders can specify and / or modify QP values ​​at multiple levels. The syntax elements associated with geometric scaling in various parts of the syntax are described below.

[0179] 2.6.1 Geometric Parameter Set

[0180] geometry_parameter_set(){ descriptor gps_geom_parameter_set_id ue(v) … ue(v) geom_scaling_enabled_flag u(1) if(geom_scaling_enabled_flag) geom_base_qp ue(v) … u(1) }

[0181] The syntax element geom_scaling_enabled_flag enables the G-PCC decoder (e.g., G-PCC decoder 300) to scale geometric coordinates. The G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can use geom_base_qp to derive the scaling value used in this process.

[0182] The following table shows an exemplary set of syntax elements for the geometry stripe header:

[0183]

[0184] In the Geometry Strip Header (GSH), the G-PCC encoder (e.g., G-PCC encoder 200) can signal the QP offset for modifying the scaling values ​​for points belonging to the strip. The GSH may include or contain a flag (geom_octree_qp_offsets_enabled_flag) that controls whether QP offset control is enabled at a lower octree level, and if so, signals the depth (geom_octree_qp_offsets_depth) specifying the QP parameter.

[0185] The following table shows an exemplary set of syntax elements for geometric node structures:

[0186]

[0187] When the current octree depth is equal to GeomScalingDepth derived from geom_octree_qp_offsets_depth, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can apply QP offsets to points belonging to that node.

[0188] A G-PCC encoder (e.g., G-PCC encoder 200) can determine the QP value of the geometric scaling factor based on the node being processed. The scaling process can modify the effective node size of child nodes, and this can be determined by the process described below. In this process, when the depth of the octree node is less than GeomScalingDepth, the G-PCC encoder (e.g., G-PCC encoder 200) can losslessly encode or decode coordinates or bits (e.g., QP equals 4). When the depth is equal to GeomScalingDepth, QP can be set to the sum of geom_base_qp, geom_slice_qp_offset, and nodeQpOffset. For depths greater than GeomScalingDepth, QP can be set to the QP of the parent tree depth (which can be the same as the QP at GeomScalingDepth).

[0189] The derivation of the variable NodeQp is as follows:

[0190] When the depth equals GeomScalingDepth:

[0191] NodeQp=geom_base_qp+geom_slice_qp_offset+nodeQpOffset

[0192] When the depth is greater than GeomScalingDepth:

[0193] NodeQp=NodeQpMap[depth][nodeIdx]

[0194] Otherwise, if the depth is less than GeomScalingDepth, NodeQp is set to 4.

[0195] The derivation of variables EffectiveChildNodeSizeLog2 and EffectiveDepth is as follows:

[0196] EffectiveChildNodeSizeLog2=ChildNodeSizeLog2-(NodeQp-4) / 6

[0197] EffectiveDepth=depth+(NodeQp-4) / 6

[0198] The geometry scaling process at the decoder (e.g., G-PCC decoder 300) can be invoked in the octree node decoding process in Section 8.2.2.2 (e.g., as shown below), where the geomScale() function is used. At each node, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can derive the position corresponding to the child node; there exists a GeometryNodeChildrenCnt child node. The value of GeometryNodeChildrenCnt can be at most 8. The index of the child node within the GeometryNodeChildrenCnt child node can be specified using a 3-digit number, and the quantized position (x, y, z) of the child node is derived from the coordinates of the parent node (xN, yN, zN) and childIdx. For each child node, the G-PCC codec can use the geomScale() function to derive the unquantized (scaled) position PointPos[][i] for i = 0, 1, 2. For nodes encoded using the direct encoding / decoding mode (indicated by the direct_mode_flag), the G-PCC codec can obtain the corresponding scaled position from the child node position and the PointOffsetX[], PointOffsetY[], and PointOffsetZ[] values, also using the geomScale() function.

[0199] The input to the octree node decoding process can include:

[0200] – Specifies the position of the current geometric octree node (depth, nodeIdx)

[0201] – Specifies the spatial location (xN, yN, zN) of the current geometric octree node within the current stripe.

[0202] The output of this process may include the modified array PointPos and the updated variable PointCount.

[0203] If both EffectiveDepth values ​​are less than MaxGeometryOctreeDepth-1 and direct_mode_flag is equal to 0, the process does not output any points. Otherwise, if EffectiveDepth is greater than or equal to MaxGeometryOctreeDepth-1, or direct_mode_flag is equal to 1, the remainder of the process generates one or more point locations.

[0204] The function geomScale(val, cIdx) is defined as a call to the scaling process of the position component of a single octree node (8.2.2.3), where the position val, component cIdx, and variable qP are set to be equal to the NodeQp as input.

[0205] The spatial location of each point in an occupied child node is determined based on the number of repeating points in each child node and the location used for direct encoding and decoding, as follows:

[0206] Scaling the node position in QP is deduced using the geomScale() function as follows:

[0207]

[0208]

[0209]

[0210] In the geomScale() function, the node position is scaled and the inverse quantization position value is derived as follows:

[0211] The input to an example scaling procedure for a single octree node location component may include:

[0212] – The variable val represents the unscaled value of the position component.

[0213] – The variable cIdx specifies the index of the location component.

[0214] – Specifies the variable qP for this quantization parameter.

[0215] The output of this process may include the scaled position component value pos.

[0216] (NOTE?) When geom_scaling_enabled_flag equals 0, the output of this process is equal to the input value pos.

[0217] The variable scalingExpansionLog2 is set to equal to (qP-4) / 6.

[0218] The derivation of the variables highPart and lowPart, representing the concatenated portion of the unscaled positional component values, is as follows:

[0219] 1highPart=val>>(ScalingNodeSizeLog2[cIdx]-scalingExpansionLog2)

[0220] 2lowPart=val&((1<<(ScalingNodeSizeLog2[cIdx]-scalingExpansionLog2))-1)

[0221] The list geomLevelScale is specified as geomLevelScale[i] = {659445, 741374, 831472, 933892, 1048576, 1175576}, where i = 0..5.

[0222] The derivation of the output variable pos is as follows:

[0223] 3highPartS = highPart< <ScalingNodeSizeLog2[cIdx]

[0224] 4lowPartS=(lowPart*(geomLevelScale[qP%6]<<(qP / 6))+(1<<19))>>20

[0225] 5pos = highPart | lowPart

[0226] An alternative mechanism for the geometric scaling process is proposed in G-PCC: an integer step size for in-tree geometric quantization (hereinafter referred to as "m52522") for D. Flynn and K. Mammou in Brussels, Belgium, January 2020, which uses the following step size for scaling operations.

[0227] geomLevelScale[i]={1,1.25,1.5,1.75}

[0228] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can use scaled versions of the values ​​mentioned above for fixed-point implementation (e.g., values ​​4, 5, 6, 7); this can be accompanied by shifting and rounding operations to apply the correct scaling factor. A QP value of 0 corresponds to the lossless case (e.g., scaling value 1), and the QP step size doubles for every four QP values. The G-PCC codec can derive the following step size, where floor() represents the floor operation:

[0229] qS = (1 / 4)*[4 + (QP mod 4)]*2 floor(QP / 4)

[0230] Figure 4This is a graph illustrating exemplary step size functions. Most QPs result in integer step sizes, but some also specify non-integer step sizes. Table 1 specifies the step sizes used for various QP values. Figure 4 The same step size function is illustrated.

[0231] Table 1

[0232]

[0233]

[0234] One or more techniques described in this disclosure can be applied independently or in combination. For ease of description, the term "geometric period of a sequence" can be defined as the number of points in the sequence used to double a value. For example, for the sequence 1, 1.5, 2, 3, 4, 6, 8, 12, ..., the geometric period is 2. For the sequence 1, 1.1, 1.2, 1.4, 1.5, 2, 2.2, 2.4, 2.8, 3, 4, ..., the geometric period is 5. Note that if there is a combination of two sequences with different geometric periods, the two geometric periods will be applied to the corresponding points in the combined sequence. For example, for values ​​up to and greater than 8, the following sequences have a geometric period of 2 and a geometric period of 4: 1, 1.5, 2, 3, 4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, ...

[0235] Any value between a power of two or 2 can also be called a geometric period. For example, for the sequence 1, 1.1, 1.2, 1.4, 1.5, 2, 2.2, 2.4, 2.8, 3, 4, ..., the first geometric period could be [1, 1.1, 1.2, 1.4, 1.5], the second geometric period could be [2, 2.2, 2.4, 2.8, 3], and so on.

[0236] Currently, although the semantics of SPS bounding boxes are specified, the specification (e.g., the procedure for conforming to the specification) does not explicitly mention how point cloud data relates to SPS bounding boxes. The G-PCC bitstream also carries two syntax elements to derive the scaling factor, but again, the exact procedure for using these syntax elements is not specified.

[0237] In TMC13 (test model), the output geometric points of the point cloud data are scaled using a scaling factor, and the non-normalized scaled points are bounded to the SPS bounding box.

[0238] The scaling and clipping handling used in TMC13 appears straightforward. However, the lack of clear description or even instructions on how syntax elements should be used in the specification can lead to undesirable situations. For example, an "evil" encoder might intentionally attempt to signal incorrect values ​​in such a manner, causing only certain decoders (who know the "evil" encoder's intent) to process these syntax elements correctly; other decoders (or devices), while consistent, will not be able to process them properly. Such situations should not be permitted in the standard.

[0239] At a minimum, the following should be specified: the scope and the derivation process, which uses syntactic elements such that these elements should at least have some meaning for a normal decoder. It should be noted that such derivation does not preclude the scaling process from being non-normalized.

[0240] G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be configured to operate according to a scaling process using non-normalized scaling syntax elements.

[0241] A G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be configured to operate based on the output of the scaling value described above without violating one or more constraints of the SPS bounding box constraints.

[0242] G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be configured such that violations of SPS bounding box constraints may include scaling the coordinate position not being greater than the corresponding dimension of the source bounding box (e.g., the x-coordinate should not exceed the width, the y-coordinate should not exceed the height, and the z-coordinate should not exceed the depth).

[0243] G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be configured such that violations of SPS bounding box constraints may also include scaled coordinate positions not being outside the bounding box specified by the bounding box boundaries (e.g., minimum and maximum for each dimension).

[0244] In some examples, the G-PCC codec can additionally perform a clipping operation to clip the reconstructed point cloud after scaling so that it is contained within the bounding box. Similarly, the G-PCC codec can be configured to constrain the clipping operation for points such that the clipping operation ensures that points contained within the bounding box of a tile containing that point remain within the tile. That is, constraints can be applied to clipping operations similar to those described above for points contained within the bounding box of a tile containing that point.

[0245] The semantics of the example SPS bounding box and the non-normalized scaling procedure can be modified as discussed below. Therefore, the G-PCC codec can encode and decode the SPS bounding box and perform the scaling procedure according to the exemplary techniques explained below. These additions do not require standardization of the scaling procedure; whether the procedure is standardized can be determined by how consistency is specified for various G-PCC profiles. The current TMC13-v9.0 still uses floating-point arithmetic for non-normalized scaling; this document describes techniques for specifying fixed-point arithmetic for it. In the current TMC13, the source scaling factor signaled is the inverse of the scaling factor to be applied to reconstruct the point cloud, and the semantics below reflect this. In some examples, the G-PCC codec can encode and decode (instead of the inverse) the data representing the scaling factor.

[0246] The example semantics of the SPS bounding box can be defined as follows, and the G-PCC codec can encode and interpret the values ​​of the SPS bounding box as follows:

[0247] A value of 1 for sps_bounding_box_present_flag indicates that the bounding box parameters are signaled in SPS. A value of 0 for sps_bounding_box_present_flag indicates that the size of the bounding box is not defined.

[0248] `sps_bounding_box_offset_x`, `sps_bounding_box_offset_y`, and `sps_bounding_box_offset_z` indicate the quantized x, y, and z offsets of the source bounding box in Cartesian coordinates. When these values ​​are not present, they are each inferred to be 0.

[0249] `sps_bounding_box_offset_log2_scale` indicates the scaling factor for the x, y, and z source bounding box offsets of the scaling quantization. When it does not exist, the value of `sps_bounding_box_offset_log2_scale` is inferred to be 0.

[0250] sps_bounding_box_size_width, sps_bounding_box_size_height, and sps_bounding_box_size_depth indicate the width, height, and depth of the source bounding box in Cartesian coordinates.

[0251] sps_source_scale_factor_numerator_minus1 plus 1 indicates the scaling factor numerator of the source point cloud.

[0252] sps_source_scale_factor_denominator_minus1 plus 1 indicates the scaling factor denominator of the source point cloud.

[0253] The G-PCC codec derives the final reconstructed position (xF, yF, zF) of each point in the point cloud by moving the points as follows: dividing the reconstructed point position by the source scaling factor, limiting the result to the SPS bounding box dimension, and shifting the points based on the SPS bounding box origin offset:

[0254] off=(sps_source_scale_factor_numerator_minus1+1)>>1

[0255] scaleNum=sps_source_scale_factor_numerator_minus1+1

[0256] scaleDen=sps_source_scale_factor_denominator_minus1+1

[0257] xS=(x*scaleDen+off) / scaleNum

[0258] yS=(y*scaleDen+off) / scaleNum

[0259] zS=(z*scaleDen+off) / scaleNum

[0260] bboxOffX=sps_bounding_box_offset_x< <sps_bounding_box_offset_log2_scale

[0261] bboxOffY=sps_bounding_box_offset_y< <sps_bounding_box_offset_log2_scale

[0262] bboxOffZ=sps_bounding_box_offset_z< <sps_bounding_box_offset_log2_scale

[0263] xF=Min(xS,sps_bounding_box_width)+bboxOffX

[0264] yF=Min(yS,sps_bounding_box_height)+bboxOffY

[0265] zF=Min(zS,sps_bounding_box_depth)+bboxOffZ

[0266] As mentioned above, current non-normalized quantization / scaling methods can be assumed to apply to the entire point cloud, while G-PCC codecs can apply standard quantization at a specific node depth within a stripe. G-PCC codecs may not have a mechanism for standardly quantizing the entire point cloud. For some applications, it may be desirable for G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) to apply point cloud scaling standardly at a global level, so that the encoder / application does not depend on how the decoder handles non-normalized scaling. In the case of non-normalized global scaling, the codec may have to rely on specifying QP values ​​for each stripe, and may even only apply it at the highest octree level.

[0267] Furthermore, one of the purposes of non-normalized scaling is to transform point cloud data into real-world dimensions. It is not desirable to reuse it to indicate quantized values.

[0268] G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be configured to perform normalized scaling of the entire point cloud; this can be referred to as global scaling.

[0269] A G-PCC encoder (e.g., G-PCC encoder 200) can be configured to signal syntax elements to indicate whether normalized global scaling has been applied to an image.

[0270] At the start of encoding, global scaling can be applied at the encoder; at the decoder, it can be applied after all stripes have been decoded. For example, a G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be configured to apply global scaling at the start of encoding, at the decoder, after all stripes have been decoded, etc.

[0271] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can apply global scaling to each point cloud segment that can be applied individually to a strip; similarly, global scaling can be applied independently to each decoded strip.

[0272] The G-PCC decoder (e.g., G-PCC decoder 300) can control the global scaling factor via a scaling value signaled in the bitstream (e.g., by G-PCC encoder 200).

[0273] A G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can derive a scaling factor (or scaling value) from quantization parameter values ​​signaled in the bitstream; deriving the scaling value from the quantization parameter can use one or more existing schemes specified in the G-PCC codec or otherwise.

[0274] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can limit the global scaling factor to a power of two. This allows the global scaling process to be applied in conjunction with shift operations, which can be implemented very simply.

[0275] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can limit the global scaling factor to an integer value (non-negative).

[0276] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can use integer and non-integer values ​​to determine (e.g., specify) the global scaling factor; the G-PCC codec can use floating-point or fixed-point algorithms to apply scaling.

[0277] A G-PCC decoder (e.g., G-PCC decoder 300) can derive a scaling factor from a non-normalized scaling factor signaled in the bitstream (e.g., by G-PCC encoder 200).

[0278] The scaling process itself can be applied similarly to the quantization process specified for the G-PCC codec.

[0279] G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can employ a fixed-point implementation of the scaling process, where the scaling factor is stored with a specific precision, and the scaling operation includes offset and bit-shifting operations. Rounding operations may be included during the scaling process.

[0280] When a global zoom operation produces multiple points associated with a location, one or more attributes can be combined at the encoder (e.g., G-PCC encoder 200).

[0281] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be configured to disable global scaling when a geometry point has a unique location, or vice versa (e.g., when a geometry point does not have a unique location); the syntax can be updated to reflect these restrictions (e.g., by avoiding signalalling of some elements). (This may be particularly relevant if a scaling value less than 1 is specified).

[0282] G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can apply a unique point constraint before the global scaling operation.

[0283] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) may apply a unique point constraint after a global scaling operation.

[0284] In some examples, the G-PCC codec can determine the corresponding quantization parameters for each of the three components separately, and quantize / scale each component based on the corresponding quantization / scaling parameters. In various examples, the G-PCC codec can derive or encode / decode data representing the quantization / scaling parameters of the three components, as well as in-loop geometric quantization.

[0285] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) may store the output of the scaling operation at a higher bit depth than the input. This higher bit depth may be predetermined or derived using global scaling parameters. For example, if the bit depth of the coordinates before global scaling is N, and the precision of the global scaling refinement value is M, then the internal bit depth may be set to M+N. The G-PCC decoder 300 (or other applications / entities on the decoding side) may use the additional precision to better derive the coordinate position. More generally, any value of the higher bit depth may be chosen as the (intermediate) precision of the global scaling factor. In some examples, the higher bit depth may be in the range [N, N+M]. In some examples, the output of the scaling operation may be at a lower bit depth than the input. For example, the input value may have fractional precision, and after scaling, the scaled value may only have integer precision.

[0286] In some examples, the G-PCC codec can derive the maximum global scaling value from the maximum coordinates of the point cloud. For instance, the G-PCC codec can determine the maximum QP value such that the stride does not exceed the maximum coordinates of the point cloud.

[0287] The G-PCC codec can calculate the maximum value based on the bounding box calculated after the origin of the point cloud is shifted to (0, 0, 0). In some examples, the G-PCC codec can calculate the maximum value after adjusting the coordinates to different origins. The G-PCC codec can encode and decode data representing adjustments to different origins.

[0288] In some examples, the G-PCC codec can derive the maximum value of the coordinates from the normalized bounding box of the point cloud.

[0289] In some examples, the G-PCC codec can determine a predetermined factor (Z, where Z<=1) and a maximum QP value such that the scaling value does not exceed the maximum Z* value of the point cloud coordinates.

[0290] In some examples, the G-PCC codec can determine the maximum coordinate value used to determine the maximum QP based on the minimum of the maximum values ​​of each coordinate (e.g., min(maxValX, maxValY, maxValZ)).

[0291] If the maximum value is K, and the refinement precision is specified using M bits, then the value of the global scaling factor can be restricted to be less than Ceil(log2(K)), and the maximum value of the refinement can be restricted to (1 < K). <M)–1。

[0292] In some examples, the signaling of SPS bounding boxes and non-normalized scaling values ​​can be modulated by flags. When these values ​​are not signaled, the G-PCC codec can infer the default values ​​(e.g., scaling value 1, the stripe origin of (0, 0, 0), and values ​​inferred as such as 2). 32 The dimension of the maximum value of -1.

[0293] In some examples, the signal notification for non-normalized scaling values ​​can be adjusted using flags.

[0294] The derivation of scaling values ​​from QP can be managed by a basic step size derivation model. For example, a G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can derive scaling values ​​using an exponential model 2(QP-4) / 6 in G-PCC. This may result in several step sizes that are not quadratic powers. A list of step sizes for this scaling value model is shown in the table below (e.g., Func2). An alternative method is proposed in 3. G-PCC: Integer step sizes for in-tree geometryquantization, m52522, D. Flynn, K. Mammou, Brussels, Belgium, January 2020 (G-PCC: Integer step sizes for in-tree geometryquantization by D. Flynn, K. Mammou, January 2020, Brussels, Belgium) and the scaling values ​​of this method are also included in this table.

[0295]

[0296]

[0297] Both models include all powers of two. As mentioned earlier, scaling values ​​can be easily applied as powers of two because they can be implemented using shift operations; this can be quite convenient for simple decoders and is also a convenient option for encoders to implement global scaling. However, relying solely on powers of two may provide insufficient resolution for quantization / scaling operations. A finer resolution scaling factor would be preferred for some applications.

[0298] A G-PCC encoder (e.g., G-PCC encoder 200) can be configured to signal that the scaling value is specified as a first value of a power of two (coarse QP).

[0299] In some examples, specifying the scaling value as the first value of a power of two can be specified by the QP value, where the step size is derived from the QP value as 2. QP (QP 0 corresponds to scaling 1, QP 1 corresponds to scaling 2, QP 2 corresponds to scaling 4, etc.)

[0300] A G-PCC encoder (e.g., G-PCC encoder 200) can be configured to signal a flag to indicate whether the scaling value includes refinement. Signaling such a flag allows the application / profile to allow / disallow scaling value refinement.

[0301] In some examples, when refinement is applied to derive scaling values, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can constrain the refinement applied to derive scaling values ​​so that the refinement is applied to all points in the point cloud.

[0302] A G-PCC encoder (e.g., G-PCC encoder 200) can be configured to signal a value to specify the refinement to be applied to derive the scaling value.

[0303] G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be configured to determine (e.g., specify) the precision value used for refinement. N-bit precision can correspond to 2^N of each geometric cycle. n Refine the levels.

[0304] For example, 1-bit precision allows two values ​​to be specified for each geometric period (1, 1.5, 2, 3, 4, 6, 8, ...), while 2-bit precision allows four values ​​to be specified for each geometric period (1, 1.25, 1.5, 1.75, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, ...).

[0305] Precision can be specified by the number of refinement levels in the geometric period.

[0306] For example, the five refinement levels can correspond to the following scaling values ​​(1, 1.2, 1.4, 1.6, 1.8, 2, 2.4, 2.8, 3.2, 3.6, 4, 3.6, 4.2, ...).

[0307] In some examples, a G-PCC encoder (e.g., G-PCC encoder 200) can be configured to determine (e.g., specify) different levels of refinement for different geometric cycles. For example, for scaling values ​​less than or equal to 8, the G-PCC encoder may determine (e.g., specify) four refinement levels per geometric cycle, while for scaling values ​​greater than 8, the G-PCC encoder may determine (e.g., specify) six refinement levels per geometric cycle.

[0308] A G-PCC encoder (e.g., G-PCC encoder 200) can be configured to signal the value (refineVal) specifying the refinement level to be applied within a geometric period. If there are N refinement values ​​for a given geometric period, the G-PCC can signal the value to be specified in the range of 0 to N-1 (inclusive).

[0309] For example, if four refinement levels are used, and a linear model is used (allowed scaling values ​​1, 1.25, 1.5, 1.75, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, ...) to specify the scaling value or 3, then the coarse QP can be specified as 1, and the refinement level can be specified as 2.

[0310] G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be obtained from coarse QP QC Derive the refined QP (refined quantization parameter) value with and refineVal. For example, if there are N refinement levels, the G-PCC codec can derive the refined QP as Q C *N + refineVal.

[0311] The following discusses specifying a model to convert the refinement indication to a scaling value. In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can use a linear model.

[0312] For example, a linear model for N refinement levels can be specified; if the coarse QP is x and the refinement value is y (0 <= y < N), the G-PCC codec can derive the scaling value as 2 x *(1 + y / N).

[0313] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can use an exponential model.

[0314] For example, an exponential model for N refinement levels can be specified; if the coarse QP is x and the refinement value is y (0 <= y < N), the G-PCC codec can derive the scaling as 2 x *2 (y / N) .

[0315] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can use any non-linear model to calculate the scaling value from the refinement.

[0316] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can use a table-based method to specify values corresponding to the refinement and can specify the scaling value with a specific bit precision.

[0317] For example, 8 refinement levels can be specified as ref[] = [8, 9, 10, 11, 12, 13, 14, 15] (which corresponds to a linear refinement model with 8 refinement levels). And the scaling value can be specified as 2 x *(ref[y] / 8); this scaling can be implemented in fixed-point arithmetic with multiplication and shift operations and in some cases an offset before the shift.

[0318] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can apply different models to different geometric periods.

[0319] For example, the G-PCC codec can apply a linear model to the geometric period up to a specific scaling value, and apply a table-based model to the geometric period after the specific scaling value, as follows: a linear model with 4 refinement levels up to period 8, and a table-based method (with values ​​8, 9, 10, 11, 12, 14) after period 8 [1, 1.25, 1.5, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 28, 32, ...].

[0320] In some examples, G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can use refinedQP to derive equivalent models and stride / scaling values. G-PCC codecs can apply QP refinement methods to any quantization process, including geometric scaling (global or at the node level) or attribute scaling, for applications such as video encoding and decoding.

[0321] When applying the QP offset to the QP design described above, two techniques can be used. In a first exemplary technique, when no refinement level is applied, the G-PCC encoder (e.g., G-PCC encoder 200) can determine (e.g., specify) the QP offset relative to the coarse QP; when a refinement level is applied, the G-PCC encoder 200 can specify the QP offset relative to the refined QP. In a second exemplary technique, the G-PCC encoder 200 can specify the QP offset as both a coarse QP and a refinement value.

[0322] In some examples, the G-PCC codec can encode and decode data representing the number of bits used to specify precision. Then, depending on the number of bits, the G-PCC codec can encode and decode refinement values.

[0323] In some examples, the G-PCC decoder can perform a normalized scaling process applied to the entire point cloud frame. The G-PCC decoder can also perform a global scaling process after the point cloud has been reconstructed. The G-PCC codec can encode and decode GPS using syntax elements including the following example table to represent the scaling process, where "[added: "added text"]" indicates text that has been added relative to the existing GPS:

[0324] geometry_parameter_set(){ descriptor gps_geom_parameter_set_id ue(v) … log2_trisoup_node_size ue(v) [added:"global_scale_factor_log2 ue(v)”] [added:"global_scale_refinement_enabled_flag u(1)”] [added:"if(global_scale_refinement_enabled_flag)"] [added:"global_scale_factor_refinement u(3)”] geom_scaling_enabled_flag u(1) if(geom_scaling_enabled_flag) geom_base_qp_minus4 ue(v) gps_implicit_geom_partition_flag u(1) if(gps_implicit_geom_partition_flag){ gps_max_num_impliqcit_qtbt_before_ot ue(v) gps_min_size_implicit_qtbt ue(v) } gps_extension_flag u(1) if(gps_extension_flag) while(more_data_in_byte_stream()) gps_extension_data_flag u(1) byte_alignment() }

[0325] The semantics of the added syntactic elements can be defined as follows:

[0326] `Global_scale_factor_log2` is used to derive the global scaling factor for the location of the point cloud to be applied. When `global_scale_factor_log2` equals 0, the global scaling factor is specified as 1, and `theglobal_scale_factor_refinement` is not signaled. When `global_scale_factor_log2` equals 1, the syntax element `global_scale_refinement_enabled_flag` is signaled.

[0327] A global_scale_refinement_enabled_flag value of 1 indicates that the global_scale_factor_refinement syntax element is signaled. A global_scale_refinement_enabled_flag value of 0 indicates that the global_scale_factor_refinement syntax element is not signaled. When it does not exist, the value of global_scale_refinement_enabled_flag is inferred to be 0.

[0328] The `global_scale_refinement_factor` specifies the refinement of the global scaling factor. When present, the value of `global_scale_refinement_factor` is inferred to be equal to 0. The value of `global_scale_refinement_factor` should be in the range of 0 to 7, inclusive.

[0329] The global scaling value of the G-PCC codec can be derived as follows:

[0330] GlobalScale=(8+global_scale_refinement_factor)< <global_scale_factor_log2

[0331] The G-PCC codec can perform stripe concatenation to form the output, including:

[0332] - An array RecPic with modified elements RecPic[pointIdx][attrIdx] representing points in a reconstructed point cloud frame, and

[0333] - This is the modified variable RecPicPointCount, representing the number of points in the reconstructed point cloud frame.

[0334] To perform this process, the G-PCC codec can initialize RecPicPointCount to zero. The G-PCC codec can then concatenate the points and attributes of the current strip with the reconstructed point cloud frame as follows:

[0335]

[0336] In another example, a G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be configured to perform a normalized scaling process across the entire point cloud frame. The G-PCC codec can perform a global scaling process before the consistent output of the point cloud.

[0337] The G-PCC codec can encode and decode syntax elements of the Sequence Parameter Set (SPS) to represent scaling processes. An example of a modified SPS is shown below, where "[added: "added text"]" indicates an addition to the current G-PCC specification.

[0338] sequence_parameter_set(){ Descriptor … [added: "global_scale_factor_log2 ue(v)”] [added: "global_scale_refinement_num_bits ue(v)”] [added: "if(global_scale_refinement_num_bits)”] [added: "global_scale_factor_refinement u(v)”] … }

[0339] The semantics of the added syntactic elements can be defined as follows:

[0340] `global_scale_factor_log2` is used to derive the global scaling factor that will be applied to the point cloud. The value of `global_scale_factor_log2` should be in the range of 0 to 31, inclusive.

[0341] `global_scale_refinement_num_bits` specifies the number of bits used to refine the global scale value. When `global_scale_refinement_num_bits` equals 0, no refinement is applied. The value of `global_scale_refinement_num_bits` should be in the range of 0 to 31, inclusive.

[0342] The `global_scale_refinement_factor` specifies the refinement of the global scaling factor. If it does not exist, the value of `global_scale_refinement_factor` is inferred to be 0. The number of bits used to signal `global_scale_refinement_factor` is `global_scale_refinement_num_bits`.

[0343] In an alternative, global_scale_refinement_num_bits can be encoded and decoded using fixed-length codes (e.g., u(5)).

[0344] In an alternative, the value of global_scale_factor_log2+global_scale_refinement_num_bits can be restricted to be less than or equal to a specific value, for example, 32.

[0345] In an alternative, the value of global_scale_refinement_num_bits can be less than or equal to global_scale_factor_log2.

[0346] The global scaling value of the G-PCC codec can be derived as follows:

[0347] GlobalScaleBase = 1 <global_scale_refinement_num_bitsGlobalScaleShift=global_scale_refinement_num_bitsGlobalScaleOffset=GlobalScaleShift?1<<(GlobalScaleShift–1):0GlobalScale=(GlobalScaleBase+global_scale_refinement_factor)<<global_scale_factor_log2

[0348] The G-PCC codec can perform a stripe concatenation process, generating an output that includes a modified array RecPic containing elements RecPic[pointIdx][attrIdx] representing points in the reconstructed point cloud frame, and a modified variable RecPicPointCount representing the number of points in the reconstructed point cloud frame. The G-PCC codec can initialize RecPicPointCount to zero. The G-PCC codec can concatenate the points and attributes of the current stripe with the reconstructed point cloud frame as follows:

[0349]

[0350] The example used for signaling scaling is merely one example and may take other forms. That is, the techniques of this disclosure may be implemented in combination with other forms of signaling scaling.

[0351] The current G-PCC specification does not have the concept of a normalized bounding box. SPS and slice bounding boxes are specified after applying a non-normalized scaling method. Associated with a slice, a strip can have a specified bounding box, and the encoded / decoded points are confined within the strip bounding box. However, there is no constraint that the strip bounding box should not exceed the slice boundary. In such cases, the concept of a box containing all points in the point cloud, as defined in the G-PCC codec, does not exist.

[0352] The following discussion focuses on techniques for using signal parameters associated with an additional bounding box in SPS to ensure that points in the point cloud are included within that additional bounding box.

[0353] The parameters used for such bounding boxes can include one or more of the following: width, height, or depth.

[0354] These parameters may also include offsets of the origin of the bounding box (e.g., x, y, and z offsets).

[0355] • In some examples, a G-PCC encoder (e.g., G-PCC encoder 200) can signal the minimum and maximum values ​​of the x, y, and z coordinates to specify the bounding box.

[0356] For example, a G-PCC encoder (e.g., G-PCC encoder 200) can signal one or more of six parameters to specify the bounding box.

[0357] • In some examples, the G-PCC decoder (e.g., G-PCC decoder 300) can derive additional bounding boxes from the SPS bounding boxes signaled in the SPS.

[0358] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be configured such that the constrained points in the point cloud are included within an additional bounding box.

[0359] Similar additional bounding boxes can also be defined for slices that specify the boxes that should contain point cloud data. For example, a G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can define additional bounding boxes for slices that specify the boxes that should contain point cloud data.

[0360] In some examples, the G-PCC codec (e.g., G-PCC encoder 200 or G-PCC decoder 300) can derive the additional bounding box from the slice bounding box.

[0361] G-PCC codecs (e.g., G-PCC encoder 200 or G-PCC decoder 300) can be configured to perform clipping operations during various encoding / decoding processes, such that the reconstructed / decoded points are included within additional bounding boxes. For example, a G-PCC codec can apply such clipping to the reconstructed point cloud before it is used for prediction by other points. A G-PCC codec can also apply such clipping to the reconstructed point cloud after a stripe decoding process. A G-PCC codec can apply such clipping to SPS bounding boxes, slice bounding boxes, or other bounding boxes, and also to any corresponding additional bounding boxes.

[0362] In some examples, the G-PCC codec can encode and decode one or more parameters associated with the SPS bounding box without being conditional on the presence flag. That is, the G-PCC codec can always encode and decode these parameters in the SPS. For example, the G-PCC codec can always encode and decode the width, height, and depth values ​​of the SPS bounding box without setting any conditions on `sps_bounding_box_present_flag`. Therefore, one or more parameters that signal (no presence flag) can be used to specify the normalized bounding box.

[0363] In some examples, the G-PCC codec can encode and decode data for a specified point cloud frame at the normalized bounding box dimensions. The normalized bounding box size can be specified in the SPS or GPS. The SPS already contains information describing the attribute characteristics. Therefore, it would be appropriate to include the geometric characteristics (i.e., the bounding box) in the same location (e.g., the SPS).

[0364] In some examples, the G-PCC codec can specify the origin of the normalized bounding box (which is assumed to be (0, 0, 0)). For example, the G-PCC codec can encode and decode the values ​​of the x-, y-, and z-offsets of the origin of the normalized bounding box.

[0365] In some examples, the G-PCC codec can encode and decode data from the normalized bounding boxes of a specified point cloud frame, such that all reconstructed points in the point cloud are constrained within the normalized bounding boxes. The reconstructed point positions are then bounded to those bounding boxes. The origin of the stripe can also be signaled relative to the origin of the normalized bounding box ((0, 0, 0) in this proposal).

[0366] The G-PCC codec can encode and decode SPS, which includes the following additional syntax elements relative to existing SPS:

[0367] point_cloud_frame_dim_num_bits_minus1 ue(v) point_cloud_frame_width u(v) point_cloud_frame_height u(v) point_cloud_frame_depth u(v)

[0368] The semantics of these additional syntactic elements can be defined as follows:

[0369] Increasing 1 to `point_cloud_frame_dim_num_bits_minus1` specifies the number of bits used to signal the syntax elements `point_cloud_frame_width`, `point_cloud_frame_height`, and `point_cloud_frame_depth`. The value of `point_cloud_frame_dim_num_bits_minus1` should be in the range of 0 to 31, inclusive.

[0370] `point_cloud_frame_width`, `point_cloud_frame_height`, and `point_cloud_frame_depth` are used to specify the width, height, and depth of the bounding box for a point cloud frame referencing the GPS. The number of bits used to signal these syntax elements is equal to `point_cloud_frame_dim_num_bits_minus1+1`.

[0371] In some examples, the G-PCC codec can encode and decode scaled versions of data representing the width, depth, and height of a point cloud frame. The G-PCC codec can also encode and decode syntax elements that specify scaling values ​​for one or more of the width, depth, and / or height.

[0372] Furthermore, the G-PCC codec can clip the reconstructed points to the specified point cloud frame dimensions during strip concatenation. For example, the G-PCC codec can execute the following procedure: for(pointIdx=0;pointIdx<=gsh_num_points_minus1;pointIdx++,RecPicPointCount++){

[0373] RecPic[RecPicPointCount][0]=Min(PointPos[pointIdx][0]+slice_origin_x,point_cloud_frame_width);

[0374] RecPic[RecPicPointCount][1]=Min(PointPos[pointIdx][1]+slice_origin_y,point_cloud_frame_height);

[0375] RecPic[RecPicPointCount][2]=Min(PointPos[pointIdx][2]+slice_origin_z,point_cloud_frame_depth);

[0376] for(cIdx=0;cIdx <NumAttributeComponents;cIdx++)

[0377] RecPic[RecPicPointCount][3+cIdx]=pointAttr[pointIdx][cIdx];

[0378] }

[0379] If the global normalized scaling method from the previous section is also used, the G-PCC codec can apply scaling to the normalized boundaries before clipping.

[0380] In some examples, the G-PCC codec can apply global normalization scaling after the reconstructed point locations are bounded to a normalized bounding box.

[0381] In another example, the G-PCC codec can reuse the SPS bounding box to encode and decode data representing a normalized bounding box. That is, the G-PCC codec can be configured to use signaling notifications from the SPS bounding box to encode and decode data representing a normalized bounding box based on the following modifications to the SPS bounding box:

[0382] … sps_bounding_box_present_flag u(1) if(sps_bounding_box_present_flag){ sps_bounding_box_offset_x se(v) sps_bounding_box_offset_y se(v) sps_bounding_box_offset_z se(v) sps_bounding_box_offset_log2_scale ue(v) } sps_bounding_box_size_width ue(v) sps_bounding_box_size_height ue(v) sps_bounding_box_size_depth ue(v) …

[0383] The G-PCC codec can specify the normalized bounding box using the values ​​of `sps_bounding_box_size_width`, `sps_bounding_box_size_height`, and `sps_bounding_box_size_depth`. The G-PCC codec can then use these values ​​to determine the geometric coordinates of the bounding points accordingly.

[0384] Figure 5 This is a flowchart illustrating an exemplary method for encoding geometry-based point cloud data according to the technology of this disclosure. Figure 5 The method is interpreted relative to the G-PCC encoder 200, but can be performed by other such devices.

[0385] Initially, the G-PCC encoder 200 receives frames of point cloud data. The G-PCC encoder 200 applies a transformation (350) to the coordinates of points in the point cloud data. Coordinates can also be referred to as position values, where each position value can include the values ​​of the x, y, and z coordinates of the corresponding point. The transformation of coordinates results in the data being expressed in the transform domain. The G-PCC encoder 200 can then voxelize the transformed coordinates (352).

[0386] According to the technology disclosed herein, the G-PCC encoder 200 can also determine a global quantization (scaling) factor (354). The global quantization (scaling) factor typically indicates the amount of quantization applied to a position value to generate the quantized position value. As described above, the global quantization (scaling) factor can be represented as a combination (e.g., concatenated) of a power-law value and a refinement value. The G-PCC encoder 200 can also encode quantization factor data (356), such as the exponent of the power-law value and the refinement value. The refinement value can be represented in the number of specific positions, and the G-PCC encoder 200 can also encode the number of bits of the refinement value. As described above, for example, the G-PCC encoder 200 can encode the value of global_scale_factor_log2 as a power-law value, encode the value of global_scale_refinement_num_bits as the number of bits of the refinement value, and encode the value of global_scale_factor_refinement as a refinement value (represented using the number of bits indicated by global_scale_enfinition_num_bits). The G-PCC encoder 200 can also use a global quantization (scaling) factor to quantize position values ​​(358).

[0387] The G-PCC encoder 200 can then use the quantized voxelized transform coefficients to generate an octree (360). The G-PCC encoder 200 can then encode the octree and the position values ​​(362).

[0388] Figure 6 This is a flowchart illustrating an exemplary method for decoding geometry-based point cloud data according to the technology of this disclosure. Figure 6 The method is interpreted relative to the G-PCC decoder 300, but can be performed by other such devices.

[0389] Initially, the G-PCC decoder 300 decodes the octree data and the position values ​​of points within the bounding boxes defined by the octree (380). Then, the G-PCC decoder 300 can generate an octree from the octree data (382). The octree includes a root node and, for each node, includes zero or eight child nodes, depending on whether the current node is divided into child nodes. The leaf nodes of the octree can correspond to bounding boxes that surround one or more points in the geometry-based point cloud data.

[0390] The G-PCC decoder 300 can also decode scaling factor data (384). For example, the G-PCC decoder 300 can decode data representing the logarithm of the second power of the global scaling factor, the number of bits of the refinement value, and the refinement value (represented using the number of bits).

[0391] The G-PCC decoder 300 can then determine the global scaling factor (386) from the decoded scaling factor data. For example, as described above, the global scaling factor can be represented as including the values ​​of a second-power component and a refined component that are cascaded or added together. The G-PCC decoder 300 can use a logarithmic value, for example, N, to calculate the power of the two components, for example, 2. N Then, the G-PCC decoder 300 can, according to ( The effect of the refinement value R (with B bits) is calculated. The G-PCC decoder 300 can then concatenate the quadratic value with the refinement value to determine the global scaling factor.

[0392] Finally, the G-PCC decoder 300 can then use a global scaling factor to scale the position values ​​of the points in the point cloud data (388). In some examples, if scaling the position value of a given point causes the point to exceed the corresponding bounding box, the G-PCC decoder 300 can limit the scaled position value so that the point's position does not exceed the boundary of the corresponding bounding box.

[0393] In this way, Figure 6 The method represents an example of a method for decoding geometry-based point cloud data, which includes decoding a frame of geometry-based point cloud data comprising multiple points, each point being associated with a position value that defines the corresponding location of the point; determining a global scaling factor for the frame; and scaling the position value of each point using the global scaling factor.

[0394] Examples in various aspects of this disclosure may be used individually or in any combination.

[0395] The following clauses summarize certain techniques of this disclosure.

[0396] Item 1: A method comprising: determining a scaling factor of a point cloud using a non-normalized scaling syntax element; applying the scaling factor to the point cloud to generate a scaled point cloud; determining whether the scaled point cloud violates an SPS bounding box constraint; and encoding / decoding the scaled point cloud in response to determining that the scaled point cloud does not violate an SPS bounding box constraint.

[0397] Clause 2: A method comprising: determining that normalized scaling is enabled based on syntax elements used for point cloud compression; determining a global scaling factor for the point cloud using the normalized scaling syntax elements; applying the global factor to the point cloud to generate a globally scaled point cloud; and encoding and decoding the globally scaled point cloud.

[0398] Clause 3: A method comprising: determining a scaling power value based on a syntax element or one or more QP values ​​for point cloud compression; determining a scaling factor for the point cloud using the scaling power value and the QP value; applying the scaling factor to the point cloud to generate a scaled point cloud; and encoding and decoding the scaled point cloud.

[0399] Clause 4: A method comprising: determining a bounding box within an SPS bounding box based on syntax elements used for point cloud compression; determining a point cloud for the point cloud compression, wherein determining the point cloud includes determining that the point cloud is within the bounding box; and encoding / decoding the point cloud.

[0400] Clause 5: A method comprising any one of Clauses 1-4, the method further comprising performing a limiting operation to limit the reconstructed point cloud.

[0401] Item 6: A method comprising encoding and decoding a set of parameters including a bounding box syntax structure.

[0402] Clause 7: The method according to any one of Clauses 1-6 further includes: determining one or more quantization or scaling parameters for the corresponding components of the point cloud; and using the corresponding quantization or scaling parameters to quantize or scale the components.

[0403] Clause 8: The method according to Clause 7, wherein determining includes encoding and decoding the data representing the quantization or scaling parameter.

[0404] Clause 9: The method of Clause 7, wherein determining includes inferring the quantization or scaling parameter.

[0405] Clause 10: An apparatus for processing point clouds, the apparatus comprising one or more components for performing a method pursuant to any one of Clauses 1-9.

[0406] Clause 11: A device pursuant to Clause 10, wherein one or more components include one or more processors implemented in a circuit.

[0407] Clause 12: The device pursuant to any one of Clauses 10 or 11 further includes a memory for storing data representing a point cloud.

[0408] Clause 13: A device pursuant to any one of Clauses 10-12, wherein the device includes a decoder.

[0409] Clause 14: A device pursuant to any one of Clauses 10-13, wherein the device includes an encoder.

[0410] Clause 15: The device pursuant to any one of Clauses 10-14, the device further includes a device for generating point clouds.

[0411] Clause 16: An apparatus pursuant to any one of Clauses 10-15, the apparatus further comprising a display for presenting point cloud-based images.

[0412] Clause 17: A computer-readable storage medium having instructions stored thereon, which, when executed, cause one or more processors to perform any one of the clauses 1-9.

[0413] Clause 18: A method for decoding geometry-based point cloud data, the method comprising: decoding a frame of geometry-based point cloud data comprising a plurality of points, each point being associated with a position value defining a corresponding location of the point; determining a global scaling factor for the frame; and scaling the position value of each point using the global scaling factor.

[0414] Clause 19: The method according to Clause 18, wherein, before scaling, a first depth is used to express the position value, and wherein, after scaling, a second depth higher than the first depth is used to express the scaled position value.

[0415] Clause 20: The method according to Clause 19 further includes decoding the data representing the second bit depth.

[0416] Clause 21: The method pursuant to any of Clauses 19 and 20, wherein determining the global scaling factor includes decoding data representing the number of bits used to specify the refinement value to be applied to the initial global scaling factor.

[0417] Clause 22: The method according to Clause 21 further includes decoding a scaling factor refinement value having a number of bits.

[0418] Clause 23: The method according to Clause 22, wherein determining the global scaling factor comprises: decoding data representing an initial global scaling factor; determining a global scaling base value according to 1 << the number of bits used to specify the scaling value, wherein '<<' represents a bitwise left shift operator; determining a global scaling shift value according to 1 << the number of bits used to specify the refinement value; determining a global scaling offset value according to: 1 << global scaling shift value minus 1 when the global scaling shift value is greater than zero; or the global scaling offset value equal to zero when the global scaling shift value is equal to zero; and calculating the global scaling factor according to (global scaling base value plus global scaling refinement value) << initial global scaling factor.

[0419] Clause 24: The method according to any one of Clauses 18-23, further comprising segmenting the frame into one or more bounding boxes, at least one of the bounding boxes comprising a subset of points, wherein scaling the position values ​​of the subset of points comprises: determining that scaling one of a plurality of position values ​​of a subset of the points would cause the one of the position values ​​to exceed the at least one bounding box in the bounding boxes; and limiting the position value of one of the plurality of position values ​​of a subset of the plurality of subsets of the points to prevent the one of the position values ​​from exceeding the at least one bounding box in the bounding boxes.

[0420] Clause 25: The method pursuant to any one of Clauses 18-24, further comprising encoding the frame prior to decoding the frame.

[0421] Clause 26: An apparatus for decoding geometry-based point cloud data, the apparatus comprising: a memory configured to store the geometry-based point cloud data; and one or more processors implemented in a circuit and configured to: decode a frame of geometry-based point cloud data comprising a plurality of points, each of the plurality of points being associated with a position value defining a corresponding location of the point; determine a global scaling factor for the frame; and scale the position value of each of the plurality of points using the global scaling factor.

[0422] Clause 27: A device according to Clause 26, wherein, prior to scaling, a first depth is used to express the position values, and wherein, after scaling, a second depth higher than the first depth is used to express the scaled position values.

[0423] Clause 28: A device pursuant to Clause 27, wherein one or more processors are further configured to decode data representing the second bit depth.

[0424] Clause 29: A device pursuant to any of Clauses 27 and 28, wherein, in order to determine the global scaling factor, the one or more processors are configured to decode data representing the number of bits used to specify a refined value to be applied to an initial global scaling factor.

[0425] Clause 30: A device pursuant to Clause 29, wherein the one or more processors are further configured to decode a scaling factor refinement value having a number of bits.

[0426] Clause 31: A device pursuant to Clause 30, wherein, in order to determine the global scaling factor, the one or more processors are configured to: decode data representing an initial global scaling factor; determine a global scaling base value according to 1 << the number of bits used to specify the refinement value, where '<<' represents a bitwise left shift operator; determine a global scaling shift value according to 1 << the number of bits used to specify the refinement value; determine a global scaling offset value according to: 1 << global scaling shift value minus 1 when the global scaling shift value is greater than zero; or the global scaling offset value is equal to zero when the global scaling shift value is equal to zero; and calculate the global scaling factor according to (global scaling base value plus global scaling refinement value) << initial global scaling factor.

[0427] Clause 32: An apparatus pursuant to any one of Clauses 26-31, wherein the one or more processors are further configured to segment the frame into one or more bounding boxes, at least one of the bounding boxes comprising a subset of points, and wherein, in order to scale the position values ​​of the subset of points, the one or more processors are configured to: determine that scaling one of the position values ​​of a subset of the points would cause the position value to exceed the at least one bounding box in the bounding boxes; and to limit the position value of the position value of the subset of the points to prevent the position value from exceeding the at least one bounding box in the bounding boxes.

[0428] Clause 33: A device pursuant to any of Clauses 26-32, wherein the one or more processors are further configured to encode the frame prior to decoding it.

[0429] Clause 34: An apparatus pursuant to any one of Clauses 26-33, the apparatus further comprising a display configured to display the decoded geometry-based point cloud data.

[0430] Clause 35: Equipment pursuant to any one of Clauses 26-34, wherein the equipment includes one or more of a camera, computer, mobile device, broadcast receiver equipment or set-top box.

[0431] Clause 36: A computer-readable storage medium having instructions stored thereon that, when executed, cause a processor to: decode a frame of geometry-based point cloud data comprising a plurality of points, each of the plurality of points being associated with a position value defining a corresponding location of that point; determine a global scaling factor for the frame; and scale the position value of each point by the global scaling factor.

[0432] Clause 37: A computer-readable storage medium pursuant to Clause 36, wherein, prior to scaling, the position values ​​are expressed using a first depth, and wherein, after scaling, the scaled position values ​​are expressed using a second depth higher than the first depth.

[0433] Clause 38: The computer-readable storage medium pursuant to Clause 37 further includes instructions for causing a processor to decode data representing a second bit depth.

[0434] Clause 39: A computer-readable storage medium pursuant to any one of Clauses 37 and 38, wherein the instructions for causing a processor to determine a global scaling factor include instructions for causing the processor to decode data representing the number of bits used to specify a refinement value to be applied to an initial global scaling factor.

[0435] Clause 40: A computer-readable storage medium pursuant to Clause 39, the computer-readable storage medium further comprising instructions for causing a processor to decode a scaling factor refinement value having a number of bits.

[0436] Clause 41: Computer-readable storage medium 40, wherein the instructions causing the processor to determine the global scaling factor include instructions causing the processor to: decode data representing the initial global scaling factor; determine a global scaling base value according to 1 << the number of bits used to specify the refinement value, wherein '<<' represents a bitwise left shift operator; determine a global scaling shift value according to 1 << the number of bits used to specify the refinement value; determine a global scaling offset value according to: 1 << global scaling shift value minus 1 when the global scaling shift value is greater than zero; or the global scaling offset value equal to zero when the global scaling shift value is equal to zero; and calculate the global scaling factor according to (global scaling base value plus global scaling refinement value) << initial global scaling factor.

[0437] Clause 42: A computer-readable storage medium pursuant to any one of Clauses 36-41, the computer-readable storage medium further comprising causing a processor to segment a frame into one or more bounding boxes, at least one of the bounding boxes comprising a subset of the points, wherein scaling position values ​​of the subset of the points comprises: determining that scaling one of the position values ​​of a subset of the points would cause the one of the position values ​​to exceed the at least one bounding box of the bounding boxes; and limiting the position value of the one of the position values ​​of the subset of the points to prevent the one of the position values ​​from exceeding the at least one bounding box of the bounding boxes.

[0438] Clause 43: A computer-readable storage medium pursuant to any one of Clauses 36-42, the computer-readable storage medium further comprising instructions for causing a processor to encode a frame prior to decoding the frame.

[0439] Clause 44: An apparatus for decoding geometry-based point cloud data, the apparatus comprising: a component for decoding a frame of geometry-based point cloud data comprising a plurality of points, each point being associated with a position value defining a corresponding location of the point; determining a global scaling factor for the frame; and scaling the position value of each point using the global scaling factor.

[0440] Clause 45: A device according to Clause 44, wherein, prior to scaling, a first depth is used to express the position values, and wherein, after scaling, a second depth higher than the first depth is used to express the scaled position values.

[0441] Clause 46: The apparatus pursuant to Clause 45 further includes components for decoding data representing the second bit depth.

[0442] Clause 47: A device pursuant to any one of Clauses 45 and 46, wherein the components for determining the global scaling factor include components for decoding data representing the number of bits used to specify a refined value to be applied to an initial global scaling factor.

[0443] Clause 48: The apparatus pursuant to Clause 47 further includes a component for decoding a scaling factor refinement value having a number of bits.

[0444] Clause 49: The apparatus pursuant to Clause 48, wherein the components for determining the global scaling factor include: components for decoding data representing an initial global scaling factor; components for determining a global scaling base value based on 1 << the number of bits used to specify the refinement value, wherein '<<' represents a bitwise left shift operator; components for determining a global scaling shift value based on 1 << the number of bits used to specify the refinement value; components for determining a global scaling offset value based on: 1 << global scaling shift value minus 1 when the global scaling shift value is greater than zero; or the global scaling offset value equal to zero when the global scaling shift value is equal to zero; and components for calculating the global scaling factor based on (global scaling base value plus global scaling refinement value) << initial global scaling factor.

[0445] Clause 50: An apparatus pursuant to any one of Clauses 44-49, the apparatus further comprising means for segmenting the frame into one or more bounding boxes, at least one of the bounding boxes comprising a subset of points, wherein scaling the position values ​​of the subset of points comprises: means for determining that scaling one of a plurality of position values ​​of a subset of the points would cause the one of the position values ​​to exceed at least one of the bounding boxes; and means for scaling one of the plurality of position values ​​of a subset of the points to prevent the one of the position values ​​from exceeding at least one of the bounding boxes.

[0446] Clause 51: An apparatus pursuant to any one of Clauses 44-50, the apparatus further comprising means for encoding the frame prior to decoding the frame.

[0447] Clause 52: A method for decoding geometry-based point cloud data, the method comprising: decoding a frame of geometry-based point cloud data comprising a plurality of points, each point being associated with a position value defining a corresponding location of the point; determining a global scaling factor for the frame; and scaling the position value of each point using the global scaling factor.

[0448] Clause 53: The method according to Clause 52, wherein, before scaling, a first depth is used to express these position values, and wherein, after scaling, a second depth higher than the first depth is used to express the scaled position values.

[0449] Clause 54: The method according to Clause 53 further includes decoding the data representing the second bit depth.

[0450] Clause 55: The method according to Clause 53, wherein determining the global scaling factor includes decoding data representing the number of bits used to specify the refinement value to be applied to the initial global scaling factor.

[0451] Clause 56: The method according to Clause 55 further includes decoding a scaling factor refinement value having a number of bits.

[0452] Clause 57: The method according to Clause 56, wherein determining the global scaling factor comprises: decoding data representing an initial global scaling factor; determining a global scaling base value according to 1 << the number of bits used to specify the refinement value, wherein '<<' represents a bitwise left shift operator; determining a global scaling shift value according to 1 << the number of bits used to specify the refinement value; determining a global scaling offset value according to: 1 << global scaling shift value minus 1 when the global scaling shift value is greater than zero; or the global scaling offset value equal to zero when the global scaling shift value is equal to zero; and calculating the global scaling factor according to (global scaling base value plus global scaling refinement value) << initial global scaling factor.

[0453] Clause 58: The method according to Clause 52 further includes segmenting the frame into one or more bounding boxes, at least one of the bounding boxes comprising a subset of points, wherein scaling the position values ​​of the subset of points comprises: determining that scaling one of the multiple position values ​​of a subset of the point would cause that position value to exceed at least one bounding box of the bounding boxes; and limiting the position value of one of the multiple position values ​​of a subset of the point to prevent that position value from exceeding at least one bounding box of the bounding boxes.

[0454] Clause 59: The method according to Clause 52 further includes encoding the frame before decoding it.

[0455] Clause 60: An apparatus for decoding geometry-based point cloud data, the apparatus comprising: a memory configured to store the geometry-based point cloud data; and one or more processors implemented in a circuit and configured to: decode a frame of geometry-based point cloud data comprising a plurality of points, each of the plurality of points being associated with a position value defining a corresponding location of the point; determine a global scaling factor for the frame; and scale the position value of each point using the global scaling factor.

[0456] Clause 61: A device according to Clause 60, wherein, prior to scaling, a first depth is used to express the position values, and wherein, after scaling, a second depth higher than the first depth is used to express the scaled position values.

[0457] Clause 62: A device pursuant to Clause 61, wherein one or more processors are further configured to decode data representing the second bit depth.

[0458] Clause 63: A device pursuant to Clause 61, wherein, in order to determine the global scaling factor, the one or more processors are configured to decode data representing the number of bits used to specify a refined value to be applied to an initial global scaling factor.

[0459] Clause 64: A device pursuant to Clause 63, wherein the one or more processors are further configured to decode a scaling factor refinement value having a number of bits.

[0460] Clause 65: A device pursuant to Clause 64, wherein, in order to determine the global scaling factor, the one or more processors are configured to: decode data representing an initial global scaling factor; determine a global scaling base value according to 1 << the number of bits used to specify the refinement value, where '<<' represents a bitwise left shift operator; determine a global scaling shift value according to 1 << the number of bits used to specify the refinement value; determine a global scaling offset value according to: 1 << global scaling shift value minus 1 when the global scaling shift value is greater than zero; or the global scaling offset value equal to zero when the global scaling shift value is equal to zero; and calculate the global scaling factor according to (global scaling base value plus global scaling refinement value) << initial global scaling factor.

[0461] Clause 66: The apparatus according to Clause 60, wherein the one or more processors are further configured to segment the frame into one or more bounding boxes, at least one of the bounding boxes comprising a subset of points, and wherein, in order to scale the position values ​​of the subset of points, the one or more processors are configured to: determine that scaling one of a plurality of position values ​​of a subset of the points would cause the one of the position values ​​to exceed at least one of the bounding boxes; and to clip the one of the plurality of position values ​​of the subset of the points to prevent the one of the position values ​​from exceeding at least one of the bounding boxes.

[0462] Clause 67: A device pursuant to Clause 60, wherein the one or more processors are further configured to encode the frame before decoding it.

[0463] Clause 68: The device pursuant to Clause 60 further includes a display configured to display decoded geometry-based point cloud data.

[0464] Clause 69: Equipment pursuant to Clause 60, wherein the equipment includes one or more of a vehicle, camera, computer, mobile device, broadcast receiver equipment or set-top box.

[0465] Item 70: A computer-readable storage medium having instructions stored thereon that, when executed, cause a processor to: decode a frame of geometry-based point cloud data comprising a plurality of points, each of the plurality of points being associated with a position value defining a corresponding location of that point; determine a global scaling factor for the frame; and scale the position value of each point by the global scaling factor.

[0466] Clause 71: A computer-readable storage medium pursuant to Clause 70, wherein, prior to scaling, the position values ​​are expressed using a first depth, and wherein, after scaling, the scaled position values ​​are expressed using a second depth higher than the first depth.

[0467] Clause 72: The computer-readable storage medium pursuant to Clause 71 further includes instructions for causing a processor to decode data representing a second bit depth.

[0468] Clause 73: A computer-readable storage medium pursuant to Clause 71, wherein the instructions for causing a processor to determine a global scaling factor include instructions for causing the processor to decode data representing the number of bits used to specify a refinement value to be applied to an initial global scaling factor.

[0469] Clause 74: A computer-readable storage medium pursuant to Clause 73, the computer-readable storage medium further comprising instructions for causing a processor to decode a scaling factor refinement value having a number of bits.

[0470] Clause 75: Computer-readable storage medium 74, wherein the instructions causing the processor to determine the global scaling factor include instructions causing the processor to: decode data representing the initial global scaling factor; determine a global scaling base value according to 1 << the number of bits used to specify the refinement value, wherein '<<' represents a bitwise left shift operator; determine a global scaling shift value according to 1 << the number of bits used to specify the refinement value; determine a global scaling offset value according to: 1 << global scaling shift value minus 1 when the global scaling shift value is greater than zero; or the global scaling offset value is equal to zero when the global scaling shift value is equal to zero; and calculate the global scaling factor according to (global scaling base value plus global scaling refinement value) << initial global scaling factor.

[0471] Clause 76: The computer-readable storage medium according to Clause 70 further includes causing a processor to segment a frame into one or more bounding boxes, at least one of the bounding boxes comprising a subset of points, wherein scaling position values ​​of the subset of points comprises: determining that scaling one of the plurality of position values ​​of a subset of the subset of points would cause the one of the position values ​​to exceed at least one bounding box of the bounding boxes; and limiting the one of the plurality of position values ​​of the subset of the subset of points to prevent the one of the position values ​​from exceeding at least one bounding box of the bounding boxes.

[0472] Clause 77: A computer-readable storage medium pursuant to Clause 70, the computer-readable storage medium further comprising instructions that cause a processor to encode a frame before decoding the frame.

[0473] Clause 78: An apparatus for decoding geometry-based point cloud data, the apparatus comprising: components for decoding a frame of geometry-based point cloud data comprising a plurality of points, each point being associated with a position value defining a corresponding location of the point; determining a global scaling factor for the frame; and scaling the position value of each point using the global scaling factor.

[0474] Clause 79: A device according to Clause 78, wherein, prior to scaling, a first depth is used to express the position values, and wherein, after scaling, a second depth higher than the first depth is used to express the scaled position values.

[0475] Clause 80: The apparatus pursuant to Clause 79 further includes components for decoding data representing the second bit depth.

[0476] Clause 81: The apparatus pursuant to Clause 79, wherein the components for determining the global scaling factor include components for decoding data representing the number of bits used to specify a refined value to be applied to an initial global scaling factor.

[0477] Clause 82: The apparatus pursuant to Clause 81 further includes a component for decoding a scaling factor refinement value having a number of bits.

[0478] Clause 83: The apparatus according to Clause 82, wherein the components for determining the global scaling factor include: components for decoding data representing an initial global scaling factor; components for determining a global scaling base value based on 1 << the number of bits used to specify the refinement value, wherein '<<' represents a bitwise left shift operator; components for determining a global scaling shift value based on 1 << the number of bits used to specify the refinement value; components for determining a global scaling offset value based on: 1 << global scaling shift value minus 1 when the global scaling shift value is greater than zero; or the global scaling offset value equal to zero when the global scaling shift value is equal to zero; and components for calculating the global scaling factor based on (global scaling base value plus global scaling refinement value) << initial global scaling factor.

[0479] Clause 84: The apparatus according to Clause 78 further includes means for segmenting the frame into one or more bounding boxes, at least one of the bounding boxes comprising a subset of points, wherein the position values ​​of the subset of points include: means for determining that one of the multiple position values ​​of a subset of the bounding boxes will cause the one of the position values ​​to exceed at least one of the bounding boxes; and means for limiting the position value of one of the multiple position values ​​of a subset of the points to prevent the one of the position values ​​from exceeding at least one of the bounding boxes.

[0480] Clause 85: The apparatus pursuant to Clause 78 further includes a component for encoding the frame prior to decoding the frame.

[0481] Clause 86: A method for encoding point cloud data, the method comprising: encoding a frame of point cloud data comprising a plurality of points, each point being associated with a location value defining a corresponding location of the point; determining an initial global scaling factor for the frame; determining a number of bits for specifying a refinement value to be applied to the initial global scaling factor; determining a scaling factor refinement value having the number of bits; and generating a bit stream comprising data representing the encoded frame, the number of bits for specifying the refinement value, and the scaling factor refinement value.

[0482] It will be understood that, based on the examples, certain actions or events of any of the techniques described herein may be performed in a different order, and may be added, combined, or omitted together (e.g., not all described actions or events are necessary for the practice of the technique). Furthermore, in some examples, actions or events may be performed concurrently, for example, through multithreaded processing, interrupt handling, or multiple processors, rather than sequentially.

[0483] In one or more examples, the described functionality may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, these functions may be stored or transmitted as one or more instructions or code to a computer-readable medium and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium corresponding to a tangible medium such as a data storage medium, or a communication medium that, for example, facilitates the transfer of a computer program from one place to another according to a communication protocol. In this way, a computer-readable medium may generally correspond to (1) a non-transitory tangible computer-readable storage medium, or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium accessible by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described in this disclosure. Computer program products may include computer-readable media.

[0484] By way of example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disc storage, disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store required program code in the form of instructions or data structures and that can be accessed by a computer. Furthermore, any connection is appropriately referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies (such as infrared, radio, and microwave), then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies (such as infrared, radio, and microwave) are included in the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but rather refer to non-transient tangible storage media. As used herein, disks and optical discs include compact optical discs (CDs), laser discs, optical discs, digital versatile optical discs (DVDs), floppy disks, and Blu-ray discs, wherein disks generally reproduce data magnetically, while optical discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0485] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the terms "processor" and "processing circuitry" as used herein can refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Furthermore, in some aspects, the functionality described herein can be provided in dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into combined codecs. Moreover, these techniques can be implemented entirely within one or more circuit or logic elements.

[0486] The techniques disclosed herein can be implemented in a variety of devices or apparatuses, including wireless mobile phones, integrated circuits (ICs), or IC sets (e.g., chipsets). Various components, modules, or units are described in this disclosure to highlight functional aspects of a device configured to perform the disclosed techniques, but implementation by different hardware units is not necessarily required. Rather, as described above, various units can be combined in a codec hardware unit, or provided by a set of interoperable hardware units including one or more processors as described above, combined with suitable software and / or firmware.

[0487] Various examples have been described. These and other examples are all within the scope of the appended claims.

Claims

1. A method for decoding point cloud data, the method comprising: A frame of point cloud data comprising multiple points is decoded, wherein each of the multiple points is associated with a position value that defines the corresponding location of the point. The grammatical structure of the frame in the decoded point cloud data includes: Decode the initial global scaling value from the grammatical structure; Decode the data used to determine the number of bits representing the scaling factor refinement value from the grammatical structure; as well as Decode the scaling factor refinement value from the grammatical structure, the scaling factor refinement value having the number of bits; Using the initial global scaling value, the value representing the number of bits of the scaling factor refinement value, and the scaling factor refinement value, a global scaling factor for the frame is determined, the global scaling factor including a power-of-two component and a refinement component. as well as The position value of each of the plurality of points is scaled using the global scaling factor.

2. The method of claim 1, wherein the power component of the second is calculated based on the initial global scaling value, and the refined component is calculated based on the initial global scaling value, the value representing the number of bits of the scaling factor refined value, and the scaling factor refined value.

3. The method of claim 1, wherein determining the global scaling factor using the initial global scaling value, the value representing the number of bits of the scaling factor refinement value, and the scaling factor refinement value comprises determining the global scaling factor according to the following equation: 2 N +( )*R, Where N represents the initial global scaling value, B represents the value representing the number of bits of the scaling factor refinement value, and R represents the scaling factor refinement value.

4. The method according to claim 1, wherein, Before scaling, the position value is expressed using a first-order depth, and after scaling, the scaled position value is expressed using a second-order depth different from the first-order depth.

5. The method of claim 4, further comprising decoding the data representing the second bit depth.

6. The method according to claim 1, wherein, Before decoding, the point cloud data is encoded using geometry-based point cloud compression (G-PCC).

7. The method according to claim 1, wherein, Determining the global scaling factor includes: The global scaling base value is determined based on the number of bits specified by the scaling factor refinement value, where "<<" represents the bitwise left shift operator; The global scaling offset value is determined based on the number of bits used to specify the refinement value of the scaling factor; The global scaling offset value is determined based on the following: When the global scaling displacement value is greater than zero, 1 << the global scaling displacement value minus 1; or When the global scaling displacement value is equal to zero, the global scaling offset value is equal to zero; and The global scaling factor is calculated based on (the global scaling base value plus the scaling factor refinement value) << the initial global scaling value.

8. The method according to claim 4, wherein, The second depth is higher than the first depth.

9. The method according to claim 4, wherein, The second bit depth represents integer precision, and the first bit depth represents fractional precision.

10. The method of claim 1, further comprising segmenting the frame into one or more bounding boxes, at least one bounding box within the bounding boxes comprising a subset of the points, wherein, The position values ​​of the subset of points being scaled include: Determining that scaling a subset of the position values ​​for the point will cause the position value to exceed at least one bounding box within the bounding box; and A position value of one position value in a subset of the position values ​​of the point is limited to prevent the position value from exceeding at least one bounding box in the bounding box.

11. The method of claim 1, further comprising segmenting the frame into two or more bounding boxes, at least one of the bounding boxes comprising a subset of the points, wherein, The position values ​​of the subset of points being scaled include: Determining that scaling a subset of the position values ​​for the point will cause the position value to exceed at least one bounding box within the bounding box; and The position value is constrained within the at least one bounding box of the bounding box.

12. The method of claim 1, further comprising encoding the frame before decoding the frame.

13. An apparatus for decoding point cloud data, the apparatus comprising: The memory is configured to store point cloud data; and One or more processors are implemented in a circuit and configured as follows: Decode a frame of point cloud data comprising multiple points, each of which is associated with a location value that defines the corresponding location of the point; Decoding the grammatical structure of the frames of point cloud data, wherein, in order to decode the grammatical structure, the one or more processors are configured to: Decode the initial global scaling value from the grammatical structure; Decode the data used to determine the number of bits representing the scaling factor refinement value from the grammatical structure; as well as Decode the scaling factor refinement value from the grammatical structure, the scaling factor refinement value having the number of bits; Using the initial global scaling value, the value representing the number of bits of the scaling factor refinement value, and the scaling factor refinement value, a global scaling factor for the frame is determined, the global scaling factor including a power-of-two component and a refinement component. as well as The position value of each of the plurality of points is scaled using the global scaling factor.

14. The device of claim 13, wherein the power component of the second is calculated based on the initial global scaling value, and the refined component is calculated based on the initial global scaling value, the value representing the number of bits of the scaling factor refined value, and the scaling factor refined value.

15. The device of claim 13, wherein determining the global scaling factor using the initial global scaling value, the value representing the number of bits of the scaling factor refinement value, and the scaling factor refinement value comprises determining the global scaling factor according to the following equation: 2 N +( )*R, Where N represents the initial global scaling value, B represents the value representing the number of bits of the scaling factor refinement value, and R represents the scaling factor refinement value.

16. The device according to claim 13, wherein, Before scaling, the position value is expressed using a first-order depth, and after scaling, the scaled position value is expressed using a second-order depth different from the first-order depth.

17. The device according to claim 16, wherein, The one or more processors are also configured to decode data representing the second bit depth.

18. The device according to claim 13, wherein, Prior to decoding, the point cloud data was encoded using geometry-based point cloud compression (G-PCC).

19. The device according to claim 13, wherein, To determine the global scaling factor, the one or more processors are configured to: The global scaling base value is determined based on the number of bits specified by the scaling factor refinement value, where "<<" represents the bitwise left shift operator; The global scaling offset value is determined based on the number of bits used to specify the refinement value of the scaling factor; The global scaling offset value is determined based on the following: When the global scaling displacement value is greater than zero, 1 << the global scaling displacement value minus 1; or When the global scaling displacement value is equal to zero, the global scaling offset value is equal to zero; and The global scaling factor is calculated based on (the global scaling base value plus the scaling factor refinement value) << the initial global scaling value.

20. The device according to claim 13, wherein, The one or more processors are further configured to segment the frame into one or more bounding boxes, at least one of the bounding boxes comprising a subset of the points, and wherein, in order to scale the position values ​​of the subset of points, the one or more processors are configured to: Determining that scaling a subset of the position values ​​for the point will cause the position value to exceed at least one bounding box within the bounding box; and A position value of one position value in a subset of the position values ​​of the point is limited to prevent the position value from exceeding at least one bounding box in the bounding box.

21. The device according to claim 13, wherein, The one or more processors are also configured to encode the frame before decoding it.

22. The device of claim 13, further comprising a display configured to display the decoded point cloud data.

23. The device according to claim 13, wherein, The device includes one or more of the following: vehicle, camera, computer, mobile device, broadcast receiver device, or set-top box.

24. A computer-readable storage medium having instructions stored thereon, the instructions causing a processor, when executed, to: A frame of point cloud data comprising multiple points is decoded, wherein each of the multiple points is associated with a position value that defines the corresponding location of the point. Decoding the syntax structure of the frame of point cloud data, wherein decoding the syntax structure includes: decoding an initial global scaling value from the syntax structure; decoding data from the syntax structure for determining the number of bits representing a scaling factor refinement value; and decoding the scaling factor refinement value from the syntax structure, the scaling factor refinement value having the number of bits; Using the initial global scaling value, the value representing the number of bits of the scaling factor refinement value, and the scaling factor refinement value, a global scaling factor for the frame is determined, the global scaling factor including a power-of-two component and a refinement component; and The position value of each of the plurality of points is scaled using the global scaling factor.

25. An apparatus for decoding point cloud data, the apparatus comprising: A component for decoding frames of point cloud data comprising multiple points, each of which is associated with a position value that defines the corresponding location of the point; The syntax structure of the frame used for decoding point cloud data includes: A component for decoding the initial global scaling value from the grammatical structure; A component for decoding data from the grammatical structure used to determine the number of bits representing the scaling factor refinement value; and A component for decoding the scaling factor refinement value from the grammatical structure, the scaling factor refinement value having the number of bits; A component for determining a global scaling factor for the frame using the initial global scaling value, the value representing the number of bits of the scaling factor refinement value, and the scaling factor refinement value, the global scaling factor including a power-of-two component and a refinement component; and A component for scaling the position value of each of the plurality of points using the global scaling factor.

26. A method for encoding point cloud data, the method comprising: A frame of point cloud data comprising multiple points is encoded, wherein each of the multiple points is associated with a position value that defines the corresponding location of the point. Determine the global scaling factor of the frame, the global scaling factor including a power-of-two component and a refinement component; Determine the initial global scaling value for the frame; Determine the number of bits used to specify the refinement value to be applied to the initial global scaling value; Determine the scaling factor refinement value with the number of bits; and Generate a bitstream comprising data representing an encoded frame, the initial global scaling value, the number of bits for specifying the refinement value, and the scaling factor refinement value, wherein the global scaling factor is determined using the initial global scaling value, the number of bits representing the scaling factor refinement value, and the scaling factor refinement value.

27. An apparatus for encoding point cloud data, the apparatus comprising: A memory, configured to store the point cloud data; and One or more processors, implemented in a circuit, are configured to perform the method as described in claim 26.

28. A computer-readable storage medium having instructions stored thereon, which, when executed, cause a processor to perform the method of claim 26.

29. An apparatus for encoding point cloud data, the apparatus comprising components for performing the method of claim 26.

30. A computer program product comprising computer-readable instructions that, when executed by a processor, cause the processor to perform the method of any one of claims 1-12.

31. A computer program product comprising computer-readable instructions that, when executed by a processor, cause the processor to perform the method of claim 26.