ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННУЮ(ЫЕ) ЗАЯВКУ(И)
[1] Настоящая заявка испрашивает приоритет предварительной заявки на патент США №63/002,314, поданной 30 марта 2020 г., и заявки на патент США №17/083,912, поданной 29 октября 2020 г., содержание которых полностью включено в настоящий документ.
УРОВЕНЬ ТЕХНИКИ
[2] В последние годы широко используется моделирование облака точек. Например, оно используется в автономных транспортных средствах для обнаружения и локализации объектов, в географических информационных системах (ГИС) для картографии, а также в проектах культурного наследия для визуализации и архивирования объектов и коллекций культурного наследия и т.д.
[3] Облака точек содержат набор точек большого размера, обычно трехмерных (3D), каждая из которых включает в себя трехмерную информацию о положении и дополнительные атрибуты, такие как цвет, коэффициент отражения и т.д. Точки большого размера могут быть захвачены с использованием множества камер и/или датчиков глубины, с помощью метеорологического лазерного локатора (LIDAR) в различных установках и могут состоять из тысяч и миллиардов точек, что позволяет реалистично отображать исходные сцены.
[4] Технологии сжатия необходимы для уменьшения объема данных, которые требуются для представления облака точек для более быстрой передачи и/или уменьшения объема хранилища. Как поясняется в непатентной литературе [1]-[4], Группа экспертов по движущемуся изображению (MPEG), рабочая группа Международной организации по стандартизации (ISO) и Международная электротехническая комиссия (IEC) создали совместный технический комитет (JTC 1/SC 29/WG 11) и специальную группу (MPEG-PCC) для стандартизации методов сжатия для статических и/или динамических облаков точек.
[5] Непатентная литература [1]: Use Cases for Point Cloud Compression, ISO/IEC JTC1/SC29 WG11 Doc. N16331, Женева, Швейцария, июнь 2016 г.
[6] Непатентная литература [2]: Requirements for Point Cloud Compression, ISO/IEC JTC1/SC29 WG11 Doc. N16330, Женева, Швейцария, июнь 2016 г.
[7] Непатентная литература [3]: G-PCC Codec description, ISO/IEC JTC1/SC29/WG11, Doc. M18673, июль 2019 г.
[8] Непатентная литература [4]: Текст ISO/IEC CD 23090-9 Geometry-based Point Cloud Compression, ISO/IEC JTC1/SC29 WG11 Doc. N18478, Женева, июль 2019 г.
РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[1] Раскрытие направлено на кодирование облака точек (РСС) и, в частности, на способы, устройства и системы для кодирования дублированных и изолированных точек с целью обеспечения улучшенного сжатия облака точек.
[9] Согласно аспекту раскрытия предусмотрен способ кодирования информации облака точек, причем способ выполняется по меньшей мере одним процессором и содержит: получение облака точек, включающего в себя набор точек в трехмерном пространстве; определение, изолирован ли текущий узел в наборе точек; и кодирование текущего узла в режиме изоляции на основе определения, что текущий узел изолирован, и кодирование текущего узла в режиме без изоляции на основе определения, что текущий узел не изолирован.
[10] Способ может дополнительно содержать в режиме изоляции определение, является ли текущий узел дублированным узлом.
[11] Способ может дополнительно содержать кодирование дублированного количества и кодирование геометрического положения текущего узла на основе определения, что текущий узел является дублированным узлом.
[12] Кодирование геометрического положения текущего узла может выполняться после кодирования дублированного количества.
[13] Способ может дополнительно содержать кодирование геометрического положения изолированного текущего узла без кодирования дублированного количества на основе определения, что текущий узел не является дублированным узлом.
[14] Способ может дополнительно содержать в режиме без изоляции определение, является ли текущий узел листовым узлом.
[15] Способ может дополнительно содержать кодирование дублированного количества и завершение разделения дерева на основе определения, что текущий узел является листовым узлом.
[16] Способ может дополнительно содержать кодирование информации о занятости и вставку всех занятых дочерних узлов в список «первым пришел первым обслужен» на основе определения, что текущий узел не является листовым узлом.
[17] Согласно другому аспекту раскрытия предусмотрено устройство для кодирования информации облака точек, при этом устройство содержит: элемент памяти, хранящий одну или более инструкций; и процессор, конфигурированный для выполнения одной или более инструкций, чтобы: получить облако точек, включающее в себя набор точек в трехмерном пространстве; определить, изолирован ли текущий узел в наборе точек; и кодировать текущий узел в режиме изоляции на основе определения, что текущий узел изолирован, и кодировать текущий узел в режиме без изоляции на основе определения, что текущий узел не изолирован.
[18] Согласно другому аспекту раскрытия предусмотрен невременный машиночитаемый носитель, хранящий способ кодирования информации облака точек, причем способ выполняется по меньшей мере одним процессором и содержит: получение облака точек, включающего в себя набор точек в трехмерном пространстве; определение, изолирован ли текущий узел в наборе точек; и кодирование текущего узла в режиме изоляции на основе определения, что текущий узел изолирован, и кодирование текущего узла в режиме без изоляции на основе определения, что текущий узел не изолирован.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[19] Фиг. 1 представляет собой иллюстрацию разделения октодерева в трехмерном пространстве согласно примерному варианту осуществления.
[20] Фиг. 2 представляет собой иллюстрацию разделения октодерева и древовидной структуры согласно примерному варианту осуществления.
[21] Фиг. 3 представляет собой иллюстрацию структуры кодирования изолированных и дублированных точек согласно примерному варианту осуществления.
[22] Фиг. 4-6 представляют собой примеры способов кодирования информации облака точек.
[23] Фиг. 7 представляет собой диаграмму примерной среды, в которой могут быть реализованы описанные здесь системы и/или способы.
[24] Фиг. 8 представляет собой диаграмму примерных компонентов одного или более устройств с фиг.7.
[25] Фиг. 9 представляет собой блок-схему способа кодирования изолированных и дублированных точек согласно примерному варианту осуществления.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[Сжатие облака точек в тестовой модели 13 (ТМС13) в MPEG]
[26] Как описано в непатентной литературе [3] и непатентной литературе [4], в кодеке тестовой модели 13 (ТМС13), опубликованном MPEG, геометрическая информация и связанные атрибуты, такие как цвет или отражательная способность, точек облака точек, сжимаются отдельно. Геометрическая информация, например трехмерные координаты точек, кодируется путем разделения октодерева с информацией о занятости. Атрибуты затем сжимаются на основе восстановленной геометрии с использованием предсказания, подъема и адаптивного иерархического преобразования. Процессы разделения октодерева и кодирования занятости более подробно описаны ниже.
[Разделение октодерева]
[27] В ТМС13, если используется геометрический кодек октодерева, кодирование геометрии происходит следующим образом: сначала кубический выровненный по оси ограничивающий прямоугольник В определяется двумя точками (0,0,0) и (2 м-1,2 м-1,2 м-1), где 2 м-1 определяет размер В и М указывается в потоке битов.
[28] Затем строится структура октодерева путем рекурсивного деления В. На каждом этапе куб делится на 8 субкубов. Затем создается 8-битный код, а именно код занятости, путем связывания 1-битового значения с каждым субкубом, чтобы указать, содержит ли он точки (т.е. заполнен ли он и имеет ли значение 1) или нет (т.е. является ли он пустым и имеет ли значение 0). Далее подразделяются только полные субкубы размером больше 1 (т.е. не-вокселы). Фиг. 1 представляет собой иллюстрацию разделения октодерева в трехмерном пространстве.
[29] Пример двухуровневого разделения октодерева и соответствующий код занятости показаны на фиг.2, где темные кубы и узлы указывают, что они заняты точками.
[Кодирование кода занятости]
[30] Затем код занятости каждого узла сжимается арифметическим кодером. Код занятости может быть обозначен как S, являющимся 8-битовым целым числом, и каждый бит в S указывает статус занятости каждого дочернего узла. В ТМС13 существует два способа кодирования кода занятости: побитовое кодирование и побайтное кодирование. По умолчанию включено побитовое кодирование. Оба способа выполняют арифметическое кодирование с контекстным моделированием для кодирования кода занятости, а статус контекста инициализируется в начале процесса кодирования и обновляется во время процесса кодирования.
[31] Для побитового кодирования восемь бинов в S кодируются в определенном порядке, где каждый бин кодируется со ссылкой на статус занятости соседних узлов и дочерних узлов соседних узлов, где соседние узлы находятся в том же уровне, что и текущий узел.
[32] Для побайтного кодирования S кодируется со ссылкой на:
адаптивную поисковую таблицу (A-LUT), которая отслеживает N (например, 32) наиболее частых кодов занятости, и
кэш, который отслеживает последние различные наблюдаемые М (например, 16) кодов занятости.
[33] Кодируется двоичный флаг, указывающий, является ли S A-LUT или нет.Если S находится в A-LUT, индекс в A-LUT кодируется с использованием двоичного арифметического кодера. Если S отсутствует в A-LUT, то кодируется двоичный флаг, указывающий, находится ли S в кэше или нет.Если S находится в кэше, то двоичное представление его индекса кодируется с помощью двоичного арифметического кодера. В противном случае, если 5 отсутствует в кэше, двоичное представление S кодируется с помощью двоичного арифметического кодера.
[34] Процесс декодирования начинается с парсинга размеров ограничивающего прямоугольника В из битового потока. Затем строится такая же структура октодерева посредством деления В в соответствии с декодированными кодами занятости.
[35] В схеме кодека, описанной выше, дублированные точки могут относиться к точкам в структуре октодерева с одинаковым геометрическим положением, но их атрибуты могут быть разными. Согласно примерному варианту осуществления, атрибутами могут быть цвет, коэффициент отражения или другие характерные особенности, связанные с одним и тем же геометрическим положением. Однако раскрытие не ограничивается разными атрибутами. Таким образом, согласно другому примерному варианту осуществления, дублированные точки могут относиться к точкам в структуре октодерева с одинаковым геометрическим положением и иметь одинаковый атрибут. В некоторых случаях кодеру может потребоваться сохранить количество точек неизменным после сжатия, даже когда выполняется геометрическое квантование. Это может привести к ситуации, когда многие точки квантуются в одно и то же положение, что дает множество дублированных точек.
[36] С другой стороны, изолированные точки - это точки, которые представляют собой отдельные точки с идентичным геометрическим положением в узле октодерева. Например, если облако точек содержит только одну точку, то эта точка является изолированной точкой корневого узла октодерева. Например, если конкретный узел имеет только один занятый дочерний узел, конкретный узел будет изолированным узлом.
[37] Согласно примерному варианту осуществления изолированная точка (точки) может иметь одну или более точек при условии, что они имеют одинаковую и уникальную геометрическую позицию в узле октодерева. Другими словами, изолированные точки могут иметь дубликаты.
[38] Согласно одному или более аспектам раскрытия, кодирование дублированных и изолированных точек улучшает общую производительность кодирования. Например, способ кодирования дублированных и/или изолированных точек уменьшает количество битов, используемых для кодирования, что приводит к повышению скорости передачи битов. Кроме того, память, используемая для кодирования и декодирования, может быть уменьшена, а скорость кодирования и декодирования может быть увеличена из-за кодирования дублированных и изолированных точек. В этом раскрытии подробно описаны способы кодирования дублированных и изолированных точек.
[39] Согласно раскрытию предлагаемые способы, устройства и системы могут использоваться по отдельности или комбинироваться в любом порядке. Кроме того, каждый из способов (или вариантов осуществления), кодера и декодера может быть реализован схемами обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере один или более процессоров выполняют программу, которая хранится на невременном машиночитаемом носителе. Кроме того, раскрытие здесь не ограничивается использованиями, связанными с программным обеспечением ТМС13 или стандартом MPEG-PCC.
[Структура кодирования изолированных и дублированных точек]
[40] Фиг. 3 иллюстрирует примерный вариант осуществления общего способа кодирования. Узел октодерева может кодироваться в предопределенном порядке, в этом случае используется порядок кодирования в ширину, где применяется структура данных «первым пришел - первым обслужен» (FIFO) (или список FIFO). Для каждого узла октодерева применяются различные критерии, чтобы определить, является ли текущий узел изолированным. Если он изолирован, текущий узел кодируется в режиме изоляции, где кодируются дублированное количество и геометрическое положение изолированных точек. В противном случае текущий узел кодируется следующим образом: если текущий узел является листовым узлом, дублированное количество может быть кодировано для узла, и разделение дерева будет завершено. С другой стороны, если текущий узел не является листовым, код занятости затем кодируется, и все занятые дочерние узлы вставляются в FIFO.
[Кодирование режима дублирования]
[41] Как показано на фиг. 3, режим дублирования может применяться для листовых узлов или изолированной точки. Согласно примерному варианту осуществления в режиме дублирования может потребоваться сигнализировать количество дублированных точек.
Поскольку минимальное количество дублированных точек - одна, перед кодированием количество уменьшается на единицу. Чтобы кодировать количество, можно кодировать ведущие биты с помощью контекстного и энтропийного кодирования.
[42] Согласно примерному варианту осуществления синтаксическая таблица num_duplicate_points может быть такой, как показано на фиг. 4. На фиг. 4 «num_duplicated_points_is_one» указывает, равно ли num_duplicate_points 1, «num_duplicated_points_is_two» указывает, равно ли num_duplicate_points 2, а «num_duplicated_points_minus_three» указывает num_duplicate_points следующим образом:
num_duplicate_points=num_duplicate_points_minus_three + 3.
[43] Например, операция кодирования может определять количество дублированных точек для текущего узла. Здесь операция кодирования может определять, равно ли количество дублированных точек единице. Если количество дублированных точек равно единице, можно указать «num_duplicated_points_is_one». Согласно примерному варианту осуществления, способ может включать в себя определение того, что «num_duplicated_points_is_one», путем указания или установки флага.
[44] Если количество дублированных точек не равно единице, операция кодирования может определить, равно ли количество дублированных точек двум. Если количество дублированных точек равно двум, код может указывать, что «num_duplicated_points_is_two». Однако, если количество дублированных точек не равно двум, операция кодирования может указывать, что num_duplicate_points=num_duplicated_points_minus_three + 3.
[45] Согласно примерному варианту осуществления путем реализации процесса, показанного на фиг.4, может быть достигнута оптимальная эффективность кодирования.
[46] Согласно примерному варианту осуществления процесс декодирования может быть реализован в обратном порядке с использованием количества дублированных точек, указанных, как показано на фиг.4.
[47] Согласно примерному варианту осуществления синтаксическая таблица num_duplicate_points может быть такой, как показано на фиг. 5. На фиг. 5 «num_duplicated_points_is_one» указывает, равно ли num_duplicate_points 1, а «num_duplicated_points_minus_two» указывает num_duplicate_points следующим образом:
num_duplicate_points=num_duplicate_points_minus_two + 2.
[Кодирование изолированного режима]
[48] Согласно аспекту раскрытия для определения того, допустим ли изолированный режим, могут использоваться различные критерии. Согласно примерному варианту осуществления изолированный режим допустим, только если текущая глубина разделения меньше порогового значения. Согласно примерному варианту осуществления порог может быть фиксированным или может быть указан с помощью синтаксиса высокого уровня, такого как набор параметров последовательности, набор параметров геометрии или заголовок среза и т.д. В другом примерном варианте осуществления, помимо проверки глубины разделения, способ может включать в себя проверку, не имеет ли текущий узел одноуровневого узла в структуре октодерева. Если у текущего узла есть хотя бы один одноуровневый узел, изолированный режим недопустим.
[49] Согласно примерному варианту осуществления, если изолированный режим допустим, сигнализируется флаг, указывающий, имеет ли текущий узел изолированные точки. Этот флаг можно кодировать с энтропийным кодированием или без него, и для повышения эффективности кодирования можно использовать разные контексты. В одном варианте осуществления флаг кодируется энтропийным кодированием с одним контекстом. Затем, если изолированный флаг установлен, можно применить режим дублирования, если дублирование точек разрешено. Наконец, сигнализируется изолированное положение, и это положение может быть кодировано с энтропийным кодированием или без него, и может применяться множество контекстов. Согласно примерному варианту осуществления изолированное положение кодируется обходным способом без энтропийного кодирования.
[50] Согласно примерному варианту осуществления таблица синтаксиса, включающая в себя изолированный режим, может быть такой, как показано на фиг. 6.
[51] Например, операция кодирования может сначала определить, допустим ли изолированный режим. Согласно примерному варианту осуществления изолированный режим допустим, только если текущая глубина разделения меньше порогового значения (то есть «if (geomIsolatedModeFlag && depth<=geomIsolatedModeMaxDepth)»). Однако раскрытие не ограничивается этим, и, как таковая, согласно другому примерному варианту осуществления, проверка на допустимость изолированного режима на основе текущей глубины разделения может быть опущена. Согласно другому примерному варианту осуществления проверка на допустимость изолированного режима может быть основана на другом критерии.
[52] Затем операция кодирования может определить, является ли текущий узел изолированным узлом (то есть установлен «geom_isolated_flag»). На основе определения того, что текущий узел является изолированным узлом, кодируется геометрическое положение текущего узла (то есть isolated_position_х, isolated_position_у, isolated_position_z).
[53] Согласно примерному варианту осуществления операция кодирования может дополнительно включать в себя определение, является ли текущий узел дублированным узлом (то есть «!geomRemoveDuplicateFlag»). В этом случае также кодируется количество дублированных точек. Согласно примерному варианту осуществления, количество дублированных точек может кодироваться с использованием способа, проиллюстрированного на фиг.4 или 5. Однако раскрытие этим не ограничивается, и как таковые могут быть реализованы другие способы кодирования узла.
[54] На фиг.6, geomIsolatedModeFlag и geomIsolatedModeMaxDepth указаны в синтаксисе высокого уровня для определения допустимости изолированного режима, depth указывает глубину разделения текущего узла октодерева. В этом случае изолированный режим допустим, только если geomlsolatedModeFlag установлен и глубина меньше или равна geomlsolatedModeMaxDepth. Geom_isolated_flag указывает, кодирован ли текущий узел в изолированном режиме. GeomRemoveDuplicateFlag указывается в синтаксисе высокого уровня, чтобы указать допустимость режима дублирования. Num_duplicate_points указывает количество дублированных точек в текущем узле, как описано выше. Isolated_position_х, isolated_position_у и isolated_position_z задают изолированное положение.
[55] Согласно примерному варианту осуществления процесс декодирования может быть реализован в обратном порядке с использованием количества дублированных точек, указанных, как показано на фиг.6.
[56] Согласно примерному варианту осуществления способ, проиллюстрированный на фиг.6, для кодирования дубликатов и/или изолированных точек сокращает количество битов, используемых для кодирования, что приводит к улучшенной скорости передачи битов. Кроме того, память, используемая для кодирования и декодирования, может быть уменьшена, а скорость кодирования и декодирования может быть увеличена из-за кодирования дублированных и изолированных точек.
[57] Фиг. 7 представляет собой диаграмму примерной системы 700 связи, в которой могут быть реализованы описанные здесь системы и/или способы. Как показано на фиг.7, система 700 связи может включать в себя пользовательское устройство 710, платформу 720 и сеть 730. Устройства системы 700 связи могут соединяться между собой посредством проводных соединений, беспроводных соединений или комбинации проводных и беспроводных соединений.
[58] Система 700 связи может поддерживать однонаправленную передачу данных. Например, первое пользовательское устройство 710 может кодировать видеоданные в локальном местоположении для передачи второму пользовательскому устройству 710 через сеть 730. Второе пользовательское устройство 710 может принимать кодированные видеоданные первого пользовательского устройства 710 из сети 730, декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т.п.
[59] Система 700 связи может поддерживать двунаправленную передачу данных. Например, система 700 связи может поддерживать двунаправленную передачу кодированного видео, которая может происходить, например, во время видеоконференц-связи. Для двунаправленной передачи данных каждое пользовательское устройство 710 может кодировать видеоданные, захваченные в локальном местоположении, для передачи другому пользовательскому устройству 710 через сеть 730. Каждое пользовательское устройство 710 также может принимать кодированные видеоданные, переданные другим пользовательским устройством 710, может декодировать кодированные данные и может отображать восстановленные видеоданные на локальном устройстве отображения.
[60] Пользовательское устройство 710 включает в себя одно или более устройств, способных принимать, генерировать, хранить, обрабатывать и/или предоставлять информацию, связанную с платформой 720. Например, пользовательское устройство 710 может включать в себя вычислительное устройство (например, настольный компьютер, портативный компьютер, планшетный компьютер, карманный компьютер, интеллектуальную колонку, сервер и т.д.), мобильный телефон (например, смартфон, радиотелефон и т.д.), носимое устройство (например, пара умных очков или умные часы) или подобное устройство. В некоторых реализациях пользовательское устройство 710 может принимать информацию от и/или передавать информацию на платформу 720.
[61] Платформа 720 включает в себя одно или более устройств, способных предоставлять информацию пользовательскому устройству 710, как описано в другом месте в данном документе. В некоторых реализациях платформа 720 может включать в себя облачный сервер или группу облачных серверов. В некоторых реализациях платформа 720 может быть спроектирована как модульная, так что определенные программные компоненты могут быть заменены или отключены в зависимости от конкретной потребности. По существу, платформу 720 можно легко и/или быстро перенастроить для различных целей.
[62] В некоторых реализациях, как показано, платформа 720 может размещаться в среде 722 облачных вычислений. Примечательно, что хотя реализации, описанные в данном документе, описывают платформу 720 как размещенную в среде 722 облачных вычислений, в некоторых реализациях платформа 720 не является облачной (т.е. может быть реализована вне среды облачных вычислений) или может быть частично облачной.
[63] Среда 722 облачных вычислений включает в себя среду, в которой размещается платформа 720. Среда 722 облачных вычислений может предоставлять услуги вычислений, программного обеспечения, доступа к данным, хранения и т.д., которые не требуют от конечного пользователя (например, пользовательского устройства 710) знания физического местоположения и конфигурации системы (систем) и/или устройства (устройств), на которой размещена платформа 720. Как показано, среда 722 облачных вычислений может включать в себя группу вычислительных ресурсов 724 (совместно именуемых «вычислительными ресурсами 724» и индивидуально как «вычислительный ресурс 724»).
[64] Вычислительный ресурс 724 включает в себя один или более персональных компьютеров, компьютеров рабочих станций, серверных устройств или других типов вычислительных и/или коммуникационных устройств. В некоторых реализациях вычислительный ресурс 724 может содержать платформу 720. Облачные ресурсы могут включать в себя вычислительные экземпляры, выполняемые в виде вычислительного ресурса 724, запоминающих устройств, предусмотренных в вычислительном ресурсе 724, устройств передачи данных, предусмотренных вычислительным ресурсом 724, и т.д. В некоторых реализациях вычислительный ресурс 724 может связываться с другими вычислительными ресурсами 724 через проводные соединения, беспроводные соединения или комбинацию проводных и беспроводных соединений.
[65] Как дополнительно показано на фиг.7, вычислительный ресурс 724 включает в себя группу облачных ресурсов, такую как одно или более приложений («ПРИЛ») 724-1, одну или более виртуальных машин («ВМ») 724-2, виртуализированных хранилищ («ВХ») 724- 3, один или более гипервизоров («ГИП») 724-4 или т.п.
[66] Приложение 724-1 включает в себя одно или более программных приложений, которые могут быть предоставлены пользовательскому устройству 710 или доступны для него. Приложение 724-1 может устранить необходимость установки и выполнения программных приложений на пользовательском устройстве 710. Например, приложение 724-1 может включать в себя программное обеспечение, связанное с платформой 720, и/или любое другое программное обеспечение, которое может быть предоставлено через среду 722 облачных вычислений. В некоторых реализациях одно приложение 724-1 может отправлять/получать информацию в/из одного или более других приложений 724-1 через виртуальную машину 724-2.
[67] Виртуальная машина 724-2 включает в себя программную реализацию машины (например, компьютера), которая выполняет программы, как физическая машина. Виртуальная машина 724-2 может быть либо системной виртуальной машиной, либо виртуальной машиной процесса, в зависимости от использования и степени соответствия любой реальной машине виртуальной машиной 724-2. Системная виртуальная машина может предоставить полную системную платформу, которая поддерживает выполнение полной операционной системы («ОС»). Виртуальная машина процесса может выполнять одну программу и может поддерживать один процесс. В некоторых реализациях виртуальная машина 724-2 может выполняться от имени пользователя (например, пользовательского устройства 710) и может управлять инфраструктурой среды 722 облачных вычислений, такой как управление данными, синхронизация или длительная передача данных.
[68] Виртуализированное хранилище 724-3 включает в себя одну или более систем хранения и/или одно или более устройств, которые используют методы виртуализации в системах хранения или устройствах вычислительного ресурса 724. В некоторых реализациях в контексте системы хранения типы виртуализации могут включать в себя блочную виртуализацию и файловую виртуализацию. Блочная виртуализация может относиться к абстракции (или отделению) логического хранилища от физического хранилища, чтобы к системе хранения можно было получить доступ безотносительно физического хранилища или гетерогенной структуры. Отделение может дать администраторам системы хранения гибкость в том, как администраторы управляют хранилищем для конечных пользователей. Файловая виртуализация может устранить зависимости между данными, доступ к которым осуществляется на уровне файла, и местом, где файлы физически хранятся. Это может позволить оптимизировать использование хранилища, консолидацию серверов и/или производительность миграции файлов без прерывания работы.
[69] Гипервизор 724-4 может предоставлять методы виртуализации аппаратного обеспечения, которые позволяют множеству операционных систем (например, «гостевым операционным системам») работать одновременно на главном компьютере, таком как вычислительный ресурс 724. Гипервизор 724-4 может представлять виртуальную операционную платформу для гостевых операционных систем и может управлять выполнением гостевых операционных систем. Множество экземпляров различных операционных систем могут совместно использовать виртуализированные аппаратные ресурсы.
[70] Сеть 730 включает в себя одну или более проводных и/или беспроводных сетей. Например, сеть 730 может включать в себя сотовую сеть (например, сеть пятого поколения (5G), сеть долгосрочного развития (LTE), сеть третьего поколения (3G), сеть множественного доступа с кодовым разделением каналов (CDMA)) и т.д.), наземную мобильную сеть общего пользования (PLMN), локальную сеть (LAN), глобальную сеть (WAN), городскую сеть (MAN), телефонную сеть (например,
[71] коммутируемую телефонную сеть общего пользования (PSTN)), частную сеть, специальную сеть, интрасеть, Интернет, волоконно-оптическую сеть и т.п., и/или комбинацию этих или других типов сетей.
[72] Количество и расположение устройств и сетей, показанных на фиг. 7, представлены в качестве примера. На практике могут иметься дополнительные устройства и/или сети, меньше устройств и/или сетей, другие устройства и/или сети или устройства и/или сети, расположенные иначе, чем те, которые показаны на фиг. 7. Кроме того, два или более устройств, показанных на фиг.7, могут быть реализованы в одном устройстве, или одно устройство, показанное на фиг. 7, может быть реализовано как множество распределенных устройств. Дополнительно или альтернативно, набор устройств (например, одно или более устройств) среды 700 может выполнять одну или более функций, описанных как выполняемые другим набором устройств среды 700.
[73] Фиг. 8 представляет собой диаграмму примерных компонентов устройства 800. Устройство 800 может соответствовать пользовательскому устройству 710 и/или платформе 720. Как показано на фиг. 8, устройство 800 может включать в себя шину 810, процессор 820, память 830, компонент 840 хранения, компонент 850 ввода, компонент 860 вывода и интерфейс 870 связи.
[74] Шина 810 включает в себя компонент, который разрешает обмен данными между компонентами устройства 800. Процессор 820 реализован в виде аппаратного обеспечения, встроенного программного обеспечения или комбинации аппаратного и программного обеспечения. Процессор 820 - это центральный процессор (ЦП), графический процессор (ГП), блок ускоренной обработки (УП), микропроцессор, микроконтроллер, процессор цифровых сигналов (ПЦС), программируемая пользователем вентильная матрица (ППВМ), специализированная интегральная схема (ASIC) или другой тип компонента обработки. В некоторых реализациях процессор 820 включает в себя один или более процессоров, которые могут быть запрограммированы для выполнения определенной функции. Память 830 включает в себя оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ) и/или другой тип динамического или статического запоминающего устройства (например, флэш-память, магнитную память и/или оптическую память), в которых хранится информация и/или инструкции для использования процессором 820.
[75] Компонент 840 хранения хранит информацию и/или программное обеспечение, относящиеся к работе и использованию устройства 800. Например, компонент 840 хранения может включать в себя жесткий диск (например, магнитный диск, оптический диск, магнитооптический диск и/или твердотельный диск), компакт-диск (CD), универсальный цифровой диск (DVD), дискету, картридж, магнитную ленту и/или другой тип невременного машиночитаемого носителя вместе с соответствующим дисководом.
[76] Компонент 850 ввода включает в себя компонент, который позволяет устройству 800 получать информацию, например, посредством пользовательского ввода (например, сенсорного экрана, клавиатуры, клавиатуры, мыши, кнопки, переключателя и/или микрофона). Дополнительно или альтернативно, компонент 850 ввода может включать в себя датчик для считывания информации (например, компонент глобальной системы позиционирования (GPS), акселерометр, гироскоп и/или исполнительный механизм). Компонент 860 вывода включает в себя компонент, который предоставляет информацию вывода от устройства 800 (например, дисплея, динамика и/или одного или более светодиодов (LED)).
[77] Интерфейс 870 связи включает в себя компонент, подобный приемопередатчику (например, приемопередатчик и/или отдельные приемник и передатчик), который позволяет устройству 800 связываться с другими устройствами, например, через проводное соединение, беспроводное соединение или комбинацию проводных и беспроводных соединений. Интерфейс 870 связи может разрешать устройству 800 получать информацию от другого устройства и/или предоставлять информацию другому устройству. Например, интерфейс 870 связи может включать в себя интерфейс Ethernet, оптический интерфейс, коаксиальный интерфейс, инфракрасный интерфейс, радиочастотный (RF) интерфейс, интерфейс универсальной последовательной шины (USB), интерфейс Wi-Fi, интерфейс сотовой сети и т.п.
[78] Согласно примерному варианту осуществления устройство 800 может выполнять один или более процессов, описанных в данном документе. Устройство 800 может выполнять эти процессы в ответ на выполнение процессором 820 программных инструкций, хранящихся на невременном машиночитаемом носителе, таком как память 830 и/или компонент 840 хранения. Машиночитаемый носитель определяется здесь как невременное запоминающее устройство. Устройство памяти включает в себя пространство памяти в пределах одного физического запоминающего устройства или пространство памяти, распределенное по множеству физических запоминающих устройств.
[79] Программные инструкции могут быть считаны в память 830 и/или компонент 840 хранения с другого машиночитаемого носителя или с другого устройства через интерфейс 870 связи. При исполнении программные инструкции, хранящиеся в памяти 830 и/или компоненте 840 хранения, могут побуждать процессор 820 выполнять один или более процессов, описанных в данном документе.
[80] Дополнительно или альтернативно, аппаратная схема может использоваться вместо или в комбинации с программными инструкциями для выполнения одного или более процессов, описанных в данном документе. Таким образом, описанные здесь реализации не ограничиваются какой-либо конкретной комбинацией аппаратных схем и программного обеспечения.
[81] Количество и расположение компонентов, показанных на фиг.8, представлены в качестве примера. На практике устройство 800 может включать в себя дополнительные компоненты, меньшее количество компонентов, другие компоненты или компоненты, расположенные иначе, чем те, которые показаны на фиг.8. Дополнительно или альтернативно, набор компонентов (например, один или более компонентов) устройства 800 может выполнять одну или более функций, описанных как выполняемые другим набором компонентов устройства 800.
[82] Фиг. 9 представляет собой блок-схему примерного процесса 900 для кодирования изолированных и дублированных точек облака точек. В некоторых реализациях один или более блоков процессов с фиг. 9 могут выполняться пользовательским устройством 710. В некоторых реализациях один или более блоков процессов с фиг 9 могут выполняться другим устройством или группой устройств, отдельной от или включающей в себя пользовательское устройство 710, например платформой 720.
[83] Как показано на фиг. 9, на этапе 910 может быть получено облако точек, включающее в себя набор точек в трехмерном пространстве. На этапе 920 определяют, является ли текущий узел в наборе точек изолированным узлом (то есть, узел изолирован). На этапе 930, если текущий узел изолирован, текущий узел кодируется в режиме изоляции, а если текущий узел не изолирован, текущий узел кодируется в режиме без изоляции.
[84] В режиме изоляции определяется, является ли текущий узел дублированным узлом. Если текущий узел является дублированным узлом, дублированное количество кодируется, и после этого кодируется геометрическое положение изолированного текущего узла. Если текущий узел не является дублированным узлом, геометрическое положение изолированного текущего узла кодируется без выполнения операции по кодированию дублированного количества.
[85] В режиме без изоляции текущий узел кодируется следующим образом: если текущий узел является листовым узлом, дублированное количество может быть кодировано для узла, и разделение дерева будет завершено. С другой стороны, если текущий узел не является листовым узлом, код занятости затем кодируется, и все занятые дочерние узлы вставляются в список FIFO.
[86] Вышеизложенное раскрытие обеспечивает иллюстрацию и описание, но не предназначено для того, чтобы быть исчерпывающим или ограничивать реализации точной раскрытой формой. В свете вышеизложенного раскрытия возможны модификации и вариации, или они могут быть получены из практики реализации.
[87] Используемый здесь термин «компонент» предназначен для широкого толкования как аппаратное обеспечение, встроенное программное обеспечение или комбинация аппаратного и программного обеспечения.
[88] Очевидно, что описанные здесь системы и/или способы могут быть реализованы в различных формах аппаратного обеспечения, встроенного программного обеспечения или комбинации аппаратного и программного обеспечения. Фактический специализированный аппаратный или программный код управления, используемый для реализации этих систем и/или методов, не ограничивает реализации. Таким образом, работа и поведение систем и/или способов были описаны в данном документе без ссылки на конкретный программный код - при этом понятно, что программное обеспечение и оборудование могут быть разработаны для реализации систем и/или способов на основе приведенного здесь описания.
[89] Даже несмотря на то, что конкретные комбинации признаков изложены в формуле изобретения и/или раскрыты в описании, эти комбинации не предназначены для ограничения раскрытия возможных реализаций. Фактически, многие из этих характеристик могут быть объединены способами, которые конкретно не указаны в формуле изобретения и/или не раскрыты в описании. Хотя каждый зависимый пункт, перечисленный ниже, может напрямую зависеть только от одного пункта, раскрытие возможных реализаций включает каждый зависимый пункт в комбинации с каждым другим пунктом в наборе пунктов.
[90] Ни один элемент, действие или инструкция, использованные в данном документе, не должны рассматриваться как критические или существенные, если они явно не описаны как таковые. Кроме того, используемые здесь числовые формы предназначены для включения одного или более элементов и могут использоваться взаимозаменяемо с определением «один или более». Кроме того, используемый здесь термин «набор» предназначен для включения одного или более элементов (например, связанных элементов, несвязанных элементов, комбинации связанных и несвязанных элементов и т.д.) и может использоваться взаимозаменяемо с определением «один или более». Если подразумевается только один элемент, используется термин «один» или аналогичное выражение. Кроме того, используемые в данном документе термины «имеет», «иметь», «иметь» и т.п. подразумеваются как неограниченные термины. Кроме того, фраза «на основе» предназначена для обозначения «на основе, по меньшей мере частично, на», если явно не указано иное.
Изобретение относится к способу и устройству для кодирования облака точек. Техническим результатом является улучшение общей производительности кодирования. Способ кодирования информации облака точек содержит получение облака точек, включающего в себя набор точек в трехмерном пространстве; определение, изолирован ли текущий узел в наборе точек; если текущий узел изолирован, кодирование текущего узла в режиме изоляции, в котором кодируются дублированное количество и геометрическое положение текущего узла, если текущий узел не изолирован, кодирование текущего узла в режиме без изоляции, в котором кодируется дублированное количество для текущего узла на основе определения, что текущий узел является листовым узлом, или кодируется информация о занятости на основе определения, что текущий узел не является листовым узлом. 3 н. и 17 з.п. ф-лы, 9 ил.
1. Способ кодирования информации облака точек, выполняемый по меньшей мере одним процессором и содержащий:
получение облака точек, включающего в себя набор точек в трехмерном пространстве;
определение, изолирован ли текущий узел в наборе точек; и
на основе определения, что текущий узел изолирован, кодирование текущего узла в режиме изоляции, в котором кодируются дублированное количество и геометрическое положение текущего узла, и на основе определения, что текущий узел не изолирован, кодирование текущего узла в режиме без изоляции, в котором:
кодируется дублированное количество для текущего узла на основе определения, что текущий узел является листовым узлом, или
кодируется информация о занятости на основе определения, что текущий узел не является листовым узлом.
2. Способ по п.1, дополнительно содержащий в режиме изоляции определение, является ли текущий узел дублированным узлом.
3. Способ по п.2, дополнительно содержащий кодирование дублированного количества и кодирование геометрического положения текущего узла на основе определения, что текущий узел является дублированным узлом.
4. Способ по п.3, в котором кодирование геометрического положения текущего узла выполняется после кодирования дублированного количества.
5. Способ по п.2, дополнительно содержащий кодирование геометрического положения текущего узла без кодирования дублированного количества на основе определения, что текущий узел не является дублированным узлом.
6. Способ по п.1, дополнительно содержащий в режиме без изоляции определение, является ли текущий узел листовым узлом.
7. Способ по п.6, дополнительно содержащий кодирование дублированного количества и завершение разделения дерева на основе определения, что текущий узел является листовым узлом.
8. Способ по п.6, дополнительно содержащий кодирование информации о занятости и вставку всех занятых дочерних узлов в список «первым пришел – первым обслужен» на основе определения, что текущий узел не является листовым узлом.
9. Устройство для кодирования информации облака точек, содержащее:
по меньшей мере один элемент памяти, хранящий компьютерный программный код; и
по меньшей мере один процессор, конфигурированный для доступа к компьютерному программному коду и работы в соответствии с инструкциями компьютерного программного кода, причем компьютерный программный код включает в себя:
код получения, конфигурированный для побуждения по меньшей мере одного процессора получать облако точек, включающее в себя набор точек в трехмерном пространстве;
код определения изоляции, конфигурированный для побуждения по меньшей мере одного процессора определять, изолирован ли текущий узел в наборе точек; и
код кодирования, конфигурированный для побуждения по меньшей мере одного процессора, на основе определения, что текущий узел изолирован, кодировать текущий узел в режиме изоляции, в котором кодируются дублированное количество и геометрическое положение текущего узла, и на основе определения, что текущий узел не изолирован, кодировать текущий узел в режиме без изоляции, в котором:
кодируется дублированное количество для текущего узла на основе определения, что текущий узел является листовым узлом, или
кодируется информация о занятости на основе определения, что текущий узел не является листовым узлом.
10. Устройство по п.9, в котором в режиме изоляции компьютерный программный код дополнительно включает в себя: код определения дублирования, конфигурированный для побуждения по меньшей мере одного процессора определять, является ли текущий узел дублированным узлом.
11. Устройство по п.10, в котором код определения дублирования дополнительно конфигурирован для побуждения по меньшей мере одного процессора кодировать дублированное количество и кодировать геометрическое положение текущего узла на основе определения, что текущий узел является дублированным узлом.
12. Устройство по п.11, в котором кодирование геометрического положения текущего узла выполняется после кодирования дублированного количества.
13. Устройство по п.10, в котором код определения дублирования дополнительно конфигурирован для побуждения по меньшей мере одного процессора кодировать геометрическое положение текущего узла без кодирования дублированного количества на основе определения, что текущий узел не является дублированным узлом.
14. Устройство по п.9, в котором в режиме без изоляции компьютерный программный код дополнительно включает в себя: код определения листа, конфигурированный для побуждения по меньшей мере одного процессора определять, является ли текущий узел листовым узлом.
15. Устройство по п.14, в котором код определения листа дополнительно конфигурирован для побуждения по меньшей мере одного процессора кодировать дублированное количество и завершения разделения дерева на основе определения, что текущий узел является листовым узлом.
16. Устройство по п.14, в котором код определения листа дополнительно конфигурирован для побуждения по меньшей мере одного процессора кодировать информацию о занятости и вставлять все занятые дочерние узлы в список «первым пришел – первым обслужен» на основе определения, что текущий узел не является листовым узлом.
17. Невременный машиночитаемый носитель, хранящий компьютерный код, который при исполнении по меньшей мере одним процессором может побуждать процессор кодировать информацию облака точек посредством:
получения облака точек, включающего в себя набор точек в трехмерном пространстве;
определения, изолирован ли текущий узел в наборе точек; и
на основе определения, что текущий узел изолирован, кодирование текущего узла в режиме изоляции, в котором кодируются дублированное количество и геометрическое положение текущего узла, и на основе определения, что текущий узел не изолирован, кодирование текущего узла в режиме без изоляции, в котором:
кодируется дублированное количество для текущего узла на основе определения, что текущий узел является листовым узлом, или
кодируется информация о занятости на основе определения, что текущий узел не является листовым узлом.
18. Невременный машиночитаемый носитель по п.17, дополнительно содержащий в режиме изоляции определение, является ли текущий узел дублированным узлом.
19. Невременный машиночитаемый носитель по п.18, дополнительно содержащий:
кодирование дублированного количества и кодирование геометрического положения текущего узла на основе определения, что текущий узел является дублированным узлом; и
кодирование геометрического положения текущего узла без кодирования дублированного количества на основе определения, что текущий узел не является дублированным узлом.
20. Невременный машиночитаемый носитель по п.18, в котором кодирование геометрического положения текущего узла выполняется после кодирования дублированного количества.
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Станок для придания концам круглых радиаторных трубок шестигранного сечения | 1924 |
|
SU2019A1 |
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем | 1924 |
|
SU2012A1 |
Многоступенчатая активно-реактивная турбина | 1924 |
|
SU2013A1 |
СПОСОБ ГЕНЕРИРОВАНИЯ СТРУКТУРЫ УЗЛОВ, ПРЕДНАЗНАЧЕННЫХ ДЛЯ ПРЕДСТАВЛЕНИЯ ТРЕХМЕРНЫХ ОБЪЕКТОВ С ИСПОЛЬЗОВАНИЕМ ИЗОБРАЖЕНИЙ С ГЛУБИНОЙ | 2002 |
|
RU2237284C2 |
СПОСОБ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ДАННЫХ ТРЕХМЕРНЫХ ОБЪЕКТОВ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ | 2003 |
|
RU2267161C2 |
Авторы
Даты
2024-03-01—Публикация
2021-02-15—Подача