СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК
METHOD AND DEVICE FOR ENCODING POINT CLOUD

ВКЛЮЧЕНИЕ ПУТЕМ ССЫЛКИ
[0001] Для настоящей заявки испрашивается приоритет в соответствии с патентной заявкой США №17/203,155 «СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ОБЛАКА ТОЧЕК», поданной 16 марта 2021 г., для которой испрашивается преимущество приоритета предварительной заявки США №63/004,304, «СПОСОБ И УСТРОЙСТВО ДЛЯ ГИБКОГО РАЗБИЕНИЯ КВАДРОДЕРЕВА И ДВОИЧНОГО ДЕРЕВА ДЛЯ ГЕОМЕТРИЧЕСКОГО КОДИРОВАНИЯ», поданной 2 апреля 2020 г. Полное раскрытие предшествующих заявок включено в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее изобретение описывает варианты осуществления, в целом относящиеся к кодированию облака точек.
УРОВЕНЬ ТЕХНИКИ
[0003] Описание уровня техники, предоставленное в данном документе, предназначено для общего представления контекста изобретения. Работа изобретателей, в той мере, в какой она описана в этом разделе, посвященном уровню техники, а также аспекты описания, которые не могут считаться предшествующим уровнем техники на момент подачи заявки, ни прямо, ни косвенно не признаются в качестве известного уровня техники в отношении настоящего изобретения.
[0004] Различные технологии разработаны для захвата и представления мира, такого как объекты в мире, окружающая среда в мире и т.п., в трехмерном (3D) пространстве. Трехмерные представления мира могут обеспечить более иммерсивные формы взаимодействия и общения. Облака точек можно использовать как трехмерное представление мира. Облако точек - это набор точек в трехмерном пространстве, каждая из которых имеет связанные атрибуты, например цвет, свойства материала, информация о текстуре, атрибуты интенсивности, атрибуты отражательной способности, атрибуты, связанные с движением, атрибуты модальности и/или различные другие атрибуты. Такие облака точек могут включать в себя большие объемы данных, и их хранение и передача могут потребовать больших затрат времени и средств.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0005] Аспекты изобретения предлагают способы и устройства для сжатия и распаковки облака точек. Согласно аспекту изобретения, предлагается способ геометрического декодирования облака точек в декодере облака точек. В этом способе первая сигнальная информация может быть получена из кодированного битового потока для облака точек, которое включает в себя набор точек в трехмерном (3D) пространстве. Первая сигнальная информация может указывать информацию о разбиении облака точек. Вторая сигнальная информация может быть определена на основе первой сигнальной информации, указывающей первое значение. Вторая сигнальная информация может указывать на режим разбиения набора точек в трехмерном пространстве. Кроме того, режим разбиения набора точек в трехмерном пространстве может быть определен на основе второй сигнальной информации. Облако точек может быть впоследствии восстановлено в зависимости от режима разбиения.
[0006] В некоторых вариантах осуществления, режим разбиения может быть определен как предварительно определенное разбиение квадродерева и двоичного дерева (Quad-tree and Binary-tree, QtBt) на основе второй сигнальной информации, указывающей второе значение.
[0007] В способе может быть принята третья сигнальная информация, которая указывает, что трехмерное пространство является асимметричным кубоидом. Размеры трехмерного пространства, которые сообщаются по осям х, у и z, могут быть определены на основе третьей сигнальной информации, указывающей первое значение.
[0008] В некоторых вариантах осуществления 3-битовая сигнальная информация может быть определена для каждого из множества уровней разбиения в режиме разбиения, основанном на второй сигнальной информации, указывающей первое значение. 3-битовая сигнальная информация для каждого из множества уровней разбиения может указывать направления разбиения по осям х, у и z для соответствующего уровня разбиения в режиме разбиения.
[0009] В некоторых вариантах осуществления 3-битовая сигнальная информация может быть определена на основе размеров трехмерного пространства.
[0010] В способе режим разбиения может быть определен на основе первой сигнальной информации, указывающей второе значение, где режим разбиения может включать в себя соответствующее разбиение октодерева в каждом из множества уровней разбиения в режиме разбиения.
[0011] Согласно аспекту изобретения, предлагается способ геометрического декодирования облака точек в декодере облака точек. В этом способе первая сигнальная информация может быть получена из кодированного битового потока для облака точек, которое включает в себя набор точек в трехмерном (3D) пространстве. Первая сигнальная информация может указывать информацию о разбиении облака точек. Режим разбиения набора точек в трехмерном пространстве может быть определен на основе первой сигнальной информации, причем режим разбиения может включать в себя множество уровней разбиения. Облако точек впоследствии может быть реконструировано на основе режима разбиения.
[0012] В некоторых вариантах осуществления 3-битовая сигнальная информация для каждого из множества уровней разбиения в режиме разбиения может быть определена на основе первой сигнальной информации, указывающей первое значение, где 3-битовая сигнальная информация для каждого из множества уровней разбиения может указывать направления разбиения по направлениям х, у и z для соответствующего уровня разбиения в режиме разбиения.
[0013] В некоторых вариантах осуществления 3-битовая сигнальная информация может быть определена на основе размеров трехмерного пространства.
[0014] В некоторых вариантах осуществления режим разбиения может быть определен для включения соответствующего разбиения октодерева в каждый из множества уровней разбиения в режиме разбиения, основанном на первой сигнальной информации, указывающей второе значение.
[0015] В способе вторая сигнальная информация может дополнительно быть принята из кодированного битового потока для облака точек. Вторая сигнальная информация может указывать, что трехмерное пространство является асимметричным кубоидом, когда вторая сигнальная информация является первым значением, и трехмерное пространство является симметричным кубоидом, когда вторая сигнальная информация является вторым значением.
[0016] В некоторых вариантах осуществления, на основе первой сигнальной информации, указывающей второе значение, и второй сигнальной информации, указывающей первое значение, режим разбиения может быть определен для включения соответствующего разбиения октодерева в каждый из первых уровней разбиения в множестве уровней разбиения режима разбиения. Тип разбиения и направление разбиения последнего уровня разбиения из множества уровней разбиения режима разбиения могут быть определены согласно следующим условиям:
x
y
z
где d, d, и d являются log2 размеров трехмерного пространства вдоль осей х, у и z, соответственно.
[0017] В способе вторая сигнальная информация может быть определена на основе первой сигнальной информации, указывающей первое значение. Вторая сигнальная информация может указывать, что трехмерное пространство является асимметричным кубоидом, когда вторая сигнальная информация указывает первое значение, и трехмерное пространство является симметричным кубоидом, когда вторая сигнальная информация указывает второе значение. Кроме того, размеры трехмерного пространства, которые сообщаются по направлениям х, у и z, могут быть определены на основе второй сигнальной информации, указывающей первое значение.
[0018] В некоторых примерах устройство для обработки данных облака точек включает в себя схему приема и схему обработки, которые сконфигурированы для выполнения одного или нескольких способов, описанных выше.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0019] Дополнительные особенности, природа и различные преимущества раскрытого предмета изобретения будут более понятны из следующего подробного описания и прилагаемых чертежей, на которых:
[0020] Фиг. 1 - схематическая иллюстрация упрощенной структурной схемы системы связи в соответствии с вариантом осуществления;
[0021] Фиг. 2 - схематическая иллюстрация упрощенной структурной схемы потоковой системы в соответствии с вариантом осуществления;
[0022] Фиг. 3 показывает структурную схему кодера для кодирования кадров облака точек согласно некоторым вариантам осуществления;
[0023] Фиг. 4 показывает структурную схему декодера для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления;
[0024] Фиг. 5 - схематическая иллюстрация упрощенной структурной схемы видеодекодера в соответствии с вариантом осуществления;
[0025] Фиг. 6 - схематическая иллюстрация упрощенной структурной схемы видеокодера в соответствии с вариантом осуществления;
[0026] Фиг. 7 показывает структурную схему декодера для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления;
[0027] Фиг. 8 показывает структурную схему кодера для кодирования кадров облака точек согласно некоторым вариантам осуществления;
[0028] Фиг. 9 показывает схему, иллюстрирующую разбиение куба на основе техники разбиения октодерева согласно некоторым вариантам осуществления настоящего изобретения.
[0029] Фиг. 10 показывает пример разбиения октодерева и структуры октодерева, соответствующей разбиению октодерева, согласно некоторым вариантам осуществления изобретения.
[0030] Фиг. 11 показывает облако точек с ограничивающим параллелепипедом, более коротким в направлении z, согласно некоторым вариантам осуществления изобретения.
[0031] Фиг. 12 показывает схему, иллюстрирующую разбиение куба на основе техники разбиения октодерева по осям х-у, x-z и y-z, согласно некоторым вариантам осуществления изобретения.
[0032] Фиг. 13 показывает схему, иллюстрирующую разбиения куба на основе способа двоичного разбиения по осям х, у и z, согласно некоторым вариантам осуществления изобретения.
[0033] Фиг. 14 показывает первую блок-схему, описывающую первый пример процесса в соответствии с некоторыми вариантами осуществления.
[0034] Фиг. 15 показывает вторую блок-схему, описывающую второй пример процесса в соответствии с некоторыми вариантами осуществления.
[0035] Фиг. 16 - схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0036] Усовершенствованные трехмерные представления мира обеспечивают более иммерсивные формы взаимодействия и коммуникации, а также позволяют машинам понимать, интерпретировать и ориентироваться в нашем мире. Трехмерные облака точек появились как возможность представления такой информации. Выявлен ряд случаев применения, связанных с данными облака точек, и разработаны соответствующие требования для представления и сжатия облака точек. Например, трехмерное облако точек можно использовать при автономном вождении для обнаружения и локализации объектов. Облако точек 3D может также использоваться в географических информационных системах (ГИС) для картографии и использоваться в культурном наследии для визуализации и архивирования объектов и коллекций культурного наследия.
[0037] Облако точек в общем представляет собой набор точек в трехмерном пространстве, каждая со связанными с ней атрибутами. Атрибуты могут включать в себя цвет, свойства материала, информацию о текстуре, атрибуты интенсивности, атрибуты отражательной способности, атрибуты, связанные с движением, атрибуты модальности и/или различные другие атрибуты. Облака точек можно использовать для воссоздания объекта или сцены как композиции таких точек. Точки могут быть захвачены с помощью множества камер, датчиков глубины и/или лидара в различных настройках и могут включать от тысяч до миллиардов точек для реалистичного представления реконструированных сцен.
[0038] Технологии сжатия могут уменьшить объем данных, необходимых для представления облака точек, для более быстрой передачи или уменьшения объема памяти. Таким образом, необходимы технологии для сжатия облаков точек с потерями для использования в коммуникациях в реальном времени и в виртуальной реальности с шестью степенями свободы (6 DoF). Кроме того, требуется технология сжатия облаков точек без потерь в контексте динамического картографирования для автономного вождения, приложений культурного наследия и т.п.Так, ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) начал работу над стандартом для решения проблемы сжатия геометрии и атрибутов, таких как цвета и отражательная способность, масштабируемого / прогрессивного кодирования, кодирования последовательностей облаков точек, захваченных в течение времени, и произвольного доступа к подмножествам облака точек.
[0039] Фиг. 1 иллюстрирует упрощенную структурную схему системы (100) связи согласно варианту осуществления настоящего изобретения. Система (100) связи включает в себя множество оконечных устройств, которые могут связываться друг с другом, например, через сеть (150). Например, система (100) связи включает в себя пару оконечных устройств (110) и (120), соединенных между собой через сеть (150). В примере на фиг. 1, первая пара оконечных устройств (110) и (120) может выполнять однонаправленную передачу данных облака точек. Например, оконечное устройство (110) может сжимать облако точек (например, точки, представляющие структуру), которое захватывается датчиком (105), подключенным к оконечному устройству (110). Сжатое облако точек может быть передано, например, в форме битового потока, на другое оконечное устройство (120) через сеть (150). Оконечное устройство (120) может принимать сжатое облако точек из сети (150), распаковывать битовый поток для восстановления облака точек и соответствующим образом отображать восстановленное облако точек. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т.п.
[0040] В примере на фиг.1, оконечные устройства (110) и (120) могут быть проиллюстрированы как серверы и персональные компьютеры, но принципы настоящего изобретения не могут быть ограничены этим. Варианты осуществления настоящего изобретения находят применение в портативных компьютерах, планшетных компьютерах, смартфонах, игровых терминалах, медиаплеерах и/или специализированном трехмерном (3D) оборудовании. Сеть (150) представляет любое количество сетей, которые передают сжатое облако точек между оконечными устройствами (110) и (120). Сеть (150) может включать в себя, например, проводные линии (проводные) и/или беспроводные сети связи. Сеть (150) может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети (150) могут быть несущественными для работы настоящего изобретения, если это не объясняется в данном документе ниже.
[0041] Фиг. 2 иллюстрирует упрощенную структурную схему потоковой системы (200) в соответствии с вариантом осуществления. Пример на фиг. 2 представляет собой применение для раскрытого предмета изобретения для облака точек. Раскрытый предмет изобретения может быть в равной степени применим к другим приложениям с поддержкой облака точек, таким как приложение 3D телеприсутствия, приложение виртуальной реальности и т.п.
[0042] Потоковая система (200) может включать в себя подсистему (213) захвата. Подсистема (213) захвата может включать в себя источник (201) облака точек, например, системы обнаружения и определения расстояния с помощью света (LIDAR, light detection and ranging), 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) рендеринга.
[0043] Следует отметить, что электронные устройства (220) и (230) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (220) может включать в себя декодер (не показан), а электронное устройство (230) также может включать в себя кодер (не показан).
[0044] В некоторых потоковых системах сжатые облака (204), (207) и (209) точек (например, битовые потоки сжатых облаков точек) могут быть сжаты в соответствии с определенными стандартами. В некоторых примерах стандарты видеокодирования используются при сжатии облаков точек. Примеры этих стандартов включают в себя высокоэффективное кодирование видео (HEVC), универсальное кодирование видео (VVC) и т.п.
[0045] Фиг. 3 показывает структурную схему кодера (300) V-PCC для кодирования кадров облака точек согласно некоторым вариантам осуществления. В некоторых вариантах осуществления кодер (300) V-PCC может использоваться в системе (100) связи и системе (200) потоковой передачи. Например, кодер (203) может быть сконфигурирован и работать аналогично кодеру (300) V-PCC.
[0046] Кодер (300) V-PCC принимает кадры облака точек как несжатые входные данные и генерирует битовый поток, соответствующий сжатым кадрам облака точек. В некоторых вариантах осуществления кодер (300) V-PCC может принимать кадры облака точек от источника облака точек, такого как источник (201) облака точек и т.п.
[0047] В примере на фиг. 3, кодер (300) V-PCC включает в себя модуль (306) генерации патчей, модуль (308) упаковки патчей, модуль (310) генерации геометрических изображений, модуль (312) генерации текстурных изображений, модуль (304) информации о патчах, модуль (314) карты занятости, модуль (336) сглаживания, модули (316) и (318) заполнения изображения, модуль (320) расширения группы, модули (322), (323) и (332) сжатия видео, модуль (338) сжатия дополнительной информации о патчах, модуль (334) энтропийного сжатия и мультиплексор (324).
[0048] Согласно аспекту изобретения, кодер (300) V-PCC преобразует кадры трехмерного облака точек в представление на основе изображения вместе с некоторыми метаданными (например, картой занятости и информацией о патчах), которые используются для преобразования сжатого облака точек обратно в распакованное облако точек. В некоторых примерах кодер (300) V-PCC может преобразовывать кадры трехмерных облаков точек в геометрические изображения, текстурные изображения и карты занятости, а затем использовать способы кодирования видео для кодирования геометрических изображений, текстурных изображений и карт занятости в битовый поток. Как правило, геометрическое изображение - это двумерное изображение с пикселями, заполненными геометрическими значениями, связанными с точками, проецируемыми на пиксели, а пиксель, заполненный геометрическим значением, может называться геометрическим отсчетом. Текстурное изображение - это двумерное изображение с пикселями, заполненными значениями текстуры, связанными с точками, проецируемыми на пиксели, и пиксель, заполненный значением текстуры, может называться текстурным отсчетом. Карта занятости - это двумерное изображение с пикселями, заполненными значениями, которые указывают, что они заняты или не заняты патчами.
[0049] Патч (patch, "лоскут") в общем может относиться к непрерывному подмножеству поверхности, описываемой облаком точек. В одном примере, патч включает в себя точки с векторами нормали к поверхности, которые отклоняются друг от друга меньше, чем на пороговую величину. Модуль (306) генерации патчей сегментирует облако точек на набор патчей, которые могут перекрываться или нет, так что каждый патч может быть описан полем глубины по отношению к плоскости в двумерном пространстве. В некоторых вариантах осуществления модуль (306) генерации патчей нацелен на разложение облака точек на минимальное количество патчей с гладкими границами, а также на минимизацию ошибки восстановления.
[0050] Модуль (304) информации о патчах может собирать информацию о патчах, которая указывает размеры и форму патчей. В некоторых примерах информация о патчах может быть упакована в кадр изображения и затем кодирована модулем (338) сжатия дополнительной информации о патчах для генерации сжатой дополнительной информации о патчах.
[0051] Модуль (308) упаковки патчей выполнен с возможностью наносить извлеченные патчи на двумерную (2D) сетку, минимизируя неиспользуемое пространство и гарантируя, что каждый блок М×М (например, 16×16) сетки связан с уникальным патчем. Эффективная упаковка патчей может напрямую повлиять на эффективность сжатия либо за счет минимизации неиспользуемого пространства, либо за счет обеспечения согласованности во времени.
[0052] Модуль (310) генерации геометрических изображений может генерировать двумерные геометрические изображения, связанные с геометрией облака точек в заданных местоположениях патчей. Модуль (312) генерации текстурных изображений может генерировать двумерные текстурные изображения, связанные с текстурой облака точек в заданных местоположениях патчей. Модуль (310) генерации геометрических изображений и модуль (312) генерации текстурных изображений используют преобразование 3D в 2D, вычисленное во время процесса упаковки, для сохранения геометрии и текстуры облака точек в виде изображений. Чтобы лучше справиться со случаем, когда множество точек проецируются на один и тот же образец, каждый патч проецируется на два изображения, называемых слоями. В примере геометрическое изображение представлено монохроматическим кадром WxH в формате YUV420-8 бит. Для генерации текстурных изображений процедура генерации текстуры использует реконструированную / сглаженную геометрию для вычисления цветов, которые должны быть связаны с точками повторной отсчеты.
[0053] Модуль (314) карты занятости может генерировать карту занятости, которая описывает информацию заполнения в каждом блоке. Например, изображение занятости включает в себя двоичную карту, которая указывает для каждой ячейки сетки, принадлежит ли ячейка пустому пространству или облаку точек. В примере карта занятости использует двоичную информацию, описывающую для каждого пикселя, заполнен пиксель или нет. В другом примере карта занятости использует двоичную информацию, описывающую для каждого блока пикселей, заполнен ли блок пикселей или нет.
[0054] Карта занятости, генерированная модулем (314) карты занятости, может быть сжата с использованием кодирования без потерь или кодирования с потерями. Когда используется кодирование без потерь, модуль (334) энтропийного сжатия используется для сжатия карты занятости. Когда используется кодирование с потерями, модуль (332) сжатия видео используется для сжатия карты занятости.
[0055] Следует отметить, что модуль (308) упаковки патчей может оставлять некоторые пустые промежутки между двумерными патчами, упакованными в кадре изображения. Модули (316) и (318) заполнения изображения могут заполнять пустые пространства (называемые заполнением (padding)) для создания кадра изображения, который может подходить для кодеков 2D видео и изображения. Заполнение изображения также называется фоновым заполнением, которое может заполнить неиспользуемое пространство избыточной информацией. В некоторых примерах хорошее фоновое заполнение минимально увеличивает скорость передачи битов и не вносит значительных искажений кодирования вокруг границ патчей.
[0056] Модули (322), (323) и (332) сжатия видео могут кодировать 2D-изображения, такие как дополненные геометрические изображения, дополненные текстурные изображения и карты занятости, на основе подходящего стандарта кодирования видео, такого как HEVC, VVC и тому подобное. В одном примере модули (322), (323) и (332) сжатия видео представляют собой отдельные компоненты, которые работают отдельно. Следует отметить, что модули (322), (323) и (332) сжатия видео в другом примере могут быть реализованы как один компонент.
[0057] В некоторых примерах модуль (336) сглаживания выполнен с возможностью создавать сглаженное изображение восстановленного геометрического изображения. Сглаженное изображение может быть предоставлено для генерации (312) текстурных изображений. Затем генерация (312) текстурных изображений может регулировать формирование текстурных изображений на основе восстановленных геометрических изображений. Например, когда форма патча (например, геометрия) слегка искажается во время кодирования и декодирования, искажение может быть принято во внимание при генерации текстурных изображений для коррекции искажения формы патча.
[0058] В некоторых вариантах осуществления расширение (320) группы выполнено с возможностью заполнять пиксели вокруг границ объекта избыточным низкочастотным содержимым, чтобы улучшить коэффициент кодирования, а также визуальное качество восстановленного облака точек.
[0059] Мультиплексор (324) может мультиплексировать сжатое геометрическое изображение, сжатое текстурное изображение, сжатую карту занятости и/или сжатую дополнительную информацию о патчах в сжатый битовый поток.
[0060] Фиг. 4 показывает структурную схему декодера (400) V-PCC для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления. В некоторых вариантах осуществления декодер (400) V-PCC может использоваться в системе (100) связи и системе (200) потоковой передачи. Например, декодер (210) может быть выполнен с возможностью работать аналогично декодеру (400) V-PCC. Декодер (400) V-PCC принимает сжатый битовый поток и генерирует реконструированное облако точек на основе сжатого битового потока.
[0061] В примере на фиг.4 декодер (400) V-PCC включает в себя демультиплексор (432), модули (434) и (436) распаковки видео, модуль (438) распаковки карты занятости, модуль (442) распаковки дополнительной информации о патчах, модуль (444) восстановления геометрии, модуль (446) сглаживания, модуль (448) восстановления текстуры и модуль (452) сглаживания цвета.
[0062] Демультиплексор (432) может принимать и разделять сжатый битовый поток на сжатое текстурное изображение, сжатое геометрическое изображение, сжатую карту занятости и сжатую дополнительную информацию патча.
[0063] Модули (434) и (436) распаковки видео могут декодировать сжатые изображения согласно подходящему стандарту (например, HEVC, VVC и т.д.) и выводить распакованные изображения. Например, модуль (434) распаковки видео декодирует сжатые текстурные изображения и выводит распакованные текстурные изображения; а модуль распаковки видео (436) декодирует сжатые геометрические изображения и выводит распакованные геометрические изображения.
[0064] Модуль (438) распаковки карты занятости может декодировать сжатые карты занятости согласно подходящему стандарту (например, HEVC, VVC и т.д.) и выводить распакованные карты занятости.
[0065] Модуль (442) распаковки дополнительной информации о патчах может декодировать сжатую вспомогательную информацию о патчах в соответствии с подходящим стандартом (например, HEVC, VVC и т.д.) и выводить распакованную вспомогательную информацию о патчах.
[0066] Модуль (444) восстановления геометрии может принимать распакованные геометрические изображения и генерировать восстановленную геометрию облака точек на основе распакованной карты занятости и распакованной вспомогательной информации о патче.
[0067] Модуль (446) сглаживания может сглаживать несоответствия на краях патчей. Процедура сглаживания направлена на устранение потенциальных неоднородностей, которые могут возникнуть на границах патчей из-за артефактов сжатия. В некоторых вариантах осуществления сглаживающий фильтр может применяться к пикселям, расположенным на границах патчей, для смягчения искажений, которые могут быть вызваны сжатием/распаковкой.
[0068] Модуль (448) реконструкции текстуры может определять информацию текстуры для точек в облаке точек на основе распакованных текстурных изображений и геометрии сглаживания.
[0069] Модуль (452) сглаживания цвета может сглаживать несоответствия окраски. Не соседние патчи в 3D-пространстве часто упаковываются рядом друг с другом в 2D-видео. В некоторых примерах значения пикселей из не соседних патчей могут смешиваться блочным видеокодеком. Цель сглаживания цвета - уменьшить видимые артефакты, появляющиеся на границах патчей.
[0070] Фиг. 5 показывает структурную схему видеодекодера (510) согласно варианту осуществления настоящего изобретения. Видеодекодер (510) может использоваться в декодере (400) V-PCC. Например, модули (434) и (436) распаковки видео, модуль (438) распаковки карты занятости могут быть выполнены аналогично видеодекодеру (510).
[0071] Видеодекодер (510) может включать в себя синтаксический анализатор (520) для восстановления символов (521) из сжатых изображений, таких как кодированная видеопоследовательность. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (510). Синтаксический анализатор (520) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать различным принципам, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Синтаксический анализатор (520) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP), изображения, фрагменты, срезы, макроблоки, блоки кодирования (CU), блоки (blocks), блоки преобразования (TU), блоки прогнозирования (PU) и так далее. Синтаксический анализатор (520) также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.
[0072] Синтаксический анализатор (520) может выполнять операцию энтропийного декодирования / синтаксического анализа над видеопоследовательностью, принятой из буферной памяти, чтобы создавать символы (521).
[0073] Восстановление символов (521) может включать использование множества различных блоков в зависимости от типа кодированного видеоизображения или его частей (например, интра- и интер-изображение, интра- и интер-блок) и других факторов. То, какие блоки использованы и как, можно контролировать с помощью управляющей информации подгруппы, которая была проанализирована из кодированной видеопоследовательности с помощью синтаксического анализатора (520). Поток такой управляющей информации подгруппы между синтаксическим анализатором (520) и множеством модулей не показан для упрощения.
[0074] Помимо уже упомянутых функциональных блоков, видеодекодер (510) может быть концептуально подразделен на ряд функциональных блоков, как описано ниже. В практической реализации, работающей в условиях коммерческих ограничений, многие из этих устройств тесно взаимодействуют друг с другом и могут, по меньшей мере частично, быть интегрированы друг в друга. Однако для целей описания раскрытого предмета изобретения уместно концептуальное подразбиение на функциональные блоки, приведенные ниже.
[0075] Первым блоком является блок (551) масштабирования / обратного преобразования. Блок (551) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, в том числе, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д., в виде символа (-ов) (521) от синтаксического анализатора (520). Блок (551) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (555).
[0076] В некоторых случаях выходные отсчеты блока (551) масштабирования / обратного преобразования могут относиться к блоку с внутренним кодированием; то есть блоку, который не использует предсказывающую информацию из ранее восстановленных изображений, но может использовать предсказывающую информацию из ранее восстановленных частей текущего изображения. Такая предсказывающая информация может быть предоставлена блоком (552) предсказания внутри изображения. В некоторых случаях блок (552) предсказания внутри изображения генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из буфера (558) текущих изображений. Буфер (558) текущих изображений буферизует, например, частично восстановленное текущее изображение и/или полностью восстановленное текущее изображение. Агрегатор (555) в некоторых случаях добавляет для каждого отсчета информацию предсказания, генерированную блоком (552) внутреннего предсказания, к информации выходных отсчетов, предоставляемой блоком (551) масштабирования / обратного преобразования.
[0077] В других случаях выходные отсчеты блока (551) масштабирования / обратного преобразования могут относиться к блоку с внешним кодированием и потенциально компенсированным движением. В таком случае блок (553) предсказания с компенсацией движения может обращаться к памяти (557) опорных изображений, чтобы извлекать отсчеты, используемые для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (521), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (555) к выходному сигналу блока (551) масштабирования / обратного преобразования (в данном случае называемые остаточными отсчетами или остаточным сигналом), чтобы генерировать информацию о выходных отсчетах. Адреса в памяти (557) опорных изображений, откуда блок (553) предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными блоку (553) предсказания с компенсацией движения в форме символов (521), которые могут иметь, например, X, Y и компоненты опорных изображений. Компенсация движения также может включать в себя интерполяцию значений отсчетов, выбранных из памяти (557) опорных изображений, когда используются точные векторы движения подотсчетов, механизмы предсказания вектора движения и так далее.
[0078] Выходные отсчеты агрегатора (555) могут подвергаться различным способам контурной фильтрации в блоке (556) контурного фильтра. Технологии сжатия видео могут включать в себя технологии внутриконтурной фильтрации, которые управляются параметрами, включенными в кодированную видеопоследовательность (также называемую битовым потоком кодированного видео) и предоставляемыми блоку (556) контурной фильтрации как символы (521) из синтаксического анализатора (520), но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и отфильтрованные контурным фильтром значения отсчетов.
[0079] Выходной сигнал блока (556) контурного фильтра может быть потоком отсчетов, который может быть выведен в устройство рендеринга, а также сохранен в памяти (557) опорных изображений для использования в будущем межкадровом предсказании.
[0080] Некоторые кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. Например, после того, как кодированное изображение, соответствующее текущему изображению, полностью реконструировано и кодированное изображение было идентифицировано как опорное изображение (например, синтаксическим анализатором (520)), буфер (558) текущих изображений может стать частью памяти (557) опорных изображений, и буфер свежих текущих изображений может быть перераспределен перед началом восстановления следующего кодированного изображения.
[0081] Видеодекодер (510) может выполнять операции декодирования согласно заранее заданной технологии сжатия видео в стандарте, таком как ITU-T Rec. Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность соответствует как синтаксису технологии или стандарту сжатия видео, так и профилям, задокументированным в технологии или стандарте сжатия видео. В частности, профиль может выбирать определенные инструменты как единственные инструменты, доступные для использования в этом профиле, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах (миллион отсчетов) в секунду), максимальный размер эталонного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD) и метаданных для управления буфером HRD, передаваемых в кодированной видеопоследовательности.
[0082] Фиг. 6 показывает структурную схему видеокодера (603) согласно варианту осуществления настоящего изобретения. Видеокодер (603) может использоваться в кодере (300) V-PCC, который сжимает облака точек. В примере модуль (322) и (323) сжатия видео и модуль (332) сжатия видео выполнены аналогично кодеру (603).
[0083] Видеокодер (603) может принимать изображения, такие как изображения с дополненной геометрией, изображения с дополненной текстурой и т.п., и генерировать сжатые изображения.
[0084] Согласно варианту осуществления, видеокодер (603) может кодировать и сжимать изображения исходной видеопоследовательности (изображений) в кодированную видеопоследовательность (сжатые изображения) в реальном времени или с любыми другими временными ограничениями, как требуется в применении. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (650). В некоторых вариантах осуществления контроллер (650) управляет другими функциональными блоками, как описано ниже, и функционально связан с другими функциональными блоками. Связь не изображена для упрощения. Параметры, устанавливаемые контроллером (650), могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда для способов оптимизации скорости-искажения, …), размер изображения, макет группы изображений (GOP), максимальный диапазон поиска вектора движения и так далее. Контроллер (650) может быть выполнен так, чтобы иметь другие подходящие функции, которые относятся к видеокодеру (603), оптимизированному для определенной конструкции системы.
[0085] В некоторых вариантах осуществления видеокодер (603) выполнен с возможностью работать в петле кодирования. В качестве упрощенного описания, в примере, петля кодирования может включать в себя исходный кодер (630) (например, ответственный за создание символов, таких как поток символов, на основе входного изображения, которое должно быть кодировано, и опорного изображения (изображений)), и (локальный) декодер (633), встроенный в видеокодер (603). Декодер (633) восстанавливает символы для создания данных отсчетов, аналогично тому, как это может делать (удаленный) декодер (поскольку любое сжатие между символами и кодированным потоком битов видео происходит без потерь в технологиях сжатия видео, рассматриваемых в раскрытом предмете изобретения). Восстановленный поток отсчетов (данные отсчетов) вводится в память (634) опорных изображений. Поскольку декодирование потока символов приводит к точным до бита результатам, независимо от местоположения декодера (локального или удаленного), содержимое памяти (634) опорных изображений также является одинаковым до бита для локального и удаленного кодеров. Другими словами, блок предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые декодер «видит» при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) также используется в некоторых смежных областях техники.
[0086] Работа «локального» декодера (633) может быть такой же, как у «удаленного» декодера, такого как видеодекодер (510), который уже был подробно описан выше в связи с фиг. 5. Кратко обратимся также к фиг. 5, однако, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (645) и синтаксическим анализатором (520) может осуществляться без потерь, части энтропийного декодирования видеодекодера (510), включая и синтаксический анализатор (520) могут не быть полностью реализованы в локальном декодере (633).
[0087] Здесь можно отметить, что любая технология декодирования, кроме синтаксического / энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать в, по существу, идентичной функциональной форме, в соответствующем кодере. По этой причине раскрытый предмет изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.
[0088] Во время работы, в некоторых примерах, кодер (630) источника может выполнять предсказательное кодирование с компенсацией движения, которое кодирует входное изображение с предсказанием со ссылкой на одно или более ранее кодированных изображений из видеопоследовательности, которые были отмечены как «опорные изображения». Таким образом, механизм (632) кодирования кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения (изображений), которые могут быть выбраны в качестве эталона (-ов) предсказания для входного изображения.
[0089] Локальный видеодекодер (633) может декодировать кодированные видеоданные изображений, которые могут быть отмечены как опорные изображения, на основе символов, созданных исходным кодером (630). Операции механизма (632) кодирования обеспечивает преимущество, состоящее в том, что его операции могут быть процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг.6), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (633) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных изображениях, и может вызывать сохранение восстановленных опорных изображений в кэше (634) опорных изображений. Таким образом, видеокодер (603) может локально хранить копии восстановленных опорных изображений, которые имеют общий контент, в качестве восстановленных опорных изображений, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).
[0090] Предсказатель (635) может выполнять поиски предсказания для механизма (632) кодирования. То есть для нового изображения, которое должно быть кодировано, предсказатель (635) может выполнять поиск в памяти (634) опорных изображений данных отсчетов (в качестве кандидатов блоков опорных пикселей) или определенных метаданных, таких как векторы движения опорных изображений, формы блоков и т.д., что может служить подходящей опорой для предсказания для новых изображений. Предсказатель (635) может работать на основе блока отсчетов-за-блоком пикселей, чтобы найти соответствующие ссылки для предсказания. В некоторых случаях, как определено результатами поиска, полученными предсказателем (635), входное изображение может иметь ссылки предсказания, взятые из множества опорных изображений, сохраненных в памяти (634) опорных изображений.
[0091] Контроллер (650) может управлять операциями кодирования исходного кодера (630), включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.
[0092] Выходные данные всех вышеупомянутых функциональных блоков могут подвергаться энтропийному кодированию в энтропийном кодере (645). Энтропийный кодер (645) преобразует символы, генерированные различными функциональными блоками, в кодированную видеопоследовательность путем сжатия без потерь символов для генерации сжатых изображений 643 в соответствии с такими технологиями, как кодирование Хаффмана, кодирование переменной длины, арифметическое кодирование и т.д.
[0093] Контроллер (650) может управлять работой видеокодера (603). Во время кодирования контроллер (650) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на способы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов изображений:
[0094] Интра-изображение (Intra Picture) (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки позволяют использовать различные типы интра-изображений, включая, например, изображения с независимым обновлением декодера («IDR»). Специалисту известны эти варианты I-изображений и их соответствующие применения и особенности.
[0095] Предсказываемое изображение (Р-изображение) может быть таким, которое может быть кодировано и декодировано с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0096] Изображение с двунаправленным предсказанием (В-изображение) может быть таким, которое может быть кодировано и декодировано с использованием внутрикадрового предсказания или межкадрового предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.
[0097] Исходные изображения обычно могут быть разделены пространственно на множество блоков отсчетов (например, блоки по 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки из I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или внутреннее предсказание). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0098] Видеокодер (603) может выполнять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, такому как ITU-T Rec. Н.265. В своей работе видеокодер (603) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.
[0099] Видео может быть в форме множества исходных кадров (изображений) во временной последовательности. Внутрикадровое предсказание (часто сокращенно называемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а межкадровое предсказание использует (временную или другую) корреляцию между изображениями. В примере конкретное изображение при кодировании / декодировании, которое упоминается как текущее изображение, разбивается на блоки. Когда блок в текущем изображении подобен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может быть кодирован вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.
[0100] В некоторых вариантах осуществления при межкадровом предсказании может использоваться способ двойного предсказания. Согласно способу двойного предсказания, два опорных изображения, такие как первое опорное изображение и второе опорное изображение, оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может быть кодирован первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может быть предсказан комбинацией первого опорного блока и второго опорного блока.
[0101] Кроме того, способ режима слияния может использоваться в межкадровом предсказании для повышения эффективности кодирования.
[0102] Согласно некоторым вариантам осуществления изобретения, предсказания, такие как предсказания между изображениями и предсказания внутри изображений, выполняются в блоках. Например, в соответствии со стандартом HEVC изображение в последовательности видеоизображений разбивается на блоки дерева кодирования (CTU) для сжатия, CTU в изображении имеют одинаковый размер, например 64×64 пикселей, 32×32 пикселей или 16x16 пикселей. В общем, 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 пикселей и т.п.
[0103] Модель G-PCC может отдельно сжимать геометрическую информацию и связанные атрибуты, такие как цвет или отражательная способность. Геометрическая информация, которая представляет собой трехмерные координаты облаков точек, может быть кодирована с помощью разложения октодерева информации о занятости. С другой стороны, атрибуты могут быть сжаты на основе восстановленной геометрии с использованием способов предсказания и лифтинга. Процесс разбиения октодерева показаня, например, на фиг. 7-13.
[0104] Фиг. 7 показывает структурную схему декодера (800) G-PCC, который применяется во время процесса разложения G-PCC в соответствии с вариантом осуществления. Декодер (800) может быть выполнен с возможностью принимать сжатый битовый поток и выполнять распаковку данных облака точек для распаковки битового потока, чтобы генерировать декодированные данные облака точек. В варианте осуществления декодер (800) может включать в себя модуль (810) арифметического декодирования, модуль (820) обратного квантования, модуль (830) декодирования октодерева, модуль (840) генерации уровня детализации (level of detail, LOD), модуль (850) обратного квантования и модуль (860) предсказания на основе обратной интерполяции.
[0105] Как показано, сжатый битовый поток (801) может быть принят в модуле (810) арифметического декодирования. Модуль (810) арифметического декодирования выполнен с возможностью декодировать сжатый битовый поток (801) для получения квантованных остатков предсказания (если они генерированы) и кодов занятости (или символов) облака точек. Модуль (830) декодирования октодерева выполнен с возможностью генерировать квантованные позиции точек в облаке точек в соответствии с кодами занятости. Модуль (850) обратного квантования выполнен с возможностью генерировать восстановленные позиции точек в облаке точек на основе квантованных позиций, предоставленных модулем (830) декодирования октодерева.
[0106] Модуль (840) генерации LOD выполнен с возможностью реорганизовать точки в разные LOD на основе восстановленных позиций и определения порядка на основе LOD. Модуль (820) обратного квантования выполнен с возможностью генерировать восстановленные остатки предсказания на основе квантованных остатков предсказания, принятых от модуля (810) арифметического декодирования. Модуль (860) предсказания на основе обратной интерполяции выполнен с возможностью выполнять процесс предсказания атрибутов для генерации восстановленных атрибутов точек в облаке точек на основе восстановленных остатков предсказания, полученных от модуля (820) обратного квантования, и порядка на основе LOD, полученного от модуля (840) генерации LOD.
[0107] Кроме того, восстановленные атрибуты, генерированные модулем (860) предсказания на основе обратной интерполяции, вместе с восстановленными позициями, генерированными модулем (850) обратного квантования, соответствуют декодированному облаку (802) точек (или восстановленному облаку точек), которое выводится из декодера (800) в одном примере.
[0108] Фиг. 8 показывает структурную схему кодера (700) G-PPC в соответствии с вариантом осуществления. Кодер (700) может быть выполнен с возможностью принимать данные облака точек и сжимать данные облака точек для генерации битового потока, несущего сжатые данные облака точек. В варианте осуществления кодер (700) может включать в себя модуль (710) квантования позиции, модуль (712) удаления дублированных точек, модуль (730) кодирования октодерева, модуль (720) передачи атрибутов, модуль (740) генерации уровня детализации (LOD), модуль (750) предсказания на основе интерполяции, модуль (760) квантования остатка и модуль (770) арифметического кодирования.
[0109] Как показано, входное облако (701) точек может быть принято в кодере (700). Позиции (например, трехмерные координаты) облака (701) точек предоставляются модулю (710) квантования. Модуль (710) квантования выполнен с возможностью квантовать координаты для генерации квантованных позиций. Модуль (712) удаления дублированных точек выполнен с возможностью принимать квантованные позиции и выполнять процесс фильтрации для идентификации и удаления дублированных точек. Модуль (730) кодирования октодерева выполнен с возможностью принимать отфильтрованные позиции от модуля (712) удаления дублированных точек и выполнять процесс кодирования на основе октодерева для генерации последовательности кодов занятости (или символов), которые описывают трехмерную сетку вокселей. Коды занятости передаются в модуль (770) арифметического кодирования.
[0110] Модуль (720) передачи атрибутов выполнен с возможностью принимать атрибуты входного облака точек и выполнять процесс передачи атрибутов для определения значения атрибута для каждого вокселя, когда множество значений атрибута связаны с соответствующим вокселем. Процесс переноса атрибутов может выполняться для переупорядоченных точек, выводимых из модуля (730) кодирования октодерева. Атрибуты после операций передачи предоставляются модулю (750) предсказания на основе интерполяции. Модуль (740) генерации LOD выполнен с возможностью работать с переупорядоченными точками, выводимыми из модуля (730) кодирования октодерева, и реорганизовывать точки в разные LODs. Информация LOD подается в модуль (750) предсказания на основе интерполяции.
[0111] Модуль (750) предсказания на основе интерполяции обрабатывает точки в соответствии с порядком на основе LOD, указанным информацией LOD из модуля (740) генерации LOD и переданными атрибутами, полученными от модуля (720) передачи атрибутов, и генерирует остатки предсказания. Модуль (760) квантования остатка выполнен с возможностью принимать остатки предсказания от модуля (750) предсказания на основе интерполяции и выполнять квантование для генерации квантованных остатков предсказания. Квантованные остатки предсказания подаются в модуль (770) арифметического кодирования. Модуль (770) арифметического кодирования выполнен с возможностью принимать коды занятости от модуля (730) кодирования октодерева, индексов-кандидатов (если используются), квантованных остатков предсказания из модуля предсказания 750) на основе интерполяции и другой информации, и выполнять энтропийное кодирование для дальнейшего сжатия полученных значений или информации. В результате может быть сгенерирован сжатый битовый поток (702), несущий сжатую информацию. Битовый поток (702) может быть передан или иным образом предоставлен декодеру, который декодирует сжатый битовый поток, или может быть сохранен в запоминающем устройстве.
[0112] Следует отметить, что модуль (750) предсказания на основе интерполяции и модуль (860) предсказания на основе обратной интерполяции, выполненные с возможностью реализовать способы прогнозирования атрибутов, раскрытых в данном документе, могут быть включены в другие декодеры или кодеры, которые могут иметь аналогичные или разные структуры по сравнению с тем, что показано на фиг. 7 и фиг. 8. Кроме того, кодер (700) и декодер (800) в различных примерах могут быть включены в одно и то же устройство или отдельные устройства.
[0113] В различных вариантах осуществления кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы с помощью аппаратного обеспечения, программного обеспечения или их комбинации. Например, кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы с помощью схемы обработки, такой как одна или более интегральных схем (IС), которые работают с программным обеспечением или без него, таких как специализированная интегральная схема (ASIC), программируемая логическая интегральная схема (ПЛИС, FPGA) и т.п. В другом примере кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы как программное обеспечение или микропрограммное обеспечение, включая команды, хранящиеся на энергонезависимом (или долговременном) машиночитаемом носителе данных. Команды, когда выполняются схемой обработки, такой как один или более процессоров, заставляют схему обработки выполнять функции кодера (300), декодера (400), кодера (700) и/или декодера (800).
[0114] Разбиение облака точек, которое определяется трехмерным кубом симметричным образом по всем осям (например, осям х, у и z), может привести к восьми суб-кубам, что известно как разбиение октодерева (ОТ) при сжатии облака точек (РСС). Разбиение ОТ напоминает разбиение двоичного дерева (ВТ) в одномерном пространстве и разбиение квадродерева (QT) в двумерном пространстве. Идею разбиения ОТ можно проиллюстрировать на примере фиг. 9, где трехмерный куб (900), изображенный сплошными линиями, может быть разбит на восемь меньших кубов одинакового размера, показанных пунктирными линиями. Как показано на фиг. 9, способ разбиения октодерева позволяет разделить трехмерный куб (900) на восемь меньших кубов 0-7 равного размера.
d
d
d
d
[0115] В способе разбиения октодерева (например, в ТМС13), если используется кодек геометрии октодерева, кодирование геометрии происходит следующим образом. Во-первых, кубический ограничивающий бокс В, выровненный по осям, может быть определен двумя крайними точками (0,0,0) и (2, 2, 2), где 2 определяет размер ограничивающего бокса В, и d можно кодировать в битовый поток. Соответственно, все точки внутри заданного ограничивающего бокса В могут быть сжаты.
d-k
d-k
d-k
[0116] Затем можно построить структуру октодерева, рекурсивно разделив ограничивающий бокс В. На каждом этапе куб можно разделить на 8 суб-кубов. Размер суб-куба после итеративного деления k (k ≤d) раз может быть (2, 2, 2). Затем можно сгенерировать 8-битовый код, такой как код занятости, путем связывания 1-битового значения с каждым суб-кубом, чтобы указать, содержит ли соответствующий суб-куб точки (т.е. полный и имеет значение 1) или нет (т.е. пустой и имеет значение 0). Только полные суб-кубы размером больше 1 (т.е. не-воксели) могут быть дополнительно разбиты. Затем код занятости для каждого куба может быть сжат с помощью арифметического кодера.
[0117] Процесс декодирования может начинаться со считывания из битового потока размеров ограничивающего бокса В. Такая же структура октодерева может быть затем построена путем разбиения ограничивающего бокса В согласно декодированным кодам занятости. Пример двухуровневого разбиения ОТ и соответствующего кода занятости показан на фиг. 10, где затемненные кубы и узлы указывают, что кубы и узлы заняты точками.
[0118] Фиг. 10 показывает пример разбиения (1010) октодерева и структуры (1020) октодерева, соответствующей разбиению (1010) октодерева согласно некоторым вариантам осуществления изобретения. Фиг. 10 показывает два уровня разбиений в разбиении (1010) октодерева. Структура (1020) октодерева включает в себя узел (N0), соответствующий кубическому блоку разбиения (1010) октодерева. На первом уровне кубический блок разбивается на 8 суб-кубических блоков, которые пронумерованы от 0 до 7 согласно способу нумерации, показанному на фиг. 9. Код занятости для разбиения узла N0 равен «10000001» в двоичном формате, что указывает, что первый субкубический блок, представленный узлом N0-0, и восьмой субкубический блок, представленный узлом N0-7, включает в себя точки в облаке точек, а другие субкубические блоки пусты.
[0119] Затем, на втором уровне разбиения, первый субкубический блок (представленный узлом N0-0) и восьмой субкубический блок (представленный узлом N0-7), соответственно, дополнительно разбиваются на восемь октантов. Например, первый субкубический блок (представленный узлом N0-0) разбивается на 8 субкубических блоков меньшего размера, которые пронумерованы 0-7 в соответствии со способом нумерации, показанным на фиг.9. Код занятости для разбиения узла N0-0 - «00011000» в двоичном формате, что указывает, что четвертый меньший субкубический блок (представленный узлом N0-0-3) и пятый меньший субкубический блок (представленный узлом N0-0-4) включает в себя точки в облаке точек, а другие меньшие субкубические блоки пусты. На втором уровне седьмой субкубический блок (представленный узлом N0-7) аналогично разбит на 8 субкубических блоков меньшего размера, как показано на фиг. 10.
[0120] В примере на фиг. 10 узлы, соответствующие непустому кубическому пространству (например, кубический блок, субкубические блоки, субкубические блоки меньшего размера и т.п.), показаны серыми и называются затемненными узлами.
[0121] В исходной структуре ТМС13, например, как описано выше, ограничивающий бокс В может быть кубом, имеющим одинаковый размер для всех измерений, и, таким образом, разбиение ОТ может выполняться для всех субкубов в каждом узле, в котором субкубы уменьшаются вдвое по всем измерениям. Разбиение ОТ может выполняться рекурсивно, пока размер субкубов не достигнет единицы. Однако такое разбиение может быть не эффективным для всех случаев, особенно когда точки неравномерно распределены в трехмерной сцене (или трехмерном пространстве).
[0122] Одним из крайних случаев может быть двумерная плоскость в трехмерном пространстве, в которой все точки могут быть расположены на плоскости х-у в трехмерном пространстве, а отклонение по оси z может быть нулевым. В таком случае разбиение ОТ, выполняемое на кубическом В в качестве начальной точки, может тратить много битов на представление информации о занятости в z-направлении, что является избыточным и бесполезным. В реальных приложениях этот худший случай может быть нечастым. Однако обычно облако точек имеет меньшее отклонение в одном направлении по сравнению с другими. Как показано на фиг. 11, последовательность облака точек, называемая «ford_01_vox1mm» в ТМС13, может иметь основные компоненты вдоль осей х и у. Фактически, многие данные облаков точек, созданные с помощью лидарной системы, могут иметь такие же характеристики.
[0123] В разбиениях квадродерева и двоичного дерева (QtBt) ограничивающий бокс В может не быть кубом, вместо этого ограничивающий бокс В может быть прямоугольным кубоидом произвольного размера, чтобы лучше соответствовать форме 3D-сцены или объектам. При реализации размер ограничивающего бокса В может быть представлен как степень двойки, например,
[0124] Поскольку ограничивающий бокс В может не быть идеальным кубом, в некоторых случаях узел может быть (или не быть) разбит по всем направлениям. Если разбиение выполняется по всем трем направлениям, то это типичное разбиение ОТ. Если разбиение выполняется в двух направлениях из трех, то это разбиение является разбиением QT в 3D. Если разбиение выполняется только в одном направлении, тогда разбиение является разбиением ВТ в 3D. Примеры QT и ВТ в 3D показаны на фиг. 12 и фиг. 13, соответственно.
[0125] Как показано на фиг.12, трехмерный куб 1201 может быть разбит по осям х-у на 4 подкуба 0, 2, 4 и 6. Трехмерный куб 1202 может быть разбит по осям x-z на 4 подкуба 0, 1, 4 и 5. Трехмерный куб 1203 может быть разбит по осям y-z на 4 субкуба 0, 1, 2 и 3. На фиг.13, трехмерный куб 1301 может быть разбит по оси х на 2 субкуба 0 и 4. Трехмерный куб 1302 может быть разбит на 2 субкуба 0 и 2. Трехмерный куб 1303 может быть разбит на 2 субкуба 0 и 1.
x
y
z
x
y
z
x
y
z
[0126] Чтобы определить условия неявных разбиений QT и ВТ в ТМС13, можно применить два параметра (то есть K и М). Первый параметр K (0 ≤K ≤max(d, d, d) - min(d, d, d)) может определять максимальное количество неявных разбиений QT и ВТ, которые могут быть выполнены перед разбиениями ОТ. Второй параметр М (0 ≤М ≤min(d, d, d)) может определять минимальный размер неявных разбиений QT и ВТ, указывая, что неявные разбиения QT и ВТ разрешены, только если все размеры больше М.
[0127] Более конкретно, первые K разбиений могут следовать правилам из Таблицы I, а разбиения, следующие за первыми K разбиениями, могут следовать правилам из Таблицы II. Если ни одно из условий, перечисленных в таблицах, не выполняется, может быть выполнено разбиение ОТ.
x
y
z
z
x
у
z
z
у
x
z
у
у
(M,M,M)
[0128] В варианте осуществления ограничивающий бокс В может иметь размер . Без потери общности, условия 0<d ≤d ≤d могут быть применены к ограничивающему боксу В. В зависимости от условий, на первых глубинах K (K ≤d-d), неявные разбиения ВТ могут выполняться по оси z, а неявные разбиения QT могут быть выполнены по осям y-z в соответствии с таблицей I. Размер подузлов тогда может стать  где значение δ и δ (δ ≥δ ≥0) может зависеть от значения K. Кроме того, разбиения ОТ могут выполняться d - М раз, так что оставшиеся подузлы могут иметь размер согласно таблице II, неявные разбиения ВТ могут выполняться по оси z δ - δ раз, а неявные разбиения QT могут затем выполняться по осям y-z δ раз. Таким образом, остальные узлы могут иметь размер 2 Следовательно, разбиения ОТ могут быть выполнены М раз, чтобы охватить самые маленькие блоки.
[0129] В разбиениях QtBt используется неявное правило о том, как применять разбиение данного кубоида путем переключения между октодеревом, квадродеревом и двоичным деревом на каждом уровне декомпозиции узлов. После K уровней начального декомпозиции посредством разбиений QtBt в соответствии с правилом (например, таблица I) может быть выполнен еще один круг разбиения QtBt в соответствии с другим правилом (например, таблица II). Если ни одно из условий правил не выполняется в вышеуказанных процессах, может применяться декомпозиция октодерева (или разбиение октодерева).
[0130] Неявное правило может повлиять на эффективность QtBt следующим образом: (1) для данных облака точек с почти симметричным кубоидным ограничивающим боксом по осям х, у и z разбиение QtBt не показывает преимуществ кодирования по сравнению с соответствующим способом (например, неявным разбиением QtBt), который выполняет декомпозицию Ot (октодерева) на всех уровнях; и (2) для данных облака точек с сильно асимметричным кубоидным ограничивающим боксом по осям х, у и z разбиение QtBt показывает преимущества кодирования за счет пропуска отправки ненужной информации о занятости во время декомпозиции.
[0131] В текущих разбиениях QtBt можно наложить определенные ограничения следующим образом. Во-первых, разбиения QtBt всегда могут принудительно использовать асимметричный ограничивающий бокс, который может оказаться бесполезным или даже контрпродуктивным, когда облако точек имеет почти симметричный ограничивающий бокс.Во-вторых, таблица I вместе с параметром K может уменьшить измерения большего размера в соответствии с правилом путем принудительного использования разбиений Qt / Bt вместо разбиений Ot. Однако таблица I вместе с параметром К может не допускать разбиения Qt или Bt в начале, когда ограничивающий бокс симметричен. В-третьих, таблица II может быть применена после вышеуказанных K раз разбиения и вступает в силу, когда минимальный размер субблоков достигает М. Таким образом, таблица II может уменьшать измерения большего размера в соответствии с правилом до тех пор, пока все измерения не станут равными М. В-четвертых, текущее неявное правило (или неявные разбиения QtBt) всегда может предписывать декомпозицию октодерева после первых (до) уровней K, пока текущие разбиения QtBt не достигнут уровня М. Другими словами, текущие разбиения QtBt могут не допускать, чтобы произвольные разбиения Qt / Bt / Ot выбирались между двумя точками уровня.
[0132] В настоящем изобретении предусмотрено несколько способов. Эти способы обеспечивают упрощение структуры QtBt (например, неявные разбиения QtBt) в ТМС 13 для типичного варианта использования, например, основанных на обсуждении, приведенном выше. Эти способы также позволяют использовать более гибкие способы разбиения, например, путем явной сигнализации типа декомпозиции узла на каждом уровне.
[0133] В варианте осуществления может быть предложен первый способ разбиения (или упрощенное разбиение QtBt). Первый способ разбиения может быть частным случаем неявных разбиений QtBt, который можно применить к наборам данных с сильно асимметричными ограничивающими параллелепипедами, установив K=0 & М=0. Первый способ разбиения может упростить структуру QtBt (например, разбиения QtBt) и при этом обеспечить преимущества кодирования для типичных случаев, как указано выше.
[0134] По сравнению с разбиениями QtBt в ТМС 13, первый способ разбиения может включать в себя следующие особенности: (1) флаг неявного разрешения (например, implicit_qtbt_enabled_flag) в разбиениях QtBt в ТМС 13 может быть удален. (2) может быть введен флаг асимметричного ограничивающего бокса (например, asymmetric_bbox_enabled_flag), чтобы разрешить использование асимметричного ограничивающего бокса. В примере, когда флаг асимметричного ограничивающего бокса установлен на некоторое значение, такое как 0 (также называемое вторым значением) для симметричных или почти симметричных данных ограничивающего бокса, и на некоторое значение, такое как 1 (также называемое первым значением) для сильно асимметричных данных ограничивающего бокса. (3) Если флаг асимметричного ограничивающего бокса является первым значением, правило implicitQtBt (неявного QtBt) (например, таблицы I и II) с K=0 & М=0 может применяться, когда уровень декомпозиции узла достигает 0 (или последнего уровня). В противном случае, если флаг асимметричного ограничивающего бокса является вторым значением, первый способ разбиения может выполнять декомпозицию октодерева (или разбиение октодерева).
[0135] Согласно первому способу разбиения, правило implicitQtBt, показанное в Таблице II с М=0, может применяться, чтобы пропустить отправку ненужной информации о занятости по некоторым измерениям, например, как показано в Таблице III.
[0136] В варианте осуществления может быть предложен второй способ разбиения (или явное разбиение QtBt) для отправки явной сигнализации решения о разбиении. Явная сигнализация может быть предоставлена как альтернатива использованию фиксированного неявного правила в текущем разбиении QtBt.
[0137] Второй способ разбиения может включать в себя следующие особенности: (1) может быть введен флаг явного разрешения QtBt (например, explicit_qtbt_enabled_flag) для разрешения/запрещения явной сигнализации решения о разбиении, в то время как флаг асимметричного ограничивающего бокса из первого способа разбиения может все еще быть введен. (2) Когда флаг явного разрешения QtBt установлен в некоторое значение, такое как 0 (или второе значение), второй способ разбиения возвращается к (или может быть равен) первому способу разбиения, описанному выше. Таким образом, если флаг асимметричного ограничивающего бокса (например, asymmetric_bbox_enabled_flag) представляет собой некоторое значение, такое как 1 (или первое значение), правило implicitQtBt (например, таблицы I и II) с K=0 & М=0 может применяться, когда уровень декомпозиции узла достигает 0 (или последнего уровня). Если флаг асимметричного ограничивающего бокса является вторым значением, второй способ разбиения может выполнять декомпозицию октодерева (или разбиение октодерева). В варианте осуществления, когда флаг асимметричного ограничивающего бокса не используется, а флаг явного разрешения QtBt установлен на второе значение (например, 0), второй способ разбиения может применять декомпозицию октодерева (или разбиение октодерева) для всех уровней. (4) Когда флаг явного разрешения QtBt установлен на первое значение (например, 1), вместо того, чтобы всегда выполнять разбиение октодерева, пока уровень не достигнет 0 (или последнего уровня), как указано в первом способе разбиения, 3-битовый сигнал может быть отправлен на каждом из уровней октодерева, чтобы указать, следует ли выполнять разбиение по каждой из осей х, у и z. Таким образом, 3-битовый сигнал может указывать, может ли разбиение Bt, разбиение Qt или разбиение Ot применяться на каждом из уровней октодерева. В некоторых вариантах осуществления правило implicitQtBt (например, таблицы I и II) в ТМС 13 может применяться для определения 3-битового сигнала на каждом из уровней октодерева.
[0138] Следует отметить, что, поскольку разбиение Ot / Qt / Bt разрешено произвольным образом в процессе, когда флаг явного разрешения QtBt установлен на первое значение во втором способе разбиения, максимально возможное общее количество разбиений может быть трехкратной разностью максимальной и минимальной глубины узлов.
[0139] В варианте осуществления изобретения может быть предложен третий способ разбиения (или явное разбиение QtBt типа 2 для отправки явной сигнализации решения о разбиении. Явная сигнализация может быть предоставлена в отличие от использования фиксированного неявного правила в текущем разбиении QtBt (например, в таблицах I и II). Третий способ разбиения может включать следующие особенности по сравнению с текущим разбиением QtBt: (1) флаг явного разрешения QtBt (например, explicit_qtbt_enabled_flag) может заменить флаг неявного разрешения QtBt (например, implicit_qtbt_enabled_flag) в разбиениях QtBt в ТМС 13, чтобы разрешить / запретить явную сигнализацию решения о разбиении. (2) Флаг асимметричного ограничивающего бокса (например, asymmetric_bbox_enabled_flag) может дополнительно сигнализироваться только тогда, когда флаг явного разрешения QtBt имеет некоторое значение, такое как 1 (или первое значение), для разрешения / запрещения использования асимметричного ограничивающего бокса. Когда флаг асимметричного ограничивающего бокса является первым значением, величины асимметричного ограничивающего бокса (т.е. размеры) вдоль осей х, у и z могут дополнительно передаваться, в противоположность максимуму из трех. Соответственно, флаг асимметричного ограничивающего бокса может быть установлен на некоторое значение, такое как 0 (например, второе значение), для симметричных или почти симметричных данных ограничивающего бокса, и на первое значение (например, 1) для сильно асимметричных данных ограничивающего бокса. (3) Когда флаг явного разрешения QtBt установлен на первое значение, 3-битовый сигнал может быть отправлен на каждом из уровней октодерева (или уровней разбиения октодерева), чтобы указать, следует ли выполнять разбиение по каждой из осей х, у и z. В варианте осуществления правило implicitQtBt (например, таблицы I и II) в ТМС 13 может применяться для определения 3-битового сигнала для каждого из уровней октодерева. В другом варианте осуществления могут применяться другие правила разбиения для определения 3-битового сигнала для каждого из уровней октодерева. Другие правила разбиения могут облегчить кодирование информации о занятости октодерева и дополнительно учитывать характеристики данных (например, информацию о занятости октодерева) или механизм получения даты. (4) Когда флаг явного разрешения QtBt установлен на второе значение (например, 0), третий способ разбиения может применять декомпозицию октодерева (разбиение октодерева) для всех уровней.
[0140] Следует отметить, что, поскольку разбиение Ot / Qt / Bt разрешено произвольным образом в процессе, когда флаг явного разрешения QtBt установлен на первое значение в третьем способе разбиения, максимально возможное общее количество разбиений может быть трехкратной разностью максимальной и минимальной глубины узлов.
[0141] В варианте осуществления изобретения может быть предложен четвертый способ разбиения (или гибкое разбиение QtBt) для обеспечения большей гибкости в использовании разбиения QtBt посредством дополнительной сигнализации типа разбиения QtBt, явной или неявной. Дополнительная сигнализация может быть предоставлена в отличие от использования фиксированного неявного правила в текущем разбиении QtBt (например, в таблицах I и II).
[0142] Четвертый способ разбиения может включать в себя следующее: (1) флаг разрешения QtBt (например, qtbt_enabled_flag) может применяться для замены флага неявного разрешения QtBt в разбиении QtBt в ТМС 13, чтобы указать использование разбиения QtBt с большей гибкостью. (2) Флаг типа QtBt (например, qtbt_type_flag) может дополнительно передаваться, когда флаг разрешения QtBt установлен в некоторое значение, такое как 1. (3) Если флаг типа QtBt установлен в некоторое значение, такое как 0, может быть применена схема текущего неявного QtBt (например, таблицы I и II). Кроме того, флаг асимметричного ограничивающего бокса (например, asymmetric_bbox_enabled_flag) может дополнительно передаваться для выборочного разрешения / запрещения использования асимметричного ограничивающего бокса. В варианте осуществления, когда флаг асимметричного ограничивающего бокса установлен на некоторое значение, такое как 1, величины асимметричного ограничивающего бокса (то есть размеры) по осям х, у и z могут передаваться, в противоположность максимуму из трех. В другом варианте осуществления, когда флаг асимметричного ограничивающего бокса не передается, всегда можно использовать асимметричный ограничивающий бокс.
[0143] Четвертый способ разбиения также может включать в себя следующее: (4) Если флаг типа QtBt представляет собой некоторое значение, такое как 1, 3-битовый сигнал может быть отправлен на каждый из уровней октодерева, чтобы указать, следует ли выполнять разбиение по каждой из осей х, у и z. В варианте осуществления правило implicitQtBt (например, таблицы I и II) в ТМС 13 может применяться для определения 3-битового сигнала для каждого из уровней октодерева. В другом варианте осуществления могут применяться другие правила разбиения для определения 3-битового сигнала для каждого из уровней октодерева. Другие правила разбиения могут облегчить кодирование информации о занятости октодерева и дополнительно учитывать характеристики данных (например, информацию о занятости октодерева) или механизм получения даты. В варианте осуществления, флаг асимметричного ограничивающего бокса может дополнительно передаваться для выборочного разрешения / запрещения использования асимметричного ограничивающего бокса. Когда флаг асимметричного ограничивающего бокса имеет некоторое значение, такое как 1, могут передаваться величины (т.е. размеры) асимметричного ограничивающего бокса по осям х, у и z, а не максимум из трех. В другом варианте осуществления флаг асимметричного ограничивающего бокса может не передаваться, и всегда можно использовать асимметричный ограничивающий бокс.(5) Когда флаг разрешения QtBt установлен в некоторое значение, такое как 0, четвертый способ разбиения может применять декомпозицию октодерева (или разбиение октодерева) для всех уровней.
[0144] Следует отметить, что, поскольку разбиение Ot / Qt / Bt разрешено произвольным образом в процессе, когда флаг явного разрешения QtBt установлен на некоторое значение, такое как 1, в четвертом способе разбиения максимально возможное общее количество разбиений может быть в три раза больше разности максимальной и минимальной глубины узлов.
[0145] Вышеупомянутые способы могут быть реализованы в видеокодере или декодере, адаптированном для сжатия / распаковки облака точек. Кодер / декодер может быть реализован в аппаратном обеспечении, программном обеспечении или любой их комбинации, а программное обеспечение, если оно есть, может быть сохранено на одном или нескольких машиночитаемых носителях. Например, каждый из способов (или вариантов осуществления), кодеров и декодеров может быть реализован схемой обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере один или более процессоров выполняют программу, которая хранится на машиночитаемом носителе.
[0146] Фиг. 14 и 15 показывают блок-схемы, описывающие процесс (1400) и процесс (1500) согласно вариантам осуществления изобретения. Процессы (1400) и (1500) могут использоваться во время процессов декодирования облаков точек. В различных вариантах осуществления процессы (1400) и (1500) могут выполняться схемой обработки, такой как схема обработки в оконечных устройствах (110), схема обработки, которая выполняет функции кодера (203) и/или декодера (201), схема обработки, которая выполняет функции кодера (300), декодера (400), кодера (700) и/или декодера (800) и т.п. В некоторых вариантах осуществления процессы (1400) и (1500) могут быть реализованы в командах, таким образом, когда схема обработки выполняет команды, схема обработки выполняет процессы (1400) и (1500), соответственно. [0147] Как показано на фиг. 14 процесс (1400) начинается с (S1401) и переходит нa (S1410).
[0148] На (S1410) первая сигнальная информация может быть принята из кодированного битового потока для облака точек, которое включает в себя набор точек в трехмерном (3D) пространстве. Первая сигнальная информация может указывать информацию о разбиении облака точек.
[0149] На (S1420) вторая сигнальная информация может быть определена на основе первой сигнальной информации, указывающей первое значение. Вторая сигнальная информация может указывать на режим разбиения набора точек в трехмерном пространстве.
[0150] На (S1430) режим разбиения набора точек в трехмерном пространстве может быть определен на основе второй сигнальной информации. Затем процесс (1400) может перейти к (S1440), где облако точек может быть реконструировано на основе режима разбиения.
[0151] В некоторых вариантах осуществления, режим разбиения может быть определен как заранее заданное разбиение квадродерева и двоичного дерева (QtBt) на основе второй сигнальной информации, являющейся вторым значением.
[0152] В процессе (1400) может быть принята третья сигнальная информация, которая указывает, что трехмерное пространство является асимметричным кубоидом. Размеры трехмерного пространства, которые передаются по направлениям х, у и z, могут быть определены на основе третьей сигнальной информации, являющейся первым значением.
[0153] В некоторых вариантах осуществления 3-битовая сигнальная информация может быть определена для каждого из множества уровней разбиения в режиме разбиения, основанном на второй сигнальной информации, являющейся первым значением. 3-битовая сигнальная информация для каждого из множества уровней разбиения может указывать направления разбиения по направлениям х, у и z для соответствующего уровня разбиения в режиме разбиения.
[0154] В некоторых вариантах осуществления 3-битовая сигнальная информация может быть определена на основе размеров трехмерного пространства.
[0155] В процессе (1400) режим разбиения может быть определен на основе первой сигнальной информации, являющейся вторым значением, где режим разбиения может включать в себя соответствующее разбиение октодерева в каждом из множества уровней разбиения в режиме разбиения.
[0156] Как показано на фиг. 15 процесс (1500) начинается с (S1501) и переходит к (S1510).
[0157] На (S1510) первая сигнальная информация может быть принята из кодированного битового потока для облака точек, которое включает в себя набор точек в трехмерном (3D) пространстве. Первая сигнальная информация может указывать на информацию о разбиении облака точек.
[0158] На (S1520) режим разбиения набора точек в трехмерном пространстве может быть определен на основе первой сигнальной информации, где режим разбиения может включать в себя множество уровней разбиения.
[0159] На (S1530) облако точек может быть восстановлено на основе режима разбиения.
[0160] В некоторых вариантах осуществления 3-битовая сигнальная информация для каждого из множества уровней разбиения в режиме разбиения может быть определена на основе первой сигнальной информации, являющейся первым значением, где 3-битовая сигнальная информация для каждого из множества уровней разбиения может указывать направления разбиения по направлениям х, у и z для соответствующего уровня разбиения в режиме разбиения.
[0161] В некоторых вариантах осуществления 3-битовая сигнальная информация может быть определена на основе размеров трехмерного пространства.
[0162] В некоторых вариантах осуществления, режим разбиения может быть определен для включения соответствующего октодерева в каждый из множества уровней разбиения в режиме разбиения, основанном на первой сигнальной информации, являющейся вторым значением.
[0163] В процессе (1500) вторая сигнальная информация может дополнительно приниматься из кодированного битового потока для облака точек. Вторая сигнальная информация может указывать, что трехмерное пространство является асимметричным кубоидом, когда вторая сигнальная информация является первым значением, и трехмерное пространство является симметричным кубоидом, когда вторая сигнальная информация является вторым значением.
[0164] В некоторых вариантах осуществления, на основе первой сигнальной информации, указывающей второе значение, и второй сигнальной информации, указывающей первое значение, режим разбиения может быть определен для включения соответствующего разбиения октодерева в каждый из первых уровней разбиения в множестве уровней разбиения режима разбиения. Тип разбиения и направление разбиения последнего уровня разбиения из множества уровней разбиения режима разбиения могут быть определены согласно следующей таблице:
x
y
z
где d, d, и d являются log2 размеров трехмерного пространства вдоль осей х, у и z, соответственно.
[0165] В процессе (1500) вторая сигнальная информация может быть определена на основе первой сигнальной информации, указывающей первое значение. Вторая сигнальная информация может указывать, что трехмерное пространство является асимметричным кубоидом, когда вторая сигнальная информация указывает первое значение, и трехмерное пространство является симметричным кубоидом, когда вторая сигнальная информация указывает второе значение. Кроме того, размеры трехмерного пространства, которые передаются вдоль осей х, у и z, могут быть определены на основе второй сигнальной информации, указывающей первое значение.
[0166] Как отмечалось ранее, описанные выше способы могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых команд и физически сохранены на одном или нескольких машиночитаемых носителях. Например, фиг. 16 показывает компьютерную систему (1800), подходящую для реализации определенных вариантов осуществления раскрытого предмета изобретения.
[0167] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть предметом сборки, компиляции, связывания или аналогичных механизмов для создания кода, содержащего команды, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более центральными процессорами (CPU), графическими процессорами (GPU) и т.п.
[0168] Команды могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.
[0169] Компоненты, показанные на фиг. 16 для компьютерной системы (1800) являются примерными по своей природе и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы (1800).
[0170] Компьютерная система (1800) может включать в себя определенные человека-машинные интерфейсы ввода. Такой человеко-машинный интерфейс ввода может реагировать на ввод одним или несколькими пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения перчаток данных), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например, жесты), обонятельного ввода (не изображен). Человеко-машинные интерфейсы ввода также могут использоваться для захвата определенных медиа, не обязательно напрямую связанных с сознательным вводом человеком, таких как аудио (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные от камеры для съемки неподвижных изображений), видео (например, двумерное видео, трехмерное видео, включая стереоскопическое видео).
[0171] Человеко-машинные интерфейсы ввода могут включать в себя одно или более из следующих (только по одному из них показаны): клавиатура (1801), мышь (1802), трекпад (1803), сенсорный экран (1810), перчатка для данных (не показана), джойстик (1805), микрофон (1806), сканер (1807), камера (1808).
[0172] Компьютерная система (1800) также может включать в себя определенные человеко-машинные интерфейсы вывода. Такие человека-машинные интерфейсы вывода могут воздействовать на одного или более пользователей-людей, например, посредством тактильного вывода, звука, света и запаха / вкуса. Такие человеко-машинные интерфейсы вывода могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (1810), перчатку для данных (не показано) или джойстик (1805), но также могут быть устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (1809), наушники (не показаны)), устройства вывода изображения (например, экраны (1810), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое с возможностью или без возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее - некоторые из которых могут выводить двумерные визуальные выходные данные или более чем трехмерные выходные данные с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).
[0173] Компьютерная система (1800) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD / DVD ROM / RW (1820) с CD / DVD или подобные носители (1821), флэш-накопитель (1822), съемный жесткий диск или твердотельный накопитель (1823), традиционные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе ROM / ASIC / PLD, такие как защитные ключи (не показаны) и т.п.
[0174] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящее время предметом изобретения, не охватывает среды передачи, несущие волны или другие кратковременные сигналы.
[0175] Компьютерная система (1800) также может включать в себя интерфейс для одной или нескольких сетей связи. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т.д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные локальные сети, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные телевизионные или глобальные беспроводные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное широковещательное телевидение, автомобильные и промышленные, включая CANBus и т.д. Некоторым сетям обычно требуются адаптеры внешнего сетевого интерфейса, которые подключены к определенным портам данных общего назначения или периферийным шинам (1849) (например, к портам USB компьютерной системы (1800)); другие обычно интегрируются в ядро компьютерной системы (1800) путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1800) может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CANbus на определенные устройства CANbus), или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровые сети. Определенные протоколы и стеки протоколов могут использоваться в каждой из этих сетей и сетевых интерфейсов, как описано выше.
[0176] Вышеупомянутые человеко-машинные интерфейсы, доступные человеку запоминающие устройства и сетевые интерфейсы могут быть присоединены к ядру (1840) компьютерной системы (1800).
[0177] Ядро (1840) может включать в себя один или более центральных процессоров (CPU, ЦП) (1841), графических процессоров (GPU, ГП) (1842), специализированных программируемых блоков обработки в виде программируемых логических интегральных схем (FPGA, ПЛИС) (1843), аппаратные ускорители для определенных задач (1844) и т.д. Эти устройства, наряду с постоянным запоминающим устройством (ПЗУ) (1845), оперативным запоминающим устройством (1846), внутренними запоминающими устройствами, такими как внутренние жесткие диски, не доступные пользователю, твердотельные накопители и т.п.(1847), могут быть подключены через системную шину (1848). В некоторых компьютерных системах системная шина (1848) может быть доступна в виде одного или нескольких физических разъемов для обеспечения возможности расширения с помощью дополнительных процессоров, графических процессоров и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (1848) ядра, либо через периферийную шину (1849). Архитектура периферийной шины включает PCI, USB и т.п.
[0178] ЦП (1841), ГП (1842), ПЛИС (1843) и ускорители (1844) могут выполнять определенные команды, которые в комбинации могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ПЗУ (1845) или ОЗУ (1846). Переходные данные также могут храниться в ОЗУ (1846), тогда как постоянные данные могут храниться, например, во внутреннем запоминающем устройстве (1847). Быстрое хранение и извлечение на любое из запоминающих устройств могут быть осуществлены за счет использования кэш-памяти, которая может быть тесно связана с одним или более ЦП (1841), ГП (1842), массовым запоминающим устройством (1847), ПЗУ (1845), ОЗУ (1846) и т.п.
[0179] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего изобретения, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.
[0180] В качестве примера, а не в качестве ограничения, компьютерная система, имеющая архитектуру (1800) и, в частности, ядро (1840), может обеспечивать функциональность в результате того, что процессор (-ы) (включая ЦП, графические процессоры, ПЛИС, ускорители, и т.п.) исполняют программное обеспечение, воплощенное на одном или более материальных машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя массовым хранилищем, как описано выше, а также определенными хранилищами ядра (1840), которые имеют энергонезависимую природу, такими как внутреннее хранилище большой емкости (1847) или ПЗУ (1845). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1840). Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может побудить ядро (1840) и, в частности, процессоры в нем (включая ЦП, ГП, ПЛИС и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в ОЗУ (1846), и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. Вдобавок или в качестве альтернативы компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель (1844)), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это уместно. Ссылка на машиночитаемый носитель может охватывать схему (например, интегральную схему (ИС)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это необходимо. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.
[0181] Хотя были описаны несколько примеров осуществления, возможны изменения, перестановки и различные заменяющие эквиваленты в объеме изобретения. Таким образом, специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы изобретения и, таким образом, находятся в пределах его сущности и объема.