Способ и устройство для кодирования облака точек
METHOD AND APPARATUS FOR ENCODING A POINT CLOUD

[0001] По настоящей заявке испрашивается приоритет согласно заявке на выдачу патента США №17/064,029 «Способ и устройство для кодирования облака точек», поданной 6 октября 2020 года, по которой испрашивался приоритет согласно предварительной заявке на выдачу патента США №62/942,536 «Быстрое перекрашивание для кодирования облака точек», поданной 2 декабря 2019 года.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее изобретение описывает варианты осуществления изобретения, в целом относящиеся к кодированию облака точек.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[0003] Описание уровня техники приведено здесь для представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники для настоящего изобретения.
[0004] Разработаны различные технологии для получения представления мира, такого как объекты в мире, окружающая среда в мире и т.п., в трехмерном (3D) пространстве. Трехмерные представления мира могут способствовать более захватывающему взаимодействию и связи. В качестве трехмерного представления мира можно использовать облака точек. Облако точек это множество точек в трехмерном пространстве, каждая из которых имеет связанные с ней атрибуты, например цвет, свойства материала, информацию о текстуре, атрибуты интенсивности, атрибуты отражательной способности, атрибуты, связанные с движением, атрибуты модальности и различные другие атрибуты. Такие облака точек могут включать большие объемы данных, и их хранение и передача могут потребовать больших затрат времени и средств.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0005] Аспекты изобретения предоставляют способы и устройства для сжатия и декомпрессии облака точек. В некоторых примерах устройство для сжатия/декомпрессии облака точек содержит схему обработки. В некоторых вариантах осуществления изобретения схема обработки определяет одну или более исходных точек в облаке точке, которые связаны с реконструированным положением. Положения одной или более исходных точек могут быть реконструированы в соответствии с квантованием геометрии в реконструированное положение. Затем схема обработки определяет значение атрибута для реконструированного положения на основе информации об атрибутах одной или более исходных точек и кодирует текстуру облака точек с использованием реконструированного положения, имеющего упомянутое определяемое значение атрибута.
[0006] В некоторых вариантах осуществления изобретения устройство содержит память, хранящую структуру данных, которая связывает одну или более исходных точек с реконструированным положением. Доступ к структуре данных осуществляется на основе реконструированного положения для извлечения одной или более исходных точек, связанных с реконструированным положением.
[0007] В некоторых вариантах осуществления изобретения схема обработки выполняет разделение на основе октодерева, которое разделяет пространство облака точек на воксели при геометрическом квантовании и связывает одну или более исходных точек, которые расположены в вокселе, с реконструированным положением для представления вокселя. Например, отношение связи сохраняется с использованием подходящей структуры данных.
[0008] В некоторых вариантах осуществления изобретения схема обработки вычисляет среднее значение атрибутов множества исходных точек в качестве упомянутого определяемого значения атрибута для реконструированного положения в ответ на то, что множество исходных точек связаны с реконструированным положением. В некоторых примерах схема обработки вычисляет средневзвешенное значение атрибутов множества исходных точек в качестве упомянутого определяемого значения атрибута для реконструированного положения. В одном примере схема обработки назначает вес значению атрибута исходной точки в множестве исходных точек на основе обратного расстояния между исходной точкой и реконструированным положением.
[0009] В некоторых вариантах осуществления изобретения схема обработки назначает конкретное значение атрибута ближайшей точки в множестве исходных точек в качестве упомянутого определяемого значения атрибута для реконструированной точки в ответ на то, что множество исходных точек связаны с реконструированным положением. В примере схема обработки выбирает медианное значение атрибута среди значений атрибутов для ближайших точек в ответ на то, что ближайшие точки в множестве исходных точек имеют одинаковое кратчайшее расстояние до реконструированного положения. В другом примере схема обработки вычисляет среднее значение атрибута значений атрибутов для ближайших точек в ответ на то, что ближайшие точки в множестве исходных точек имеют одинаковое кратчайшее расстояние до реконструированного положения.
[0010] Аспекты изобретения также предоставляют машиночитаемый носитель, хранящий инструкции, которые при их исполнении компьютером для кодирования/декодирования облака точек заставляют компьютер выполнять любой из способов кодирования/декодирования облака точек или их комбинацию.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0011] Другие признаки, характер и различные преимущества настоящего изобретения будут понятны из последующего подробного описания и прилагаемых чертежей.
[0012] Фиг. 1 - схематическая иллюстрация упрощенной структурной схемы системы связи в соответствии с вариантом осуществления изобретения;
[0013] Фиг. 2 - схематическая иллюстрация упрощенной структурной схемы системы потоковой передачи данных в соответствии с вариантом осуществления изобретения;
[0014] Фиг. 3 показывает структурную схему кодера для кодирования кадров облака точек согласно некоторым вариантам осуществления изобретения;
[0015] Фиг. 4 показывает структурную схему декодера для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления изобретения;
[0016] Фиг. 5 - схематическая иллюстрация упрощенной структурной схемы видеодекодера в соответствии с вариантом осуществления изобретения;
[0017] Фиг. 6 - схематическая иллюстрация упрощенной структурной схемы видеокодера в соответствии с вариантом осуществления изобретения;
[0018] Фиг. 7 показывает структурную схему кодера для кодирования кадров облака точек согласно некоторым вариантам осуществления изобретения;
[0019] Фиг. 8 показывает структурную схему декодера для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления изобретения;
[0020] Фиг. 9 показывает схему, иллюстрирующую разделение куба с использованием техники разделения на основе октодерева согласно некоторым вариантам осуществления настоящего изобретения.
[0021] Фиг. 10 показывает пример разделения на основе октодерева и структуры октодерева, соответствующей разделению на основе октодерева, согласно некоторым вариантам осуществления изобретения.
[0022] Фиг. 11 показывает схему, иллюстрирующую способы получения согласно варианту осуществления изобретения.
[0023] Фиг. 12 показывает блок-схему, описывающую пример способа в соответствии с некоторыми вариантами осуществления изобретения.
[0024] Фиг. 13 - схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
[0025] Аспекты изобретения обеспечивают методы кодирования облака точек (РСС, point cloud coding). РСС может выполняться согласно различным схемам, таким как схема на основе геометрии, называемая G-PCC, схема на основе видеокодирования, называемая V-PCC, и т.п. Согласно некоторым аспектам изобретения, схема G-PCC кодирует трехмерную геометрию напрямую и представляет собой чисто геометрический подход, имеющий мало общего с кодированием видеоданных, а схема V-PCC в значительной степени основана на кодировании видеоданных. Например, схема V-PCC может преобразовывать точку трехмерного облака в пиксель двумерной сетки (изображения). Схема V-PCC может использовать универсальные видеокодеки для сжатия облака точек. Группа экспертов по движущимся изображениям (MPEG, Moving Picture Experts Group) работает над стандартом G-PCC и стандартом V-PCC, которые, соответственно, используют схему G-PCC и схему V-PCC.
[0026] Аспекты изобретения предоставляют методы "перекрашивания" (recoloring) для схемы РСС, такой как схема G-PCC и схема V-PCC. Методы перекрашивания могут повысить скорость кодирования облака точек.
[0027] Облака точек могут широко использоваться во многих приложениях. Например, облака точек могут использоваться в автономных транспортных средствах для обнаружения и локализации объектов, в географических информационных системах (ГИС) для картографирования и в культурном наследии для визуализации и архивирования объектов и коллекций культурного наследия и т.д.
[0028] Здесь и далее облако точек обычно может относиться к множеству точек в трехмерном пространстве, при этом каждая точка может быть определена информацией о положении с соответствующими атрибутами, например цветом, свойствами материала, информацией о текстуре, атрибутами интенсивности, атрибутами отражательной способности, атрибутами, связанными с движением, атрибутами модальности и различными другими атрибутами. Облака точек можно использовать для реконструкции объекта сцены как композиции таких точек. Точки могут быть получены с помощью нескольких камер, датчиков глубины и лидара в различных установках и могут состоять из тысяч и миллиардов точек для реалистичного представления реконструированных сцен. Участок (patch) обычно может относиться к непрерывному подмножеству поверхности, описываемой облаком точек. В одном примере участок включает точки с векторами нормали к поверхности, которые отклоняются друг от друга меньше, чем на пороговую величину.
[0029] Технологии сжатия могут уменьшить объем данных, требуемых для представления точки, для более быстрой передачи данных и уменьшения объема памяти. Таким образом, необходимы технологии для сжатия облаков точек с потерями для использования при осуществлении связи в реальном времени и в виртуальной реальности с шестью степенями свободы (6DoF, 6 Degrees of Freedom). Кроме того, требуется технология сжатия облака точек без потерь в контексте динамического картографирования для автономного вождения, приложений, связанных с культурным наследием, и т.п.
[0030] Согласно аспекту изобретения, основная философия V-PCC заключается в использовании существующих видеокодеков для сжатия геометрии, занятости и текстуры динамического облака точек как трех отдельных видеопоследовательностей. Дополнительные метаданные, необходимые для интерпретации трех видеопоследовательностей, сжимаются отдельно. Небольшая часть общего битового потока это метаданные, которые можно эффективно кодировать/декодировать с помощью программной реализации. Основная часть информации обрабатывается видеокодеком.
[0031] Фиг. 1 иллюстрирует упрощенную структурную схему системы (100) связи согласно варианту осуществления настоящего изобретения. Система (100) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (150). Например, система (100) связи включает в себя пару оконечных устройств (110) и (120), соединенных между собой через сеть (150). На фиг. 1 первая пара оконечных устройств (110) и (120) может выполнять однонаправленную передачу данных облака точек. Например, оконечное устройство (110) может сжимать облако точек (например, точки, представляющие структуру), которое получено датчиком (105), соединенным с оконечным устройством (110). Сжатое облако точек может быть передано, например, в виде битового потока в другое оконечное устройство (120) через сеть (150). Оконечное устройство (120) может принимать сжатое облако точек из сети (150), осуществлять декомпрессию битового потока для реконструкции облака точек и соответствующим образом отображать реконструированное облако точек. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.
[0032] На фиг. 1 оконечные устройства (110) и (120) могут быть проиллюстрированы как серверы и персональные компьютеры, но принципы настоящего изобретения этим не ограничены. Варианты осуществления настоящего изобретения находят применение в портативных компьютерах, планшетных компьютерах, смартфонах, игровых терминалах, медиаплеерах и/или специализированном 3D-оборудовании. Сеть (150) представляет любое количество сетей, которые передают сжатое облако точек между оконечными устройствами (110) и (120). Сеть (150) может включать, например, проводные и/или беспроводные сети связи. Сеть (150) может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Примеры сетей включают телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. В целях настоящего рассмотрения, архитектура и топология сети (150) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.
[0033] Фиг. 2 иллюстрирует упрощенную структурную схему системы (200) потоковой передачи в соответствии с вариантом осуществления изобретения. На фиг. 2 показан пример применения изобретения для облака точек. Настоящее изобретение может также использоваться в других приложениях, поддерживающих облако точек, например, в приложении удаленного присутствия 3D, приложении виртуальной реальности и т.п.
[0034] Система (200) потоковой передачи может включать подсистему (213) захвата. Подсистема (213) захвата может включать источник (201) облака точек, например световые системы обнаружения и определения дальности (LIDAR), 3D-камеры, 3D-сканеры, компонент создания графики, который формирует несжатые облака точек в программном обеспечении и т.п., например, облака (202) точек без сжатия. В примере облака (202) точек включают точки, полученные 3D-камерами. Облака (202) точек изображены жирной линией, чтобы подчеркнуть большой объем данных по сравнению со сжатыми облаками (204) точек (битовый поток сжатых облаков точек). Сжатые облака (204) точек могут быть сформированы электронным устройством (220), который включает кодер (203), связанный с источником (201) облака точек. Кодер (203) может включать аппаратное обеспечение, программное обеспечение и их комбинацию для обеспечения возможности реализации аспектов изобретения, как более подробно описано ниже. Сжатые облака (204) точек (битовый поток сжатых облаков (204) точек), изображенные в виде тонкой линии, чтобы подчеркнуть меньший объем данных по сравнению с потоком облаков (202) точек, может храниться на сервере (205) потоковой передачи для будущего использования. Одна или более клиентских подсистем потоковой передачи, таких как клиентские подсистемы (206) и (208) на фиг. 2, могут осуществлять доступ к серверу (205) потоковой передачи для извлечения копий (207) и (209) сжатого облака (204) точек. Клиентская подсистема (206) может включать декодер (210), например, в электронном устройстве (230). Декодер (210) декодирует входящую копию (207) сжатых облаков точек и создает исходящий поток реконструированных облаков (211) точек, которые могут быть отображены на устройстве (212) отображения.
[0035] Следует отметить, что электронные устройства (220) и (230) могут включать другие компоненты (не показаны). Например, электронное устройство (220) может включать декодер (не показан), а электронное устройство (230) также может включать кодер (не показан).
[0036] В некоторых системах потоковой передачи сжатые облака точек (204), (207) и (209) (например, битовые потоки сжатых облаков точек) могут быть сжаты в соответствии с определенными стандартами. В некоторых примерах используются стандарты кодирования видеоданных при сжатии облаков точек. Примеры этих стандартов включают высокоэффективное кодирование видеоданных (HEVC, High Efficiency Video Coding), универсальное кодирование видеоданных (VVC, Versatile Video Coding) и т.п.
[0037] Фиг. 3 показывает структурную схему кодера V-PCC (300) для кодирования кадров облака точек согласно некоторым вариантам осуществления изобретения. В некоторых вариантах осуществления изобретения кодер V-PCC (300) может использоваться в системе (100) связи и системе (200) потоковой передачи. Например, кодер (203) может быть сконфигурирован и может работать аналогично кодеру V-PCC (300).
[0038] Кодер V-PCC (300) принимает кадры облака точек в качестве несжатых входных данных и формирует битовый поток, соответствующий кадрам сжатого облака точек. В некоторых вариантах осуществления изобретения кодер V-PCC (300) может принимать кадры облака точек из источника облака точек, такого как источник (201) облака точек и т.п.
[0039] В примере на фиг. 3 кодер V-PCC (300) содержит модуль (306) формирования участков, модуль (308) упаковки участков, модуль (310) формирования изображения геометрии, модуль (312) формирования изображения текстуры, модуль (304) информации об участках, модуль (314) карты занятости, модуль (336) сглаживания, модули (316) и (318) дополнения (padding) изображения, модуль (320) группового расширения, модули (322), (323) и (332) сжатия видеоданных, модуль (338) сжатия вспомогательной информации об участках, модуль (334) энтропийного сжатия и мультиплексор (324).
[0040] Согласно аспекту изобретения, кодер V-PCC (300) преобразует кадры трехмерного облака точек в представление на основе изображения вместе с некоторыми метаданными (например, картой занятости и информацией об участках), которые используются для преобразования сжатого облака точек в декомпрессированное облако точек. В некоторых примерах кодер V-PCC (300) может преобразовывать кадры трехмерного облака точек в изображения геометрии, изображения текстуры и карты занятости, а затем использовать методы кодирования видеоданных для кодирования изображений геометрии, изображений текстуры и карты занятости с получением битового потока. Как правило, изображение геометрии представляет собой двумерное изображение с пикселями со значениями геометрии, связанными с точками, проецируемыми на пиксели, и пиксель со значением геометрии может называться отсчетом геометрии. Изображение текстуры это двумерное изображение с пикселями со значениями текстуры, связанными с точками, проецируемыми на пиксели, и пиксель со значением текстуры может называться отсчетом текстуры. Карта занятости это двумерное изображение с пикселями со значениями, которые указывают на то, заняты ли они участками.
[0041] Модуль (306) формирования участков разделяет облако точек на множество участков (например, участок определяется как непрерывное подмножество поверхности, описываемой облаком точек), которые могут перекрываться или нет, так что каждый участок может описываться глубиной поля по отношению к плоскости в двумерном пространстве. В некоторых вариантах осуществления изобретения модуль (306) формирования участков нацелен на разложение облака точек на минимальное количество участков с гладкими границами, а также на минимизацию ошибки реконструкции.
[0042] Модуль (304) информации об участках может собирать информацию об участках, которая указывает размеры и форму участков. В некоторых примерах информация об участках может быть упакована в кадр изображения и затем кодирована модулем (338) сжатия вспомогательной информации об участках для формирования сжатой вспомогательной информации об участках.
[0043] Модуль (308) упаковки участков сконфигурирован для отображения извлеченных участков на двумерную (2D) сетку с минимизацией неиспользуемого пространства и обеспечением того, что каждый блок МхМ (например, 16×16) сетки связан с уникальным участком. Эффективная упаковка участков может напрямую повлиять на эффективность сжатия либо за счет минимизации неиспользуемого пространства, либо за счет обеспечения согласованности во времени.
[0044] Модуль (310) формирования изображения геометрии может формировать двумерные изображения геометрии, связанные с геометрией облака точек в заданных местоположениях участков. Модуль (312) формирования изображения текстуры может формировать двумерные изображения текстуры, связанные с текстурой облака точек в заданных местоположениях участков. Модуль (310) формирования изображения геометрии и модуль (312) формирования изображения текстуры используют преобразование 3D в 2D, вычисленное во время процесса упаковки, для сохранения геометрии и текстуры облака точек в качестве изображений. Чтобы лучше справиться со случаем, когда множество точек проецируются на один и тот же отсчет, каждый участок проецируется на два изображения, называемые слоями. В примере изображение геометрии представлено монохроматическим кадром W×H в формате YUV420-8bit. Чтобы сформировать изображение текстуры, процедура формирования текстуры использует реконструированную/сглаженную геометрию для вычисления цветов, которые будут связаны с передискретизированными точками.
[0045] Модуль (314) карты занятости может формировать карту занятости, которая описывает информацию дополнения (padding) в каждой единице. Например, изображение занятости включает двоичную карту, которая указывает для каждой ячейки сетки, принадлежит ли ячейка пустому пространству или облаку точек. В примере карта занятости использует двоичную информацию, описывающую для каждого пикселя, дополнен (padded) ли пиксель или нет. В другом примере карта занятости использует двоичную информацию, описывающую для каждого блока пикселей, дополнен (padded) ли блок пикселей или нет.
[0046] Карта занятости, сформированная модулем (314) карты занятости, может быть сжата с использованием кодирования без потерь или кодирования с потерями. Когда используется кодирование без потерь, для сжатия карты занятости используется модуль (334) энтропийного сжатия. Когда используется кодирование с потерями, для сжатия карты занятости используется модуль (332) сжатия видеоданных.
[0047] Следует отметить, что модуль (308) упаковки участков может оставлять некоторые пустые пространства между двумерными участками, упакованными в кадр изображения. Модули (316) и (318) дополнения изображения могут заполнять пустые пространства (это называется дополнением (padding)), чтобы сформировать кадр изображения, который может подходить для кодеков 2 В-видео и изображений. Дополнение изображения также называется заполнением фона, которое может заполнить неиспользуемое пространство избыточной информацией. В некоторых примерах хорошее заполнение фона минимально увеличивает битовую скорость передачи данных и в то же время не вносит значительных искажений при кодировании вокруг границ участков.
[0048] Модули (322), (323) и (332) сжатия видеоданных могут кодировать двумерные изображения, такие как дополненные изображения геометрии, дополненные изображения текстуры и карты занятости, на основе подходящего стандарта кодирования видеоданных, такого как HEVC, VVC и т.п. В примере модули (322), (323) и (332) сжатия видеоданных являются отдельными компонентами, которые работают по отдельности. Следует отметить, что модули (322), (323) и (332) сжатия видеоданных могут быть реализованным как единый компонент в другом примере.
[0049] В некоторых примерах модуль (336) сглаживания сконфигурирован для создания сглаженного изображения реконструированного изображения геометрии. Сглаженное изображение может быть предоставлено для формирования (312) изображения текстуры. Затем модуль (312) формирования изображения текстуры может управлять формированием изображения текстуры на основе реконструированных изображений геометрии. Например, когда форма участка (например, геометрия) слегка искажается во время кодирования и декодирования, искажение может приниматься во внимание при формировании изображений текстуры для коррекции искажения формы участка.
[0050] В некоторых вариантах осуществления изобретения групповое расширение (320) сконфигурировано для дополнения пикселей вокруг границ объекта избыточным низкочастотным содержимым, чтобы увеличить выигрыш от кодирования, а также улучшить визуальное качество реконструированного облака точек.
[0051] Мультиплексор (324) может мультиплексировать сжатое изображение геометрии, сжатое изображение текстуры, сжатую карту занятости и сжатую вспомогательную информацию об участках в сжатый битовый поток.
[0052] Фиг. 4 показывает структурную схему декодера V-PCC (400) для декодирования сжатого битового потока, соответствующего кадрам облака точек, согласно некоторым вариантам осуществления изобретения. В некоторых вариантах осуществления изобретения декодер V-PCC (400) может использоваться в системе (100) связи и системе (200) потоковой передачи. Например, декодер (210) может быть сконфигурирован для работы аналогично декодеру V-PCC (400). Декодер V-PCC (400) принимает сжатый битовый поток и формирует реконструированное облако точек на основе сжатого битового потока.
[0053] В примере на фиг. 4 декодер V-PCC (400) содержит демультиплексор (432), модули (434) и (436) декомпрессии видеоданных, модуль (438) декомпрессии карты занятости, модуль (442) декомпрессии вспомогательной информации об участках, модуль (444) реконструкции геометрии, модуль (446) сглаживания, модуль (448) реконструкции текстуры и модуль (452) сглаживания цвета.
[0054] Демультиплексор (432) может принимать и разделять сжатый битовый поток на сжатое изображение текстуры, сжатое изображение геометрии, сжатую карту занятости и сжатую вспомогательную информацию об участках.
[0055] Модули (434) и (436) декомпрессии видеоданных могут декодировать сжатые изображения в соответствии с подходящим стандартом (например, HEVC, VVC и т.д.) и выводить декомпрессированные изображения. Например, модуль (434) декомпрессии видеоданных декодирует сжатые изображения текстуры и выводит декомпрессированные изображения текстуры, а модуль (436) декомпрессии видеоданных декодирует сжатые изображения геометрии и выводит декомпрессированные изображения геометрии.
[0056] Модуль (438) декомпрессии карты занятости может декодировать сжатые карты занятости согласно подходящему стандарту (например, HEVC, VVC и т.д.) и выводить декомпрессированные карты занятости.
[0057] Модуль (442) декомпрессии вспомогательной информации об участках может декодировать сжатую вспомогательную информацию об участках в соответствии с подходящим стандартом (например, HEVC, VVC и т.д.) и выводить декомпрессированную вспомогательную информацию об участках.
[0058] Модуль (444) реконструкции геометрии может принимать декомпрессированные изображения геометрии и формировать реконструированную геометрию облака точек на основе декомпрессированной карты занятости и декомпрессированной вспомогательной информации об участках.
[0059] Модуль сглаживания (446) может сглаживать несоответствия на краях участков. Процедура сглаживания направлена на смягчение потенциальных неоднородностей, которые могут возникать на границах участков из-за артефактов сжатия. В некоторых вариантах осуществления изобретения к пикселям, расположенным на границах участка, может применяться фильтр сглаживания, чтобы уменьшить искажения, которые могут быть вызваны сжатием/декомпрессией.
[0060] Модуль (448) реконструкции текстуры может определять информацию текстуры для точек в облаке точек на основе декомпрессированных изображений текстуры и геометрии сглаживания.
[0061] Модуль (452) сглаживания цвета может сглаживать несоответствия цвета. Несмежные участки в 3D-пространстве часто упаковываются рядом друг с другом в 2 В-видео. В некоторых примерах значения пикселей из несмежных участков могут смешиваться блочным видеокодеком. Целью сглаживания цвета является уменьшение видимых артефактов, появляющихся на границах участков.
[0062] Фиг. 5 показывает структурную схему видеодекодера (510) согласно варианту осуществления настоящего изобретения. Видеодекодер (510) может использоваться в декодере V-PCC (400). Например, модули (434) и (436) декомпрессии видеоданных и модуль (438) декомпрессии карты занятости могут быть сконфигурированы аналогично видеодекодеру (510).
[0063] Видеодекодер (510) может содержать анализатор (520) для реконструкции символов (521) из сжатых изображений, например, из кодированной видеопоследовательности. Категории этих символов включают информацию, используемую для управления работой видеодекодера (510). Анализатор (520) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование видеопоследовательности может осуществляться согласно технологии или стандарту кодирования видеоданных и может следовать различным принципам, включая кодирование с переменной длиной серии, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и т.д. Анализатор (520) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (GOP, Group of Pictures), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU, Coding Unit), блоки, единицы преобразования (TU, Transform Unit), единицы предсказания (PU, Prediction Unit) и т.д. Анализатор (520) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантования, векторы движения и т.д.
[0064] Анализатор (520) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти, для создания символов (521).
[0065] Для реконструкции символов (521) могут использоваться несколько различных модулей в зависимости от типа кодированного видеоизображения или его частей (например: изображения с внутренним и внешним кодированием, блоки с внутренним и внешним кодированием) и других факторов. Какие модули и как используются, может определяться информацией управления подгруппами, полученной из кодированной видеопоследовательности анализатором (520). Поток такой информации управления подгруппами между анализатором (520) и модулями для простоты в дальнейшем не показан.
[0066] Помимо ранее упомянутых функциональных блоков, видеодекодер (510) может принципиально разделяться на несколько функциональных модулей, как описано ниже. В практической реализации в условиях коммерческих ограничений многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания настоящего изобретения уместно принципиальное разделение на перечисленные ниже функциональные модули.
[0067] Первым модулем является модуль (551) масштабирования / обратного преобразования. Модуль (551) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (521) от анализатора (520). Модуль (551) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (555).
[0068] В ряде случаев выходные отсчеты модуля (551) масштабирования / обратного преобразования могут относиться к блоку с внутренним кодированием, то есть к блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (552) внутреннего предсказания изображения. В ряде случаев модуль (552) внутреннего предсказания изображения формирует блок такого же размера и формы, как у блока, подлежащего реконструкции, с использованием информации уже реконструированного окружения, извлеченной из буфера (558) текущего изображения. Буфер (558) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (555) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сформированную модулем (552) внутреннего предсказания, в информацию выходных отсчетов, предоставленную модулем (551) масштабирования / обратного преобразования.
[0069] В других случаях выходные отсчеты модуля (551) масштабирования / обратного преобразования могут относиться к блоку с внутренним кодированием, возможно, с компенсацией движения. В таком случае модуль (553) предсказания с компенсацией движения может осуществлять доступ к памяти (557) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (521), относящимися к блоку, эти отсчеты могут добавляться агрегатором (555) к выходному сигналу модуля (551) масштабирования / обратного преобразования (в этом случае называемому отсчетами остатка или сигналом остатка) для формирования информации выходных отсчетов. Адреса в памяти (557) опорных изображений, откуда модуль (553) предсказания с компенсацией движения извлекает отсчеты для предсказания, могут управляться векторами движения, доступными модулю (553) предсказания с компенсацией движения, в форме символов (521), которые могут иметь, например, компоненты X, Y и компоненты опорного изображения. Компенсация движения также может включать интерполяцию значений отсчетов, извлеченных из памяти (557) опорных изображений, когда используются точные векторы движения подотсчетов, механизмы предсказания векторов движения и т.д.
[0070] К выходным отсчетам агрегатора (555) можно применять различные методы контурной фильтрации в модуле (556) контурного фильтра. Технологии сжатия видеоданных могут включать технологии контурного фильтра под управлением с помощью параметров, включенных в кодированную видеопоследовательность (также называемую битовым потоком кодированных видеоданных) и доступных модулю (556) контурного фильтра в качестве символов (521) от анализатора (520), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.
[0071] Модуль (556) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство визуализации, а также сохраняться в памяти (557) опорных изображений для использования в будущем внешнем предсказании изображения.
[0072] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано и идентифицировано как опорное изображение (например, анализатором (520)), буфер (558) текущего изображения может становиться частью памяти (557) опорных изображений, и может повторно выделяться свежий буфер для текущего изображения до начала реконструкции следующего кодированного изображения.
[0073] Видеодекодер (510) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видеоданных в стандарте, таком как Рекомендация МСЭ-Т Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или используемым стандартом сжатия видеоданных, в том смысле, что кодированная видеопоследовательность может придерживаться синтаксиса технологии или стандарта сжатия видеоданных и профилей, указанных в документе технологии или стандарта сжатия видеоданных. В частности, профиль может выбирать определенные инструменты как единственные инструменты, доступные для использования в этом профиле из всех инструментов, доступных в технологии или стандарте сжатия видеоданных. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видеоданных. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемыми в кодированной видеопоследовательности.
[0074] Фиг. 6 показывает структурную схему видеокодера (603) согласно варианту осуществления настоящего изобретения. Видеокодер (603) может использоваться в кодере V-PCC (300) для сжатия облаков точек. В примере модули (322) и (323) сжатия видеоданных и модуль (332) сжатия видеоданных сконфигурированы аналогично кодеру (603).
[0075] Видеокодер (603) может принимать изображения, такие как дополненные изображения геометрии, дополненные изображения текстуры и т.п., и формировать сжатые изображения.
[0076] Согласно варианту осуществления изобретения, видеокодер (603) может кодировать и сжимать изображения исходной видеопоследовательности (изображения) в кодированную видеопоследовательность (сжатые изображения) в реальном времени или с любыми другими временными ограничениями, требуемыми применением. Установление надлежащей скорости кодирования является одной из функций контроллера (650). В некоторых вариантах осуществления изобретения контроллер (650) управляет другими функциональными модулями, как описано ниже, и функционально подключен к ним. Подключение для простоты не показано. Параметры, установленные контроллером (650), могут включать параметры, связанные с регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое в методах оптимизации «скорость-искажения», и т.д.), размер изображения, организацию групп изображений (GOP, group of pictures), максимальную зону поиска вектора движения и т.д. Контроллер (650) может иметь другие подходящие функции, относящиеся к видеокодеру (603), оптимизированному для конкретной конструкции системы.
[0077] В некоторых вариантах осуществления изобретения видеокодер (603) выполнен с возможностью работы в «контуре кодирования». В качестве очень упрощенного описания, например, контур кодирования может включать кодер (630) источника (например, отвечающий за создание символов, например, потока символов на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (633), встроенный в видеокодер (603). Декодер (633) реконструирует символы для создания данных отсчетов аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие символов в битовый поток кодированных видеоданных происходит без потерь в технологиях сжатия видеоданных, рассматриваемых в данном описании). Поток реконструированных отсчетов (данных отсчетов) поступает в память (634) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, которые не зависят от положения (локального или удаленного) декодера, содержимое в памяти (634) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, как «видел» бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) также используется в некоторых связанных областях техники.
[0078] «Локальный» декодер (633) может действовать таким же образом, как «удаленный» декодер, такой как видеодекодер (510), подробно описанный выше со ссылкой на фиг. 5. Однако, опять же, согласно фиг. 5, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (645) и анализатором (520) может осуществляться без потерь, части энтропийного декодирования видеодекодера (510), включая анализатор (520), могут быть не полностью реализованы в локальном декодере (633).
[0079] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа / энтропийного декодирования, также обязательно должна присутствовать по существу в идентичной функциональной форме в соответствующем кодере. По этой причине настоящее описание фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодирования. Лишь в некоторых областях требуется более подробное описание, которое приведено ниже.
[0080] Согласно некоторым примерам, в ходе работы кодер (630) источника может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основе одного или более ранее кодированных изображений из видеопоследовательности, указанных как «опорные изображения». Таким образом, механизм (632) кодирования кодирует разности между блоками пикселей входного изображения и блоками пикселей опорного изображения(ий), которое(ые) может(ут) выбираться в качестве ссылки(ок) предсказания на входной кадр.
[0081] Локальный видеодекодер (633) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных кодером (630) источника. Операции механизма (632) кодирования могут быть преимущественно способами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 6), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (633) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может обеспечивать сохранение реконструированных опорных изображений в кэш-памяти (634) опорных изображений. Таким образом, видеокодер (603) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены удаленным видеодекодером (в отсутствие ошибок передачи).
[0082] Предсказатель (635) может осуществлять поиски предсказания для механизма (632) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (635) может искать в памяти (634) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных блоков пикселей) или конкретные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (635) может работать на основе «блоки отсчетов × блоки пикселей» для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (635), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (634) опорных изображений.
[0083] Контроллер (650) может управлять операциями кодирования кодера (630) источника, включая, например, установление параметров, а также параметров подгруппы, используемых для кодирования видеоданных.
[0084] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (645). Энтропийный кодер (645) переводит символы, сформированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно, например, технологиям, таким как кодирование Хаффмана, кодирование с переменной длиной серии, арифметическое кодирование и т.д.
[0085] Контроллер (650) может управлять работой видеокодера (603). В ходе кодирования контроллер (650) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображений.
[0086] Изображение с внутренним кодированием (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника для предсказания. Некоторые видеокодеки допускают разные типы изображений с внутренним кодированием, включая, например, изображения в формате независимого обновления декодера (IDR, Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.
[0087] Изображение с предсказанием (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0088] Изображение с двунаправленным предсказанием (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, изображения с множеством предсказаний могут использовать более двух опорных изображений и соответствующие метаданные для реконструкции одного блока.
[0089] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться с предсказанием со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки 1-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (с пространственным предсказанием или внутренним предсказанием). Блоки пикселей Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0090] Видеокодер (603) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту кодирования видеоданных, например, Рекомендации МСЭ-Т Н.265. В своей работе видеокодер (603) может осуществлять различные операции сжатия, в том числе операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Поэтому кодированные видеоданные могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видеоданных.
[0091] Видео может быть в виде множества исходных изображений во временной последовательности. Предсказание внутри изображения (часто сокращенно называемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а внешнее предсказание изображения использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое называется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.
[0092] В некоторых вариантах осуществления изобретения, может использоваться метод двойного предсказания во внешнем предсказании изображения. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться посредством первого вектора движения, который указывает на первый опорный блок в первом опорном изображении, и второго вектора движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться с помощью комбинации первого опорного блока и второго опорного блока.
[0093] Дополнительно, во внешнем предсказании изображения может использоваться метод режима слияния для повышения эффективности кодирования.
[0094] Согласно некоторым вариантам осуществления изобретения предсказания, например внешнее предсказание изображения и внутреннее предсказание изображения, осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разделяется на единицы дерева кодирования (CTU, coding tree units) для сжатия, при этом единицы CTU в изображении имеют одинаковый размер, например 64×64, 32×32 или 16×16 пикселей. В общем случае единица CTU включает три блока дерева кодирования (СТВ, coding tree block), а именно, один блок СТВ яркости и два блока СТВ цветности. Каждая единица CTU может рекурсивно разделяться на основе квадродерева на одну или более единиц кодирования (CU, coding unit). Например, единица CTU размером 64×64 пикселей может делиться на одну единицу CU размером 64×64 пикселей или 4 единицы CU размером 32×32 пикселей или 16 единиц CU размером 16×16 пикселей. Например, каждая единица CU анализируется для определения типа предсказания для этой единицы CU, например, типа внешнего предсказания или типа внутреннего предсказания. Единица CU делится на одну или более единиц предсказания (PU, prediction unit) в зависимости от временной и/или пространственной предсказуемости. В целом, каждая единица PU включает блок предсказания (РВ, prediction block) яркости и два блока РВ предсказания цветности. Согласно варианту осуществления изобретения, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. В качестве примера блока предсказания, блок предсказания яркости включает матрицу значений (например, значений яркости) для пикселей, например, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.
[0095] На фиг. 7 показана структурная схема кодера G-PPC (700) в соответствии с вариантом осуществления изобретения. Кодер (700) может быть сконфигурирован для приема данных облака точек и сжатия данных облака точек для создания битового потока, переносящего сжатые данные облака точек. В варианте осуществления изобретения кодер (700) может включать модуль (710) квантования положения, модуль (712) удаления повторяющихся точек, модуль (730) кодирования октодерева, модуль (720) передачи атрибутов, модуль (740) формирования LOD, модуль (750) предсказания атрибутов, модуль (760) квантования остатка, модуль (770) арифметического кодирования, модуль (780) деквантования остатка, модуль (781) сложения и память (790) для хранения реконструированных значений атрибутов.
[0096] Как показано, кодер (700) может принимать входное облако (701) точек. Положения (например, трехмерные координаты) облака (701) точек предоставляются модулю (710) квантования. Модуль (710) квантования сконфигурирован для квантования координат для формирования квантованных положений. Модуль (712) удаления повторяющихся точек сконфигурирован для приема квантованных положений и выполнения процесса фильтрации для идентификации и удаления повторяющихся точек. Модуль (730) кодирования октодерева сконфигурирован для приема отфильтрованных положений от модуля (712) удаления повторяющихся точек и выполнения процесса кодирования на основе октодерева для формирования последовательности кодов занятости, которые описывают трехмерную сетку вокселей. Коды занятости передаются в модуль (770) арифметического кодирования.
[0097] Модуль (720) передачи атрибутов сконфигурирован для приема атрибутов входного облака точек и выполнения процесса передачи атрибутов для определения значения атрибута для каждого вокселя, когда множество значений атрибутов связаны с соответствующим вокселем. Процесс передачи атрибутов может выполняться для переупорядоченных точек, выводимых из модуля (730) кодирования октодерева. Атрибуты после операций передачи предоставляются модулю (750) предсказания атрибутов. Модуль (740) формирования LOD сконфигурирован для работы с переупорядоченными точками, выводимыми из модуля (730) кодирования октодерева, и реорганизации точек в разные уровни LOD. Информация LOD подается в модуль (750) предсказания атрибутов.
[0098] Модуль (750) предсказания атрибутов обрабатывает точки в соответствии с порядком на основе LOD, указанным в информации LOD из модуля (740) формирования LOD. Модуль (750) предсказания атрибутов формирует предсказание атрибута для текущей точки на основе реконструированных атрибутов множества соседних точек для текущей точки, сохраненных в памяти (790). Остатки предсказания впоследствии могут быть получены на основе исходных значений атрибутов, полученных от модуля (720) передачи атрибутов, и локально сформированных предсказаний атрибутов. Когда индексы кандидатов используются в процессе предсказания соответствующего атрибута, индекс, соответствующий выбранному кандидату предсказания, может быть предоставлен в модуль (770) арифметического кодирования.
[0099] Модуль (760) квантования остатка сконфигурирован для приема остатков предсказания от модуля (750) предсказания атрибутов и выполнения квантования для формирования квантованных остатков. Квантованные остатки подаются в модуль (770) арифметического кодирования.
[0100] Модуль (780) деквантования остатка сконфигурирован для приема квантованных остатков от модуля (760) квантования остатка и формирования реконструированных остатков предсказания путем выполнения операций, обратных операциям квантования, выполняемым в модуле (760) квантования остатка. Модуль (781) сложения сконфигурирован для приема реконструированных остатков предсказания из модуля (780) деквантования остатка и соответствующих предсказаний атрибутов из модуля (750) предсказания атрибутов. Путем объединения реконструированных остатков предсказания и предсказаний атрибутов, реконструированные значения атрибутов формируются и сохраняются в памяти (790).
[0101] Модуль (770) арифметического кодирования сконфигурирован для приема кодов занятости, индексов кандидатов (если используются), квантованных остатков (если сформированы) и другой информации, а также выполнения энтропийного кодирования для дальнейшего сжатия принятых значений или информации. В результате может быть сформирован сжатый битовый поток (702), переносящий сжатую информацию. Битовый поток (702) может быть передан или иным образом предоставлен декодеру, который декодирует сжатый битовый поток, или может быть сохранен в запоминающем устройстве.
[0102] Фиг. 8 показывает структурную схему декодера G-PCC (800) в соответствии с вариантом осуществления изобретения. Декодер (800) может быть сконфигурирован для приема сжатого битового потока и выполнения декомпрессии данных облака точек для декомпрессии битового потока с формированием декодированных данных облака точек. В варианте осуществления изобретения декодер (800) может содержать модуль (810) арифметического декодирования, модуль (820) деквантования остатка, модуль (830) декодирования октодерева, модуль (840) формирования LOD, модуль (850) предсказания атрибутов и память (860) для хранения реконструированных значений атрибутов.
[0103] Как показано, сжатый битовый поток (801) может быть принят в модуле (810) арифметического декодирования. Модуль (810) арифметического декодирования сконфигурирован для декодирования сжатого битового потока (801) для получения квантованных остатков (если они сформированы) и кодов занятости облака точек. Модуль (830) декодирования октодерева сконфигурирован для определения реконструированных положений точек в облаке точек в соответствии с кодами занятости. Модуль (840) формирования LOD сконфигурирован для реорганизации точек в разные уровни LOD на основе реконструированных положений и определения порядка на основе LOD. Модуль (820) деквантования остатка сконфигурирован для формирования реконструированных остатков на основе квантованных остатков, принятых от модуля (810) арифметического декодирования.
[0104] Модуль (850) предсказания атрибутов сконфигурирован для выполнения процесса предсказания атрибутов, чтобы определять предсказания атрибутов для точек в соответствии с порядком на основе LOD. Например, предсказание атрибута текущей точки может быть определено на основе реконструированных значений атрибутов соседних точек для текущей точки, сохраненных в памяти (860). Модуль (850) предсказания атрибута может объединять предсказание атрибута с соответствующим реконструированным остатком, чтобы сформировать реконструированный атрибут для текущей точки.
[0105] Последовательность реконструированных атрибутов, сформированная модулем (850) предсказания атрибутов, вместе с реконструированными положениями, сформированными модулем (830) декодирования октодерева, соответствует декодированному облаку (802) точек, которое выводится из декодера (800) в одном из примеров. Кроме того, реконструированные атрибуты также сохраняются в памяти (860) и могут впоследствии использоваться для получения предсказаний атрибутов для последующих точек.
[0106] В различных вариантах осуществления изобретения кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы с помощью аппаратного обеспечения, программного обеспечения или их комбинации. Например, кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы с помощью схемы обработки, такой как одна или более интегральных схем, которые работают с программным обеспечением или без него, например специализированная интегральная схема (ASIC, application specific integrated circuit), вентильная матрица, программируемая пользователем (FPGA, field programmable gate array) и т.п. В другом примере кодер (300), декодер (400), кодер (700) и/или декодер (800) могут быть реализованы как программное обеспечение или встроенное программное обеспечение, включая инструкции, хранящиеся на постоянном (или энергонезависимом) машиночитаемом носителе данных. Инструкции при их исполнении схемой обработки, такой как один или более процессоров, заставляют схему обработки выполнять функции кодера (300), декодера (400), кодера (700) и/или декодера (800).
[0107] Следует отметить, что модули (750) и (850) предсказания атрибутов, сконфигурированные для реализации способов предсказания атрибутов, раскрытых в данном описании, могут быть включены в другие декодеры или кодеры, которые могут иметь структуру, аналогичную структурам, показанным на фиг. 7 и фиг. 8, или отличную от них структуру. Кроме того, кодер (700) и декодер (800) могут быть включены в одно и то же устройство или отдельные устройства в различных примерах.
[0108] Согласно некоторым аспектам изобретения, в некоторых связанных примерах (например, в текущей версии модели ТМС13) на стороне кодера применяется процесс перекрашивания (recolor) при квантовании геометрии и объединении повторяющихся положений. Процесс перекрашивания относительно сложен. Например, процесс перекрашивания опирается на структуру данных дерева k-d (например, трехмерного дерева) для поиска ближайшего(их) соседа(ей). Поиск по дереву k-d может быть сложным и может занимать много времени.
[0109] В связанном примере (например, в версии модели ТМС13) входные данные для алгоритма перекрашивания могут включать исходные положения исходных точек в облаке точек, атрибуты, связанные с исходными положениями, и реконструированные положения (например, результаты квантования геометрии и слияния повторяющихся положений). Алгоритм перекрашивания может переносить атрибуты, связанные с исходными положениями, в атрибуты, связанные с реконструированными положениями, например, с минимизацией искажений атрибутов. Атрибуты, связанные с реконструированными положениями, могут формировать реконструированные точки в реконструированном облаке точек. Следует отметить, что алгоритм перекрашивания может передавать любой подходящий атрибут, такой как цвет, свойства материала, информация о текстуре, атрибуты интенсивности, атрибуты отражательной способности, атрибуты, связанные с движением, атрибуты модальности и различные другие атрибуты. В одном примере алгоритм перекрашивания включает пять этапов, которые подробно описаны ниже.
i
i=0…N-1
rec
rec
rec
[0110] На первом этапе принимают исходные положения точек в облаке точек, атрибуты, связанные с исходными положениями, и реконструированные положения. В примере, (X) обозначает исходные положения исходных точек в исходном облаке точек, N обозначает количество точек в исходном облаке точек,  обозначает реконструированные положения, a N обозначает количество реконструированных положений. Если повторяющиеся точки существуют и объединены, то N<N, в противном случае N=N.
[0111] На втором этапе для каждого положения  в реконструированном облаке точек выполняют процесс поиска, например, на основе поиска по дереву k-d, чтобы определить  который является ближайшим соседом в исходном облаке точек, и  обозначает значение атрибута, связанного с ближайшим соседом в исходном облаке точек.
[0112] На третьем этапе для каждого положения  в реконструированном облаке точек выполняют процессы поиска, например, на основе поиска по дереву k-d, чтобы определить множество исходных положений в исходном облаке точек, которое обозначается  при этом множество исходных положений совместно использует  в качестве ближайшего соседа в реконструированном облаке точек. H(i) обозначает количество элементов в  а  обозначает один из элементов  Следует отметить, что множество  может быть пустым или может иметь один или более элементов.
[0113] На четвертом этапе проверяют  Когда  пусто, значение атрибута  связанного с положением  устанавливают равным
[0114] На пятом этапе, если  не пусто, значение атрибута  связанного с положением  может быть вычислено, например, на основе выражения (1):
[0115] В связанном примере поиски, такие как поиск по дереву k-d (например, по трехмерному дереву), используют для поиска ближайшего(их) соседа(ей). Поиск по дереву k-d может быть сложным и может занимать много времени. Настоящее изобретение предоставляет методы перекрашивания для уменьшения сложности и повышения скорости обработки. Например, поиск ближайших соседей может быть определен на основе информации, сохраненной при квантовании геометрии и объединении повторяющихся точек.
[0116] Предлагаемые способы можно использовать по отдельности или комбинировать в любом порядке. Кроме того, каждый из способов (или вариантов осуществления изобретения) кодера и декодера может быть реализован схемой обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере один или более процессоров исполняют программу, которая хранится на машиночитаемом носителе.
[0117] Согласно некоторым аспектам изобретения информация о геометрии и соответствующие атрибуты облака точек, такие как цвет, коэффициент отражения и т.п., могут быть отдельно сжаты (например, в модели ТМС13). В некоторых вариантах осуществления изобретения информация о геометрии облака точек, которая включает в себя трехмерные координаты точек в облаке точек, может обрабатываться в соответствии с процессом квантования и слияния повторений. В некоторых примерах процесс квантования и слияния повторений может быть основан на разделении на основе октодерева, а информация о геометрии может кодироваться посредством разделения на основе октодерева с информацией о занятости разделов. Атрибуты могут быть сжаты на основе реконструированной геометрии с использованием, например, методов предсказания, подъема (lifting) и адаптивного иерархического преобразования области (RAHT, region adaptive hierarchical transform). Например, кодированная информация о геометрии может подвергаться деквантованию для реконструкции информации о геометрии для облака точек, такой как реконструированные положения. Атрибуты исходных точек переносятся в реконструированные положения и затем кодируются.
[0118] Согласно некоторым аспектам изобретения трехмерное пространство может быть разделено с использованием разделения на основе октодерева. Октодеревья являются трехмерным аналогом квадродеревьев в двумерном пространстве. Метод разделения на основе октодерева относится к методу разделения, который рекурсивно разделяет трехмерное пространство на восемь октантов, а структура октодерева относится к древовидной структуре, которая представляет разделения. В одном примере каждый узел в структуре октодерева соответствует трехмерному пространству, и узел может быть конечным узлом (узлом без разделения, также называемым листовым узлом в некоторых примерах) или узлом с дальнейшим разделением. Разделение в узле может разделить трехмерное пространство, представленное узлом, на восемь октантов. В некоторых примерах узлы, соответствующие разделениям определенного узла, могут называться дочерними узлами конкретного узла.
[0119] Фиг. 9 показывает схему, иллюстрирующую разделение трехмерного куба (900) (соответствующего узлу) на основе метода разделения на основе октодерева согласно некоторым вариантам осуществления настоящего изобретения. Разделение может разделять трехмерный куб (900) на более мелкие равные по размеру кубы 0-7, как показано на фиг. 9.
[0120] Метод разделения октодерева (например, в ТМС13) может рекурсивно разделять исходное трехмерное пространство на меньшие единицы, и информация о занятости каждого подпространства может кодироваться для представления геометрических положений.
м-1
м-1
м-1
м-1
[0121] В некоторых вариантах осуществления изобретения (например, в ТМС13) используется кодек геометрии октодерева. Кодек геометрии октодерева может выполнять кодирование геометрии. В некоторых примерах кодирование геометрии выполняется на кубическом боксе (box). Например, кубический бокс может быть выровненным по оси ограничивающим боксом В, который определяется двумя точками (0,0,0) и (2, 2, 2), где 2 определяет размер ограничивающего бокса В, а М может быть указано в битовом потоке.
м-1
м-1
м-1
[0122] Затем строится структура октодерева путем рекурсивного разделения кубического бокса. Например, кубический бокс, заданный двумя точками (0,0,0) и (2, 2, 2), разделяется на 8 субкубических боксов, а затем формируется 8-битный код, называемый кодом занятости. Каждый бит кода занятости связан с субкубическим боксом, и значение этого бита используется для указания, содержит ли соответствующий субкубический бокс какие-либо точки облака точек. Например, значение бита, равное 1, указывает на то, что субкубический бокс, связанный с битом, содержит одну или более точек облака точек, а значение бита, равное 0, указывает на то, что субкубический бокс, связанный с битом, не содержит точек облака точек.
[0123] К пустому субкубическому боксу (например, значение бита, связанного с субкубическим боксом, равно 0) больше не применяется разделение. Когда субкубический бокс имеет одну или более точек облака точек (например, значение бита, связанного с субкубическим боксом, равно 1), субкубический бокс далее разделяется на 8 субкубических боксов меньшего размера, и может быть сформирован код занятости для субкубического бокса, чтобы указать занятость меньших субкубических боксов. В некоторых примерах операции разделения могут повторяться для непустых субкубических боксов до тех пор, пока размер субкубических боксов не станет равным заранее заданному порогу, например, 1. В некоторых примерах субкубические боксы размером 1 (единичного размера) называются вокселями, а субкубические боксы, которые имеют большие размеры, чем воксели, могут называться не-вокселями.
[0124] Фиг. 10 показывает пример разделения (1010) на основе октодерева и структуры октодерева (1020), соответствующей разделению (1010) на основе октодерева, согласно некоторым вариантам осуществления изобретения. Фиг. 10 показывает два уровня разделения в разделении (1010) на основе октодерева. Структура (1020) октодерева включает узел (N0), соответствующий кубическому боксу для разделения (1010) на основе октодерева. На первом уровне кубический бокс разделяется на 8 субкубических боксов, которые пронумерованы от 0 до 7 согласно способу нумерации, показанному на фиг. 9. Код занятости для разделения узла N0 равен «10000001» в двоичном формате, что указывает на то, что первый субкубический бокс, представленный узлом N0-0, и восьмой субкубический бокс, представленный узлом N0-7, содержат точки облака точек, а другие субкубические боксы пусты.
[0125] Затем, на втором уровне разделения, первый субкубический бокс (представленный узлом N0-0) и восьмой субкубический бокс (представленный узлом N0-7) далее соответственно разделяются на восемь октантов. Например, первый субкубический бокс (представленный узлом N0-0) разделяется на 8 субкубических боксов меньшего размера, которые пронумерованы 0-7 согласно способу нумерации, показанному на фиг. 9. Код занятости для разделения узла N0-0 «00011000» в двоичном формате, что указывает на то, что четвертый меньший субкубический бокс (представленный узлом N0-0-3) и пятый меньший субкубический бокс (представленный узлом N0-0-4) содержат точки облака точек, а другие меньшие субкубические боксы пусты. На втором уровне седьмой субкубический бокс (представленный узлом N0-7) аналогично разделяется на 8 субкубических боксов меньшего размера, как показано на фиг. 10.
[0126] На фиг. 10 узлы, соответствующие непустому кубическому пространству (такому как кубический бокс, субкубические боксы, субкубические боксы меньшего размера и т.п.), окрашены в серый цвет и упоминаются как заштрихованные узлы.
[0127] В некоторых вариантах осуществления изобретения для вокселя кубического бокса единичного размера точки в кубическом боксе единичного размера могут быть квантованы, например, в центральное положение кубического бокса единичного размера. Если имеются множество точек в кубическом боксе единичного размера, точки объединяются в центральное положение кубического бокса единичного размера. Центральные положения вокселей могут образовывать реконструированные положения для реконструированных точек в реконструированном облаке точек.
[0128] Согласно некоторым аспектам изобретения, может использоваться подходящая структура данных (такая как таблица преобразования, список и т.п.) для связывания исходных точек в вокселе с реконструированным положением (например, центральным положением) вокселя. Например, запись в таблице преобразования может связывать индекс вокселя с индексами исходных точек в вокселе. Структура данных может быть сохранена. Таким образом, для каждого положения в реконструированном облаке точек, которое является центральной точкой вокселя, исходные точки в вокселе, которые объединены с центральным положением, могут быть определены на основе структуры данных.
[0129] Согласно аспекту изобретения, геометрия облака точек квантуется посредством скалярного квантования, и скалярное квантование является единственным источником геометрического искажения в некоторых примерах. В некоторых вариантах осуществления изобретения, когда разделение на основе октодерева используется для квантования геометрии, воксели представляют собой кубический бокс единичного размера, каждый из которых содержит одну или более исходных точек облака точек, и одна или более исходных точек квантуются в центральную точку вокселя. Таким образом, одна или более исходных точек в вокселе имеют ту же центральную точку (в реконструированном облаке точек) вокселя, что и ближайший сосед, и множество  каждого положения в реконструированном облаке точек не пусто. Следовательно, четвертый этап в алгоритме перекрашивания не нужен.
[0130] Фиг. 11 показывает одномерную диаграмму, иллюстрирующую способы получения, которые могут использоваться в трехмерном (3D) пространстве для определения множества точек, совместно использующих реконструированное положение  при квантовании геометрии. Ромбовидные точки 1-8 представляют собой исходные точки, а круглые черные точки R1-R3 представляют собой реконструированные положения реконструированных точек (также называемые квантованными точками в некоторых примерах).
[0131] В примере шаг квантования равен q, поэтому все точки в диапазоне  могут быть квантованы в положение nq, где n=0, ±1, ±2, ….
Например, исходные точки 1-3 находятся в диапазоне [-3q/2, -q/2) и квантуются в реконструированное положение R1, исходные точки 4-5 находятся в диапазоне [-q/2, q/2) и квантуются в реконструированное положение R2, исходные точки 6-8 находятся в диапазоне [q/2, 3q/2) и квантуются в реконструированное положение R3. Следовательно, ближайший сосед исходной точки в реконструированном облаке точек - это реконструированное положение. Другими словами, множество  каждого реконструированного положения - это исходные точки, которые квантуются в реконструированное положение. Таким образом, в некоторых вариантах осуществления изобретения подходящая структура данных используется для хранения множества  связанного с реконструированным положением. Затем на основе структуры данных для реконструированного положения можно быстро определить множество  без дополнительного поиска по дереву k-d.
[0132] На основе результатов квантования, сохраненных в подходящей структуре данных, алгоритм перекрашивания может быть упрощен. Например, значение атрибута каждого квантованного положения назначается на основе значений атрибутов в исходных положениях, которые квантованы в квантованное положение. В частности, в некоторых примерах алгоритм перекрашивания может включать 3 этапа, которые подробно описаны ниже.
i
i=0…N-1
rec
rec
rec
[0133] На первом этапе принимают исходные положения точек в облаке точек, атрибуты, связанные с исходными положениями, и реконструированные положения. В примере (X) обозначает исходные положения точек в исходном облаке точек, N обозначает количество точек в исходном облаке точек,  обозначает реконструированные положения реконструированного облака точек, a N обозначает количество реконструированных положений в реконструированном облаке точек. Если повторяющиеся точки существуют и объединены, то N<N, в противном случае N=N.
i
[0134] На втором этапе для каждого реконструированного положения  в реконструированном облаке точек может осуществляться доступ к структуре данных, в которой хранится множество исходных положений в связи с каждым реконструированным положением, на основе реконструированного положения для определения множества исходных положений  при этом исходные положения в указанном множестве квантованы и деквантованы в  H(i) обозначает количество элементов в  a X(h) обозначает один из элементов Множество  может быть получено в процессе квантования геометрии.
[0135] На третьем этапе значение атрибута  связанное с реконструированным положением  может быть получено из значений атрибутов, связанных с исходными положениями в множестве
[0136] Для вычисления значения атрибута  могут использоваться различные методы.
a
i
i
[0137] В варианте осуществления изобретения вычисляют среднее значение атрибутов в качестве значения атрибута  для реконструированного положения. В примере (h) обозначает значение атрибута, связанного с X(h), при этом значение атрибута  связанного с реконструированной точкой  может быть вычислено с использованием выражения (2):
[0138] В другом варианте осуществления изобретения  вычисляют с помощью средневзвешенного значения атрибутов, например, используя выражение (3):
i
i
i
где  w(h)≥0 обозначает вес атрибута в соответствующем положении, который может быть обратно пропорционален расстоянию между исходным положением X(h) и реконструированным положением  Расстояние между исходным положением X(h) и реконструированным положением  можно оценить с помощью любой подходящей меры расстояния. Например, расстояние это пространственное расстояние, такое как евклидово расстояние.
i
[0139] В другом варианте осуществления изобретения реконструированному положению  назначают значение атрибута  ближайшего исходного положения в  Когда множество исходных положений имеют одинаковое ближайшее расстояние до реконструированного положения  медианное значение атрибута или среднее значение атрибута значений атрибутов множества исходных положений может быть присвоено  Расстояние между исходным положением X(h) и реконструированным положением  можно оценить с помощью любой другой меры расстояния. Например, расстояние - это пространственное расстояние, такое как евклидово расстояние.
[0140] Фиг. 12 показывает блок-схему, описывающую способ (1200) согласно варианту осуществления изобретения. Способ (1200) может использоваться в процессе кодирования облака точек. В различных вариантах осуществления изобретения способ (1200) выполняется схемой обработки, такой как схема обработки в оконечных устройствах (110), схема обработки, которая выполняет функции кодера (203) и/или декодера (201), схема обработки, которая выполняет функции кодера (300), декодера (400), кодера (700) и/или декодера (800) и т.п. В некоторых вариантах осуществления изобретения способ (1200) реализован в программных инструкциях, при исполнении которых схемой обработки схема обработки выполняет способ (1200). Способ начинается с этапа (S1201) и переходит к этапу (S1210).
[0141] На этапе (S1210) определяют одну или более исходных точек в облаке точек, которые связаны с реконструированным положением. Положения одной или более исходных точек реконструированы в соответствии с квантованием геометрии в реконструированное положение.
[0142] В некоторых примерах разделение на основе октодерева может выполняться для кодирования информации о геометрии. Разделение на основе октодерева может разделять пространство облака точек на воксели. Одна или более исходных точек находятся в вокселе и связаны с реконструированным положением, представляющим воксель. Информация о геометрии одной или более исходных точек может быть реконструирована (например, квантована и деквантована) в реконструированное положение. В варианте осуществления изобретения сохраняют структуру данных, которая связывает одну или более исходных точек с реконструированным положением. К структуре данных может осуществляться доступ на основе реконструированного положения для извлечения одной или более исходных точек, связанных с реконструированным положением.
[0143] На этапе (S1220) значение атрибута для реконструированного положения определяют на основе информации атрибутов одной или более исходных точек.
[0144] В варианте осуществления изобретения вычисляют среднее значение атрибутов множества исходных точек в качестве упомянутого определяемого значения атрибута для реконструированного положения, когда множество исходных точек связаны с реконструированным положением.
[0145] В некоторых примерах значению атрибута исходной точки в множестве исходных точек может быть назначен вес на основе обратного расстояния между исходной точкой и реконструированным положением.
[0146] В другом варианте осуществления изобретения вычисляют средневзвешенное значение атрибутов множества исходных точек в качестве упомянутого определяемого значения атрибута для реконструированного положения. В примере значению атрибута исходной точки в множестве исходных точек назначают вес на основе обратного расстояния между исходной точкой и реконструированным положением.
[0147] В другом варианте осуществления изобретения конкретное значение атрибута ближайшей точки в множестве исходных точек назначают в качестве упомянутого определяемого значения атрибута для реконструированного положения в ответ на то, что множество исходных точек связаны с реконструированным положением. В примере медианное значение атрибута среди значений атрибутов для ближайших точек выбирают в ответ на существование множества ближайших точек, имеющих одинаковое кратчайшее расстояние до реконструированного положения. В другом примере среднее значение атрибута значений атрибутов для ближайших точек вычисляют в ответ на существование множества ближайших точек, имеющих одинаковое кратчайшее расстояние до реконструированного положения.
[0148] На этапе (S1230) текстуру облака точек кодируют с использованием реконструированного положения, имеющего определенное значение атрибута. В примере значения атрибутов для реконструированных положений сжимают и включают в кодированный битовый поток для облака точек в качестве информации о текстуре облака точек. Затем способ переходит к этапу (S1299) и завершается.
[0149] Вышеописанные способы могут быть реализованы в виде компьютерного программного обеспечения, использующего машиночитаемые инструкции и физически хранящегося на одном или более машиночитаемых носителях. Например, на фиг. 13 показана компьютерная система (1300), пригодная для осуществления некоторых вариантов осуществления изобретения.
[0150] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.
[0151] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0152] Компоненты компьютерной системы (1300), показанные на фиг. 13, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым компонентом или комбинацией компонентов, показанных в примере осуществления компьютерной системы (1300).
[0153] Компьютерная система (1300) может включать некоторые устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двумерного видео, трехмерного видео, включая стереоскопическое видео).
[0154] Входной человеко-машинный интерфейс устройства может включать одно или более из следующего (показано по одному): клавиатура (1301), мышь (1302), сенсорная панель (1303), сенсорный экран, информационная перчатка (не показана), джойстик (1305), микрофон (1306), сканер (1307) и камера (1308).
[0155] Компьютерная система (1300) также может включать в себя некоторые устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана, информационной перчатки (не показана) или джойстика (1305), а также устройства тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: динамики (1309), наушники (не показаны)), устройства визуального вывода (например, экраны (1310), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из них способны к двумерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографическому выводу, очки виртуальной реальности (не показаны), голографические дисплеи, дымовые баки (не показаны) и принтеры (не показаны).
[0156] Компьютерная система (1300) также может включать доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие CD/DVD ROM/RW (1320) с носителями (1321) CD/DVD и т.п., карты (1322) флэш-памяти, сменный жесткий диск или твердотельный диск (1323), традиционные магнитные носители, например, ленту и магнитный диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[0157] Специалисты в данной области техники также должны понимать, что термин «машиночитаемые носители», используемый в связи с настоящим изобретением, не охватывает среды передачи, несущие волны или другие временные сигналы.
[0158] Компьютерная система (1300) также может включать интерфейс к одной или более сетям связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть также локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают локальные сети, например, Ethernet, беспроводные сети LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные сети, включающие CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (1349) (например, USB-порты компьютерной системы (1300)); другие обычно встраиваются в ядро компьютерной системы (1300) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1300) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[0159] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (1340) компьютерной системы (1300).
[0160] Ядро (1340) может включать один или более центральных процессоров (CPU) (1341), графические процессоры (GPU) (1342), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) (1343), аппаратные ускорители (1344) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) (1345), оперативной памятью (1346), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками, недоступными пользователю, SSD и т.п. (1347), могут соединяться посредством системной шины (1348). В некоторых компьютерных системах системная шина (1348) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных процессоров CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (1348) ядра, либо через периферийную шину (1349). Архитектуры периферийной шины включают PCI, USB и т.п.
[0161] Устройства CPU (1341), GPU (1342), FPGA (1343) и ускорители (1344) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в памяти ROM (1345) или RAM (1346). Временные данные также могут храниться в памяти RAM (1346), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (1347) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с одним или более процессорами CPU (1341), GPU (1342), хранилищем (1347) данных большой емкости, памятью ROM (1345), RAM (1346) и т.п.
[0162] На машиночитаемых носителях может храниться компьютерный код для осуществления различных выполняемых компьютером операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[0163] В порядке примера, но не ограничения изобретения, компьютерная система, имеющая архитектуру (1300), и, в частности, ядро (1340) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных машиночитаемых носителей. Такие машиночитаемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым постоянным хранилищем ядра (1340), например, внутренним хранилищем (1347) данных большой емкости или ROM (1345). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1340). Машиночитаемый носитель может включать одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (1340) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в памяти RAM (1346), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (1344)), которая может действовать вместо программного обеспечения или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на машиночитаемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе схемы, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.
[0164] Хотя здесь были описаны некоторые варианты осуществления изобретения, возможны изменения, перестановки и различные эквивалентные замены в пределах объема изобретения.