Неявное геометрическое разделение на основе квадродерева или бинарного дерева для кодирования облака точек
IMPLICIT GEOMETRIC DIVISION BASED ON A QUAD-TREE OR BINARY TREE FOR ENCODING A POINT CLOUD

ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИ
[0001] По настоящей заявке испрашивается приоритет согласно заявке на выдачу патента США 16/909,142 «Неявное геометрическое разделение на основе квадродерева или бинарного дерева для кодирования облака точек», поданной 23 июня 2020 г., по которой испрашивался приоритет согласно предварительным заявкам США 62/867,063 «Неявное геометрическое разделение для кодирования облака точек», поданной 26 июня 2019 г., 62/904,384 «О кодировании геометрии для облаков точек», поданной 23 сентября 2019 г., и 62/910,387 «Дополнительная информация об адаптивном геометрическом квантовании и неявном геометрическом разделении для кодирования облака точек», поданной 3 октября 2019 г. Содержание предыдущих заявок полностью включено в настоящее описание посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Настоящее изобретение относится к кодированию облака точек.
УРОВЕНЬ ТЕХНИКИ
[0003] Описание уровня техники приведено здесь для представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники для настоящего изобретения.
[0004] Облако точек широко используется в последние годы. Например, облако точек можно использовать в автономных транспортных средствах для обнаружения и локализации объектов. Облако точек также используется в географических информационных системах (ГИС) для картографии, а также для визуализации и архивирования объектов и коллекций культурного наследия и т.д.
[0005] Кадр облака точек содержит набор точек высокой размерности, обычно трехмерных (3D) точек, каждая из которых включает информацию о трехмерном положении и дополнительные атрибуты, такие как цвет, коэффициент отражения и т.д. Они могут сниматься с помощью нескольких камер и датчиков глубины или лидара в различных установках и могут включать тысячи и миллиарды точек для реалистичного представления исходных сцен.
[0006] Для более быстрой передачи или уменьшения объема памяти необходимы технологии сжатия, позволяющие уменьшить объем данных для представления облака точек. Группа ISO/IEC MPEG (JTC 1/SC 29/WG 11) создала специальную группу (MPEG-PCC) для стандартизации методов сжатия для статических или динамических облаков точек.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0007] Аспекты изобретения предоставляют способ декодирования геометрии облака точек в декодере облака точек. Способ может включать прием битового потока, включающего слайс кодированного кадра облака точек, и реконструкцию октодерева, представляющего геометрию точек в ограничивающем боксе (bounding box) слайса, с использованием неявного геометрического разделения, где текущий узел октодерева разделен посредством разделения на основе квадродерева (QT, quadtree) или разделения на основе бинарного дерева (ВТ, binary-tree).
[0008] В варианте осуществления изобретения способ разделения текущего узла октодерева с использованием одного из разделения QT, разделения ВТ или разделения на основе октодерева (ОТ, octree) определяют на основе заранее заданного условия. В варианте осуществления изобретения способ разделения текущего узла октодерева с использованием одного из разделения QT, разделения ВТ или разделения ОТ определяют на основе одного или более параметров. Один из указанных одного или более параметров может сигнализироваться в битовом потоке или с помощью заранее локально сконфигурированного значения.
[0009] В варианте осуществления изобретения из битового потока принимают информацию о занятости, принадлежащую 8-биновому коду занятости текущего узла октодерева. Каждый бит занятости соответствует занятому дочернему узлу текущего узла октодерева. Четыре бина, которые принадлежат 8-биновому коду занятости, не сигнализируют в битовом потоке, когда текущий узел октодерева разделен посредством разделения QT, и 6 бинов, которые принадлежат 8-биновому коду занятости, не сигнализируют в битовом потоке, когда текущий узел октодерева разделен посредством разделения ВТ. В настоящей заявке мы можем называть 8-биновый код занятости также 8-битовым кодом занятости или каждый бин 8-бинового кода занятости битом.
[0010] В варианте осуществления изобретения из битового потока принимают один или более синтаксических элементов, указывающих трехмерные (3D) размеры ограничивающего бокса слайса кодированного кадра облака точек. В варианте осуществления изобретения определяют значение переменной, обозначенной partitionSkip и указывающей тип разделения и направление разделения текущего узла октодерева. В примере переменная partitionSkip представлена в двоичной форме тремя битами, соответствующими направлениям х, у и z, соответственно, при этом каждый бит указывает, выполнять ли разделение вдоль соответствующего направления х, у или z. В примере глубину в измерении х, у или z для дочернего узла текущего узла октодерева обновляют на основе переменной partitionSkip.
[0011] В варианте осуществления изобретения реконструкция октодерева также включает прием синтаксического элемента, указывающего на то, что текущий узел октодерева имеет один занятый дочерний узел, прием 1 бина, если переменная partitionSkip указывает на разделение ВТ, или 2 бинов, если переменная partitionSkip указывает на разделение QT, и определение карты занятости, идентифицирующей занятые дочерние узлы текущего узла октодерева, на основе принятых 1 или 2 бинов.
[0012] В варианте осуществления изобретения в процессе анализа битового потока для определения синтаксического элемента карты занятости, идентифицирующей занятые дочерние узлы текущего узла октодерева, один или более бинов синтаксического элемента карты занятости могут быть пропущены на основе переменной partitionSkip.
[0013] В варианте осуществления изобретения для дочернего узла текущего узла октодерева, кодированного в прямом режиме, для каждого из направлений х, у и z определяют значение log2 размера, обозначенное dx, dy и dz, соответственно, для дочернего узла на основе переменной partitionSkip. Позиции точек в дочернем узле кодируют посредством кодов фиксированной длины с использованием (dx, dy, dz) битов, соответственно.
[0014] В варианте осуществления изобретения из битового потока принимают синтаксический элемент, указывающий один из следующих параметров: максимальное количество неявных разделений QT и ВТ, выполняемых перед разделениями ОТ, минимальный размер неявных разделений QT и ВТ, который предотвращает неявные разделения QT и ВТ узла, когда все размеры узла меньше или равны минимальному размеру, или приоритет, указывающий на то, какой из неявного разделения QT или ВТ выполнять первым, когда оба разделения QT и ВТ разрешены.
[0015] В варианте осуществления изобретения, когда глубина октодерева текущего узла меньше, чем параметр K, или когда наименьшее значение log2 размера среди значений log2 размеров текущего узла в направлениях х, у и z равно параметру М, тип разделения и направление разделения для разделения текущего узла можно определить в соответствии с условиями, указанными в следующей таблице:
x
z
x
y
z
x
y
z
x
y
z
где параметр K является целым числом в диапазоне 0 ≤ K ≤ max(d, dy, d) - min(d, d, d) и задает максимальное количество неявных разделений QT и ВТ, которые разрешены до разделений ОТ, параметр М является целым числом в диапазоне 0 ≤ М ≤ min(d, d, d), задает минимальный размер неявных разделений QT и ВТ и предотвращает неявные разделения QT и ВТ узла, когда все размеры узла меньше или равны М, a dx, dy и dz - значения log2 размеров текущего узла в направлениях х, у и z, соответственно. Величины dx, dy и dz соответствуют d, d и d в приведенной выше таблице. Указанные два обозначения используются в этом описании как взаимозаменяемые.
[0016] В варианте осуществления изобретения, когда глубина октодерева текущего узла меньше, чем параметр K, или когда наименьшее значение log2 размера среди значений log2 размеров текущего узла в направлениях х, у и z равно параметру М, переменную partitionSkip можно определить следующим образом:
x
y
z
x
z
x
y
z
Переменная partitionSkip представлена в двоичной форме тремя битами и задает тип разделения и направление разделения текущего узла октодерева. Параметр K является целым числом в диапазоне 0 ≤ K ≤ max(d, d, d) - min(d, dy, d) и задает максимальное количество неявных разделений QT и ВТ, которые разрешены до разделений ОТ. Параметр М является целым числом в диапазоне 0 ≤ М ≤ min(d, d, d), задает минимальный размер неявных разделений QT и ВТ и предотвращает неявные разделения QT и ВТ узла, когда все размеры узла меньше или равны М. Значения dx, dy и dz являются значениями log2 размеров текущего узла в направлениях х, у и z, соответственно. MaxNodeDimLog2 представляет максимальное значение log2 размера из dx, dy и dz. Оператор |= представляет собой составную операцию побитового ИЛИ.
[0017] В варианте осуществления изобретения из битового потока может быть получен флаг, указывающий, разрешено ли неявное геометрическое разделение для последовательности кадров облака точек или слайса кодированного кадра облака точек. В варианте осуществления изобретения планарный режим определяют как неприменимый в направлении х, у или z, и разделение не выполняют для текущего узла. В варианте осуществления изобретения выполняют процесс анализа занятости геометрического октодерева, в котором для бина, имеющего индекс binIdx в коде занятости, переменную binIsInferred устанавливают следующим образом: (а) если выполнено одно из следующих условий, переменную binlslnferred устанавливают равной 1: (1) переменная NeighbourPattem равна 0, а количество ранее декодированных однозначных бинов меньше или равно (binIdx + minOccupied - maxOccupied), или (2) переменная NeighbourPattem не равна 0, значение binldx равно maxOccupied-1, а значения всех предыдущих декодированных бинов равны нулю, где minOccupied = 2, а maxOccupied = 8, если применяется разделение ОТ, maxOccupied = 4, если применяется разделение QT, и maxOccupied = 2, если применяется разделение ВТ, и (b) в противном случае, если ни одно из вышеперечисленных условий не выполнено, переменную binlslnferred устанавливают равной 0.
[0018] В варианте осуществления изобретения используют параметр K и параметр М. Параметр K указывает максимальное количество неявных разделений QT и ВТ перед разделениями ОТ, а параметр М указывает минимальный размер неявных разделений QT и ВТ, который предотвращает неявные разделения QT и ВТ узла, когда все размеры узла меньше или равны минимальному размеру. Параметры K и М могут быть обновлены следующим образом: (а) если K больше, чем разность максимального значения log2 размера корневого узла и минимального значения log2 размера корневого узла слайса, K меняют на разность максимального значения log2 размера корневого узла и минимального значения log2 размера корневого узла слайса; (b) если М больше, чем минимальное значение log2 размера корневого узла слайса, М меняют на минимальное значение log2 размера корневого узла слайса; (с) если максимальное значение log2 размера корневого узла и минимальное значение log2 размера корневого узла слайса равны, М меняют на 0; и (d) если включен режим треугольной сетки (trisoup), K меняют на разность максимального значения log2 размера корневого узла и минимального значения log2 размера корневого узла слайса, а М меняют на минимальное значение log2 размера корневого узла слайса. Следует отметить, что значение log2 размера узла в режиме треугольной сетки не должно быть больше минимального значения log2 размера корневого узла слайса.
[0019] Аспекты изобретения предоставляют устройство для декодирования геометрии облака точек. Устройство может содержать схему, сконфигурированную для приема битового потока, включающего слайс кодированного кадра облака точек, и реконструкции октодерева, представляющего геометрию точек в ограничивающем боксе слайса, с использованием неявного геометрического разделения, где текущий узел октодерева разделен посредством разделения на основе квадродерева (QT) или разделения на основе бинарного дерева (ВТ).
[0020] Аспекты изобретения предоставляют машиночитаемый носитель, хранящий инструкции, которые при их исполнении процессором заставляют процессор выполнять способ декодирования геометрии облака точек.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0021] Различные варианты осуществления изобретения, которые предлагаются в качестве примеров, будут подробно описаны со ссылкой на следующие чертежи, на которых одинаковые номера обозначают одинаковые элементы.
[0022] Фиг. 1 показывает процесс рекурсивного разделения в соответствии с вариантом осуществления изобретения.
[0023] Фиг. 2 показывает процесс формирования уровня детализации (LOD, level of detail) в соответствии с вариантом осуществления изобретения.
[0024] Фиг. 3 показан пример кодера в соответствии с вариантом осуществления изобретения.
[0025] Фиг. 4 показывает пример декодера в соответствии с вариантом осуществления изобретения.
[0026] Фиг. 5 показывает разделение на основе октодерева в трехмерном (3D) пространстве.
[0027] Фиг. 6 показывает пример двухуровневого разделения октодерева (ОТ) и соответствующих кодов занятости.
[0028] Фиг. 7 показывает последовательность облака точек, имеющую основные компоненты в направлениях х и у.
[0029] Фиг. 8 показывает примеры разделений на основе квадродерева (QT) в трехмерном пространстве в соответствии с вариантом осуществления изобретения.
[0030] Фиг. 9 показывает примеры разделений на основе бинарного дерева (ВТ) в трехмерном пространстве в соответствии с вариантом осуществления изобретения.
[0031] Фиг. 10-13 показывают двумерные (2D) блоки для демонстрации четырех различных процессов разделения на основе неявных разделений QT и ВТ.
[0032] Фиг. 14 показывает двумерные блоки для демонстрации схемы Testing Model 13 (ТМС13), в которой разделения ОТ выполняются на основе расширенного кубического ограничивающего бокса.
[0033] Фиг. 15 показывает блок-схему способа декодирования геометрии на основе разделения QT/BT для декодирования облака точек в соответствии с вариантом осуществления настоящего изобретения.
[0034] Фиг. 16 показывает компьютерную систему для осуществления способов декодирования геометрии в различных вариантах осуществления изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
[0035] Настоящее изобретение относится к сжатию облака точек на основе геометрии (G-PCC, geometry based point cloud compression). Описываются способы неявного разделения на основе квадродерева (QT) или бинарного дерева (ВТ). Когда применяется неявное разделение QT или ВТ, геометрия облака точек может быть неявно разделена по подмножеству всех измерений при соблюдении определенных критериев, вместо осуществления разделения по всем измерениям все время.
[0036] I. Кодер для кодирования облака точек L и декодер
[0037] 1. Данные облака точек
[0038] Данные облака точек (или облако точек) используются для представления трехмерной (3D) сцены или объекта в некоторых новых приложениях, таких как поглощающая виртуальная реальность (VR) / дополненная реальность (AR) / смешанная реальность (MR), автомобильная / роботизированная навигация, медицинская визуализация и т.д. Облако точек может включать набор отдельных трехмерных точек. Каждая точка связана с набором трехмерных координат, указывающих трехмерное положение соответствующей точки и ряд других атрибутов, таких как цвет, нормаль к поверхности, непрозрачность, отражательная способность и т.д. В различных вариантах осуществления изобретения входные данные облака точек могут быть квантованы и впоследствии организованы в трехмерную сетку кубических вокселей, которые можно описать с помощью структуры данных октодерева. Полученное в результате октодерево вокселей облегчает обход, поиск и доступ к квантованным данным облака точек.
[0039] Кадр облака точек может включать набор трехмерных точек в конкретный момент времени. Кадры облака точек можно использовать для реконструкции объекта или сцены как композиции таких точек. Они могут быть захвачены с помощью нескольких камер и датчиков глубины в различных установках и могут состоять из тысяч и даже миллиардов точек для реалистичного представления реконструированных сцен. Последовательность кадров облака точек может называться облаком точек. Набор декартовых координат, связанных с трехмерными точками кадра облака точек, может называться геометрией этих трехмерных точек.
[0040] Для уменьшения объема данных, необходимых для представления облака точек (например, последовательности кадров облака точек), необходимы технологии сжатия. Таким образом, необходимы технологии для сжатия облаков точек с потерями для использования в коммуникациях в реальном времени и в виртуальной реальности с шестью степенями свободы (6 DoF, Degrees of Freedom). Кроме того, требуются технологии для сжатия облаков точек без потерь в контексте динамического отображения для автономного вождения и приложений, связанных с культурным наследием, и т.д. Кроме того, необходимы стандарты для решения проблемы сжатия геометрии и атрибутов (например, цветов и отражательной способности), масштабируемого/прогрессивного кодирования, кодирования последовательностей облаков точек, захваченных во времени, и произвольного доступа к подмножествам облака точек.
[0041] 2. Квантование координат
[0042] В варианте осуществления изобретения сначала могут квантоваться координаты точек во входных данных облака. Например, действительные числовые значения координат могут квантоваться в целочисленные значения. После квантования несколько точек могут иметь одинаковую позицию в некоторых вокселях. Эти повторяющиеся точки опционально могут быть объединены в одну точку.
[0043] 3. Кодирование геометрии на основе октодерева
[0044] Фиг. 1 показывает процесс рекурсивного разделения (100) в соответствии с вариантом осуществления изобретения. Процесс (100) может выполняться для создания структуры октодерева для представления позиций набора точек в облаке точек. Как показано, сначала определяют кубический выровненный по оси ограничивающий бокс (101), содержащий набор точек. Затем ограничивающий бокс (101) рекурсивно разделяют для построения структуры октодерева. Как показано, на каждом этапе текущий куб может быть разделен на 8 подкубов. Может быть сформирован 8-битовый код, называемый кодом занятости, для указания, содержит ли каждый из 8 подкубов точки. Например, каждый подкуб связан с однобитовым значением. Если подкуб занят, он имеет битовое значение 1; в противном случае соответствующий подкуб имеет битовое значение 0. Занятые подкубы можно разделять до тех пор, пока не будет достигнут заранее заданный минимальный размер подкубов. Подкуб минимального размера - это воксель, соответствующий структуре октодерева. Таким образом, может быть сформирована последовательность кодов занятости, которая впоследствии может быть сжата и передана от кодера к декодеру. Посредством декодирования кодов занятости (например, выполнения процесса декодирования октодерева) декодер может получить ту же структуру октодерева, что и кодер, или оценку структуры октодерева.
[0045] 4. Передача атрибутов
[0046] В результате процесса формирования октодерева или кодирования на стороне кодера подкуб с минимальным размером может содержать более одной точки. Таким образом, позиция, соответствующая вокселю (например, центру соответствующего подкуба), может соответствовать множеству наборов атрибутов множества точек. В таком сценарии, в варианте осуществления изобретения, процесс передачи атрибутов может выполняться для определения одного набора атрибутов на основе множества наборов атрибутов для соответствующего вокселя. Например, усредненный атрибут подмножества ближайших соседних точек может использоваться как атрибут соответствующего вокселя. В различных вариантах осуществления изобретения для передачи атрибутов могут использоваться различные методы.
[0047] 5. Формирование уровня детализации (LOD)
[0048] Фиг. 2 показывает процесс (200) формирования уровня детализации (LOD) в соответствии с вариантом осуществления изобретения. Процесс (200) может выполняться на квантованных позициях (например, позициях вокселей), упорядоченных согласно процессу декодирования октодерева. В результате процесса (200) точки могут быть реорганизованы или переупорядочены в набор уровней детализации. Процесс (200) может осуществляться идентично в кодере и декодере. Последующий процесс кодирования атрибутов может выполняться в кодере или декодере в соответствии с порядком, заданным процессом (200) (называемым порядком на основе LOD).
[0049] В частности, на фиг. 2 показаны три уровня LOD: LOD0, LOD1 и LOD2. Может быть указано евклидово расстояние, d0, d1 или d2, для LOD0, LOD1 и LOD2, соответственно. Каждый уровень LOD включает подмножество точек Р0-Р9. Расстояние между каждой парой точек на соответствующем уровне LOD больше или равно соответствующему евклидову расстоянию. Евклидовы расстояния могут быть организованы как d0>d1>d2. При такой организации более высокий уровень детализации включает меньшее количество точек, которые находятся дальше друг от друга, и обеспечивает более грубое представление облака точек, в то время как более низкий уровень детализации включает больше точек, расположенных ближе друг к другу, и обеспечивает более точное представление облака точек.
[0050] В результате вышеупомянутого процесса (200) формирования LOD точки в исходном порядке (порядке декодирования октодерева) от Р0 до Р9 могут быть реорганизованы в порядке на основе LOD: Р0, Р5, Р4, Р2, P1, Р6, Р3, Р9, Р8 и Р7.
[0051] 6. Предсказание атрибутов
[0052] Атрибуты, связанные с облаком точек, могут кодироваться и декодироваться в порядке, заданном процессом формирования LOD. Например, точка за точкой, в порядке на основе LOD, предсказание атрибута каждой текущей точки (точки, которая в настоящее время обрабатывается) может быть определено путем выполнения способа предсказания атрибута в кодере и/или декодере. Аналогичный процесс предсказания атрибутов может выполняться в кодере и декодере.
[0053] С полученным предсказанием атрибута в кодере может быть сформирован сигнал остатка путем вычитания значения предсказания атрибута из соответствующего исходного значения атрибута текущей точки. Затем сигнал остатка может быть также сжат отдельно или в комбинации с другими сигналами остатка. Например, могут выполняться операции преобразования и/или квантования, за которыми следует энтропийное кодирование полученных в результате сигналов. Сжатый сигнал остатка может быть передан кодеру в битовом потоке.
[0054] В декодере сигнал остатка может быть восстановлен путем выполнения процесса, обратного процессу кодирования в кодере для кодирования сигнала остатка. С помощью предсказания полученного атрибута и восстановленного сигнала остатка, соответствующего текущей точке, можно получить реконструированный атрибут текущей точки. Подобным образом эта операция реконструкции может происходить в кодере для получения реконструированного атрибута.
[0055] Для определения предсказания атрибутов могут использоваться различные методы предсказания атрибутов в различных вариантах осуществления изобретения. Обычно предсказание атрибутов текущей точки выполняется с использованием ранее реконструированных атрибутов точек, соседних с текущей точкой. Когда процесс предсказания атрибутов запускается на основе порядка на основе LOD, реконструированные значения атрибутов точек до текущей точки уже доступны. Кроме того, из процесса кодирования или декодирования октодерева также доступны позиции (трехмерные координаты) точек в облаке точек. Соответственно, процесс предсказания атрибутов может выполняться с учетом реконструированных атрибутов и трехмерных координат соседних точек текущей точки.
[0056] Например, набор соседних точек текущей точки может быть сначала определен с использованием различных алгоритмов. В одном примере может быть выполнен процесс поиска на основе древовидной структуры k-d для определения набора точек, ближайших к текущей точке.
[0057] Например, для определения предсказания атрибута используется подход на основе геометрического расстояния и/или атрибутного расстояния. Атрибут предсказания может быть определен на основе взвешенной суммы (или средневзвешенного) реконструированных атрибутов набора определенных соседних точек в кодере или декодере. Например, с использованием набора определенных соседних точек взвешенная сумма (или средневзвешенное) реконструированных атрибутов определенных соседних точек может быть определена как атрибут предсказания в кодере или декодере. Например, вес, используемый в способе на основе взвешенной суммы (также называемом способом на основе интерполяции), может быть обратным (или обратно пропорциональным) геометрическому расстоянию или атрибутному расстоянию. В качестве альтернативы, вес может быть двусторонним весом, полученным из комбинации веса на основе геометрического расстояния (геометрическая восьмерка) и веса на основе атрибутного расстояния (веса атрибута).
[0058] Например, для определения предсказания атрибута используется подход, основанный на соотношении «скорость-искажение» (RD, rate-distortion). Например, индекс кандидата может быть связан с каждым реконструированным значением атрибута набора соседних точек в кодере или декодере. В кодере может выполняться способ на основе оптимизации RD для оценки того, какое из возможных реконструированных значений атрибутов соседних точек представляет собой лучший выбор для использования в качестве предсказания атрибута. Например, искажение можно измерить по разности исходного (или истинного) значения атрибута текущей точки и предсказания кандидата (реконструированного значения атрибута кандидата). Скорость может быть стоимостью кодирования индекса выбранного предсказания кандидата. Для определения лучшего кандидата для сигнала предсказания может быть определена лагранжева функция RD-стоимости. Таким образом, индекс кандидата выбранного предсказания кандидата может сигнализироваться в декодер.
[0059] Соответственно, декодер может сначала определить тот же набор соседних точек для соответствующей текущей точки и связать индексы с реконструированными значениями атрибутов одного и того же набора соседних точек таким же образом, как и на стороне кодера. Затем декодер может определить предсказание атрибута на основе реконструированных значений атрибутов соседних точек, используя сигнализированный индекс кандидата.
[0060] 7. Примеры систем кодирования для сжатия облака точек
[0061] Фиг. 3 показывает пример кодера (300) в соответствии с вариантом осуществления изобретения. Кодер может быть сконфигурирован для приема данных облака точек и сжатия данных облака точек для создания битового потока, переносящего сжатые данные облака точек. В варианте осуществления изобретения кодер (300) может включать модуль (310) квантования позиции, модуль (312) удаления повторяющихся точек, модуль (330) кодирования октодерева, модуль (320) передачи атрибутов, модуль (340) формирования LOD, модуль (350) предсказания атрибутов, модуль (360) квантования остатка, модуль (370) арифметического кодирования, модуль (380) деквантования остатка, модуль (381) сложения и память (390) для хранения реконструированных значений атрибутов.
[0062] Как показано, кодер (300) может принимать входное облако (301) точек. Позиции (трехмерные координаты) облака (301) точек предоставляются модулю (310) квантования. Модуль (310) квантования сконфигурирован для квантования координат для формирования квантованных позиций. Дополнительный модуль (312) удаления повторяющихся точек сконфигурирован для приема квантованных позиций и выполнения процесса фильтрации для идентификации и удаления повторяющихся точек. Модуль (330) кодирования октодерева сконфигурирован для приема отфильтрованных позиций от модуля удаления повторяющихся точек и выполнения процесса кодирования на основе октодерева для формирования последовательности кодов занятости, которые описывают трехмерную сетку вокселей. Коды занятости передаются в модуль (370) арифметического кодирования.
[0063] Модуль (320) передачи атрибутов сконфигурирован для приема атрибутов входного облака точек и выполнения процесса передачи атрибутов для определения значения атрибута для каждого вокселя, когда несколько значений атрибутов связаны с соответствующим вокселем. Процесс передачи атрибутов может выполняться для переупорядоченных точек, выводимых из модуля (330) кодирования октодерева. Атрибуты после операций передачи предоставляются модулю (350) предсказания атрибутов. Модуль (340) формирования LOD сконфигурирован для работы с переупорядоченными точками, выводимыми из модуля (330) кодирования октодерева, и реорганизации точек в разные уровни LOD. Информация LOD подается в модуль (350) предсказания атрибутов.
[0064] Модуль (350) предсказания атрибутов обрабатывает точки в соответствии с порядком на основе LOD, указанным информацией LOD из модуля (340) формирования LOD. Модуль (350) предсказания атрибутов формирует предсказание атрибута для текущей точки на основе реконструированных атрибутов набора соседних точек для текущей точки, сохраненных в памяти (390). Остатки предсказания впоследствии могут быть получены на основе исходных значений атрибутов, полученных от модуля (320) передачи атрибутов, и локально сформированных предсказаний атрибутов. Когда индексы кандидатов используются в процессе предсказания соответствующего атрибута, индекс, соответствующий выбранному кандидату предсказания, может быть предоставлен в модуль (370) арифметического кодирования.
[0065] Модуль (360) квантования остатка сконфигурирован для приема остатков предсказания от модуля (350) предсказания атрибутов и выполнения квантования для формирования квантованных остатков. Квантованные остатки подаются в модуль (370) арифметического кодирования.
[0066] Модуль (380) деквантования остатка сконфигурирован для приема квантованных остатков от модуля (360) квантования остатка и формирования реконструированных остатков предсказания путем выполнения операций, обратных операциям квантования, выполняемым в модуле (360) квантования остатка. Модуль (381) сложения сконфигурирован для приема реконструированных остатков предсказания из модуля (380) деквантования остатка и соответствующих предсказаний атрибутов из модуля (350) предсказания атрибутов. Путем объединения реконструированных остатков предсказания и предсказаний атрибутов, реконструированные значения атрибутов формируются и сохраняются в памяти (390).
[0067] Модуль (370) арифметического кодирования сконфигурирован для приема кодов занятости, индексов кандидатов (если используются), квантованных остатков (если сформированы) и другой информации, а также выполнения энтропийного кодирования для дальнейшего сжатия принятых значений или информации. В результате может быть сформирован сжатый битовый поток (302), переносящий сжатую информацию. Битовый поток (302) может быть передан или иным образом предоставлен декодеру, который декодирует сжатый битовый поток, или может быть сохранен в запоминающем устройстве. Битовый поток может относиться к последовательности битов, которая формирует представление кодированных кадров облака точек. Кодированный кадр облака точек может относиться к кодированному представлению кадра облака точек.
[0068] Фиг. 4 показывает пример декодера (400) в соответствии с вариантом осуществления изобретения. Декодер (400) может быть сконфигурирован для приема сжатого битового потока и выполнения декомпрессии данных облака точек для декомпрессии битового потока с формированием декодированных данных облака точек. В варианте осуществления изобретения декодер (400) может содержать модуль (410) арифметического декодирования, модуль (420) деквантования остатка, модуль (430) декодирования октодерева, модуль (440) формирования LOD, модуль (450) предсказания атрибутов и память (460) для хранения реконструированных значений атрибутов.
[0069] Как показано, сжатый битовый поток (401) может быть принят в модуле (410) арифметического декодирования. Модуль (410) арифметического декодирования сконфигурирован для декодирования сжатого битового потока (401) для получения квантованных остатков (если они сформированы) и кодов занятости облака точек. Модуль (430) декодирования октодерева сконфигурирован для определения реконструированных позиций точек в облаке точек в соответствии с кодами занятости. Модуль (440) формирования LOD сконфигурирован для реорганизации точек в разные уровни LOD на основе реконструированных позиций и определения порядка на основе LOD. Модуль (420) деквантования остатка сконфигурирован для формирования реконструированных остатков на основе квантованных остатков, принятых от модуля (410) арифметического декодирования.
[0070] Модуль (450) предсказания атрибутов сконфигурирован для выполнения процесса предсказания атрибутов, чтобы определять предсказания атрибутов для точек в соответствии с порядком на основе LOD. Например, предсказание атрибута текущей точки может быть определено на основе реконструированных значений атрибутов соседних точек для текущей точки, сохраненных в памяти (460). Модуль (450) предсказания атрибута может объединять предсказание атрибута с соответствующим реконструированным остатком, чтобы сформировать реконструированный атрибут для текущей точки.
[0071] Последовательность реконструированных атрибутов, сформированная модулем (450) предсказания атрибутов, вместе с реконструированными позициями, сформированными модулем (430) декодирования октодерева, соответствует декодированному облаку (402) точек, которое выводится из декодера (400) в одном из примеров. Кроме того, реконструированные атрибуты также сохраняются в памяти (460) и могут впоследствии использоваться для получения предсказаний атрибутов для последующих точек.
[0072] В различных вариантах осуществления изобретения кодер (300) и декодер (400) могут быть реализованы с помощью аппаратного обеспечения, программного обеспечения или их комбинации. Например, кодер (300) и декодер (400) могут быть реализованы с помощью схемы обработки, такой как одна или более интегральных схем (ИС), которые работают с программным обеспечением или без него, например специализированная интегральная схема (ASIC, application specific integrated circuit), вентильная матрица, программируемая пользователем (FPGA, field programmable gate array) и т.п. В другом примере кодер (300) и декодер (400) могут быть реализованы как программное обеспечение или встроенное программное обеспечение, включая инструкции, хранящиеся на постоянном (или энергонезависимом) машиночитаемом носителе данных. Инструкции при их исполнении схемой обработки, такой как один или более процессоров, заставляют схему обработки выполнять функции кодера (300) и декодера (400).
[0073] Следует отметить, что элементы в кодере (300) и декодере (400), сконфигурированные для реализации различных способов, раскрытых в данном описании, могут быть включены в другие декодеры или кодеры, которые могут иметь структуру, аналогичную структурам, показанным на фиг. 3 и фиг. 4, или отличную от них структуру. Кроме того, кодер (300) и декодер (400) могут быть включены в одно и то же устройство или отдельные устройства в различных примерах.
[0074] II. G-PCC в тестовой модели 13 (ТМС13)
[0075] G-PCC рассматривает сжатие облаков точек как Категории 1 (статические облака точек), так и Категории 3 (динамически полученные облака точек). Тестовая модель под названием ТМС13 была разработана Группой экспертов по движущимся изображениям (MPEG) в качестве основы для изучения потенциальных технологий кодирования облака точек. Модель ТМС13 отдельно сжимает геометрию и соответствующие атрибуты, такие как цвет или отражательная способность. Геометрия, которая представляет собой трехмерные координаты облаков точек, кодируется посредством разделения на основе октодерева. Затем атрибуты сжимаются на основе реконструированной геометрии с использованием способов предсказания и подъема (lifting).
[0076] 1. Разделение на основе октодерева и кодирование информации о занятости в текущей версии ТМС13
[0077] Равномерное разделение трехмерного куба приведет к созданию восьми подкубов и известно как разделение на основе октодерева (ОТ) при сжатии облака точек (РСС). Разделение ОТ напоминает разделение на основе бинарного дерева (ВТ) в одномерном пространстве и разделение на основе квадродерева (QT) в двумерном пространстве. Разделение ОТ проиллюстрировано на фиг. 5, где трехмерный куб (501), показанный сплошной линией, разделен на восемь меньших кубов одинакового размера, показанных пунктирной линией. Левые 4 кубика связаны с индексами 0-3, а правые 4 кубика связаны с индексами 4-7.
d
d
d
d
[0078] В ТМС13, если используется кодек геометрии октодерева, кодирование геометрии происходит следующим образом. Во-первых, кубический ограничивающий бокс В, выровненный по оси, определяется двумя точками (0,0,0) и (2, 2, 2), где 2определяет размер В, и d кодирован в битовом потоке. Предполагается, что все точки, которые необходимо сжать, находятся внутри заданного ограничивающего бокса В.
d-k
d-k
d-k
[0079] Затем строится структура октодерева путем рекурсивного разделения В. На каждом этапе куб разделяется на 8 подкубов. Размер подкуба после итеративного разделения k (k≤d) раз будет (2, 2, 2). Затем формируется 8-битовый код, а именно код занятости, путем связывания однобитового значения с каждым подкубом, чтобы указать, содержит ли он точки (то есть полный и имеет значение 1) или нет (то есть пустой и имеет значение 0). Только полные подкубы размером больше 1 (то есть не воксели) далее разделяются. Затем код занятости для каждого куба может быть сжат с помощью арифметического кодера.
[0080] Процесс декодирования начинается со считывания из битового потока размеров ограничивающего бокса В. Та же самая структура октодерева затем строится путем разделения В в соответствии с декодированными кодами занятости. Пример двухуровневого разделения ОТ и соответствующих кодов занятости показан на фиг. 6, где темные кубики и узлы указывают на то, что они заняты точками.
[0081] Как показано, куб (601) разделен на 8 подкубов. С помощью того же способа индексации, что и на фиг. 5, каждый из 0-го и 7-го подкубов дополнительно разделен на 8 подкубов. Октодерево (610), соответствующее разделениям куба (601), включает корневой узел (611) на первом уровне. Корневой узел (611) разделен на 8 дочерних узлов, которые могут быть проиндексированы от 0 до 7. Узлы 0 и 7 (612-613) на втором уровне дополнительно разделены на 16 дочерних узлов. Уровень узла в октодереве (610) может соответствовать количеству скачков от корня до соответствующего узла и может называться глубиной октодерева (610). Глубины 0-2, соответствующие уровням октодерева (610) с первого по третий, указаны на фиг. 6.
[0082] 2. Кодирование кодов занятости
[0083] Код занятости каждого узла может быть сжат с помощью арифметического кодера. Код занятости может быть обозначен как S, который представляет собой 8-биновое целое число, при этом каждый бин в S указывает состояние занятости каждого дочернего узла. В ТМС13 существует два способа кодирования кода занятости, а именно способы побитового кодирования и побайтного кодирования, причем побитовое кодирование включено по умолчанию. В любом случае для кодирования кода занятости выполняется арифметическое кодирование с контекстным моделированием, при этом состояние контекста инициализируется в начале всего процесса кодирования и обновляется во время процесса кодирования.
[0084] Для побитового кодирования восемь бинов в S кодируются в определенном порядке, где каждый бин кодируется путем ссылки на состояние занятости соседних узлов и дочерних узлов соседних узлов, при этом соседние узлы находятся на одном уровне текущего узла.
[0085] Для побайтного кодирования S кодируется путем обращения к адаптивной поисковой таблице (A-LUT, adaptive look up table), которая отслеживает N (например, 32) наиболее частых кодов занятости, и к кэш-памяти, которая отслеживает последние различные наблюдаемые М (например, 16) кодов занятости.
[0086] Кодируется двоичный флаг, указывающий, находится ли S в таблице А-LUT или нет. Если S находится в таблице A-LUT, индекс в таблице A-LUT кодируется с помощью двоичного арифметического кодера. Если S отсутствует в таблице A-LUT, то кодируется двоичный флаг, указывающий, находится ли S в кэше или нет. Если S находится в кэше, то двоичное представление его индекса в кэше кодируется с помощью двоичного арифметического кодера. В противном случае, если S отсутствует в кэше, двоичное представление S кодируется с помощью двоичного арифметического кодера.
[0087] Процесс декодирования начинается с анализа размеров ограничивающего бокса В из битового потока. Такая же структура октодерева затем строится путем разделения В в соответствии с декодированными кодами занятости.
[0088] III Неявное геометрическое разделение для кодирования облака точек
[0089] 1. Проблема
[0090] В проекте ТМС13 ограничивающий бокс может быть только кубом В, который имеет одинаковый размер для всех измерений, и выполняется разделение ОТ для полных подкубов в каждом узле, при этом подкубы уменьшаются вдвое во всех измерениях. Разделение ОТ выполняется рекурсивно до тех пор, пока размер подкубов не достигнет единицы или пока в подкубах не останется точек. Однако этот способ не эффективен для всех случаев, особенно когда точки неравномерно распределены в трехмерной сцене. Одним из крайних случаев может быть двумерная плоскость в трехмерном пространстве, в которой все точки расположены в плоскости ху, а отклонение по оси z равно нулю. В этом случае разделение ОТ, выполняемое на кубе В в качестве начальной точки, приведет к трате большого количества битов на представление информации о занятости в направлении z, что является избыточным и бесполезным. В реальных приложениях наихудший случай может встречаться нечасто, однако облако точек обычно имеет асимметричный ограничивающий бокс, который имеет меньшую длину в некоторых измерениях.
[0091] Как показано на фиг. 7, последовательность облака точек с названием ford_01_voxlmm, используемая для тестирования в MPEG-PCC, имеет основные компоненты в направлениях х и у. Фактически, многие данные облака точек, сформированные датчиком лидара, имеют такие же характеристики.
[0092] 2. Неявные разделения QT и ВТ
[0093] Аспекты изобретения предоставляют варианты осуществления изобретения, касающиеся разделения ограничивающего бокса в виде прямоугольного параллелепипеда, где куб или узел во время разделения могут быть неявно определены как разделяемые посредством разделения QT или ВТ, вместо всегда применяемого разделения ОТ. Биты занятости, указывающие информацию о занятости, могут быть сохранены на основе неявных разделений QT и ВТ.
[0094] Для ограничивающего бокса, который может не быть идеальным кубом, в некоторых случаях узлы на разных уровнях могут не быть (или не могут быть) разделены во всех направлениях. Если разделение выполняется во всех трех направлениях, то такое разделение представляет собой типичное разделение ОТ. Если разделение выполняется в двух направлениях из трех, то это разделение QT в трехмерном пространстве. Если разделение выполняется только в одном направлении, тогда разделение является разделением ВТ в трехмерном пространстве. Примеры разделений QT и ВТ в трехмерном пространстве показаны на фиг. 8 и фиг. 9, соответственно. Для демонстрации на чертежах показаны разделения QT и ВТ идеального куба, но следует отметить, что разделение может осуществляться на основе любого обычного прямоугольного параллелепипеда, образующего ограничивающий бокс.
[0095] На фиг. 8 показаны три куба (801-803), разделенные вдоль осей (или направлений) х-у, x-z и y-z, соответственно. Подузлам в каждом кубе (801-803) назначаются индексы, которые являются подмножеством 8 индексов для индексации 8 дочерних узлов при разделении ОТ в примере на фиг. 5. С назначенными индексами, разделения QT с тремя различными направлениями могут быть представлены с использованием кодов занятости в структуре октодерева. Например, код занятости, представляющий разделение QT вдоль осей х-у до куба (801), может принимать форму х0х0х0х0, где бит в позиции х может использоваться для указания состояния занятости (например, может принимать значение 1 или 0). Точно так же код занятости, представляющий разделение QT вдоль осей x-z до куба (802), может принимать форму хх00хх00, в то время как код занятости, представляющий разделение QT вдоль осей y-z до куба (803), может принимать форму хххх0000. Как показано, эти индексы, назначенные подкубам, также указывают позиции битов, соответствующих полученным в результате подузлам, в 8-битовом коде занятости.
[0096] На фиг. 9 показаны три куба (901-903), разделенные вдоль осей х, у и z, соответственно. Как и на фиг. 8, подузлам в каждом кубе (901-903) назначаются индексы, соответствующие позициям в коде занятости.
[0097] Когда выполняются заранее заданные условия, разделения QT и ВТ могут выполняться неявно. «Неявно» означает, что не требуется никаких дополнительных битов сигнализации для указания на то, что разделение QT или ВТ используется вместо разделения ОТ. Декодер может определять тип (например, разделение QT или ВТ) и направление разделения таким же образом, что и кодер, на основе заранее заданных условий. Более того, могут быть сохранены биты на основе неявного разделения QT или ВТ в сравнении с разделением ОТ при сигнализации информации о занятости каждого подузла. QT требует четыре бита вместо восьми, чтобы представить состояние занятости четырех подузлов, в то время как ВТ требует только два бита. Например, как показано на фиг. 8-9, биты в коде занятости, соответствующие индексам, назначенным подузлам, могут сигнализироваться, в то время как другие биты в коде занятости, не относящиеся к подузлам, могут быть пропущены (не сигнализируются). Таким образом, код занятости может включать пропущенные биты и сигнализированные биты, когда вводятся разделения QT и ВТ.
[0098] Следует отметить, что разделения QT и ВТ могут быть реализованы в одной и той же структуре разделения ОТ. Выбор контекста на основе соседних кодированных кубов и энтропийного кодера может применяться аналогичным образом. Контекстное моделирование кода занятости на основе QT или ВТ может быть изменено в соответствии с асимметричной формой подузлов.
[0099] Кодирование кодов занятости неявных разделений QT и ВТ может быть таким, как в следующих примерах. Во-первых, можно предположить, что код занятости ОТ кодирован в порядке индексов, как показано на фиг. 5. Затем, как показано на крайнем левом графике на фиг. 8 (куб (801)), код занятости разделения QT вдоль осей х-у можно кодировать, опуская биты в позициях 1, 3, 5 и 7, поскольку в декодере может быть сделан вывод, что они равны 0, при этом сигнализируются только биты в позициях 0, 2, 4 и 6. Точно так же для ВТ вдоль оси х, как показано на крайнем левом графике фиг. 9 (куб (901)), информация о занятости в позициях 0 и 4 может сигнализироваться, а об остальных шести битах может быть сделан вывод, что они равны 0.
x
y
z
[00100] Кроме того, текущая версия ТМС13 имеет специальный режим для кодирования геометрии, который является прямым режимом (DM, direct mode) и позволяет кодировать позиции (х, у, z) в подузле напрямую без дополнительных разделений. Например, позиции являются относительными позициями относительно исходной точки текущего подузла с кодированием кодами фиксированной длины, где длина в битах определяется размером текущего подузла. Поскольку неявное разделение может привести к подузлам с неравными размерами в измерениях (х, у, z), режим DM может быть изменен соответствующим образом. Например, если подузел размером  должен кодироваться в режиме DM, относительные положения каждой точки в подузлах кодируются посредством кодирования кодами фиксированной длины с использованием (d, d, d) битов, соответственно.
[00101] 3. Сигнализация ограничивающего бокса в виде прямоугольного параллелепипеда
x
y
z
x
y
z
[00102] Во-первых, ограничивающий бокс В не ограничен тем, чтобы иметь одинаковый размер во всех направлениях, вместо этого ограничивающий бокс может быть прямоугольным параллелепипедом произвольного размера, чтобы лучше соответствовать форме трехмерной сцены или объектов. В различных вариантах осуществления изобретения размер ограничивающего бокса В может быть представлен как степень двойки, то есть . Значения d, d и d упоминаются как значения log2 размеров ограничивающего бокса. Заметим, что d, d, d не считаются равными и могут сигнализироваться отдельно в заголовке последовательности (например, в наборе параметров последовательности (SPS)) или заголовке слайса битового потока.
[00103] Кроме того, стоит отметить, что размер ограничивающего бокса В может быть любым положительным числом без ограничения быть степенью двойки. На фиг. 7 показан пример ограничивающего бокса в виде прямоугольного параллелепипеда, заключающего сцену, где направление z имеет наименьший размер.
[00104] В разделе III подробного описания вариантов осуществления изобретения показано, что некоторые варианты осуществления изобретения представляют собой изменения спецификаций стандарта проекта для сжатия облака точек на основе геометрии, ISG / IEC 23090-9: 2019 (Е), этап WD, ISG / IEC JTC 1 / SC 29 / WG 1 1 W18179, март 2019 г.
[00105] Вариант А осуществления изобретения
[00106] В одном варианте осуществления изобретения размеры ограничивающего бокса в трех измерениях могут сигнализироваться в заголовке геометрического слайса в виде log2, как показано в таблице 1. Заголовок геометрического слайса может включать синтаксические элементы, применяемые к слайсу. Как правило, слайс может относиться к последовательности синтаксических элементов, представляющих часть кодированного кадра или весь кодированный кадр облака точек. Точки слайса могут содержаться в ограничивающем боксе, соответствующем слайсу.
[00107] Синтаксис заголовка геометрического слайса в таблице 1 изменен путем добавления следующих синтаксических элементов в строках 10-12:
[00108] gsh_log2_max_nodesize_x задает размер ограничивающего бокса в измерении х, то есть MaxNodesizeX, который используется в процессе декодирования следующим образом:
gsh
log2
max
nodesize
x
MaxNodeSizeX=2----.
MaxNodeSizeLog2X=gsh_log2_max_nodesize_x.
[00109] gsh_log2_max_nodesize_y задает размер ограничивающего бокса в измерении у, то есть MaxNodesizeY, который используется в процессе декодирования следующим образом:
gsh
log2
max
nodesize_y
MaxNodeSizeY=2---.
MaxNodeSizeLog2Y=gsh_log2_max_nodesize_y.
[00110] gsh_log2_max_nodesize_z задает размер ограничивающего бокса в измерении z, то есть MaxNodesizeZ, который используется в процессе декодирования следующим образом:
gsh_log2_max_nodesize_z
MaxNodeSizeZ=2.
MaxNodeSizeLog2Z=gsh_log2_max_nodesize_z.
[00111] Вариант В осуществления изобретения
[00112] В другом варианте осуществления изобретения размеры в трех измерениях могут сигнализироваться в заголовке геометрического слайса в виде log2. Вместо того чтобы сигнализировать три значения независимо, можно сигнализировать их разность следующим образом.
[00113] Синтаксис заголовка геометрического слайса в таблице 2 изменен путем добавления следующих синтаксических элементов в строках 10-12:
[00114] gsh_log2_max_nodesize_x задает размер ограничивающего бокса в измерении х, то есть MaxNodesizeX, который используется в процессе декодирования следующим образом:
gsh
log2
max
nodesize
x
MaxNodeSizeX=2----.
MaxNodeSizeLog2X=gsh_log2_max_nodesize_x.
[00115] gsh_log2_max_nodesize_y_minus_x задает размер ограничивающего бокса в измерении у, то есть MaxNodesizeY, который используется в процессе декодирования следующим образом:
gsh_log2_max_nodesize_y_minus_x+gsh_log2_max_nodesize_x
MaxNodeSizeY=2.
MaxNodeSizeLog2Y=gsh_log2_max_nodesize_y_minus_x+gsh_log2_max_nodesize_x.
[00116] gsh_iog2_max_nodesize_z_minus_у задает размер ограничивающего бокса в измерении z, то есть MaxNodesizeZ, который используется в процессе декодирования следующим образом:
gsh_log2_max_nodesize_z_minus_y+MaxNodeSizeLog2Y
MaxNodeSizeZ=2.
MaxNodeSizeLog2Z=gsh_log2_max_nodesize_z_minus_y+MaxNodeSizeLog2Y.
[00117] Вариант С осуществления изобретения
[00118] В другом варианте осуществления изобретения размеры в трех измерениях могут сигнализироваться в заголовке геометрического слайса с помощью их декартовых положений следующим образом.
[00119] Синтаксис заголовка геометрического слайса в таблице 3 изменен путем добавления следующих синтаксических элементов в строках 10-12:
[00120] gsh_max_nodesize_x задает размер ограничивающего бокса в измерении х, то есть MaxNodeSizeX, который используется в процессе декодирования следующим образом:
MaxNodeSizeX=gsh_max_nodesize_x,
MaxNodeSizeLog2X=ilog2(MaxNodeSizeX),
где ilog2(v) вычисляет наименьшее целое число, которое больше или равно log2(v).
[00121] gsh_max_nodesize_y задает размер ограничивающего бокса в измерении у, то есть MaxNodeSizeY, который используется в процессе декодирования следующим образом:
MaxNodeSizeY=gsh_max_nodesize_y.
MaxNodeSizeLog2Y=ilog2 (MaxNodeSizeY).
[00122] gsh_max_nodesize_z задает размер ограничивающего бокса в измерении z, то есть MaxNodeSizeZ, который используется в процессе декодирования следующим образом:
MaxNodeSizeZ=gsh_max_nodesize_z.
MaxNodeSizeLog2Z=ilog2(MaxNodeSizeZ).
[00123] Вариант D осуществления изобретения
[00124] В другом варианте осуществления изобретения размеры в трех измерениях могут сигнализироваться в заголовке геометрического слайса с помощью их декартовых положений за вычетом единицы следующим образом.
[00125] Синтаксис заголовка геометрического слайса в таблице 4 изменен путем добавления следующих синтаксических элементов в строках 10-12:
[00126] gsh_max_nodesize_x_minus_one задает размер ограничивающего бокса в измерении х, то есть MaxNodeSizeX, который используется в процессе декодирования следующим образом:
MaxNodeSizeX=gsh_max_nodesize_x_minus_one + 1.
MaxNodeSizeLog2X=ilog2(MaxNodeSizeX).
[00127] gsh_max_nodesize_y_mimis_one задает размер ограничивающего бокса в измерении у, то есть MaxNodeSizeY, который используется в процессе декодирования следующим образом:
MaxNodeSizeY=gsh_max_nodesize_y_minus_one + 1.
MaxNodeSizeLog2Y=ilog2 (MaxNodeSizeY).
[00128] gsh_max_nodesize_z_minus_one задает размер ограничивающего бокса в измерении z, то есть MaxNodeSizeZ, который используется в процессе декодирования следующим образом:
MaxNodeSizeZ=gsh_max_nodesize_z_minus_one + 1.
MaxNodeSizeLog2Z=ilog2(MaxNodeSizeZ).
[00129] Вариант E осуществления изобретения
[00130] В другом варианте осуществления изобретения только одно измерение из трех позволяет иметь различные размеры. В этом случае размеры в измерениях х и у одинаковы, а размер в измерении z может быть другим, поэтому в заголовке геометрического слайса в виде log2 указываются два значения, как показано ниже.
[00131] Синтаксис заголовка геометрического слайса в таблице 5 изменен путем добавления следующих синтаксических элементов в строках 10-11:
[00132] gsh_log2_max_nodesize_x_y задает размер ограничивающего бокса в измерениях х и у, то есть MaxNodesizeX и MaxNodesizeY, которые используются в процессе декодирования следующим образом:
gsh
log2
max
nodesize
x_y
MaxNodeSizeX=MaxNodeSizeY=2----.
MaxNodeSizeLog2X=MaxNodeSizeLog2Y=gsh_log2_max_nodesize_x_y.
[00133] gsh_log2_max_nodesize_z задает размер ограничивающего бокса в измерении z, то есть MaxNodesizeZ, который используется в процессе декодирования следующим образом:
gsh
log2
max
nodesize
z
MaxNodeSizeZ=2----.
MaxNodeSizeLog2Z=gsh_log2_max_nodesize_z.
[00134] Вариант F осуществления изобретения
[00135] В другом варианте осуществления изобретения только одно измерение из трех позволяет иметь различные размеры. В этом случае размеры в измерениях х и у одинаковы, а размер в измерении z может быть другим, поэтому в заголовке геометрического слайса указываются два значения в виде log2. Вместо того чтобы сигнализировать два значения независимо, можно сигнализировать их разность следующим образом.
[00136] Синтаксис заголовка геометрического слайса в таблице 6 изменен путем добавления следующих синтаксических элементов в строках 10-11:
[00137] gsh_log2_max_nodesize_x_y задает размер ограничивающего бокса в измерениях х и у, то есть MaxNodesizeX и MaxNodesizeY, которые используются в процессе декодирования следующим образом:
[00138] gsh_log2_max_nodesize_z_minus_xy задает размер ограничивающего бокса в измерении z, то есть MaxNodesizeZ, который используется в процессе декодирования следующим образом:
[00139] Вариант G осуществления изобретения
[00140] В другом варианте осуществления изобретения только одно измерение из трех позволяет иметь различные размеры. В этом случае размеры в измерениях х и у одинаковы, а размер в измерении z может быть другим, поэтому два значения сигнализируются в заголовке геометрического слайса с помощью их декартовых положений следующим образом.
[00141] Синтаксис заголовка геометрического слайса в таблице 7 изменен путем добавления следующих синтаксических элементов в строках 10-11:
[00142] gsh_max_nodesize_x_y задает размер ограничивающего бокса в измерениях х и у, то есть MaxNodesizeX и MaxNodesizeY, которые используются в процессе декодирования следующим образом:
MaxNodeSizeX=MaxNodeSizeY=gsh_max_nodesize_x_y.
MaxNodeSizeLog2X=MaxNodeSizeLog2Y=ilog2(gsh_max_nodesize_x_y).
[00143] gshmaxnodesizez задает размер ограничивающего бокса в измерении z, то есть MaxNodeSizeZ, который используется в процессе декодирования следующим образом:
MaxNodeSizeZ=gsh_max_nodesize_z.
MaxNodeSizeLog2Z=ilog2(gsh_max_nodesize_z).
[00144] Вариант H осуществления изобретения
[00145] В другом варианте осуществления изобретения только одно измерение из трех позволяет иметь различные размеры. В этом случае размеры в измерениях х и у одинаковы, а размер в измерении z может быть другим, поэтому два значения сигнализируются в заголовке геометрического слайса с помощью их декартовых положений за вычетом единицы, как показано ниже.
[00146] Синтаксис заголовка геометрического слайса в таблице 8 изменен путем добавления следующих синтаксических элементов в строках 10-11:
[00147] gsh_max_nodesize_x_y_minus_one задает размер ограничивающего бокса в измерениях х и у, то есть MaxNodesizeX и MaxNodesizeY, которые используются в процессе декодирования следующим образом:
MaxNodeSizeX=MaxNodeSizeY=gsh_max_nodesize_x_y_minus_one + 1.
MaxNodeSizeLog2X=MaxNodeSizeLog2Y=
ilog2(gsh_max_nodesize_x_y_minus_one + 1).
[00148] gsh_max_nodesize_z_minus_one задает размер ограничивающего бокса в размерности z, то есть MaxNodeSizeZ, который используется в процессе декодирования следующим образом:
MaxNodeSizeZ=gsh_max_nodesize_z_minus_one + 1.
MaxNodeSizeLog2Z=ilog2(gsh_max_nodesize_z_minus_one + 1).
[00149] 4. Сигнализация неявного разделения QT и ВТ
[00150] Вариант А осуществления изобретения
[00151] В одном варианте осуществления изобретения синтаксис кодирования геометрии выглядит следующим образом.
[00152] Синтаксис данных геометрического слайса в таблице 9 изменен путем добавления или изменения синтаксических элементов в строках 3-14. В строке 14 добавлены новые переменные depthX, depthY, depthZ и partitionSkip в качестве входных данных для функции geometry node.
[00153] Переменные NodeX[depthX][nodeldx], NodeY[depthY][nodeldx] и NodeZ[depthZ] [nodeldx] представляют координаты x, у и z узла nodeldx в порядке декодирования на заданной глубине. Переменная NumNodesAtDepth[глубина] представляет количество узлов, которые должны быть декодированы на заданной глубине. Переменные depthX, depthY и depthZ задают глубину в измерениях х, у и z, соответственно.
[00154] Переменная partitionSkip указывает тип и направление разделения в таблице ниже (таблица 10).
x
y
z
x
[00155] Переменная partitionSkip представлена в двоичной форме тремя битами bbb, которые определяют, следует ли пропускать разделение в измерениях х, у и z соответственно. Например, b=1 указывает на отсутствие разделения в измерении х (разделение пропускается). Тип и направление разделения могут определяться конкретными условиями.
[00156] Синтаксис геометрического узла в таблице 11 изменен путем добавления или изменения строк 0, 4, 8, 11-12 и 24-33. В строке 0 вводятся новые входные переменные depthX, depthY, depthZ и partitionSkip для облегчения разделения QT и ВТ. В строке 12 условие проверки того, был ли достигнут минимальный размер узла, изменено на основе оценки трех измерений, поскольку размеры узлов в разных измерениях могут быть разными, когда применяются разделения QT и ВТ.
[00157] Синтаксическая структура в строках 24-33 описывает синтаксические элементы трехмерных координат точки в дочернем узле, обработанном с помощью DM. Переменные ChildNodeSizeLog2X, ChildNodeSizeLog2Y и ChildNodeSizeLog2Z задают размер дочернего узла для каждого измерения и могут быть определены неявными разделениями QT и ВТ следующим образом:
[00158] В вышеупомянутом процессе, если разделение происходит в одном из измерений, значение log2 размера дочернего узла в этом измерении будет равно значению log2 размера узла в этом измерении минус 1.
[00159] В строке 4 синтаксический элемент occupancy_idx идентифицирует индекс единственного занятого дочернего элемента текущего узла в порядке обхода дочернего узла геометрии октодерева. Если переменная OccupancyMap присутствует, она может быть получена следующим образом:
[00160] Соответствующий процесс анализа occupancy_idx описан ниже.
Входными данными для этого процесса является переменная partitionSkip текущего узла.
Выходными данными для этого процесса является значение синтаксического элемента occupancy_idx, построенного следующим образом:
[00161] В приведенном выше способе, для разделения QT или ВТ сигнализируют только бит(ы), связанный(е) с измерением(ями), где произошло разделение. Таким образом, сигнализируют меньшее количество битов, чем при разделении ОТ, чтобы указать позицию одного дочернего узла в коде занятости. Составной побитовый оператор ИЛИ | = «set» (установить в 1) устанавливает определенные биты в переменной occupancy_idx.
[00162] В строке 8 синтаксический элемент occupancy_map является битовой картой, которая идентифицирует занятые дочерние узлы текущего узла. При ее наличии, переменная OccupancyMap устанавливается равной выходным данным процесса перестановки геометрической карты занятости при вызове с переменными NeighbourPattern и occupancy map в качестве входных данных. NeighbourPattern (соседний шаблон) - это шаблон занятости соседнего окружения для контекстного моделирования. Как описано со ссылкой на фиг. 8-9, бины в коде занятости могут быть пропущены при сигнализации для разделения QT или ВТ. Четыре бина могут быть пропущены для разделения QT, и 6 бинов могут быть пропущены для разделения ВТ. Соответственно, в декодере может быть сделан вывод, что биты в этих позициях пропущенных битов в коде занятости равны 0.
[00163] Соответствующий процесс анализа занятости геометрического октодерева может быть описан следующим образом, где о некоторых битах сделан вывод, что они равны нулю, на основе переменной partitionSkip, которая указывает тип разделения и направление разделения с использованием переменной binIsSkiped [binIdx].
Этот процесс реконструирует синтаксический элемент occupancy_map.
Входными данными для этого процесса являются NeighbourPattern, binIsSkiped и binlslnferred текущего узла. Выходными данными для этого процесса является значение синтаксического элемента, построенное следующим образом:
где переменная binIsSkiped[binIdx] устанавливается следующим образом:
переменная bitCodingOrder[i] определена в таблице ниже:
переменная inverseMap [i] [j] определена в таблицах ниже (см. таблицы 13-14):
[00164] Вариант В осуществления изобретения
[00165] В другом варианте осуществления изобретения только одно измерение из трех позволяет иметь различные размеры. В этом случае, если это измерение имеет больший размер, чем два других, выполняются только неявные разделения ВТ в этом измерении. Если это измерение имеет меньший размер, чем два других, выполняются только неявные разделения QT в двух других измерениях. Сигнализация неявного разделения ВТ или неявного разделения QT в этом варианте осуществления изобретения аналогична сигнализации, описанной в предыдущем варианте осуществления изобретения.
[00166] Вариант С осуществления изобретения
[00167] Для задания конкретных условий неявных разделений QT и ВТ могут быть определены параметры. Эти параметры могут быть либо фиксированными для кодера и декодера (и принимать заранее локально сконфигурированное значение, такое как значение по умолчанию), либо могут сигнализироваться в заголовке битового потока для обеспечения оптимизации на уровне последовательности или на уровне слайса. Варианты C-G осуществления изобретения описаны ниже, чтобы показать, как сигнализируются или конфигурируются параметры, полезные для задания условий неявных разделений QT и ВТ.
[00168] В варианте С осуществления изобретения сигнализируются параметры, которые могут быть либо в последовательности, либо в заголовке слайса, как показано ниже.
[00169] Синтаксис набора параметров геометрии в таблице 15 изменен путем добавления синтаксических элементов для параметров сигнализации для управления разделениями QT и ВТ в строках 13-15.
[00170] gps_max_num_implicit_qtbt_before_ot задает максимальное количество неявных разделений QT и ВТ перед разделениями ОТ, которое обозначено K.
[00171] gps_min_size_implicit_qtbt указывает минимальный размер неявных разделений QT и ВТ, который обозначен М. Этот параметр предотвращает неявные разделения QT и ВТ, когда все размеры текущего узла меньше или равны М.
[00172] gps_implicit_bt_before_implicit_qt_flag задает приоритет неявных разделений QT и ВТ, который обозначен BTFirst. Если BTFirst=1, неявные разделения ВТ выполняются перед неявными разделениями QT. Если BTFirst=0, неявные разделения QT выполняются перед неявными разделениями ВТ.
[00173] Вариант D осуществления изобретения
[00174] В другом варианте осуществления изобретения часть параметров сигнализируется либо в заголовке последовательности, либо в заголовке слайса, в то время как остальные параметры являются фиксированными. В следующем примере М и BTFirst фиксированы, а K сигнализируется с помощью gps_max_num_implicit_qtbt_before_ot.
[00175] Синтаксис набора параметров геометрии в таблице 16 изменен путем добавления синтаксического элемента для сигнализации параметра для управления разделениями QT и ВТ в строке 13.
[00176] gps_max_num_implicit_qtbt_before_ot указывает максимальное количество неявных разделений QT и ВТ перед разделениями ОТ. В этом случае другие параметры являются фиксированными и, следовательно, не сигнализируются в битовом потоке, например, М всегда 0, a. BTFirst всегда 1.
[00177] Вариант Е осуществления изобретения
[00178] В другом варианте осуществления изобретения K и BTFirst фиксированы, а М сигнализируется посредством gps_min_size_implicit_qtbt, как показано ниже.
[00179] Синтаксис набора параметров геометрии в таблице 17 изменен путем добавления синтаксического элемента для сигнализации параметра для управления разделениями QT и ВТ в строке 13.
[00180] gps_min_size_implicit_qtbt задает минимальный размер неявных разделений QT и ВТ, то есть М. Этот параметр предотвращает неявные разделения QT и ВТ, когда все размеры меньше или равны М. В этом случае другие параметры фиксированы и, следовательно, не сигнализируются в битовом потоке, например, K всегда 0, a BTFirst всегда 1.
[00181] Вариант F осуществления изобретения
[00182] В другом варианте осуществления изобретения сигнализация параметров для неявного разделения зависит от других синтаксических структур. В приведенном ниже примере сигнализация параметров для неявного разделения зависит от log2_trisoup_node_size следующим образом.
[00183] Синтаксис набора параметров геометрии в таблице 18 изменен путем добавления синтаксической структуры для сигнализации параметра для управления разделениями QT и ВТ в строках 13-15.
[00184] gps_max_num_implicit_qtbt_before_ot указывает максимальное количество неявных разделений QT и ВТ перед разделениями ОТ, которое равно K. В этом случае gps_max_num_implicit_qtbt_before_ot сигнализируется, только если значение log2_trisoup_node_size равно нулю. Если значение log2_trisoup_node_size не равно нулю, параметр K будет установлен на максимальное значение по умолчанию. Другие параметры являются фиксированными и поэтому не сигнализируются в битовом потоке, например, М всегда 0, a. BTFirst всегда 1.
[00185] Вариант G осуществления изобретения
[00186] В другом варианте осуществления изобретения ни один из этих параметров для неявного разделения не сигнализируется, и все параметры могут быть фиксированными. Например, фиксированы параметры K=3, М=0 и BTFirst=1.
[00187] 5. Условия для неявных разделений QT и ВТ
[00188] Варианты осуществления различных условий для неявных разделений QT и ВТ описаны в следующих подразделах. Используя различные параметры управления и устанавливая различные условия, можно осуществлять различные способы или схемы разделения.
[00189] 5.1 Выполнение неявных разделений QT и ВТ после ОТ
[00190] В первой схеме разделения ОТ выполняются полностью до тех пор, пока для некоторых измерений не могут быть далее выполнены разделения. Следовательно, условием для выполнения неявных разделений QT и ВТ в этой схеме является то, что одно или два измерения достигают наименьшей единицы разделения (то есть одного вокселя).
[00191] В частности, тип и направление разделения могут быть определены согласно таблице 19 или таблице 20. Параметр BTFirst приоритета либо фиксирован, либо задан посредством gps_implicit_bt_before_implicit_qt_flag. Если BTFirst = 1, неявные разделения ВТ имеют более высокий приоритет и будут выполняться перед неявными разделениями QT, и в этом случае применяется таблица 19. Если BTFirst = 0, неявные разделения QT имеют более высокий приоритет и будут выполняться перед неявными разделениями ВТ, и в этом случае применяется таблица 20. Если ни одно из условий, перечисленных в таблицах, не выполнено, осуществляется разделение QT.
x
y
z
[00192] Пусть ограничивающий бокс В имеет размер . Без потери общности можно предположить, что 0<d≤d≤d. Ниже описаны два варианта осуществления изобретения.
x
z
y
y
x
[00193] В одном варианте осуществления изобретения параметр BTFirst=1 либо фиксирован, либо задан с помощью gps_implicit_bt_before_implicit_qt_flag, что указывает на то, что неявные разделения ВТ имеют более высокий приоритет и будут выполняться перед неявными разделениями QT, и применяется таблица 19. В этом варианте осуществления изобретения разделения ОТ могут выполняться на первых глубинах d разделения. После разделений ОТ подузлы будут иметь форму . Затем неявные разделения ВТ будут выполнены вдоль оси z на следующих глубинах d - d. После неявных разделений ВТ форма подузлов будет иметь вид , а затем неявные разделения QT выполняются вдоль осей y-z на последних глубинах d - d, пока не будут достигнуты листовые узлы.
x
y
x
z
y
[00194] В другом варианте осуществления изобретения параметр BTFirst=0 либо фиксирован, либо задан с помощью gps_implicit_bt_before_implicit_qt_flag, что указывает на то, что неявные разделения QT имеют более высокий приоритет и будут выполняться перед неявными разделениями ВТ, и применяется таблица 20. В этом варианте осуществления изобретения разделения ОТ будут выполняться на первой глубине d разделения. После разделений ОТ подузлы будут иметь форму . Затем неявные разделения QT могут выполняться вдоль осей y-z на следующих глубинах d - d. После неявных разделений QT форма подузлов будет , а затем неявные разделения ВТ выполняются вдоль оси z на последних глубинах d - d до достижения листовых узлов.
[00195] 5.2 Выполнение неявных разделений QT и ВТ перед ОТ
[00196] Вторая схема состоит в выполнении неявных разделений QT и ВТ перед любым разделением ОТ, чтобы подузлы имели кубическую форму. Следовательно, в этом случае условие состоит в том, чтобы одно или два измерения имели меньшие размеры, чем наибольшее измерение.
[00197] В частности, тип и направление разделения могут быть определены согласно таблице 21 или таблице 22. Параметр приоритета BTFirst либо фиксирован, либо задан посредством gps_implicit_bt_before_implicit_qt_flag. Если BTFirst = 1, неявные разделения ВТ имеют более высокий приоритет и будут выполняться перед неявными разделениями QT, и применяется таблица 21. Если BTFirst = 0, неявные разделения QT имеют более высокий приоритет и будут выполняться перед неявными разделениями ВТ, и применяется таблица 22. Если ни одно из условий, перечисленных в таблицах, не выполнено, осуществляется разделение ОТ.
x
y
z
[00198] Пусть ограничивающий бокс В имеет размер  Без ограничения общности можно считать, что 0<d≤d≤d. Ниже описаны два варианта осуществления изобретения.
z
y
y
x
x
[00199] В одном варианте осуществления изобретения параметр BTFirst = 1 либо фиксирован, либо задан с помощью gps_implicit_bt_before_implicit_qt_flag, что указывает на то, что неявные разделения ВТ имеют более высокий приоритет и будут выполняться перед неявными разделениями QT, и применяется таблица 21. В этом варианте осуществления изобретения неявные разделения ВТ будут выполняться вдоль оси z на первых глубинах d - d, а затем неявные разделения QT будут выполняться вдоль осей y-z на следующих глубинах d - d. После неявных разделений QT и ВТ размер всех подузлов будет , и разделения ОТ выполняются d раз для достижения листовых узлов.
y
x
z
y
x
[00200] В другом варианте осуществления изобретения параметр BTFirst=0 либо фиксирован, либо задан с помощью gps_implicit_bt_before_implicit_qt_flag, что указывает на то, что неявные разделения QT имеют более высокий приоритет и будут выполняться перед неявными разделениями ВТ, и применяется таблица 22. В этом варианте осуществления изобретения неявные разделения QT будут выполняться вдоль осей y-z на первых глубинах d - d, а затем неявные разделения ВТ будут выполняться вдоль оси z на следующих глубинах d - d. После неявных разделений QT и ВТ размер всех подузлов будет , и разделения ОТ выполняются d раз до достижения листовых узлов.
[00201] 5.3 Гибридная схема неявных разделений QT и ВТ
x
y
z
x
y
z
x
y
z
x
y
z
[00202] Третья схема представляет собой комбинацию схемы из разделов III.5.1 и III.5.3. В этом случае порог K (0≤K≤max(d, d, d) - min(d, d, d)) задает максимальное количество неявных разделений QT и ВТ, которые могут быть выполнены перед разделениями ОТ. Эта схема является обобщением первых двух схем, она вырождается в схему из раздела III 5.1, когда K=0, и вырождается в схему из раздела III.5.2, когда K=max(d, d, d) - min(d, d, d).
[00203] В частности, на первых K глубинах разделения решения для типа и направления разделения следуют условиям, заданным в таблице 21 или 22, после этого следует таблица 19 или таблица 20. Параметр K либо фиксирован, либо задан с помощью gps_max_num_implicit_qtbt_before_ot. Параметр BTFirst приоритета либо фиксирован, либо задан с помощью gps_implicit_bt_before_impIicit_qt_flag. Если BTFirst = 1, неявные разделения ВТ имеют более высокий приоритет и будут выполняться перед неявными разделениями QT, и применяются таблицы 19 и 21. Если BTFirst = 0, неявные разделения QT имеют более высокий приоритет и будут выполняться перед неявными разделениями ВТ, и применяются таблицы 20 и 22. Если ни одно из условий, перечисленных в таблицах, не выполнено, осуществляется разделение ОТ.
x
y
z
[00204] Пусть ограничивающий бокс В имеет размер  Без ограничения общности можно считать, что 0<d≤d≤d.
z
x
у
z
z
у
x
z
у
у
[00205] В одном варианте осуществления изобретения параметр K либо фиксирован, либо задан с помощью gps_max_num_implicit_qtbt_before_ot, что указывает на то, что сначала будут выполнены K раз неявные разделения ВТ и QT. Параметр BTFirst = 1 либо фиксирован, либо задан с помощью gps_implicit_bt_before_implicit_qt_flag, что указывает на то, что неявные разделения ВТ имеют более высокий приоритет и будут выполняться до неявных разделений QT, и применяются таблицы 19 и 21. В этом варианте осуществления изобретения на первых K глубинах (K≤d-d) выполняются неявные разделения ВТ вдоль оси z, а затем выполняются неявные разделения QT вдоль осей y-z в соответствии с таблицей 21. После этого размер подузлов составляет  где значения δ и δ (δ ≥ δ ≥ 0) зависят от значения K. Затем разделения ОТ выполняются d раз, при этом оставшиеся подузлы имеют размер  Наконец, согласно таблице 19, неявные разделения ВТ выполняются δ - δ раз вдоль оси z, а неявные разделения QT затем выполняются δ раз вдоль осей y-z.
z
x
у
z
z
у
x
у
z
у
[00206] В другом варианте осуществления изобретения параметр K либо фиксирован, либо задан с помощью gps_max_num_implicit_qtbt_before_ot, что указывает на то, что сначала K раз будут выполнены неявные разделения ВТ и QT. Параметр BTFirst=0 либо фиксирован, либо задан с помощью gps_implicit_bt_before_implicit_qt_flag, что указывает на то, что неявные разделения QT имеют более высокий приоритет и будут выполняться перед неявными разделениями ВТ, и применяются таблицы 20 и 22. В этом варианте осуществления изобретения на первых K глубинах (K≤d-d) выполняются неявные разделения QT вдоль осей y-z, а затем неявные разделения ВТ вдоль оси z в соответствии с таблицей 22. После этого размер подузлов равен , где значения δ и δ (δ≥δ≥0) зависят от значения K. Затем разделения ОТ выполняются d раз, при этом оставшиеся подузлы имеют размер  Наконец, согласно таблице 20, неявные разделения QT выполняются δ раз вдоль осей y-z, а неявные разделения ВТ затем выполняются δ - δ раз вдоль оси z.
[00207] 5.4 Гибридная схема с минимальным размером неявных разделений QT и BT
x
y
z
x
y
z
x
y
z
x
y
z
x
yj
z
x
y
z
x
y
z
[00208] Четвертая схема налагает дополнительные ограничения на предыдущие схемы. В этом случае порог K (0 ≤ K ≤ max(d, d, d) - min(d, d, d)) задает максимальное количество неявных разделений QT и ВТ, которые могут быть выполнены перед разделениями QT. Другой параметр М (0 ≤ М ≤ min(d, d, d)) задает минимальный размер неявных разделений QT и ВТ и предотвращает неявные разделения QT и ВТ, когда все размеры меньше или равны М. Четвертая схема является обобщением первых трех схем. Четвертая схема вырождается в схему из раздела III. 5.1, когда K=М=0, в схему из раздела III.5.2, когда K=max(d, d, d) - min(d, d d), M=0, и в схему из раздела III.5.3, когда 0<K<max(d, d, d) - min(d, d, d), M=0.
[00209] В частности, на первых K уровнях разделения решения для типа и направления разделения следуют условиям, заданным в таблице 21 или 22, после этого следует таблица 23 или таблица 24. Таблицы 23 и 24 напоминают таблицы 19 и 20, если заменить 0 на М. Параметр K либо фиксирован, либо задан с помощью gps_max_num_implicit_qtbt_before_ot. Параметр М либо фиксирован, либо задан с помощью gps_min_size_implicit_qtbt. Параметр BTFirst приоритета либо фиксирован, либо задан с помощью gps_implicit_bt_before_implicit_qt_flag. Если BTFirst=1, неявные разделения ВТ имеют более высокий приоритет и будут выполняться перед неявными разделениями QT, и применяются таблицы 21 и 23. Если BTFirst=0, неявные разделения QT имеют более высокий приоритет и будут выполняться перед неявными разделениями ВТ, и применяются таблицы 22 и 24. Если ни одно из условий, указанных в таблицах, не выполнено, осуществляется разделение ОТ.
x
y
z
[00210] Пусть ограничивающий бокс В имеет размер . Без ограничения общности можно считать, что 0<d≤d≤d.
z
x
у
z
z
у
x
z
у
у
(М,М,М)
[00211] В одном варианте осуществления изобретения параметр K либо фиксирован, либо задан с помощью gps_max_num_implicit_qtbt_before_ot, что указывает на то, что сначала K раз будут выполнены неявные разделения ВТ и QT. Параметр М либо фиксирован, либо задан с помощью gps_min_size_implicit_qtbt, что указывает на минимальный размер неявных разделений QT и ВТ. Параметр BTFirst=1 либо фиксирован, либо задан с помощью gps_implicit_bt_before_implicit_qt_flag, что указывает на то, что неявные разделения ВТ имеют более высокий приоритет и будут выполняться перед неявными разделениями QT, и применяются таблицы 21 и 22. В этом варианте осуществления изобретения на первых K глубинах (K≤d-d) неявные разделения ВТ выполняются вдоль оси z, а затем неявные разделения QT выполняются вдоль осей y-z на основе таблицы 21. Затем размер подузлов становится равным , где значения δ и δ (δ ≥ δ ≥ 0) зависят от значения K. Затем разделения ОТ выполняются d - М раз, при этом оставшиеся подузлы имеют размер . Затем, согласно таблице 23, неявные разделения ВТ выполняются δ - δ раз вдоль оси z, а неявные разделения QT выполняются δ раз вдоль осей y-z. Остальные узлы имеют размер 2, поэтому разделения ОТ выполняются М раз для достижения наименьших единиц.
z
x
у
z
z
у
x
у
z
у
(M,M,M)
[00212] В другом варианте осуществления изобретения параметр K либо фиксирован, либо задан с помощью gps_max_num_implicit_qtbt_before_ot, что указывает на то, что сначала K раз будут выполнены неявные разделения ВТ и QT. Параметр М либо фиксирован, либо задан с помощью gps_min_size_implicit_qtbt, что указывает на минимальный размер неявных разделений QT и ВТ. Параметр BTFirst=0 либо фиксирован, либо задан с помощью gps_implicit_bt_before_implicit_qt_flag, что указывает на то, что неявные разделения QT имеют более высокий приоритет и будут выполняться перед неявными разделениями ВТ, и применяются таблицы 22 и 24. В этом варианте осуществления изобретения на первых K глубинах (K≤d-d) неявные разделения ВТ выполняются вдоль оси z, а затем неявные разделения QT выполняются вдоль осей y-z на основе таблицы 22. Размер подузлов затем становится , где значения δ и δ (δ>δ>0) зависят от значения K. Затем разделения ОТ выполняются d - М раз, в результате чего размер оставшихся подузлов становится . Затем, согласно таблице 24, неявные разделения QT выполняются δ раз вдоль осей y-z, а неявные разделения ВТ затем выполняются δ - δ раз вдоль оси z. Остальные узлы имеют размер 2, поэтому разделения ОТ выполняются М раз, чтобы достичь наименьших единиц.
[00213] 5.5. Демонстрация на основе двумерных блоков для различных схем разделений QT и ВТ
[00214] Вышеупомянутые четыре схемы разделения могут быть продемонстрированы на примере двумерного блока, как показано на фиг. 10-13, соответственно, где прямоугольный ограничивающий бокс В размером 16×4 разделяется с помощью 4-уровневых итерационных разделений до наименьшей единицы. Кроме того, схема ТМС13, в которой разделения ОТ выполняются на основе расширенного кубического ограничивающего бокса, проиллюстрирована на фиг. 10 для двумерных случаев. На 2D-иллюстрациях ВТ напоминает ВТ или QT в 3D, a QT напоминает ОТ в 3D.
[00215] Пример схемы из раздела III.5.1
[00216] На фиг. 10, ВТ выполняется после QT, что эквивалентно выполнению QT и ВТ после ОТ в 3D. Как показано, В сначала разделяется на четыре подблока 4×1 посредством двухуровневого разделения QT, а оставшийся подблок затем разделяется посредством двухуровневого разделения ВТ вдоль оси х. Неявный порядок разделения - QT, QT, ВТ, ВТ.
[00217] Пример схемы из раздела Ш.5.2
[00218] На фиг.11, ВТ выполняется перед QT, что эквивалентно выполнению QT и ВТ перед ОТ в 3D. Как показано, бокс В сначала разделяется с помощью двухуровневых разделений ВТ вдоль оси х с формированием четырех подблоков 4×4, а затем каждый подблок разделяется посредством разделений QT. Неявный порядок разделений ВТ, ВТ, QT, QT.
[00219] Пример схемы из раздела III.5.3
[00220] На фиг. 12 разделение выполняется в порядке ВТ, QT, ВТ, что эквивалентно гибридной схеме в 3D. Гибридная схема с K=1 показана на фиг. 12, где бокс В один раз разделен посредством разделения ВТ с получением двух подблоков 8×4, и каждый подблок затем разделен посредством двухуровневых разделений QT с получением нескольких меньших подблоков 2×1, которые, наконец, разделены на наименьшие единицы посредством другого разделения ВТ вдоль оси х. Неявный порядок разделений - ВТ, QT, QT, ВТ.
[00221] Пример схемы из раздела III.5.4
[00222] На фиг. 13 разделение выполняется в порядке ВТ, QT, ВТ, QT, что эквивалентно гибридной схеме с ограничением минимального размера в 3D. Гибридная схема с ограничением минимального размера ВТ показана на фиг. 13, где K=М=1. Сначала выполняется разделение ВТ перед разделением QT, потому что K=1, затем разделение QT выполняется до тех пор, пока меньший размер не достигнет 2^М=2, то есть 4×2 подблоков. Затем требуется разделение ВТ из-за ограничения минимального размера ВТ, в результате оставшиеся подблоки имеют размер 2×2, и, наконец, выполняется разделение QT. Неявный порядок разделений - ВТ, QT, ВТ, QT.
[00223] Пример проекта ТМС13
[00224] Фиг. 14 показывает схему QT на основе расширенного ограничивающего бокса в двумерном случае, которая эквивалентна схеме разделения ОТ проекта ТМС13 в трехмерном случае. Как показано, рекурсивные разделения QT начинаются с расширенного прямоугольного ограничивающего бокса 16×16, который показан пунктирными линиями на чертеже.
[00225] Предполагая, что точки расположены в позициях, отмеченных крестиками на фиг. 10-14, можно вычислить биты, необходимые для каждой схемы. Из первого столбца таблицы 25 можно заметить, что четыре схемы стоят меньше битов, чем схема ТМС13. Схемы из разделов III 5.3 и III.5.4 работают лучше всего. Во втором столбце таблицы 25 вычисляются требуемые биты в худшем случае, когда все позиции заняты. Из этого моделирования можно увидеть, что наименьшее количество битов достигается в схеме из раздела III.5.2, а схемы из разделов III.5.2 и III.5.4 работают лучше, чем схема ТМС13. Таким образом, благодаря подходящему выбору управляющих параметров (K и М) и условий могут быть достигнуты благоприятные результаты кодирования геометрии.
[00226] IV. Взаимодействие с пленарным режимом
[00227] 1. Пленарный режим
[00228] В некоторых вариантах осуществления изобретения для кодирования геометрии облака точек вводятся планарные режимы в трех направлениях х, у и z. Планарные режимы могут быть активированы на уровне применимого узла с помощью флага активации планарного режима, кодированного в битовом потоке. Кроме того, к битовому потоку добавляется дополнительный синтаксис, чтобы указать положение плоскости, связанной с активированными планарными режимами.
[00229] Также вводится предсказание флага и положения плоскости, чтобы гарантировать хорошее сжатие нового синтаксического элемента. Наконец, можно использовать локальные критерии применимости, чтобы избежать использования планарных режимов в неблагоприятных областях облака точек и, таким образом, избежать ухудшения характеристик сжатия, особенно в плотных облаках точек.
[00230] 2. Проблемы
[00231] Неявное разделение QT/BT и планарные режимы основаны на различных наблюдениях и имеют аналогичные преимущества кодирования для разреженных облаков точек. В общем, неявное геометрическое разделение имеет небольшую сложность, а планарный режим более сложен, но более адаптивен. С точки зрения производительности эти два метода кодирования обеспечивают одинаковую производительность для разреженных данных, при этом планарный режим может лучше обрабатывать облака точек с множеством шаблонов плоскостей.
[00232] Прежде всего, два метода кодирования имеют некоторые сходные концепции и схемы кодирования при кодировании занятости, оба метода кодирования используют измененную схему кодирования занятости, где при определенных условиях кодируется только часть кода занятости, а остальная часть кода занятости может быть пропущена, и о ней может быть сделан вывод на стороне декодера. Для неявного геометрического разделения условие неявно определяется некоторыми заранее заданными параметрами. В то время как для планарного режима условие определяется кодером, флаг и индекс явно сигнализируются, чтобы указать, какая часть кода занятости пропускается.
[00233] Кроме того, неявное геометрическое разделение может начинать разделение октодерева с некубического ограничивающего бокса, и форма узлов октодерева также может быть асимметричной, в то время как планарный режим всегда предполагает симметричные формы узлов октодерева.
[00234] Эти два метода не противоречат друг другу по концепции. У них есть сходства/совпадения и различия. В различных вариантах осуществления изобретения эти два метода могут комбинироваться.
[00235] В разделах ниже описаны варианты осуществления комбинации неявного геометрического разделения и планарного режима. В последующем описании показаны некоторые варианты осуществления изобретения, представляющие собой изменения стандартных спецификаций проекта для сжатия облака точек на основе геометрии ISG / IEC 23090-9: 2019 (Е), этап CD, ISO / IEC JTC 1 / SC 29 / WG 11 W18478, июнь 2019 г.
[00236] 3. Только неявное геометрическое разделение или только планарный режим
[00237] В некоторых вариантах осуществления изобретения один из двух методов включен при кодировании геометрии облака точек, то есть либо включено неявное геометрическое разделение (при отключении планарного режима), либо включен планарный режим (при отключении неявного геометрического разделения).
[00238] 3.1 Сигнализация флага управления в синтаксисе высокого уровня для неявного геометрического разделения
[00239] Для включения и отключения неявного геометрического разделения в синтаксисе высокого уровня может сигнализироваться один флаг. Флаг может быть указан в наборе параметров последовательности, заголовке слайса или наборе параметров геометрии битового потока.
[00240] Вариант А осуществления изобретения
[00241] В одном варианте осуществления изобретения флаг неявного геометрического разделения задается в наборе параметров геометрии следующим образом.
[00242] Синтаксис набора параметров геометрии в таблице 26 изменен путем добавления синтаксического элемента в строке 17.
[00243] Значение gps_implicit_geom_partition_flag, равное 1, указывает на то, что неявное геометрическое разделение включено для последовательности или слайса. Значение gps_implicit_geom_partition_flag, равное 0, указывает на то, что неявное геометрическое разделение отключено для последовательности или слайса.
[00244] Вариант В осуществления изобретения
[00245] В другом варианте осуществления изобретения флаг указывается, когда схема треугольной сетки отключена, и в этом случае изменения набора параметров геометрии показаны в строках 6-8 в таблице 27.
[00246] Когда значение log2_trisoup_node_size больше 0, может быть сделан вывод, что значение gps_implicit_geom_partition_flag равно 0, без явной сигнализации.
[00247] Вариант С осуществления изобретения
[00248] В другом варианте осуществления изобретения в дополнение к флагу, другие параметры, которые относятся к неявному геометрическому разделению, могут быть указаны в синтаксисе высокого уровня, когда флаг gps_implicit_geom_partition_flag равен 1. Синтаксис набора параметров геометрии в таблице 28 изменен в строках 6-10.
[00249] gps_max_num_implicit_qtbt_before_ot указывает максимальное количество неявных разделений QT и ВТ перед разделениями ОТ. gps_min_size_implicit_qtbt задает минимальный размер неявных разделений QT и ВТ.
[00250] Вариант D осуществления изобретения
[00251] В другом варианте осуществления изобретения сигнализация ограничивающего бокса геометрии может зависеть от значения gps_implicit_geom_partition_flag следующим образом. Синтаксис заголовка геометрического слайса в таблице 29 изменен путем добавления синтаксической структуры в строках 10-16.
[00252] gsh_log2_max_nodesize_x, gsh_log2_max_nodesize_y и gsh_log2_max_nodesize_z задают размеры ограничивающего бокса в измерениях х, у, z в масштабе log2, соответственно. Они указываются только тогда, когда значение gps_implicit_geom_partition_flag равно 1. Когда значение gps_impIicit_geom_partition_flag равно 0, указывается только один размер с помощью gsh_log2_max_nodesize, и в этом случае предполагается, что три измерения имеют одинаковый размер.
[00253] Вариант Е осуществления изобретения
[00254] В другом варианте осуществления изобретения размеры ограничивающего бокса задаются их разностями. Синтаксис заголовка геометрического слайса в таблице 30 изменен в строках 10-16.
[00255] 3.2 Сигнализация управляющих флагов в синтаксисе высокого уровня с учетом схемы комбинации
[00256] В этом подразделе несколько вариантов осуществления изобретения описаны в качестве примеров, чтобы показать, как сигнализировать управляющие флаги в синтаксисе высокого уровня при рассмотрении комбинации неявного геометрического разделения и планарного режима.
[00257] Вариант А осуществления изобретения
[00258] В одном варианте осуществления изобретения два управляющих флага задаются независимо в наборе параметров геометрии следующим образом. Синтаксис набора параметров геометрии в таблице 31 изменен в строках 6-7.
[00259] Значение gps_planar_mode_flag, равное 1, указывает на то, что планарный режим включен для последовательности или слайса. Значение gps_planar_mode_flag, равное 0, указывает на то, что планарный режим отключен для последовательности или слайса.
[00260] Однако в этой схеме комбинации предполагается, что включен только один из этих двух методов. Например, gps_implicit_geom_partition_flag и gps_planar_mode_flag не могут одновременно равняться 1.
[00261] Вариант В осуществления изобретения
[00262] В другом варианте осуществления изобретения, управляющий флаг gps_planar_mode_flag указывается в зависимости от значения gps_implicit_geom_partition_flag в наборе параметров геометрии следующим образом. Синтаксис набора параметров геометрии в таблице 32 изменен в строках 6-8.
[00263] В этом случае gps_planar_mode_flag указывается только тогда, когда значение gps_implicit_geom_partition_flag равно 0. Когда значение gps_implicit_geom_partition_flag равно 1, можно сделать вывод, что значение gps planar mode flag равно 0.
[00264] Вариант С осуществления изобретения
[00265] В другом варианте осуществления изобретения управляющий флаг gps_impIicit_geom_partition_flag указывается в зависимости от значения gps_planar_mode_flag в наборе параметров геометрии следующим образом. Синтаксис набора параметров геометрии в таблице 33 изменен в строках 6-8.
[00266] В этом случае gps_implicit_geom_partition_flag указывается только тогда, когда значение gps_planar_mode_flag равно 0. Когда значение gps_planar_mode_flag равно 1, может быть сделан вывод, что значение gps implicit geom partition flag равно 0.
[00267] Вариант D осуществления изобретения
[00268] В другом варианте осуществления изобретения управляющий флаг gps_impIicit_geom_partition_flag указывается в зависимости от значения gps_planar_mode_flag и значения log2_trisoup_node_size в наборе параметров геометрии следующим образом. Синтаксис набора параметров геометрии в таблице 34 изменен в строке 6-8.
[00269] В этом случае gps_implicit_geom_partition_flag указывается только тогда, когда gps_planar_mode_flag и log2_trisoup_node_size равны 0. В противном случае, может быть сделан вывод, что значение gps_implicit_geom_partition_flag равно 0. Другими словами, неявное геометрическое разделение может быть включено только тогда, когда отключены как режим треугольной сетки, так и планарный режим.
[00270] 4. Планарный режим доступен только тогда, когда текущий узел октодерева является кубом
x
y
z
[00271] Вторая схема комбинации может одновременно включать неявное геометрическое разделение и планарный режим. Но для планарного режима существуют некоторые ограничения. Если неявное геометрическое разделение включено, ограничивающий бокс и узлы октодерева могут не быть кубом. В этой схеме ограничение для применения планарного режима состоит в том, что планарный режим подходит только тогда, когда текущий узел октодерева является кубом, что указывает на d=d=d.
[00272] В одном варианте осуществления изобретения синтаксис кодирования геометрии показан в таблице 35 и может быть аналогичен синтаксису в таблице 9.
[00273] Переменные ChildNodeSizeXLog2, ChildNodeSizeYLog2 и ChildNodeSizeZLog2 указывают размер дочернего узла для каждого измерения и могут быть определены с помощью неявных разделений QT и ВТ следующим образом:
[00274] В этом варианте осуществления изобретения планарный режим неприменим, если NodeSizeLog2X, NodeSizeLog2Y и NodeSizeLog2Z не равны, как показано ниже,
где planarModeEligibilityX, planarModeEligibilityY и planarModeEligibilityZ указывают, подходит ли планарный режим для измерений X, Y, Z, соответственно, в текущем кодированном узле.
[00275] 5. Планарный режим неприменим для некоторых измерений, для которых не выполнено разделение
[00276] Третья схема комбинации дополнительно ослабляет ограничение планарного режима, где планарный режим применим, даже если текущий узел октодерева не является кубом. Если для одного или двух измерений не выполнено разделение на одной глубине, планарный режим неприменим для этих измерений, в то время как он применим для остальных измерений. Например, если решено выполнить неявное геометрическое разделение в измерениях х и у, но не в измерении z на определенной глубине разделения, то планарный режим подходит только для измерений х и у.
[00277] В этом варианте осуществления изобретения планарный режим неприменим для определенных измерений, где разделение пропускается в пользу способа неявного геометрического разделения следующим образом,
[00278] Следует отметить, что в других примерах планарный режим может быть изменен в других аспектах и более сложным образом для согласования с тем фактом, что узел октодерева теперь может быть прямоугольным параллелепипедом.
[00279] V. Дополнительные варианты осуществления неявного геометрического разделения
[00280] Вариант А осуществления изобретения
[00281] Вариант А осуществления изобретения обеспечивает улучшение неявного геометрического разделения и сохраняет больше битов при кодировании кода занятости с неявным геометрическим разделением. В частности, процесс анализа занятости геометрического октодерева, описанный в разделе III, может быть изменен путем введения процесса определения переменной binlslnferred в конце процесса анализа занятости геометрического октодерева.
Этот процесс реконструирует синтаксический элемент occupancymap.
Входными данными для этого процесса являются NeighbourPattern, binlsSkiped и binlslnferred текущего узла.
Выходными данными для этого процесса является значение синтаксического элемента, построенное следующим образом:
где переменная binIsSkiped[binIdx] установлена следующим образом:
причем для каждого бина переменная binIsInferred устанавливается следующим образом:
- Если выполнено одно из следующих условий, переменную binIsInferred устанавливают равной 1:
- переменная NeighbourPattem равна 0, а количество ранее декодированных однозначных бинов меньше или равно (binIdx + minOccupied - maxOccupied).
- переменная NeighbourPattem не равна 0, значение binldx равно maxOccupied-1, а значения всех предыдущих декодированных бинов равны нулю,
при этом minOccupied = 2, a maxOccupied = 8 (если применяется ОТ), maxOccupied = 4 (если применяется QT) и maxOccupied = 2 (если применяется ВТ).
- В противном случае, если ни одно из вышеперечисленных условий не выполнено, переменную binIsInferred устанавливают равной 0.
[00282] Вариант В осуществления изобретения
[00283] В одном варианте осуществления изобретения управляющий флаг gps_implicit_geom_partition_flag и два параметра K и М задаются в наборе параметров геометрии следующим образом.
[00284] Значение gps_implicit_geom_partition_flag, равное 1, указывает на то, что неявное геометрическое разделение включено для последовательности или слайса. Значение gps_implicit_geom_partition_flag, равное 0, указывает на то, что неявное геометрическое разделение отключено для последовательности или слайса. Если значение gps_implicit_geom_partition_flag равно 1, сигнализируются следующие два параметра:
[00285] (1) Значение gps_max_num_implicit_qtbt_before_ot задает максимальное количество неявных разделений QT и ВТ перед разделениями ОТ, то есть K=gps_max_num_implicit_qtbt_before_ot.
[00286] (2) Значение gps_min_size_implicit_qtbt задает минимальный размер неявных разделений QT и ВТ, то есть М=gps_min_size_implicit_qtbt. Этот параметр М предотвращает неявные разделения QT и ВТ, когда все размеры меньше или равны М.
[00287] Вариант С осуществления изобретения
[00288] В одном варианте осуществления изобретения, если неявное разделение QTBT включено, размер ограничивающего бокса задается тремя значениями в заголовке геометрического слайса следующим образом:
[00289] gsh_log2_max_nodesize_x указывает размер ограничивающего бокса в измерении х, то есть MaxNodesizeXLog2, который используется в процессе декодирования следующим образом:
MaxNodeSizeXLog2=gsh_log2_max_nodesize_x.
MaxNodeSizeX=1<<MaxNodeSizeXLog2.
[00290] gsh_log2_max_nodesize_y_minus_x задает размер ограничивающего бокса в измерении у, то есть MaxNodesizeYLog2, который используется в процессе декодирования следующим образом:
MaxNodeSizeYLog2=gsh_log2_max_nodesize_ у_minus_x+MaxNodeSizeXLog2.
MaxNodeSizeY=1<<MaxNodeSizeYLog2.
[00291] gsh_log2_max_nodesize_z_minus_y задает размер ограничивающего бокса в измерении z, то есть MaxNodesizeZLog2, который используется в процессе декодирования следующим образом:
MaxNodeSizeZLog2=gsh_log2_max_nodesize_z_minus_y + MaxNodeSizeYLog2.
MaxNodeSizeZ=1<<MaxNodeSizeZLog2.
[00292] Параметры K и M затем обновляются следующим образом:
В варианте осуществления изобретения, когда включен режим треугольной сетки (log2_trisoup_node_size != 0 имеет значение «истина»), М меняют на минимальное значение log2 размера корневого узла слайса. Следует отметить, что значение log2 размера узла в режиме треугольной сетки не должно быть больше минимального значения log2 размера корневого узла слайса.
[00293] Вариант D осуществления изобретения
[00294] В варианте осуществления изобретения, синтаксис данных геометрического слайса в таблице 37 используется вместо синтаксической структуры в таблице 35 или таблице 9. Неявная функция принятия решения QT/BT вновь вводится в строке 3 таблицы 37. Синтаксис неявной функции принятия решения QT/BT показан в таблице 38, где переменная partitionSkip определяется в строках 9-16, а глубины в направлениях х, у и z обновляются в строках 17-23.
[00295] VI. Примеры процесса декодирования геометрии
[00296] Фиг. 15 показывает блок-схему, описывающую способ (1500) согласно варианту осуществления изобретения. Например, способ (1500) может использоваться для декодирования облака точек. Способ (1500) может использоваться для создания структуры октодерева для представления геометрии точек в ограничивающем боксе слайса в декодере облака точек. В различных вариантах осуществления изобретения способ (1500) может выполняться схемой обработки, такой как схема обработки, выполняющая функции модуля (410) арифметического декодирования и модуля (430) декодирования октодерева в декодере (400). В некоторых вариантах осуществления изобретения способ (1500) реализован в виде программных инструкций, так что при исполнении схемой обработки программных инструкций схема обработки выполняет способ (1500). Способ начинается с шага (S1501) и переходит к шагу (S1510).
[00297] На шаге (S1510) может быть принят битовый поток, включающий слайс кодированного кадра облака точек. Например, слайс может включать последовательность синтаксических элементов и бинов, представляющих часть кодированного кадра или весь кодированный кадр облака точек.
[00298] На шаге (S1520) может быть реконструировано октодерево, представляющее геометрию точек в ограничивающем боксе слайса. В процессе построения октодерева текущий узел октодерева может быть разделен посредством разделения на основе квадродерева (QT) или разделения на основе бинарного дерева (ВТ). Например, способ разделения текущего узла октодерева посредством одного из разделения QT, разделения ВТ или разделения на основе октодерева (QT) может быть определен на основе заранее заданных условий. Способ разделения текущего узла октодерева посредством одного из разделения QT, разделения ВТ или разделения ОТ также может быть определен на основе одного или более параметров, каждый из которых может сигнализироваться в битовом потоке или может иметь заранее локально сконфигурированное значение.
[00299] Во время построения октодерева может быть определено значение переменной, обозначенной partitionSkip и указывающей тип разделения и направление разделения текущего узла октодерева. Например, переменная partitionSkip может быть представлена в двоичной форме тремя битами, соответствующими направлениям х, у и z, соответственно, при этом каждый бит указывает, выполняется ли разделение вдоль соответствующего направления х, у или z. На основе переменной partitionSkip может быть обновлена глубина в измерении х, у или z для дочернего узла текущего узла октодерева.
[00300] Во время построения октодерева биты занятости, принадлежащие 8-биновому коду занятости текущего узла октодерева, могут быть приняты (или проанализированы) из битового потока. Каждый бит занятости соответствует занятому дочернему узлу текущего узла октодерева. Четыре бина, которые принадлежат 8-биновому коду занятости, не сигнализируются в битовом потоке, когда текущий узел октодерева разделен посредством разделения QT, и шесть бинов, которые принадлежат 8-биновому коду занятости, не сигнализируются в битовом потоке, когда текущий узел октодерева разделен посредством разделения ВТ.
[00301] Кроме того, из битового потока могут быть приняты один или более синтаксических элементов, указывающих трехмерные (3D) размеры ограничивающего бокса слайса кодированного кадра облака точек. Например, ограничивающий бокс слайса может иметь форму прямоугольного параллелепипеда.
[00302] Во время построения октодерева, после приема синтаксического элемента, указывающего на то, что текущий узел октодерева имеет один занятый дочерний узел, может быть получен 1 бин, если переменная partitionSkip указывает на разделение ВТ, или могут быть получены 2 бина, если переменная partitionSkip указывает на разделение QT. Может быть определена карта занятости, идентифицирующая занятые дочерние узлы текущего узла октодерева, на основе принятых 1 или 2 бинов.
[00303] Во время построения октодерева процесс анализа битового потока может выполняться для определения синтаксического элемента карты занятости, идентифицирующей занятые дочерние узлы текущего узла октодерева. В процессе анализа можно определить бин синтаксического элемента карты занятости на основе переменной partitionSkip.
[00304] Во время построения октодерева для дочернего узла текущего узла октодерева, кодированного в прямом режиме, для каждого из направлений х, у и z может быть определено значение log2 размера, обозначаемое dx, dy и dz, соответственно, для дочернего узла на основе переменной partitionSkip. Может быть определено, что позиции точек в дочернем узле кодируются с помощью кодирования кодами фиксированной длины с использованием (dx, dy, dz) битов, соответственно. Соответственно, бины, соответствующие координатам точек в дочернем узле, могут быть приняты на основе известных длин кодирования.
[00305] В примере, для реконструкции октодерева может быть принят из битового потока синтаксический элемент, указывающий один из следующих параметров: максимальное количество неявных разделений QT и ВТ, выполняемых перед разделениями ОТ, минимальный размер неявных разделений QT и ВТ, который предотвращает неявные разделения QT и ВТ узла, когда все размеры узла меньше или равны минимальному размеру, или приоритет, указывающий на то, какое из неявных разделений QT или ВТ выполняется первым, когда разрешены оба разделения QT и ВТ.
[00306] В примере, во время построения октодерева, когда глубина октодерева текущего узла меньше, чем параметр K, или когда наименьшее значение log2 размера среди значений log2 размеров текущего узла в направлениях х, у и z равно параметру М, тип разделения и направление разделения для разделения текущего узла могут быть определены в соответствии с условиями, указанными в следующей таблице.
x
y
z
x
y
z
x
y
z
[00307] Параметр K является целым числом в диапазоне 0 ≤ K ≤ max(d, d, d) - min(d, d, d) и задает максимальное количество неявных разделений QT и ВТ, которые разрешены до разделений ОТ. Параметр М является целым числом в диапазоне 0<М<min(d, d, d) и задает минимальный размер неявных разделений QT и ВТ, который предотвращает неявные разделения QT и ВТ узла, когда все размеры узла меньше или равны М. Размеры dx, dy и dz могут быть значениями log2 размеров текущего узла в направлениях х, у и z, соответственно. В примере вышеупомянутый тип разделения и направление разделения для разделения текущего узла могут быть представлены переменной partitionSkip.
[00308] В примере, каждый из параметров K и М может сигнализироваться в декодер или принимать заранее сконфигурированное(ые) значение(я), а затем обновляться, например, на основе трехмерных размеров корневого узла слайса или на основе того, включен ли режим треугольной сетки.
[00309] Следует отметить, что параметры K или М или другие параметры, используемые для управления или осуществления неявного разделения QT/BT, описаны просто как примеры, чтобы проиллюстрировать некоторые варианты осуществления изобретения. Могут быть различные формы параметров, сигнализируемых в битовом потоке и используемых для выполнения разделений QT/BT в декодере. Эти параметры могут быть, а могут и не быть похожими на K или М, но могут аналогичным образом использоваться для управления разделениями QT/BT, так что может быть повышена производительность сжатия облака точек.
[00310] После шага (S1520) процесс (1500) может завершиться на шаге (S1599).
[00311] VII. Компьютерная система
[00312] Вышеописанные способы могут быть реализованы в виде компьютерного программного обеспечения, использующего машиночитаемые инструкции и физически хранящегося на одном или более машиночитаемых носителях. Например, на фиг. 16 показана компьютерная система (1600), пригодная для осуществления некоторых вариантов осуществления изобретения.
[00313] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.
[00314] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[00315] Компоненты компьютерной системы (1600), показанные на фиг. 16, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым компонентом или комбинацией компонентов, показанных в примере осуществления компьютерной системы (1600).
[00316] Компьютерная система (1600) может включать некоторые устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двумерного видео, трехмерного видео, включая стереоскопическое видео).
[00317] Входной человеко-машинный интерфейс устройства может включать одно или более из следующего (показано по одному): клавиатура (1601), мышь (1602), сенсорная панель (1603), сенсорный экран (1610), информационная перчатка (не показана), джойстик (1605), микрофон (1606), сканер (1607) и камера (1608).
[00318] Компьютерная система (1600) также может включать в себя некоторые устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (1610), информационной перчатки (не показана) или джойстика (1605), а также устройства тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: динамики (1609), наушники (не показаны)), устройства визуального вывода (например, экраны (1610), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из них способны к двумерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографическому выводу, очки виртуальной реальности (не показаны), голографические дисплеи, дымовые баки (не показаны) и принтеры (не показаны).
[00319] Компьютерная система (1600) также может включать доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие CD / DVD ROM / RW (1620) с носителями (1621) CD/DVD и т.п., карты (1622) флэш-памяти, сменный жесткий диск или твердотельный диск (1623), традиционные магнитные носители, например, ленту и магнитный диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[00320] Специалисты в данной области техники также должны понимать, что термин «машиночитаемые носители», используемый в связи с настоящим изобретением, не охватывает среды передачи, несущие волны или другие временные сигналы.
[00321] Компьютерная система (1600) также может включать интерфейс (1654) к одной или более сетям (1655) связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть также локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают локальные сети, например, Ethernet, беспроводные сети LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные сети, включающие CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (1649) (например, USB-порты компьютерной системы (1600)); другие обычно встраиваются в ядро компьютерной системы (1600) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1600) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[00322] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (1640) компьютерной системы (1600).
[00323] Ядро (1640) может включать один или более центральных процессоров (CPU) (1641), графические процессоры (GPU) (1642), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) (1643), аппаратные ускорители (1644) для некоторых задач, графические адаптеры (1650) и т.д. Эти устройства, совместно с постоянной памятью (ROM) (1645), оперативной памятью (1646), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками, недоступными пользователю, SSD и т.п.(1647), могут соединяться посредством системной шины (1648). В некоторых компьютерных системах системная шина (1648) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных процессоров CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (1648) ядра, либо через периферийную шину (1649). Например, экран (1610) может быть подключен к графическому адаптеру (1650). Архитектуры периферийной шины включают PCI, USB и т.п.
[00324] Устройства CPU (1641), GPU (1642), FPGA (1643) и ускорители (1644) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в памяти ROM (1645) или RAM (1646). Временные данные также могут храниться в памяти RAM (1646), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (1647) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с одним или более процессорами CPU (1641), GPU (1642), хранилищем (1647) данных большой емкости, памятью ROM (1645), RAM (1646) и т.п.
[00325] На машиночитаемых носителях может храниться компьютерный код для осуществления различных выполняемых компьютером операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[00326] В порядке примера, но не ограничения изобретения, компьютерная система, имеющая архитектуру (1600), и, в частности, ядро (1640) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных машиночитаемых носителей. Такие машиночитаемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым постоянным хранилищем ядра (1640), например, внутренним хранилищем (1647) данных большой емкости или ROM (1645). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1640). Машиночитаемый носитель может включать одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (1640) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные способы или конкретные части описанных здесь конкретных способов, включая задание структур данных, хранящихся в памяти RAM (1646), и модификацию таких структур данных согласно способам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (1644)), которая может действовать вместо программного обеспечения или совместно с программным обеспечением для выполнения конкретных способов или конкретных частей описанных здесь конкретных способов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на машиночитаемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе схемы, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.
[00327] Хотя аспекты настоящего раскрытия были описаны в связи с его конкретными вариантами осуществления, которые предлагаются в качестве примеров, альтернативы, модификации и вариации примеров могут быть сделаны. Соответственно, варианты осуществления, изложенные в данном документе, предназначены для иллюстрации, а не ограничения. Могут быть внесены изменения, не выходящие за рамки формулы изобретения, изложенной ниже.