ОБЛАСТЬ ТЕХНИКИ
[0001] Настоящая заявка в общем относится к сжатию облака точек. В частности, настоящая заявка относится к способу кодирования и декодирования, а также к кодеру и декодеру для улучшенного энтропийного кодирования облаков точек.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[0002] В качестве альтернативы трехмерным сеткам недавно появились трехмерные облака точек как популярное представление трехмерной мультимедийной информации. Варианты использования, связанные с данными облака точек, очень разнообразны и включают:
• 3D-pecypcbi в кинопроизводстве,
• 3D-pecypcbi для трехмерного иммерсивного телеприсутствия в реальном времени или приложений виртуальной реальности,
• 3D-видео со свободной точкой обзора (например, для просмотра спортивных передач),
• Географические информационные системы (картография),
• Культурное наследие (хранение хрупких ресурсов в цифровом виде),
• Автономное вождение (построение крупномасштабной 3D-карты окружения)...
[0003] Облако точек представляет собой набор точек в трехмерном пространстве, каждая из которых имеет связанные с ней атрибуты, например цвет, свойства материала и т.д. Облака точек можно использовать для реконструкции объекта или сцены как композиции таких точек. Они могут быть получены с помощью нескольких камер и датчиков глубины в различных установках и могут состоять из тысяч и миллиардов точек для реалистичного представления реконструированных сцен.
[0004] Для каждой точки облака точек необходимо сохранить ее положение (обычно информацию X, Y, Z, кодированную как число с плавающей запятой с 32 или 64 битами) и ее атрибуты (обычно по меньшей мере цвет RGB, кодированный 24 битами). Имея иногда миллиарды точек в облаке точек, можно легко понять, что исходные данные облака точек могут составлять несколько гигабайтов данных: следовательно, существует острая потребность в технологиях сжатия для уменьшения объема данных, необходимых для представления облака точек.
[0005] Для сжатия облака точек были разработаны два разных подхода:
[0006] Во-первых, в подходе сжатия облака точек на основе видео (VPCC, Video based Point Cloud Compression) облако точек сжимается путем выполнения нескольких его проекций на 3 разные оси X, Y, Z на разной глубине, чтобы все точки присутствовали в одном проецируемом изображении. Затем спроецированные изображения обрабатывают в патчи (для устранения избыточности) и перекомпоновывают в окончательное изображение, при этом используют дополнительные метаданные для преобразования положений пикселей в положения точек в пространстве. Затем выполняют сжатие с использованием традиционных кодеров изображения/видео MPEG. Преимущество этого подхода заключается в том, что он использует существующие кодеры и естественным образом поддерживает динамические облака точек (с использованием видеокодеров), но его неудобно использовать для редких облаков точек, и ожидается, что выигрыш от сжатия будет выше при использовании специальных способов для облаков точек.
[0007] Во-вторых, в подходе сжатия облака точек на основе геометрии (GPCC, Geometry based Point Cloud Compression) положения точек (обычно называемые геометрией) и атрибуты точек (цвет, прозрачность...) кодируют отдельно. Для кодирования геометрии используют структуру октодерева. Все облако точек помещается в куб, который непрерывно делится на восемь подкубов, пока каждый из подкубов не будет содержать только одну точку. Таким образом, положение точек заменяется деревом информации о занятости в каждом узле. Поскольку каждый куб имеет только 8 подкубов, 3 бита достаточно для кодирования занятости, и поэтому для дерева глубины D необходимы 3° битов для кодирования положения точки. Хотя одного этого преобразования недостаточно для обеспечения значительного усиления сжатия, следует отметить, что, поскольку используется дерево, многие точки имеют одни и те же значения узлов, и благодаря использованию энтропийных кодеров объем информации может быть значительно уменьшен.
[0008] С учетом того, что многие облака точек включают поверхности, в текущей версии GPCC был введен планарный режим кодирования для более эффективного кодирования таких подходящих узлов октодерева.
[0009] Таким образом, вводится флаг isPlanar, который указывает, принадлежат ли занятые дочерние узлы одной и той же горизонтальной плоскости. Если isPlanar имеет значение true, то сигнализируется дополнительный бит planePosition, указывающий, является ли плоскость нижней или верхней плоскостью.
[0010] Флаг isPlanar кодируется с помощью двоичного арифметического кодера с 8-битовой (2×2×2) контекстной информацией в качестве планарной контекстной информации. Кроме того, если узел является планарным, кодируется информация о положении плоскости с использованием двоичного арифметического кодера с 24-битовой (=2x3x2x2) контекстной информацией в качестве контекстной информации о положении плоскости.
[0011] Кроме того, был введен угловой режим кодирования для улучшения планарного режима кодирования с использованием углового контекста для редких данных облака точек, где в большинстве случаев занятость соседей имеет тенденцию быть равной нулю (т.е. пустой). В частности, угловой режим кодирования заменяет контекстную информацию при кодировании planePosition сокращенной контекстной информацией, а флаг isPlanar по-прежнему арифметически кодируется с использованием той же контекстной модели, что и в планарном режиме кодирования.
[0012] Однако в известных способах кодирования и декодирования облаков точек информация о соседних узлах не учитывается.
[0013] Таким образом, целью настоящего изобретения является предоставление способа кодирования и декодирования, а также кодера и декодера, обеспечивающих улучшенное быстрое и точное сжатие данных облаков точек.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0014] В одном из аспектов настоящего изобретения предлагается способ кодирования облака точек для создания битового потока сжатых данных облака точек, причем геометрия облака точек представлена структурой на основе октодерева с множеством узлов, имеющих отношения родитель-потомок, путем рекурсивного разделения объемного пространства, содержащего облако точек, на подобъемы, каждый из которых связан с узлом структуры на основе октодерева, при этом способ включает этапы:
[0015] определение режима кодирования, причем режим кодирования включает планарный режим кодирования и угловой режим кодирования;
[0016] получение контекстной информации кодирования для текущего дочернего узла, при этом,
[0017] если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает планарную контекстную информацию, причем планарную контекстную информацию текущего дочернего узла определяют в соответствии с шаблоном занятости текущего родительского узла и шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом;
[0018] если режим кодирования представляет собой угловой режим кодирования, контекстная информация кодирования текущего дочернего узла включает планарную информацию текущего родительского узла и занятость соседнего по вертикали родительского узла, смежного с текущим родительским узлом; и
[0019] энтропийное кодирование занятости текущего дочернего узла на основе определенной контекстной информации кодирования для создания кодированных данных для битового потока.
[0020] Таким образом, сначала определяют режим кодирования. В зависимости от режима кодирования, определяют контекстную информацию, что приводит к двум разным видам контекстной информации для эффективного энтропийного кодирования.
[0021] При этом для планарного режима кодирования текущий родительский узел и соседний родительский узел находятся на одной и той же глубине D дерева. Из-за своих положений текущий родительский узел и соседний родительский узел имеют общую поверхность. Для текущего дочернего узла, являющегося непосредственным потомком текущего родительского узла на глубине D+1 дерева, планарную контекстную информацию определяют в зависимости от шаблона занятости текущего родительского узла и по меньшей мере одного соседнего родительского узла. Шаблон занятости включает распределение занятых дочерних узлов в соответствующем родительском узле. Планарная контекстная информация включает информацию о возможной плоскости или поверхности, представленной облаком точек и проходящей через текущий дочерний узел. Таким образом, информация о шаблоне занятости по меньшей мере одного непосредственного соседа текущего родительского узла рассматривается как контекстная информация для энтропийного кодирования.
[0022] Вместо углового режима кодирования реализован более эффективный планарный контекстный режим. По сравнению с планарной контекстной информацией планарного режима кодирования рассматривается только та информация, которая доступна в данных редкого облака.
[0023] Вследствие этого, могут быть сделаны более надежные предсказания занятости текущего дочернего узла, которые можно использовать для увеличения сокращения данных с помощью энтропийного кодера. Таким образом, выполняется обход всего дерева для определения занятости каждого узла и предоставления достаточной контекстной информации для энтропийного кодера.
[0024] Предпочтительно, соседний родительский узел является узлом, расположенным непосредственно рядом с текущим дочерним узлом и имеющим общую поверхность с текущим дочерним узлом.
[0025] Предпочтительно, для планарного режима кодирования контекстная информация кодирования включает планарную контекстную информацию, при этом только планарную контекстную информацию текущего дочернего узла определяют в соответствии с шаблоном занятости текущего родительского узла и шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом.
[0026] Предпочтительно, для углового режима кодирования контекстная информация кодирования текущего дочернего узла включает планарную информацию текущего родительского узла и занятость соседнего по вертикали родительского узла, смежного с текущим родительским узлом.
[0027] Предпочтительно, если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает контекстную информацию о положении плоскости, при этом контекстная информация о положении плоскости включает одно или более из следующего:
• расстояние d от ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева;
• положение плоскости ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева; и
• положение плоскости текущего дочернего узла в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного рядом с текущим родительским узлом.
[0028] В частности, расстояние d имеет дискретные значения «близко», «не слишком далеко» и «далеко». Если уже закодированный узел с той же координатой и глубиной D существует, то в контекстную информацию положения плоскости также может быть включено положение плоскости, т.е. «верхнее» или «нижнее». При этом координата дочернего узла представляет собой относительное положение в соответствующем родительском узле. Кроме того, положение плоскости может быть включено в контекстную информацию о положении плоскости в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного рядом с текущим родительским узлом. В частности, контекстная информация о положении плоскости включает более одной или всю вышеупомянутую информацию. В частности, в планарном режиме кодирования контекстная информация о положении плоскости может включать вышеупомянутую информацию.
[0029] Предпочтительно, если ближайший уже закодированный узел с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева не существует, то контекстная информация о положении плоскости включает только положение плоскости текущего дочернего узла в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом. Таким образом, в этом случае контекстную информацию о положении плоскости определяют только из информации, полученной от соседних узлов. Никакая дополнительная информация недоступна и поэтому не используется. Но благодаря включению информации от соседних узлов эффективное сжатие возможно даже в этом случае. В частности, оператор axisldx, идентифицирующий ось, перпендикулярную плоскости, для кодирования planePosition, предложенного в текущей спецификации GPCC, заменяется контекстной информацией, определяемой из занятости соседних узлов.
[0030] Предпочтительно, если режим кодирования представляет собой угловой режим кодирования, а текущий дочерний узел не подходит для углового режима кодирования, контекстная информация кодирования включает контекстную информацию о положении плоскости, при этом информация о положении плоскости включает одно или более из следующего:
[0031] расстояние d от ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева;
[0032] положение плоскости ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева; и
[0033] положение плоскости текущего дочернего узла в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом.
[0034] Таким образом, в этом случае контекстная информация о положении плоскости может быть идентична информации о положении плоскости в планарном режиме кодирования. В частности, контекстная информация о положении плоскости включает более одной или всю вышеупомянутую информацию. В частности, в угловом режиме кодирования, если текущий дочерний узел не подходит для углового режима кодирования, контекстная информация о положении плоскости может включать вышеупомянутую информацию.
[0035] Предпочтительно, для определения планарной контекстной информации и контекстной информации о положении плоскости в соответствии с шаблоном занятости по меньшей мере одного соседнего узла определяют текущее положение плоскости текущего дочернего узла относительно текущего родительского узла, при этом текущее положение плоскости включает верхнее положение плоскости и нижнее положение плоскости. При этом для некоторой рассматриваемой геометрической оси, проходящей вдоль оси через родительский узел, если в текущем родительском узле сначала имеется плоскость дочерних узлов, перпендикулярная оси и включающая текущий дочерний узел, то текущее положение плоскости является нижним положением плоскости. Если сначала имеется плоскость дочерних узлов в текущем родительском узле, перпендикулярная оси, без текущего дочернего узла, текущее положение плоскости является верхним положением плоскости. Таким образом, текущее положение плоскости определяют для планарной контекстной информации в планарном режиме кодирования, а также части контекстной информации о положении плоскости в планарном режиме кодирования и угловом режиме кодирования.
[0036] Предпочтительно, если текущее положение плоскости является нижним положением плоскости, планарную контекстную информацию и контекстную информацию о положения плоскости определяют в соответствии с занятостью первой группы из четырех дочерних узлов соседнего родительского узла, которые находятся непосредственно рядом с текущим родительским узлом, и занятостью второй группы из четырех дочерних узлов текущего родительского узла прямо напротив первой группы. Другими словами, четыре дочерних узла первой группы соседнего родительского узла непосредственно примыкают к общей поверхности текущего родительского узла и соседнего родительского узла, а вторая группа находится в пределах текущего родительского узла и расположена непосредственно рядом с противоположной стороной текущего родительского узла. Каждая из групп предпочтительно определяет плоскость четырьмя дочерними узлами, при этом каждая из плоскостей перпендикулярна рассматриваемой геометрической оси и непосредственно примыкает к текущему вычисляемому дочернему узлу. Таким образом, может быть получено достаточно информации, чтобы обеспечить надежное предсказание вероятности наличия плоскости в текущем дочернем узле и вероятности ее положения.
[0037] Предпочтительно, для текущего положения плоскости, являющегося нижним положением плоскости, если по меньшей мере один дочерний узел первой группы занят, а вторая группа не занята, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0038] Предпочтительно, для текущего положения плоскости, являющегося нижним положением плоскости, если первая группа не занята и по меньшей мере один дочерний узел второй группы занят, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0039] Предпочтительно, для текущего положения плоскости, являющегося нижним положением плоскости, если первая группа не занята и вторая группа не занята, планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность нижней плоскости, если заняты по меньшей мере один или более дочерних узлов в соседнем родительском узле, которые не принадлежат к первой группе, и имеет значение «НЕИЗВЕСТНО» в противном случае.
[0040] Предпочтительно, для текущего положения плоскости, являющегося нижним положением плоскости, если занят по меньшей мере один дочерний узел первой группы и занят по меньшей мере один дочерний узел второй группы, причем #FirstGroup>#SecondGroup+1, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости, где #FirstGroup указывает количество занятых узлов в первой группе, a #SecondGroup указывает количество занятых узлов во второй группе.
[0041] Предпочтительно, для текущего положения плоскости, являющегося нижним положением плоскости, если занят по меньшей мере один дочерний узел первой группы и занят по меньшей мере один дочерний узел второй группы, причем #FirstGroup<#SecondGroup+1, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости, где #FirstGroup указывает количество занятых узлов в первой группе, a #SecondGroup указывает количество занятых узлов во второй группе.
[0042] Предпочтительно, если текущее положение плоскости является верхним, планарную контекстную информацию и контекстную информацию о положении плоскости определяют в соответствии с шаблоном занятости соседнего родительского узла, который находится вдоль рассматриваемой оси непосредственно после текущего родительского узла, и занятостью группы из четырех дочерних узлов текущего родительского узла, расположенных в плоскости, прямо перпендикулярной рассматриваемой оси, и рядом с текущим дочерним узлом. Другими словами, занятость дочерних узлов соседнего родительского узла, непосредственно примыкающего к (т.е. после) общей поверхности текущего родительского узла, неизвестна из-за порядка декодирования. Таким образом, занятость соседнего родительского узла, имеющего общую поверхность с текущим дочерним узлом, используется вместе с группой внутри текущего родительского узла, расположенной непосредственно рядом с противоположной стороной текущего дочернего узла, т.е. напротив соседнего родительского узла (т.е. перед ним в порядке кодирования/декодирования). Таким образом, группа дочерних узлов не включает текущий дочерний узел, подлежащий кодированию. При этом группа предпочтительно определяет плоскость четырьмя дочерними узлами, причем плоскость перпендикулярна рассматриваемой геометрической оси и непосредственно примыкает к текущему дочернему узлу, подлежащему вычислению, в пределах текущего родительского узла. Таким образом, может быть получено достаточно информации, чтобы обеспечить надежное предсказание вероятности наличия плоскости в текущем дочернем узле и вероятности ее положения.
[0043] Предпочтительно, для текущего положения плоскости, являющегося верхним положением плоскости, если по меньшей мере один дочерний узел группы занят, а соседний родительский узел не занят, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0044] Предпочтительно, для текущего положения плоскости, являющегося верхним положением плоскости, если группа не занята, а соседний родительский узел занят, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0045] Предпочтительно, для текущего положения плоскости, являющегося верхним положением плоскости, если группа не занята и соседний родительский узел не занят, планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность нижней плоскости, если заняты по меньшей мере один или более дочерних узлов в соседнем родительском узле вдоль рассматриваемой оси непосредственно перед текущим родительским узлом, и имеет значение «НЕИЗВЕСТНО» в противном случае.
[0046] Предпочтительно, для текущего положения плоскости, являющегося верхним положением плоскости, если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group>2, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости, где #Group указывает количество занятых узлов в группе. При этом предполагается, что статистически один дочерний узел в соседнем родительском узле занят.
[0047] Предпочтительно, для текущего положения плоскости, являющегося верхним положением плоскости, если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group<2, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости, где #Group указывает количество занятых узлов в группе.
[0048] Предпочтительно, для текущего положения плоскости, являющегося верхним положением плоскости, если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group=2, планарная контекстная информация включает вероятность отсутствия плоскости, и положение плоскости предполагается неизвестным, где #Group указывает количество занятых узлов в группе.
[0049] Предпочтительно, соседний родительский узел расположен вдоль одной из геометрических осей. Если планарную контекстную информацию вычисляют вдоль одной из геометрических осей X, Y, Z, тогда соседний родительский узел расположен вдоль этой конкретной оси непосредственно до или непосредственно после текущего родительского узла.
[0050] Предпочтительно, планарную контекстную информацию определяют вдоль всех трех геометрических осей. Таким образом, плоскости или поверхности, представленные точками облака точек, вычисляют вдоль каждой оси.
[0051] Предпочтительно, текущий родительский узел расположен относительно соседнего родительского узла в порядке декодирования. Во время декодирования последовательно вычисляют узлы структуры на основе октодерева. Таким образом, информация о шаблонах занятости в порядке декодирования перед текущим родительским узлом уже доступна и, таким образом, может использоваться для определения планарной контекстной информации для декодирования. В частности, порядок декодирования является в точности обратным порядку кодирования. Однако во время кодирования точное положение каждой точки в облаке точек уже известно.
[0052] В аспекте настоящего изобретения предлагается способ декодирования битового потока сжатых данных облака точек для создания реконструированного облака точек, причем геометрия облака точек представлена структурой на основе октодерева с множеством узлов, имеющих отношения родитель-потомок, посредством рекурсивного разделения объемного пространства, содержащего облако точек, на подобъемы, каждый из которых связан с узлом структуры на основе октодерева, при этом способ включает этапы:
[0053] определение режима кодирования, причем режим кодирования включает планарный режим кодирования и угловой режим кодирования;
[0054] получение контекстной информации кодирования для текущего дочернего узла, при этом,
если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает планарную контекстную информацию, при этом планарную контекстную информацию текущего дочернего узла определяют в соответствии с шаблоном занятости текущего родительского узла и шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом;
если режим кодирования представляет собой угловой режим кодирования, контекстная информация кодирования текущего дочернего узла включает планарную информацию текущего родительского узла и занятость соседнего по вертикали родительского узла, смежного с текущим родительским узлом; и
[0055] энтропийное декодирование битового потока на основе контекстной информации текущего дочернего узла для реконструкции облака точек.
[0056] Для планарного режима кодирования текущий родительский узел и соседний родительский узел находятся на одной и той же глубине D дерева. Из-за своих положений текущий родительский узел и соседний родительский узел имеют общую поверхность. Для текущего дочернего узла, являющегося непосредственным потомком текущего родительского узла на глубине D+1 дерева, планарную контекстную информацию определяют в зависимости от шаблона занятости текущего родительского узла и по меньшей мере одного соседнего родительского узла. При этом планарная контекстная информация включает информацию о возможной плоскости или поверхности, представленной облаком точек и проходящей через текущий дочерний узел. Таким образом, информация о занятости по меньшей мере одного непосредственного соседа данного родительского узла рассматривается как контекстная информация для энтропийного кодирования.
[0057] Вместо углового режима кодирования реализован более эффективный планарный контекстный режим. По сравнению с планарной контекстной информацией планарного режима кодирования рассматривается только та информация, которая доступна в редких облаках точек.
[0058] Как следствие, могут быть сделаны более надежные предсказания занятости текущего дочернего узла, которые можно использовать для увеличения сокращения данных с помощью энтропийного кодера. Таким образом, выполняется обход всего дерева для определения занятости каждого узла и предоставления достаточной контекстной информации для энтропийного кодера.
[0059] Предпочтительно, способ декодирования строится согласно признакам, описанным выше в отношении способа кодирования. Эти признаки можно свободно сочетать со способом декодирования.
[0060] В одном из аспектов настоящего изобретения предусмотрен кодер для кодирования облака точек для создания битового потока сжатых данных облака точек, причем геометрия облака точек представлена структурой на основе октодерева с множеством узлов, имеющих отношения родитель-потомок, путем рекурсивного разделения объемного пространства, содержащего облако точек, на подобъемы, каждый из которых связан с узлом структуры на основе октодерева, при этом кодер содержит:
[0061] процессор и
[0062] запоминающее устройство, в котором хранятся инструкции, исполняемые процессором, которые при их исполнении обеспечивают выполнение процессором способа в соответствии с описанными выше способами кодирования и декодирования.
[0063] В одном из аспектов настоящего изобретения предусмотрен декодер для декодирования битового потока сжатых данных облака точек для создания реконструированного облака точек, причем геометрия облака точек представлена структурой на основе октодерева с множеством узлов, имеющих отношения родитель-потомок, путем рекурсивного разделения объемного пространства, содержащего облако точек, на подобъемы, каждый из которых связан с узлом структуры на основе октодерева, при этом декодер содержит:
[0064] процессор и
[0065] запоминающее устройство, в котором хранятся инструкции, исполняемые процессором, которые при их исполнении обеспечивают выполнение процессором описанного выше способа декодирования.
[0066] В одном из аспектов настоящего изобретения предоставляется машиночитаемый носитель для хранения данных, хранящий исполняемые процессором инструкции, которые при их исполнении процессором обеспечивают выполнение процессором описанного выше способа кодирования и/или декодирования.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0067] Теперь в качестве примера будет сделана ссылка на прилагаемые чертежи, на которых показаны примеры осуществления настоящего изобретения:
[0068] фиг. 1 структурная схема, показывающая общий вид кодера облака точек,
[0069] фиг. 2 - структурная схема, показывающая общий вид декодера облака точек,
[0070] фиг. 3 схематическая иллюстрация структуры данных октодерева,
[0071] фиг. 4 - нумерация восьми подузлов в каждом узле,
[0072] фиг. 5 - соседи узла с известной информацией о занятости,
[0073] фиг. 6 иллюстрация контекстной информации,
[0074] фиг. 7А-7С подробный вариант осуществления настоящего изобретения,
[0075] фиг. 8А-8С подробный вариант осуществления настоящего изобретения,
[0076] фиг. 9А-9С - подробный вариант осуществления настоящего изобретения,
[0077] фиг. 10А и 10В блок-схемы, иллюстрирующие этапы первого и второго вариантов осуществления настоящего изобретения,
[0078] фиг. 11 - схема устройства кодера,
[0079] фиг. 12 - схема устройства декодера.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0080] Настоящая заявка описывает способы кодирования и декодирования облаков точек, а также кодеры и декодеры для кодирования и декодирования облаков точек. Текущий родительский узел, связанный с подобъемом, разделяется на последующие подобъемы, каждый последующий подобъем соответствует дочернему узлу текущего родительского узла, и в кодере определяется шаблон занятости для текущего родительского узла на основе состояния занятости дочерних узлов. Планарная контекстная информация определяется из шаблона занятости текущего родительского узла и шаблона занятости соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом. Энтропийный кодер кодирует шаблон занятости на основе определенной планарной контекстной информации для создания кодированных данных для битового потока. Декодер определяет ту же самую планарную контекстную информацию и энтропийно декодирует битовый поток, чтобы реконструировать шаблон занятости.
[0081] Другие аспекты и признаки настоящего изобретения будут понятны специалистам в данной области техники из прочтения последующего описания примеров в сочетании с сопровождающими чертежами.
[0082] Иногда в приведенном ниже описании термины «узел» и «подобъем» могут использоваться взаимозаменяемо. Следует понимать, что узел связан с подобъемом. Узел - это определенная точка дерева, которая может быть внутренним узлом или листовым узлом. Подобъем это ограниченное физическое пространство, которое представляет узел. Термин «объем» может использоваться для обозначения наибольшего ограниченного пространства, определенного для содержания облака точек. Объем рекурсивно делится на подобъемы для построения древовидной структуры взаимосвязанных узлов для кодирования данных облака точек.
[0083] Облако точек - это набор точек в трехмерной системе координат. Точки часто предназначены для представления внешней поверхности одного или более объектов. Каждая точка имеет местоположение (положение) в трехмерной системе координат. Положение может быть представлено тремя координатами (X, Y, Z), которые могут быть декартовой или любой другой системой координат. Точки могут иметь другие связанные атрибуты, такие как цвет, который в некоторых случаях также может быть трехкомпонентным значением, например R, G, В или Y, Cb, Cr. Другие связанные атрибуты могут включать прозрачность, отражательную способность, вектор нормали и т.д., в зависимости от требуемого приложения для данных облака точек.
[0084] Облака точек могут быть статическими или динамическими. Например, подробное сканирование, или картографирование объекта, или топография могут предоставлять данные статического облака точек. Сканирование окружающей среды на основе LiDAR для целей машинного зрения может быть динамическим в том смысле, что облако точек (по меньшей мере потенциально) меняется со временем, например, при каждом последующем сканировании объема. Таким образом, динамическое облако точек представляет собой упорядоченную во времени последовательность облаков точек.
[0085] Данные облака точек могут использоваться в ряде приложений, включая сохранение (сканирование исторических или культурных объектов), картографирование, машинное зрение (например, автономные или полуавтономные автомобили) и системы виртуальной реальности, в качестве некоторых примеров. Данные динамического облака точек для таких приложений, как машинное зрение, могут сильно отличаться от данных статического облака точек, используемого, например, для целей сохранения. Автомобильное зрение, например, обычно включает относительно низкое разрешение, бесцветные и высокодинамичные облака точек, полученные с помощью датчиков LiDAR (или аналогичных датчиков) с высокой частотой захвата. Целью таких облаков точек является не использование или просмотр человеком, а машинное обнаружение/классификация объектов в процессе принятия решений. Например, типичные кадры LiDAR содержат порядка десятков тысяч точек, тогда как для высококачественных приложений виртуальной реальности требуется несколько миллионов точек. Можно ожидать, что со временем возникнет спрос на данные с более высоким разрешением по мере увеличения скорости вычислений и по мере поиска новых приложений.
[0086] Хотя данные облака точек полезны, отсутствие эффективного и действенного сжатия, то есть процессов кодирования и декодирования, может препятствовать их принятию и распространению.
[0087] Одним из наиболее распространенных механизмов кодирования данных облака точек является использование древовидных структур. В древовидной структуре ограничивающий трехмерный объем для облака точек рекурсивно делится на подобъемы. Узлы дерева соответствуют подобъемам. Решение о том, следует ли далее делить подобъем, может быть основано на разрешающей способности дерева и/или наличии точек, содержащихся в подобъеме. Листовой узел может иметь флаг занятости, который указывает, содержит ли связанный с ним подобъем точку или нет. Флаги разделения могут сигнализировать о том, есть ли у узла дочерние узлы (т.е. был ли текущий объем разделен на подобъемы). В некоторых случаях эти флаги могут энтропийно кодироваться, а в некоторых случаях может использоваться кодирование с пр еде казание м.
[0088] Обычно используемой древовидной структурой является октодерево. В этой структуре все объемы/подобъемы являются кубами, и каждое разделение подобъема приводит к восьми последующим подобъемам/подкубам. Пример такой древовидной структуры показан на фиг. 3 с узлом 30, который может представлять объем, содержащий полное облако точек. Этот объем разделен на восемь подобъемов 32, каждый из которых связан с узлом в октодереве на фиг. 3. Точки в узлах указывают занятые узлы 34, содержащие по меньшей мере одну точку 35 облака точек, в то время как пустые узлы 36 представляют подобъемы без точек облаков точек. Как показано на фиг. 3, занятые узлы могут быть далее разделены на восемь подобъемов, связанных с дочерними узлами 38 конкретного родительского узла 40, для определения шаблона занятости родительского узла 40. Как показано на фиг. 3, шаблон занятости приведенного в качестве примера родительского узла 40 может быть представлен как «00100000» в двоичной форме, что указывает на занятый третий дочерний узел 38. В некоторых реализациях этот шаблон занятости кодируется двоичным энтропийным кодером для создания битового потока данных облака точек.
[0089] Теперь обратимся к фиг. 1, на которой показана упрощенная структурная схема кодера 10 облака точек в соответствии с аспектами настоящего изобретения. Кодер 10 облака точек принимает данные облака точек и может включать модуль построения дерева для создания октодерева, представляющего геометрию объемного пространства, содержащего облако точек и указывающего местоположение или положение точек из облака точек в этой геометрии.
[0090] Базовый процесс создания октодерева для кодирования облака точек может включать следующие действия:
[0091] Начните с ограничивающего объема (куба), содержащего облако точек в системе координат;
[0092] Разделите объем на 8 подобъемов (восемь подкубов);
[0093] Для каждого подобъема отметьте подобъем числом 0, если подобъем пуст, или числом 1, если в нем есть по меньшей мере одна точка;
[0094] Для всех подобъемов, отмеченных числом 1, повторите этап (2), чтобы разделять эти подобъемы до тех пор, пока не будет достигнута максимальная глубина разделения; и
[0095] Для всех листовых подобъемов (подкубов) максимальной глубины отметьте листовой куб числом 1, если он непустой, и числом 0 в противном случае.
[0096] Дерево может быть пройдено в заранее заданном порядке (сначала в ширину или в глубину и в соответствии с шаблоном/порядком сканирования в каждом разделенном подобъеме) для получения последовательности битов, представляющих шаблон занятости каждого узла.
[0097] Затем эта последовательность битов может кодироваться с использованием энтропийного кодера 16 для создания сжатого битового потока 14. Энтропийный кодер 16 может кодировать последовательность битов с использованием контекстной модели 18, которая определяет вероятности кодирования битов на основе определения контекста энтропийным кодером. 16. Контекстная модель 18 может адаптивно обновляться после кодирования каждого бита или заданного набора битов.
[0098] Как и в случае с кодированием видео или изображений, кодирование облака точек может включать операции предсказания, в которых предпринимаются попытки предсказания шаблона для подобъема, а остаток предсказания кодируется вместо самого шаблона. Предсказания могут быть пространственными (зависящими от ранее кодированных подобъемов в том же облаке точек) или временными (зависящими от ранее кодированных облаков точек в упорядоченной во времени последовательности облаков точек).
[0099] Структурная схема примера декодера 20 облака точек, который соответствует кодеру 10, показана на фиг. 2. Декодер 20 облака точек содержит энтропийный декодер 22, использующий ту же контекстную модель 24, которая используется кодером 10. Энтропийный декодер 22 принимает входной битовый поток 26 сжатых данных и энтропийно декодирует данные для создания выходной последовательности распакованных битов. Затем последовательность преобразуется в данные реконструированныго облака точек с помощью реконструктора дерева. Реконструктор дерева восстанавливает древовидную структуру 28 из распакованных данных и сведений о порядке сканирования, в котором древовидные данные были преобразованы в двоичную форму. Таким образом, реконструктор дерева может реконструировать расположение точек из облака точек.
[0100] На фиг. 4 показан родительский узел 112, разделенный на восемь его дочерних узлов 110, представляющих собой кубы 2×2×2, каждый из которых имеет одинаковый размер и длину ребра, равную половине длины ребра куба, связанного с родительским узлом 112. Кроме того, на фиг. 4 указана используемая нумерация дочерних узлов 110 в родительском узле 112. Система нумерации, показанная на фиг. 4, будет использоваться в дальнейшем. На фиг. 4 также указана пространственная ориентация показанного родительского узла 112 в трехмерном пространстве, обозначенном геометрическими осями X, Y, Z.
[0101] При этом шаблон занятости может включать планарную информацию о вероятности того, занят ли определенный узел, поскольку точка в этом узле принадлежит поверхности. Обычно в реальности преобладают закрытые поверхности. Это особенно верно для внутренних помещений, но также верно и для городских наружных сцен. Этот факт используется энтропийным кодером и декодером. Если поверхность, представленная облаком точек, может быть обнаружена, могут быть сделаны предсказания о распределении точек на этой поверхности и, таким образом, вероятности занятости определенного узла, принадлежащего этой поверхности. Это может быть сделано путем определения контекстной информации, используемой для кодирования и декодирования битового потока, с использованием флага isPlanar. Планарная контекстная информация обычно представляет собой двоичное значение, причем установленный флаг isPlanar (isPlanar=1) для определенного узла интерпретируется как преобладающая вероятность того, что этот узел принадлежит определенной поверхности. В дополнение к простому факту наличия поверхности в узле может быть рассмотрена дополнительная планарная информация, такая как информация о положении плоскости, реализуемая флагом planePosition, указывающим положение плоскости в текущем дочернем узле. planePosition-flag также может быть двоичным значением, имеющим значения «верхнее» и «нижнее», относящиеся к соответствующему положению. Эта планарная информация используется для кодирования в битовый поток посредством использования планарной контекстной информации энтропийным кодером/декодером, что уменьшает объем данных битового потока.
[0102] Кроме того, существуют дополнительные режимы кодирования, которые применяются к различным типам облаков точек с использованием также различной контекстной информации. Таким образом, определены планарный режим кодирования и угловой режим кодирования. Угловой режим кодирования предпочтительно применяется к редким облакам точек, при этом целью является предоставление угловой контекстной информации энтропийному кодеру/декодеру. Режим кодирования может быть указан в метаданных битового потока.
[0103] Таким образом, в соответствии с настоящим изобретением, в случае планарного режима кодирования, контекстная информация включает планарную контекстную информацию и контекстную информацию о положении плоскости, как указано выше. При этом планарную контекстную информацию определяют в соответствии с шаблоном занятости текущего родительского узла текущего дочернего узла, подлежащего кодированию, и в соответствии с шаблоном занятости по меньшей мере одного из соседних узлов, как более подробно описано ниже. Кроме того, контекстная информация о положении плоскости показана на фиг. 6. Контекстная информация о положении плоскости включает информацию:
a) Расстояние d от ближайшего уже закодированного узла 121 с той же координатой и глубиной D в структуре октодерева; d имеет три дискретных значения: «близко», или «не слишком далеко», или «далеко»;
b) Положение плоскости (если есть) ближайшего уже закодированного узла 121 с той же координатой и глубиной (нижнее или верхнее);
c) Положение плоскости текущего дочернего узла в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла, как более подробно описано ниже.
[0104] При этом планарная контекстная информация имеет размер 1 бит (плоскость или отсутствие плоскости), а контекстная информация о положении плоскости представляет собой информацию размером 3×2×2 бита.
[0105] Кроме того, в соответствии с настоящим изобретением, в случае углового режима кодирования, контекстная информация включает планарную контекстную информацию и контекстную информацию о положении плоскости, как указано выше. При этом планарная контекстная информация включает:
a) isPlanar-flag текущего родительского узла, т.е. присутствует ли плоскость в текущем родительском узле; и
b) занятость соседнего по вертикали родительского узла 124, смежного с текущим родительским узлом.
[0106] Кроме того, контекстная информация о положении плоскости для углового режима кодирования включает информацию:
a) planePosition уже доступных узлов, которые идентифицируются относительно угла между ними и текущим дочерним узлом.
[0107] Теперь обратимся к фиг. 5, показывающей текущий родительский узел 100 с двумя дочерними узлами 102, 103, показанными как занятые узлы, т.е. подобъемы двух дочерних узлов содержат каждый по меньшей мере одну точку облака точек. Кроме того, на фиг. 5 показаны соседние родительские узлы 104, 106, 108, каждый из которых содержит по меньшей мере один занятый дочерний узел. При этом перед предсказанием планарной контекстной информации дочерних узлов 102, 103 на определенном уровне октодерева информация о занятости трех смежных соседних родительских узлов 104, 106, 108 на том же уровне D в октодереве, что и текущий родительский узел 100, известна на стороне декодера. Благодаря заданному порядку декодирования при вычислении дочерних узлов 102, 103 текущего родительского узла 100 информация о соседних родительских узлах 104, 108, 106 уже известна на стороне декодера и может использоваться для определения контекстной информации. Поскольку эти три соседних родительских узла 104, 106, 108 являются соседними с текущими дочерними узлами 102, 103, существует корреляция между шаблоном занятости этих соседних родительских узлов 104, 106, 108 и текущими дочерними узлами 102, 103, подлежащими кодированию. Здесь шаблон занятости относится к занятости дочернего узла соответствующего родительского узла. Эту информацию легко получить, но в настоящее время она не используется в существующих способах кодирования и декодирования. Например, при вычислении контекстной информации текущего дочернего узла 102 вдоль оси X может быть рассмотрен непосредственно соседний родительский узел 104 вдоль оси X. Далее, как объяснялось выше, рассматривается непосредственно смежный родительский узел, который находится в порядке декодирования перед текущим родительским узлом. Таким образом, во время декодирования шаблон занятости предшествующих узлов известен декодеру и может использоваться для определения контекстной информации. Если контекстную информацию вычисляют вдоль оси Y, может быть рассмотрен соседний родительский узел 106 вдоль оси Y, расположенный рядом с текущим родительским узлом 100. Эта информация также известна декодеру и может быть легко использована для получения надежной планарной контекстной информации для текущего дочернего узла 102.
[0108] Однако при рассмотрении корреляции между занятостью текущего дочернего узла и шаблоном занятости по меньшей мере одного соседнего родительского узла также необходимо учитывать положение кодируемого текущего дочернего узла. Таким образом, определяют текущее положение плоскости для текущего дочернего узла. При этом текущее положение плоскости указывает плоскость текущего дочернего узла в пределах текущего родительского узла вдоль рассматриваемой оси и плоскость, перпендикулярную этой геометрической оси. Например, вдоль оси X первая нижняя плоскость определяется дочерними узлами 0-3, а верхняя плоскость определяется дочерними узлами 4-7. Вдоль оси Y нижняя плоскость определяется дочерними узлами 0, 1, 4, 5, а верхняя плоскость - дочерними узлами 2, 3, 6, 7. Вдоль оси Z нижняя плоскость определяется дочерними узлами 0, 2, 4, 6, а верхняя плоскость - дочерними узлами 1, 3, 5, 7. Таким образом, в примере на фиг. 5 дочерний узел 102 вдоль оси X имеет текущее положение плоскости, представляющее собой нижнее положение плоскости, а дочерний узел 103 вдоль оси X имеет текущее положение плоскости, представляющее собой верхнее положение плоскости.
[0109] Теперь обратимся к фиг. 7, показывающей конфигурацию того, как определить планарную контекстную информацию и контекстную информацию о положении плоскости из занятости соседних узлов текущего дочернего узла, которые затем можно использовать при энтропийном кодировании для сжатия данных облака точек. В этом отношении задачей настоящего изобретения является рассмотрение шаблона занятости родительских соседних узлов по отношению к текущему дочернему узлу 120 и включение такой информации в контекстную информацию при кодировании планарной информации. При этом фиг. 7 относится к ситуации, когда текущий дочерний узел, подлежащий кодированию, находится в нижнем положении текущего родительского узла.
[0110] На фиг. 7А показано определение планарной контекстной информации вдоль оси X. Планарная контекстная информация текущего дочернего узла 120 должна быть вычислена. Следовательно, вычисляется шаблон занятости текущего родительского узла 122, а также соседнего родительского узла 123, непосредственно примыкающего к текущему родительскому узлу 122. При этом соседний родительский узел 124 расположен вдоль оси X, подлежащей вычислению. Кроме того, соседний родительский узел 124 расположен перед текущим родительским узлом 122 в порядке декодирования. Таким образом, после декодирования текущего родительского узла 122 вся информация о соседнем родительском узле 124 уже доступна. Кроме того, также во время кодирования информации о занятости текущего дочернего узла 120 также известна информация о соседнем родительском узле 124, поскольку положения и, следовательно, шаблон занятости облака точек полностью известны кодеру.
[0111] В частности, чтобы определить контекстную информацию текущего дочернего узла 120, рассматривают первую группу 126 дочерних узлов, являющихся дочерними узлами соседнего родительского узла 124, и вторую группу 128 дочерних узлов, являющихся дочерними узлами текущего родительского узла 122. При этом четыре дочерних узла первой группы 126 соседнего родительского узла 124 находятся непосредственно рядом с текущим родительским узлом 122 и примыкают к нему. Таким образом, каждый из дочерних узлов первой группы 126 имеет общую поверхность с текущим родительским узлом 122. Вторая группа 128 из четырех дочерних узлов текущего родительского узла 122 находится прямо напротив первой группы. Таким образом, четырьмя дочерними узлами второй группы 128 формируется боковая поверхность текущего родительского узла 122, которая прямо противоположна боковой поверхности, являющейся общей поверхностью между соседним родительским узлом 124 и текущим родительским узлом 122. Другими словами, с помощью первой группы 126 и второй группы 128 определены плоскости, которые находятся по обеим сторонам текущего дочернего узла 120 и перпендикулярны рассматриваемой оси. Таким образом, посредством этих двух плоскостей может быть обеспечено надежное определение контекстной информации. Поверхность в облаке точек, проходящая через текущий дочерний узел 120, также с высокой вероятностью проходит через одну из плоскостей, определенных первой группой 126 или второй группой 128, и, таким образом, контекстная информация текущего дочернего узла 120 сильно зависит от занятости первой группы 126 и/или занятости второй группы 128.
[0112] Вообще говоря, для случая, когда текущее положение плоскости является нижним, если по меньшей мере один дочерний узел первой группы занят, а вторая группа не занята, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости. Если первая группа не занята и по меньшей мере один дочерний узел второй группы занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости. Если первая группа не занята и вторая группа не занята, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижней плоскости, если заняты по меньшей мере один или более дочерних узлов в соседнем родительском узле, которые не принадлежат к первой группе, и имеет значение «НЕИЗВЕСТНО» в противном случае. Если занят по меньшей мере один дочерний узел первой группы и занят по меньшей мере один дочерний узел второй группы, причем #FirstGroup>#SecondGroup+1, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости. Если занят по меньшей мере один дочерний узел первой группы и занят по меньшей мере один дочерний узел второй группы, причем #FirstGroup<#SecondGroup+1, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости. Здесь #FirstGroup указывает количество занятых узлов в первой группе, а #SecondGroup указывает количество занятых узлов во второй группе.
[0113] Более конкретно, для вычисления вдоль оси X с использованием системы нумерации, показанной на фиг. 4:
[0114] Если по меньшей мере один из дочерних узлов 4-7 первой группы занят, а дочерние узлы 4-7 второй группы не заняты, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0115] Если дочерние узлы 4-7 первой группы не заняты и по меньшей мере один из дочерних узлов 4-7 второй группы занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0116] Если дочерние узлы 4-7 первой группы не заняты и дочерние узлы 4-7 второй группы не заняты, планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность наличия нижней плоскости, если заняты по меньшей мере один или более дочерних узлов 0-3 в соседнем родительском узле, и имеет значение «НЕИЗВЕСТНО» в противном случае.
[0117] Если по меньшей мере один из дочерних узлов 4-7 первой группы занят и по меньшей мере один из дочерних узлов 4-7 второй группы занят, причем #FirstGroup>#SecondGroup+1, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0118] Если по меньшей мере один из дочерних узлов 4-7 первой группы занят и по меньшей мере один из дочерних узлов 4-7 второй группы занят, причем #FirstGroup<#SecondGroup+1, планарная контекстная информация включает вероятность наличия плоскости, и контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0119] Таким образом, для кодирования вероятность наличия или отсутствия плоскости, перпендикулярной оси X, в текущем дочернем узле рассматривается как контекстная информация при выполнении энтропийного кодирования для текущего положения плоскости, являющегося нижним положением. При этом информация может использоваться как планарная контекстная информация в планарном режиме кодирования и угловом режиме кодирования и может быть включена в качестве контекстной информации о положении плоскости в планарном режиме кодирования.
[0120] Для вычисления вдоль оси Y в соответствии с фиг. 7В для определения планарной контекстной информации текущего дочернего узла 120 устанавливают следующее:
[0121] Если по меньшей мере один из дочерних узлов 2, 3, 6, 7 первой группы занят, а дочерние узлы 2, 3, 6, 7 второй группы не заняты, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0122] Если дочерние узлы 2, 3, 6, 7 первой группы не заняты и по меньшей мере один из дочерних узлов 2, 3, 6, 7 второй группы занят, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0123] Если дочерние узлы 2, 3, 6, 7 первой группы не заняты и дочерние узлы 2, 3, 6, 7 второй группы не заняты, планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность нижней плоскости, если заняты по меньшей мере один или более дочерних узлов 0, 1, 4, 5 в соседнем родительском узле, и имеет значение «НЕИЗВЕСТНО» в противном случае.
[0124] Если занят по меньшей мере один из дочерних узлов 2, 3, 6, 7 первой группы и занят по меньшей мере один из дочерних узлов 2, 3, 6, 7 второй группы, причем #FirstGroup>#SecondGroup+1, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0125] Если занят по меньшей мере один из дочерних узлов 2, 3, 6, 7 первой группы и занят по меньшей мере один из дочерних узлов 2, 3, 6, 7 второй группы, причем #FirstGroup<#SecondGroup+1, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0126] Таким образом, для кодирования вероятность наличия или отсутствия плоскости, перпендикулярной оси Y, в текущем дочернем узле рассматривается как контекстная информация при выполнении энтропийного кодирования для текущего положения плоскости, являющегося нижним положением. При этом информация может использоваться как планарная контекстная информация в планарном режиме кодирования и угловом режиме кодирования и может быть включена в качестве контекстной информации о положении плоскости в планарном режиме кодирования.
[0127] Для вычисления вдоль оси Z в соответствии с фиг. 7С для определения планарной контекстной информации текущего дочернего узла 120 устанавливают следующее:
[0128] Если по меньшей мере один из дочерних узлов 1, 3, 5, 7 первой группы занят, а дочерние узлы 1, 3, 5, 7 второй группы не заняты, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0129] Если дочерние узлы 1, 3, 5, 7 первой группы не заняты и по меньшей мере один из дочерних узлов 1, 3, 5, 7 второй группы занят, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0130] Если дочерние узлы 1, 3, 5, 7 первой группы не заняты и дочерние узлы 1, 3, 5, 7 второй группы не заняты, планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность нижней плоскости, если заняты по меньшей мере один или более дочерних узлов 0, 2, 4, 6 в соседнем родительском узле, и имеет значение «НЕИЗВЕСТНО» в противном случае.
[0131] Если занят по меньшей мере один из дочерних узлов 1, 3, 5, 7 первой группы и занят по меньшей мере один из дочерних узлов 1, 3, 5, 7 второй группы, причем #FirstGroup>#SecondGroup+1, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0132] Если занят по меньшей мере один из дочерних узлов 1, 3, 5, 7 первой группы и занят по меньшей мере один из дочерних узлов 1, 3, 5, 7 второй группы, причем #FirstGroup<#SecondGroup+1, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0133] Таким образом, для кодирования вероятность наличия или отсутствия плоскости, перпендикулярной оси Z, в текущем дочернем узле рассматривается как контекстная информация при выполнении энтропийного кодирования для текущего положения плоскости, являющегося нижним положением. При этом информация может использоваться как планарная контекстная информация в планарном режиме кодирования и угловом режиме кодирования и может быть включена в качестве контекстной информации о положении плоскости в планарном режиме кодирования.
[0134] Как указано выше, ситуация отличается, если текущее положение плоскости для текущего дочернего узла, подлежащего кодированию, является верхним положением плоскости. Текущий дочерний узел находится рядом с соседним родительским узлом, следующим за текущим родителем в порядке кодирования. В этом случае занятость дочерних узлов соседнего родителя неизвестна, и для определения контекстной информации можно использовать только занятость самого соседнего родительского узла.
[0135] В частности, если текущее положение плоскости является верхним, планарную контекстную информацию и контекстную информацию о положении плоскости определяют в соответствии с занятостью соседнего родительского узла, который находится вдоль рассматриваемой оси непосредственно после текущего родительского узла, и в соответствии с занятостью группы из четырех дочерних узлов текущего родительского узла, расположенных в плоскости, прямо перпендикулярной рассматриваемой оси, и рядом с текущим дочерним узлом. Другими словами, занятость дочерних узлов соседнего родительского узла, непосредственно примыкающего к общей поверхности текущего родительского узла, обычно неизвестна из-за порядка декодирования. Таким образом, занятость самого соседнего родительского узла, имеющего общую поверхность с текущим дочерним узлом, используют вместе с группой 132 внутри текущего родительского узла 122, расположенной непосредственно рядом с противоположной стороной текущего родительского узла 122, т.е. напротив соседнего родительского узла 130. При этом группа 132 предпочтительно определяет плоскость четырьмя дочерними узлами, причем плоскость перпендикулярна рассматриваемой геометрической оси и непосредственно примыкает к текущему дочернему узлу, подлежащему вычислению, в пределах текущего родительского узла.
[0136] Вообще говоря, для случая, когда текущее положение плоскости является нижним, если по меньшей мере один дочерний узел группы 132 занят, а соседний родительский узел 130 не занят, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация положения плоскости включает вероятность нижнего положения плоскости. Если группа 132 не занята, а соседний родительский узел 130 занят, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости. Если группа 132 не занята и соседний родительский узел 130 не занят, планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность нижней плоскости, если заняты по меньшей мере один или более дочерних узлов 136 в соседнем родительском узле 134 вдоль рассматриваемой оси непосредственно перед текущим родительским узлом 122, и имеет значение «НЕИЗВЕСТНО» в противном случае. Если по меньшей мере один дочерний узел группы 132 занят и соседний родительский узел 130 занят, причем #Group>2, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости. Если по меньшей мере один дочерний узел группы 132 занят и соседний родительский узел 130 занят, причем #Group<2, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости. Если по меньшей мере один дочерний узел группы 132 занят и соседний родительский узел 130 занят, причем #Group=2, планарная контекстная информация включает вероятность того, что плоскости нет, и, следовательно, положение плоскости неизвестно. Здесь #Group указывает количество занятых дочерних узлов в группе 132.
[0137] Более конкретно, для вычисления по оси X со ссылкой на фиг. 8А:
[0138] Если по меньшей мере один из дочерних узлов 0-3 группы 132 занят, а соседний родительский узел 130 не занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0139] Если дочерние узлы 0-3 группы 132 не заняты, а соседний родительский узел 130 занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0140] Если дочерние узлы 0-3 группы 132 не заняты и соседний родительский узел 130 не занят, то планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность нижней плоскости, если заняты по меньшей мере один или более дочерних узлов 4-7 в соседнем родительском узле 134 вдоль рассматриваемой оси непосредственно перед текущим родительским узлом 122, как показано на фиг. 9А, и имеет значение «НЕИЗВЕСТНО» в противном случае.
[0141] Если по меньшей мере один из дочерних узлов 0-3 группы 132 занят и соседний родительский узел 130 занят, причем #Group>2, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0142] Если по меньшей мере один из дочерних узлов 0-3 группы 132 занят и соседний родительский узел 130 занят, причем #Group<2, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0143] Если по меньшей мере один из дочерних узлов 0-3 группы 132 занят и соседний родительский узел 130 занят, причем #Group=2, планарная контекстная информация включает вероятность отсутствия плоскости, а положение плоскости предполагается неизвестным. Здесь #Group указывает количество занятых узлов в группе.
[0144] Таким образом, для кодирования вероятность наличия или отсутствия плоскости, перпендикулярной оси X, в текущем дочернем узле 120 рассматривается как контекстная информация при выполнении энтропийного кодирования для текущего положения плоскости, являющегося нижним положением. При этом информация может использоваться как планарная контекстная информация в планарном режиме кодирования и угловом режиме кодирования и может быть включена в качестве контекстной информации о положении плоскости в планарном режиме кодирования.
[0145] Для вычисления по оси Y в соответствии с фиг. 8В для определения планарной контекстной информации текущего дочернего узла 120 устанавливают следующее:
[0146] Если по меньшей мере один из дочерних узлов 0, 1, 4, 5 группы 132 занят, а соседний родительский узел 130 не занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0147] Если дочерние узлы 0, 1, 4, 5 группы 132 не заняты, а соседний родительский узел 130 занят, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0148] Если дочерние узлы 0, 1, 4, 5 группы 132 не заняты и соседний родительский узел 130 не занят, то планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность нижней плоскости, если заняты по меньшей мере один или более дочерних узлов 2, 3, 6, 7 в соседнем родительском узле 134 вдоль рассматриваемой оси непосредственно перед текущим родительским узлом 122, как показано на фиг. 9 В, и имеет значение «НЕИЗВЕСТНО» в противном случае.
[0149] Если по меньшей мере один из дочерних узлов 0, 1, 4, 5 группы 132 занят и соседний родительский узел 130 занят, причем #Group>2, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0150] Если по меньшей мере один из дочерних узлов 0, 1, 4, 5 группы 132 занят и соседний родительский узел 130 занят, причем #Group<2, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0151] Если по меньшей мере один из дочерних узлов 0, 1, 4, 5 группы 132 занят и соседний родительский узел 130 занят, причем #Group=2, планарная контекстная информация включает вероятность отсутствия плоскости, и положение плоскости предполагается неизвестным. Здесь #Group указывает количество занятых узлов в группе.
[0152] Таким образом, для кодирования вероятность наличия или отсутствия плоскости, перпендикулярной оси Y, в текущем дочернем узле 120 рассматривается как контекстная информация при выполнении энтропийного кодирования для текущего положения плоскости, являющегося нижним положением. При этом информация может использоваться как планарная контекстная информация в планарном режиме кодирования и угловом режиме кодирования и может быть включена в качестве контекстной информации о положении плоскости в планарном режиме кодирования.
[0153] Для вычисления по оси Z в соответствии с фиг. 8С для определения планарной контекстной информации текущего дочернего узла 120 устанавливают следующее:
[0154] Если по меньшей мере один из дочерних узлов 0, 2, 4, 6 группы 132 занят, а соседний родительский узел 130 не занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0155] Если дочерние узлы 0, 2, 4, 6 группы 132 не заняты, а соседний родительский узел 130 занят, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0156] Если дочерние узлы 0, 2, 4, 6 группы 132 не заняты и соседний родительский узел 130 не занят, то планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность наличия нижней плоскости, если заняты по меньшей мере один или более дочерних узлов 1, 3, 5, 7 в соседнем родительском узле 134 вдоль рассматриваемой оси непосредственно перед текущим родительским узлом 122, как показано на фиг. 9С, и имеет значение «НЕИЗВЕСТНО» в противном случае.
[0157] Если по меньшей мере один из дочерних узлов 0, 2, 4, 6 группы 132 занят и соседний родительский узел 130 занят, причем #Group>2, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0158] Если по меньшей мере один из дочерних узлов 0, 2, 4, 6 группы 132 занят и соседний родительский узел 130 занят, причем #Group<2, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0159] Если по меньшей мере один из дочерних узлов 0, 2, 4, 6 группы 132 занят и соседний родительский узел 130 занят, причем #Group=2, планарная контекстная информация включает вероятность отсутствия плоскости, и положение плоскости предполагается неизвестным. Здесь #Group указывает количество занятых узлов в группе 132.
[0160] Таким образом, для кодирования вероятность наличия или отсутствия плоскости, перпендикулярной оси Y, в текущем дочернем узле рассматривается как контекстная информация при выполнении энтропийного кодирования для текущего положения плоскости, являющегося нижним положением. При этом информация может использоваться как планарная контекстная информация в планарном режиме кодирования и угловом режиме кодирования и может быть включена в качестве контекстной информации о положении плоскости в планарном режиме кодирования.
[0161] Подводя итог, можно сказать, что во всех случаях устанавливается надежная модель планарной контекстной информации, которую можно использовать для энтропийного кодирования, чтобы учитывать появление поверхности или плоскости в соответствующих узлах и использовать эти знания для достоверного предсказания занятости узлов для сжатия данных энтропийным кодером/декодером.
[0162] При некоторых обстоятельствах невозможно или бесполезно реализовать упомянутый выше набор контекстной информации. Таким образом, для контекстной информации о положении плоскости в планарном режиме кодирования настоящая спецификация GPCC предлагает использовать конкретную контекстную модель с использованием оператора axisldx (значения=0, 1 или 2), идентифицирующего ось, перпендикулярную плоскости кодирования planePosition, если ближайший уже закодированный узел с той же координатой и той же глубиной не является планарным или не существует. Однако при таком подходе игнорируется информация о занятости соседних узлов. В соответствии с настоящим изобретением можно делать выводы из занятости соседних дочерних узлов в том же родительском узле и в той же плоскости, перпендикулярной рассматриваемой оси, что и для текущего дочернего узла. Если, например, рассматривается ось X, а текущий дочерний узел имеет координату 2, тогда информация о дочерних узлах 0 и 1 в текущем родительском узле и в той же вертикальной плоскости, перпендикулярной оси X, известна и может быть использована для определения контекстной информации о положении плоскости, например, путем использования контекстной информации о положении плоскости одного из этих узлов или большинства этих узлов в качестве контекстной информации о положении плоскости текущего дочернего узла, подлежащего кодированию. Если, например, рассматривается ось X, а текущий дочерний узел имеет координату 7, то информация о дочерних узлах с 4 по 6 в текущем родительском узле и в той же вертикальной плоскости, перпендикулярной оси X, известна и может использоваться для определения контекстной информации о положении плоскости. Таким образом, контекстная информация о положении плоскости может заменить предлагаемый оператор axisIdx, чтобы предоставить улучшенную контекстную информацию для более эффективного энтропийного кодирования, если ближайший уже закодированный узел с той же координатой и той же глубиной D не существует. Таким образом, предложенная выше контекстная модель для контекстной информации о положении плоскости в планарном режиме кодирования заменяется на
[0163] положение плоскости текущего дочернего узла в соответствии с занятостью по меньшей мере одного соседнего узла.
[0164] Кроме того, для углового режима кодирования, даже если указано, что облако точек кодируется в угловом режиме кодирования, один или более узлов облака точек могут не подходить для этого режима кодирования. В этом случае контекстная информация о положении плоскости углового режима кодирования заменяется контекстной информацией о положении плоскости согласно планарному режиму, как более подробно описано выше.
[0165] Обратимся теперь к фиг. 7А, показывающей способ кодирования облака точек, включающий определение режима кодирования, причем режим кодирования включает планарный режим кодирования и угловой режим кодирования (S10);
[0166] получение контекстной информации кодирования для текущего дочернего узла (S11), при этом,
если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает планарную контекстную информацию, при этом планарную контекстную информацию текущего дочернего узла определяют в соответствии с занятостью текущего родительского узла и занятостью по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом (S111);
если режим кодирования представляет собой угловой режим кодирования, контекстная информация кодирования текущего дочернего узла включает планарную информацию текущего родительского узла и занятость соседнего по вертикали родительского узла, смежного с текущим родительским узлом (S112); и
[0167] энтропийное кодирование текущего дочернего узла на основе определенной контекстной информации кодирования для создания кодированных данных для битового потока (S12).
[0168] Обратимся теперь к фиг. 7В, показывающей способ декодирования облака точек, включающий определение режима кодирования, причем режим кодирования включает планарный режим кодирования и угловой режим кодирования (S20);
[0169] получение контекстной информации кодирования для текущего дочернего узла (S21), при этом,
если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает планарную контекстную информацию, при этом планарную контекстную информацию текущего дочернего узла определяют в соответствии с занятостью текущего родительского узла и занятостью по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом (S211);
если режим кодирования является угловым режимом кодирования, контекстная информация кодирования текущего дочернего узла включает планарную информацию текущего родительского узла и занятость соседнего по вертикали родительского узла, смежного с текущим родительским узлом (S212); и
[0170] энтропийное декодирование битового потока на основе контекстной информации текущего дочернего узла для реконструкции облака точек (S22).
[0171] Таким образом, в соответствии с настоящим изобретением информация о соседних узлах используется и вычисляется для того, чтобы получить модель контекстной информации, более надежно предсказывающую появление поверхности внутри текущего дочернего узла. Эта информация может использоваться для уменьшения объема сжатых данных облака точек, при этом та же модель контекстной информации также используется для декодера, чтобы обеспечить возможность надежно декодировать предоставляемый битовый поток с высокой эффективностью и точностью. Таким образом, может быть достигнуто значительное сокращение данных, по меньшей мере на 1% по сравнению с предыдущими способами кодирования и текущей спецификацией GPCC. Однако это значение зависит от плотности точек, причем, в частности, для облаков точек внутри помещений, таких как облака точек LiDAR, предполагается, что их можно рассматривать как плотное облако точек.
[0172] В вариантах осуществления способа кодирования или декодирования, если режим кодирования является планарным режимом кодирования, контекстная информация кодирования включает планарную контекстную информацию, включающую:
наличие плоскости в соответствии с шаблоном занятости текущего родительского узла и шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом.
[0173] В вариантах осуществления способа кодирования или декодирования, если режим кодирования является планарным режимом кодирования, контекстная информация кодирования включает информацию о положении плоскости, при этом информация о положении плоскости включает одно или более из следующего:
[0174] расстояние d от ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева;
[0175] положение плоскости ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева; и
[0176] положение плоскости текущего дочернего узла в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного рядом с текущим родительским узлом.
[0177] В вариантах осуществления способа кодирования или декодирования, если ближайший уже закодированный узел с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева не существует, тогда контекстная информация о положении плоскости включает только положение плоскости текущего дочернего узла в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом.
[0178] В вариантах осуществления способа кодирования или декодирования, если режим кодирования представляет собой угловой режим кодирования, контекстная информация кодирования включает планарную контекстную информацию, при этом планарная контекстная информация включает одно или более из следующего:
[0179] флаг isPlanar текущего родительского узла; и
[0180] занятость соседнего по вертикали родительского узла непосредственно рядом с текущим, т.е. перпендикулярно рассматриваемой оси непосредственно перед текущим родительским узлом в порядке декодирования.
[0181] В вариантах осуществления способа кодирования или декодирования, если режим кодирования является угловым режимом кодирования, а текущий дочерний узел не подходит для углового режима кодирования, контекстная информация кодирования включает контекстную информацию о положении плоскости, при этом контекстная информация о положении плоскости включает одно или более из следующего:
[0182] расстояние d от ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева;
[0183] положение плоскости ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева; и
[0184] положение плоскости текущего дочернего узла в соответствии с занятостью по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом.
[0185] В вариантах осуществления способа кодирования или декодирования для определения планарной контекстной информации и контекстной информации о положении плоскости в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла определяют текущее положение плоскости текущего дочернего узла относительно текущего родительского узла, при этом текущее положение плоскости включает верхнее положение плоскости и нижнее положение плоскости.
[0186] В вариантах осуществления способа кодирования или декодирования, если текущее положение плоскости является нижним положением плоскости, планарную контекстную информацию и контекстную информацию о положении плоскости определяют в соответствии с занятостью первой группы из четырех дочерних узлов соседнего родительского узла, которые расположены непосредственно рядом с текущим родительским узлом, и занятостью второй группы из четырех дочерних узлов текущего родительского узла прямо напротив первой группы.
[0187] В вариантах осуществления способа кодирования или декодирования для текущего положения плоскости, являющегося нижним положением плоскости, если по меньшей мере один дочерний узел первой группы занят, а вторая группа не занята, планарная контекстная информация включает вероятность наличия плоскости, и контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0188] В вариантах осуществления способа кодирования или декодирования для текущего положения плоскости, являющегося нижним положением плоскости, если первая группа не занята и по меньшей мере один дочерний узел второй группы занят, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0189] В вариантах осуществления способа кодирования или декодирования для текущего положения плоскости, являющегося нижним положением плоскости, если первая группа не занята и вторая группа не занята, планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность наличия нижней плоскости, если заняты по меньшей мере один или более дочерних узлов в соседнем родительском узле, которые не принадлежат к первой группе, и имеет значение «НЕИЗВЕСТНО» в противном случае.
[0190] В вариантах осуществления способа кодирования или декодирования для текущего положения плоскости, являющегося нижним положением плоскости, если занят по меньшей мере один дочерний узел первой группы и занят по меньшей мере один дочерний узел второй группы, причем #FirstGroup>#SecondGroup+1, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости, где #FirstGroup указывает количество занятых узлов в первой группе, а #SecondGroup указывает количество занятых узлов во второй группе.
[0191] В вариантах осуществления способа кодирования или декодирования для текущего положения плоскости, являющегося нижним положением плоскости, если занят по меньшей мере один дочерний узел первой группы и занят по меньшей мере один дочерний узел второй группы, причем #FirstGroup<#SecondGroup+1, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости, где #FirstGroup указывает количество занятых узлов в первой группе, а #SecondGroup указывает количество занятых узлов во второй группе.
[0192] В вариантах осуществления способа кодирования или декодирования, если текущее положение плоскости является верхним, планарную контекстную информацию и контекстную информацию о положении плоскости определяют в соответствии с занятостью соседнего родительского узла, который находится вдоль рассматриваемой оси непосредственно после текущего родительского узла, и занятостью группы из четырех дочерних узлов текущего родительского узла, расположенных в плоскости, прямо перпендикулярной рассматриваемой оси, и рядом с текущим дочерним узлом.
[0193] В вариантах осуществления способа кодирования или декодирования для текущего положения плоскости, являющегося верхним положением плоскости, если по меньшей мере один дочерний узел группы занят, а соседний родительский узел не занят, планарная контекстная информация включает вероятность наличия плоскости, и контекстная информация о положении плоскости включает вероятность нижнего положения плоскости.
[0194] В вариантах осуществления способа кодирования или декодирования для текущего положения плоскости, являющегося верхним положением плоскости, если группа не занята, а соседний родительский узел занят, планарная контекстная информация включает вероятность наличия плоскости, и контекстная информация о положении плоскости включает вероятность верхнего положения плоскости.
[0195] В вариантах осуществления способа кодирования или декодирования для текущего положения плоскости, являющегося верхним положением плоскости, если группа не занята и соседний родительский узел не занят, планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность наличия нижней плоскости, если заняты по меньшей мере один или более дочерних узлов в соседнем родительском узле вдоль рассматриваемой оси непосредственно перед текущим родительским узлом, и имеет значение «НЕИЗВЕСТНО» в противном случае.
[0196] В вариантах осуществления способа кодирования или декодирования для текущего положения плоскости, являющегося верхним положением плоскости, если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group>2, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости, где #Group указывает количество занятых узлов в группе.
[0197] В вариантах осуществления способа кодирования или декодирования для текущего положения плоскости, являющегося верхним положением плоскости, если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group<2, планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости, где #Group указывает количество занятых узлов в группе.
[0198] В вариантах осуществления способа кодирования или декодирования для текущего положения плоскости, являющегося верхним положением плоскости, если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group=2, планарная контекстная информация включает вероятность отсутствия плоскости, и положение плоскости предполагается неизвестным, где #Group указывает количество занятых узлов в группе.
[0199] В вариантах осуществления способа кодирования или декодирования соседний родительский узел расположен вдоль одной из геометрических осей.
[0200] В вариантах осуществления способа кодирования или декодирования планарную контекстную информацию определяют вдоль всех трех геометрических осей.
[0201] В вариантах осуществления способа кодирования или декодирования текущий родительский узел расположен относительно соседнего родительского узла в порядке декодирования.
[0202] В предпочтительном варианте осуществления изобретения способ кодирования/декодирования облака точек для создания битового потока сжатых данных облака точек реализуется в устройстве LIDAR (световое обнаружение и измерение дальности). Устройство LIDAR содержит модуль передачи света и модуль датчика. Модуль передачи света выполнен с возможностью сканирования окружающей среды лазерным светом, и эхо-сигнал лазерного света, отраженный объектами в окружающей среде, измеряется датчиком модуля датчика. Кроме того, устройство LIDAR содержит модуль вычисления, выполненный с возможностью определения трехмерного представления окружающей среды в облаке точек, предпочтительно по разности времени возврата лазерного света и/или длин волн отраженного лазерного света. Таким образом, эхо может включать до миллионов точек информации о положении объектов или окружающей среды, что приводит к большим облакам точек и увеличивает требования к вычислительным устройствам для дальнейшей обработки или вычисления этих облаков точек. В некоторых приложениях, таких как автономное вождение, обработка облака точек LIDAR должна осуществляться практически в режиме реального времени из-за требований безопасности. Таким образом, необходимо эффективное и точное сжатие данных облака точек. Следовательно, устройство LIDAR может содержать кодер, включающий процессор и запоминающее устройство. Запоминающее устройство может хранить компьютерную программу или приложение, содержащее инструкции, которые при их исполнении обеспечивают выполнение процессором операций, таких как описанные здесь. Например, инструкции могут кодировать и выводить битовые потоки, кодированные в соответствии с описанными здесь способами. Дополнительно или альтернативно, устройство LIDAR может содержать декодер, включающий процессор и запоминающее устройство. Запоминающее устройство может содержать компьютерную программу или приложение, содержащее инструкции, при исполнении которых обеспечивается выполнение процессором операций, таких как описанные здесь. Таким образом, с помощью кодера/декодера обеспечивается эффективное и точное сжатие данных облака точек, что дает возможность обрабатывать полученные данные облака точек более эффективно и предпочтительно в режиме реального времени. Предпочтительно, процессор кодера и процессор декодера являются одинаковыми. Предпочтительно, запоминающее устройство кодера и запоминающее устройство декодера являются одинаковыми. Предпочтительно, процессор кодера и/или декодера также сконфигурированы для дальнейшей обработки или вычисления облака точек, еще более предпочтительно в режиме реального времени. В частности, для примера автономного вождения вычисление облака точек может включать определение препятствий в направлении движения.
[0203] Теперь обратимся к фиг. 11, на которой показана упрощенная структурная схема примера осуществления кодера 1100. Кодер 1100 включает процессор 1102 и запоминающее устройство 1104. Запоминающее устройство 1104 может хранить компьютерную программу или приложение, содержащее инструкции, при исполнении которых обеспечивается выполнение процессором 1102 операций, таких как описанные здесь. Например, инструкции могут кодировать и выводить битовые потоки, кодированные в соответствии с описанными здесь способами. Понятно, что инструкции могут быть сохранены на машиночитаемом носителе для хранения данных, таком как компакт-диск, устройство флэш-памяти, оперативная память, жесткий диск и т.д. При исполнении инструкций процессор 1102 выполняет операции и функции, указанные в инструкциях, чтобы работать как процессор специального назначения, реализующий описанный(е) процесс(ы). В некоторых примерах такой процессор может упоминаться как «схема процессора» или «схемы процессора».
[0204] Теперь также обратимся к фиг. 12, на которой показана упрощенная структурная схема примера осуществления декодера 1200. Декодер 1200 включает процессор 1202 и запоминающее устройство 1204. Запоминающее устройство 1204 может содержать компьютерную программу или приложение, содержащее инструкции, при исполнении которых обеспечивается выполнение процессором 1202 операций, таких как описанные здесь. Понятно, что инструкции могут быть сохранены на машиночитаемом носителе, таком как компакт-диск, устройство флэш-памяти, оперативная память, жесткий диск и т.д. При исполнении инструкций процессор 1202 выполняет операции и функции, указанные в инструкциях, чтобы работать как процессор специального назначения, который реализует описанный(е) процесс(ы) и способы. Такой процессор может упоминаться как «схема процессора» или «схемы процессора».
[0205] Следует понимать, что декодер и/или кодер в соответствии с настоящей заявкой могут быть реализованы в ряде вычислительных устройств, включая, помимо прочего, серверы, надлежащим образом запрограммированные компьютеры общего назначения, системы машинного зрения и мобильные устройства. Декодер или кодер может быть реализован посредством программного обеспечения, содержащего инструкции для конфигурирования процессора или процессоров для выполнения описанных здесь функций. Инструкции программного обеспечения могут храниться в любой подходящей машиночитаемой памяти для хранения данных, включая компакт-диски, RAM, ROM, флэш-память и т.д.
[0206] Понятно, что описанные здесь декодер и/или кодер, а также модуль, подпрограмма, процесс, поток или другой программный компонент, реализующий описанный способ/процесс конфигурирования кодера или декодера, могут быть реализованы с использованием стандартных способов и языков компьютерного программирования. Настоящая заявка не ограничивается конкретными процессорами, компьютерными языками, соглашениями по компьютерному программированию, структурами данных и другими подобными деталями реализации. Специалистам в данной области техники будет понятно, что описанные процессы могут быть реализованы как часть исполняемого компьютером кода, хранящегося в энергозависимой или энергонезависимой памяти, как часть специализированной интегральной микросхемы (ASIC, application-specific integrated circuit) и т.д.
[0207] Настоящая заявка также обеспечивает машиночитаемый сигнал, кодирующий данные, полученные посредством применения процесса кодирования в соответствии с настоящей заявкой.
[0208] В одном из аспектов настоящего изобретения предлагается способ кодирования облака точек для создания битового потока сжатых данных облака точек, причем геометрия облака точек представлена структурой на основе октодерева с множеством узлов, имеющих отношения родитель-потомок, путем рекурсивного разделения объемного пространства, содержащего облако точек, на подобъемы, каждый из которых связан с узлом структуры на основе октодерева, при этом способ включает этапы:
[0209] определение режима кодирования;
[0210] получение контекстной информации кодирования для текущего дочернего узла; и
[0211] энтропийное кодирование занятости текущего дочернего узла на основе определенной контекстной информации кодирования для создания кодированных данных для битового потока.
[0212] Предпочтительно, режим кодирования включает планарный режим кодирования и/или угловой режим кодирования.
[0213] Предпочтительно, если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает планарную контекстную информацию.
[0214] Предпочтительно, планарную контекстную информацию текущего дочернего узла определяют в соответствии с шаблоном занятости текущего родительского узла и шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом.
[0215] Предпочтительно, если режим кодирования представляет собой угловой режим кодирования, контекстная информация кодирования текущего дочернего узла включает планарную информацию текущего родительского узла и занятость соседнего по вертикали родительского узла, смежного с текущим родительским узлом.
[0216] В аспекте настоящего изобретения предлагается способ декодирования битового потока сжатых данных облака точек для создания реконструированного облака точек, причем геометрия облака точек представлена структурой на основе октодерева с множеством узлов, имеющих отношения родитель-потомок, посредством рекурсивного разделения объемного пространства, содержащего облако точек, на подобъемы, каждый из которых связан с узлом структуры на основе октодерева, при этом способ включает этапы:
[0217] определение режима кодирования;
[0218] получение контекстной информации кодирования для текущего дочернего узла; и
[0219] энтропийное декодирование битового потока на основе контекстной информации текущего дочернего узла для реконструкции облака точек.
[0220] Предпочтительно, режим кодирования включает планарный режим кодирования и/или угловой режим кодирования.
[0221] Предпочтительно, если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает планарную контекстную информацию.
[0222] Предпочтительно, планарную контекстную информацию текущего дочернего узла определяют в соответствии с шаблоном занятости текущего родительского узла и шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом.
[0223] Предпочтительно, если режим кодирования представляет собой угловой режим кодирования, контекстная информация кодирования текущего дочернего узла включает планарную информацию текущего родительского узла и занятость соседнего по вертикали родительского узла, смежного с текущим родительским узлом.
[0224] Могут быть сделаны определенные адаптации и модификации описанных выше вариантов осуществления изобретения. Следовательно, описанные выше варианты осуществления изобретения являются иллюстративными и не ограничивают изобретение. В частности, варианты осуществления изобретения можно свободно комбинировать друг с другом.
Изобретение относится к области вычислительной техники для обработки аудиоданных. Технический результат заключается в повышении скорости и точности сжатия данных облаков точек. Технический результат достигается за счет того, что, если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает планарную контекстную информацию текущего дочернего узла, причем планарную контекстную информацию определяют в соответствии с шаблоном занятости текущего родительского узла и шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом, при этом шаблон занятости включает распределение занятых дочерних узлов в соответствующем родительском узле и планарная контекстная информация включает информацию о возможности плоскости или поверхности, представленной облаком точек, проходить через текущий дочерний узел; и, если режим кодирования представляет собой угловой режим кодирования, контекстная информация кодирования включает планарную информацию текущего родительского узла и занятость соседнего по вертикали родительского узла, смежного с текущим родительским узлом; и энтропийное кодирование текущего дочернего узла на основе полученной контекстной информации кодирования для создания кодированных данных для битового потока. 4 н. и 20 з.п. ф-лы, 12 ил.
1. Способ кодирования облака точек для создания битового потока сжатых данных облака точек, причем геометрия облака точек представлена структурой на основе октодерева с множеством узлов, имеющих отношения родитель - потомок, путем рекурсивного разделения объемного пространства, содержащего облако точек, на подобъемы, каждый из которых связан с узлом структуры на основе октодерева, при этом способ включает:
определение режима кодирования, причем режим кодирования включает планарный режим кодирования и угловой режим кодирования;
получение контекстной информации кодирования для текущего дочернего узла, при этом,
если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает планарную контекстную информацию текущего дочернего узла, причем планарную контекстную информацию определяют в соответствии с шаблоном занятости текущего родительского узла и шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом, при этом шаблон занятости включает распределение занятых дочерних узлов в соответствующем родительском узле и планарная контекстная информация включает информацию о возможности плоскости или поверхности, представленной облаком точек, проходить через текущий дочерний узел; и,
если режим кодирования представляет собой угловой режим кодирования, контекстная информация кодирования включает планарную информацию текущего родительского узла и занятость соседнего по вертикали родительского узла, смежного с текущим родительским узлом; и
энтропийное кодирование текущего дочернего узла на основе полученной контекстной информации кодирования для создания кодированных данных для битового потока.
2. Способ по п. 1, в котором, если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает контекстную информацию о положении плоскости, при этом контекстная информация о положении плоскости включает одно или более из следующего:
расстояние d от ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева;
положение плоскости ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева; и
положение плоскости текущего дочернего узла в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом.
3. Способ по п. 2, в котором, если ближайший уже закодированный узел с той же координатой в соответствующем родительском узле и с той же глубиной D в структуре на основе октодерева не существует, контекстная информация о положении плоскости включает только положение плоскости текущего дочернего узла в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом.
4. Способ по п. 2 или 3, в котором, если режим кодирования представляет собой угловой режим кодирования и текущий дочерний узел не подходит для углового режима кодирования, контекстная информация кодирования включает контекстную информацию о положении плоскости.
5. Способ по любому из пп. 1-4, в котором для определения планарной контекстной информации и контекстной информации о положении плоскости в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла определяют текущее положение плоскости текущего дочернего узла относительно текущего родительского узла, при этом текущее положение плоскости включает верхнее положение плоскости и нижнее положение плоскости.
6. Способ по п. 5, в котором, если текущее положение плоскости является нижним положением плоскости, планарную контекстную информацию и контекстную информацию о положении плоскости определяют в соответствии с занятостью первой группы из четырех дочерних узлов соседнего родительского узла, которые находятся непосредственно рядом с текущим родительским узлом, и занятостью второй группы из четырех дочерних узлов текущего родительского узла прямо напротив первой группы.
7. Способ по п. 6, в котором
если по меньшей мере один дочерний узел первой группы занят, а вторая группа не занята, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости; или
если первая группа не занята и по меньшей мере один дочерний узел второй группы занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости; или
если первая группа не занята и вторая группа не занята, то планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность наличия нижней плоскости, если заняты по меньшей мере один или более дочерних узлов в соседнем родительском узле, которые не принадлежат к первой группе; или
если занят по меньшей мере один дочерний узел первой группы и занят по меньшей мере один дочерний узел второй группы, причем #FirstGroup>#SecondGroup+1, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости; или
если занят по меньшей мере один дочерний узел первой группы и занят по меньшей мере один дочерний узел второй группы, причем #FirstGroup<#SecondGroup+1, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости;
при этом #FirstGroup указывает количество занятых дочерних узлов в первой группе, a #SecondGroup указывает количество занятых дочерних узлов во второй группе.
8. Способ по п. 5, в котором, если текущее положение плоскости является верхним, планарную контекстную информацию и контекстную информацию о положении плоскости определяют в соответствии с занятостью соседнего родительского узла, который находится вдоль оси непосредственно после текущего родительского узла, и занятостью группы из четырех дочерних узлов текущего родительского узла, расположенных в плоскости, непосредственно перпендикулярной упомянутой оси, и рядом с текущим дочерним узлом.
9. Способ по п. 8, в котором
если по меньшей мере один дочерний узел группы занят, а соседний родительский узел не занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости; или
если группа не занята, а соседний родительский узел занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости; или
если группа не занята и соседний родительский узел не занят, то планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность наличия нижней плоскости, если заняты один или более дочерних узлов в соседнем родительском узле вдоль оси непосредственно перед текущим родительским узлом; или
если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group>2, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости; или
если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group<2, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости; или
если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group=2, то планарная контекстная информация включает вероятность отсутствия плоскости и положение плоскости предполагается неизвестным;
при этом #Group указывает количество занятых узлов в группе.
10. Способ по любому из пп. 1-9, в котором соседний родительский узел расположен вдоль одной из геометрических осей.
11. Способ по любому из пп. 1-10, в котором контекстную информацию кодирования определяют вдоль всех трех геометрических осей.
12. Способ декодирования битового потока сжатых данных облака точек для создания реконструированного облака точек, причем геометрия облака точек представлена структурой на основе октодерева с множеством узлов, имеющих отношения родитель - потомок, путем рекурсивного разделения объемного пространства, содержащего облако точек, на подобъемы, каждый из которых связан с узлом структуры на основе октодерева, при этом способ включает:
определение режима кодирования, причем режим кодирования включает планарный режим кодирования и угловой режим кодирования;
получение контекстной информации кодирования для текущего дочернего узла, при этом,
если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает планарную контекстную информацию текущего дочернего узла, причем планарную контекстную информацию определяют в соответствии с шаблоном занятости текущего родительского узла и шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом; при этом шаблон занятости включает распределение занятых дочерних узлов в соответствующем родительском узле и планарная контекстная информация включает информацию о возможности плоскости или поверхности, представленной облаком точек, проходить через текущий дочерний узел;
если режим кодирования представляет собой угловой режим кодирования, контекстная информация кодирования включает планарную информацию текущего родительского узла и занятость соседнего по вертикали родительского узла, смежного с текущим родительским узлом; и
энтропийное декодирование битового потока на основе полученной контекстной информации текущего дочернего узла для реконструкции облака точек.
13. Способ по п. 12, в котором, если режим кодирования представляет собой планарный режим кодирования, контекстная информация кодирования включает контекстную информацию о положении плоскости, при этом контекстная информация о положении плоскости включает одно или более из следующего:
расстояние d от ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева;
положение плоскости ближайшего уже закодированного узла с той же координатой в соответствующем родительском узле и той же глубиной D в структуре на основе октодерева; и
положение плоскости текущего дочернего узла в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом.
14. Способ по п. 13, в котором, если ближайший уже закодированный узел с той же координатой в соответствующем родительском узле и с той же глубиной D в структуре на основе октодерева не существует, контекстная информация о положении плоскости включает только положение плоскости текущего дочернего узла в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла, расположенного непосредственно рядом с текущим родительским узлом.
15. Способ по п. 13 или 14, в котором, если режим кодирования представляет собой угловой режим кодирования и текущий дочерний узел не подходит для углового режима кодирования, контекстная информация кодирования включает контекстную информацию о положении плоскости.
16. Способ по любому из пп. 12-15, в котором для определения планарной контекстной информации и контекстной информации о положении плоскости в соответствии с шаблоном занятости по меньшей мере одного соседнего родительского узла определяют текущее положение плоскости текущего дочернего узла относительно текущего родительского узла, при этом текущее положение плоскости включает верхнее положение плоскости и нижнее положение плоскости.
17. Способ по п. 16, в котором, если текущее положение плоскости является нижним положением плоскости, планарную контекстную информацию и контекстную информацию о положении плоскости определяют в соответствии с занятостью первой группы из четырех дочерних узлов соседнего родительского узла, которые находятся непосредственно рядом с текущим родительским узлом, и занятостью второй группы из четырех дочерних узлов текущего родительского узла прямо напротив первой группы.
18. Способ по п. 17, в котором
если по меньшей мере один дочерний узел первой группы занят, а вторая группа не занята, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости; или
если первая группа не занята и по меньшей мере один дочерний узел второй группы занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости; или
если первая группа не занята и вторая группа не занята, то планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность наличия нижней плоскости, если заняты по меньшей мере один или более дочерних узлов в соседнем родительском узле, которые не принадлежат к первой группе; или
если занят по меньшей мере один дочерний узел первой группы и занят по меньшей мере один дочерний узел второй группы, причем #FirstGroup>#SecondGroup+1, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости; или
если занят по меньшей мере один дочерний узел первой группы и занят по меньшей мере один дочерний узел второй группы, причем #FirstGroup<#SecondGroup+1, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости;
при этом #FirstGroup указывает количество занятых дочерних узлов в первой группе, a #SecondGroup указывает количество занятых дочерних узлов во второй группе.
19. Способ по п. 16, в котором, если текущее положение плоскости является верхним, планарную контекстную информацию и контекстную информацию о положении плоскости определяют в соответствии с занятостью соседнего родительского узла, который находится вдоль оси непосредственно после текущего родительского узла, и занятостью группы из четырех дочерних узлов текущего родительского узла, расположенных в плоскости, непосредственно перпендикулярной упомянутой оси, и рядом с текущим дочерним узлом.
20. Способ по п. 19, в котором
если по меньшей мере один дочерний узел группы занят, а соседний родительский узел не занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости; или
если группа не занята, а соседний родительский узел занят, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости; или
если группа не занята и соседний родительский узел не занят, то планарная контекстная информация включает вероятность наличия плоскости, при этом контекстная информация о положении плоскости включает вероятность наличия нижней плоскости, если заняты один или более дочерних узлов в соседнем родительском узле вдоль оси непосредственно перед текущим родительским узлом; или
если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group>2, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность нижнего положения плоскости; или
если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group<2, то планарная контекстная информация включает вероятность наличия плоскости, а контекстная информация о положении плоскости включает вероятность верхнего положения плоскости; или
если по меньшей мере один дочерний узел группы занят и соседний родительский узел занят, причем #Group=2, то планарная контекстная информация включает вероятность отсутствия плоскости и положение плоскости предполагается неизвестным;
при этом #Group указывает количество занятых узлов в группе.
21. Способ по любому из пп. 12-20, в котором соседний родительский узел расположен вдоль одной из геометрических осей.
22. Способ по любому из пп. 12-21, в котором контекстную информацию кодирования определяют вдоль всех трех геометрических осей.
23. Кодер для кодирования облака точек для создания битового потока сжатых данных облака точек, причем геометрия облака точек представлена структурой на основе октодерева с множеством узлов, имеющих отношения родитель - потомок, путем рекурсивного разделения объемного пространства, содержащего облако точек, на подобъемы, каждый из которых связан с узлом структуры на основе октодерева, при этом кодер содержит
процессор и
запоминающее устройство, в котором хранятся инструкции, исполняемые процессором, при исполнении которых обеспечивается выполнение процессором способа по любому из пп. 1-11.
24. Декодер для декодирования битового потока сжатых данных облака точек для создания реконструированного облака точек, причем геометрия облака точек представлена структурой на основе октодерева с множеством узлов, имеющих отношения родитель - потомок, путем рекурсивного разделения объемного пространства, содержащего облако точек, на подобъемы, каждый из которых связан с узлом структуры на основе октодерева, при этом декодер содержит
процессор и
запоминающее устройство, в котором хранятся инструкции, исполняемые процессором, при исполнении которых обеспечивается выполнение процессором способа по любому из пп. 12-22.
US 10693492 B1, 23.06.2020 | |||
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Способ защиты переносных электрических установок от опасностей, связанных с заземлением одной из фаз | 1924 |
|
SU2014A1 |
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
СПОСОБ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ДАННЫХ ТРЕХМЕРНЫХ ОБЪЕКТОВ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ | 2003 |
|
RU2267161C2 |
Авторы
Даты
2024-01-22—Публикация
2020-06-24—Подача