СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК Российский патент 2023 года по МПК G06T9/40 H04N19/103 

Описание патента на изобретение RU2799041C1

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

[1] В настоящей заявке испрашивается приоритет по заявке на патент США № 17/063411 «СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК», поданной 5 октября 2020 г., в которой испрашивается приоритет по предварительной заявке США №62/942 549, «ПОРЯДОК ГИБРИДНОГО КОДИРОВАНИЯ ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК», поданной 2 декабря 2019 года. Полное раскрытие предшествующих заявок полностью включено в настоящее описание посредством ссылки.

Область техники, к которой относится изобретение

[2] Настоящее изобретение описывает варианты осуществления, в основном относящиеся к кодированию облака точек.

Уровень техники

[3] Описание уровня техники, представленное в данном документе, предназначено для общего представления контекста изобретения. Работа названных в настоящее время изобретателей, в той мере, в какой она описана в этом разделе описания уровня техники, а также аспекты описания, которые в противном случае не могут считаться предшествующим уровнем техники на момент подачи заявки, ни прямо, ни косвенно не признаются в качестве предшествующего уровня техники в отношении настоящего изобретения.

[4] Разрабатываются различные технологии для захвата и представления мира, например объектов в мире, окружающей среды в мире и т.п., в трехмерном (3D) пространстве. Трехмерные представления мира могут обеспечить более иммерсивные формы взаимодействия и общения. Облака точек могут использоваться как трехмерное представление мира. Облако точек - это набор точек в трехмерном пространстве, каждая из которых имеет ассоциированные атрибуты, например цвет, свойства материала, информацию о текстуре, атрибуты интенсивности, атрибуты отражательной способности, атрибуты, относящиеся к движению, атрибуты модальности и различные другие атрибуты. Такие облака точек могут включать в себя большие объемы данных, и их хранение и передача могут потребовать больших затрат времени и средств. Раскрытие сущности изобретения.

[5] Аспекты раскрытия предусматривают способы и устройства для сжатия и распаковки облака точек. В некоторых примерах устройство для сжатия / распаковки облака точек включает в себя схему обработки. В некоторых вариантах осуществления схема обработки получает, из кодированного битового потока для облака точек, закодированные коды занятости для узлов в структуре октодерева для облака точек. Узлы в структуре октодерева соответствуют трехмерным (3D) разделам пространства облака точек. Размеры узлов ассоциированы с размерами соответствующих трехмерных разделов. Кроме того, схема обработки декодирует, из закодированных кодов занятости, коды занятости для узлов. По меньшей мере первый код занятости для дочернего узла первого узла декодируется без ожидания декодирования второго кода занятости для второго узла, имеющего тот же размер узла, что и первый узел. Затем схема обработки восстанавливает структуру октодерева на основе декодированных кодов занятости для узлов и восстанавливает облако точек на основе структуры октодерева.

[6] В некоторых вариантах осуществления схема обработки декодирует первый набор кодов занятости для первого набора узлов в первом субоктодереве, причем первый узел является корнем первого субоктодерева, и декодирует второй набор кодов занятости для второго набора узлов во втором субоктодереве, причем второй узел является корнем второго субоктодерева. В одном варианте осуществления схема обработки декодирует первый набор кодов занятости для первого набора узлов в первом субоктодереве параллельно со вторым набором кодов занятости для второго набора узлов во втором субоктодереве.

[7] В другом варианте осуществления схема обработки декодирует, с использованием первого режима кодирования, первый набор кодов занятости для первого набора узлов в первом субоктодереве и декодирует, с использованием второго режима кодирования, второй набор кодов занятости для второго набора узлов во втором субоктодереве. В одном примере схема обработки декодирует из кодированного битового потока первый индекс, который указывает первый режим кодирования для первого субоктодерева, и декодирует из кодированного битового потока второй индекс, который указывает второй режим кодирования для второго субоктодерева.

[8] В некоторых вариантах осуществления схема обработки декодирует первую часть кодов занятости для более крупных узлов в узлах с использованием первого порядка кодирования. Более крупные узлы больше конкретного размера узла для изменения порядка кодирования. Схема обработки декодирует вторую часть кодов занятости для меньших узлов в узлах, с использованием второго порядка кодирования, который отличается от первого порядка кодирования. Меньшие узлы равны или меньше конкретного размера узла для изменения порядка кодирования. В одном примере первый порядок кодирования является порядком кодирования в ширину, а второй порядок кодирования является порядком кодирования в глубину. В другом примере первый порядок кодирования является порядком кодирования в глубину, а второй порядок кодирования является порядком кодирования в ширину.

[9] В некоторых примерах схема обработки определяет конкретный размер узла для изменения порядка кодирования на основе сигнала в кодированном битовом потоке для облака точек. В одном примере схема обработки декодирует управляющий сигнал из кодированного битового потока для облака точек, и управляющий сигнал указывает на изменение порядка кодирования. Затем схема обработки декодирует сигнал и определяет конкретный размер узла для изменения порядка кодирования.

[10] Аспекты раскрытия также предусматривают невременный машиночитаемый носитель, хранящий инструкции, которые при выполнении компьютером для кодирования / декодирования облака точек предписывают компьютеру выполнять любой один или комбинацию из способов для кодирования / декодирования облака точек. Краткое описание чертежей.

[11] Дополнительные признаки, сущность и различные преимущества раскрытого объекта изобретения будут более очевидны из следующего подробного описания и прилагаемых чертежей, на которых изображено следующее:

[12] На фиг. 1 показана схематическая иллюстрация упрощенной блок-схемы системы связи в соответствии с вариантом осуществления;

[13] На фиг. 2 показана схематическая иллюстрация упрощенной блок-схемы системы потоковой передачи в соответствии с вариантом осуществления;

[14] На фиг. 3 показана блок-схема кодера для кодирования кадров облака точек согласно некоторым вариантам осуществления;

[15] На фиг. 4 показана блок-схема декодера для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления;

[16] Фиг. 5 - схематическая иллюстрация упрощенной блок-схемы видеодекодера в соответствии с одним вариантом осуществления;

[17] На фиг. 6 показана схематическая иллюстрация упрощенной блок-схемы видеокодера в соответствии с вариантом осуществления;

[18] На фиг. 7 показана блок-схема кодера для кодирования кадров облака точек согласно некоторым вариантам осуществления;

[19] На фиг. 8 показана блок-схема декодера для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления;

[20] На фиг. 9 показана схема, иллюстрирующая разделение куба на основе техники разделения октодерева согласно некоторым вариантам осуществления настоящего раскрытия;

[21] Фиг. 10 показывает пример разделения октодерева и структуры октодерева, соответствующей разделению октодерева, согласно некоторым вариантам осуществления изобретения;

[22] Фиг. 11 показывает диаграмму структуры октодерева, иллюстрирующую порядок кодирования в ширину;

[23] Фиг. 12 показывает схему структуры октодерева, иллюстрирующую порядок кодирования в глубину;

[24] Фиг. 13 показывает пример синтаксиса набора параметров геометрии согласно некоторым вариантам осуществления изобретения;

[25] Фиг. 14 показывает другой пример синтаксиса набора параметров геометрии согласно некоторым вариантам осуществления изобретения;

[26] Фиг. 15 показывает пример псевдокода для кодирования октодерева согласно некоторым вариантам осуществления раскрытия;

[27] Фиг. 16 показывает пример псевдокода для порядка кодирования в глубину согласно некоторым вариантам осуществления раскрытия;

[28] Фиг. 17 показывает блок-схему, описывающую пример процесса в соответствии с некоторыми вариантами осуществления;

[29] На фиг. 18 показана схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления.

Осуществление изобретения

[30] Аспекты настоящего раскрытия предоставляют способы кодирования облака точек (РСС). РСС может выполняться согласно различным схемам, таким как схема на основе геометрии, упоминаемая как G-PCC, схема на основе видеокодирования, которая упоминается как V-PCC, и т.п. Согласно некоторым аспектам раскрытия, G-PCC кодирует трехмерную геометрию напрямую и представляет собой подход, основанный исключительно на геометрии, без особого совместного использования кодирования видео, a V-PCC в значительной степени основан на кодировании видео. Например, V-PCC может сопоставить точку трехмерного облака с пикселем двумерной сетки (изображения). Схема V-PCC может использовать общие видеокодеки для сжатия облака точек. Группа экспертов по движущемся изображениям (MPEG) работает над стандартом G-PCC и стандартом V-PCC, которые, соответственно, используют схему G-PCC и схему V-PCC.

[31] Аспекты раскрытия предоставляют способы для гибридного порядка кодирования, которые могут использоваться в РСС, такие как схема G-PCC и схема V-РСС. Кодер с гибридным кодированием может включать в себя схему перехода в глубину и схему перехода в ширину в порядке кодирования. Настоящее раскрытие также предоставляет способы для сигнализирования порядка кодирования.

[32] Облака точек могут широко использоваться во многих приложениях. Например, облака точек могут использоваться в автономных транспортных средствах для обнаружения и локализации объектов; облака точек могут использоваться в географических информационных системах (ГИС) для построения карт и могут использоваться в культурном наследии для визуализации и архивирования объектов и коллекций культурного наследия и т.д.

[33] Здесь и далее облако точек в целом может относиться к набору точек в трехмерном пространстве, каждая из которых имеет ассоциированные атрибуты, например цвет, свойства материала, информацию о текстуре, атрибуты интенсивности, атрибуты отражательной способности, атрибуты, относящиеся к движению, атрибуты модальности и различные другие атрибуты. Облака точек можно использовать для воссоздания объекта или сцены как композиции таких точек. Точки могут быть захвачены с помощью нескольких камер, датчиков глубины или лидара в различных настройках и могут состоять из тысяч и миллиардов точек для реалистичного представления восстановленных сцен. Участок (patch) в целом может относиться к непрерывному подмножеству поверхности, описываемой облаком точек. В примере участок включает в себя точки с векторами-нормалями к поверхности, отклоняющимися друг от друга менее, чем на пороговое значение.

[34] Технологии сжатия могут уменьшить объем данных, необходимых для представления облака точек, для более быстрой передачи или уменьшения объема памяти хранения. Таким образом, существует потребность в технологии сжатия облаков точек с потерями для использования в коммуникациях в реальном времени и в виртуальной реальности с шестью степенями свободы (6 СС). Кроме того, требуется технология сжатия облаков точек без потерь в контексте динамической картографии для автономного вождения, приложений культурного наследия и т.п.

[35] Согласно аспекту раскрытия, основная философия V-PCC заключается в использовании существующих видеокодеков для сжатия геометрии, занятости и текстуры динамического облака точек в виде трех отдельных видеопоследовательностей. Дополнительные метаданные, необходимые для интерпретации трех видеопоследовательностей, сжимаются отдельно. Небольшая часть общего битового потока - это метаданные, которые можно эффективно кодировать / декодировать с помощью программного воплощения. Основная часть информации обрабатывается видеокодеком.

[36] На фиг. 1 проиллюстрирована упрощенная блок-схема системы (100) связи согласно варианту осуществления настоящего раскрытия. Коммуникационная система (100) включает в себя множество терминальных устройств, которые могут коммуницировать друг с другом, например, через сеть (150). Например, коммуникационная система (100) включает в себя пару терминальных устройств (110) и (120), соединенных между собой через сеть (150). На фиг. 1, первая пара терминальных устройств (110) и (120) может выполнять однонаправленную передачу данных облака точек. Например, терминальное устройство (110) может сжимать облако точек (например, точек, представляющие структуру), которое захватывается датчиком (105), соединенным с терминальным устройством (110). Сжатое облако точек может быть передано, например, в форме битового потока на другое терминальное устройство (120) через сеть (150). Терминальное устройство (120) может получать сжатое облако точек из сети (150), распаковывать поток битов для восстановления облака точек и соответствующим образом отображать восстановленное облако точек. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т.п.

[37] На фиг. 1, терминальные устройства (110) и (120) могут быть проиллюстрированы как серверы и персональные компьютеры, но принципы настоящего раскрытия не могут быть ограничены этим. Варианты осуществления настоящего раскрытия находят применение в портативных компьютерах, планшетных компьютерах, смартфонах, игровых терминалах, медиаплеерах и/или специализированном трехмерном (3D) оборудовании. Сеть (150) представляет любое количество сетей, которые передают сжатое облако точек между терминальными устройствами (110) и (120). Сеть (150) может включать, например, проводные (проводные) и/или беспроводные сети связи. Сеть (250) может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Типичные сети включают телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети (150) могут быть несущественными для работы настоящего раскрытия, если это не объясняется в данном документе ниже.

[38] Фиг. 2 иллюстрирует упрощенную блок-схему системы (200) потоковой передачи в соответствии с вариантом осуществления. Фиг. 2 пример представляет собой приложение для раскрытого объекта для облака точек. Раскрытый предмет изобретения может быть в равной степени применим к другим приложениям с поддержкой облака точек, таким как приложение 3D телеприсутствия, приложение виртуальной реальности и т.п.

[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) визуализации.

[40] Следует отметить, что электронные устройства (220) и (230) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (220) может включать в себя видеодекодер (не показан), а электронное устройство (230) также может включать в себя видеокодер (не показан).

[41] В некоторых системах потоковой передачи сжатые облака (204), (207) точек и (209) (например, битовые потоки сжатых облаков точек) могут быть сжаты в соответствии с определенными стандартами. В некоторых примерах стандарты видеокодирования используются при сжатии облаков точек. Примеры этих стандартов включают в себя высокоэффективное кодирование видео (HEVC), универсальное кодирование видео (VVC) и т.п.

[42] На фиг. 3 показана блок-схема V-PCC кодера (300) для кодирования кадров облака точек согласно некоторым вариантам осуществления; В некоторых вариантах осуществления V-PCC кодер (300) может использоваться в коммуникационной системе (100) и системе (200) потоковой передачи. Например, кодер (203) может быть конфигурирован и работать аналогично V-PCC кодеру (300).

[43] V-PCC кодер (300) получает кадры облака точек в виде несжатых входных данных и генерирует битовый поток, соответствующий сжатым кадрам облака точек. В некоторых вариантах осуществления V-PCC кодер (300) может получать кадры облака точек от источника облака точек, такого как источник (201) облака точек и т.п.

[44] В примере на фиг. 3 V-PCC кодер (300) включает в себя модуль (306) генерирования участков, модуль (308) упаковки участков, модуль (310) генерирования изображения геометрии, модуль (312) генерирования изображения текстуры, модуль (304) информации участков, модуль (314) карты занятости, модуль (336) сглаживания, модули (316) и (318) заполнения изображения, модуль (320) расширения группы, модули (322), (323) и (332) сжатия видео, модуль (338) сжатия дополнительной информации участков, модуль (334) энтропийного сжатия и мультиплексор (324).

[45] Согласно аспекту раскрытия, V-PCC кодер (300) преобразует кадры трехмерного облака точек в представление на основе изображения вместе с некоторыми метаданными (например, картой занятости и информацией участков), которые используются для преобразования сжатого облака точек обратно в распакованное облако точек. В некоторых примерах V-PCC кодер (300) может преобразовывать кадры трехмерных облаков точек в геометрические изображения, изображения текстур и карты занятости, а затем использовать техники кодирования видео для кодирования геометрических изображений, изображений текстур и карт занятости в битовый поток. Как правило, изображение геометрии- это двухмерное изображение с пикселями, заполненными значениями геометрии, ассоциированными с точками, проецируемыми на пиксели, а пиксель, заполненный значением геометрии, может называться отсчетом геометрии. Изображение текстуры представляет собой двухмерное изображение с пикселями, заполненными значениями текстуры, ассоциированными с точками, проецируемыми на пиксели, и пиксель, заполненный значением текстуры, может называться отсчетом текстуры. Карта занятости - это двухмерное изображение с пикселями, заполненными значениями, которые указывают, что они заняты или не заняты участками.

[46] Модуль (306) генерирования участков облака точек сегментирует облако точек на набор участков (например, участок определяется как непрерывное подмножество поверхности, описываемой облаком точек), которые могут перекрываться или нет, так что каждый участок может описываться полем глубины по отношению к плоскости в двумерном пространстве. В некоторых вариантах осуществления модуль (306) генерирования участков нацелен на разложение облака точек на минимальное количество участков с гладкими границами, а также на минимизацию ошибки восстановления.

[47] Модуль (304) информации участков может собирать информацию участков, указывающую размеры и форму участков. В некоторых примерах информация участков может быть упакована в кадр изображения и затем кодирована модулем (338) сжатия дополнительной информации участков для генерирования сжатой дополнительной информации участков.

[48] Модуль (308) упаковки участков конфигурирован для нанесения извлеченных участков на двумерную (2D) сетку, минимизируя при этом неиспользуемое пространство и гарантируя, что каждый М×М блок (например, 16×16) сетки ассоциирован с уникальным участком. Эффективная упаковка участков может напрямую повлиять на эффективность сжатия либо за счет минимизации неиспользуемого пространства, либо за счет обеспечения согласованности во времени.

[49] Модуль (310) генерирования изображения геометрии может генерировать двухмерные изображения геометрии, ассоциированные с геометрией облака точек в заданных местоположениях участков. Модуль (312) генерирования изображения текстуры может генерировать 20-изображения текстуры, ассоциированные с текстурой облака точек в заданных местоположениях участков. Модуль (310) генерирования изображения геометрии и модуль (312) генерирования изображения текстуры используют преобразование 3D в 2D, вычисленное во время процесса упаковки, для сохранения геометрии и текстуры облака точек в виде изображений. Чтобы лучше справиться со случаем, когда несколько точек проецируются на один и тот же отсчет, каждый участок проецируется на два изображения, называемых слоями. В одном примере изображение геометрии представлено монохроматическим кадром W×H в формате YUV420-8bit. Для генерирования изображения текстуры процедура генерирования текстуры использует восстановленную / сглаженную геометрию для вычисления цветов, которые должны быть ассоциированы с точками повторной дискретизации.

[50] Модуль (314) карты занятости может генерировать карту занятости, которая описывает информацию заполнения в каждом блоке. Например, изображение занятости включает в себя двоичную карту, которая указывает для каждой ячейки сетки, принадлежит ли ячейка пустому пространству или облаку точек. В примере карта занятости использует двоичную информацию, описывающую для каждого пикселя, заполнен ли пиксель или нет. В другом примере карта занятости использует двоичную информацию, описывающую для каждого блока пикселей, заполнен ли блок пикселей или нет.

[51] Карта занятости, сгенерированная модулем карты занятости (314), может быть сжата с использованием кодирования без потерь или кодирования с потерями. Когда используется кодирование без потерь, для сжатия карты занятости используется модуль (334) энтропийного сжатия. Когда используется кодирование с потерями, для сжатия карты занятости используется модуль (332) сжатия видео.

[52] Следует отметить, что модуль (308) упаковки участков может оставлять некоторые пустые пространства между двумерными участками, упакованными в кадре изображения. Модули (316) и (318) заполнения изображения могут заполнять пустые пространства (заполнение), чтобы сгенерировать кадр изображения, который может подходить для кодеков 2D видео и изображения. Заполнение изображения также называется фоновым заполнением, которое может заполнить неиспользуемое пространство избыточной информацией. В некоторых примерах хорошее фоновое заполнение минимально увеличивает скорость передачи данных, но не вносит значительных искажений кодирования вокруг границ участков.

[53] Модули (322), (323) и (332) сжатия видео могут кодировать 2D-изображения, такие как дополненные изображения геометрии, дополненные изображения текстуры и карты занятости, на основе подходящего стандарта кодирования видео, такого как HEVC, VVC и подобное. В одном примере модули (322), (323) и (332) сжатия видео представляют собой отдельные компоненты, которые работают отдельно. Следует отметить, что модули (322), (323) и (332) сжатия видео могут быть реализованы как единый компонент в другом примере.

[54] В некоторых примерах модуль (336) сглаживания конфигурирован для создания сглаженного изображения восстановленного изображения изображения. Сглаженное изображение может быть предоставлено для генерирования (312) изображения текстуры. Затем генерирование (312) изображения текстуры может регулировать генерирование изображения текстуры на основе восстановленных изображений геометрии. Например, когда форма участков (например, геометрия) слегка искажается во время кодирования и декодирования, искажение может быть принято во внимание при генерирования изображений текстуры для коррекции искажения формы участков.

[55] В некоторых вариантах осуществления групповое расширение (320) конфигурировано так, чтобы дополнять пиксели вокруг границ объекта избыточным низкочастотным содержимым, чтобы улучшить коэффициент кодирования, а также визуальное качество восстановленного облака точек.

[56] Мультиплексор (324) может мультиплексировать сжатое изображение геометрии, сжатое изображение текстуры, сжатую карту занятости, сжатую дополнительную информацию участков в сжатый поток битов.

[57] На фиг. 4 показана блок-схема V-PCC декодера (400) для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления. В некоторых вариантах осуществления V-PCC декодер (400) может использоваться в коммуникационной системе (100) и системе (200) потоковой передачи. Например, декодер (210) может быть конфигурирован для работы аналогично V-PCC декодеру (400). V-PCC декодер (400) получает сжатый битовый поток и генерирует восстановленное облако точек на основе сжатого битового потока.

[58] На примере с фиг. 4 V-PCC декодер (400) включает в себя демультиплексор (432), модули (434) и (436) распаковки видео, модуль (438) распаковки карты занятости, модуль (442) распаковки дополнительной информации участков, модуль (444) восстановления геометрии, модуль (446) сглаживания, модуль (448) восстановления текстуры и модуль (452) сглаживания цвета.

[59] Демультиплексор (432) может получать и разделять сжатый битовый поток на сжатое изображение текстуры, сжатое изображение геометрии, сжатую карту занятости и сжатую дополнительную информацию участков.

[60] Модули (434) и (436) распаковки видео могут декодировать сжатые изображения согласно подходящему стандарту (например, HEVC, VVC и т.д.) и выводить распакованные изображения. Например, модуль (434) распаковки видео декодирует сжатые изображения текстуры и выводит распакованные изображения текстуры; и модуль (436) распаковки видео декодирует сжатые изображения геометрии и выводит распакованные изображения геометрии.

[61] Модуль (438) распаковки карты занятости может декодировать сжатые карты занятости согласно подходящему стандарту (например, HEVC, VVC и т.д.) и выводить распакованные карты занятости.

[62] Модуль (442) распаковки дополнительной информации участков может декодировать сжатую дополнительную информацию участков в соответствии с подходящим стандартом (например, HEVC, VVC и т.д.) и выводить распакованную дополнительную информацию участков.

[63] Модуль (444) восстановления геометрии может получать распакованные изображения геометрии и генерировать восстановленную геометрию облака точек на основе распакованной карты занятости и распакованной дополнительной информации участков.

[64] Модуль (446) сглаживания может сглаживать несоответствия по краям участков. Процедура сглаживания направлена на устранение потенциальных неоднородностей, которые могут возникнуть на границах участков из-за артефактов сжатия. В некоторых вариантах осуществления к пикселям, расположенным на границах участка, может применяться фильтр сглаживания для уменьшения искажений, которые могут быть вызваны сжатием / распаковкой.

[65] Модуль восстановления (448) текстуры может определять информацию текстуры для точек в облаке точек на основе распакованных изображений текстуры и геометрии сглаживания.

[66] Модуль (452) сглаживания цвета может сглаживать несоответствия расцветки. Несоседние участки в 3D-пространстве часто упаковываются рядом друг с другом в 2D-видео. В некоторых примерах значения пикселей из несоседних участков могут смешиваться поблочным видеокодеком. Цель сглаживания цвета - уменьшить видимые артефакты, появляющиеся на границах участков.

[67] На фиг. 5 показана блок-схема видеодекодера (510) согласно варианту осуществления настоящего изобретения. Видеодекодер (510) может использоваться в V-РСС декодере (400). Например, модули (434) и (436) распаковки видео, модуль (438) распаковки карты занятости могут быть конфигурированы аналогично видеодекодеру (510).

[68] Видеодекодер (510) может включать в себя синтаксический анализатор (520) для восстановления символов (521) из сжатых изображений, таких как кодированная видеопоследовательность. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (510). Синтаксический анализатор (520) может анализировать/энтропийно декодировать полученную кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать различным принципам, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Синтаксический анализатор (520) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Субгруппы могут включать в себя группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Синтаксический анализатор (520) также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.

[69] Синтаксический анализатор (520) может выполнять операцию энтропийного декодирования/парсинга видеопоследовательности, полученной из буферной памяти, чтобы создавать символы (521).

[70] Восстановление символов (521) может задействовать множество различных модулей в зависимости от типа кодированного видеоизображения или его частей (таких как: интер и интра изображение, интер и интра блок) и других факторов. Какие модули задействованы и как, можно контролировать с помощью управляющей информации субгруппы, парсинг которой был выполнен из кодированной видеопоследовательности с помощью синтаксического анализатора (520). Поток такой информации управления подгруппой между синтаксическим анализатором (520) и множеством модулей ниже не показан для ясности.

[71] Помимо уже упомянутых функциональных блоков, видеодекодер (510) может быть концептуально подразделен на ряд функциональных модулей, как описано ниже. В практическом осуществлении, работающем в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут быть, по меньшей мере частично, интегрированы друг в друга. Однако для целей описания раскрытого объекта изобретения уместно концептуальное подразделение на функциональные модули, приведенные ниже.

[72] Первым модулем является модуль (551) масштабирования/обратного преобразования. Модуль (551) масштабирования/обратного преобразования получает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и так далее, в виде символа(ов) (521) от синтаксического анализатора (520). Модуль (551) масштабирования/обратного преобразования может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (555).

[73] В некоторых случаях выходные отсчеты модуля (551) масштабирования/обратного преобразования могут относиться к интра-кодированному блоку; то есть к блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена модулем (5452) внутрикадрового предсказания. В некоторых случаях модуль (552) внутрикадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из текущего буфера (558) изображения. Буфер (558) текущего изображения буферизует, например, частично восстановленное текущее изображение и/или полностью восстановленное текущее изображение. Агрегатор (555) в некоторых случаях добавляет для каждого отсчета информацию предсказания, сгенерированную модулем (552) интра-предсказания, к информации выходных отсчетов, предоставляемой модулем (551) масштабирования/обратного преобразования.

[74] В других случаях выходные отсчеты модуля (551) масштабирования/обратного преобразования могут относиться к блоку с интеркодированием и потенциально с компенсацией движения. В таком случае модуль (553) предсказания с компенсацией движения может обращаться к памяти (557) опорных изображений, чтобы извлекать отсчеты, используемые для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (521), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (555) к выходу модуля (551) масштабирования/обратного преобразования (в данном случае называемые остаточными отсчетами или остаточным сигналом), чтобы генерировать информацию о выходных отсчетах. Адреса в памяти (557) опорных изображений, откуда модуль (553) предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными модулю (553) предсказания с компенсацией движения в форме символов (521), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (557) опорных изображений, когда используются точные векторы движения под-отсчетов, механизмы предсказания вектора движения и так далее.

[75] Выходные отсчеты агрегатора (555) могут подвергаться различным методам петлевой фильтрации в модуле (556) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в кодированную видеопоследовательность (также называемую битовым потоком кодированного видео) и предоставляемые модулю (556) петлевой фильтрации как символы (521) из синтаксического анализатора (520), но также может реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и отфильтрованные петлей значения отсчетов.

[76] Выходной сигнал модуля (556) петлевого фильтра может быть потоком отсчетов, который может быть выведен на устройство (512) визуализации, а также сохранен в памяти (557) опорных изображений для использования в будущем межкадровом предсказании.

[77] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. Например, после того, как кодированное изображение, соответствующее текущему изображению, полностью восстановлено, и кодированное изображение было идентифицировано как опорное изображение (например, синтаксическим анализатором (520)), буфер (558) текущего изображения может стать частью памяти (557) опорных изображений, и буфер свежего текущего изображения может быть перераспределен перед началом восстановления следующего кодированного изображения.

[78] Видеодекодер (510) может выполнять операции декодирования согласно заранее определенной технологии сжатия видео в стандарте, таком как ITU-T Rec. Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность соответствует как синтаксису технологии или стандарту сжатия видео, так и профилям, задокументированным в технологии или стандарте сжатия видео. В частности, профиль может выбирать определенные инструменты как единственные инструменты, доступные для использования в этом профиле, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах границ, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD) и метаданных для управления буфером HRD, сигнализируемых в кодированной видеопоследовательности.

[79] На фиг. 6 показана блок-схема видеодекодера (603) согласно варианту осуществления настоящего изобретения. Видеокодер (603) может использоваться в V-PCC кодере (300) для сжатия облаков точек. В примере модули (322) и (323) сжатия видео и модуль (332) сжатия видео конфигурированы аналогично кодеру (603).

[80] Видеокодер (603) может получать изображения, такие как заполненные изображения геометрии, заполненные изображения текстуры и т.п., и генерировать сжатые изображения.

[81] Согласно варианту осуществления кодер (603) может кодировать и сжимать изображения исходной видеопоследовательности (изображений) в кодированную видеопоследовательность (сжатых изображений) в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (650). В некоторых вариантах осуществления контроллер (650) управляет другими функциональными модулями, как описано ниже, и функционально связан с другими функциональными модулями. Связь не изображена для ясности. Параметры, устанавливаемые контроллером (650), могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда методов оптимизации скорость-искажение,…), размеру изображения, макету группы изображений (GOP), максимальному диапазону поиска вектора движения и так далее. Контроллер (650) может быть конфигурирован так, чтобы иметь другие подходящие функции, которые относятся к видеокодеру (603), оптимизированному для определенной конструкции системы.

[82] В некоторых вариантах осуществления видеокодер (603) конфигурирован для работы в контуре кодирования. В качестве упрощенного описания, в примере контур кодирования может включать в себя кодер (630) источника (например, ответственный за создание символов, таких как поток символов, на основе входного изображения для кодирования, и опорного изображения (изображений), а также (локальный) декодер (633), встроенный в видеокодер (603). Декодер (633) восстанавливает символы для создания данных отсчетов аналогично тому, как (удаленный) декодер также может создавать (поскольку любое сжатие между символами и кодированным битовым потоком видео не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытом объекте изобретения). Восстановленный поток отсчетов (данные отсчетов) вводится в память опорных изображений (634). Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локально или удаленно), содержимое в памяти опорных изображений (634) также является точным до бита между локальным кодером и удаленным кодером. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые бы «видел» декодер при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) также используется в некоторых смежных областях техники.

[83] Работа «локального» декодера (633) может быть такой же, как у «удаленного» декодера, такого как видеодекодер (510), который уже был подробно описан выше в связи с фиг. 5. Кратко ссылаясь также на фиг. 5, однако, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (645) и синтаксическим анализатором (520) может быть без потерь, части энтропийного декодирования видеодекодера (510), включая синтаксический анализатор (520), не могут быть полностью реализованы в локальном декодере (633).

[84] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме парсинга/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать в, по существу, идентичной функциональной форме в соответствующем кодере. По этой причине раскрытый объект изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.

[85] Во время работы в некоторых примерах исходный кодер (630) может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входное изображение с предсказанием со ссылкой на одно или более ранее кодированных изображений из видеопоследовательности, которые были обозначены как «опорные изображения». Таким образом, механизм (632) кодирования кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения (изображений), которые могут быть выбраны в качестве эталона(ов) предсказанием для входного изображения.

[86] Локальный видеодекодер (633) может декодировать кодированные видеоданные изображений, которые могут быть обозначены как опорные изображения, на основе символов, созданных кодером (630) источника. Операции механизма (632) кодирования могут быть предпочтительно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 6), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (633) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных изображениях, и может вызывать сохранение восстановленных опорных изображений в кэше (734) опорных изображений. Таким образом, видеокодер (603) может локально хранить копии восстановленных опорных изображений, которые имеют общий контент, в качестве восстановленных опорных изображений, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).

[87] Предиктор (635) может выполнять поиски с предсказанием для механизма (632) кодирования. То есть, для нового изображения, которое должно быть кодировано, предиктор (635) может искать в памяти (634) опорных изображений данные отсчетов (в качестве кандидатов блоков опорных пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и так далее, которые могут служить подходящим эталоном предсказания для новых изображений. Предиктор (635) может работать на основе блока отсчетов "блок-за-пикселем", чтобы найти соответствующие эталоны предсказания. В некоторых случаях, как определено результатами поиска, полученными предсказателем (635), входное изображение может иметь эталоны предсказания, взятые из множества опорных изображений, сохраненных в памяти (6734) опорных изображений.

[88] Контроллер (650) может управлять операциями кодирования исходного кодера (630), включая, например, установку параметров и параметров субгруппы, используемых для кодирования видеоданных.

[89] Выходные сигналы всех вышеупомянутых функциональных модулей могут подвергаться энтропийному кодированию в энтропийном кодере (645). Энтропийный кодер (645) переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия без потерь символов согласно таким технологиям, как кодирование Хаффмана, кодирование с переменной длиной, арифметическое кодирование и так далее.

[90] Контроллер (650) может управлять работой видеокодера (603). Во время кодирования контроллер (650) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов изображений:

[91] Интра-изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают различные типы интра-изображений, включая, например, изображения с независимым обновлением декодера («IDR»). Специалисту в области техники известны эти варианты I-изображений и их соответствующие применения и особенности.

[92] Изображение с предсказанием (Р-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интра-предсказания или интерпредсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.

[93] Изображение с двунаправленным предсказанием (В-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интра-предсказания или интер-предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.

[94] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки из 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки 1-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или интрапредсказание). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.

[95] Видеокодер (603) может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, такой как ITU-T Rec. Н.265. В своей работе видеокодер (603) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.

[96] Видео может быть в форме множества исходных изображений (изображений) во временной последовательности. Интра-кадровое предсказание (часто сокращенно называемое интра-предсказанием) использует пространственную корреляцию в данном изображении, а интер-кадровое предсказание использует (временную или другую) корреляцию между изображениями. В примере конкретное изображение при кодировании/декодировании, которое упоминается как текущее изображение, разбивается на блоки. Когда блок в текущем изображении подобен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может быть кодирован вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.

[97] В некоторых вариантах осуществления при интер-кадровом предсказании может использоваться метод двойного предсказания. Согласно методу двойного предсказания, два опорных изображения, такие как первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может быть кодирован первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может быть предсказан комбинацией первого опорного блока и второго опорного блока.

[98] Кроме того, метод режима слияния может использоваться в интер-кадровом предсказании для повышения эффективности кодирования.

[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 пикселей и т.п.

[100] Фиг. 7 показывает блок-схему G-PPC кодера (700) в соответствии с вариантом осуществления. Кодер (700) может быть конфигурирован для приема данных облака точек и сжатия данных облака точек для генерирования битового потока, несущего сжатые данные облака точек. В варианте осуществления кодер (700) может включать в себя модуль (710) квантования положения, модуль (712) удаления дублированных точек, модуль (730) кодирования октодерева, модуль (720) передачи атрибутов, модуль (740) генерирования уровня детализации (LOD), модуль (750) предсказания атрибутов, модуль (760) квантования остатка, модуль (770) арифметического кодирования, модуль (780) обратного квантования остатка, модуль (781) сложения и память (790) для хранения восстановленных значений атрибутов.

[101] Как показано, входное облако (701) точек может быть получено в кодере (700). Позиции (например, трехмерные координаты) облака (701) точек предоставляются модулю (710) квантования. Модуль (710) квантования конфигурирован для квантования координат для генерирования квантованных позиций. Модуль (712) удаления дублированных точек конфигурирован для приема квантованных позиций и выполнения процесса фильтрации для идентификации и удаления дублированных точек. Модуль (730) кодирования октодерева конфигурирован для приема отфильтрованных позиций от модуля (712) удаления дублированных точек и выполнения процесса кодирования на основе октодерева для генерирования последовательности кодов занятости, которые описывают трехмерную сетку вокселей. Коды занятости передаются в модуль (770) арифметического кодирования.

[102] Модуль (720) передачи атрибутов конфигурирован для приема атрибутов входного облака точек и выполнения процесса передачи атрибутов для определения значения атрибута для каждого вокселя, когда несколько значений атрибута ассоциированы с соответствующим вокселем. Процесс переноса атрибутов может выполняться для переупорядоченных точек, выводимых из модуля (730) кодирования октодерева. Атрибуты после операций передачи предоставляются модулю (750) предсказания атрибутов. Модуль (740) генерирования LOD конфигурирован для работы с переупорядоченными точками, выводимыми из модуля (730) кодирования октодерева, и переорганизации точек в разных LOD. Информация LOD подается в модуль (750) предсказания атрибутов.

[103] Модуль (750) предсказания атрибутов обрабатывает точки в соответствии с порядком на основе LOD, указанным информацией LOD из модуля (740) генерирования LOD. Модуль (750) предсказания атрибута генерирует предсказание атрибута для текущей точки на основе восстановленных атрибутов набора соседних точек текущей точки, сохраненных в памяти (790). Остатки предсказания могут впоследствии быть получены на основе исходных значений атрибутов, полученных от модуля (720) передачи атрибутов, и локально сгенерированных предсказаний атрибутов. Когда индексы кандидатов используются в процессе предсказания соответствующего атрибута, индекс, соответствующий выбранному кандидату предсказания, может быть предоставлен в модуль (770) арифметического кодирования.

[104] Модуль (760) квантования остатка конфигурирован для приема остатков предсказания от модуля (750) предсказания атрибутов и выполнения квантования для генерирования квантованных остатков. Квантованные остатки предоставляются в модуль (770) арифметического кодирования.

[105] Модуль (780) обратного квантования остатка конфигурирован для приема квантованных остатков от модуля (760) квантования остатка и генерирования восстановленных остатков предсказания посредством выполнения операций, обратных операциям квантования, выполняемым в модуле (760) квантования остатка. Модуль (781) сложения конфигурирован для приема восстановленных остатков предсказания от модуля (780) обратного квантования остатка и соответствующих предсказаний атрибутов от модуля (750) предсказания атрибутов. Посредством комбинирования восстановленных остатков предсказания и предсказаний атрибутов, восстановленные значения атрибутов генерируются и сохраняются в памяти (790).

[106] Модуль (770) арифметического кодирования конфигурирован для приема кодов занятости, индексов кандидатов (если используются), квантованных остатков (если сгенерированы) и другой информации, а также выполнения энтропийного кодирования для дальнейшего сжатия полученных значений или информации. В результате может быть сгенерирован сжатый битовый поток (702), несущий сжатую информацию. Битовый поток (702) может быть передан или иным образом предоставлен декодеру, который декодирует сжатый битовый поток, или может быть сохранен в запоминающем устройстве.

[107] Фиг. 8 показывает блок-схему G-PCC декодера (800) в соответствии с вариантом осуществления. Декодер (800) может быть конфигурирован для приема сжатого битового потока и выполнения распаковки данных облака точек для распаковки битового потока для генерирования декодированных данных облака точек. В варианте осуществления декодер (800) может включать в себя модуль (810) арифметического декодирования, модуль (820) обратного квантования остатка, модуль (830) декодирования октодерева, модуль (840) генерирования LOD, модуль (850) предсказания атрибутов и память (860) для хранения восстановленных значений атрибутов.

[108] Как показано, сжатый битовый поток (801) может быть получен в модуле (810) арифметического декодирования. Модуль (810) арифметического декодирования конфигурирован для декодирования сжатого битового потока (801) для получения квантованных остатков (если они сгенерированы) и кодов занятости облака точек. Модуль (830) декодирования октодерева конфигурирован для определения восстановленных положений точек в облаке точек в соответствии с кодами занятости. Модуль (840) генерирования LOD конфигурирован для переорганизации точек в разных LOD на основе восстановленных положений и для определения порядка на основе LOD. Модуль (820) обратного квантования остатка конфигурирован для генерирования восстановленных остатков на основе квантованных остатков, полученных от модуля (810) арифметического декодирования.

[109] Модуль (850) предсказания атрибута конфигурирован для выполнения процесса предсказания атрибута, чтобы определять предсказания атрибута для точек в соответствии с порядком на основе LOD. Например, предсказание атрибута текущей точки может быть определено на основе восстановленных значений атрибутов точек, соседних для текущей точки, сохраненных в памяти (860). Модуль (850) предсказания атрибута может комбинировать предсказание атрибута с соответствующим восстановленным остатком, чтобы сгенерировать восстановленный атрибут для текущей точки.

[110] Последовательность восстановленных атрибутов, сгенерированная из модуля (850) предсказания атрибутов, вместе с восстановленными позициями, сгенерированными из модуля (830) декодирования октодерева, соответствует декодированному облаку точек (802), которое выводится из декодера (800) в одном примере. Кроме того, восстановленные атрибуты также сохраняются в памяти (860) и могут впоследствии использоваться для получения предсказаний атрибутов для последующих точек.

[111] В различных вариантах осуществления кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы с помощью аппаратных средств, программного обеспечения или их комбинации. Например, кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы с помощью схемы обработки, такой как одна или несколько интегральных схем (IC), которые работают с программным обеспечением или без него, такие как специализированная интегральная схема (ASIC), программируемая вентильная матрица (FPGA) и т.п. В другом примере кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы как программное обеспечение или микропрограммное обеспечение, включая инструкции, хранящиеся в энергонезависимом (или невременном) машиночитаемом носителе данных. Инструкции, при выполнении схемой обработки, такой как один или несколько процессоров, предписывают схеме обработки выполнять функции кодера (300), декодера (400), кодера (700) и/или декодера (800).

[112] Следует отметить, что модули (750) и (850) предсказания атрибутов, конфигурированные для осуществления методов предсказания атрибутов, раскрытых в настоящем документе, могут быть включены в другие декодеры или кодеры, которые могут иметь структуру, аналогичную или отличную от показанной на фиг. 7 и фиг. 8. Кроме того, кодер (700) и декодер (800) могут быть включены в одно и то же устройство или в отдельные устройства в различных примерах.

[113] Согласно некоторым аспектам раскрытия в РСС может использоваться структура октодерева геометрии. В некоторых связанных примерах структура октодерева геометрии просматривается в порядке "в ширину". В соответствии с порядком "в ширину" узлы октодерева на текущем уровне могут посещаться после посещения узлов октодерева на верхнем уровне. Согласно аспекту настоящего раскрытия, схема порядка "в ширину" не подходит для параллельной обработки, поскольку текущий уровень должен ожидать кодирование верхнего уровня. Настоящее раскрытие предусматривает методы для добавления порядка кодирования "в глубину" в методы порядка кодирования для структуры октодерева геометрии. Порядок кодирования в глубину может быть объединен с порядком кодирования в глубину в некоторых вариантах осуществления или может использоваться сам по себе в некоторых вариантах осуществления. Порядки кодирования (например, порядок кодирования в глубину, комбинация порядка кодирования в глубину и порядка кодирования в ширину, и т.п.) могут называться гибридными порядками кодирования для РСС в настоящем раскрытии.

[114] Предлагаемые способы можно использовать по отдельности или комбинировать в любом порядке. Кроме того, каждый из способов (или вариантов осуществления), кодера и декодера может быть реализован схемами обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере один или более процессоров выполняют программу, которая хранится на невременном машиночитаемом носителе.

[115] Согласно некоторым аспектам раскрытия, информация геометрии и связанные атрибуты облака точек, такие как цвет, коэффициент отражения и т.п., могут сжиматься по-отдельности (например, в модели Test Model 13 (ТМС13)). Информация геометрии облака точек, которая включает в себя трехмерные координаты точек в облаке точек, может быть кодирована с помощью разделения октодерева с информацией о занятости разделов. Атрибуты могут быть сжаты на основе восстановленной геометрии с использованием, например, методов предсказания, подъема и адаптивного иерархического преобразования области.

[116] Согласно некоторым аспектам раскрытия, трехмерное пространство может быть разделено с использованием разделения октодерева. Октодеревья являются трехмерным аналогом квадродеревьев в двумерном пространстве. Техника разделения октодерева относится к технике разделения, которая рекурсивно разделяет трехмерное пространство на восемь октантов, аи структура октодерева относится к древовидной структуре, которая представляет разделы. В примере каждый узел в структуре октодерева соответствует трехмерному пространству, и узел может быть конечным узлом (без разделения, также называемым листовым узлом в некоторых примерах) или узлом с дополнительным разделением. Разделение в узле может разделить трехмерное пространство, представленное узлом, на восемь октантов. В некоторых примерах узлы, соответствующие разделам конкретного узла, могут называться дочерними узлами конкретного узла.

[117] На фиг. 9 показана схема, иллюстрирующая разделение трехмерного куба (900) (соответствующего узлу) на основе техники разделения октодерева согласно некоторым вариантам осуществления настоящего раскрытия. Раздел может разделять трехмерный куб (900) на восемь равновеликих меньших кубов 0-7, как показано на фиг. 9.

[118] Метод разделения октодерева (например, в ТМС13) может рекурсивно разделять исходное трехмерное пространство на меньшие единицы, и информация о занятости каждого подпространства может быть кодирована для представления положений геометрии.

[119] В некоторых вариантах осуществления (например, в ТМС13) используется кодек октодерева геометрии. Кодек октодерева геометрии может выполнять кодирование геометрии. В некоторых примерах кодирование геометрии выполняется на кубическом прямоугольнике. Например, кубический прямоугольник может быть выровненным по оси ограничивающим прямоугольником В, который определяется двумя точками (0,0,0) и (2M-1, 2M-1, 2M-1), где 2M-1 определяет размер ограничивающего прямоугольника В и М может быть указан в битовом потоке.

[120] Затем структура октодерева строится путем рекурсивного деления кубического блока. Например, кубический блок, определяемый двумя точками (0,0,0), (2M-1, 2M-1, 2M-1) делится на 8 субкубических блоков, затем генерируется 8-битный код, называемый кодом занятости. Каждый бит кода занятости ассоциирован с субкубическим блоком, и значение этого бита используется, чтобы указать, содержит ли ассоциированный субкубический блок какие-либо точки облака точек. Например, значение бита 1 указывает, что субкубический блок, ассоциированный с битом, содержит одну или несколько точек облака точек; и значение бита 0 указывает, что субкубический блок, ассоциированный с битом, не содержит точки облака точек.

[121] Кроме того, в случае пустого субкубического блока (например, значение бита, ассоциированного с субкубическим блоком, равно 0), к субкубическому блоку больше не применяется деление. Когда субкубический блок имеет одну или несколько точек облака точек (например, значение бита, ассоциированного с субкубическим блоком, равно 1), субкубический блок дополнительно делится на 8 субкубических блоков меньшего размера и код занятости может быть сгенерирован для субкубического блока, чтобы указать занятость меньших субкубических блоков. В некоторых примерах операции субделения могут повторно выполняться над непустыми субкубическими блоками до тех пор, пока размер субкубических блоков не станет равным заранее определенному порогу, например, размер равен 1. В некоторых примерах субкубические блоки размером 1 называются вокселями, а субкубические блоки, размер которых превышает размер вокселей, могут называться невокселями.

[122] Фиг. 10 показывает пример разделения (1010) октодерева и структуры (1020) октодерева, соответствующей разделению (1010) октодерева, согласно некоторым вариантам осуществления изобретения. Фиг. 10 показывает два уровня разделения в разделении (1010) октодерева. Структура (1020) октодерева включает в себя узел (N0), соответствующий кубическому блоку для разделения (1010) октодерева. На первом уровне кубический блок разделен на 8 субкубических блоков, которые пронумерованы от 0 до 7 согласно методу нумерации, показанному на фиг. 9. Код занятости для раздела узла N0 - это «10000001» в двоичном формате, что указывает то, что первый субкубический блок, представленный узлом N0-0, а восьмой субкубический блок, представленный узлом N0-7, включают точки в облаке точек, а другие субкубические боксы пусты.

[123] Затем на втором уровне разделения первый субкубический блок (представленный узлом N0-0) и восьмой субкубический блок (представленный узлом N0-7) дополнительно соответственно подразделяются на восемь октантов. Например, первый субкубический блок (представленный узлом N0-0) разделен на 8 субкубических блоков меньшего размера, которые пронумерованы от 0 до 7 согласно методу нумерации, показанному на фиг. 9. Код занятости для раздела узла N0-0 - это «00011000» в двоичном формате, что указывает на то, что четвертый меньший субкубический блок (представленный узлом N0-0-3) и пятый меньший субкубический блок (представленный узлом N0-0-4) включают точки в облаке точек, а другие меньшие субкубические прямоугольники пусты. На втором уровне седьмой субкубический блок (представленный узлом N0-7) аналогично разделен на 8 субкубических блоков меньшего размера, как показано на фиг. 10.

[124] На фиг. 10, узлы, соответствующие непустому кубическому пространству (например, кубический ящик, субкубические блоки, субкубические блоки меньшего размера и т.п.), окрашены в серый цвет и называются заштрихованными узлами.

[125] Согласно некоторым аспектам раскрытия коды занятости могут быть соответствующим образом сжаты с использованием подходящих методов кодирования. В некоторых вариантах осуществления арифметический кодер используется для сжатия кода занятости текущего узла в структуре октодерева. Код занятости может быть обозначен как S, который является 8-битовым целым числом, и каждый бит в S указывает статус занятости дочернего узла текущего узла. В варианте осуществления код занятости кодируется с использованием побитового кодирования. В другом варианте код занятости кодируется с использованием побайтового кодирования. В некоторых примерах (например, ТМС13) побитовое кодирование разрешено по умолчанию. Как побитовое кодирование, так и побайтовое кодирование могут выполнять арифметическое кодирование с контекстным моделированием для кодирования кода занятости. Контекстный статус может быть инициализирован в начале всего процесса кодирования для кодов занятости и обновляться во время процесса кодирования кодов занятости.

[126] В варианте осуществления побитового кодирования для кодирования кода занятости для текущего узла восемь бинов в S для текущего узла кодируются в определенном порядке. Каждый бин в S кодируется посредством ссылки на статус занятости соседних узлов текущего кода и/или дочерних узлов соседних узлов. Соседние узлы находятся на том же уровне, что и текущий узел, и могут называться братскими узлами текущего узла.

[127] В варианте осуществления побайтового кодирования для кодирования кода занятости текущего узла код занятости S (один байт) может быть кодирован путем обращения к: (1) адаптивной поисковой таблице (A-LUT), которая отслеживает Р (например, 32) наиболее часто используемые коды занятости; и (2) кэшу, который отслеживает последние различные наблюдаемые Q (например, 16) коды занятости.

[128] В некоторых примерах побайтового кодирования кодируется двоичный флаг, указывающий, находится ли S в A-LUT или нет. Если S находится в A-LUT, индекс в A-LUT кодируется с использованием двоичного арифметического кодера. Если S отсутствует в A-LUT, то кодируется двоичный флаг, указывающий, находится ли S в кэше или нет. Если S находится в кэше, то двоичное представление его индекса в кэше кодируется с помощью двоичного арифметического кодера. В противном случае, если S отсутствует в кэше, двоичное представление S кодируется с помощью двоичного арифметического кодера.

[129] В некоторых вариантах осуществления на стороне декодера процесс декодирования может начинаться с анализа размеров ограничивающего прямоугольника из битового потока. Ограничивающий прямоугольник указывает на кубический прямоугольник, соответствующий корневому узлу в структуре октодерева, для разделения кубического прямоугольника в соответствии с информацией геометрии облака точек (например, информацией занятости для точек в облаке точек). Затем строится структура октодерева посредством деления кубического блока в соответствии с декодированными кодами занятости.

[130] В некоторых связанных примерах (например, в версии ТМС13) для кодирования кодов занятости структура октодерева просматривается в порядке "в ширину". Согласно порядку "в ширину" узлы октодерева (узлы в структуре октодерева) на уровне могут быть посещены после посещения всех узлов октодерева верхнего уровня. В примере реализации может использоваться структура данных «первым пришел - первым обслужен» (FIFO).

[131] Фиг. 11 показывает диаграмму структуры (1100) октодерева, иллюстрирующую порядок кодирования в ширину. Заштрихованные узлы в структуре октодерева (1100) - это узлы, соответствующие кубическим пространствам, которые не являются пустыми. Коды занятости для заштрихованных узлов могут быть кодированы в порядке кодирования в ширину от 0 до 8, как показано на фиг. 11. В порядке кодирования в ширину узлы октодерева посещаются поэтапно. Порядок кодирования в ширину сам по себе не подходит для параллельной обработки, поскольку для текущего уровня необходимо ждать кодирования верхнего уровня.

[132] Некоторые аспекты раскрытия предусматривают гибридный порядок кодирования, который включает в себя по меньшей мере один уровень, который кодируется с использованием порядка кодирования в глубину, вместо порядка кодирования в ширину. Таким образом, в некоторых вариантах осуществления узел на уровне с порядком кодирования в глубину и узлы-потомки этого узла могут формировать структуру субоктодерева в структуре октодерева. Когда первый уровень с порядком кодирования в глубину включает в себя несколько узлов, соответствующих непустым кубическим пространствам, несколько узлов и их соответствующие узлы-потомки могут образовывать несколько структур субоктодерева. Множественные структуры субоктодерева могут кодироваться параллельно в некоторых вариантах осуществления.

[133] Фиг. 12 показывает схему структуры (1200) октодерева, иллюстрирующую порядок кодирования в глубину. Заштрихованные узлы в структуре октодерева (1200) -это узлы, соответствующие кубическим пространствам, которые не являются пустыми. Структура октодерева (1200) может соответствовать той же геометрии занятости облака точек, что и для структуры (1100) октодерева. Коды занятости для заштрихованных узлов могут быть кодированы в порядке кодирования в глубину от 0 до 8, как показано на фиг. 12.

[134] На примере с фиг. 12, узел «0» может находиться на любой подходящей глубине разделения, такой как PD0, дочерние узлы узла «0» находятся на глубине разделения PD0+1, а дочерние узлы узла «0» находятся на глубине разделения PD0+2. На примере с фиг.12 узлы с глубиной разделения PD0+1 могут быть кодированы в порядке кодирования в глубину. Узлы на глубине раздела PD0+1 включают два узла, которые соответствуют непустому пространству. Два узла и их соответственно узлы-потомки могут образовывать первую структуру субоктодерева (1210) и вторую структуру субоктодерева (1220), эти два узла могут соответственно называться корневыми узлами двух структур субоктодерева.

[135] Порядок кодирования в глубину на фиг. 12 упоминается как версия предпорядка для порядка кодирования в глубину. В версии предпорядка порядка кодирования в глубину для каждой структуры субоктодерева сначала посещается корневой узел субоктодерева перед посещением дочерних узлов структуры субоктодерева. Кроме того, сначала посещается самый глубокий узел, а затем выполняется обратная связь с "братьями" родительского узла.

[136] На фиг. 12, первая структура (1210) субоктодерева и вторая структура (1220) субоктодерева могут быть кодированы при параллельной обработке в некоторых реализациях. Например, узел 1 и узел 5 можно посещать одновременно. В некоторых примерах рекурсивное программирование или структура данных стека могут использоваться для реализации порядка кодирования в глубину.

[137] В некоторых вариантах осуществления гибридный порядок кодирования начинается с прохождения в ширину (кодирования), и после нескольких уровней прохождения в ширину может быть разрешено прохождение в глубину (кодирования).

[138] Следует отметить, что гибридный порядок кодирования может использоваться в любой подходящей системе РСС, такой как система РСС на основе ТМС13, система РСС на основе MPEG-PCC и т.п.

[139] Согласно аспекту раскрытия, гибридный порядок кодирования может включать в себя как порядок кодирования в ширину, так и порядок кодирования в глубину, для кодирования информации геометрии облака точек. В варианте осуществления может быть задан размер узла для узлов в структуре октодерева для изменения с порядка кодирования в ширину на порядок кодирования в глубину. В примере, во время РСС, кодирование структуры октодерева начинается с порядка кодирования в ширину, и на уровне, когда размер узла равен указанному размеру узла для изменения порядка кодирования, порядок кодирования может измениться на порядок кодирования в глубину. Следует отметить, что в некоторых примерах размер узла ассоциирован с глубиной раздела.

[140] В другом варианте осуществления может быть указан размер узла для узлов в структуре октодерева для изменения с порядка кодирования в глубину на порядок кодирования в ширину. В примере, во время РСС, кодирование структуры октодерева начинается с порядка кодирования в глубину, и на уровне, когда размер узла равен указанному размеру узла для изменения порядка кодирования, порядок кодирования может измениться на порядок кодирования в ширину. Следует отметить, что в некоторых примерах размер узла ассоциирован с глубиной раздела.

[141] Конкретнее, в варианте осуществления, начиная с порядка кодирования в ширину, размер узла может быть представлен в масштабе log2 и обозначается как d=0,1,…, М-1, где М-1 - размер корневого узла и М - максимальное количество глубин разделения октодерева (также упоминается в качестве уровней в некоторых примерах). Кроме того, может быть определен параметр dt, который называется размером изменения порядка кодирования. Например, указанный параметр dt (1≤dt≤М-1) используется для указания того, что порядок в ширину применяется к узлам от размера М-1 до dt, а порядок в глубину применяется к узлам от размера dt-1 до 0. Когда dt=М-1, схема «в глубину» применяется ко всем узлам октодерева из корневого узла. Когда dt=1, структура октодерева кодируется только с использованием порядка кодирования в ширину.

[142] В некоторых вариантах осуществления порядок кодирования для структуры октодерева может начинаться с порядка кодирования в ширину, затем на конкретной глубине (соответствующей конкретному размеру узла), каждый узел на конкретной глубине и узлы-потомки этого узла образуют отдельную структуру субоктодерева облака точек. Таким образом, на конкретной глубине формируются множественные структуры субоктодерева. Структуры субоктодерева могут быть отдельно кодированы с использованием любого подходящего режима кодирования. Например, структура субоктодерева может быть кодирована с использованием порядка кодирования в глубину. В другом примере структура субоктодерева может быть кодирована с использованием порядка кодирования в ширину. В другом примере структура субоктодерева может быть кодирована с использованием гибридного порядка кодирования. В другом примере коды занятости в структуре субоктодерева могут быть кодированы с использованием схемы побитового кодирования. В другом примере коды занятости в структуре субоктодерева могут быть кодированы с использованием схемы побайтового кодирования. В другом примере структура субоктодерева может быть кодирована с использованием метода кодирования с предсказанием геометрии, которая является альтернативным режимом кодирования для режима кодирования октодерева в глубину. Метод кодирования с предсказанием геометрии может предсказывать точки на основе ранее кодированных соседних точек с кодированными корректирующими векторами в некоторых примерах.

[143] В некоторых вариантах осуществления на стороне кодера для каждой структуры субоктодерева кодер может выбрать режим кодирования из множества режимов кодирования на основе эффективности кодирования. Например, выбранный режим кодирования для структуры субоктодерева может обеспечить наилучшую эффективность кодирования для структуры субоктодерева. Затем кодер может использовать соответственно выбранные режимы кодирования для структур субоктодерева, чтобы соответственно кодировать структуры субоктодерева. В некоторых вариантах осуществления кодер может сигнализировать индекс для структуры субоктодерева в битовом потоке, и этот индекс указывает выбранный режим кодирования для структуры субоктодерева. На стороне декодера декодер может определять режим кодирования для структуры субоктодерева на основе индекса в битовом потоке, а затем декодировать структуру субоктодерева в соответствии с режимом кодирования.

[144] Аспекты настоящего раскрытия также предусматривают методы сигнализирования для гибридного порядка кодирования. Согласно аспекту раскрытия, управляющие параметры, которые должны использоваться в гибридном порядке кодирования, могут сигнализироваться в синтаксисе высокого уровня, таком как набор параметров последовательности (SPS), заголовок слайса, набор параметров геометрии битового потока и т.п. Следует отметить, что в нижеследующем описании представлены конкретные примеры. Раскрытые методы, проиллюстрированные на конкретных примерах, не ограничиваются конкретными примерами и могут быть соответствующим образом скорректированы и использованы в других примерах.

[145] В одном варианте осуществления параметр dt (размер изменения порядка кодирования) указывается в синтаксисе высокого уровня.

[146] Фиг. 13 показывает пример синтаксиса (1300) набора параметров геометрии согласно некоторым вариантам осуществления изобретения. Как показано (1310), gps_depth_first_node_size_log2_minus_1 указывается в наборе параметров геометрии. Параметр dt может быть определен на основе gps_depth_first_node_size_log2_minus_1, например, согласно (Ур. 1).

[147] Следует отметить, что когда gps_depth_first_node_size_log2_minus_1 равно 0, порядок кодирования в глубину отключен.

[148] В другом варианте осуществления флаг управления явно сигнализируется, чтобы указать, используется ли гибридный порядок кодирования.

[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):

Когда gps_hybrid_coding_order_flag ложно (например, имеет значение 0), dt по умолчанию устанавливается значение 1, чтобы указать, что порядок кодирования в глубину отключен, и в примере применяется только порядок кодирования в ширину.

[150] В одном варианте осуществления, когда разрешен гибридный порядок кодирования, порядок "в ширину" применяется к узлам от размера М-1 до dt, а порядок "в глубину" применяется к узлам от размера dt-1 до 0.

[151] Фиг. 15 показывает пример (1500) псевдокода для кодирования октодерева согласно некоторым вариантам осуществления раскрытия. Как показано в (1510), когда глубина>=MaxGeometryOctreeDepth - dt, может использоваться порядок кодирования в глубину. На фиг. 15, например, псевдокод «geometry_node_depth_first» может применяться для порядка кодирования в глубину.

[152] Фиг. 16 показывает пример (1600) псевдокода для порядка кодирования в глубину согласно некоторым вариантам осуществления раскрытия. Псевдокод «geometry_node_depth_first» - это рекурсивная функция. В рекурсивной функции сначала вызывается функция «geometry_node» для получения кода занятости для текущего узла октодерева, а затем псевдокод «geometry_node_depth_first» вызывается сам по себе для кодирования каждого дочернего узла до достижения конечных узлов, например, когда глубина>=MaxGeometryOctreeDepth-1.

[153] Фиг. 17 иллюстрирует блок-схему, описывающую процесс (1700) согласно варианту осуществления изобретения. Процесс (1700) может использоваться в процессе кодирования облаков точек. В различных вариантах осуществления процесс (1700) выполняется схемой обработки, такой как схема обработки в терминальных устройствах (110), схемой обработки, которая выполняет функции кодера (203) и/или декодера (201), схемой обработки, которая выполняет функции кодера (300), декодера (400), кодера (700) и/или декодера (800) и т.п. В некоторых вариантах осуществления процесс (1700) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки выполняет процесс (1700). Процесс начинается с (S1701) и переходит к (S1710).

[154] На этапе (S1710) получается кодированный битовый поток для облака точек. Кодированный битовый поток включает в себя информацию геометрии в форме кодированных кодов занятости для узлов в структуре октодерева для облака точек. Узлы в структуре октодерева соответствуют трехмерным (3D) разделениям пространства облака точек. Размеры узлов ассоциированы с размерами соответствующих трехмерных разделов.

[155] На этапе (S1720) коды занятости для узлов декодируются из кодированных кодов занятости. По меньшей мере первый код занятости для дочернего узла первого узла декодируется без ожидания декодирования второго кода занятости для второго узла, имеющего тот же размер узла, что и первый узел.

[156] В одном варианте осуществления дочерний узел находится среди первого набора узлов (первых узлов-потомков) в первом субоктодереве, причем первый узел является корневым узлом первого субоктодерева. Первый узел и второй узел - это братские узлы с одинаковым размером узла. Второй узел является корневым узлом второго субоктодерева, которое включает в себя второй набор узлов (вторые узлы-потомки). Затем, в некоторых примерах, можно отдельно декодировать первый набор кодов занятости для первого набора узлов и второй набор кодов занятости для второго набора узлов. В одном примере первый набор кодов занятости для первого набора узлов и второй набор кодов занятости для второго набора узлов могут декодироваться параллельно. В другом примере первый набор кодов занятости для первого набора узлов декодируется с использованием первого режима кодирования, а второй набор кодов занятости для второго набора узлов декодируется с использованием второго режима кодирования.

[157] Первый режим кодирования и второй режим кодирования могут использовать любой из порядка кодирования в глубину, порядка кодирования в ширину, метода кодирования с предсказанием геометрии и т.п. В некоторых примерах кодированный поток битов включает в себя первый индекс, который указывает первый режим кодирования для первого субоктодерева, и второй индекс, который указывает второй режим кодирования для второго субоктодерева.

[158] В другом варианте осуществления первый узел и второй узел имеют конкретный размер узла для изменения порядка кодирования. В некоторых примерах более крупные узлы в узлах кодируются с использованием первого порядка кодирования, а узлы меньшего размера в узлах кодируются с использованием второго порядка кодирования. Размеры узлов более крупных узлов больше конкретного размера узла для изменения порядка кодирования. Размеры узлов меньших узлов равны или меньше конкретного размера узла для изменения порядка кодирования. В одном примере первый порядок кодирования является порядком кодирования в ширину, а второй порядок кодирования является порядком кодирования в глубину. В другом примере первый порядок кодирования является порядком кодирования в глубину, а второй порядок кодирования является порядком кодирования в ширину.

[159] В некоторых примерах конкретный размер узла для изменения порядка кодирования определяется на основе сигнала в кодированном битовом потоке для облака точек. В некоторых примерах сигнал предоставляется, когда сигнал управления указывает на изменение порядка кодирования.

[160] На этапе (S1730) структура октодерева может быть восстановлена на основе декодированных кодов занятости для узлов.

[161] На этапе (S1740) облако точек восстанавливают на основе структуры октодерева. Затем процесс переходит к (S1799) и завершается.

[162] Методы, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или более машиночитаемых носителях. Например, на фиг. 18 показана компьютерная система (1800), подходящая для реализации определенных вариантов осуществления раскрытого объекта изобретения.

[163] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть объектом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более центральными процессорами компьютера (CPU), графическими процессорами (CPU) и т.п.

[164] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.

[165] Компоненты, показанные на фиг. 18 для компьютерной системы (1800), являются примерными по своей сущности и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы (1800).

[166] Компьютерная система (1800) может включать в себя определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения управляющей перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображен). Устройства с человеко-машинным интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).

[167] Устройства ввода с человеко-машинным интерфейсом могут включать в себя одно или более из следующих элементов (только по одному из каждого изображено): клавиатура (1801), мышь (1802), трекпад (1803), сенсорный экран (1810), управляющая перчатка (не показана), джойстик (1805), микрофон (1806), сканер (1807), камера (1808).

[168] Компьютерная система (1800) также может включать в себя определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать чувства одного или более пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеко-машинным интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (1810), управляющей перчатки (не показана) или джойстика (1805), но также могут иметься устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (1809), наушники (не показаны)), устройства вывода изображения (например, экраны (1810), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее - некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).

[169] Компьютерная система (1800) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW (1820) с CD/DVD или подобные носители (1821), флэш-накопитель (1822), съемный жесткий диск или твердотельный накопитель (1823), унаследованные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не показаны) и т.п.

[170] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объектом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.

[171] Компьютерная система (1800) также может включать в себя интерфейс к одной или более коммуникационным сетям. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т.д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное телевещание, автомобильное и промышленное оборудование, включая CAN-шину и т.д. Некоторым сетям обычно требуются внешние сетевые интерфейсные адаптеры, которые подключены к определенным портам данных общего назначения или периферийным шинам (1849) (например, к портам USB компьютерной системы (1800)); другие обычно интегрированы в ядро компьютерной системы (1800) путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1800) может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CAN-шина на определенные устройства с CAN-шиной) или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровую сеть. В каждой из этих сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов, как описано выше.

[172] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру (1840) компьютерной системы (1800).

[173] Ядро (1840) может включать в себя один или более центральных процессоров (CPU) (1841), графических процессоров (GPU) (1842), специализированных программируемых процессоров в виде программируемых пользователем вентильных матриц (FPGA) (1843), аппаратных ускорителей (1844) для определенных задач и т.д. Эти устройства, наряду с постоянной памятью (ROM) (1845), памятью с произвольным доступом (1846), внутренними запоминающими устройствами, такими как внутренние жесткие диски, не доступные пользователю, твердотельные накопители и т.п. (1847), могут быть подключены через системную шину (1848). В некоторых компьютерных системах системная шина (1848) может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (1848) ядра, либо через периферийную шину (1849). Архитектура периферийной шины включает PCI, USB и т.п.

[174] CPU (1841), GPU (1842), FGPA (1843) и ускорители (1844) могут выполнять определенные инструкции, которые в сочетании могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (1845) или RAM (1846). Переходные данные также могут храниться в RAM (1846), тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости (1847). Быстрое хранение и извлечение на любое из запоминающих устройств могут быть разрешены за счет использования кэш-памяти, которая может быть тесно связана с одним или несколькими CPU (1841), GPU (1842), запоминающим устройством (1847), ROM (1845), RAM (1846) и тому подобное.

[175] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего изобретения, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.

[176] В качестве примера, но не ограничения, компьютерная система, имеющая архитектуру (1800) и, в частности, ядро (1840), может обеспечивать функциональность за счет процессора(ов) (включая CPU, GPU, FPGA, ускорители и т.п.), исполняющего программное обеспечение, воплощенное на одном или нескольких материальных машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя ЗУ большой емкости, как описано выше, а также определенным хранилищем ядра (1840), которые имеют невременной характер, например, внутренним ЗУ (1847) большой емкости ядра или ROM (1845). Программное обеспечение, реализующее различные варианты осуществления настоящего раскрытия, может храниться в таких устройствах и выполняться ядром (1840). Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может предписывать ядру (1840) и, в частности, процессорам в нем (включая CPU, GPU, FPGA и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в RAM (1846), и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель (1844)), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это применимо. Ссылка на машиночитаемый носитель может включать в себя схему (например, интегральную схему (IC)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это применимо. Настоящее изобретение включает в себя любую подходящую комбинацию аппаратного и программного обеспечения.

[177] Хотя это описание раскрывает несколько примерных вариантов осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем изобретения. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы изобретения и, таким образом, находятся в рамках его сущности и объема.

Похожие патенты RU2799041C1

название год авторы номер документа
Способ и устройство для кодирования облака точек 2020
  • Чжан Сян
  • Гао Вэнь
  • Лю Шань
RU2778377C1
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК 2021
  • Йеа Сехун
  • Гао Вэнь
  • Чжан Сян
  • Лю Шань
RU2792020C1
Неявное геометрическое разделение на основе квадродерева или бинарного дерева для кодирования облака точек 2020
  • Чжан Сян
  • Гао Вэнь
  • Йеа Сехун
  • Лю Шань
RU2778864C1
Способ кодирования атрибутов для кодирования облака точек 2021
  • Гао Вэнь
  • Чжан Сян
  • Лю Шань
RU2773384C1
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ КОЭФФИЦИЕНТОВ ТРАНСФОРМАЦИИ С АЛФАВИТНЫМ РАЗДЕЛЕНИЕМ ДЛЯ СЖАТИЯ ОБЛАКА ТОЧЕК 2021
  • Йеа Сехун
  • Венгер Стефан
  • Лю Шань
RU2769460C1
Способы и устройство для обобщенного кодирования геометрии с треугольной сеткой 2020
  • Восугхи Араш
  • Йеа Сехун
  • Венгер Стефан
  • Лю Шань
RU2782251C1
Способ кодирования и декодирования облака точек 2020
  • Чжан Вэй
  • Чампел Мэри-Люк Джорджес Генри
RU2800579C1
Способ и устройство для энтропийного кодирования/декодирования данных геометрии облака точек, захваченных вращающейся головкой датчиков 2021
  • Лассерр Себастьян
  • Такет Джонатан
  • Чампел Мэри-Люк Джорджес Генри
RU2815072C1
Способ и устройство квантования сферических координат, используемых для кодирования/декодирования данных геометрии облака точек 2021
  • Такет Джонатан
  • Лассерр Себастьян
RU2818299C1
Способ кодирования и декодирования, кодер и декодер 2020
  • Чжан Вэй
  • Чампел Мэри-Люк Джорджес Генри
RU2812090C1

Иллюстрации к изобретению RU 2 799 041 C1

Реферат патента 2023 года СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК

Изобретение относится к области кодирования данных. Техническим результатом является повышение эффективности восстановления кодированного облака точек. Способ восстановления облака точек из кодированного потока облака точек заключается в том, что получают, из кодированного битового потока для облака точек, закодированные коды занятости для узлов в структуре октодерева для облака точек. Узлы в структуре октодерева соответствуют трехмерным разделам пространства облака точек. Размеры узлов ассоциированы с размерами соответствующих трехмерных разделов. Декодирует, из закодированных кодов занятости, коды занятости для узлов. По меньшей мере первый код занятости для дочернего узла первого узла декодируется без ожидания декодирования второго кода занятости для второго узла, имеющего тот же размер узла, что и первый узел. Восстанавливают структуру октодерева на основе декодированных кодов занятости для узлов и восстанавливает облако точек на основе структуры октодерева. 2 н. и 16 з.п. ф-лы, 18 ил.

Формула изобретения RU 2 799 041 C1

1. Способ восстановления облака точек из кодированного потока облака точек, содержащий:

получение, посредством процессора, из кодированного битового потока для облака точек, кодированных кодов занятости для узлов в структуре октодерева для облака точек, причем узлы в структуре октодерева соответствуют трехмерным (3D) разделам пространства облака точек, при этом размеры узлов ассоциированы с размерами соответствующих 3D разделов;

декодирование, посредством процессора, из закодированных кодов занятости, кодов занятости для узлов, причем по меньшей мере первый код занятости для дочернего узла первого узла декодируют без ожидания декодирования второго кода занятости для второго узла, имеющего тот же размер узла, что и первый узел;

восстановление, посредством процессора, структуры октодерева на основе декодированных кодов занятости для узлов; и

восстановление, посредством процессора, облака точек на основе структуры октодерева; и

дополнительно содержащий:

декодирование первой части кодов занятости для более крупных узлов в узлах с использованием первого порядка кодирования, при этом более крупные узлы больше конкретного размера узла для изменения порядка кодирования; и

декодирование второй части кодов занятости для меньших узлов в узлах с использованием второго порядка кодирования, который отличается от первого порядка кодирования, при этом меньшие узлы равны или меньше конкретного размера узла для изменения порядка кодирования.

2. Способ по п. 1, дополнительно содержащий:

декодирование первого набора кодов занятости для первого набора узлов в первом субоктодереве, причем первый узел является корнем первого субоктодерева; и

декодирование второго набора кодов занятости для второго набора узлов во втором субоктодереве, при этом второй узел является корнем второго субоктодерева.

3. Способ по п. 2, дополнительно содержащий:

декодирование первого набора кодов занятости для первого набора узлов в первом субоктодереве параллельно с декодированием второго набора кодов занятости для второго набора узлов во втором субоктодереве.

4. Способ по п. 2, дополнительно содержащий:

декодирование, с использованием первого режима кодирования, первого набора кодов занятости для первого набора узлов в первом субоктодереве; и

декодирование, с использованием второго режима кодирования, второго набора кодов занятости для второго набора узлов во втором субоктодереве.

5. Способ по п. 4, дополнительно содержащий:

декодирование, из кодированного битового потока, первого индекса, указывающего первый режим кодирования для первого субоктодерева; и

декодирование, из кодированного битового потока, второго индекса, указывающего второй режим кодирования для второго субоктодерева.

6. Способ по п. 1, в котором первый порядок кодирования является порядком кодирования в ширину, а второй порядок кодирования является порядком кодирования в глубину.

7. Способ по п. 1, в котором первый порядок кодирования является порядком кодирования в глубину, а второй порядок кодирования является порядком кодирования в ширину.

8. Способ по п. 1, также содержащий:

определение конкретного размера узла для изменения порядка кодирования на основе сигнала в кодированном битовом потоке для облака точек.

9. Способ по п. 8, дополнительно содержащий:

декодирование управляющего сигнала из кодированного битового потока для облака точек, причем управляющий сигнал указывает на изменение порядка кодирования.

10. Устройство восстановления облака точек из кодированного потока облака точек, содержащее:

схему обработки, конфигурированную для:

получения, из кодированного битового потока для облака точек, кодированных кодов занятости для узлов в структуре октодерева для облака точек, причем узлы в структуре октодерева соответствуют трехмерным (3D) разделам пространства облака точек, при этом размеры узлов ассоциированы с размерами соответствующих 3D разделов;

декодирования, из закодированных кодов занятости, кодов занятости для узлов, причем по меньшей мере первый код занятости для дочернего узла первого узла декодируют без ожидания декодирования второго кода занятости для второго узла, имеющего тот же размер узла, что и первый узел;

восстановления структуры октодерева на основе декодированных кодов занятости для узлов; и

восстановления облака точек на основе структуры октодерева,

причем схема обработки конфигурирована для:

декодирования первой части кодов занятости для более крупных узлов в узлах с использованием первого порядка кодирования, при этом более крупные узлы больше конкретного размера узла для изменения порядка кодирования; и

декодирования второй части кодов занятости для меньших узлов в узлах с использованием второго порядка кодирования, который отличается от первого порядка кодирования, при этом меньшие узлы равны или меньше конкретного размера узла для изменения порядка кодирования.

11. Устройство по п. 10, в котором схема обработки конфигурирована для:

декодирования первого набора кодов занятости для первого набора узлов в первом субоктодереве, причем первый узел является корнем первого субоктодерева; и

декодирования второго набора кодов занятости для второго набора узлов во втором субоктодереве, при этом второй узел является корнем второго субоктодерева.

12. Устройство по п. 11, в котором схема обработки конфигурирована для:

декодирования первого набора кодов занятости для первого набора узлов в первом субоктодереве параллельно со вторым набором кодов занятости для второго набора узлов во втором субоктодереве.

13. Устройство по п. 11, в котором схема обработки конфигурирована для:

декодирования, с использованием первого режима кодирования, первого набора кодов занятости для первого набора узлов в первом субоктодереве; и

декодирования, с использованием второго режима кодирования, второго набора кодов занятости для второго набора узлов во втором субоктодереве.

14. Устройство по п. 13, в котором схема обработки конфигурирована для:

декодирования, из кодированного битового потока, первого индекса, указывающего первый режим кодирования для первого субоктодерева; и

декодирования, из кодированного битового потока, второго индекса, указывающего второй режим кодирования для второго субоктодерева.

15. Устройство по п. 10, в котором первый порядок кодирования является порядком кодирования в ширину, а второй порядок кодирования является порядком кодирования в глубину.

16. Устройство по п. 10, в котором первый порядок кодирования является порядком кодирования в глубину, а второй порядок кодирования является порядком кодирования в ширину.

17. Устройство по п. 10, в котором схема обработки конфигурирована для:

определения конкретного размера узла для изменения порядка кодирования на основе сигнала в кодированном битовом потоке для облака точек.

18. Устройство по п. 17, в котором схема обработки конфигурирована для:

декодирования управляющего сигнала из кодированного битового потока для облака точек, причем управляющий сигнал указывает на изменение порядка кодирования.

Документы, цитированные в отчете о поиске Патент 2023 года RU2799041C1

Станок для придания концам круглых радиаторных трубок шестигранного сечения 1924
  • Гаркин В.А.
SU2019A1
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем 1924
  • Волынский С.В.
SU2012A1
Станок для придания концам круглых радиаторных трубок шестигранного сечения 1924
  • Гаркин В.А.
SU2019A1
Станок для придания концам круглых радиаторных трубок шестигранного сечения 1924
  • Гаркин В.А.
SU2019A1
ИЕРАРХИЧЕСКОЕ ОСНОВАННОЕ НА ИЗОБРАЖЕНИЯХ ПРЕДСТАВЛЕНИЕ НЕПОДВИЖНОГО И АНИМИРОВАННОГО ТРЕХМЕРНОГО ОБЪЕКТА, СПОСОБ И УСТРОЙСТВО ДЛЯ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРЕДСТАВЛЕНИЯ ДЛЯ ВИЗУАЛИЗАЦИИ ОБЪЕКТА 2001
  • Хан Махн-Дзин
  • Жирков А.О.
RU2215326C2
УСТРОЙСТВО И СПОСОБ ПРЕДСТАВЛЕНИЯ ТРЕХМЕРНОГО ОБЪЕКТА НА ОСНОВЕ ИЗОБРАЖЕНИЙ С ГЛУБИНОЙ 2002
  • Парк Ин-Киу
  • Жирков А.О.
  • Хан Ман-Дзин
RU2237283C2

RU 2 799 041 C1

Авторы

Чжан Сян

Гао Вэнь

Лю Шань

Даты

2023-07-03Публикация

2020-10-07Подача