[go: up one dir, main page]

RU2799041C1 - Method and device for encoding point cloud - Google Patents

Method and device for encoding point cloud Download PDF

Info

Publication number
RU2799041C1
RU2799041C1 RU2021128295A RU2021128295A RU2799041C1 RU 2799041 C1 RU2799041 C1 RU 2799041C1 RU 2021128295 A RU2021128295 A RU 2021128295A RU 2021128295 A RU2021128295 A RU 2021128295A RU 2799041 C1 RU2799041 C1 RU 2799041C1
Authority
RU
Russia
Prior art keywords
nodes
point cloud
encoding
node
decoding
Prior art date
Application number
RU2021128295A
Other languages
Russian (ru)
Inventor
Сян ЧЖАН
Вэнь ГАО
Шань ЛЮ
Original Assignee
TEНСЕНТ АМЕРИКА ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TEНСЕНТ АМЕРИКА ЭлЭлСи filed Critical TEНСЕНТ АМЕРИКА ЭлЭлСи
Application granted granted Critical
Publication of RU2799041C1 publication Critical patent/RU2799041C1/en

Links

Images

Abstract

FIELD: data coding.
SUBSTANCE: method for restoring a point cloud from an encoded point cloud stream is to obtain the encoded busy codes for nodes in an octree structure for the point cloud from an encoded bit stream for a point cloud. The nodes in the octree structure correspond to three-dimensional sections of point cloud space. The node sizes are associated with the sizes of the corresponding 3D partitions. The busy codes for nodes are decoded from the encoded busy codes. At least a first busy code for a child node of the first node is decoded without waiting for decoding of a second busy code for a second node having the same node size as the first node. The octree structure is restored based on the decoded busy codes for the nodes, and the point cloud is restored based on the octree structure.
EFFECT: increase in the efficiency of encoded point cloud recovery.
18 cl, 18 dwg

Description

Включение посредством ссылкиInclusion by reference

[1] В настоящей заявке испрашивается приоритет по заявке на патент США № 17/063411 «СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК», поданной 5 октября 2020 г., в которой испрашивается приоритет по предварительной заявке США №62/942 549, «ПОРЯДОК ГИБРИДНОГО КОДИРОВАНИЯ ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК», поданной 2 декабря 2019 года. Полное раскрытие предшествующих заявок полностью включено в настоящее описание посредством ссылки.[1] This application claims priority over U.S. Patent Application No. 17/063411, "METHOD AND DEVICE FOR ENCODING POINT CLOUD", filed Oct. 5, 2020, which claims priority over U.S. Provisional Application No. 62/942,549, HYBRID ENCODING FOR POINT CLOUD ENCODING”, filed December 2, 2019. The entire disclosure of prior applications is incorporated herein by reference in its entirety.

Область техники, к которой относится изобретениеThe technical field to which the invention belongs

[2] Настоящее изобретение описывает варианты осуществления, в основном относящиеся к кодированию облака точек.[2] The present invention describes embodiments mainly related to point cloud encoding.

Уровень техникиState of the art

[3] Описание уровня техники, представленное в данном документе, предназначено для общего представления контекста изобретения. Работа названных в настоящее время изобретателей, в той мере, в какой она описана в этом разделе описания уровня техники, а также аспекты описания, которые в противном случае не могут считаться предшествующим уровнем техники на момент подачи заявки, ни прямо, ни косвенно не признаются в качестве предшествующего уровня техники в отношении настоящего изобретения.[3] Description of the prior art presented in this document is intended to provide a general presentation of the context of the invention. The work of the currently named inventors, to the extent that it is described in this section of the prior art description, as well as aspects of the description that would not otherwise be considered prior art at the time of filing, are neither expressly nor impliedly recognized in as prior art with respect to the present invention.

[4] Разрабатываются различные технологии для захвата и представления мира, например объектов в мире, окружающей среды в мире и т.п., в трехмерном (3D) пространстве. Трехмерные представления мира могут обеспечить более иммерсивные формы взаимодействия и общения. Облака точек могут использоваться как трехмерное представление мира. Облако точек - это набор точек в трехмерном пространстве, каждая из которых имеет ассоциированные атрибуты, например цвет, свойства материала, информацию о текстуре, атрибуты интенсивности, атрибуты отражательной способности, атрибуты, относящиеся к движению, атрибуты модальности и различные другие атрибуты. Такие облака точек могут включать в себя большие объемы данных, и их хранение и передача могут потребовать больших затрат времени и средств. Раскрытие сущности изобретения.[4] Various technologies are being developed to capture and represent the world, such as objects in the world, environments in the world, and the like, in three-dimensional (3D) space. Three-dimensional representations of the world can provide more immersive forms of interaction and communication. Point clouds can be used as a 3D representation of the world. A point cloud is a collection of points in 3D space, each of which has associated attributes such as color, material properties, texture information, intensity attributes, reflectivity attributes, motion-related attributes, modality attributes, and various other attributes. Such point clouds can contain large amounts of data, and their storage and transmission can be time and cost intensive. Disclosure of the essence of the invention.

[5] Аспекты раскрытия предусматривают способы и устройства для сжатия и распаковки облака точек. В некоторых примерах устройство для сжатия / распаковки облака точек включает в себя схему обработки. В некоторых вариантах осуществления схема обработки получает, из кодированного битового потока для облака точек, закодированные коды занятости для узлов в структуре октодерева для облака точек. Узлы в структуре октодерева соответствуют трехмерным (3D) разделам пространства облака точек. Размеры узлов ассоциированы с размерами соответствующих трехмерных разделов. Кроме того, схема обработки декодирует, из закодированных кодов занятости, коды занятости для узлов. По меньшей мере первый код занятости для дочернего узла первого узла декодируется без ожидания декодирования второго кода занятости для второго узла, имеющего тот же размер узла, что и первый узел. Затем схема обработки восстанавливает структуру октодерева на основе декодированных кодов занятости для узлов и восстанавливает облако точек на основе структуры октодерева.[5] Aspects of the disclosure provide methods and apparatus for compressing and decompressing a point cloud. In some examples, the device for compressing/decompressing a point cloud includes a processing circuit. In some embodiments, the processing circuit obtains, from the encoded bitstream for the point cloud, the encoded busy codes for the nodes in the octree structure for the point cloud. The nodes in the octree structure correspond to three-dimensional (3D) sections of point cloud space. The node sizes are associated with the sizes of the respective 3D partitions. In addition, the processing circuit decodes, from the encoded occupancy codes, the occupancy codes for the nodes. At least a first busy code for a child node of the first node is decoded without waiting for decoding of a second busy code for a second node having the same node size as the first node. The processing circuit then reconstructs the octree structure based on the decoded busy codes for the nodes, and reconstructs the point cloud based on the octree structure.

[6] В некоторых вариантах осуществления схема обработки декодирует первый набор кодов занятости для первого набора узлов в первом субоктодереве, причем первый узел является корнем первого субоктодерева, и декодирует второй набор кодов занятости для второго набора узлов во втором субоктодереве, причем второй узел является корнем второго субоктодерева. В одном варианте осуществления схема обработки декодирует первый набор кодов занятости для первого набора узлов в первом субоктодереве параллельно со вторым набором кодов занятости для второго набора узлов во втором субоктодереве.[6] In some embodiments, the processing circuit decodes a first set of occupancy codes for a first set of nodes in a first sub-octtree, the first node being the root of the first sub-octtree, and decodes a second set of occupancy codes for a second set of nodes in the second sub-octtree, the second node being the root of the second suboctree. In one embodiment, the processing circuit decodes the first set of busy codes for the first set of nodes in the first sub-octtree in parallel with the second set of busy codes for the second set of nodes in the second sub-octtree.

[7] В другом варианте осуществления схема обработки декодирует, с использованием первого режима кодирования, первый набор кодов занятости для первого набора узлов в первом субоктодереве и декодирует, с использованием второго режима кодирования, второй набор кодов занятости для второго набора узлов во втором субоктодереве. В одном примере схема обработки декодирует из кодированного битового потока первый индекс, который указывает первый режим кодирования для первого субоктодерева, и декодирует из кодированного битового потока второй индекс, который указывает второй режим кодирования для второго субоктодерева.[7] In another embodiment, the processing circuit decodes, using the first coding mode, the first set of occupancy codes for the first set of nodes in the first sub-octree, and decodes, using the second coding mode, the second set of occupancy codes for the second set of nodes in the second sub-octree. In one example, the processing circuit decodes from the encoded bitstream a first index that indicates the first encoding mode for the first sub-octree, and decodes from the encoded bitstream a second index that indicates the second encoding mode for the second sub-octree.

[8] В некоторых вариантах осуществления схема обработки декодирует первую часть кодов занятости для более крупных узлов в узлах с использованием первого порядка кодирования. Более крупные узлы больше конкретного размера узла для изменения порядка кодирования. Схема обработки декодирует вторую часть кодов занятости для меньших узлов в узлах, с использованием второго порядка кодирования, который отличается от первого порядка кодирования. Меньшие узлы равны или меньше конкретного размера узла для изменения порядка кодирования. В одном примере первый порядок кодирования является порядком кодирования в ширину, а второй порядок кодирования является порядком кодирования в глубину. В другом примере первый порядок кодирования является порядком кодирования в глубину, а второй порядок кодирования является порядком кодирования в ширину.[8] In some embodiments, the processing circuit decodes the first portion of busy codes for larger nodes in nodes using first order coding. Larger nodes larger than the specific node size to change the encoding order. The processing circuit decodes the second part of the busy codes for the smaller nodes in the nodes using a second coding order that is different from the first coding order. Smaller nodes are equal to or less than a specific node size to change the encoding order. In one example, the first encoding order is the width encoding order and the second encoding order is the depth encoding order. In another example, the first encoding order is depth-encoding order and the second encoding order is width-encoding order.

[9] В некоторых примерах схема обработки определяет конкретный размер узла для изменения порядка кодирования на основе сигнала в кодированном битовом потоке для облака точек. В одном примере схема обработки декодирует управляющий сигнал из кодированного битового потока для облака точек, и управляющий сигнал указывает на изменение порядка кодирования. Затем схема обработки декодирует сигнал и определяет конкретный размер узла для изменения порядка кодирования.[9] In some examples, the processing scheme determines a specific node size for reordering the coding based on the signal in the encoded bitstream for the point cloud. In one example, the processing circuit decodes a control signal from an encoded bitstream for a point cloud, and the control signal indicates a change in encoding order. The processing circuit then decodes the signal and determines the specific node size to change the encoding order.

[10] Аспекты раскрытия также предусматривают невременный машиночитаемый носитель, хранящий инструкции, которые при выполнении компьютером для кодирования / декодирования облака точек предписывают компьютеру выполнять любой один или комбинацию из способов для кодирования / декодирования облака точек. Краткое описание чертежей.[10] Aspects of the disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer to encode/decode a point cloud, cause the computer to perform any one or combination of methods to encode/decode a point cloud. Brief description of the drawings.

[11] Дополнительные признаки, сущность и различные преимущества раскрытого объекта изобретения будут более очевидны из следующего подробного описания и прилагаемых чертежей, на которых изображено следующее:[11] Additional features, essence and various advantages of the disclosed subject matter will be more apparent from the following detailed description and the accompanying drawings, which show the following:

[12] На фиг. 1 показана схематическая иллюстрация упрощенной блок-схемы системы связи в соответствии с вариантом осуществления;[12] FIG. 1 is a schematic illustration of a simplified block diagram of a communication system in accordance with an embodiment;

[13] На фиг. 2 показана схематическая иллюстрация упрощенной блок-схемы системы потоковой передачи в соответствии с вариантом осуществления;[13] FIG. 2 is a schematic illustration of a simplified block diagram of a streaming system according to an embodiment;

[14] На фиг. 3 показана блок-схема кодера для кодирования кадров облака точек согласно некоторым вариантам осуществления;[14] FIG. 3 is a block diagram of an encoder for encoding point cloud frames, in accordance with some embodiments;

[15] На фиг. 4 показана блок-схема декодера для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления;[15] FIG. 4 is a block diagram of a decoder for decoding a compressed bitstream corresponding to point cloud frames, in accordance with some embodiments;

[16] Фиг. 5 - схематическая иллюстрация упрощенной блок-схемы видеодекодера в соответствии с одним вариантом осуществления;[16] FIG. 5 is a schematic illustration of a simplified block diagram of a video decoder in accordance with one embodiment;

[17] На фиг. 6 показана схематическая иллюстрация упрощенной блок-схемы видеокодера в соответствии с вариантом осуществления;[17] FIG. 6 is a schematic illustration of a simplified block diagram of a video encoder according to an embodiment;

[18] На фиг. 7 показана блок-схема кодера для кодирования кадров облака точек согласно некоторым вариантам осуществления;[18] FIG. 7 is a block diagram of an encoder for encoding point cloud frames, in accordance with some embodiments;

[19] На фиг. 8 показана блок-схема декодера для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления;[19] FIG. 8 is a block diagram of a decoder for decoding a compressed bitstream corresponding to point cloud frames, in accordance with some embodiments;

[20] На фиг. 9 показана схема, иллюстрирующая разделение куба на основе техники разделения октодерева согласно некоторым вариантам осуществления настоящего раскрытия;[20] FIG. 9 is a diagram illustrating cube partitioning based on the octree partitioning technique according to some embodiments of the present disclosure;

[21] Фиг. 10 показывает пример разделения октодерева и структуры октодерева, соответствующей разделению октодерева, согласно некоторым вариантам осуществления изобретения;[21] FIG. 10 shows an example of an octree split and an octree structure corresponding to an octree split, according to some embodiments of the invention;

[22] Фиг. 11 показывает диаграмму структуры октодерева, иллюстрирующую порядок кодирования в ширину;[22] FIG. 11 shows an octree structure diagram illustrating a width-encoding order;

[23] Фиг. 12 показывает схему структуры октодерева, иллюстрирующую порядок кодирования в глубину;[23] FIG. 12 shows an octree structure diagram illustrating a depth-coding order;

[24] Фиг. 13 показывает пример синтаксиса набора параметров геометрии согласно некоторым вариантам осуществления изобретения;[24] FIG. 13 shows an example geometry parameter set syntax according to some embodiments of the invention;

[25] Фиг. 14 показывает другой пример синтаксиса набора параметров геометрии согласно некоторым вариантам осуществления изобретения;[25] FIG. 14 shows another example of geometry parameter set syntax according to some embodiments of the invention;

[26] Фиг. 15 показывает пример псевдокода для кодирования октодерева согласно некоторым вариантам осуществления раскрытия;[26] FIG. 15 shows an example pseudocode for encoding an octree according to some embodiments of the disclosure;

[27] Фиг. 16 показывает пример псевдокода для порядка кодирования в глубину согласно некоторым вариантам осуществления раскрытия;[27] FIG. 16 shows an example of pseudocode for a depth-coding order according to some embodiments of the disclosure;

[28] Фиг. 17 показывает блок-схему, описывающую пример процесса в соответствии с некоторыми вариантами осуществления;[28] FIG. 17 shows a flowchart describing an example of a process in accordance with some embodiments;

[29] На фиг. 18 показана схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления.[29] FIG. 18 is a schematic illustration of a computer system in accordance with an embodiment.

Осуществление изобретенияImplementation of the invention

[30] Аспекты настоящего раскрытия предоставляют способы кодирования облака точек (РСС). РСС может выполняться согласно различным схемам, таким как схема на основе геометрии, упоминаемая как G-PCC, схема на основе видеокодирования, которая упоминается как V-PCC, и т.п. Согласно некоторым аспектам раскрытия, G-PCC кодирует трехмерную геометрию напрямую и представляет собой подход, основанный исключительно на геометрии, без особого совместного использования кодирования видео, a V-PCC в значительной степени основан на кодировании видео. Например, V-PCC может сопоставить точку трехмерного облака с пикселем двумерной сетки (изображения). Схема V-PCC может использовать общие видеокодеки для сжатия облака точек. Группа экспертов по движущемся изображениям (MPEG) работает над стандартом G-PCC и стандартом V-PCC, которые, соответственно, используют схему G-PCC и схему V-PCC.[30] Aspects of the present disclosure provide methods for point cloud (PCC) encoding. The PCC may be performed according to various schemes such as a geometry based scheme referred to as G-PCC, a video coding based scheme referred to as V-PCC, and the like. According to some aspects of the disclosure, G-PCC encodes 3D geometry directly and is a pure geometry approach without much sharing of video coding, while V-PCC is heavily based on video coding. For example, the V-PCC may map a 3D cloud point to a 2D grid (image) pixel. The V-PCC scheme can use common video codecs to compress the point cloud. The Moving Picture Experts Group (MPEG) is working on the G-PCC standard and the V-PCC standard, which respectively use the G-PCC scheme and the V-PCC scheme.

[31] Аспекты раскрытия предоставляют способы для гибридного порядка кодирования, которые могут использоваться в РСС, такие как схема G-PCC и схема V-РСС. Кодер с гибридным кодированием может включать в себя схему перехода в глубину и схему перехода в ширину в порядке кодирования. Настоящее раскрытие также предоставляет способы для сигнализирования порядка кодирования.[31] Aspects of the disclosure provide methods for hybrid coding order that can be used in PCC, such as the G-PCC scheme and the V-PCC scheme. The hybrid encoder may include a depth-jumping scheme and a width-jumping scheme in coding order. The present disclosure also provides methods for signaling an encoding order.

[32] Облака точек могут широко использоваться во многих приложениях. Например, облака точек могут использоваться в автономных транспортных средствах для обнаружения и локализации объектов; облака точек могут использоваться в географических информационных системах (ГИС) для построения карт и могут использоваться в культурном наследии для визуализации и архивирования объектов и коллекций культурного наследия и т.д.[32] Point clouds can be widely used in many applications. For example, point clouds can be used in autonomous vehicles to detect and localize objects; point clouds can be used in geographic information systems (GIS) to build maps and can be used in cultural heritage to visualize and archive cultural heritage objects and collections, etc.

[33] Здесь и далее облако точек в целом может относиться к набору точек в трехмерном пространстве, каждая из которых имеет ассоциированные атрибуты, например цвет, свойства материала, информацию о текстуре, атрибуты интенсивности, атрибуты отражательной способности, атрибуты, относящиеся к движению, атрибуты модальности и различные другие атрибуты. Облака точек можно использовать для воссоздания объекта или сцены как композиции таких точек. Точки могут быть захвачены с помощью нескольких камер, датчиков глубины или лидара в различных настройках и могут состоять из тысяч и миллиардов точек для реалистичного представления восстановленных сцен. Участок (patch) в целом может относиться к непрерывному подмножеству поверхности, описываемой облаком точек. В примере участок включает в себя точки с векторами-нормалями к поверхности, отклоняющимися друг от друга менее, чем на пороговое значение.[33] Hereinafter, a point cloud as a whole may refer to a set of points in 3D space, each of which has associated attributes, such as color, material properties, texture information, intensity attributes, reflectivity attributes, motion-related attributes, modalities and various other attributes. Point clouds can be used to recreate an object or scene as a composition of such points. Points can be captured using multiple cameras, depth sensors or lidar in various settings and can be composed of thousands or billions of points to realistically represent reconstructed scenes. A patch as a whole can refer to a continuous subset of a surface described by a point cloud. In the example, the plot includes points with normal vectors to the surface that deviate from each other by less than a threshold value.

[34] Технологии сжатия могут уменьшить объем данных, необходимых для представления облака точек, для более быстрой передачи или уменьшения объема памяти хранения. Таким образом, существует потребность в технологии сжатия облаков точек с потерями для использования в коммуникациях в реальном времени и в виртуальной реальности с шестью степенями свободы (6 СС). Кроме того, требуется технология сжатия облаков точек без потерь в контексте динамической картографии для автономного вождения, приложений культурного наследия и т.п.[34] Compression techniques can reduce the amount of data required to represent a point cloud for faster transmission or reduce storage space. Thus, there is a need for lossy point cloud compression technology for use in real-time communications and virtual reality with six degrees of freedom (6 CC). In addition, lossless point cloud compression technology is required in the context of dynamic mapping for autonomous driving, cultural heritage applications, and the like.

[35] Согласно аспекту раскрытия, основная философия V-PCC заключается в использовании существующих видеокодеков для сжатия геометрии, занятости и текстуры динамического облака точек в виде трех отдельных видеопоследовательностей. Дополнительные метаданные, необходимые для интерпретации трех видеопоследовательностей, сжимаются отдельно. Небольшая часть общего битового потока - это метаданные, которые можно эффективно кодировать / декодировать с помощью программного воплощения. Основная часть информации обрабатывается видеокодеком.[35] According to an aspect of the disclosure, the core philosophy of V-PCC is to use existing video codecs to compress the geometry, occupancy, and texture of a dynamic point cloud into three separate video sequences. The additional metadata required to interpret the three video sequences is compressed separately. A small part of the overall bitstream is metadata, which can be encoded/decoded efficiently by a software implementation. Most of the information is processed by the video codec.

[36] На фиг. 1 проиллюстрирована упрощенная блок-схема системы (100) связи согласно варианту осуществления настоящего раскрытия. Коммуникационная система (100) включает в себя множество терминальных устройств, которые могут коммуницировать друг с другом, например, через сеть (150). Например, коммуникационная система (100) включает в себя пару терминальных устройств (110) и (120), соединенных между собой через сеть (150). На фиг. 1, первая пара терминальных устройств (110) и (120) может выполнять однонаправленную передачу данных облака точек. Например, терминальное устройство (110) может сжимать облако точек (например, точек, представляющие структуру), которое захватывается датчиком (105), соединенным с терминальным устройством (110). Сжатое облако точек может быть передано, например, в форме битового потока на другое терминальное устройство (120) через сеть (150). Терминальное устройство (120) может получать сжатое облако точек из сети (150), распаковывать поток битов для восстановления облака точек и соответствующим образом отображать восстановленное облако точек. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т.п.[36] FIG. 1 illustrates a simplified block diagram of a communication system (100) according to an embodiment of the present disclosure. The communication system (100) includes a plurality of terminal devices that can communicate with each other, for example, via a network (150). For example, the communication system (100) includes a pair of terminal devices (110) and (120) interconnected via a network (150). In FIG. 1, the first pair of terminal devices (110) and (120) can perform unidirectional transmission of point cloud data. For example, the terminal device (110) may compress a point cloud (eg, points representing a structure) that is captured by a sensor (105) connected to the terminal device (110). The compressed point cloud may be transmitted, for example, in the form of a bit stream to another terminal device (120) via a network (150). The terminal device (120) may receive the compressed point cloud from the network (150), decompress the bit stream to recover the point cloud, and display the recovered point cloud appropriately. One-way communication may be common in media serving applications and the like.

[37] На фиг. 1, терминальные устройства (110) и (120) могут быть проиллюстрированы как серверы и персональные компьютеры, но принципы настоящего раскрытия не могут быть ограничены этим. Варианты осуществления настоящего раскрытия находят применение в портативных компьютерах, планшетных компьютерах, смартфонах, игровых терминалах, медиаплеерах и/или специализированном трехмерном (3D) оборудовании. Сеть (150) представляет любое количество сетей, которые передают сжатое облако точек между терминальными устройствами (110) и (120). Сеть (150) может включать, например, проводные (проводные) и/или беспроводные сети связи. Сеть (250) может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Типичные сети включают телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети (150) могут быть несущественными для работы настоящего раскрытия, если это не объясняется в данном документе ниже.[37] FIG. 1, terminal devices (110) and (120) may be illustrated as servers and personal computers, but the principles of the present disclosure cannot be limited to this. Embodiments of the present disclosure find application in laptop computers, tablet computers, smartphones, gaming terminals, media players, and/or specialized three-dimensional (3D) equipment. Network (150) represents any number of networks that transmit compressed point cloud between terminal devices (110) and (120). Network (150) may include, for example, wired (wired) and/or wireless communication networks. The network (250) may communicate on circuit-switched and/or packet-switched channels. Typical networks include telecommunications networks, local area networks, wide area networks and/or the Internet. For the purposes of this discussion, the architecture and topology of the network (150) may not be essential to the operation of this disclosure, unless explained herein below.

[38] Фиг. 2 иллюстрирует упрощенную блок-схему системы (200) потоковой передачи в соответствии с вариантом осуществления. Фиг. 2 пример представляет собой приложение для раскрытого объекта для облака точек. Раскрытый предмет изобретения может быть в равной степени применим к другим приложениям с поддержкой облака точек, таким как приложение 3D телеприсутствия, приложение виртуальной реальности и т.п.[38] FIG. 2 illustrates a simplified block diagram of a streaming system (200) in accordance with an embodiment. Fig. The 2 example is an application for an open object for a point cloud. The disclosed subject matter may be equally applicable to other point cloud enabled applications such as a 3D telepresence application, a virtual reality application, and the like.

[39] Система (200) потоковой передачи может включать в себя подсистему (213) захвата. Подсистема (213) захвата может включать в себя источник (201) облака точек, например системы обнаружения и определения расстояния (LIDAR), 3D-камеры, 3D-сканеры, компонент генерирования графики, который генерирует несжатое облако точек в программном обеспечении, и т.п. генерирует, например, облака (202) точек, которые являются несжатыми. В одном примере облака (202) точек включают в себя точки, захваченные 3D-камерами. Облака (202) точек изображены жирной линией, чтобы подчеркнуть большой объем данных по сравнению со сжатыми облаками (204) точек (битовый поток сжатых облаков точек). Сжатые облака (204) точек могут быть сгенерированы электронным устройством (220), которое включает в себя кодер (203), связанный с источником (201) облака точек. Кодер (203) может включать в себя аппаратное обеспечение, программное обеспечение или их комбинацию для включения или реализации аспектов раскрытого объекта изобретения, как более подробно описано ниже. Сжатые облака (204) точек (или битовый поток сжатых облаков (204) точек) изображенные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (202) облаков точек, могут храниться на сервере (205) потоковой передачи для использования в будущем. Одна или несколько клиентских подсистем потоковой передачи, таких как клиентские подсистемы (206) и (208) на фиг. 2 могут получить доступ к серверу (205) потоковой передачи для извлечения копий (207) и (209) сжатого облака (204) точек. Клиентская подсистема (206) может включать в себя декодер (210), например, в электронном устройстве (230). Декодер (210) декодирует входящую копию (207) сжатых облаков точек и создает исходящий поток (211) восстановленных облаков точек, которые могут быть визуализированы на устройстве (212) визуализации.[39] The streaming system (200) may include a capture subsystem (213). The capture subsystem (213) may include a point cloud source (201), such as detection and distance determination (LIDAR) systems, 3D cameras, 3D scanners, a graphics generation component that generates an uncompressed point cloud in software, etc. P. generates, for example, point clouds (202) that are uncompressed. In one example, point clouds (202) include points captured by 3D cameras. The point clouds (202) are shown with a heavy line to emphasize the large amount of data compared to the compressed point clouds (204) (compressed point cloud bitstream). The compressed point clouds (204) may be generated by an electronic device (220) that includes an encoder (203) coupled to a point cloud source (201). The encoder (203) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. Compressed point clouds (204) (or bitstream of compressed point clouds (204)), depicted with a thin line to emphasize the smaller amount of data compared to the point cloud stream (202), can be stored on the streaming server (205) for future use. One or more streaming client subsystems, such as client subsystems (206) and (208) in FIG. 2 can access the streaming server (205) to extract copies (207) and (209) of the compressed point cloud (204). The client subsystem (206) may include a decoder (210), such as in an electronic device (230). The decoder (210) decodes the incoming copy (207) of the compressed point clouds and creates an outgoing stream (211) of the reconstructed point clouds that can be rendered on the rendering device (212).

[40] Следует отметить, что электронные устройства (220) и (230) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (220) может включать в себя видеодекодер (не показан), а электронное устройство (230) также может включать в себя видеокодер (не показан).[40] It should be noted that the electronic devices (220) and (230) may include other components (not shown). For example, electronic device (220) may include a video decoder (not shown), and electronic device (230) may also include a video encoder (not shown).

[41] В некоторых системах потоковой передачи сжатые облака (204), (207) точек и (209) (например, битовые потоки сжатых облаков точек) могут быть сжаты в соответствии с определенными стандартами. В некоторых примерах стандарты видеокодирования используются при сжатии облаков точек. Примеры этих стандартов включают в себя высокоэффективное кодирование видео (HEVC), универсальное кодирование видео (VVC) и т.п.[41] In some streaming systems, compressed point clouds (204), (207) and (209) (eg, compressed point cloud bitstreams) may be compressed according to certain standards. In some examples, video coding standards are used when compressing point clouds. Examples of these standards include High Efficiency Video Coding (HEVC), Versatile Video Coding (VVC), and the like.

[42] На фиг. 3 показана блок-схема V-PCC кодера (300) для кодирования кадров облака точек согласно некоторым вариантам осуществления; В некоторых вариантах осуществления V-PCC кодер (300) может использоваться в коммуникационной системе (100) и системе (200) потоковой передачи. Например, кодер (203) может быть конфигурирован и работать аналогично V-PCC кодеру (300).[42] FIG. 3 shows a block diagram of a V-PCC encoder (300) for encoding point cloud frames, according to some embodiments; In some embodiments, a V-PCC encoder (300) may be used in a communication system (100) and a streaming system (200). For example, the encoder (203) may be configured and operate similarly to the V-PCC encoder (300).

[43] V-PCC кодер (300) получает кадры облака точек в виде несжатых входных данных и генерирует битовый поток, соответствующий сжатым кадрам облака точек. В некоторых вариантах осуществления V-PCC кодер (300) может получать кадры облака точек от источника облака точек, такого как источник (201) облака точек и т.п.[43] The V-PCC encoder (300) receives the point cloud frames as uncompressed input and generates a bitstream corresponding to the compressed point cloud frames. In some embodiments, the V-PCC encoder (300) may receive point cloud frames from a point cloud source such as a point cloud source (201) or the like.

[44] В примере на фиг. 3 V-PCC кодер (300) включает в себя модуль (306) генерирования участков, модуль (308) упаковки участков, модуль (310) генерирования изображения геометрии, модуль (312) генерирования изображения текстуры, модуль (304) информации участков, модуль (314) карты занятости, модуль (336) сглаживания, модули (316) и (318) заполнения изображения, модуль (320) расширения группы, модули (322), (323) и (332) сжатия видео, модуль (338) сжатия дополнительной информации участков, модуль (334) энтропийного сжатия и мультиплексор (324).[44] In the example of FIG. 3 V-PCC encoder (300) includes a patch generating module (306), a patch packing module (308), a geometry image generating module (310), a texture image generating module (312), a patch information module (304), a module ( 314) occupancy maps, smoothing module (336), image filling modules (316) and (318), group extension module (320), video compression modules (322), (323) and (332), additional compression module (338) plot information, an entropy compression module (334), and a multiplexer (324).

[45] Согласно аспекту раскрытия, V-PCC кодер (300) преобразует кадры трехмерного облака точек в представление на основе изображения вместе с некоторыми метаданными (например, картой занятости и информацией участков), которые используются для преобразования сжатого облака точек обратно в распакованное облако точек. В некоторых примерах V-PCC кодер (300) может преобразовывать кадры трехмерных облаков точек в геометрические изображения, изображения текстур и карты занятости, а затем использовать техники кодирования видео для кодирования геометрических изображений, изображений текстур и карт занятости в битовый поток. Как правило, изображение геометрии- это двухмерное изображение с пикселями, заполненными значениями геометрии, ассоциированными с точками, проецируемыми на пиксели, а пиксель, заполненный значением геометрии, может называться отсчетом геометрии. Изображение текстуры представляет собой двухмерное изображение с пикселями, заполненными значениями текстуры, ассоциированными с точками, проецируемыми на пиксели, и пиксель, заполненный значением текстуры, может называться отсчетом текстуры. Карта занятости - это двухмерное изображение с пикселями, заполненными значениями, которые указывают, что они заняты или не заняты участками.[45] According to an aspect of the disclosure, a V-PCC encoder (300) converts 3D point cloud frames into an image-based representation along with some metadata (eg, occupancy map and parcel information) that is used to convert the compressed point cloud back to a decompressed point cloud. . In some examples, the V-PCC encoder (300) may convert 3D point cloud frames into geometry images, texture images, and occupancy maps, and then use video coding techniques to encode the geometry images, texture images, and occupancy maps into a bitstream. Typically, a geometry image is a 2D image with pixels filled with geometry values associated with points projected onto the pixels, and a pixel filled with geometry value may be referred to as a geometry sample. A texture image is a 2D image with pixels filled with texture values associated with pixels projected onto the pixels, and a pixel filled with a texture value may be referred to as a texture sample. The occupancy map is a 2D image with pixels filled with values that indicate whether they are occupied or not occupied by lots.

[46] Модуль (306) генерирования участков облака точек сегментирует облако точек на набор участков (например, участок определяется как непрерывное подмножество поверхности, описываемой облаком точек), которые могут перекрываться или нет, так что каждый участок может описываться полем глубины по отношению к плоскости в двумерном пространстве. В некоторых вариантах осуществления модуль (306) генерирования участков нацелен на разложение облака точек на минимальное количество участков с гладкими границами, а также на минимизацию ошибки восстановления.[46] The point cloud patch generation module (306) segments the point cloud into a set of patches (e.g., a patch is defined as a continuous subset of the surface described by the point cloud) that may or may not overlap, so that each patch can be described by a depth field with respect to a plane. in two-dimensional space. In some embodiments, the patch generation module (306) aims to decompose the point cloud into a minimum number of patches with smooth boundaries, as well as to minimize the recovery error.

[47] Модуль (304) информации участков может собирать информацию участков, указывающую размеры и форму участков. В некоторых примерах информация участков может быть упакована в кадр изображения и затем кодирована модулем (338) сжатия дополнительной информации участков для генерирования сжатой дополнительной информации участков.[47] The parcel information module (304) may collect parcel information indicative of the size and shape of the parcels. In some examples, the region information may be packed into an image frame and then encoded by the region side information compression module (338) to generate compressed region information.

[48] Модуль (308) упаковки участков конфигурирован для нанесения извлеченных участков на двумерную (2D) сетку, минимизируя при этом неиспользуемое пространство и гарантируя, что каждый М×М блок (например, 16×16) сетки ассоциирован с уникальным участком. Эффективная упаковка участков может напрямую повлиять на эффективность сжатия либо за счет минимизации неиспользуемого пространства, либо за счет обеспечения согласованности во времени.[48] The patch packing module (308) is configured to plot the extracted patches onto a two-dimensional (2D) grid while minimizing wasted space and ensuring that each MxM block (eg, 16x16) of the grid is associated with a unique patch. Efficient parcel packing can directly affect compression efficiency, either by minimizing wasted space or by ensuring consistency over time.

[49] Модуль (310) генерирования изображения геометрии может генерировать двухмерные изображения геометрии, ассоциированные с геометрией облака точек в заданных местоположениях участков. Модуль (312) генерирования изображения текстуры может генерировать 20-изображения текстуры, ассоциированные с текстурой облака точек в заданных местоположениях участков. Модуль (310) генерирования изображения геометрии и модуль (312) генерирования изображения текстуры используют преобразование 3D в 2D, вычисленное во время процесса упаковки, для сохранения геометрии и текстуры облака точек в виде изображений. Чтобы лучше справиться со случаем, когда несколько точек проецируются на один и тот же отсчет, каждый участок проецируется на два изображения, называемых слоями. В одном примере изображение геометрии представлено монохроматическим кадром W×H в формате YUV420-8bit. Для генерирования изображения текстуры процедура генерирования текстуры использует восстановленную / сглаженную геометрию для вычисления цветов, которые должны быть ассоциированы с точками повторной дискретизации.[49] The geometry image generating module (310) may generate two-dimensional geometry images associated with point cloud geometry at predetermined parcel locations. The texture image generating module (312) may generate 20 texture images associated with a point cloud texture at predetermined patch locations. The geometry image generation module (310) and the texture image generation module (312) use the 3D to 2D transformation calculated during the packing process to store the geometry and texture of the point cloud as images. To better handle the case where multiple points are projected onto the same sample, each area is projected onto two images, called layers. In one example, the geometry image is represented by a WxH monochromatic frame in YUV420-8bit format. To generate a texture image, the texture generation routine uses the reconstructed/smoothed geometry to calculate the colors to be associated with the resampling points.

[50] Модуль (314) карты занятости может генерировать карту занятости, которая описывает информацию заполнения в каждом блоке. Например, изображение занятости включает в себя двоичную карту, которая указывает для каждой ячейки сетки, принадлежит ли ячейка пустому пространству или облаку точек. В примере карта занятости использует двоичную информацию, описывающую для каждого пикселя, заполнен ли пиксель или нет. В другом примере карта занятости использует двоичную информацию, описывающую для каждого блока пикселей, заполнен ли блок пикселей или нет.[50] The occupancy map module (314) may generate an occupancy map that describes padding information in each block. For example, the busy image includes a binary map that indicates, for each grid cell, whether the cell belongs to empty space or a point cloud. In the example, the occupancy map uses binary information describing, for each pixel, whether the pixel is full or not. In another example, the occupancy map uses binary information describing, for each pixel block, whether the pixel block is full or not.

[51] Карта занятости, сгенерированная модулем карты занятости (314), может быть сжата с использованием кодирования без потерь или кодирования с потерями. Когда используется кодирование без потерь, для сжатия карты занятости используется модуль (334) энтропийного сжатия. Когда используется кодирование с потерями, для сжатия карты занятости используется модуль (332) сжатия видео.[51] The occupancy map generated by the occupancy map module (314) may be compressed using lossless coding or lossy coding. When lossless encoding is used, an entropy compression module (334) is used to compress the occupancy map. When lossy coding is used, a video compression module (332) is used to compress the occupancy map.

[52] Следует отметить, что модуль (308) упаковки участков может оставлять некоторые пустые пространства между двумерными участками, упакованными в кадре изображения. Модули (316) и (318) заполнения изображения могут заполнять пустые пространства (заполнение), чтобы сгенерировать кадр изображения, который может подходить для кодеков 2D видео и изображения. Заполнение изображения также называется фоновым заполнением, которое может заполнить неиспользуемое пространство избыточной информацией. В некоторых примерах хорошее фоновое заполнение минимально увеличивает скорость передачи данных, но не вносит значительных искажений кодирования вокруг границ участков.[52] It should be noted that the section packing module (308) may leave some empty spaces between the two-dimensional sections packed in the image frame. The image padding modules (316) and (318) may fill in empty spaces (padding) to generate an image frame that may be suitable for 2D video and image codecs. Image padding is also called background padding, which can fill unused space with redundant information. In some examples, good background padding minimally increases the data rate, but does not introduce significant coding distortion around segment boundaries.

[53] Модули (322), (323) и (332) сжатия видео могут кодировать 2D-изображения, такие как дополненные изображения геометрии, дополненные изображения текстуры и карты занятости, на основе подходящего стандарта кодирования видео, такого как HEVC, VVC и подобное. В одном примере модули (322), (323) и (332) сжатия видео представляют собой отдельные компоненты, которые работают отдельно. Следует отметить, что модули (322), (323) и (332) сжатия видео могут быть реализованы как единый компонент в другом примере.[53] The video compression modules (322), (323), and (332) can encode 2D images such as geometry augmented images, texture augmented images, and occupancy maps based on a suitable video coding standard such as HEVC, VVC, and the like. . In one example, video compression modules (322), (323), and (332) are separate components that operate separately. It should be noted that the modules (322), (323) and (332) video compression can be implemented as a single component in another example.

[54] В некоторых примерах модуль (336) сглаживания конфигурирован для создания сглаженного изображения восстановленного изображения изображения. Сглаженное изображение может быть предоставлено для генерирования (312) изображения текстуры. Затем генерирование (312) изображения текстуры может регулировать генерирование изображения текстуры на основе восстановленных изображений геометрии. Например, когда форма участков (например, геометрия) слегка искажается во время кодирования и декодирования, искажение может быть принято во внимание при генерирования изображений текстуры для коррекции искажения формы участков.[54] In some examples, the smoothing module (336) is configured to create a smoothed image of the restored image image. A smoothed image may be provided to generate (312) a texture image. The texture image generation 312 may then adjust the generation of the texture image based on the reconstructed geometry images. For example, when the shape of the patches (eg, geometry) is slightly distorted during encoding and decoding, the distortion can be taken into account when generating texture images to correct the distortion of the shape of the patches.

[55] В некоторых вариантах осуществления групповое расширение (320) конфигурировано так, чтобы дополнять пиксели вокруг границ объекта избыточным низкочастотным содержимым, чтобы улучшить коэффициент кодирования, а также визуальное качество восстановленного облака точек.[55] In some embodiments, the group expansion (320) is configured to pad pixels around object boundaries with redundant low frequency content to improve the encoding factor as well as the visual quality of the reconstructed point cloud.

[56] Мультиплексор (324) может мультиплексировать сжатое изображение геометрии, сжатое изображение текстуры, сжатую карту занятости, сжатую дополнительную информацию участков в сжатый поток битов.[56] The multiplexer (324) may multiplex the compressed geometry image, the compressed texture image, the compressed occupancy map, the compressed section side information into a compressed bit stream.

[57] На фиг. 4 показана блок-схема V-PCC декодера (400) для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления. В некоторых вариантах осуществления V-PCC декодер (400) может использоваться в коммуникационной системе (100) и системе (200) потоковой передачи. Например, декодер (210) может быть конфигурирован для работы аналогично V-PCC декодеру (400). V-PCC декодер (400) получает сжатый битовый поток и генерирует восстановленное облако точек на основе сжатого битового потока.[57] FIG. 4 shows a block diagram of a V-PCC decoder (400) for decoding a compressed bitstream corresponding to point cloud frames, according to some embodiments. In some embodiments, the V-PCC decoder (400) may be used in the communication system (100) and the streaming system (200). For example, the decoder (210) may be configured to operate similarly to the V-PCC decoder (400). The V-PCC decoder (400) receives the compressed bitstream and generates a reconstructed point cloud based on the compressed bitstream.

[58] На примере с фиг. 4 V-PCC декодер (400) включает в себя демультиплексор (432), модули (434) и (436) распаковки видео, модуль (438) распаковки карты занятости, модуль (442) распаковки дополнительной информации участков, модуль (444) восстановления геометрии, модуль (446) сглаживания, модуль (448) восстановления текстуры и модуль (452) сглаживания цвета.[58] In the example of FIG. 4 V-PCC decoder (400) includes a demultiplexer (432), video decompressor modules (434) and (436), an occupancy map decompressor module (438), a section side information decompressor module (442), a geometry recovery module (444) , a smoothing module (446), a texture recovery module (448), and a color smoothing module (452).

[59] Демультиплексор (432) может получать и разделять сжатый битовый поток на сжатое изображение текстуры, сжатое изображение геометрии, сжатую карту занятости и сжатую дополнительную информацию участков.[59] The demultiplexer (432) may receive and separate the compressed bitstream into a compressed texture image, a compressed geometry image, a compressed occupancy map, and compressed patch side information.

[60] Модули (434) и (436) распаковки видео могут декодировать сжатые изображения согласно подходящему стандарту (например, HEVC, VVC и т.д.) и выводить распакованные изображения. Например, модуль (434) распаковки видео декодирует сжатые изображения текстуры и выводит распакованные изображения текстуры; и модуль (436) распаковки видео декодирует сжатые изображения геометрии и выводит распакованные изображения геометрии.[60] The video decompressing modules (434) and (436) may decode the compressed images according to an appropriate standard (eg, HEVC, VVC, etc.) and output the decompressed images. For example, the video decompressor (434) decodes the compressed texture images and outputs the decompressed texture images; and the video decompressor (436) decodes the compressed geometry images and outputs the decompressed geometry images.

[61] Модуль (438) распаковки карты занятости может декодировать сжатые карты занятости согласно подходящему стандарту (например, HEVC, VVC и т.д.) и выводить распакованные карты занятости.[61] The occupancy map decompressor 438 may decode the compressed occupancy maps according to an appropriate standard (eg, HEVC, VVC, etc.) and output the decompressed occupancy maps.

[62] Модуль (442) распаковки дополнительной информации участков может декодировать сжатую дополнительную информацию участков в соответствии с подходящим стандартом (например, HEVC, VVC и т.д.) и выводить распакованную дополнительную информацию участков.[62] The section side information decompressor (442) may decode the compressed section side information according to an appropriate standard (eg, HEVC, VVC, etc.) and output the decompressed section side information.

[63] Модуль (444) восстановления геометрии может получать распакованные изображения геометрии и генерировать восстановленную геометрию облака точек на основе распакованной карты занятости и распакованной дополнительной информации участков.[63] The geometry recovery module (444) may receive decompressed geometry images and generate a reconstructed point cloud geometry based on the decompressed occupancy map and the decompressed parcel side information.

[64] Модуль (446) сглаживания может сглаживать несоответствия по краям участков. Процедура сглаживания направлена на устранение потенциальных неоднородностей, которые могут возникнуть на границах участков из-за артефактов сжатия. В некоторых вариантах осуществления к пикселям, расположенным на границах участка, может применяться фильтр сглаживания для уменьшения искажений, которые могут быть вызваны сжатием / распаковкой.[64] The smoothing module (446) can smooth out inconsistencies at the edges of the sections. The smoothing procedure is aimed at eliminating potential inhomogeneities that may occur at the boundaries of the sections due to compression artifacts. In some embodiments, an anti-aliasing filter may be applied to pixels located at the site boundaries to reduce distortion that may be caused by compression/decompression.

[65] Модуль восстановления (448) текстуры может определять информацию текстуры для точек в облаке точек на основе распакованных изображений текстуры и геометрии сглаживания.[65] The texture recovery module (448) may determine texture information for points in the point cloud based on decompressed texture images and anti-aliasing geometry.

[66] Модуль (452) сглаживания цвета может сглаживать несоответствия расцветки. Несоседние участки в 3D-пространстве часто упаковываются рядом друг с другом в 2D-видео. В некоторых примерах значения пикселей из несоседних участков могут смешиваться поблочным видеокодеком. Цель сглаживания цвета - уменьшить видимые артефакты, появляющиеся на границах участков.[66] The color smoothing module (452) can smooth out color mismatches. Non-adjacent areas in 3D space are often packed next to each other in 2D video. In some examples, pixel values from non-adjacent areas may be mixed by a block-by-block video codec. The purpose of color smoothing is to reduce the visible artifacts that appear at the boundaries of the plots.

[67] На фиг. 5 показана блок-схема видеодекодера (510) согласно варианту осуществления настоящего изобретения. Видеодекодер (510) может использоваться в V-РСС декодере (400). Например, модули (434) и (436) распаковки видео, модуль (438) распаковки карты занятости могут быть конфигурированы аналогично видеодекодеру (510).[67] FIG. 5 shows a block diagram of a video decoder (510) according to an embodiment of the present invention. The video decoder (510) may be used in the V-PCC decoder (400). For example, modules (434) and (436) video decompressor module (438) decompress the busy map can be configured similarly to the video decoder (510).

[68] Видеодекодер (510) может включать в себя синтаксический анализатор (520) для восстановления символов (521) из сжатых изображений, таких как кодированная видеопоследовательность. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (510). Синтаксический анализатор (520) может анализировать/энтропийно декодировать полученную кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать различным принципам, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Синтаксический анализатор (520) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Субгруппы могут включать в себя группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Синтаксический анализатор (520) также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.[68] The video decoder (510) may include a parser (520) for recovering symbols (521) from compressed images, such as an encoded video sequence. The categories of these symbols include information used to control the operation of the video decoder (510). A parser (520) may parse/entropy decode the received encoded video sequence. Encoding of the encoded video sequence may be in accordance with a video coding technology or standard, and may follow various principles including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, and so on. The parser (520) can extract from the encoded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. Subgroups may include groups of pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), and so on. The parser (520) may also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, and so on.

[69] Синтаксический анализатор (520) может выполнять операцию энтропийного декодирования/парсинга видеопоследовательности, полученной из буферной памяти, чтобы создавать символы (521).[69] The parser (520) may perform an entropy decoding/parsing operation of the video sequence obtained from the buffer memory to create symbols (521).

[70] Восстановление символов (521) может задействовать множество различных модулей в зависимости от типа кодированного видеоизображения или его частей (таких как: интер и интра изображение, интер и интра блок) и других факторов. Какие модули задействованы и как, можно контролировать с помощью управляющей информации субгруппы, парсинг которой был выполнен из кодированной видеопоследовательности с помощью синтаксического анализатора (520). Поток такой информации управления подгруппой между синтаксическим анализатором (520) и множеством модулей ниже не показан для ясности.[70] Symbol recovery (521) may involve many different modules depending on the type of encoded video image or parts thereof (such as: inter and intra image, inter and intra block) and other factors. Which modules are enabled and how can be controlled by the subgroup control information parsed from the encoded video sequence by the parser (520). The flow of such subgroup control information between the parser (520) and the plurality of modules is not shown below for clarity.

[71] Помимо уже упомянутых функциональных блоков, видеодекодер (510) может быть концептуально подразделен на ряд функциональных модулей, как описано ниже. В практическом осуществлении, работающем в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут быть, по меньшей мере частично, интегрированы друг в друга. Однако для целей описания раскрытого объекта изобретения уместно концептуальное подразделение на функциональные модули, приведенные ниже.[71] In addition to the functional blocks already mentioned, the video decoder (510) can be conceptually subdivided into a number of functional modules, as described below. In a practical implementation operating under commercial constraints, many of these modules interact closely with each other and can be at least partially integrated into each other. However, for purposes of describing the disclosed subject matter, the conceptual division into functional modules below is appropriate.

[72] Первым модулем является модуль (551) масштабирования/обратного преобразования. Модуль (551) масштабирования/обратного преобразования получает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и так далее, в виде символа(ов) (521) от синтаксического анализатора (520). Модуль (551) масштабирования/обратного преобразования может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (555).[72] The first module is the scaling/inverse transform module (551). The scaling/inverse transform module (551) receives the quantized transform coefficient, as well as control information, including which transform to use, block size, quantization factor, quantization scaling matrices, and so on, in the form of symbol(s) (521) from the parser (520). The scaling/inverse transform module (551) may output blocks containing sample values that may be input to the aggregator (555).

[73] В некоторых случаях выходные отсчеты модуля (551) масштабирования/обратного преобразования могут относиться к интра-кодированному блоку; то есть к блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена модулем (5452) внутрикадрового предсказания. В некоторых случаях модуль (552) внутрикадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из текущего буфера (558) изображения. Буфер (558) текущего изображения буферизует, например, частично восстановленное текущее изображение и/или полностью восстановленное текущее изображение. Агрегатор (555) в некоторых случаях добавляет для каждого отсчета информацию предсказания, сгенерированную модулем (552) интра-предсказания, к информации выходных отсчетов, предоставляемой модулем (551) масштабирования/обратного преобразования.[73] In some cases, the output samples of the scaling/inverse transform module (551) may refer to an intra-coded block; that is, to a block that does not use prediction information from previously restored images, but can use prediction information from previously restored portions of the current image. Such prediction information may be provided by the intra prediction module (5452). In some cases, the intra-prediction module (552) generates a block of the same size and shape as the block being reconstructed, using the already reconstructed surrounding information retrieved from the current image buffer (558). The current picture buffer (558) buffers, for example, a partially restored current picture and/or a fully restored current picture. The aggregator (555) in some cases adds, for each sample, the prediction information generated by the intra-prediction module (552) to the output sample information provided by the scaling/inverse transform module (551).

[74] В других случаях выходные отсчеты модуля (551) масштабирования/обратного преобразования могут относиться к блоку с интеркодированием и потенциально с компенсацией движения. В таком случае модуль (553) предсказания с компенсацией движения может обращаться к памяти (557) опорных изображений, чтобы извлекать отсчеты, используемые для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (521), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (555) к выходу модуля (551) масштабирования/обратного преобразования (в данном случае называемые остаточными отсчетами или остаточным сигналом), чтобы генерировать информацию о выходных отсчетах. Адреса в памяти (557) опорных изображений, откуда модуль (553) предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными модулю (553) предсказания с компенсацией движения в форме символов (521), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (557) опорных изображений, когда используются точные векторы движения под-отсчетов, механизмы предсказания вектора движения и так далее.[74] In other cases, the output samples of the scaling/inverse transform module (551) may refer to a block with intercoding and potentially with motion compensation. In such a case, the motion compensation prediction module (553) may access the reference picture memory (557) to retrieve samples used for prediction. After compensating for motion of the selected samples according to the symbols (521) associated with the block, these samples can be added by the aggregator (555) to the output of the scaling/inverse transform module (551) (in this case called residual samples or residual signal) to generate output information. The addresses in the reference picture memory (557) from where the motion compensation prediction module (553) selects prediction samples may be controlled by the motion vectors available to the motion compensation prediction module (553) in the form of symbols (521), which may have, for example, components X, Y and reference image. Motion compensation may also include interpolation of sample values retrieved from reference picture memory (557) when accurate sub-sample motion vectors are used, motion vector prediction mechanisms, and so on.

[75] Выходные отсчеты агрегатора (555) могут подвергаться различным методам петлевой фильтрации в модуле (556) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в кодированную видеопоследовательность (также называемую битовым потоком кодированного видео) и предоставляемые модулю (556) петлевой фильтрации как символы (521) из синтаксического анализатора (520), но также может реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и отфильтрованные петлей значения отсчетов.[75] The output samples of the aggregator (555) may be subjected to various loop filtering methods in the loop filter module (556). The video compression techniques may include in-loop filtering techniques that are controlled by parameters included in the encoded video sequence (also referred to as the encoded video bitstream) and provided to the loop filtering module (556) as symbols (521) from the parser (520), but may also respond to meta-information received during decoding of the previous (in the order of decoding) parts of the encoded image or encoded video sequence, and also respond to the sample values previously restored and filtered by the loop.

[76] Выходной сигнал модуля (556) петлевого фильтра может быть потоком отсчетов, который может быть выведен на устройство (512) визуализации, а также сохранен в памяти (557) опорных изображений для использования в будущем межкадровом предсказании.[76] The output of the loop filter module (556) may be a stream of samples that can be output to the renderer (512) and also stored in the reference picture memory (557) for use in future inter-picture prediction.

[77] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. Например, после того, как кодированное изображение, соответствующее текущему изображению, полностью восстановлено, и кодированное изображение было идентифицировано как опорное изображение (например, синтаксическим анализатором (520)), буфер (558) текущего изображения может стать частью памяти (557) опорных изображений, и буфер свежего текущего изображения может быть перераспределен перед началом восстановления следующего кодированного изображения.[77] Certain encoded pictures after full recovery can be used as reference pictures for future prediction. For example, after the encoded picture corresponding to the current picture has been completely restored and the encoded picture has been identified as a reference picture (for example, by the parser (520)), the current picture buffer (558) may become part of the reference picture memory (557), and the buffer of the fresh current picture may be reallocated before starting the reconstruction of the next encoded picture.

[78] Видеодекодер (510) может выполнять операции декодирования согласно заранее определенной технологии сжатия видео в стандарте, таком как ITU-T Rec. Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность соответствует как синтаксису технологии или стандарту сжатия видео, так и профилям, задокументированным в технологии или стандарте сжатия видео. В частности, профиль может выбирать определенные инструменты как единственные инструменты, доступные для использования в этом профиле, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах границ, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD) и метаданных для управления буфером HRD, сигнализируемых в кодированной видеопоследовательности.[78] The video decoder (510) may perform decoding operations according to a predetermined video compression technology in a standard such as ITU-T Rec. H.265. The encoded video sequence may conform to the syntax specified by the video compression technology or standard being used, in the sense that the encoded video sequence conforms to both the syntax of the video compression technology or standard and to the profiles documented in the video compression technology or standard. In particular, a profile may select certain tools as the only tools available for use in that profile, from among all the tools available in a video compression technology or standard. It may also be necessary for compliance that the complexity of the encoded video sequence be within the boundaries defined by the level of technology or video compression standard. In some cases, levels limit the maximum image size, the maximum frame rate, the maximum recovery sampling rate (measured in megasamples per second, for example), the maximum reference image size, and so on. The limits set by the layers may, in some cases, be further constrained by Hypothetical Reference Decoder (HRD) specifications and metadata for managing the HRD buffer signaled in the encoded video sequence.

[79] На фиг. 6 показана блок-схема видеодекодера (603) согласно варианту осуществления настоящего изобретения. Видеокодер (603) может использоваться в V-PCC кодере (300) для сжатия облаков точек. В примере модули (322) и (323) сжатия видео и модуль (332) сжатия видео конфигурированы аналогично кодеру (603).[79] FIG. 6 is a block diagram of a video decoder (603) according to an embodiment of the present invention. A video encoder (603) may be used in a V-PCC encoder (300) to compress point clouds. In the example, the video compression modules (322) and (323) and the video compression module (332) are configured similarly to the encoder (603).

[80] Видеокодер (603) может получать изображения, такие как заполненные изображения геометрии, заполненные изображения текстуры и т.п., и генерировать сжатые изображения.[80] The video encoder (603) may receive images such as filled geometry images, filled texture images, and the like, and generate compressed images.

[81] Согласно варианту осуществления кодер (603) может кодировать и сжимать изображения исходной видеопоследовательности (изображений) в кодированную видеопоследовательность (сжатых изображений) в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (650). В некоторых вариантах осуществления контроллер (650) управляет другими функциональными модулями, как описано ниже, и функционально связан с другими функциональными модулями. Связь не изображена для ясности. Параметры, устанавливаемые контроллером (650), могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда методов оптимизации скорость-искажение,…), размеру изображения, макету группы изображений (GOP), максимальному диапазону поиска вектора движения и так далее. Контроллер (650) может быть конфигурирован так, чтобы иметь другие подходящие функции, которые относятся к видеокодеру (603), оптимизированному для определенной конструкции системы.[81] According to an embodiment, the encoder (603) can encode and compress images of the original video sequence (images) into an encoded video sequence (compressed images) in real time or with any other time constraints as required by the application. Providing an appropriate coding rate is one of the functions of the controller (650). In some embodiments, the implementation of the controller (650) controls other functional modules, as described below, and is functionally associated with other functional modules. The connection is not shown for clarity. Parameters set by the controller (650) may include parameters related to speed control (picture skip, quantizer, speed-distortion optimization methods lambda value, ...), image size, group of pictures (GOP) layout, maximum motion vector search range and so on. The controller (650) may be configured to have other suitable functions that are related to the video encoder (603) optimized for a particular system design.

[82] В некоторых вариантах осуществления видеокодер (603) конфигурирован для работы в контуре кодирования. В качестве упрощенного описания, в примере контур кодирования может включать в себя кодер (630) источника (например, ответственный за создание символов, таких как поток символов, на основе входного изображения для кодирования, и опорного изображения (изображений), а также (локальный) декодер (633), встроенный в видеокодер (603). Декодер (633) восстанавливает символы для создания данных отсчетов аналогично тому, как (удаленный) декодер также может создавать (поскольку любое сжатие между символами и кодированным битовым потоком видео не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытом объекте изобретения). Восстановленный поток отсчетов (данные отсчетов) вводится в память опорных изображений (634). Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локально или удаленно), содержимое в памяти опорных изображений (634) также является точным до бита между локальным кодером и удаленным кодером. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые бы «видел» декодер при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) также используется в некоторых смежных областях техники.[82] In some embodiments, the video encoder (603) is configured to operate in an coding loop. As a simplified description, in an example, an encoding loop may include a source encoder (630) (e.g., responsible for creating symbols, such as a stream of symbols, based on an input image for encoding, and reference image(s), as well as a (local) a decoder (633) built into the video encoder (603) The decoder (633) decompresses the symbols to create sample data in a manner similar to how a (remote) decoder can also create (because any compression between the symbols and the encoded video bitstream is lossless in compression technologies of the video of the disclosed subject matter.) The reconstructed sample stream (sample data) is entered into the reference picture memory 634. Since the decoding of the symbol stream results in bit-accurate results, regardless of the location of the decoder (local or remote), the content in the memory The reference picture 634 is also bit accurate between the local encoder and the remote encoder In other words, the encoder prediction part "sees" as reference picture samples exactly the same sample values that the decoder would "see" if using prediction during decoding. This fundamental principle of reference picture synchronism (and the resulting drift if synchronism cannot be maintained due to, for example, channel errors) is also used in some related fields of technology.

[83] Работа «локального» декодера (633) может быть такой же, как у «удаленного» декодера, такого как видеодекодер (510), который уже был подробно описан выше в связи с фиг. 5. Кратко ссылаясь также на фиг. 5, однако, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (645) и синтаксическим анализатором (520) может быть без потерь, части энтропийного декодирования видеодекодера (510), включая синтаксический анализатор (520), не могут быть полностью реализованы в локальном декодере (633).[83] The operation of the "local" decoder (633) may be the same as that of the "remote" decoder, such as the video decoder (510), which has already been described in detail above in connection with FIG. 5. Briefly referring also to FIG. 5, however, since the symbols are available and encoding/decoding of the symbols into the encoded video sequence by the entropy encoder (645) and the parser (520) can be lossless, the entropy decoding parts of the video decoder (510) including the parser (520) cannot be fully implemented in the local decoder (633).

[84] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме парсинга/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать в, по существу, идентичной функциональной форме в соответствующем кодере. По этой причине раскрытый объект изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.[84] At this point, it can be observed that any decoding technology other than parsing/entropy decoding that is present in a decoder must also necessarily be present in a substantially identical functional form in the corresponding encoder. For this reason, the disclosed subject matter focuses on the operation of the decoder. The description of encoding technologies can be abbreviated as they are the inverse of fully described decoding technologies. Only in some areas a more detailed description is required, which is given below.

[85] Во время работы в некоторых примерах исходный кодер (630) может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входное изображение с предсказанием со ссылкой на одно или более ранее кодированных изображений из видеопоследовательности, которые были обозначены как «опорные изображения». Таким образом, механизм (632) кодирования кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения (изображений), которые могут быть выбраны в качестве эталона(ов) предсказанием для входного изображения.[85] During operation, in some examples, source encoder (630) may perform motion-compensated predictive encoding that predictively encodes an input picture with reference to one or more previously encoded pictures from a video sequence that have been designated "reference pictures". Thus, the coding engine (632) encodes the differences between the pixel blocks of the input image and the pixel blocks of the reference image(s) that can be selected as prediction reference(s) for the input image.

[86] Локальный видеодекодер (633) может декодировать кодированные видеоданные изображений, которые могут быть обозначены как опорные изображения, на основе символов, созданных кодером (630) источника. Операции механизма (632) кодирования могут быть предпочтительно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 6), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (633) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных изображениях, и может вызывать сохранение восстановленных опорных изображений в кэше (734) опорных изображений. Таким образом, видеокодер (603) может локально хранить копии восстановленных опорных изображений, которые имеют общий контент, в качестве восстановленных опорных изображений, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).[86] The local video decoder (633) may decode the encoded video data of pictures that can be designated as reference pictures based on the symbols generated by the source encoder (630). The operations of the encoding engine (632) may preferably be lossy processes. When the encoded video data can be decoded in a video decoder (not shown in FIG. 6), the reconstructed video sequence can typically be a copy of the original video sequence with some errors. The local video decoder (633) replicates the decoding processes that may be performed by the video decoder on the reference pictures and may cause the recovered reference pictures to be stored in the reference picture cache (734). Thus, the video encoder (603) can locally store copies of the reconstructed reference pictures that share the same content as the reconstructed reference pictures to be received by the far end video decoder (in the absence of transmission errors).

[87] Предиктор (635) может выполнять поиски с предсказанием для механизма (632) кодирования. То есть, для нового изображения, которое должно быть кодировано, предиктор (635) может искать в памяти (634) опорных изображений данные отсчетов (в качестве кандидатов блоков опорных пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и так далее, которые могут служить подходящим эталоном предсказания для новых изображений. Предиктор (635) может работать на основе блока отсчетов "блок-за-пикселем", чтобы найти соответствующие эталоны предсказания. В некоторых случаях, как определено результатами поиска, полученными предсказателем (635), входное изображение может иметь эталоны предсказания, взятые из множества опорных изображений, сохраненных в памяти (6734) опорных изображений.[87] The predictor (635) may perform predictive searches for the encoding engine (632). That is, for a new picture to be encoded, the predictor (635) may search the reference picture memory (634) for sample data (as reference pixel block candidates) or certain metadata such as reference picture motion vectors, block shapes, and so on. further, which can serve as a suitable prediction reference for new images. The predictor (635) may operate on a block-by-pixel basis of samples to find appropriate prediction references. In some cases, as determined by the search results obtained by the predictor (635), the input picture may have prediction references taken from a plurality of reference pictures stored in the reference picture memory (6734).

[88] Контроллер (650) может управлять операциями кодирования исходного кодера (630), включая, например, установку параметров и параметров субгруппы, используемых для кодирования видеоданных.[88] The controller (650) may control the encoding operations of the source encoder (630), including, for example, setting parameters and subgroup parameters used to encode video data.

[89] Выходные сигналы всех вышеупомянутых функциональных модулей могут подвергаться энтропийному кодированию в энтропийном кодере (645). Энтропийный кодер (645) переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия без потерь символов согласно таким технологиям, как кодирование Хаффмана, кодирование с переменной длиной, арифметическое кодирование и так далее.[89] The output signals of all the above functional modules can be entropy encoded in an entropy encoder (645). An entropy encoder (645) translates symbols generated by various functional units into an encoded video sequence by lossless symbol compression according to techniques such as Huffman coding, variable length coding, arithmetic coding, and so on.

[90] Контроллер (650) может управлять работой видеокодера (603). Во время кодирования контроллер (650) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов изображений:[90] The controller (650) may control the operation of the video encoder (603). During encoding, the controller (650) may assign to each encoded picture a certain type of encoded picture, which may affect the encoding methods that can be applied to the corresponding picture. For example, images can often be categorized as one of the following image types:

[91] Интра-изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают различные типы интра-изображений, включая, например, изображения с независимым обновлением декодера («IDR»). Специалисту в области техники известны эти варианты I-изображений и их соответствующие применения и особенности.[91] An intra-picture (I-picture) may be one that can be encoded and decoded without using any other picture in the sequence as a prediction source. Some video codecs allow various types of intra-pictures, including, for example, independent decoder update ("IDR") pictures. The person skilled in the art will be aware of these variants of I-images and their respective uses and features.

[92] Изображение с предсказанием (Р-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интра-предсказания или интерпредсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.[92] A predictive picture (P-picture) may be one that can be encoded and decoded using intra-prediction or inter-prediction using at most one motion vector and a reference index to predict sample values of each block.

[93] Изображение с двунаправленным предсказанием (В-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интра-предсказания или интер-предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.[93] A bidirectional predictive picture (B-picture) may be one that can be encoded and decoded using intra-prediction or inter-prediction using at most two motion vectors and reference indices to predict sample values of each block. Similarly, multi-prediction images may use more than two reference images and associated metadata to reconstruct a single block.

[94] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки из 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки 1-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или интрапредсказание). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.[94] Source images can typically be spatially divided into multiple blocks of samples (eg, blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and encoded on a block-by-block basis. The blocks may be predictively encoded with reference to other (already encoded) blocks, as determined by the coding assignment applied to the corresponding block images. For example, 1-picture blocks may be predictively encoded or they may be predictively encoded with reference to already encoded blocks of the same image (spatial prediction or intra prediction). The pixel blocks of P-pictures may be predictively encoded, by spatial prediction, or by temporal prediction with reference to one previously encoded reference picture. Blocks of B-pictures may be predictively coded, spatially predicted, or temporally predicted with reference to one or two previously encoded reference pictures.

[95] Видеокодер (603) может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, такой как ITU-T Rec. Н.265. В своей работе видеокодер (603) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.[95] The video encoder (603) may perform encoding operations in accordance with a predetermined video coding technology or standard, such as ITU-T Rec. H.265. In operation, the video encoder (603) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. The encoded video data may therefore follow the syntax given by the video coding technology or standard being used.

[96] Видео может быть в форме множества исходных изображений (изображений) во временной последовательности. Интра-кадровое предсказание (часто сокращенно называемое интра-предсказанием) использует пространственную корреляцию в данном изображении, а интер-кадровое предсказание использует (временную или другую) корреляцию между изображениями. В примере конкретное изображение при кодировании/декодировании, которое упоминается как текущее изображение, разбивается на блоки. Когда блок в текущем изображении подобен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может быть кодирован вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.[96] The video may be in the form of a plurality of source images (images) in time sequence. Intra-frame prediction (often abbreviated as intra-prediction) uses the spatial correlation in a given image, while inter-frame prediction uses (temporal or other) correlation between images. In the example, a specific image, when encoding/decoding, which is referred to as the current image, is divided into blocks. When a block in the current picture is similar to a reference block in a previously encoded and still buffered reference picture in a video, the block in the current picture may be encoded with a vector called a motion vector. The motion vector points to a reference block in the reference picture and may have a third dimension identifying the reference picture if multiple reference pictures are used.

[97] В некоторых вариантах осуществления при интер-кадровом предсказании может использоваться метод двойного предсказания. Согласно методу двойного предсказания, два опорных изображения, такие как первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может быть кодирован первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может быть предсказан комбинацией первого опорного блока и второго опорного блока.[97] In some embodiments, inter-frame prediction may use a dual prediction technique. According to the double prediction method, two reference pictures, such as a first reference picture and a second reference picture, which both precede in decoding order the current picture in the video (but may be in the past and future, respectively, in display order). A block in the current picture may be encoded with a first motion vector that points to a first reference block in a first reference picture and a second motion vector that points to a second reference block in a second reference picture. The block may be predicted by the combination of the first reference block and the second reference block.

[98] Кроме того, метод режима слияния может использоваться в интер-кадровом предсказании для повышения эффективности кодирования.[98] In addition, the merge mode technique can be used in inter-frame prediction to improve coding efficiency.

[99] Согласно некоторым вариантам осуществления изобретения, предсказания, такие как интер-кадровые предсказания и интра-кадровые предсказания, выполняются в единице блоков. Например, в соответствии со стандартом HEVC, изображение в последовательности видеоизображений разделяется на единицы дерева кодирования (CTU) для сжатия, причем CTU в изображении имеют одинаковый размер, например 64×64 пикселей, 32×32 пикселей или 16×16 пикселей. В общем, CTU включает в себя три блока дерева кодирования (СТВ), которые представляют собой один СТВ яркости и два СТВ цветности. Каждая CTU может быть рекурсивно разделена на квадродерево на одну или множество единиц кодирования (CU). Например, CTU размером 64×64 пикселей можно разделить на один CU из 64×64 пикселей, или 4 CU из 32×32 пикселей, или 16 CU из 16×16 пикселей. В примере каждый CU анализируется для определения типа предсказания для CU, такого как тип интер-предсказания или тип интра-предсказания. CU разделяется на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. Обычно каждая PU включает в себя блок предсказания яркости (РВ) и два РВ цветности. В варианте осуществления операция предсказания при кодировании (кодировании / декодировании) выполняется в единицах блоков предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, такую как 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.[99] According to some embodiments of the invention, predictions such as inter-frame predictions and intra-frame predictions are performed in a unit of blocks. For example, according to the HEVC standard, an image in a video sequence is divided into coding tree units (CTUs) for compression, where the CTUs in the image are the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. In general, the CTU includes three coding tree units (CTBs), which are one luma CTB and two chrominance CTBs. Each CTU may be recursively split into a quadtree into one or multiple coding units (CUs). For example, a CTU of 64x64 pixels can be divided into one CU of 64x64 pixels, or 4 CUs of 32x32 pixels, or 16 CUs of 16x16 pixels. In the example, each CU is parsed to determine a prediction type for the CU, such as an inter-prediction type or an intra-prediction type. The CU is divided into one or more prediction units (PUs) depending on temporal and/or spatial predictability. Typically, each PU includes a Luma Prediction Unit (PB) and two Chroma PBs. In an embodiment, the encoding (encoding/decoding) prediction operation is performed in units of prediction blocks. Using the luminance prediction block as an example of the prediction block, the prediction block includes a matrix of values (e.g., luminance values) for pixels, such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc. P.

[100] Фиг. 7 показывает блок-схему G-PPC кодера (700) в соответствии с вариантом осуществления. Кодер (700) может быть конфигурирован для приема данных облака точек и сжатия данных облака точек для генерирования битового потока, несущего сжатые данные облака точек. В варианте осуществления кодер (700) может включать в себя модуль (710) квантования положения, модуль (712) удаления дублированных точек, модуль (730) кодирования октодерева, модуль (720) передачи атрибутов, модуль (740) генерирования уровня детализации (LOD), модуль (750) предсказания атрибутов, модуль (760) квантования остатка, модуль (770) арифметического кодирования, модуль (780) обратного квантования остатка, модуль (781) сложения и память (790) для хранения восстановленных значений атрибутов.[100] FIG. 7 shows a block diagram of a G-PPC encoder (700) according to an embodiment. The encoder (700) may be configured to receive point cloud data and compress the point cloud data to generate a bit stream carrying the compressed point cloud data. In an embodiment, the encoder (700) may include a position quantization module (710), a duplicate point removal module (712), an octree encoding module (730), an attribute transmission module (720), a level of detail (LOD) generation module (740) , an attribute prediction module (750), a residual quantization module (760), an arithmetic encoding module (770), an inverse residual quantization module (780), an addition module (781), and a memory (790) for storing the recovered attribute values.

[101] Как показано, входное облако (701) точек может быть получено в кодере (700). Позиции (например, трехмерные координаты) облака (701) точек предоставляются модулю (710) квантования. Модуль (710) квантования конфигурирован для квантования координат для генерирования квантованных позиций. Модуль (712) удаления дублированных точек конфигурирован для приема квантованных позиций и выполнения процесса фильтрации для идентификации и удаления дублированных точек. Модуль (730) кодирования октодерева конфигурирован для приема отфильтрованных позиций от модуля (712) удаления дублированных точек и выполнения процесса кодирования на основе октодерева для генерирования последовательности кодов занятости, которые описывают трехмерную сетку вокселей. Коды занятости передаются в модуль (770) арифметического кодирования.[101] As shown, the input point cloud (701) can be obtained in the encoder (700). The positions (eg, 3D coordinates) of the point cloud (701) are provided to the quantization module (710). The quantization module (710) is configured to quantize coordinates to generate quantized positions. The duplicate point removal module (712) is configured to receive the quantized positions and perform a filtering process to identify and remove the duplicate points. The octree encoding module (730) is configured to receive the filtered positions from the duplicate point removal module (712) and perform an octree-based encoding process to generate a sequence of busy codes that describe a three-dimensional grid of voxels. The busy codes are passed to the arithmetic coding module (770).

[102] Модуль (720) передачи атрибутов конфигурирован для приема атрибутов входного облака точек и выполнения процесса передачи атрибутов для определения значения атрибута для каждого вокселя, когда несколько значений атрибута ассоциированы с соответствующим вокселем. Процесс переноса атрибутов может выполняться для переупорядоченных точек, выводимых из модуля (730) кодирования октодерева. Атрибуты после операций передачи предоставляются модулю (750) предсказания атрибутов. Модуль (740) генерирования LOD конфигурирован для работы с переупорядоченными точками, выводимыми из модуля (730) кодирования октодерева, и переорганизации точек в разных LOD. Информация LOD подается в модуль (750) предсказания атрибутов.[102] The attribute transfer module (720) is configured to receive attributes of the input point cloud and perform an attribute transfer process to determine an attribute value for each voxel when multiple attribute values are associated with a corresponding voxel. The attribute transfer process may be performed on the reordered points output from the octree encoding module (730). The attributes after the transfer operations are provided to the attribute prediction module (750). The LOD generation module (740) is configured to work with the reordered points output from the octree encoding module (730) and reorganize the points in different LODs. The LOD information is provided to the attribute prediction module (750).

[103] Модуль (750) предсказания атрибутов обрабатывает точки в соответствии с порядком на основе LOD, указанным информацией LOD из модуля (740) генерирования LOD. Модуль (750) предсказания атрибута генерирует предсказание атрибута для текущей точки на основе восстановленных атрибутов набора соседних точек текущей точки, сохраненных в памяти (790). Остатки предсказания могут впоследствии быть получены на основе исходных значений атрибутов, полученных от модуля (720) передачи атрибутов, и локально сгенерированных предсказаний атрибутов. Когда индексы кандидатов используются в процессе предсказания соответствующего атрибута, индекс, соответствующий выбранному кандидату предсказания, может быть предоставлен в модуль (770) арифметического кодирования.[103] The attribute prediction module (750) processes the points in accordance with the LOD-based order indicated by the LOD information from the LOD generation module (740). The attribute prediction module (750) generates an attribute prediction for the current point based on the restored attributes of the set of neighboring points of the current point stored in the memory (790). The prediction residuals may subsequently be obtained based on the original attribute values received from the attribute transmission module (720) and the locally generated attribute predictions. When candidate indexes are used in a corresponding attribute prediction process, an index corresponding to the selected prediction candidate may be provided to the arithmetic encoding unit (770).

[104] Модуль (760) квантования остатка конфигурирован для приема остатков предсказания от модуля (750) предсказания атрибутов и выполнения квантования для генерирования квантованных остатков. Квантованные остатки предоставляются в модуль (770) арифметического кодирования.[104] The residual quantization module (760) is configured to receive prediction residuals from the attribute prediction module (750) and perform quantization to generate quantized residuals. The quantized residuals are provided to the arithmetic coding module (770).

[105] Модуль (780) обратного квантования остатка конфигурирован для приема квантованных остатков от модуля (760) квантования остатка и генерирования восстановленных остатков предсказания посредством выполнения операций, обратных операциям квантования, выполняемым в модуле (760) квантования остатка. Модуль (781) сложения конфигурирован для приема восстановленных остатков предсказания от модуля (780) обратного квантования остатка и соответствующих предсказаний атрибутов от модуля (750) предсказания атрибутов. Посредством комбинирования восстановленных остатков предсказания и предсказаний атрибутов, восстановленные значения атрибутов генерируются и сохраняются в памяти (790).[105] The inverse quantization module (780) is configured to receive quantized residuals from the residual quantization module (760) and generate reconstructed prediction residuals by performing the inverse operations of the quantization operations performed in the residual quantization module (760). The adder (781) is configured to receive the reconstructed prediction residuals from the residual inverse quantizer (780) and corresponding attribute predictions from the attribute predictor (750). By combining the recovered prediction residuals and the attribute predictions, the recovered attribute values are generated and stored in memory (790).

[106] Модуль (770) арифметического кодирования конфигурирован для приема кодов занятости, индексов кандидатов (если используются), квантованных остатков (если сгенерированы) и другой информации, а также выполнения энтропийного кодирования для дальнейшего сжатия полученных значений или информации. В результате может быть сгенерирован сжатый битовый поток (702), несущий сжатую информацию. Битовый поток (702) может быть передан или иным образом предоставлен декодеру, который декодирует сжатый битовый поток, или может быть сохранен в запоминающем устройстве.[106] The arithmetic encoding module (770) is configured to receive occupancy codes, candidate indices (if used), quantized residuals (if generated), and other information, and perform entropy encoding to further compress the received values or information. As a result, a compressed bit stream (702) carrying compressed information can be generated. The bitstream (702) may be transmitted to or otherwise provided to a decoder that decodes the compressed bitstream, or may be stored in a storage device.

[107] Фиг. 8 показывает блок-схему G-PCC декодера (800) в соответствии с вариантом осуществления. Декодер (800) может быть конфигурирован для приема сжатого битового потока и выполнения распаковки данных облака точек для распаковки битового потока для генерирования декодированных данных облака точек. В варианте осуществления декодер (800) может включать в себя модуль (810) арифметического декодирования, модуль (820) обратного квантования остатка, модуль (830) декодирования октодерева, модуль (840) генерирования LOD, модуль (850) предсказания атрибутов и память (860) для хранения восстановленных значений атрибутов.[107] FIG. 8 shows a block diagram of a G-PCC decoder (800) according to an embodiment. The decoder (800) may be configured to receive the compressed bitstream and perform decompression of the point cloud data to decompress the bitstream to generate decoded point cloud data. In an embodiment, the decoder (800) may include an arithmetic decoding module (810), a residual inverse quantization module (820), an octree decoding module (830), a LOD generation module (840), an attribute prediction module (850), and a memory (860). ) to store the restored attribute values.

[108] Как показано, сжатый битовый поток (801) может быть получен в модуле (810) арифметического декодирования. Модуль (810) арифметического декодирования конфигурирован для декодирования сжатого битового потока (801) для получения квантованных остатков (если они сгенерированы) и кодов занятости облака точек. Модуль (830) декодирования октодерева конфигурирован для определения восстановленных положений точек в облаке точек в соответствии с кодами занятости. Модуль (840) генерирования LOD конфигурирован для переорганизации точек в разных LOD на основе восстановленных положений и для определения порядка на основе LOD. Модуль (820) обратного квантования остатка конфигурирован для генерирования восстановленных остатков на основе квантованных остатков, полученных от модуля (810) арифметического декодирования.[108] As shown, the compressed bitstream (801) can be obtained in the module (810) arithmetic decoding. The arithmetic decoding module (810) is configured to decode the compressed bitstream (801) to obtain quantized residuals (if generated) and point cloud occupancy codes. The octree decoding module (830) is configured to determine the recovered point cloud positions in accordance with the busy codes. The LOD generation module (840) is configured to reorganize points in different LODs based on the recovered positions and to determine an order based on the LOD. The residual inverse quantization module (820) is configured to generate reconstructed residuals based on the quantized residuals received from the arithmetic decoding module (810).

[109] Модуль (850) предсказания атрибута конфигурирован для выполнения процесса предсказания атрибута, чтобы определять предсказания атрибута для точек в соответствии с порядком на основе LOD. Например, предсказание атрибута текущей точки может быть определено на основе восстановленных значений атрибутов точек, соседних для текущей точки, сохраненных в памяти (860). Модуль (850) предсказания атрибута может комбинировать предсказание атрибута с соответствующим восстановленным остатком, чтобы сгенерировать восстановленный атрибут для текущей точки.[109] The attribute prediction module (850) is configured to perform an attribute prediction process to determine attribute predictions for points according to LOD-based order. For example, the current point attribute prediction may be determined based on the recovered point attribute values of the current point's neighbors stored in memory (860). An attribute prediction module (850) may combine the attribute prediction with the corresponding reconstructed residual to generate a reconstructed attribute for the current point.

[110] Последовательность восстановленных атрибутов, сгенерированная из модуля (850) предсказания атрибутов, вместе с восстановленными позициями, сгенерированными из модуля (830) декодирования октодерева, соответствует декодированному облаку точек (802), которое выводится из декодера (800) в одном примере. Кроме того, восстановленные атрибуты также сохраняются в памяти (860) и могут впоследствии использоваться для получения предсказаний атрибутов для последующих точек.[110] The sequence of recovered attributes generated from the attribute prediction module (850), together with the recovered positions generated from the octree decoding module (830), corresponds to the decoded point cloud (802) that is output from the decoder (800) in one example. In addition, the recovered attributes are also stored in memory (860) and can later be used to derive attribute predictions for subsequent points.

[111] В различных вариантах осуществления кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы с помощью аппаратных средств, программного обеспечения или их комбинации. Например, кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы с помощью схемы обработки, такой как одна или несколько интегральных схем (IC), которые работают с программным обеспечением или без него, такие как специализированная интегральная схема (ASIC), программируемая вентильная матрица (FPGA) и т.п. В другом примере кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы как программное обеспечение или микропрограммное обеспечение, включая инструкции, хранящиеся в энергонезависимом (или невременном) машиночитаемом носителе данных. Инструкции, при выполнении схемой обработки, такой как один или несколько процессоров, предписывают схеме обработки выполнять функции кодера (300), декодера (400), кодера (700) и/или декодера (800).[111] In various embodiments, the encoder (300), decoder (400), encoder (700), and/or decoder (800) may be implemented in hardware, software, or a combination thereof. For example, the encoder (300), decoder (400), encoder (700), and/or decoder (800) may be implemented with a processing circuit, such as one or more integrated circuits (ICs), that operate with or without software. such as application specific integrated circuit (ASIC), field programmable gate array (FPGA), and the like. In another example, encoder (300), decoder (400), encoder (700), and/or decoder (800) may be implemented as software or firmware, including instructions stored in a non-volatile (or non-transitory) computer-readable storage medium. The instructions, when executed by a processing circuit, such as one or more processors, cause the processing circuit to perform the functions of an encoder (300), decoder (400), encoder (700), and/or decoder (800).

[112] Следует отметить, что модули (750) и (850) предсказания атрибутов, конфигурированные для осуществления методов предсказания атрибутов, раскрытых в настоящем документе, могут быть включены в другие декодеры или кодеры, которые могут иметь структуру, аналогичную или отличную от показанной на фиг. 7 и фиг. 8. Кроме того, кодер (700) и декодер (800) могут быть включены в одно и то же устройство или в отдельные устройства в различных примерах.[112] It should be noted that attribute prediction modules (750) and (850) configured to implement the attribute prediction methods disclosed herein may be included in other decoders or encoders, which may have a structure similar or different from that shown in fig. 7 and FIG. 8. In addition, the encoder (700) and decoder (800) may be included in the same device or in separate devices in different examples.

[113] Согласно некоторым аспектам раскрытия в РСС может использоваться структура октодерева геометрии. В некоторых связанных примерах структура октодерева геометрии просматривается в порядке "в ширину". В соответствии с порядком "в ширину" узлы октодерева на текущем уровне могут посещаться после посещения узлов октодерева на верхнем уровне. Согласно аспекту настоящего раскрытия, схема порядка "в ширину" не подходит для параллельной обработки, поскольку текущий уровень должен ожидать кодирование верхнего уровня. Настоящее раскрытие предусматривает методы для добавления порядка кодирования "в глубину" в методы порядка кодирования для структуры октодерева геометрии. Порядок кодирования в глубину может быть объединен с порядком кодирования в глубину в некоторых вариантах осуществления или может использоваться сам по себе в некоторых вариантах осуществления. Порядки кодирования (например, порядок кодирования в глубину, комбинация порядка кодирования в глубину и порядка кодирования в ширину, и т.п.) могут называться гибридными порядками кодирования для РСС в настоящем раскрытии.[113] According to some aspects of the disclosure, a geometry octree structure may be used in the PCC. In some related examples, the geometry octree structure is viewed in widthwise order. According to breadth-first order, octree nodes at the current level can be visited after visiting octree nodes at the top level. According to an aspect of the present disclosure, the width-to-width ordering scheme is not suitable for parallel processing because the current layer must wait for the top layer encoding. The present disclosure provides methods for adding depth-encoding order to encoding order methods for a geometry octree structure. Depth-coding order may be combined with depth-coding order in some embodiments, or may be used by itself in some embodiments. Encoding orders (eg, depth-encoding order, combination of depth-encoding order and width-encoding order, etc.) may be referred to as hybrid coding orders for PCC in the present disclosure.

[114] Предлагаемые способы можно использовать по отдельности или комбинировать в любом порядке. Кроме того, каждый из способов (или вариантов осуществления), кодера и декодера может быть реализован схемами обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере один или более процессоров выполняют программу, которая хранится на невременном машиночитаемом носителе.[114] The proposed methods can be used individually or combined in any order. In addition, each of the encoder and decoder methods (or embodiments) may be implemented by processing circuits (eg, one or more processors or one or more integrated circuits). In one example, one or more processors execute a program that is stored on a non-transitory computer-readable medium.

[115] Согласно некоторым аспектам раскрытия, информация геометрии и связанные атрибуты облака точек, такие как цвет, коэффициент отражения и т.п., могут сжиматься по-отдельности (например, в модели Test Model 13 (ТМС13)). Информация геометрии облака точек, которая включает в себя трехмерные координаты точек в облаке точек, может быть кодирована с помощью разделения октодерева с информацией о занятости разделов. Атрибуты могут быть сжаты на основе восстановленной геометрии с использованием, например, методов предсказания, подъема и адаптивного иерархического преобразования области.[115] According to some aspects of the disclosure, geometry information and associated point cloud attributes such as color, reflectance, and the like, may be compressed separately (eg, in Test Model 13 (TMC13)). The point cloud geometry information, which includes the 3D coordinates of the points in the point cloud, may be encoded by partitioning an octree with partition occupancy information. The attributes may be compressed based on the reconstructed geometry using, for example, prediction, lifting, and adaptive area hierarchical transformation techniques.

[116] Согласно некоторым аспектам раскрытия, трехмерное пространство может быть разделено с использованием разделения октодерева. Октодеревья являются трехмерным аналогом квадродеревьев в двумерном пространстве. Техника разделения октодерева относится к технике разделения, которая рекурсивно разделяет трехмерное пространство на восемь октантов, аи структура октодерева относится к древовидной структуре, которая представляет разделы. В примере каждый узел в структуре октодерева соответствует трехмерному пространству, и узел может быть конечным узлом (без разделения, также называемым листовым узлом в некоторых примерах) или узлом с дополнительным разделением. Разделение в узле может разделить трехмерное пространство, представленное узлом, на восемь октантов. В некоторых примерах узлы, соответствующие разделам конкретного узла, могут называться дочерними узлами конкретного узла.[116] According to some aspects of the disclosure, three-dimensional space can be partitioned using octree partitioning. Octrees are the 3D analog of quadtrees in 2D. The octree splitting technique refers to a splitting technique that recursively divides three-dimensional space into eight octants, and the octree structure refers to a tree structure that represents partitions. In the example, each node in the octree structure corresponds to a 3D space, and the node can be a leaf node (no split, also called a leaf node in some examples) or an optional split node. The division at a node can divide the three-dimensional space represented by the node into eight octants. In some examples, nodes corresponding to sections of a particular node may be referred to as child nodes of the particular node.

[117] На фиг. 9 показана схема, иллюстрирующая разделение трехмерного куба (900) (соответствующего узлу) на основе техники разделения октодерева согласно некоторым вариантам осуществления настоящего раскрытия. Раздел может разделять трехмерный куб (900) на восемь равновеликих меньших кубов 0-7, как показано на фиг. 9.[117] FIG. 9 is a diagram illustrating partitioning of a 3D cube (900) (corresponding to a node) based on an octree partitioning technique according to some embodiments of the present disclosure. The partition may divide the 3D cube (900) into eight smaller 0-7 cubes of equal size, as shown in FIG. 9.

[118] Метод разделения октодерева (например, в ТМС13) может рекурсивно разделять исходное трехмерное пространство на меньшие единицы, и информация о занятости каждого подпространства может быть кодирована для представления положений геометрии.[118] An octree partitioning technique (eg, in TMC13) can recursively partition the original 3D space into smaller units, and the occupancy information of each subspace can be encoded to represent geometry positions.

[119] В некоторых вариантах осуществления (например, в ТМС13) используется кодек октодерева геометрии. Кодек октодерева геометрии может выполнять кодирование геометрии. В некоторых примерах кодирование геометрии выполняется на кубическом прямоугольнике. Например, кубический прямоугольник может быть выровненным по оси ограничивающим прямоугольником В, который определяется двумя точками (0,0,0) и (2M-1, 2M-1, 2M-1), где 2M-1 определяет размер ограничивающего прямоугольника В и М может быть указан в битовом потоке.[119] In some embodiments (eg, TMC13), a geometry octree codec is used. The geometry octree codec can perform geometry encoding. In some examples, geometry encoding is performed on a cubic rectangle. For example, a cubic rectangle could be an axis-aligned B bounding box that is defined by two points (0,0,0) and (2 M-1 , 2 M-1 , 2 M-1 ), where 2 M-1 specifies the size of the bounding box. rectangles B and M can be specified in the bitstream.

[120] Затем структура октодерева строится путем рекурсивного деления кубического блока. Например, кубический блок, определяемый двумя точками (0,0,0), (2M-1, 2M-1, 2M-1) делится на 8 субкубических блоков, затем генерируется 8-битный код, называемый кодом занятости. Каждый бит кода занятости ассоциирован с субкубическим блоком, и значение этого бита используется, чтобы указать, содержит ли ассоциированный субкубический блок какие-либо точки облака точек. Например, значение бита 1 указывает, что субкубический блок, ассоциированный с битом, содержит одну или несколько точек облака точек; и значение бита 0 указывает, что субкубический блок, ассоциированный с битом, не содержит точки облака точек.[120] The octree structure is then built by recursively dividing the cubic block. For example, a cubic block defined by two points (0,0,0), (2 M-1 , 2 M-1 , 2 M-1 ) is divided into 8 sub-cubic blocks, then an 8-bit code called a busy code is generated. Each bit of the busy code is associated with a subcube block, and the value of this bit is used to indicate whether the associated subcube block contains any point cloud points. For example, a bit value of 1 indicates that the subcube block associated with the bit contains one or more point cloud points; and a bit value of 0 indicates that the subcube block associated with the bit does not contain a point cloud point.

[121] Кроме того, в случае пустого субкубического блока (например, значение бита, ассоциированного с субкубическим блоком, равно 0), к субкубическому блоку больше не применяется деление. Когда субкубический блок имеет одну или несколько точек облака точек (например, значение бита, ассоциированного с субкубическим блоком, равно 1), субкубический блок дополнительно делится на 8 субкубических блоков меньшего размера и код занятости может быть сгенерирован для субкубического блока, чтобы указать занятость меньших субкубических блоков. В некоторых примерах операции субделения могут повторно выполняться над непустыми субкубическими блоками до тех пор, пока размер субкубических блоков не станет равным заранее определенному порогу, например, размер равен 1. В некоторых примерах субкубические блоки размером 1 называются вокселями, а субкубические блоки, размер которых превышает размер вокселей, могут называться невокселями.[121] In addition, in the case of an empty subcubic block (eg, the value of the bit associated with the subcubic block is 0), division is no longer applied to the subcubic block. When a subcube block has one or more point cloud points (e.g., the value of a bit associated with the subcube block is 1), the subcube block is further divided into 8 smaller subcube blocks, and an occupancy code may be generated for the subcube block to indicate the occupancy of the smaller subcube blocks. blocks. In some examples, sub-division operations may be repeatedly performed on non-empty sub-cube blocks until the size of the sub-cubic blocks becomes equal to a predetermined threshold, for example, the size is 1. In some examples, sub-cubic blocks of size 1 are called voxels, and sub-cubic blocks whose size exceeds the size of voxels, may be called non-voxels.

[122] Фиг. 10 показывает пример разделения (1010) октодерева и структуры (1020) октодерева, соответствующей разделению (1010) октодерева, согласно некоторым вариантам осуществления изобретения. Фиг. 10 показывает два уровня разделения в разделении (1010) октодерева. Структура (1020) октодерева включает в себя узел (N0), соответствующий кубическому блоку для разделения (1010) октодерева. На первом уровне кубический блок разделен на 8 субкубических блоков, которые пронумерованы от 0 до 7 согласно методу нумерации, показанному на фиг. 9. Код занятости для раздела узла N0 - это «10000001» в двоичном формате, что указывает то, что первый субкубический блок, представленный узлом N0-0, а восьмой субкубический блок, представленный узлом N0-7, включают точки в облаке точек, а другие субкубические боксы пусты.[122] FIG. 10 shows an example of an octree split (1010) and an octree structure (1020) corresponding to an octree split (1010), according to some embodiments of the invention. Fig. 10 shows two levels of division in division (1010) of the octree. The octree structure (1020) includes a node (N0) corresponding to a cube block for dividing (1010) the octree. At the first level, the cubic block is divided into 8 subcubic blocks, which are numbered from 0 to 7 according to the numbering method shown in FIG. 9. The occupancy code for the partition of node N0 is "10000001" in binary, indicating that the first subcubic block represented by node N0-0 and the eighth subcubic block represented by node N0-7 include points in the point cloud, and the other subcubic boxes are empty.

[123] Затем на втором уровне разделения первый субкубический блок (представленный узлом N0-0) и восьмой субкубический блок (представленный узлом N0-7) дополнительно соответственно подразделяются на восемь октантов. Например, первый субкубический блок (представленный узлом N0-0) разделен на 8 субкубических блоков меньшего размера, которые пронумерованы от 0 до 7 согласно методу нумерации, показанному на фиг. 9. Код занятости для раздела узла N0-0 - это «00011000» в двоичном формате, что указывает на то, что четвертый меньший субкубический блок (представленный узлом N0-0-3) и пятый меньший субкубический блок (представленный узлом N0-0-4) включают точки в облаке точек, а другие меньшие субкубические прямоугольники пусты. На втором уровне седьмой субкубический блок (представленный узлом N0-7) аналогично разделен на 8 субкубических блоков меньшего размера, как показано на фиг. 10.[123] Then, in the second partitioning level, the first subcubic block (represented by node N0-0) and the eighth subcubic block (represented by node N0-7) are further subdivided into eight octants, respectively. For example, the first subcubic block (represented by node N0-0) is divided into 8 smaller subcubic blocks that are numbered 0 to 7 according to the numbering method shown in FIG. 9. The busy code for the section of node N0-0 is "00011000" in binary, indicating that the fourth smaller subcubic block (represented by node N0-0-3) and the fifth smaller subcubic block (represented by node N0-0-3) 4) include points in the point cloud, and other smaller subcubic rectangles are empty. At the second level, the seventh subcubic block (represented by node N0-7) is likewise divided into 8 smaller subcubic blocks, as shown in FIG. 10.

[124] На фиг. 10, узлы, соответствующие непустому кубическому пространству (например, кубический ящик, субкубические блоки, субкубические блоки меньшего размера и т.п.), окрашены в серый цвет и называются заштрихованными узлами.[124] FIG. 10, nodes corresponding to a non-empty cubic space (eg, a cubic box, subcubic blocks, smaller subcubic blocks, etc.) are colored gray and are referred to as shaded nodes.

[125] Согласно некоторым аспектам раскрытия коды занятости могут быть соответствующим образом сжаты с использованием подходящих методов кодирования. В некоторых вариантах осуществления арифметический кодер используется для сжатия кода занятости текущего узла в структуре октодерева. Код занятости может быть обозначен как S, который является 8-битовым целым числом, и каждый бит в S указывает статус занятости дочернего узла текущего узла. В варианте осуществления код занятости кодируется с использованием побитового кодирования. В другом варианте код занятости кодируется с использованием побайтового кодирования. В некоторых примерах (например, ТМС13) побитовое кодирование разрешено по умолчанию. Как побитовое кодирование, так и побайтовое кодирование могут выполнять арифметическое кодирование с контекстным моделированием для кодирования кода занятости. Контекстный статус может быть инициализирован в начале всего процесса кодирования для кодов занятости и обновляться во время процесса кодирования кодов занятости.[125] According to some aspects of the disclosure, busy codes may be appropriately compressed using suitable encoding techniques. In some embodiments, an arithmetic encoder is used to compress the current node's busy code into an octree structure. The busy code can be denoted as S, which is an 8-bit integer, and each bit in S indicates the busy status of a child node of the current node. In an embodiment, the busy code is encoded using bit coding. In another embodiment, the busy code is encoded using byte coding. In some examples (eg TMC13) bit encoding is enabled by default. Both bit coding and byte coding can perform context modeling arithmetic coding to encode the busy code. The context status may be initialized at the start of the entire encoding process for busy codes and updated during the encoding process for busy codes.

[126] В варианте осуществления побитового кодирования для кодирования кода занятости для текущего узла восемь бинов в S для текущего узла кодируются в определенном порядке. Каждый бин в S кодируется посредством ссылки на статус занятости соседних узлов текущего кода и/или дочерних узлов соседних узлов. Соседние узлы находятся на том же уровне, что и текущий узел, и могут называться братскими узлами текущего узла.[126] In a bitwise encoding embodiment for encoding a busy code for the current node, the eight bins in S for the current node are encoded in a certain order. Each bin in S is encoded by referring to the occupancy status of neighboring nodes of the current code and/or children of neighboring nodes. Neighbor nodes are at the same level as the current node and may be referred to as sibling nodes of the current node.

[127] В варианте осуществления побайтового кодирования для кодирования кода занятости текущего узла код занятости S (один байт) может быть кодирован путем обращения к: (1) адаптивной поисковой таблице (A-LUT), которая отслеживает Р (например, 32) наиболее часто используемые коды занятости; и (2) кэшу, который отслеживает последние различные наблюдаемые Q (например, 16) коды занятости.[127] In a byte-by-byte encoding embodiment for encoding the current node's busy code, the busy code S (one byte) can be encoded by referring to: (1) an adaptive lookup table (A-LUT) that keeps track of P (e.g., 32) most frequently employment codes used; and (2) a cache that keeps track of the last different observed Q (eg, 16) busy codes.

[128] В некоторых примерах побайтового кодирования кодируется двоичный флаг, указывающий, находится ли S в A-LUT или нет. Если S находится в A-LUT, индекс в A-LUT кодируется с использованием двоичного арифметического кодера. Если S отсутствует в A-LUT, то кодируется двоичный флаг, указывающий, находится ли S в кэше или нет. Если S находится в кэше, то двоичное представление его индекса в кэше кодируется с помощью двоичного арифметического кодера. В противном случае, если S отсутствует в кэше, двоичное представление S кодируется с помощью двоичного арифметического кодера.[128] In some examples of byte coding, a binary flag is encoded indicating whether S is in the A-LUT or not. If S is in A-LUT, the index in 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 cache index is encoded using a binary arithmetic encoder. Otherwise, if S is not in the cache, the binary representation of S is encoded using a binary arithmetic encoder.

[129] В некоторых вариантах осуществления на стороне декодера процесс декодирования может начинаться с анализа размеров ограничивающего прямоугольника из битового потока. Ограничивающий прямоугольник указывает на кубический прямоугольник, соответствующий корневому узлу в структуре октодерева, для разделения кубического прямоугольника в соответствии с информацией геометрии облака точек (например, информацией занятости для точек в облаке точек). Затем строится структура октодерева посредством деления кубического блока в соответствии с декодированными кодами занятости.[129] In some embodiments, at the decoder side, the decoding process may begin by parsing the dimensions of the bounding box from the bitstream. The bounding box points to a cubic rectangle corresponding to a root node in the octree structure to partition the cubic rectangle according to point cloud geometry information (eg, occupancy information for points in the point cloud). Then, an octree structure is built by dividing the cube block according to the decoded occupancy codes.

[130] В некоторых связанных примерах (например, в версии ТМС13) для кодирования кодов занятости структура октодерева просматривается в порядке "в ширину". Согласно порядку "в ширину" узлы октодерева (узлы в структуре октодерева) на уровне могут быть посещены после посещения всех узлов октодерева верхнего уровня. В примере реализации может использоваться структура данных «первым пришел - первым обслужен» (FIFO).[130] In some related examples (eg, in the TMC13 version), the octree structure is looked up in widthwise order to encode busy codes. According to breadth-first order, octree nodes (nodes in the octree structure) in a level can be visited after visiting all nodes of the top-level octree. In an example implementation, a first-in-first-out (FIFO) data structure may be used.

[131] Фиг. 11 показывает диаграмму структуры (1100) октодерева, иллюстрирующую порядок кодирования в ширину. Заштрихованные узлы в структуре октодерева (1100) - это узлы, соответствующие кубическим пространствам, которые не являются пустыми. Коды занятости для заштрихованных узлов могут быть кодированы в порядке кодирования в ширину от 0 до 8, как показано на фиг. 11. В порядке кодирования в ширину узлы октодерева посещаются поэтапно. Порядок кодирования в ширину сам по себе не подходит для параллельной обработки, поскольку для текущего уровня необходимо ждать кодирования верхнего уровня.[131] FIG. 11 shows an octree structure diagram (1100) illustrating a width-encoding order. Shaded nodes in the octree structure (1100) are nodes corresponding to cubic spaces that are not empty. The busy codes for the shaded nodes may be encoded in a width-coding order from 0 to 8, as shown in FIG. 11. In width-encoding order, the nodes of the octree are visited incrementally. The width-encoding order by itself is not suitable for parallel processing because the current layer must wait for the top-level encoding.

[132] Некоторые аспекты раскрытия предусматривают гибридный порядок кодирования, который включает в себя по меньшей мере один уровень, который кодируется с использованием порядка кодирования в глубину, вместо порядка кодирования в ширину. Таким образом, в некоторых вариантах осуществления узел на уровне с порядком кодирования в глубину и узлы-потомки этого узла могут формировать структуру субоктодерева в структуре октодерева. Когда первый уровень с порядком кодирования в глубину включает в себя несколько узлов, соответствующих непустым кубическим пространствам, несколько узлов и их соответствующие узлы-потомки могут образовывать несколько структур субоктодерева. Множественные структуры субоктодерева могут кодироваться параллельно в некоторых вариантах осуществления.[132] Some aspects of the disclosure provide for a hybrid coding order that includes at least one layer that is encoded using a depth-encoding order instead of a width-encoding order. Thus, in some embodiments, a node at a depth-encoding level and descendant nodes of that node may form a sub-octree structure within an octree structure. When the first depth-encoding level includes multiple nodes corresponding to non-empty cubic spaces, the multiple nodes and their respective descendant nodes may form multiple sub-octree structures. Multiple sub-octree structures may be encoded in parallel in some embodiments.

[133] Фиг. 12 показывает схему структуры (1200) октодерева, иллюстрирующую порядок кодирования в глубину. Заштрихованные узлы в структуре октодерева (1200) -это узлы, соответствующие кубическим пространствам, которые не являются пустыми. Структура октодерева (1200) может соответствовать той же геометрии занятости облака точек, что и для структуры (1100) октодерева. Коды занятости для заштрихованных узлов могут быть кодированы в порядке кодирования в глубину от 0 до 8, как показано на фиг. 12.[133] FIG. 12 shows an octree structure diagram (1200) illustrating the depth-coding order. Shaded nodes in the octree structure (1200) are nodes corresponding to cubic spaces that are not empty. The octree structure (1200) may correspond to the same point cloud occupancy geometry as the octree structure (1100). The busy codes for the shaded nodes may be coded in depth-coding order from 0 to 8, as shown in FIG. 12.

[134] На примере с фиг. 12, узел «0» может находиться на любой подходящей глубине разделения, такой как PD0, дочерние узлы узла «0» находятся на глубине разделения PD0+1, а дочерние узлы узла «0» находятся на глубине разделения PD0+2. На примере с фиг.12 узлы с глубиной разделения PD0+1 могут быть кодированы в порядке кодирования в глубину. Узлы на глубине раздела PD0+1 включают два узла, которые соответствуют непустому пространству. Два узла и их соответственно узлы-потомки могут образовывать первую структуру субоктодерева (1210) и вторую структуру субоктодерева (1220), эти два узла могут соответственно называться корневыми узлами двух структур субоктодерева.[134] In the example of FIG. 12, node "0" may be at any suitable split depth such as PD0, node "0"'s children are at split depth PD0+1, and node "0"'s children are at split depth PD0+2. In the example of FIG. 12, nodes with a separation depth of PD0+1 may be encoded in depth-coding order. The nodes at section depth PD0+1 include two nodes that correspond to non-empty space. The two nodes and their descendant nodes, respectively, may form a first suboctree structure (1210) and a second suboctree structure (1220), these two nodes may respectively be referred to as the root nodes of the two suboctree structures.

[135] Порядок кодирования в глубину на фиг. 12 упоминается как версия предпорядка для порядка кодирования в глубину. В версии предпорядка порядка кодирования в глубину для каждой структуры субоктодерева сначала посещается корневой узел субоктодерева перед посещением дочерних узлов структуры субоктодерева. Кроме того, сначала посещается самый глубокий узел, а затем выполняется обратная связь с "братьями" родительского узла.[135] The depth-coding order in FIG. 12 is referred to as the preorder version for the depth-coding order. In the depth-coding order preorder version, for each suboctree structure, the root node of the suboctree is visited first before visiting the child nodes of the suboctree structure. In addition, the deepest node is visited first, and then the parent node's siblings are fed back.

[136] На фиг. 12, первая структура (1210) субоктодерева и вторая структура (1220) субоктодерева могут быть кодированы при параллельной обработке в некоторых реализациях. Например, узел 1 и узел 5 можно посещать одновременно. В некоторых примерах рекурсивное программирование или структура данных стека могут использоваться для реализации порядка кодирования в глубину.[136] FIG. 12, the first suboctree structure (1210) and the second suboctree structure (1220) may be coded in parallel processing in some implementations. For example, node 1 and node 5 can be visited at the same time. In some examples, recursive programming or a stack data structure may be used to implement a depth-coding order.

[137] В некоторых вариантах осуществления гибридный порядок кодирования начинается с прохождения в ширину (кодирования), и после нескольких уровней прохождения в ширину может быть разрешено прохождение в глубину (кодирования).[137] In some embodiments, the implementation of the hybrid order of coding begins with a width-traversal (coding), and after several levels of width-traversal, depth-traversal (coding) may be allowed.

[138] Следует отметить, что гибридный порядок кодирования может использоваться в любой подходящей системе РСС, такой как система РСС на основе ТМС13, система РСС на основе MPEG-PCC и т.п.[138] It should be noted that the hybrid coding order can be used in any suitable PCC system, such as a TMC13 PCC system, an MPEG-PCC PCC system, and the like.

[139] Согласно аспекту раскрытия, гибридный порядок кодирования может включать в себя как порядок кодирования в ширину, так и порядок кодирования в глубину, для кодирования информации геометрии облака точек. В варианте осуществления может быть задан размер узла для узлов в структуре октодерева для изменения с порядка кодирования в ширину на порядок кодирования в глубину. В примере, во время РСС, кодирование структуры октодерева начинается с порядка кодирования в ширину, и на уровне, когда размер узла равен указанному размеру узла для изменения порядка кодирования, порядок кодирования может измениться на порядок кодирования в глубину. Следует отметить, что в некоторых примерах размер узла ассоциирован с глубиной раздела.[139] According to an aspect of the disclosure, a hybrid coding order may include both a width coding order and a depth coding order for encoding point cloud geometry information. In an embodiment, the node size of the nodes in the octree structure can be set to change from width-encoding order to depth-encoding order. In the example, during PCC, the encoding of the octree structure starts from the width encoding order, and at the level where the node size is equal to the specified node size for encoding order change, the encoding order may change to the depth encoding order. It should be noted that in some examples the size of the node is associated with the depth of the section.

[140] В другом варианте осуществления может быть указан размер узла для узлов в структуре октодерева для изменения с порядка кодирования в глубину на порядок кодирования в ширину. В примере, во время РСС, кодирование структуры октодерева начинается с порядка кодирования в глубину, и на уровне, когда размер узла равен указанному размеру узла для изменения порядка кодирования, порядок кодирования может измениться на порядок кодирования в ширину. Следует отметить, что в некоторых примерах размер узла ассоциирован с глубиной раздела.[140] In another embodiment, a node size for nodes in the octree structure can be specified to change from depth-encoding order to width-encoding order. In the example, during PCC, the encoding of the octree structure starts from the depth-coding order, and at the level where the node size is equal to the specified node size for encoding order change, the encoding order may change to the width-coding order. It should be noted that in some examples the size of the node is associated with the depth of the section.

[141] Конкретнее, в варианте осуществления, начиная с порядка кодирования в ширину, размер узла может быть представлен в масштабе log2 и обозначается как d=0,1,…, М-1, где М-1 - размер корневого узла и М - максимальное количество глубин разделения октодерева (также упоминается в качестве уровней в некоторых примерах). Кроме того, может быть определен параметр dt, который называется размером изменения порядка кодирования. Например, указанный параметр dt (1≤dt≤М-1) используется для указания того, что порядок в ширину применяется к узлам от размера М-1 до dt, а порядок в глубину применяется к узлам от размера dt-1 до 0. Когда dt=М-1, схема «в глубину» применяется ко всем узлам октодерева из корневого узла. Когда dt=1, структура октодерева кодируется только с использованием порядка кодирования в ширину.[141] More specifically, in an embodiment, starting from a width-encoding order, the size of a node can be represented in log2 scale and denoted as d=0.1,..., M-1, where M-1 is the size of the root node and M is the maximum number of octree split depths (also referred to as levels in some examples). In addition, a parameter d t , which is called the coding reorder size, can be defined. For example, the specified parameter d t (1≤d t ≤M-1) is used to specify that the width order applies to nodes from size M-1 to d t , and the depth order applies to nodes from size d t -1 to 0. When d t =M-1, the depth-scheme is applied to all nodes of the octree from the root node. When d t =1, the octree structure is only encoded using a width-encoding order.

[142] В некоторых вариантах осуществления порядок кодирования для структуры октодерева может начинаться с порядка кодирования в ширину, затем на конкретной глубине (соответствующей конкретному размеру узла), каждый узел на конкретной глубине и узлы-потомки этого узла образуют отдельную структуру субоктодерева облака точек. Таким образом, на конкретной глубине формируются множественные структуры субоктодерева. Структуры субоктодерева могут быть отдельно кодированы с использованием любого подходящего режима кодирования. Например, структура субоктодерева может быть кодирована с использованием порядка кодирования в глубину. В другом примере структура субоктодерева может быть кодирована с использованием порядка кодирования в ширину. В другом примере структура субоктодерева может быть кодирована с использованием гибридного порядка кодирования. В другом примере коды занятости в структуре субоктодерева могут быть кодированы с использованием схемы побитового кодирования. В другом примере коды занятости в структуре субоктодерева могут быть кодированы с использованием схемы побайтового кодирования. В другом примере структура субоктодерева может быть кодирована с использованием метода кодирования с предсказанием геометрии, которая является альтернативным режимом кодирования для режима кодирования октодерева в глубину. Метод кодирования с предсказанием геометрии может предсказывать точки на основе ранее кодированных соседних точек с кодированными корректирующими векторами в некоторых примерах.[142] In some embodiments, the encoding order for the octree structure may start with the width encoding order, then at a particular depth (corresponding to a particular node size), each node at a particular depth, and descendant nodes of that node form a separate point cloud sub-octree structure. Thus, multiple sub-octree structures are formed at a specific depth. The sub-octree structures may be separately encoded using any suitable encoding mode. For example, a sub-octree structure may be encoded using a depth-encoding order. In another example, the sub-octree structure may be encoded using a width-encoding order. In another example, the sub-octree structure may be encoded using a hybrid encoding order. In another example, the busy codes in the sub-octree structure may be encoded using a bitwise encoding scheme. In another example, the busy codes in the sub-octree structure may be encoded using a byte-by-byte encoding scheme. In another example, the sub-octree structure may be encoded using a geometry predictive encoding method, which is an alternative encoding mode to the octree depth-encoding mode. The geometry predictive coding technique can predict points based on previously coded neighbor points with coded correction vectors in some examples.

[143] В некоторых вариантах осуществления на стороне кодера для каждой структуры субоктодерева кодер может выбрать режим кодирования из множества режимов кодирования на основе эффективности кодирования. Например, выбранный режим кодирования для структуры субоктодерева может обеспечить наилучшую эффективность кодирования для структуры субоктодерева. Затем кодер может использовать соответственно выбранные режимы кодирования для структур субоктодерева, чтобы соответственно кодировать структуры субоктодерева. В некоторых вариантах осуществления кодер может сигнализировать индекс для структуры субоктодерева в битовом потоке, и этот индекс указывает выбранный режим кодирования для структуры субоктодерева. На стороне декодера декодер может определять режим кодирования для структуры субоктодерева на основе индекса в битовом потоке, а затем декодировать структуру субоктодерева в соответствии с режимом кодирования.[143] In some embodiments, at the encoder side, for each sub-octree structure, the encoder may select an encoding mode from a plurality of encoding modes based on encoding efficiency. For example, the selected encoding mode for the sub-octree structure may provide the best encoding efficiency for the sub-octree structure. The encoder may then use the appropriately selected encoding modes for the sub-octree structures to encode the sub-octree structures accordingly. In some embodiments, the encoder may signal an index for the sub-octree structure in the bitstream, and this index indicates the selected encoding mode for the sub-octree structure. On the decoder side, the decoder may determine the encoding mode for the sub-octree structure based on the index in the bitstream, and then decode the sub-octree structure according to the encoding mode.

[144] Аспекты настоящего раскрытия также предусматривают методы сигнализирования для гибридного порядка кодирования. Согласно аспекту раскрытия, управляющие параметры, которые должны использоваться в гибридном порядке кодирования, могут сигнализироваться в синтаксисе высокого уровня, таком как набор параметров последовательности (SPS), заголовок слайса, набор параметров геометрии битового потока и т.п. Следует отметить, что в нижеследующем описании представлены конкретные примеры. Раскрытые методы, проиллюстрированные на конкретных примерах, не ограничиваются конкретными примерами и могут быть соответствующим образом скорректированы и использованы в других примерах.[144] Aspects of the present disclosure also provide signaling techniques for hybrid coding order. According to an aspect of the disclosure, the control parameters to be used in the hybrid coding order may be signaled in high level syntax such as sequence parameter set (SPS), slice header, bitstream geometry parameter set, and the like. It should be noted that the following description provides specific examples. The disclosed methods, illustrated with specific examples, are not limited to specific examples, and may be adjusted accordingly and used in other examples.

[145] В одном варианте осуществления параметр dt (размер изменения порядка кодирования) указывается в синтаксисе высокого уровня.[145] In one embodiment, the parameter d t (encoding reorder size) is indicated in the high-level syntax.

[146] Фиг. 13 показывает пример синтаксиса (1300) набора параметров геометрии согласно некоторым вариантам осуществления изобретения. Как показано (1310), gps_depth_first_node_size_log2_minus_1 указывается в наборе параметров геометрии. Параметр dt может быть определен на основе gps_depth_first_node_size_log2_minus_1, например, согласно (Ур. 1).[146] FIG. 13 shows an example syntax (1300) of a set of geometry parameters according to some embodiments of the invention. As shown (1310), gps_depth_first_node_size_log2_minus_1 is specified in the geometry parameter set. The parameter d t may be determined based on gps_depth_first_node_size_log2_minus_1, for example, according to (Eq. 1).

Figure 00000001
Figure 00000001

[147] Следует отметить, что когда gps_depth_first_node_size_log2_minus_1 равно 0, порядок кодирования в глубину отключен.[147] It should be noted that when gps_depth_first_node_size_log2_minus_1 is equal to 0, depth-coding order is disabled.

[148] В другом варианте осуществления флаг управления явно сигнализируется, чтобы указать, используется ли гибридный порядок кодирования.[148] In another embodiment, a control flag is explicitly signaled to indicate whether a hybrid coding order is used.

[149] Фиг. 14 показывает другой пример (1400) синтаксиса набора параметров геометрии согласно некоторым вариантам осуществления изобретения. Как показано на (1410), используется флаг управления, обозначенный gps_hybrid_coding_order_flag. Когда флаг управления gps_hybrid_coding_order_flag истинно (например, имеет значение 1), схема гибридного порядка кодирования разрешена; когда gps_hybrid_coding_order_flag ложно (например, имеет значение 0), схема гибридного порядка кодирования отключена. Когда gps_hybrid_coding_order_flag истинно (например, имеет значение 1), параметр dt может быть определен на основе gps depth_first_node_size_log2_minus_2, например, согласно (Ур. 2):[149] FIG. 14 shows another example (1400) of geometry parameter set syntax according to some embodiments of the invention. As shown at (1410), a control flag designated gps_hybrid_coding_order_flag is used. When the gps_hybrid_coding_order_flag control flag is true (eg, has a value of 1), the hybrid coding order scheme is enabled; when gps_hybrid_coding_order_flag is false (eg, set to 0), the hybrid coding order scheme is disabled. When gps_hybrid_coding_order_flag is true (for example, has the value 1), the parameter d t can be determined based on gps depth_first_node_size_log2_minus_2, for example, according to (Eq. 2):

Figure 00000002
Figure 00000002

Когда gps_hybrid_coding_order_flag ложно (например, имеет значение 0), dt по умолчанию устанавливается значение 1, чтобы указать, что порядок кодирования в глубину отключен, и в примере применяется только порядок кодирования в ширину.When gps_hybrid_coding_order_flag is false (eg, has a value of 0), d t defaults to 1 to indicate that depth-coding order is disabled, and only width-coding order is applied in the example.

[150] В одном варианте осуществления, когда разрешен гибридный порядок кодирования, порядок "в ширину" применяется к узлам от размера М-1 до dt, а порядок "в глубину" применяется к узлам от размера dt-1 до 0.[150] In one embodiment, when hybrid coding order is enabled, widthwise order applies to nodes from size M-1 to d t , and depth order applies to nodes from size d t -1 to 0.

[151] Фиг. 15 показывает пример (1500) псевдокода для кодирования октодерева согласно некоторым вариантам осуществления раскрытия. Как показано в (1510), когда глубина>=MaxGeometryOctreeDepth - dt, может использоваться порядок кодирования в глубину. На фиг. 15, например, псевдокод «geometry_node_depth_first» может применяться для порядка кодирования в глубину.[151] FIG. 15 shows an example (1500) of pseudocode for encoding an octree according to some embodiments of the disclosure. As shown in (1510), when depth>=MaxGeometryOctreeDepth - d t , depth-encoding order can be used. In FIG. 15, for example, the pseudo-code "geometry_node_depth_first" may be applied to the depth-coding order.

[152] Фиг. 16 показывает пример (1600) псевдокода для порядка кодирования в глубину согласно некоторым вариантам осуществления раскрытия. Псевдокод «geometry_node_depth_first» - это рекурсивная функция. В рекурсивной функции сначала вызывается функция «geometry_node» для получения кода занятости для текущего узла октодерева, а затем псевдокод «geometry_node_depth_first» вызывается сам по себе для кодирования каждого дочернего узла до достижения конечных узлов, например, когда глубина>=MaxGeometryOctreeDepth-1.[152] FIG. 16 shows an example (1600) of pseudocode for a depth-coding order according to some embodiments of the disclosure. The pseudocode "geometry_node_depth_first" is a recursive function. In the recursive function, the "geometry_node" function is first called to get the busy code for the current octree node, and then the "geometry_node_depth_first" pseudo-code is called by itself to encode each child node until the leaf nodes are reached, for example, when depth >=MaxGeometryOctreeDepth-1.

[153] Фиг. 17 иллюстрирует блок-схему, описывающую процесс (1700) согласно варианту осуществления изобретения. Процесс (1700) может использоваться в процессе кодирования облаков точек. В различных вариантах осуществления процесс (1700) выполняется схемой обработки, такой как схема обработки в терминальных устройствах (110), схемой обработки, которая выполняет функции кодера (203) и/или декодера (201), схемой обработки, которая выполняет функции кодера (300), декодера (400), кодера (700) и/или декодера (800) и т.п. В некоторых вариантах осуществления процесс (1700) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки выполняет процесс (1700). Процесс начинается с (S1701) и переходит к (S1710).[153] FIG. 17 illustrates a flowchart describing a process (1700) according to an embodiment of the invention. Process (1700) may be used in a point cloud encoding process. In various embodiments, the process (1700) is performed by a processing circuit, such as a processing circuit in terminal devices (110), a processing circuit that performs the functions of an encoder (203) and/or a decoder (201), a processing circuit that performs the functions of an encoder (300 ), a decoder (400), an encoder (700), and/or a decoder (800), and the like. In some embodiments, the process (1700) is implemented in program instructions, such that when the processing circuit executes the program instructions, the processing circuit executes the process (1700). The process starts at (S1701) and proceeds to (S1710).

[154] На этапе (S1710) получается кодированный битовый поток для облака точек. Кодированный битовый поток включает в себя информацию геометрии в форме кодированных кодов занятости для узлов в структуре октодерева для облака точек. Узлы в структуре октодерева соответствуют трехмерным (3D) разделениям пространства облака точек. Размеры узлов ассоциированы с размерами соответствующих трехмерных разделов.[154] In step (S1710), an encoded bitstream for the point cloud is obtained. The encoded bitstream includes geometry information in the form of encoded busy codes for the nodes in the octree structure for the point cloud. The nodes in the octree structure correspond to three-dimensional (3D) divisions of point cloud space. The node sizes are associated with the sizes of the respective 3D partitions.

[155] На этапе (S1720) коды занятости для узлов декодируются из кодированных кодов занятости. По меньшей мере первый код занятости для дочернего узла первого узла декодируется без ожидания декодирования второго кода занятости для второго узла, имеющего тот же размер узла, что и первый узел.[155] In step (S1720), the busy codes for the nodes are decoded from the encoded busy codes. At least a first busy code for a child node of the first node is decoded without waiting for decoding of a second busy code for a second node having the same node size as the first node.

[156] В одном варианте осуществления дочерний узел находится среди первого набора узлов (первых узлов-потомков) в первом субоктодереве, причем первый узел является корневым узлом первого субоктодерева. Первый узел и второй узел - это братские узлы с одинаковым размером узла. Второй узел является корневым узлом второго субоктодерева, которое включает в себя второй набор узлов (вторые узлы-потомки). Затем, в некоторых примерах, можно отдельно декодировать первый набор кодов занятости для первого набора узлов и второй набор кодов занятости для второго набора узлов. В одном примере первый набор кодов занятости для первого набора узлов и второй набор кодов занятости для второго набора узлов могут декодироваться параллельно. В другом примере первый набор кодов занятости для первого набора узлов декодируется с использованием первого режима кодирования, а второй набор кодов занятости для второго набора узлов декодируется с использованием второго режима кодирования.[156] In one embodiment, the child node is among the first set of nodes (first child nodes) in the first sub-octtree, the first node being the root node of the first sub-octtree. The first node and the second node are sibling nodes with the same node size. The second node is the root node of the second sub-octree, which includes the second set of nodes (the second child nodes). Then, in some examples, the first set of busy codes for the first set of nodes and the second set of busy codes for the second set of nodes may be separately decoded. In one example, the first set of busy codes for the first set of nodes and the second set of busy codes for the second set of nodes may be decoded in parallel. In another example, a first set of busy codes for a first node set is decoded using a first coding mode, and a second set of busy codes for a second node set is decoded using a second coding mode.

[157] Первый режим кодирования и второй режим кодирования могут использовать любой из порядка кодирования в глубину, порядка кодирования в ширину, метода кодирования с предсказанием геометрии и т.п. В некоторых примерах кодированный поток битов включает в себя первый индекс, который указывает первый режим кодирования для первого субоктодерева, и второй индекс, который указывает второй режим кодирования для второго субоктодерева.[157] The first coding mode and the second coding mode may use any of a depth coding order, a width coding order, a geometry predictive coding method, and the like. In some examples, the encoded bitstream includes a first index that indicates a first encoding mode for the first sub-octree and a second index that indicates a second encoding mode for the second sub-octree.

[158] В другом варианте осуществления первый узел и второй узел имеют конкретный размер узла для изменения порядка кодирования. В некоторых примерах более крупные узлы в узлах кодируются с использованием первого порядка кодирования, а узлы меньшего размера в узлах кодируются с использованием второго порядка кодирования. Размеры узлов более крупных узлов больше конкретного размера узла для изменения порядка кодирования. Размеры узлов меньших узлов равны или меньше конкретного размера узла для изменения порядка кодирования. В одном примере первый порядок кодирования является порядком кодирования в ширину, а второй порядок кодирования является порядком кодирования в глубину. В другом примере первый порядок кодирования является порядком кодирования в глубину, а второй порядок кодирования является порядком кодирования в ширину.[158] In another embodiment, the first node and the second node have a specific node size to change the encoding order. In some examples, larger knots in knots are encoded using a first encoding order, and smaller knots in knots are encoded using a second encoding order. The node sizes of larger nodes are larger than the specific node size to change the encoding order. The node sizes of the smaller nodes are equal to or smaller than the specific node size to change the encoding order. In one example, the first encoding order is the width encoding order and the second encoding order is the depth encoding order. In another example, the first encoding order is depth-encoding order and the second encoding order is width-encoding order.

[159] В некоторых примерах конкретный размер узла для изменения порядка кодирования определяется на основе сигнала в кодированном битовом потоке для облака точек. В некоторых примерах сигнал предоставляется, когда сигнал управления указывает на изменение порядка кодирования.[159] In some examples, a specific node size for reordering the coding is determined based on the signal in the encoded bitstream for the point cloud. In some examples, a signal is provided when the control signal indicates a change in coding order.

[160] На этапе (S1730) структура октодерева может быть восстановлена на основе декодированных кодов занятости для узлов.[160] In step (S1730), the octree structure can be reconstructed based on the decoded busy codes for the nodes.

[161] На этапе (S1740) облако точек восстанавливают на основе структуры октодерева. Затем процесс переходит к (S1799) и завершается.[161] In step (S1740), the point cloud is reconstructed based on the octree structure. Then, the process proceeds to (S1799) and ends.

[162] Методы, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или более машиночитаемых носителях. Например, на фиг. 18 показана компьютерная система (1800), подходящая для реализации определенных вариантов осуществления раскрытого объекта изобретения.[162] The methods described above may be implemented in computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, in FIG. 18 shows a computer system (1800) suitable for implementing certain embodiments of the disclosed subject matter.

[163] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть объектом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более центральными процессорами компьютера (CPU), графическими процессорами (CPU) и т.п.[163] Computer software may be coded using any suitable machine code or computer language, which may be the object of assembly, compilation, linking, or similar mechanisms to produce code containing instructions that can be executed directly or through interpretation, execution of microcode, etc. .p., one or more computer central processing units (CPUs), graphics processing units (CPUs), and the like.

[164] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.[164] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, IoT devices, and the like.

[165] Компоненты, показанные на фиг. 18 для компьютерной системы (1800), являются примерными по своей сущности и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы (1800).[165] The components shown in FIG. 18 for a computer system (1800) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present invention. The configuration of the components is also not to be interpreted as having any dependency or requirement relating to any one or combination of the components illustrated in the exemplary embodiment of the computer system (1800).

[166] Компьютерная система (1800) может включать в себя определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения управляющей перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображен). Устройства с человеко-машинным интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).[166] The computer system (1800) may include certain human-machine interface input devices. Such a human-machine interface input device may respond to input from one or more human users through, for example, tactile input (e.g., keystrokes, swipes, movement of a control glove), audio input (e.g., voice, handclaps), visual input (for example: gestures), olfactory input (not shown). HMI devices can also be used to capture certain media not necessarily directly related to conscious human input, such as sound (e.g. speech, music, ambient sound), images (e.g. scanned images, photographic images taken from a camera for still images), video (eg 2D video, 3D video including stereoscopic video).

[167] Устройства ввода с человеко-машинным интерфейсом могут включать в себя одно или более из следующих элементов (только по одному из каждого изображено): клавиатура (1801), мышь (1802), трекпад (1803), сенсорный экран (1810), управляющая перчатка (не показана), джойстик (1805), микрофон (1806), сканер (1807), камера (1808).[167] Human interface input devices may include one or more of the following (only one of each is shown): keyboard (1801), mouse (1802), trackpad (1803), touch screen (1810), control glove (not shown), joystick (1805), microphone (1806), scanner (1807), camera (1808).

[168] Компьютерная система (1800) также может включать в себя определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать чувства одного или более пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеко-машинным интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (1810), управляющей перчатки (не показана) или джойстика (1805), но также могут иметься устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (1809), наушники (не показаны)), устройства вывода изображения (например, экраны (1810), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее - некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).[168] The computer system (1800) may also include certain human-machine interface output devices. Such human interface output devices can stimulate the senses of one or more human users through, for example, tactile output, sound, light, and smell/taste. Such human interface output devices may include tactile output devices (e.g., tactile feedback from a touch screen (1810), operating glove (not shown), or joystick (1805), but there may also be tactile feedback devices that do not serve as input devices), audio output devices (for example: speakers (1809), headphones (not shown)), image output devices (for example, screens (1810), including CRT screens, LCD screens, plasma screens, OLED - screens, each with or without touchscreen input capability, each with or without tactile feedback capability - some of which may be capable of outputting 2D visual output or more than 3D output by means such as stereographic output ; virtual reality goggles (not shown), holographic displays and smoke tanks (not shown)) and printers (not shown).

[169] Компьютерная система (1800) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW (1820) с CD/DVD или подобные носители (1821), флэш-накопитель (1822), съемный жесткий диск или твердотельный накопитель (1823), унаследованные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не показаны) и т.п.[169] The computer system (1800) may also include human accessible storage devices and associated media such as optical media including CD/DVD ROM/RW (1820) with CD/DVD or similar media (1821), flash drive (1822), removable hard drive or solid state drive (1823), legacy magnetic media such as tape and floppy disk (not shown), specialized ROM/ASIC/PLD based devices such as dongles (not shown), and etc.

[170] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объектом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.[170] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not encompass transmission media, carrier waves, or other time signals.

[171] Компьютерная система (1800) также может включать в себя интерфейс к одной или более коммуникационным сетям. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т.д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное телевещание, автомобильное и промышленное оборудование, включая CAN-шину и т.д. Некоторым сетям обычно требуются внешние сетевые интерфейсные адаптеры, которые подключены к определенным портам данных общего назначения или периферийным шинам (1849) (например, к портам USB компьютерной системы (1800)); другие обычно интегрированы в ядро компьютерной системы (1800) путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1800) может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CAN-шина на определенные устройства с CAN-шиной) или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровую сеть. В каждой из этих сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов, как описано выше.[171] The computer system (1800) may also include an interface to one or more communication networks. Networks can be, for example, wireless, wired, optical. In addition, networks can be local, wide area, metropolitan, automotive, industrial, real-time, latency tolerant, and so on. Example networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., wired television or wireless digital wide area networks including cable television, satellite television and terrestrial TV broadcasting, automotive and industrial equipment, including CAN bus, etc. Some networks typically require external network interface adapters that are connected to certain general purpose data ports or peripheral buses (1849) (for example, computer system USB ports (1800)); others are typically integrated into the computer system core (1800) by being attached to a system bus as described below (eg, an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (1800) can communicate with other entities. Such communication can be unidirectional, receive-only (for example, broadcast television), unidirectional, send-only (for example, CAN bus to certain CAN-bus devices), or bidirectional, for example, to other computer systems using a local or wide area digital network. . Each of these networks and network interfaces may use specific protocols and protocol stacks as described above.

[172] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру (1840) компьютерной системы (1800).[172] The aforementioned human-machine interface devices, human-accessible storage devices, and network interfaces may be attached to the core (1840) of the computer system (1800).

[173] Ядро (1840) может включать в себя один или более центральных процессоров (CPU) (1841), графических процессоров (GPU) (1842), специализированных программируемых процессоров в виде программируемых пользователем вентильных матриц (FPGA) (1843), аппаратных ускорителей (1844) для определенных задач и т.д. Эти устройства, наряду с постоянной памятью (ROM) (1845), памятью с произвольным доступом (1846), внутренними запоминающими устройствами, такими как внутренние жесткие диски, не доступные пользователю, твердотельные накопители и т.п. (1847), могут быть подключены через системную шину (1848). В некоторых компьютерных системах системная шина (1848) может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (1848) ядра, либо через периферийную шину (1849). Архитектура периферийной шины включает PCI, USB и т.п.[173] The core (1840) may include one or more central processing units (CPUs) (1841), graphics processing units (GPUs) (1842), custom field programmable gate array (FPGA) processors (1843), hardware accelerators (1844) for certain tasks, etc. These devices, along with Read Only Memory (ROM) (1845), Random Access Memory (1846), internal storage devices such as internal non-user hard drives, solid state drives, and the like. (1847) can be connected via the system bus (1848). In some computer systems, the system bus (1848) may be available as one or more physical connectors to allow expansion with additional CPUs, GPUs, or the like. Peripherals can be connected either directly to the system bus (1848) of the kernel, or via a peripheral bus (1849). Peripheral bus architecture includes PCI, USB, etc.

[174] CPU (1841), GPU (1842), FGPA (1843) и ускорители (1844) могут выполнять определенные инструкции, которые в сочетании могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (1845) или RAM (1846). Переходные данные также могут храниться в RAM (1846), тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости (1847). Быстрое хранение и извлечение на любое из запоминающих устройств могут быть разрешены за счет использования кэш-памяти, которая может быть тесно связана с одним или несколькими CPU (1841), GPU (1842), запоминающим устройством (1847), ROM (1845), RAM (1846) и тому подобное.[174] CPUs (1841), GPUs (1842), FGPAs (1843), and accelerators (1844) may execute certain instructions, which in combination may constitute the aforementioned computer code. This computer code can be stored in ROM (1845) or RAM (1846). Transient data may also be stored in RAM (1846), while permanent data may be stored, for example, in an internal mass storage (1847). Fast storage and retrieval to any of the storage devices can be enabled through the use of cache memory, which can be tightly coupled to one or more CPU (1841), GPU (1842), storage device (1847), ROM (1845), RAM (1846) and the like.

[175] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего изобретения, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.[175] The computer-readable medium may contain computer code for performing various computer-implemented operations. The media and computer code may be specially designed and constructed for the purposes of the present invention, or they may be well known and available to those skilled in the art of computer software.

[176] В качестве примера, но не ограничения, компьютерная система, имеющая архитектуру (1800) и, в частности, ядро (1840), может обеспечивать функциональность за счет процессора(ов) (включая CPU, GPU, FPGA, ускорители и т.п.), исполняющего программное обеспечение, воплощенное на одном или нескольких материальных машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя ЗУ большой емкости, как описано выше, а также определенным хранилищем ядра (1840), которые имеют невременной характер, например, внутренним ЗУ (1847) большой емкости ядра или ROM (1845). Программное обеспечение, реализующее различные варианты осуществления настоящего раскрытия, может храниться в таких устройствах и выполняться ядром (1840). Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может предписывать ядру (1840) и, в частности, процессорам в нем (включая CPU, GPU, FPGA и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в RAM (1846), и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель (1844)), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это применимо. Ссылка на машиночитаемый носитель может включать в себя схему (например, интегральную схему (IC)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это применимо. Настоящее изобретение включает в себя любую подходящую комбинацию аппаратного и программного обеспечения.[176] By way of example, and not limitation, a computer system having an architecture (1800), and in particular a core (1840), may provide functionality through processor(s) (including CPUs, GPUs, FPGAs, accelerators, etc.) executing software embodied on one or more tangible machine-readable media. Such computer-readable media may be media associated with user accessible mass storage as described above, as well as certain kernel storage (1840) that is non-transitory in nature, such as internal kernel mass storage (1847) or ROM (1845). Software implementing various embodiments of the present disclosure may be stored on such devices and executed by the kernel (1840). The computer-readable medium may include one or more memory devices or microchips, as appropriate. The software may direct the core (1840), and in particular the processors within it (including CPUs, GPUs, FPGAs, and the like), to execute certain processes or certain portions of specific processes described herein, including defining data structures stored in RAM (1846), and modifying such data structures according to software defined processes. In addition or alternatively, a computer system may provide functionality as a result of logic embedded in, or otherwise embodied in, circuitry (e.g., an accelerator (1844)) that may operate in place of or in conjunction with software to perform certain processes or individual parts of the specific processes described in this document. The link to the software may include logic and vice versa where applicable. A reference to a computer-readable medium may include circuitry (eg, an integrated circuit (IC)) storing software to execute, circuitry implementing logic to execute, or both, where applicable. The present invention includes any suitable combination of hardware and software.

[177] Хотя это описание раскрывает несколько примерных вариантов осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем изобретения. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы изобретения и, таким образом, находятся в рамках его сущности и объема.[177] Although this description discloses several exemplary embodiments, there are variations, permutations, and various replacement equivalents that fall within the scope of the invention. Thus, it will be appreciated that those skilled in the art will be able to develop numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the invention and thus are within its spirit and scope.

Claims (51)

1. Способ восстановления облака точек из кодированного потока облака точек, содержащий:1. A method for restoring a point cloud from an encoded point cloud stream, comprising: получение, посредством процессора, из кодированного битового потока для облака точек, кодированных кодов занятости для узлов в структуре октодерева для облака точек, причем узлы в структуре октодерева соответствуют трехмерным (3D) разделам пространства облака точек, при этом размеры узлов ассоциированы с размерами соответствующих 3D разделов;deriving, by the processor, from the encoded bitstream for the point cloud, encoded occupancy codes for nodes in the octree structure for the point cloud, the nodes in the octree structure corresponding to three-dimensional (3D) sections of the point cloud space, the sizes of the nodes being associated with the sizes of the corresponding 3D sections ; декодирование, посредством процессора, из закодированных кодов занятости, кодов занятости для узлов, причем по меньшей мере первый код занятости для дочернего узла первого узла декодируют без ожидания декодирования второго кода занятости для второго узла, имеющего тот же размер узла, что и первый узел;decoding, by the processor, from the encoded busy codes, the busy codes for the nodes, wherein at least a first busy code for a child node of the first node is decoded without waiting for a second busy code to be decoded for a second node having the same node size as the first node; восстановление, посредством процессора, структуры октодерева на основе декодированных кодов занятости для узлов; иrestoring, by the processor, the octree structure based on the decoded busy codes for the nodes; And восстановление, посредством процессора, облака точек на основе структуры октодерева; иrestoring, by the processor, a point cloud based on the octree structure; And дополнительно содержащий:additionally containing: декодирование первой части кодов занятости для более крупных узлов в узлах с использованием первого порядка кодирования, при этом более крупные узлы больше конкретного размера узла для изменения порядка кодирования; иdecoding a first part of busy codes for larger nodes in nodes using a first coding order, with larger nodes larger than a specific node size, to change the coding order; And декодирование второй части кодов занятости для меньших узлов в узлах с использованием второго порядка кодирования, который отличается от первого порядка кодирования, при этом меньшие узлы равны или меньше конкретного размера узла для изменения порядка кодирования.decoding the second part of the busy codes for the smaller nodes in the nodes using a second coding order that is different from the first coding order, wherein the smaller nodes are equal to or less than a specific node size to change the coding order. 2. Способ по п. 1, дополнительно содержащий:2. The method according to p. 1, further comprising: декодирование первого набора кодов занятости для первого набора узлов в первом субоктодереве, причем первый узел является корнем первого субоктодерева; иdecoding a first set of busy codes for a first set of nodes in the first sub-octtree, the first node being the root of the first sub-octtree; And декодирование второго набора кодов занятости для второго набора узлов во втором субоктодереве, при этом второй узел является корнем второго субоктодерева.decoding the second set of busy codes for the second set of nodes in the second sub-octtree, the second node being the root of the second sub-octtree. 3. Способ по п. 2, дополнительно содержащий:3. The method of claim 2, further comprising: декодирование первого набора кодов занятости для первого набора узлов в первом субоктодереве параллельно с декодированием второго набора кодов занятости для второго набора узлов во втором субоктодереве.decoding the first set of busy codes for the first set of nodes in the first sub-octtree, in parallel with decoding the second set of busy codes for the second set of nodes in the second sub-octtree. 4. Способ по п. 2, дополнительно содержащий:4. The method according to p. 2, further comprising: декодирование, с использованием первого режима кодирования, первого набора кодов занятости для первого набора узлов в первом субоктодереве; иdecoding, using the first coding mode, the first set of busy codes for the first set of nodes in the first sub-octree; And декодирование, с использованием второго режима кодирования, второго набора кодов занятости для второго набора узлов во втором субоктодереве.decoding, using the second encoding mode, the second set of busy codes for the second set of nodes in the second sub-octree. 5. Способ по п. 4, дополнительно содержащий:5. The method of claim 4, further comprising: декодирование, из кодированного битового потока, первого индекса, указывающего первый режим кодирования для первого субоктодерева; иdecoding, from the encoded bitstream, a first index indicating a first encoding mode for the first sub-octree; And декодирование, из кодированного битового потока, второго индекса, указывающего второй режим кодирования для второго субоктодерева.decoding, from the encoded bitstream, a second index indicating a second encoding mode for the second sub-octree. 6. Способ по п. 1, в котором первый порядок кодирования является порядком кодирования в ширину, а второй порядок кодирования является порядком кодирования в глубину.6. The method of claim 1, wherein the first encoding order is a width encoding order and the second encoding order is a depth encoding order. 7. Способ по п. 1, в котором первый порядок кодирования является порядком кодирования в глубину, а второй порядок кодирования является порядком кодирования в ширину.7. The method of claim 1, wherein the first encoding order is a depth-encoding order and the second encoding order is a width-encoding order. 8. Способ по п. 1, также содержащий:8. The method according to p. 1, also containing: определение конкретного размера узла для изменения порядка кодирования на основе сигнала в кодированном битовом потоке для облака точек.determining a specific node size for reordering an encoding based on a signal in the encoded bitstream for the point cloud. 9. Способ по п. 8, дополнительно содержащий:9. The method of claim 8, further comprising: декодирование управляющего сигнала из кодированного битового потока для облака точек, причем управляющий сигнал указывает на изменение порядка кодирования.decoding a control signal from the encoded bitstream for the point cloud, the control signal indicating a change in coding order. 10. Устройство восстановления облака точек из кодированного потока облака точек, содержащее:10. A device for recovering a point cloud from an encoded point cloud stream, comprising: схему обработки, конфигурированную для:processing scheme configured for: получения, из кодированного битового потока для облака точек, кодированных кодов занятости для узлов в структуре октодерева для облака точек, причем узлы в структуре октодерева соответствуют трехмерным (3D) разделам пространства облака точек, при этом размеры узлов ассоциированы с размерами соответствующих 3D разделов;deriving, from the encoded bitstream for the point cloud, encoded occupancy codes for nodes in the octree structure for the point cloud, the nodes in the octree structure corresponding to three-dimensional (3D) partitions of the point cloud space, the sizes of the nodes being associated with the sizes of the respective 3D partitions; декодирования, из закодированных кодов занятости, кодов занятости для узлов, причем по меньшей мере первый код занятости для дочернего узла первого узла декодируют без ожидания декодирования второго кода занятости для второго узла, имеющего тот же размер узла, что и первый узел;decoding, from the encoded occupancy codes, occupancy codes for the nodes, wherein at least a first occupancy code for a child node of the first node is decoded without waiting for a second occupancy code to be decoded for a second node having the same node size as the first node; восстановления структуры октодерева на основе декодированных кодов занятости для узлов; иrestoring the octree structure based on the decoded busy codes for the nodes; And восстановления облака точек на основе структуры октодерева,restoring the point cloud based on the octree structure, причем схема обработки конфигурирована для:wherein the processing circuit is configured to: декодирования первой части кодов занятости для более крупных узлов в узлах с использованием первого порядка кодирования, при этом более крупные узлы больше конкретного размера узла для изменения порядка кодирования; иdecoding the first part of the busy codes for the larger nodes in the nodes using the first coding order, with the larger nodes larger than the specific node size to change the coding order; And декодирования второй части кодов занятости для меньших узлов в узлах с использованием второго порядка кодирования, который отличается от первого порядка кодирования, при этом меньшие узлы равны или меньше конкретного размера узла для изменения порядка кодирования.decoding the second part of the busy codes for the smaller nodes in the nodes using a second coding order that is different from the first coding order, wherein the smaller nodes are equal to or less than a specific node size to change the coding order. 11. Устройство по п. 10, в котором схема обработки конфигурирована для:11. The apparatus of claim 10, wherein the processing circuitry is configured to: декодирования первого набора кодов занятости для первого набора узлов в первом субоктодереве, причем первый узел является корнем первого субоктодерева; иdecoding a first set of busy codes for a first set of nodes in the first sub-octtree, the first node being the root of the first sub-octtree; And декодирования второго набора кодов занятости для второго набора узлов во втором субоктодереве, при этом второй узел является корнем второго субоктодерева.decoding the second set of busy codes for the second set of nodes in the second sub-octtree, the second node being the root of the second sub-octtree. 12. Устройство по п. 11, в котором схема обработки конфигурирована для:12. The apparatus of claim 11, wherein the processing circuitry is configured to: декодирования первого набора кодов занятости для первого набора узлов в первом субоктодереве параллельно со вторым набором кодов занятости для второго набора узлов во втором субоктодереве.decoding the first set of busy codes for the first set of nodes in the first sub-octtree in parallel with the second set of busy codes for the second set of nodes in the second sub-octtree. 13. Устройство по п. 11, в котором схема обработки конфигурирована для:13. The apparatus of claim 11, wherein the processing circuitry is configured to: декодирования, с использованием первого режима кодирования, первого набора кодов занятости для первого набора узлов в первом субоктодереве; иdecoding, using the first encoding mode, the first set of busy codes for the first set of nodes in the first sub-octree; And декодирования, с использованием второго режима кодирования, второго набора кодов занятости для второго набора узлов во втором субоктодереве.decoding, using the second encoding mode, the second set of busy codes for the second set of nodes in the second sub-octree. 14. Устройство по п. 13, в котором схема обработки конфигурирована для:14. The apparatus of claim 13, wherein the processing circuitry is configured to: декодирования, из кодированного битового потока, первого индекса, указывающего первый режим кодирования для первого субоктодерева; иdecoding, from the encoded bitstream, a first index indicating a first encoding mode for the first sub-octree; And декодирования, из кодированного битового потока, второго индекса, указывающего второй режим кодирования для второго субоктодерева.decoding, from the encoded bitstream, a second index indicating a second encoding mode for the second sub-octree. 15. Устройство по п. 10, в котором первый порядок кодирования является порядком кодирования в ширину, а второй порядок кодирования является порядком кодирования в глубину.15. The apparatus of claim 10, wherein the first encoding order is a width encoding order and the second encoding order is a depth encoding order. 16. Устройство по п. 10, в котором первый порядок кодирования является порядком кодирования в глубину, а второй порядок кодирования является порядком кодирования в ширину.16. The apparatus of claim 10, wherein the first encoding order is a depth encoding order and the second encoding order is a width encoding order. 17. Устройство по п. 10, в котором схема обработки конфигурирована для:17. The apparatus of claim 10, wherein the processing circuitry is configured to: определения конкретного размера узла для изменения порядка кодирования на основе сигнала в кодированном битовом потоке для облака точек.determining a specific node size to reorder encoding based on a signal in the encoded bitstream for the point cloud. 18. Устройство по п. 17, в котором схема обработки конфигурирована для:18. The apparatus of claim 17, wherein the processing circuitry is configured to: декодирования управляющего сигнала из кодированного битового потока для облака точек, причем управляющий сигнал указывает на изменение порядка кодирования.decoding a control signal from the encoded bitstream for the point cloud, the control signal indicating a change in coding order.
RU2021128295A 2019-12-02 2020-10-07 Method and device for encoding point cloud RU2799041C1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/942,549 2019-12-02
US17/063,411 2020-10-05

Publications (1)

Publication Number Publication Date
RU2799041C1 true RU2799041C1 (en) 2023-07-03

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2215326C2 (en) * 2001-06-29 2003-10-27 Самсунг Электроникс Ко., Лтд. Image-based hierarchic presentation of motionless and animated three-dimensional object, method and device for using this presentation to visualize the object
RU2237283C2 (en) * 2001-11-27 2004-09-27 Самсунг Электроникс Ко., Лтд. Device and method for presenting three-dimensional object on basis of images having depth
US20120176381A1 (en) * 2001-11-27 2012-07-12 Samsung Electronics Co., Ltd. Apparatus and method for depth image-based representation of 3-dimensional object
WO2019011917A1 (en) * 2017-07-13 2019-01-17 Interdigital Vc Holdings, Inc. Method and device for encoding a point cloud
US20190081638A1 (en) * 2017-09-14 2019-03-14 Apple Inc. Hierarchical point cloud compression
WO2019081087A1 (en) * 2017-10-26 2019-05-02 Nokia Technologies Oy A method for volumetric video encoding and decoding

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2215326C2 (en) * 2001-06-29 2003-10-27 Самсунг Электроникс Ко., Лтд. Image-based hierarchic presentation of motionless and animated three-dimensional object, method and device for using this presentation to visualize the object
RU2237283C2 (en) * 2001-11-27 2004-09-27 Самсунг Электроникс Ко., Лтд. Device and method for presenting three-dimensional object on basis of images having depth
US20120176381A1 (en) * 2001-11-27 2012-07-12 Samsung Electronics Co., Ltd. Apparatus and method for depth image-based representation of 3-dimensional object
WO2019011917A1 (en) * 2017-07-13 2019-01-17 Interdigital Vc Holdings, Inc. Method and device for encoding a point cloud
US20190081638A1 (en) * 2017-09-14 2019-03-14 Apple Inc. Hierarchical point cloud compression
WO2019081087A1 (en) * 2017-10-26 2019-05-02 Nokia Technologies Oy A method for volumetric video encoding and decoding

Similar Documents

Publication Publication Date Title
US12149717B2 (en) Hybrid coding order for point cloud coding
US11783512B2 (en) Attribute value of reconstructed position associated with plural original points
US12530809B2 (en) Methods and apparatuses for dynamic mesh compression
AU2021248462B2 (en) Method and apparatus for point cloud coding
KR102799063B1 (en) Vertex reordering for mesh compression
US11948336B2 (en) Method and apparatus for point cloud coding
US11611775B2 (en) Method and apparatus for point cloud coding
US11210813B2 (en) Method and apparatus for point cloud compression
US12137255B2 (en) Coding of UV coordinates
KR20230137993A (en) Mesh compression with inferred texture coordinates
US11423642B2 (en) Method and apparatus for point cloud compression
RU2799041C1 (en) Method and device for encoding point cloud
RU2792020C1 (en) Method and device for encoding point cloud
RU2778377C1 (en) Method and apparatus for encoding a point cloud
KR102924907B1 (en) Method and device for point cloud coding
HK40075481A (en) Method, computer apparatus, device and computer readable medium for point cloud coding
HK40065081A (en) Point cloud encoding and decoding method, apparatus, electronic equipment and storage medium