Point cloud data decoding method, device, computer equipment and storage medium
By reducing the number of contexts associated with point cloud data and using the occupied data of the parent node and child nodes for decoding, the problem of inefficient compression and decompression of point cloud data in the prior art is solved, and higher computing efficiency is achieved.
Patent Information
- Application Number
- CN202180003564.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-04-15
- Filing Date
- 2021-04-28
- Publication Date
- 2025-04-04
- Estimated Expiration
- 2041-04-28
AI Technical Summary
In the prior art, the compression and decompression efficiency of point cloud data is seriously affected by the number of contexts, resulting in low computing efficiency.
By receiving data corresponding to the point cloud, the number of contexts is reduced based on the occupancy data of the parent node and the child node, and decoded based on the reduced context.
The number of contexts at the parent node level and child node level is reduced, and the compression and decompression efficiency of point cloud data is improved.
Smart Images

Figure CN114096998B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to the U.S. formal application No. 17 / 231,695, filed with the U.S. Patent Office on April 15, 2021, entitled “Contextual Modeling of Occupancy Coding in Point Cloud Codecs,” and the U.S. provisional application No. 63 / 034,113, filed with the U.S. Patent Office on June 3, 2020, entitled “Update of Contextual Modeling of Occupancy Coding in Point Cloud Codecs,” and the U.S. provisional application No. 63 / 066,099, filed with the U.S. Patent Office on August 14, 2020, entitled “Update of Parent Node Level Contextual Modeling of Occupancy Coding in Point Cloud Codecs,” the entire contents of which are incorporated by reference into this application. Technical Field
[0003] The embodiments of the present application relate to video encoding and decoding technology, and more particularly to a point cloud data decoding method, apparatus, computer equipment and storage medium. Background Art
[0004] The present application relates to the field of data processing, and in particular to point clouds.
[0005] Point cloud modeling has been widely used in recent years. For example, it is used for object detection and positioning in autonomous vehicles, for mapping in geographic information systems (GIS), and for visualization and archiving of cultural heritage objects and collections in cultural heritage projects. A point cloud contains a set of high-dimensional points, usually three-dimensional (3D), each of which includes 3D position information and additional attributes such as color, reflectivity, etc. High-dimensional points can be captured using multiple cameras and / or depth sensors via light detection and ranging (LIDAR) in various environments, and the high-dimensional points can consist of thousands to billions of points, thereby realistically representing the original scene. For faster transmission and / or reduced storage, compression techniques are needed to reduce the amount of data required to represent point clouds. The Moving Picture Experts Group (MPEG), a working group of the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC), has created an ad-hoc group (MPEG-PCC) to standardize compression techniques for static and / or dynamic point clouds.
[0006] In the prior art, arithmetic coding is performed using context modeling to encode occupancy codes. The context state is initialized at the beginning of the encoding process and is updated during the encoding process. It can be seen that the number of contexts will seriously affect the computational efficiency, and thus affect the compression and decompression efficiency of point cloud data. Summary of the invention
[0007] Embodiments of the present application relate to a method, apparatus, computer device, and storage medium for decoding point cloud data.
[0008] According to one aspect of the present application, a point cloud data decoding method is provided, the method comprising:
[0009] receiving data corresponding to the point cloud;
[0010] reducing a number of contexts associated with the data based on occupancy data corresponding to at least one parent node and / or at least one child node within the data;
[0011] The data is decoded based on the reduced amount of context.
[0012] According to another aspect of the present application, a point cloud data decoding device is provided, comprising:
[0013] A receiving module, used for receiving data corresponding to the point cloud;
[0014] a reducing module for reducing a number of contexts associated with the data based on occupancy data corresponding to at least one parent node and / or at least one child node within the data;
[0015] A decoding module is used to decode the data based on the reduced number of contexts.
[0016] According to another aspect of the present application, there is provided a system including a processor and a memory, wherein the memory stores at least one instruction, and the at least one instruction is loaded and executed by the processor to implement the above-mentioned point cloud data decoding method.
[0017] According to another aspect of the present application, a non-volatile computer-readable medium is provided, on which a computer program for point cloud data decoding is stored, and the computer program is executed by at least one processor to perform the above-mentioned point cloud data decoding method.
[0018] According to another aspect of the present application, a computer program product or a computer program is also provided, the computer program product or the computer program comprising computer instructions, the computer instructions being stored in a computer-readable storage medium. A processor of a computer device reads the computer instructions from the computer-readable storage medium, and the processor executes the computer instructions, so that the computer device performs the above-mentioned method for decoding point cloud data.
[0019] It can be seen from the above technical solution that the method provided by the embodiment of the present invention can reduce the number of contexts at the parent node level and the child node level. In this way, by reducing the extended context set associated with the point cloud data, the compression and decompression efficiency of the point cloud data can be improved. BRIEF DESCRIPTION OF THE DRAWINGS
[0020] The above and other purposes, features and advantages of the present application will become apparent from the following detailed description of exemplary embodiments in conjunction with the accompanying drawings. The various features of the accompanying drawings are not drawn to scale because the illustrations are for the sake of clarity, so as to facilitate the understanding of the technical solutions of the present application by those skilled in the art in conjunction with the detailed description. In the accompanying drawings:
[0021] Figure 1 is a networked computer environment according to at least one embodiment;
[0022] Figure 2A is a schematic diagram of an octree structure for point cloud data according to at least one embodiment;
[0023] Figure 2B is a schematic diagram of octree partitioning for point cloud data according to at least one embodiment;
[0024] Figure 2C is a schematic diagram of a structure of a parent node neighbor for point cloud data according to at least one embodiment;
[0025] Figure 2D is a schematic diagram of a structure for a parent node level context for point cloud data according to at least one embodiment;
[0026] Figure 2E is a schematic diagram of a structure of parent neighbors of a currently encoded node for point cloud data according to at least one embodiment;
[0027] Figure 2F is a schematic diagram of a structure for a parent node level context for point cloud data according to at least one embodiment;
[0028] Figure 2G is a schematic diagram of a structure of parent neighbors of a currently encoded node for point cloud data according to at least one embodiment;
[0029] Figure 2H is a schematic diagram of a structure for a sub-node level context for point cloud data according to at least one embodiment;
[0030] Figure 3A is a syntax element for identifying a reduced point cloud data context according to at least one embodiment;
[0031] Figure 3B is a hash table for encoded point cloud geometry information according to at least one embodiment;
[0032] Figure 4 is an operational flow chart of steps performed by a program to decode point cloud data according to at least one embodiment;
[0033] Figure 5According to at least one embodiment Figure 1 block diagrams of internal and external components of computers and servers as shown in;
[0034] Figure 6 According to at least one embodiment, Figure 1 A block diagram of an exemplary cloud computing environment of a computer device is shown; and
[0035] Figure 7 According to at least one embodiment Figure 6 A block diagram of the functional layers of an exemplary cloud computing environment is shown. DETAILED DESCRIPTION
[0036] The present application discloses specific embodiments of the claimed structures and methods. However, it should be understood that the disclosed embodiments are only examples of the claimed structures and methods that can be embodied in various forms. However, these structures and methods can be embodied in many different forms and should not be interpreted as being limited to the exemplary embodiments described in the present application. On the contrary, these exemplary embodiments are provided to make the present application more comprehensive and complete, and to fully convey the scope to those skilled in the art. In the specification, the details of well-known features and technologies may be omitted to avoid unnecessary confusion of the presented embodiments.
[0037] Embodiments generally relate to the field of data processing, and more specifically, to video encoding and decoding. The exemplary embodiments described below provide a system, method, and computer program for, among other things, decoding video data. Therefore, some embodiments improve the encoding and decoding of video data by changing the deblocking method associated with the video data, thereby improving computational efficiency.
[0038] Various aspects are described with reference to the flowcharts and / or block diagrams of the methods, devices (systems) and computer-readable storage media of various embodiments. It should be understood that each box in the flowchart and / or block diagram, and the combination of boxes in the flowchart and / or block diagram can be implemented by computer-readable program instructions.
[0039] The exemplary embodiments described below provide a system, method, and computer program for compressing and decompressing point cloud data by reducing a set of extended contexts associated with the point cloud data. Figure 1 is a functional block diagram of a networked computer environment, which shows a multimedia processing system 100 (hereinafter referred to as "system") for video encoding and decoding. It should be understood that Figure 1 This only provides an illustration of one implementation and does not imply any limitation on the environments in which different embodiments may be implemented. Various modifications may be made to the described environment based on design and implementation requirements.
[0040] System 100 may include computer 102 and server computer 114. Computer 102 may communicate with server computer 114 via communication network 110 (hereinafter referred to as "network"). Computer 102 may include processor 104 and software program 108 stored in data storage device 106 and capable of interfacing with a user and communicating with server computer 114. Figure 5 As discussed, computer 102 may include internal components 800A and external components 900A, respectively, and server computer 114 may include internal components 800B and external components 900B, respectively. Computer 102 may be, for example, a mobile device, a phone, a personal digital assistant, a netbook, a laptop computer, a tablet computer, a desktop computer, or any type of computing device capable of running programs, accessing a network, and accessing a database.
[0041] 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 described 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.
[0042] The server computer 114 that can be used for video data decoding can run a point cloud compression program 116 (hereinafter referred to as the "program"), which can interact with the database 112. The point cloud compression program method is explained in more detail below with reference to Figure 3. In one embodiment, the computer 102 can be operated as an input device including a user interface, and the program 116 can be mainly operated on the server computer 114. In an optional embodiment, the program 116 can be mainly operated on at least one computer 102, and the server computer 114 can be used to process and store data used by the program 116. It should be noted that the program 116 can be a stand-alone program or can be integrated into a larger point cloud compression program.
[0043] However, it should be noted that in some cases, the processing of program 116 may be shared in any ratio between computer 102 and server computer 114. In another embodiment, program 116 may be executed on more than one computer, server computer, or some combination of computers and server computers, such as multiple computers 102 communicating with a single server computer 114 via network 110. In another embodiment, for example, program 116 may be executed on multiple server computers 114 communicating with multiple client computers via network 110. Alternatively, the program may be executed on a network server that communicates with the server and multiple client computers via the network.
[0044] The network 110 may include a wired connection, a wireless connection, a fiber optic connection, or some combination thereof. In general, the network 110 may be any combination of connections and protocols that support communication between the computer 102 and the server computer 114. The network 110 may 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-based network, etc., and / or a combination of these or other types of networks.
[0045] Figure 1 The number and arrangement of devices and networks shown are provided as examples. Figure 1 There may be more devices and / or networks, fewer devices and / or networks, different devices and / or networks, or devices and / or networks arranged differently than those shown. Figure 1 Two or more of the devices shown may be implemented in a single device, or Figure 1 The single device shown may be implemented as multiple distributed devices. Additionally or alternatively, one set of devices (eg, at least one device) of the system 100 may perform at least one function described as being performed by another set of devices of the system 100.
[0046] Reference Figure 2A , shows a schematic diagram of the octree structure 200A. In TMC13, if the octree geometry codec is used, the geometry encoding process is as follows: First, the bounding box B aligned with the cube axis consists of two points (0,0,0) and (2 M-1 ,2 M-1 ,2 M-1 ) definition, where 2 M-1 The size of B is defined, and M is specified in the codestream. The octree structure 200A is then built by recursively subdividing B. At each stage, the cube is subdivided into 8 sub-cubes. An 8-bit code, i.e., an occupancy code, is then generated by associating a 1-bit value with each sub-cube to indicate whether it contains a point (i.e., whether it is full and has a value of 1) or does not contain a point (i.e., whether it is empty and has a value of 0). Only complete sub-cubes (i.e., non-voxels) that are greater than 1 are further subdivided.
[0047] Reference Figure 2B, a schematic diagram of an octree partition 200B is shown. The octree partition 200B includes two levels of octree partitions 202 and corresponding occupancy codes 204, wherein when cubes and nodes are marked as black, it indicates that they are occupied by points. Then, the occupancy code 204 of each node is compressed using an arithmetic encoder. The occupancy code 204 can be represented as S (8-bit integer), and each bit in S indicates the occupancy state of each child node. TMC13 includes two encoding methods for occupancy codes: 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 coding to encode occupancy codes, and the context state is initialized at the beginning of the encoding process and updated during the encoding process.
[0048] For bit-by-bit encoding, the eight bins in S are encoded in a certain order, where each bin is encoded by referring to the occupancy status of neighboring nodes and children of the neighboring nodes, where the neighboring nodes are in the same level of 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 tracks the N (e.g., 32) most frequently occupied codes and the cache tracks the last observed M (e.g., 16) different occupied codes.
[0049] A binary flag indicating whether S is in the A-LUT is encoded. If S is in the A-LUT, the index in the A-LUT is encoded by using a binary arithmetic encoder. If S is not in the A-LUT, a binary flag indicating whether S is in the cache is encoded. If S is in the cache, the binary representation of its index is encoded by using a binary arithmetic encoder. Otherwise, if S is not in the cache, the binary representation of S is encoded by using a binary arithmetic encoder. The decoding process starts by parsing the dimensions of the bounding box B from the bitstream. Then, the same octree structure is constructed by subdividing B according to the decoded occupancy code.
[0050] The occupancy code of the current node usually 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 neighboring 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,
[0051] idx=LUT[i][ctxIdxParent][ctxIdxChild]
[0052] Wherein, LUT is a lookup table of context indexes. ctxIdxParent and ctxIdxChild are LUT indexes representing parent-node-level and child-node-level neighbor information.
[0053] Reference now Figure 2C , depicting a block diagram 200C of the neighbors of a parent node. According to at least one embodiment, assuming that the octree is traversed in breadth-first order. The six neighboring nodes of the current node can be used as the parent node level context installation. The central block can be the current node, and the other six blocks can be the nearest neighbors, where their distance to the current node is 1 block unit. Let Pi represent the occupancy state of the i-th neighbor, that is,
[0054]
[0055] Where i = 0, 1, ..., 5. Then, the parent node level context index can be obtained as follows:
[0056]
[0057] So, if all neighbors are occupied, the maximum value of ctxIdxParent is 63, indicating in this case that the number of contexts in the parent node level is 64.
[0058] Reference now Figure 2D , depicting a block diagram 200D of a parent node level context. According to at least one embodiment, the octree is traversed in a width-first order. All nodes in the parent level occupation can be encoded, and they can be used as context in the current level. For each child node with index i, the parent node level context access method can be different. For example, for the i-th child node (i=0,1,…,7) of the current encoded node, 8 subgraphs can represent the parent node level context access method. In each subgraph, the current encoded node is highlighted in dark gray, and the smaller sub-block within the current node is the i-th child node (i=0,1,…,7); each child node has a different position relative to the current node. The parent node level context access method of each child node is different according to its relative position to the current node.
[0059] Reference now Figure 2E, depicting a block diagram 200E of the parent neighbors of the currently encoded node. In at least one embodiment, when encoding the i-th child node (i=0,1,…,7), the 7 neighboring nodes of the i-th child node in the parent are utilized as context. The 7 neighboring nodes of the i-th child node include 3 nodes that share the same face as the child node, 3 nodes that share the same edge, and 1 node that shares the same vertex. Since different child nodes reference different sets of parent nodes, a total of 26 parent neighboring nodes are used when encoding the current node. Using 26 parent neighboring nodes utilizes more information than using only 6 parent neighboring nodes.
[0060] Therefore, the context index of the i-th child node of the current node can be obtained as follows:
[0061] idx=LUT[i][ctxIdxParent][ctxIdxChild]
[0062]
[0063] Among them, P i,j represents the occupancy rate of the jth neighboring node in the parent of the i-th child node. If the jth neighboring node in the parent of the i-th child node is occupied, then P i,j is equal to 1, otherwise equal to 0, where i=0,1,…,7 and j=0,1,…,6.
[0064] In order to reduce the number of contexts in the parent node level, in another embodiment, the parent node level context index can be obtained by:
[0065]
[0066] In this case, the maximum value of ctxIdxParent is reduced to 6, indicating that the number of contexts in the parent node level is reduced from 64 to 7.
[0067] To further reduce the amount of context in the parent node level, in another embodiment, the parent node level context is disabled by setting ctxIdxParent = 0. In this case, the parent node level neighbor information is not used at all.
[0068] Reference now Figure 2F, depicting a block diagram 200F of a parent node level context. According to at least one embodiment, the number of parent neighbors may be changed. For example, each child node may utilize only the 6 nearest parent neighbors. For the i-th child node (i=0,1,…,7) of the current encoded node, 8 subgraphs represent the parent node level context access method. In each subgraph, the current encoded node is highlighted in dark gray, and the smaller sub-block within the current node is the i-th child node (i=0,1,…,7); each child node has a different position relative to the current node. The parent node level context access method for each child node is different depending on its relative position to the current node. When encoding the i-th child node (i=0,1,…,7), only the 6 neighboring nodes of the i-th child node in the parent are utilized as context. The 6 neighboring nodes of the i-th child node may include 3 nodes that share the same face and 3 nodes that share the same edge with the child node. With Figure 2D In contrast, nodes that share the same vertices with child nodes may not be used in this case.
[0069] refer to Figure 2G , depicts the depiction based on Figure 2F 200G of the parent-level context of the currently encoded node. In at least one embodiment, nodes that share the same vertices as child nodes may not be used. Figure 2D and Figure 2E 26 of them, down to a total of up to 18 parent neighbor nodes that can be used. Therefore, the context index of the i-th child node in the current node can be obtained as follows:
[0070] idx=LUT[i][ctxIdxParent][ctxIdxChild]
[0071]
[0072] Among them, P i,j represents the occupancy rate of the jth neighboring node in the parent of the i-th child node. If the jth neighboring node in the parent of the i-th child node is occupied, then P i,j is equal to 1, otherwise equal to 0, where i = 0, 1, ..., 7 and j = 0, 1, ..., 5. It can be appreciated that the number of parent neighbors can be further reduced by using only a subset of the neighbors.
[0073] To further reduce the amount of context, one can simplify the derivation of ctxIdxParent. In one embodiment, Figure 6 As shown, each child node references up to 6 parent neighbors, and the parent context index can be obtained as follows:
[0074]
[0075] Among them, P i,j (j=0,1,2) represents the occupancy status of the three parent nodes that share the same face with the i-th child node, P i,j (j=3,4,5) represents the occupancy status of the three parent nodes that share the same edge with the i-th child node. In this case, the importance of neighbors that share a face is higher, and the context index is calculated by taking all possible combinations of them, while the importance of neighbors that share an edge is lower, and the context index is calculated by only counting how many of them are occupied. In this way, the maximum value of ctxIdxParent increases from 2 6 -1 reduced to 2 5 -1, so the total number of contexts is reduced by half. Note that other similar simplification methods can be applied to derive the parent context.
[0076] Reference now Figure 2H , depicting a block diagram 200H of subnode level neighbors. According to at least one embodiment, subnode level neighbors may be defined in a variety of ways. For example, subnode level neighbor nodes that have been encoded may be classified according to their distances to the center node. Without loss of generality, assuming that the size of each edge of a subnode is 1, the l2 distances from left to right to the center are 1, and
[0077] make and They respectively indicate that the l2 distance is equal to 1, and The occupancy state of the i-th neighbor in the child node level of , that is,
[0078]
[0079] Note that the distance is 1. and The maximum number of encoded child neighbor nodes can be 3, 9, and 7 respectively.
[0080] Therefore, the child node level context index can be obtained as follows:
[0081]
[0082] Therefore, the maximum number of contexts in a child node level is 2 19 , which is too many for the application. To reduce the number of contexts, in at least one embodiment, some subnode level neighbors can be considered. This can reduce the maximum number of contexts in the subnode level to 2 7 =128.
[0083] In another embodiment, the maximum number of contexts can be further simplified as:
[0084]
[0085] The maximum number of contexts in the child node level is reduced to 2. 3 ×16=128.
[0086] To further reduce the number of contexts, one can use only the three closest nodes with l2 distance 1 and compute the context index as follows:
[0087]
[0088] The maximum number of contexts in the child node level is reduced to 2. 3 =8.
[0089] To further reduce the number of contexts, the relationship between the parent context ctxIdxParent and the child node index i can be decoupled. One can define certain rules to achieve this. In one embodiment, each child node references up to 6 parent neighbors. The i in the current node can be obtained th The context index of the child node, as follows:
[0090] idx=LUT[ctxIdxParent][ctxIdxChild]
[0091]
[0092] Among them, P i,j (j=0,1,2) represents the occupancy status of the three parent nodes that share the same face with the i-th child node, and P i,j (j=3,4,5) represents the occupancy status of the three parent nodes that share the same edge with the i-th child node. Note that the final context index is independent of the child index i. To achieve this, a mapping of the order of the adjacent parent nodes can be defined for each child node, that is, P i,j . Will refer to Figure 3B The mapping is discussed below. The decoupling reflects the symmetrical geometry between each child node and its six adjacent parent nodes. It is understood that other decoupling methods may be used by defining similar mapping tables in other embodiments.
[0093] According to at least one embodiment, when calculating context to reduce the number of contexts, different child nodes may not be distinguished. Specifically, the context index of the i-th child node in the current node may be obtained as follows:
[0094] idx=LUT[ctxIdxParent][ctxIdxChild]
[0095] Here, i is no longer a dimension in the LUT. In other words, all child nodes are treated the same.
[0096] Reference now Figure 3A , depicting syntax element 300A. In order to achieve adaptability to different content and scenarios, different context reduction strategies can be enabled for different situations. Therefore, a high-level syntax can be identified in a sequence parameter set or a geometry parameter set or a slice data header or elsewhere to indicate a context reduction level. According to the value of the specified context reduction level, the encoder and decoder can decide how to utilize context information from adjacent encoded nodes. The context reduction level can correspond to a combination of context reduction methods.
[0097] In at least one embodiment, a syntax element 300A may be identified in a geometry parameter set, indicating a context reduction level as shown in the following table. If the context reduction level is 0, meaning no context reduction, a regular context installation is used. If the context reduction level is 1, a low-level reduction is used. If the context reduction level is 2, a medium-level reduction is used. If the context reduction level is 3, a high-level reduction is used. For a higher number of context reduction levels, a smaller number of contexts is used. In this case, different context configurations may be selected based on content and scenario. Thus, gps_context_reduction_level may specify a context reduction level in a geometry parameter set.
[0098] Reference now Figure 3B , depicting hash table 300B. In at least one embodiment, the encoded geometry occupancy information must be stored in a cache memory because subsequent encoded nodes need to use this information as context. Hash table 300B can be used to cache occupancy information. For each octree partition depth d, a hash table H is maintained. d , where the key is the Morton code of the octree node in depth d, that is, in, is the 3D coordinate of the octree node. Use Morton code As a key, you can access the hash table H d The occupancy value of the octree node i at depth d can be obtained as follows:
[0099]
[0100] When encoding / decoding the occupancy value of the current node, the occupancy value of the node is obtained from the hash table H. d After encoding / decoding the occupancy value of the current node, the encoded occupancy value is stored in H d middle.
[0101] Reference now Figure 4 , depicts an operational flow diagram illustrating the steps of a method 400 implemented by a program for compressing and decompressing point cloud data.
[0102] At 402 , method 400 may include receiving data corresponding to a point cloud.
[0103] At 404 , method 400 may include reducing a number of contexts associated with the data based on occupancy data corresponding to at least one parent node and / or at least one child node within the data.
[0104] At 406, method 400 can include decoding the data based on the reduced number of contexts.
[0105] It should be understood that Figure 4 This only provides an illustration of one implementation and does not imply any limitations on how to implement different embodiments. Various modifications may be made to the described environment based on design and implementation requirements.
[0106] Figure 5 According to an exemplary embodiment Figure 1 500 of the internal and external components of the computer depicted in FIG. It should be understood that Figure 5 This only provides an illustration of one implementation and does not imply any limitation to the environments in which different embodiments may be implemented. Various modifications may be made to the described environment based on design and implementation requirements.
[0107] Computer 102 ( Figure 1 ) and server computer 114 ( Figure 1 ) can include Figure 5 Respective sets of internal components 800A, 800B and external components 900A, 900B are shown. Each set of internal components 800 includes at least one processor 820 connected to at least one bus 826, at least one computer-readable random access memory (RAM) 822 and at least one computer-readable read-only memory (ROM) 824, including at least one operating system 828, and at least one computer-readable tangible storage device 830.
[0108] 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 types of processing components. In some embodiments, processor 820 includes at least one processor that can be programmed to perform functions. Bus 826 includes components that allow communication between internal components 800A and 800B.
[0109] At least one operating system 828, and the server computer 114 ( Figure 1 ) on the software program 108 ( Figure 1 ) and point cloud compression program 116 ( Figure 1 ) are 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). Figure 5 In the illustrated embodiment, each computer-readable tangible storage device 830 is a magnetic disk storage device of an internal hard drive. Alternatively, each computer-readable tangible storage device 830 is a semiconductor storage device such as ROM 824, an erasable programmable read-only memory (EPROM), flash memory, an optical disk, a magneto-optical disk, a solid-state disk, a compact disk (CD), a digital versatile disk (DVD), a floppy disk, a cassette, a magnetic tape, and / or other types of non-volatile computer-readable tangible storage devices capable of storing computer programs and digital information.
[0110] 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 (e.g., a CD-ROM, DVD, memory stick, tape, disk, optical disk, or semiconductor storage device). Figure 1 ) and point cloud compression program 116 ( Figure 1 ) can be stored on at least one corresponding portable computer-readable tangible storage device 936, read via a corresponding R / W drive or interface 832 and loaded into a corresponding hard disk drive 830.
[0111] Each set of internal components 800A, 800B also includes a network adapter or interface 836, such as a TCP / IP adapter card, a wireless Wi-Fi interface card, or a 3G, 4G or 5G wireless interface card or other wired or wireless communication link. Figure 1 ) on the software program 108 ( Figure 1 ) and point cloud compression program 116 ( Figure 1 ) can be downloaded from an external computer to the computer 102 via a network (eg, the Internet, a local area network or other network, a wide area network) and a corresponding network adapter or interface 836 ( Figure 1 ) and the server computer 114. The software program 108 and the point cloud compression program 116 on the server computer 114 are loaded into the corresponding hard disk drive 830 from the network adapter or interface 836. The network may include copper wire, optical fiber, wireless transmission, routers, firewalls, switches, gateway computers and / or edge servers.
[0112] Each set of external components 900A, 900B may include a computer display 920, a keyboard 930, and a computer mouse 934. External components 900A, 900B may also include a touch screen, a virtual keyboard, a touch pad, a pointing device, and other human-computer interface devices. Each set of internal components 800A, 800B also includes a device driver 840 to interface with the computer display 920, the keyboard 930, and the computer mouse 934. The device driver 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 ROM 824).
[0113] It should be understood that although the present application includes a detailed description of cloud computing, the embodiments listed in the present application are not limited to cloud computing environments. Instead, some embodiments can be implemented in conjunction with any other type of computing environment now known or later developed.
[0114] 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) that can be rapidly provisioned and released with minimal management effort or interaction with the service provider. Cloud models can include at least five characteristics, at least three service models, and at least four deployment models.
[0115] Features are as follows:
[0116] On-demand self-service: Cloud users can automatically and unilaterally provision computing capabilities, such as server time and network storage, as needed without manual interaction with the service provider.
[0117] Broad network access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use on heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and personal digital assistants).
[0118] Resource pooling: Pooling a provider's computing resources to serve multiple users using a multi-tenant model, dynamically allocating and reallocating different physical and virtual resources based on demand. Location independence means that users typically have no control or knowledge of the exact location of the resources provided, but are able to specify the location at a higher level of abstraction (e.g., country, state, or data center).
[0119] Rapid elasticity: Capabilities that can be provisioned quickly and elastically, and in some cases automatically provisioned to scale out quickly, and released quickly to scale in quickly. To the user, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.
[0120] Measured service: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to providers and users of the services being used.
[0121] The service model is as follows:
[0122] Software as a Service (SaaS): The functionality provided to users is to use the provider's applications running on a cloud infrastructure. Applications can be accessed from a variety of client devices through a thin client interface such as a web browser (e.g., web-based email). Users do not manage or control the underlying cloud infrastructure including networks, servers, operating systems, storage, or even individual application functions, but may be limited to user-specific application configuration settings.
[0123] Platform as a Service (PaaS): The functionality provided to users is to deploy user-created or acquired applications on cloud infrastructure. The user-created or acquired applications are created using programming languages and tools supported by the provider. Users do not manage or control the underlying cloud infrastructure including networks, servers, operating systems or storage, but control the deployed applications and possible application hosting environment configuration.
[0124] Infrastructure as a Service (IaaS): The functionality provided to users is to provide processing, storage, network and other basic computing resources, where users can deploy and run arbitrary software including operating systems and applications. Users do not manage or control the underlying cloud infrastructure, but control the operating system, storage, deployed applications, and may have limited control over selected network components (e.g., host firewalls).
[0125] The deployment model is as follows:
[0126] Private cloud: Cloud infrastructure is run only for an organization. It can be managed by the organization or a third party and can exist on-premises or off-premises.
[0127] Community cloud: The cloud infrastructure is shared by multiple organizations and supports a specific community with shared concerns (e.g., mission, security requirements, policies, and compliance considerations). It can be managed by the organization or a third party and can exist on-premises or off-premises.
[0128] Public cloud: Cloud infrastructure is available to the general public or large industrial groups and is owned by an organization that sells cloud services.
[0129] Hybrid cloud: A cloud infrastructure composed of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technologies to enable data and application portability (e.g., cloud bursting for load balancing between clouds).
[0130] The cloud computing environment is service-oriented, focusing on statelessness, low coupling, modularity, and semantic interoperability. The core of cloud computing is the infrastructure consisting of a network of interconnected nodes.
[0131] Reference 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, and local computing devices used by cloud users (such as personal digital assistants (PDAs) or cellular phones 54A, desktop computers 54B, laptop computers 54C and / or automotive computer devices 54N) can communicate with these cloud computing nodes 10. The cloud computing nodes 10 can communicate with each other. They can be physically or virtually grouped in at least one network, such as the private cloud, community cloud, public cloud, hybrid cloud, or a combination thereof described above (not shown). This allows the cloud computing environment 600 to provide infrastructure, platforms and / or software as services without the cloud users needing to maintain resources for these services on local computing devices. It should be understood that Figure 6 The types of computing devices 54A-N shown are exemplary only, and cloud computing node 10 and cloud computing environment 600 may communicate with any type of computer device over any type of network and / or network-addressable connection (eg, using a web browser).
[0132] Reference Figure 7 , which shows a cloud computing environment 600 ( Figure 6 ) provides a set of functional abstraction layers 700. It should be understood that Figure 7 The components, layers and functions shown are exemplary only, and the embodiments are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0133] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include: a host 61, a server 62 based on a RISC (Reduced Instruction Set Computer) architecture, a server 63, a blade server 64, a storage device 65, and a network and network components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0134] Virtualization layer 70 provides an abstraction layer from which examples of virtual entities may be provided: virtual servers 71 , virtual storage 72 , virtual networks 73 including virtual private networks, virtual applications and operating systems 74 , and virtual clients 75 .
[0135] In one example, the management layer 80 may provide the following functions. Resource provisioning 81 provides dynamic procurement of computing resources and other resources for performing tasks in a cloud computing environment. Metering and pricing 82 provides cost tracking when resources are utilized in a cloud computing environment and bills or invoices for the consumption of these resources. In one example, these resources may include application software licenses. Security provides authentication for cloud users and tasks and provides 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 allocation and management of cloud computing resources to meet the required service levels. Service level agreement (SLA) planning and implementation 85 provides pre-arrangement and acquisition of cloud computing resources in anticipation of future needs according to the SLA.
[0136] The workload layer 90 provides examples of functions that can take advantage of 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 video encoding and decoding 96. Video encoding and decoding 96 can encode and decode videos using reference image samples instead of padding.
[0137] Some embodiments may involve systems, methods and / or computer-readable media at any possible level of technical detail integration. In embodiments of the present application, the computer-readable medium may include a non-volatile computer-readable storage medium (or medium) having stored thereon computer-readable program instructions that cause a processor to perform operations.
[0138] A computer-readable storage medium may be a tangible device that can retain and store instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but 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 computer-readable storage media 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 a structure protruding in a groove on which instructions are recorded), and any suitable combination of the foregoing. The computer-readable storage medium used in this application should not be interpreted as being a volatile signal itself, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagated through a waveguide or other transmission medium (e.g., a light pulse through a fiber optic cable), or an electrical signal transmitted through a wire.
[0139] 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 may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. The 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 in the corresponding computing / processing device.
[0140] The computer readable program code / instruction for performing the operation can be an assembly instruction, an instruction set architecture (ISA, instruction-set-architecture) instruction, a machine instruction, a machine-dependent instruction, a microcode, a firmware instruction, a state setting data, a configuration data for an integrated circuit, or a source code or object code written in any combination of one or more programming languages, the programming language includes object-oriented programming languages such as Smalltalk, C++, and a procedural programming language (e.g., "C" programming language) or similar programming languages. The computer readable program instruction can be executed completely on the user's computer, partially on the user's computer, executed as an independent software package, partially on the user's computer and partially on a remote computer, or completely 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., by using the Internet of an Internet service provider). In some embodiments, electronic circuits including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) may execute computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize the electronic circuits to perform aspects or operations.
[0141] These computer program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device to produce a machine, so that the instructions are executed via the processor of the computer or other programmable data processing device to create a device for implementing the functions / actions specified by at least one box in the flowchart and / or block diagram. These computer-readable program instructions can also be stored in a computer-readable storage medium, which can instruct a computer, a programmable data processing device, and / or other equipment to operate in a specific manner, so that the computer-readable storage medium in which the instructions are stored contains an article of manufacture, which includes instructions for implementing various aspects of the functions / actions specified by at least one box in the flowchart and / or block diagram.
[0142] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operating steps to be performed on the computer, other programmable apparatus, or other device, thereby producing a computer-implemented process, so that the instructions executed on the computer, other programmable apparatus, or other device implement the functions / actions specified by at least one box of the flowchart and / or block diagram.
[0143] The flow chart and block diagram in the accompanying drawings show the architecture, function and operation of the possible implementation of the system, method and computer-readable medium according to various embodiments.In this regard, each frame in the flow chart or block diagram can represent a module, a fragment or a part of an instruction, which includes at least one executable instruction for realizing a specified logical function.Compared to what is depicted in the figure, the method, computer equipment and computer-readable medium may include more blocks, fewer blocks, different blocks or blocks of different arrangements.In some optional embodiments, the function marked in the frame may not occur in the order marked in the accompanying drawings.For example, depending on the function involved, the two frames shown in succession can actually be performed simultaneously or substantially simultaneously, or the frame can sometimes be performed in reverse order.It should also be noted that each frame of the block diagram and / or flow chart and the combination of the frames of the block diagram and / or flow chart can be implemented by a system based on dedicated hardware that performs a specified function or action or performs a combination of dedicated hardware and computer instructions.
[0144] It is obvious that the systems and / or methods described in the present application can be implemented in different forms of hardware, firmware, or a combination of hardware and software. The actual dedicated control hardware or software code used to implement these systems and / or methods is not limited by these embodiments. Therefore, the present application describes the operation and behavior of these systems and / or methods without reference to specific software codes-it should be understood that software and hardware can be designed based on the description of the present application to implement these systems and / or methods.
[0145] Unless explicitly stated, the elements, actions or instructions used in this application shall not be interpreted as critical or essential. In addition, 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 items 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. Further, the phrase "based on" is intended to mean "based at least in part on", unless otherwise explicitly stated.
[0146] 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 described 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 that are not specifically described in the claims and / or not disclosed in the specification. Although each dependent claim listed below may be directly subordinate to only one claim, the disclosure of possible implementations includes the combination of each dependent claim with each other claim in the claim set. Without departing from the scope of the described embodiments, many modifications and changes will be apparent to those of ordinary skill in the art. The terms used in this application are selected to best explain the principles of the embodiments of the application, the practical application or technical improvement of the technology found on the market, or to enable other ordinary technicians in the art to understand the embodiments disclosed in this application.
Claims
1. A point cloud data decoding method, characterized in that: The method comprises: receiving data corresponding to the point cloud; reducing a number of contexts associated with the data based on occupancy data corresponding to at least one parent node and at least one child node within the data; decoding the data based on the reduced amount of context; For a child node, the parent context index of the child node is calculated according to the occupancy data in the following manner: For a first plurality of parent nodes that share the same face as the child node, calculating the parent context index by taking all possible combinations of the first plurality of parent nodes; For a second plurality of parent nodes that share the same edge with the child node, the parent context index is calculated by only counting how many of the second plurality of parent nodes are occupied.
2. The method according to claim 1, characterized in that Further including: The occupied data is cached based on a hash table.
3. The method according to claim 1, characterized in that Further including: In a sequence parameter set, geometry parameter set, or slice data header, the context reduction level is identified.
4. A point cloud data decoding device, characterized in that: include: A receiving module, used for receiving data corresponding to the point cloud; a reducing module for reducing a number of contexts associated with the data based on occupancy data corresponding to at least one parent node and at least one child node within the data; A decoding module for decoding the data based on the reduced number of contexts; For a child node, the parent context index of the child node is calculated according to the occupancy data in the following manner: For a first plurality of parent nodes that share the same face as the child node, calculating the parent context index by taking all possible combinations of the first plurality of parent nodes; For a second plurality of parent nodes that share the same edge with the child node, the parent context index is calculated by only counting how many of the second plurality of parent nodes are occupied.
5. The device according to claim 4, characterized in that Further including: The cache module is used to cache the occupied data based on a hash table.
6. The device according to claim 4, characterized in that Further including: An identification module is used to identify the context reduction level in a sequence parameter set, a geometry parameter set or a slice data header.
7. A computer device, characterized in that: The method comprises a processor and a memory, wherein the memory stores at least one instruction, and the at least one instruction is loaded and executed by the processor to implement the method according to any one of claims 1 to 3.
8. A non-volatile computer-readable storage medium, characterized in that: A computer program is stored thereon, and when the computer program is executed by at least one processor, the method according to any one of claims 1 to 3 is implemented.
Citation Information
Patent Citations
Methods and devices for binary entropy coding of point clouds
WO2019195920A1