СПОСОБ И ОБОРУДОВАНИЕ ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ ОБЛАКА ТОЧЕК, ПРЕДСТАВЛЯЮЩЕГО ТРЕХМЕРНЫЙ ОБЪЕКТ
METHOD AND EQUIPMENT FOR ENCODING/DECODING POINT CLOUD REPRESENTING THREE-DIMENSIONAL OBJECT

Область техники
Настоящие принципы, в общем, относятся к кодированию и декодированию облака точек, представляющего трехмерный объект. В частности, но не только, область техники настоящих принципов относится к проекционному кодированию/декодированию облака точек.
Уровень техники
Настоящий раздел предназначен для того, чтобы ознакомить читателя с различными аспектами области техники, которые могут относиться к различным аспектам настоящих принципов, которые описываются и/или заявляются в формуле изобретения ниже. Считается, что это пояснение должно быть полезным при предоставлении читателю исходной информации для того, чтобы упрощать понимание различных аспектов настоящих принципов. Соответственно, следует понимать, что данные формулировки должны читаться в этом смысле, а не как допущения предшествующего уровня техники.
Облако точек представляет собой набор точек, обычно предназначенный для того, чтобы представлять внешнюю поверхность трехмерного объекта, но также и более сложных геометрий, таких как волосы или мех, которые не могут представляться эффективно посредством другого формата данных, такого как ячеистые сети. Каждая точка облака точек зачастую задается посредством трехмерного пространственного местоположения (координат X, Y и Z в трехмерном пространстве) и возможно посредством других ассоциированных атрибутов, таких как цвет, представленный в цветовом RGB- или YUV-пространстве, например, прозрачность, коэффициент отражения, нормальный вектор и т.д.
Облако цветных точек может представлять собой набор 6-компонентных точек (X, Y, Z, R, G, B) или эквивалентно (X, Y, Z, Y, U, V), где (X, Y, Z) задает пространственное местоположение точки в трехмерном пространстве, и (R, G, B) или (Y, U, V) задает цвет этой точки.
Далее, термин "облако точек" означает любое облако точек, включающее в себя облако цветных точек.
Облака цветных точек могут быть статическими или динамическими в зависимости от того, видоизменяется или нет облако точек относительно времени. Следует отметить, что в случае динамического облака точек, число точек не обязательно является постоянным, а наоборот, в общем, видоизменяется со временем. Динамическое облако точек в силу этого представляет собой упорядоченный по времени список наборов точек.
На практике, облака цветных точек могут использоваться в различных целях, к примеру, для предметов культурного наследия/зданий, в которых объекты, такие как статуи или здания, сканируются в трехмерном виде, чтобы совместно использовать пространственную конфигурацию объекта без его отправки или посещения. Кроме того, они представляют собой способ обеспечивать сохранение знаний касательно объекта в случае, если он может быть уничтожен; например, храм в силу землетрясения. Такие облака цветных точек типично являются статическими и огромными.
Другой вариант использования представляет собой топографию и картографию, когда, в силу использования трехмерных представлений, карты не ограничены плоскостью и могут включать в себя рельеф.
Автомобильная промышленность и автономные автомобили также представляют собой предметные области, в которых могут использоваться облака точек. Автономные автомобили должны иметь возможность "зондировать" свое окружение, чтобы принимать надежные решения по вождению на основе реальности своих непосредственных окрестностей. Типичные датчики формируют динамические облака точек, которые используются посредством механизма принятия решений. Эти облака точек не предназначены для просмотра человеком. Типично они являются небольшими, не обязательно цветными и динамическими с высокой частотой захвата. Они могут иметь другие атрибуты, такие как коэффициент отражения, который представляет собой ценную информацию, коррелированную с материалом физической поверхности считываемого объекта, и может помогать при принятии решений.
Виртуальная реальность (VR) и иммерсивные миры в последнее время становятся горячей темой для обсуждений и предсказываются многими в качестве будущего после двумерного плоского видео. Базовая идея состоит в том, чтобы погружать зрителя в окружение с круговым обзором вокруг него, в отличие от стандартного телевизора, на котором он может смотреть только на виртуальный мир впереди него. Предусмотрено несколько градаций в иммерсивности в зависимости от свободы зрителя в окружении. Облака цветных точек представляют собой хороший возможный вариант формата для того, чтобы распределять VR-миры. Они могут быть статическими или динамическими и типично имеют средний размер, скажем, не более нескольких миллионов точек за раз.
Сжатие облаков точек должно успешно выполнять сохранение/передачу трехмерных объектов для иммерсивных миров только в том случае, если размер потока битов является достаточно низким для того, чтобы обеспечивать возможность практического хранения/передачи конечному пользователю.
Также крайне важно иметь возможность распределять динамические облака точек конечному пользователю с рациональным расходом полосы пропускания при поддержании приемлемого (или предпочтительно очень хорошего) качества восприятия. Аналогично сжатию видео, считается, что хорошее использование временной корреляции представляет собой важнейший элемент, который должен приводить к эффективному сжатию динамических облаков точек.
Известные подходы проецируют облако цветных точек, представляющее геометрию и цвета трехмерного объекта, на грани куба, охватывающие трехмерный объект, чтобы получать видео, содержащие текстуру, представляющую цветовую информацию облака точек, и информацию глубины, представляющую геометрическую информацию облака точек, и кодировать видео текстуры и глубины с использованием унаследованного кодера, такого как 3D-HEVC (расширение HEVC, спецификация которого содержится на веб-узле ITU, рекомендация T, серия H, h265, https://www.itu.int/rec/T-REC-H.265-201802-I, приложение I).
Производительность сжатия составляет близко к сжатию видео для каждой проецируемой точки, но некоторый контент может быть более сложным вследствие загораживаний, избыточности и временной стабильности, когда рассматриваются динамические облака точек. Следовательно, сжатие облаков точек является более ресурсоемким, чем сжатие видео, с точки зрения скоростей передачи битов.
Относительно загораживаний, фактически невозможно получать полную геометрию сложной топологии без использования множества проекций. Требуемые ресурсы (вычислительная мощность, запоминающее устройство) для кодирования/декодирования всех этих проекций в силу этого обычно являются слишком высокими.
Кодек облаков точек с использованием схемы проекции текстуры и глубины предложен недавно в ходе 120-й конференции MPEG. Эта схема описывается в документе ISO/IEC JTC1/SC29 WG11. Doc. N17248, Макао, CN, октябрь 2017 года, в котором предложенная схема называется "тестовой моделью категории 2 сжатия облаков точек версия 0.0 (TMC2v0)" .
Этот кодек использует существующие видеокодеки для того, чтобы сжимать информацию геометрии и текстуры динамического облака точек, посредством фактического преобразования данных динамического облака точек в набор различных видеопоследовательностей.
В частности, две видеопоследовательности, одна для захвата геометрической информации данных облака точек и другая для захвата информации текстуры, т.е. цветов точек, формируются и сжимаются с использованием существующих видеокодеков, например, с использованием кодера с поддержкой основного HEVC-профиля.
Дополнительные метаданные, которые требуются для того, чтобы интерпретировать две видеопоследовательности, т.е. карта заполнения и вспомогательная информация патчей/блоков, также формируются и сжимаются отдельно. Сформированные потоки видеобитов и метаданные затем мультиплексируются между собой, с тем чтобы формировать конечный поток битов облака точек. Метаданные дополнительно кодируются посредством энтропийного кодека, такого как арифметический кодек.
Структура примерного кодера 2 этого кодека облаков точек представляется на фиг. 1.
Кодер 2 содержит 3 основных блока: блок 4 сжатия геометрии, блок 6 сжатия метаданных и блок 8 сжатия текстуры.
Блок 4 сжатия геометрии содержит блок 10 создания патчей глубины, который разлагает входное облако точек на патчи глубины.
Процесс 10 создания патчей глубины направлен на разложение облака точек на минимальное число патчей глубины с гладкими границами, при одновременной минимизации ошибки восстановления. Патч глубины представляет одну часть облака точек посредством группы пикселов, которые ассоциированы со значениями глубины.
В качестве примера, реализуется следующий подход, детализированный на фиг. 2.
Во-первых, нормаль в каждой точке оценивается на 102, как описано в работе авторов Hugues Hoppe, Tony DeRose, Tom Duchamp, John McDonald, Werner Stuetzle, "Surface reconstruction from unorganized points", ACM SIGGRAPH 1992 Proceedings, стр. 71-78.
Начальная кластеризация облака точек затем получается на 104 посредством ассоциирования каждой точки с одной из следующих шести ориентированных плоскостей, заданных посредством их нормалей:
- (1,0, 0,0, 0,0),
- (0,0, 1,0, 0,0),
- (0,0, 0,0, 1,0),
- (-1,0, 0,0, 0,0),
- (0,0, -1,0, 0,0), и
- (0,0, 0,0, -1,0).
Более точно, каждая точка ассоциирована с плоскостью, которая имеет ближайшую нормаль (т.е. максимизирует произведение с точкой точечной нормали и нормали плоскости).
Согласно одному варианту осуществления, шесть ориентированных плоскостей, описанных выше, индексируются следующим образом:
- (1,0, 0,0, 0,0) индексируется посредством индекса 0 кластера;
- (0,0, 1,0, 0,0) индексируется посредством индекса 1 кластера;
- (0,0, 0,0, 1,0) индексируется посредством индекса 2 кластера.
- (-1,0, 0,0, 0,0) индексируется посредством индекса 0 кластера;
- (0,0, -1,0, 0,0) индексируется посредством индекса 1 кластера;
- (0,0, 0,0, -1,0) индексируется посредством индекса 2 кластера.
Каждая точка после этого ассоциируется с индексом соответствующего кластера.
Далее, начальная кластеризация уточняется посредством итеративного обновления индекса кластера, ассоциированного с каждой точкой, на основе ее нормали и индексов кластеров ее ближайших соседних узлов. Согласно одному варианту осуществления, для рассматриваемой точки, если все ее соседние точки, например, все точки, для которых расстояние до текущей точки в трехмерном пространстве меньше 2, назначаются одному кластеру, помеченному в качестве кластера A, и рассматриваемая точка назначается другому кластеру, индекс кластера рассматриваемой точки обновляется на кластер A.
После этого, патчи глубины извлекаются на 106 посредством применения процедуры извлечения соединенных компонентов, т.е. извлечения соседних точек с идентичным индексом кластера, с тем чтобы формировать соединенный компонент. Согласно одному варианту осуществления, один соединенный компонент компонуется посредством группировки всех точек, удовлетворяющих следующим двум условиям одновременно:
- Все точки имеют идентичный индекс кластера.
- Для каждой точки в связанном соединенном компоненте, имеется, по меньшей мере, одна точка в идентичном соединенном компоненте, расстояние от которой до текущей точки меньше предварительно заданного порогового значения, например, равного 1.
Каждый соединенный компонент ассоциирован с плоскостью проекции согласно своему индексу кластера, т.е. индексу кластера точек, принадлежащих ему. Один вариант осуществления заключается в следующем:
- Плоскость YOZ для соединенного компонента с индексом 0 кластера;
- Плоскость XOZ для соединенного компонента с индексом 1 кластера;
- Плоскость XOY для соединенного компонента с индексом 2 кластера.
Чтобы лучше справляться со случаем нескольких точек вдоль идентичной линии проекции, причем линия проекции содержит точки с двумя идентичными координатами из числа трех координат (X, Y, Z). Например, линия проекции может состоять из всех точек с идентичными координатами (X, Y), два патча глубины формируются для каждого соединенного компонента, с записью значений D0 и D1 глубины, которые соответствуют минимальному и максимальному значениям глубины соответствующего пиксела и удовлетворяют D1-D0<=SurfaceThickness, где SurfaceThickness является максимальной толщиной поверхности, например, равной 4.
Более точно, пусть {H(u, v)} представляет собой набор точек текущего соединенного компонента, которые проецируются в идентичный пиксел (u, v). Первый патч глубины, также называемый "ближним слоем", сохраняет глубину точки в {H(u, v)} с наименьшей глубиной D0. Второй патч глубины, называемый "далеким слоем", захватывает точку в {H(u, v)} с наибольшей глубиной в пределах интервала [D0, D0+SurfaceThickness].
После блока 10 создания патчей глубины предусмотрен блок 12 пакетирования, который преобразует все проецируемые соединенные компоненты в двумерную сетку, при одновременной попытке минимизировать неиспользуемое пространство и гарантировании того, что каждый блок TxT (например, 16×16) сетки ассоциирован с уникальным проецируемым соединенным компонентом, где T является определяемым пользователем параметром, который кодируется в потоке битов и отправляется в декодер. Каждая точка на двумерной сетке соответствует пикселу на изображении.
Пакетирование использует простую стратегию пакетирования, которая итеративно пытается вставлять патчи в сетку WxH, где W и H являются определяемыми пользователем параметрами, например, 1028×1028, которые соответствуют разрешению изображений геометрии/текстуры, которые кодируются. Местоположение патча определяется посредством исчерпывающего поиска, который выполняется в порядке растрового сканирования. Первое местоположение, которое может гарантировать вставку без перекрытий патча, выбирается, и ячейки сетки, охватываемые патчем, помечаются как используемые. Если ни одно пустое пространство в текущем разрешении изображения не может соответствовать патчу, то высота H сетки временно удваивается, и поиск применяется снова. В конце процесса, H отсекается таким образом, чтобы соответствовать используемым ячейкам сетки. Позиция пакетирования, которая представляет собой позицию левого верхнего угла ограничивающего прямоугольника проецируемой зоны каждого патча, в двумерной сетке и размер проецируемой зоны каждого патча передаются в служебных сигналах в сжатый поток битов.
Карта заполнения выводится из блока 12 пакетирования в блок 6 сжатия метаданных. Карта заполнения состоит из двоичной карты, которая указывает для каждой ячейки сетки то, принадлежит она либо нет пустому пространству или облаку точек, причем одна ячейка двумерной сетки должна формировать пиксел, переносящий информацию глубины или цвета в ходе процесса формирования изображений.
Блок 4 сжатия геометрии также содержит блок 14 формирования изображений, который использует трехмерное-в-двумерное преобразование, вычисленное в ходе процесса 12 пакетирования, более конкретно позицию пакетирования и размер проецируемой зоны каждого соединенного компонента, для того, чтобы сохранять геометрию облака точек в качестве изображений.
Согласно такому факту, что два патча глубины формируются для каждого соединенного компонента, два изображения формируются для того, чтобы сохранять геометрию облака точек, называемые "DepthImg0" и "DepthImg1".
Блок 14 формирования изображений кодера 2 дополнительно детализируется со ссылкой на фиг. 3.
Формирование изображений содержит процесс пакетирования (пакетирование до глубины D0), в котором, согласно позиции пакетирования проецируемой зоны каждого патча, значения D0 каждого патча копируются в соответствующую часть второй сетки.
Формирование изображений также содержит определение дельта-глубины, в котором, для каждого занятого пиксела depthImage0, delta_depth=D1-D0 (причем D1 и D0 находятся на идентичной линии проекции), и delta_depth сохраняется в позиции, идентичной позиции, в которой сохраняется соответствующее значение D0.
Формирование изображений также включает в себя временное перемежение следующим образом: (depthImage0_0, depthImage1_0, ..., depthImage0_i, depthImage1_i, ..., depthImage0_n, depthImage1_n), где depthImage0_i и depthImage1_i формируются из кадра i облака точек.
Формирование изображений также содержит процесс 20 дополнения, который направлен на заполнение пустого пространства между патчами, чтобы формировать кусочно-гладкое изображение, подходящее для сжатия видео. Он использует простую стратегию дополнения, которая продолжается следующим образом:
- Каждый блок в TxT (например, 16×16) пикселов обрабатывается независимо.
- Если блок является пустым (т.е. все его пикселы принадлежат пустому пространству), то пикселы блока заполняются посредством копирования последней строки или столбца предыдущего блока TxT в растровом порядке.
- Если блок является полным (т.е. нет пустых пикселов), ничего не предпринимается.
- Если блок имеет как пустые, так и заполненные пикселы, то пустые пикселы итеративно заполняются средним значением своих непустых соседних узлов.
После блока 14 формирования изображений предусмотрен блок 22 кодирования видео глубины, в котором сформированные изображения глубины сохраняются в качестве видеокадров и сжимаются с использованием любого унаследованного видеокодека, такого как HM16.16-видеокодек, согласно HM-конфигурациям, предоставленным в качестве параметров.
В блоке 6 сжатия метаданных кодера 2, следующие метаданные, называемые "метаданными в расчете на патч/соединенный компонент", собираются, а затем кодируются для каждого соединенного компонента следующим образом:
- Индекс плоскости проекции
-- Индекс 0 для плоскостей (1,0, 0,0, 0,0) и (-1,0, 0,0, 0,0);
-- Индекс 1 для плоскостей (0,0, 1,0, 0,0) и (0,0, -1,0, 0,0);
-- Индекс 2 для плоскостей (0,0, 0,0, 1,0) и (0,0, 0,0, -1,0).
- Двумерный ограничивающий прямоугольник (u0,v0,u1,v1) для пакетированных изображений геометрии/текстуры;
- Трехмерное местоположение (x0, y0, z0) соединенного компонента, представленное с точки зрения сдвига δ0 по глубине, тангенциального сдвига s0 и битангенциального сдвига r0. Согласно выбранным плоскостям проекции, (δ0,s0,r0) вычисляются следующим образом:
-- индекс 0, δ0=x0, s0=z0 и r0=y0;
-- индекс 1, δ0=y0, s0=z0 и r0=x0;
-- индекс 2, δ0=z0, s0=x0 и r0=y0.
Кроме того, картографическая информация, предоставляющая для каждого блока TxT его ассоциированный индекс патча/соединенного компонента, называемая "картой ассоциирования блоков с патчами", формируется и кодируется следующим образом:
- Для каждого блока TxT, пусть L является упорядоченным списком индексов патчей таким образом, что их двумерный ограничивающий прямоугольник содержит этот блок. Порядок в списке является идентичным порядку, используемому для того, чтобы кодировать двумерные ограничивающие прямоугольники. L называется "списком возможных вариантов патчей".
- Пустое пространство между патчами в изображениях геометрии/текстуры считается патчем, и ему назначается специальный индекс 0, который добавляется в список возможных вариантов патчей всех блоков.
- Пусть I представляет собой индекс патча, который занимает текущий блок TxT, и пусть J представляет собой позицию I в L. Вместо явного кодирования индекса I, альтернативно арифметически кодируется его позиция J, что приводит к лучшей эффективности сжатия.
Кроме того, блок 6 сжатия метаданных реализует кодирование карты заполнения.
Сжатие карт заполнения использует картографическую информацию ассоциирования блоков с патчами, описанную выше, для того, чтобы обнаруживать пустые блоки TxT (т.е. блоки с индексом 0 патча). Оставшиеся блоки кодируются следующим образом.
Карта заполнения может кодироваться с точностью в блоки B0xB0, где B0 является определяемым пользователем параметром. Чтобы достигать кодирования без потерь, B0 должен задаваться равным 1. На практике, B0=2 или B0=4 приводит к визуально приемлемым результатам, при одновременном значительном уменьшении числа битов, требуемых для того, чтобы кодировать карту заполнения.
Процесс сжатия карты заполнения продолжается следующим образом:
- Двоичные значения ассоциированы с субблоками B0xB0, принадлежащими идентичному блоку TxT. Значение 1 ассоциировано с субблоком, если он содержит, по меньшей мере, недополненный пиксел, и 0 в противном случае. Если субблок имеет значение 1, считается, что он является полным, в противном случае он является пустым субблоком.
- Если все субблоки блока TxT являются полными (т.е. имеют значение в 1), считается, что блок является полным. В противном случае, считается, что блок является неполным.
- Двоичная информация кодируется для каждого блока TxT, чтобы указывать то, является он полным или нет.
- Если блок является неполным, дополнительная информация, указывающая местоположение полных/пустых субблоков, кодируется следующим образом:
-- Различные порядки обхода задаются для субблоков. Фиг. 4 показывает четыре рассматриваемых порядка обхода.
-- Кодер выбирает один из порядков обхода и явно передает в служебных сигналах его индекс в потоке битов.
-- Двоичные значения, ассоциированные с субблоками, кодируются посредством использования стратегии кодирования по длинам серий.
- Двоичное значение начального субблока кодируется.
- Непрерывные серии нулей и единиц обнаруживаются при следовании согласно порядку обхода, выбранному посредством кодера.
- определенное число обнаруженных серий кодируется.
- Длина каждой серии, за исключением последней, также кодируется.
Индексы ассоциирования блоков с патчами и карта заполнения называются "метаданными в расчете на блок".
Блок 8 сжатия текстуры содержит декодирование видео глубины посредством унаследованного декодера, такого как 3D-HEVC (расширение HEVC, спецификация которого содержится на веб-узле ITU, рекомендация T, серия H, h265, https://www.itu.int/rec/T-REC-H.265-201802-I, приложение I), после которого предусмотрен процесс 24 восстановления геометрии, который использует информацию карт заполнения для того, чтобы обнаруживать занятые пикселы в восстановленных изображениях геометрии. Трехмерные позиции точек, ассоциированных с этими занятыми пикселами, вычисляются посредством применения метаданных и изображений геометрии. Более точно, пусть P представляет собой точку, восстановленную из занятого пиксела (u, v), и пусть (δ0,s0,r0) представляет собой трехмерное местоположение соединенного компонента, которому он принадлежит, и (u0,v0,u1,v1) представляет собой двумерный ограничивающий прямоугольник соответствующего патча глубины. P может выражаться с точки зрения глубины δ(u, v), тангенциального сдвига s(u, v) и битангенциального сдвига r(u, v) следующим образом:
δ(u, v)=δ0+g(u, v)
s(u, v)=s0-u0+u
r(u, v)=r0-v0+v,
где g(u, v) является компонентом сигнала яркости восстановленного изображения геометрии.
Процесс 24 восстановления геометрии облаков точек также выводит, для каждой восстановленной точки, позицию пиксела, который сохраняет значение глубины, восстанавливающее текущую точку, т.е. (i, u,v), где i указывает изображение глубины, т.е. DepthImg0 или DepthImg1, и (u, v) являются координатами пиксела в i-ом изображении глубины.
Блок 8 сжатия текстуры также включает в себя блок 26 трехмерного цветопереноса, в котором цвет и/или другое значение атрибута, которое должно кодироваться для каждой восстановленной точки, определяются способом минимизации ошибки кодирования цветовой информации. Согласно одному варианту осуществления, для каждой восстановленной точки, цвет ее ближайшей точки во входном/исходном облаке точек назначен в качестве цвета, который должен кодироваться.
После блока 26 трехмерного цветопереноса предусмотрен блок 28 формирования изображений текстуры, формирующий изображения текстуры, которые должны кодироваться, посредством сохранения цветовой информации, которая должна кодироваться, для каждой восстановленной точки в позиции, идентичной позиции в изображениях геометрии, т.е. (i, u,v).
После блока 28 формирования изображений текстуры предусмотрено кодирование видео текстуры с использованием унаследованного кодера, такого как 3D-HEVC (расширение HEVC, спецификация которого содержится на веб-узле ITU, рекомендация T, серия H, h265, https://www.itu.int/rec/T-REC-H.265-201802-I, приложение I).
Видеопоток глубины, сформированный из блока 4 сжатия геометрии, потоки метаданных в расчете на блок и в расчете на патч, сформированные из потока 6 сжатия метаданных, и видеопоток цвета, сформированный из блока 8 сжатия текстуры, мультиплексируются в сжатом потоке, выводимом из кодера 2.
Фиг. 5 представляет декодер 30, соответствующий кодеру 2 для восстановления облака точек.
В декодере 30, сжатый поток, выводимый из кодера 2, демультиплексируется в видеопоток глубины, поток метаданных в расчете на блок, поток метаданных в расчете на патч и видеопоток цвета.
Декодер 30 содержит блок 31 восстановления геометрии, который включает в себя декодирование видео глубины посредством унаследованного декодера, такого как 3D-HEVC (расширение HEVC, спецификация которого содержится на веб-узле ITU, рекомендация T, серия H, h265, https://www.itu.int/rec/T-REC-H.265-201802-I, приложение I).
Блок 31 восстановления изображений также включает в себя блок 32 восстановления изображений, который детализируется на фиг. 6. Этот блок содержит:
- обратное временное перемежение восстановленного depthImage0 и восстановленного depthImage1 из восстановленного видеопотока глубины;
- извлечение восстановленных значений D0, сохраненных в восстановленном depthImage0; и
- восстановление значений D1 с использованием reconstructed_D0+reconstructed_Delta_Depth, где значения reconstructed_Delta_Depth сохраняются в depthImage1.
Блок 31 восстановления изображений также включает в себя блок 33 восстановления геометрии облаков точек, работающий идентично блоку 24 восстановления геометрии облаков точек кодера 2.
Декодер 30 также включает в себя блок восстановления метаданных, в котором метаданные в расчете на патч и в расчете на блок декодируются.
Декодер 30 дополнительно включает в себя процесс восстановления текстуры, включающий в себя каскад декодирования видео текстуры посредством унаследованного декодера, такого как 3D-HEVC (расширение HEVC, спецификация которого содержится на веб-узле ITU, рекомендация T, серия H, h265, https://www.itu.int/rec/T-REC-H.265-201802-I, приложение I).
Процесс восстановления текстуры также включает в себя каскад восстановления патчей текстуры, в котором патчи текстуры восстанавливаются с использованием восстановленных метаданных в расчете на патч и в расчете на блок.
Дополнительно, процесс восстановления текстуры включает в себя каскад 35 восстановления текстуры облаков точек, в котором цвет каждой восстановленной точки отбирается из восстановленных изображений текстуры с использованием позиции пиксела, восстанавливающего каждую точку.
Как показано на фиг. 7, обычно имеется более одной точки вдоль идентичной линии проекции. Причины в основе этого содержат:
- представление непрерывной трехмерной поверхности посредством точек с целочисленными координатами, и/или
- локальные детали поверхности, и/или
- самозагораживание.
Чтобы минимизировать ошибку восстановления, вышеописанный кодек сохраняет два значения глубины для каждого пиксела одного проецируемого изображения. Упомянутые два значения глубины называются "глубиной D0" и "глубиной D1", которые соответствуют минимальному и максимальному значениям глубины вдоль соответствующей линии проекции и удовлетворяют D1-D0<=SurfaceThickness, где SurfaceThickness является максимальной толщиной поверхности.
Соответственно, кодер 2 формирует два изображения глубины для каждого кадра облака точек (т.е. в случае динамического облака точек, облако точек в последовательности облаков точек), при этом первое изображение DepthImg0 глубины сохраняет значения глубины D0, и второе изображение DepthImg1 глубины сохраняет значения "delta_depth=глубина D1 - глубина D0". Следует отметить, что глубина D1 задается равной глубине D0, когда имеется только одна точка вдоль линии проекции.
Тем не менее, посредством использования кодера по фиг. 1, точки облака точек, называемые "непроецируемыми точками" на фиг. 7, которые находятся между двумя записанными точками, не кодируются, что приводит к существенным потерям объективного и субъективного качества.
4. Сущность изобретения
Ниже представлена упрощенная сущность настоящих принципов, с тем чтобы предоставлять базовое понимание некоторых аспектов настоящих принципов. Эта сущность не является всесторонним обзором настоящих принципов. Она не имеет намерение идентифицировать ключевые или критически важные элементы настоящих принципов. Нижеприведенная сущность просто представляет некоторые аспекты настоящих принципов в упрощенной форме в качестве вступления к более подробному описанию, предоставленному ниже.
Вообще говоря, настоящее раскрытие сущности предлагает решение для улучшения ситуации.
Соответственно, настоящее раскрытие сущности предоставляет способ, содержащий ортогональное проецирование, по меньшей мере, одной точки облака точек вдоль линий проекции; и, по меньшей мере, для двух точек идентичной линии проекции, передачу в служебных сигналах в потоке битов того, занимается или нет позиция упомянутой линии проекции между более близкой и более далекой точками упомянутой линии проекции.
Преимущественно, настоящее раскрытие сущности повышает производительность сжатия проекционного кодека облаков точек глубины и текстуры посредством передачи в служебных сигналах в потоке битов того, занимается или нет позиция линии проекции между более близкой и более далекой точками упомянутой линии проекции.
Настоящее раскрытие сущности также предоставляет способ, содержащий восстановление двух точек облака точек посредством ортогонального депроецирования более близкой и более далекой точки идентичной линии проекции; и восстановление точки облака точек посредством ортогонального депроецирования точки упомянутой линии проекции, когда информация указывает то, что позиция упомянутой точки занимается.
Кодер/декодер преимущественно реализуется посредством одного или более процессоров.
Способы согласно раскрытию сущности могут реализовываться в программном обеспечении на программируемом оборудовании. Они могут реализовываться только в аппаратных средствах или в программном обеспечении либо в комбинации вышеозначенного.
Поскольку настоящее изобретение может реализовываться в программном обеспечении, настоящее изобретение может осуществляться в качестве машиночитаемого кода для предоставления в программируемое оборудование на любом подходящем носителе. Носитель может содержать носитель хранения данных, такой как гибкий диск, CD-ROM, жесткий диск, устройство на магнитных лентах или полупроводниковое запоминающее устройство и т.п.
Раскрытие сущности в силу этого предоставляет машиночитаемую программу, содержащую машиноисполняемые инструкции, чтобы обеспечивать возможность компьютеру осуществлять способ кодирования/декодирования изобретения.
5. Краткое описание чертежей
На чертежах проиллюстрированы примеры настоящих принципов. Они показывают следующее:
Фиг. 1, уже описанный, показывает кодер, в котором могут преимущественно реализовываться настоящие принципы;
Фиг. 2, уже описанный, иллюстрирует процесс создания патчей глубины предшествующего уровня техники;
Фиг. 3, уже описанный, иллюстрирует процесс формирования изображений предшествующего уровня техники;
Фиг. 4, уже описанный, показывает примеры обходов по субблокам, используемых в кодере по фиг. 1;
Фиг. 5, уже описанный, показывает декодер, в котором могут преимущественно реализовываться настоящие принципы;
Фиг. 6, уже описанный, иллюстрирует процесс восстановления изображений предшествующего уровня техники;
Фиг. 7, уже описанный, является двумерной иллюстрацией облака трехмерных точек, показывающей значения глубины D0 и глубины D1 пикселов проецируемого изображения согласно предшествующему уровню техники;
Фиг. 8 иллюстрирует коды улучшенной дельта-глубины (EDD) согласно варианту осуществления настоящего раскрытия сущности;
Фиг. 9 показывает примеры формирования кода улучшенной дельта-глубины (EDD) согласно варианту осуществления настоящего раскрытия сущности;
Фиг. 10 показывает кодер согласно варианту осуществления настоящего раскрытия сущности;
Фиг. 11 показывает блок восстановления изображений глубины согласно первому варианту осуществления настоящего раскрытия сущности;
Фиг. 12 показывает блок восстановления изображений глубины согласно второму варианту осуществления настоящего раскрытия сущности;
Фиг. 13 показывает модификации декодера по фиг. 5 согласно варианту осуществления настоящего раскрытия сущности;
Фиг. 14 показывает кодер без потерь, в котором могут преимущественно реализовываться настоящие принципы;
Фиг. 15 показывает пример архитектуры устройства в соответствии с примером настоящих принципов; и
Фиг. 16 показывает два удаленных устройства, обменивающиеся данными по сети связи в соответствии с примером настоящих принципов; и
Фиг. 17 показывает синтаксис сигнала в соответствии с примером настоящих принципов.
Аналогичные или идентичные элементы упоминаются с идентичными ссылками с номерами.
6. Подробное описание примеров настоящих принципов
Далее подробнее описываются настоящие принципы со ссылкой на прилагаемые чертежи, на которых показаны примеры настоящих принципов. Тем не менее, настоящие принципы могут осуществляться во множестве альтернативных форм и не должны рассматриваться как ограниченные примерам, изложенными в данном документе. Соответственно, хотя настоящие принципы допускают различные модификации и альтернативные формы, их конкретные примеры показаны в качестве примера на чертежах и подробнее описываются в данном документе. Тем не менее, необходимо понимать, что отсутствует намерение ограничивать настоящие принципы конкретными раскрытыми формами, а наоборот, раскрытие сущности должно охватывать все модификации, эквиваленты и альтернативы, попадающие в пределы сущности и объема настоящих принципов, заданных посредством формулы изобретения.
Терминология, используемая в данном документе, служит только для цели описания конкретных примеров и не имеет намерение ограничивать настоящие принципы. При использовании в данном документе, формы единственного числа "a", "an" и "the" служат для того, чтобы включать в себя также формы множественного числа, если контекст явно не указывает иное. Следует дополнительно понимать, что термины "содержит", "содержащий", "включает в себя" и/или "включающий в себя" при использовании в данном подробном описании задают наличие изложенных признаков, целых чисел, этапов, операций, элементов или компонентов, однако не препятствуют наличию или добавлению одного или более других признаков, целых чисел, этапов, операций, элементов, компонентов или их групп. Кроме того, когда элемент упоминается как "чувствительный" или "соединенный" с другим элементом, он может быть непосредственно чувствительным или соединенным с другим элементом, или могут присутствовать промежуточные элементы. Напротив, когда элемент упоминается как "непосредственно чувствительный" или "непосредственно соединенный" с другим элементом, промежуточные элементы не присутствуют. При использовании в данном документе, термин "и/или" включает в себя все без исключения комбинации одного или более ассоциированных перечисленных элементов и может сокращаться как "/".
Следует понимать, что хотя термины "первый", "второй" и т.д. могут использоваться в данном документе для того, чтобы описывать различные элементы, эти элементы не должны быть ограничены посредством этих терминов. Эти термины используются только для того, чтобы отличать один элемент от другого. Например, первый элемент может называться "вторым элементом", и, аналогично, второй элемент может называться "первым элементом" без отступления от идей настоящих принципов.
Хотя некоторые схемы включают в себя стрелки на трактах связи, чтобы показывать первичное направление связи, следует понимать, что связь может осуществляться в противоположном направлении относительно проиллюстрированных стрелок.
Некоторые примеры описываются относительно блок-схем и блок-схем последовательности операций способа, на которых каждый этап представляет схемный элемент, модуль или часть кода, который содержит одну или более выполняемых инструкций для реализации указанной логической функции(й). Также следует отметить, что в других реализациях, функция(и), отмеченная на этапах, может осуществляться в другом случайном порядке. Например, два этапа, показанные друг за другом, фактически могут выполняться практически одновременно, либо этапы иногда могут выполняться в обратном порядке, в зависимости от предусмотренной функциональности.
Ссылка в данном документе на "в соответствии с примером", или "в примере" означает то, что конкретный признак, структура или характеристика, описанная в связи с примером, может включена, по меньшей мере, в одну реализацию настоящих принципов. Вхождения фразы "в соответствии с примером" или "в примере" в различных местах в описании изобретения не обязательно ссылаются на идентичный пример, и при этом отдельные или альтернативные примеры не являются обязательно взаимоисключающими относительно других примеров.
Ссылки с номерами, появляющиеся в формуле изобретения, служат только в качестве иллюстрации и не должны иметь ограничивающего влияния на объем формулы изобретения.
Хотя не описано явно, настоящие примеры и разновидности могут использоваться в любой комбинации или субкомбинации.
Настоящие принципы описываются для кодирования/декодирования облака цветных точек, но распространяются на кодирование/декодирование последовательности облаков цветных точек, поскольку каждое облако цветных точек последовательности последовательно кодируется/декодируется, как описано ниже.
Согласно варианту осуществления, кодер 2 и декодер 30, уже описанные, используются для реализации настоящих принципов.
Как пояснено выше со ссылкой на фиг. 7, обычно имеется более одной точки вдоль идентичной линии проекции. Чтобы минимизировать ошибку восстановления, два значения глубины сохраняются для каждого пиксела одного проецируемого изображения. Упомянутые два значения глубины называются "глубиной D0" и "глубиной D1", которые соответствуют минимальному и максимальному значениям глубины.
Соответственно, кодер 2 формирует два изображения глубины для каждого кадра облака точек, называемые "DepthImg0" и "DepthImg1". В кодере 2, точки, называемые "непроецируемыми точками", между записанными точками, соответствующими глубине D0 и глубине D1, не кодируются.
Преимущественно, согласно настоящим принципам, эти непроецируемые точки кодируются, что задается на фиг. 8 следующим образом:
- вдоль всех линий проекции, по меньшей мере, с одной точкой, для каждой позиции между глубиной D0 и глубиной D1, использование одного бита для того, чтобы указывать то, занимается или нет эта позиция,
- конкатенация всех упомянутых битов вдоль одной линии проекции, чтобы формировать кодовое слово, называемое далее "кодом улучшенной дельта-глубины (EDD)",
- пакетирование EDD-кодов кадра облака точек в одно или более изображений, которые должны дополнительно кодироваться посредством унаследованных видеокодеков, таких как HEVC.
Чтобы интегрировать EDD-коды в кодере 2, вместо кодирования DeltaD=(D1-D0) в DepthImg1, EDD-коды всех линий проекции, по меньшей мере, с одной точкой записываются и кодируются в DepthImg1.
Как представлено на фиг. 9, настоящее раскрытие сущности предлагает два варианта осуществления для конкатенации всех битов, представляющих все позиции между глубиной D0 и глубиной D1 вдоль одной линии проекции, чтобы формировать EDD-код.
Один вариант осуществления рассматривает биты, представляющие позицию около глубины D0, в качестве более высоких битов результирующего кодового слова и биты, представляющие позицию около глубины D1, в качестве младших битов результирующего кодового слова, как показано в правой части по фиг. 9.
Другой вариант осуществления рассматривает биты, представляющие позицию около глубины D1, в качестве более высоких битов результирующего кодового слова и биты, представляющие позицию около глубины D0, в качестве младших битов результирующего кодового слова, как показано в левой части по фиг. 9. Примеры в верхней части фиг. 8 конструируются с использованием этого варианта осуществления, показанного в левой части по фиг. 9.
Фиг. 10 показывает кодер 2, модифицированный в соответствии с идеями настоящего раскрытия сущности. Более конкретно, блоки 10 создания тракта глубины, 14 формирования изображений глубины, 24 восстановления геометрии облаков точек и 26 трехмерного цветопереноса кодера 2 модифицируются согласно вариантам осуществления настоящего раскрытия сущности.
В блоке 10 создания патчей глубины, представленном на фиг. 2, блок 106 формирования патчей глубины модифицируется. Вместо просто записи D0 и D1 вдоль каждой линии проекции, точки между D0 и (D0+surfaceThickness) записываются посредством EDD-кода. Два патча глубины каждого соединенного компонента записывают D0 и EDD-коды.
Блок 14 формирования изображений глубины, представленный на фиг. 3, также модифицируется посредством записи EDD-кодов в DepthImg1 вместо D1. Два варианта осуществления для записи EDD-кодов в DepthImg1 представляются на фиг. 11 и 12.
Согласно первому варианту осуществления, представленному на фиг. 11, все EDD-коды пакетируются на 142, с использованием метаданных в расчете на блок, в DepthImg1.
Согласно второму варианту осуществления, представленному на фиг. 12, (D0+EDD_code) пакетируется на 144, с использованием метаданных в расчете на блок, в DepthImg1. DepthImg1 затем дополняется, чтобы повышать производительность сжатия.
Преимущественно, блок 24 восстановления геометрии облаков точек также модифицируется.
Точки, восстановленные из декодированных значений D0 и декодированных EDD-кодов, составляют восстановленное облако точек (только геометрии). Если имеется более двух восстановленных точек вдоль одной линии проекции, восстановленные точки между двумя точками с минимальным и максимальным восстановленными значениями глубины называются "промежуточными восстановленными точками".
Поскольку блок 24 восстановления геометрии облаков точек определяет то, как пакетировать значения цвета восстановленных точек, модификация этого блока 24 также позволяет решать проблемы, связанные с цветом восстановленных промежуточных точек.
Помимо геометрии восстановленного облака точек, вывод этого блока 24 также включает в себя координаты пакетированных изображений для каждой точки, которые, для каждой точки, указывают позицию в двух изображениях текстуры, которая сохраняет значение цвета текущей точки, которая должна кодироваться. За исключением промежуточных восстановленных точек, координаты пакетированных изображений для каждой точки остальных восстановленных точек, т.е. точек, соответствующих D0 и D1, определяются аналогично тому, как описано для кодера 2.
Два варианта осуществления предлагаются, чтобы решать проблемы, связанные с цветом упомянутых промежуточных восстановленных точек.
Согласно первому варианту осуществления, цвет упомянутых промежуточных восстановленных точек не передается в служебных сигналах в сжатом потоке битов. Декодер должен определять восстановленный цвет упомянутых промежуточных восстановленных точек на основе их смежных точек с цветом, восстановленным из потока битов, например, через интерполяцию. С использованием этого варианта осуществления, координаты пакетированных изображений для каждой точки этих восстановленных точек задаются как (НУЛЬ, НУЛЬ, НУЛЬ). НУЛЬ является некоторым недопустимым значением позиции изображения, к примеру -1.
Согласно второму варианту осуществления, цвет упомянутых промежуточных восстановленных точек передается в служебных сигналах в сжатом потоке битов. Цвет упомянутых промежуточных восстановленных точек, которые должны передаваться в служебных сигналах, определяется в блоке 26 трехмерного цветопереноса таким же образом, как для других восстановленных точек. Цвет промежуточных восстановленных точек сохраняется в блоках изображений текстуры, незанятых посредством любых патчей, которые могут интерпретироваться из метаданных в расчете на блок, в TexImg0 и/или TexImg1, которые представляют собой два изображения, соответствующие DepthImg0 и DepthImg1, сохраняющим цветовую информацию, которая должна кодироваться. Позиции пакетированных изображений промежуточных восстановленных точек определяются на основе их восстановленных позиций. Пример заключается в следующем.
На первом этапе, все незанятые блоки в DepthImage0 и DepthImage1 сортируются в список. Предусмотрено две возможности, незанятые блоки в DepthImage0 сортируются до или после DepthImage1 в отсортированном списке незанятых блоков. Незанятые блоки в идентичном изображении сортируются посредством их (uMin, vMin) (в цветовом YUV-пространстве).
На втором этапе, каждый раз, когда новая промежуточная точка восстанавливается во время этапа восстановления геометрии, ее позиция пакетированного изображения для каждой точки представляет собой первый незанятый пиксел первого незанятого блока в отсортированном списке незанятых блоков. Первоначально незанятый блок удаляется из отсортированного списка незанятых блоков, если он полностью занят посредством промежуточных точек.
Преимущественно, блок 26 трехмерного цветопереноса также модифицируется. В этом блоке, определение цвета точек с позициями (НУЛЬ, НУЛЬ, НУЛЬ) пакетированных изображений опускается.
По сравнению с кодером предшествующего уровня техники по фиг. 1, следующие метаданные преимущественно добавляются в поток битов, выводимый посредством кодера по фиг. 10:
- один бит, указывающий то, используется или нет новая схема кодирования, описанная в настоящем раскрытии сущности. Например, 1 означает то, что она используется, а 0 означает обратное.
- Если первый бит равен 1, следующие элементы присутствуют:
-- определенное число битов, например, 3 бита для того, чтобы указывать значение SurfaceThickness.
-- один бит для того, чтобы указывать то, что DepthImg1 записывает EDD-коды или (D0+EDD_codes). Например, 0 означает то, что EDD-коды записываются, а 1 означает то, что (D0+EDD_codes) записываются.
-- один бит для того, чтобы указывать то, как EDD-код конструируется, т.е. какой вариант осуществления, показанный на фиг. 9, используется для того, чтобы конструировать EDD-код, передаваемый в служебных сигналах в сжатом потоке битов. Например, 0 означает то, что используется вариант осуществления, показанный в левой части по фиг. 9, в то время как 1 означает то, что используется вариант осуществления, показанный в правой части по фиг. 9.
-- один бит для того, чтобы указывать то, передается или нет цвет промежуточных точек в служебных сигналах в сжатом потоке битов. Например, 1 означает да, а 0 означает нет. Этот бит называется "битом CodeInBetweenColor".
-- если бит CodeInBetweenColor равен 1, один бит для того, чтобы указывать то, что пакетирование цвета промежуточных восстановленных точек начинается с TexImg0 или с TexImg1. Например, 1 означает использование TexImg1 первым, а 0 означает использование TexImg0 первым.
Вышеуказанные новые метаданные, вводимые за счет новой предложенной схемы кодирования, могут передаваться в служебных сигналах однократно для всего потока битов либо многократно для каждого кадра или каждой группы кадров, сжимаемых вместе, что обеспечивает возможность выбора различных схем кодирования для каждого кадра или группы кадров. Поле(я) данных, записывающее значение(я) вышеуказанных метаданных, может непосредственно выводиться в сжатый поток(и) битов или дополнительно энтропийно кодироваться перед выводом в сжатый поток(и) битов.
Фиг. 13 показывает декодер 30 по фиг. 5, модифицированный в соответствии с идеями настоящего раскрытия сущности. Более конкретно, блоки 32 восстановления изображений глубины, 33 восстановления геометрии облаков точек и 35 восстановления текстуры облаков точек декодера 30 модифицируются согласно вариантам осуществления настоящего раскрытия сущности.
Относительно блока 32 восстановления изображений глубины, вывод этого блока включает в себя восстановленные значения D0 и восстановленные EDD-коды. Восстановленные значения D0 могут считываться из восстановленного DepthImg0. Если DepthImg1 сохраняет EDD-коды непосредственно, восстановленные EDD-коды могут непосредственно считываться из восстановленного DepthImg1. Если DepthImg1 сохраняет (D0+EDD_codes), EDD-коды могут восстанавливаться из вычитания восстановленного D0 из восстановленного DepthImg1.
Относительно блока 33 восстановления геометрии облаков точек, изменения, идентичные изменениям в блоке 24 на стороне кодера, реализуются.
Относительно блока 35 восстановления текстуры облаков точек, цвет промежуточных восстановленных точек восстанавливается либо посредством интерполяции, либо посредством считывания из восстановленного изображения текстуры.
Согласно дополнительному варианту осуществления раскрытия сущности, EDD-коды преимущественно используются в кодере 50 без потерь, как представлено на фиг. 14.
Этот кодер без потерь соответствует версии без потерь кодера 2 по фиг. 1, для которого дополнительные сведения могут содержатся в документе ISO/IEC JTC1/SC29/WG11 MPEG2018/m42170, январь 2018 года, Кванджу, Корея.
Базовая идея в отношении этого кодера 50 без потерь состоит в том, чтобы конструировать специальный соединенный компонент, который состоит из всех точек, пропущенных посредством, т.е. не включенных ни в один из соединенных компонентов, скомпонованных посредством кодера 2. После этого, два дополнительных патча глубины и два дополнительных патча текстуры, соответствующие пропущенному точечному патчу, пакетируются в изображениях глубины и текстуры.
Более конкретно, первый этап для распространения кодера 2 на кодирование геометрии без потерь заключается в том, чтобы захватывать пропущенные точки и создавать отдельный соединенный компонент, называемый "missingPointsPatch".
Далее, координаты x, y и z точек в missingPointsPatch размещаются в блоках и встраиваются в три цветовых канала Y, U и V кадра геометрии.
Затем, местоположение и размер missingPointsPatch выводятся с использованием механизмов кодера 2, и фиктивный патч, который отражает размерности и местоположение missingPointsPatch, добавляется в существующий список патчей. В ходе сжатия карты заполнения, эта информация кодируется наряду с информацией относительно других регулярных патчей и отправляется в декодер.
В завершение, до восстановления облака точек из сжатых кадров геометрии, местоположение и размерность missingPointsPatch извлекаются из фиктивного патча. Эта информация, наряду с картой заполнения, используется для того, чтобы восстанавливать пространственные координаты трехмерных точек из трех цветовых плоскостей. Одновременно, большинство точек из списка патчей восстанавливаются в декодере и проецируются обратно в трехмерное пространство с использованием существующей схемы.
Идеи настоящего раскрытия сущности могут преимущественно применяться к кодеру 50 без потерь посредством модификации выделенных блоков 52 создания патчей глубины, 54 формирования изображений глубины, 58 восстановления геометрии облаков точек и 60 трехмерного цветопереноса идентично тому, как описано со ссылкой на фиг. 10 для кодера 2.
На фиг. 1-14, модули представляют собой функциональные блоки, которые могут иметь или могут не иметь взаимосвязь с отличимыми физическими блоками. Например, эти модули или некоторые из них могут объединяться в уникальном компоненте или схеме либо способствовать функциональностям программного обеспечения. В противоположность этому, некоторые модули потенциально могут состоять из отдельных физических объектов. Оборудование, которое является совместимым с настоящими принципами, реализуется либо с использованием исключительно аппаратных средств, например, с использованием специализированных аппаратных средств, таких как ASIC, FPGA или VLSI, соответственно, "специализированная интегральная схема", "программируемая пользователем вентильная матрица", "сверхбольшая интегральная схема", либо с использованием нескольких интегрированных электронных компонентов, встроенных в устройство, либо с использованием сочетания аппаратных и программных компонентов.
Фиг. 15 представляет примерную архитектуру устройства 1100, которое может быть выполнено с возможностью реализовывать способ, описанный в отношении фиг. 1-14.
Устройство 1100 содержит следующие элементы, которые соединены посредством шины 1101 данных и адреса:
- микропроцессор 1102 (или CPU), который представляет собой, например, DSP (или процессор цифровых сигналов);
- ROM 1103 (или постоянное запоминающее устройство);
- RAM 1104 (или оперативное запоминающее устройство);
- интерфейс 1105 ввода-вывода для приема данных, которые следует передавать, из приложения; и
- аккумулятор 1106.
В соответствии с примером, аккумулятор 1106 является внешним для устройства. В каждом упомянутом запоминающем устройстве, слово "регистр", используемое в описании изобретения, может соответствовать зоне небольшого размера (в несколько битов) или очень большой зоне (например, всей программе либо большому объему принимаемых или декодированных данных). ROM 1103 содержит, по меньшей мере, программу и параметры. ROM 1103 может сохранять алгоритмы и инструкции для того, чтобы выполнять технологии в соответствии с настоящими принципами. После включения, CPU 1102 выгружает программу в RAM и выполняет соответствующие инструкции.
RAM 1104 содержит, в регистре, программу, выполняемую посредством CPU 1102 и выгруженную после включения устройства 1100, входные данные в регистре, промежуточные данные в различных состояниях способа в регистре и другие переменные, используемые для осуществления способа, в регистре.
Реализации, описанные в данном документе, могут реализовываться, например, в способе или процессе, оборудовании, программно-реализованной программе, потоке данных или сигнале. Даже если поясняется только в контексте одной формы реализации (например, поясняется только как способ или устройство), реализация поясненных признаков также может реализовываться в других формах (например, как программа). Оборудование может реализовываться, например, в соответствующих аппаратных средствах, программном обеспечении и микропрограммном обеспечении. Способы могут реализовываться, например, в таком оборудовании, как, например, процессор, который означает устройства обработки в целом, включающие в себя, например, компьютер, микропроцессор, интегральную схему или программируемое логическое устройство. Процессоры также включают в себя устройства связи, такие как, например, компьютеры, сотовые телефоны, портативные/персональные цифровые устройства (PDA) и другие устройства, которые упрощают обмен информацией между конечными пользователями.
В соответствии с примером кодирования или кодера, входное облако точек получается из источника. Например, источник принадлежит набору, содержащему:
- локальное запоминающее устройство (1103 или 1104), например, запоминающее устройство для хранения видеоданных или RAM (или оперативное запоминающее устройство), флэш-память, ROM (или постоянное запоминающее устройство), жесткий диск;
- интерфейс (1105) хранения данных, например, интерфейс с устройством хранения данных большой емкости, RAM, флэш-памятью, ROM, оптическим диском или магнитной подложкой;
- интерфейс (1105) связи, например, проводной интерфейс (например, шинный интерфейс, глобальный сетевой интерфейс, локальный сетевой интерфейс) или беспроводной интерфейс (к примеру, IEEE 802.11-интерфейс или Bluetooth- интерфейс); и
- схему захвата изображений (например, датчик, такой как, например, CCD (или прибор с зарядовой связью) либо CMOS (или комплементарная структура "металл-оксид-полупроводник")).
В соответствии с примером декодирования или декодера, декодированное облако точек отправляется в назначение; в частности, назначение принадлежит набору, содержащему:
- локальное запоминающее устройство (1103 или 1104), например, запоминающее устройство для хранения видеоданных или RAM, флэш-память, жесткий диск;
- интерфейс (1105) хранения данных, например, интерфейс с устройством хранения данных большой емкости, RAM, флэш-памятью, ROM, оптическим диском или магнитной подложкой;
- интерфейс (1105) связи, например, проводной интерфейс (например, шинный интерфейс (например, USB (или универсальную последовательную шину)), глобальный сетевой интерфейс, локальный сетевой интерфейс, интерфейс HDMI (мультимедийный интерфейс высокой четкости)) или беспроводной интерфейс (к примеру, IEEE 802.11-интерфейс, Wi-Fi- или Bluetooth-интерфейс);
- устройство рендеринга; и
- дисплей.
В соответствии с примерами кодирования или кодера, поток битов (сжатый поток) отправляется в назначение. В качестве примера, поток битов сохраняется в локальном или удаленном запоминающем устройстве, например, в запоминающем устройстве (1104) для хранения видеоданных или RAM (1104), на жестком диске (1103). В разновидности, поток битов отправляется в интерфейс (1105) хранения данных, например, в интерфейс с устройством хранения данных большой емкости, флэш-памятью, ROM, оптическим диском или магнитной подложкой, и/или передается по интерфейсу (1105) связи, например, по интерфейсу с линией связи "точка-точка", шиной связи, линией связи "точка-многоточка" или широковещательной сетью.
В соответствии с примерами декодирования или декодера, поток (сжатый поток) битов получается из источника. В качестве примера, поток битов считывается из локального запоминающего устройства, например, запоминающего устройства (1104) для хранения видеоданных, RAM (1104), ROM (1103), флэш-памяти (1103) или жесткого диска (1103). В разновидности, поток битов принимается из интерфейса (1105) хранения данных, например, интерфейса с устройством хранения данных большой емкости, RAM, ROM, флэш-памятью, оптическим диском или магнитной подложкой, и/или принимается из интерфейса (1105) связи, например, интерфейса с линией связи "точка-точка", шиной, линией связи "точка-многоточка" или широковещательной сетью.
В соответствии с примерами, устройство 1100, выполненное с возможностью реализовывать способ кодирования, описанный в отношении фиг. 10 или 14, принадлежит набору, содержащему:
- мобильное устройство;
- смартфон или телевизор с характеристиками трехмерного захвата;
- устройство связи;
- игровое устройство;
- планшет (или планшетный компьютер);
- переносной компьютер;
- фотокамеру;
- видеокамеру;
- микросхему кодирования;
- сервер неподвижных изображений; и
- видеосервер (например, широковещательный сервер, сервер "видео по запросу" или веб-сервер).
В соответствии с примерами, устройство 1100, выполненное с возможностью реализовывать способ декодирования, описанный в отношении фиг. 13 или 14, принадлежит набору, содержащему:
- мобильное устройство;
- наголовный дисплей (HMD);
- интеллектуальные очки (в стиле смешанной реальности);
- голографическое устройство;
- устройство связи;
- игровое устройство;
- абонентскую приставку;
- телевизор;
- планшет (или планшетный компьютер);
- переносной компьютер;
- дисплей;
- стереоскопический дисплей; и
- микросхему декодирования.
Согласно примеру настоящих принципов, проиллюстрированных на фиг. 16, в контексте передачи между двумя удаленными устройствами A и B по сети NET связи, устройство A содержит процессор, связанный с запоминающим устройством RAM и ROM, которые выполнены с возможностью реализовывать способ для кодирования облака цветных точек, как описано в отношении с фиг. 10, и устройство B содержит процессор, связанный с запоминающим устройством RAM и ROM, которые выполнены с возможностью реализовывать способ для декодирования, как описано в отношении с фиг. 13.
В соответствии с примером, сеть представляет собой широковещательную сеть, адаптированную с возможностью широковещательно передавать кодированные облака цветных точек из устройства A в устройства декодирования, включающие в себя устройство B.
Сигнал, предназначенный для передачи посредством устройства A, переносит поток битов.
Фиг. 17 показывает пример синтаксиса такого сигнала, когда данные передаются по протоколу передачи с коммутацией пакетов. Передаваемый пакет P содержит заголовок H и рабочие данные PAYLOAD.
Реализации различных процессов и признаков, описанных в данном документе, могут осуществляться во множестве различных видов оборудования или приложений. Примеры такого оборудования включают в себя кодер, декодер, постпроцессор, обрабатывающий вывод из декодера, препроцессор, предоставляющий ввод в кодер, видеокодер, видеодекодер, видеокодек, веб-сервер, абонентскую приставку, переносной компьютер, персональный компьютер, сотовый телефон, PDA, HMD, интеллектуальные очки и любое другое устройство для обработки изображения или видео, либо другие устройства связи. Должно быть очевидным, что оборудование может быть мобильным и даже установленным в мобильном транспортном средстве.
Дополнительно, способы могут реализовываться посредством инструкций, выполняемых посредством процессора, и такие инструкции (и/или значения данных, сформированные посредством реализации) могут сохраняться на машиночитаемом носителе хранения данных. Машиночитаемый носитель хранения данных может принимать форму машиночитаемого программного продукта, осуществленного на одном или более машиночитаемых носителей и имеющего осуществленный машиночитаемый программный код, который выполняется посредством компьютера. Машиночитаемый носитель хранения данных при использовании в данном документе считается энергонезависимым носителем хранения данных с внутренними возможностями сохранять информацию в себе, а также с внутренними возможностями предоставлять извлечение информации из себя. Машиночитаемый носитель хранения данных, например, может представлять собой, но не только, электронную, магнитную, оптическую, электромагнитную, инфракрасную или полупроводниковую систему, оборудование или устройство либо любую подходящую комбинацию вышеприведенного. Следует принимать во внимание, что ниже, при предоставлении более конкретных примеров машиночитаемых носителей хранения данных, к которым могут применяться настоящие принципы, приводится просто иллюстративный, а не полный перечень, как должны принимать во внимание специалисты в данной области техники: портативная компьютерная дискета; жесткий диск; постоянное запоминающее устройство (ROM); стираемое программируемое постоянное запоминающее устройство (EPROM или флэш-память); портативное постоянное запоминающее устройство на компакт-дисках (CD-ROM); оптическое устройство хранения данных; магнитное устройство хранения данных; или любая подходящая комбинация вышеприведенного.
Инструкции могут формировать прикладную программу, материально осуществленную на процессорночитаемом носителе.
Инструкции, например, могут находиться в аппаратных средствах, микропрограммном обеспечении, программном обеспечении или в комбинации. Инструкции могут содержаться, например, в операционной системе, в отдельном приложении или в комбинации означенного. Следовательно, процессор может характеризоваться, например, в качестве как устройства, выполненного с возможностью осуществлять процесс, так и устройства, которое включает в себя процессорночитаемый носитель (к примеру, устройство хранения данных), имеющий инструкции для выполнения процесса. Дополнительно, процессорночитаемый носитель может сохранять, в дополнение или вместо инструкций, значения данных, сформированные посредством реализации.
Специалистам данной области техники должно быть очевидным, что реализации также могут формировать множество сигналов, отформатированных с возможностью переносить информацию, которая, например, может сохраняться или передаваться. Информация может включать в себя, например, инструкции для осуществления способа или данные, сформированные посредством одной из описанных реализаций. Например, сигнал может форматироваться с возможностью переносить в качестве данных правила для записи или считывания синтаксиса описанного примера настоящих принципов либо переносить в качестве данных фактические синтаксические значения, записанные посредством описанного примера настоящих принципов. Этот сигнал, например, может форматироваться как электромагнитная волна (к примеру, с использованием радиочастотного участка спектра) или как сигнал в полосе модулирующих частот. Форматирование может включать в себя, например, кодирование потока данных и модуляцию несущей с кодированным потоком данных. Информация, которую переносит сигнал, например, может представлять собой аналоговую или цифровую информацию. Как известно, сигнал может передаваться по множеству различных линий проводной или беспроводной связи. Сигнал может сохраняться на процессорночитаемом носителе.
Описан ряд реализаций. Тем не менее, следует понимать, что могут вноситься различные модификации. Например, элементы различных реализаций могут комбинироваться, дополняться, модифицироваться или удаляться для того, чтобы формировать другие реализации. Дополнительно, специалисты в данной области техники должны понимать, что другие структуры и процессы могут использоваться вместо раскрытых структур и процессов, и результирующие реализации должны выполнять, по меньшей мере, практически идентичную функцию(и), по меньшей мере, практически идентичным способом(ами), чтобы добиваться, по меньшей мере, практически идентичного результата(ов), что и раскрытые реализации. Соответственно, эти и другие реализации предполагаются посредством этой заявки.