Point Cloud Data Decoding Method, Computer System, and Storage Medium
By reducing the number of contexts of syntax elements in point cloud encoding, using prediction tree and partitioning technology to optimize point cloud encoding, the high-cost encoding problems in the existing technology are solved, and more efficient point cloud compression and decompression are achieved.
Patent Information
- Application Number
- CN202180006205.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-05-19
- Filing Date
- 2021-06-07
- Publication Date
- 2025-07-11
- Estimated Expiration
- 2041-06-07
AI Technical Summary
Existing point cloud compression techniques require a large amount of context in prediction tree-based encoding, resulting in high encoding costs and it is difficult to reduce the number of contexts without causing significant performance losses.
By reducing the corresponding array size of syntax elements related to point cloud encoding and reducing the number of contexts associated with received data, a predictive tree-based encoding method is adopted, combining octree, quadree and binary tree partitioning techniques to optimize the encoding process of point cloud.
It significantly reduces the complexity of the encoder, improves the efficiency of point cloud compression and decompression, and reduces data transmission and storage requirements.
Smart Images

Figure CN114641804B_ABST
Abstract
Description
[0001] Cross - reference to related applications
[0002] This application claims priority to U.S. Patent Application No. 17 / 324,627, filed on May 19, 2021, which claims priority to U.S. Provisional Application No. 63 / 067,286, filed on August 18, 2020. The entire contents of the above - mentioned applications are hereby incorporated by reference into this application. Background Art
[0003] This application generally relates to the field of data processing, and more particularly to point clouds.
[0004] Point clouds have been widely used in recent years. For example, for object detection and localization in autonomous vehicles, for mapping in Geographic Information Systems (GIS), and for visualizing and archiving cultural heritage objects and collections in cultural heritage projects, etc. A point cloud contains a set of high - dimensional points, typically three - dimensional (3D), and each high - dimensional point includes 3D position information and additional attributes such as color, reflectivity, etc. Multiple cameras and depth sensors, or LiDars (Light Detection and Ranging) in various setups can be used to acquire the high - dimensional points, and the high - dimensional points can consist of thousands to billions of points, thus representing the original scene realistically. To enable faster transmission or reduced storage, compression techniques are needed to reduce the amount of data required to represent the point cloud. The International Organization for Standardization (ISO) / International Electrotechnical Commission (IEC) Moving Picture Experts Group (MPEG) (JTC 1 / SC 29 / WG11) has created an ad - hoc group (MPEG - PCC) to standardize compression techniques for static and / or dynamic point clouds. Summary of the Invention
[0005] Embodiments relate to a point cloud data decoding method, system, and computer - readable storage medium. According to one aspect, a point cloud data decoding method is provided. The method includes: receiving data corresponding to a point cloud; reducing the number of contexts associated with the received data based on reducing the size of an array corresponding to a syntax element, the syntax element being used for prediction - tree - based encoding of the point cloud; and decoding the data corresponding to the point cloud based on the reduced number of contexts.
[0006] According to another aspect, a computer system for decoding point cloud data is provided. The computer system includes at least one processor, at least one computer-readable memory, at least one computer-readable tangible storage device, and program instructions stored on at least one of the at least one storage device, the program instructions being executed by at least one of the at least one processor through one of the at least one memories, whereby the computer system is capable of performing a method. The method includes: receiving data corresponding to a point cloud. Reducing the number of contexts associated with the received data based on reducing the size of an array corresponding to a syntax element, the syntax element being used for prediction tree-based encoding of the point cloud. Decoding the data corresponding to the point cloud based on the reduced number of contexts.
[0007] According to yet another aspect, a computer-readable storage medium for decoding point cloud data is provided. The computer-readable storage medium may include at least one computer-readable storage device and program instructions stored on at least one of the at least one tangible storage device, the program instructions being executed by a processor. The program instructions are executed by the processor for performing a method. The method correspondingly includes: receiving data corresponding to a point cloud. Reducing the number of contexts associated with the received data based on reducing the size of an array corresponding to a syntax element, the syntax element being used for prediction tree-based encoding of the point cloud. Decoding the data corresponding to the point cloud based on the reduced number of contexts. BRIEF DESCRIPTION OF THE DRAWINGS
[0008] From the following detailed description of the exemplary embodiments in conjunction with the accompanying drawings, the above and other objects, features and advantages of the present application will become apparent. The various features of the drawings are not drawn to scale as the illustrations are for clarity to facilitate understanding of the technical solutions of the present application by those skilled in the art in conjunction with the detailed description. In the drawings:
[0009] Figure 1 is a networked computer environment according to at least one embodiment.
[0010] Figure 2A is a schematic diagram of an octree structure for point cloud data according to at least one embodiment.
[0011] Figure 2B is a schematic diagram of an octree partitioning for point cloud data according to at least one embodiment.
[0012] Figure 2C is a schematic diagram of a quadtree partitioning according to at least one embodiment.
[0013] Figure 2D is a schematic diagram of a binary tree partitioning according to at least one embodiment.
[0014] Figure 3 is a syntax element for point cloud encoding according to at least one embodiment.
[0015] Figure 4 is a flowchart of operations representing steps performed by a program for decoding point cloud data according to at least one embodiment.
[0016] Figure 5 is according to at least one embodiment Figure 1 block diagram of internal and external components of a computer and a server shown in
[0017] Figure 6 is according to at least one embodiment and includes Figure 1 block diagram of an exemplary cloud computing environment of a computer system shown in
[0018] Figure 7 is according to at least one embodiment Figure 6 block diagram of a functional layer of an exemplary cloud computing environment shown in DETAILED DESCRIPTION
[0019] This application discloses specific embodiments of the claimed structures and methods. However, it should be understood that the disclosed embodiments are merely examples of the claimed structures and methods that may be embodied in various forms. However, these structures and methods may be embodied in many different forms and should not be construed as limited to the exemplary embodiments described in this application. On the contrary, these exemplary embodiments are provided to make this application more complete and comprehensive, and to fully convey the scope to those skilled in the art. In the specification, details of well-known features and techniques may be omitted to avoid unnecessarily obscuring the presented embodiments.
[0020] Embodiments generally relate to the field of data processing, and more particularly, to point clouds. Among other aspects, the exemplary embodiments described below provide a system, method, and computer program for reducing the context for point cloud encoding by reducing the size of an array corresponding to a syntax element for prediction tree-based encoding of the point cloud. Thus, some embodiments have the ability to improve the field of computing by considering improved point cloud compression and decompression based on reduced context.
[0021] As described above, point cloud coding has been widely used in recent years. For example, it is used for object detection and positioning in autonomous driving vehicles, mapping in GIS, and visualizing and archiving cultural heritage objects and collections in cultural heritage projects. A point cloud contains a set of high-dimensional points, usually 3D, and each high-dimensional point includes 3D position information and additional attributes such as color, reflectivity, etc. Multiple cameras and depth sensors, or Lidar in various setups, can be used to capture the high-dimensional points, and the high-dimensional points can consist of thousands to billions of points, thus realistically representing the original scene. To enable faster transmission or reduce storage, compression techniques are needed to reduce the amount of data required to represent the point cloud. ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) has created an ad-hoc group (MPEG-PCC) to standardize compression techniques for static and / or dynamic point clouds.
[0022] In the MPEG TMC13 model, geometric information and related attributes, such as color or reflectivity, are compressed separately. The geometric information (which is the 3D coordinates of the point cloud) is encoded using octree partitioning, quadtree partitioning, and binary tree partitioning based on its occupancy information. After the geometric information is encoded, the attributes are compressed using prediction, lifting, and region-adaptive hierarchical transformation techniques based on the reconstructed geometry. There are two ways of geometric coding, one is the octree-based way and the other is the prediction tree-based way. However, the prediction tree coding requirement defined in MPEG-PCC requires a large amount of context to encode the ptn_residual_abs_log2[k], k = 0,1,2 syntax elements, and its cost is quite high. Therefore, it is beneficial to reduce the number of contexts without causing significant performance loss. In addition, prediction tree-based coding can be combined with node-based coding to provide further performance gains.
[0023] Aspects are described with reference to the flowcharts and / or block diagrams of methods, apparatuses (systems), and computer-readable storage media of various embodiments. It should be understood that each block in the flowcharts and / or block diagrams, and combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer-readable program instructions.
[0024] The exemplary embodiments described below provide a system, method, and computer program for coding a point cloud using a reduced number of contexts. Figure 1 is a functional block diagram of a networked computer environment that shows a point cloud coding system 100 (hereinafter referred to as "the system") for compressing and decompressing point cloud data. It should be understood that Figure 1 only provides an illustration of one implementation and does not imply any limitation on the environment in which different embodiments can be implemented. Various modifications can be made to the described environment based on design and implementation requirements.
[0025] System 100 may include a computer 102 and a server computer 114. The computer 102 may communicate with the server computer 114 via a communication network 110 (hereinafter referred to as the "network"). The computer 102 may include a processor 104 and a software program 108, which is stored in a data storage device 106 and is capable of communicating with a user and communicating with the server computer 114. As will be discussed below with reference to Figure 5 The computer 102 may include internal components 800A and external components 900A, respectively, and the server computer 114 may include internal components 800B and external components 900B, respectively. The computer 102 may be, for example, a mobile device, a telephone, a personal digital assistant, a netbook, a laptop computer, a tablet computer, a desktop computer, or any type of computing device capable of running a program, accessing a network, and accessing a database.
[0026] The server computer 114 may also operate in a cloud computing service model, such as software as a service (SaaS), platform as a service (PaaS), or infrastructure as a service (IaaS), as will be discussed below with reference to Figure 6 and Figure 7 The server computer 114 may also be located in a cloud computing deployment model, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud.
[0027] The server computer 114 available for point cloud encoding is capable of running a point cloud encoding program 116 (hereinafter referred to as the "program"), and the program 116 may interact with a database 112. The method of the point cloud encoding program will be explained in more detail below with reference to Figure 4 In one embodiment, the computer 102 may operate as an input device including a user interface, while the program 116 may mainly run on the server computer 114. In an alternative embodiment, the program 116 may mainly run on at least one computer 102, and the server computer 114 may be used to process and store the data used by the program 116. It should be noted that the program 116 may be an independent program or may be integrated into a larger point cloud compression program.
[0028] However, it should be noted that, in some cases, the processing of program 116 can be shared between computer 102 and server computer 114 at any ratio. In another embodiment, program 116 can run on more than one computer, server computer, or some combination of computers and server computers, for example, multiple computers 102 communicating with a single server computer 114 via network 110. In another embodiment, for example, program 116 can run on multiple server computers 114 communicating with multiple client computers via network 110. Optionally, the program can run on a network server communicating with servers and multiple client computers via a network.
[0029] Network 110 can include a wired connection, a wireless connection, a fiber optic connection, or some combination thereof. Generally, network 110 can be any combination of connections and protocols that support communication between computer 102 and server computer 114. Network 110 can include various types of networks, such as a local area network (LAN), a wide area network (WAN) such as the Internet, a telecommunications network such as a public switched telephone network (PSTN), a wireless network, a public switched network, a satellite network, a cellular network (e.g., a fifth generation (5G) network, a long term evolution (LTE) network, a third generation (3G) network, a code division multiple access (CDMA) network, etc.), a public land mobile network (PLMN), a metropolitan area network (MAN), a private network, an ad hoc network, an intranet, a fiber-optic based network, etc., and / or a combination of these or other types of networks.
[0030] Figure 1 The number and arrangement of the devices and networks shown are provided as examples. In fact, compared with Figure 1 the devices and networks shown, there can be more devices and / or networks, fewer devices and / or networks, different devices and / or networks, or differently arranged devices and / or networks. Additionally, Figure 1 two or more of the devices shown can be implemented in a single device, or Figure 1 the single device shown can be implemented as multiple distributed devices. Additionally or alternatively, a group of devices (e.g., at least one device) of system 100 can perform at least one function described as being performed by another group of devices of system 100.
[0031] Referring to Figure 2A , a schematic diagram of an octree structure 200A is shown. In TMC13, if an octree geometry codec is used, the geometry encoding process is as follows. First, a cube axis-aligned bounding box B is defined by two points (0,0,0) and (2 M-1 ,2 M -1 ,2 M-1 )), where 2M-1 Define the size of B, and M is specified in the bitstream. Then, an octree structure 200A is constructed by recursively subdividing B. At each stage, the cube is subdivided into 8 sub-cubes. Then, an 8-bit code, i.e., the occupancy code, is generated by associating a 1-bit value with each sub-cube to indicate whether it contains points (i.e., it is full and has a value of 1) or does not contain points (i.e., it is empty and has a value of 0). Only the complete sub-cubes larger than 1 (i.e., non-voxels) are further subdivided.
[0032] Refer to Figure 2B , a schematic diagram of the octree partition 200B is shown. The octree partition 200B may include a two-level octree partition 202 and corresponding occupancy codes 204, where when the cube and the nodes are identified as black, it indicates that they are occupied by points. Then, the occupancy codes 204 of each node are compressed using an arithmetic encoder. The occupancy code 204 can be represented as S (an 8-bit integer), and each bit in S indicates the occupancy status of each child node. There are two encoding methods for the occupancy code in TMC13, namely bit-by-bit encoding and byte-by-byte encoding. Bit-by-bit encoding is enabled by default. Both methods utilize context modeling to perform arithmetic encoding to encode the occupancy code 204, where the context state is initialized at the beginning of the entire encoding process and updated during the encoding process.
[0033] For bit-by-bit encoding, the eight binary numbers in S are encoded in a certain order, where each binary number is encoded by referring to the occupancy status of adjacent nodes and the child nodes of adjacent nodes, where the adjacent nodes are at the same level as the current node. For byte-by-byte encoding, S is encoded by referring to an adaptive lookup table (A-LUT) and a cache, where the A-LUT traces the N (e.g., 32) most frequent occupancy codes, and the cache traces the last M (e.g., 16) different occupancy codes observed.
[0034] Encode the binary flag indicating whether S is in the A-LUT. If S is in the A-LUT, then the index in the A-LUT is encoded using a binary arithmetic encoder. If S is not in the A-LUT, then the binary flag indicating whether S is in the cache is encoded. If S is in the cache, then the binary representation of the index is encoded by reading using a binary arithmetic encoder. Otherwise, if S is not in the cache, then the binary representation of S is encoded using a binary arithmetic encoder. The decoding process begins with parsing the dimensions of the bounding box B from the bitstream. Then, B is subdivided according to the decoded occupancy code to construct the same octree structure.
[0035] The occupancy code of the current node typically has 8 bits, where each bit indicates whether its i-th child node is occupied. When encoding the occupancy code of the current node, all information from adjacent encoded nodes can be used for context modeling. The context information can be further grouped according to the partition level and the distance to the current node. Without loss of generality, the context index of the i-th child node in the current node can be obtained as follows:
[0036]
[0037] where LUT is the lookup table for context indices. ctxIdxParent and ctxIdxChild are the LUT indices representing adjacent information at the parent node level and the child node level respectively.
[0038] Reference Figure 2C , shows a schematic diagram of a quadtree partition. For a point cloud, there is no restriction that the bounding box B has the same size in all directions. On the contrary, it can be a rectangular cuboid of any size to better fit the shape of the 3D scene or object. In implementation, the size of B usually appears as a power of 2, i.e., . Note that is not assumed to be equal. In a quadtree partition, two of the three dimensions (i.e., the x, y, and z dimensions) are divided in half, thus forming 4 sub-boxes of the same size. 200C shows the quadtree partitions of a 3D cube along the x-y, x-z, and y-z axes respectively.
[0039] Reference Figure 2D , shows a schematic diagram of a binary tree partition. As analyzed above, there is no restriction that the bounding box B has the same size in all directions. On the contrary, it can be a rectangular cuboid of any size to better fit the shape of the 3D scene or object. In implementation, the size of B usually appears as a power of 2, i.e., . Note that is not assumed to be equal. In a binary tree partition, one of the three dimensions (i.e., the x, y, and z dimensions) is divided in half, thus forming 2 sub-boxes of the same size. 200D shows the binary tree partitions of a 3D cube along the x-y, x-z, and y-z axes respectively.
[0040] Now refer to Figure 3 , which shows the syntax element 300. Geometric coding based on a prediction tree is introduced, where a prediction tree (i.e., a spanning tree) is constructed for all points in the point cloud. All previous points can be used to predict a point. For example, the position of a point can be predicted by the position of its parent point or by the positions of its parent point and grandparent point.
[0041] According to at least one embodiment, the syntax element 300 may include the following parameters:
[0042] ptn_child_cnt[nodeIdx] is the number of direct child nodes of the current prediction tree node in the geometric prediction tree.
[0043] ptn_pred_mode[nodeIdx] is the mode used to predict the position associated with the current node.
[0044] ptn_residual_eq0_flag[k], ptn_residual_sign_flag[k], ptn_residual_abs_log2[k] and ptn_residual_abs_remaining[k] together indicate the first prediction residual of the k-th geometric position component. ptn_residual_eq0_flag[k] indicates whether the residual component is equal to 0. ptn_residual_sign_flag[k] being equal to 1 indicates that the sign of the residual component is positive. ptn_residual_sign_flag[k] being equal to 0 indicates that the sign of the residual component is negative.
[0045] When encoding the remaining bit count, it is assumed that a 5-bit bit count value , i.e., the total number of context arrays, is represented as ctxNumBits
[12] [3]
[31] . The index of the first dimension (value 12) is used to represent a set of different contexts related to the overall value of ptn_residual_abs_log2[k]. The index of the middle dimension (value 3) represents the 3 components of ptn_residual_abs_log2[k], k = 0, 1, 2. The index of the last dimension (value 31), denoted as ctxIdx, is determined based on the value of ptn_residual_abs_log2[k]= The value determines the index of the last dimension (value 31), denoted as ctxIdx.
[0046] According to at least one embodiment, a first method of determining ctxIdx may include:
[0047] For b0, ctxIdx = 0
[0048] For b1, ctxIdx = 1 + b0
[0049] For b2, ctxIdx = 3 + b1b0
[0050] For b3, ctxIdx = 7 + b2b1b0
[0051] For b4, ctxIdx = 15 + b3b2b1b0
[0052] The second method for determining ctxIdx is to reverse the order of the encoded bits, which may include:
[0053] For b4, ctxIdx = 0
[0054] For b3, ctxIdx = 1 + b4
[0055] For b2, ctxIdx = 3 + b5b4
[0056] For b1, ctxIdx = 7 + b4b2b1
[0057] For b0, ctxIdx = 15 + b4b3b2b1
[0058] According to at least one embodiment, the total number of contexts required for the encoded syntax elements ptn_residual_abs_log2[k], k = 0, 1, 2 can be reduced. In one embodiment, all 3 components of ptn_residual_abs_log2[k], k = 0, 1, 2 share the same set of contexts, that is, the context array ctxNumBits
[12] [3]
[31] , which is simplified to ctxNumBits
[12] [1]
[31] . In another embodiment, the 3 components of ptn_residual_abs_log2[k], k = 0, 1, 2 still have different sets of contexts. Instead, the context array ctxNumBits
[12] [3]
[31] can be reduced to ctxNumBits
[12] [3][8].
[0059] For example, the derivation of ctxIdx can be modified as follows:
[0060] For b0, ctxIdx = 0
[0061] For b1, ctxIdx = 1 + b0
[0062] For b2, ctxIdx = 3 + b1b0
[0063] For b3, ctxIdx = 7
[0064] For b4, ctxIdx = 8
[0065] In addition, the derivation of ctxIdx can also be modified as follows:
[0066] For b4, ctxIdx = 0
[0067] For b3, ctxIdx = 1 + b4
[0068] For b2, ctxIdx = 3 + b5b4
[0069] For b1, ctxIdx = 7
[0070] For b0, ctxIdx = 8
[0071] In at least one embodiment, the total number of required contexts is reduced by at least 1 / 3 of its original size, significantly reducing the complexity of the encoder. In at least one embodiment, the context array ctxNumBits
[12] [3]
[31] can be reduced to only ctxNumBits[1][3]
[31] . In this way, the context can be determined based on the bit values of the component number k = 0, 1, 2 and ptn_residual_abs_log2[k]=
[0072] In node-based geometry coding, the geometry of the point cloud can be encoded until a depth k is reached, where k is specified by the encoder and transmitted in the bitstream. For each occupied node at depth k, it can be regarded as a sub-volume (or sub-tree) of the point cloud. For simplicity, the nodes at depth k can be described as the largest coding units (LCUs). When using a prediction tree to encode an LCU, the number of points in the LCU can be encoded, and then conventional prediction-tree-based coding can be performed while treating the LCU as the entire point cloud. Encoding the number of points in the LCU can be done in different ways. For example, a fixed number of bits N can be used to encode the number of points in the LCU, where N can be indicated in the high-level syntax of the bitstream (such as in the sequence parameter set, geometry parameter set, or slice header, etc.). The actual number of bits (denoted as n) used to represent the number of points in the LCU can be determined, and a fixed number (i.e., s bits) can be used to represent n. These s bits can be encoded using bypass coding, or entropy coding can be used with a context for each of the s bits. Then, the number of points in the LCU can be encoded using n bits by bypass coding. Since each LCU can correspond to an intermediate node in the octree partition and each node has its own starting position, the starting position can be used as the default value for prediction-tree-based coding. The bounding box of the LCU can also be determined, and its minimum coordinates can be used as the default value for prediction-tree-based coding.
[0073] Now referring to Figure 4 , an operation flowchart illustrating the steps of method 400 is shown, and the method 400 is executed by a program for compressing and decompressing point cloud data.
[0074] In step 402, method 400 includes receiving data corresponding to a point cloud.
[0075] In step 404, method 400 includes reducing the number of contexts associated with the received data based on reducing the size of an array corresponding to a syntax element used for prediction tree-based coding of the point cloud.
[0076] In step 406, method 400 includes decoding the data corresponding to the point cloud based on the reduced number of contexts.
[0077] It should be understood that Figure 4 only an illustration of one implementation is provided, and it does not imply any limitation on how different embodiments can be implemented. Based on design and implementation requirements, various modifications can be made to the described environment.
[0078] Figure 5 500 in is according to an exemplary embodiment Figure 1 is a block diagram of internal and external components of a computer depicted in. It should be understood that Figure 5 only an illustration of one implementation is provided, and it does not imply any limitation on the environment in which different embodiments can be implemented. Based on design and implementation requirements, various modifications can be made to the described environment.
[0079] Computer 102 ( Figure 1 ) and server computer 114 ( Figure 1 ) may include Figure 5 corresponding sets of internal components 800A, 800B and external components 900A, 900B as shown. Each set of internal components 800 includes at least one processor 820, at least one computer-readable random access memory (RAM) 822, and at least one computer-readable read-only memory (ROM) 824 connected on at least one bus 826, including at least one operating system 828, and at least one computer-readable tangible storage device 830.
[0080] Processor 820 is implemented in hardware, firmware, or a combination of hardware and software. Processor 820 is a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or other type of processing component. In some embodiments, processor 820 includes at least one processor capable of being programmed to perform functions. Bus 826 includes components that allow communication between internal components 800A and 800B.
[0081] At least one operating system 828, and server computer 114 ( Figure 1The software program 108 on Figure 1 and the point cloud encoding program 116 Figure 1 are both stored on at least one corresponding computer-readable tangible storage device 830 for execution by at least one corresponding processor 820 via at least one corresponding RAM 822 (which typically includes a cache memory). In Figure 5 the illustrated embodiment, each computer-readable tangible storage device 830 is a magnetic disk storage device of an internal hard disk drive. Optionally, each computer-readable tangible storage device 830 is a semiconductor storage device, such as a ROM 824, erasable programmable read-only memory (EPROM), flash memory, optical disk, magneto-optical disk, solid state disk, compact disc (CD), digital versatile disc (DVD), floppy disk, cassette tape, magnetic tape, and / or other types of non-volatile computer-readable tangible storage devices capable of storing computer programs and digital information.
[0082] Each set of internal components 800A, 800B also includes a read / write (R / W) drive or interface 832 for reading from or writing to at least one portable computer-readable tangible storage device 936 (such as a CD-ROM, DVD, memory stick, magnetic tape, magnetic disk, optical disk, or semiconductor storage device). Software programs such as the software program 108 Figure 1 and the point cloud encoding program 116 Figure 1 can be stored on at least one corresponding portable computer-readable tangible storage device 936, read via the corresponding R / W drive or interface 832, and loaded into the corresponding hard disk drive 830.
[0083] Each set of internal components 800A, 800B also includes a network adapter or interface 836, such as a TCP / IP adapter card, wireless Wi-Fi interface card, or 3G, 4G, or 5G wireless interface card or other wired or wireless communication link. The software program 108 Figure 1 on the server computer 114 Figure 1 and the point cloud encoding program 116 Figure 1 can be downloaded from an external computer to the computer 102 Figure 1 and the server computer 114 via a network (such as the Internet, a local area network, or other network, a wide area network) and the corresponding network adapter or interface 836. From the network adapter or interface 836, the software program 108 and the point cloud encoding program 116 on the server computer 114 are loaded into the corresponding hard disk drive 830. The network can include copper wire, optical fiber, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers.
[0084] Each set of external components 900A, 900B may include a computer monitor 920, a keyboard 930, and a computer mouse 934. The external components 900A, 900B may also include a touch screen, a virtual keyboard, a touchpad, a pointing device, and other human-machine interface devices. Each set of internal components 800A, 800B also includes device drivers 840 to interface with the computer monitor 920, the keyboard 930, and the computer mouse 934. The device drivers 840, the R / W driver or interface 832, and the network adapter or interface 836 include hardware and software (stored in the storage device 830 and / or the ROM 824).
[0085] It should be understood in advance that although this application includes a detailed description of cloud computing, the embodiments recited in this application are not limited to cloud computing environments. On the contrary, certain embodiments can be implemented in conjunction with any other type of computing environment known now or developed later.
[0086] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services), which can be rapidly provisioned and released with minimal management effort or interaction with the service provider. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.
[0087] The characteristics are as follows:
[0088] On-demand self-service: Cloud users can automatically and unilaterally provide computing capabilities, such as server time and network storage, as needed, without human interaction with the service provider.
[0089] Broad network access: The capabilities can be obtained through the network and accessed through standard mechanisms that facilitate the use of heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and personal digital assistants).
[0090] Resource pooling: The provider's computing resources are pooled using a multi-tenant model to serve multiple users, and different physical and virtual resources are dynamically allocated and reallocated according to demand. Location independence means that users generally have no control over or knowledge of the exact location of the provided resources, but can specify the location at a higher level of abstraction (e.g., country, state, or data center).
[0091] Rapid elasticity: The capabilities can be configured quickly and elastically, and in some cases can be automatically configured to rapidly scale out and rapidly released to scale in quickly. To users, the capabilities available for configuration generally appear to be infinite and can be purchased in any quantity at any time.
[0092] Measurable Services: The cloud system automatically controls and optimizes resource usage by leveraging metering capabilities at some level of abstraction appropriate to the service type (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be detected, controlled, and reported, providing transparency for both the providers and users of the services used.
[0093] The service models are as follows:
[0094] Software as a Service (SaaS): The functionality provided to the user is to use the provider's applications running on the cloud infrastructure. The applications can be accessed from various client devices through a thin client interface such as a web browser (e.g., web-based email). The user does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application functionality, but may have limited control over user-specific application configuration settings.
[0095] Platform as a Service (PaaS): The functionality provided to the user is to deploy the applications created or acquired by the user onto the cloud infrastructure, where the applications are created using the programming languages and tools supported by the provider. The user does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but controls the deployed applications and possibly the configuration of the application hosting environment.
[0096] Infrastructure as a Service (IaaS): The functionality provided to the user is to offer processing, storage, networking, and other basic computing resources, where the user is able to deploy and run any software, including operating systems and applications. The user does not manage or control the underlying cloud infrastructure, but controls the operating systems, storage, deployed applications, and may have limited control over selected network components (e.g., host firewalls).
[0097] The deployment models are as follows:
[0098] Private Cloud: The cloud infrastructure is run only for an organization. It can be managed by the organization or a third party and can exist either on-premises or off-premises.
[0099] Community Cloud: The cloud infrastructure is shared by multiple organizations and supports a specific community with shared concerns (e.g., missions, security requirements, policies, and compliance considerations). It can be managed by the organizations or a third party and can exist either on-premises or off-premises.
[0100] Public Cloud: The cloud infrastructure is available for general public or large industrial groups and is owned by the organization selling the cloud services.
[0101] Hybrid cloud: The cloud infrastructure is composed of two or more clouds (private, community, or public) that remain unique entities but are bound together through standardized or proprietary technologies to enable data and application portability (e.g., cloud bursting for load balancing between clouds).
[0102] The cloud computing environment is service-oriented, focusing on statelessness, low coupling, modularity, and semantic interoperability. The core of cloud computing is the infrastructure of a network including interconnected nodes.
[0103] Referring to Figure 6 , which shows an exemplary cloud computing environment 600. As shown, the cloud computing environment 600 includes at least one cloud computing node 10 with which local computing devices used by cloud users (such as a personal digital assistant (PDA) or cellular phone 54A, desktop computer 54B, laptop computer 54C, and / or in-vehicle computer system 54N) can communicate. The cloud computing nodes 10 can communicate with each other. They can be physically or virtually grouped (not shown) in at least one network, such as the private cloud, community cloud, public cloud, hybrid cloud, or a combination thereof described above. This allows the cloud computing environment 600 to provide infrastructure, platform, and / or software as a service without the cloud users having to maintain resources for these services on their local computing devices. It should be understood that Figure 6 the types of computing devices 54A-N shown are merely exemplary, and the cloud computing nodes 10 and the cloud computing environment 600 can communicate with any type of computer system through any type of network and / or network addressable connection (e.g., using a web browser).
[0104] Referring to Figure 7 , which shows a set of functional abstraction layers 700 provided by the cloud computing environment 600 ( Figure 6 ). It should be understood in advance that Figure 7 the components, layers, and functions shown are merely exemplary, and the embodiments are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0105] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include: host 61, servers 62 based on reduced instruction set computer (RISC) architecture, server 63, blade server 64, storage device 65, and network and network components 66. In some embodiments, the software components include network application server software 67 and database software 68.
[0106] The virtual layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual server 71, virtual memory 72, virtual network 73 including a virtual private network, virtual applications and operating systems 74, and virtual clients 75.
[0107] In one example, the management layer 80 can provide the following functions. Resource provisioning 81 provides for the dynamic procurement of computing resources and other resources for performing tasks in a cloud computing environment. When resources are utilized in a cloud computing environment, metering and pricing 82 provides cost tracking and bills or invoices for the consumption of these resources. In one example, these resources can include application software licenses. Security provides authentication for cloud users and tasks and protection for data and other resources. User portal 83 provides access to the cloud computing environment for users and system administrators. Service level management 84 provides the allocation and management of cloud computing resources to meet the required service level. Service Level Agreement (SLA) planning and fulfillment 85 provides for the pre-arrangement and acquisition of cloud computing resources for future requirements anticipated according to the SLA.
[0108] The workload layer 90 provides examples of functions that can utilize the cloud computing environment. Examples of workloads and functions that can be provided from this layer include: mapping and navigation 91, software development and lifecycle management 92, virtual classroom teaching implementation 93, data analysis processing 94, transaction processing 95, and point cloud encoding 96. Point cloud encoding 96 can reduce the size of an array corresponding to syntax elements for encoding point cloud data based on a prediction tree.
[0109] Some embodiments can relate to systems, methods, and / or computer-readable media at any possible level of integration of technical details. The computer-readable media can include non-transitory computer-readable storage media (or media) having computer-readable program instructions stored thereon that cause a processor to perform operations.
[0110] A computer-readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer-readable storage medium can be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer-readable storage medium includes the following: a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disc (DVD), a memory stick, a floppy disk, a mechanical encoding device (such as a punch-card or raised structures in grooves on which instructions are recorded), and any suitable combination of the foregoing. The computer-readable storage medium used in this application should not be construed as being a transitory signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse through an optical fiber cable), or an electrical signal transmitted through a wire.
[0111] The computer-readable program instructions described in this application can be downloaded from a computer-readable storage medium to a corresponding computing / processing device, or downloaded to an external computer or external storage device via a network (e.g., the Internet, a local area network, a wide area network, and / or a wireless network). The network can include a copper transmission cable, an optical transmission fiber, a wireless transmission, a router, a firewall, a switch, a gateway computer, and / or an edge server. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions to store them in a computer-readable storage medium within the corresponding computing / processing device.
[0112] The computer-readable program code / instructions for performing the operations can be assembly instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuits, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk, C++, etc., and procedural programming languages (e.g., the "C" programming language) or similar programming languages. The computer-readable program instructions can be executed entirely on the user's computer, partially on the user's computer, executed as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or can be connected to an external computer (e.g., through the Internet using an Internet service provider). In some embodiments, an electronic circuit, including, for example, a programmable logic circuit, a field-programmable gate array (FPGA), or a programmable logic array (PLA), can execute the computer-readable program instructions by utilizing the state information of the computer-readable program instructions to personalize the electronic circuit, thereby performing aspects or operations.
[0113] These computer program instructions can be provided to the processor of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, executed via the processor of the computer or other programmable data processing apparatus, create a means for implementing the functions / actions specified in at least one block of the flowchart and / or block diagram. These computer-readable program instructions can also be stored in a computer-readable storage medium, which can direct a computer, a programmable data processing apparatus, and / or other devices to operate in a particular manner, so that the computer-readable storage medium in which the instructions are stored contains an article of manufacture, the article of manufacture including instructions for implementing aspects of the functions / actions specified in at least one block of the flowchart and / or block diagram.
[0114] The computer-readable program instructions can also be loaded onto a computer, other programmable data processing apparatus, or other devices, so that a series of operation steps are executed on the computer, other programmable apparatus, or other devices, thereby producing a computer-implemented process, such that the instructions executed on the computer, other programmable apparatus, or other devices implement the functions / actions specified in at least one block of the flowchart and / or block diagram.
[0115] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer-readable media according to various embodiments. In this regard, each block in the flowchart or block diagram may represent a module, segment, or portion of instructions, which includes at least one executable instruction for implementing the specified logical function. Compared to what is depicted in the figures, the methods, computer systems, and computer-readable media may include more blocks, fewer blocks, different blocks, or blocks in a different arrangement. In some alternative implementations, the functions labeled in the blocks may not occur in the order labeled in the accompanying drawings. For example, depending on the functions involved, two consecutive blocks shown may actually be executed simultaneously or substantially simultaneously, or the blocks may sometimes be executed in the reverse order. It should also be noted that each block of the block diagrams and / or flowcharts, and combinations of blocks of the block diagrams and / or flowcharts, can be implemented by a system based on dedicated hardware that performs the specified functions or actions, or a combination of dedicated hardware and computer instructions.
[0116] It is obvious that the systems and / or methods described in this application can be implemented in different forms of hardware, firmware, or a combination of hardware and software. The actual specific control hardware or software code for implementing these systems and / or methods is not limited by these embodiments. Therefore, this application describes the operation and behavior of these systems and / or methods without reference to specific software code—it should be understood that software and hardware can be designed based on the description of this application to implement these systems and / or methods.
[0117] Unless explicitly stated, the elements, actions, or instructions used in this application shall not be construed as critical or essential. Additionally, as used in this application, the articles "a" and "an" are intended to include at least one item and can be used interchangeably with "at least one". Furthermore, as used in this application, the term "set" is intended to include at least one item (e.g., related items, unrelated items, combinations of related and unrelated items, etc.) and can be used interchangeably with "at least one". In the case where only one item is desired, the term "one" or similar language is used. Additionally, as used in this application, the terms "having", "possessing", etc. are intended to be open-ended terms. Further, the phrase "based on" is intended to mean "at least partially based on", unless otherwise explicitly stated.
[0118] Descriptions of various aspects and embodiments have been given for illustrative purposes, but are not intended to be exhaustive or limited to the disclosed embodiments. Even if combinations of features are recited in the claims and / or disclosed in the specification, these combinations are not intended to limit the disclosure of possible implementations. In fact, many of these features can be combined in ways not specifically recited in the claims and / or not disclosed in the specification. Although each dependent claim listed below may directly depend on only one claim, the disclosure of possible implementations includes the combination of each dependent claim with every other claim in the claim set. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope of the described embodiments. The terms chosen for use in this application are intended to best explain the principles of the embodiments of this application, the practical application or technical improvement of the technology found in the market, or to enable other ordinary skilled artisans in the art to understand the embodiments disclosed in this application.
Claims
1. A method for decoding point cloud data, performed by at least one processor, the method comprising: Receiving data corresponding to the point cloud; Reducing the number of contexts associated with the received data based on reducing the size of a context array corresponding to a syntax element, the syntax element being for prediction tree-based encoding of the point cloud, the context array being a three-dimensional array representing the total number of contexts required for encoding the syntax elements associated with the received data, reducing the size of the context array corresponding to the syntax element including: reducing the size of one dimension of the context array from a first value to a second value less than the first value; And Decoding the data corresponding to the point cloud based on the reduced number of contexts.
2. The method according to claim 1, wherein The size of the array is reduced based on reducing the number of bit values of the context.
3. The method according to claim 1, wherein, The current node associated with the point cloud includes three geometric position residual components.
4. The method according to claim 3, wherein, The size of the array is reduced based on three geometric position residual components sharing the same context.
5. The method according to claim 1, wherein The size of the array is reduced based on reducing the number of indices of the context.
6. The method according to claim 1, wherein The data is decoded based on decoding the largest coding unit using a prediction tree.
7. The method according to claim 6, the method further comprising decoding the number of points in the largest coding unit by prediction tree-based encoding based on treating the largest coding unit as a smaller point cloud.
8. A computer system for decoding point cloud data, the computer system comprising: At least one computer-readable non-transitory storage medium configured to store computer program code; And At least one computer processor configured to access the computer program code and operate according to the instructions of the computer program code, the computer program code including: Receiving code configured to cause the at least one computer processor to receive data corresponding to the point cloud; Reducing code configured to cause the at least one computer processor to reduce the number of contexts associated with the received data based on reducing the size of a context array corresponding to a syntax element, the syntax element being for prediction tree-based encoding of the point cloud, the context array being a three-dimensional array representing the total number of contexts required for encoding the syntax elements associated with the received data, reducing the size of the context array corresponding to the syntax element including: reducing the size of one dimension of the context array from a first value to a second value less than the first value; and Decoding code configured to cause the at least one computer processor to decode the data corresponding to the point cloud based on the reduced number of contexts.
9. The computer system according to claim 8, wherein, The size of the array is reduced based on reducing the number of bit values of the context.
10. The computer system according to claim 8, wherein, The current node associated with the point cloud includes three geometric position residual components.
11. The computer system according to claim 10, wherein, The size of the array is reduced based on three geometric position residual components sharing the same context.
12. The computer system according to claim 8, wherein, The size of the array is reduced based on reducing the number of indices of the context.
13. The computer system according to claim 8, wherein, The data is decoded based on using a prediction tree to decode the largest coding unit associated with the point cloud.
14. The computer system according to claim 13, wherein, The decoding code is further configured to cause the at least one computer processor to decode the number of points in the largest coding unit by encoding based on a prediction tree, treating the largest coding unit as a smaller point cloud.
15. A non-transitory computer-readable storage medium storing a computer program for decoding point cloud data, the computer program being configured to cause at least one computer processor to perform the method according to any one of claims 1 to 7.
Citation Information
Patent Citations
Methods and devices for binary entropy coding of point clouds
WO2019195920A1