RU2817735C1 - Occupancy coding context simulation for point cloud coding - Google Patents
Occupancy coding context simulation for point cloud coding Download PDFInfo
- Publication number
- RU2817735C1 RU2817735C1 RU2021130945A RU2021130945A RU2817735C1 RU 2817735 C1 RU2817735 C1 RU 2817735C1 RU 2021130945 A RU2021130945 A RU 2021130945A RU 2021130945 A RU2021130945 A RU 2021130945A RU 2817735 C1 RU2817735 C1 RU 2817735C1
- Authority
- RU
- Russia
- Prior art keywords
- parent
- nodes
- contexts
- computer
- point cloud
- Prior art date
Links
- 238000004088 simulation Methods 0.000 title 1
- 230000002829 reductive effect Effects 0.000 claims abstract description 28
- 238000000034 method Methods 0.000 claims description 42
- 230000009467 reduction Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 9
- 230000011664 signaling Effects 0.000 claims description 3
- 230000008030 elimination Effects 0.000 claims 2
- 238000003379 elimination reaction Methods 0.000 claims 2
- 230000000694 effects Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 42
- 238000012545 processing Methods 0.000 description 19
- 230000006835 compression Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 239000010410 layer Substances 0.000 description 12
- 238000007906 compression Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 239000000835 fiber Substances 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(e)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 229910052802 copper Inorganic materials 0.000 description 2
- 239000010949 copper Substances 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004807 localization Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241001233887 Ania Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000002346 layers by function Substances 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Abstract
Description
ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИCROSS REFERENCE TO RELATED APPLICATIONS
[1] Настоящая заявка испрашивает преимущество приоритета патентной заявки США № 17/231695 «КОНТЕКСТНОЕ МОДЕЛИРОВАНИЕ КОДИРОВАНИЯ ЗАНЯТОСТИ ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК», поданной 15 апреля 2021 г., испрашивающей приоритет на основе предварительных заявок США № 63/034113, «ОБНОВЛЕНИЯ ДЛЯ КОНТЕКСТНОГО МОДЕЛИРОВАНИЯ КОДИРОВАНИЯ ЗАНЯТОСТИ ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК», поданной 3 июня 2020 г., и 63/066099, «ОБНОВЛЕНИЯ ДЛЯ КОНТЕКСТНОГО МОДЕЛИРОВАНИЯ НА УРОВНЕ РОДИТЕЛЬСКОГО УЗЛА КОДИРОВАНИЯ ЗАНЯТОСТИ ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК», поданной 14 августа 2020 г., которые полностью включены в данный документ посредством ссылки.[1] This application claims benefit from U.S. Patent Application No. 17/231695, "CONTEXT OCCUPATION CODING MODELING FOR POINT CLOUD ENCODING," filed April 15, 2021, claiming priority based on U.S. Provisional Application No. 63/034113, "UPDATES TO CONTEXT MODELING ANIA EMPLOYMENT CODING FOR POINT CLOUD CODING,” filed June 3, 2020, and 63/066099, “UPDATES TO PARENT LEVEL CONTEXT MODELING OF OCCUPATION CODING FOR POINT CLOUD CODING,” filed Aug. 14, 2020, which are incorporated herein in their entirety. via link.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕFIELD OF TECHNOLOGY TO WHICH THE INVENTION RELATES
[2] Данное изобретение в целом относится к области обработки данных и в частности к облакам точек.[2] This invention relates generally to the field of data processing and in particular to point clouds.
[3] Облако точек широко используется в последние годы. Например, оно используется в автономных транспортных средствах для обнаружения и локализации объектов; оно также используется в географических информационных системах (GIS) для составления карт и используется в культурном наследии для визуализации и архивирования объектов и коллекций культурного наследия и т.д. Облака точек содержат набор многомерных точек, обычно трехмерных (3D), каждая из которых включает в себя информацию о трехмерном положении и дополнительные атрибуты, такие как цвет, отражательная способность и т.д. Они могут быть захвачены с использованием нескольких камер и датчиков глубины или лидара в различных настройках и могут состоять из от тысяч до миллиардов точек для реалистичного представления исходных сцен. Требуются технологии сжатия для уменьшения объема данных, необходимых для представления облака точек, для более быстрой передачи или уменьшения памяти. В ISO/IEC MPEG (JTC 1/SC 29/WG 11) была создана специальная группа (MPEG-PCC) для стандартизации технологий сжатия для статических или динамических облаков точек.[3] Point cloud has been widely used in recent years. For example, it is used in autonomous vehicles for object detection and localization; it is also used in Geographic Information Systems (GIS) for mapping and is used in cultural heritage for visualizing and archiving cultural heritage sites and collections, etc. Point clouds contain a collection of multidimensional points, typically three-dimensional (3D), each of which includes 3D position information and additional attributes such as color, reflectance, and so on. They can be captured using multiple cameras and depth or lidar sensors in a variety of settings and can consist of thousands to billions of points to provide a realistic representation of the original scenes. Compression technologies are required to reduce the amount of data required to represent a point cloud, for faster transfer or reduced memory. ISO/IEC MPEG (JTC 1/SC 29/WG 11) created a special group (MPEG-PCC) to standardize compression technologies for static or dynamic point clouds.
РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯDISCLOSURE OF THE INVENTION
[4] Варианты осуществления относятся к способу, системе и машиночитаемому носителю для декодирования данных облака точек. Согласно одному аспекту предложен способ декодирования данных облака точек. Способ может включать в себя получение данных, соответствующих облаку точек. Количество контекстов, связанных с полученными данными, уменьшают на основе данных занятости, соответствующих одному или более родительским узлам и одному или более дочерним узлам в полученных данных. Данные, соответствующие облаку точек, декодируют на основе уменьшенного количества контекстов.[4] Embodiments relate to a method, system, and computer-readable medium for decoding point cloud data. In one aspect, a method for decoding point cloud data is proposed. The method may include obtaining data corresponding to a point cloud. The number of contexts associated with the received data is reduced based on the occupancy data corresponding to one or more parent nodes and one or more child nodes in the received data. The data corresponding to the point cloud is decoded based on the reduced number of contexts.
[5] Согласно другому аспекту предложена компьютерная система для декодирования данных облака точек. Компьютерная система может включать в себя один или более процессоров, одно или более машиночитаемых запоминающих устройств, одно или более машиночитаемых физических устройств хранения и программные инструкции, хранящиеся на по меньшей мере одном из одного или более устройств хранения, для выполнения по меньшей мере одним из одного или более процессоров через, по меньшей мере, одно из одного или более запоминающих устройств, причем компьютерная система способна выполнять способ. Способ может включать в себя получение данных, соответствующих облаку точек. Количество контекстов, связанных с полученными данными, уменьшают на основе данных занятости, соответствующих одному или более родительским узлам и одному или более дочерним узлам в полученных данных. Данные, соответствующие облаку точек, декодируют на основе уменьшенного количества контекстов.[5] In another aspect, a computer system for decoding point cloud data is proposed. The computer system may include one or more processors, one or more computer-readable storage devices, one or more computer-readable physical storage devices, and program instructions stored on at least one of the one or more storage devices for execution by at least one of the or more processors through at least one of one or more storage devices, the computer system being capable of executing the method. The method may include obtaining data corresponding to a point cloud. The number of contexts associated with the received data is reduced based on the occupancy data corresponding to one or more parent nodes and one or more child nodes in the received data. The data corresponding to the point cloud is decoded based on the reduced number of contexts.
[6] Согласно еще одному аспекту предложен машиночитаемый носитель для декодирования данных облака точек. Машиночитаемый носитель может включать в себя одно или более машиночитаемых устройств хранения и программные инструкции, хранящихся на по меньшей мере одном из одного или более физических устройств хранения, причем программные инструкции могут выполняться процессором. Программные инструкции могут выполняться процессором для выполнения способа, который, соответственно, может включать в себя получение данных, соответствующих облаку точек. Количество контекстов, связанных с полученными данными, уменьшают на основе данных занятости, соответствующих одному или более родительским узлам и одному или более дочерним узлам в полученных данных. Данные, соответствующие облаку точек, декодируют на основе уменьшенного количества контекстов.[6] In yet another aspect, a computer-readable medium for decoding point cloud data is provided. The computer-readable medium may include one or more computer-readable storage devices and program instructions stored on at least one of one or more physical storage devices, wherein the program instructions may be executed by a processor. Software instructions may be executed by a processor to perform a method, which may include obtaining data corresponding to a point cloud. The number of contexts associated with the received data is reduced based on the occupancy data corresponding to one or more parent nodes and one or more child nodes in the received data. The data corresponding to the point cloud is decoded based on the reduced number of contexts.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
[7] Эти и другие задачи, признаки и преимущества станут очевидными из нижеследующего подробного описания иллюстративных вариантов осуществления, которое следует читать вместе с прилагаемыми чертежами. Различные элементы чертежей приведены не в масштабе, поскольку изображения приведены для ясности и облегчения понимания специалистом в данной области техники вместе с подробным описанием. На чертежах:[7] These and other objects, features and advantages will become apparent from the following detailed description of the illustrative embodiments, which should be read in conjunction with the accompanying drawings. Various elements of the drawings are not to scale because the illustrations are provided for clarity and ease of understanding by one skilled in the art in conjunction with the detailed description. On the drawings:
фиг.1 иллюстрирует сетевую компьютерную среду согласно по меньшей мере одному варианту осуществления;FIG. 1 illustrates a networked computer environment according to at least one embodiment; FIG.
фиг.2А - схема структуры октодерева для данных облака точек согласно по меньшей мере одному варианту осуществления;FIG. 2A is a diagram of an octree structure for point cloud data according to at least one embodiment; FIG.
фиг.2В - схема разделения октодерева для данных облака точек согласно по меньшей мере одному варианту осуществления;FIG. 2B is a diagram of an octree partition for point cloud data according to at least one embodiment; FIG.
фиг.2С - структурная схема соседей узла родительского уровня для данных облака точек согласно по меньшей мере одному варианту осуществления;FIG. 2C is a block diagram of a parent node's neighbors for point cloud data according to at least one embodiment; FIG.
фиг.2D - структурная схема контекстов уровня родительского узла для данных облака точек согласно по меньшей мере одному варианту осуществления;FIG. 2D is a block diagram of parent node level contexts for point cloud data according to at least one embodiment; FIG.
фиг.2E - структурная схема соседей родительского уровня текущего кодированного узла для данных облака точек согласно по меньшей мере одному варианту осуществления;FIG. 2E is a block diagram of the parent level neighbors of a current coded node for point cloud data according to at least one embodiment; FIG.
фиг.2F - структурная схема контекстов уровня родительского узла для данных облака точек согласно по меньшей мере одному варианту осуществления;FIG. 2F is a block diagram of parent node level contexts for point cloud data according to at least one embodiment; FIG.
фиг.2G - структурная схема соседей родительского уровня текущего кодированного узла для данных облака точек согласно по меньшей мере одному варианту осуществления;FIG. 2G is a block diagram of the parent layer neighbors of a current coded node for point cloud data according to at least one embodiment; FIG.
фиг.2Н - структурная схема соседей уровня дочернего узла для данных облака точек согласно по меньшей мере одному варианту осуществления;FIG. 2H is a block diagram of child node level neighbors for point cloud data according to at least one embodiment; FIG.
фиг.3A - элемент синтаксиса для сигнализации уменьшения контекстов данных облака точек согласно по меньшей мере одному варианту осуществления;FIG. 3A illustrates a syntax element for signaling reduction of point cloud data contexts according to at least one embodiment; FIG.
фиг.3B - хеш-таблица для кодированной информации геометрии облака точек согласно по меньшей мере одному варианту осуществления;FIG. 3B is a hash table for encoded point cloud geometry information according to at least one embodiment; FIG.
фиг.4 - функциональная блок-схема, иллюстрирующая этапы, выполняемые программой, декодирующей данные облака точек, согласно по меньшей мере одному варианту осуществления;FIG. 4 is a functional block diagram illustrating steps performed by a program decoding point cloud data, according to at least one embodiment; FIG.
фиг.5 - структурная схема внутренних и внешних компонентов компьютеров и серверов, изображенных на фиг.1, согласно по меньшей мере одному варианту осуществления;FIG. 5 is a block diagram of internal and external components of the computers and servers depicted in FIG. 1, according to at least one embodiment;
фиг.6 - структурная схема иллюстративной среды облачных вычислений, включающей в себя компьютерную систему, изображенную на фиг.1 согласно по меньшей мере одному варианту осуществления; иFIG. 6 is a block diagram of an example cloud computing environment including the computer system depicted in FIG. 1 according to at least one embodiment; FIG. And
фиг.7 - структурная схема функциональных слоев иллюстративной среды облачных вычислений на фиг.6 согласно по меньшей мере одному варианту осуществления.FIG. 7 is a block diagram of functional layers of the exemplary cloud computing environment of FIG. 6 according to at least one embodiment.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯIMPLEMENTATION OF THE INVENTION
[8] В данном документе раскрыты подробные варианты осуществления заявленных структур и способов; однако понятно, что раскрытые варианты осуществления являются просто иллюстративными для заявленных структур и способов, которые могут быть реализованы в различных формах. Эти структуры и способы могут быть, однако, реализованы в многочисленных различных формах, и они не должны рассматриваться как ограниченные примерными вариантами осуществления, приведенными в данном документе. Скорее, эти примерные варианты осуществления приведены с тем, чтобы это раскрытие было исчерпывающим и полным, и полностью передавало объем для специалистов в данной области техники. В описании могут быть опущены детали хорошо известных признаков и технологий, чтобы избежать ненужного затруднения понимания представленных вариантов осуществления.[8] Detailed embodiments of the claimed structures and methods are disclosed herein; however, it is understood that the disclosed embodiments are merely illustrative of the claimed structures and methods, which may be implemented in various forms. These structures and methods may, however, be implemented in numerous different forms, and should not be construed as being limited to the exemplary embodiments provided herein. Rather, these exemplary embodiments are provided so that this disclosure is exhaustive and complete, and fully conveys the scope to those skilled in the art. Details of well-known features and technologies may be omitted from the description in order to avoid unnecessary difficulty in understanding the presented embodiments.
[9] Варианты осуществления в целом относятся к области обработки данных и, в частности, к облакам точек. Нижеследующие описанные примерные варианты осуществления относятся к системе, способу и компьютерной программе, среди прочего, для уменьшения количества контекстов, связанных с данными облака точек. Следовательно, некоторые варианты осуществления могут улучшить область вычисления за счет обеспечения улучшенных сжатия и распаковки облака точек посредством рассмотрения соответствующего поднабора соседних узлов из всех соседних узлов текущего узла в данных облака точек.[9] Embodiments generally relate to the field of data processing and, in particular, to point clouds. The following exemplary embodiments described relate to a system, method, and computer program for, among other things, reducing the number of contexts associated with point cloud data. Therefore, some embodiments may improve the computational domain by providing improved compression and decompression of the point cloud by considering an appropriate subset of neighbors from all neighbors of the current node in the point cloud data.
[10] Как описано выше, облако точек широко используется в последние годы. Например, оно используется в автономных транспортных средствах для обнаружения и локализации объектов; оно также используется в географических информационных системах (GIS) для составления карт и используется в культурном наследии для визуализации и архивирования объектов и коллекций культурного наследия и т.д. Облака точек содержат набор многомерных точек, обычно трехмерных (3D), каждая из которых включает в себя информацию о трехмерном положении и дополнительные атрибуты, такие как цвет, отражательная способность и т.д. Они могут быть захвачены с использованием нескольких камер и датчиков глубины или лидара в различных настройках и могут состоять из от тысяч до миллиардов точек для реалистичного представления исходных сцен. Технологии сжатия требуются для уменьшения объема данных, необходимых для представления облака точек, для более быстрой передачи или уменьшения памяти. В ISO/IEC MPEG (JTC 1/SC 29/WG 11) была создана специальная группа (MPEG-PCC) для стандартизации технологий сжатия для статических или динамических облаков точек.[10] As described above, point cloud has been widely used in recent years. For example, it is used in autonomous vehicles for object detection and localization; it is also used in Geographic Information Systems (GIS) for mapping and is used in cultural heritage for visualizing and archiving cultural heritage sites and collections, etc. Point clouds contain a collection of multidimensional points, typically three-dimensional (3D), each of which includes 3D position information and additional attributes such as color, reflectance, and so on. They can be captured using multiple cameras and depth or lidar sensors in a variety of settings and can consist of thousands to billions of points to provide a realistic representation of the original scenes. Compression technologies are required to reduce the amount of data required to represent a point cloud, for faster transfer or reduced memory. ISO/IEC MPEG (JTC 1/SC 29/WG 11) created a special group (MPEG-PCC) to standardize compression technologies for static or dynamic point clouds.
[11] Однако, контекстное моделирование кодирования занятости на уровне родительского узла ограничивается доступом к вплоть до 6 соседним кодированным узлам. Это может привести к относительно небольшому количеству контекстов. Соответственно, рассмотрение только 6 ближайших соседей может в значительной степени ограничить диапазон рецептивного поля и, таким образом, ограничить вызванный прирост производительности. Кроме того, контекстное моделирование кодирования занятости может привести к большому количеству контекстов. Однако в отношении аппаратной реализации очень большое количество контекстов не является предпочтительным, поскольку они потребляют большой объем памяти. Следовательно, может быть предпочтительно улучшить производительность контекста уровня родительского узла с сохранением небольшого количества контекстов за счет уменьшения количества представленных контекстов.[11] However, context modeling of occupancy coding at the parent node level is limited to accessing up to 6 neighboring coded nodes. This may result in a relatively small number of contexts. Accordingly, considering only the 6 nearest neighbors may largely limit the range of the receptive field and thus limit the induced performance gain. In addition, contextual modeling of occupancy coding can result in a large number of contexts. However, in terms of hardware implementation, a very large number of contexts is not preferable because they consume a large amount of memory. Therefore, it may be preferable to improve the performance of the parent node level context while keeping the number of contexts small by reducing the number of presented contexts.
[12] Аспекты описываются в данном документе со ссылкой на изображения блок-схем и/или структурные схемы способов, устройства (систем) и машиночитаемых носителей согласно различным вариантам осуществления. Следует понимать, что каждый блок изображений блок-схем и/или структурных схем, и комбинации блоков в изображениях блок-схем и/или структурных схемах могут быть реализованы с помощью машиночитаемых программных инструкций.[12] Aspects are described herein with reference to depictions of flowcharts and/or block diagrams of methods, apparatus (systems), and computer-readable media in accordance with various embodiments. It should be understood that each block of block diagram images and/or block diagrams, and combinations of blocks in the block diagram images and/or block diagrams can be implemented using machine-readable program instructions.
[13] Нижеследующие описанные примерные варианты осуществления относятся к системе, способу и компьютерной программе, сжимающей и распаковывающей данные облака точек на основе уменьшения расширенного набора контекстов, связанных с данными облака точек. Со ссылкой на фиг.1 представлена функциональная структурная схема сетевой компьютерной среды, иллюстрирующая систему 100 сжатия облака точек (ниже «система») для сжатия и распаковки данных облака точек. Следует понимать, что фиг.1 относится только к иллюстрации одной реализации и не подразумевает каких-либо ограничений в отношении сред, в которых могут быть реализованы различные варианты осуществления. Для показанных сред могут быть сделаны многочисленные модификации на основе требований к конструкции и реализации.[13] The following exemplary embodiments described relate to a system, method, and computer program that compresses and decompresses point cloud data based on reducing an expanded set of contexts associated with the point cloud data. Referring to FIG. 1, a functional block diagram of a networked computer environment is presented illustrating a point cloud compression system 100 (hereinafter "system") for compressing and decompressing point cloud data. It should be understood that FIG. 1 is intended to illustrate one implementation only and is not intended to be any limitation as to the environments in which the various embodiments may be implemented. Numerous modifications can be made to the environments shown based on design and implementation requirements.
[14] Система 100 может включать в себя компьютер 102 и серверный компьютер 114. Компьютер 102 может коммуницировать с серверным компьютером 114 через коммуникационную сеть 110 (ниже «сеть»). Компьютер 102 может включать в себя процессор 104 и программу 108 системы программного обеспечения, которая хранится на устройстве 106 хранения данных и может взаимодействовать с пользователем и коммуницировать с серверным компьютером 114. Как описывается ниже со ссылкой на фиг.5, компьютер 102 может включать в себя внутренние компоненты 800A и внешние компоненты 900A соответственно, а серверный компьютер 114 может включать в себя внутренние компоненты 800B и внешние компоненты 900B соответственно. Компьютер 102 может представлять собой, например, мобильное устройство, телефон, персональный цифровой помощник, нетбук, портативный компьютер, планшетный компьютер, настольный компьютер или вычислительные устройства любого типа, способные запускать программу, получать доступ к сети и доступ к базе данных.[14] System 100 may include a computer 102 and a server computer 114. The computer 102 may communicate with the server computer 114 via a communications network 110 (hereinafter, “network”). Computer 102 may include a processor 104 and a software system program 108 that is stored on storage device 106 and may interact with a user and communicate with server computer 114. As described below with reference to FIG. 5, 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. Computer 102 may be, for example, a mobile device, telephone, personal digital assistant, netbook, laptop, tablet, desktop, or any type of computing device capable of running a program, accessing a network, and accessing a database.
[15] Серверный компьютер 114 также может работать в модели услуг облачных вычислений, такой как программное обеспечение как услуга (SaaS), платформа как услуга (PaaS) или инфраструктура как услуга (laaS), как описывается ниже со ссылкой на фиг. 6 и 7. Серверный компьютер 114 также может быть расположен в модели развертывания облачных вычислений, такой как частное облако, коллективное облако, общедоступное облако или гибридное облако.[15] 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 (laaS), as described below with reference to FIG. 6 and 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.
[16] Серверный компьютер 114, который может использоваться для сжатия и распаковки облака точек, может запускать Программу 116 Сжатия Облака Точек (ниже «программа»), которая может взаимодействовать с базой 112 данных. Способ Программы Сжатия Облака Точек объясняется более подробно ниже в отношении фиг.4. В одном варианте осуществления компьютер 102 может работать как устройство ввода, включая пользовательский интерфейс, тогда как программа 116 может работать в основном на серверном компьютере 114. В альтернативном варианте осуществления программа 116 может работать в основном на одном или более компьютерах 102, тогда как серверный компьютер 114 может использоваться для обработки и хранения данных, используемых программой 116. Следует отметить, что программа 116 может быть отдельной программой или может быть интегрирована в более крупную программу сжатия и распаковки облака точек.[16] The server computer 114, which can be used to compress and decompress the point cloud, can run a Point Cloud Compression Program 116 (hereinafter “program”), which can interact with the database 112. The Point Cloud Compression Program method is explained in more detail below with respect to FIG. 4. In one embodiment, computer 102 may operate as an input device, including a user interface, while program 116 may run primarily on server computer 114. In an alternative embodiment, program 116 may operate primarily on one or more computers 102, while the server computer 114 may be used to process and store data used by program 116. It should be noted that program 116 may be a separate program or may be integrated into a larger point cloud compression and decompression program.
[17] Следует, однако, отметить, что обработка для программы 116 в некоторых случаях может быть распределена между компьютерами 102 и серверными компьютерами 114 в любом соотношении. В другом варианте осуществления программа 116 может работать более чем на одном компьютере, сервере или некоторой комбинации компьютеров и серверных компьютеров, например, на множестве компьютеров 102, коммуницирующих по сети 110 с одним серверным компьютером 114. В другом варианте осуществления, например, программа 116 может работать на множестве серверных компьютеров 114, коммуницирующих по сети 110 с множеством клиентских компьютеров. Как альтернатива, программа может работать на сетевом сервере, коммуницирующем по сети с сервером и множеством клиентских компьютеров.[17] It should be noted, however, that processing for program 116 may in some cases be distributed between computers 102 and server computers 114 in any ratio. In another embodiment, program 116 may run on more than one computer, server, or some combination of computers and server computers, such as multiple computers 102 communicating over network 110 with one server computer 114. In another embodiment, for example, program 116 may operate on a plurality of server computers 114 communicating over a network 110 with a plurality of client computers. Alternatively, the program can run on a network server communicating over the network with the server and multiple client computers.
[18] Сеть 110 может включать в себя проводные соединения, беспроводные соединения, оптоволоконные соединения или некоторую их комбинацию. В целом, сеть 110 может представлять собой любую комбинацию соединений и протоколов, которые могут поддерживать коммуникации между компьютером 102 и серверным компьютером 114. Сеть 110 может включать в себя сети различных типов, такие как, например, локальная сеть (LAN), глобальная сеть (WAN), такая как Интернет, телекоммуникационная сеть, такая как коммутируемая телефонная сеть общего пользования (PSTN), беспроводная сеть, коммутируемая сеть общего пользования, спутниковая сеть, сотовая сеть (например, сеть пятого поколения (5G), сеть стандарта долгосрочного развития (LTE), сеть третьего поколения (3G), сеть множественного доступа с кодовым разделением каналов (CDMA) и т.д.), наземная сеть мобильной связи общего пользования (PLMN), городская сеть (MAN), частная сеть, децентрализованная сеть, интрасеть, волоконно-оптическая сеть и т.п., и/или комбинацию сетей этих или других типов.[18] Network 110 may include wired connections, wireless connections, fiber optic connections, or some combination thereof. In general, network 110 may be any combination of connections and protocols that can support communications between computer 102 and server computer 114. Network 110 may include various types of networks, such as, for example, a local area network (LAN), a wide area network (WAN). WAN) such as the Internet, a telecommunications network such as the public switched telephone network (PSTN), a wireless network, a public switched network, a satellite network, a cellular network (for example, a fifth generation (5G) network, a Long Term Evolution (LTE) network ), third generation network (3G), code division multiple access (CDMA), etc.), public land mobile network (PLMN), metropolitan area network (MAN), private network, decentralized network, intranet, fiber optic network, etc., and/or a combination of these or other types of networks.
[19] Количество и расположение устройств и сетей, показанных на фиг.1, приведены в качестве примера. На практике могут иметься дополнительные устройства и/или сети, меньшее количество устройств и/или сетей, другие устройства и/или сети, или устройства и/или сети, расположенные иначе, чем показанные на фиг.1. Кроме того, два или более устройств, показанных на фиг.1, могут быть реализованы внутри одного устройства или одно устройство, показанное на фиг.1, может быть реализовано как несколько распределенных устройств. Дополнительно или как альтернатива, набор устройств (например, одно или более устройств) системы 100 может выполнять одну или более функций, описанных как выполняемые другим набором устройств системы 100.[19] The number and location of devices and networks shown in Fig. 1 are given as an example. In practice, there may be additional devices and/or networks, fewer devices and/or networks, other devices and/or networks, or devices and/or networks located differently than those shown in FIG. In addition, two or more devices shown in FIG. 1 may be implemented within a single device, or a single device shown in FIG. 1 may be implemented as multiple distributed devices. Additionally or alternatively, a set of devices (e.g., one or more devices) of system 100 may perform one or more functions described as being performed by another set of devices of system 100.
[20] Со ссылкой фиг.2A изображена схема структуры 200A октодерева. В TMC13, если используется кодек с геометрией октодерева, кодирование геометрии происходит следующим образом. Сначала кубический ограничивающий блок B, выровненный по оси, определяется двумя точками (0,0,0) и , где определяет размер B, а задается в битовом потоке. Структура 200A октодерева строится затем путем рекурсивного деления B. На каждом этапе куб разделяется на 8 субкубов. Затем генерируется 8-битовый код, а именно код занятости, путем связывания 1-битового значения с каждым субкубом, чтобы указать, содержит ли он точки (т.е. полный и имеет значение 1) или нет (т.е. пустой и имеет значение 0). Дальше разделяются только полные субкубы с размером больше 1 (т.е. не вокселы).[20] Referring to FIG. 2A, a diagram of an octree structure 200A is shown. In TMC13, if an octree geometry codec is used, the geometry encoding occurs as follows. First, the axis-aligned cubic bounding box B is defined by two points (0,0,0) and , Where determines size B, and is specified in the bit stream. The octree structure 200A is then constructed by recursively dividing B. At each step, the cube is divided into 8 subcubes. An 8-bit code, namely a busy code, is then generated by associating a 1-bit value with each subcube to indicate whether it contains points (i.e. full and has a value of 1) or not (i.e. empty and has a value 0). Only complete subcubes with a size greater than 1 (i.e., not voxels) are further divided.
[21] Со ссылкой фиг.2В изображена схема разделения 200В октодерева. Разделение 200B октодерева может включать в себя двухуровневое разделение 202 октодерева и соответствующий код 204 занятости, где темные кубы и узлы указывают, что они заняты точками. Код 204 занятости каждого узла затем сжимается арифметическим кодером. Код 204 занятости может быть обозначен как S, представляющее собой 8-битовое целое число, а каждый бит в S указывает статус занятости каждого дочернего узла. В TMC13 существуют два способа кодирования для кода 204 занятости, т.е. способы побитового кодирования и побайтного кодирования, и побитовое кодирование разрешено по умолчанию. В любом случае выполняется арифметическое кодирование с контекстным моделированием для кодирования кода 204 занятости, в котором статус контекста инициализируется в начале всего процесса кодирования и обновляется во время процесса кодирования.[21] Referring to FIG. 2B, a 200B octree partitioning diagram is shown. The octree partition 200B may include a two-level octree partition 202 and a corresponding occupancy code 204, where dark cubes and nodes indicate that they are occupied by points. Each node's busy code 204 is then compressed by an arithmetic encoder. The busy code 204 can be denoted as S , which is an 8-bit integer, and each bit in S indicates the busy status of each child node. In TMC13, there are two encoding methods for busy code 204, i.e. bitwise encoding and bitwise encoding methods, and bitwise encoding is enabled by default. In either case, arithmetic encoding with context modeling is performed to encode the busy code 204, in which the context status is initialized at the beginning of the entire encoding process and updated during the encoding process.
[22] Для побитового кодирования восемь бинов в S кодируются в определенном порядке, где каждый бин кодируется посредством обращения к статусу занятости соседних узлов и дочерних узлов соседних узлов, где соседние узлы находятся на одном и том же уровне текущего узла. Для побайтного кодирования S кодируется посредством обращения к адаптивной поисковой таблице (A-LUT), отслеживающей N (например, 32) наиболее частых кодов занятости, и кэшу, отслеживающему последние различные наблюдаемые M (например, 16) кодов занятости.[22] For bitwise encoding, the eight bins in S are encoded in a specific order, where each bin is encoded by referring to the occupancy status of neighboring nodes and children of neighboring nodes, where neighboring nodes are at the same level of the current node. For byte-byte encoding, S is encoded by accessing an adaptive lookup table (A-LUT) keeping track of the N (eg, 32) most frequent busy codes, and a cache keeping track of the last different observed M (eg, 16) busy codes.
[23] Кодируется двоичный флаг, указывающий, находится ли S в A-LUT или нет. Если S находится в A-LUT, индекс в A-LUT кодируется путем использования двоичного арифметического кодера. Если S не находится в A-LUT, то кодируется двоичный флаг, указывающий, находится ли S в кэше или нет. Если S находится в кэше, то двоичное представление его индекса кодируется с использованием двоичного арифметического кодера. В противном случае, если S не находится в кэше, то двоичное представление S кодируется путем использования двоичного арифметического кодера. Процесс декодирования начинается с синтаксического анализа размеров ограничивающего блока B из битового потока. Такая же структура октодерева затем строится путем разделения B в соответствии с декодированными кодами занятости.[23] A binary flag is encoded indicating whether S is in the A-LUT or not. If S is in an A-LUT, the index in the A-LUT is encoded using a binary arithmetic encoder. If S is not in the A-LUT, then a binary flag is encoded indicating whether S is in the cache or not. If S is in the cache, then the binary representation of its index is encoded 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 by parsing the size of bounding block B from the bitstream. The same octree structure is then constructed by partitioning B according to the decoded occupancy codes.
[24] Код занятости текущего узла обычно имеет 8 бит, где каждый бит представляет, занят его дочерний узел i или нет. При кодировании кода занятости текущего узла вся информация из соседних кодированных узлов может быть использована для контекстного моделирования. Информация контекста может быть дополнительно группирована на основании уровня разделения и расстояния до текущего узла. Без потери общности, индекс контекста дочернего узла i в текущем узле может быть получен следующим образом,[24] The busy code of the current node is usually 8 bits, where each bit represents whether its child node i is busy or not. By encoding the busy code of the current node, all information from neighboring encoded nodes can be used for context modeling. Context information can be further grouped based on partition level and distance to the current node. Without loss of generality, the context index of child node i in the current node can be obtained as follows,
, ,
где LUT - таблица поиска индексов контекста. и обозначают индексы LUT, представляющие информацию о соседях на уровне родительского узла и на уровне дочернего узла.where LUT is the context index lookup table. And denote LUT indices representing neighbor information at the parent node level and at the child node level.
[25] Со ссылкой на фиг.2C изображена структурная схема 200C соседей узла родительского уровня. Согласно одному или более вариантам осуществления предположим, что октодерево пересекается по порядку в ширину. Шесть соседних узлов текущего узла могут быть использованы как установка контекстов уровня родительского узла. Блок в центре может быть текущим узлом, а остальные шесть блоков могут быть ближайшими соседями, где их расстояние до текущего узла составляет 1 единицу блока. Пусть обозначает статус занятости соседа i, т.е. , где i =0,1,…,5. Тогда индекс контекста уровня родительского узла может быть получен следующим образом[25] Referring to FIG. 2C, a parent layer node neighbor block diagram 200C is shown. According to one or more embodiments, assume that the octree intersects in width order. The current node's six neighboring nodes can be used to set parent node-level contexts. The block in the center can be the current node, and the other six blocks can be nearest neighbors, where their distance to the current node is 1 block unit. Let denotes the employment status of neighbor i , i.e. , where i =0.1,…,5. Then the parent node level context index can be obtained as follows
Следовательно, если все соседи заняты, максимальное значение составляет 63, что указывает на то, что количество контекстов на уровне родительского узла в этом случае составляет 64.Therefore, if all neighbors are occupied, the maximum value is 63, indicating that the number of contexts at the parent node level in this case is 64.
[26] Со ссылкой на фиг.2D изображена структурная схема 200D контекстов уровня родительского узла. Согласно одному или более вариантам осуществления октодерево пересекается по порядку в ширину. Все узлы в занятости родительского уровня могут быть кодированы, и они могут быть использованы как контексты на текущем уровне. Способ доступа к контексту на уровне родительского узла может отличаться для каждого дочернего узла с индексом i. Например, 8 субфигур могут изображать способ доступа к контексту уровня родительского узла для дочернего узла i (i=0,1,…,7) текущего кодированного узла. На каждой субфигуре текущий кодированный узел выделен темно-серым цветом, а меньший субблок в текущем узле является дочерним узлом i (i =0,1,…,7); каждый дочерний узел имеет различное положение относительно текущего узла. Способ доступа к контексту уровня родительского узла отличается для каждого дочернего узла в зависимости от его относительного положения по отношению к текущему узлу.[26] Referring to FIG. 2D, a block diagram of parent node level contexts 200D is shown. In one or more embodiments, the octree is intersected in order of breadth. All nodes in the occupancy of the parent level can be encoded, and they can be used as contexts in the current level. The way context is accessed at the parent node level can be different for each child node with index i . For example, 8 subfigures could depict how to access the parent node level context for child node i ( i =0,1,...,7) of the current coded node. In each subfigure, the current coded node is highlighted in dark gray, and the smaller subblock in the current node is the child node i ( i =0,1,...,7); each child node has a different position relative to the current node. The way the parent node level context is accessed is different for each child node depending on its relative position to the current node.
[27] Со ссылкой на фиг.2E изображена структурная схема 200E соседей родительского уровня текущего кодированного узла. В одном или более вариантах осуществления при кодировании дочернего узла i (i=0,1,…,7) 7 смежных узлов дочернего узла i на родительском уровне используются как контексты. 7 смежных узлов дочернего узла i включают в себя 3 узла, имеющих общую грань с дочерним узлом, и 3 узла, имеющих общее ребро, и 1 узел, имеющий общую вершину. Поскольку разные дочерние узлы относятся к разным наборам родительских узлов, при кодировании текущего узла используются всего 26 соседних узлов родительского уровня. По сравнению с использованием только 6 соседних узлов родительского уровня, использование 26 соседних узлов родительского уровня позволяет получить гораздо больше информации.[27] Referring to FIG. 2E, a block diagram 200E of the parent layer neighbors of the current coded node is shown. In one or more embodiments, when encoding child node i ( i =0,1,...,7), 7 adjacent nodes of child node i at the parent level are used as contexts. The 7 adjacent nodes of a child node i include 3 nodes that share an edge with the child node, and 3 nodes that share an edge, and 1 node that shares a vertex. Since different child nodes belong to different sets of parent nodes, a total of 26 parent-level neighboring nodes are used when encoding the current node. Compared to using only 6 parent-level neighbors, using 26 parent-level neighbors allows much more information to be obtained.
[28] Соответственно, индекс контекста дочернего узла i в текущем узле может быть получен как:[28] Accordingly, the context index of child node i in the current node can be obtained as:
где обозначает занятость смежного узла j на родительском уровне дочернего узла i. равна 1, если смежный узел j на родительском уровне дочернего узла i занят, и равен 0 в противном случае, где i=0,1,…,7 и j=0,1,…,6.Where denotes the occupancy of adjacent node j at the parent level of child node i . equals 1 if adjacent node j at the parent level of child node i is occupied, and equals 0 otherwise, where i =0,1,…,7 and j =0,1,…,6.
[29] Для уменьшения количества контекстов на уровне родительского узла, в другом варианте осуществления индекс контекста уровня родительского узла может быть получен с помощью,[29] To reduce the number of contexts at the parent node level, in another embodiment, the index of the parent node level context can be obtained using,
, ,
в этом случае максимальное количество уменьшается до 6, что означает, что количество контекстов на уровне родительского узла уменьшается до 7 от 64.in this case the maximum number is reduced to 6, which means that the number of contexts at the parent node level is reduced to 7 from 64.
[30] Для дополнительного уменьшения количества контекстов на уровне родительского узла, в другом варианте осуществления контекст уровня родительского узла отключен за счет установки[30] To further reduce the number of parent node level contexts, in another embodiment, the parent node level context is disabled by setting
. .
В этом случае информация о соседях на уровне родительского узла вообще не используется.In this case, neighbor information at the parent node level is not used at all.
[31] Со ссылкой на фиг.2F изображена структурная схема 200F контекстов уровня родительского узла. Согласно одному или более вариантам осуществления количество соседей родительского уровня может быть изменено. Например, каждый дочерний узел может использовать только 6 ближайших соседей родительского уровня. 8 субфигур изображают способ доступа к контексту уровня родительского узла для дочернего узла i (i=0,1,…,7) текущего кодированного узла. На каждой субфигуре текущий кодированный узел выделен темно-серым цветом, а меньший субблок в текущем узле является дочерним узлом i (i=0,1,…,7); каждый дочерний узел имеет различное положение относительно текущего узла. Способ доступа к контексту уровня родительского узла отличается для каждого дочернего узла в зависимости от его относительного положения по отношению к текущему узлу. При кодировании дочернего узла i (i=0,1,…,7) только 6 смежных узлов дочернего узла i на родительском уровне используются как контексты. 6 смежных узлов дочернего узла i могут включать в себя 3 узла, имеющих общую грань с дочерним узлом, и 3 узла, имеющих общее ребро. По сравнению с фиг.2D, узел, имеющий общую вершину с дочерним узлом, в этом случае не может использоваться.[31] Referring to FIG. 2F, a block diagram 200F of parent node level contexts is shown. According to one or more embodiments, the number of parent level neighbors may be changed. For example, each child node can only use the parent's 6 nearest neighbors. The 8 subfigures depict how to access the parent node level context for child node i ( i =0,1,...,7) of the current coded node. In each subfigure, the current coded node is highlighted in dark gray, and the smaller subblock in the current node is the child node i ( i =0,1,...,7); each child node has a different position relative to the current node. The way the parent node level context is accessed is different for each child node depending on its relative position to the current node. When encoding child node i ( i =0,1,...,7), only 6 adjacent nodes of child node i at the parent level are used as contexts. The 6 adjacent nodes of a child node i may include 3 nodes that share an edge with the child node and 3 nodes that share an edge. Compared to FIG. 2D, a node sharing a vertex with a child node cannot be used in this case.
[32] Со ссылкой на фиг.2G изображена структурная схема, изображающая 200G, изображающий соседей родительского уровня текущего кодированного узла, на основе контекстов уровня родительского узла на фиг.2F. В одном или более вариантах осуществления узел, имеющий общую вершину с дочерним узлом, может не использоваться. Соответственно, всего может использоваться до 18 соседних узлов родительского уровня, с уменьшением от 26 на фиг. 2D и 2E. Следовательно, индекс контекста дочернего узла i в текущем узле может быть получен как:[32] Referring to FIG. 2G, a block diagram is depicted 200G depicting the parent layer neighbors of the current coded node based on the parent layer contexts of FIG. 2F. In one or more embodiments, a node that shares a vertex with a child node may not be used. Accordingly, a total of up to 18 parent level neighbors can be used, decreasing from 26 in FIG. 2D and 2E. Therefore, the context index of child node i in the current node can be obtained as:
где обозначает занятость смежного узла j на родительском уровне дочернего узла i. равна 1, если смежный узел j на родительском уровне дочернего узла i занят, и равен 0 в противном случае, где i=0,1,…,7 и j=0,1,…,5. Следует принять во внимание, что количество соседей родительского уровня может быть дополнительно уменьшено за счет использования только поднабора соседей.Where denotes the occupancy of adjacent node j at the parent level of child node i. equals 1 if adjacent node j at the parent level of child node i is occupied, and equals 0 otherwise, where i =0,1,…,7 and j =0,1,…,5. Note that the number of parent-level neighbors can be further reduced by using only a subset of neighbors.
[33] Для дополнительного уменьшения количества контекстов можно упростить получение . В одном варианте осуществления каждый дочерний узел относится к 6 соседям родительского уровня, как показано на фиг.6, и индекс контекста родительского уровня может быть получен как:[33] To further reduce the number of contexts, it can be easier to obtain . In one embodiment, each child node belongs to 6 neighbors of the parent level, as shown in Fig. 6, and the context index of the parent level can be obtained as:
), ),
где (j=0,1,2) обозначает статус занятости трех узлов родительского уровня, имеющих общую грань с дочерним узлом i, а (j=3,4,5) обозначает статус занятости трех узлов родительского уровня, имеющих общее ребро с дочерним узлом i. В этом случае соседи, имеющие общую грань, имеют более высокую важность, и индекс контекста вычисляется путем учета всех их возможных комбинаций, тогда как соседи, имеющие общее ребро, имеют меньшую важность, и индекс контекста вычисляется путем простого подсчета, сколько из них заняты. Таким образом, максимальное значение уменьшается от 26 - 1 до 25 - 1, поэтому общее количество контекстов уменьшается вдвое. Следует отметить, что для получения контекста родительского уровня могут быть применены другие сходные способы упрощения.Where ( j =0,1,2) denotes the occupancy status of three parent-level nodes that share an edge with child node i , and ( j =3,4,5) denotes the occupancy status of three parent-level nodes that share an edge with child node i. In this case, neighbors sharing an edge have higher importance and the context index is calculated by taking into account all possible combinations of them, while neighbors sharing an edge have lower importance and the context index is calculated by simply counting how many of them are occupied. Thus, the maximum value decreases from 2 6 - 1 to 2 5 - 1, so the total number of contexts is halved. It should be noted that other similar simplification techniques may be used to obtain the parent-level context.
[34] Со ссылкой на фиг.2H изображена структурная схема 200H соседей уровня дочернего узла. Согласно одному или более вариантам осуществления соседи уровня дочернего узла могут быть определены многими способами. Например, узлы соседей уровня дочернего узла, которые уже кодированы, могут быть классифицированы на основании их расстояния до центрального узла. Без потери общности, предполагая, что размер каждого ребра дочерних узлов равен 1, расстояние l 2 до центра составляет 1, и слева направо соответственно.[34] Referring to FIG. 2H, a block diagram 200H of child node level neighbors is shown. In one or more embodiments, the level neighbors of a child node can be determined in a number of ways. For example, child-level neighbor nodes that are already encoded can be classified based on their distance to the central node. Without loss of generality, assuming that the size of each edge of the child nodes is 1, the distance l 2 to the center is 1. And from left to right respectively.
[35] Пусть , и обозначают статус занятости соседа i на уровне дочернего узла с расстоянием l 2 , равным 1, и , соответственно, т.е. . Следует отметить, что максимальное количество кодированных соседних узлов дочернего уровня с расстоянием 1, и может составлять 3, 9 и 7, соответственно.[35] Let , And denote the occupancy status of neighbor i at the child node level with distance l 2 equal to 1, And , accordingly, i.e. . It should be noted that the maximum number of coded neighbors of a child layer with a distance of 1. And can be 3, 9 and 7, respectively.
[36] Соответственно, индекс контекста уровня дочернего узла может быть получен как:[36] Accordingly, the child node level context index can be obtained as:
Следовательно, максимальное количество контекстов на уровне дочернего узла равно 219, что слишком много для приложений. Для уменьшения количества контекстов в одном или более вариантах осуществления могут быть учтены частичные соседи на уровне дочернего узла. Это может уменьшить максимальное количество контекстов на уровне дочернего узла до 27=128.Therefore, the maximum number of contexts at the child node level is 2 19 , which is too many for applications. To reduce the number of contexts, one or more embodiments may consider partial neighbors at the child node level. This can reduce the maximum number of contexts at the child node level to 2 7 =128.
[37] В другом варианте осуществления максимальное количество контекстов может быть дополнительно упрощено как:[37] In another embodiment, the maximum number of contexts can be further simplified as:
где максимальное количество контекстов на уровне дочернего узла уменьшено до .where the maximum number of contexts at the child node level is reduced to .
[38] Для дополнительного уменьшения количества контекстов можно использовать только три ближайших узла с расстоянием l 2 , равным 1, и индекс контекста вычисляется как:[38] To further reduce the number of contexts, only the three closest nodes with distance l 2 equal to 1 can be used, and the context index is calculated as:
, ,
где максимальное количество контекстов на уровне дочернего узла уменьшено до 23=8.where the maximum number of contexts at the child node level is reduced to 2 3 =8.
[39] Для дополнительного уменьшения количества контекстов может быть разорвана взаимосвязь между контекстом родительского уровня и индексом i дочернего узла. Для достижения этого можно определить некоторые правила. В одном варианте осуществления каждый дочерний узел относится к 6 соседям родительского уровня. Индекс контекста дочернего узла i в текущем узле может быть получен как:[39] To further reduce the number of contexts, the relationship between parent-level contexts can be broken and index i of the child node. To achieve this, some rules can be defined. In one embodiment, each child node is related to 6 parent-level neighbors. The context index of child node i in the current node can be obtained as:
где (j=0,1,2) обозначает статус занятости трех узлов родительского уровня, имеющих общую грань с дочерним узлом i, а (j=3,4,5) обозначает статус занятости трех узлов родительского уровня, имеющих общее ребро с дочерним узлом i. Следует отметить, что конечный индекс контекста не зависит от дочернего индекса i. Для достижения этого может быть определено преобразование для каждого дочернего узла относительно упорядоченного расположения соседних узлов родительского уровня, т.е. . Преобразование описывается со ссылкой на фиг.3B. Разрыв отражает симметричную геометрию между каждым дочерним узлом и его 6 соседними узлами родительского уровня. Следует принять во внимание, что могут быть использованы другие способы разрыва за счет определения сходных таблиц преобразования в других вариантах осуществления.Where ( j =0,1,2) denotes the occupancy status of three parent-level nodes that share an edge with child node i , and ( j =3,4,5) denotes the occupancy status of three parent-level nodes that share an edge with child node i. It should be noted that the final context index is independent of the child index i. To achieve this, a transformation can be defined for each child node relative to the ordering of its parent-level neighboring nodes, i.e. . The transformation is described with reference to Fig. 3B. The gap reflects the symmetrical geometry between each child node and its 6 neighboring parent level nodes. It should be appreciated that other methods of breaking may be used by defining similar lookup tables in other embodiments.
[40] Согласно одному или более вариантам осуществления может не существовать различения между различными дочерними узлами при вычислении контекста для уменьшения количества контекстов. В частности индекс контекста дочернего узла i в текущем узле может быть получен как:[40] According to one or more embodiments, there may be no distinction between different child nodes when calculating the context to reduce the number of contexts. Specifically, the context index of child node i in the current node can be obtained as:
, ,
где i больше не является измерением в LUT. Другими словами, все дочерние узлы считаются одинаковыми.where i is no longer a dimension in the LUT. In other words, all child nodes are considered the same.
[41] Со ссылкой на фиг.3A изображен элемент 300A синтаксиса. Для достижения адаптивности к различным типам контента и сценариям, для разных случаев могут быть задействованы разные стратегии уменьшения контекста. Соответственно, синтаксис высокого уровня может быть сигнализирован либо в наборе параметров последовательности, либо в наборе параметров геометрии, либо в заголовке данных слайсов, либо где-нибудь еще для указания уровня уменьшения контекстов. На основании значения заданного уровня уменьшения контекстов кодер и декодер затем могут решить, как использовать информацию контекстов из соседних кодированных узлов. Уровень уменьшения контекстов может соответствовать схеме комбинации способов уменьшения контекстов.[41] Referring to FIG. 3A, syntax element 300A is shown. To achieve adaptability to different content types and scenarios, different context reduction strategies can be employed for different cases. Accordingly, high-level syntax may be signaled either in the sequence parameter set, or in the geometry parameter set, or in the slice data header, or elsewhere to indicate the level of context reduction. Based on the value of the specified context reduction level, the encoder and decoder can then decide how to use context information from neighboring coded nodes. The level of context reduction may correspond to a combination scheme of context reduction techniques.
[42] В одном или более вариантах осуществления элемент 300A синтаксиса может быть сигнализирован в наборе параметров геометрии, указывая уровень уменьшения контекстов, как показано в таблице ниже. Если уровень уменьшения контекстов равен 0, что означает отсутствие уменьшения контекстов, то применяется обычная установка контекстов. Если уровень уменьшения контекстов составляет 1, применяется низкоуровневое уменьшение. Если уровень уменьшения контекстов составляет 2, применяется среднеуровневое уменьшение. Если уровень уменьшения контекстов составляет 3, применяется высокоуровневое уменьшение. При большем количестве уровней уменьшения контекстов используется меньшее количество контекстов. В этом случае могут быть выбраны различные конфигурации контекста на основании контентов и сценариев. Таким образом, gps_context_reduction_level может задавать уровень уменьшения контекстов в наборе параметров геометрии.[42] In one or more embodiments, syntax element 300A may be signaled in a geometry parameter set indicating the level of reduction of contexts, as shown in the table below. If the context reduction level is 0, which means no context reduction, then the normal context setting is applied. If the contexts reduction level is 1, low-level reduction is applied. If the context reduction level is 2, a mid-level reduction is applied. If the contexts reduction level is 3, high-level reduction is applied. With more context reduction levels, fewer contexts are used. In this case, different context configurations can be selected based on the contents and scenarios. Thus, gps_context_reduction_level can specify the reduction level of contexts in the geometry parameter set.
[43] Со ссылкой на фиг.3B изображена хеш-таблица 300B. В одном или более вариантах осуществления кодированная информация занятости геометрии должна быть сохранена в кэш-памяти, поскольку более поздним кодированным узлам требуется использовать эту информацию как контекст. Хеш-таблица 300B может использоваться для кэширования информации занятости. Для каждой глубины d разделения октодерева поддерживается хеш-таблица , где ключом является код Мортона узла октодерева на глубине d, т.е. , где - трехмерные координаты узла октодерева. Используя код Мортона как ключ, можно получить доступ к его значению занятости в хеш-таблице . Значение занятости узла i октодерева на глубине d может быть получено как:[43] Referring to FIG. 3B, a hash table 300B is shown. In one or more embodiments, encoded geometry occupancy information must be stored in cache because later encoded nodes need to use this information as context. Hash table 300B may be used to cache busy information. For each octree partition depth d , a hash table is maintained , where the key is the Morton code of the octree node at depth d , i.e. , Where - three-dimensional coordinates of an octree node. Using Morton's code as a key, you can access its busy value in a hash table . The occupancy value of octree node i at depth d can be obtained as:
. .
При кодировании/декодировании значения занятости текущего узла информация занятости соседних узлов получается из хеш-таблицы . После кодирования/декодирования значение занятости текущего узла, кодированное значение занятости затем сохраняется в .When encoding/decoding the occupancy value of the current node, the occupancy information of neighboring nodes is obtained from the hash table . After encoding/decoding the busy value of the current node, the encoded busy value is then stored in .
[44] Со ссылкой на фиг.4 изображена функциональная блок-схема, иллюстрирующая этапы способа 400, выполняемого программой, сжимающей и распаковывающей данные облака точек.[44] Referring to FIG. 4, a functional block diagram is depicted illustrating the steps of a method 400 performed by a program compressing and decompressing point cloud data.
[45] На 402 способ может включать в себя получение данных, соответствующих облаку точек.[45] At 402, the method may include obtaining data corresponding to a point cloud.
[46] На 404 способ 400 может включать в себя уменьшение количества контекстов, связанных с полученными данными, на основе данных занятости, соответствующих одному или более родительским узлам и одному или более дочерним узлам в полученных данных.[46] At 404, method 400 may include reducing the number of contexts associated with the received data based on busy data corresponding to one or more parent nodes and one or more child nodes in the received data.
[47] На 406 способ 400 может включать в себя декодирование данных, соответствующих облаку точек, на основе уменьшенного количества контекстов.[47] At 406, method 400 may include decoding data corresponding to a point cloud based on a reduced number of contexts.
[48] Следует понимать, что фиг.4 относится только к иллюстрации одной реализации и не подразумевает каких-либо ограничений в отношении того, как могут быть реализованы различные варианты осуществления. Для показанных сред могут быть сделаны многочисленные модификации на основе требований к конструкции и реализации.[48] It should be understood that FIG. 4 is intended to illustrate one implementation only and is not intended to imply any limitation as to how various embodiments may be implemented. Numerous modifications can be made to the environments shown based on design and implementation requirements.
[49] Фиг.5 является структурной схемой 500 внутренних и внешних компонентов компьютеров, изображенных на фиг.1, согласно иллюстративному варианту осуществления. Следует понимать, что фиг.5 относится только к иллюстрации одной реализации и не подразумевает каких-либо ограничений в отношении сред, в которых могут быть реализованы различные варианты осуществления. Для показанных сред могут быть сделаны многочисленные модификации на основе требований к конструкции и реализации.[49] FIG. 5 is a block diagram 500 of internal and external components of the computers depicted in FIG. 1, according to an example embodiment. It should be understood that FIG. 5 is intended to illustrate one implementation only and is not intended to be any limitation as to the environments in which the various embodiments may be implemented. Numerous modifications can be made to the environments shown based on design and implementation requirements.
[50] Компьютер 102 (фиг.1) и серверный компьютер 114 (фиг.1) могут включать в себя соответствующие наборы внутренних компонентов 800A, B и внешних компонентов 900A, B, показанных на фиг.5. Каждый из наборов внутренних компонентов 800 включает в себя один или более процессоров 820, одно или более машиночитаемых RAM 822 и одно или более машиночитаемых ROM 824 на одной или более шинах 826, одну или более операционных систем 828 и одно или более машиночитаемых физических устройств 830 хранения.[50] Computer 102 (FIG. 1) and server computer 114 (FIG. 1) may include respective sets of internal components 800A, B and external components 900A, B shown in FIG. 5. Each of the sets of internal components 800 includes one or more processors 820, one or more computer-readable RAM 822 and one or more computer-readable ROMs 824 on one or more buses 826, one or more operating systems 828, and one or more computer-readable physical storage devices 830 .
[51] Процессор 820 реализован в аппаратном обеспечении, встроенном программном обеспечении или комбинации аппаратного обеспечения и программного обеспечения. Процессор 820 представляет собой центральный процессор (CPU), графический процессор (GPU), ускоренный процессор (APU), микропроцессор, микроконтроллер, процессор цифровой обработки сигналов (DSP), программируемую пользователем вентильную матрицу (FPGA), специализированную интегральную схему (ASIC) или компонент обработки другого типа. В некоторых реализациях процессор 820 включает в себя один или более процессоров, которые могут быть программированы для выполнения функции. Шина 826 включает в себя компонент, обеспечивающий коммуникацию между внутренними компонентами 800A, B.[51] The processor 820 is implemented in hardware, firmware, or a combination of hardware and software. The 820 processor is a central processing unit (CPU), graphics processing unit (GPU), accelerated processing unit (APU), microprocessor, microcontroller, digital signal processor (DSP), field programmable gate array (FPGA), application specific integrated circuit (ASIC), or component other type of processing. In some implementations, processor 820 includes one or more processors that can be programmed to perform a function. Bus 826 includes a component that provides communication between internal components 800A, B.
[52] Одна или более операционных систем 828, программа 108 системы программного обеспечения (фиг.1) и Программа 116 Сжатия Облака Точек (фиг.1) на серверном компьютере 114 (фиг.1) хранятся на одном или более из соответствующих машиночитаемых физических устройств 830 хранения для выполнения одним или более соответствующими процессорами 820 с использованием одного или более соответствующих RAM 822 (обычно включающих в себя кэш-память). В варианте осуществления, показанном на фиг.5, каждое из машиночитаемых физических устройств 830 хранения представляет собой устройство хранения на магнитных дисках внутреннего жесткого диска. Как альтернатива, каждое из машиночитаемых физических устройств 830 хранения представляет собой полупроводниковое устройство хранения, такое как ROM 824, EPROM, флэш-память, оптический диск, магнитооптический диск, твердотельный диск, компакт-диск (CD), цифровой универсальный диск (DVD), дискета, картридж, магнитная лента и/или невременное машиночитаемое физическое устройство хранения другого типа, которое может хранить компьютерную программу и цифровую информацию.[52] One or more operating systems 828, software system program 108 (FIG. 1), and Point Cloud Compression Program 116 (FIG. 1) on server computer 114 (FIG. 1) are stored on one or more of respective machine-readable physical devices. storage 830 for execution by one or more respective processors 820 using one or more respective RAMs 822 (typically including cache memory). In the embodiment shown in FIG. 5, each of the computer-readable physical storage devices 830 is an internal hard drive magnetic disk storage device. Alternatively, each of the machine-readable physical storage devices 830 is a semiconductor storage device such as ROM 824, EPROM, flash memory, optical disk, magneto-optical disk, solid state disk, compact disc (CD), digital versatile disk (DVD), floppy disk, cartridge, magnetic tape, and/or other type of non-transitory machine-readable physical storage device that can store a computer program and digital information.
[53] Каждый набор внутренних компонентов 800A, B также включает в себя привод или интерфейс 832 чтения/записи для чтения из и записи на одно или более переносных машиночитаемых физических устройств 936 хранения, таких как CD-ROM, DVD, карта памяти, магнитная лента, магнитный диск, оптический диск или полупроводниковое устройство хранения. Программа системы программного обеспечения, такая как программа 108 системы программного обеспечения (фиг.1) и Программа 116 Сжатия Облака Точек (фиг.1), может храниться на одном или более соответствующих переносных машиночитаемых физических устройствах 936 хранения, считываемых с использованием соответствующего привода или интерфейса 832 чтения/записи и загружаемых на соответствующий жесткий диск 830.[53] Each set of internal components 800A, B also includes a drive or read/write interface 832 for reading from and writing to one or more portable computer-readable physical storage devices 936, such as a CD-ROM, DVD, memory card, magnetic tape , magnetic disk, optical disk, or semiconductor storage device. A software system program, such as a software system program 108 (FIG. 1) and a Point Cloud Compression Program 116 (FIG. 1), may be stored on one or more suitable portable machine-readable physical storage devices 936 readable using a suitable drive or interface. 832 read/write and bootable to the corresponding 830 hard drive.
[54] Каждый набор внутренних компонентов 800A, B также включает в себя сетевые адаптеры или интерфейсы 836, такие как адаптерные платы TCP/IP; платы беспроводного интерфейса Wi-Fi; платы беспроводного интерфейса 3G, 4G или 5G, или другие проводные или беспроводные коммуникационные каналы. Программа 108 системы программного обеспечения (фиг.1) и Программа 116 Сжатия Облака Точек (фиг.1) на серверном компьютере 114 (фиг.1) могут быть загружены в компьютер 102 (фиг.1) и серверный компьютер 114 из внешнего компьютера через сеть (например, Интернет, локальная сеть или другая глобальная сеть) и соответствующие сетевые адаптеры или интерфейсы 836. Из сетевых адаптеров или интерфейсов 836, программа 108 системы программного обеспечения и Программа 116 Сжатия Облака Точек на серверном компьютере 114 загружается в соответствующий жесткий диск 830. Сеть может содержать медные провода, оптические волокна, беспроводную передачу, маршрутизаторы, брандмауэры, коммутаторы, шлюзовые компьютеры и/или пограничные серверы.[54] Each set of internal components 800A, B also includes network adapters or interfaces 836, such as TCP/IP adapter cards; Wi-Fi wireless interface cards; 3G, 4G or 5G wireless interface cards, or other wired or wireless communication channels. The software system program 108 (FIG. 1) and the Point Cloud Compression Program 116 (FIG. 1) on the server computer 114 (FIG. 1) can be loaded into the computer 102 (FIG. 1) and the server computer 114 from an external computer via the network. (e.g., the Internet, a local area network, or other wide area network) and corresponding network adapters or interfaces 836. From the network adapters or interfaces 836, the software system program 108 and the Point Cloud Compression Program 116 on the server computer 114 are loaded into the corresponding hard drive 830. Network may contain copper wires, optical fibers, wireless transmission, routers, firewalls, switches, gateway computers, and/or edge servers.
[55] Каждый из наборов внешних компонентов 900A, B может включать в себя компьютерный экранный монитор 920, клавиатуру 930 и компьютерную мышь 934. Внешние компоненты 900A, B также могут включать в себя сенсорные экраны, виртуальные клавиатуры, сенсорные панели, указывающие устройства и другие устройства с человеческим интерфейсом. Каждый из наборов внутренних компонентов 800A, B также включает в себя драйверы 840 устройств для взаимодействия с компьютерным экранным монитором 920, клавиатурой 930 и компьютерной мышью 934. Драйверы 840 устройств, привод или интерфейс 832 чтения/записи и сетевой адаптер или интерфейс 836 содержат аппаратное обеспечение и программное обеспечение (хранящееся в устройстве 830 хранения и/или ROM 824).[55] Each of the sets of external components 900A, B may include a computer screen monitor 920, a keyboard 930, and a computer mouse 934. The external components 900A, B may also include touch screens, virtual keyboards, touchpads, pointing devices, and others. devices with human interface. Each of the sets of internal components 800A, B also includes device drivers 840 for interfacing with the computer screen monitor 920, keyboard 930, and computer mouse 934. Device drivers 840, read/write drive or interface 832, and network adapter or interface 836 contain hardware and software (stored in storage device 830 and/or ROM 824).
[56] Понятно заранее, что, хотя это изобретение включает в себя подробное описание облачных вычислений, реализация упомянутых в данном документе идей не ограничивается средой облачных вычислений. Напротив, некоторые варианты осуществления могут быть реализованы в сочетании с вычислительной средой любого другого типа, известной в настоящее время или которая будет разработана позже.[56] It is understood in advance that although this invention includes a detailed description of cloud computing, the implementation of the ideas mentioned herein is not limited to the cloud computing environment. In contrast, some embodiments may be implemented in combination with any other type of computing environment currently known or later developed.
[57] Облачные вычисления являются моделью предоставления услуг для обеспечения удобного сетевого доступа по запросу к общему пулу конфигурируемых вычислительных ресурсов (например, сети, пропускная способность сети, серверы, обработка, запоминающее устройство, хранилище, приложения, виртуальные машины и услуги), которые могут быть быстро предоставлены и отозваны с минимальными усилиями по управлению или взаимодействию с поставщиком услуги. Эта облачная модель может включать в себя по меньшей мере пять характеристик, по меньшей мере три модели услуг и по меньшей мере четыре модели развертывания.[57] Cloud computing is a service delivery model for providing convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, storage, storage, applications, virtual machines, and services) that can be quickly granted and withdrawn with minimal management effort or interaction with the service provider. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
[58] Характеристики включают в себя следующее:[58] Characteristics include the following:
Самообслуживание по запросу: пользователь облака может в одностороннем порядке предоставлять вычислительные возможности, такие как время сервера и сетевое хранилище, по необходимости автоматически, без необходимости взаимодействия человека с поставщиком услуг.On-demand self-service: The cloud user can unilaterally provision computing capabilities such as server time and network storage as needed automatically, without the need for human interaction with the service provider.
Широкий сетевой доступ: возможности могут быть доступны по сети и доступны через стандартные механизмы, способствующие использованию посредством гетерогенных платформ маломощных или полнофункциональных клиентов (например, мобильные телефоны, ноутбуки и PDA).Broad network access: Capabilities can be networked and accessed through standard mechanisms, facilitating use across heterogeneous platforms of low-power or full-featured clients (eg, mobile phones, laptops, and PDAs).
Объединение ресурсов: вычислительные ресурсы поставщика объединяются для обслуживания нескольких пользователей с использованием многопользовательской модели, при этом различные физические и виртуальные ресурсы динамически назначаются и переназначаются в соответствии с потребностями. Существует чувство независимости от местоположения в том смысле, что пользователь в целом не обладает контролем или знаниями о точном местоположении предоставляемых ресурсов, но он может задавать местоположение на более высоком уровне абстракции (например, страна, государство или центр обработки данных).Resource Pooling: The provider's computing resources are pooled to serve multiple users using a multi-tenant model, with various physical and virtual resources dynamically assigned and reassigned according to demand. There is a sense of location independence in the sense that the user generally has no control or knowledge of the exact location of the resources being provided, but can specify the location at a higher level of abstraction (e.g., country, state, or data center).
Быстрая адаптивность: возможности могут быть предоставлены быстро и адаптивно, в некоторых случаях автоматически, для быстрого горизонтального масштабирования с увеличением производительности и быстро отозваны для быстрого горизонтального масштабирования с уменьшением производительности. Для пользователя доступные для предоставления возможности часто кажутся неограниченными и могут быть приобретены в любом количестве в любое время.Fast Adaptability: Capabilities can be provisioned quickly and adaptively, in some cases automatically, to quickly scale out with increased performance, and quickly withdrawn to scale out quickly with decreased performance. To the user, the capabilities available to provide often appear unlimited and can be purchased in any quantity at any time.
Измеряемая услуга: облачные системы автоматически контролируют и оптимизируют использование ресурсов за счет эффективного использования возможности измерения на некотором уровне абстракции, соответствующем типу услуги (например, хранение, обработка, пропускная способность и активные учетные записи пользователей). Использование ресурсов можно отслеживать, контролировать и указывать в отчетах, что обеспечивает прозрачность как для поставщика, так и для пользователя используемой услуги.Metered Service: Cloud systems automatically monitor and optimize resource usage by leveraging the ability to measure at some level of abstraction appropriate to the service type (e.g., storage, processing, throughput, and active user accounts). Resource usage can be tracked, monitored and reported, providing transparency to both the provider and the user of the service being used.
[59] Модели услуг включают в себя следующие:[59] Service models include the following:
Программное Обеспечение как Услуга (SaaS): возможность, предоставляемая пользователю, заключается в использовании приложений поставщика, работающих в облачной инфраструктуре. Приложения доступны с различных клиентских устройств через интерфейс маломощного клиента, такой как веб-браузер (например, веб-служба электронной почты). Пользователь не управляет или не контролирует базовую облачную инфраструктуру, включая сеть, серверы, операционные системы, хранилище или даже возможности отдельных приложений, с возможным исключением задаваемых пользователем ограниченных параметров конфигурации приложения.Software as a Service (SaaS): The ability provided to the user is to use the provider's applications running on a cloud infrastructure. Applications are accessible from various client devices through a low-power client interface such as a web browser (for example, a web-based email service). The user does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of user-defined limited application configuration options.
Платформа как Услуга (PaaS): эта возможность, предоставляемая пользователю, заключается в развертывании в облачной инфраструктуре приложений, созданных или приобретенных пользователем, созданных с использованием языков программирования и инструментов, поддерживаемых поставщиком. Пользователь не управляет или не контролирует базовую облачную инфраструктуру, включая сети, серверы, операционные системы или хранилище, но обладает контролем над развернутыми приложениями и, возможно, конфигурациями среды размещения приложений.Platform as a Service (PaaS): This capability provided to the user is to deploy applications built or purchased by the user, built using programming languages and tools supported by the vendor, onto a cloud infrastructure. The user does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over deployed applications and possibly application hosting environment configurations.
Инфраструктура как Услуга (laaS): эта возможность, предоставляемая пользователю, заключается в предоставлении обработки, хранения, сетей и других основных вычислительных ресурсов, в которых пользователь может развертывать и запускать произвольное программное обеспечение, которое может включать в себя операционные системы и приложения. Пользователь не управляет или не контролирует базовую облачную инфраструктуру, но обладает контролем над операционными системами, хранилищем, развернутыми приложениями и, возможно, ограниченным контролем над отдельными сетевыми компонентами (например, хостовый брандмауэр).Infrastructure as a Service (laaS): This capability provided to the user is to provide processing, storage, networks and other core computing resources on which the user can deploy and run arbitrary software, which may include operating systems and applications. The user does not manage or control the underlying cloud infrastructure, but does have control over operating systems, storage, deployed applications, and perhaps limited control over individual network components (such as the host firewall).
[60] Существуют следующие модели развертывания:[60] The following deployment models are available:
Частное облако: облачная инфраструктура используется исключительно для организации. Оно может управляться организацией или третьей стороной и может существовать как в локальной среде, так вне локальной среды.Private Cloud: Cloud infrastructure is used exclusively for the organization. It can be managed by an organization or a third party and can exist either on-premises or off-premises.
Коллективное облако: облачная инфраструктура распределяется между несколькими организациями и поддерживает специальное сообщество, разделяющее общие интересы (например, миссия, требования безопасности, политика и соображения соответствия). Оно может управляться организациями или третьей стороной и может существовать как в локальной среде, так вне локальной среды.Community Cloud: Cloud infrastructure is shared across multiple organizations and supports a dedicated community that shares common interests (e.g., mission, security requirements, policy, and compliance considerations). It can be managed by organizations or a third party and can exist either on-premises or off-premises.
Общедоступное облако: инфраструктура облака предоставляется широкому кругу лиц или крупной отраслевой группе и принадлежит организации, продающей облачные услуги.Public cloud: The cloud infrastructure is made available to the public or a large industry group and is owned by the organization that sells the cloud services.
Гибридное облако: инфраструктура облака представляет собой образование из двух или более облаков (частное, коллективное или общедоступное), остающихся уникальными объектами, но связанных вместе стандартизированной или проприетарной технологией, обеспечивающей переносимость данных и приложений (например, выход в облако для баланса нагрузки между облаками).Hybrid cloud: A cloud infrastructure is made up of two or more clouds (private, community, or public) that remain unique entities but are linked together by standardized or proprietary technology to enable data and application portability (e.g., cloud egress for load balancing across clouds) .
[61] Среда облачных вычислений ориентирована на сервисы с акцентом на бесструктурность, слабое связывание, модульность и семантическую интероперабельность. В основе облачных вычислений лежит инфраструктура, содержащая сеть взаимосвязанных узлов.[61] The cloud computing environment is service-oriented with an emphasis on structurelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure containing a network of interconnected nodes.
[62] На фиг.6 изображена иллюстративная среда 600 облачных вычислений. Как показано, среда 600 облачных вычислений содержит один или более узлов 10 облачных вычислений, с которыми могут коммуницировать локальные вычислительные устройства, используемые пользователями облака, такие как, например, персональный цифровой помощник (PDA) или сотовый телефон 54A, настольный компьютер 54B, портативный компьютер 54C, и/или автомобильная компьютерная система 54N. Узлы 10 облачных вычислений могут коммуницировать друг с другом. Они могут быть группированы (не показано) физически или виртуально в одной или более сетях, таких как частные, коллективные, общедоступные или гибридные облака, как описано выше, или их комбинация. Это позволяет среде 600 облачных вычислений предлагать инфраструктуру, платформы и/или программное обеспечение как услуги, для которых пользователю облачных вычислений не нужно поддерживать ресурсы на локальном вычислительном устройстве. Понятно, что типы вычислительных устройств 54A-N, показанных на фиг.6, предназначены только для иллюстрации, и что узлы 10 облачных вычислений и среда 600 облачных вычислений могут коммуницировать с компьютеризированным устройством любого типа по сети и/или сетевому адресуемому соединению любого типа (например, с использованием веб-браузера).[62] FIG. 6 depicts an example cloud computing environment 600. As shown, cloud computing environment 600 includes one or more cloud computing nodes 10 with which local computing devices used by cloud users, such as, for example, a personal digital assistant (PDA) or cell phone 54A, desktop computer 54B, laptop computer, can communicate. 54C, and/or automotive computer system 54N. The cloud computing nodes 10 can communicate with each other. They may be grouped (not shown) physically or virtually in one or more networks, such as private, community, public or hybrid clouds as described above, or a combination thereof. This allows the cloud computing environment 600 to offer infrastructure, platforms, and/or software as services for which the cloud user does not need to maintain resources on a local computing device. It will be understood that the types of computing devices 54A-N shown in FIG. 6 are for illustration purposes only, and that cloud computing nodes 10 and cloud computing environment 600 may communicate with any type of computerized device over any type of network and/or network addressable connection ( for example using a web browser).
[63] Со ссылкой на фиг.7 изображен набор уровней 700 функциональной абстракции, предоставляемых средой 600 облачных вычислений (фиг.6). Следует заранее понимать, как предполагается, что показанные на фиг.7 компоненты, уровни и функции являются лишь иллюстративными, и варианты осуществления не ограничиваются ими. Как показано, предусмотрены следующие уровни и соответствующие функции:[63] Referring to FIG. 7, depicts a set of functional abstraction layers 700 provided by a cloud computing environment 600 (FIG. 6). It should be understood in advance that it is intended that the components, layers, and functions shown in FIG. 7 are merely illustrative and the embodiments are not limited to them. As shown, the following levels and corresponding functions are provided:
[64] Уровень 60 аппаратного обеспечения и программного обеспечения включает в себя компоненты аппаратного обеспечения и программного обеспечения. Примеры аппаратных компонентов включают в себя: мэйнфреймы 61; серверы 62 на основе архитектуры RISC (компьютер с сокращенным набором команд); серверы 63; блейд-серверы 64; устройства 65 хранения; и сети и сетевые компоненты 66. В некоторых вариантах осуществления компоненты программного обеспечения включают в себя программное обеспечение 67 сервера сетевых приложений и программное обеспечение 68 базы данных.[64] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include: mainframes 61; servers 62 based on RISC (reduced instruction set computer) architecture; servers 63; blade servers 64; storage devices 65; and networks and network components 66. In some embodiments, the software components include network application server software 67 and database software 68.
[65] Уровень 70 виртуализации обеспечивает уровень абстракции, из которого могут быть представлены следующие примеры виртуальных объектов: виртуальные серверы 71; виртуальное хранилище 72; виртуальные сети 73, включая виртуальные частные сети; виртуальные приложения и операционные системы 74; и виртуальные клиенты 75.[65] Virtualization layer 70 provides an abstraction layer from which the following examples of virtual objects can be represented: virtual servers 71; virtual storage 72; virtual networks 73, including virtual private networks; virtual applications and operating systems 74; and virtual clients 75.
[66] В одном примере уровень 80 управления может предоставлять описанные ниже функции. Предоставление 81 ресурсов обеспечивает динамическую поставку вычислительных ресурсов и других ресурсов, используемых для выполнения задач в среде облачных вычислений. Измерение и Определение 82 стоимости обеспечивает отслеживание затрат по мере использования ресурсов в среде облачных вычислений, и формирование счетов или выставление счетов за потребление этих ресурсов. В одном примере эти ресурсы могут содержать лицензии на прикладное программное обеспечение. Безопасность обеспечивает верификацию идентичности для пользователей облака и задач, а также защиту для данных и других ресурсов. Пользовательский портал 83 обеспечивает доступ к среде облачных вычислений для пользователей и системных администраторов. Управление 84 уровнем обслуживания предоставляет распределение ресурсов облачных вычислений и управление так, чтобы обеспечить соблюдение требуемых уровней обслуживания. Планирование и выполнение 85 Соглашения об Уровне Услуг (SLA) предусматривает предварительную организацию и закупку ресурсов облачных вычислений, для которых ожидается будущее требование в соответствии с SLA.[66] In one example, control layer 80 may provide the functions described below. Resource provisioning 81 enables the dynamic provision of computing resources and other resources used to perform tasks in a cloud computing environment. Measuring and Defining 82 Cost allows you to track costs as resources are used in a cloud computing environment, and generate bills or invoices for the consumption of those resources. In one example, these resources may contain application software licenses. Security provides identity verification for cloud users and tasks, as well as protection for data and other resources. The user portal 83 provides access to the cloud computing environment for users and system administrators. Service level management 84 provides cloud computing resource allocation and management to ensure that required service levels are met. Planning and Execution 85 Service Level Agreement (SLA) involves the pre-arrangement and procurement of cloud computing resources for which future demand is expected according to the SLA.
[67] Уровень 90 рабочих нагрузок предоставляет примеры функциональности, для которой может использоваться среда облачных вычислений. Примеры рабочих нагрузок и функций, которые могут быть представлены на этом уровне, включают в себя: составление карт и навигацию 91; разработка программного обеспечения и управление 92 жизненным циклом; предоставление 93 обучения в виртуальной аудитории; аналитическая обработка 94 данных; обработка 95 транзакций; и Сжатие 96 Облака Точек. Сжатие 96 Облака Точек может уменьшить расширенный набор соседних узлов для текущего узла для сжатия и распаковки данных облака точек.[67] Workload Level 90 provides examples of functionality for which a cloud computing environment can be used. Examples of workloads and functions that may be present at this layer include: mapping and navigation 91; software development and 92 life cycle management; providing 93 virtual classroom training; analytical processing of 94 data; processing 95 transactions; and Compress 96 Point Clouds. Point Cloud Compression 96 can reduce an extended set of neighbors for the current node to compress and decompress point cloud data.
[68] Некоторые варианты осуществления могут относиться к системе, способу и/или машиночитаемому носителю на любом возможном уровне технических деталей интеграции. Машиночитаемый носитель может включать в себя машиночитаемый невременной носитель данных (или носители), содержащий машиночитаемые программные инструкции на нем, предписывать процессору выполнять операции.[68] Some embodiments may relate to a system, method, and/or computer-readable medium at any possible level of technical integration details. A computer-readable medium may include a computer-readable non-transitory storage medium (or media) containing computer-readable program instructions thereon that cause a processor to perform operations.
[69] Машиночитаемый носитель может представлять собой физическое устройство, которое может сохранять и хранить инструкции для использования устройством выполнения инструкций. Машиночитаемый носитель данных может представлять собой, например, но без ограничения этим, электронное запоминающее устройство, магнитное запоминающее устройство, оптическое запоминающее устройство, электромагнитное запоминающее устройство, полупроводниковое запоминающее устройство или любую подходящую комбинацию вышеуказанного. Неисчерпывающий список более конкретных примеров машиночитаемого носителя данных включает в себя следующее: переносная компьютерная дискета, жесткий диск, оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), стираемое программируемое постоянное запоминающее устройство (EPROM или флэш-память), статическое запоминающее устройство с произвольной выборкой (SRAM), переносное постоянное запоминающее устройство на компакт-дисках (CD-ROM), универсальный цифровой диск (DVD), карта памяти, дискета, механически кодированное устройство, такое как перфокарты или выпуклые структуры в канавке с записанными на них инструкциями, и любая подходящая комбинация вышеуказанного. Машиночитаемый носитель данных, используемый в данном документе, не следует рассматривать как представляющий собой собственно временные сигналы, такие как радиоволны или другие свободно распространяющиеся электромагнитные волны, электромагнитные волны, распространяющиеся через волновод или другую передающую среду (например, световые импульсы, проходящие через волоконно-оптический кабель) или электрические сигналы, передаваемые по проводам.[69] A computer-readable medium may be a physical device that can store 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: portable computer diskette, hard disk, random access memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM or flash memory), static storage device random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory card, floppy disk, mechanically encoded device such as punch cards or raised structures in a groove with instructions written on them , and any suitable combination of the above. The computer-readable storage medium used herein should not be construed as representing intrinsically transient signals, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (for example, light pulses passing through a fiber optic cable) or electrical signals transmitted through wires.
[70] Машиночитаемые программные инструкции, описанные в данном документе, могут быть загружены на соответствующие вычислительные/обрабатывающие устройства с машиночитаемого носителя данных или на внешний компьютер, или внешнее устройство хранение через сеть, например Интернет, локальную сеть, глобальную сеть и/или беспроводную сеть. Сеть может содержать медные кабели передачи, оптические волокна передачи, беспроводную передачу, маршрутизаторы, брандмауэры, коммутаторы, шлюзовые компьютеры и/или пограничные серверы. Плата сетевого адаптера или сетевой интерфейс в каждом вычислительном/обрабатывающем устройстве получает машиночитаемые программные инструкции из сети и пересылает машиночитаемые программные инструкции для хранения на машиночитаемом носителе данных в соответствующем вычислительном/обрабатывающем устройстве.[70] The computer-readable program instructions described herein may be downloaded to appropriate computing/processing devices from a computer-readable storage medium or to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and/or a wireless network. . The network may contain copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, and/or edge servers. The network adapter card or network interface in each computing/processing device receives computer-readable program instructions from the network and forwards the computer-readable program instructions for storage on a computer-readable storage medium in the corresponding computing/processing device.
[71] Машиночитаемый программный код/инструкции для выполнения операций могут представлять собой инструкции ассемблера, инструкции архитектуры набора команд (ISA), машинные инструкции, машинно-зависимые инструкции, микрокод, инструкции встроенного программного обеспечения, данные настройки состояния, данные конфигурации для интегральной схемы или исходный код, или объектный код, написанный на любой комбинации одного или более языков программирования, включая объектно-ориентированный язык программирования, такой как Smalltalk, C++ и т.п., и процедурные языки программирования, такие как язык программирования «С» или сходные языки программирования. Машиночитаемые программные инструкции могут выполняться полностью на компьютере пользователя, частично на компьютере пользователя, как изолированный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере или полностью на удаленном компьютере или сервере. В последнем сценарии удаленный компьютер может быть соединен с компьютером пользователя через сеть любого типа, включая локальную сеть (LAN) или глобальную сеть (WAN), или соединение может быть выполнено с внешним компьютером (например, через Интернет с использованием поставщика Интернет-сервиса). В некоторых вариантах осуществления электронные схемы, включая, например, программируемые логические схемы, программируемые пользователем вентильные матрицы (FPGA) или программируемые логические матрицы (PLA), могут выполнять машиночитаемые программные инструкции за счет использования информации состояния машиночитаемых программных инструкций для настойки электронной схемы для выполнения аспектов или операции.[71] The machine-readable program code/instructions for performing operations may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source code, or object code, written in any combination of one or more programming languages, including an object-oriented programming language such as Smalltalk, C++, etc., and procedural programming languages such as the C programming language or similar languages programming. The machine-readable software instructions may be executed entirely on the user's computer, partially on the user's computer 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 scenario, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or wide area network (WAN), or the connection can be made to an external computer (for example, over the Internet using an Internet service provider). In some embodiments, electronic circuits, including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable gate arrays (PLAs), can execute computer-readable program instructions by using state information of the computer-readable program instructions to configure the electronic circuit to execute aspects or operations.
[72] Эти машиночитаемые программные инструкции могут быть переданы процессору компьютера общего назначения, компьютера специального назначения или другого программируемого устройства обработки данных для создания машины, так что инструкции, выполняемые процессором компьютера или другого программируемого устройства обработки данных, создают средства для реализации функций/действий, указанных в блок-схеме и/или блоке или блоках структурной схемы. Эти машиночитаемые программные инструкции также могут храниться на машиночитаемом носителе данных, который может управлять компьютером, программируемым устройством обработки данных и/или другими устройствами для функционирования определенным образом, так что машиночитаемый носитель данных, содержащий инструкции, хранящиеся на нем, содержит готовое изделие, включая инструкции, реализующие аспекты функции/действия, указанных в блок-схеме и/или блоке или блоках структурной схемы.[72] These machine-readable program instructions may be transmitted to a processor of a general purpose computer, special purpose computer, or other programmable data processing device to create a machine, such that the instructions executed by the processor of the computer or other programmable data processing device create the means for implementing the functions/actions indicated in the block diagram and/or block or blocks of the block diagram. These computer-readable program instructions may also be stored on a computer-readable storage medium that can control a computer, programmable data processing device, and/or other devices to operate in a particular manner, such that the computer-readable storage medium containing the instructions stored thereon contains a finished product, including the instructions , implementing aspects of the function/action specified in the block diagram and/or block or blocks of the block diagram.
[73] Машиночитаемые программные инструкции также могут быть загружены в компьютер, другое программируемое устройство обработки данных или другое устройство, чтобы вызывать выполнение ряда операционных этапов на компьютере, другом программируемом устройстве или другом устройстве для создания реализуемого компьютером процесса, так что инструкции, выполняемые на компьютере, другом программируемом устройстве или другом устройстве, реализуют функции/действия, указанные в блок-схеме и/или блоке или блоках структурной схемы.[73] Machine-readable program instructions may also be loaded onto a computer, other programmable data processing device, or other device to cause a number of operational steps to be executed on the computer, other programmable device, or other device to create a computer-implemented process such that the instructions are executable on the computer , another programmable device, or other device, implement the functions/actions specified in the block diagram and/or block diagram block or blocks.
[74] Блок-схема и структурные схемы на чертежах иллюстрируют архитектуру, функциональность и работу возможных реализаций систем, способов и машиночитаемых носителей согласно различным вариантам осуществления. В этом отношении каждый блок в блок-схеме или структурных схемах может представлять модуль, сегмент или часть инструкций, содержащую одну или более выполняемых инструкций для реализации заданной логической функции (функций). Способ, компьютерная система и машиночитаемый носитель могут включать в себя дополнительные блоки, меньшее количество блоков, различные блоки или блоки, расположенные иначе, чем изображенные на чертежах. В некоторых альтернативных реализациях, функции, указанные в блоках, могут появляться не в порядке, указанном на чертежах. Например, два блока, показанные последовательно, могут фактически выполняться одновременно или по существу одновременно, или блоки могут иногда выполняться в обратном порядке, в зависимости от задействованной функциональности. Также следует отметить, что каждый блок структурных схем и/или изображения блок-схем, а также комбинации блоков в структурных схемах и/или изображении блок-схем могут быть реализованы с помощью ориентированных на аппаратное обеспечение систем специального назначения, выполняющих заданные функции или действия, или выполняющих комбинации аппаратных и компьютерных инструкций специального назначения.[74] The block diagram and block diagrams in the drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer-readable media in accordance with various embodiments. In this regard, each block in a block diagram or block diagrams may represent a module, segment, or part of instructions containing one or more executable instructions to implement specified logical function(s). The method, computer system, and computer-readable media may include additional blocks, fewer blocks, different blocks, or blocks arranged differently than those depicted in the drawings. In some alternative implementations, the functions shown in the blocks may not appear in the order shown in the drawings. For example, two blocks shown sequentially may actually execute simultaneously or substantially simultaneously, or the blocks may sometimes execute in reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and/or block diagram images, as well as combinations of blocks in the block diagrams and/or block diagram images, can be implemented using special purpose hardware-oriented systems that perform specified functions or actions, or executing combinations of hardware and computer instructions for special purposes.
[75] Понятно, что системы и/или способы, описанные в данном документе, могут быть реализованы в различных формах аппаратного обеспечения, встроенного программного обеспечения или комбинации аппаратного обеспечения и программного обеспечения. Фактический специализированный аппаратный или программный код управления, используемый для реализации этих систем и/или способов, не ограничивает реализации. Таким образом, работа и поведение систем и/или способов были описаны в данном документе без ссылки на конкретный программный код - при этом понятно, что программное обеспечение и аппаратное обеспечение могут быть разработаны для реализации систем и/или способов на основе описания в данном документе.[75] It is understood that the systems and/or methods described herein may be implemented in various forms of hardware, firmware, or combinations of hardware and software. The actual specialized hardware or software control code used to implement these systems and/or methods does not limit the implementation. Thus, the operation and behavior of the systems and/or methods have been described herein without reference to specific software code - it being understood that software and hardware may be developed to implement the systems and/or methods based on the descriptions herein.
[76] Никакие элемент, действие или инструкция, используемые в данном документе, не должны рассматриваться как критичные или существенные, если явно не описаны как таковые. Также подразумевается, что единственное число, используемое в данном документе, включает в себя один или более элементов и может использоваться взаимозаменяемо с «одним или более». Кроме того, подразумевается, что используемое в данном документе выражение «набор» включает в себя один или более элементов (например, связанных элементов, несвязанных элементов, комбинации связанных и несвязанных элементов и т.д.), и может использоваться взаимозаменяемо с «один или более». Если подразумевается только один элемент, используется выражение «один» или сходное выражение. Также подразумевается, что используемые в данном документе выражения «имеет», «иметь», «имеющий» и т.п. являются неограничивающими выражениями. Кроме того, подразумевается, что выражение «на основе» обозначает «основанный, по меньшей мере частично, на», если явно не указано иное.[76] No item, action or instruction used in this document should be considered critical or essential unless expressly described as such. It is also intended that the singular number as used herein includes one or more elements and may be used interchangeably with “one or more.” Additionally, as used herein, the expression “set” is intended to include one or more elements (e.g., related elements, unrelated elements, a combination of related and unrelated elements, etc.), and may be used interchangeably with “one or more". If only one element is intended, the expression "one" or similar expression is used. It is also intended that the expressions “has,” “have,” “having,” and the like, when used herein. are non-limiting expressions. In addition, the expression “based on” is intended to mean “based at least in part on” unless expressly stated otherwise.
[77] Описания различных аспектов и вариантов осуществления были представлены для целей иллюстрации, однако подразумевается, что они не являются исчерпывающими или ограниченными раскрытыми вариантами осуществления. Несмотря на то, что комбинации признаков изложены в формуле изобретения и/или раскрыты в описании, подразумевается, что эти комбинации не ограничивают раскрытие возможных реализаций. Фактически, многие из этих признаков могут быть объединены способами, специально не указанными в формуле изобретения и/или раскрытыми в описании. Хотя каждый зависимый пункт формулы изобретения, приведенный ниже, может зависеть непосредственно только от одного пункта формулы изобретения, раскрытие возможных реализаций включает в себя каждый зависимый пункт в комбинации с каждым другим пунктом в пунктах формулы изобретения. Специалистам в данной области техники могут быть очевидны многочисленные модификации и изменения без выхода за рамки описанных вариантов осуществления. Используемая в данном документе терминология была выбрана для лучшего объяснения принципов вариантов осуществления, практического применения или технического усовершенствования в отношении технологий, доступных на рынке, или чтобы позволить другим специалистам в данной области техники понять раскрытые здесь варианты осуществления.[77] Descriptions of various aspects and embodiments have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Although combinations of features are set forth 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 may be combined in ways not specifically stated in the claims and/or disclosed in the specification. Although each dependent claim below may depend directly on only one claim, the disclosure of possible implementations includes each dependent claim in combination with each other claim within the claims. Numerous modifications and variations may be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein has been chosen to better explain the principles of embodiments, practical applications or technical advancements with respect to technologies available on the market, or to enable others skilled in the art to understand the embodiments disclosed herein.
Claims (30)
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US63/034,113 | 2020-06-03 | ||
| US63/066,099 | 2020-08-14 | ||
| US17/231,695 | 2021-04-15 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| RU2817735C1 true RU2817735C1 (en) | 2024-04-19 |
Family
ID=
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20130177069A1 (en) * | 2012-01-09 | 2013-07-11 | Texas Instruments Incorporated | Context Adaptive Binary Arithmetic Coding (CABAC) with Scalable Throughput and Coding Efficiency |
| US20150029186A1 (en) * | 2013-07-29 | 2015-01-29 | Google Inc. | Systems and Methods for Reducing a Data Set |
| US20190080483A1 (en) * | 2017-09-14 | 2019-03-14 | Apple Inc. | Point Cloud Compression |
| WO2019195920A1 (en) * | 2018-04-09 | 2019-10-17 | Blackberry Limited | Methods and devices for binary entropy coding of point clouds |
| RU2018115810A (en) * | 2017-05-04 | 2019-10-30 | Томсон Лайсенсинг | METHOD AND DEVICE FOR CODING AND DECODING TWO-DIMENSIONAL POINT CLOUDS |
| RU2721678C2 (en) * | 2015-11-11 | 2020-05-21 | Сони Корпорейшн | Encoding device and encoding method, decoding device and decoding method |
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20130177069A1 (en) * | 2012-01-09 | 2013-07-11 | Texas Instruments Incorporated | Context Adaptive Binary Arithmetic Coding (CABAC) with Scalable Throughput and Coding Efficiency |
| US20150029186A1 (en) * | 2013-07-29 | 2015-01-29 | Google Inc. | Systems and Methods for Reducing a Data Set |
| RU2721678C2 (en) * | 2015-11-11 | 2020-05-21 | Сони Корпорейшн | Encoding device and encoding method, decoding device and decoding method |
| RU2018115810A (en) * | 2017-05-04 | 2019-10-30 | Томсон Лайсенсинг | METHOD AND DEVICE FOR CODING AND DECODING TWO-DIMENSIONAL POINT CLOUDS |
| US20190080483A1 (en) * | 2017-09-14 | 2019-03-14 | Apple Inc. | Point Cloud Compression |
| WO2019195920A1 (en) * | 2018-04-09 | 2019-10-17 | Blackberry Limited | Methods and devices for binary entropy coding of point clouds |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12080035B2 (en) | Updates on context modeling of occupancy coding for point cloud coding | |
| JP7395740B2 (en) | Hash-based attribute prediction for point cloud coding | |
| AU2021257883B2 (en) | Context modeling of occupancy coding for pointcloud coding | |
| KR102860967B1 (en) | Hash-based access to geometry occupancy information for point cloud coding | |
| KR20220085837A (en) | Attribute coding of overlapping points for point cloud coding | |
| US12169953B2 (en) | Predictive tree-based geometry coding for a point cloud | |
| RU2817735C1 (en) | Occupancy coding context simulation for point cloud coding | |
| HK40070659A (en) | Hash-based accessing of geometry occupancy information for point cloud coding |