СПОСОБ КОДИРОВАНИЯ ТРЕХМЕРНЫХ ДАННЫХ, СПОСОБ ДЕКОДИРОВАНИЯ ТРЕХМЕРНЫХ ДАННЫХ, УСТРОЙСТВО КОДИРОВАНИЯ ТРЕХМЕРНЫХ ДАННЫХ И УСТРОЙСТВО ДЕКОДИРОВАНИЯ ТРЕХМЕРНЫХ ДАННЫХ
THREE-DIMENSIONAL DATA ENCODING METHOD, THREE-DIMENSIONAL DATA DECODING METHOD, THREE-DIMENSIONAL DATA ENCODING DEVICE AND THREE-DIMENSIONAL DATA DECODING DEVICE

Область техники, к которой относится изобретение
[0001] Настоящее раскрытие относится к способу кодирования трехмерных данных, к способу декодирования трехмерных данных, к устройству кодирования трехмерных данных и к устройству декодирования трехмерных данных.
Уровень техники
[0002] Устройства или услуги с использованием трехмерных данных предположительно должны находить широкое применение в широком диапазоне областей техники, таких как машинное зрение, которое обеспечивает автономную работу автомобилей или роботов, картографическая информация, мониторинг, обследование инфраструктуры и распространение видео. Трехмерные данные получаются через различные средства, включающие в себя датчик расстояния, такой как, дальномер, а также стереокамеру и комбинацию множества монокулярных камер.
[0003] Способы представления трехмерных данных включают в себя способ, известный как схема на основе облаков точек, которая представляет форму трехмерной структуры посредством точечной группы в трехмерном пространстве. В схеме на основе облаков точек, сохраняются позиции и цвета точечной группы. Хотя облако точек предположительно должно представлять собой основной способ представления трехмерных данных, огромный объем данных точечной группы требует сжатия объема трехмерных данных посредством кодирования для накопления и передачи, как и в случае двумерного движущегося изображения (примеры включают в себя MPEG-4 AVC и HEVC, стандартизированное посредством MPEG).
[0004] Между тем, сжатие облаков точек частично поддерживается, например, посредством библиотеки с открытым исходным кодом (библиотеки облаков точек) для связанной с облаками точек обработки.
[0005] Кроме того, известна технология для поиска и отображения инфраструктурного объекта, расположенного в окрестности транспортного средства (например, см. патентный документ (PTL) 1).
Список библиографических ссылок
Патентные документы
[0006] PTL 1. Международная публикация WO 2014/020663
Сущность изобретения
Техническая задача
[0007] Возникает потребность в уменьшении времени обработки при кодировании или декодировании трехмерных данных.
[0008] Настоящее раскрытие имеет цель предложить способ кодирования трехмерных данных, способ декодирования трехмерных данных, устройство кодирования трехмерных данных или устройство декодирования трехмерных данных, которые допускают уменьшение времени обработки.
Решение задачи
[0009] Способ кодирования трехмерных данных согласно одному аспекту настоящего раскрытия включает в себя: разделение трехмерных точек, включенных в трехмерные данные, на субоблака трехмерных точек, включающие в себя первое субоблако трехмерных точек и второе субоблако трехмерных точек; присоединение первой информации, указывающей пространство первого субоблака трехмерных точек, к заголовку первого субоблака трехмерных точек; присоединение второй информации, указывающей пространство второго субоблака трехмерных точек, к заголовку второго субоблака трехмерных точек; и кодирование первого субоблака трехмерных точек и второго субоблака трехмерных точек таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга.
[0010] Способ декодирования трехмерных данных согласно одному аспекту настоящего раскрытия включает в себя: получение первых кодированных данных и вторых кодированных данных, сформированных посредством кодирования первого субоблака трехмерных точек и второго субоблака трехмерных точек таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга, причем первое субоблако трехмерных точек и второе субоблако трехмерных точек включаются в субоблака трехмерных точек, полученные посредством разделения трехмерных точек, включенных в трехмерные данные; получение первой информации, указывающей пространство первого субоблака трехмерных точек, из заголовка первого субоблака трехмерных точек; получение второй информации, указывающей пространство второго субоблака трехмерных точек, из заголовка второго субоблака трехмерных точек; и восстановление первого субоблака трехмерных точек и второго субоблака трехмерных точек посредством декодирования первых кодированных данных и вторых кодированных данных.
Преимущества изобретения
[0011] Настоящее раскрытие предлагает способ кодирования трехмерных данных, способ декодирования трехмерных данных, устройство кодирования трехмерных данных или устройство декодирования трехмерных данных, которые допускают уменьшение времени обработки.
Краткое описание чертежей
[0012] Фиг. 1 является схемой, показывающей структуру кодированных трехмерных данных согласно варианту 1 осуществления.
Фиг. 2 является схемой, показывающей пример структур прогнозирования для SPC, которые принадлежат крайнему нижнему слою в GOS согласно варианту 1 осуществления.
Фиг. 3 является схемой, показывающей пример структур прогнозирования для слоев согласно варианту 1 осуществления.
Фиг. 4 является схемой, показывающей примерный порядок кодирования GOS согласно варианту 1 осуществления.
Фиг. 5 является схемой, показывающей примерный порядок кодирования GOS согласно варианту 1 осуществления.
Фиг. 6 является блок-схемой устройства кодирования трехмерных данных согласно варианту 1 осуществления.
Фиг. 7 является блок-схемой последовательности операций способа для процессов кодирования согласно варианту 1 осуществления.
Фиг. 8 является блок-схемой устройства декодирования трехмерных данных согласно варианту 1 осуществления.
Фиг. 9 является блок-схемой последовательности операций способа для процессов декодирования согласно варианту 1 осуществления.
Фиг. 10 является схемой, показывающей пример метаинформации согласно варианту 1 осуществления.
Фиг. 11 является схемой, показывающей примерную структуру SWLD согласно варианту 2 осуществления.
Фиг. 12 является схемой, показывающей примерные операции, выполняемые посредством сервера и клиента согласно варианту 2 осуществления.
Фиг. 13 является схемой, показывающей примерные операции, выполняемые посредством сервера и клиента согласно варианту 2 осуществления.
Фиг. 14 является схемой, показывающей примерные операции, выполняемые посредством сервера и клиентов согласно варианту 2 осуществления.
Фиг. 15 является схемой, показывающей примерные операции, выполняемые посредством сервера и клиентов согласно варианту 2 осуществления.
Фиг. 16 является блок-схемой устройства кодирования трехмерных данных согласно варианту 2 осуществления.
Фиг. 17 является блок-схемой последовательности операций способа для процессов кодирования согласно варианту 2 осуществления.
Фиг. 18 является блок-схемой устройства декодирования трехмерных данных согласно варианту 2 осуществления.
Фиг. 19 является блок-схемой последовательности операций способа для процессов декодирования согласно варианту 2 осуществления.
Фиг. 20 является схемой, показывающей примерную структуру WLD согласно варианту 2 осуществления.
Фиг. 21 является схемой, показывающей примерную структуру в виде дерева октантов WLD согласно варианту 2 осуществления.
Фиг. 22 является схемой, показывающей примерную структуру SWLD согласно варианту 2 осуществления.
Фиг. 23 является схемой, показывающей примерную структуру в виде дерева октантов SWLD согласно варианту 2 осуществления.
Фиг. 24 является блок-схемой устройства создания трехмерных данных согласно варианту 3 осуществления.
Фиг. 25 является блок-схемой устройства передачи трехмерных данных согласно варианту 3 осуществления.
Фиг. 26 является блок-схемой устройства обработки трехмерной информации согласно варианту 4 осуществления.
Фиг. 27 является блок-схемой устройства создания трехмерных данных согласно варианту 5 осуществления.
Фиг. 28 является схемой, показывающей структуру системы согласно варианту 6 осуществления.
Фиг. 29 является блок-схемой клиентского устройства согласно варианту 6 осуществления.
Фиг. 30 является блок-схемой сервера согласно варианту 6 осуществления.
Фиг. 31 является блок-схемой последовательности операций способа для процесса создания трехмерных данных, выполняемого посредством клиентского устройства согласно варианту 6 осуществления.
Фиг. 32 является блок-схемой последовательности операций способа для процесса передачи информации датчиков, выполняемого посредством клиентского устройства согласно варианту 6 осуществления.
Фиг. 33 является блок-схемой последовательности операций способа для процесса создания трехмерных данных, выполняемого посредством сервера согласно варианту 6 осуществления.
Фиг. 34 является блок-схемой последовательности операций способа для процесса передачи трехмерных карт, выполняемого посредством сервера согласно варианту 6 осуществления.
Фиг. 35 является схемой, показывающей структуру варьирования системы согласно варианту 6 осуществления.
Фиг. 36 является схемой, показывающей структуру серверных и клиентских устройств согласно варианту 6 осуществления.
Фиг. 37 является блок-схемой устройства кодирования трехмерных данных согласно варианту 7 осуществления.
Фиг. 38 является схемой, показывающей пример остатка прогнозирования согласно варианту 7 осуществления.
Фиг. 39 является схемой, показывающей пример объема согласно варианту 7 осуществления.
Фиг. 40 является схемой, показывающей пример представления в виде дерева октантов объема согласно варианту 7 осуществления.
Фиг. 41 является схемой, показывающей пример битовых последовательностей объема согласно варианту 7 осуществления.
Фиг. 42 является схемой, показывающей пример представления в виде дерева октантов объема согласно варианту 7 осуществления.
Фиг. 43 является схемой, показывающей пример объема согласно варианту 7 осуществления.
Фиг. 44 является схемой для описания процесса внутреннего прогнозирования согласно варианту 7 осуществления.
Фиг. 45 является схемой для описания процесса вращения и перемещения в пространстве согласно варианту 7 осуществления.
Фиг. 46 является схемой, показывающей примерный синтаксис RT-флага и RT-информации согласно варианту 7 осуществления.
Фиг. 47 является схемой для описания процесса взаимного прогнозирования согласно варианту 7 осуществления.
Фиг. 48 является блок-схемой устройства декодирования трехмерных данных согласно варианту 7 осуществления.
Фиг. 49 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных согласно варианту 7 осуществления.
Фиг. 50 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, выполняемого посредством устройства декодирования трехмерных данных согласно варианту 7 осуществления.
Фиг. 51 является схемой, показывающей структуру системы распространения согласно варианту 8 осуществления.
Фиг. 52 является схемой, показывающей примерную структуру потока битов кодированной трехмерной карты согласно варианту 8 осуществления.
Фиг. 53 является схемой для описания преимущества в отношении эффективности кодирования согласно варианту 8 осуществления.
Фиг. 54 является блок-схемой последовательности операций способа для процессов, выполняемых посредством сервера согласно варианту 8 осуществления.
Фиг. 55 является блок-схемой последовательности операций способа для процессов, выполняемых посредством клиента согласно варианту 8 осуществления.
Фиг. 56 является схемой, показывающей примерный синтаксис субкарты согласно варианту 8 осуществления.
Фиг. 57 является схемой, принципиально показывающей процесс переключения типа кодирования согласно варианту 8 осуществления.
Фиг. 58 является схемой, показывающей примерный синтаксис субкарты согласно варианту 8 осуществления.
Фиг. 59 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 8 осуществления.
Фиг. 60 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 8 осуществления.
Фиг. 61 является схемой, принципиально показывающей операцию варьирования процесса переключения типа кодирования согласно варианту 8 осуществления.
Фиг. 62 является схемой, принципиально показывающей операцию варьирования процесса переключения типа кодирования согласно варианту 8 осуществления.
Фиг. 63 является схемой, принципиально показывающей операцию варьирования процесса переключения типа кодирования согласно варианту 8 осуществления.
Фиг. 64 является схемой, принципиально показывающей операцию варьирования процесса вычисления дифференциального значения согласно варианту 8 осуществления.
Фиг. 65 является схемой, принципиально показывающей операцию варьирования процесса вычисления дифференциального значения согласно варианту 8 осуществления.
Фиг. 66 является схемой, принципиально показывающей операцию варьирования процесса вычисления дифференциального значения согласно варианту 8 осуществления.
Фиг. 67 является схемой, принципиально показывающей операцию варьирования процесса вычисления дифференциального значения согласно варианту 8 осуществления.
Фиг. 68 является схемой, показывающей примерный синтаксис объема согласно варианту 8 осуществления.
Фиг. 69 является схемой, показывающей пример важной зоны согласно варианту 9 осуществления.
Фиг. 70 является схемой, показывающей пример кода заполнения согласно варианту 9 осуществления.
Фиг. 71 является схемой, показывающей пример структуры в виде дерева квадрантов согласно варианту 9 осуществления.
Фиг. 72 является схемой, показывающей пример кода заполнения и кода местоположения согласно варианту 9 осуществления.
Фиг. 73 является схемой, показывающей пример трехмерных точек, полученных через лидар согласно варианту 9 осуществления.
Фиг. 74 является схемой, показывающей пример структуры в виде дерева октантов согласно варианту 9 осуществления.
Фиг. 75 является схемой, показывающей пример гибридного кодирования согласно варианту 9 осуществления.
Фиг. 76 является схемой для описания способа для переключения между кодированием на основе местоположения и кодированием на основе заполнения согласно варианту 9 осуществления.
Фиг. 77 является схемой, показывающей пример кодированного на основе местоположения потока битов согласно варианту 9 осуществления.
Фиг. 78 является схемой, показывающей пример гибридно кодированного потока битов согласно варианту 9 осуществления.
Фиг. 79 является схемой, показывающей структуру в виде дерева кодов заполнения важных трехмерных точек согласно варианту 9 осуществления.
Фиг. 80 является схемой, показывающей структуру в виде дерева кодов заполнения неважных трехмерных точек согласно варианту 9 осуществления.
Фиг. 81 является схемой, показывающей пример гибридно кодированного потока битов согласно варианту 9 осуществления.
Фиг. 82 является схемой, показывающей пример потока битов, включающего в себя информацию режима кодирования согласно варианту 9 осуществления.
Фиг. 83 является схемой, показывающей примерный синтаксис согласно варианту 9 осуществления.
Фиг. 84 является блок-схемой последовательности операций способа для процесса кодирования согласно варианту 9 осуществления.
Фиг. 85 является блок-схемой последовательности операций способа для процесса кодирования узлов согласно варианту 9 осуществления.
Фиг. 86 является блок-схемой последовательности операций способа для процесса декодирования согласно варианту 9 осуществления.
Фиг. 87 является блок-схемой последовательности операций способа для процесса декодирования узлов согласно варианту 9 осуществления.
Фиг. 88 является схемой, иллюстрирующей пример древовидной структуры согласно варианту 10 осуществления.
Фиг. 89 является графиком, показывающим пример числа допустимых листьев каждой ветви согласно варианту 10 осуществления.
Фиг. 90 является схемой, иллюстрирующей пример варианта применения схем кодирования согласно варианту 10 осуществления.
Фиг. 91 является схемой, иллюстрирующей пример зоны с плотными ветвями согласно варианту 10 осуществления.
Фиг. 92 является схемой, иллюстрирующей пример плотного облака трехмерных точек согласно варианту 10 осуществления.
Фиг. 93 является схемой, иллюстрирующей пример разреженного облака трехмерных точек согласно варианту 10 осуществления.
Фиг. 94 является блок-схемой последовательности операций способа для процесса кодирования согласно варианту 10 осуществления.
Фиг. 95 является блок-схемой последовательности операций способа для процесса декодирования согласно варианту 10 осуществления.
Фиг. 96 является блок-схемой последовательности операций способа для процесса кодирования согласно варианту 10 осуществления.
Фиг. 97 является блок-схемой последовательности операций способа для процесса декодирования согласно варианту 10 осуществления.
Фиг. 98 является блок-схемой последовательности операций способа для процесса кодирования согласно варианту 10 осуществления.
Фиг. 99 является блок-схемой последовательности операций способа для процесса декодирования согласно варианту 10 осуществления.
Фиг. 100 является блок-схемой последовательности операций способа для процесса разделения трехмерных точек согласно варианту 10 осуществления.
Фиг. 101 является схемой, иллюстрирующей пример синтаксиса согласно варианту 10 осуществления.
Фиг. 102 является схемой, иллюстрирующей пример плотной ветви согласно варианту 10 осуществления.
Фиг. 103 является схемой, иллюстрирующей пример разреженной ветви согласно варианту 10 осуществления.
Фиг. 104 является блок-схемой последовательности операций способа для процесса кодирования согласно варьированию варианта 10 осуществления.
Фиг. 105 является блок-схемой последовательности операций способа для процесса декодирования согласно варьированию варианта 10 осуществления.
Фиг. 106 является блок-схемой последовательности операций способа для процесса разделения трехмерных точек согласно варьированию варианта 10 осуществления.
Фиг. 107 является схемой, иллюстрирующей пример синтаксиса согласно варьированию варианта 10 осуществления.
Фиг. 108 является блок-схемой последовательности операций способа для процесса кодирования согласно варианту 10 осуществления.
Фиг. 109 является блок-схемой последовательности операций способа для процесса декодирования согласно варианту 10 осуществления.
Фиг. 110 является схемой, иллюстрирующей пример древовидной структуры согласно варианту 11 осуществления.
Фиг. 111 является схемой, иллюстрирующей пример кодов заполнения согласно варианту 11 осуществления.
Фиг. 112 является схемой, принципиально иллюстрирующей операцию, выполняемую посредством устройства кодирования трехмерных данных согласно варианту 11 осуществления.
Фиг. 113 является схемой, иллюстрирующей пример геометрической информации согласно варианту 11 осуществления.
Фиг. 114 является схемой, иллюстрирующей пример выбора таблицы кодирования с использованием геометрической информации согласно варианту 11 осуществления.
Фиг. 115 является схемой, иллюстрирующей пример выбора таблицы кодирования с использованием информации структуры согласно варианту 11 осуществления.
Фиг. 116 является схемой, иллюстрирующей пример выбора таблицы кодирования с использованием информации атрибутов согласно варианту 11 осуществления.
Фиг. 117 является схемой, иллюстрирующей пример выбора таблицы кодирования с использованием информации атрибутов согласно варианту 11 осуществления.
Фиг. 118 является схемой, иллюстрирующей пример структуры потока битов согласно варианту 11 осуществления.
Фиг. 119 является схемой, иллюстрирующей пример таблицы кодирования согласно варианту 11 осуществления.
Фиг. 120 является схемой, иллюстрирующей пример таблицы кодирования согласно варианту 11 осуществления.
Фиг. 121 является схемой, иллюстрирующей пример структуры потока битов согласно варианту 11 осуществления.
Фиг. 122 является схемой, иллюстрирующей пример таблицы кодирования согласно варианту 11 осуществления.
Фиг. 123 является схемой, иллюстрирующей пример таблицы кодирования согласно варианту 11 осуществления.
Фиг. 124 является схемой, иллюстрирующей пример чисел битов кода заполнения согласно варианту 11 осуществления.
Фиг. 125 является блок-схемой последовательности операций способа для процесса кодирования с использованием геометрической информации согласно варианту 11 осуществления.
Фиг. 126 является блок-схемой последовательности операций способа для процесса декодирования с использованием геометрической информации согласно варианту 11 осуществления.
Фиг. 127 является блок-схемой последовательности операций способа для процесса кодирования с использованием информации структуры согласно варианту 11 осуществления.
Фиг. 128 является блок-схемой последовательности операций способа для процесса декодирования с использованием информации структуры согласно варианту 11 осуществления.
Фиг. 129 является блок-схемой последовательности операций способа для процесса кодирования с использованием информации атрибутов согласно варианту 11 осуществления.
Фиг. 130 является блок-схемой последовательности операций способа для процесса декодирования с использованием информации атрибутов согласно варианту 11 осуществления.
Фиг. 131 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием геометрической информации согласно варианту 11 осуществления.
Фиг. 132 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием информации структуры согласно варианту 11 осуществления.
Фиг. 133 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием информации атрибутов согласно варианту 11 осуществления.
Фиг. 134 является блок-схемой устройства кодирования трехмерных данных согласно варианту 11 осуществления.
Фиг. 135 является блок-схемой устройства декодирования трехмерных данных согласно варианту 11 осуществления.
Фиг. 136 является схемой, иллюстрирующей опорную взаимосвязь в структуре в виде дерева октантов согласно варианту 12 осуществления.
Фиг. 137 является схемой, иллюстрирующей опорную взаимосвязь в пространственной области согласно варианту 12 осуществления.
Фиг. 138 является схемой, иллюстрирующей пример соседних опорных узлов согласно варианту 12 осуществления.
Фиг. 139 является схемой, иллюстрирующей взаимосвязь между родительским узлом и узлами согласно варианту 12 осуществления.
Фиг. 140 является схемой, иллюстрирующей пример кода заполнения родительского узла согласно варианту 12 осуществления.
Фиг. 141 является блок-схемой устройства кодирования трехмерных данных согласно варианту 12 осуществления.
Фиг. 142 является блок-схемой устройства декодирования трехмерных данных согласно варианту 12 осуществления.
Фиг. 143 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 12 осуществления.
Фиг. 144 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 12 осуществления.
Фиг. 145 является схемой, иллюстрирующей пример выбора таблицы кодирования согласно варианту 12 осуществления.
Фиг. 146 является схемой, иллюстрирующей опорную взаимосвязь в пространственной области согласно варьированию 1 варианта 12 осуществления.
Фиг. 147 является схемой, иллюстрирующей пример синтаксиса информации заголовка согласно варьированию 1 варианта 12 осуществления.
Фиг. 148 является схемой, иллюстрирующей пример синтаксиса информации заголовка согласно варьированию 1 варианта 12 осуществления.
Фиг. 149 является схемой, иллюстрирующей пример соседних опорных узлов согласно варьированию 2 варианта 12 осуществления.
Фиг. 150 является схемой, иллюстрирующей пример текущего узла и соседних узлов согласно варьированию 2 варианта 12 осуществления.
Фиг. 151 является схемой, иллюстрирующей опорную взаимосвязь в структуре в виде дерева октантов согласно варьированию 3 варианта 12 осуществления.
Фиг. 152 является схемой, иллюстрирующей опорную взаимосвязь в пространственной области согласно варьированию 3 варианта 12 осуществления.
Фиг. 153 является схемой, иллюстрирующей пример синтаксиса информации заголовка согласно варианту 13 осуществления.
Фиг. 154 является схемой, иллюстрирующей пример конфигурации дерева октантов, когда информация режима согласно варианту 13 осуществления указывает 1.
Фиг. 155 является схемой, иллюстрирующей пример конфигурации дерева октантов, когда информация режима согласно варианту 13 осуществления указывает 0.
Фиг. 156 является схемой, иллюстрирующей пример синтаксиса информации узла согласно варианту 13 осуществления.
Фиг. 157 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 13 осуществления.
Фиг. 158 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 13 осуществления.
Фиг. 159 является блок-схемой устройства кодирования трехмерных данных согласно варианту 13 осуществления.
Фиг. 160 является блок-схемой устройства декодирования трехмерных данных согласно варианту 13 осуществления.
Фиг. 161 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 13 осуществления.
Фиг. 162 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 13 осуществления.
Фиг. 163 является схемой, иллюстрирующей примеры 1-битовой занятой позиции и оставшегося бита согласно варианту 14 осуществления.
Фиг. 164 является схемой для иллюстрации процесса определения того, следует или нет применять кодирование на основе занятых позиций согласно варианту 14 осуществления.
Фиг. 165 является схемой, иллюстрирующей пример синтаксиса информации узла согласно варианту 14 осуществления.
Фиг. 166 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 14 осуществления.
Фиг. 167 является блок-схемой последовательности операций способа для процесса кодирования на основе занятых позиций согласно варианту 14 осуществления.
Фиг. 168 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 14 осуществления.
Фиг. 169 является блок-схемой последовательности операций способа для процесса декодирования на основе занятых позиций согласно варианту 14 осуществления.
Фиг. 170 является блок-схемой устройства кодирования трехмерных данных согласно варианту 14 осуществления.
Фиг. 171 является блок-схемой устройства декодирования трехмерных данных согласно варианту 14 осуществления.
Фиг. 172 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 14 осуществления.
Фиг. 173 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 14 осуществления.
Фиг. 174 является схемой для иллюстрации дублированных точек согласно варианту 15 осуществления.
Фиг. 175 является схемой для иллюстрации процесса, выполняемого для дублированных точек согласно варианту 15 осуществления.
Фиг. 176 является схемой, иллюстрирующей пример синтаксиса информации заголовка согласно варианту 15 осуществления.
Фиг. 177 является схемой, иллюстрирующей пример синтаксиса информации узла согласно варианту 15 осуществления.
Фиг. 178 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 15 осуществления.
Фиг. 179 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 15 осуществления.
Фиг. 180 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 15 осуществления.
Фиг. 181 является блок-схемой устройства декодирования трехмерных данных согласно варианту 15 осуществления.
Фиг. 182 является блок-схемой устройства декодирования трехмерных данных согласно варианту 15 осуществления.
Фиг. 183 является блок-схемой последовательности операций способа для варьирования процесса кодирования трехмерных данных согласно варианту 15 осуществления.
Фиг. 184 является схемой для иллюстрации процесса для дублированных точек согласно варианту 15 осуществления.
Фиг. 185 является схемой, иллюстрирующей пример соседних узлов согласно варианту 16 осуществления.
Фиг. 186 является схемой, иллюстрирующей пример узлов, поиск которых должен выполняться согласно варианту 16 осуществления.
Фиг. 187 является схемой для иллюстрации процесса поиска для соседнего узла согласно варианту 16 осуществления.
Фиг. 188 является схемой для иллюстрации процесса обновления для информации окружения согласно варианту 16 осуществления.
Фиг. 189 является схемой для иллюстрации процесса обновления для информации окружения согласно варианту 16 осуществления.
Фиг. 190 является схемой для иллюстрации процесса поиска, для которого пороговое значение для поиска предоставляется согласно варианту 16 осуществления.
Фиг. 191 является схемой, иллюстрирующей пример индексов, для которых коды Мортона используются согласно варианту 16 осуществления.
Фиг. 192 является схемой, иллюстрирующей пример очереди, для которой коды Мортона используются согласно варианту 16 осуществления.
Фиг. 193 является блок-схемой устройства кодирования трехмерных данных согласно варианту 16 осуществления.
Фиг. 194 является блок-схемой устройства декодирования трехмерных данных согласно варианту 16 осуществления.
Фиг. 195 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 16 осуществления.
Фиг. 196 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 16 осуществления.
Фиг. 197 является схемой, иллюстрирующей пример синтаксиса информации заголовка согласно варианту 16 осуществления.
Фиг. 198 является схемой, иллюстрирующей пример синтаксиса информации узла согласно варианту 16 осуществления.
Фиг. 199 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 16 осуществления.
Фиг. 200 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 16 осуществления.
Фиг. 201 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 16 осуществления.
Фиг. 202 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 16 осуществления.
Фиг. 203 является схемой, иллюстрирующей пример древовидной структуры согласно варианту 17 осуществления.
Фиг. 204 является схемой, иллюстрирующей пример субоблака трехмерных точек согласно варианту 17 осуществления.
Фиг. 205 является схемой, иллюстрирующей пример субоблака трехмерных точек согласно варианту 17 осуществления.
Фиг. 206 является схемой, иллюстрирующей структурный пример потока битов согласно варианту 17 осуществления.
Фиг. 207 является схемой, иллюстрирующей пример древовидной структуры согласно варианту 17 осуществления.
Фиг. 208 является схемой для иллюстрации полного параллельного кодирования согласно варианту 17 осуществления и показывает пример древовидной структуры.
Фиг. 209 является схемой, пространственно иллюстрирующей субоблака трехмерных точек, которые должны обрабатываться параллельно согласно варианту 17 осуществления.
Фиг. 210 является схемой, иллюстрирующей структурный пример потока битов согласно варианту 17 осуществления.
Фиг. 211 является схемой для иллюстрации процесса параллельного декодирования согласно варианту 17 осуществления.
Фиг. 212 является схемой, принципиально иллюстрирующей процедуру процесса полного параллельного кодирования согласно варианту 17 осуществления.
Фиг. 213 является схемой, принципиально иллюстрирующей процедуру процесса полного параллельного декодирования согласно варианту 17 осуществления.
Фиг. 214 является схемой для иллюстрации инкрементного параллельного кодирования согласно варианту 17 осуществления и показывает пример древовидной структуры.
Фиг. 215 является схемой, указывающей операции ядер в инкрементном параллельном кодировании согласно варианту 17 осуществления.
Фиг. 216 является схемой, принципиально иллюстрирующей процедуру процесса инкрементного параллельного кодирования согласно варианту 17 осуществления.
Фиг. 217 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 17 осуществления.
Фиг. 218 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 17 осуществления.
Подробное описание вариантов осуществления
[0013] Способ кодирования трехмерных данных согласно одному аспекту настоящего раскрытия включает в себя: разделение трехмерных точек, включенных в трехмерные данные, на субоблака трехмерных точек, включающие в себя первое субоблако трехмерных точек и второе субоблако трехмерных точек; присоединение первой информации, указывающей пространство первого субоблака трехмерных точек, к заголовку первого субоблака трехмерных точек; присоединение второй информации, указывающей пространство второго субоблака трехмерных точек, к заголовку второго субоблака трехмерных точек; и кодирование первого субоблака трехмерных точек и второго субоблака трехмерных точек таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга.
[0014] Соответственно, способ кодирования трехмерных данных допускает формирование кодированных данных, что позволяет декодировать первое субоблако трехмерных точек и второе субоблако трехмерных точек независимо друг от друга. Как результат, устройство декодирования трехмерных данных может обрабатывать кодированные данные параллельно. Альтернативно, устройство декодирования трехмерных данных может декодировать одно из первого субоблака трехмерных точек и второго субоблака трехмерных точек избирательно. Таким образом, можно уменьшать время обработки в устройстве декодирования трехмерных данных.
[0015] Например, при разделении, N-арная древовидная структура трехмерных точек может разделяться на ветви, включающие в себя первую ветвь, соответствующую первому субоблаку трехмерных точек, и вторую ветвь, соответствующую второму субоблаку трехмерных точек, где N является целым числом, большим или равным 2.
[0016] Например, способ кодирования трехмерных данных дополнительно может включать в себя кодирование информации, указывающей слой, которому принадлежит корень первой ветви, и слой, которому принадлежит корень второй ветви.
[0017] Например, слой, которому принадлежит корень первой ветви, может быть идентичным слою, которому принадлежит корень второй ветви.
[0018] Например, способ кодирования трехмерных данных дополнительно может включать в себя энтропийное кодирование каждого из первого субоблака трехмерных точек и второго субоблака трехмерных точек с использованием различной таблицы кодирования.
[0019] Например, способ кодирования трехмерных данных дополнительно может включать в себя инициализацию таблицы кодирования после энтропийного кодирования первого субоблака трехмерных точек и до энтропийного кодирования второго субоблака трехмерных точек.
[0020] Например, при кодировании первого субоблака трехмерных точек, ссылка на второе субоблако трехмерных точек может запрещаться, и при кодировании второго субоблака трехмерных точек, ссылка на первое субоблако трехмерных точек может запрещаться.
[0021] Например, способ кодирования трехмерных данных дополнительно может включать в себя: кодирование фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, таким образом, что фрагменты геометрической информации первых трехмерных точек и фрагменты геометрической информации вторых трехмерных точек являются декодируемыми независимо друг от друга; и кодирование фрагментов информации атрибутов первых трехмерных точек и фрагментов информации атрибутов вторых трехмерных точек таким образом, что фрагменты информации атрибутов первых трехмерных точек и фрагменты информации атрибутов вторых трехмерных точек являются декодируемыми независимо друг от друга.
[0022] Например, способ кодирования трехмерных данных дополнительно может включать в себя: кодирование одного из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек и фрагментов информации атрибутов вторых трехмерных точек таким образом, что один из (1) фрагментов геометрической информации первых трехмерных точек и фрагментов геометрической информации вторых трехмерных точек и (2) фрагментов информации атрибутов первых трехмерных точек и фрагментов информации атрибутов вторых трехмерных точек являются декодируемыми независимо друг от друга; и кодирование другого из (1) фрагментов геометрической информации первых трехмерных точек и фрагментов геометрической информации вторых трехмерных точек и (2) фрагментов информации атрибутов первых трехмерных точек и фрагментов информации атрибутов вторых трехмерных точек таким образом, что другой из (1) фрагментов геометрической информации первых трехмерных точек и фрагментов геометрической информации вторых трехмерных точек и (2) фрагментов информации атрибутов первых трехмерных точек и фрагментов информации атрибутов вторых трехмерных точек имеют взаимосвязь в виде зависимости друг с другом.
[0023] Например, способ кодирования трехмерных данных дополнительно может включать в себя кодирование флага, указывающего то, кодированы или нет первое субоблако трехмерных точек и второе субоблако трехмерных точек таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга.
[0024] Например, первая информация может указывать максимальные координаты пространства первого субоблака трехмерных точек, и вторая информация может указывать максимальные координаты пространства второго субоблака трехмерных точек.
[0025] Способ декодирования трехмерных данных согласно одному аспекту настоящего раскрытия включает в себя: получение первых кодированных данных и вторых кодированных данных, сформированных посредством кодирования первого субоблака трехмерных точек и второго субоблака трехмерных точек таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга, причем первое субоблако трехмерных точек и второе субоблако трехмерных точек включаются в субоблака трехмерных точек, полученные посредством разделения трехмерных точек, включенных в трехмерные данные; получение первой информации, указывающей пространство первого субоблака трехмерных точек, из заголовка первого субоблака трехмерных точек; получение второй информации, указывающей пространство второго субоблака трехмерных точек, из заголовка второго субоблака трехмерных точек; и восстановление первого субоблака трехмерных точек и второго субоблака трехмерных точек посредством декодирования первых кодированных данных и вторых кодированных данных.
[0026] Соответственно, способ декодирования трехмерных данных допускает обработку первых кодированных данных и вторых кодированных данных параллельно. Альтернативно, устройство декодирования трехмерных данных может декодировать одно из первого субоблака трехмерных точек и второго субоблака трехмерных точек избирательно. Таким образом, можно уменьшать время обработки в устройстве декодирования трехмерных данных.
[0027] Например, первые кодированные данные и вторые кодированные данные могут формироваться посредством кодирования первой ветви, соответствующей первому субоблаку трехмерных точек, и второй ветви, соответствующей второму субоблаку трехмерных точек таким образом, что первая ветвь и вторая ветвь являются декодируемыми независимо друг от друга, причем первая ветвь и вторая ветвь включаются в N-арную древовидную структуру трехмерных точек, где N является целым числом, большим или равным 2.
[0028] Например, способ декодирования трехмерных данных дополнительно может включать в себя декодирование информации, указывающей слой, которому принадлежит корень первой ветви, и слой, которому принадлежит корень второй ветви.
[0029] Например, слой, которому принадлежит корень первой ветви, может быть идентичным слою, которому принадлежит корень второй ветви.
[0030] Например, способ декодирования трехмерных данных дополнительно может включать в себя энтропийное декодирование каждого из первого субоблака трехмерных точек и второго субоблака трехмерных точек с использованием различной таблицы кодирования.
[0031] Например, способ декодирования трехмерных данных дополнительно может включать в себя инициализацию таблицы кодирования после энтропийного декодирования первого субоблака трехмерных точек и до энтропийного декодирования второго субоблака трехмерных точек.
[0032] Например, при декодировании первого субоблака трехмерных точек, можно не ссылаться на второе субоблако трехмерных точек, и при декодировании второго субоблака трехмерных точек, можно не ссылаться на первое субоблако трехмерных точек.
[0033] Например, первые кодированные данные могут включать в себя первые кодированные геометрические данные и первые кодированные данные атрибутов, причем первые кодированные геометрические данные формируются посредством кодирования фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, причем первые кодированные данные атрибутов формируются посредством кодирования фрагментов информации атрибутов первых трехмерных точек, вторые кодированные данные могут включать в себя вторые кодированные геометрические данные и вторые кодированные данные атрибутов, причем вторые кодированные геометрические данные формируются посредством кодирования фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, причем вторые кодированные данные атрибутов формируются посредством кодирования фрагментов информации атрибутов вторых трехмерных точек, первые кодированные геометрические данные и вторые кодированные геометрические данные могут формироваться таким образом, что первые кодированные геометрические данные и вторые кодированные геометрические данные являются декодируемыми независимо друг от друга, и первые кодированные данные атрибутов и вторые кодированные данные атрибутов могут формироваться таким образом, что первые кодированные данные атрибутов и вторые кодированные данные атрибутов являются декодируемыми независимо друг от друга.
[0034] Например, первые кодированные данные и вторые кодированные данные могут формироваться посредством кодирования одного из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек, таким образом, что один из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек, являются декодируемыми независимо друг от друга, и один из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек, могут восстанавливаться посредством декодирования первых кодированных данных и вторых кодированных данных; и способ декодирования трехмерных данных дополнительно может включать в себя: получение третьих кодированных данных и четвертых кодированных данных, сформированных посредством кодирования другого из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек, таким образом, что другой из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек, имеют взаимосвязь в виде зависимости друг с другом; и восстановление другого из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек, посредством декодирования третьих кодированных данных и четвертых кодированных данных.
[0035] Например, способ декодирования трехмерных данных дополнительно может включать в себя декодирование флага, указывающего то, кодированы или нет первое субоблако трехмерных точек и второе субоблако трехмерных точек таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга.
[0036] Например, первая информация может указывать максимальные координаты пространства первого субоблака трехмерных точек, и вторая информация может указывать максимальные координаты пространства второго субоблака трехмерных точек.
[0037] Устройство кодирования трехмерных данных согласно одному аспекту настоящего раскрытия включает в себя процессор и запоминающее устройство. С использованием запоминающего устройства, процессор: разделяет трехмерные точки, включенные в трехмерные данные, на субоблака трехмерных точек, включающие в себя первое субоблако трехмерных точек и второе субоблако трехмерных точек; присоединяет первую информацию, указывающую пространство первого субоблака трехмерных точек, к заголовку первого субоблака трехмерных точек; присоединяет вторую информацию, указывающую пространство второго субоблака трехмерных точек, к заголовку второго субоблака трехмерных точек; и кодирует первое субоблако трехмерных точек и второе субоблако трехмерных точек таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга.
[0038] Соответственно, устройство кодирования трехмерных данных может формировать кодированные данные, что позволяет декодировать первое субоблако трехмерных точек и второе субоблако трехмерных точек независимо друг от друга. Как результат, устройство декодирования трехмерных данных может обрабатывать кодированные данные параллельно. Альтернативно, устройство декодирования трехмерных данных может декодировать одно из первого субоблака трехмерных точек и второго субоблака трехмерных точек избирательно. Таким образом, можно уменьшать время обработки в устройстве декодирования трехмерных данных.
[0039] Устройство декодирования трехмерных данных согласно одному аспекту настоящего раскрытия включает в себя процессор и запоминающее устройство. С использованием запоминающего устройства, процессор: получает первые кодированные данные и вторые кодированные данные, сформированные посредством кодирования первого субоблака трехмерных точек и второго субоблака трехмерных точек таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга, причем первое субоблако трехмерных точек и второе субоблако трехмерных точек включаются в субоблака трехмерных точек, полученные посредством разделения трехмерных точек, включенных в трехмерные данные; получает первую информацию, указывающую пространство первого субоблака трехмерных точек, из заголовка первого субоблака трехмерных точек; получает вторую информацию, указывающую пространство второго субоблака трехмерных точек, из заголовка второго субоблака трехмерных точек; и восстанавливает первое субоблако трехмерных точек и второе субоблако трехмерных точек посредством декодирования первых кодированных данных и вторых кодированных данных.
[0040] Соответственно, устройство декодирования трехмерных данных может обрабатывать первые кодированные данные и вторые кодированные данные параллельно. Альтернативно, устройство декодирования трехмерных данных может декодировать одно из первого субоблака трехмерных точек и второго субоблака трехмерных точек избирательно. Таким образом, можно уменьшать время обработки в устройстве декодирования трехмерных данных.
[0041] Следует отметить, что эти общие или конкретные аспекты могут реализовываться как система, способ, интегральная схема, компьютерная программа или машиночитаемый носитель записи, такой как CD-ROM, либо могут реализовываться как любая комбинация системы, способа, интегральной схемы, компьютерной программы и носителя записи.
[0042] Далее описываются варианты осуществления со ссылкой на чертежи. Следует отметить, что нижеприведенные варианты осуществления показывают примерные варианты осуществления настоящего раскрытия. Числовые значения, формы, материалы, структурные компоненты, компоновка и соединение структурных компонентов, этапы, порядок обработки этапов и т.д., показанных в нижеприведенных вариантах осуществления, представляют собой просто примеры и в силу этого не имеют намерение ограничивать настоящее раскрытие. Из структурных компонентов, описанных в нижеприведенных вариантах осуществления, структурные компоненты, не изложенные ни в одном из независимых пунктов формулы изобретения, которые указывают наиболее обобщенные идеи, описываются как необязательные структурные компоненты.
Вариант 1 осуществления
[0043]
Во-первых, описывается структура данных для кодированных трехмерных данных (в дальнейшем также называемых "кодированными данными") согласно настоящему варианту осуществления. Фиг. 1 является схемой, показывающей структуру кодированных трехмерных данных согласно настоящему варианту осуществления.
[0044] В настоящем варианте осуществления, трехмерное пространство разделяется на пространства (SPC), которые соответствуют изображениям при кодировании движущихся изображений, и трехмерные данные кодируются на основе SPC. Каждое SPC дополнительно разделяется на объемы (VLM), которые соответствуют макроблокам и т.д. при кодировании движущихся изображений, и прогнозирования и преобразования выполняются на основе VLM. Каждый объем включает в себя множество вокселов (VXL), каждый из которых представляет собой минимальную единицу, в которой позиционные координаты ассоциируются. Следует отметить, что прогнозирование представляет собой процесс формирования прогнозирующих трехмерных данных, аналогичных текущей единице обработки, посредством ссылки на другую единицу обработки и кодирования дифференциала между прогнозирующими трехмерными данными и текущей единицей обработки, как и в случае прогнозирований, выполняемых для двумерных изображений. Такое прогнозирование включает в себя не только пространственное прогнозирование, в котором ссылаются на другую единицу прогнозирования, соответствующую идентичному времени, но также и временное прогнозирование, в котором ссылаются на единицу прогнозирования, соответствующую другому времени.
[0045] При кодировании трехмерного пространства, представленного посредством данных точечных групп, таких как облако точек, например, устройство кодирования трехмерных данных (в дальнейшем также называемое "устройством кодирования") кодирует точки в точечной группе или точки, включенные в соответствующие вокселы, совместным способом, в соответствии с размером воксела. Более точные вокселы обеспечивают высокоточное представление трехмерной формы точечной группы, тогда как большие вокселы обеспечивают приблизительное представление трехмерной формы точечной группы.
[0046] Следует отметить, что далее описывается случай, в котором трехмерные данные представляют собой облако точек, но трехмерные данные не ограничены облаком точек, и в силу этого могут использоваться трехмерные данные любого формата.
[0047] Также следует отметить, что могут использоваться вокселы с иерархической структурой. В таком случае, когда иерархия включает в себя n уровней, может последовательно указываться то, включается или нет точка дискретизации в (n-1)-ый уровень или его нижние уровни (нижние уровни n-го уровня). Например, когда только n-ый уровень декодируется, и (n-1)-ый уровень или его нижние уровни включают в себя точку дискретизации, n-ый уровень может декодироваться при условии, что точка дискретизации включается в центр воксела на n-ом уровне.
[0048] Кроме того, устройство кодирования получает данные точечных групп, с использованием, например, датчика расстояния, стереокамеры, монокулярной камеры, гироскопического датчика или инерциального датчика.
[0049] Как и в случае кодирования движущихся изображений, каждое SPC классифицируется на одну, по меньшей мере, из трех структур прогнозирования, которые включают в себя: внутреннее SPC (I-SPC), которое является отдельно декодируемым; прогнозирующее SPC (P-SPC), допускающее только однонаправленную ссылку; и двунаправленное SPC (B-SPC), допускающее двунаправленные ссылки. Каждое SPC включает в себя два типа информации времени: время декодирования и время отображения.
[0050] Кроме того, как показано на фиг. 1, единица обработки, которая включает в себя множество SPC, представляет собой группу пространств (GOS), которая представляет собой единицу произвольного доступа. Кроме того, единица обработки, которая включает в себя множество GOS, представляет собой мир (WLD).
[0051] Пространственная область, занимаемая посредством каждого мира, ассоциирована с абсолютной позицией на земле, посредством использования, например, GPS или информации широты и долготы. Такая информация позиции сохраняется в качестве метаинформации. Следует отметить, что метаинформация может быть включена в кодированные данные или может передаваться отдельно от кодированных данных.
[0052] Кроме того, в GOS все SPC могут быть трехмерно смежными друг с другом, либо может быть предусмотрено SPC, которое не является трехмерно смежным с другим SPC.
[0053] Следует отметить, что далее также описываются такие процессы, как кодирование, декодирование и ссылка, которые должны выполняться для трехмерных данных, включенных в единицы обработки, такие как GOS, SPC и VLM, просто как выполнение кодирования/кодировать, декодирования/декодировать, ссылки и т.д. для единицы обработки. Также следует отметить, что трехмерные данные, включенные в единицу обработки, включают в себя, например, по меньшей мере, одну пару из пространственной позиции, такой как трехмерные координаты, и значения атрибута, такого как цветовая информация.
[0054] Далее описываются структуры прогнозирования для SPC в GOS. Множество SPC в идентичной GOS или множество VLM в идентичном SPC занимают взаимно различные пространства, при наличии идентичной информации времени (времени декодирования и времени отображения).
[0055] SPC в GOS, которая идет первой в порядке декодирования, представляет собой I-SPC. GOS имеют два типа: закрытая GOS и открытая GOS. Закрытая GOS представляет собой GOS, в которой все SPC в GOS являются декодируемыми, когда декодирование начинается с первого I-SPC. Между тем, открытая GOS представляет собой GOS, в которой ссылаются на другую GOS в одном или более SPC, предшествующих первому I-SPC в GOS по времени отображения, и в силу этого не может отдельно декодироваться.
[0056] Следует отметить, что в случае кодированных данных картографической информации, например, WLD иногда декодируется в обратном направлении, которое является противоположным порядку кодирования, и в силу этого обратное воспроизведение является затруднительным, когда GOS являются взаимозависимыми. В таком случае, по существу используется закрытая GOS.
[0057] Каждая GOS имеет многослойную структуру в направлении высоты, и SPC последовательно кодируются или декодируются из SPC в нижнем слое.
[0058] Фиг. 2 является схемой, показывающей пример структур прогнозирования для SPC, которые принадлежат крайнему нижнему слою в GOS. Фиг. 3 является схемой, показывающей пример структур прогнозирования для слоев.
[0059] GOS включает в себя, по меньшей мере, одно I-SPC. Из объектов в трехмерном пространстве, таких как человек, животное, автомобиль, велосипед, светофор и здание, служащих в качестве ориентира, объект небольшого размера является особенно эффективным при кодировании в качестве I-SPC. При декодировании GOS с низкой пропускной способностью или на высокой скорости, например, устройство декодирования трехмерных данных (в дальнейшем также называемое "устройством декодирования") декодирует только I-SPC в GOS.
[0060] Устройство кодирования также может изменять интервал кодирования или частоту возникновения I-SPC, в зависимости от степени разреженности и сплошности объектов в WLD.
[0061] В структуре, показанной на фиг. 3, устройство кодирования или устройство декодирования кодирует или декодирует множество слоев последовательно с нижнего слоя (слоя 1). Это увеличивает приоритет данных по земле и около нее, которые заключают в себе больший объем информации, когда, например, рассматривается беспилотный автомобиль.
[0062] Относительно кодированных данных, используемых для беспилотного аппарата, например, кодирование или декодирование может выполняться последовательно из SPC в верхнем слое в GOS в направлении высоты.
[0063] Устройство кодирования или устройство декодирования также может кодировать или декодировать множество слоев таким способом, что устройство декодирования может иметь приблизительное понимание GOS сначала, и затем разрешение постепенно увеличивается. Устройство кодирования или устройство декодирования, например, может выполнять кодирование или декодирование в порядке слоев 3, 8, 1, 9, ...,.
[0064] Далее описывается обработка статических объектов и динамических объектов.
[0065] Трехмерное пространство включает в себя сцены или неподвижные объекты, такие как здание и дорога (далее совместно называемые "статическими объектами"), и объекты с движением, такие как автомобиль и человек (далее совместно называемые "динамическими объектами"). Обнаружение объектов отдельно выполняется, например, посредством извлечения ключевых точек из данных облаков точек или из видео камеры, такой как стереокамера. В этом описании, в дальнейшем описывается примерный способ кодирования динамического объекта.
[0066] Первый способ представляет собой способ, в котором статический объект и динамический объект кодируются без различения. Второй способ представляет собой способ, в котором проводится различение между статическим объектом и динамическим объектом на основе идентификационной информации.
[0067] Например, GOS используется в качестве единицы идентификации. В таком случае, проводится различение между GOS, которая включает в себя SPC, составляющие статический объект, и GOS, которая включает в себя SPC, составляющие динамический объект, на основе идентификационной информации, сохраненной в кодированных данных или сохраненной отдельно от кодированных данных.
[0068] Альтернативно, SPC может использоваться в качестве единицы идентификации. В таком случае, проводится различение между SPC, которое включает в себя VLM, составляющие статический объект, и SPC, которое включает в себя VLM, составляющие динамический объект, на основе такой описанной идентификационной информации.
[0069] Альтернативно, VLM или VXL могут использоваться в качестве единицы идентификации. В таком случае, проводится различение между VLM или VXL, который включает в себя статический объект, и VLM или VXL, который включает в себя динамический объект, на основе такой описанной идентификационной информации.
[0070] Устройство кодирования также может кодировать динамический объект в качестве, по меньшей мере, одного VLM или SPC и может кодировать VLM или SPC, включающее в себя статический объект, и SPC, включающее в себя динамический объект, в качестве взаимно различных GOS. Когда GOS-размер является переменным в зависимости от размера динамического объекта, устройство кодирования отдельно сохраняет GOS-размер в качестве метаинформации.
[0071] Устройство кодирования также может кодировать статический объект и динамический объект отдельно друг от друга и может накладывать динамический объект на мир, состоящий из статических объектов. В таком случае, динамический объект состоит, по меньшей мере, из одного SPC, и каждое SPC ассоциировано, по меньшей мере, с одним SPC, составляющим статический объект, на который должно накладываться каждое SPC. Следует отметить, что динамический объект может представляться не посредством SPC, а посредством, по меньшей мере, одного VLM или VXL.
[0072] Устройство кодирования также может кодировать статический объект и динамический объект в качестве взаимно различных потоков.
[0073] Устройство кодирования также может формировать GOS, которая включает в себя, по меньшей мере, одно SPC, составляющее динамический объект. Устройство кодирования дополнительно может задавать размер GOS, включающей в себя динамический объект (GOS_M), и размер GOS, включающей в себя статический объект, соответствующий пространственной области GOS_M, равными идентичному размеру (так что идентичная пространственная область является занятой). Это обеспечивает возможность выполнения наложения на основе GOS.
[0074] На SPC, включенное в другую кодированную GOS, можно ссылаться в P-SPC или B-SPC, составляющем динамический объект. В случае если позиция динамического объекта временно изменяется, и идентичный динамический объект кодируется как объект в GOS, соответствующей другому времени, ссылка на SPC по GOS является эффективной с точки зрения коэффициента сжатия.
[0075] Первый способ и второй способ могут выбираться в соответствии с надлежащим использованием кодированных данных. Когда кодированные трехмерные данные используются в качестве карты, например, динамический объект должен разделяться, и в силу этого устройство кодирования использует второй способ. Между тем, устройство кодирования использует первый способ, когда разделение динамического объекта не требуется, к примеру, в случае если кодируются трехмерные данные события, такие как концерт и спортивные соревнования.
[0076] Время декодирования и время отображения GOS или SPC могут храниться в кодированных данных или в качестве метаинформации. Все статические объекты могут иметь идентичную информацию времени. В таком случае, устройство декодирования может определять фактическое время декодирования и время отображения. Альтернативно, другое значение может назначаться каждой GOS или SPC в качестве времени декодирования, и идентичное значение может быть назначено в качестве времени отображения. Кроме того, как и в случае модели декодера при кодировании движущихся изображений, такого как гипотетический опорный декодер (HRD), совместимый с HEVC, может использоваться модель, которая обеспечивает то, что декодер может выполнять декодирование бесперебойно за счет наличия буфера предварительно определенного размера и посредством считывания потока битов с предварительно определенной скоростью передачи битов в соответствии с временами декодирования.
[0077] Далее описывается топология GOS в мире. Координаты трехмерного пространства в мире представляются посредством трех осей координат (оси X, оси Y и оси Z), которые являются ортогональными друг к другу. Предварительно определенный набор правил для порядка кодирования GOS обеспечивает возможность выполнения кодирования таким образом, что пространственно смежные GOS являются смежными в кодированных данных. В примере, показанном на фиг. 4, например, GOS в плоскостях X и Z последовательно кодируются. После завершения кодирования всех GOS в определенных плоскостях X и Z, значение оси Y обновляется. Другими словами, мир расширяется в направлении по оси Y по мере того, как кодирование продолжается. Числовые GOS-индексы задаются в соответствии с порядком кодирования.
[0078] Здесь, трехмерные пространства в соответствующих мирах заранее ассоциированы "один-к-одному" с абсолютными географическими координатами, такими как GPS-координаты или координаты по широте/долготе. Альтернативно, каждое трехмерное пространство может представляться как позиция относительно заранее заданной опорной позиции. Направления оси X, оси Y и оси Z в трехмерном пространстве представляются посредством направленных векторов, которые определяются на основе широт и долгот и т.д. Такие направленные векторы сохраняются вместе с кодированными данными в качестве метаинформации.
[0079] GOS имеют фиксированный размер, и устройство кодирования сохраняет такой размер в качестве метаинформации. GOS-размер может изменяться, например, в зависимости от того, это городской район или нет, либо того, это внутри или снаружи помещения. Другими словами, GOS-размер может изменяться в соответствии с количеством или атрибутами объектов с информационными значениями. Альтернативно, в идентичном мире, устройство кодирования может адаптивно изменять GOS-размер или интервал между I-SPC в GOS в соответствии с плотностью объектов и т.д. Например, устройство кодирования задает GOS-размер как меньший, а интервал между I-SPC в GOS как более короткий, по мере того, как плотность объектов становится более высокой.
[0080] В примере, показанном на фиг. 5, чтобы обеспечивать произвольный доступ с большей степенью детализации, GOS с высокой плотностью объектов сегментируется на области третьей-десятой GOS. Следует отметить, что седьмая-десятая GOS расположены после третьей-шестой GOS.
[0081] Далее описываются структура и последовательность операций устройства кодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 6 является блок-схемой устройства 100 кодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 7 является блок-схемой последовательности операций способа примерной операции, выполняемой посредством устройства 100 кодирования трехмерных данных.
[0082] Устройство 100 кодирования трехмерных данных, показанное на фиг. 6, кодирует трехмерные данные 111, за счет этого формируя кодированные трехмерные данные 112. Такое устройство 100 кодирования трехмерных данных включает в себя модуль 101 получения, модуль 102 определения областей кодирования, модуль 103 разделения и кодер 104.
[0083] Как показано на фиг. 7, во-первых, модуль 101 получения получает трехмерные данные 111, которые представляют собой данные точечных групп (S101).
[0084] Затем, модуль 102 определения областей кодирования определяет текущую область для кодирования из числа пространственных областей, соответствующих полученным данным точечных групп (S102). Например, в соответствии с позицией пользователя или транспортного средства, модуль 102 определения областей кодирования определяет, в качестве текущей области, пространственную область около такой позиции.
[0085] Затем, модуль 103 разделения разделяет данные точечных групп, включенные в текущую область, на единицы обработки. Единицы обработки здесь означают такие единицы, как GOS и SPC, описанные выше. Текущая область здесь соответствует, например, миру, описанному выше. Более конкретно, модуль 103 разделения разделяет данные точечных групп на единицы обработки на основе предварительно определенного GOS-размера или присутствия/отсутствия/размера динамического объекта (S103). Модуль 103 разделения дополнительно определяет начальную позицию SPC, которое идет первым в порядке кодирования в каждой GOS.
[0086] Затем, кодер 104 последовательно кодирует множество SPC в каждой GOS, за счет этого формируя кодированные трехмерные данные 112 (S104).
[0087] Следует отметить, что, хотя здесь описывается пример, в котором текущая область разделяется на GOS и SPC, после чего каждая GOS кодируется, этапы обработки не ограничены этим порядком. Например, могут использоваться этапы, в которых определяется структура одного GO, после чего выполняется кодирование такой GOS, и затем определяется структура последующей GOS.
[0088] Таким образом, как описано выше, устройство 100 кодирования трехмерных данных кодирует трехмерные данные 111, за счет этого формируя кодированные трехмерные данные 112. Более конкретно, устройство 100 кодирования трехмерных данных разделяет трехмерные данные на первые единицы обработки (GOS), причем каждая из них представляет собой единицу произвольного доступа и ассоциирована с трехмерными координатами, разделяет каждую из первых единиц обработки (GOS) на вторые единицы обработки (SPC) и разделяет каждую из вторых единиц обработки (SPC) на третьи единицы обработки (VLM). Каждая из третьих единиц обработки (VLM) включает в себя, по меньшей мере, один воксел (VXL), который представляет собой минимальную единицу, в которой информация позиции ассоциирована.
[0089] Затем, устройство 100 кодирования трехмерных данных кодирует каждую из первых единиц обработки (GOS), за счет этого формируя кодированные трехмерные данные 112. Более конкретно, устройство 100 кодирования трехмерных данных кодирует каждую из вторых единиц обработки (SPC) в каждой из первых единиц обработки (GOS). Устройство 100 кодирования трехмерных данных дополнительно кодирует каждую из третьих единиц обработки (VLM) в каждой из вторых единиц обработки (SPC).
[0090] Когда текущая первая единица обработки (GOS) представляет собой закрытую GOS, например, устройство 100 кодирования трехмерных данных кодирует текущую вторую единицу обработки (SPC), включенную в такую текущую первую единицу обработки (GOS), посредством ссылки на другую вторую единицу обработки (SPC), включенную в текущую первую единицу обработки (GOS). Другими словами, устройство 100 кодирования трехмерных данных не ссылается на вторую единицу обработки (SPC), включенную в первую единицу обработки (GOS), которая отличается от текущей первой единицы обработки (GOS).
[0091] Между тем, когда текущая первая единица обработки (GOS) представляет собой открытую GOS, устройство 100 кодирования трехмерных данных кодирует текущую вторую единицу обработки (SPC), включенную в такую текущую первую единицу обработки (GOS), посредством ссылки на другую вторую единицу обработки (SPC), включенную в текущую первую единицу обработки (GOS), или на вторую единицу обработки (SPC), включенную в первую единицу обработки (GOS), которая отличается от текущей первой единицы обработки (GOS).
[0092] Кроме того, устройство 100 кодирования трехмерных данных выбирает, в качестве типа текущей второй единицы обработки (SPC), одно из следующего: первый тип (I-SPC), в котором не ссылаются на другую вторую единицу обработки (SPC); второй тип (P-SPC), в котором ссылаются на другую одну вторую единицу обработки (SPC); и третий тип, в котором ссылаются на другие две вторых единицы обработки (SPC). Устройство 100 кодирования трехмерных данных кодирует текущую вторую единицу обработки (SPC) в соответствии с выбранным типом.
[0093] Далее описываются структура и последовательность операций устройства декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 8 является блок-схемой устройства 200 декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 9 является блок-схемой последовательности операций способа примерной операции, выполняемой посредством устройства 200 декодирования трехмерных данных.
[0094] Устройство 200 декодирования трехмерных данных, показанное на фиг. 8, декодирует кодированные трехмерные данные 211, за счет этого формируя декодированные трехмерные данные 212. Кодированные трехмерные данные 211 здесь, например, представляют собой кодированные трехмерные данные 112, сформированные посредством устройства 100 кодирования трехмерных данных. Такое устройство 200 декодирования трехмерных данных включает в себя модуль 201 получения, модуль 202 определения GOS для начала декодирования, модуль 203 определения SPC для декодирования и декодер 204.
[0095] Во-первых, модуль 201 получения получает кодированные трехмерные данные 211 (S201). Затем, модуль 202 определения GOS для начала декодирования определяет текущую GOS для декодирования (S202). Более конкретно, модуль 202 определения GOS для начала декодирования ссылается на метаинформацию, сохраненную в кодированных трехмерных данных 211 или сохраненную отдельно от кодированных трехмерных данных, чтобы определять, в качестве текущей GOS, GOS, которая включает в себя SPC, соответствующее пространственной позиции, объекту или времени, с которого должно начинаться декодирование.
[0096] Затем, модуль 203 определения SPC для декодирования определяет тип(ы) (I-, P- и/или B-) SPC, которые должны декодироваться в GOS (S203). Например, модуль 203 определения SPC для декодирования определяет то, следует (1) декодировать только I-SPC, (2) декодировать I-SPC и P-SPC или (3) декодировать SPC всех типов. Следует отметить, что настоящий этап может не выполняться, когда тип(ы) SPC, которые должны декодироваться, заранее определяются, к примеру, когда заранее определяются все SPC, которые должны декодироваться.
[0097] Далее декодер 204 получает местоположение адреса в кодированных трехмерных данных 211, с которого начинается SPC, которое идет первым в GOS в порядке декодирования (идентичном порядку кодирования). Декодер 204 получает кодированные данные первого SPC из местоположения адреса и последовательно декодирует SPC с такого первого SPC (S204). Следует отметить, что местоположение адреса сохраняется в метаинформации и т.д.
[0098] Устройство 200 декодирования трехмерных данных декодирует декодированные трехмерные данные 212 таким образом, как описано выше. Более конкретно, устройство 200 декодирования трехмерных данных декодирует каждые кодированные трехмерные данные 211 первых единиц обработки (GOS), причем каждая из них представляет собой единицу произвольного доступа и ассоциирована с трехмерными координатами, за счет этого формируя декодированные трехмерные данные 212 первых единиц обработки (GOS). Еще более конкретно, устройство 200 декодирования трехмерных данных декодирует каждую из вторых единиц обработки (SPC) в каждой из первых единиц обработки (GOS). Устройство 200 декодирования трехмерных данных дополнительно декодирует каждую из третьих единиц обработки (VLM) в каждой из вторых единиц обработки (SPC).
[0099] Далее описывается метаинформация для произвольного доступа. Такая метаинформация формируется посредством устройства 100 кодирования трехмерных данных и включается в кодированные трехмерные данные 112 (211).
[0100] В традиционном произвольном доступе для двумерного движущегося изображения, декодирование начинается с первого кадра в единице произвольного доступа, которая находится близко к указанному времени. Между тем, в дополнение ко временам, произвольный доступ к пространствам (координатам, объектам и т.д.) предположительно должен выполняться в мире.
[0101] Чтобы обеспечивать произвольный доступ, по меньшей мере, к трем элементам координат, объектов и времен, подготавливаются таблицы, которые ассоциируют соответствующие элементы с числовыми GOS-индексами. Кроме того, числовые GOS-индексы ассоциированы с адресами соответствующих первых I-SPC в GOS. Фиг. 10 является схемой, показывающей примерные таблицы, включенные в метаинформацию. Следует отметить, что не все таблицы, показанные на фиг. 10, обязательно должны использоваться, и в силу этого используется, по меньшей мере, одна из таблиц.
[0102] Далее описывается пример, в котором произвольный доступ выполняется из координат в качестве начальной точки. Чтобы осуществлять доступ к координатам (x2, y2 и z2), сначала ссылаются на таблицу координат и GOS, которая указывает то, что точка, соответствующая координатам (x2, y2 и z2), включается во вторую GOS. Затем ссылаются на таблицу GOS и адресов, которая указывает то, что адрес первого I-SPC во второй GOS представляет собой addr(2). В связи с этим, декодер 204 получает данные из этого адреса, чтобы начинать декодирование.
[0103] Следует отметить, что адреса могут или представлять собой логические адреса либо физические адреса HDD или запоминающего устройства. Альтернативно, информация, которая идентифицирует сегменты файлов, может использоваться вместо адресов. Сегменты файлов, например, представляют собой единицы, полученные посредством сегментации, по меньшей мере, одной GOS и т.д.
[0104] Когда объект охватывает множество GOS, таблица объектов и GOS может показывать множество GOS, которым принадлежит такой объект. Когда такое множество GOS представляют собой закрытые GOS, устройство кодирования и устройство декодирования могут выполнять кодирование или декодирование параллельно. Между тем, когда такое множество GOS представляют собой открытые GOS, более высокая эффективность сжатия достигается посредством множества GOS, ссылающихся друг на друга.
[0105] Примерные объекты включают в себя человека, животное, автомобиль, велосипед, светофор и здание, служащие в качестве ориентира. Например, устройство 100 кодирования трехмерных данных извлекает ключевые точки, конкретные для объекта, из облака трехмерных точек и т.д., при кодировании мира, и обнаруживает объект на основе таких ключевых точек, чтобы задавать обнаруженный объект в качестве точки произвольного доступа.
[0106] Таким образом, как описано выше, устройство 100 кодирования трехмерных данных формирует первую информацию, указывающую множество первых единиц обработки (GOS) и трехмерные координаты, ассоциированные с соответствующими первыми единицами обработки (GOS). Кодированные трехмерные данные 112 (211) включают в себя такую первую информацию. Первая информация дополнительно указывает, по меньшей мере, одно из объектов, времен и местоположений хранения данных, которые ассоциированы с соответствующими первыми единицами обработки (GOS).
[0107] Устройство 200 декодирования трехмерных данных получает первую информацию из кодированных трехмерных данных 211. С использованием такой первой информации, устройство 200 декодирования трехмерных данных идентифицирует кодированные трехмерные данные 211 первой единицы обработки, которая соответствует указанным трехмерным координатам, объекту или времени, и декодирует кодированные трехмерные данные 211.
[0108] Далее описывается пример другой метаинформации. В дополнение к метаинформации для произвольного доступа, устройство 100 кодирования трехмерных данных также может формировать и сохранять метаинформацию, как описано ниже, и устройство 200 декодирования трехмерных данных может использовать такую метаинформацию во время декодирования.
[0109] Когда трехмерные данные используются в качестве картографической информации, например, профиль задается в соответствии с надлежащим использованием, и информация, указывающая такой профиль, может быть включена в метаинформацию. Например, профиль задается для городского или пригородного района либо для летающего объекта, и максимальный или минимальный размер и т.д. мира, SPC или VLM и т.д. задается в каждом профиле. Например, более подробная информация требуется для городского района, чем для пригородного района, и в силу этого минимальный VLM-размер задается небольшим.
[0110] Метаинформация может включать в себя значения тега, указывающие типы объектов. Каждое из таких значений тега ассоциировано с VLM, SPC или GOS, которые составляют объект. Например, значение тега может задаваться для каждого типа объекта таким образом, например, что значение тега "0" указывает "человека", значение тега "1" указывает "автомобиль", и значение тега "2" указывает "светофор". Альтернативно, когда трудно проводить оценку типа объекта, либо такое проведение оценки не требуется, может использоваться значение тега, которое указывает размер или атрибут, указывающий, например, то, представляет объект собой динамический объект или статический объект.
[0111] Метаинформация также может включать в себя информацию, указывающую диапазон пространственной области, занимаемой посредством мира.
[0112] Метаинформация также может сохранять SPC- или VXL-размер в качестве информации заголовка, общей для целого потока кодированных данных или для множества SPC, таких как SPC в GOS.
[0113] Метаинформация также может включать в себя идентификационную информацию по датчику расстояния или камере, которая использована для того, чтобы формировать облако точек, или информацию, указывающую точность позиционирования точечной группы в облаке точек.
[0114] Метаинформация также может включать в себя информацию, указывающую то, мир состоит только из статических объектов или включает в себя динамический объект.
[0115] Далее описываются варьирования настоящего варианта осуществления.
[0116] Устройство кодирования или устройство декодирования может кодировать или декодировать два или более взаимно различных SPC или GOS параллельно. GOS, которые должны кодироваться или декодироваться параллельно, могут определяться на основе метаинформации и т.д., указывающей пространственные позиции GOS.
[0117] Когда трехмерные данные используются в качестве пространственной карты для использования посредством автомобиля или летающего объекта и т.д. при движении или для создания такой пространственной карты, например, устройство кодирования или устройство декодирования может кодировать или декодировать GOS или SPC, включенные в пространство, которое идентифицируется на основе GPS-информации, информации маршрута, увеличения масштаба и т.д.
[0118] Устройство декодирования может также начинать декодирование последовательно из пространства, которое находится близко к собственному местоположению или маршруту движения. Устройство кодирования или устройство декодирования может отдавать более низкий приоритет пространству, удаленному от собственного местоположения или маршрута движения, чем приоритет близлежащего пространства, чтобы кодировать или декодировать такое удаленное пространство. "Отдавать более низкий приоритет" означает здесь, например, понижение приоритета в последовательности обработки, снижение разрешения (применение прореживания в обработке) или понижение качества изображений (увеличение эффективности кодирования, например, посредством задания шага квантования большим).
[0119] При декодировании кодированных данных, которые иерархически кодируются в пространстве, устройство декодирования может декодировать только нижний уровень в иерархии.
[0120] Устройство декодирования также может начинать декодирование предпочтительно с нижнего уровня иерархии в соответствии с увеличением масштаба или надлежащим использованием карты.
[0121] Для оценки собственного местоположения или распознавания объектов и т.д., участвующих в беспилотном вождении автомобиля или робота, устройство кодирования или устройство декодирования может кодировать или декодировать области с более низком разрешением, за исключением области, которая находится ниже или на заданной высоте от земли (области, которая должна распознаваться).
[0122] Устройство кодирования также может кодировать облака точек, представляющие пространственные формы внутренней части помещения и наружной части помещения, отдельно. Например, разделение GOS, представляющей внутреннюю часть помещения (внутренней GOS), и GOS, представляющей наружную часть помещения (наружной GOS), обеспечивает возможность устройству декодирования выбирать GOS, которая должна декодироваться, в соответствии с местоположением точки обзора, при использовании кодированных данных.
[0123] Устройство кодирования также может кодировать внутреннюю GOS и наружную GOS, имеющие близкие координаты, так что такие GOS приближаются друг к другу в кодированном потоке. Например, устройство кодирования ассоциирует идентификаторы таких GOS друг с другом и сохраняет информацию, указывающую ассоциированные идентификаторы, в метаинформации, которая сохраняется в кодированном потоке или сохраняется отдельно. Это обеспечивает возможность устройству декодирования ссылаться на информацию в метаинформации, чтобы идентифицировать внутреннюю GOS и наружную GOS, имеющие близкие координаты.
[0124] Устройство кодирования также может изменять GOS-размер или SPC-размер в зависимости от того, представляет GOS собой внутреннюю GOS или наружную GOS. Например, устройство кодирования задает размер внутренней GOS меньшим размера наружной GOS. Устройство кодирования также может изменять точность извлечения ключевых точек из облака точек или точность обнаружения объектов, например, в зависимости от того, представляет GOS собой внутреннюю GOS или наружную GOS.
[0125] Устройство кодирования также может добавлять, в кодированные данные, информацию, посредством которой устройство декодирования отображает объекты с различением между динамическим объектом и статическим объектом. Это обеспечивает возможность устройству декодирования отображать динамический объект, например, вместе с красным полем или буквами для пояснения. Следует отметить, что устройство декодирования может отображать только красное поле или буквы для пояснения вместо динамического объекта. Устройство декодирования также может отображать более конкретные типы объектов. Например, красное поле может использоваться для автомобиля, а желтое поле может использоваться для человека.
[0126] Устройство кодирования или устройство декодирования также может определять то, следует либо нет кодировать или декодировать динамический объект и статический объект в качестве другого SPC или GOS, в соответствии, например, с частотой возникновения динамических объектов или соотношением между статическими объектами и динамическими объектами. Например, когда частота возникновения или соотношение динамических объектов превышают пороговое значение, SPC или GOS, включающая в себя смесь динамического объекта и статического объекта, принимается, тогда как когда частота возникновения или соотношение динамических объектов составляет ниже порогового значения, SPC или GOS, включающая в себя смесь динамического объекта и статического объекта, не принимается.
[0127] При обнаружении динамического объекта не из облака точек, а из информации двумерных изображений камеры, устройство кодирования может отдельно получать информацию для идентификации результата обнаружения (поле или буквы) и позицию объекта и кодировать эти элементы информации в качестве части кодированных трехмерных данных. В таком случае, устройство декодирования накладывает вспомогательную информацию (поле или буквы), указывающую динамический объект, на результант декодирования статического объекта, чтобы отображать его.
[0128] Устройство кодирования также может изменять разреженность и сплошность VXL или VLM в SPC в соответствии со степенью сложности формы статического объекта. Например, устройство кодирования задает VXL или VLM с более высокой плотностью по мере того, как форма статического объекта становится более сложной. Устройство кодирования дополнительно может определять шаг квантования и т.д. для квантования пространственных позиций или цветовой информации в соответствии с разреженностью и сплошностью VXL или VLM. Например, устройство кодирования задает шаг квантования как меньший по мере того, как плотность VXL или VLM становится более высокой.
[0129] Как описано выше, устройство кодирования или устройство декодирования согласно настоящему варианту осуществления кодирует или декодирует пространство на основе SPC, которое включает в себя координатную информацию.
[0130] Кроме того, устройство кодирования и устройство декодирования выполняют кодирование или декодирование на основе объема в SPC. Каждый объем включает в себя воксел, который представляет собой минимальную единицу, в которой информация позиции ассоциирована.
[0131] Кроме того, с использованием таблицы, которая ассоциирует соответствующие элементы пространственной информации, включающей в себя координаты, объекты и времена, с GOS, либо с использованием таблицы, которая ассоциирует эти элементы друг с другом, устройство кодирования и устройство декодирования ассоциируют любые элементы друг с другом, чтобы выполнять кодирование или декодирование. Устройство декодирования использует значения выбранных элементов, чтобы определять координаты, и идентифицирует объем, воксел или SPC из таких координат, чтобы декодировать SPC, включающее в себя такой объем или воксел, или идентифицированное SPC.
[0132] Кроме того, устройство кодирования определяет объем, воксел или SPC, которое может выбираться в соответствии с элементами, через извлечение ключевых точек и распознавание объектов и кодирует определенный объем, воксел или SPC, в качестве объема, воксела или SPC, для которого является возможным произвольный доступ.
[0133] SPC классифицируются на три типа: I-SPC, которое является отдельно кодируемым или декодируемым; P-SPC, которое кодируется или декодируется посредством ссылки на любое из обработанных SPC; и B-SPC, которое кодируется или декодируется посредством ссылки на любые два из обработанных SPC.
[0134] По меньшей мере, один объем соответствует статическому объекту или динамическому объекту. SPC, включающее в себя статический объект, и SPC, включающее в себя динамический объект, кодируются или декодируются в качестве взаимно различных GOS. Другими словами, SPC, включающее в себя статический объект, и SPC, включающее в себя динамический объект, назначаются различным GOS.
[0135] Динамические объекты кодируются или декодируются на основе объекта и ассоциированы, по меньшей мере, с одним SPC, включающим в себя статический объект. Другими словами, множество динамических объектов отдельно кодируются, и полученные кодированные данные динамических объектов ассоциированы с SPC, включающим в себя статический объект.
[0136] Устройство кодирования и устройство декодирования отдают увеличенный приоритет I-SPC в GOS, чтобы выполнять кодирование или декодирование. Например, устройство кодирования выполняет кодирование таким способом, который предотвращает ухудшение характеристик I-SPC (таким способом, который обеспечивает воспроизведение исходных трехмерных данных с более высокой точностью воспроизведения после декодирования). Устройство декодирования декодирует, например, только I-SPC.
[0137] Устройство кодирования может изменять частоту использования I-SPC в зависимости от разреженности и сплошности или числа (количества) объектов в мире, чтобы выполнять кодирование. Другими словами, устройство кодирования изменяет частоту выбора I-SPC в зависимости от числа или разреженности и сплошности объектов, включенных в трехмерные данные. Например, устройство кодирования использует I-SPC на более высокой частоте по мере того, как плотность объектов в мире становится более высокой.
[0138] Устройство кодирования также задает точки произвольного доступа на основе GOS и сохраняет информацию, указывающую пространственные области, соответствующие GOS, в информации заголовка.
[0139] Устройство кодирования использует, например, значение по умолчанию в качестве пространственного размера GOS. Следует отметить, что устройство кодирования может изменять GOS-размер в зависимости от числа (количества) или разреженности и сплошности объектов или динамических объектов. Например, устройство кодирования задает пространственный размер GOS как меньший по мере того, как плотность объектов или динамических объектов становится более высокой, или число объектов или динамических объектов становится больше.
[0140] Кроме того, каждое SPC или объем включает в себя группу ключевых точек, которая извлекается посредством использования информации, полученной посредством датчика, такого как датчик глубины, гироскопический датчик или датчик с камерой. Координаты ключевых точек задаются в центральных позициях соответствующих вокселов. Кроме того, более точные вокселы предоставляют высокоточную информацию позиции.
[0141] Группа ключевых точек извлекается посредством использования множества изображений. Множество изображений включают в себя, по меньшей мере, два типа информации времени: фактическую информацию времени и идентичную информацию времени, общую для множества изображений, которые ассоциированы с SPC (например, время кодирования, используемое для управления скоростью, и т.д.).
[0142] Кроме того, кодирование или декодирование выполняется на основе GOS, которая включает в себя, по меньшей мере, одно SPC.
[0143] Устройство кодирования и устройство декодирования прогнозируют P-SPC или B-SPC в текущей GOS посредством ссылки на SPC в обработанной GOS.
[0144] Альтернативно, устройство кодирования и устройство декодирования прогнозируют P-SPC или B-SPC в текущей GOS, с использованием обработанных SPC в текущей GOS, без ссылки на другую GOS.
[0145] Кроме того, устройство кодирования и устройство декодирования передают или принимают кодированный поток на основе мира, который включает в себя, по меньшей мере, одну GOS.
[0146] Кроме того, GOS имеет многослойную структуру в одном направлении, по меньшей мере, в мире, и устройство кодирования и устройство декодирования начинают кодирование или декодирование с нижнего слоя. Например, случайная доступная GOS принадлежит крайнему нижнему слою. На GOS, которая принадлежит идентичному слою или нижнему слою, ссылаются в GOS, которая принадлежит верхнему слою. Другими словами, GOS пространственно разделяется в предварительно определенном направлении заранее, чтобы иметь множество слоев, включающих в себя, по меньшей мере, одно SPC. Устройство кодирования и устройство декодирования кодируют или декодируют каждое SPC посредством ссылки на SPC, включенное в слой, идентичный слою каждого SPC, или на SPC, включенное в слой ниже слоя каждого SPC.
[0147] Кроме того, устройство кодирования и устройство декодирования последовательно кодируют или декодируют GOS на основе мира, который включает в себя такие GOS. Таким образом, устройство кодирования и устройство декодирования записывают или считывают информацию, указывающую порядок (направление) кодирования или декодирования, в качестве метаданных. Другими словами, кодированные данные включают в себя информацию, указывающую порядок кодирования множества GOS.
[0148] Устройство кодирования и устройство декодирования также кодируют или декодируют взаимно различные два или более SPC или GOS параллельно.
[0149] Кроме того, устройство кодирования и устройство декодирования кодируют или декодируют пространственную информацию (координаты, размер и т.д.) относительно SPC или GOS.
[0150] Устройство кодирования и устройство декодирования кодируют или декодируют SPC или GOS, включенные в идентифицированное пространство, которое идентифицируется на основе внешней информации относительно собственного местоположения или/и размера области, такой как GPS-информация, информация маршрута или увеличение.
[0151] Устройство кодирования или устройство декодирования отдает более низкий приоритет пространству, удаленному от собственного местоположения, чем приоритет близлежащего пространства, чтобы выполнять кодирование или декодирование.
[0152] Устройство кодирования задает направление в одном из направлений в мире, в соответствии с увеличением или надлежащим использованием, чтобы кодировать GOS, имеющую многослойную структуру в таком направлении. Кроме того, устройство декодирования декодирует GOS, имеющую многослойную структуру в одном из направлений в мире, которое задано в соответствии с увеличением или надлежащим использованием, предпочтительно с нижнего слоя.
[0153] Устройство кодирования изменяет точность извлечения ключевых точек, точность распознавания объектов или размер пространственных областей и т.д., включенных в SPC, в зависимости от того, представляет объект собой внутренний объект или наружный объект. Следует отметить, что устройство кодирования и устройство декодирования кодируют или декодируют внутреннюю GOS и наружную GOS, имеющие близкие координаты, таким способом, что эти GOS приближаются друг к другу в мире, и ассоциирует их идентификаторы друг с другом для кодирования и декодирования.
Вариант 2 осуществления
[0154]
При использовании кодированных данных облака точек в фактическом устройстве или услуге, желательно, если необходимая информация передается/принимается в соответствии с надлежащим использованием, чтобы уменьшать полосу пропускания сети. Тем не менее, отсутствует и такая функциональность в структуре кодирования трехмерных данных, и способ кодирования для нее.
[0155] Настоящий вариант осуществления описывает способ кодирования трехмерных данных и устройство кодирования трехмерных данных для обеспечения функциональности передачи/приема только необходимой информации в кодированных данных облака трехмерных точек в соответствии с надлежащим использованием, а также способ декодирования трехмерных данных и устройство декодирования трехмерных данных для декодирования таких кодированных данных.
[0156] Воксел (VXL) с признаком, большим или равным данного количества, задается как воксел признаков (FVXL), и мир (WLD), состоящий из FVXL, задается как разреженный мир (SWLD). Фиг. 11 является схемой, показывающей примерные структуры разреженного мира и мира. SWLD включает в себя: FGOS, причем каждая из них представляет собой GOS, состоящую из FVXL; FSPC, причем каждое из них представляет собой SPC, состоящее из FVXL; и FVLM, причем каждый из них представляет собой VLM, состоящий из FVXL. Структура данных и структура прогнозирования FGOS, FSPC и FVLM могут быть идентичными структуре данных и структуре прогнозирования GOS, SPC и VLM.
[0157] Признак представляет информацию трехмерной позиции относительно VXL или информацию диапазона видимого света относительно позиции VXL. Большое число признаков обнаруживается, в частности, в углу, на краю и т.д. трехмерного объекта. Более конкретно, такой признак представляет собой трехмерный признак или признак диапазона видимого света, как описано ниже, но может представлять собой любой признак, который представляет информацию позиции, информацию яркости или цветовую информацию и т.д. относительно VXL.
[0158] В качестве трехмерных признаков используются признаки подписи гистограмм ориентаций (SHOT), признаки гистограмм точечных признаков (PFH) или признаки точечных пар (PPF).
[0159] SHOT-признаки получаются посредством разделения периферии VXL и вычисления внутреннего произведения опорной точки и нормального вектора каждой разделенной области, чтобы представлять результат вычисления в качестве гистограммы. SHOT-признаки характеризуются посредством большого числа размерностей и высокоуровневого представления признаков.
[0160] PFH-признаки получаются посредством выбора большого числа двух точечных пар около VXL и вычисления нормального вектора и т.д. из каждых двух точечных пар, чтобы представлять результат вычисления в качестве гистограммы. PFH-признаки представляют собой признаки гистограмм и в силу этого характеризуются посредством устойчивости к в известной степени искажения, а также посредством высокоуровневого представления признаков.
[0161] PPF-признаки получаются посредством использования нормального вектора и т.д. для каждых двух точек VXL. PPF-признаки, для которых используются все VXL, имеют устойчивость к окклюзии.
[0162] В качестве признаков диапазона видимого света, используются масштабно-инвариантное преобразование признаков (SIFT), ускоренные надежные признаки (SURF) или гистограмма ориентированных градиентов (HOG) и т.д., которые используют информацию относительно изображения, такую как информация градиента яркости.
[0163] SWLD формируется посредством вычисления вышеописанных признаков соответствующих VXL в WLD для того, чтобы извлекать FVXL. Здесь, SWLD может обновляться каждый раз, когда обновляется WLD, или может регулярно обновляться после истечения определенного периода времени, независимо от времени, когда обновляется WLD.
[0164] SWLD может формироваться для каждого типа признаков. Например, различные SWLD могут формироваться для соответствующих типов признаков, такие как SWLD1 на основе SHOT-признаков и SWLD2 на основе признаков SIFT, так что SWLD избирательно используются в соответствии с надлежащим использованием. Кроме того, вычисленный признак каждого FVXL может храниться в каждом FVXL в качестве информации признаков.
[0165] Далее описывается использование разреженного мира (SWLD). SWLD включает в себя только вокселы признаков (FVXL), и в силу этого его размер данных меньше, в общем, размера WLD, который включает в себя все VXL.
[0166] В варианте применения, который использует признаки для определенной цели, использование информации относительно SWLD вместо WLD уменьшает время, требуемое для того, чтобы считывать данные с жесткого диска, а также полосу пропускания и время, требуемое для передачи данных по сети. Например, WLD и SWLD хранятся на сервере в качестве картографической информации таким образом, что картографическая информация, которая должна отправляться, выбирается между WLD и SWLD в соответствии с запросом от клиента. Это уменьшает полосу пропускания сети и время, требуемое для передачи данных. Ниже поясняются более конкретные примеры.
[0167] Фиг. 12 и фиг. 13 являются схемами, показывающими примеры использования SWLD и WLD. Как показывает фиг. 12, когда клиент 1, который представляет собой установленное в транспортном средстве устройство, требует картографическую информацию, чтобы использовать ее для определения собственного местоположения, клиент 1 отправляет на сервер запрос на получение картографических данных для оценки собственного местоположения (S301). Сервер отправляет в клиент 1 SWLD в ответ на запрос на получение (S302). Клиент 1 использует принимаемый SWLD для того, чтобы определять собственное местоположение (S303). Таким образом, клиент 1 получает VXL-информацию относительно периферии клиента 1 через различные средства, включающие в себя датчик расстояния, такой как, дальномер, а также стереокамеру и комбинацию множества монокулярных камер. Клиент 1 затем оценивает информацию собственного местоположения из полученной VXL-информации и SWLD. Здесь, информация собственного местоположения включает в себя информацию трехмерной позиции, ориентацию и т.д. клиента 1.
[0168] Как показывает фиг. 13, когда клиент 2, который представляет собой установленное в транспортном средстве устройство, требует картографическую информацию, чтобы использовать ее для рендеринга карты, такой как трехмерная карта, клиент 2 отправляет на сервер запрос на получение картографических данных для рендеринга карт (S311). Сервер отправляет в клиент 2 WLD в ответ на запрос на получение (S312). Клиент 2 использует принимаемый WLD для того, чтобы подготавливать посредством рендеринга карту (S313). Таким образом, клиент 2 использует, например, изображение, которое клиент 2 захватывает посредством камеры для съемки в диапазоне видимого света и т.д., и WLD, полученный из сервера, чтобы создавать изображение для рендеринга, и подготавливает посредством рендеринга такое созданное изображение на экране автомобильной навигационной системы и т.д.
[0169] Как описано выше, сервер отправляет в клиент SWLD, когда признаки соответствующих VXL главным образом требуются, к примеру, в случае оценки собственного местоположения, и отправляет в клиент WLD, когда подробная VXL-информация требуется, к примеру, в случае рендеринга карт. Это обеспечивает возможность эффективной отправки/приема картографических данных.
[0170] Следует отметить, что клиент может проводить самооценку в отношении того, что из SWLD и WLD необходимо, и запрашивать сервер на предмет того, чтобы отправлять SWLD или WLD. Кроме того, сервер может проводить оценку того, что из SWLD и WLD следует отправлять, в соответствии с состоянием клиента или сети.
[0171] Далее описывается способ переключения отправки/приема между разреженным миром (SWLD) и миром (WLD).
[0172] То, следует принимать WLD или SWLD, может переключаться в соответствии с полосой пропускания сети. Фиг. 14 является схемой, показывающей примерную операцию в таком случае. Например, когда используется низкоскоростная сеть, что ограничивает применимую полосу пропускания сети, к примеру, в окружении по стандарту долгосрочного развития (LTE), клиент осуществляет доступ к серверу по низкоскоростной сети (S321) и получает SWLD из сервера в качестве картографической информации (S322). Между тем, когда используется высокоскоростная сеть, которая имеет адекватно широкую полосу пропускания сети, к примеру, в Wi-Fi-окружении, клиент осуществляет доступ к серверу по высокоскоростной сети (S323) и получает WLD из сервера (S324). Это позволяет клиенту получать соответствующую картографическую информацию в соответствии с полосой пропускания сети, которую использует такой клиент.
[0173] Более конкретно, клиент принимает SWLD по LTE-сети на улице и получает WLD по Wi-Fi-сети в закрытом помещении, к примеру, в инфраструктурном объекте. Это позволяет клиенту получать более подробную картографическую информацию относительно окружения в помещениях.
[0174] Как описано выше, клиент может запрашивать WLD или SWLD в соответствии с полосой пропускания сети, которую использует такой клиент. Альтернативно, клиент может отправлять на сервер информацию, указывающую полосу пропускания сети, которую использует такой клиент, и сервер может отправлять в клиент данные (WLD или SWLD), подходящие для такого клиента, в соответствии с информацией. Альтернативно, сервер может идентифицировать полосу пропускания сети, которую использует клиент, и отправлять в клиент данные (WLD или SWLD), подходящие для такого клиента.
[0175] Кроме того, то, следует принимать WLD или SWLD, может переключаться в соответствии со скоростью движения. Фиг. 15 является схемой, показывающей примерную операцию в таком случае. Например, при движении на высокой скорости (S331), клиент принимает SWLD из сервера (S332). Между тем, при движении на низкой скорости (S333), клиент принимает WLD из сервера (S334). Это позволяет клиенту получать картографическую информацию, подходящую для скорости, при уменьшении полосы пропускания сети. Более конкретно, при движении по скоростной автомагистрали, клиент принимает SWLD с небольшим объемом данных, что обеспечивает обновление приблизительной картографической информации с соответствующей скоростью. Между тем, при движении по общей дороге, клиент принимает WLD, который обеспечивает получение более подробной картографической информации.
[0176] Как описано выше, клиент может запрашивать сервер на предмет WLD или SWLD в соответствии со скоростью движения такого клиента. Альтернативно, клиент может отправлять на сервер информацию, указывающую скорость движения такого клиента, и сервер может отправлять в клиент данные (WLD или SWLD), подходящие для такого клиента, в соответствии с информацией. Альтернативно, сервер может идентифицировать скорость движения клиента, чтобы отправлять данные (WLD или SWLD), подходящие для такого клиента.
[0177] Кроме того, клиент может получать, из сервера, SWLD сначала, из которого клиент может получать WLD важной области. Например, при получении картографической информации, клиент сначала получает SWLD для приблизительной картографической информации, из которой клиент сужается до области, в которой такие признаки, как здания, светофоры или люди, появляются на высокой частоте, так что клиент может позднее получать WLD такой суженной области. Это позволяет клиенту получать подробную информацию относительно необходимой области, при уменьшении объема данных, принимаемых из сервера.
[0178] Сервер также может создавать из WLD различные SWLD для соответствующих объектов, и клиент может принимать SWLD в соответствии с надлежащим использованием. Это уменьшает полосу пропускания сети. Например, сервер распознает людей или автомобили в WLD заранее и создает SWLD людей и SWLD автомобилей. Клиент, при желании получать информацию относительно людей около клиента, принимает SWLD людей и, при желании получать информацию относительно автомобилей, принимает SWLD автомобилей. Такие типы SWLD могут отличаться посредством информации (флага или типа и т.д.), добавляемой в заголовок, и т.д.
[0179] Далее описываются структура и последовательность операций устройства кодирования трехмерных данных (например, сервера) согласно настоящему варианту осуществления. Фиг. 16 является блок-схемой устройства 400 кодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 17 является блок-схемой последовательности операций способа для процессов кодирования трехмерных данных, выполняемых посредством устройства 400 кодирования трехмерных данных.
[0180] Устройство 400 кодирования трехмерных данных, показанное на фиг. 16, кодирует входные трехмерные данные 411, за счет этого формируя кодированные трехмерные данные 413 и кодированные трехмерные данные 414, каждые из которых представляют собой кодированный поток. Здесь, кодированные трехмерные данные 413 представляют собой кодированные трехмерные данные, соответствующие WLD, и кодированные трехмерные данные 414 представляют собой кодированные трехмерные данные, соответствующие SWLD. Такое устройство 400 кодирования трехмерных данных включает в себя модуль 401 получения, модуль 402 определения областей кодирования, SWLD-модуль 403 извлечения, WLD-кодер 404 и SWLD-кодер 405.
[0181] Во-первых, как показывает фиг. 17, модуль 401 получения получает входные трехмерные данные 411, которые представляют собой данные точечных групп в трехмерном пространстве (S401).
[0182] Затем, модуль 402 определения областей кодирования определяет текущую пространственную область для кодирования на основе пространственной области, в которой данные облаков точек присутствуют (S402).
[0183] Затем, SWLD-модуль 403 извлечения задает текущую пространственную область в качестве WLD и вычисляет признак из каждого VXL, включенного в WLD. Затем SWLD-модуль 403 извлечения извлекает VXL, имеющие количество признаков, большее или равное предварительно определенному пороговому значению, задает извлеченные VXL в качестве FVXL и добавляет такие FVXL в SWLD, за счет этого формируя извлеченные трехмерные данные 412 (S403). Другими словами, извлеченные трехмерные данные 412, имеющие количество признаков, большее или равное пороговому значению, извлекаются из входных трехмерных данных 411.
[0184] Затем, WLD-кодер 404 кодирует входные трехмерные данные 411, соответствующие WLD, за счет этого формируя кодированные трехмерные данные 413, соответствующие WLD (S404). Таким образом, WLD-кодер 404 добавляет в заголовок кодированных трехмерных данных 413 информацию, которая отличает то, что такие кодированные трехмерные данные 413 представляют собой поток, включающий в себя WLD.
[0185] SWLD-кодер 405 кодирует извлеченные трехмерные данные 412, соответствующие SWLD, за счет этого формируя кодированные трехмерные данные 414, соответствующие SWLD (S405). Таким образом, SWLD-кодер 405 добавляет в заголовок кодированных трехмерных данных 414 информацию, которая отличает то, что такие кодированные трехмерные данные 414 представляют собой поток, включающий в себя SWLD.
[0186] Следует отметить, что процесс формирования кодированных трехмерных данных 413 и процесс формирования кодированных трехмерных данных 414 могут выполняться в обратном порядке. Также следует отметить, что часть или все эти процессы могут выполняться параллельно.
[0187] Параметр "world_type" задается, например, в качестве информации, добавляемой в каждый заголовок кодированных трехмерных данных 413 и кодированных трехмерных данных 414; world_type=0 указывает то, что поток включает в себя WLD, и world_type=1 указывает то, что поток включает в себя SWLD. Увеличенное число значений может дополнительно назначаться, чтобы задавать большее число типов, например, world_type=2. Кроме того, одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 могут включать в себя указанный флаг. Например, кодированным трехмерным данным 414 может назначаться флаг, указывающий то, что такой поток включает в себя SWLD. В таком случае, устройство декодирования может отличать то, представляет такой поток собой поток, включающий в себя WLD, или поток, включающий в себя SWLD, в соответствии с присутствием/отсутствием флага.
[0188] Кроме того, способ кодирования, используемый посредством WLD-кодера 404 для того, чтобы кодировать WLD, может отличаться от способа кодирования, используемого посредством SWLD-кодера 405 для того, чтобы кодировать SWLD.
[0189] Например, данные SWLD прореживаются и в силу этого могут иметь более низкую корреляцию с данными окружения, чем корреляция WLD. По этой причине, из внутреннего прогнозирования и взаимного прогнозирования, взаимное прогнозирование может более предпочтительно выполняться в способе кодирования, используемом для SWLD, чем в способе кодирования, используемом для WLD.
[0190] Кроме того, способ кодирования, используемый для SWLD, и способ кодирования, используемый для WLD, могут представлять трехмерные позиции по-разному. Например, трехмерные координаты могут использоваться для того, чтобы представлять трехмерные позиции FVXL в SWLD, и дерево октантов, описанное ниже, может использоваться для того, чтобы представлять трехмерные позиции в WLD, и наоборот.
[0191] Кроме того, SWLD-кодер 405 выполняет кодирование таким способом, что кодированные трехмерные данные 414 SWLD имеют меньший размер данных, чем размер данных для кодированных трехмерных данных 413 WLD. SWLD может иметь более низкую корреляцию между данными, например, чем корреляция для WLD, как описано выше. Это может приводить к сниженной эффективности кодирования и в силу этого к кодированным трехмерным данным 414, имеющим больший размер данных, чем размер данных для кодированных трехмерных данных 413 WLD. Когда размер данных для результирующих кодированных трехмерных данных 414 превышает размер данных для кодированных трехмерных данных 413 WLD, SWLD-кодер 405 выполняет кодирование снова, чтобы повторно формировать кодированные трехмерные данные 414, имеющие уменьшенный размер данных.
[0192] Например, SWLD-модуль 403 извлечения повторно формирует извлеченные трехмерные данные 412, имеющие сокращенное число ключевых точек, которые должны извлекаться, и SWLD-кодер 405 кодирует такие извлеченные трехмерные данные 412. Альтернативно, SWLD-кодер 405 может выполнять более приблизительное квантование. Более приблизительное квантование достигается, например, посредством округления данных на самом нижнем уровне в структуре в виде дерева октантов, описанной ниже.
[0193] При провале попытки снижать размер данных для кодированных трехмерных данных 414 SWLD до меньше размера данных для кодированных трехмерных данных 413 WLD, SWLD-кодер 405 может не формировать кодированные трехмерные данные 414 SWLD. Альтернативно, кодированные трехмерные данные 413 WLD могут копироваться в качестве кодированных трехмерных данных 414 SWLD. Другими словами, кодированные трехмерные данные 413 WLD могут использоваться как есть в качестве кодированных трехмерных данных 414 SWLD.
[0194] Далее описываются структура и последовательность операций устройства декодирования трехмерных данных (например, клиента) согласно настоящему варианту осуществления. Фиг. 18 является блок-схемой устройства 500 декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 19 является блок-схемой последовательности операций способа для процессов декодирования трехмерных данных, выполняемых посредством устройства 500 декодирования трехмерных данных.
[0195] Устройство 500 декодирования трехмерных данных, показанное на фиг. 18, декодирует кодированные трехмерные данные 511, за счет этого формируя декодированные трехмерные данные 512 или декодированные трехмерные данные 513. Кодированные трехмерные данные 511 здесь, например, представляют собой кодированные трехмерные данные 413 или кодированные трехмерные данные 414, сформированные посредством устройства 400 кодирования трехмерных данных.
[0196] Такое устройство 500 декодирования трехмерных данных включает в себя модуль 501 получения, анализатор 502 заголовков, WLD-декодер 503 и SWLD-декодер 504.
[0197] Во-первых, как показывает фиг. 19, модуль 501 получения получает кодированные трехмерные данные 511 (S501). Затем, анализатор 502 заголовков анализирует заголовок кодированных трехмерных данных 511, чтобы идентифицировать то, представляют кодированные трехмерные данные 511 собой поток, включающий в себя WLD, или поток, включающий в себя SWLD (S502). Например, на вышеописанный параметр world_type ссылаются при выполнении такой идентификации.
[0198] Когда кодированные трехмерные данные 511 представляют собой поток, включающий в себя WLD ("Да" на S503), WLD-декодер 503 декодирует кодированные трехмерные данные 511, за счет этого формируя декодированные трехмерные данные 512 WLD (S504). Между тем, когда кодированные трехмерные данные 511 представляют собой поток, включающий в себя SWLD ("Нет" на S503), SWLD-декодер 504 декодирует кодированные трехмерные данные 511, за счет этого формируя декодированные трехмерные данные 513 SWLD (S505).
[0199] Кроме того, как и в случае устройства кодирования, способ декодирования, используемый посредством WLD-декодера 503 для того, чтобы декодировать WLD, может отличаться от способа декодирования, используемого посредством SWLD-декодера 504 для того, чтобы декодировать SWLD. Например, из внутреннего прогнозирования и взаимного прогнозирования, взаимное прогнозирование может более предпочтительно выполняться в способе декодирования, используемом для SWLD, чем в способе декодирования, используемом для WLD.
[0200] Кроме того, способ декодирования, используемый для SWLD, и способ декодирования, используемый для WLD, могут представлять трехмерные позиции по-разному. Например, трехмерные координаты могут использоваться для того, чтобы представлять трехмерные позиции FVXL в SWLD, и дерево октантов, описанное ниже, может использоваться для того, чтобы представлять трехмерные позиции в WLD, и наоборот.
[0201] Далее описывается представление в виде дерева октантов, которое представляет собой способ представления трехмерных позиций. VXL-данные, включенные в трехмерных данных, преобразуются в структуру в виде дерева октантов перед кодированием. Фиг. 20 является схемой, показывающей примерные VXL в WLD. Фиг. 21 является схемой, показывающей структуру в виде дерева октантов WLD, показанного на фиг. 20. Пример, показанный на фиг. 20, иллюстрирует три VXL 1-3, которые включают в себя точечные группы (далее называются "эффективными VXL"). Как показывает фиг. 21, структура в виде дерева октантов задается из узлов и листьев. Каждый узел имеет максимум восемь узлов или листьев. Каждый лист имеет VXL-информацию. Здесь, из листьев, показанных на фиг. 21, лист 1, лист 2 и лист 3 представляют VXL1, VXL2 и VXL3, показанные на фиг. 20, соответственно.
[0202] Более конкретно, каждый узел и каждый лист соответствуют трехмерной позиции. Узел 1 соответствует всему блоку, показанному на фиг. 20. Блок, который соответствует узлу 1, разделяется на восемь блоков. Из этих восьми блоков, блоки, включающие в себя эффективные VXL, задаются в качестве узлов, в то время как другие блоки задаются в качестве листьев. Каждый блок, который соответствует узлу, дополнительно разделяется на восемь узлов или листьев. Эти процессы повторяются число раз, которое равно числу уровней в структуре в виде дерева октантов. Все блоки на самом нижнем уровне задаются в качестве листьев.
[0203] Фиг. 22 является схемой, показывающей примерный SWLD, сформированный из WLD, показанного на фиг. 20. Проводится оценка VXL1 и VXL2, показанных на фиг. 20, в качестве FVXL1 и FVXL2 как результат извлечения признаков, и в силу этого они добавляются в SWLD. Между тем, не проводится оценка VXL3 в качестве FVXL, и в силу этого он не добавляется в SWLD. Фиг. 23 является схемой, показывающей структуру в виде дерева октантов SWLD, показанного на фиг. 22. В структуре в виде дерева октантов, показанной на фиг. 23, лист 3, соответствующий VXL3, показанному на фиг. 21, удаляется. Следовательно, узел 3, показанный на фиг. 21, теряет эффективный VXL и изменяется на лист. Как описано выше, SWLD имеет меньшее число листьев, в общем, чем WLD, и в силу этого кодированные трехмерные данные SWLD меньше кодированных трехмерных данных WLD.
[0204] Далее описываются варьирования настоящего варианта осуществления.
[0205] Для оценки собственного местоположения, например, клиент, представляющий собой установленное в транспортном средстве устройство и т.д., может принимать SWLD из сервера, чтобы использовать такой SWLD для того, чтобы оценивать собственное местоположение. Между тем, для обнаружения помех, клиент может обнаруживать помехи посредством использования трехмерной информации относительно периферии, полученной посредством такого клиента через различные средства, включающие в себя датчик расстояния, такой как дальномер, а также стереокамеру и комбинацию множества монокулярных камер.
[0206] В общем, SWLD с меньшей вероятностью должен включать VXL-данные относительно плоской области. В связи с этим, сервер может хранить мир подвыборок (subWLD), полученный посредством субдискретизации WLD для обнаружения статических помех, и отправлять в клиент SWLD и subWLD. Это позволяет клиенту выполнять оценку собственного местоположения и обнаружение помех на стороне клиента, при уменьшении полосы пропускания сети.
[0207] Когда клиент подготавливает посредством рендеринга трехмерные картографические данные на высокой скорости, картографическая информация, имеющая ячеистую структуру, является более полезной в некоторых случаях. В связи с этим, сервер может формировать ячеистую сеть из WLD, с тем чтобы хранить его заранее в качестве ячеистого мира (MWLD). Например, при желании выполнять приблизительный трехмерный рендеринг, клиент принимает MWLD, а при желании выполнять детализированный трехмерный рендеринг, клиент принимает WLD. Это уменьшает полосу пропускания сети.
[0208] В вышеприведенном описании, сервер задает, в качестве FVXL, VXL, имеющие количество признаков, большее или равное пороговому значению, но сервер может вычислять FVXL посредством другого способа. Например, сервер может проводить оценку того, что VXL, VLM, SPC или GOS, которая составляет светофор или перекресток и т.д., необходимы для оценки собственного местоположения, помощи при вождении или беспилотного вождения и т.д. и включает такую VXL, VLM, SPC или GOS в SWLD в качестве FVXL, FVLM, FSPC или FGOS. Такое проведение оценки может быть осуществляться вручную. Кроме того, FVXL и т.д., которые заданы на основе количества признаков, могут добавляться в FVXL и т.д., полученные посредством вышеописанного способа. Другими словами, SWLD-модуль 403 извлечения дополнительно может извлекать, из входных трехмерных данных 411, данные, соответствующие объекту, имеющему предварительно определенный атрибут, в качестве извлеченных трехмерных данных 412.
[0209] Кроме того, то, что VXL, VLM, SPC или GOS необходимы для такого намеченного использования, может помечаться отдельно от признаков. Сервер может отдельно хранить, в качестве верхнего слоя SWLD (например, мира полос движения), FVXL светофора или перекрестка и т.д., необходимого для оценки собственного местоположения, помощи при вождении или беспилотного вождения и т.д.
[0210] Сервер также может добавлять атрибут в VXL в WLD на основе произвольного доступа или на основе предварительно определенной единицы. Атрибут, например, включает в себя информацию, указывающую то, необходимы или нет VXL для оценки собственного местоположения, либо информацию, указывающую то, являются или нет VXL важными в качестве информации трафика, такой как светофор или перекресток и т.д. Атрибут также может включать соответствие между VXL и признаками (перекресток или дорога и т.д.) в информацию полос движения (в файлы географических данных (GDF) и т.д.).
[0211] Способ, как описано ниже, может использоваться для того, чтобы обновлять WLD или SWLD.
[0212] Информация обновления, указывающая изменения и т.д. касательно человека, дорожных работ или древовидной линии (для грузовиков), выгружается на сервер в качестве точечных групп или метаданных. Сервер обновляет WLD на основе такой загруженной информации и затем обновляет SWLD посредством использования обновленного WLD.
[0213] Клиент, при обнаружении рассогласования между трехмерной информацией, которую такой клиент формирует во время оценки собственного местоположения, и трехмерной информацией, принимаемой из сервера, может отправлять на сервер трехмерную информацию, которую такой клиент формирует, вместе с уведомлением касательно обновления. В таком случае, сервер обновляет SWLD посредством использования WLD. Когда SWLD не должен обновляться, сервер проводит такую оценку, что непосредственно WLD является устаревшим.
[0214] В вышеприведенном описании, информация, которая отличает то, представляет кодированный поток собой кодированный поток WLD или SWLD, добавляется в качестве информации заголовка кодированного потока. Тем не менее, когда предусмотрено множество типов миров, таких как ячеистый мир и мир полос движения, информация, которая отличает эти типы миров, может добавляться в информацию заголовка. Кроме того, когда имеются множество SWLD с различными количествами признаков, информация, которая отличает соответствующие SWLD, может добавляться в информацию заголовка.
[0215] В вышеприведенном описании, SWLD состоит из FVXL, но SWLD может включать в себя VXL, для которых не проведена оценка в качестве FVXL. Например, SWLD может включать в себя смежный VXL, используемый для того, чтобы вычислять признак FVXL. Это позволяет клиенту вычислять признак FVXL при приеме SWLD, даже в случае, если информация признаков не добавляется в каждый FVXL SWLD. В таком случае, SWLD может включать в себя информацию, которая отличает то, представляет каждый VXL собой FVXL или VXL.
[0216] Как описано выше, устройство 400 кодирования трехмерных данных извлекает, из входных трехмерных данных 411 (первых трехмерных данных), извлеченные трехмерные данные 412 (вторые трехмерные данные), имеющие количество признаков, большее или равное пороговому значению, и кодирует извлеченные трехмерные данные 412, чтобы формировать кодированные трехмерные данные 414 (первые кодированные трехмерные данные).
[0217] Это устройство 400 кодирования трехмерных данных формирует кодированные трехмерные данные 414, которые получаются посредством кодирования данных, имеющих количество признаков, большее или равное пороговому значению. Это уменьшает объем данных по сравнению со случаем, в котором входные трехмерные данные 411 кодируются как есть. Устройство 400 кодирования трехмерных данных за счет этого допускает уменьшение объема данных, которые должны передаваться.
[0218] Устройство 400 кодирования трехмерных данных дополнительно кодирует входные трехмерные данные 411, чтобы формировать кодированные трехмерные данные 413 (вторые кодированные трехмерные данные).
[0219] Это устройство 400 кодирования трехмерных данных обеспечивает избирательную передачу кодированных трехмерных данных 413 и кодированных трехмерных данных 414, в соответствии, например, с надлежащим использованием и т.д.
[0220] Кроме того, извлеченные трехмерные данные 412 кодируются посредством первого способа кодирования, и входные трехмерные данные 411 кодируются посредством второго способа кодирования, отличающегося от первого способа кодирования.
[0221] Это устройство 400 кодирования трехмерных данных обеспечивает использование способа кодирования, подходящего для каждых из входных трехмерных данных 411 и извлеченных трехмерных данных 412.
[0222] Кроме того, из внутреннего прогнозирования и взаимного прогнозирования, взаимное прогнозирование более предпочтительно выполняется в первом способе кодирования, чем во втором способе кодирования.
[0223] Это устройство 400 кодирования трехмерных данных обеспечивает возможность более предпочтительного выполнения взаимного прогнозирования для извлеченных трехмерных данных 412, в которых смежные элементы данных с большой вероятностью имеют низкую корреляцию.
[0224] Кроме того, первый способ кодирования и второй способ кодирования представляют трехмерные позиции по-разному. Например, второй способ кодирования представляет трехмерные позиции посредством дерева октантов, и первый способ кодирования представляет трехмерные позиции посредством трехмерных координат.
[0225] Это устройство 400 кодирования трехмерных данных обеспечивает возможность использования более подходящего способа для того, чтобы представлять трехмерные позиции трехмерных данных с учетом разности числа включенных элементов данных (числа VXL или FVXL).
[0226] Кроме того, по меньшей мере, одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 включают в себя идентификатор, указывающий то, представляют кодированные трехмерные данные собой кодированные трехмерные данные, полученные посредством кодирования входных трехмерных данных 411, или кодированные трехмерные данные, полученные посредством кодирования части входных трехмерных данных 411. Другими словами, такой идентификатор указывает то, представляют кодированные трехмерные данные собой кодированные трехмерные данные 413 WLD или кодированные трехмерные данные 414 SWLD.
[0227] Это обеспечивает возможность устройству декодирования легко проводить оценку в отношении того, представляют полученные кодированные трехмерные данные собой кодированные трехмерные данные 413 или кодированные трехмерные данные 414.
[0228] Кроме того, устройство 400 кодирования трехмерных данных кодирует извлеченные трехмерные данные 412 таким способом, что кодированные трехмерные данные 414 имеют меньший объем данных, чем объем данных для кодированных трехмерных данных 413.
[0229] Это устройство 400 кодирования трехмерных данных обеспечивает возможность кодированным трехмерным данным 414 иметь меньший объем данных, чем объем данных для кодированных трехмерных данных 413.
[0230] Кроме того, устройство 400 кодирования трехмерных данных дополнительно извлекает данные, соответствующие объекту, имеющему предварительно определенный атрибут, из входных трехмерных данных 411 в качестве извлеченных трехмерных данных 412. Объект, имеющий предварительно определенный атрибут, например, представляет собой объект, необходимый для оценки собственного местоположения, помощи при вождении или беспилотного вождения и т.д., либо более конкретно, светофор, перекресток и т.д.
[0231] Это устройство 400 кодирования трехмерных данных допускает формирование кодированных трехмерных данных 414, которые включают в себя данные, требуемые посредством устройства декодирования.
[0232] Кроме того, устройство 400 кодирования трехмерных данных (сервер) дополнительно отправляет, в клиент, одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 в соответствии с состоянием клиента.
[0233] Это устройство 400 кодирования трехмерных данных допускает отправку соответствующих данных в соответствии с состоянием клиента.
[0234] Кроме того, состояние клиента включает в себя одно из состояния связи (например, полосы пропускания сети) клиента и скорости движения клиента.
[0235] Кроме того, устройство 400 кодирования трехмерных данных дополнительно отправляет, в клиент, одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 в соответствии с запросом от клиента.
[0236] Это устройство 400 кодирования трехмерных данных допускает отправку соответствующих данных в соответствии с запросом от клиента.
[0237] Кроме того, устройство 500 декодирования трехмерных данных согласно настоящему варианту осуществления декодирует кодированные трехмерные данные 413 или кодированные трехмерные данные 414, сформированные посредством устройства 400 кодирования трехмерных данных, описанного выше.
[0238] Другими словами, устройство 500 декодирования трехмерных данных декодирует, посредством первого способа декодирования, кодированные трехмерные данные 414, полученные посредством кодирования извлеченных трехмерных данных 412, имеющих количество признаков, большее или равное пороговому значению, причем извлеченные трехмерные данные 412 извлекаются из входных трехмерных данных 411. Устройство 500 декодирования трехмерных данных также декодирует, посредством второго способа декодирования, кодированные трехмерные данные 413, полученные посредством кодирования входных трехмерных данных 411, причем второй способ декодирования отличается от первого способа декодирования.
[0239] Это устройство 500 декодирования трехмерных данных обеспечивает избирательный прием кодированных трехмерных данных 414, полученных посредством кодирования данных, имеющих количество признаков, большее или равное пороговому значению, и кодированных трехмерных данных 413, в соответствии, например, с надлежащим использованием и т.д. Устройство 500 декодирования трехмерных данных за счет этого допускает уменьшение объема данных, которые должны передаваться. Такое устройство 500 декодирования трехмерных данных дополнительно обеспечивает использование способа декодирования, подходящего для каждых из входных трехмерных данных 411 и извлеченных трехмерных данных 412.
[0240] Кроме того, из внутреннего прогнозирования и взаимного прогнозирования, взаимное прогнозирование более предпочтительно выполняется в первом способе декодирования, чем во втором способе декодирования.
[0241] Это устройство 500 декодирования трехмерных данных обеспечивает возможность более предпочтительного выполнения взаимного прогнозирования для извлеченных трехмерных данных, в которых смежные элементы данных с большой вероятностью имеют низкую корреляцию.
[0242] Кроме того, первый способ декодирования и второй способ декодирования представляют трехмерные позиции по-разному. Например, второй способ декодирования представляет трехмерные позиции посредством дерева октантов, и первый способ декодирования представляет трехмерные позиции посредством трехмерных координат.
[0243] Это устройство 500 декодирования трехмерных данных обеспечивает возможность использования более подходящего способа для того, чтобы представлять трехмерные позиции трехмерных данных с учетом разности числа включенных элементов данных (числа VXL или FVXL).
[0244] Кроме того, по меньшей мере, одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 включают в себя идентификатор, указывающий то, представляют кодированные трехмерные данные собой кодированные трехмерные данные, полученные посредством кодирования входных трехмерных данных 411, или кодированные трехмерные данные, полученные посредством кодирования части входных трехмерных данных 411. Устройство 500 декодирования трехмерных данных ссылается на такой идентификатор при идентификации между кодированными трехмерными данными 413 и кодированными трехмерными данными 414.
[0245] Это устройство 500 декодирования трехмерных данных допускает простое проведение оценки в отношении того, представляют полученные кодированные трехмерные данные собой кодированные трехмерные данные 413 или кодированные трехмерные данные 414.
[0246] Устройство 500 декодирования трехмерных данных дополнительно уведомляет сервер в отношении состояния клиента (устройства 500 декодирования трехмерных данных). Устройство 500 декодирования трехмерных данных принимает одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 из сервера, в соответствии с состоянием клиента.
[0247] Это устройство 500 декодирования трехмерных данных допускает прием соответствующих данных в соответствии с состоянием клиента.
[0248] Кроме того, состояние клиента включает в себя одно из состояния связи (например, полосы пропускания сети) клиента и скорости движения клиента.
[0249] Устройство 500 декодирования трехмерных данных дополнительно выполняет запрос сервера на предмет одних из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 и принимает одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 из сервера, в соответствии с запросом.
[0250] Это устройство 500 декодирования трехмерных данных допускает прием соответствующих данных в соответствии с надлежащим использованием.
Вариант 3 осуществления
[0251]
Настоящий вариант осуществления описывает способ передачи/приема трехмерных данных между транспортными средствами. Например, трехмерные данные передаются/принимаются между рассматриваемым транспортным средством и близлежащим транспортным средством.
[0252] Фиг. 24 является блок-схемой устройства 620 создания трехмерных данных согласно настоящему варианту осуществления. Такое устройство 620 создания трехмерных данных, которое включается, например, в рассматриваемое транспортное средство, объединяет первые трехмерные данные 632, созданные посредством устройства 620 создания трехмерных данных, с принимаемыми вторыми трехмерными данными 635, за счет этого создавая третьи трехмерные данные 636, имеющие более высокую плотность.
[0253] Такое устройство 620 создания трехмерных данных включает в себя модуль 621 создания трехмерных данных, модуль 622 определения диапазонов запросов, модуль 623 поиска, приемное устройство 624, декодер 625 и модуль 626 объединения.
[0254] Во-первых, модуль 621 создания трехмерных данных создает первые трехмерные данные 632 посредством использования информации 631 датчиков, обнаруженной посредством датчика, включенного в рассматриваемое транспортное средство. Затем, модуль 622 определения диапазонов запросов определяет диапазон запросов, который представляет собой диапазон трехмерного пространства, данных по которому недостаточно в созданных первых трехмерных данных 632.
[0255] Затем, модуль 623 поиска выполняет поиск близлежащего транспортного средства, имеющего трехмерные данные диапазона запросов, и отправляет информацию 633 диапазона запросов, указывающую диапазон запросов, в найденное близлежащее транспортное средство 601 (S623). Затем, приемное устройство 624 принимает кодированные трехмерные данные 634, которые представляют собой кодированный поток диапазона запросов, из близлежащего транспортного средства 601 (S624). Следует отметить, что модуль 623 поиска может без различия отправлять запросы во все транспортные средства, включенные в указанный диапазон, чтобы принимать кодированные трехмерные данные 634 из транспортного средства, которое отвечает на запрос. Модуль 623 поиска может отправлять запрос не только в транспортные средства, но также и в объект, такой как светофор и дорожный знак, и принимать кодированные трехмерные данные 634 из объекта.
[0256] Затем, декодер 625 декодирует принимаемые кодированные трехмерные данные 634, за счет этого получая вторые трехмерные данные 635. Затем, модуль 626 объединения объединяет первые трехмерные данные 632 со вторыми трехмерными данными 635, за счет этого создавая трехмерные данные 636, имеющие более высокую плотность.
[0257] Далее описываются структура и операции устройства 640 передачи трехмерных данных согласно настоящему варианту осуществления. Фиг. 25 является блок-схемой устройства 640 передачи трехмерных данных.
[0258] Устройство 640 передачи трехмерных данных включается, например, в вышеописанное близлежащее транспортное средство. Устройство 640 передачи трехмерных данных обрабатывает пятые трехмерные данные 652, созданные посредством близлежащего транспортного средства, в шестые трехмерные данные 654, запрашиваемые посредством рассматриваемого транспортного средства, кодирует шестые трехмерные данные 654, чтобы формировать кодированные трехмерные данные 634, и отправляет кодированные трехмерные данные 634 в рассматриваемое транспортное средство.
[0259] Устройство 640 передачи трехмерных данных включает в себя модуль 641 создания трехмерных данных, приемное устройство 642, модуль 643 извлечения, кодер 644 и передающее устройство 645.
[0260] Во-первых, модуль 641 создания трехмерных данных создает пятые трехмерные данные 652 посредством использования информации 651 датчиков, обнаруженной посредством датчика, включенного в близлежащее транспортное средство. Затем, приемное устройство 642 принимает информацию 633 диапазона запросов из рассматриваемого транспортного средства.
[0261] Затем, модуль 643 извлечения извлекает из пятых трехмерных данных 652 трехмерные данные диапазона запросов, указываемого посредством информации 633 диапазона запросов, за счет этого обрабатывая пятые трехмерные данные 652 в шестые трехмерные данные 654. Затем, кодер 644 кодирует шестые трехмерные данные 654, чтобы формировать кодированные трехмерные данные 643, которые представляют собой кодированный поток. После этого передающее устройство 645 отправляет кодированные трехмерные данные 634 в рассматриваемое транспортное средство.
[0262] Следует отметить, что хотя здесь описывается примерный случай, в котором рассматриваемое транспортное средство включает в себя устройство 620 создания трехмерных данных, и близлежащее транспортное средство включает в себя устройство 640 передачи трехмерных данных, каждое из транспортных средств может включать в себя функциональность как устройства 620 создания трехмерных данных, так и устройства 640 передачи трехмерных данных.
Вариант 4 осуществления
[0263]
Настоящий вариант осуществления описывает операции, выполняемые в анормальных случаях, когда оценка собственного местоположения выполняется на основе трехмерной карты.
[0264] Трехмерная карта предположительно должна находить свое широкое применение в беспилотном вождении транспортного средства и автономном перемещении и т.д. мобильного объекта, такого как робот и летающий объект (например, беспилотный аппарат). Примерное средство для обеспечения возможности такого автономного перемещения включает в себя способ, в котором мобильный объект движется в соответствии с трехмерной картой при оценке собственного местоположения на карте (оценке собственного местоположения).
[0265] Оценка собственного местоположения обеспечивается посредством сопоставления трехмерной карты с трехмерной информацией относительно окрестности рассматриваемого транспортного средства (в дальнейшем называемой "самообнаруженными трехмерными данными"), полученной посредством датчика, оснащенного в рассматриваемом транспортном средстве, такого как дальномер (например, лидар) и стереокамера, чтобы оценивать местоположение рассматриваемого транспортного средства на трехмерной карте.
[0266] Как и в случае HD-карты, предлагаемой компанией HERE Technologies, например, трехмерная карта может включать в себя не только облако трехмерных точек, но также и двумерные картографические данные, такие как информация относительно форм дорог и перекрестков, или информацию, которая изменяется в реальном времени, такую как информация относительно затора трафика и аварий. Трехмерная карта включает в себя множество слоев, к примеру, слои трехмерных данных, двумерных данных и метаданных, которые изменяются в реальном времени, из числа которых устройство может получать или ссылаться только на необходимые данные.
[0267] Данные облаков точек могут представлять собой SWLD, как описано выше, или могут включать в себя данные точечных групп, которые отличаются от ключевых точек. Передача/прием данных облаков точек, по существу, выполняется в одной или более единиц произвольного доступа.
[0268] Способ, описанный ниже, используется в качестве способа сопоставления трехмерной карты с самообнаруженными трехмерными данными. Например, устройство сравнивает формы точечных групп в облаках точек друг друга и определяет то, что части, имеющие высокую степень подобия между ключевыми точками, соответствуют идентичной позиции. Когда трехмерная карта формируется посредством SWLD, устройство также выполняет сопоставление посредством сравнения ключевых точек, которые формируют SWLD, с трехмерными ключевыми точками, извлеченными из самообнаруженных трехмерных данных.
[0269] Здесь, чтобы обеспечивать высокоточную оценку собственного местоположения, должны удовлетворяться следующие потребности: (A) трехмерная карта и самообнаруженные трехмерные данные уже получены; и (B) их точности удовлетворяют предварительно определенному требованию. Тем не менее, один из (A) и (B) не может удовлетворяться в анормальных случаях, таких как случаи, описанные ниже.
[0270] 1. Трехмерная карта является недоступной для получения по связи.
[0271] 2. Трехмерная карта не присутствует, или полученная трехмерная карта повреждена.
[0272] 3. Датчик рассматриваемого транспортного средства является проблемным, или точность сформированных самообнаруженных трехмерных данных является недостаточной вследствие плохой погоды.
[0273] Далее описываются операции для того, чтобы преодолевать такие анормальные случаи. Нижеприведенное описание иллюстрирует примерный случай транспортного средства, но способ, описанный ниже, является применимым к мобильным объектам в целом, которые допускают автономное перемещение, таким как робот и беспилотный аппарат.
[0274] Далее описывается структура устройства обработки трехмерной информации и его операция согласно настоящему варианту осуществления, допускающему преодоление анормальных случаев относительно трехмерной карты или самообнаруженных трехмерных данных. Фиг. 26 является блок-схемой примерной структуры устройства 700 обработки трехмерной информации согласно настоящему варианту осуществления.
[0275] Устройство 700 обработки трехмерной информации оснащается, например, в мобильном объекте, таком как автомобиль. Как показано на фиг. 26, устройство 700 обработки трехмерной информации включает в себя модуль 701 получения трехмерных карт, модуль 702 получения самообнаруженных данных, модуль 703 проведения оценки анормальных случаев, модуль 704 определения операций преодоления и функциональный контроллер 705.
[0276] Следует отметить, что устройство 700 обработки трехмерной информации может включать в себя непроиллюстрированный двумерный или одномерный датчик, который обнаруживает структурный объект или мобильный объект около рассматриваемого транспортного средства, такой как камера, допускающая получение двумерных изображений, и датчик для одномерных данных с использованием ультразвука или лазера. Устройство 700 обработки трехмерной информации также может включать в себя непроиллюстрированный модуль связи, который получает трехмерную карту по сети мобильной связи, к примеру, по 4G и 5G, либо через связь между транспортными средствами или связь между транспортным средством и дорожной инфраструктурой.
[0277] Модуль 701 получения трехмерных карт получает трехмерную карту 711 окрестности маршрута движения. Например, модуль 701 получения трехмерных карт получает трехмерную карту 711 по сети мобильной связи либо через связь между транспортными средствами или связь между транспортным средством и дорожной инфраструктурой.
[0278] Затем, модуль 702 получения самообнаруженных данных получает самообнаруженные трехмерные данные 712 на основе информации датчиков. Например, модуль 702 получения самообнаруженных данных формирует самообнаруженные трехмерные данные 712 на основе информации датчиков, полученной посредством датчика, оснащенного в рассматриваемом транспортном средстве.
[0279] Затем, модуль 703 проведения оценки анормальных случаев осуществляет предварительно определенную проверку, по меньшей мере, одного из полученной трехмерной карты 711 и самообнаруженных трехмерных данных 712, чтобы обнаруживать анормальный случай. Другими словами, модуль 703 проведения оценки анормальных случаев проводит оценку в отношении того, является или нет, по меньшей мере, одно из полученной трехмерной карты 711 и самообнаруженных трехмерных данных 712 анормальным.
[0280] Когда анормальный случай обнаруживается, модуль 704 определения операций преодоления определяет операцию преодоления, чтобы преодолевать такой анормальный случай. Затем, функциональный контроллер 705 управляет работой каждой из единиц обработки, необходимых для того, чтобы выполнять операцию преодоления.
[0281] Между тем, когда анормальный случай не обнаруживается, устройство 700 обработки трехмерной информации завершает процесс.
[0282] Кроме того, устройство 700 обработки трехмерной информации оценивает местоположение транспортного средства, оснащенного устройством 700 обработки трехмерной информации, с использованием трехмерной карты 711 и самообнаруженных трехмерных данных 712. Затем, устройство 700 обработки трехмерной информации выполняет автоматическую работу транспортного средства посредством использования оцененного местоположения транспортного средства.
[0283] Как описано выше, устройство 700 обработки трехмерной информации получает, через канал связи, картографические данные (трехмерную карту 711), которые включают в себя первую информацию трехмерной позиции. Первая информация трехмерной позиции включает в себя, например, множество единиц произвольных доступа, каждая из которых представляет собой сборку, по меньшей мере, одного подпространства и является отдельно декодируемой, причем, по меньшей мере, одно подпространство имеет информацию трехмерных координат и служит в качестве единицы, в которой каждая из множества единиц произвольного доступа кодируется. Первая информация трехмерной позиции, например, представляет собой данные (SWLD), полученные посредством кодирования ключевых точек, каждая из которых имеет количество трехмерных признаков, большее или равное предварительно определенному пороговому значению.
[0284] Устройство 700 обработки трехмерной информации также формирует вторую информацию трехмерной позиции (самообнаруженные трехмерные данные 712) из информации, обнаруженной посредством датчика. Устройство 700 обработки трехмерной информации затем проводит оценку в отношении того, является или нет одна из первой информации трехмерной позиции и второй информации трехмерной позиции анормальной, посредством выполнения, для одной из первой информации трехмерной позиции и второй информации трехмерной позиции, процесса проведения оценки того, присутствует или нет анормальность.
[0285] Устройство 700 обработки трехмерной информации определяет операцию преодоления, чтобы преодолевать анормальность, когда проводится оценка одной из первой информации трехмерной позиции и второй информации трехмерной позиции как анормальной. Устройство 700 обработки трехмерной информации затем выполняет управление, которое требуется для того, чтобы выполнять операцию преодоления.
[0286] Эта структура обеспечивает возможность устройству 700 обработки трехмерной информации обнаруживать анормальность относительно одной из первой информации трехмерной позиции и второй информации трехмерной позиции и выполнять операцию преодоления для этого.
Вариант 5 осуществления
[0287]
Настоящий вариант осуществления описывает способ и т.д. передачи трехмерных данных в едущее сзади транспортное средство.
[0288] Фиг. 27 является блок-схемой примерной структуры устройства 810 создания трехмерных данных согласно настоящему варианту осуществления. Такое устройство 810 создания трехмерных данных оснащается, например, в транспортном средстве. Устройство 810 создания трехмерных данных передает и принимает трехмерные данные в/из внешней облачной системы мониторинга трафика, едущего впереди транспортного средства или едущего сзади транспортного средства и создает и сохраняет трехмерные данные.
[0289] Устройство 810 создания трехмерных данных включает в себя приемное устройство 811 данных, модуль 812 связи, контроллер 813 приема, преобразователь 814 форматов, множество датчиков 815, модуль 816 создания трехмерных данных, синтезатор 817 трехмерных данных, устройство 818 хранения трехмерных данных, модуль 819 связи, контроллер 820 передачи, преобразователь 821 форматов и передающее устройство 822 данных.
[0290] Приемное устройство 811 данных принимает трехмерные данные 831 из облачной системы мониторинга трафика или едущего впереди транспортного средства. Трехмерные данные 831 включают в себя, например, информацию относительно области, необнаруживаемой посредством датчиков 815 рассматриваемого транспортного средства, такую как облако точек, видео в диапазоне видимого света, информация глубины, информация позиций датчиков и информация скорости.
[0291] Модуль 812 связи обменивается данными с облачной системой мониторинга трафика или едущим впереди транспортным средством, чтобы передавать запрос на передачу данных и т.д. в облачную систему мониторинга трафика или едущее впереди транспортное средство.
[0292] Контроллер 813 приема обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 812 связи, чтобы устанавливать связь с партнером по связи.
[0293] Преобразователь 814 форматов применяет преобразование формата и т.д. к трехмерным данным 831, принимаемым посредством приемного устройства 811 данных, чтобы формировать трехмерные данные 832. Преобразователь 814 форматов также распаковывает или декодирует трехмерные данные 831, когда трехмерные данные 831 сжимаются или кодируются.
[0294] Множество датчиков 815 представляет собой группу датчиков, таких как камеры для съемки в диапазоне видимого света и камеры для съемки в инфракрасном диапазоне, которые получают информацию за пределами транспортного средства и формируют информацию 833 датчиков. Информация 833 датчиков, например, представляет собой трехмерные данные, такие как облако точек (данные точечных групп), когда датчики 815 представляют собой лазерные датчики, такие как лидары. Следует отметить, что один датчик может служить в качестве множества датчиков 815.
[0295] Модуль 816 создания трехмерных данных формирует трехмерные данные 834 из информации 833 датчиков. Трехмерные данные 834 включают в себя, например, информацию, такую как облако точек, видео в диапазоне видимого света, информация глубины, информация позиций датчиков и информация скорости.
[0296] Синтезатор 817 трехмерных данных синтезирует трехмерные данные 834, созданные на основе информации 833 датчиков рассматриваемого транспортного средства, с трехмерными данными 832, созданными посредством облачной системы мониторинга трафика или едущего впереди транспортного средства и т.д., за счет этого формируя трехмерные данные 835 пространства, которое включает в себя пространство перед едущим впереди транспортным средством, необнаруживаемое посредством датчиков 815 рассматриваемого транспортного средства.
[0297] Устройство 818 хранения трехмерных данных сохраняет сформированные трехмерные данные 835 и т.д.
[0298] Модуль 819 связи обменивается данными с облачной системой мониторинга трафика или едущим сзади транспортным средством, чтобы передавать запрос на передачу данных и т.д. в облачную систему мониторинга трафика или едущее сзади транспортное средство.
[0299] Контроллер 820 передачи обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 819 связи, чтобы устанавливать связь с партнером по связи. Контроллер 820 передачи также определяет область передачи, которая представляет собой пространство трехмерных данных, которые должны передаваться, на основе информации формирования трехмерных данных относительно трехмерных данных 832, сформированных посредством синтезатора 817 трехмерных данных, и запроса на передачу данных из партнера по связи.
[0300] Более конкретно, контроллер 820 передачи определяет область передачи, которая включает в себя пространство перед рассматриваемым транспортным средством, необнаруживаемое посредством датчика едущего сзади транспортного средства, в ответ на запрос на передачу данных из облачной системы мониторинга трафика или едущего сзади транспортного средства. Контроллер 820 передачи, например, проводит оценку в отношении того, является или нет пространство допускающим передачу, или того, включает или нет уже передаваемое пространство в себя обновление, на основе информации формирования трехмерных данных, чтобы определять область передачи. Например, контроллер 820 передачи определяет, в качестве области передачи, область, которая представляет собой: область, указываемую посредством запроса на передачу данных; и область, соответствующие трехмерные данные 835 которой присутствуют. Контроллер 820 передачи затем уведомляет преобразователь 821 форматов в отношении формата, поддерживаемого посредством партнера по связи, и области передачи.
[0301] Из трехмерных данных 835, сохраненных в устройстве 818 хранения трехмерных данных, преобразователь 821 форматов преобразует трехмерные данные 836 области передачи в формат, поддерживаемый посредством конца приемного устройства, чтобы формировать трехмерные данные 837. Следует отметить, что преобразователь 821 форматов может сжимать или кодировать трехмерные данные 837, чтобы уменьшать объем данных.
[0302] Передающее устройство 822 данных передает трехмерные данные 837 в облачную систему мониторинга трафика или едущее сзади транспортное средство. Такие трехмерные данные 837 включают в себя, например, информацию относительно мертвой зоны, которая представляет собой область, скрытую из вида едущего сзади транспортного средства, такую как облако точек перед рассматриваемым транспортным средством, видео в диапазоне видимого света, информация глубины и информация позиций датчиков.
[0303] Следует отметить, что описан пример, в котором преобразователь 814 форматов и преобразователь 821 форматов выполняют преобразование формата и т.д., но преобразование формата может не выполняться.
[0304] При вышеприведенной структуре, устройство 810 создания трехмерных данных получает, из внешнего устройства, трехмерные данные 831 области, необнаруживаемой посредством датчиков 815 рассматриваемого транспортного средства, и синтезирует трехмерные данные 831 с трехмерными данными 834, которые основаны на информации 833 датчиков, обнаруженной посредством датчиков 815 рассматриваемого транспортного средства, за счет этого формируя трехмерные данные 835. Устройство 810 создания трехмерных данных за счет этого допускает формирование трехмерных данных диапазона, необнаруживаемого посредством датчиков 815 рассматриваемого транспортного средства.
[0305] Устройство 810 создания трехмерных данных также допускает передачу, в облачную систему мониторинга трафика или едущее сзади транспортное средство и т.д., трехмерных данных пространства, которое включает в себя пространство перед рассматриваемым транспортным средством, необнаруживаемое посредством датчика едущего сзади транспортного средства, в ответ на запрос на передачу данных из облачной системы мониторинга трафика или едущего сзади транспортного средства.
Вариант 6 осуществления
[0306]
В варианте 5 осуществления, описывается пример, в котором клиентское устройство транспортного средства и т.п. передает трехмерные данные в другое транспортное средство или на сервер, к примеру, в облачную систему мониторинга трафика. В настоящем варианте осуществления, клиентское устройство передает информацию датчиков, полученную через датчик, на сервер или в клиентское устройство.
[0307] Сначала описывается структура системы согласно настоящему варианту осуществления. Фиг. 28 является схемой, показывающей структуру системы передачи/приема трехмерной карты и информации датчиков согласно настоящему варианту осуществления. Эта система включает в себя сервер 901 и клиентские устройства 902A и 902B. Следует отметить, что клиентские устройства 902A и 902B также называются "клиентским устройством 902", когда не проводится конкретное различение между ними.
[0308] Клиентское устройство 902, например, представляет собой установленное в транспортном средстве устройство, оснащенное в мобильном объекте, таком как транспортное средство. Сервер 901, например, представляет собой облачную систему мониторинга трафика и допускает обмен данными с множеством клиентских устройств 902.
[0309] Сервер 901 передает трехмерную карту, сформированную посредством облака точек, в клиентское устройство 902. Следует отметить, что структура трехмерной карты не ограничена облаком точек и также может представлять собой другую структуру, выражающую трехмерные данные, такую как ячеистая структура.
[0310] Клиентское устройство 902 передает информацию датчиков, полученную посредством клиентского устройства 902, на сервер 901. Информация датчиков включает в себя, например, по меньшей мере, одно из информации, полученной посредством лидара, изображения в диапазоне видимого света, инфракрасного изображения, изображения глубины, информации позиций датчиков или информации скорости датчиков.
[0311] Данные, которые должны передаваться и приниматься между сервером 901 и клиентским устройством 902, могут сжиматься, чтобы уменьшать объем данных, а также могут передаваться распакованными, чтобы поддерживать точность данных. При сжатии данных, можно использовать способ трехмерного сжатия в облаке точек, например, на основе структуры в виде дерева октантов. Можно использовать способ сжатия двумерных изображений в изображении в диапазоне видимого света, инфракрасном изображении и изображении глубины. Способ сжатия двумерных изображений, например, представляет собой MPEG-4 AVC или HEVC, стандартизированный посредством MPEG.
[0312] Сервер 901 передает трехмерную карту, управляемую посредством сервера 901, в клиентское устройство 902 в ответ на запрос на передачу на предмет трехмерной карты из клиентского устройства 902. Следует отметить, что сервер 901 также может передавать трехмерную карту без ожидания запроса на передачу на предмет трехмерной карты из клиентского устройства 902. Например, сервер 901 может широковещательно передавать трехмерную карту, по меньшей мере, в одно клиентское устройство 902, расположенное в предварительно определенном пространстве. Сервер 901 также может передавать трехмерную карту, подходящую для позиции клиентского устройства 902, с фиксированными временными интервалами в клиентское устройство 902, которое принимает запрос на передачу однократно. Сервер 901 также может передавать трехмерную карту, управляемую посредством сервера 901, в клиентское устройство 902 каждый раз, когда трехмерная карта обновляется.
[0313] Клиентское устройство 902 отправляет запрос на передачу на предмет трехмерной карты на сервер 901. Например, когда клиентское устройство 902 хочет выполнять оценку собственного местоположения во время движения, клиентское устройство 902 передает запрос на передачу на предмет трехмерной карты на сервер 901.
[0314] Следует отметить, что в следующих случаях клиентское устройство 902 может отправлять запрос на передачу на предмет трехмерной карты на сервер 901. Клиентское устройство 902 может отправлять запрос на передачу на предмет трехмерной карты на сервер 901, когда трехмерная карта, сохраненная посредством клиентского устройства 902, является устаревшей. Например, клиентское устройство 902 может отправлять запрос на передачу на предмет трехмерной карты на сервер 901, когда фиксированный период проходит с момента, когда трехмерная карта получается посредством клиентского устройства 902.
[0315] Клиентское устройство 902 также может отправлять запрос на передачу на предмет трехмерной карты на сервер 901 до фиксированного времени, когда клиентское устройство 902 выходит из пространства, показанного на трехмерной карте, сохраненной посредством клиентского устройства 902. Например, клиентское устройство 902 может отправлять запрос на передачу на предмет трехмерной карты на сервер 901, когда клиентское устройство 902 расположено в пределах предварительно определенного расстояния от границы пространства, показанного на трехмерной карте, сохраненной посредством клиентского устройства 902. Когда тракт перемещения и скорость перемещения клиентского устройства 902 понимаются, время, когда клиентское устройство 902 выходит из пространства, показанного на трехмерной карте, сохраненной посредством клиентского устройства 902, может прогнозироваться на основе тракта перемещения и скорости перемещения клиентского устройства 902.
[0316] Клиентское устройство 902 также может отправлять запрос на передачу на предмет трехмерной карты на сервер 901, когда ошибка во время совмещения трехмерных данных и трехмерной карты, созданной из информации датчиков посредством клиентского устройства 902, находится, по меньшей мере, на фиксированном уровне.
[0317] Клиентское устройство 902 передает информацию датчиков на сервер 901 в ответ на запрос на передачу на предмет информации датчиков из сервера 901. Следует отметить, что клиентское устройство 902 может передавать информацию датчиков на сервер 901 без ожидания запроса на передачу на предмет информации датчиков из сервера 901. Например, клиентское устройство 902 может периодически передавать информацию датчиков в течение фиксированного периода, когда клиентское устройство 902 однократно принимает запрос на передачу на предмет информации датчиков из сервера 901. Клиентское устройство 902 может определять то, что имеется вероятность возникновения изменения трехмерной карты окружающей зоны клиентского устройства 902, и передавать эту информацию и информацию датчиков на сервер 901, когда ошибка во время совмещения трехмерных данных, созданных посредством клиентского устройства 902 на основе информации датчиков, и трехмерной карты, полученной из сервера 901, находится, по меньшей мере, на фиксированном уровне.
[0318] Сервер 901 отправляет запрос на передачу на предмет информации датчиков в клиентское устройство 902. Например, сервер 901 принимает информацию позиции, такую как GPS-информация, относительно клиентского устройства 902 из клиентского устройства 902. Сервер 901 отправляет запрос на передачу на предмет информации датчиков в клиентское устройство 902, чтобы формировать новую трехмерную карту, когда определяется то, что клиентское устройство 902 приближается к пространству, в котором трехмерная карта, управляемая посредством сервера 901, содержит мало информации, на основе информации позиции относительно клиентского устройства 902. Сервер 901 также может отправлять запрос на передачу на предмет информации датчиков, при желании (i) обновлять трехмерную карту, (ii) проверять дорожные условия во время снегопада, аварии и т.п., или (iii) проверять условия затора в движении, условия аварии/происшествия и т.п.
[0319] Клиентское устройство 902 может задавать объем данных информации датчиков, которая должна передаваться на сервер 901, в соответствии с условиями связи или полосой пропускания в ходе приема запроса на передачу на предмет информации датчиков, которая должна приниматься из сервера 901. Задание объема данных информации датчиков, которая должна передаваться на сервер 901, например, представляет собой увеличение/уменьшение непосредственно данных или надлежащий выбор способа сжатия.
[0320] Фиг. 29 является блок-схемой, показывающей примерную структуру клиентского устройства 902. Клиентское устройство 902 принимает трехмерную карту, сформированную посредством облака точек и т.п. из сервера 901, и оценивает собственное местоположение клиентского устройства 902 с использованием трехмерной карты, созданной на основе информации датчиков клиентского устройства 902. Клиентское устройство 902 передает полученную информацию датчиков на сервер 901.
[0321] Клиентское устройство 902 включает в себя приемное устройство 1011 данных, модуль 1012 связи, контроллер 1013 приема, преобразователь 1014 форматов, датчики 1015, модуль 1016 создания трехмерных данных, процессор 1017 трехмерных изображений, устройство 1018 хранения трехмерных данных, преобразователь 1019 форматов, модуль 1020 связи, контроллер 1021 передачи и передающее устройство 1022 данных.
[0322] Приемное устройство 1011 данных принимает трехмерную карту 1031 из сервера 901. Трехмерная карта 1031 представляет собой данные, которые включают в себя облако точек, такие как WLD или SWLD. Трехмерная карта 1031 может включать в себя сжатые данные или несжатые данные.
[0323] Модуль 1012 связи обменивается данными с сервером 901 и передает запрос на передачу данных (например, запрос на передачу на предмет трехмерной карты) на сервер 901.
[0324] Контроллер 1013 приема обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 1012 связи, чтобы устанавливать связь с партнером по связи.
[0325] Преобразователь 1014 форматов выполняет преобразование формата и т.п. для трехмерной карты 1031, принимаемой посредством приемного устройства 1011 данных, чтобы формировать трехмерную карту 1032. Преобразователь 1014 форматов также выполняет процесс распаковки или декодирования, когда трехмерная карта 1031 сжимается или кодируется. Следует отметить, что преобразователь 1014 форматов не выполняет процесс распаковки или декодирования, когда трехмерная карта 1031 представляет собой несжатые данные.
[0326] Датчики 815 представляют собой группу датчиков, таких как лидары, камеры для съемки в диапазоне видимого света, камеры для съемки в инфракрасном диапазоне или датчики глубины, которые получают информацию относительно местоположения за пределами транспортного средства, оснащенного клиентским устройством 902, и формируют информацию 1033 датчиков. Информация 1033 датчиков, например, представляет собой трехмерные данные, такие как облако точек (данные точечных групп), когда датчики 1015 представляют собой лазерные датчики, такие как лидары. Следует отметить, что один датчик может служить в качестве датчиков 1015.
[0327] Модуль 1016 создания трехмерных данных формирует трехмерные данные 1034 окружающей зоны рассматриваемого транспортного средства на основе информации 1033 датчиков. Например, модуль 1016 создания трехмерных данных формирует данные облаков точек с цветовой информацией относительно окружающей зоны рассматриваемого транспортного средства с использованием информации, полученной посредством лидара, и видео в диапазоне видимого света, полученного посредством камеры для съемки в диапазоне видимого света.
[0328] Процессор 1017 трехмерных изображений выполняет процесс оценки собственного местоположения и т.п. рассматриваемого транспортного средства, с использованием (i) принимаемой трехмерной карты 1032, такой как облако точек, и (ii) трехмерных данных 1034 окружающей зоны рассматриваемого транспортного средства, сформированных с использованием информации 1033 датчиков. Следует отметить, что процессор 1017 трехмерных изображений может формировать трехмерные данные 1035 относительно окрестности рассматриваемого транспортного средства посредством объединения трехмерной карты 1032 и трехмерных данных 1034 и может выполнять процесс оценки собственного местоположения с использованием созданных трехмерных данных 1035.
[0329] Устройство 1018 хранения трехмерных данных сохраняет трехмерную карту 1032, трехмерные данные 1034, трехмерные данные 1035 и т.п.
[0330] Преобразователь 1019 форматов формирует информацию 1037 датчиков посредством преобразования информации 1033 датчиков в формат, поддерживаемый на конце приемного устройства. Следует отметить, что преобразователь 1019 форматов может сокращать объем данных посредством сжатия или кодирования информации 1037 датчиков. Преобразователь 1019 форматов может опускать этот процесс, когда преобразование формата не требуется. Преобразователь 1019 форматов также может управлять объемом данных, которые должны передаваться в соответствии с указанным диапазоном передачи.
[0331] Модуль 1020 связи обменивается данными с сервером 901 и принимает запрос на передачу данных (запрос на передачу на предмет информации датчиков) и т.п. из сервера 901.
[0332] Контроллер 1021 передачи обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 1020 связи, чтобы устанавливать связь с партнером по связи.
[0333] Передающее устройство 1022 данных передает информацию 1037 датчиков на сервер 901. Информация 1037 датчиков включает в себя, например, информацию, полученную через датчики 1015, такую как информация, полученная посредством лидара, изображение яркости, полученное посредством камеры для съемки в диапазоне видимого света, инфракрасное изображение, полученное посредством камеры для съемки в инфракрасном диапазоне, изображение глубины, полученное посредством датчика глубины, информация позиций датчиков и информация скорости датчиков.
[0334] Далее описывается структура сервера 901. Фиг. 30 является блок-схемой, показывающей примерную структуру сервера 901. Сервер 901 передает информацию датчиков из клиентского устройства 902 и создает трехмерные данные на основе принимаемой информации датчиков. Сервер 901 обновляет трехмерную карту, управляемую посредством сервера 901, с использованием созданных трехмерных данных. Сервер 901 передает обновленную трехмерную карту в клиентское устройство 902 в ответ на запрос на передачу на предмет трехмерной карты из клиентского устройства 902.
[0335] Сервер 901 включает в себя приемное устройство 1111 данных, модуль 1112 связи, контроллер 1113 приема, преобразователь 1114 форматов, модуль 1116 создания трехмерных данных, модуль 1117 объединения трехмерных данных, устройство 1118 хранения трехмерных данных, преобразователь 1119 форматов, модуль 1120 связи, контроллер 1121 передачи и передающее устройство 1122 данных.
[0336] Приемное устройство данных 1111 принимает информацию 1037 датчиков из клиентского устройства 902. Информация 1037 датчиков включает в себя, например, информацию, полученную посредством лидара, изображение яркости, полученное посредством камеры для съемки в диапазоне видимого света, инфракрасное изображение, полученное посредством камеры для съемки в инфракрасном диапазоне, изображение глубины, полученное посредством датчика глубины, информацию позиций датчиков, информацию скорости датчиков и т.п.
[0337] Модуль 1112 связи обменивается данными с клиентским устройством 902 и передает запрос на передачу данных (например, запрос на передачу на предмет информации датчиков) и т.п. в клиентское устройство 902.
[0338] Контроллер 1113 приема обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 1112 связи, чтобы устанавливать связь с партнером по связи.
[0339] Преобразователь 1114 форматов формирует информацию 1132 датчиков посредством выполнения процесса распаковки или декодирования, когда принимаемая информация 1037 датчиков сжимается или кодируется. Следует отметить, что преобразователь 1114 форматов не выполняет процесс распаковки или декодирования, когда информация 1037 датчиков представляет собой несжатые данные.
[0340] Модуль 1116 создания трехмерных данных формирует трехмерные данные 1134 окружающей зоны клиентского устройства 902 на основе информации 1132 датчиков. Например, модуль 1116 создания трехмерных данных формирует данные облаков точек с цветовой информацией относительно окружающей зоны клиентского устройства 902 с использованием информации, полученной посредством лидара, и видео в диапазоне видимого света, полученного посредством камеры для съемки в диапазоне видимого света.
[0341] Модуль 1117 объединения трехмерных данных обновляет трехмерную карту 1135 посредством объединения трехмерных данных 1134, созданных на основе информации 1132 датчиков, с трехмерной картой 1135, управляемой посредством сервера 901.
[0342] Устройство 1118 хранения трехмерных данных сохраняет трехмерную карту 1135 и т.п.
[0343] Преобразователь 1119 форматов формирует трехмерную карту 1031 посредством преобразования трехмерной карты 1135 в формат, поддерживаемый на конце приемного устройства. Следует отметить, что преобразователь 1119 форматов может сокращать объем данных посредством сжатия или кодирования трехмерной карты 1135. Преобразователь 1119 форматов может опускать этот процесс, когда преобразование формата не требуется. Преобразователь 1119 форматов также может управлять объемом данных, которые должны передаваться в соответствии с указанным диапазоном передачи.
[0344] Модуль 1120 связи обменивается данными с клиентским устройством 902 и принимает запрос на передачу данных (запрос на передачу на предмет трехмерной карты) и т.п. из клиентского устройства 902.
[0345] Контроллер 1121 передачи обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 1120 связи, чтобы устанавливать связь с партнером по связи.
[0346] Передающее устройство 1122 данных передает трехмерную карту 1031 в клиентское устройство 902. Трехмерная карта 1031 представляет собой данные, которые включают в себя облако точек, такие как WLD или SWLD. Трехмерная карта 1031 может включать одно из сжатых данных и несжатых данных.
[0347] Далее описывается последовательность операций клиентского устройства 902. Фиг. 31 является блок-схемой последовательности операций способа для операции, когда клиентское устройство 902 получает трехмерную карту.
[0348] Клиентское устройство 902 сначала запрашивает сервер 901 на предмет того, чтобы передавать трехмерную карту (облако точек и т.д.) (S1001). В этот момент, посредством передачи также информации позиции относительно клиентского устройства 902, полученной через GPS и т.п., клиентское устройство 902 также может запрашивать сервер 901 на предмет того, чтобы передавать трехмерную карту, связанную с этой информацией позиции.
[0349] Клиентское устройство 902 затем принимает трехмерную карту из сервера 901 (S1002). Когда принимаемая трехмерная карта представляет собой сжатые данные, клиентское устройство 902 декодирует принимаемую трехмерную карту и формирует несжатую трехмерную карту (S1003).
[0350] Клиентское устройство 902 затем создает трехмерные данные 1034 окружающей зоны клиентского устройства 902 с использованием информации 1033 датчиков, полученной посредством датчиков 1015 (S1004). Клиентское устройство 902 затем оценивает собственное местоположение клиентского устройства 902 с использованием трехмерной карты 1032, принимаемой из сервера 901, и трехмерных данных 1034, созданных с использованием информации 1033 датчиков (S1005).
[0351] Фиг. 32 является блок-схемой последовательности операций способа для операции, когда клиентское устройство 902 передает информацию датчиков. Клиентское устройство 902 сначала принимает запрос на передачу на предмет информации датчиков из сервера 901 (S1011). Клиентское устройство 902, которое принимает запрос на передачу, передает информацию 1037 датчиков на сервер 901 (S1012). Следует отметить, что клиентское устройство 902 может формировать информацию 1037 датчиков посредством сжатия каждого фрагмента информации с использованием способа сжатия, подходящего для каждого фрагмента информации, когда информация 1033 датчиков включает в себя множество фрагментов информации, полученных посредством датчиков 1015.
[0352] Далее описывается последовательность операций сервера 901. Фиг. 33 является блок-схемой последовательности операций способа для операции, когда сервер 901 получает информацию датчиков. Сервер 901 сначала запрашивает клиентское устройство 902 на предмет того, чтобы передавать информацию датчиков (S1021). Сервер 901 затем принимает информацию 1037 датчиков, передаваемую из клиентского устройства 902 в соответствии с запросом (S1022). Сервер 901 затем создает трехмерные данные 1134 с использованием принимаемой информации 1037 датчиков (S1023). Сервер 901 затем отражает созданные трехмерные данные 1134 на трехмерной карте 1135 (S1024).
[0353] Фиг. 34 является блок-схемой последовательности операций способа для операции, когда сервер 901 передает трехмерную карту. Сервер 901 сначала принимает запрос на передачу на предмет трехмерной карты из клиентского устройства 902 (S1031). Сервер 901, который принимает запрос на передачу на предмет трехмерной карты, передает трехмерную карту в клиентское устройство 902 (S1032). В этот момент, сервер 901 может извлекать трехмерную карту окрестности клиентского устройства 902 наряду с информацией позиции относительно клиентского устройства 902 и передавать извлеченную трехмерную карту. Сервер 901 может сжимать трехмерную карту, сформированную посредством облака точек, с использованием, например, способа сжатия структуры в виде дерева октантов, и передавать сжатую трехмерную карту.
[0354] В дальнейшем в этом документе описываются варьирования настоящего варианта осуществления.
[0355] Сервер 901 создает трехмерные данные 1134 окрестности позиции клиентского устройства 902 с использованием информации 1037 датчиков, принимаемой из клиентского устройства 902. Сервер 901 затем вычисляет разность между трехмерными данными 1134 и трехмерной картой 1135 посредством сопоставления созданных трехмерных данных 1134 с трехмерной картой 1135 идентичной зоны, управляемой посредством сервера 901. Сервер 901 определяет то, что определенный тип аномалии возникает в окружающей зоне клиентского устройства 902, когда разность превышает или равна предварительно определенному пороговому значению. Например, есть возможность того, что большая разность возникает между трехмерной картой 1135, управляемой посредством сервера 901, и трехмерными данными 1134, созданными на основе информации 1037 датчиков, когда проседание грунта и т.п. возникает вследствие стихийного бедствия, такого как землетрясение.
[0356] Информация 1037 датчиков может включать в себя информацию, указывающую, по меньшей мере, одно из типа датчика, производительности датчика и номера модели датчика. К информации 1037 датчиков также может присоединяться идентификатор класса и т.п. в соответствии с производительностью датчика. Например, когда информация 1037 датчиков получается посредством лидара, есть возможность назначать идентификаторы для производительности датчика. Датчик, допускающий получение информации с точностью в единицах в несколько миллиметров, имеет класс 1, датчик, допускающий получение информации с точностью в единицах в несколько сантиметров, имеет класс 2, и датчик, допускающий получение информации с точностью в единицах в несколько метров, имеет класс 3. Сервер 901 может оценивать информацию производительности датчика и т.п. из номера модели клиентского устройства 902. Например, когда клиентское устройство 902 оснащается в транспортном средстве, сервер 901 может определять информацию спецификации датчика из типа транспортного средства. В этом случае, сервер 901 может получать информацию относительно типа транспортного средства заранее, и информация также может быть включена в информацию датчиков. Сервер 901 может изменять степень коррекции относительно трехмерных данных 1134, созданных с использованием информации 1037 датчиков, с использованием полученной информации 1037 датчиков. Например, когда производительность датчика является высокой по точности (класс 1), сервер 901 не корректирует трехмерные данные 1134. Когда производительность датчика является низкой по точности (класс 3), сервер 901 корректирует трехмерные данные 1134 в соответствии с точностью датчика. Например, сервер 901 увеличивает степень (интенсивность) коррекции со снижением точности датчика.
[0357] Сервер 901 может одновременно отправлять запрос на передачу на предмет информации датчиков во множество клиентских устройств 902 в определенном пространстве. Сервер 901 не должен использовать всю информацию датчиков для создания трехмерных данных 1134 и, например, может выбирать информацию датчиков, которая должна использоваться в соответствии с производительностью датчика, при приеме множества фрагментов информации датчиков из множества клиентских устройств 902. Например, при обновлении трехмерной карты 1135, сервер 901 может выбирать высокоточную информацию датчиков (класс 1) из числа принимаемого множества фрагментов информации датчиков и создавать трехмерные данные 1134 с использованием выбранной информации датчиков.
[0358] Сервер 901 не ограничен только тем, что он представляет собой сервер, такой как облачная система мониторинга трафика, и также может представлять собой другое (установленное в транспортном средстве) клиентское устройство. Фиг. 35 является схемой структуры системы в этом случае.
[0359] Например, клиентское устройство 902C отправляет запрос на передачу на предмет информации датчиков в клиентское устройство 902A, расположенное поблизости, и получает информацию датчиков из клиентского устройства 902A. Клиентское устройство 902C затем создает трехмерные данные с использованием полученной информации датчиков клиентского устройства 902A и обновляет трехмерную карту клиентского устройства 902C. Это обеспечивает возможность клиентскому устройству 902C формировать трехмерную карту пространства, которое может получаться из клиентского устройства 902A, и полностью использовать производительность клиентского устройства 902C. Например, такой случай возможен, когда клиентское устройство 902C имеет высокую производительность.
[0360] В этом случае, клиентскому устройству 902A, которое предоставляет информацию датчиков, дается право получать высокоточную трехмерную карту, сформированную посредством клиентского устройства 902C. Клиентское устройство 902A принимает высокоточную трехмерную карту из клиентского устройства 902C в соответствии с этими правами.
[0361] Сервер 901 может отправлять запрос на передачу на предмет информации датчиков во множество клиентских устройств 902 (в клиентское устройство 902A и клиентское устройство 902B), расположенных поблизости от клиентского устройства 902C. Когда датчик клиентского устройства 902A или клиентского устройства 902B имеет высокую производительность, клиентское устройство 902C допускает создание трехмерных данных с использованием информации датчиков, полученной посредством этого высокопроизводительного датчика.
[0362] Фиг. 36 является блок-схемой, показывающей структуру функциональности сервера 901 и клиентского устройства 902. Сервер 901 включает в себя, например, процессор 1201 сжатия/декодирования трехмерных карт, который сжимает и декодирует трехмерную карту, и процессор 1202 сжатия/декодирования информации датчиков, который сжимает и декодирует информацию датчиков.
[0363] Клиентское устройство 902 включает в себя процессор 1211 декодирования трехмерных карт и процессор 1212 сжатия информации датчиков. Процессор 1211 декодирования трехмерных карт принимает кодированные данные сжатой трехмерной карты, декодирует кодированные данные и получает трехмерную карту. Процессор 1212 сжатия информации датчиков сжимает саму информацию датчиков вместо трехмерных данных, созданных с использованием полученной информации датчиков, и передает кодированные данные сжатой информации датчиков на сервер 901. При такой структуре, клиентское устройство 902 не должно внутренне сохранять процессор, который выполняет процесс для сжатия трехмерных данных трехмерной карты (облака точек и т.д.), при условии, что клиентское устройство 902 внутренне сохраняет процессор, который выполняет процесс для декодирования трехмерной карты (облака точек и т.д.). Это позволяет ограничивать затраты, потребление мощности и т.п. клиентского устройства 902.
[0364] Как указано выше, клиентское устройство 902 согласно настоящему варианту осуществления оснащается в мобильном объекте и создает трехмерные данные 1034 окружающей зоны мобильного объекта с использованием информации 1033 датчиков, которая получается через датчик 1015, оснащенный в мобильном объекте, и указывает окружающее условие мобильного объекта. Клиентское устройство 902 оценивает собственное местоположение мобильного объекта с использованием созданных трехмерных данных 1034. Клиентское устройство 902 передает полученную информацию 1033 датчиков на сервер 901 или другой мобильный объект.
[0365] Это обеспечивает возможность клиентскому устройству 902 передавать информацию 1033 датчиков на сервер 901 и т.п. Это позволяет дополнительно уменьшать объем передаваемых данных по сравнению с моментом передачи трехмерных данных. Поскольку для клиентского устройства 902 нет необходимости выполнять такие процессы, как сжатие или кодирование трехмерных данных, можно уменьшать объем обработки клиентского устройства 902. В связи с этим, клиентское устройство 902 допускает уменьшение объема данных, которые должны передаваться, или упрощение структуры устройства.
[0366] Клиентское устройство 902 дополнительно передает запрос на передачу на предмет трехмерной карты на сервер 901 и принимает трехмерную карту 1031 из сервера 901. При оценке собственного местоположения, клиентское устройство 902 оценивает собственное местоположение с использованием трехмерных данных 1034 и трехмерной карты 1032.
[0367] Информация 1034 датчиков включает в себя, по меньшей мере, одно из информации, полученной посредством лазерного датчика, изображения яркости, инфракрасного изображения, изображения глубины, информации позиций датчиков или информации скорости датчиков.
[0368] Информация 1033 датчиков включает в себя информацию, которая указывает производительность датчика.
[0369] Клиентское устройство 902 кодирует или сжимает информацию 1033 датчиков и, при передаче информации датчиков, передает информацию 1037 датчиков, которая кодирована или сжата, на сервер 901 или в другой мобильный объект 902. Это обеспечивает возможность клиентскому устройству 902 уменьшать объем данных, которые должны передаваться.
[0370] Например, клиентское устройство 902 включает в себя процессор и запоминающее устройство. Процессор выполняет вышеуказанные процессы с использованием запоминающего устройства.
[0371] Сервер 901 согласно настоящему варианту осуществления допускает обмен данными с клиентским устройством 902, оснащенным в мобильном объекте, и принимает информацию 1037 датчиков, которая получается через датчик 1015, оснащенный в мобильном объекте, и указывает окружающее условие мобильного объекта. Сервер 901 создает трехмерные данные 1134 окружающей зоны мобильного объекта с использованием принимаемой информации 1037 датчиков.
[0372] Вследствие этого, сервер 901 создает трехмерные данные 1134 с использованием информации 1037 датчиков, передаваемой из клиентского устройства 902. Это позволяет дополнительно уменьшать объем передаваемых данных по сравнению с моментом, когда клиентское устройство 902 передает трехмерные данные. Поскольку для клиентского устройства 902 нет необходимости выполнять такие процессы, как сжатие или кодирование трехмерных данных, можно уменьшать объем обработки клиентского устройства 902. В связи с этим, сервер 901 допускает уменьшение объема данных, которые должны передаваться, или упрощение структуры устройства.
[0373] Сервер 901 дополнительно передает запрос на передачу на предмет информации датчиков в клиентское устройство 902.
[0374] Сервер 901 дополнительно обновляет трехмерную карту 1135 с использованием созданных трехмерных данных 1134 и передает трехмерную карту 1135 в клиентское устройство 902 в ответ на запрос на передачу на предмет трехмерной карты 1135 из клиентского устройства 902.
[0375] Информация 1037 датчиков включает в себя, по меньшей мере, одно из информации, полученной посредством лазерного датчика, изображения яркости, инфракрасного изображения, изображения глубины, информации позиций датчиков или информации скорости датчиков.
[0376] Информация 1037 датчиков включает в себя информацию, которая указывает производительность датчика.
[0377] Сервер 901 дополнительно корректирует трехмерные данные в соответствии с производительностью датчика. Это обеспечивает возможность способу создания трехмерных данных повышать качество трехмерных данных.
[0378] При приеме информации датчиков, сервер 901 принимает множество фрагментов информации 1037 датчиков, принимаемой из множества клиентских устройств 902, и выбирает информацию 1037 датчиков, которая должна использоваться при создании трехмерных данных 1134, на основе множества фрагментов информации, каждый из которых указывает производительность датчика, включенного во множество фрагментов информации 1037 датчиков. Это обеспечивает возможность серверу 901 повышать качество трехмерных данных 1134.
[0379] Сервер 901 декодирует или распаковывает принимаемую информацию 1037 датчиков и создает трехмерные данные 1134 с использованием информации 1132 датчиков, которая декодирована или распакована. Это обеспечивает возможность серверу 901 уменьшать объем данных, которые должны передаваться.
[0380] Например, сервер 901 включает в себя процессор и запоминающее устройство. Процессор выполняет вышеуказанные процессы с использованием запоминающего устройства.
Вариант 7 осуществления
[0381]
В настоящем варианте осуществления, в дальнейшем описываются способы кодирования и декодирования трехмерных данных с использованием процесса взаимного прогнозирования.
[0382] Фиг. 37 является блок-схемой устройства 1300 кодирования трехмерных данных согласно настоящему варианту осуществления. Это устройство 1300 кодирования трехмерных данных формирует кодированный поток битов (в дальнейшем в этом документе, также называемый просто "потоком битов"), который представляет собой кодированный сигнал, посредством кодирования трехмерных данных. Как проиллюстрировано на фиг. 37, устройство 1300 кодирования трехмерных данных включает в себя модуль 1301 разделения, вычитатель 1302, преобразователь 1303, квантователь 1304, обратный квантователь 1305, обратный преобразователь 1306, сумматор 1307, запоминающее устройство 1308 опорных объемов, модуль 1309 внутреннего прогнозирования, запоминающее устройство 1310 опорных пространств, модуль 1311 взаимного прогнозирования, контроллер 1312 прогнозирования и энтропийный кодер 1313.
[0383] Модуль 1301 разделения разделяет множество объемов (VLM), которые представляют собой единицы кодирования каждого пространства (SPC), включенного в трехмерные данные. Модуль 1301 разделения задает представление в виде дерева октантов (задание как дерева октантов) вокселов в каждом объеме. Следует отметить, что модуль 1301 разделения может задавать пространства как представление в виде дерева октантов с пространствами, имеющими размер, идентичный размеру объемов. Модуль 1301 разделения также может присоединять информацию (информацию глубины и т.д.), необходимую для того, чтобы задавать представление в виде дерева октантов, к заголовку и т.п. потока битов.
[0384] Вычитатель 1302 вычисляет разность между объемом (целевым объемом кодирования), выведенным посредством модуля 1301 разделения, и прогнозированным объемом, сформированным через внутреннее прогнозирование или взаимное прогнозирование, которое описывается ниже, и выводит вычисленную разность в преобразователь 1303 в качестве остатка прогнозирования. Фиг. 38 является схемой, показывающей примерное вычисление остатка прогнозирования. Следует отметить, что битовые последовательности целевого объема кодирования и прогнозированного объема, показанных здесь, например, представляют собой информацию позиции, указывающую позиции трехмерных точек, включенных в объемы.
[0385] В дальнейшем в этом документе описывается порядок сканирования представления в виде дерева октантов и вокселов. Объем кодируется после преобразования в структуру в виде дерева октантов (задания как дерева октантов). Структура в виде дерева октантов включает в себя узлы и листья. Каждый узел имеет восемь узлов или листьев, и каждый лист имеет вокселную (VXL) информацию. Фиг. 39 является схемой, показывающей примерную структуру объема, включающего в себя вокселы. Фиг. 40 является схемой, показывающей пример объема, показанного на фиг. 39, преобразованного в структуру в виде дерева октантов. Из числа листьев, показанных на фиг. 40, листья 1, 2 и 3, соответственно, представляют VXL 1, VXL 2 и VXL 3 и представляют VXL, включающие в себя точечную группу (в дальнейшем в этом документе, активные VXL).
[0386] Дерево октантов представляется, например, посредством двоичных последовательностей единиц и нулей. Например, при использовании для узлов или активных VXL значения 1, а для всех остальных значения 0, каждому узлу и листу назначается двоичная последовательность, показанная на фиг. 40. Таким образом, эта двоичная последовательность сканируется в соответствии с порядком сканирования в ширину или в глубину. Например, при сканировании в ширину, получается двоичная последовательность, показанная в A по фиг. 41. При сканировании в глубину, получается двоичная последовательность, показанная в B по фиг. 41. Двоичные последовательности, полученные посредством этого сканирования, кодируются посредством энтропийного кодирования, которое уменьшает объем информации.
[0387] Далее описывается информация глубины в представлении в виде дерева октантов. Глубина в представлении в виде дерева октантов используется для того, чтобы управлять тем, с насколько большой степенью детализации сохраняется информация облаков точек, включенная в объем. После задания большой глубины, можно воспроизводить информацию облаков точек до более точного уровня, но объем данных для представления узлов и листьев увеличивается. Тем не менее, после задания небольшой глубины, объем данных снижается, но некоторая информация, такая как информация облаков точек, первоначально хранимая, теряется, поскольку фрагменты информации облаков точек, включающие в себя различные позиции и различные цвета, теперь рассматриваются в качестве фрагментов информации облаков точек, включающих в себя идентичную позицию и идентичный цвет.
[0388] Например, фиг. 42 является схемой, показывающей пример, в котором дерево октантов с глубиной в 2, показанное на фиг. 40, представляется с глубиной в 1. Дерево октантов, показанное на фиг. 42, имеет более низкий объем данных, чем дерево октантов, показанное на фиг. 40. Другими словами, преобразованное в двоичную форму дерево октантов, показанное на фиг. 42, имеет меньшее число битов, чем дерево октантов, показанное на фиг. 40. Лист 1 и лист 2, показанные на фиг. 40, представляются посредством листа 1, показанного на фиг. 41. Другими словами, информация относительно листа 1 и листа 2, находящегося в различных позициях, теряется.
[0389] Фиг. 43 является схемой, показывающей объем, соответствующий дереву октантов, показанному на фиг. 42. VXL 1 и VXL 2, показанные на фиг. 39, соответствуют VXL 12, показанному на фиг. 43. В этом случае, устройство 1300 кодирования трехмерных данных формирует цветовую информацию VXL 12, показанного на фиг. 43, с использованием цветовой информации VXL 1 и VXL 2, показанных на фиг. 39. Например, устройство 1300 кодирования трехмерных данных вычисляет среднее значение, медиану, средневзвешенное значение и т.п. цветовой информации VXL 1 и VXL 2 в качестве цветовой информации VXL 12. Таким образом, устройство 1300 кодирования трехмерных данных может управлять уменьшением объема данных посредством изменения глубины дерева октантов.
[0390] Устройство 1300 кодирования трехмерных данных может задавать информацию глубины дерева октантов в единицах миров, единицах пространств или единицах объемов. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять информацию глубины к информации заголовка мира, информации заголовка пространства или информации заголовка объема. Во всех мирах, пространствах и объемах, ассоциированных с различными временами, идентичное значение может использоваться в качестве информации глубины. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять информацию глубины к информации заголовка, управляющей мирами, ассоциированными со всеми временами.
[0391] Когда цветовая информация включается в вокселы, преобразователь 1303 применяет преобразование частоты, например, ортогональное преобразование, к остатку прогнозирования цветовой информации вокселов в объеме. Например, преобразователь 1303 создает одномерный массив посредством сканирования остатка прогнозирования в определенном порядке сканирования. Затем, преобразователь 1303 преобразует одномерный массив в частотную область посредством применения одномерного ортогонального преобразования к созданному одномерному массиву. Вследствие этого, когда значение остатка прогнозирования в объеме является аналогичным, значение низкочастотного компонента увеличивается, и значение высокочастотного компонента снижается. В связи с этим, можно более эффективно уменьшать объем кодирования в квантователе 1304.
[0392] Преобразователь 1303 не должен обязательно использовать ортогональное преобразование в одной размерности, но также может использовать ортогональное преобразование в двух или более размерностей. Например, преобразователь 1303 преобразует остаток прогнозирования в двумерный массив в определенном порядке сканирования и применяет двумерное ортогональное преобразование к полученному двумерному массиву. Преобразователь 1303 может выбирать способ ортогонального преобразования, который должен использоваться, из множества способов ортогонального преобразования. В этом случае, устройство 1300 кодирования трехмерных данных присоединяет, к потоку битов, информацию, указывающую то, какой способ ортогонального преобразования используется. Преобразователь 1303 может выбирать способ ортогонального преобразования, который должен использоваться, из множества способов ортогонального преобразования в различных размерностях. В этом случае, устройство 1300 кодирования трехмерных данных присоединяет, к потоку битов, то, в скольких размерностях используется способ ортогонального преобразования.
[0393] Например, преобразователь 1303 сопоставляет порядок сканирования остатка прогнозирования с порядком сканирования (в ширину, в глубину и т.п.) в дереве октантов в объеме. Это позволяет уменьшать объем служебной информации, поскольку информация, указывающая порядок сканирования остатка прогнозирования, не должна обязательно присоединяться к потоку битов. Преобразователь 1303 может применять порядок сканирования, отличающийся от порядка сканирования дерева октантов. В этом случае, устройство 1300 кодирования трехмерных данных присоединяет, к потоку битов, информацию, указывающую порядок сканирования остатка прогнозирования. Это обеспечивает возможность устройству 1300 кодирования трехмерных данных эффективно кодировать остаток прогнозирования. Устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, информацию (флаг и т.д.), указывающую то, следует или нет применять порядок сканирования дерева октантов, а также может присоединять, к потоку битов, информацию, указывающую порядок сканирования остатка прогнозирования, когда порядок сканирования дерева октантов не применяется.
[0394] Преобразователь 1303 не только преобразует остаток прогнозирования цветовой информации, а также может преобразовывать другую информацию атрибутов, включенную в вокселы. Например, преобразователь 1303 может преобразовывать и кодировать информацию, такую как информация коэффициента отражения, полученная при получении облака точек через лидар, и т.п.
[0395] Преобразователь 1303 может пропускать эти процессы, когда пространства не включают в себя информацию атрибутов, такую как цветовая информация. Устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, информацию (флаг), указывающую то, следует или нет пропускать процессы преобразователя 1303.
[0396] Квантователь 1304 формирует квантованный коэффициент посредством выполнения квантования с использованием управляющего параметра квантования для частотного компонента остатка прогнозирования, сформированного посредством преобразователя 1303. Вследствие этого, объем информации дополнительно уменьшается. Сформированный квантованный коэффициент выводится в энтропийный кодер 1313. Квантователь 1304 может управлять управляющим параметром квантования в единицах миров, единицах пространств или единицах объемов. В этом случае, устройство 1300 кодирования трехмерных данных присоединяет управляющий параметр квантования к каждой информации заголовка и т.п. Квантователь 1304 может выполнять управление квантованием посредством изменения весового коэффициента в расчете на частотный компонент остатка прогнозирования. Например, квантователь 1304 может точно квантовать низкочастотный компонент и примерно квантовать высокочастотный компонент. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять, к заголовку, параметр, выражающий весовой коэффициент каждого частотного компонента.
[0397] Квантователь 1304 может пропускать эти процессы, когда пространства не включают в себя информацию атрибутов, такую как цветовая информация. Устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, информацию (флаг), указывающую то, следует или нет пропускать процессы квантователя 1304.
[0398] Обратный квантователь 1305 формирует обратно квантованный коэффициент остатка прогнозирования посредством выполнения обратного квантования для квантованного коэффициента, сформированного посредством квантователя 1304 с использованием управляющего параметра квантования, и выводит сформированный обратно квантованный коэффициент в обратный преобразователь 1306.
[0399] Обратный преобразователь 1306 формирует остаток прогнозирования после применения обратного преобразования посредством применения обратного преобразования для обратно квантованного коэффициента, сформированного посредством обратного квантователя 1305. Этот остаток прогнозирования после применения обратного преобразования не должен обязательно полностью совпадать с остатком прогнозирования, выведенным посредством преобразователя 1303, поскольку остаток прогнозирования после применения обратного преобразования представляет собой остаток прогнозирования, который формируется после квантования.
[0400] Сумматор 1307 суммирует, чтобы формировать восстановленный объем (i), остаток прогнозирования после применения обратного преобразования, сформированный посредством обратного преобразователя 1306, с (ii) прогнозированным объемом, который формируется через внутреннее прогнозирование или внутреннее прогнозирование, которое описывается ниже и используется для того, чтобы формировать предварительный квантованный остаток прогнозирования. Этот восстановленный объем сохраняется в запоминающем устройстве 1308 опорных объемов или запоминающем устройстве 1310 опорных пространств.
[0401] Модуль 1309 внутреннего прогнозирования формирует прогнозированный объем целевого объема кодирования с использованием информации атрибутов соседнего объема, сохраненной в запоминающем устройстве 1308 опорных объемов. Информация атрибутов включает в себя цветовую информацию или коэффициент отражения вокселов. Модуль 1309 внутреннего прогнозирования формирует прогнозированное значение цветовой информации или коэффициент отражения целевого объема кодирования.
[0402] Фиг. 44 является схемой для описания операции модуля 1309 внутреннего прогнозирования. Например, модуль 1309 внутреннего прогнозирования формирует прогнозированный объем целевого объема кодирования (idx объема=3), показанный на фиг. 44, с использованием соседнего объема (idx объема=0). Idx объема здесь представляет собой информацию идентификатора, которая присоединяется к объему в пространстве, и различное значение назначается каждому объему. Порядок назначения idx объема может быть идентичным порядку кодирования, а также может отличаться от порядка кодирования. Например, модуль 1309 внутреннего прогнозирования использует среднее значение цветовой информации вокселов, включенных в idx объема=0, который представляет собой соседний объем, в качестве прогнозированного значения цветовой информации целевого объема кодирования, показанного на фиг. 44. В этом случае, остаток прогнозирования формируется посредством вычитания прогнозированного значения цветовой информации из цветовой информации каждого воксела, включенного в целевой объем кодирования. Следующие процессы выполняются посредством преобразователя 1303 и последующих процессоров относительно этого остатка прогнозирования. В этом случае, устройство 1300 кодирования трехмерных данных присоединяет, к потоку битов, информацию соседних объемов и информацию режима прогнозирования. Информация соседних объемов здесь представляет собой информацию, указывающую соседний объем, используемый при прогнозировании, и указывает, например, idx объема для соседнего объема, используемого при прогнозировании. Информация режима прогнозирования здесь указывает режим, используемый для того, чтобы формировать прогнозированный объем. Режим, например, представляет собой режим средних значений, в котором прогнозированное значение формируется с использованием среднего значения вокселов в соседнем объеме, или режим медиан, в котором прогнозированное значение формируется с использованием медианы вокселов в соседнем объеме.
[0403] Модуль 1309 внутреннего прогнозирования может формировать прогнозированный объем с использованием множества соседних объемов. Например, в структуре, показанной на фиг. 44, модуль 1309 внутреннего прогнозирования формирует прогнозированный объем 0 с использованием объема с idx объема=0 и формирует прогнозированный объем 1 с использованием объема с idx объема=1. Модуль 1309 внутреннего прогнозирования затем формирует среднее прогнозированного объема 0 и прогнозированного объема 1 в качестве конечного прогнозированного объема. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, множество idx объемов для множества объемов, используемых для того, чтобы формировать прогнозированный объем.
[0404] Фиг. 45 является схемой, принципиально показывающей процесс взаимного прогнозирования согласно настоящему варианту осуществления. Модуль 1311 взаимного прогнозирования кодирует (взаимно прогнозирует) пространство (SPC), ассоциированное с определенным временем T_Cur, с использованием кодированного пространства, ассоциированного с другим временем T_LX. В этом случае, модуль 1311 взаимного прогнозирования выполняет процесс кодирования посредством применения процесса вращения и перемещения в пространстве к кодированному пространству, ассоциированному с другим временем T_LX.
[0405] Устройство 1300 кодирования трехмерных данных присоединяет, к потоку битов, RT-информацию, связанную с процессом вращения и перемещения в пространстве, подходящим для пространства, ассоциированного с другим временем T_LX. Другое время T_LX, например, представляет собой время T_L0 перед определенным временем T_Cur. В этот момент, устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, RT-информацию RT_L0, связанную с процессом вращения и перемещения в пространстве, подходящим для пространства, ассоциированного со временем T_L0.
[0406] Альтернативно, другое время T_LX, например, представляет собой время T_L1 после определенного времени T_Cur. В этот момент, устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, RT-информацию RT_L1, связанную с процессом вращения и перемещения в пространстве, подходящим для пространства, ассоциированного со временем T_L1.
[0407] Альтернативно, модуль 1311 взаимного прогнозирования кодирует (двунаправленное прогнозирование) со ссылкой на пространства, ассоциированные со временем T_L0 и временем T_L1, которые отличаются друг от друга. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, как RT-информацию RT_L0, так и RT-информацию RT_L1, связанную с процессом вращения и перемещения в пространстве, подходящим для своих пространств.
[0408] Следует отметить, что T_L0 описывается как находящееся до T_Cur, а T_L1 как находящееся до после T_Cur, но не обязательно ограничивается этим. Например, оба из T_L0 и T_L1 могут находиться до T_Cur. Также оба из T_L0 и T_L1 могут находиться после T_Cur.
[0409] Устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, RT-информацию, связанную с процессом вращения и перемещения в пространстве, подходящим для пространств, ассоциированных с различными временами, при кодировании со ссылкой на каждые из пространств. Например, устройство 1300 кодирования трехмерных данных управляет множеством кодированных пространств, к которым следует обращаться, с использованием двух опорных списков (списка L0 и списка L1). Когда первое опорное пространство в списке L0 представляет собой L0R0, второе опорное пространство в списке L0 представляет собой L0R1, первое опорное пространство в списке L1 представляет собой L1R0, и второе опорное пространство в списке L1 представляет собой L1R1, устройство 1300 кодирования трехмерных данных присоединяет, к потоку битов, RT-информацию RT_L0R0 L0R0, RT-информацию RT_L0R1 L0R1, RT-информацию RT_L1R0 L1R0 и RT-информацию RT_L1R1 L1R1. Например, устройство 1300 кодирования трехмерных данных присоединяет эти фрагменты RT-информации к заголовку и т.п. потока битов.
[0410] Устройство 1300 кодирования трехмерных данных определяет то, следует или нет применять вращение и перемещение в пространстве в расчете на опорное пространство, при кодировании со ссылкой на опорные пространства, ассоциированные с различными временами. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять, к информации заголовка и т.п. потока битов, информацию (RT-флаг и т.д.), указывающую то, применяется или нет вращение и перемещение в пространстве в расчете на опорное пространство. Например, устройство 1300 кодирования трехмерных данных вычисляет RT-информацию и значение ошибки итеративного алгоритма ближайших точек (ICP), с использованием ICP-алгоритма в расчете на опорное пространство, на которое следует ссылаться из целевого пространства кодирования. Устройство 1300 кодирования трехмерных данных определяет то, что вращение и перемещение в пространстве не должно обязательно выполняться, и деактивирует RT-флаг, когда значение ICP-ошибки ниже или равно предварительно определенному фиксированному значению. Напротив, устройство 1300 кодирования трехмерных данных активирует RT-флаг и присоединяет RT-информацию к потоку битов, когда значение ICP-ошибки превышает вышеуказанное фиксированное значение.
[0411] Фиг. 46 является схемой, показывающей примерный синтаксис, который должен присоединяться к заголовку RT-информации и RT-флагу. Следует отметить, что число битов, назначенное каждому синтаксису, может определяться на основе диапазона этого синтаксиса. Например, когда восемь опорных пространств включаются в опорный список L0, 3 бита могут назначаться MaxRefSpc_l0. Число битов, которое должно назначаться, может быть переменным в соответствии со значением, которое может принимать каждый синтаксис, а также может быть фиксированным независимо от значения, которое может принимать каждый синтаксис. Когда число битов, которое должно назначаться, является фиксированным, устройство 1300 кодирования трехмерных данных может присоединять это фиксированное число битов к другой информации заголовка.
[0412] MaxRefSpc_l0, показанный на фиг. 46, указывает число опорных пространств, включенных в опорный список L0. RT_flag_l0[i] представляет собой RT-флаг опорного пространства i в опорном списке L0. Когда RT_flag_l0[i] равен 1, вращение и перемещение в пространстве применяются к опорному пространству i. Когда RT_flag_l0[i] равен 0, вращение и перемещение в пространстве не применяются к опорному пространству i.
[0413] R_l0[i] и T_l0[i] представляют собой RT-информацию опорного пространства i в опорном списке L0. R_l0[i] представляет собой информацию вращения опорного пространства i в опорном списке L0. Информация вращения указывает контент применяемого процесса вращения и, например, представляет собой матрицу вращения или кватернион. T_l0[i] представляет собой информацию перемещения в пространстве опорного пространства i в опорном списке L0. Информация перемещения в пространстве указывает контент применяемого процесса перемещения в пространстве и, например, представляет собой вектор перемещения в пространстве.
[0414] MaxRefSpc_l1 указывает число опорных пространств, включенных в опорный список L1. RT_flag_l1[i] представляет собой RT-флаг опорного пространства i в опорном списке L1. Когда RT_flag_l1[i] равен 1, вращение и перемещение в пространстве применяются к опорному пространству i. Когда RT_flag_l1[i] равен 0, вращение и перемещение в пространстве не применяются к опорному пространству i.
[0415] R_l1[i] и T_l1[i] представляют собой RT-информацию опорного пространства i в опорном списке L1. R_l1[i] представляет собой информацию вращения опорного пространства i в опорном списке L1. Информация вращения указывает контент применяемого процесса вращения и, например, представляет собой матрицу вращения или кватернион. T_l1[i] представляет собой информацию перемещения в пространстве опорного пространства i в опорном списке L1. Информация перемещения в пространстве указывает контент применяемого процесса перемещения в пространстве и, например, представляет собой вектор перемещения в пространстве.
[0416] Модуль 1311 взаимного прогнозирования формирует прогнозированный объем целевого объема кодирования с использованием информации относительно кодированного опорного пространства, сохраненной в запоминающем устройстве 1310 опорных пространств. Как указано выше, до формирования прогнозированного объема для целевого объема кодирования, модуль 1311 взаимного прогнозирования вычисляет RT-информацию в целевом пространстве кодирования и опорном пространстве с использованием ICP-алгоритма, чтобы приближаться к полной позиционной взаимосвязи между целевым пространством кодирования и опорным пространством. Модуль 1311 взаимного прогнозирования затем получает опорное пространство B посредством применения процесса вращения и перемещения в пространстве к опорному пространству с использованием вычисленной RT-информации. Затем, модуль 1311 взаимного прогнозирования формирует прогнозированный объем целевого объема кодирования в целевом пространстве кодирования с использованием информации в опорном пространстве B. Устройство 1300 кодирования трехмерных данных присоединяет, к информации заголовка и т.п. целевого пространства кодирования, RT-информацию, используемую для того, чтобы получать опорное пространство B.
[0417] Таким образом, модуль 1311 взаимного прогнозирования допускает повышение точности прогнозированного объема посредством формирования прогнозированного объема с использованием информации опорного пространства, после приближения к полной позиционной взаимосвязи между целевым пространством кодирования и опорным пространством, посредством применения процесса вращения и перемещения в пространстве к опорному пространству. Можно уменьшать объем кодирования, поскольку можно ограничивать остаток прогнозирования. Следует отметить, что описан пример, в котором ICP выполняется с использованием целевого пространства кодирования и опорного пространства, но не обязательно ограничивается этим. Например, модуль 1311 взаимного прогнозирования может вычислять RT-информацию посредством выполнения ICP с использованием, по меньшей мере, одного из (i) целевого пространства кодирования, в котором число вокселов или облаков точек отсекается, или (ii) опорного пространства, в котором число вокселов или облаков точек отсекается, чтобы уменьшать объем обработки.
[0418] Когда значение ICP-ошибки, полученное в качестве результата ICP, меньше предварительно определенного первого порогового значения, т.е. когда, например, позиционная взаимосвязь между целевым пространством кодирования и опорным пространством является аналогичной, модуль 1311 взаимного прогнозирования определяет то, что процесс вращения и перемещения в пространстве не требуется, и процесс вращения и перемещения в пространстве не должен обязательно выполняться. В этом случае, устройство 1300 кодирования трехмерных данных может управлять объемом служебной информации без присоединения RT-информации к потоку битов.
[0419] Когда значение ICP-ошибки превышает предварительно определенное второе пороговое значение, модуль 1311 взаимного прогнозирования определяет то, что изменение формы между пространствами является большим, и внутреннее прогнозирование может применяться ко всем объемам целевого пространства кодирования. В дальнейшем в этом документе, пространства, к которым применяется внутреннее прогнозирование, называются "внутренними пространствами". Второе пороговое значение превышает вышеуказанное первое пороговое значение. Настоящий вариант осуществления не ограничен ICP, и любой тип способа может использоваться при условии, что способ вычисляет RT-информацию с использованием двух вокселных наборов или двух наборов облаков точек.
[0420] Когда информация атрибутов, например, информация формы или цветовая информация, включается в трехмерные данные, модуль 1311 взаимного прогнозирования выполняет поиск, например, объема, информация атрибутов которого, например, информация формы или цветовая информация, является наиболее аналогичной целевому объему кодирования в опорном пространстве, в качестве прогнозированного объема для целевого объема кодирования в целевом пространстве кодирования. Это опорное пространство, например, представляет собой опорное пространство, для которого выполнен вышеуказанный процесс вращения и перемещения в пространстве. Модуль 1311 взаимного прогнозирования формирует прогнозированный объем с использованием объема (опорного объема), полученного через поиск. Фиг. 47 является схемой для описания операции формирования прогнозированного объема. При кодировании целевого объема кодирования (idx объема=0), показанного на фиг. 47 с использованием взаимного прогнозирования, модуль 1311 взаимного прогнозирования выполняет поиск объема с наименьшим остатком прогнозирования, который представляет собой разность между целевым объемом кодирования и опорным объемом, при последовательном сканировании опорного объема в опорном пространстве. Модуль 1311 взаимного прогнозирования выбирает объем с наименьшим остатком прогнозирования в качестве прогнозированного объема. Остатки прогнозирования целевого объема кодирования и прогнозированного объема кодируются посредством процессов, выполняемых посредством преобразователя 1303 и последующих процессоров. Остаток прогнозирования здесь представляет собой разность между информацией атрибутов целевого объема кодирования и информацией атрибутов прогнозированного объема. Устройство 1300 кодирования трехмерных данных присоединяет, к заголовку и т.п. потока битов, idx объема опорного объема в опорном пространстве, в качестве прогнозированного объема.
[0421] В примере, показанном на фиг. 47, опорный объем с idx объема=4 из опорного пространства L0R0 выбирается в качестве прогнозированного объема для целевого объема кодирования. Остатки прогнозирования целевого объема кодирования и опорного объема и idx опорного объема=4 затем кодируются и присоединяются к потоку битов.
[0422] Следует отметить, что описан пример, в котором прогнозированный объем информации атрибутов формируется, но идентичный процесс может применяться к прогнозированному объему информации позиции.
[0423] Контроллер 1312 прогнозирования управляет тем, следует кодировать целевой объем кодирования с использованием внутреннего прогнозирования или взаимного прогнозирования. Режим, включающий в себя внутреннее прогнозирование и взаимное прогнозирование, называется здесь "режимом прогнозирования". Например, контроллер 1312 прогнозирования вычисляет остаток прогнозирования, когда целевой объем кодирования прогнозируется с использованием внутреннего прогнозирования, и остаток прогнозирования, когда целевой объем кодирования прогнозируется с использованием взаимного прогнозирования, в качестве значений оценки и выбирает режим прогнозирования, значение оценки которого меньше. Следует отметить, что контроллер 1312 прогнозирования может вычислять фактический объем кодирования посредством применения ортогонального преобразования, квантования и энтропийного кодирования к остатку прогнозирования внутреннего прогнозирования и к остатку прогнозирования взаимного прогнозирования и выбирать режим прогнозирования с использованием вычисленного объема кодирования в качестве значения оценки. Служебная информация (информация idx опорных объемов и т.д.), отличная от остатка прогнозирования, может добавляться в значение оценки. Контроллер 1312 прогнозирования может непрерывно выбирать внутреннее прогнозирование, когда заранее определена необходимость кодировать целевое пространство кодирования с использованием внутреннего пространства.
[0424] Энтропийный кодер 1313 формирует кодированный сигнал (кодированный поток битов) посредством кодирования переменной длины квантованного коэффициента, который представляет собой ввод из квантователя 1304. Конкретно, энтропийный кодер 1313, например, преобразует в двоичную форму квантованный коэффициент и арифметически кодирует получаемый двоичный сигнал.
[0425] Далее описывается устройство декодирования трехмерных данных, которое декодирует кодированный сигнал, сформированный посредством устройства 1300 кодирования трехмерных данных. Фиг. 48 является блок-схемой устройства 1400 декодирования трехмерных данных согласно настоящему варианту осуществления. Это устройство 1400 декодирования трехмерных данных включает в себя энтропийный декодер 1401, обратный квантователь 1402, обратный преобразователь 1403, сумматор 1404, запоминающее устройство 1405 опорных объемов, модуль 1406 внутреннего прогнозирования, запоминающее устройство 1407 опорных пространств, модуль 1408 взаимного прогнозирования и контроллер 1409 прогнозирования.
[0426] Энтропийный декодер 1401 декодирует на основе кода переменной длины кодированный сигнал (кодированный поток битов). Например, энтропийный декодер 1401 формирует двоичный сигнал посредством арифметического декодирования кодированного сигнала и формирует квантованный коэффициент с использованием сформированного двоичного сигнала.
[0427] Обратный квантователь 1402 формирует обратно квантованный коэффициент посредством обратного квантования квантованного коэффициента, введенного из энтропийного декодера 1401, с использованием параметра квантования, присоединенного к потоку битов, и т.п.
[0428] Обратный преобразователь 1403 формирует остаток прогнозирования посредством обратного преобразования обратно квантованного коэффициента, введенного из обратного квантователя 1402. Например, обратный преобразователь 1403 формирует остаток прогнозирования посредством обратного ортогонального преобразования обратно квантованного коэффициента, на основе информации, присоединенной к потоку битов.
[0429] Сумматор 1404 суммирует, чтобы формировать восстановленный объем, (i) остаток прогнозирования, сформированный посредством обратного преобразователя 1403, с (ii) прогнозированным объемом, сформированным через внутреннее прогнозирование или внутреннее прогнозирование. Этот восстановленный объем выводится в качестве декодированных трехмерных данных и сохраняется в запоминающем устройстве 1405 опорных объемов или запоминающем устройстве 1407 опорных пространств.
[0430] Модуль 1406 внутреннего прогнозирования формирует прогнозированный объем через внутреннее прогнозирование с использованием опорного объема в запоминающем устройстве 1405 опорных объемов и информации, присоединенной к потоку битов. Конкретно, модуль 1406 внутреннего прогнозирования получает информацию соседних объемов (например, idx объема), присоединенную к потоку битов, и информацию режима прогнозирования и формирует прогнозированный объем через режим, указываемый посредством информации режима прогнозирования, с использованием соседнего объема, указываемого в информации соседних объемов. Следует отметить, что конкретика этих процессов является идентичной вышеуказанным процессам, выполняемым посредством модуля 1309 внутреннего прогнозирования, за исключением того, для чего используется информация, присоединенная к потоку битов.
[0431] Модуль 1408 взаимного прогнозирования формирует прогнозированный объем через взаимное прогнозирование с использованием опорного пространства в запоминающем устройстве 1407 опорных пространств и информации, присоединенной к потоку битов. Конкретно, модуль 1408 взаимного прогнозирования применяет процесс вращения и перемещения в пространстве к опорному пространству с использованием RT-информации в расчете на опорное пространство, присоединенной к потоку битов, и формирует прогнозированный объем с использованием опорного пространства после вращения и перемещения в пространстве. Следует отметить, что, когда RT-флаг присутствует в потоке битов в расчете на опорное пространство, модуль 1408 взаимного прогнозирования применяет процесс вращения и перемещения в пространстве к опорному пространству в соответствии с RT-флагом. Следует отметить, что конкретика этих процессов является идентичной вышеуказанным процессам, выполняемым посредством модуля 1311 взаимного прогнозирования, за исключением того, для чего используется информация, присоединенная к потоку битов.
[0432] Контроллер 1409 прогнозирования управляет тем, следует декодировать целевой объем декодирования с использованием внутреннего прогнозирования или взаимного прогнозирования. Например, контроллер 1409 прогнозирования выбирает внутреннее прогнозирование или взаимное прогнозирование в соответствии с информацией, которая присоединяется к потоку битов, и указывает режим прогнозирования, который должен использоваться. Следует отметить, что контроллер 1409 прогнозирования может непрерывно выбирать внутреннее прогнозирование, когда заранее определена необходимость декодировать целевое пространство декодирования с использованием внутреннего пространства.
[0433] В дальнейшем в этом документе описываются варьирования настоящего варианта осуществления. В настоящем варианте осуществления, описан пример, в котором вращение и перемещение в пространстве применяется в единицах пространств, но вращение и перемещение в пространстве также может применяться в меньших единицах. Например, устройство 1300 кодирования трехмерных данных может разделять пространство на подпространства и применять вращение и перемещение в пространстве в единицах подпространств. В этом случае, устройство 1300 кодирования трехмерных данных формирует RT-информацию в расчете на подпространство и присоединяет сформированную RT-информацию к заголовку и т.п. потока битов. Устройство 1300 кодирования трехмерных данных может применять вращение и перемещение в пространстве в единицах объемов, которые представляют собой единицу кодирования. В этом случае, устройство 1300 кодирования трехмерных данных формирует RT-информацию в единицах кодированных объемов и присоединяет сформированную RT-информацию к заголовку и т.п. потока битов. Вышеуказанное также может комбинироваться. Другими словами, устройство 1300 кодирования трехмерных данных может применять вращение и перемещение в пространстве в больших единицах и затем применять вращение и перемещение в пространстве в небольших единицах. Например, устройство 1300 кодирования трехмерных данных может применять вращение и перемещение в пространстве в единицах пространств, а также может применять различные вращения и перемещения в пространстве к каждому из множества объемов, включенных в полученные пространства.
[0434] В настоящем варианте осуществления, описан пример, в котором вращение и перемещение в пространстве применяется к опорному пространству, но не обязательно ограничивается этим. Например, устройство 1300 кодирования трехмерных данных может применять процесс масштабирования и изменять размер трехмерных данных. Устройство 1300 кодирования трехмерных данных также может применять одно или два из вращения, перемещения в пространстве и масштабирования. При применении процессов на нескольких стадиях и различных единицах, как указано выше, тип процессов, применяемых в каждой единице, может отличаться. Например, вращение и перемещение в пространстве может применяться в единицах пространств, и перемещение в пространстве может применяться в единицах объемов.
[0435] Следует отметить, что эти варьирования также являются применимыми к устройству 1400 декодирования трехмерных данных.
[0436] Как указано выше, устройство 1300 кодирования трехмерных данных согласно настоящему варианту осуществления выполняет следующие процессы. Фиг. 48 является блок-схемой последовательности операций способа для процесса взаимного прогнозирования, выполняемого посредством устройства 1300 кодирования трехмерных данных.
[0437] Устройство 1300 кодирования трехмерных данных формирует прогнозированную информацию позиции (например, прогнозированный объем) с использованием информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные (например, опорное пространство), ассоциированные со временем, отличающимся от времени, ассоциированного с текущими трехмерными данными (например, целевым пространством кодирования) (S1301). Конкретно, устройство 1300 кодирования трехмерных данных формирует прогнозированную информацию позиции посредством применения процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные.
[0438] Следует отметить, что устройство 1300 кодирования трехмерных данных может выполнять процесс вращения и перемещения в пространстве с использованием первой единицы (например, пространств) и может выполнять формирование прогнозированной информации позиции с использованием второй единицы (например, объемов), которая меньше первой единицы. Например, устройство 1300 кодирования трехмерных данных выполняет поиск объема из множества объемов, включенных в опорное пространство после вращения и перемещения в пространстве, информация позиции которого отличается меньше всего от информации позиции целевого объема кодирования, включенного в целевое пространство кодирования. Следует отметить, что устройство 1300 кодирования трехмерных данных может выполнять процесс вращения и перемещения в пространстве и формирование прогнозированной информации позиции в идентичной единице.
[0439] Устройство 1300 кодирования трехмерных данных может формировать прогнозированную информацию позиции посредством применения (i) первого процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные, и (ii) второго процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, полученной через первый процесс вращения и перемещения в пространстве, причем первый процесс вращения и перемещения в пространстве использует первую единицу (например, пространства), и причем второй процесс вращения и перемещения в пространстве использует вторую единицу (например, объемы), которая меньше первой единицы.
[0440] Например, как проиллюстрировано на фиг. 41, информация позиции относительно трехмерных точек и прогнозированная информация позиции представляется с использованием структуры в виде дерева октантов. Например, информация позиции относительно трехмерных точек и прогнозированная информация позиции выражается в порядке сканирования, который приоритезирует широту выше глубины в структуре в виде дерева октантов. Например, информация позиции относительно трехмерных точек и прогнозированная информация позиции выражается в порядке сканирования, который приоритезирует глубину выше широты в структуре в виде дерева октантов.
[0441] Как проиллюстрировано на фиг. 46, устройство 1300 кодирования трехмерных данных кодирует RT-флаг, который указывает то, следует или нет применять процесс вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные. Другими словами, устройство 1300 кодирования трехмерных данных формирует кодированный сигнал (кодированный поток битов), включающий в себя RT-флаг. Устройство 1300 кодирования трехмерных данных кодирует RT-информацию, которая указывает контент процесса вращения и перемещения в пространстве. Другими словами, устройство 1300 кодирования трехмерных данных формирует кодированный сигнал (кодированный поток битов), включающий в себя RT-информацию. Следует отметить, что устройство 1300 кодирования трехмерных данных может кодировать RT-информацию, когда RT-флаг указывает необходимость применять процесс вращения и перемещения в пространстве, и не должен обязательно кодировать RT-информацию, когда RT-флаг указывает необходимость не применять процесс вращения и перемещения в пространстве.
[0442] Трехмерные данные включают в себя, например, информацию позиции относительно трехмерных точек и информацию атрибутов (цветовую информацию и т.д.) каждой трехмерной точки. Устройство 1300 кодирования трехмерных данных формирует прогнозированную информацию атрибутов с использованием информации атрибутов трехмерных точек, включенных в трехмерные опорные данные (S1302).
[0443] Устройство 1300 кодирования трехмерных данных затем кодирует информацию позиции относительно трехмерных точек, включенных в текущие трехмерные данные, с использованием прогнозированной информации позиции. Например, как проиллюстрировано на фиг. 38, устройство 1300 кодирования трехмерных данных вычисляет дифференциальную информацию позиции, причем дифференциальная информация позиции представляет собой разность между прогнозированной информацией позиции и информацией позиции относительно трехмерных точек, включенных в текущие трехмерные данные (S1303).
[0444] Устройство 1300 кодирования трехмерных данных кодирует информацию атрибутов трехмерных точек, включенных в текущие трехмерные данные, с использованием прогнозированной информации атрибутов. Например, устройство 1300 кодирования трехмерных данных вычисляет дифференциальную информацию атрибутов, причем дифференциальная информация атрибутов представляет собой разность между прогнозированной информацией атрибутов и информацией атрибутов относительно трехмерных точек, включенных в текущие трехмерные данные (S1304). Устройство 1300 кодирования трехмерных данных затем выполняет преобразование и квантование для вычисленной дифференциальной информации атрибутов (S1305).
[0445] В завершение, устройство 1300 кодирования трехмерных данных кодирует (например, энтропийно кодирует) дифференциальную информацию позиции и квантованную дифференциальную информацию атрибутов (S1036). Другими словами, устройство 1300 кодирования трехмерных данных формирует кодированный сигнал (кодированный поток битов), включающий в себя дифференциальную информацию позиции и дифференциальную информацию атрибутов.
[0446] Следует отметить, что, когда информация атрибутов не включается в трехмерные данные, устройство 1300 кодирования трехмерных данных не должно обязательно выполнять этапы S1302, S1304 и S1305. Устройство 1300 кодирования трехмерных данных также может выполнять только одно из кодирования информации позиции относительно трехмерных точек и кодирования информации атрибутов трехмерных точек.
[0447] Порядок процессов, показанных на фиг. 49, представляет собой просто пример и не ограничен этим. Например, поскольку процессы относительно информации позиции (S1301 и S1303) и процессы относительно информации атрибутов (S1302, S1304 и S1305) являются отдельными друг от друга, они могут выполняться в предпочтительном порядке, и их часть также может выполняться параллельно.
[0448] В силу вышеуказанного, устройство 1300 кодирования трехмерных данных согласно настоящему варианту осуществления формирует прогнозированную информацию позиции с использованием информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные, ассоциированные со временем, отличающимся от времени, ассоциированного с текущими трехмерными данными; и кодирует дифференциальную информацию позиции, которая представляет собой разность между прогнозированной информацией позиции и информацией позиции относительно трехмерных точек, включенных в текущие трехмерные данные. Это позволяет повышать эффективность кодирования, поскольку можно уменьшать объем данных кодированного сигнала.
[0449] Устройство 1300 кодирования трехмерных данных согласно настоящему варианту осуществления формирует прогнозированную информацию атрибутов с использованием информации атрибутов относительно трехмерных точек, включенных в трехмерные опорные данные; и кодирует дифференциальную информацию атрибутов, которая представляет собой разность между прогнозированной информацией атрибутов и информацией атрибутов относительно трехмерных точек, включенных в текущие трехмерные данные. Это позволяет повышать эффективность кодирования, поскольку можно уменьшать объем данных кодированного сигнала.
[0450] Например, устройство 1300 кодирования трехмерных данных включает в себя процессор и запоминающее устройство. Процессор использует запоминающее устройство для того, чтобы выполнять вышеуказанные процессы.
[0451] Фиг. 48 является блок-схемой последовательности операций способа для процесса взаимного прогнозирования, выполняемого посредством устройства 1400 декодирования трехмерных данных.
[0452] Устройство 1400 декодирования трехмерных данных декодирует (например, энтропийно декодирует) дифференциальную информацию позиции и дифференциальную информацию атрибутов из кодированного сигнала (кодированного потока битов) (S1401).
[0453] Устройство 1400 декодирования трехмерных данных декодирует, из кодированного сигнала, RT-флаг, который указывает то, следует или нет применять процесс вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные. Устройство 1400 декодирования трехмерных данных кодирует RT-информацию, которая указывает контент процесса вращения и перемещения в пространстве. Следует отметить, что устройство 1400 декодирования трехмерных данных может декодировать RT-информацию, когда RT-флаг указывает необходимость применять процесс вращения и перемещения в пространстве, и не должен обязательно декодировать RT-информацию, когда RT-флаг указывает необходимость не применять процесс вращения и перемещения в пространстве.
[0454] Устройство 1400 декодирования трехмерных данных затем выполняет обратное преобразование и обратное квантование для декодированной дифференциальной информации атрибутов (S1402).
[0455] Устройство 1400 декодирования трехмерных данных затем формирует прогнозированную информацию позиции (например, прогнозированный объем) с использованием информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные (например, опорное пространство), ассоциированные со временем, отличающимся от времени, ассоциированного с текущими трехмерными данными (например, целевым пространством декодирования) (S1403). Конкретно, устройство 1400 декодирования трехмерных данных формирует прогнозированную информацию позиции посредством применения процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные.
[0456] Более конкретно, когда RT-флаг указывает необходимость применять процесс вращения и перемещения в пространстве, устройство 1400 декодирования трехмерных данных применяет процесс вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные, указываемые в RT-информации. Напротив, когда RT-флаг указывает необходимость не применять процесс вращения и перемещения в пространстве, устройство 1400 декодирования трехмерных данных не применяет процесс вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные.
[0457] Следует отметить, что устройство 1400 декодирования трехмерных данных может выполнять процесс вращения и перемещения в пространстве с использованием первой единицы (например, пространств) и может выполнять формирование прогнозированной информации позиции с использованием второй единицы (например, объемов), которая меньше первой единицы. Следует отметить, что устройство 1400 декодирования трехмерных данных может выполнять процесс вращения и перемещения в пространстве и формирование прогнозированной информации позиции в идентичной единице.
[0458] Устройство 1400 декодирования трехмерных данных может формировать прогнозированную информацию позиции посредством применения (i) первого процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные, и (ii) второго процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, полученной через первый процесс вращения и перемещения в пространстве, причем первый процесс вращения и перемещения в пространстве использует первую единицу (например, пространства), и причем второй процесс вращения и перемещения в пространстве использует вторую единицу (например, объемы), которая меньше первой единицы.
[0459] Например, как проиллюстрировано на фиг. 41, информация позиции относительно трехмерных точек и прогнозированная информация позиции представляется с использованием структуры в виде дерева октантов. Например, информация позиции относительно трехмерных точек и прогнозированная информация позиции выражается в порядке сканирования, который приоритезирует широту выше глубины в структуре в виде дерева октантов. Например, информация позиции относительно трехмерных точек и прогнозированная информация позиции выражается в порядке сканирования, который приоритезирует глубину выше широты в структуре в виде дерева октантов.
[0460] Устройство 1400 декодирования трехмерных данных формирует прогнозированную информацию атрибутов с использованием информации атрибутов трехмерных точек, включенных в трехмерные опорные данные (S1404).
[0461] Устройство 1400 декодирования трехмерных данных затем восстанавливает информацию позиции относительно трехмерных точек, включенных в текущие трехмерные данные, посредством декодирования кодированной информации позиции, включенной в кодированный сигнал, с использованием прогнозированной информации позиции. Кодированная информация позиции здесь представляет собой дифференциальную информацию позиции. Устройство 1400 декодирования трехмерных данных восстанавливает информацию позиции относительно трехмерных точек, включенных в текущие трехмерные данные, посредством добавления дифференциальной информации позиции в прогнозированную информацию позиции (S1405).
[0462] Устройство 1400 декодирования трехмерных данных восстанавливает информацию атрибутов трехмерных точек, включенных в текущие трехмерные данные, посредством декодирования кодируемой информации атрибутов, включенной в кодированный сигнал, с использованием прогнозированной информации атрибутов. Кодированная информация атрибутов здесь представляет собой дифференциальную информацию позиции. Устройство 1400 декодирования трехмерных данных восстанавливает информацию атрибутов относительно трехмерных точек, включенных в текущие трехмерные данные, посредством добавления дифференциальной информации атрибутов в прогнозированную информацию атрибутов (S1406).
[0463] Следует отметить, что, когда информация атрибутов не включается в трехмерные данные, устройство 1400 декодирования трехмерных данных не должно обязательно выполнять этапы S1402, S1404 и S1406. Устройство 1400 декодирования трехмерных данных также может выполнять только одно из декодирования информации позиции относительно трехмерных точек и декодирования информации атрибутов трехмерных точек.
[0464] Порядок процессов, показанных на фиг. 50, представляет собой просто пример и не ограничен этим. Например, поскольку процессы относительно информации позиции (S1403 и S1405) и процессы относительно информации атрибутов (S1402, S1404 и S1406) являются отдельными друг от друга, они могут выполняться в предпочтительном порядке, и их часть также может выполняться параллельно.
Вариант 8 осуществления
[0465]
В настоящем варианте осуществления, в дальнейшем описывается средство представления трехмерных точек (облака точек) при кодировании трехмерных данных.
[0466] Фиг. 51 является блок-схемой, показывающей структуру системы распространения трехмерных данных согласно настоящему варианту осуществления. Система распространения, показанная на фиг. 51, включает в себя сервер 1501 и множество клиентов 1502.
[0467] Сервер 1501 включает в себя устройство 1511 хранения данных и контроллер 1512. Устройство 1511 хранения данных сохраняет кодированную трехмерную карту 1513, которая представляет собой кодированные трехмерные данные.
[0468] Фиг. 52 является схемой, показывающей примерную структуру потока битов кодированной трехмерной карты 1513. Трехмерная карта разделяется на множество субкарт, и каждая субкарта кодируется. К каждой субкарте присоединяется заголовок произвольного доступа (RA), включающий в себя субкоординатную информацию. Субкоординатная информация используется для повышения эффективности кодирования субкарты. Эта субкоординатная информация указывает субкоординаты субкарты. Субкоординаты представляют собой координаты субкарты, имеющей опорные координаты в качестве ссылки. Следует отметить, что трехмерная карта, включающая в себя множество субкарт, называется "полной картой". Координаты, которые представляют собой ссылку в полной карте (например, начало координат), называются "опорным координатами". Другими словами, субкоординаты представляют собой координаты субкарты в системе координат полной карты. Другими словами, субкоординаты указывают смещение между системой координат полной карты и системой координат субкарты. Координаты в системе координат полной карты, имеющей опорные координаты в качестве ссылки, называются "полными координатами". Координаты в системе координат субкарты, имеющей субкоординаты в качестве ссылки, называются "дифференциальными координатами".
[0469] Клиент 1502 передает сообщение на сервер 1501. Это сообщение включает в себя информацию позиции относительно клиента 1502. Контроллер 1512, включенный в сервер 1501, получает поток битов субкарты, расположенной ближе всего к клиенту 1502, на основе информации позиции, включенной в принимаемое сообщение. Поток битов субкарты включает в себя субкоординатную информацию и передается в клиент 1502. Декодер 1521, включенный в клиент 1502, получает полные координаты субкарты, имеющей опорные координаты в качестве ссылки, с использованием этой субкоординатной информации. Приложение 1522, включенное в клиент 1502, выполняет приложение, связанное с собственным местоположением, с использованием полученных полных координат субкарты.
[0470] Субкарта указывает частичную зону полной карты. Субкоординаты представляют собой координаты, в которых субкарта расположена в опорном координатном пространстве полной карты. Например, в полной карте, называемой "A", имеются субкарта A, называемая "AA", и субкарта B, называемая "AB". Когда транспортное средство хочет обращаться к карте AA, декодирование начинается с субкарты A, а когда транспортное средство хочет обращаться к карте AB, декодирование начинается с субкарты B. Субкарта здесь представляет собой точку произвольного доступа. Конкретно, A - это Префектура Осаки, AA - это Осака-Сити, и AB - это Такацуки-Сити.
[0471] Каждая субкарта передается наряду с субкоординатной информацией в клиент. Субкоординатная информация включается в информацию заголовка каждой субкарты, передаваемый пакет и т.п.
[0472] Опорные координаты, которые служат в качестве ссылки для субкоординатной информации каждой субкарты, могут присоединяться к информации заголовка пространства на более высоком уровне, чем субкарта, к примеру, к информации заголовка полной карты.
[0473] Субкарта может формироваться посредством одного пространства (SPC). Субкарта также может формироваться посредством множества SPC.
[0474] Субкарта может включать в себя группу пространств (GOS). Субкарта может формироваться посредством мира. Например, в случае если предусмотрено множество объектов в субкарте, субкарта формируется посредством множества SPC при назначении множества объектов, чтобы разделять SPC. Субкарта формируется посредством одного SPC при назначении множества объектов одному SPC.
[0475] Далее описывается преимущество в отношении эффективности кодирования, при использовании субкоординатной информации. Фиг. 53 является схемой для описания этого преимущества. Например, высокое число битов необходимо для того, чтобы кодировать трехмерную точку A, которая расположена на большом расстоянии от опорных координат, показанных на фиг. 53. Расстояние между субкоординатами и трехмерной точкой A меньше расстояния между опорными координатами и трехмерной точкой A. В связи с этим, можно повышать эффективность кодирования посредством кодирования координат трехмерной точки A, имеющей субкоординаты в качестве ссылки, больше, чем при кодировании координат трехмерной точки A, имеющей опорные координаты в качестве ссылки. Поток битов субкарты включает в себя субкоординатную информацию. Посредством передачи потока битов субкарты и опорных координат в конец декодирования (клиент), можно восстанавливать полные координаты субкарты в конце декодера.
[0476] Фиг. 54 является блок-схемой последовательности операций способа для процессов, выполняемых посредством сервера 1501, который представляет собой передающий конец субкарты.
[0477] Сервер 1501 сначала принимает сообщение, включающее в себя информацию позиции относительно клиента 1502, из клиента 1502 (S1501). Контроллер 1512 получает кодированный поток битов субкарты на основе информации позиции относительно клиента из устройства 1511 хранения данных (S1502). Сервер 1501 затем передает кодированный поток битов субкарты и опорных координат в клиент 1502 (S1503).
[0478] Фиг. 55 является блок-схемой последовательности операций способа для процессов, выполняемых посредством клиента 1502, который представляет собой приемный конец субкарты.
[0479] Клиент 1502 сначала принимает кодированный поток битов субкарты и опорных координат, передаваемый из сервера 1501 (S1511). Клиент 1502 затем получает субкоординатную информацию субкарты посредством декодирования кодированного потока битов (S1512). Клиент 1502 затем восстанавливает дифференциальные координаты в субкарте в полные координаты, с использованием опорных координат и субкоординат (S1513).
[0480] Далее описывается примерный синтаксис информации, связанной с субкартой. При кодировании, субкарты устройство кодирования трехмерных данных вычисляет дифференциальные координаты посредством вычитания субкоординат из координат каждого облака точек (трехмерных точек). Устройство кодирования трехмерных данных затем кодирует дифференциальные координаты в поток битов в качестве значения каждого облака точек. Устройство кодирования кодирует субкоординатную информацию, указывающую субкоординаты в качестве информации заголовка потока битов. Это обеспечивает возможность устройству декодирования трехмерных данных получать полные координаты каждого облака точек. Например, устройство кодирования трехмерных данных включается в сервер 1501, и устройство декодирования трехмерных данных включается в клиент 1502.
[0481] Фиг. 56 является схемой, показывающей примерный синтаксис субкарты. NumOfPoint, показанный на фиг. 56, указывает общее число облаков точек, включенных в субкарту; sub_coordinate_x, sub_coordinate_y и sub_coordinate_z представляют собой субкоординатную информацию; sub_coordinate_x указывает координату X субкоординат; sub_coordinate_y указывает координату Y субкоординат; sub_coordinate_z указывает координату Z субкоординат.
[0482] Diff_x[i], diff_y[i] и diff_z[i] представляют собой дифференциальные координаты i-го облака точек в субкарте; diff_x[i] представляет собой дифференциальное значение между координатой X i-го облака точек и координатой X субкоординат в субкарте; diff_y[i] представляет собой дифференциальное значение между координатой Y i-го облака точек и координатой Y субкоординат в субкарте; diff_z[i] представляет собой дифференциальное значение между координатой Z i-го облака точек и координатой Z субкоординат в субкарте.
[0483] Устройство декодирования трехмерных данных декодирует point_cloud[i] _x, point_cloud[i] _y и point_cloud[i] _z, которые являются полными координатами i-го облака точек, с использованием нижеприведенного выражения; point_cloud[i] _x является координатой X полных координат i-го облака точек; point_cloud[i] _y является координатой Y полных координат i-го облака точек; point_cloud[i] _z является координатой Z полных координат i-го облака точек.
[0484] point_cloud[i] _x=sub_coordinate_x+diff_x[i]
point_cloud[i] _y=sub_coordinate_y+diff_y[i]
point_cloud[i] _z=sub_coordinate_z+diff_z[i]
[0485] Далее описывается процесс переключения для применения кодирования на основе дерева октантов. Устройство кодирования трехмерных данных выбирает, при кодировании субкарты, то, следует кодировать каждое облако точек с использованием представления в виде дерева октантов (в дальнейшем в этом документе называется "кодированием на основе дерева октантов") или кодировать дифференциальные значения из субкоординат (в дальнейшем в этом документе называется "кодированием не на основе дерева октантов"). Фиг. 57 является схемой, принципиально показывающей эту операцию. Например, устройство кодирования трехмерных данных применяет кодирование на основе дерева октантов к субкарте, когда общее число облаков точек в субкарте составляет, по меньшей мере, предварительно определенное пороговое значение. Устройство кодирования трехмерных данных применяет кодирование не на основе дерева октантов к субкарте, когда общее число облаков точек в субкарте ниже предварительно определенного порогового значения. Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования, поскольку можно надлежащим образом выбирать то, следует использовать кодирование на основе дерева октантов или кодирование не на основе дерева октантов, в соответствии с формой и плотностью объектов, включенных в субкарту.
[0486] Устройство кодирования трехмерных данных присоединяет, к заголовку и т.п. субкарты, информацию, указывающую то, кодирование на основе дерева октантов или кодирование не на основе дерева октантов применяется к субкарте (в дальнейшем в этом документе называется "информацией применения кодирования на основе дерева октантов"). Это обеспечивает возможность устройству декодирования трехмерных данных идентифицировать то, получается поток битов посредством кодирования на основе дерева октантов субкарты или кодирования не на основе дерева октантов субкарты.
[0487] Устройство кодирования трехмерных данных может вычислять эффективность кодирования при применении кодирования на основе дерева октантов и эффективности кодирования при применении кодирования не на основе дерева октантов к идентичному облаку точек и применять способ кодирования, эффективность кодирования которого лучше, к субкарте.
[0488] Фиг. 58 является схемой, показывающей примерный синтаксис субкарты при выполнении этого переключения; coding_type, показанный на фиг. 58, представляет собой информацию, указывающую тип кодирования и вышеуказанная информация применения кодирования на основе дерева октантов; coding_type=00 указывает то, что кодирование на основе дерева октантов применяется; coding_type=01 указывает то, что кодирование не на основе дерева октантов применяется; coding_type=10 или 11 указывает то, что способ кодирования и т.п., отличный от вышеуказанных способов кодирования, применяется.
[0489] Когда тип кодирования представляет собой кодирование не на основе дерева октантов (non_octree), субкарта включает в себя NumOfPoint и субкоординатную информацию (sub_coordinate_x, sub_coordinate_y и sub_coordinate_z).
[0490] Когда тип кодирования представляет собой кодирование на основе дерева октантов (дерево октантов), субкарта включает в себя octree_info; octree_info представляет собой информацию, необходимую для кодирования на основе дерева октантов, и включает в себя, например, информацию глубины.
[0491] Когда тип кодирования представляет собой кодирование не на основе дерева октантов (non_octree), субкарта включает в себя дифференциальные координаты (diff_x[i], diff_y[i] и diff_z[i]).
[0492] Когда тип кодирования представляет собой кодирование на основе дерева октантов (дерево октантов), субкарта включает в себя octree_data, который представляет собой кодированные данные, связанные с кодированием на основе дерева октантов.
[0493] Следует отметить, что здесь описывается пример, в котором система координат XYZ используется в качестве системы координат облака точек, но также может использоваться система полярных координат.
[0494] Фиг. 59 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных. Устройство кодирования трехмерных данных сначала вычисляет общее число облаков точек в текущей субкарте, которая представляет собой субкарту, которая должна обрабатываться (S1521). Устройство кодирования трехмерных данных затем определяет то, составляет вычисленное общее число облаков точек или нет, по меньшей мере, предварительно определенное пороговое значение (S1522).
[0495] Когда общее число облаков точек составляет, по меньшей мере, предварительно определенное пороговое значение ("Да" на S1522), устройство кодирования трехмерных данных применяет кодирование на основе дерева октантов к текущей субкарте (S1523). Устройство кодирования трехмерных данных присоединяет, к заголовку потока битов, информацию применения кодирования на основе дерева октантов, указывающую то, что кодирование на основе дерева октантов применяется к текущей субкарте (S1525).
[0496] Напротив, когда общее число облаков точек ниже предварительно определенного порогового значения ("Нет" на S1522), устройство кодирования трехмерных данных применяет кодирование не на основе дерева октантов к текущей субкарте (S1524). Устройство кодирования трехмерных данных присоединяет, к заголовку потока битов, информацию применения кодирования на основе дерева октантов, указывающую то, что кодирование не на основе дерева октантов применяется к текущей субкарте (S1525).
[0497] Фиг. 60 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, выполняемого посредством устройства декодирования трехмерных данных. Устройство декодирования трехмерных данных сначала декодирует информацию применения кодирования на основе дерева октантов из заголовка потока битов (S1531). Устройство декодирования трехмерных данных затем определяет то, представляет или нет тип кодирования, применяемый к текущей субкарте, собой кодирование на основе дерева октантов, на основе декодированной информации применения кодирования на основе дерева октантов (S1532).
[0498] Когда информация применения кодирования на основе дерева октантов указывает то, что тип кодирования представляет собой кодирование на основе дерева октантов ("Да" на S1532), устройство декодирования трехмерных данных декодирует текущую субкарту через декодирование на основе дерева октантов (S1533). Напротив, когда информация применения кодирования на основе дерева октантов указывает то, что тип кодирования представляет собой кодирование не на основе дерева октантов ("Нет" на S1532), устройство декодирования трехмерных данных декодирует текущую субкарту через декодирование не на основе дерева октантов (S1534).
[0499] В дальнейшем в этом документе описываются варьирования настоящего варианта осуществления. Фиг. 61-63 являются схемами, принципиально показывающими операции варьирований процесса переключения типа кодирования.
[0500] Как проиллюстрировано на фиг. 61, устройство кодирования трехмерных данных может выбирать то, следует применять кодирование на основе дерева октантов или кодирование не на основе дерева октантов в расчете на пространство. В этом случае, устройство кодирования трехмерных данных присоединяет информацию применения кодирования на основе дерева октантов к заголовку пространства. Это обеспечивает возможность устройству декодирования трехмерных данных определять то, применяется или нет кодирование на основе дерева октантов в расчете на пространство. В этом случае, устройство кодирования трехмерных данных задает субкоординаты в расчете на пространство и кодирует дифференциальное значение, которое является значением субкоординат, вычитаемых из координат каждого облака точек в пространстве.
[0501] Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования, поскольку можно надлежащим образом выбирать то, следует или нет применять кодирование на основе дерева октантов, в соответствии с формой объектов или общим числом облаков точек в пространстве.
[0502] Как проиллюстрировано на фиг. 62, устройство кодирования трехмерных данных может выбирать то, следует применять кодирование на основе дерева октантов или кодирование не на основе дерева октантов в расчете на объем. В этом случае, устройство кодирования трехмерных данных присоединяет информацию применения кодирования на основе дерева октантов к заголовку объема. Это обеспечивает возможность устройству декодирования трехмерных данных определять то, применяется или нет кодирование на основе дерева октантов в расчете на объем. В этом случае, устройство кодирования трехмерных данных задает субкоординаты в расчете на объем и кодирует дифференциальное значение, которое является значением субкоординат, вычитаемых из координат каждого облака точек в объеме.
[0503] Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования, поскольку можно надлежащим образом выбирать то, следует или нет применять кодирование на основе дерева октантов, в соответствии с формой объектов или общим числом облаков точек в объеме.
[0504] В вышеприведенном описании, показан пример, в котором разность, которая представляет собой субкоординаты каждого облака точек, вычитаемые из координат каждого облака точек, кодируется как кодирование не на основе дерева октантов, но не ограничен этим, и может использоваться любой другой тип способа кодирования, отличный от кодирования на основе дерева октантов. Например, как проиллюстрировано на фиг. 63, устройство кодирования трехмерных данных может не только кодировать разность из субкоординат в качестве кодирования не на основе дерева октантов, но также и использовать способ, в котором значение облака точек в субкарте, пространстве или самом объеме кодируется (в дальнейшем в этом документе называется "исходным координатным кодированием").
[0505] В этом случае, устройство кодирования трехмерных данных сохраняет, в заголовке, информацию, указывающую то, что исходное координатное кодирование применяется к текущему пространству (субкарте, пространству или объему). Это обеспечивает возможность устройству декодирования трехмерных данных определять то, применяется или нет исходное координатное кодирование к текущему пространству.
[0506] При применении исходного координатного кодирования, устройство кодирования трехмерных данных может выполнять кодирование без применения квантования и арифметического кодирования к исходным координатам. Устройство кодирования трехмерных данных может кодировать исходные координаты с использованием предварительно определенной фиксированной длины в битах. Это обеспечивает возможность устройству кодирования трехмерных данных формировать поток с фиксированной длиной в битах в определенное время.
[0507] В вышеприведенном описании, показан пример, в котором разность, которая представляет собой субкоординаты каждого облака точек, вычитаемые из координат каждого облака точек, кодируется как кодирование не на основе дерева октантов, но не ограничен этим.
[0508] Например, устройство кодирования трехмерных данных может последовательно кодировать дифференциальное значение между координатами каждого облака точек. Фиг. 64 является схемой для описания операции в этом случае. Например, в примере, показанном на фиг. 64, устройство кодирования трехмерных данных кодирует дифференциальное значение между координатами облака PA точек и прогнозированными координатами, с использованием субкоординат в качестве прогнозированных координат, при кодировании облака PA точек. Устройство кодирования трехмерных данных кодирует дифференциальное значение между облаком PB точек и прогнозированными координатами, с использованием координат облака PA точек в качестве прогнозированных координат, при кодировании облака PB точек. Устройство кодирования трехмерных данных кодирует дифференциальное значение между облаком PC точек и прогнозированными координатами, с использованием координат облака PB точек в качестве прогнозированных координат, при кодировании облака PC точек. Таким образом, устройство кодирования трехмерных данных может задавать порядок сканирования для множества облаков точек и кодировать дифференциальное значение между координатами текущего облака точек, которое должно обрабатываться, и координатами облака точек непосредственно перед текущим облаком точек в порядке сканирования.
[0509] В вышеприведенном описании, субкоординаты представляют собой координаты в нижнем левом переднем углу субкарты, но местоположение субкоординат не ограничено этим. Фиг. 65-67 являются схемами, показывающими другие примеры местоположения субкоординат. Местоположение субкоординат может задаваться как координаты в текущем пространстве (в субкарте, в пространстве или в объеме). Другими словами, субкоординаты, как указано выше, могут представлять собой координаты в нижнем левом переднем углу текущего пространства. Как проиллюстрировано на фиг. 65, субкоординаты могут представлять собой координаты в центре текущего пространства. Как проиллюстрировано на фиг. 66, субкоординаты могут представлять собой координаты в верхнем правом заднем углу текущего пространства. Субкоординаты не ограничены тем, что они представляют собой координаты в нижнем левом переднем углу или верхнем правом заднем углу текущего пространства, но также могут представлять собой координаты в любом углу текущего пространства.
[0510] Местоположение субкоординат может быть идентичным координатам облака определенного момента в текущем пространстве (в субкарте, в пространстве или в объеме). Например, в примере, показанном на фиг. 67, координаты субкоординат совпадают с координатами облака PD точек.
[0511] В настоящем варианте осуществления, показан пример, который переключает между применением кодирования на основе дерева октантов или кодирования не на основе дерева октантов, но не обязательно ограничивается этим. Например, устройство кодирования трехмерных данных может переключаться между применением древовидной структуры, отличной от дерева октантов, или недревовидной структуры, отличной от древовидной структуры. Например, другая древовидная структура представляет собой k-d-дерево, в котором разбиение выполняется с использованием перпендикулярных плоскостей на одной оси координат. Следует отметить, что любой другой способ может использоваться в качестве другой древовидной структуры.
[0512] В настоящем варианте осуществления, показан пример, в котором координатная информация, включенная в облако точек, кодируется, но не обязательно ограничивается этим. Устройство кодирования трехмерных данных может кодировать, например, цветовую информацию, количество трехмерных признаков или количество признаков видимого света с использованием идентичного способа, что и для координатной информации. Например, устройство кодирования трехмерных данных может задавать среднее значение цветовой информации, включенной в каждое облако точек в субкарте, как субцветовую информацию и кодировать разность между цветовой информацией и субцветовой информацией каждого облака точек.
[0513] В настоящем варианте осуществления, показан пример, в котором способ кодирования (кодирование на основе дерева октантов или кодирование не на основе дерева октантов) с хорошей эффективностью кодирования выбирается в соответствии с общим числом облаков точек и т.п., но не обязательно ограничивается этим. Например, устройство кодирования трехмерных данных, которое представляет собой серверный конец, может сохранять поток битов облака точек, кодированного через кодирование на основе дерева октантов, поток битов облака точек, кодированного через кодирование не на основе дерева октантов, и поток битов облака точек, кодированного через оба способа, и переключать поток битов, который должен передаваться в устройство декодирования трехмерных данных, в соответствии с окружением передачи или мощностью обработки устройства декодирования трехмерных данных.
[0514] Фиг. 68 является схемой, показывающей примерный синтаксис объема при применении кодирования на основе дерева октантов. Синтаксис, показанный на фиг. 68, является по существу идентичным синтаксису, показанному на фиг. 58, но отличается тем, что каждый фрагмент информации представляет собой информацию в единицах объемов. Конкретно, NumOfPoint указывает общее число облаков точек, включенных в объем; sub_coordinate_x, sub_coordinate_y и sub_coordinate_z представляют собой субкоординатную информацию объема.
[0515] Diff_x[i], diff_y[i] и diff_z[i] представляют собой дифференциальные координаты i-го облака точек в объеме; diff_x[i] представляет собой дифференциальное значение между координатой X i-го облака точек и координатой X субкоординат в объеме; diff_y[i] представляет собой дифференциальное значение между координатой Y i-го облака точек и координатой Y субкоординат в объеме; diff_z[i] представляет собой дифференциальное значение между координатой Z i-го облака точек и координатой Z субкоординат в объеме.
[0516] Следует отметить, что, когда можно вычислять относительную позицию объема в пространстве, устройство кодирования трехмерных данных не должно обязательно включать субкоординатную информацию в заголовок объема. Другими словами, устройство кодирования трехмерных данных может вычислять относительную позицию объема в пространстве без включения субкоординатной информации в заголовок и использовать вычисленную позицию в качестве субкоординат каждого объема.
[0517] Как указано выше, устройство кодирования трехмерных данных согласно настоящему варианту осуществления определяет то, следует или нет кодировать, с использованием структуры в виде дерева октантов, текущую единицу пространства из множества единиц пространства (например, субкарт, пространств или объемов), включенных в трехмерные данные (например, S1522 на фиг. 59). Например, устройство кодирования трехмерных данных определяет то, что текущая единица пространства должна кодироваться с использованием структуры в виде дерева октантов, когда общее число трехмерных точек, включенных в текущую единицу пространства, выше предварительно определенного порогового значения. Устройство кодирования трехмерных данных определяет то, что текущая единица пространства не должна кодироваться с использованием структуры в виде дерева октантов, когда общее число трехмерных точек, включенных в текущую единицу пространства, ниже или равно предварительно определенному пороговому значению.
[0518] Когда определяется то, что текущая единица пространства должна кодироваться с использованием структуры в виде дерева октантов ("Да" на S1522), устройство кодирования трехмерных данных кодирует текущую единицу пространства с использованием структуры в виде дерева октантов (S1523). Когда определяется то, что текущая единица пространства не должна кодироваться с использованием структуры в виде дерева октантов ("Нет" на S1522), устройство кодирования трехмерных данных кодирует текущую единицу пространства с использованием другого способа, который не представляет собой структуру в виде дерева октантов (S1524). Например, в другом способе, устройство кодирования трехмерных данных кодирует координаты трехмерных точек, включенных в текущую единицу пространства. Конкретно, в другом способе, устройство кодирования трехмерных данных кодирует разность между опорными координатами текущей единицы пространства и координатами трехмерных точек, включенных в текущую единицу пространства.
[0519] Устройство кодирования трехмерных данных затем присоединяет, к потоку битов, информацию, которая указывает то, кодирована или нет текущая единица пространства с использованием структуры в виде дерева октантов (S1525).
[0520] Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования, поскольку можно уменьшать объем данных кодированного сигнала.
[0521] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, при этом процессор использует запоминающее устройство для того, чтобы выполнять вышеуказанные процессы.
[0522] Устройство декодирования трехмерных данных согласно настоящему варианту осуществления декодирует, из потока битов, информацию, которая указывает то, следует или нет декодировать, с использованием структуры в виде дерева октантов, текущую единицу пространства из множества единиц пространства (например, субкарт, пространств или объемов), включенных в трехмерные данные (например, S1531 на фиг. 60). Когда информация указывает то, что текущая единица пространства должна декодироваться с использованием структуры в виде дерева октантов ("Да" на S1532), устройство декодирования трехмерных данных декодирует текущую единицу пространства с использованием структуры в виде дерева октантов (S1533).
[0523] Когда информация указывает необходимость не декодировать текущую единицу пространства с использованием структуры в виде дерева октантов ("Нет" на S1532), устройство декодирования трехмерных данных декодирует текущую единицу пространства с использованием другого способа, который не представляет собой структуру в виде дерева октантов (S1534). Например, в другом способе, устройство декодирования трехмерных данных декодирует координаты трехмерных точек, включенных в текущую единицу пространства. Конкретно, в другом способе, устройство декодирования трехмерных данных декодирует разность между опорными координатами текущей единицы пространства и координатами трехмерных точек, включенных в текущую единицу пространства.
[0524] Это обеспечивает возможность устройству декодирования трехмерных данных повышать эффективность кодирования, поскольку можно уменьшать объем данных кодированного сигнала.
[0525] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство. Процессор использует запоминающее устройство для того, чтобы выполнять вышеуказанные процессы.
Вариант 9 осуществления
[0526]
В настоящем варианте осуществления, в дальнейшем описывается способ для кодирования древовидной структуры, такой как структура в виде дерева октантов.
[0527] Можно повышать эффективность посредством идентификации важной зоны и предпочтительно декодирования трехмерных данных важной зоны.
[0528] Фиг. 69 является схемой, показывающей пример важной зоны на трехмерной карте. Важная зона включает в себя, например, по меньшей мере, фиксированное число трехмерных точек, из числа трехмерных точек на трехмерной карте, имеющих высокое количество признаков. Важная зона также может включать в себя, например, фиксированное число трехмерных точек, необходимых, когда, например, установленный в транспортном средстве клиент выполняет оценку собственного местоположения. Альтернативно, важная зона также может представлять собой лицо в трехмерной модели человека. Такая важная зона может задаваться согласно типу варианта применения и может переключаться в соответствии с этим.
[0529] В настоящем варианте осуществления, кодирование на основе заполнения и кодирование на основе местоположения используются в качестве способа для представления структуры в виде дерева октантов и т.п. Битовая последовательность, полученная через кодирование на основе заполнения, называется "кодом заполнения". Битовая последовательность, полученная через кодирование на основе местоположения, называется "кодом местоположения".
[0530] Фиг. 70 является схемой, показывающей пример кода заполнения. Фиг. 70 показывает пример кода заполнения структуры в виде дерева квадрантов. На фиг. 70, код заполнения назначается каждому узлу. Каждый фрагмент кода заполнения указывает то, включается либо нет трехмерная точка в дочерний узел или лист узла. В случае дерева квадрантов, например, информация, которая указывает то, включают либо нет четыре дочерних узла или листьев, включенных в каждый узел, в себя трехмерные точки, выражается 4-битовым кодом заполнения. В случае дерева октантов, информация, которая указывает то, включают либо нет восемь дочерних узлов листьев, включенных в каждый узел, в себя трехмерные точки, выражается 8-битовым кодом заполнения. Следует отметить, что пример структуры в виде дерева квадрантов описывается здесь для того, чтобы упрощать описание, но то же является применимым к структуре в виде дерева октантов. Как проиллюстрировано на фиг. 70, например, код заполнения представляет собой битовую последовательность, в которой узлы и листья сканированы в ширину, как описано на фиг. 40 и т.д. В коде заполнения, поскольку множество фрагментов информации трехмерных точек декодируются в фиксированном порядке, невозможно предпочтительно декодировать фрагмент предпочтительной информации трехмерных точек. Следует отметить, что код заполнения также может представлять собой битовую последовательность, в которой узлы и листья сканированы в глубину, как описано на фиг. 40 и т.д.
[0531] В дальнейшем в этом документе описывается кодирование на основе местоположения. Можно непосредственно декодировать важные части в структуре в виде дерева октантов посредством использования кода местоположения. Также можно эффективно кодировать важные трехмерные точки на более глубоких уровнях.
[0532] Фиг. 71 является схемой для описания кодирования на основе местоположения и показывает пример структуры в виде дерева квадрантов. В примере, показанном на фиг. 71, трехмерные точки A-I представляются с помощью структуры в виде дерева квадрантов. Трехмерные точки A и C представляют собой важные трехмерные точки, включенные в важную зону.
[0533] Фиг. 72 является схемой, показывающей коды заполнения и коды местоположения, выражающие важные трехмерные точки A и C в структуре в виде дерева квадрантов, показанной на фиг. 71.
[0534] При кодировании на основе местоположения, кодируются индекс каждого узла, присутствующего на тракте вплоть до листа, которому принадлежит текущая трехмерная точка, которая представляет собой целевую трехмерную точку кодирования, и индекс каждого листа в древовидной структуре. Индекс здесь является числовым значением, назначенным каждому узлу и каждому листу. Другими словами, индекс представляет собой идентификатор для идентификации дочерних узлов относительно текущего узла. В случае дерева квадрантов, как показано на фиг. 71, индексы между 0 и 3 показаны.
[0535] В структуре в виде дерева квадрантов, показанной на фиг. 71, например, лист A представляется как 0 → 2 → 1 → 0 → 1 → 2 → 1, когда лист A представляет собой текущую трехмерную точку. Поскольку максимальное значение каждого индекса в случае фиг. 71 равно 4 (представимо в качестве 2-битового значения), число битов, необходимое для кода местоположения листа A, равно 7*2 бита=14 битов. Аналогично, число битов, необходимое, когда лист C представляет собой цель кодирования, равно 14 битам. Следует отметить, что в случае дерева октантов, можно вычислять число битов, необходимое для "3 бита * глубина листа", поскольку максимальное значение каждого индекса равно 8 (представимо в качестве 3-битового значения). Следует отметить, что устройство кодирования трехмерных данных может уменьшать объем данных посредством энтропийного кодирования после преобразования в двоичную форму каждого индекса.
[0536] Как проиллюстрировано на фиг. 72, в коде заполнения, необходимо декодировать все узлы верхних уровней листьев A и C, чтобы декодировать листья A и C. С другой стороны, можно только декодировать данные листьев A и C в коде местоположения. Как проиллюстрировано на фиг. 72, это позволяет уменьшать число битов больше, чем для кода заполнения, посредством использования кода местоположения.
[0537] Как проиллюстрировано на фиг. 72, можно дополнительно сокращать объем кода посредством выполнения сжатия словаря, к примеру, LZ77, для части или всего кода местоположения.
[0538] Далее описывается пример, в котором кодирование на основе местоположения применяется к трехмерным точкам (облаку точек), полученным через лидар. Фиг. 73 является схемой, показывающей пример трехмерных точек, полученных через лидар. Трехмерные точки, полученные через лидар, разреженно располагаются. Другими словами, при выражении этих трехмерных точек кодом заполнения, число нулевых значений является высоким. Высокая трехмерная точность требуется для этих трехмерных точек. Другими словами, иерархия структуры в виде дерева октантов становится глубже.
[0539] Фиг. 74 является схемой, показывающей пример такой разреженной и глубокой структуры в виде дерева октантов. Код заполнения структуры в виде дерева октантов, показанный на фиг. 74, составляет 136-битовое значение (= 8 битов * 17 узлов). Поскольку структура в виде дерева октантов имеет глубину в 6 и шесть трехмерных точек, код местоположения равен "3 бита * 6 * 6=108 битов". Другими словами, код местоположения допускает уменьшение в 20% объема кода для кода заполнения. Таким образом, можно сокращать объем кода посредством применения кодирования на основе местоположения к разреженной и глубокой структуре в виде дерева октантов.
10
o
[0540] В дальнейшем в этом документе описываются объемы кода для кода заполнения и кода местоположения. Когда структура в виде дерева октантов имеет глубину в 10, максимальное число трехмерных точек составляет 8=1073741824. Число L битов кода заполнения структуры в виде дерева октантов выражается ниже.
o
2
10
[0541] L=8+8+...+8=127133512 битов
[0542] В связи с этим, число битов одной трехмерной точки составляет 1,143 бита. Следует отметить, что в коде заполнения, это число битов не изменяется, даже если изменяется общее число трехмерных точек, включенных в структуру в виде дерева октантов.
[0543] С другой стороны, в коде местоположения, на число битов одной трехмерной точки непосредственно влияет глубина структуры в виде дерева октантов. Конкретно, число битов кода местоположения одной трехмерной точки равно "3 бита * глубина 10=30 битов".
l
[0544] В связи с этим, число L битов кода местоположения структуры в виде дерева октантов выражается ниже.
l
[0545] L=30*N
[0546] N здесь является общим числом трехмерных точек, включенных в структуру в виде дерева октантов.
o
l
o
[0547] В связи с этим, в случае N<L/30=40904450,4, т.е. когда общее число трехмерных точек ниже 40904450, объем кода для кода местоположения меньше объема кода для кода заполнения (L<L).
[0548] Таким образом, объем кода для кода местоположения ниже объема кода для кода заполнения в случае низкого числа трехмерных точек, и объем кода для кода местоположения выше объема кода для кода заполнения в случае высокого числа трехмерных точек.
[0549] В связи с этим, устройство кодирования трехмерных данных может переключаться между использованием кодирования на основе местоположения или кодирования на основе заполнения в соответствии с общим числом введенных трехмерных точек. В этом случае, устройство кодирования трехмерных данных может присоединять, к информации заголовка и т.п. потока битов, информацию, указывающую то, выполнено кодирование на основе местоположения или кодирование на основе заполнения.
[0550] В дальнейшем в этом документе описывается гибридное кодирование, которое представляет собой комбинацию кодирования на основе местоположения и кодирования на основе заполнения. При кодировании плотной важной зоны, гибридное кодирование, которое представляет собой комбинацию кодирования на основе местоположения и кодирования на основе заполнения, является эффективным. Фиг. 75 является схемой, показывающей этот пример. В примере, показанном на фиг. 75, важные трехмерные точки располагаются плотно. В этом случае, устройство кодирования трехмерных данных выполняет кодирование на основе местоположения для верхних уровней на небольшой глубине и использует кодирование на основе заполнения для нижних уровней. Конкретно, кодирование на основе местоположения используется вплоть до самого глубокого общего узла и кодирование на основе заполнения используется от самого глубокого общего узла вплоть до самого глубокого уровня. Самый глубокий общий узел здесь представляет собой самый глубокий узел из числа узлов, которые представляют собой общих предков множества важных трехмерных точек.
[0551] Далее описывается гибридное кодирование, которое приоритезирует эффективность сжатия. Устройство кодирования трехмерных данных может переключаться между кодированием на основе местоположения или кодированием на основе заполнения в соответствии с предварительно определенным правилом во время кодирования дерева октантов.
[0552] Фиг. 76 является схемой, показывающей пример этого правила. Устройство кодирования трехмерных данных сначала проверяет процентную долю узлов, включающих в себя трехмерные точки, на каждом уровне (глубине). Когда процентная доля выше предварительно определенного порогового значения, заполнение устройства кодирования трехмерных данных кодирует несколько узлов верхних уровней относительно текущего уровня. Например, устройство кодирования трехмерных данных применяет кодирование на основе заполнения от текущего уровня до уровней вплоть до самого глубокого общего узла.
[0553] Например, в примере по фиг. 76, процентная доля узлов, включающих в себя трехмерные точки на третьем уровне, выше предварительно определенного порогового значения. В связи с этим, устройство кодирования трехмерных данных применяет кодирование на основе заполнения от третьего уровня вплоть до второго уровня, включающего в себя самый глубокий общий узел, и применяет кодирование на основе местоположения к другим уровням, т.е. к первому уровню и четвертому уровню.
[0554] В дальнейшем описывается способ для вычисления вышеуказанного порогового значения. Один уровень структуры в виде дерева октантов включает в себя один корневой узел и восемь дочерних узлов. В связи с этим, при кодировании на основе заполнения, 8 битов необходимы для кодирования одного уровня структуры в виде дерева октантов. С другой стороны, при кодировании на основе местоположения, 3 бита необходимы в расчете на дочерний узел, включающий в себя трехмерную точку. В связи с тем, когда общее число узлов, включающих в себя трехмерные точки, выше 2, кодирование на основе заполнения является более эффективным, чем кодирование на основе местоположения. Другими словами, в этом случае, пороговое значение равно 2.
[0555] В дальнейшем в этом документе описывается примерная структура потока битов, сформированного через вышеуказанное кодирование на основе местоположения, кодирование на основе заполнения или гибридное кодирование.
[0556] Фиг. 77 является схемой, показывающей пример потока битов, сформированного через кодирование на основе местоположения. Как проиллюстрировано на фиг. 77, поток битов, сформированный через кодирование на основе местоположения, включает в себя заголовок и фрагменты кода местоположения. Каждый фрагмент кода местоположения соответствует одной трехмерной точке.
[0557] Эта структура позволяет устройству декодирования трехмерных данных отдельно декодировать множество трехмерных точек с высокой точностью. Следует отметить, что фиг. 77 показывает пример потока битов в случае структуры в виде дерева квадрантов. В случае структуры в виде дерева октантов, каждый индекс может принимать значение между 0 и 7.
[0558] Устройство кодирования трехмерных данных может энтропийно кодировать индексную последовательность, выражающую одну трехмерную точку после преобразования в двоичную форму индексной последовательности. Например, когда индексная последовательность равна 0121, устройство кодирования трехмерных данных может преобразовывать в двоичную форму 0121 в 00011001 и выполнять арифметическое кодирование для этой битовой последовательности.
[0559] Фиг. 78 является схемой, показывающей пример потока битов, сформированного через гибридное кодирование, когда поток битов включает в себя важные трехмерные точки. Как проиллюстрировано на фиг. 78, код местоположения верхних уровней, код заполнения важных трехмерных точек нижних уровней и код заполнения неважных трехмерных точек нижних уровней располагаются в этом порядке. Следует отметить, что длина кода местоположения, показанная на фиг. 78, выражает объем кода для последующего кода местоположения. Объем кода заполнения выражает объем кода для последующего кода заполнения.
[0560] Эта структура обеспечивает возможность устройству декодирования трехмерных данных выбирать план декодирования в соответствии с типом приложения.
[0561] Кодированные данные важных трехмерных точек сохраняются около головной части данных потоков битов, и кодированные данные неважных трехмерных точек, не включенных в важную зону, сохраняются после кодированных данных важных трехмерных точек.
[0562] Фиг. 79 является схемой, показывающей древовидную структуру, выражаемую кодом заполнения важных трехмерных точек, показанных на фиг. 78. Фиг. 80 является схемой, показывающей древовидную структуру, выражаемую кодом заполнения неважных трехмерных точек, показанных на фиг. 78. Как проиллюстрировано на фиг. 79, информация, связанная с неважными трехмерными точками, исключается в коде заполнения важных трехмерных точек. Конкретно, поскольку узел 0 и узел 3 на глубине 5 не включают в себя важные трехмерные точки, значение в 0 назначается, которое указывает то, что узел 0 и узел 3 не включают в себя трехмерные точки.
[0563] С другой стороны, как проиллюстрировано на фиг. 80, информация, связанная с важными трехмерными точками, исключается в коде заполнения неважных трехмерных точек. Конкретно, поскольку узел 1 на глубине 5 не включает в себя неважные трехмерные точки, значение в 0 назначается, которое указывает то, что узел 1 не включает в себя трехмерную точку.
[0564] Таким образом, устройство кодирования трехмерных данных разделяет исходную древовидную структуру на первую древовидную структуру, включающую в себя важные трехмерные точки, и вторую древовидную структуру, включающую в себя неважные трехмерные точки, и отдельно кодирует на основе заполнения первую древовидную структуру и вторую древовидную структуру. Это обеспечивает возможность устройству декодирования трехмерных данных предпочтительно декодировать важные трехмерные точки.
[0565] Далее описывается примерная структура потока битов, сформированного через гибридное кодирование, нацеленное на эффективность. Фиг. 81 является схемой, показывающей примерную структуру потока битов, сформированного через гибридное кодирование, нацеленное на эффективность. Как проиллюстрировано на фиг. 81, корневое местоположение поддерева, объем кода заполнения и код заполнения располагаются в расчете на поддерево в этом порядке. Корневое местоположение поддерева, показанное на фиг. 81, представляет собой код местоположения корня поддерева.
[0566] В вышеприведенной структуре, следующее является справедливым, когда только одно из кодирования на основе местоположения или кодирования на основе заполнения применяется к структуре в виде дерева октантов.
[0567] Когда длина кода местоположения корня поддерева является идентичной глубине структуры в виде дерева октантов, поддерево не включает в себя дочерних узлов. Другими словами, кодирование на основе местоположения применяется ко всей древовидной структуре.
[0568] Когда корень поддерева является идентичным корню структуры в виде дерева октантов, кодирование на основе заполнения применяется ко всей древовидной структуре.
[0569] Например, устройство декодирования трехмерных данных допускает различение того, включает поток битов в себя код местоположения или код заполнения, на основе вышеуказанного правила.
[0570] Поток битов может включать в себя информацию режима кодирования, указывающую то, что из кодирования на основе местоположения, кодирования на основе заполнения и гибридного кодирования используется. Фиг. 82 является схемой, показывающей пример потока битов в этом случае. Как проиллюстрировано на фиг. 82, например, 2-битовая информация режима кодирования, указывающая режим кодирования, присоединяется к потоку битов.
[0571] (1) "Число трехмерных точек" при кодировании на основе местоположения выражает общее число последующих трехмерных точек. (2) "Объем кода заполнения" при кодировании на основе заполнения выражает объем кода для последующего кода заполнения. (3) "Число важных поддеревьев" при гибридном кодировании (важных трехмерных точек) выражает общее число поддеревьев, включающих в себя важные трехмерные точки. (4) "Число поддеревьев заполнения" при гибридном кодировании (акцент на эффективность) выражает общее число кодированных на основе заполнения поддеревьев.
[0572] Далее описывается примерный синтаксис, используемый для переключения между применением кодирования на основе заполнения или кодирования на основе местоположения. Фиг. 83 является схемой, показывающей этот примерный синтаксис.
[0573] Isleaf, показанный на фиг. 83, представляет собой флаг, указывающий то, представляет или нет текущий узел собой лист; isleaf=1 указывает то, что текущий узел представляет собой лист, и isleaf=0 указывает то, что текущий узел не представляет собой лист.
[0574] Когда текущий узел представляет собой лист, point_flag присоединяется к потоку битов; point_flag представляет собой флаг, указывающий то, включает или нет текущий узел (лист) в себя трехмерную точку; point_flag=1 указывает то, что текущий узел включает в себя трехмерную точку, и point_flag=0 указывает то, что текущий узел не включает в себя трехмерную точку.
[0575] Когда текущий узел не представляет собой лист, coding_type присоединяется к потоку битов; coding_type представляет собой информацию типа кодирования, указывающую то, какой тип кодирования применяется; coding_type=00 указывает то, что кодирование на основе местоположения применяется, coding_type=01 указывает то, что кодирование на основе заполнения применяется, и coding_type=10 или 11 указывает то, что другой способ кодирования применяется.
[0576] Когда тип кодирования представляет собой кодирование на основе местоположения, numPoint, num_idx[i] и idx[i][j] присоединяются к потоку битов.
[0577] NumPoint указывает общее число трехмерных точек, для которых можно выполнять кодирование на основе местоположения; num_idx[i] указывает общее число (глубину) индексов от текущего узла вплоть до трехмерной точки i. Когда трехмерные точки, для которых должно выполняться кодирование на основе местоположения, находятся на идентичной глубине, каждый num_idx[i] имеет идентичное значение. В связи с этим, num_idx может задаваться как общее значение перед оператором for (for (i=0; i<numPoint; i++){), показанным на фиг. 83.
[0578] Idx[i][j] указывает значение j-го индекса из числа индексов от текущего узла вплоть до трехмерной точки i. В случае дерева октантов, число битов idx[i][j] равно 3 битам.
[0579] Следует отметить, что, как указано выше, индекс представляет собой идентификатор для идентификации дочерних узлов относительно текущего узла. В случае дерева октантов, idx[i][j] указывает значение между 0 и 7. В случае дерева октантов, имеется восемь дочерних узлов, которые надлежащим образом соответствуют восьми субблокам, полученным посредством пространственного разделения текущего блока, соответствующего текущему узлу, на восемь. В связи с этим, idx[i][j] может представлять собой информацию, указывающую трехмерную позицию субблока, соответствующего дочернему узлу. Например, idx[i][j] может представлять собой 3-битовую информацию в сумме, которая включает в себя три фрагмента 1-битовой информации, каждый из которых указывает позицию каждого из x, y и z субблока.
[0580] Когда тип кодирования представляет собой кодирование на основе заполнения, occupancy_code присоединяется к потоку битов; occupancy_code представляет собой код заполнения текущего узла. В случае дерева октантов, occupancy_code представляет собой 8-битовую битовую последовательность, такую как битовая последовательность "00101000".
[0581] Когда значение (i+1)-вого бита occupancy_code равно 1, обработка дочернего узла начинается. Другими словами, дочерний узел задается в качестве следующего текущего узла, и битовая последовательность рекурсивно формируется.
[0582] В настоящем варианте осуществления, показан пример, в котором концы дерева октантов выражаются посредством присоединения информации листа (isleaf, point_flag) к потоку битов, но настоящий вариант осуществления не обязательно ограничивается этим. Например, устройство кодирования трехмерных данных может присоединять, к части заголовка начального узла (корня), максимальную глубину от начального узла кода заполнения вплоть до концов (листьев), включающих в себя трехмерные точки. Устройство кодирования трехмерных данных может рекурсивно преобразовывать информацию относительно дочерних узлов при увеличении глубины от начального узла и может определять как поступление в листья, когда глубина становится максимальной глубиной. Устройство кодирования трехмерных данных также может присоединять информацию, указывающую максимальную глубину, к первому узлу, причем тип кодирования становится кодированием на основе заполнения, и также может присоединять эту информацию к начальному узлу (корню) дерева октантов.
[0583] Как указано выше, устройство кодирования трехмерных данных может присоединять, к потоку битов, информацию для переключения между кодированием на основе заполнения и кодированием на основе местоположения в качестве информации заголовка каждого узла.
[0584] Устройство кодирования трехмерных данных может энтропийно кодировать coding_type, numPoint, num_idx, idx и occupancy_code каждого узла, сформированного с использованием вышеописанного способа. Например, устройство кодирования трехмерных данных арифметически кодирует каждое значение после преобразования в двоичную форму каждого значения.
[0585] В вышеуказанном синтаксисе, показывается пример того, когда битовая последовательность в глубину структуры в виде дерева октантов используется в качестве кода заполнения, но настоящий вариант осуществления не обязательно ограничивается этим. Устройство кодирования трехмерных данных может использовать битовую последовательность в ширину структуры в виде дерева октантов в качестве кода заполнения. Устройство кодирования трехмерных данных может присоединять, к потоку битов, информацию для переключения между кодированием на основе заполнения и кодированием на основе местоположения в качестве информации заголовка каждого узла, также при использовании битовой последовательности в ширину.
[0586] В настоящем варианте осуществления, показан пример структуры в виде дерева октантов, но настоящий вариант осуществления не обязательно ограничивается этим, и вышеописанный способ может применяться к N-арной (N является целым числом в 2 или выше) структуре, такой как дерево квадрантов или дерево гексантов, либо к другой древовидной структуре.
[0587] В дальнейшем в этом документе описывается пример последовательности операций процесса кодирования для переключения между применением кодирования на основе заполнения или кодирования на основе местоположения. Фиг. 84 является блок-схемой последовательности операций способа для процесса кодирования согласно настоящему варианту осуществления.
[0588] Устройство кодирования трехмерных данных сначала представляет множество трехмерных точек, включенных в трехмерные данные, с использованием структуры в виде дерева октантов (S1601). Устройство кодирования трехмерных данных затем задает корень в структуре в виде дерева октантов в качестве текущего узла (S1602). Устройство кодирования трехмерных данных затем формирует битовую последовательность структуры в виде дерева октантов посредством выполнения процесса кодирования узлов для текущего узла (S1603). Устройство кодирования трехмерных данных затем формирует битовую последовательность посредством энтропийного кодирования сформированной битовой последовательности (S1604).
[0589] Фиг. 85 является блок-схемой последовательности операций способа для процесса кодирования узлов (S1603). Устройство кодирования трехмерных данных сначала определяет то, представляет или нет текущий узел собой лист (S1611). Когда текущий узел не представляет собой лист ("Нет" на S1611), устройство кодирования трехмерных данных задает флаг листа (isleaf) равным 0 и присоединяет флаг листа к битовой последовательности (S1612).
[0590] Устройство кодирования трехмерных данных затем определяет то, выше или нет общее число дочерних узлов, включающих в себя трехмерные точки, предварительно определенного порогового значения (S1613). Следует отметить, что устройство кодирования трехмерных данных может присоединять это пороговое значение к битовой последовательности.
[0591] Когда общее число дочерних узлов, включающих в себя трехмерные точки, выше предварительно определенного порогового значения ("Да" на S1613), устройство кодирования трехмерных данных задает тип кодирования (coding_type) как кодирование на основе заполнения и присоединяет тип кодирования к битовой последовательности (S1614).
[0592] Устройство кодирования трехмерных данных затем конфигурирует информацию кодирования на основе заполнения и присоединяет информацию кодирования на основе заполнения к битовой последовательности. Конкретно, устройство кодирования трехмерных данных формирует код заполнения для текущего узла и присоединяет код заполнения к битовой последовательности (S1615).
[0593] Устройство кодирования трехмерных данных затем задает следующий текущий узел на основе кода заполнения (S1616). Конкретно, устройство кодирования трехмерных данных задает следующий текущий узел от необработанного дочернего узла, код заполнения которого равен "1".
[0594] Устройство кодирования трехмерных данных выполняет процесс кодирования узлов для нового заданного текущего узла (S1617). Другими словами, процесс, показанный на фиг. 85, выполняется для нового заданного текущего узла.
[0595] Когда все дочерние узлы еще не обработаны ("Нет" на S1618), процессы с этапа S1616 выполняются снова. С другой стороны, когда все дочерние узлы обработаны ("Да" на S1618), устройство кодирования трехмерных данных завершает процесс кодирования узлов.
[0596] На этапе S1613, когда общее число дочерних узлов, включающих в себя трехмерные точки, ниже или равно предварительно определенному пороговому значению ("Нет" на S1613), устройство кодирования трехмерных данных задает тип кодирования как кодирование на основе местоположения и присоединяет тип кодирования к битовой последовательности (S1619).
[0597] Устройство кодирования трехмерных данных затем конфигурирует информацию кодирования на основе местоположения и присоединяет информацию кодирования на основе местоположения к битовой последовательности. Конкретно, устройство кодирования трехмерных данных затем формирует код местоположения и присоединяет код местоположения к битовой последовательности (S1620). Код местоположения включает в себя numPoint, num_idx и idx.
[0598] На этапе S1611, когда текущий узел представляет собой лист ("Да" на S1611), устройство кодирования трехмерных данных задает флаг листа равным 1 и присоединяет флаг листа к битовой последовательности (S1621). Устройство кодирования трехмерных данных конфигурирует флаг точки (point_flag), который представляет собой информацию, указывающую то, включает или нет лист в себя трехмерную точку, и присоединяет флаг точки к битовой последовательности (S1622).
[0599] Далее описывается пример последовательности операций процесса декодирования для переключения между применением кодирования на основе заполнения или кодирования на основе местоположения. Фиг. 85 является блок-схемой последовательности операций способа для процесса декодирования согласно настоящему варианту осуществления.
[0600] Устройство кодирования трехмерных данных формирует битовую последовательность посредством энтропийного декодирования потока битов (S1631). Устройство декодирования трехмерных данных затем восстанавливает структуру в виде дерева октантов посредством выполнения процесса декодирования узлов для полученной битовой последовательности (S1632). Устройство декодирования трехмерных данных затем формирует трехмерные точки из структуры в виде дерева октантов восстановлений (S1633).
[0601] Фиг. 87 является блок-схемой последовательности операций способа для процесса декодирования узлов (S1632). Устройство декодирования трехмерных данных сначала получает (декодирует) флаг листа (isleaf) из битовой последовательности (S1641). Устройство декодирования трехмерных данных затем определяет то, представляет или нет текущий узел собой лист, на основе флага листа (S1642).
[0602] Когда текущий узел не представляет собой лист ("Нет" на S1642), устройство декодирования трехмерных данных получает тип кодирования (coding_type) из битовой последовательности (S1643). Устройство декодирования трехмерных данных определяет то, представляет или нет тип кодирования собой кодирование на основе заполнения (S1644).
[0603] Когда тип кодирования представляет собой кодирование на основе заполнения ("Да" на S1644), устройство декодирования трехмерных данных получает информацию кодирования на основе заполнения из битовой последовательности. Конкретно, устройство декодирования трехмерных данных получает код заполнения из битовой последовательности (S1645).
[0604] Устройство декодирования трехмерных данных затем задает следующий текущий узел на основе кода заполнения (S1646). Конкретно, устройство декодирования трехмерных данных задает следующий текущий узел от необработанного дочернего узла, код заполнения которого равен "1".
[0605] Устройство декодирования трехмерных данных затем выполняет процесс декодирования узлов для нового заданного текущего узла (S1647). Другими словами, процесс, показанный на фиг. 87, выполняется для нового заданного текущего узла.
[0606] Когда все дочерние узлы еще не обработаны ("Нет" на S1648), процессы с этапа S1646 выполняются снова. С другой стороны, когда все дочерние узлы обработаны ("Да" на S1648), устройство декодирования трехмерных данных завершает процесс декодирования узлов.
[0607] На этапе 1644, когда тип кодирования представляет собой кодирование на основе местоположения ("Нет" на S1644), устройство декодирования трехмерных данных получает информацию кодирования на основе местоположения из битовой последовательности. Конкретно, устройство декодирования трехмерных данных получает код местоположения из битовой последовательности (S1649). Код местоположения включает в себя numPoint, num_idx и idx.
[0608] На этапе S1642, когда текущий узел представляет собой лист ("Да" на S1642), устройство декодирования трехмерных данных получает, из битовой последовательности, флаг точки (point_flag), который представляет собой информацию, указывающую то, включает или нет лист в себя трехмерную точку (S1650).
[0609] Следует отметить, что в настоящем варианте осуществления, показан пример, в котором тип кодирования переключается в расчете на узел, но настоящий вариант осуществления не обязательно ограничивается этим. Тип кодирования может быть фиксированным в расчете на единицу объема, пространства или мира. В этом случае, устройство кодирования трехмерных данных может присоединять информацию типа кодирования к информации заголовка объема, пространства или мира.
[0610] Как указано выше, устройство кодирования трехмерных данных согласно настоящему варианту осуществления: формирует первую информацию, в которой N-арная (N является целым числом в 2 или выше) древовидная структура множества трехмерных точек, включенных в трехмерные данные, выражается с использованием первой формулы (кодирование на основе местоположения); и формирует поток битов, включающий в себя первую информацию. Первая информация включает в себя фрагменты информации трехмерных точек (кода местоположения), каждый из которых ассоциирован с соответствующей одной из множества трехмерных точек. Фрагменты информации трехмерных точек включают в себя индексы (idx), каждый из которых ассоциирован с соответствующим одним из множества уровней в N-арной древовидной структуре. Индексы указывают субблок, из числа N субблоков, принадлежащих соответствующему одному из множества уровней, которым принадлежит соответствующая одна из множества трехмерных точек.
[0611] Другими словами, фрагменты информации трехмерных точек указывают тракт до соответствующей одной из множества трехмерных точек в N-арной древовидной структуре. Индексы указывают дочерний узел, из числа N дочерних узлов, принадлежащих соответствующему слою (узлу), включенному в тракт.
[0612] Это обеспечивает возможность способу кодирования трехмерных данных формировать поток битов, из которого могут избирательно декодироваться трехмерные точки.
[0613] Например, фрагменты информации трехмерных точек (кода местоположения) включают в себя информацию (num_idx), указывающую общее число индексов, включенных во фрагмент информации трехмерных точек. Другими словами, информация указывает глубину (число слоев) до соответствующей трехмерной точки в N-арной древовидной структуре.
[0614] Например, первая информация включает в себя информацию (numPoint), указывающую общее число фрагментов информации трехмерных точек, включенных в первую информацию. Другими словами, информация указывает общее число трехмерных точек, включенных в N-арную древовидную структуру.
[0615] Например, N равен 8, и индексы представляют собой 3-битовое значение.
[0616] Например, в устройстве кодирования трехмерных данных, первый режим кодирования используется для формирования первой информации, и второй режим кодирования используется для (i) формирования второй информации (кода заполнения), в которой N-арная древовидная структура выражается с использованием второй формулы (кодирование на основе заполнения), и для (ii) формирования потока битов, включающего в себя вторую информацию. Вторая информация включает в себя фрагменты 1-битовой информации, каждый из которых (i) ассоциирован с соответствующим одним из множества субблоков, принадлежащих множеству уровней в N-арной древовидной структуре, и (ii) указывает то, присутствует или нет трехмерная точка в соответствующем одном из множества субблоков.
[0617] Например, устройство кодирования трехмерных данных использует первый режим кодирования, когда общее число множества трехмерных точек ниже или равно предварительно определенному пороговому значению, и второй режим кодирования может использоваться, когда общее число множества трехмерных точек выше предварительно определенного порогового значения. Это обеспечивает возможность способу кодирования трехмерных данных уменьшать объем кода потока битов.
[0618] Например, первая информация и вторая информация включают в себя информацию (информацию режима кодирования), указывающую то, выражается N-арная древовидная структура с использованием первой формулы или второй формулы.
[0619] Например, как проиллюстрировано на фиг. 75 и т.п., устройство кодирования трехмерных данных использует первый режим кодирования для одной части N-арной древовидной структуры и второй режим кодирования для другой части N-арной древовидной структуры.
[0620] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, при этом процессор использует запоминающее устройство для того, чтобы выполнять вышеуказанные процессы.
[0621] Устройство декодирования трехмерных данных согласно настоящему варианту осуществления получает, из потока битов, первую информацию (код местоположения), в которой N-арная (N является целым числом в 2 или выше) древовидная структура множества трехмерных точек, включенных в трехмерные данные, выражается с использованием первой формулы (кодирование на основе местоположения). Первая информация включает в себя фрагменты информации трехмерных точек (кода местоположения), каждый из которых ассоциирован с соответствующей одной из множества трехмерных точек. Фрагменты информации трехмерных точек включают в себя индексы (idx), каждый из которых ассоциирован с соответствующим одним из множества уровней в N-арной древовидной структуре. Индексы указывают субблок, из числа N субблоков, принадлежащих соответствующему одному из множества уровней, которым принадлежит соответствующая одна из множества трехмерных точек.
[0622] Другими словами, фрагменты информации трехмерных точек указывают тракт до соответствующей одной из множества трехмерных точек в N-арной древовидной структуре. Индексы указывают дочерний узел, из числа N дочерних узлов, принадлежащих соответствующему слою (узлу), включенному в тракт.
[0623] Способ декодирования трехмерных данных дополнительно восстанавливает, с использованием соответствующих одного из фрагментов информации трехмерных точек, трехмерную точку, ассоциированную с соответствующим одним из фрагментов информации трехмерных точек.
[0624] Это обеспечивает возможность устройству декодирования трехмерных данных избирательно формировать трехмерные точки из потока битов.
[0625] Например, фрагменты информации трехмерных точек (кода местоположения) включают в себя информацию (num_idx), указывающую общее число индексов, включенных во фрагмент информации трехмерных точек. Другими словами, информация указывает глубину (число слоев) до соответствующей трехмерной точки в N-арной древовидной структуре.
[0626] Например, первая информация включает в себя информацию (numPoint), указывающую общее число фрагментов информации трехмерных точек, включенных в первую информацию. Другими словами, информация указывает общее число трехмерных точек, включенных в N-арную древовидную структуру.
[0627] Например, N равен 8, и индексы представляют собой 3-битовое значение.
[0628] Например, устройство декодирования трехмерных данных дополнительно получает, из потока битов, вторую информацию (код заполнения), в которой N-арная древовидная структура выражается с использованием второй формулы (кодирование на основе заполнения). Устройство декодирования трехмерных данных восстанавливает множество трехмерных точек с использованием второй информации. Вторая информация включает в себя фрагменты 1-битовой информации, каждый из которых (i) ассоциирован с соответствующим одним из множества субблоков, принадлежащих множеству уровней в N-арной древовидной структуре, и (ii) указывает то, присутствует или нет трехмерная точка в соответствующем одном из множества субблоков.
[0629] Например, первая информация и вторая информация включают в себя информацию (информацию режима кодирования), указывающую то, выражается N-арная древовидная структура с использованием первой формулы или второй формулы.
[0630] Например, как проиллюстрировано на фиг. 75 и т.п., одна часть N-арной древовидной структуры выражается с использованием первой формулы, а другая часть N-арной древовидной структуры выражается с использованием второй формулы.
[0631] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, при этом процессор использует запоминающее устройство для того, чтобы выполнять вышеуказанные процессы.
Вариант 10 осуществления
[0632]
В настоящем варианте осуществления, в дальнейшем описывается другой пример способа кодирования древовидной структуры, такой как структура в виде дерева октантов. Фиг. 88 является схемой, иллюстрирующей пример древовидной структуры согласно настоящему варианту осуществления. В частности, фиг. 88 показывает пример структуры в виде дерева квадрантов.
[0633] Лист, включающий в себя трехмерную точку, называется "допустимым листом", и лист, не включающий в себя трехмерную точку, называется "недопустимым листом". Ветвь, имеющая число допустимых листьев, большее или равное пороговому значению, называется "плотной ветвью". Ветвь, имеющая число допустимых листьев, меньшее порогового значения, называется "разреженной ветвью".
[0634] Устройство кодирования трехмерных данных вычисляет число трехмерных точек (т.е. число допустимых листьев), включенных в каждую ветвь в слое древовидной структуры. Фиг. 88 показывает пример, в котором пороговое значение равно 5. В этом примере, две ветви присутствуют в слое 1. Поскольку левая ветвь включает в себя семь трехмерных точек, левая ветвь определяется в качестве плотной ветви. Поскольку правая ветвь включает в себя две трехмерных точки, правая ветвь определяется в качестве разреженной ветви.
[0635] Фиг. 89 является графиком, показывающим пример числа допустимых листьев (трехмерных точек) каждой ветви в слое 5. Горизонтальная ось по фиг. 89 указывает индекс, который представляет собой идентификационный номер ветви в слое 5. Как явно показано на фиг. 89, конкретные ветви включают в себя множество трехмерных точек, по сравнению с другими ветвями. Кодирование на основе заполнения является более эффективным для таких плотных ветвей, чем для разреженных ветвей.
[0636] Далее описывается то, как применяются кодирование на основе заполнения и кодирование на основе местоположения. Фиг. 90 является схемой, иллюстрирующей взаимосвязь между схемами кодирования, которые должны применяться, и числом трехмерных точек (числом допустимых листьев), включенных в каждую ветвь в слое 5. Как проиллюстрировано на фиг. 90, устройство кодирования трехмерных данных применяет кодирование на основе заполнения к плотным ветвям и применяет кодирование на основе местоположения к разреженным ветвям. Как результат, можно повышать эффективность кодирования.
[0637] Фиг. 91 является схемой, иллюстрирующей пример зоны с плотными ветвями в лидарных данных. Как проиллюстрировано на фиг. 91, плотность трехмерных точек, вычисленная из числа трехмерных точек, включенных в каждую ветвь, варьируется в зависимости от зоны.
[0638] Разделение плотных трехмерных точек (ветви) и разреженных трехмерных точек (ветви) обеспечивает следующее преимущество. Плотность трехмерных точек становится более высокой со снижающимся расстоянием до лидарного датчика. Следовательно, разделение ветвей в соответствии с разреженностью и сплошностью обеспечивает разделение в направлении расстояния. Такое разделение является эффективным для конкретных вариантов применения. Использование способа, отличного от кодирования на основе заполнения, является эффективным для разреженных ветвей.
[0639] В настоящем варианте осуществления, устройство кодирования трехмерных данных разделяет введенное облако трехмерных точек на два или более субоблаков трехмерных точек и применяет другой способ кодирования к каждому из двух или более субоблаков трехмерных точек.
[0640] Например, устройство кодирования трехмерных данных разделяет введенное облако трехмерных точек на субоблако A трехмерных точек (плотное облако трехмерных точек: плотное облако), включающее в себя плотную ветвь, и субоблако B трехмерных точек (разреженное облако трехмерных точек: разреженное облако). Фиг. 92 является схемой, иллюстрирующей пример субоблака A трехмерных точек (плотного облака трехмерных точек), включающего в себя плотную ветвь, которая отделяется от древовидной структуры, проиллюстрированной на фиг. 88. Фиг. 93 является схемой, иллюстрирующей пример субоблака B трехмерных точек (разреженного облака трехмерных точек), включающего в себя разреженную ветвь, которая отделяется от древовидной структуры, проиллюстрированной на фиг. 88.
[0641] Затем, устройство кодирования трехмерных данных кодирует субоблако A трехмерных точек с использованием кодирования на основе заполнения и кодирует субоблако B трехмерных точек с использованием кодирования на основе местоположения.
[0642] Следует отметить, что хотя выше описывается пример, в котором различные схемы кодирования (кодирование на основе заполнения и кодирование на основе местоположения) применяются в качестве различных способов кодирования, например, устройство кодирования трехмерных данных может применять идентичную схему кодирования к субоблаку A трехмерных точек и субоблаку B трехмерных точек и может использовать различные параметры при кодировании субоблака A трехмерных точек и субоблака B трехмерных точек.
[0643] Далее описывается процедура для процесса кодирования трехмерных данных, выполняемая посредством устройства кодирования трехмерных данных. Фиг. 94 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных согласно настоящему варианту осуществления.
[0644] Во-первых, устройство кодирования трехмерных данных разделяет введенное облако трехмерных точек на субоблака трехмерных точек (S1701). Устройство кодирования трехмерных данных может выполнять это разделение автоматически или на основе информации, введенной пользователем. Например, пользователь может указывать диапазон субоблаков трехмерных точек. Что касается примера автоматического разделения, например, когда входные данные представляют собой лидарные данные, устройство кодирования трехмерных данных выполняет разделение с использованием информации расстояния, указывающей расстояние до каждого облака точек. В частности, устройство кодирования трехмерных данных разделяет облака точек в пределах определенного диапазона от точки измерения и облака точек за пределами определенного диапазона. Помимо этого, устройство кодирования трехмерных данных может выполнять разделение с использованием информации, указывающей например, важные зоны и неважные зоны.
[0645] Затем, устройство кодирования трехмерных данных формирует кодированные данные (кодированный поток битов) посредством кодирования субоблака A трехмерных точек с использованием способа A (S1702). Кроме того, устройство кодирования трехмерных данных формирует кодированные данные посредством кодирования субоблака B трехмерных точек с использованием способа B (S1703). Следует отметить, что устройство кодирования трехмерных данных может кодировать субоблако B трехмерных точек с использованием способа A. В этом случае, устройство кодирования трехмерных данных кодирует субоблако B трехмерных точек с использованием параметра, отличающегося от параметра кодирования, используемого при кодировании субоблака A трехмерных точек. Например, этот параметр может представлять собой параметр квантования. Например, устройство кодирования трехмерных данных кодирует субоблако B трехмерных точек с использованием параметра квантования, большего параметра квантования, используемого при кодировании субоблака A трехмерных точек. В этом случае, устройство кодирования трехмерных данных может присоединять информацию, указывающую параметр квантования, используемый при кодировании каждого из субоблаков трехмерных точек, к заголовку кодированных данных субоблака трехмерных точек.
[0646] После этого устройство кодирования трехмерных данных формирует поток битов посредством комбинирования кодированных данных, полученных на этапе S1702, и кодированных данных, полученных на этапе S1703 (S1704).
[0647] Кроме того, устройство кодирования трехмерных данных может кодировать, в качестве информации заголовка потока битов, информацию для декодирования каждого субоблака трехмерных точек. Например, устройство кодирования трехмерных данных может кодировать информацию, как описано ниже.
[0648] Информация заголовка может включать в себя информацию, указывающую число кодированных трехмерных подточек. В этом примере, эта информация указывает 2.
[0649] Информация заголовка может включать в себя информацию, указывающую число трехмерных точек, включенных в каждое субоблако трехмерных точек, и способы кодирования. В этом примере, эта информация указывает число трехмерных точек, включенных в субоблако A трехмерных точек, способ кодирования (способ A), применяемый к субоблаку A трехмерных точек, число трехмерных точек, включенных в субоблако B трехмерных точек, и способ кодирования (способ B), применяемый к субоблаку B трехмерных точек.
[0650] Информация заголовка может включать в себя информацию для идентификации начальной позиции или конечной позиции кодированных данных каждого субоблака трехмерных точек.
[0651] Кроме того, устройство кодирования трехмерных данных может кодировать субоблако A трехмерных точек и субоблако B трехмерных точек параллельно. Альтернативно, устройство кодирования трехмерных данных может кодировать субоблако A трехмерных точек и субоблако B трехмерных точек последовательно.
[0652] Способ разделения на субоблака трехмерных точек не ограничен вышеописанным способом. Например, устройство кодирования трехмерных данных изменяет способ разделения, выполняет кодирование с использованием каждого из способов разделения и вычисляет эффективность кодирования кодированных данных, полученных с использованием каждого способа разделения. Затем, устройство кодирования трехмерных данных выбирает способ разделения, имеющий наибольшую эффективность кодирования из способов разделения. Например, устройство кодирования трехмерных данных может (i) разделять облака трехмерных точек в каждом из слоев, (ii) вычислять эффективность кодирования в каждом из случаев, (iii) выбирать способ разделения (т.е. слой, в котором выполняется разделение), имеющий наибольшую эффективность кодирования, из способов разделения, (iv) формировать субоблака трехмерных точек с использованием выбранного способа разделения и (v) выполнять кодирование.
[0653] Кроме того, при комбинировании кодированных данных, устройство кодирования трехмерных данных может размещать информацию кодирования более важного субоблака трехмерных точек в позиции ближе к головной части потока битов. Поскольку это обеспечивает возможность устройству декодирования трехмерных данных получать важную информацию посредством декодирования только головной части потока битов, устройство декодирования трехмерных данных может получать важную информацию быстро.
[0654] Далее описывается процедура для процесса декодирования трехмерных данных выполняется посредством устройства декодирования трехмерных данных. Фиг. 95 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, выполняемого посредством устройства декодирования трехмерных данных согласно настоящему варианту осуществления.
[0655] Во-первых, например, устройство декодирования трехмерных данных получает поток битов, сформированный посредством вышеуказанного устройства кодирования трехмерных данных. Затем, устройство декодирования трехмерных данных разделяет, из полученного потока битов, кодированные данные субоблака A трехмерных точек и кодированные данные субоблака B трехмерных точек (S1711). В частности, устройство декодирования трехмерных данных декодирует, из информации заголовка потока битов, информацию для декодирования каждого субоблака трехмерных точек и разделяет кодированные данные каждого субоблака трехмерных точек с использованием информации.
[0656] Затем устройство декодирования трехмерных данных получает субоблако A трехмерных точек посредством декодирования кодированных данных субоблака A трехмерных точек с использованием способа A (S1712). Помимо этого, устройство декодирования трехмерных данных получает субоблако B трехмерных точек посредством декодирования кодированных данных субоблака B трехмерных точек с использованием способа B (S1713). После этого, устройство декодирования трехмерных данных комбинирует субоблако A трехмерных точек и субоблако B трехмерных точек (S1714).
[0657] Следует отметить, что устройство декодирования трехмерных данных может декодировать субоблако A трехмерных точек и субоблако B трехмерных точек параллельно. Альтернативно, устройство декодирования трехмерных данных может декодировать субоблако A трехмерных точек и субоблако B трехмерных точек последовательно.
[0658] Кроме того, устройство декодирования трехмерных данных может декодировать необходимое субоблако трехмерных точек. Например, устройство декодирования трехмерных данных может декодировать субоблако A трехмерных точек и не должно обязательно декодировать субоблако B трехмерных точек. Например, когда субоблако A трехмерных точек представляет собой облако трехмерных точек, включенное в важную зону лидарных данных, устройство декодирования трехмерных данных декодирует облако трехмерных точек, включенное в важную зону. Оценка собственного местоположения и т.д. в транспортном средстве и т.п. выполняется с использованием облака трехмерных точек, включенного в важную зону.
[0659] Далее описывается конкретный пример процесса кодирования согласно настоящему варианту осуществления. Фиг. 96 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных согласно настоящему варианту осуществления.
[0660] Во-первых, устройство кодирования трехмерных данных разделяет введенные трехмерные точки на разреженное облако трехмерных точек и плотное облако трехмерных точек (S1721). В частности, устройство кодирования трехмерных данных подсчитывает число допустимых листьев ветви в слое структуры в виде дерева октантов. Устройство кодирования трехмерных данных задает каждую ветвь в качестве плотной ветви или разреженной ветви в соответствии с числом допустимых листьев ветви. Затем, устройство кодирования трехмерных данных формирует субоблако трехмерных точек (плотное облако трехмерных точек), полученное посредством сбора плотных ветвей, и субоблако трехмерных точек (разреженное облако трехмерных точек), полученное посредством сбора разреженных ветвей.
[0661] Затем, устройство кодирования трехмерных данных формирует кодированные данные посредством кодирования разреженного облака трехмерных точек (S1722). Например, устройство кодирования трехмерных данных кодирует разреженное облако трехмерных точек с использованием кодирования на основе местоположения.
[0662] Кроме того, устройство кодирования трехмерных данных формирует кодированные данные посредством кодирования плотного облака трехмерных точек (S1723). Например, устройство кодирования трехмерных данных кодирует плотное облако трехмерных точек с использованием кодирования на основе заполнения.
[0663] После этого устройство кодирования трехмерных данных формирует поток битов посредством комбинирования кодированных данных разреженного облака трехмерных точек, полученных на этапе S1722, и кодированных данных плотного облака трехмерных точек, полученных на этапе S1723 (S1724).
[0664] Кроме того, устройство кодирования трехмерных данных может кодировать, в качестве информации заголовка потока битов, информацию для декодирования разреженного облака трехмерных точек и плотного облака трехмерных точек. Например, устройство кодирования трехмерных данных может кодировать информацию, как описано ниже.
[0665] Информация заголовка может включать в себя информацию, указывающую число кодированных субоблаков трехмерных точек. В этом примере, эта информация указывает 2.
[0666] Информация заголовка может включать в себя информацию, указывающую число трехмерных точек, включенных в каждое субоблако трехмерных точек, и способы кодирования. В этом примере, эта информация указывает число трехмерных точек, включенных в разреженное облако трехмерных точек, способ кодирования (кодирование на основе местоположения), применяемый к разреженному облаку трехмерных точек, число трехмерных точек, включенных в плотное облако трехмерных точек, и способ кодирования (кодирование на основе заполнения), применяемый к плотному облаку трехмерных точек.
[0667] Информация заголовка может включать в себя информацию для идентификации начальной позиции или конечной позиции кодированных данных каждого субоблака трехмерных точек. В этом примере, эта информация указывает, по меньшей мере, одну из начальной позиции и конечной позиции кодированных данных разреженного облака трехмерных точек или начальной позиции и конечной позиции кодированных данных плотного облака трехмерных точек.
[0668] Кроме того, устройство кодирования трехмерных данных может кодировать разреженное облако трехмерных точек и плотное облако трехмерных точек параллельно. Альтернативно, устройство кодирования трехмерных данных может кодировать разреженное облако трехмерных точек и плотное облако трехмерных точек последовательно.
[0669] Далее описывается конкретный пример процесса декодирования трехмерных данных. Фиг. 97 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, выполняемого посредством устройства декодирования трехмерных данных согласно настоящему варианту осуществления.
[0670] Во-первых, например, устройство декодирования трехмерных данных получает поток битов, сформированный посредством вышеуказанного устройства кодирования трехмерных данных. Затем, устройство декодирования трехмерных данных разделяет, из полученного потока битов, кодированные данные разреженного облака трехмерных точек и кодированные данные плотного облака трехмерных точек (S1731). В частности, устройство декодирования трехмерных данных декодирует, из информации заголовка потока битов, информацию для декодирования каждого субоблака трехмерных точек и разделяет кодированные данные каждого субоблака трехмерных точек с использованием информации. В этом примере, устройство декодирования трехмерных данных разделяет, из потока битов, кодированные данные разреженного облака трехмерных точек и кодированные данные плотного облака трехмерных точек с использованием информации заголовка.
[0671] Затем устройство декодирования трехмерных данных получает разреженное облако трехмерных точек посредством декодирования кодированных данных разреженного облака трехмерных точек (S1732). Например, устройство декодирования трехмерных данных декодирует разреженное облако трехмерных точек с использованием декодирования на основе местоположения для декодирования кодированных данных, полученных в качестве результата кодирования на основе местоположения.
[0672] Помимо этого, устройство декодирования трехмерных данных получает плотное облако трехмерных точек посредством декодирования кодированных данных плотного облака трехмерных точек (S1733). Например, устройство декодирования трехмерных данных декодирует плотное облако трехмерных точек с использованием декодирования на основе заполнения для декодирования кодированных данных, полученных в качестве результата кодирования на основе заполнения.
[0673] После этого, устройство декодирования трехмерных данных комбинирует разреженное облако трехмерных точек, полученное на этапе S1732, и плотное облако трехмерных точек, полученное на этапе S1733 (S1734).
[0674] Следует отметить, что устройство декодирования трехмерных данных может декодировать разреженное облако трехмерных точек и плотное облако трехмерных точек параллельно. Альтернативно, устройство декодирования трехмерных данных может декодировать разреженное облако трехмерных точек и плотное облако трехмерных точек последовательно.
[0675] Кроме того, устройство декодирования трехмерных данных может декодировать часть необходимых субоблаков трехмерных точек. Например, устройство декодирования трехмерных данных может декодировать плотное облако трехмерных точек и не должно обязательно декодировать разреженное облако трехмерных точек. Например, когда плотное облако трехмерных точек представляет собой облако трехмерных точек, включенное в важную зону лидарных данных, устройство декодирования трехмерных данных декодирует облако трехмерных точек, включенное в важную зону. Оценка собственного местоположения и т.д. в транспортном средстве и т.п. выполняется с использованием облака трехмерных точек, включенного в важную зону.
[0676] Фиг. 98 является блок-схемой последовательности операций способа для процесса кодирования согласно настоящему варианту осуществления. Во-первых, кодирование трехмерных данных разделяет введенное облако трехмерных точек на разреженное облако трехмерных точек и плотное облако трехмерных точек (S1741).
[0677] Затем, устройство кодирования трехмерных данных формирует кодированные данные посредством кодирования плотного облака трехмерных точек (S1742). После этого устройство кодирования трехмерных данных формирует кодированные данные посредством кодирования разреженного облака трехмерных точек (S1743). В завершение, устройство кодирования трехмерных данных формирует поток битов посредством комбинирования кодированных данных разреженного облака трехмерных точек, полученных на этапе S1742, и кодированных данных плотного облака трехмерных точек, полученных на этапе S1743 (S1744).
[0678] Фиг. 99 является блок-схемой последовательности операций способа для процесса декодирования согласно настоящему варианту осуществления. Во-первых, устройство декодирования трехмерных данных извлекает, из потока битов, кодированные данные разреженного облака трехмерных точек и кодированные данные плотного облака трехмерных точек (S1751). Затем, устройство декодирования трехмерных данных получает декодированные данные плотного облака трехмерных точек посредством декодирования кодированных данных плотного облака трехмерных точек (S1752). Затем устройство декодирования трехмерных данных получает декодированные данные разреженного облака трехмерных точек посредством декодирования кодированных данных разреженного облака трехмерных точек (S1753). В завершение, устройство декодирования трехмерных данных формирует облако трехмерных точек посредством комбинирования декодированных данных плотного облака трехмерных точек, полученных на этапе S1752, и декодированных данных разреженного облака трехмерных точек, полученных на этапе S1753 (S1754).
[0679] Следует отметить, что устройство кодирования трехмерных данных и устройство декодирования трехмерных данных могут кодировать и декодировать любое из плотного облака трехмерных точек и разреженного облака трехмерных точек сначала. Помимо этого, процессы кодирования или процессы декодирования могут выполняться параллельно с использованием процессоров и т.д.
[0680] Кроме того, устройство кодирования трехмерных данных может кодировать одно из плотного облака трехмерных точек и разреженного облака трехмерных точек. Например, когда плотное облако трехмерных точек включает в себя важную информацию, устройство кодирования трехмерных данных извлекает плотное облако трехмерных точек и разреженное облако трехмерных точек из введенного облака трехмерных точек и кодирует плотное облако трехмерных точек, но не кодирует разреженное облако трехмерных точек. Это обеспечивает возможность устройству кодирования трехмерных данных присоединять важную информацию к потоку при уменьшении количества битов. Например, когда, между сервером и клиентом, клиент отправляет на сервер запрос на передачу на предмет информации облаков трехмерных точек относительно окрестности клиента, сервер кодирует важную информацию относительно окрестности клиента в качестве плотного облака трехмерных точек и передает кодированную важную информацию в клиент. Это обеспечивает возможность серверу передавать требуемую информацию посредством клиента при уменьшении полосы пропускания сети.
[0681] Кроме того, устройство декодирования трехмерных данных может декодировать одно из плотного облака трехмерных точек и разреженного облака трехмерных точек. Например, когда плотное облако трехмерных точек включает в себя важную информацию, устройство декодирования трехмерных данных декодирует плотное облако трехмерных точек, но не декодирует разреженное облако трехмерных точек. Это обеспечивает возможность устройству декодирования трехмерных данных получать необходимую информацию при снижении нагрузки по обработке процесса декодирования.
[0682] Фиг. 100 является блок-схемой последовательности операций способа для процесса разделения трехмерных точек (S1741), проиллюстрированного на фиг. 98. Во-первых, устройство кодирования трехмерных данных задает слой L и пороговое значение TH (S1761). Следует отметить, что устройство кодирования трехмерных данных может присоединять информацию, указывающую заданный слой L и пороговое значение TH, к потоку битов. Другими словами, устройство кодирования трехмерных данных может формировать поток битов, включающий в себя информацию, указывающую заданный слой L и пороговое значение TH.
[0683] Затем, устройство кодирования трехмерных данных перемещает целевую позицию из корня дерева октантов в ведущую ветвь в слое L. Другими словами, устройство кодирования трехмерных данных выбирает ведущую ветвь в слое L в качестве текущей ветви (S1762).
[0684] После этого устройство кодирования трехмерных данных подсчитывает число допустимых листьев текущей ветви в слое L (S1763). Когда число допустимых листьев текущей ветви превышает пороговое значение TH ("Да" на S1764), устройство кодирования трехмерных данных регистрирует текущую ветвь в качестве плотной ветви с плотным облаком трехмерных точек (S1765). Напротив, когда число допустимых листьев текущей ветви меньше порогового значения TH ("Нет" на S1764), устройство кодирования трехмерных данных регистрирует текущую ветвь в качестве разреженной ветви с разреженным облаком трехмерных точек (S1766).
[0685] Когда обработка всех ветвей в слое L не завершается ("Нет" на S1767), устройство кодирования трехмерных данных перемещает целевую позицию в следующую ветвь в слое L. Другими словами, устройство кодирования трехмерных данных выбирает следующую ветвь в слое L в качестве текущей ветви (S1768). Кроме того, после этого устройство кодирования трехмерных данных выполняет этап S1763 и следующие этапы для выбранной следующей текущей ветви.
[0686] Вышеописанный процесс повторяется до тех пор, пока обработка всех ветвей в слое L не завершается ("Да" на S1767).
[0687] Следует отметить, что хотя слой L и пороговое значение TH предварительно установлены в вышеприведенном описании, настоящий вариант осуществления не обязательно ограничивается этим. Например, устройство кодирования трехмерных данных задает различные комбинации слоя L и порогового значения TH, формирует плотное облако трехмерных точек и разреженное облако трехмерных точек с использованием каждой из комбинаций и кодирует плотное облако трехмерных точек и разреженное облако трехмерных точек. Устройство кодирования трехмерных данных в завершение кодирует плотное облако трехмерных точек и разреженное облако трехмерных точек с использованием, из числа комбинаций, комбинации слоя L и порогового значения TH, имеющей наибольшую эффективность кодирования для сформированных кодированных данных. Это позволяет повышать эффективность кодирования. Кроме того, например, устройство кодирования трехмерных данных может вычислять слой L и пороговое значение TH. Например, устройство кодирования трехмерных данных может задавать, для слоя L, значение, составляющее половину от максимального значения слоев, включенных в древовидную структуру. Кроме того, устройство кодирования трехмерных данных может задавать, для порогового значения TH, значение, составляющее половину от общего числа трехмерных точек, включенных в древовидную структуру.
[0688] В вышеприведенном описании, показан пример, в котором введенное облако трехмерных точек разделяется на два типа облака трехмерных точек, т.е. на плотное облако трехмерных точек и разреженное облако трехмерных точек. Тем не менее, устройство кодирования трехмерных данных может разделять введенное облако трехмерных точек, по меньшей мере, на три типа облака трехмерных точек. Например, когда число допустимых листьев текущей ветви превышает или равно первому пороговому значению TH1, устройство кодирования трехмерных данных классифицирует текущую ветвь в первое плотное облако трехмерных точек, и когда число допустимых листьев текущей ветви меньше первого порогового значения TH1 и больше или равно второму пороговому значению TH2, устройство кодирования трехмерных данных классифицирует текущую ветвь во второе плотное облако трехмерных точек. Когда число допустимых листьев текущей ветви меньше второго порогового значения TH2 и больше или равно третьему пороговому значению TH3, устройство кодирования трехмерных данных классифицирует текущую ветвь в первое разреженное облако трехмерных точек, и когда число допустимых листьев текущей ветви меньше третьего порогового значения TH3, устройство кодирования трехмерных данных классифицирует текущую ветвь во второе разреженное облако трехмерных точек.
[0689] Далее описывается пример синтаксиса кодированных данных облака трехмерных точек согласно настоящему варианту осуществления. Фиг. 101 является схемой, иллюстрирующей пример этого синтаксиса; pc_header, например, представляет собой информацию заголовка введенных трехмерных точек.
[0690] Num_sub_pc, проиллюстрированный на фиг. 101, указывает число субоблаков трехмерных точек; numPoint[i] указывает число трехмерных точек, включенных в i-ое субоблако трехмерных точек; coding_type[i] представляет собой информацию типа кодирования, указывающую тип кодирования (схему кодирования), применяемый к i-ому субоблаку трехмерных точек. Например, coding_type=00 указывает то, что кодирование на основе местоположения применяется; coding_type=01 указывает то, что кодирование на основе заполнения применяется; coding_type=10 или 11 указывает то, что другая схема кодирования применяется.
[0691] Data_sub_cloud представляет собой кодированные данные i-го субоблака трехмерных точек; coding_type_00_data, например, представляет собой кодированные данные, к которым применяется тип 00 кодирования, указываемый посредством coding_type, и представляет собой кодированные данные, к которым применяется кодирование на основе местоположения; coding_type_01_data, например, представляет собой кодированные данные, к которым применяется тип 01 кодирования указываемый посредством coding_type, и представляет собой кодированные данные, к которым применяется кодирование на основе заполнения.
[0692] End_of_data представляет собой концевую информацию, указывающую конец кодированных данных. Например, постоянная битовая последовательность, не используемая для кодированных данных, назначается end_of_data. Это позволяет устройству декодирования трехмерных данных, например, пропускать декодирование кодированных данных, которые не должны обязательно декодироваться, посредством выполнения поиска в потоке битов на предмет битовой последовательности end_of_data.
[0693] Следует отметить, что устройство кодирования трехмерных данных может энтропийно кодировать кодированные данные, сформированные посредством вышеописанного способа. Например, устройство кодирования трехмерных данных преобразует в двоичную форму каждое значение и выполняет арифметическое кодирование для преобразованного в двоичную форму значения.
[0694] Хотя пример структуры в виде дерева квадрантов или структуры в виде дерева октантов показан в настоящем варианте осуществления, настоящий вариант осуществления не обязательно ограничивается этим. Вышеописанный способ может применяться к N-арному (N является целым числом, большим или равным 2) дереву, такому как двоичное дерево и дерево гексадекантов, либо к другой древовидной структуре.
Варьирование
[0695]
В вышеприведенном примере, как проиллюстрировано на фиг. 92 и фиг. 93, кодируется древовидная структура, которая включает в себя плотную ветвь и верхний слой (древовидная структура от корня полной древовидной структуры до корня плотной ветви), и кодируется древовидная структура, которая включает в себя разреженную ветвь и верхний слой (древовидная структура от корня полной древовидной структуры до корня разреженной ветви). В настоящем варьировании, устройство кодирования трехмерных данных разделяет плотную ветвь и разреженную ветвь и кодирует плотную ветвь и разреженную ветвь. Другими словами, древовидная структура, которая должна кодироваться, не включает в себя древовидную структуру верхнего слоя. Например, устройство кодирования трехмерных данных применяет кодирование на основе заполнения к плотной ветви и применяет кодирование на основе местоположения к разреженной ветви.
[0696] Фиг. 102 является схемой, иллюстрирующей пример плотной ветви, разделенной от древовидной структуры, проиллюстрированной на фиг. 88. Фиг. 103 является схемой, иллюстрирующей пример разреженной ветви, разделенной от древовидной структуры, проиллюстрированной на фиг. 88. В настоящем варьировании, кодируются древовидные структуры, проиллюстрированные на фиг. 102 и фиг. 103.
[0697] Устройство кодирования трехмерных данных кодирует информацию, указывающую позицию ветви, вместо кодирования древовидной структуры верхнего слоя. Например, эта информация указывает позицию корня ветви.
[0698] Например, устройство кодирования трехмерных данных кодирует, в качестве кодированных данных плотной ветви, информацию слоя, указывающую слой, в котором формируется плотная ветвь, и информацию ветви, указывающую то, какой номер ветви в слое представляет собой плотная ветвь. Это обеспечивает возможность устройству декодирования трехмерных данных декодировать информацию слоя и информацию ветви из потока битов и понимать то, какое облако трехмерных точек с каким номером ветви в каком слое представляет собой декодированная плотная ветвь. Аналогично, устройство кодирования трехмерных данных кодирует, в качестве кодированных данных разреженной ветви, информацию слоя, указывающую слой, в котором формируется разреженная ветвь, и информацию ветви, указывающую то, в каком номере ветви в слое присутствует разреженная ветвь, с использованием этой информации слоя и информации ветви.
[0699] Это обеспечивает возможность устройству декодирования трехмерных данных декодировать информацию слоя и информацию ветви из потока битов и понимать то, какое облако трехмерных точек с каким номером ветви в каком слое представляет собой декодированная разреженная ветвь, с использованием этой информации слоя и информации ветви. Соответственно, поскольку можно уменьшать объем служебной информации, получающийся в результате кодирования информации слоя выше плотной ветви или разреженной ветви, можно повышать эффективность кодирования.
[0700] Следует отметить, что информация ветви может указывать значение, назначенное каждой ветви в слое, указываемом посредством информации слоя. Кроме того, информация ветви может указывать значение, назначенное каждому узлу из корня дерева октантов, в качестве начальной точки. В этом случае, информация слоя не должна обязательно кодироваться. Кроме того, устройство кодирования трехмерных данных может формировать плотные ветви и разреженные ветви.
[0701] Фиг. 104 является блок-схемой последовательности операций способа для процесса кодирования согласно настоящему варьированию. Во-первых, устройство кодирования трехмерных данных формирует одну или более разреженных ветвей и одну или более плотных ветвей из введенного облака трехмерных точек (S1771).
[0702] Затем, устройство кодирования трехмерных данных формирует кодированные данные посредством кодирования каждой из одной или более плотных ветвей (S1772). После этого устройство кодирования трехмерных данных определяет то, выполняется или нет кодирование всех плотных ветвей, сформированных на этапе S1771 (S1774).
[0703] Когда кодирование всех плотных ветвей не завершается ("Нет" на S1773), устройство кодирования трехмерных данных выбирает следующую плотную ветвь (S1774) и формирует кодированные данные посредством кодирования выбранной плотной ветви (S1772).
[0704] С другой стороны, когда кодирование всех плотных ветвей завершается ("Да" на S1773), устройство кодирования трехмерных данных формирует кодированные данные посредством кодирования каждой из одной или более разреженных ветвей (S1775). Затем, устройство кодирования трехмерных данных определяет то, выполняется или нет кодирование всех разреженных ветвей, сформированных на этапе S1771 (S1776).
[0705] Когда кодирование всех разреженных ветвей не завершается ("Нет" на S1776), устройство кодирования трехмерных данных выбирает следующую разреженную ветвь (S1777) и формирует кодированные данные посредством кодирования выбранной разреженной ветви (S1775).
[0706] С другой стороны, когда кодирование всех разреженных ветвей завершается ("Да" на S1776), устройство кодирования трехмерных данных комбинирует кодированные данные, сформированные на этапах S1772 и S1775, чтобы формировать поток битов (S1778).
[0707] Фиг. 105 является блок-схемой последовательности операций способа для процесса декодирования согласно настоящему варьированию. Во-первых, устройство декодирования трехмерных данных извлекает один или более кодированных элементов данных соответствующих плотных ветвей и один или более кодированных элементов данных соответствующих разреженных ветвей из потока битов (S1781). Затем, устройство декодирования трехмерных данных получает декодированные данные каждой из плотных ветвей посредством декодирования кодированных данных плотной ветви (S1782).
[0708] Затем устройство декодирования трехмерных данных определяет то, завершается или нет декодирование кодированных элементов данных всех плотных ветвей, извлеченных на этапе S1781 (S1783). Когда декодирование кодированных элементов данных всех плотных ветвей не завершается ("Нет" на S1783), устройство декодирования трехмерных данных выбирает кодированные данные следующей плотной ветви (S1784) и получает декодированные данные плотной ветви посредством декодирования выбранных кодированных данных плотной ветви (S1782).
[0709] С другой стороны, когда декодирование кодированных элементов данных всех плотных ветвей завершается ("Да" на S1783), устройство декодирования трехмерных данных получает декодированные данные каждой из разреженных ветвей посредством декодирования кодированных данных разреженной ветви (S1785).
[0710] После этого, устройство декодирования трехмерных данных определяет то, завершается или нет декодирование кодированных элементов данных всех разреженных ветвей, извлеченных на этапе S1781 (S1786). Когда декодирование кодированных элементов данных всех разреженных ветвей не завершается ("Нет" на S1786), устройство декодирования трехмерных данных выбирает кодированные данные следующей разреженной ветви (S1787) и получает декодированные данные разреженной ветви посредством декодирования выбранных кодированных данных разреженной ветви (S1785).
[0711] С другой стороны, когда декодирование кодированных элементов данных всех разреженных ветвей завершается ("Да" на S1786), устройство декодирования трехмерных данных комбинирует декодированные данные, полученные на этапах S1782 и S1785, чтобы формировать облако трехмерных точек (S1788).
[0712] Следует отметить, что устройство кодирования трехмерных данных и устройство декодирования трехмерных данных могут кодировать и декодировать любую из плотной ветви и разреженной ветви сначала. Помимо этого, процессы кодирования или процессы декодирования могут выполняться параллельно с использованием процессоров и т.д.
[0713] Кроме того, устройство кодирования трехмерных данных может кодировать одну из плотной ветви и разреженной ветви. Помимо этого, устройство кодирования трехмерных данных может кодировать часть плотных ветвей. Например, когда конкретная плотная ветвь включает в себя важную информацию, устройство кодирования трехмерных данных извлекает плотные ветви и разреженные ветви из введенного облака трехмерных точек и кодирует плотную ветвь, включающую в себя важную информацию, но не кодирует другие плотные ветви и разреженные ветви. Это обеспечивает возможность устройству кодирования трехмерных данных присоединять важную информацию к потоку при уменьшении количества битов. Например, когда, между сервером и клиентом, клиент отправляет на сервер запрос на передачу на предмет информации облаков трехмерных точек относительно окрестности клиента, сервер кодирует важную информацию относительно окрестности клиента в качестве плотной ветви и передает важную информацию в клиент. Это обеспечивает возможность серверу передавать требуемую информацию посредством клиента при уменьшении полосы пропускания сети.
[0714] Кроме того, устройство декодирования трехмерных данных может декодировать одну из плотной ветви и разреженной ветви. Помимо этого, устройство декодирования трехмерных данных может декодировать часть плотных ветвей. Например, когда конкретная плотная ветвь включает в себя важную информацию, устройство декодирования трехмерных данных декодирует конкретную плотную ветвь, но не декодирует другие плотные ветви и разреженные ветви. Это обеспечивает возможность устройству декодирования трехмерных данных получать необходимую информацию при снижении нагрузки по обработке процесса декодирования.
[0715] Фиг. 106 является блок-схемой последовательности операций способа для процесса разделения трехмерных точек (S1771), проиллюстрированного на фиг. 104. Во-первых, устройство кодирования трехмерных данных задает слой L и пороговое значение TH (S1761). Следует отметить, что устройство кодирования трехмерных данных может присоединять информацию, указывающую заданный слой L и пороговое значение TH, к потоку битов.
[0716] Затем, устройство кодирования трехмерных данных выбирает ведущую ветвь в слое L в качестве текущей ветви (S1762). После этого устройство кодирования трехмерных данных подсчитывает число допустимых листьев текущей ветви в слое L (S1763). Когда число допустимых листьев текущей ветви превышает пороговое значение TH ("Да" на S1764), устройство кодирования трехмерных данных задает текущую ветвь в качестве плотной ветви и присоединяет информацию слоя и информацию ветви к потоку битов (S1765A). С другой стороны, когда число допустимых листьев текущей ветви меньше порогового значения TH ("Нет" на S1764), устройство кодирования трехмерных данных задает текущую ветвь в качестве разреженной ветви и присоединяет информацию слоя и информацию ветви к потоку битов (S1766A).
[0717] Когда обработка всех ветвей в слое L не завершается ("Нет" на S1767), устройство кодирования трехмерных данных выбирает следующую ветвь в слое L в качестве текущей ветви (S1768). Кроме того, после этого устройство кодирования трехмерных данных выполняет этап S1763 и следующие этапы для выбранной следующей текущей ветви. Вышеописанный процесс повторяется до тех пор, пока обработка всех ветвей в слое L не завершается ("Да" на S1767).
[0718] Следует отметить, что хотя слой L и пороговое значение TH предварительно установлены в вышеприведенном описании, настоящее раскрытие не обязательно ограничивается этим. Например, устройство кодирования трехмерных данных задает различные комбинации слоя L и порогового значения TH, формирует плотную ветвь и разреженную ветвь с использованием каждой из комбинаций и кодирует плотную ветвь и разреженную ветвь. Устройство кодирования трехмерных данных в завершение кодирует плотную ветвь и разреженную ветвь с использованием, из числа комбинаций, комбинации слоя L и порогового значения TH, имеющей наибольшую эффективность кодирования для сформированных кодированных данных. Это позволяет повышать эффективность кодирования. Кроме того, например, устройство кодирования трехмерных данных может вычислять слой L и пороговое значение TH. Например, устройство кодирования трехмерных данных может задавать, для слоя L, значение, составляющее половину от максимального значения слоев, включенных в древовидную структуру. Кроме того, устройство кодирования трехмерных данных может задавать, для порогового значения TH, значение, составляющее половину от общего числа трехмерных точек, включенных в древовидную структуру.
[0719] Далее описывается пример синтаксиса кодированных данных облака трехмерных точек согласно настоящему варьированию. Фиг. 107 является схемой, иллюстрирующей пример этого синтаксиса. Пример синтаксиса, проиллюстрированного на фиг. 107, получается посредством присоединения layer_id[i], который представляет собой информацию слоя, и branch_id[i], который представляет собой информацию ветви, к примеру синтаксиса, проиллюстрированного на фиг. 101.
[0720] Layer_id[i] указывает номер слоя i-го субоблака трехмерных точек; branch_id[i] указывает номер ветви в layer_id[i] i-го субоблака трехмерных точек.
[0721] Layer_id[i] и branch_id[i] представляют собой информацию слоя и информацию ветви, которые указывают, например, позицию ветви в дереве октантов. Например, layer_id[i] = 2 и branch_id[i] = 5 указывают то, что i-ая ветвь представляет собой пятую ветвь в слое 2.
[0722] Следует отметить, что устройство кодирования трехмерных данных может энтропийно кодировать кодированные данные, сформированные посредством вышеописанного способа. Например, устройство кодирования трехмерных данных преобразует в двоичную форму каждое значение и выполняет арифметическое кодирование для преобразованного в двоичную форму значения.
[0723] Хотя пример структуры в виде дерева квадрантов или структуры в виде дерева октантов приведен в настоящем варьировании, настоящее раскрытие не обязательно ограничивается этим. Вышеописанный способ может применяться к N-арному (N является целым числом, большим или равным 2) дереву, такому как двоичное дерево и дерево гексадекантов, либо к другой древовидной структуре.
[0724] Как указано выше, устройство кодирования трехмерных данных согласно настоящему варианту осуществления, выполняет процесс, проиллюстрированный на фиг. 108.
[0725] Во-первых, устройство кодирования трехмерных данных формирует N-арную (N является целым числом, большим или равным 2) древовидную структуру трехмерных точек, включенных в трехмерные данные (S1801).
[0726] Затем, устройство кодирования трехмерных данных формирует первые кодированные данные посредством кодирования, с использованием первого процесса кодирования, первой ветви, имеющей, в качестве корня, первый узел, включенный в первый слой, который представляет собой один из слоев, включенных в N-арную древовидную структуру (S1802).
[0727] Помимо этого, устройство кодирования трехмерных данных формирует вторые кодированные данные посредством кодирования, с использованием второго процесса кодирования, отличающегося от первого процесса кодирования, второй ветви, имеющей, в качестве корня, второй узел, который включается в первый слой и отличается от первого узла (S1803).
[0728] После этого устройство кодирования трехмерных данных формирует поток битов, включающий в себя первые кодированные данные и вторые кодированные данные (S1804).
[0729] Поскольку это обеспечивает возможность устройству кодирования трехмерных данных применять процесс кодирования, подходящий для каждой ветви, включенной в N-арную древовидную структуру, можно повышать эффективность кодирования.
[0730] Например, число трехмерных точек, включенных в первую ветвь, меньше предварительно определенного порогового значения, и число трехмерных точек, включенных во вторую ветвь, превышает пороговое значение. Другими словами, когда число трехмерных точек, включенных в текущую ветвь, меньше порогового значения, устройство кодирования трехмерных данных задает текущую ветвь в качестве первой ветви, а когда число трехмерных точек, включенных в текущую ветвь, превышает пороговое значение, устройство кодирования трехмерных данных задает текущую ветвь в качестве второй ветви.
[0731] Например, первые кодированные данные включают в себя первую информацию, указывающую то, что первая N-арная древовидная структура первых трехмерных точек, включенных в первую ветвь, выражается с использованием первой формулы. Вторые кодированные данные включают в себя вторую информацию, указывающую то, что вторая N-арная древовидная структура вторых трехмерных точек, включенных во вторую ветвь, выражается с использованием второй формулы. Другими словами, первый процесс кодирования и второй процесс кодирования отличаются по схеме кодирования.
[0732] Например, кодирование на основе местоположения используется в первом процессе кодирования, и кодирование на основе заполнения используется во втором процессе кодирования. Другими словами, первая информация включает в себя фрагменты информации трехмерных точек, каждый из которых ассоциирован с соответствующей одной из первых трехмерных точек. Каждый из фрагментов информации трехмерных точек включает в себя индекс, ассоциированный с каждым из слоев в первой N-арной древовидной структуре. Каждый из индексов указывает, из числа N субблоков, принадлежащих соответствующим одному из слоев, субблок, которому принадлежит соответствующая одна из первых трехмерных точек. Вторая информация включает в себя фрагменты 1-битовой информации, каждый из которых ассоциирован с соответствующим одним из субблоков, принадлежащих слоям во второй N-арной древовидной структуре, и указывает то, присутствует или нет трехмерная точка в соответствующем субблоке.
[0733] Например, параметр квантования, используемый во втором процессе кодирования, отличается от параметра квантования, используемого в первом процессе кодирования. Другими словами, первый процесс кодирования и второй процесс кодирования являются идентичными по схеме кодирования, но отличаются по параметру для использования.
[0734] Например, как проиллюстрировано на фиг. 92 и фиг. 93, при кодировании первой ветви, устройство кодирования трехмерных данных кодирует, с использованием первого процесса кодирования, древовидную структуру, включающую в себя первую ветвь, и древовидную структуру от корня N-арной древовидной структуры до первого узла, и при кодировании второй ветви, устройство кодирования трехмерных данных кодирует, с использованием второго процесса кодирования, древовидную структуру, включающую в себя вторую ветвь, и древовидную структуру от корня N-арной древовидной структуры до второго узла.
[0735] Например, первые кодированные данные включают кодированные данные первой ветви и третью информацию, указывающую позицию первого узла в N-арной древовидной структуре. Вторые кодированные данные включают кодированные данные второй ветви и четвертую информацию, указывающую позицию второго узла в N-арной древовидной структуре.
[0736] Например, третья информация включает в себя информацию (информацию слоя), указывающую первый слой, и информацию (информацию ветви), указывающую то, какой из узлов, включенных в первый слой, представляет собой первый узел. Четвертая информация включает в себя информацию (информацию слоя), указывающую первый слой, и информацию (информацию ветви), указывающую то, какой из узлов, включенных в первый слой, представляет собой второй узел.
[0737] Например, первые кодированные данные включают в себя информацию (numPoint), указывающую число трехмерных точек, включенных в первую ветвь, и вторые кодированные данные включают в себя информацию (numPoint), указывающую число трехмерных точек, включенных во вторую ветвь.
[0738] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[0739] Устройство декодирования трехмерных данных согласно настоящему варианту осуществления выполняет процесс, проиллюстрированный на фиг. 109.
[0740] Во-первых, устройство декодирования трехмерных данных получает, из потока битов, первые кодированные данные, полученные посредством кодирования первой ветви, имеющей, в качестве корня, первый узел, включенный в первый слой, который представляет собой один из слоев, включенных в N-арную (N является целым числом, большим или равным 2) древовидную структуру трехмерных точек, и вторые кодированные данные, полученные посредством кодирования второй ветви, имеющей, в качестве корня, второй узел, который включается в первый слой и отличается от первого узла (S1811).
[0741] Затем, устройство декодирования трехмерных данных формирует первые декодированные данные первой ветви посредством декодирования первых кодированных данных с использованием первого процесса декодирования (S1812).
[0742] Помимо этого, устройство декодирования трехмерных данных формирует вторые декодированные данные второй ветви посредством декодирования вторых кодированных данных с использованием второго процесса декодирования, отличающегося от первого процесса декодирования (S1813).
[0743] Затем устройство декодирования трехмерных данных восстанавливает трехмерные точки с использованием первых декодированных данных и вторых декодированных данных (S1814). Например, эти трехмерные точки включают в себя трехмерные точки, указываемые посредством первых декодированных данных, и трехмерные точки, указываемые посредством вторых декодированных данных.
[0744] Это обеспечивает возможность устройству декодирования трехмерных данных декодировать поток битов, для которого эффективность кодирования повышается.
[0745] Например, число трехмерных точек, включенных в первую ветвь, меньше предварительно определенного порогового значения, и число трехмерных точек, включенных во вторую ветвь, превышает пороговое значение.
[0746] Например, первые кодированные данные включают в себя первую информацию, указывающую то, что первая N-арная древовидная структура первых трехмерных точек, включенных в первую ветвь, выражается с использованием первой формулы. Вторые кодированные данные включают в себя вторую информацию, указывающую то, что вторая N-арная древовидная структура вторых трехмерных точек, включенных во вторую ветвь, выражается с использованием второй формулы. Другими словами, первый процесс декодирования и второй процесс декодирования отличаются по схеме кодирования (схеме декодирования).
[0747] Например, кодирование на основе местоположения используется для первых кодированных данных, и кодирование на основе заполнения используется для вторых кодированных данных. Другими словами, первая информация включает в себя фрагменты информации трехмерных точек, каждый из которых ассоциирован с соответствующей одной из первых трехмерных точек. Каждый из фрагментов информации трехмерных точек включает в себя индекс, ассоциированный с каждым из слоев в первой N-арной древовидной структуре. Каждый из индексов указывает, из числа N субблоков, принадлежащих соответствующим одному из слоев, субблок, которому принадлежит соответствующая одна из первых трехмерных точек. Вторая информация включает в себя фрагменты 1-битовой информации, каждый из которых ассоциирован с соответствующим одним из субблоков, принадлежащих слоям во второй N-арной древовидной структуре, и указывает то, присутствует или нет трехмерная точка в соответствующем субблоке.
[0748] Например, параметр квантования, используемый во втором процессе декодирования, отличается от параметра квантования, используемого в первом процессе декодирования. Другими словами, первый процесс декодирования и второй процесс декодирования являются идентичными по схеме кодирования (схеме декодирования), но отличаются по параметру для использования.
[0749] Например, как проиллюстрировано на фиг. 92 и фиг. 93, при декодировании первой ветви, устройство декодирования трехмерных данных декодирует, с использованием первого процесса декодирования, древовидную структуру, включающую в себя первую ветвь, и древовидную структуру от корня N-арной древовидной структуры до первого узла, и при декодировании второй ветви, устройство декодирования трехмерных данных декодирует, с использованием второго процесса декодирования, древовидную структуру, включающую в себя вторую ветвь, и древовидную структуру от корня N-арной древовидной структуры до второго узла.
[0750] Например, первые кодированные данные включают кодированные данные первой ветви и третью информацию, указывающую позицию первого узла в N-арной древовидной структуре. Вторые кодированные данные включают кодированные данные второй ветви и четвертую информацию, указывающую позицию второго узла в N-арной древовидной структуре.
[0751] Например, третья информация включает в себя информацию (информацию слоя), указывающую первый слой, и информацию (информацию ветви), указывающую то, какой из узлов, включенных в первый слой, представляет собой первый узел. Четвертая информация включает в себя информацию (информацию слоя), указывающую первый слой, и информацию (информацию ветви), указывающую то, какой из узлов, включенных в первый слой, представляет собой второй узел.
[0752] Например, первые кодированные данные включают в себя информацию (numPoint), указывающую число трехмерных точек, включенных в первую ветвь, и вторые кодированные данные включают в себя информацию (numPoint), указывающую число трехмерных точек, включенных во вторую ветвь.
[0753] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
Вариант 11 осуществления
[0754]
В настоящем варианте осуществления, в дальнейшем описывается адаптивное энтропийное кодирование (арифметическое кодирование), выполняемое для кодов заполнения дерева октантов.
[0755] Фиг. 110 является схемой, иллюстрирующей пример структуры в виде дерева квадрантов. Фиг. 111 является схемой, иллюстрирующей коды заполнения древовидной структуры, проиллюстрированной на фиг. 110. Фиг. 112 является схемой, принципиально иллюстрирующей операцию, выполняемую посредством устройства кодирования трехмерных данных согласно настоящему варианту осуществления.
[0756] Устройство кодирования трехмерных данных согласно настоящему варианту осуществления энтропийно кодирует 8-битовый код заполнения в дереве октантов. Устройство кодирования трехмерных данных также обновляет таблицу кодирования в процессе энтропийного кодирования для кода заполнения. Дополнительно, устройство кодирования трехмерных данных не использует одну таблицу кодирования, а использует адаптивную таблицу кодирования, с тем чтобы использовать информацию подобия трехмерных точек. Другими словами, устройство кодирования трехмерных данных использует таблицы кодирования.
[0757] Информация подобия, например, представляет собой геометрическую информацию трехмерной точки, информацию структуры дерева октантов или информацию атрибутов трехмерной точки.
[0758] Следует отметить, что хотя дерево квадрантов показано как пример на фиг. 110-112, идентичный способ может применяться к N-арному дереву, такому как двоичное дерево, дерево октантов и дерево гексадекантов. Например, устройство кодирования трехмерных данных энтропийно кодирует 8-битовый код заполнения в случае дерева октантов, 4-битовый код заполнения в случае дерева квадрантов и 16-битовый код заполнения в случае дерева гексадекантов, с использованием адаптивной таблицы (также называемой "таблицей кодирования").
[0759] Далее описывается адаптивный процесс энтропийного кодирования с использованием геометрической информации трехмерной точки.
[0760] Когда локальные геометрии двух узлов в древовидной структуре являются аналогичными друг другу, имеется вероятность того, что состояния заполнения (т.е. состояния, указывающие то, включается или нет трехмерная точка) дочерних узлов являются аналогичными друг другу. Как результат, устройство кодирования трехмерных данных выполняет группировку с использованием локальной геометрии родительского узла. Это обеспечивает возможность устройству кодирования трехмерных данных группировать состояния заполнения дочерних узлов и использовать различную таблицу кодирования для каждой группы. Соответственно, можно повышать эффективность энтропийного кодирования.
[0761] Фиг. 113 является схемой, иллюстрирующей пример геометрической информации. Геометрическая информация включает в себя информацию, указывающую то, является или нет каждый из соседних узлов относительно текущего узла занятым (т.е. включает или нет в себя трехмерную точку). Например, устройство кодирования трехмерных данных вычисляет локальную геометрию текущего узла с использованием информации, указывающей то, включает или нет соседний узел в себя трехмерную точку (является занятым или незанятым). Соседний узел, например, представляет собой узел, пространственно расположенный около текущего узла, или узел, расположенный в идентичной позиции в другое время относительно текущего узла или пространственно расположенный около позиции.
[0762] На фиг. 113, заштрихованный куб указывает текущий узел. Белый куб представляет собой соседний узел и указывает узел, включающий в себя трехмерную точку. На фиг. 113, геометрический шаблон, указываемый в (2), получается посредством вращения геометрического шаблона, указываемого в (1). Соответственно, устройство кодирования трехмерных данных определяет то, что эти геометрические шаблоны имеют высокое геометрическое подобие, и энтропийно кодирует геометрические шаблоны с использованием идентичной таблицы кодирования. Помимо этого, устройство кодирования трехмерных данных определяет то, что геометрические шаблоны, указываемые в (3) и (4), имеют низкое геометрическое подобие, и энтропийно кодирует геометрические шаблоны с использованием других таблиц кодирования.
[0763] Фиг. 114 является схемой, иллюстрирующей пример кодов заполнения текущих узлов в геометрических шаблонах (1)-(4), проиллюстрированных на фиг. 113, и таблиц кодирования, используемых для энтропийного кодирования. Как проиллюстрировано выше, устройство кодирования трехмерных данных определяет то, что геометрические шаблоны (1) и (2) включаются в идентичную геометрическую группу, и использует идентичную таблицу A кодирования для геометрических шаблонов (1) и (2). Устройство кодирования трехмерных данных использует таблицу B кодирования и таблицу C кодирования для геометрических шаблонов (3) и (4), соответственно.
[0764] Как проиллюстрировано на фиг. 114, возникает случай, когда коды заполнения текущих узлов в геометрических шаблонах (1) и (2), включенных в идентичную геометрическую группу, являются идентичными друг другу.
[0765] Далее описывается адаптивный процесс энтропийного кодирования с использованием информации структуры древовидной структуры. Например, информация структуры включает в себя информацию, указывающую слой, которому принадлежит текущий узел.
[0766] Фиг. 115 является схемой, иллюстрирующей пример древовидной структуры. Вообще говоря, локальная форма объекта зависит от критерия поиска. Например, древовидная структура имеет тенденцию быть более разреженной в нижнем слое, чем в верхнем слое. Соответственно, устройство кодирования трехмерных данных использует различные таблицы кодирования для верхних слоев и нижних слоев, как проиллюстрировано на фиг. 115, что позволяет повышать эффективность энтропийного кодирования.
[0767] Другими словами, когда устройство кодирования трехмерных данных кодирует код заполнения каждого слоя, устройство кодирования трехмерных данных может использовать различную таблицу кодирования для каждого слоя. Например, когда устройство кодирования трехмерных данных кодирует код заполнения слоя N (N=0-6), устройство кодирования трехмерных данных может выполнять энтропийное кодирование для древовидной структуры, проиллюстрированной на фиг. 115, с использованием таблицы кодирования для слоя N. Поскольку это обеспечивает возможность устройству кодирования трехмерных данных выбирать таблицу кодирования в соответствии с шаблоном появления кода заполнения каждого слоя, устройство кодирования трехмерных данных может повышать эффективность кодирования.
[0768] Кроме того, как проиллюстрировано на фиг. 115, устройство кодирования трехмерных данных может использовать таблицу A кодирования для кодов заполнения слоев 0-2 и может использовать таблицу B кодирования для кодов заполнения слоев 3-6. Поскольку это обеспечивает возможность устройству кодирования трехмерных данных выбирать таблицу кодирования в соответствии с шаблоном появления кода заполнения для каждой группы слоев, устройство кодирования трехмерных данных может повышать эффективность кодирования. Устройство кодирования трехмерных данных может присоединять информацию таблицы кодирования, используемой для каждого слоя, к заголовку потока битов. Альтернативно, таблица кодирования, используемая для каждого слоя, может быть предварительно задана посредством стандартов и т.д.
[0769] Далее описывается адаптивный процесс энтропийного кодирования с использованием информации атрибутов (информации свойств) трехмерной точки. Например, информация атрибутов включает в себя информацию относительно объекта, включающего в себя текущий узел, или информацию относительно нормального вектора текущего узла.
[0770] Можно группировать трехмерные точки, имеющие аналогичную геометрию, с использованием фрагментов информации атрибутов трехмерных точек. Например, нормальный вектор, указывающий направление каждой из трехмерных точек, может использоваться в качестве общей информации атрибутов трехмерных точек. Можно находить геометрию, связанную с аналогичным кодом заполнения в древовидной структуре, посредством использования нормального вектора.
[0771] Кроме того, цвет или степень отражения (коэффициент отражения) может использоваться в качестве информации атрибутов. Например, устройство кодирования трехмерных данных группирует трехмерные точки, имеющие аналогичную геометрию, с использованием цветов или коэффициентов отражения трехмерных точек, и выполняет такой процесс, как переключение между таблицами кодирования для каждой из групп.
[0772] Фиг. 116 является схемой для описания переключения между таблицами кодирования на основе нормального вектора. Как проиллюстрировано на фиг. 116, когда группы нормальных векторов, которым принадлежат нормальные векторы текущих узлов, отличаются, различные таблицы кодирования используются. Например, нормальный вектор, включенный в предварительно определенный диапазон, классифицируется на одну группу нормальных векторов.
[0773] Когда объекты принадлежат различным категориям, имеется высокая вероятность того, что коды заполнения отличаются. Соответственно, устройство кодирования трехмерных данных может выбирать таблицу кодирования в соответствии с категорией объекта, которому принадлежит текущий узел. Фиг. 117 является схемой для описания переключения между таблицами кодирования на основе категории объекта. Как проиллюстрировано на фиг. 117, когда объекты принадлежат различным категориям, различные таблицы кодирования используются.
[0774] Далее описывается пример структуры потока битов согласно настоящему варианту осуществления. Фиг. 118 является схемой, иллюстрирующей пример структуры потока битов, сформированного посредством устройства кодирования трехмерных данных согласно настоящему варианту осуществления. Как проиллюстрировано на фиг. 118, поток битов включает в себя группу таблиц кодирования, табличные индексы и кодированные коды заполнения. Группа таблиц кодирования включает в себя таблицы кодирования.
[0775] Табличный индекс указывает таблицу кодирования, используемую для энтропийного кодирования последующего кодированного кода заполнения. Кодированный код заполнения представляет собой код заполнения, который энтропийно кодирован. Как проиллюстрировано на фиг. 118, поток битов также включает в себя комбинации табличного индекса и кодированного кода заполнения.
[0776] Например, в примере, проиллюстрированном на фиг. 118, кодированный код 0 заполнения представляет собой данные, которые энтропийно кодированы с использованием контекстной модели (также называемой "контекстом"), указываемой посредством табличного индекса 0. Кодированный код 1 заполнения представляет собой данные, которые энтропийно кодированы с использованием контекста, указываемого посредством табличного индекса 1. Контекст для кодирования кодированного кода 0 заполнения может быть предварительно задан посредством стандартов и т.д., и устройство декодирования трехмерных данных может использовать этот контекст при декодировании кодированного кода 0 заполнения. Поскольку это исключает необходимость присоединения табличного индекса к потоку битов, можно уменьшать объем служебной информации.
[0777] Кроме того, устройство кодирования трехмерных данных может присоединять, в заголовке, информацию для сброса каждого контекста.
[0778] Устройство кодирования трехмерных данных определяет таблицу кодирования с использованием геометрической информации, информации структуры или информации атрибутов текущего узла и кодирует код заполнения с использованием определенной таблицы кодирования. Устройство кодирования трехмерных данных присоединяет результат кодирования и информацию (например, табличный индекс) таблицы кодирования, используемой для кодирования, к потоку битов, и передает поток битов в устройство декодирования трехмерных данных. Это обеспечивает возможность устройству декодирования трехмерных данных декодировать код заполнения с использованием информации таблицы кодирования, присоединенной к заголовку.
[0779] Кроме того, устройство кодирования трехмерных данных не должно обязательно присоединять информацию таблицы кодирования, используемой для кодирования, к потоку битов, и устройство декодирования трехмерных данных может определять таблицу кодирования с использованием геометрической информации, информации структуры или информации атрибутов текущего узла, который декодирован, с использованием способа, идентичного способу для устройства кодирования трехмерных данных, и декодировать код заполнения с использованием определенной таблицы кодирования. Поскольку это исключает необходимость присоединения информации таблицы кодирования к потоку битов, можно уменьшать объем служебной информации.
[0780] Фиг. 119 и фиг. 120 являются схемой, иллюстрирующей пример таблицы кодирования. Как проиллюстрировано на фиг. 119 и фиг. 120, одна таблица кодирования показывает, для каждого значения 8-битового кода заполнения, контекстную модель и тип контекстной модели, ассоциированные со значением.
[0781] В качестве с таблицей кодирования, проиллюстрированной на фиг. 119, идентичная контекстная модель (контекст) может применяться к кодам заполнения. Помимо этого, другая контекстная модель может назначаться каждому коду заполнения. Поскольку это обеспечивает возможность назначения контекстной модели в соответствии с вероятностью появления кода заполнения, можно повышать эффективность кодирования.
[0782] Тип контекстной модели указывает, например, то, контекстная модель представляет собой контекстную модель, которая обновляет таблицу вероятностей в соответствии с частотой возникновения кода заполнения, либо представляет собой контекстную модель, имеющую фиксированную таблицу вероятностей.
[0783] Далее приводится другой пример потока битов и таблицы кодирования. Фиг. 121 является схемой, иллюстрирующей варьирование структуры потока битов. Как проиллюстрировано на фиг. 121, поток битов включает в себя группу таблиц кодирования и кодированный код заполнения. Группа таблиц кодирования включает в себя таблицы кодирования.
[0784] Фиг. 122 и фиг. 123 являются схемой, иллюстрирующей пример таблицы кодирования. Как проиллюстрировано на фиг. 122 и фиг. 123, одна таблица кодирования показывает, для каждого 1 бита, включенного в код заполнения, контекстную модель и тип контекстной модели, ассоциированные с 1 битом.
[0785] Фиг. 124 является схемой, иллюстрирующей пример взаимосвязи между кодом заполнения и числами битов кода заполнения.
[0786] Как указано выше, устройство кодирования трехмерных данных может обрабатывать код заполнения в качестве двоичных данных, назначать различную контекстную модель для каждого бита и энтропийно кодировать код заполнения. Поскольку это обеспечивает возможность назначения контекстной модели в соответствии с вероятностью появления каждого бита кода заполнения, можно повышать эффективность кодирования.
[0787] В частности, каждый бит кода заполнения соответствует субблоку, полученному посредством разделения пространственного блока, соответствующего текущему узлу. Соответственно, когда субблоки в идентичной пространственной позиции в блоке имеют идентичную тенденцию, можно повышать эффективность кодирования. Например, когда земная поверхность или дорожная поверхность пересекает блок, в дереве октантов, четыре нижних блока включают в себя трехмерные точки, и четыре верхних блока не включают в себя трехмерные точки. Дополнительно, идентичный шаблон появляется в горизонтально размещаемых блоках. Соответственно, можно повышать эффективность кодирования посредством переключения между контекстами для каждого бита, как описано выше.
[0788] Также может использоваться контекстная модель, которая обновляет таблицу вероятностей в соответствии с частотой возникновения каждого бита кода заполнения. Помимо этого, может использоваться контекстная модель, имеющая фиксированную таблицу вероятностей.
[0789] Далее описываются процедуры для процесса кодирования трехмерных данных и процесса декодирования трехмерных данных согласно настоящему варианту осуществления.
[0790] Фиг. 125 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного кодирования с использованием геометрической информации.
[0791] В процессе разложения, дерево октантов формируется из начального ограничивающего прямоугольника трехмерных точек. Ограничивающий прямоугольник разделяется в соответствии с позицией трехмерной точки в ограничивающем прямоугольнике. В частности, непустое подпространство дополнительно разделяется. Затем, информация, указывающая то, включает или нет подпространство в себя трехмерную точку, кодируется в код заполнения. Следует отметить, что идентичный процесс выполняется в процессах, проиллюстрированных на фиг. 127 и фиг. 129.
[0792] Во-первых, устройство кодирования трехмерных данных получает введенные трехмерные точки (S1901). Затем, устройство кодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1902).
[0793] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1902), устройство кодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1903).
[0794] После этого устройство кодирования трехмерных данных получает геометрическую информацию (S1904) и выбирает таблицу кодирования на основе полученной геометрической информации (S1905). Здесь, как указано выше, геометрическая информация представляет собой информацию, указывающую то, например, геометрию состояний заполнения соседних блоков текущего узла.
[0795] После этого, устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1906).
[0796] Этапы S1903-S1906 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1902), устройство кодирования трехмерных данных выводит поток битов, включающий в себя сформированную информацию (S1907).
[0797] Устройство кодирования трехмерных данных определяет таблицу кодирования с использованием геометрической информации, информации структуры или информации атрибутов текущего узла и кодирует битовую последовательность кода заполнения с использованием определенной таблицы кодирования. Устройство кодирования трехмерных данных присоединяет результат кодирования и информацию (например, табличный индекс) таблицы кодирования, используемой для кодирования, к потоку битов, и передает поток битов в устройство декодирования трехмерных данных. Это обеспечивает возможность устройству декодирования трехмерных данных декодировать код заполнения с использованием информации таблицы кодирования, присоединенной к заголовку.
[0798] Кроме того, устройство кодирования трехмерных данных не должно обязательно присоединять информацию таблицы кодирования, используемой для кодирования, к потоку битов, и устройство декодирования трехмерных данных может определять таблицу кодирования с использованием геометрической информации, информации структуры или информации атрибутов текущего узла, который декодирован, с использованием способа, идентичного способу для устройства кодирования трехмерных данных, и декодировать код заполнения с использованием определенной таблицы кодирования. Поскольку это исключает необходимость присоединения информации таблицы кодирования к потоку битов, можно уменьшать объем служебной информации.
[0799] Фиг. 126 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного декодирования с использованием геометрической информации.
[0800] Процесс разложения, включенный в процесс декодирования, является аналогичным процессу разложения, включенному в вышеописанный процесс кодирования, они отличаются по следующему аспекту. Устройство декодирования трехмерных данных разделяет начальный ограничивающий прямоугольник с использованием декодированного кода заполнения. Когда устройство декодирования трехмерных данных завершает процесс в расчете на единицу длины, устройство декодирования трехмерных данных сохраняет позицию ограничивающего прямоугольника в качестве позиции трехмерной точки. Следует отметить, что идентичный процесс выполняется в процессах, проиллюстрированных на фиг. 128 и фиг. 130.
[0801] Во-первых, устройство декодирования трехмерных данных получает введенный поток битов (S1911). Затем, устройство декодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1912).
[0802] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1912), устройство декодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1913).
[0803] После этого устройство декодирования трехмерных данных получает геометрическую информацию (S1914) и выбирает таблицу кодирования на основе полученной геометрической информации (S1915). Здесь, как указано выше, геометрическая информация представляет собой информацию, указывающую, например, геометрию состояний заполнения соседних блоков текущего узла.
[0804] После этого, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1916).
[0805] Этапы S1913-S1916 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1912), устройство декодирования трехмерных данных выводит трехмерные точки (S1917).
[0806] Фиг. 127 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного кодирования с использованием информации структуры.
[0807] Во-первых, устройство кодирования трехмерных данных получает введенные трехмерные точки (S1921). Затем, устройство кодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1922).
[0808] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1922), устройство кодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1923).
[0809] После этого устройство кодирования трехмерных данных получает информацию структуры (S1924) и выбирает таблицу кодирования на основе полученной информации структуры (S1925). Здесь, как указано выше, информация структуры представляет собой информацию, указывающую, например, слой, которому принадлежит текущий узел.
[0810] После этого, устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1926).
[0811] Этапы S1923-S1926 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1922), устройство кодирования трехмерных данных выводит поток битов, включающий в себя сформированную информацию (S1927).
[0812] Фиг. 128 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного декодирования с использованием информации структуры.
[0813] Во-первых, устройство декодирования трехмерных данных получает введенный поток битов (S1931). Затем, устройство декодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1932).
[0814] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1932), устройство декодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1933).
[0815] После этого устройство декодирования трехмерных данных получает информацию структуры (S1934) и выбирает таблицу кодирования на основе полученной информации структуры (S1935). Здесь, как указано выше, информация структуры представляет собой информацию, указывающую, например, слой, которому принадлежит текущий узел.
[0816] После этого, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1936).
[0817] Этапы S1933-S1936 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1932), устройство декодирования трехмерных данных выводит трехмерные точки (S1937).
[0818] Фиг. 129 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного кодирования с использованием информации атрибутов.
[0819] Во-первых, устройство кодирования трехмерных данных получает введенные трехмерные точки (S1941). Затем, устройство кодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1942).
[0820] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1942), устройство кодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1943).
[0821] После этого устройство кодирования трехмерных данных получает информацию атрибутов (S1944) и выбирает таблицу кодирования на основе полученной информации атрибутов (S1945). Здесь, как указано выше, информация атрибутов представляет собой информацию, указывающую, например, нормальный вектор текущего узла.
[0822] После этого, устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1946).
[0823] Этапы S1943-S1946 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1942), устройство кодирования трехмерных данных выводит поток битов, включающий в себя сформированную информацию (S1947).
[0824] Фиг. 130 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного декодирования с использованием информации атрибутов.
[0825] Во-первых, устройство декодирования трехмерных данных получает введенный поток битов (S1951). Затем, устройство декодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1952).
[0826] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1952), устройство декодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1953).
[0827] После этого устройство кодирования трехмерных данных получает информацию атрибутов (S1954) и выбирает таблицу кодирования на основе полученной информации атрибутов (S1955). Здесь, как указано выше, информация атрибутов представляет собой информацию, указывающую, например, нормальный вектор текущего узла.
[0828] После этого, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1956).
[0829] Этапы S1953-S1956 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1952), устройство декодирования трехмерных данных выводит трехмерные точки (S1957).
[0830] Фиг. 131 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием геометрической информации (S1905).
[0831] Устройство кодирования трехмерных данных может выбирать таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения, с использованием, например, в качестве геометрической информации, информации геометрической группы древовидной структуры. Здесь, информация геометрической группы представляет собой информацию, указывающую геометрическую группу, включающую в себя геометрический шаблон текущего узла.
[0832] Как проиллюстрировано на фиг. 131, когда геометрическая группа, указываемая посредством геометрической информации, представляет собой геометрическую группу 0 ("Да" на S1961), устройство кодирования трехмерных данных выбирает таблицу 0 кодирования (S1962). Когда геометрическая группа, указываемая посредством геометрической информации, представляет собой геометрическую группу 1 ("Да" на S1963), устройство кодирования трехмерных данных выбирает таблицу 1 кодирования (S1964). В любом другом случае ("Нет" на S1963), устройство кодирования трехмерных данных выбирает таблицу 2 кодирования (S1965).
[0833] Следует отметить, что способ выбора таблицы кодирования не ограничен вышеуказанным. Например, когда геометрическая группа, указываемая посредством геометрической информации, представляет собой геометрическую группу 2, устройство кодирования трехмерных данных дополнительно может выбирать таблицу кодирования согласно значению геометрической группы, к примеру, с использованием таблицы 2 кодирования.
[0834] Например, геометрическая группа определяется с использованием информации заполнения, указывающей то, включает или нет узел, соседний с текущим узлом, в себя облако точек. Геометрические шаблоны, которые принимают идентичную форму посредством преобразования, такого как применение вращения, могут быть включены в идентичную геометрическую группу. Устройство кодирования трехмерных данных может выбирать геометрическую группу с использованием информации заполнения узла, который является соседним с текущим узлом или расположен около текущего узла и принадлежит слою, идентичному слою текущего узла. Помимо этого, устройство кодирования трехмерных данных может выбирать геометрическую группу с использованием информации заполнения узла, который принадлежит слою, отличающемуся от слоя текущего узла. Например, устройство кодирования трехмерных данных может выбирать геометрическую группу с использованием информации заполнения родительского узла, узла, соседнего с родительским узлом, или узла, расположенного около родительского узла.
[0835] Следует отметить, что то же применимо к процессу выбора таблицы кодирования с использованием геометрической информации (S1915) в устройстве декодирования трехмерных данных.
[0836] Фиг. 132 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием информации структуры (S1925).
[0837] Устройство кодирования трехмерных данных может выбирать таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения, с использованием, например, в качестве информации структуры, информации слоя древовидной структуры. Здесь, информация слоя указывает, например, слой, которому принадлежит текущий узел.
[0838] Как проиллюстрировано на фиг. 132, когда текущий узел принадлежит слою 0 ("Да" на S1971), устройство кодирования трехмерных данных выбирает таблицу 0 кодирования (S1972). Когда текущий узел принадлежит слою 1 ("Да" на S1973), устройство кодирования трехмерных данных выбирает таблицу 1 кодирования (S1974). В любом другом случае ("Нет" на S1973), устройство кодирования трехмерных данных выбирает таблицу 2 кодирования (S1975).
[0839] Следует отметить, что способ выбора таблицы кодирования не ограничен вышеуказанным. Например, когда текущий узел принадлежит слою 2, устройство кодирования трехмерных данных дополнительно может выбирать таблицу кодирования в соответствии со слоем, которому принадлежит текущий узел, к примеру, с использованием таблицы 2 кодирования.
[0840] То же применимо к процессу выбора таблицы кодирования с использованием информации структуры (S1935) в устройстве декодирования трехмерных данных.
[0841] Фиг. 133 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием информации атрибутов (S1945).
[0842] Устройство кодирования трехмерных данных может выбирать таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения, с использованием, в качестве информации атрибутов, информации относительно объекта, которому принадлежит текущий узел, или информации относительно нормального вектора текущего узла.
[0843] Как проиллюстрировано на фиг. 133, когда нормальный вектор текущего узла принадлежит группе 0 нормальных векторов ("Да" на S1981), устройство кодирования трехмерных данных выбирает таблицу 0 кодирования (S1982). Когда нормальный вектор текущего узла принадлежит группе 1 нормальных векторов ("Да" на S1983), устройство кодирования трехмерных данных выбирает таблицу 1 кодирования (S1984). В любом другом случае ("Нет" на S1983), устройство кодирования трехмерных данных выбирает таблицу 2 кодирования (S1985).
[0844] Следует отметить, что способ выбора таблицы кодирования не ограничен вышеуказанным. Например, когда нормальный вектор текущего узла принадлежит группе 2 нормальных векторов, устройство кодирования трехмерных данных дополнительно может выбирать таблицу кодирования в соответствии с группой нормальных векторов, которой принадлежит нормальный вектор текущего, к примеру, с использованием таблицы 2 кодирования.
[0845] Например, устройство кодирования трехмерных данных выбирает группу нормальных векторов с использованием информации относительно нормального вектора текущего узла. Например, устройство кодирования трехмерных данных определяет, в качестве идентичной группы нормальных векторов, нормальные векторы, имеющие расстояние между нормальными векторами, которое меньше или равно предварительно определенному пороговому значению.
[0846] Информация относительно объекта, которому принадлежит текущий узел, может представлять собой информацию относительно, например, человека, транспортного средства или здания.
[0847] Далее описываются конфигурации устройства 1900 кодирования трехмерных данных и устройства 1910 декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 134 является блок-схемой устройства 1900 кодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 1900 кодирования трехмерных данных, проиллюстрированное на фиг. 134, включает в себя формирователь 1901 деревьев октантов, модуль 1902 вычисления информации подобия, модуль 1903 выбора таблиц кодирования и энтропийный кодер 1904.
[0848] Формирователь 1901 деревьев октантов формирует, например, дерево октантов из введенных трехмерных точек и формирует код заполнения для каждого узла, включенного в дерево октантов. Модуль 1902 вычисления информации подобия получает, например, информацию подобия, которая представляет собой геометрическую информацию, информацию структуры или информацию атрибутов текущего узла. Модуль 1903 выбора таблиц кодирования выбирает контекст, который должен использоваться для энтропийного кодирования кода заполнения, согласно информации подобия текущего узла. Энтропийный кодер 1904 формирует поток битов посредством энтропийного кодирования кода заполнения с использованием выбранного контекста. Следует отметить, что энтропийный кодер 1904 может присоединять, к потоку битов, информацию, указывающую выбранный контекст.
[0849] Фиг. 135 является блок-схемой устройства 1910 декодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 1910 декодирования трехмерных данных, проиллюстрированное на фиг. 135, включает в себя формирователь 1911 деревьев октантов, модуль 1912 вычисления информации подобия, модуль 1913 выбора таблиц кодирования и энтропийный декодер 1914.
[0850] Формирователь 1911 деревьев октантов формирует дерево октантов, например, в порядке от нижнего слоя к верхнему слою с использованием информации, полученной из энтропийного декодера 1914. Модуль 1912 вычисления информации подобия получает информацию подобия, которая представляет собой геометрическую информацию, информацию структуры или информацию атрибутов текущего узла. Модуль 1913 выбора таблиц кодирования выбирает контекст, который должен использоваться для энтропийного кодирования кода заполнения, согласно информации подобия текущего узла. Энтропийный декодер 1914 формирует трехмерные точки посредством энтропийного декодирования кода заполнения с использованием выбранного контекста. Следует отметить, что энтропийный декодер 1914 может получать, посредством выполнения декодирования, информацию выбранного контекста, присоединенную к потоку битов, и использовать контекст, указываемый посредством информации.
[0851] Как проиллюстрировано на фиг. 122-124 выше, контексты предоставляются в соответствующие биты кода заполнения. Другими словами, устройство кодирования трехмерных данных энтропийно кодирует битовую последовательность, представляющую N-арную (N является целым числом, большим или равным 2) древовидную структуру трехмерных точек, включенных в трехмерные данные, с использованием таблицы кодирования, выбранной из таблиц кодирования. Битовая последовательность включает в себя N-битовую информацию для каждого узла в N-арной древовидной структуре. N-битовая информация включает в себя N фрагментов 1-битовой информации, каждый из которых указывает то, присутствует или нет трехмерная точка в соответствующем одном из N дочерних узлов относительно соответствующего узла. В каждой из таблиц кодирования, контекст предоставляется в каждый бит N-битовой информации. Устройство кодирования трехмерных данных энтропийно кодирует каждый бит N-битовой информации с использованием контекста, предоставленного в бит в выбранной таблице кодирования.
[0852] Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования посредством выбора контекста для каждого бита.
[0853] Например, при энтропийном кодировании, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе того, присутствует или нет трехмерная точка в каждом из соседних узлов относительно текущего узла. Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе того, присутствует или нет трехмерная точка в соседнем узле.
[0854] Например, при энтропийном кодировании, устройство кодирования трехмерных данных (i) выбирает таблицу кодирования на основе шаблона компоновки, указывающего позицию размещения соседнего узла, в котором присутствует трехмерная точка, из числа соседних узлов, и (ii) выбирает идентичную таблицу кодирования для шаблонов компоновки, которые становятся идентичными посредством вращения, из числа шаблонов компоновки. Это обеспечивает возможность устройству кодирования трехмерных данных уменьшать увеличение числа таблиц кодирования.
[0855] Например, при энтропийном кодировании, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе слоя, которому принадлежит текущий узел. Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе слоя, которому принадлежит текущий узел.
[0856] Например, при энтропийном кодировании, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе нормального вектора текущего узла. Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе нормального вектора.
[0857] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[0858] Устройство декодирования трехмерных данных энтропийно декодирует битовую последовательность, представляющую N-арную (N является целым числом, большим или равным 2) древовидную структуру трехмерных точек, включенных в трехмерные данные, с использованием таблицы кодирования, выбранной из таблиц кодирования. Битовая последовательность включает в себя N-битовую информацию для каждого узла в N-арной древовидной структуре. N-битовая информация включает в себя N фрагментов 1-битовой информации, каждый из которых указывает то, присутствует или нет трехмерная точка в соответствующем одном из N дочерних узлов относительно соответствующего узла. В каждой из таблиц кодирования, контекст предоставляется в каждый бит N-битовой информации. Устройство декодирования трехмерных данных энтропийно декодирует каждый бит N-битовой информации с использованием контекста, предоставленного в бит в выбранной таблице кодирования.
[0859] Это обеспечивает возможность устройству декодирования трехмерных данных повышать эффективность кодирования посредством выбора контекста для каждого бита.
[0860] Например, при энтропийном декодировании, устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе того, присутствует или нет трехмерная точка в каждом из соседних узлов относительно текущего узла. Это обеспечивает возможность устройству декодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе того, присутствует или нет трехмерная точка в соседнем узле.
[0861] Например, при энтропийном декодировании, устройство декодирования трехмерных данных (i) выбирает таблицу кодирования на основе шаблона компоновки, указывающего позицию размещения соседнего узла, в котором присутствует трехмерная точка, из числа соседних узлов, и (ii) выбирает идентичную таблицу кодирования для шаблонов компоновки, которые становятся идентичными посредством вращения, из числа шаблонов компоновки. Это обеспечивает возможность устройству декодирования трехмерных данных уменьшать увеличение числа таблиц кодирования.
[0862] Например, при энтропийном декодировании, устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе слоя, которому принадлежит текущий узел. Это обеспечивает возможность устройству декодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе слоя, которому принадлежит текущий узел.
[0863] Например, при энтропийном декодировании, устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе нормального вектора текущего узла. Это обеспечивает возможность устройству декодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе нормального вектора.
[0864] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
Вариант 12 осуществления
[0865]
В настоящем варианте осуществления, в дальнейшем описывается способ управления ссылкой, когда код заполнения кодируется. Следует отметить, что хотя далее описывается, главным образом, работа устройства кодирования трехмерных данных, устройство декодирования трехмерных данных может выполнять идентичный процесс.
[0866] Фиг. 136 и фиг. 137 являются схемой, иллюстрирующей опорную взаимосвязь согласно настоящему варианту осуществления. В частности, фиг. 136 является схемой, иллюстрирующей опорную взаимосвязь в структуре в виде дерева октантов, и фиг. 137 является схемой, иллюстрирующей опорную взаимосвязь в пространственной области.
[0867] В настоящем варианте осуществления, когда устройство кодирования трехмерных данных кодирует информацию кодирования текущего узла, который должен кодироваться (в дальнейшем называется "текущим узлом"), устройство кодирования трехмерных данных ссылается на информацию кодирования каждого узла в родительском узле, которому принадлежит текущий узел. Тем не менее, в этом отношении, устройство кодирования трехмерных данных не ссылается на информацию кодирования каждого узла в другом узле (в дальнейшем называется "родительским соседним узлом"), который находится в слое, идентичном слою родительского узла. Другими словами, устройство кодирования трехмерных данных деактивирует или запрещает ссылку на родительский соседний узел.
[0868] Следует отметить, что устройство кодирования трехмерных данных может разрешать ссылку на информацию кодирования родительского узла (в дальнейшем также называется "прародительским узлом") относительно родительского узла. Другими словами, устройство кодирования трехмерных данных может кодировать информацию кодирования текущего узла со ссылкой на информацию кодирования каждого прародительского узла и родительского узла, которым принадлежит текущий узел.
[0869] Здесь, информация кодирования, например, представляет собой код заполнения. Когда устройство кодирования трехмерных данных кодирует код заполнения текущего узла, устройство кодирования трехмерных данных ссылается на информацию (в дальнейшем называемую "информацией заполнения"), указывающую то, включается или нет облако точек в каждый узел в родительском узле, которому принадлежит текущий узел. Иначе говоря, когда устройство кодирования трехмерных данных кодирует код заполнения текущего узла, устройство кодирования трехмерных данных ссылается на код заполнения родительского узла. С другой стороны, устройство кодирования трехмерных данных не ссылается на информацию заполнения каждого узла в родительском соседнем узле. Другими словами, устройство кодирования трехмерных данных не ссылается на код заполнения родительского соседнего узла. Кроме того, устройство кодирования трехмерных данных может ссылаться на информацию заполнения каждого узла в прародительском узле. Другими словами, устройство кодирования трехмерных данных может ссылаться на информацию заполнения каждого из родительского узла и родительского соседнего узла.
[0870] Например, когда устройство кодирования трехмерных данных кодирует код заполнения текущего узла, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения текущего узла, с использованием кода заполнения прародительского узла или родительского узла, которому принадлежит текущий узел. Следует отметить, что подробности описываются ниже. В это время, устройство кодирования трехмерных данных не должно обязательно ссылаться на код заполнения родительского соседнего узла. Поскольку это обеспечивает возможностью устройству кодирования трехмерных данных, при кодировании кода заполнения текущего узла, надлежащим образом выбирать таблицу кодирования согласно информации кода заполнения родительского узла или прародительского узла, устройство кодирования трехмерных данных может повышать эффективность кодирования. Кроме того, посредством отсутствия ссылки на соседний узел, устройство кодирования трехмерных данных может подавлять процесс проверки информации родительского соседнего узла и уменьшать емкость запоминающего устройства для сохранения информации. Кроме того, сканирование кода заполнения каждого узла дерева октантов в порядке в глубину упрощает кодирование.
[0871] Далее описывается пример выбора таблицы кодирования с использованием кода заполнения родительского узла. Фиг. 138 является схемой, иллюстрирующей пример текущего узла и соседних опорных узлов. Фиг. 139 является схемой, иллюстрирующей взаимосвязь между родительским узлом и узлами. Фиг. 140 является схемой, иллюстрирующей пример кода заполнения родительского узла. Здесь, соседний опорный узел представляет собой узел, на который ссылаются, когда текущий узел кодируется, из числа узлов, пространственно соседних с текущим узлом. В примере, показанном на фиг. 138, соседние узлы принадлежат слою, идентичному слою текущего узла. Кроме того, узел X, соседний с текущим узлом в направлении по оси X, узел Y, соседний с текущим блоком в направлении по оси Y, и узел Z, соседний с текущим блоком в направлении по оси Z, используются в качестве опорных соседних узлов. Другими словами, один соседний узел задается в качестве опорного соседнего узла в каждом из направлений по оси X, Y и Z.
[0872] Следует отметить, что номера узлов, показанные на фиг. 139, представляют собой один пример, и взаимосвязь между номерами узлов и позициями узлов не ограничена взаимосвязью, показанной на фиг. 139. Хотя узел 0 назначается биту низшего порядка, и узел 7 назначается биту высшего порядка на фиг. 140, назначения могут проводиться в обратном порядке. Помимо этого, каждый узел может назначаться любому биту.
[0873] Устройство кодирования трехмерных данных определяет таблицу кодирования, которая должна использоваться, когда устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла, например, с использованием следующего уравнения.
[0874] CodingTable = (FlagX<<2)+(FlagY<<1)+(FlagZ)
[0875] Здесь, CodingTable указывает таблицу кодирования для кода заполнения текущего узла и указывает одно из значений в пределах от 0 до 7. FlagX представляет собой информацию заполнения соседнего узла X. FlagX указывает 1, когда соседний узел X включает в себя облако точек (является занятым), и указывает 0, когда он не включает. FlagY представляет собой информацию заполнения соседнего узла Y. FlagY указывает 1, когда соседний узел Y включает в себя облако точек (является занятым), и указывает 0, когда он не включает. FlagZ представляет собой информацию заполнения соседнего узла Z. FlagZ указывает 1, когда соседний узел Z включает в себя облако точек (является занятым), и указывает 0, когда он не включает.
[0876] Следует отметить, что поскольку информация, указывающая то, является или нет соседний узел занятым, включается в код заполнения родительского узла, устройство кодирования трехмерных данных может выбирать таблицу кодирования с использованием значения, указываемого посредством кода заполнения родительского узла.
[0877] Из вышеописанного, устройство кодирования трехмерных данных может повышать эффективность кодирования посредством выбора таблицы кодирования с использованием информации, указывающей то, включает или нет соседний узел относительно текущего узла в себя облако точек.
[0878] Кроме того, как проиллюстрировано на фиг. 138, устройство кодирования трехмерных данных может выбирать соседний опорный узел согласно пространственной позиции текущего узла в родительском узле. Другими словами, устройство кодирования трехмерных данных может выбирать соседний узел, на который следует ссылаться из соседних узлов, согласно пространственной позиции текущего узла в родительском узле.
[0879] Далее описываются примеры конфигураций устройства кодирования трехмерных данных и устройства декодирования трехмерных данных. Фиг. 141 является блок-схемой устройства 2100 кодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2100 кодирования трехмерных данных, проиллюстрированное на фиг. 141, включает в себя формирователь 2101 деревьев октантов, модуль 2102 вычисления геометрической информации, модуль 2103 выбора таблиц кодирования и энтропийный кодер 2104.
[0880] Формирователь 2101 деревьев октантов формирует, например, дерево октантов из введенных трехмерных точек (облака точек) и формирует код заполнения для каждого узла, включенного в дерево октантов. Модуль 2102 вычисления геометрической информации получает информацию заполнения, указывающую то, является или нет соседний опорный узел относительно текущего узла занятым. Например, модуль 2102 вычисления геометрической информации получает информацию заполнения соседнего опорного узла из кода заполнения родительского узла, которому принадлежит текущий узел. Следует отметить, что, как проиллюстрировано на фиг. 138, модуль 2102 вычисления геометрической информации может выбирать соседний опорный узел согласно позиции текущего узла в родительском узле. Помимо этого, модуль 2102 вычисления геометрической информации не ссылается на информацию заполнения каждого узла в родительском соседнем узле.
[0881] Модуль 2103 выбора таблиц кодирования выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения текущего узла, с использованием информации заполнения соседнего опорного узла, вычисленной посредством модуля 2102 вычисления геометрической информации. Энтропийный кодер 2104 формирует поток битов посредством энтропийного кодирования кода заполнения с использованием выбранной таблицы кодирования. Следует отметить, что энтропийный кодер 2104 может присоединять, к потоку битов, информацию, указывающую выбранную таблицу кодирования.
[0882] Фиг. 142 является блок-схемой устройства 2110 декодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2110 декодирования трехмерных данных, проиллюстрированное на фиг. 142, включает в себя формирователь 2111 деревьев октантов, модуль 2112 вычисления геометрической информации, модуль 2113 выбора таблиц кодирования и энтропийный декодер 2114.
[0883] Формирователь 2111 деревьев октантов формирует дерево октантов пространства (узлов) с использованием информации заголовка потока битов и т.д. Формирователь 2111 деревьев октантов формирует дерево октантов, например, посредством формирования большого пространства (корневого узла) с использованием размера пространства вдоль направлений по оси X, по оси Z и по оси Y, присоединенных к информации заголовка, и формирования восьми небольших пространств A (узлов A0-A7) посредством разделения пространства на два вдоль каждого из направлений по оси X, по оси Z и по оси Y. Узлы A0-A7 задаются в качестве текущего узла в последовательности.
[0884] Модуль 2112 вычисления геометрической информации получает информацию заполнения, указывающую то, является или нет соседний опорный узел относительно текущего узла занятым. Например, модуль 2112 вычисления геометрической информации получает информацию заполнения соседнего опорного узла из кода заполнения родительского узла, которому принадлежит текущий узел. Следует отметить, что, как проиллюстрировано на фиг. 138, модуль 2112 вычисления геометрической информации может выбирать соседний опорный узел согласно позиции текущего узла в родительском узле. Помимо этого, модуль 2112 вычисления геометрической информации не ссылается на информацию заполнения каждого узла в родительском соседнем узле.
[0885] Модуль 2113 выбора таблиц кодирования выбирает таблицу кодирования (таблицу декодирования), которая должна использоваться для энтропийного декодирования кода заполнения текущего узла, с использованием информации заполнения соседнего опорного узла, вычисленной посредством модуля 2112 вычисления геометрической информации. Энтропийный декодер 2114 формирует трехмерные точки посредством энтропийного декодирования кода заполнения с использованием выбранной таблицы кодирования. Следует отметить, что модуль 2113 выбора таблиц кодирования может получать, посредством выполнения декодирования, информацию выбранной таблицы кодирования, присоединенной к потоку битов, и энтропийный декодер 2114 может использовать таблицу кодирования, указываемую посредством полученной информации.
[0886] Каждый бит кода заполнения (8 битов), включенного в поток битов, указывает то, включает или нет соответствующее одно из восьми небольших пространств A (узлов A0-A7) в себя облако точек. Кроме того, устройство декодирования трехмерных данных формирует дерево октантов посредством разделения узла A0 небольшого пространства на восемь небольших пространств B (узлов B0-B7) и получает информацию, указывающую то, включает или нет каждый узел небольшого пространства B в себя облако точек, посредством декодирования кода заполнения. Таким образом, устройство декодирования трехмерных данных декодирует код заполнения каждого узла при формировании дерева октантов посредством разделения большого пространства на небольшие пространства.
[0887] Далее описываются процедуры для процессов, выполняемых посредством устройства кодирования трехмерных данных и устройства декодирования трехмерных данных. Фиг. 143 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных в устройстве кодирования трехмерных данных. Во-первых, устройство кодирования трехмерных данных определяет (задает) пространство (текущий узел), включающее в себя часть или все введенное облако трехмерных точек (S2101). Затем, устройство кодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S2102). После этого устройство кодирования трехмерных данных формирует код заполнения для текущего узла согласно тому, включает или нет каждый узел в себя облако точек (S2103).
[0888] После этого, устройство кодирования трехмерных данных вычисляет (получает) информацию заполнения соседнего опорного узла относительно текущего узла из кода заполнения родительского узла относительно текущего узла (S2104). Затем, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования, на основе вычисленной информации заполнения соседнего опорного узла относительно текущего узла (S2105). После этого устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S2106).
[0889] В завершение, устройство кодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и кодирования кода заполнения узла до тех пор, пока узел не может разделяться (S2107). Другими словами, этапы S2102-S2106 рекурсивно повторяются.
[0890] Фиг. 144 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных в устройстве декодирования трехмерных данных. Во-первых, устройство декодирования трехмерных данных определяет (задает) пространство (текущий узел), которое должно декодироваться, с использованием информации заголовка потока битов (S2111). Затем, устройство декодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S2112). После этого устройство декодирования трехмерных данных вычисляет (получает) информацию заполнения соседнего опорного узла относительно текущего узла из кода заполнения родительского узла относительно текущего узла (S2113).
[0891] После этого, устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного декодирования, на основе информации заполнения соседнего опорного узла (S2114). Затем, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S2115).
[0892] В завершение, устройство декодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и декодирования кода заполнения узла до тех пор, пока узел не может разделяться (S2116). Другими словами, этапы S2112-S2115 рекурсивно повторяются.
[0893] Далее описывается пример выбора таблицы кодирования. Фиг. 145 является схемой, иллюстрирующей пример выбора таблицы кодирования. Например, аналогично таблице 0 кодирования, показанной на фиг. 145, идентичный контекстный режим может применяться к кодам заполнения. Кроме того, другая контекстная модель может назначаться каждому коду заполнения. Поскольку это обеспечивает возможность назначения контекстной модели в соответствии с вероятностью появления кода заполнения, можно повышать эффективность кодирования. Кроме того, может использоваться контекстный режим, который обновляет таблицу вероятностей в соответствии с частотой возникновения кода заполнения. Альтернативно, может использоваться контекстная модель, имеющая фиксированную таблицу вероятностей.
[0894] Следует отметить, что хотя таблицы кодирования, проиллюстрированные на фиг. 119 и фиг. 120, используются в примере, показанном на фиг. 145, вместо этого могут использоваться таблицы кодирования, проиллюстрированные на фиг. 122 и фиг. 123.
[0895] В дальнейшем в этом документе описывается варьирование 1 настоящего варианта осуществления. Фиг. 146 является схемой, иллюстрирующей опорную взаимосвязь в настоящем варьировании. Хотя устройство кодирования трехмерных данных не ссылается на код заполнения родительского соседнего узла в вышеописанном варианте осуществления, устройство кодирования трехмерных данных может переключать то, следует или нет ссылаться на код заполнения родительского соседнего узла, согласно конкретному условию.
[0896] Например, когда устройство кодирования трехмерных данных кодирует дерево октантов при сканировании дерева октантов в ширину, устройство кодирования трехмерных данных кодирует код заполнения текущего узла со ссылкой на информацию заполнения узла в родительском соседнем узле. Напротив, когда устройство кодирования трехмерных данных кодирует дерево октантов при сканировании дерева октантов в глубину, устройство кодирования трехмерных данных запрещает ссылку на информацию заполнения узла в родительском соседнем узле. Посредством соответствующего выбора допускающего ссылку узла согласно порядку сканирования (порядку кодирования) узлов дерева октантов вышеуказанным способом, можно повышать эффективность кодирования и снижать нагрузку по обработке.
[0897] Следует отметить, что устройство кодирования трехмерных данных может присоединять, к заголовку потока битов, информацию, указывающую например, то, кодируется дерево октантов в ширину или в глубину. Фиг. 147 является схемой, иллюстрирующей пример синтаксиса информации заголовка в этом случае; octree_scan_order, показанный на фиг. 147, представляет собой информацию порядка кодирования (флаг порядка кодирования), указывающую порядок кодирования для дерева октантов. Например, когда octree_scan_order равен 0, указывается "в ширину", а когда octree_scan_order равен 1, указывается "в глубину". Поскольку это обеспечивает возможность устройству декодирования трехмерных данных определять то, кодирован либо нет поток битов в ширину или в глубину, со ссылкой на octree_scan_order, устройство декодирования трехмерных данных может надлежащим образом декодировать поток битов
[0898] Кроме того, устройство кодирования трехмерных данных может присоединять, к информации заголовка потока битов, информацию, указывающую то, следует или нет запрещать ссылку на родительский соседний узел. Фиг. 148 является схемой, иллюстрирующей пример синтаксиса информации заголовка в этом случае; limit_refer_flag представляет собой информацию переключения запрета (флаг переключения запрета), указывающую то, следует или нет запрещать ссылку на родительский соседний узел. Например, когда limit_refer_flag равен 1, запрет ссылки на родительский соседний узел указывается, а когда limit_refer_flag равен 0, ограничение по ссылке (разрешение ссылки на родительский соседний узел) не указывается.
[0899] Другими словами, устройство кодирования трехмерных данных определяет то, следует или нет запрещать ссылку на родительский соседний узел, и выбирает то, следует запрещать или разрешать ссылку на родительский соседний узел, на основе результата вышеуказанного определения. Помимо этого, устройство кодирования трехмерных данных формирует поток битов, включающий в себя информацию переключения запрета, которая указывает результат определения и указывает то, следует или нет запрещать ссылку на родительский соседний узел.
[0900] Устройство декодирования трехмерных данных получает, из потока битов, информацию переключения запрета, указывающую то, следует или нет запрещать ссылку на родительский соседний узел, и выбирает то, следует запрещать или разрешать ссылку на родительский соседний узел, на основе информации переключения запрета.
[0901] Это обеспечивает возможность устройству кодирования трехмерных данных управлять ссылкой на родительский соседний узел и формировать поток битов. Это также обеспечивает возможность устройству декодирования трехмерных данных получать, из заголовка потока битов, информацию, указывающую то, следует или нет запрещать ссылку на родительский соседний узел.
[0902] Хотя процесс кодирования кода заполнения описывается в качестве примера процесса кодирования, в котором ссылка на родительский соседний узел запрещается в настоящем варианте осуществления, настоящее раскрытие не обязательно ограничивается этим. Например, идентичный способ может применяться, когда кодируется другая информация узла дерева октантов. Например, способ настоящего варианта осуществления может применяться, когда кодируется другая информация атрибутов, такая как цвет, нормальный вектор или степень отражения, добавляемая в узел. Дополнительно, идентичный способ может применяться, когда кодируется таблица кодирования или прогнозированное значение.
[0903] В дальнейшем в этом документе описывается варьирование 2 настоящего варианта осуществления. В вышеприведенном описании, как проиллюстрировано на фиг. 138, приводится пример, в котором используются три опорных соседних узла, но могут использоваться четыре или более опорных соседних узла. Фиг. 149 является схемой, иллюстрирующей пример текущего узла и соседних опорных узлов.
[0904] Например, устройство кодирования трехмерных данных вычисляет таблицу кодирования, которая должна использоваться, когда устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла, показанного на фиг. 149, с использованием следующего уравнения.
[0905] CodingTable = (FlagX0 << 3) + (FlagX1 << 2) + (FlagY << 1) + (FlagZ)
[0906] Здесь, CodingTable указывает таблицу кодирования для кода заполнения текущего узла и указывает одно из значений в пределах от 0 до 15. FlagXN представляет собой информацию заполнения соседнего узла XN (N=0...1). FlaxXN указывает 1, когда соседний узел XN включает в себя облако точек (является занятым), и указывает 0, когда он не включает. FlagY представляет собой информацию заполнения соседнего узла Y. FlagY указывает 1, когда соседний узел Y включает в себя облако точек (является занятым), и указывает 0, когда он не включает. FlagZ представляет собой информацию заполнения соседнего узла Z. FlagZ указывает 1, когда соседний узел Z включает в себя облако точек (является занятым), и указывает 0, когда он не включает.
[0907] В это время, когда соседний узел, например, соседний узел X0 на фиг. 149, является недопускающим ссылку (на него запрещена ссылка), устройство кодирования трехмерных данных может использовать, в качестве заменяющего значения, фиксированное значение, к примеру, 1 (занятый) или 0 (незанятый).
[0908] Фиг. 150 является схемой, иллюстрирующей пример текущего узла и соседних опорных узлов. Как проиллюстрировано на фиг. 150, когда соседний узел является недопускающим ссылку (на него запрещена ссылка), информация заполнения соседнего узла может вычисляться со ссылкой на код заполнения прародительского узла относительно текущего узла. Например, устройство кодирования трехмерных данных может вычислять FlagX0 в вышеприведенном уравнении с использованием информации заполнения соседнего узла G0 вместо соседнего узла X0, проиллюстрированного на фиг. 150, и может определять значение таблицы кодирования с использованием вычисленного FlagX0. Следует отметить, что соседний узел G0, проиллюстрированный на фиг. 150 представляет собой соседний узел, заполнение или незаполнение которого может определяться с использованием кода заполнения прародительского узла. Соседний узел X1 представляет собой соседний узел, заполнение или незаполнение которого может определяться с использованием кода заполнения родительского узла.
[0909] В дальнейшем в этом документе описывается варьирование 3 настоящего варианта осуществления. Фиг. 151 и фиг. 152 являются схемой, иллюстрирующей опорную взаимосвязь согласно настоящему варьированию. В частности, фиг. 151 является схемой, иллюстрирующей опорную взаимосвязь в структуре в виде дерева октантов, и фиг. 152 является схемой, иллюстрирующей опорную взаимосвязь в пространственной области.
[0910] В настоящем варьировании, когда устройство кодирования трехмерных данных кодирует информацию кодирования текущего узла, который должен кодироваться (в дальнейшем называемого "текущим узлом 2), устройство кодирования трехмерных данных ссылается на информацию кодирования каждого узла в родительском узле, которому принадлежит текущий узел 2. Другими словами, устройство кодирования трехмерных данных разрешает ссылку на информацию (например, информацию заполнения) дочернего узла относительно первого узла, из числа соседних узлов, который имеет родительский узел, идентичный родительскому узлу относительно текущего узла. Например, когда устройство кодирования трехмерных данных кодирует код заполнения текущего узла 2, проиллюстрированного на фиг. 151, устройство кодирования трехмерных данных ссылается на код заполнения узла в родительском узле, которому принадлежит текущий узел 2, например, текущий узел, проиллюстрированный на фиг. 151. Как проиллюстрировано на фиг. 152, код заполнения текущего узла, проиллюстрированного на фиг. 151, указывает, например, то, является или нет занятым каждый узел в текущем узле, соседнем с текущим узлом 2. Соответственно, поскольку устройство кодирования трехмерных данных может выбирать таблицу кодирования для кода заполнения текущего узла 2 в соответствии с более конкретной формой текущего узла, устройство кодирования трехмерных данных может повышать эффективность кодирования.
[0911] Устройство кодирования трехмерных данных может вычислять таблицу кодирования, которая должна использоваться, когда устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла 2, например, с использованием следующего уравнения.
[0912] CodingTable = (FlagX1<<5)+(FlagX2<<4)+(FlagX3<<3)+(FlagX4<<2)+(FlagY<<1)+(FlagZ)
[0913] Здесь, CodingTable указывает таблицу кодирования для кода заполнения текущего узла 2 и указывает одно из значений в пределах от 0 до 63. FlagXN представляет собой информацию заполнения соседнего узла XN (N=1...4). FlagXN указывает 1, когда соседний узел XN включает в себя облако точек (является занятым), и указывает 0, когда он не включает. FlagY представляет собой информацию заполнения соседнего узла Y. FlagY указывает 1, когда соседний узел Y включает в себя облако точек (является занятым), и указывает 0, когда он не включает. FlagZ представляет собой информацию заполнения соседнего узла Z. FlagZ указывает 1, когда соседний узел Z включает в себя облако точек (является занятым), и указывает 0, когда он не включает.
[0914] Следует отметить, что устройство кодирования трехмерных данных может изменять способ вычисления таблицы кодирования, согласно позиции узла для текущего узла 2 в родительском узле.
[0915] Когда ссылка на родительский соседний узел не запрещается, устройство кодирования трехмерных данных может ссылаться на информацию кодирования каждого узла в родительском соседнем узле. Например, когда ссылка на родительский соседний узел не запрещается, ссылка на информацию (например, информацию заполнения) дочернего узла третьего узла имеет родительский узел, отличный от родительского узла относительно текущего узла. В примере, проиллюстрированном на фиг. 150, например, устройство кодирования трехмерных данных получает информацию заполнения дочернего узла относительно соседнего узла X0 со ссылкой на код заполнения соседнего узла X0, имеющего родительский узел, отличный от родительского узла относительно текущего узла. Устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения текущего узла, на основе полученной информации заполнения дочернего узла относительно соседнего узла X0.
[0916] Как указано выше, устройство кодирования трехмерных данных согласно настоящему варианту осуществления кодирует информацию (например, код заполнения) текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, где N является целым числом, большим или равным 2. Как проиллюстрировано на фиг. 136 и фиг. 137, при кодировании, устройство кодирования трехмерных данных разрешает ссылку на информацию (например, информацию заполнения) первого узла, включенного в соседние узлы, пространственно соседние с текущим узлом, и запрещает ссылку на информацию второго узла, включенного в соседние узлы, причем первый узел имеет родительский узел, идентичный родительскому узлу относительно текущего узла, причем второй узел имеет родительский узел, отличный от родительского узла относительно текущего узла. Иначе говоря, при кодировании, устройство кодирования трехмерных данных разрешает ссылку на информацию (например, код заполнения) родительского узла и запрещает ссылку на информацию (например, код заполнения) другого узла (родительского соседнего узла) в слое, идентичном слою родительского узла.
[0917] Вследствие этого, устройство кодирования трехмерных данных может повышать эффективность кодирования со ссылкой на информацию первого узла, включенного в соседние узлы, пространственно соседние с текущим узлом, причем первый узел имеет родительский узел, идентичный родительскому узлу относительно текущего узла. Кроме того, устройство кодирования трехмерных данных может уменьшать объем обработки посредством отсутствия ссылки на информацию второго узла, включенного в соседние узлы, причем второй узел имеет родительский узел, отличный от родительского узла относительно текущего узла. Таким образом, устройство кодирования трехмерных данных может не только повышать эффективность кодирования, но также и уменьшать объем обработки.
[0918] Например, устройство кодирования трехмерных данных дополнительно определяет то, следует или нет запрещать ссылку на информацию второго узла. При кодировании, устройство кодирования трехмерных данных выбирает то, следует запрещать или разрешать ссылку на информацию второго узла, на основе результата определения. Кроме того, устройство кодирования трехмерных данных формирует поток битов, включающий в себя информацию переключения запрета (например, limit_refer_flag, показанный на фиг. 148), которая указывает результат определения и указывает то, следует или нет запрещать ссылку на информацию второго узла.
[0919] Вследствие этого, устройство кодирования трехмерных данных может выбирать то, следует или нет запрещать ссылку на информацию второго узла. Помимо этого, устройство декодирования трехмерных данных может надлежащим образом выполнять процесс декодирования с использованием информации переключения запрета.
[0920] Например, информация текущего узла представляет собой информацию (например, код заполнения), которая указывает то, присутствует или нет трехмерная точка в каждом из дочерних узлов, принадлежащих текущему узлу. Информация первого узла представляет собой информацию (информацию заполнения первого узла), которая указывает то, присутствует или нет трехмерная точка в первом узле. Информация второго узла представляет собой информацию (информацию заполнения второго узла), которая указывает то, присутствует или нет трехмерная точка во втором узле.
[0921] Например, при кодировании, устройство кодирования трехмерных данных выбирает таблицу кодирования на основе того, присутствует или нет трехмерная точка в первом узле, и энтропийно кодирует информацию (например, код заполнения) текущего узла с использованием выбранной таблицы кодирования.
[0922] Например, как проиллюстрировано на фиг. 151 и фиг. 152, при кодировании, устройство кодирования трехмерных данных разрешает ссылку на информацию (например, информацию заполнения) дочернего узла относительно первого узла, причем дочерний узел включается в соседние узлы.
[0923] Вследствие этого, поскольку устройство кодирования трехмерных данных предоставляет ссылку на более подробную информацию соседнего узла, устройство кодирования трехмерных данных может повышать эффективность кодирования.
[0924] Например, как проиллюстрировано на фиг. 138, при кодировании, устройство кодирования трехмерных данных выбирает соседний узел, на который следует ссылаться из соседних узлов, согласно пространственной позиции текущего узла в родительском узле.
[0925] Вследствие этого, устройство кодирования трехмерных данных может ссылаться на соответствующий соседний узел согласно пространственной позиции текущего узла в родительском узле.
[0926] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[0927] Устройство декодирования трехмерных данных согласно настоящему варианту осуществления декодирует информацию (например, код заполнения) текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, где N является целым числом, большим или равным 2. Как проиллюстрировано на фиг. 136 и фиг. 137, при декодировании, устройство декодирования трехмерных данных разрешает ссылку на информацию (например, информацию заполнения) первого узла, включенного в соседние узлы, пространственно соседние с текущим узлом, и запрещает ссылку на информацию второго узла, включенного в соседние узлы, причем первый узел имеет родительский узел, идентичный родительскому узлу относительно текущего узла, причем второй узел имеет родительский узел, отличный от родительского узла относительно текущего узла. Иначе говоря, при декодировании, устройство декодирования трехмерных данных разрешает ссылку на информацию (например, код заполнения) родительского узла и запрещает ссылку на информацию (например, код заполнения) другого узла (родительского соседнего узла) в слое, идентичном слою родительского узла.
[0928] Вследствие этого, устройство декодирования трехмерных данных может повышать эффективность кодирования со ссылкой на информацию первого узла, включенного в соседние узлы, пространственно соседние с текущим узлом, причем первый узел имеет родительский узел, идентичный родительскому узлу относительно текущего узла. Кроме того, устройство декодирования трехмерных данных может уменьшать объем обработки посредством отсутствия ссылки на информацию второго узла, включенного в соседние узлы, причем второй узел имеет родительский узел, отличный от родительского узла относительно текущего узла. Таким образом, устройство декодирования трехмерных данных может не только повышать эффективность кодирования, но также и уменьшать объем обработки.
[0929] Например, устройство декодирования трехмерных данных дополнительно получает, из потока битов, информацию переключения запрета (например, limit_refer_flag, показанный на фиг. 148), указывающую то, следует или нет запрещать ссылку на информацию второго узла. При декодировании, устройство декодирования трехмерных данных выбирает то, следует запрещать или разрешать ссылку на информацию второго узла, на основе информации переключения запрета.
[0930] Вследствие этого, устройство декодирования трехмерных данных может надлежащим образом выполнять процесс декодирования с использованием информации переключения запрета.
[0931] Например, информация текущего узла представляет собой информацию (например, код заполнения), которая указывает то, присутствует или нет трехмерная точка в каждом из дочерних узлов, принадлежащих текущему узлу. Информация первого узла представляет собой информацию (информацию заполнения первого узла), которая указывает то, присутствует или нет трехмерная точка в первом узле. Информация второго узла представляет собой информацию (информацию заполнения второго узла), которая указывает то, присутствует или нет трехмерная точка во втором узле.
[0932] Например, при декодировании, устройство кодирования трехмерных данных выбирает таблицу кодирования на основе того, присутствует или нет трехмерная точка в первом узле, и энтропийно декодирует информацию (например, код заполнения) текущего узла с использованием выбранной таблицы кодирования.
[0933] Например, как проиллюстрировано на фиг. 151 и фиг. 152, при декодировании, устройство декодирования трехмерных данных разрешает ссылку на информацию (например, информацию заполнения) дочернего узла относительно первого узла, причем дочерний узел включается в соседние узлы.
[0934] Вследствие этого, поскольку устройство декодирования трехмерных данных предоставляет ссылку на более подробную информацию соседнего узла, устройство декодирования трехмерных данных может повышать эффективность кодирования.
[0935] Например, как проиллюстрировано на фиг. 138, при декодировании, устройство декодирования трехмерных данных выбирает соседний узел, на который следует ссылаться из соседних узлов, согласно пространственной позиции текущего узла в родительском узле.
[0936] Вследствие этого, устройство декодирования трехмерных данных может ссылаться на соответствующий соседний узел согласно пространственной позиции текущего узла в родительском узле.
[0937] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
Вариант 13 осуществления
[0938]
Хотя далее описывается, главным образом, работа устройства кодирования трехмерных данных, устройство декодирования трехмерных данных может выполнять идентичный процесс.
[0939] В настоящем варианте осуществления, в случае если устройство кодирования трехмерных данных кодирует введенное облако трехмерных точек (облако точек) с использованием структуры в виде дерева октантов, когда устройство кодирования трехмерных данных повторяет разделение до тех пор, пока каждый лист, включенный в дерево октантов, не имеет одну трехмерную точку, и выполняет кодирование, устройство кодирования трехмерных данных присоединяет, к потоку битов, информацию режима, указывающую то, включает каждый лист дерева октантов в себя одну трехмерную точку либо одну или более трехмерных точек. Помимо этого, когда информация режима является истинной (каждый лист дерева октантов включает в себя одну трехмерную точку), устройство кодирования трехмерных данных не кодирует информацию листа относительно листа, и когда информация режима является ложной (каждый лист дерева октантов включает в себя одну или более трехмерных точек), устройство кодирования трехмерных данных кодирует информацию листа.
[0940] Здесь, информация листа включает в себя, например, информацию, указывающую то, сколько трехмерных точек включает в себя лист, информацию, указывающую относительные координаты и т.д. трехмерной точки, включенной в лист, как проиллюстрировано на фиг. 61-67, либо и ту, и другую информацию. Соответственно, поскольку необязательно кодировать информацию листа для каждого листа дерева октантов, когда лист включает в себя одну трехмерную точку, можно повышать эффективность кодирования. Когда каждый лист дерева октантов включает в себя одну или более трехмерных точек, устройство кодирования трехмерных данных надлежащим образом кодирует и присоединяет информацию листа к потоку битов. Это обеспечивает возможность устройству декодирования трехмерных данных корректно восстанавливать одну или более трехмерных точек, включенных в лист, с использованием информации листа.
[0941] Фиг. 153 является схемой, иллюстрирующей пример синтаксиса информации заголовка потока битов согласно настоящему варианту осуществления. Эта информация заголовка, например, представляет собой WLD, SPC или VLM; single_point_per_leaf, показанный на фиг. 153, представляет собой информацию, указывающую то, включает каждый лист дерева октантов в себя одну трехмерную точку либо одну или более трехмерных точек. Здесь, "каждый лист дерева октантов включает в себя одну трехмерную точку" означает то, что все листья, включенные в дерево октантов, включают в себя одну трехмерную точку (т.е. отсутствуют листья, включающие в себя две или более трехмерных точек). Следует отметить, что дерево октантов здесь, например, представляет собой единицу, в которой присоединяется информация режима, и соответствует, например, WLD, SPC или VLM.
[0942] Кроме того, "каждый лист дерева октантов включает в себя одну или более трехмерных точек" означает то, что, по меньшей мере, один из листьев, включенных в дерево октантов, включает в себя две или более трехмерных точек. Другими словами, некоторые листья могут включать в себя две или более трехмерных точек, и оставшиеся листья могут включать в себя одну трехмерную точку.
[0943] Например, то, что значение информации режима равно 1, указывает то, что каждый лист включает в себя одну трехмерную точку, а то, что значение информации режима равно 0, указывает то, что каждый лист включает в себя одну или более трехмерных точек. Следует отметить, что, даже когда все листья, включенные в дерево октантов, включают в себя одну трехмерную точку, устройство кодирования трехмерных данных может задавать информацию режима (single_point_per_leaf) равной 0.
[0944] Фиг. 154 является схемой, иллюстрирующей пример конфигурации дерева октантов, когда информация режима указывает 1. Как проиллюстрировано на фиг. 154, когда информация режима указывает 1, каждый лист включает в себя одну трехмерную точку. Фиг. 155 является схемой, иллюстрирующей пример конфигурации дерева октантов, когда информация режима указывает 0. Как проиллюстрировано на фиг. 155, когда информация режима указывает 0, каждый лист включает в себя одну трехмерную точку либо две или более трехмерных точек.
[0945] Следует отметить, что, когда лист включает в себя две или более трехмерных точек, например, координаты в двух или более трехмерных точках, включенных в лист, отличаются друг от друга. Альтернативно, координаты в двух или более трехмерных точках, включенных в лист, являются идентичными, и фрагменты информации атрибутов, такие как цвет или степень отражения (т.е. типы информации) являются взаимно различными. Альтернативно, как координаты двух или более трехмерных точек, включенных в лист, так и фрагменты информации атрибутов могут взаимно отличаться.
[0946] Далее описывается пример синтаксиса информации листа. Следует отметить, что хотя выше приведен пример, в котором информация режима присоединяется к заголовку потока битов, информация режима не должна обязательно присоединяться к заголовку, и стандарты либо профиль или уровень и т.д. стандартов могут указывать то, включает каждый лист дерева октантов в себя одну трехмерную точку либо одну или более трехмерных точек. В этом случае, устройство декодирования трехмерных данных может корректно восстанавливать поток битов, например, посредством определения того, включает каждый лист дерева октантов в себя одну трехмерную точку либо одну или более трехмерных точек, со ссылкой на информацию стандартов, включенную в поток битов.
[0947] Фиг. 156 является схемой, иллюстрирующей пример синтаксиса информации каждого узла, включенного в дерево октантов; isleaf, показанный на фиг. 156, представляет собой флаг, указывающий то, представляет или нет узел собой лист. То, что isleaf равен 1, указывает то, что узел представляет собой лист. То, что isleaf равен 0, указывает то, что узел не представляет собой лист.
[0948] Следует отметить, что информация, указывающая то, представляет или нет узел собой лист, не должна обязательно присоединяться к заголовку. В этом случае, устройство декодирования трехмерных данных определяет то, представляет или нет узел собой лист, с использованием другого способа. Например, устройство декодирования трехмерных данных может определять то, разделяется или нет каждый узел дерева октантов на наименьший возможный размер, и может определять то, что узел представляет собой лист, при определении того, что каждый узел разделяется на наименьший возможный размер. Это исключает необходимость кодирования флага, указывающего то, представляет или нет узел собой лист, что позволяет уменьшать объем кода заголовка.
[0949] Num_point_per_leaf, показанный на фиг. 156, представляет собой информацию листа и указывает число трехмерных точек, включенных в лист; num_point_per_leaf кодируется, когда single_point_per_leaf == 0, и не кодируется, когда single_point_per_leaf == 1.
[0950] Следует отметить, что устройство кодирования трехмерных данных может энтропийно кодировать num_point_per_leaf. В это время, устройство кодирования трехмерных данных также может выполнять кодирование при переключении таблиц кодирования. Например, устройство кодирования трехмерных данных может выполнять арифметическое кодирование для первого бита num_point_per_leaf с использованием таблицы A кодирования и может выполнять арифметическое кодирование для оставшихся битов с использованием таблицы B кодирования.
[0951] Как указано выше, устройство кодирования трехмерных данных может присоединять, к заголовку потока битов, информацию режима, указывающую то, включает каждый лист дерева октантов в себя одну трехмерную точку либо одну или более трехмерных точек, и может выбирать то, следует или нет кодировать информацию листа (информацию, указывающую число трехмерных точек, включенных в лист), согласно значению информации режима. Кроме того, устройство кодирования трехмерных данных может кодировать, в качестве информации листа, позиционную информацию одной либо одной или более трехмерных точек, включенных в лист.
[0952] Следует отметить, что устройство кодирования трехмерных данных может энтропийно кодировать single_point_per_leaf, isleaf и num_point_per_leaf, сформированные посредством вышеописанного способа. Например, устройство кодирования трехмерных данных преобразует в двоичную форму каждое значение и выполняет арифметическое кодирование для преобразованного в двоичную форму значения.
[0953] Хотя структура в виде дерева октантов приведена в качестве примера в настоящем варианте осуществления, настоящее раскрытие не обязательно ограничивается этим. Вышеуказанная процедура может применяться к N-арной древовидной структуре, такой как дерево квадрантов и дерево гексадекантов.
[0954] Кроме того, когда устройство кодирования трехмерных данных кодирует, в качестве информации листа, фрагменты позиционной информации двух или более трехмерных точек в идентичном листе, устройство кодирования трехмерных данных также может кодировать фрагменты информации атрибутов (цвет, степень отражения и т.д.) двух или более трехмерных точек. В этом случае, фрагменты позиционной информации двух или более трехмерных точек и фрагменты их информации атрибутов могут быть ассоциированы друг с другом. Например, когда устройство кодирования трехмерных данных кодирует, в качестве информации листа, фрагменты позиционной информации точек A и B в идентичном листе, устройство кодирования трехмерных данных может кодировать фрагменты информации атрибутов точек A и B и присоединять фрагменты информации атрибутов к потоку битов. Другими словами, информация листа может включать в себя позиционную информацию точки A, информацию атрибутов точки A, позиционную информацию точки B и информацию атрибутов точки B. Фрагменты позиционной информации точек A и B могут быть ассоциированы с фрагментами информации атрибутов.
[0955] Кроме того, устройство кодирования трехмерных данных может округлять, по меньшей мере, M фрагментов позиционной информации, по меньшей мере, M трехмерных точек в идентичном листе и может кодировать, по меньшей мере, M фрагментов позиционной информации в качестве N фрагментов позиционной информации трехмерных точек N, где N меньше M. В этом случае, устройство кодирования трехмерных данных может округлять, по меньшей мере, M фрагментов информации атрибутов, по меньшей мере, M трехмерных точек, например, посредством усреднения, чтобы формировать N фрагментов информации атрибутов, и может кодировать N фрагментов сформированной информации атрибутов. Например, устройство кодирования трехмерных данных может округлять фрагменты позиционной информации точек A и B в идентичном листе до фрагмента позиционной информации одной точки и может кодировать фрагмент позиционной информации. В этом случае, устройство кодирования трехмерных данных может округлять фрагменты информации атрибутов точек A и B, например, посредством усреднения, чтобы вычислять фрагмент информации атрибутов одной точки, и может кодировать фрагмент вычисленной информации атрибутов.
[0956] Далее описываются процедуры, выполняемые посредством устройства кодирования трехмерных данных и устройства декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 157 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных согласно настоящему варианту осуществления. Во-первых, устройство кодирования трехмерных данных определяет то, следует выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну трехмерную точку, либо выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну или более трехмерных точек (S2201). Например, устройство кодирования трехмерных данных может определять то, следует выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну трехмерную точку, либо выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну или более трехмерных точек, согласно тому, следует или нет кодировать без потерь введенное облако трехмерных точек. Например, когда устройство кодирования трехмерных данных без потерь кодирует введенное облако трехмерных точек, устройство кодирования трехмерных данных определяет необходимость выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну трехмерную точку. Альтернативно, устройство кодирования трехмерных данных может определять то, следует выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну трехмерную точку, либо выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну или более трехмерных точек, согласно тому, взаимно отличаются или нет все координаты введенных трехмерных точек, и тому, следует или нет выполнять кодирование таким образом, что каждая из трехмерных точек включается в различный лист. Например, когда трехмерные точки включают в себя трехмерные точки, имеющие идентичные координаты, устройство кодирования трехмерных данных может определять необходимость выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну или более трехмерных точек.
[0957] Когда устройство кодирования трехмерных данных определяет необходимость выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну трехмерную точку ("Да" на S2201), устройство кодирования трехмерных данных задает информацию режима как значение, указывающее то, что каждый лист дерева октантов включает в себя одну трехмерную точку (single_point_per_leaf=1), и присоединяет информацию режима к заголовку (S2202).
[0958] Когда устройство кодирования трехмерных данных определяет необходимость выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну или более трехмерных точек ("Нет" на S2201), устройство кодирования трехмерных данных задает информацию режима как значение, указывающее то, что каждый лист дерева октантов включает в себя одну или более трехмерных точек (single_point_per_leaf=0), и присоединяет информацию режима к заголовку (S2203).
[0959] Затем, устройство кодирования трехмерных данных формирует структуру в виде дерева октантов посредством разделения корневого узла на дерево октантов (S2204). В это время, когда информация режима указывает то, что каждый лист дерева октантов должен включать в себя одну трехмерную точку, устройство кодирования трехмерных данных формирует дерево октантов, в котором каждый лист дерева октантов включает в себя одну трехмерную точку, и когда информация режима указывает то, что каждый лист дерева октантов должен включать в себя одну или более трехмерных точек, устройство кодирования трехмерных данных формирует дерево октантов, в котором каждый лист дерева октантов включает в себя одну или более трехмерных точек.
[0960] После этого устройство кодирования трехмерных данных выбирает текущий узел, который должен обрабатываться, и определяет то, представляет или нет текущий узел собой лист (S2205). Когда текущий узел представляет собой лист ("Да" на S2205), и информация режима указывает то, что каждый лист дерева октантов должен включать в себя одну или более трехмерных точек (single_point_per_leaf=0) ("Да" на S2206), устройство кодирования трехмерных данных кодирует информацию листа, указывающую, например, число трехмерных точек, включенных в лист (S2207).
[0961] Напротив, когда текущий узел представляет собой лист ("Да" на S2205), и информация режима указывает то, что каждый лист дерева октантов должен включать в себя одну трехмерную точку (single_point_per_leaf=1) ("Нет" на S2206), устройство кодирования трехмерных данных не кодирует информацию листа, указывающую, например, число трехмерных точек, включенных в лист.
[0962] Когда текущий узел представляет собой лист ("Нет" на S2205), устройство кодирования трехмерных данных кодирует код заполнения текущего узла (S2208).
[0963] Когда обработка всех узлов не завершается ("Нет" на S2209), устройство кодирования трехмерных данных выбирает следующий текущий узел и выполняет этап S2205 и следующие этапы для выбранного текущего узла. Когда обработка всех узлов завершается ("Да" на S2209), устройство кодирования трехмерных данных завершает процесс.
[0964] Фиг. 158 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, выполняемого посредством устройства декодирования трехмерных данных согласно настоящему варианту осуществления. Во-первых, устройство декодирования трехмерных данных декодирует информацию режима (single_point_per_leaf) в заголовке потока битов (S2211).
[0965] Затем, устройство декодирования трехмерных данных формирует дерево октантов пространства (узлов) с использованием, например, информации заголовка, включенной в поток битов (S2212). Например, устройство декодирования трехмерных данных формирует большое пространство (корневой узел) с использованием размера пространства вдоль направлений по оси X, по оси Z и по оси Y, присоединенных к информации заголовка. Затем, устройство декодирования трехмерных данных формирует дерево октантов посредством формирования восьми небольших пространств (узлов A0-A7) посредством разделения пространства на два вдоль каждого из направлений по оси X, по оси Z и по оси Y. Аналогично, устройство декодирования трехмерных данных разделяет каждый из узлов A0-A7 на восемь небольших пространств. Кроме того, устройство декодирования трехмерных данных выполняет декодирование кода заполнения каждого узла и декодирование информации листа последовательно посредством процесса, проиллюстрированного на фиг. 158.
[0966] В частности, устройство декодирования трехмерных данных выбирает текущий узел, который должен обрабатываться, и определяет то, представляет или нет текущий узел собой лист (S2213). Когда текущий узел представляет собой лист ("Да" на S2213), и информация режима указывает то, что каждый лист дерева октантов должен включать в себя одну или более трехмерных точек (single_point_per_leaf=0) ("Да" на S2214), устройство декодирования трехмерных данных декодирует информацию листа, указывающую, например, число трехмерных точек, включенных в лист (S2215).
[0967] Напротив, когда текущий узел представляет собой лист ("Да" на S2213), и информация режима указывает то, что каждый лист дерева октантов должен включать в себя одну трехмерную точку (single_point_per_leaf=1) ("Нет" на S2214), устройство декодирования трехмерных данных не декодирует информацию листа, указывающую, например, число трехмерных точек, включенных в лист.
[0968] Когда текущий узел не представляет собой лист ("Нет" на S2213), устройство декодирования трехмерных данных декодирует код заполнения текущего узла (S2216).
[0969] Когда обработка всех узлов не завершается ("Нет" на S2217), устройство декодирования трехмерных данных выбирает следующий текущий узел и выполняет этап S2213 и следующие этапы |для выбранного текущего узла. Когда обработка всех узлов завершается ("Да" на S2217), устройство декодирования трехмерных данных завершает процесс.
[0970] Далее описываются конфигурации устройства кодирования трехмерных данных и устройства декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 159 является блок-схемой, иллюстрирующей конфигурацию устройства 2200 кодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2200 кодирования трехмерных данных, проиллюстрированное на фиг. 159, включает в себя формирователь 2201 деревьев октантов, модуль 2202 определения режима и энтропийный кодер 2203.
[0971] Формирователь 2201 деревьев октантов формирует, например, дерево октантов из введенных трехмерных точек (облака точек) и формирует соответствующее одно из кода заполнения и информации листа для каждого узла, включенного в дерево октантов. Модуль 2202 определения режима определяет то, следует выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну трехмерную точку, либо выполнять кодирование таким образом, что каждый лист дерева октантов включает в себя одну или более трехмерных точек, и формирует информацию режима, указывающую результат определения. Другими словами, модуль 2202 определения режима задает значение single_point_per_leaf.
[0972] Энтропийный кодер 2203 кодирует информацию листа согласно информации режима, чтобы формировать поток битов. Дополнительно, энтропийный кодер 2203 присоединяет информацию листа (single_point_per_leaf) к потоку битов.
[0973] Фиг. 160 является блок-схемой, иллюстрирующей конфигурацию устройства 2210 декодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2210 декодирования трехмерных данных, проиллюстрированное на фиг. 160, включает в себя формирователь 2211 деревьев октантов, декодер 2212 информации режима и энтропийный декодер 2213.
[0974] Формирователь 2211 деревьев октантов формирует дерево октантов пространства (узлов) с использованием, например, информации заголовка потока битов. Например, формирователь 2211 деревьев октантов формирует большое пространство (корневой узел) с использованием размера пространства вдоль направлений по оси X, по оси Z и по оси Y, присоединенных к информации заголовка, и формирует дерево октантов посредством формирования восьми небольших пространств (узлов A0-A7) посредством разделения пространства на два вдоль каждого из направлений по оси X, по оси Z и по оси Y. Аналогично, формирователь 2211 деревьев октантов разделяет каждый из узлов A0-A7 на восемь небольших пространств. Как указано выше, формирователь 2211 деревьев октантов повторяет формирование дерева октантов.
[0975] Декодер 2212 информации режима декодирует информацию режима (single_point_per_leaf) из информации заголовка потока битов. Следует отметить, что декодер 2212 информации режима может быть включен в энтропийный декодер 2213.
[0976] Энтропийный декодер 2213 декодирует код заполнения и информацию листа согласно декодированной информации режима и формирует трехмерные точки с использованием кода заполнения и декодированной информации листа.
[0977] Как указано выше, устройство кодирования трехмерных данных согласно настоящему варианту осуществления выполняет процесс, проиллюстрированный на фиг. 161. Во-первых, устройство кодирования трехмерных данных присоединяет, к потоку битов, первую информацию (информацию режима), указывающую то, должен лист, который должен быть включен в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, включать в себя одну трехмерную точку либо две или более трехмерных точек, где N является целым числом, большим или равным 2 (S2221). Другими словами, устройство кодирования трехмерных данных кодирует первую информацию.
[0978] Когда первая информация указывает то, что лист должен включать в себя одну трехмерную точку ("Да" на S2222), устройство кодирования трехмерных данных формирует N-арную древовидную структуру, в которой лист включает в себя одну трехмерную точку (S2223), и кодирует N-арную древовидную структуру (S2224).
[0979] Напротив, когда первая информация указывает то, что лист должен включать в себя две или более трехмерных точек, устройство кодирования трехмерных данных формирует N-арную древовидную структуру, в которой лист включает в себя две или более трехмерных точек (S2225), и кодирует N-арную древовидную структуру (S2226).
[0980] Вследствие этого, устройство кодирования трехмерных данных может избирательно использовать древовидную структуру, в которой лист включает в себя одну трехмерную точку, и древовидную структуру, в которой лист включает в себя две или более трехмерных точек. Соответственно, устройство кодирования трехмерных данных может повышать эффективность кодирования.
[0981] Например, когда первая информация указывает то, что лист должен включать в себя две или более трехмерных точек, устройство кодирования трехмерных данных присоединяет вторую информацию относительно листа (информацию листа). Когда первая информация указывает то, что лист должен включать в себя одну трехмерную точку, устройство кодирования трехмерных данных не присоединяет вторую информацию к потоку битов.
[0982] Вследствие этого, устройство кодирования трехмерных данных может повышать эффективность кодирования посредством неприсоединения второй информации к потоку битов, когда лист должен включать в себя одну трехмерную точку.
[0983] Например, вторая информация указывает общее число трехмерных точек, включенных в лист.
[0984] Например, первая информация обычно используется посредством листьев. Например, первая информация обычно используется посредством всех или части листьев, которые должны быть включены в N-арную древовидную структуру. Другими словами, первая информация указывает то, должен каждый из листьев, которые должны быть включены в N-арную древовидную структуру, включать в себя одну трехмерную точку либо две или более трехмерных точек. Когда первая информация указывает то, что каждый из листьев должен включать в себя одну трехмерную точку, устройство кодирования трехмерных данных формирует N-арную древовидную структуру, в которой каждый из листьев включает в себя одну трехмерную точку, и кодирует N-арную древовидную структуру. Когда первая информация указывает то, что каждый из листьев должен включать в себя две или более трехмерных точек, устройство кодирования трехмерных данных формирует N-арную древовидную структуру, в которой каждый из листьев включает в себя две или более трехмерных точек, и кодирует N-арную древовидную структуру.
[0985] Вследствие этого, поскольку можно управлять форматами листьев с использованием одной первой информации, устройство кодирования трехмерных данных может повышать эффективность кодирования.
[0986] Например, две или более трехмерных точек, включенных в лист, имеют взаимно различные пространственные координаты. Другими словами, вторая информация может показывать координаты каждой из двух или более трехмерных точек, включенных в лист.
[0987] Например, две или более трехмерных точек, включенных в лист, имеют идентичные пространственные координаты и взаимно различную информацию атрибутов. Другими словами, вторая информация может показывать информацию атрибутов каждой из двух или более трехмерных точек, включенных в лист.
[0988] Например, каждая из двух или более трехмерных точек, включенных в лист, имеет координатную информацию и информацию атрибутов. Другими словами, вторая информация может показывать координаты и информацию атрибутов каждой из двух или более трехмерных точек, включенных в лист.
[0989] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[0990] Устройство декодирования трехмерных данных согласно настоящему варианту осуществления выполняет процесс, проиллюстрированный на фиг. 162. Во-первых, устройство декодирования трехмерных данных декодирует, из потока битов, первую информацию (информацию режима), указывающую то, должен лист, который должен быть включен в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, включать в себя одну трехмерную точку либо две или более трехмерных точек, где N является целым числом, большим или равным 2 (S2231). Другими словами, устройство декодирования трехмерных данных получает первую информацию из потока битов.
[0991] Когда первая информация указывает то, что лист должен включать в себя одну трехмерную точку ("Да" на S2232), устройство декодирования трехмерных данных декодирует N-арную древовидную структуру, в которой лист включает в себя одну трехмерную точку (S2233). Напротив, когда первая информация указывает то, что лист должен включать в себя две или более трехмерных точек ("Нет" на S2232), устройство декодирования трехмерных данных декодирует N-арную древовидную структуру, в которой лист включает в себя две или более трехмерных точек (S2234). Здесь, фраза "декодировать N-арную древовидную структуру, в которой лист включает в себя одну трехмерную точку" означает синтаксически анализировать информацию, включенную в поток битов, на основе правила, созданного, например, исходя из того, что лист должен включать в себя только одну трехмерную точку. Аналогично, фраза "декодировать N-арную древовидную структуру, в которой лист включает в себя две или более трехмерных точек" означает синтаксически анализировать информацию, включенную в поток битов, на основе правила, созданного, например, исходя из того, что лист должен включать в себя две или более трехмерных точек.
[0992] Вследствие этого, устройство декодирования трехмерных данных может избирательно использовать древовидную структуру, в которой лист включает в себя одну трехмерную точку, и древовидную структуру, в которой лист включает в себя две или более трехмерных точек. Соответственно, устройство декодирования трехмерных данных может повышать эффективность кодирования.
[0993] Например, когда первая информация указывает то, что лист должен включать в себя две или более трехмерных точек, устройство декодирования трехмерных данных декодирует (получает), из потока битов, вторую информацию относительно листа (информацию листа). Когда первая информация указывает то, что лист должен включать в себя одну трехмерную точку, устройство декодирования трехмерных данных не декодирует (получает) информацию листа.
[0994] Вследствие этого, поскольку вторая информация не должна обязательно присоединяться к потоку битов, когда лист должен включать в себя одну трехмерную точку, можно повышать эффективность кодирования.
[0995] Например, вторая информация указывает общее число трехмерных точек, включенных в лист.
[0996] Например, первая информация обычно используется посредством листьев. Например, первая информация обычно используется посредством всех или части листьев, которые должны быть включены в N-арную древовидную структуру. Другими словами, первая информация указывает то, должен каждый из листьев, которые должны быть включены в N-арную древовидную структуру, включать в себя одну трехмерную точку либо две или более трехмерных точек. Когда первая информация указывает то, что каждый из листьев должен включать в себя одну трехмерную точку, устройство декодирования трехмерных данных формирует N-арную древовидную структуру, в которой каждый из листьев включает в себя одну трехмерную точку, и декодирует N-арную древовидную структуру. Когда первая информация указывает то, что каждый из листьев должен включать в себя две или более трехмерных точек, устройство декодирования трехмерных данных формирует N-арную древовидную структуру, в которой каждый из листьев включает в себя две или более трехмерных точек, и декодирует N-арную древовидную структуру.
[0997] Вследствие этого, поскольку можно управлять форматами листьев с использованием одной первой информации, устройство декодирования трехмерных данных может повышать эффективность кодирования.
[0998] Например, две или более трехмерных точек, включенных в лист, имеют взаимно различные пространственные координаты. Другими словами, вторая информация может показывать координаты каждой из двух или более трехмерных точек, включенных в лист.
[0999] Например, две или более трехмерных точек, включенных в лист, имеют идентичные пространственные координаты и взаимно различную информацию атрибутов. Другими словами, вторая информация может показывать информацию атрибутов каждой из двух или более трехмерных точек, включенных в лист.
[1000] Например, каждая из двух или более трехмерных точек, включенных в лист, имеет координатную информацию и информацию атрибутов. Другими словами, вторая информация может показывать координаты и информацию атрибутов каждой из двух или более трехмерных точек, включенных в лист.
[1001] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
Вариант 14 осуществления
[1002]
В настоящем варианте осуществления, устройство кодирования трехмерных данных выражает код заполнения с использованием 1-битовой занятой позиции и оставшегося бита и кодирует каждое из 1-битовой занятой позиции и оставшегося бита с использованием различного способа.
[1003] 1-битовая занятая позиция указывает позицию бита, в которой 1 появляется первым, когда каждый бит, включенный в код заполнения, сканируется слева. Например, 1-битовая занятая позиция принимает значение от 0 до 7 для дерева октантов и принимает значение от 0 до 15 для дерева гексадекантов.
[1004] Оставшийся бит указывает часть битовой последовательности, расположенной в правой стороне 1-битовой занятой позиции кода заполнения. Оставшийся бит имеет число битов в пределах от 0 до 7 согласно 1-битовой занятой позиции.
[1005] Фиг. 163 является схемой, иллюстрирующей примеры 1-битовой занятой позиции и оставшегося бита, сформированных из кода заполнения. В примере, показанном посредством (a) на фиг. 163, код заполнения равен 01000010. Поскольку 1 появляется первым в шестом бите, когда этот код заполнения сканируется слева, 1-битовая занятая позиция равна 6, и оставшийся бит равен 000010. В примере, показанном посредством (b) на фиг. 163, код заполнения равен 00000010. Поскольку 1 появляется первым в первом бите, когда этот код заполнения сканируется слева, 1-битовая занятая позиция равна 1, и оставшийся бит равен 0. В примере, показанном посредством (c) на фиг. 163, код заполнения равен 00000001. Поскольку 1 появляется первым в нулевом бите, когда этот код заполнения сканируется слева, 1-битовая занятая позиция равна 0, и оставшийся бит отсутствует.
[1006] В дальнейшем в этом документе описывается пример способа кодирования 1-битовой занятой позиции. В случае дерева октантов, устройство кодирования трехмерных данных энтропийно кодирует 1-битовую занятую позицию в качестве 3-битового значения (от 0 до 7). Устройство кодирования трехмерных данных выполняет, например, арифметическое кодирование для 1-битовой занятой позиции с использованием одной таблицы кодирования. Следует отметить, что устройство кодирования трехмерных данных может выполнять двоичное кодирование (двоичное арифметическое кодирование) одного бита за один раз для 1-битовой занятой позиции, которая представляет собой 3-битовую битовую последовательность. Устройство кодирования трехмерных данных может задавать вероятность появления в 0 и вероятность появления в 1-50% в таблице кодирования в этом случае. Например, устройство кодирования трехмерных данных может применять обходной режим при двоичном арифметическом кодировании.
[1007] Далее описывается пример способа кодирования оставшегося бита. Например, относительно оставшегося бита в качестве двоичной битовой последовательности, устройство кодирования трехмерных данных выполняет двоичное кодирование для битов в порядке слева направо. Например, когда оставшийся бит равен 000010, устройство кодирования трехмерных данных может выполнять арифметическое кодирование для значений в 0 и 1 в порядке 0 → 0 → 0 → 0 → 1 → 0.
[1008] Например, в примере, показанном посредством (a) на фиг. 163, устройство кодирования трехмерных данных выполняет арифметическое кодирование для значения в 6 в 1-битовой занятой позиции. Например, устройство кодирования трехмерных данных может выполнять арифметическое кодирование для битовой последовательности 110, указывающей значение в 6, с использованием обходного режима. Устройство кодирования трехмерных данных также выполняет арифметическое кодирование для битовой последовательности 000010 оставшегося бита.
[1009] Кроме того, в примере, показанном посредством (b) на фиг. 163, устройство кодирования трехмерных данных выполняет арифметическое кодирование для значения в 1 в 1-битовой занятой позиции. Например, устройство кодирования трехмерных данных может выполнять арифметическое кодирование для битовой последовательности 1, указывающей значение в 1, с использованием обходного режима. Устройство кодирования трехмерных данных также выполняет арифметическое кодирование для битовой последовательности 0 оставшегося бита.
[1010] Кроме того, в примере, показанном посредством (c) на фиг. 163, устройство кодирования трехмерных данных выполняет арифметическое кодирование для значения в 0 в 1-битовой занятой позиции. Например, устройство кодирования трехмерных данных может выполнять арифметическое кодирование для битовой последовательности 0, указывающей значение в 0, с использованием обходного режима. Поскольку оставшийся бит отсутствует, устройство кодирования трехмерных данных не кодирует оставшийся бит.
[1011] Следует отметить, что 1-битовая занятая позиция может задаваться как позиция бита, в которой 1 появляется первым, когда каждый бит кода заполнения сканируется справа. В этом случае, оставшийся бит указывает часть битовой последовательности, расположенной в левой стороне 1-битовой занятой позиции кода заполнения. Кроме того, в этом случае, устройство кодирования трехмерных данных может выполнять двоичное кодирование для оставшегося бита в порядке справа налево. Помимо этого, устройство кодирования трехмерных данных может кодировать флаг переключения для переключения между сканированием каждого бита кода заполнения справа и сканированием каждого бита кода заполнения слева. Устройство кодирования трехмерных данных может кодировать флаг переключения для каждого кода заполнения. Соответственно, можно изменять порядок сканирования для каждого кода заполнения. Дополнительно, устройство кодирования трехмерных данных может добавлять флаг переключения в заголовок мира, заголовок пространства или заголовок объема и т.д. и изменять порядок сканирования на основе мира, пространства или объема.
[1012] Следует отметить, что порядок сканирования может представлять собой предварительно определенный порядок. Помимо этого, позиция бита, в которой 0 появляется первым, может использоваться вместо позиции бита, в которой 1 появляется первым в порядке сканирования.
[1013] Кроме того, код заполнения, в котором только 1 бит из числа битов, включенных в код заполнения, имеет значение 1, задается как 1-битовый занятый код. Например, в случае дерева октантов, код заполнения "0010000" представляет собой 1-битовый занятый код, но код заполнения "0010001" не представляет собой 1-битовый занятый код.
[1014] Устройство кодирования трехмерных данных может определять то, должен или нет текущий код заполнения, который должен кодироваться, с большой вероятностью представлять собой 1-битовый занятый код. После этого устройство кодирования трехмерных данных может кодировать текущий код заполнения в форме 1-битовой занятой позиции и оставшегося бита (в дальнейшем называется "кодированием на основе занятых позиций") при определении того, что текущий код заполнения с большой вероятностью должен представлять собой 1-битовый занятый код, и может кодировать значение текущего кода заполнения (в дальнейшем называется "прямым кодированием") непосредственно при определении того, что маловероятно то, что текущий код заполнения должен представлять собой 1-битовый занятый код.
[1015] Например, устройство кодирования трехмерных данных определяет то, должен или нет текущий код заполнения с большой вероятностью представлять собой 1-битовый занятый код, с использованием значения кода заполнения родительского узла относительно текущего узла. Например, устройство кодирования трехмерных данных определяет то, представляет или нет код заполнения родительского узла собой 1-битовый занятый код; выполняет кодирование на основе занятых позиций для кода заполнения текущего узла при определении того, что код заполнения родительского узла представляет собой 1-битовый занятый код; и выполняет прямое кодирование для кода заполнения текущего узла при определении того, что код заполнения родительского узла не представляет собой 1-битовый занятый код.
[1016] Здесь, в случае если кодирование на основе занятых позиций выполняется, когда текущий код заполнения текущего узла с большой вероятностью должен представлять собой 1-битовый занятый код, значение каждого бита оставшегося бита имеет тенденцию быть равным 0. Соответственно, можно повышать эффективность кодирования посредством выполнения двоичного арифметического кодирования для оставшегося бита. Помимо этого, устройство кодирования трехмерных данных может эффективно определять то, должен или нет текущий код заполнения с большой вероятностью представлять собой 1-битовый занятый код, на основе того, представляет или нет код заполнения родительского узла собой 1-битовый занятый код. Дополнительно, в случае не порядка кодирования в ширину, а порядка кодирования в глубину, можно применять идентичный способ определения со ссылкой на код заполнения родительского узла.
[1017] Фиг. 164 является схемой, принципиально иллюстрирующей вышеуказанный процесс. Как проиллюстрировано на фиг. 164, когда код заполнения родительского узла представляет собой 1-битовый занятый код, устройство кодирования трехмерных данных выполняет кодирование на основе занятых позиций для текущего узла. Кроме того, когда код заполнения родительского узла представляет собой не-1-битовый занятый код (не 1-битовый занятый код), устройство кодирования трехмерных данных выполняет прямое кодирование для текущего узла.
[1018] Далее описывается пример синтаксиса информации узла. Фиг. 165 является схемой, иллюстрирующей пример синтаксиса информации узла.
[1019] Как проиллюстрировано на фиг. 165, информация узла включает в себя 1bit_occupied_position и remaining_bit. 1bit_occupied_position представляет собой вышеуказанную 1-битовую занятую позицию и указывает позицию бита, в которой 1 появляется первым, когда каждый бит кода заполнения сканируется слева. Например, 1-битовая занятая позиция принимает значение от 0 до 7 для дерева октантов и принимает значение от 0 до 15 для дерева гексадекантов.
[1020] Remaining_bit представляет собой вышеуказанный оставшийся бит и указывает часть битовой последовательности, расположенной в правой стороне 1-битовой занятой позиции кода заполнения. Поскольку оставшийся бит отсутствует, когда 1-битовая занятая позиция (1bit_occupied_position) равна 0, remaining_bit не должен обязательно кодироваться, как проиллюстрировано на фиг. 165. Кроме того, относительно remaining_bit в качестве двоичной битовой последовательности, устройство кодирования трехмерных данных может выполнять двоичное кодирование для битов в порядке слева направо. Кроме того, устройство кодирования трехмерных данных может выполнять арифметическое кодирование для десятичного значения, вычисленного из битовой последовательности remaining_bit, с использованием таблицы кодирования. Например, когда битовая последовательность оставшегося бита равна 000010, устройство кодирования трехмерных данных может выполнять арифметическое кодирование для значения в 2.
[1021] Когда код заполнения (parent_occupancy_code) родительского узла не представляет собой 1-битовый занятый код, устройство кодирования трехмерных данных может выполнять прямое кодирование для кода заполнения. Например, устройство кодирования трехмерных данных может выполнять арифметическое кодирование для кода заполнения с использованием одной таблицы кодирования.
[1022] Следует отметить, что хотя структура в виде дерева октантов описывается в качестве примера в настоящем варианте осуществления, настоящее раскрытие не обязательно ограничивается этим. Вышеуказанная процедура может применяться к N-арному дереву, такому как дерево квадрантов и дерево гексадекантов или другие древовидные структуры, где N является целым числом, большим или равным 2. Например, 1bit_occupied_position принимает значение от 0 до 3 для дерева квадрантов, и 1_bit_occupied_position принимает значение от 0 до 15 для дерева гексадекантов. Устройство кодирования трехмерных данных может кодировать, в качестве 2-битовой занятой позиции (2bit_occupied_position), позицию, в которой 1 появляется вторым, когда битовая последовательность просканирована, в дополнение к 1-битовой занятой позиции; и может кодировать часть битовой последовательности после 2-битовой занятой позиции в качестве оставшегося бита. Дополнительно, устройство кодирования трехмерных данных может кодировать, например, в качестве N-битовой занятой позиции (Nbit_occupied_position), позицию, в которой 1 появляется в течение n-го времени, когда битовая последовательность сканируется; и может кодировать часть битовой последовательности после N-битовой занятой позиции в качестве оставшегося бита.
[1023] В настоящем варианте осуществления, когда код заполнения текущего узла с большой вероятностью должен представлять собой 1-битовый занятый код, устройство кодирования трехмерных данных выполняет кодирование на основе занятых позиций. Другими словами, устройство кодирования трехмерных данных выполняет арифметическое кодирование, в качестве 1-битовой занятой позиции, для позиции бита, включающей в себя значения, каждое из которых равно 1 со случайной вероятностью, с использованием, например, таблицы A кодирования; и выполняет арифметическое кодирование, в качестве оставшегося бита, для оставшейся битовой последовательности, включающей в себя значения, каждое из которых имеет тенденцию быть равным 0, с использованием, например, таблицы B кодирования. Можно повышать эффективность кодирования посредством представления кода заполнения в различных формах и с использованием различных таблиц кодирования для арифметического кодирования таким способом. Например, устройство кодирования трехмерных данных может выполнять арифметическое кодирование для битовой последовательности оставшегося бита при поддержании вероятности появления значений в 0 высокой, с использованием таблицы B кодирования. Даже когда исходная битовая последовательность оставшегося бита имеет большую длину, устройство кодирования трехмерных данных может уменьшать число битов в кодированных данных в качестве результата.
[1024] Каждый бит 1-битового занятого кода имеет тенденцию быть значением в 1 со случайной вероятностью. Как результат, устройство кодирования трехмерных данных может выполнять арифметическое кодирование для 1-битового занятого кода с использованием обходного режима, который пропускает вычисление вероятности возникновения посредством задания вероятности появления в 0 и вероятности появления в 1-50%. Соответственно, можно уменьшать объем обработки.
[1025] Следует отметить, что устройство декодирования трехмерных данных может определять то, выполнено кодирование на основе занятых позиций или прямое кодирование, посредством процесса, идентичного процессу для устройства кодирования трехмерных данных. Альтернативно, устройство кодирования трехмерных данных может формировать поток битов, включающий в себя информацию, указывающую то, выполнено кодирование на основе занятых позиций или прямое кодирование, и устройство декодирования трехмерных данных может определять то, выполнено кодирование на основе занятых позиций или прямое кодирование, на основе информации, включенной в поток битов. В этом случае, устройство кодирования трехмерных данных также может ссылаться не на код заполнения родительского узла, а на текущий код заполнения, выполнять кодирование на основе занятых позиций, когда текущий код заполнения представляет собой 1-битовый занятый код, и выполнять прямое кодирование, когда текущий код заполнения не представляет собой 1-битовый занятый код.
[1026] Кроме того, хотя в настоящем варианте осуществления описывается пример, в котором кодирование на основе занятых позиций и прямое кодирование переключаются на основе узла, настоящее раскрытие не ограничено этим. Например, устройство кодирования трехмерных данных может добавлять, в заголовок мира или заголовок пространства и т.д., флаг, указывающий то, следует или нет выполнять кодирование на основе занятых позиций; и может выбирать то, следует или нет выполнять кодирование на основе занятых позиций, на основе мира или пространства и т.д. Например, для мира или пространства, включающего в себя множество разреженных облаков трехмерных точек, устройство кодирования трехмерных данных может активировать флаг и выполнять кодирование на основе занятых позиций для всех кодов заполнения облаков трехмерных точек в мире или пространстве. Помимо этого, для мира или пространства, включающего в себя множество плотных облаков трехмерных точек, устройство кодирования трехмерных данных может деактивировать флаг и выполнять прямое кодирование для всех кодов заполнения трехмерных данных облака точек в мире или пространстве. Это исключает необходимость в определении выбора для каждого узла, и в силу этого можно уменьшать объем обработки.
[1027] Поскольку устройство декодирования трехмерных данных может декодировать флаг, включенный в заголовок, такой как мир или пространство, чтобы определять то, выполнено кодирование на основе занятых позиций или прямое кодирование для кода заполнения в мире или пространстве, устройство декодирования трехмерных данных может декодировать код заполнения надлежащим образом.
[1028] Устройство кодирования трехмерных данных может выполнять кодирование на основе занятых позиций, когда код заполнения текущего узла с большой вероятностью должен представлять собой N-битовый занятый код, в котором число битов, имеющих значение в 1, включенных в код заполнения, меньше или равно N (любое целое число), и может выполнять прямое кодирование, когда маловероятно то, что код заполнения текущего узла должен представлять собой N-битовый занятый код. Например, устройство кодирования трехмерных данных может выполнять кодирование на основе занятых позиций, когда код заполнения родительского узла представляет собой N-битовый занятый код, и может выполнять прямое кодирование, когда код заполнения родительского узла не представляет собой N-битовый занятый код.
[1029] В дальнейшем в этом документе описывается последовательность операций обработки в устройстве кодирования трехмерных данных. Фиг. 166 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных согласно настоящему варианту осуществления.
[1030] Во-первых, устройство кодирования трехмерных данных определяет то, представляет или нет код заполнения родительского узла относительно текущего узла собой 1-битовый занятый код (S2301). Когда код заполнения родительского узла представляет собой 1-битовый занятый код ("Да" на S2301), устройство кодирования трехмерных данных выполняет кодирование на основе занятых позиций для текущего кода заполнения текущего узла (S2302).
[1031] В частности, устройство кодирования трехмерных данных выполняет поиск 1-битовой занятой позиции в текущем коде заполнения (S2304) и кодирует полученную 1-битовую занятую позицию (S2305). После этого устройство кодирования трехмерных данных вычисляет оставшийся бит (S2306) и кодирует полученный оставшийся бит (S2307).
[1032] С другой стороны, когда код заполнения родительского узла не представляет собой 1-битовый занятый код ("Нет" на S2301), устройство кодирования трехмерных данных выполняет прямое кодирование для текущего кода заполнения (S2303).
[1033] Следует отметить, что порядок этапов, включенных в этап кодирования на основе занятых позиций (S2302), может перекомпоновываться. Например, устройство кодирования трехмерных данных может выполнять поиск 1-битовой занятой позиции (S2304), вычислять оставшийся бит (S2306) и затем кодировать 1-битовую занятую позицию и оставшийся бит (S2305, S2307).
a
[1034] Фиг. 167 является блок-схемой последовательности операций способа, иллюстрирующей конкретный пример этапа кодирования на основе занятых позиций (S2302). Во-первых, устройство кодирования трехмерных данных вычисляет 1-битовую занятую позицию (S2304). В частности, устройство кодирования трехмерных данных задает переменную a равной 7 (S2311). Затем, устройство кодирования трехмерных данных задает "код заполнения - 2" как переменную Diff (S2312). После этого устройство кодирования трехмерных данных определяет то, удовлетворяется или нет "Diff>-1" (S2313).
[1035] Когда "Diff>-1" не удовлетворяется ("Нет" на S2313), устройство кодирования трехмерных данных задает "a-1" как переменную a (S2314). Когда "Diff>-1" удовлетворяется ("Да" на S2313), устройство кодирования трехмерных данных задает a как 1-битовую занятую позицию и "Diff" как оставшийся бит (S2315).
[1036] После этого, устройство кодирования трехмерных данных кодирует вычисленную 1-битовую занятую позицию (S2305).
b
[1037] Затем, устройство кодирования трехмерных данных вычисляет оставшийся бит (S2306) и выполняет двоичное кодирование для оставшегося бита (S2307). В частности, устройство кодирования трехмерных данных задает "1-битовая занятая позиция - 1" как переменную b (S2321). После этого устройство кодирования трехмерных данных задает "оставшийся бит - 2" как переменную Diff (S2322). После этого, устройство кодирования трехмерных данных определяет то, удовлетворяется или нет "Diff>-1" (S2323).
[1038] Когда "Diff>-1" удовлетворяется ("Да" на S2323), устройство кодирования трехмерных данных кодирует "1" и задает "Diff" как оставшийся бит (S2324) и задает "b-1" как переменную b (S2326). С другой стороны, когда "Diff>-1" не удовлетворяется ("Нет" на S2323), устройство кодирования трехмерных данных кодирует "0" (S2325) и задает "b-1" как переменную b (S2326).
[1039] В завершение, устройство кодирования трехмерных данных определяет то, удовлетворяется или нет "b<0" (S2327). Когда "b<0" не удовлетворяется ("Нет" на S2327), устройство кодирования трехмерных данных выполняет этап S2322 и следующие этапы снова. Когда "b<0" удовлетворяется ("Да" на S2327), устройство кодирования трехмерных данных завершает процесс.
[1040] В дальнейшем в этом документе описывается последовательность операций обработки в устройстве декодирования трехмерных данных. Фиг. 168 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, выполняемого посредством устройства декодирования трехмерных данных согласно настоящему варианту осуществления.
[1041] Во-первых, устройство декодирования трехмерных данных определяет то, представляет или нет код заполнения родительского узла собой 1-битовый занятый код (S2331). Когда код заполнения родительского узла представляет собой 1-битовый занятый код ("Да" на S2331), устройство декодирования трехмерных данных выполняет декодирование на основе занятых позиций для декодирования кодированных данных, кодированных посредством кодирования на основе занятых позиций (S2332).
[1042] В частности, устройство декодирования трехмерных данных декодирует 1-битовую занятую позицию из потока битов (S2334); вычисляет часть кода заполнения (от левого конца кода заполнения до 1-битовой занятой позиции), на основе 1-битовой занятой позиции (S2335); и обновляет код заполнения при декодировании оставшегося бита (S2336).
[1043] С другой стороны, когда код заполнения родительского узла не представляет собой 1-битовый занятый код ("Нет" на S2331), устройство декодирования трехмерных данных декодирует код заполнения из потока битов с использованием прямого декодирования для декодирования кодированного кода заполнения, кодированного посредством прямого кодирования (S2333).
[1044] Следует отметить, что порядок этапов, включенных в этап декодирования на основе занятых позиций (S2332), может перекомпоновываться. Например, устройство декодирования трехмерных данных может декодировать 1-битовую занятую позицию (S2334), затем обновлять код заполнения при декодировании оставшегося бита (S2336) и в завершение суммировать код заполнения, вычисленный из 1-битовой занятой позиции, с обновленным кодом заполнения (S2335).
[1045] Фиг. 169 является блок-схемой последовательности операций способа, иллюстрирующей конкретный пример этапа декодирования на основе занятых позиций (S2332). Во-первых, устройство декодирования трехмерных данных декодирует 1-битовую занятую позицию из потока битов (S2334) и вычисляет часть кода заполнения с использованием 1-битовой занятой позиции (S2335).
a
[1046] В частности, устройство декодирования трехмерных данных задает 1-битовую занятую позицию как переменную a (S2341). Затем, устройство декодирования трехмерных данных задает 2 как код заполнения (S2342).
[1047] После этого устройство декодирования трехмерных данных обновляет код заполнения при декодировании оставшегося бита (S2336). В частности, устройство декодирования трехмерных данных задает "a-1" как переменную b (S2351). Затем, устройство декодирования трехмерных данных декодирует 1 бит и задает декодированный 1 бит как переменную c (S2352). После этого устройство декодирования трехмерных данных определяет то, удовлетворяется или нет "c==1" (S2353).
b
[1048] Когда "c==1" удовлетворяется ("Да" на S2353), устройство декодирования трехмерных данных суммирует 2 с кодом заполнения (S2354) и задает "b-1" как переменную b (S2355). Когда "c==1" не удовлетворяется ("Нет" на S2353), устройство декодирования трехмерных данных задает "b-1" как переменную b (S2355).
[1049] В завершение, устройство декодирования трехмерных данных определяет то, удовлетворяется или нет "b<0" (S2356). Когда "b<0" не удовлетворяется ("Нет" на S2356), устройство декодирования трехмерных данных выполняет этап S2352 и следующие этапы снова. Когда "b<0" удовлетворяется ("Да" на S2356), устройство декодирования трехмерных данных завершает процесс.
[1050] Далее описывается пример конфигурации устройства кодирования трехмерных данных. Фиг. 170 является блок-схемой устройства 2300 кодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2300 кодирования трехмерных данных включает в себя формирователь 2301 деревьев октантов и энтропийный кодер 2302.
[1051] Формирователь 2301 деревьев октантов формирует, например, дерево октантов из введенных трехмерных точек (облака точек) и формирует соответствующее одно из кода заполнения и информации листа для каждого узла дерева октантов.
[1052] Энтропийный кодер 2302 кодирует код заполнения каждого узла. Энтропийный кодер 2302 переключается между способами кодирования кода заполнения согласно тому, представляет или нет код заполнения родительского узла собой 1-битовый занятый код. Например, когда код заполнения родительского узла представляет собой 1-битовый занятый код, энтропийный кодер 2302 выполняет кодирование на основе занятых позиций для кода заполнения; и когда родительский узел не представляет собой 1-битовый занятый код, энтропийный кодер 2302 выполняет арифметическое кодирование для значения кода заполнения с использованием таблицы кодирования.
[1053] Далее описывается пример конфигурации устройства декодирования трехмерных данных. Фиг. 171 является блок-схемой устройства 2310 декодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2310 декодирования трехмерных данных включает в себя формирователь 2311 деревьев октантов и энтропийный декодер 2312.
[1054] Формирователь 2311 деревьев октантов формирует дерево октантов пространства (узла) с использованием, например, информации заголовка потока битов. Например, формирователь 2311 деревьев октантов формирует большое пространство (корневой узел) с использованием размера пространства вдоль направлений по оси X, по оси Z и по оси Y, присоединенных к информации заголовка, и формирует дерево октантов посредством формирования восьми небольших пространств A (узлов A0-A7) посредством разделения пространства на два вдоль каждого из направлений по оси X, по оси Z и по оси Y. Аналогично, формирователь 2311 деревьев октантов дополнительно разделяет каждый из узлов A0-A7 на восемь небольших пространств. Как указано выше, формирователь 2311 деревьев октантов повторяет формирование дерева октантов.
[1055] Энтропийный декодер 2312 декодирует код заполнения каждого узла. Энтропийный декодер 2312 переключается между способами декодирования кода заполнения согласно тому, представляет или нет декодированный код заполнения родительского узла собой 1-битовый занятый код. Например, когда декодированный код заполнения родительского узла представляет собой 1-битовый занятый код, энтропийный декодер 2312 декодирует код заполнения с использованием декодирования на основе занятых позиций; и когда родительский узел не представляет собой 1-битовый занятый код, энтропийный декодер 2312 выполняет арифметическое декодирование для значения кода заполнения с использованием таблицы кодирования.
[1056] Как указано выше, устройство кодирования трехмерных данных согласно настоящему варианту осуществления выполняет процесс, проиллюстрированный на фиг. 172. Во-первых, устройство кодирования трехмерных данных формирует битовую последовательность (например, код заполнения), включающую в себя N-битовую информацию, которая представляет собой информацию текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, и которая указывает то, присутствует или нет трехмерная точка в каждом из дочерних узлов, принадлежащих текущему узлу, где N является целым числом, большим или равным 2 (S2361).
[1057] Затем, устройство кодирования трехмерных данных формирует (i) информацию позиции, указывающую позицию головной части (например, 1-битовую занятую позицию), которая представляет собой позицию, в которой предварительно определенный код появляется первым в битовой последовательности, когда битовая последовательность сканируется в предварительно определенном порядке сканирования, и (ii) оставшийся бит, который представляет собой часть битовой последовательности после позиции головной части в предварительно определенном порядке сканирования (S2362). Здесь, например, предварительно определенный код равен 1.
[1058] После этого устройство кодирования трехмерных данных кодирует информацию позиции и оставшийся бит в качестве информации текущего узла (S2363). Другими словами, устройство кодирования трехмерных данных формирует, в качестве информации текущего узла, поток битов, включающий в себя информацию позиции и оставшийся бит.
[1059] Соответственно, устройство кодирования трехмерных данных может повышать эффективность кодирования.
[1060] Например, устройство кодирования трехмерных данных имеет первый режим (например, кодирование на основе занятых позиций) для кодирования информации позиции и оставшегося бита и второй режим (например, прямое кодирование) для кодирования битовой последовательности и выбирает один из первого режима и второго режима на основе того, включает или нет периферийный узел относительно текущего узла в себя трехмерную точку.
[1061] Соответственно, устройство кодирования трехмерных данных может повышать эффективность кодирования посредством выбора режима согласно состоянию периферийной трехмерной точки.
[1062] Например, устройство кодирования трехмерных данных выбирает первый режим, когда общее число периферийных узлов, включающих в себя трехмерную точку, из числа периферийных узлов относительно текущего узла или пропорция периферийных узлов, включающих в себя трехмерную точку, касательно периферийных узлов относительно текущего узла меньше предварительно определенного порогового значения; и устройство кодирования трехмерных данных выбирает второй режим, когда общее число периферийных узлов или пропорция периферийных узлов превышает предварительно определенное пороговое значение.
[1063] Например, устройство кодирования трехмерных данных выбирает один из первого режима и второго режима на основе битовой последовательности родительского узла относительно текущего узла.
[1064] Например, устройство кодирования трехмерных данных выбирает первый режим, когда общее число дочерних узлов, включающих в себя трехмерную точку, из числа дочерних узлов, принадлежащих родительскому узлу, меньше предварительно определенного порогового значения, причем общее число дочерних узлов указывается посредством битовой последовательности родительского узла; и устройство кодирования трехмерных данных выбирает второй режим, когда общее число дочерних узлов превышает предварительно определенное пороговое значение.
[1065] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[1066] Кроме того, устройство декодирования трехмерных данных согласно настоящему варианту осуществления выполняет процесс, проиллюстрированный на фиг. 173. Во-первых, устройство декодирования трехмерных данных декодирует, из потока битов, (i) информацию позиции, указывающую позицию головной части (например, 1-битовую занятую позицию), которая представляет собой позицию, в которой предварительно определенный код появляется первым в битовой последовательности (например, код заполнения), когда битовая последовательность сканируется в предварительно определенном порядке сканирования, и (ii) оставшийся бит, который представляет собой часть битовой последовательности после позиции головной части в предварительно определенном порядке сканирования, причем битовая последовательность включает в себя N-битовую информацию, которая представляет собой информацию текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, и которая указывает то, присутствует или нет трехмерная точка в каждом из дочерних узлов, принадлежащих текущему узлу, где N является целым числом, большим или равным 2 (S2371). Другими словами, устройство декодирования трехмерных данных получает, из потока битов, информацию позиции и оставшийся бит. Дополнительно, например, предварительно определенный код равен 1.
[1067] Затем, устройство декодирования трехмерных данных восстанавливает битовую последовательность текущего узла из информации позиции и оставшегося бита (S2372) и восстанавливает N-арную древовидную структуру с использованием битовой последовательности (S2373). Другими словами, устройство декодирования трехмерных данных восстанавливает информацию позиции трехмерных точек.
[1068] Соответственно, устройство декодирования трехмерных данных может повышать эффективность кодирования.
[1069] Например, устройство декодирования трехмерных данных имеет первый режим (декодирование на основе занятых позиций) для декодирования информации позиции и оставшегося бита и второй режим (прямое декодирование) для декодирования битовой последовательности и выбирает один из первого режима и второго режима на основе того, включает или нет периферийный узел относительно текущего узла в себя трехмерную точку.
[1070] Соответственно, устройство декодирования трехмерных данных может повышать эффективность кодирования посредством выбора режима согласно состоянию периферийной трехмерной точки.
[1071] Например, устройство декодирования трехмерных данных выбирает первый режим, когда общее число периферийных узлов, включающих в себя трехмерную точку, из числа периферийных узлов относительно текущего узла или пропорция периферийных узлов, включающих в себя трехмерную точку, касательно периферийных узлов относительно текущего узла меньше предварительно определенного порогового значения; и устройство декодирования трехмерных данных выбирает второй режим, когда общее число периферийных узлов или пропорция периферийных узлов превышает предварительно определенное пороговое значение.
[1072] Например, устройство декодирования трехмерных данных выбирает один из первого режима и второго режима на основе битовой последовательности родительского узла относительно текущего узла.
[1073] Например, устройство декодирования трехмерных данных выбирает первый режим, когда общее число дочерних узлов, включающих в себя трехмерную точку, из числа дочерних узлов, принадлежащих родительскому узлу, меньше предварительно определенного порогового значения, причем общее число дочерних узлов указывается посредством битовой последовательности родительского узла; и устройство декодирования трехмерных данных выбирает второй режим, когда общее число дочерних узлов превышает предварительно определенное пороговое значение.
[1074] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
Вариант 15 осуществления
[1075]
В настоящем варианте осуществления, устройство кодирования трехмерных данных выполняет квантование для информации трехмерной позиции введенного облака трехмерных точек и кодирует информацию трехмерной позиции с использованием структуры в виде дерева октантов. В это время, возникают трехмерные точки (в дальнейшем называются "дублированными точками"), которые имеют идентичную трехмерную позицию, но имеют различную информацию атрибутов, такую как цвет или степень отражения вследствие квантования. Устройство кодирования трехмерных данных присоединяет, к заголовку, информацию для управления тем, как кодировать эти дублированные точки, в качестве информации листа дерева октантов. Как результат, устройство декодирования трехмерных данных может декодировать информацию листа корректно. Здесь, выражение "имеют идентичную трехмерную позицию... вследствие квантования" включает в себя состояние, в котором, аналогично точке A и точке B, проиллюстрированным на фиг. 174, исходные трехмерные позиции находятся близко друг к другу, и значения трехмерных позиций становятся идентичными вследствие квантования информации трехмерных позиций.
[1076] Например, устройство кодирования трехмерных данных присоединяет, к информации заголовка, флаг объединения дублированных точек (MergeDuplicatedPointFlag), который представляет собой флаг для управления тем, следует или нет объединять дублированные точки. Фиг. 175 является схемой, принципиально иллюстрирующей процесс согласно флагу объединения дублированных точек.
[1077] Когда флаг объединения дублированных точек равен 1, устройство кодирования трехмерных данных объединяет дублированные точки в точку и кодирует точку. Здесь, термин "объединение" означает, когда, например, точка A и точка B представляют собой дублированные точки, сохранение точки A и удаление точки B или наоборот. Следует отметить, что в таком случае, устройство кодирования трехмерных данных может вычислять новую информацию атрибутов из фрагментов информации атрибутов, такой как цвет или степень отражения, точки A и точки B; и может назначать вычисленную информацию атрибутов объединенной точке. Например, устройство кодирования трехмерных данных может назначать среднее значение фрагментов информации атрибутов точки A и точки B объединенной точке.
[1078] Кроме того, поскольку каждый лист, когда кодирование выполняется с использованием дерева октантов, включает в себя одну точку, когда флаг объединения дублированных точек равен 1, устройство кодирования трехмерных данных не должно обязательно кодировать, в качестве информации листа, информацию, указывающую то, сколько трехмерных точек включает в себя лист. Устройство кодирования трехмерных данных также может кодировать информацию трехмерной позиции одной точки в листе и информацию относительно информации атрибутов, такой как цвет или степень отражения.
[1079] Как указано выше, когда дублированные точки являются необязательными после декодирования, устройство кодирования трехмерных данных задает флаг объединения дублированных точек равным 1, присоединяет флаг объединения дублированных точек в поток, объединяет дублированные точки и кодирует объединенную точку. Следовательно, можно уменьшать объем данных необязательных дублированных точек, за счет этого увеличивая эффективность кодирования.
[1080] Когда флаг объединения дублированных точек равен 0, устройство кодирования трехмерных данных кодирует информацию дублированных точек в качестве информации листа. Например, поскольку каждый лист может включать в себя одну или более дублированных точек, устройство кодирования трехмерных данных кодирует информацию, указывающую то, сколько трехмерных точек включает в себя лист. Устройство кодирования трехмерных данных также может кодировать информацию атрибутов каждой из дублированных точек. Например, когда точка A и точка B присутствуют в качестве дублированных точек в листе, устройство кодирования трехмерных данных может кодировать информацию, указывающую то, что две точки присутствуют в листе. Помимо этого, устройство кодирования трехмерных данных может кодировать информацию атрибутов каждой из точки A и точки B.
[1081] Как указано выше, когда дублированные точки являются обязательными после декодирования, устройство кодирования трехмерных данных задает флаг объединения дублированных точек равным 0, присоединяет флаг объединения дублированных точек к потоку и кодирует дублированные точки. Как результат, устройство декодирования трехмерных данных может декодировать информацию относительно дублированных точек корректно.
[1082] Например, в качестве примера квантования трехмерной позиции, устройство кодирования трехмерных данных вычисляет позицию квантования (x/qx, y/qy, z/qz) посредством деления трехмерной позиции (x, y, z) на параметр квантования (qx, qy, qz).
[1083] Флаг объединения дублированных точек может быть включен в информацию заголовка потока битов. Например, флаг объединения дублированных точек может быть включен в заголовок потока битов, такого как WLD, SPC или VLM.
[1084] Следует отметить, что хотя примеры информации атрибутов включают в себя цвет или степень отражения в вышеприведенном описании, информация атрибутов не ограничена этим. Например, информация атрибутов может включать в себя нормальный вектор точки, информацию, указывающую степень важности точки, трехмерный признак точки или информацию позиции, такую как широта, долгота и высота точки.
[1085] Термин "объединение" представляет комбинирование двух или более точек в точку. Помимо этого, термин "объединение" может представлять комбинирование M или более точек в N точек, где M>N.
[1086] Как указано выше, возникают дублированные точки, которые имеют координаты, идентичные координатам облака трехмерных точек, но имеют различную информацию атрибутов, такую как цвет или степень отражения вследствие квантования. Например, хотя точка A и точка B имеют различные трехмерные позиции перед квантованием, возникает случай, в котором точка A и точка B в итоге имеют идентичную трехмерную позицию, но имеют различную информацию атрибутов вследствие квантования. Вкратце, точка A и точка B представляют собой дублированные точки.
[1087] Следует отметить, что вышеописанный случай не ограничен квантованием, и также предусмотрен случай, когда дублированные точки принудительно возникают за счет получения, посредством датчика, такого как лидар, трехмерных позиций и информации атрибутов облака точек идентичного объекта в различные времена или в различных направлениях.
[1088] Выражение "имеют идентичную трехмерную позицию" не ограничен случаем, в котором трехмерные позиции являются полностью идентичными. Например, когда разность между трехмерными позициями точки A и точки B меньше или равна пороговому значению α, устройство кодирования трехмерных данных может рассматривать точки A и точки B как имеющие идентичную трехмерную позицию и определять то, что точка A и точка B представляют собой дублированные точки. Помимо этого, устройство кодирования трехмерных данных может добавлять пороговое значение α в поток и уведомлять устройство декодирования трехмерных данных в отношении того, что любая точка, меньшая или равная пороговому значению α, обработана в качестве дублированной точки.
[1089] Кроме того, устройство кодирования трехмерных данных может использовать трехмерную позицию точки A в качестве трехмерной позиции дублированной точки. Альтернативно, устройство кодирования трехмерных данных может использовать трехмерную позицию точки B в качестве трехмерной позиции дублированной точки. Альтернативно, устройство кодирования трехмерных данных может использовать, в качестве трехмерной позиции дублированной точки, трехмерную позицию, вычисленную из трехмерной позиции точки A и трехмерной позиции точки B. Например, устройство кодирования трехмерных данных может использовать среднее значение между трехмерной позицией точки A и трехмерной позицией точки B.
[1090] Устройство кодирования трехмерных данных может объединять, из числа дублированных точек, точки, имеющие идентичную трехмерную позицию и идентичную информацию атрибутов, или может удалять одну из точек независимо от значения флага объединения дублированных точек.
[1091] Когда флаг объединения дублированных точек равен 1, устройство кодирования трехмерных данных может объединять M точек в листе в N точек, где M>N. В этом случае, устройство кодирования трехмерных данных может кодировать, в качестве информации листа, каждый из фрагментов информации трехмерной позиции и фрагментов информации атрибутов N точек. Помимо этого, устройство кодирования трехмерных данных может вычислять N фрагментов информации атрибутов с использованием M фрагментов информации атрибутов.
[1092] Устройство кодирования трехмерных данных может добавлять число точек (N) в листе после объединения в заголовок и уведомлять число точек (N) в устройство декодирования трехмерных данных. Значение N может задаваться заранее в качестве фиксированного значения посредством стандартов и т.д. Это исключает необходимость в добавлении информации, указывающей N для каждого листа, и в силу этого можно уменьшать сформированный объем кодирования. Соответственно, устройство декодирования трехмерных данных может декодировать N точек корректно.
[1093] Когда флаг объединения дублированных точек равен 1, дублированные точки объединяются в точку. Например, устройство кодирования трехмерных данных может объединять точку A и точку B в точку C, имеющую информацию трехмерной позиции, идентичную информации трехмерной позиции точки A и точки B. Следует отметить, что устройство кодирования трехмерных данных может назначать, точке C, среднее значение фрагментов информации атрибутов, такой как цвет или степень отражения, точки A и точки B. Дополнительно, устройство кодирования трехмерных данных может объединять точку B с точкой A или объединять точку A с точкой B.
[1094] Далее описывается пример синтаксиса флага объединения дублированных точек. Фиг. 176 является схемой, иллюстрирующей пример синтаксиса информации заголовка. Фиг. 177 является схемой, иллюстрирующей пример синтаксиса информации узла.
[1095] Как проиллюстрировано на фиг. 176, информация заголовка включает в себя флаг объединения дублированных точек (MergeDuplicatedPointFlag). Флаг объединения дублированных точек представляет собой информацию, указывающую то, следует или нет объединять дублированные точки. Например, значение в 1 флага объединения дублированных точек указывает то, что дублированные точки должны объединяться, и значение в 0 флага объединения дублированных точек указывает то, что дублированные точки не должны объединяться.
[1096] Следует отметить, что устройство кодирования трехмерных данных может указывать то, следует или нет объединять дублированные точки, на основе стандартов либо профиля или уровня и т.д. стандартов без присоединения флага объединения дублированных точек к заголовку. Это обеспечивает возможность устройству декодирования трехмерных данных определять то, включает или нет поток в себя дублированную точку, со ссылкой на информацию стандартов и восстанавливать поток битов корректно.
[1097] Как проиллюстрировано на фиг. 177, информация узла включает в себя isleaf и num_point_per_leaf; isleaf представляет собой флаг, указывающий то, представляет или нет текущий узел собой лист. Значение в 1 указывает то, что текущий узел представляет собой лист, и значение в 0 указывает то, что текущий узел представляет собой не лист, а узел. Следует отметить, что информация, указывающая то, представляет или нет узел собой лист, не должна обязательно присоединяться к заголовку. В этом случае, устройство декодирования трехмерных данных определяет то, представляет или нет узел собой лист, с использованием другого способа. Например, устройство декодирования трехмерных данных может определять то, разделяется или нет каждый узел дерева октантов на наименьший возможный размер, и может определять то, что узел представляет собой лист, при определении того, что каждый узел разделяется на наименьший возможный размер. Это исключает необходимость кодирования флага, указывающего то, представляет или нет узел собой лист, что позволяет уменьшать объем кода заголовка.
[1098] Num_point_per_leaf представляет собой информацию листа и указывает число трехмерных точек, включенных в лист. Когда флаг объединения дублированных точек равен 0, num_point_per_leaf кодируется. Дополнительно, поскольку число точек в листе равно 1, когда флаг объединения дублированных точек равен 1, num_point_per_leaf не кодируется. Соответственно, можно уменьшать объем кода.
[1099] Следует отметить, что хотя то, следует или нет кодировать информацию листа, выбирается непосредственно согласно флагу объединения дублированных точек в примере, описанном здесь, то, следует или нет кодировать информацию листа, может выбираться косвенно. Например, устройство кодирования трехмерных данных может изменять single_point_per_leaf, проиллюстрированный на фиг. 156, согласно флагу объединения дублированных точек, и выбирать то, следует или нет кодировать информацию листа, на основе синтаксиса, проиллюстрированного на фиг. 156. Другими словами, когда флаг объединения дублированных точек равен 1, устройство кодирования трехмерных данных может задавать single_point_per_leaf равным 1; и когда флаг объединения дублированных точек равен 0, устройство кодирования трехмерных данных может задавать single_point_per_leaf равным 0. В этом случае, устройство кодирования трехмерных данных также не должно обязательно присоединять флаг объединения дублированных точек к потоку битов.
[1100] Устройство кодирования трехмерных данных может энтропийно кодировать num_point_per_leaf. В это время, устройство кодирования трехмерных данных также может выполнять кодирование при переключении таблиц кодирования. Например, устройство кодирования трехмерных данных может выполнять арифметическое кодирование для первого бита с использованием таблицы A кодирования и может выполнять арифметическое кодирование для оставшегося бита с использованием таблицы B кодирования.
[1101] Как указано выше, устройство кодирования трехмерных данных присоединяет, к заголовку потока битов, информацию, указывающую то, следует или нет объединять дублированные точки, и выбирает то, следует или нет объединять дублированные точки, согласно значению. При объединении дублированных точек, устройство кодирования трехмерных данных не должно обязательно кодировать, в качестве информации листа, число точек, включенных в лист. При не объединении дублированных точек, устройство кодирования трехмерных данных может кодировать, в качестве информации листа, число точек, включенных в лист.
[1102] Устройство кодирования трехмерных данных также может энтропийно кодировать isleaf, MergeDuplicatedPointFlag и num_point_per_leaf, сформированные посредством вышеописанного способа. Например, устройство кодирования трехмерных данных может преобразовывать в двоичную форму каждое значение и выполнять арифметическое кодирование для значения.
[1103] Хотя структура в виде дерева октантов описывается в качестве примера в настоящем варианте осуществления, настоящее раскрытие не обязательно ограничивается этим. Вышеуказанная процедура может применяться к N-арному дереву, такому как дерево квадрантов и дерево гексадекантов или другие древовидные структуры, где N является целым числом, большим или равным 2.
[1104] Когда кодирование выполняется с флагом объединения дублированных точек=1, и исходное введенное облако трехмерных точек или квантованное облако трехмерных точек включает в себя дублированные точки, используется кодирование с потерями, и в силу этого можно уменьшать объем кода. Кроме того, когда исходное введенное облако трехмерных точек не включает в себя дублированные точки, и кодирование выполняется с использованием кодирования без потерь (кодирование выполняется при пропуске квантования), устройство кодирования трехмерных данных может выполнять кодирование с флагом объединения дублированных точек=1. Соответственно, можно уменьшать объем кода посредством в качестве очень в качестве объема кода, получающегося в результате не кодирования num_point_per_leaf при поддержании кодирования без потерь.
[1105] Кроме того, когда устройство кодирования трехмерных данных кодирует, в качестве информации листа, каждую из двух или более дублированных точек в идентичном листе, устройство кодирования трехмерных данных также может кодировать каждый из фрагментов информации атрибутов (например, цвет или степень отражения) соответствующих точек. В этом случае, фрагменты информации атрибутов соответствующих точек могут быть ассоциированы в порядке кодирования точек. Например, когда устройство кодирования трехмерных данных кодирует каждую из точек A и B в идентичном листе в качестве информации листа, устройство кодирования трехмерных данных может кодировать фрагменты информации атрибутов обеих точек A и B и присоединять фрагменты информации атрибутов к потоку битов. Дополнительно, фрагменты информации атрибутов могут быть ассоциированы в порядке кодирования точек A и B. Например, когда каждая трехмерная позиция кодируется в порядке от точки A до точки B, есть возможность того, что фрагменты информации атрибутов кодируются в порядке от точки A до точки B и ассоциируются.
[1106] Кроме того, когда устройство кодирования трехмерных данных объединяет M или более облаков точек в идентичном листе и кодирует объединенные облака точек в качестве N точек, где M>N, устройство кодирования трехмерных данных может округлять M или более фрагментов информации атрибутов M или более облаков точек, например, посредством усреднения, чтобы формировать фрагменты информации атрибутов N точек, и может кодировать фрагменты информации атрибутов. Например, когда устройство кодирования трехмерных данных объединяет точки A и B в идентичном листе в точку и кодирует точку, устройство кодирования трехмерных данных может округлять фрагменты информации атрибутов точек A и B, например, посредством усреднения, чтобы вычислять информацию атрибутов точки, и может кодировать вычисленную информацию атрибутов.
[1107] Кроме того, устройство кодирования трехмерных данных может изменять способ вычисления информации атрибутов согласно степени важности или признаку точки. Например, устройство кодирования трехмерных данных может предоставлять высокий весовой коэффициент для информации атрибутов точки, имеющей важную высокую степень, или точке, имеющей большой признак, вычислять средневзвешенное значение и использовать вычисленное значение в качестве информации атрибутов после объединения. Помимо этого, устройство кодирования трехмерных данных может изменять весовой коэффициент согласно разности между трехмерными позициями до и после квантования. Например, более высокий весовой коэффициент может предоставляться по мере того, как разность становится меньше, средневзвешенное значение может вычисляться, и вычисленное значение может использоваться в качестве информации атрибутов после объединения.
[1108] Далее описывается процедура для процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных. Фиг. 178 и фиг. 179 являются блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных.
[1109] Во-первых, устройство кодирования трехмерных данных определяет то, следует или нет объединять дублированные точки, и выполнять кодирование (S2401). Например, когда устройство кодирования трехмерных данных приоритезирует эффективность кодирования, устройство кодирования трехмерных данных может определять необходимость объединять дублированные точки. Когда дублированные точки являются обязательными в устройстве декодирования трехмерных данных, устройство кодирования трехмерных данных также может определять необходимость не объединять дублированные точки. Кроме того, когда введенное облако трехмерных точек не включает в себя дублированные точки, и кодирование без потерь, т.е. квантование не выполняется, устройство кодирования трехмерных данных может задавать флаг объединения дублированных точек равным 1. Поскольку это предотвращает кодирование числа точек в листе как информации листа, можно уменьшать объем кода.
[1110] Когда устройство кодирования трехмерных данных объединяет дублированные точки и выполняет кодирование ("Да" на S2401), устройство кодирования трехмерных данных задает флаг объединения дублированных точек равным 1 и присоединяет флаг объединения дублированных точек к заголовку (S2402).
[1111] Когда устройство кодирования трехмерных данных не объединяет дублированные точки и не выполняет кодирование ("Нет" на S2401), устройство кодирования трехмерных данных задает флаг объединения дублированных точек равным 0 и присоединяет флаг объединения дублированных точек к заголовку (S2403).
[1112] Затем, устройство кодирования трехмерных данных квантует трехмерные позиции введенного облака трехмерных точек (S2404). В качестве примера квантования трехмерной позиции, устройство кодирования трехмерных данных вычисляет позицию квантования (x/qx, y/qy, z/qz) посредством деления трехмерной позиции (x, y, z) на параметр квантования (qx, qy, qz). Дополнительно, устройство кодирования трехмерных данных может присоединять параметр квантования к заголовку, и устройство декодирования трехмерных данных может выполнять обратное квантование с использованием параметра квантования. Следует отметить, что устройство кодирования трехмерных данных может пропускать квантование во время кодирования без потерь.
[1113] После этого устройство кодирования трехмерных данных определяет то, равен или нет флаг объединения дублированных точек 1 (S2405). Когда флаг объединения дублированных точек равен 1 ("Да" на S2405), устройство кодирования трехмерных данных объединяет дублированные точки квантованного облака трехмерных точек (S2406). Следует отметить, что, когда кодирование без потерь выполняется, и введенное облако трехмерных точек не включает в себя дублированные точки, устройство кодирования трехмерных данных может пропускать этот этап.
[1114] Когда флаг объединения дублированных точек равен 0 ("Нет" на S2405), устройство кодирования трехмерных данных не объединяет дублированные точки.
[1115] После этого, устройство кодирования трехмерных данных разделяет узел на дерево октантов (S2411). Например, устройство кодирования трехмерных данных может вычислять код заполнения каждого узла дерева октантов последовательно при выполнении разделения дерева октантов первоначально для большого пространства (корневого узла), включающего в себя квантованное облако трехмерных точек, и может кодировать вычисленный код заполнения. Помимо этого, устройство кодирования трехмерных данных может выполнять разделение дерева октантов многократно и кодировать информацию листа, когда разделение дерева октантов не может выполняться. Следует отметить, что устройство кодирования трехмерных данных может вычислять коды заполнения и фрагменты информации листа всех узлов заранее и затем кодировать эти фрагменты информации.
[1116] Затем, устройство кодирования трехмерных данных определяет то, представляет или нет следующий узел (текущий узел) собой лист (S2412). Например, устройство кодирования трехмерных данных может определять то, разделяется или нет дерево октантов на наименьший возможный размер, и может определять то, что узел представляет собой лист, при определении того, что дерево октантов разделяется на наименьший возможный размер.
[1117] Когда текущий узел представляет собой лист ("Да" на S2412), устройство кодирования трехмерных данных определяет то, равен или нет флаг объединения дублированных точек 0 (S2413). Когда флаг объединения дублированных точек равен 0 ("Да" на S2413), устройство кодирования трехмерных данных кодирует число трехмерных точек, включенных в лист (num_point_per_leaf) (S2414). Когда флаг объединения дублированных точек равен 1 ("Нет" на S2413), устройство кодирования трехмерных данных не кодирует число трехмерных точек, включенных в лист (num_point_per_leaf).
[1118] Кроме того, когда текущий узел не представляет собой лист ("Нет" на S2412), устройство кодирования трехмерных данных кодирует код заполнения текущего узла (S2415).
[1119] После этого устройство кодирования трехмерных данных определяет то, завершается или нет обработка всех узлов (S2416). Когда обработка всех узлов не завершается ("Нет" на S2416), устройство кодирования трехмерных данных выполняет этап S2412 и следующие этапы для следующего узла.
[1120] Когда обработка всех узлов завершается ("Да" на S2416), устройство кодирования трехмерных данных кодирует информацию атрибутов относительно кодированных трехмерных точек (S2417).
[1121] Следует отметить, что устройство кодирования трехмерных данных может регулировать размер большого пространства (корневого узла) вдоль оси X, оси Y или оси Z до размера степени двух таким образом, что большое пространство может всегда разделяться одинаково на два относительно каждой оси. Кроме того, устройство кодирования трехмерных данных может регулировать размер большого пространства таким образом, что разделенный узел всегда становится кубом. Например, когда трехмерные позиции облаков трехмерных точек принимают значение от 0 до 256 вдоль оси X, значения от 0 до 120 вдоль оси Y и значения от 0 до 62 вдоль оси Z, во-первых, устройство кодирования трехмерных данных сравнивает минимальное значение и максимальное значение каждой оси и вычисляет минимальное значение и максимальное значение координат всех облаков точек. В этом случае, минимальное значение равно 0, и максимальное значение равно 256. Затем, устройство кодирования трехмерных данных вычисляет значения, которые включают в себя вычисленное минимальное значение и максимальное значение и обеспечивают возможность большому пространству иметь размер степени двух. В этом случае, размер равен 512, и минимальное значение и максимальное значение координат в пространстве равны 0 и 511, соответственно. Как результат, можно включать в себя облака точек в диапазоне от 0 до 256. В этом случае, устройство кодирования трехмерных данных также начинает разделение дерева октантов первоначально для большого пространства, имеющего размер в 512*512*512.
[1122] Далее описывается процедура для процесса декодирования трехмерных данных, выполняемого посредством устройства декодирования трехмерных данных. Фиг. 180 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, выполняемого посредством устройства декодирования трехмерных данных. Во-первых, устройство декодирования трехмерных данных декодирует флаг объединения дублированных точек в заголовке потока битов (S2421).
[1123] Затем, устройство декодирования трехмерных данных разделяет узел на дерево октантов (S2422). Например, устройство декодирования трехмерных данных формирует дерево октантов пространства (узла) с использованием информации заголовка и т.д. потока битов. Например, устройство декодирования трехмерных данных формирует большое пространство (корневой узел) с использованием размера пространства вдоль направлений по оси X, по оси Z и по оси Y, присоединенных к информации заголовка, и формирует дерево октантов посредством формирования восьми небольших пространств A (узлов A0-A7) посредством разделения пространства на два вдоль каждого из направлений по оси X, по оси Z и по оси Y. Аналогично, устройство декодирования трехмерных данных дополнительно разделяет каждый из узлов A0-A7 на восемь небольших пространств. Как указано выше, устройство декодирования трехмерных данных выполняет декодирование кода заполнения каждого узла и декодирование информации листа последовательно посредством вышеуказанного процесса.
[1124] После этого устройство декодирования трехмерных данных определяет то, представляет или нет следующий узел (текущий узел) собой лист (S2423). Когда текущий узел представляет собой лист ("Да" на S2423), устройство декодирования трехмерных данных определяет то, равен или нет флаг объединения дублированных точек 0 (S2424). Когда флаг объединения дублированных точек равен 0 ("Да" на S2424), устройство декодирования трехмерных данных декодирует число трехмерных точек, включенных в лист (num_point_per_leaf), из потока битов (S2425). С другой стороны, когда флаг объединения дублированных точек равен 1 ("Нет" на S2424), устройство декодирования трехмерных данных не декодирует число трехмерных точек, включенных в лист (num_point_per_leaf), из потока битов.
[1125] Кроме того, когда следующий узел не представляет собой лист ("Нет" на S2423), устройство декодирования трехмерных данных декодирует код заполнения текущего узла из потока битов (S2426).
[1126] После этого, устройство декодирования трехмерных данных вычисляет трехмерные позиции листьев с использованием декодированного кода заполнения и информации относительно числа раз, когда выполняется разделение дерева октантов, и т.д. (S2427). Например, когда большое пространство имеет размер в 8*8*8, выполнение разделения дерева октантов три раза приводит к тому, что узел имеет размер в 1*1*1. Этот размер (1*1*1) представляет собой наименьшую разделяемую единицу (лист). Дополнительно, устройство декодирования трехмерных данных определяет то, включает или нет каждый лист в себя точку, на основе декодированного кода заполнения родительского узла листа. Соответственно, устройство декодирования трехмерных данных может вычислять трехмерную позицию каждого листа.
[1127] Затем, устройство декодирования трехмерных данных обратно квантует вычисленные трехмерные позиции (S2428). В частности, устройство декодирования трехмерных данных вычисляет трехмерные позиции облака точек посредством выполнения обратного квантования с использованием параметра квантования, декодированного из заголовка. Например, в качестве примера обратного квантования трехмерной позиции, устройство декодирования трехмерных данных вычисляет позицию обратного квантования (x*qx, y*qy, z*qz) посредством умножения трехмерной позиции (x, y, z) до обратного квантования на параметр квантования (qx, qy, qz). Следует отметить, что устройство декодирования трехмерных данных может пропускать обратное квантование во время кодирования без потерь. Помимо этого, когда масштаб не должен обязательно возвращаться в исходный масштаб, устройство декодирования трехмерных данных может пропускать обратное квантование даже во время кодирования не без потерь (кодирования с потерями). Например, если необходима не абсолютная позиционная взаимосвязь между трехмерными точками, а относительная позиционная взаимосвязь между трехмерными точками, устройство декодирования трехмерных данных может пропускать обратное квантование.
[1128] После этого устройство декодирования трехмерных данных определяет то, завершается или нет обработка всех узлов (S2429). Когда обработка всех узлов не завершается ("Нет" на S2429), устройство декодирования трехмерных данных выполняет этап S2423 и следующие этапы для следующего узла.
[1129] Когда обработка всех узлов завершается ("Да" на S2429), устройство декодирования трехмерных данных в завершение декодирует информацию атрибутов относительно декодированных трехмерных точек из потока битов (S2430). Следует отметить, что, когда флаг объединения дублированных точек равен 1, информация атрибутов ассоциирована с каждой точкой, имеющей различную декодированную трехмерную позицию после декодирования. Кроме того, когда флаг объединения дублированных точек равен 0, различные фрагменты информации атрибутов декодируются и ассоциируются с точками, имеющими идентичную декодированную трехмерную позицию.
[1130] Далее описывается пример конфигурации устройства кодирования трехмерных данных. Фиг. 181 является блок-схемой устройства 2400 кодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2400 кодирования трехмерных данных включает в себя квантователь 2401, формирователь 2402 деревьев октантов, модуль 2403 определения объединения и энтропийный кодер 2404.
[1131] Квантователь 2401 квантует введенные трехмерные точки (облако точек). Следует отметить, что в случае кодирования без потерь, квантование может пропускаться.
[1132] Формирователь 2402 деревьев октантов формирует, например, дерево октантов из введенных трехмерных точек (облака точек) и формирует соответствующее одно из кода заполнения и информации листа для каждого узла дерева октантов.
[1133] Модуль 2403 определения объединения определяет то, следует или нет объединять дублированные точки и выполнять кодирование, и задает значение флага объединения дублированных точек, на основе результата определения. Например, модуль 2403 определения объединения определяет значение флага объединения дублированных точек с использованием информации квантованного облака трехмерных точек. Например, модуль 2403 определения объединения определяет значение флага объединения дублированных точек, на основе того, включает или нет квантованное облако трехмерных точек в себя дублированные точки.
[1134] Энтропийный кодер 2404 формирует поток битов посредством кодирования информации листа согласно флагу объединения дублированных точек. Энтропийный кодер 2404 может присоединять флаг объединения дублированных точек к потоку битов. Кроме того, энтропийный кодер 2404 может кодировать код заполнения. Кроме того, энтропийный кодер 2404 может кодировать информацию атрибутов относительно кодированных трехмерных точек.
[1135] Далее описывается пример конфигурации устройства декодирования трехмерных данных. Фиг. 182 является блок-схемой устройства 2410 декодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2410 декодирования трехмерных данных включает в себя формирователь 2411 деревьев октантов, декодер 2412 информации объединения, энтропийный декодер 2413 и обратный квантователь 2414.
[1136] Формирователь 2411 деревьев октантов формирует дерево октантов пространства (узла) с использованием, например, информации заголовка потока битов. Например, формирователь деревьев октантов 2411 формирует большое пространство (корневой узел) с использованием размера пространства вдоль направлений по оси X, по оси Z и по оси Y, присоединенных к информации заголовка, и формирует дерево октантов посредством формирования восьми небольших пространств A (узлов A0-A7) посредством разделения пространства на два вдоль каждого из направлений по оси X, по оси Z и по оси Y. Аналогично, формирователь 2411 деревьев октантов дополнительно разделяет каждый из узлов A0-A7 на восемь небольших пространств. Как указано выше, формирователь 2411 деревьев октантов повторяет формирование дерева октантов.
[1137] Декодер 2412 информации объединения декодирует флаг объединения дублированных точек из информации заголовка потока битов. Следует отметить, что декодер 2412 информации объединения может быть включен в энтропийный декодер 2413.
[1138] Энтропийный декодер 2413 декодирует информацию листа согласно информации декодированного флага объединения дублированных точек и формирует облако трехмерных точек (трехмерные позиции). Следует отметить, что энтропийный декодер 2413 может декодировать информацию атрибутов относительно декодированных трехмерных точек.
[1139] Обратный квантователь 2414 выполняет обратное квантование для трехмерных позиций декодированного облака точек и формирует выходное облако трехмерных точек. Следует отметить, что в случае кодирования без потерь, обратное квантование может пропускаться. Помимо этого, когда масштаб не должен обязательно возвращаться в исходный масштаб, устройство декодирования трехмерных данных может пропускать обратное квантование даже в случае кодирования с потерями. Например, если необходима не абсолютная позиционная взаимосвязь между трехмерными точками, а относительная позиционная взаимосвязь между трехмерными точками, устройство декодирования трехмерных данных может пропускать обратное квантование.
[1140] Далее описывается варьирование процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных. Фиг. 183 является блок-схемой последовательности операций способа для варьирования процесса кодирования трехмерных данных.
[1141] Во-первых, устройство кодирования трехмерных данных квантует трехмерные позиции введенного облака трехмерных точек (S2441). Например, в качестве примера квантования трехмерной позиции, устройство кодирования трехмерных данных вычисляет позицию квантования (x/qx, y/qy, z/qz) посредством деления трехмерной позиции (x, y, z) на параметр квантования (qx, qy, qz). Дополнительно, устройство кодирования трехмерных данных может присоединять параметр квантования к заголовку, и устройство декодирования трехмерных данных может выполнять обратное квантование с использованием параметра квантования. Следует отметить, что устройство кодирования трехмерных данных может пропускать квантование во время кодирования без потерь.
[1142] Затем, устройство кодирования трехмерных данных определяет то, включает или нет квантованное облако трехмерных точек в себя дублированные точки (S2442). Например, устройство кодирования трехмерных данных сравнивает фрагменты информации трехмерной позиции всех облаков трехмерных точек и выполняет определение, на основе того, имеется или нет идентичное значение. Альтернативно, устройство кодирования трехмерных данных может вычислять разность между всеми фрагментами информации трехмерной позиции и определять то, что квантованное облако трехмерных точек не включает в себя дублированные точки, когда абсолютное значение разности превышает предварительно определенное пороговое значение.
[1143] Когда облако трехмерных точек включает в себя дублированные точки ("Да" на S2442), устройство кодирования трехмерных данных определяет то, следует или нет объединять дублированные точки, и выполнять кодирование (S2443). Например, когда устройство кодирования трехмерных данных приоритезирует эффективность кодирования, устройство кодирования трехмерных данных может определять необходимость объединять дублированные точки. Когда дублированные точки являются обязательными в устройстве декодирования трехмерных данных, устройство кодирования трехмерных данных также может определять необходимость не объединять дублированные точки.
[1144] Когда облако трехмерных точек не включает в себя дублированные точки ("Нет" на S2442), или дублированные точки должны объединяться ("Да" на S2443), устройство кодирования трехмерных данных задает флаг объединения дублированных точек равным 1 и присоединяет флаг объединения дублированных точек к заголовку (S2444). Напротив, когда дублированные точки не должны объединяться ("Нет" на S2443), устройство кодирования трехмерных данных задает флаг объединения дублированных точек равным 0 и присоединяет флаг объединения дублированных точек к заголовку (S2445).
[1145] После этого, устройство кодирования трехмерных данных определяет то, равен или нет флаг объединения дублированных точек 1 (S2446). Когда флаг объединения дублированных точек равен 1 ("Да" на S2446), устройство кодирования трехмерных данных объединяет дублированные точки квантованного облака трехмерных точек (S2447). Следует отметить, что, когда кодирование без потерь выполняется, и введенное облако трехмерных точек не включает в себя дублированные точки, устройство кодирования трехмерных данных может пропускать этот этап. Когда флаг объединения дублированных точек равен 0 ("Нет" на S2446), устройство кодирования трехмерных данных не объединяет дублированные точки квантованного облака трехмерных точек. Следующие этапы являются идентичными этапам, проиллюстрированным на фиг. 179.
[1146] Как указано выше, когда лист, включенный в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, включает в себя две трехмерных точки, и разность между трехмерными позициями двух трехмерных точек меньше предварительно определенного порогового значения, где N является целым числом, большим или равным 2, устройство кодирования трехмерных данных согласно настоящему варианту осуществления присоединяет, к потоку битов, первую информацию (например, флаг объединения дублированных точек), указывающую то, следует или нет объединять две трехмерных точки; когда первая информация указывает то, что две трехмерных точки должны объединяться, устройство кодирования трехмерных данных объединяет две трехмерных точки и кодирует объединенную трехмерную точку; и когда первая информация указывает то, что две трехмерных точки не должны объединяться, устройство кодирования трехмерных данных кодирует каждую из двух трехмерных точек.
[1147] Согласно этой конфигурации, устройство кодирования трехмерных данных может не только выбирать то, следует или нет объединять трехмерные точки, но также и уведомлять устройство декодирования трехмерных данных в отношении того, объединяются или нет трехмерные точки.
[1148] Например, когда первая информация указывает то, что две трехмерных точки не должны объединяться, устройство кодирования трехмерных данных присоединяет вторую информацию относительно листа (например, информацию листа) к потоку битов; и когда первая информация указывает то, что две трехмерных точки должны объединяться, устройство кодирования трехмерных данных не присоединяет информацию листа к потоку битов.
[1149] Например, вторая информация указывает число трехмерных точек, включенных в лист.
[1150] Например, устройство кодирования трехмерных данных квантует трехмерные позиции введенных трехмерных точек, чтобы формировать трехмерные позиции трехмерных точек.
[1151] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[1152] Когда лист, включенный в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, включает в себя две трехмерных точки, и разность между трехмерными позициями двух трехмерных точек меньше предварительно определенного порогового значения, где N является целым числом, большим или равным 2, устройство декодирования трехмерных данных согласно настоящему варианту осуществления декодирует, из потока битов, первую информацию (например, флаг объединения дублированных точек), указывающую то, объединяются или нет две трехмерных точки; когда первая информация указывает то, что две трехмерных точки не объединяются, устройство декодирования трехмерных данных декодирует вторую информацию относительно листа (например, информацию листа) из потока битов; и когда первая информация указывает то, что две трехмерных точки объединяются, устройство декодирования трехмерных данных не декодирует информацию листа из потока битов.
[1153] Например, вторая информация указывает число трехмерных точек, включенных в лист.
[1154] Например, устройство декодирования трехмерных данных восстанавливает трехмерные позиции трехмерных точек с использованием информации листа и обратно квантует восстановленные трехмерные позиции.
[1155] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[1156] Следует отметить, что способы настоящего варианта осуществления могут применяться, даже когда дублированные точки и недублированные точки присутствуют в квантованном листе. Фиг. 184 является схемой для иллюстрации этого процесса. Например, как проиллюстрировано на фиг. 184, точка A, точка B и точка D присутствуют в листе в состоянии до квантования. Квантование приводит к тому, что точка A и точка B имеют идентичную трехмерную позицию, и точка A и точка B становятся дублированными точками. Напротив, поскольку точка D имеет отличную трехмерную позицию относительно других точек, точка D не становится дублированной точкой. Такой случай возникает, когда разделение дерева октантов не выполняется вплоть до наименьшей единицы разделения, и узел в обработке кодируется как лист.
[1157] В таком случае, когда флаг объединения дублированных точек (MergeDuplicatedPointFlag) равен 0, устройство кодирования трехмерных данных кодирует информацию, указывающую то, сколько облаков точек каждый лист включает в себя, информацию позиции каждого облака точек и информацию атрибутов каждого облака точек. Здесь, информация позиции может представлять собой абсолютные координаты относительно опорной позиции каждого облака точек или может включать в себя относительные координаты точек, включенных в лист, как описано выше. Например, устройство кодирования трехмерных данных может кодировать информацию, указывающую то, что лист включает в себя точку A, точку B и точку D, информацию позиции каждой из точек и информацию атрибутов каждой из точек.
[1158] Кроме того, когда флаг объединения дублированных точек равен 1, устройство кодирования трехмерных данных объединяет дублированные точки в листе. Например, устройство кодирования трехмерных данных объединяет точку A и точку B и кодирует информацию позиции и информацию атрибутов после объединения. В это время, поскольку точка D не объединяется, устройство кодирования трехмерных данных кодирует информацию позиции и информацию атрибутов точки D отдельно.
[1159] Кроме того, устройство кодирования трехмерных данных может кодировать информацию, указывающую число точек, включенных в лист после объединения. В примере, проиллюстрированном на фиг. 184, поскольку устройство кодирования трехмерных данных объединяет точку A и точку B в точку, но не объединяет точку D, устройство кодирования трехмерных данных кодирует число точек, включенных в лист, как 2.
[1160] Когда флаг объединения дублированных точек равен 1, устройство кодирования трехмерных данных может объединять M дублированных точек в листе в N точек, где M>N. В этом случае, устройство кодирования трехмерных данных может кодировать, в качестве информации листа, каждый из фрагментов информации трехмерной позиции и информации атрибутов N точек и каждый из фрагментов информации позиции и информации атрибутов необъединенных точек. Помимо этого, устройство кодирования трехмерных данных может вычислять N фрагментов информации атрибутов с использованием M фрагментов информации атрибутов.
[1161] Кроме того, устройство кодирования трехмерных данных может кодировать информацию, указывающую число точек, включенных в лист. В примере, проиллюстрированном на фиг. 184, устройство кодирования трехмерных данных может кодировать информацию, указывающую число точек, включенных в лист, как 3. Дополнительно, устройство кодирования трехмерных данных может кодировать фрагменты информации позиции и информации атрибутов всех точек.
Вариант 16 осуществления
[1162]
В настоящем варианте осуществления, устройство кодирования трехмерных данных получает информацию соседних узлов, каждый из которых имеет различный родительский узел, посредством выполнения поиска кодированных узлов. Фиг. 185 является схемой, иллюстрирующей пример соседних узлов. В примере, проиллюстрированном на фиг. 185, три соседних узла принадлежат родительскому узлу, идентичному родительскому узлу относительно текущего узла. Устройство кодирования трехмерных данных получает информацию окружения этих трех соседних узлов посредством проверки кода заполнения родительского узла.
[1163] Три оставшихся соседних узла принадлежат родительскому узлу, отличающемуся от родительского узла относительно текущего узла. Устройство кодирования трехмерных данных получает информацию окружения этих трех соседних узлов посредством проверки информации кодированных узлов. Здесь, информация окружения включает в себя информацию, указывающую то, включает или нет узел в себя облако точек (является занятым или нет). Помимо этого, кодированный узел, например, представляет собой узел, принадлежащий слою, идентичному слою текущего узла в дереве октантов.
[1164] Фиг. 186 является схемой, иллюстрирующей пример узлов, поиск которых должен выполняться. Устройство кодирования трехмерных данных выполняет поиск в диапазоне поиска, включающем в себя кодированные узлы, проиллюстрированные на фиг. 186, на предмет информации соседнего узла. Фиг. 187 является схемой для иллюстрации процесса поиска для соседнего узла. Как проиллюстрировано на фиг. 187, информация кодированных узлов сохраняется в очереди. Устройство кодирования трехмерных данных получает информацию соседнего узла посредством выполнения поиска в очереди от головной части. Например, порядок поиска для очереди представляет собой порядок кодирования.
[1165] Устройство кодирования трехмерных данных вычисляет код заполнения текущего узла посредством вычисления информации, указывающей то, являются или нет занятыми дочерние узлы. В это время, устройство кодирования трехмерных данных обновляет информацию окружения каждого дочернего узла. Например, устройство кодирования трехмерных данных определяет то, является или нет соседний узел, имеющий родительский узел, идентичный родительскому узлу относительно текущего узла, занятым, на основе кода заполнения. Кроме того, устройство кодирования трехмерных данных выполняет поиск в очереди, которая сохраняет кодированную информацию узла, на предмет информации, указывающей то, является или нет соседний узел, имеющий родительский узел, отличающийся от родительского узла относительно текущего узла, занятым, и определяет то, является или нет соседний узел, имеющий родительский узел, отличающийся от родительского узла относительно текущего узла, занятым, на основе искомой информации. Кроме того, устройство кодирования трехмерных данных обновляет информацию окружения каждого дочернего узла и сохраняет обновленную информацию окружения в очередь, чтобы вычислять соседний узел дочернего узла для следующего узла.
[1166] При каждом выполнении поиска, устройство кодирования трехмерных данных обновляет информацию окружения как текущего узла, так и искомого узла. Фиг. 188 и фиг. 189 являются схемой для иллюстрации этого процесса обновления. Как проиллюстрировано на фиг. 188, при каждом выполнении поиска, устройство кодирования трехмерных данных обновляет информацию окружения как текущего узла, так и искомого узла. Другими словами, информация окружения передается в обоих направлениях. То, что искомый узел представляет собой соседний узел, добавляется в информацию текущего узла, и то, что текущий узел представляет собой соседний узел, добавляется в информацию соседнего узла.
[1167] Как проиллюстрировано на фиг. 189, в процессе поиска, непосредственно предшествующий текущий узел может становиться искомым узлом. В этом случае, информация окружения непосредственно предшествующего текущего узла обновляется.
[1168] Чтобы обеспечивать самое большое время обработки для аппаратной реализации, устройство кодирования трехмерных данных может завершать процесс поиска до того, как находится соседний узел. Фиг. 190 является схемой для иллюстрации этой операции.
[1169] Как проиллюстрировано на фиг. 190, пороговое значение для поиска является предварительно определенным, т.е. представляет собой пороговое значение для прекращения поиска. Это пороговое значение для поиска указывает, например, число поисков, выполняемых для очереди от головной части.
[1170] В примере, проиллюстрированном в (1) по фиг. 190, большее число шагов поиска, чем пороговое значение для поиска, требуется для того, чтобы выполнять поиск в очереди на предмет информации соседнего узла. В этом примере, устройство кодирования трехмерных данных выполняет поиск вплоть до порогового значения для поиска и завершает процесс поиска.
[1171] В примере, проиллюстрированном в (2) по фиг. 190, можно выполнять поиск в очереди на предмет соседнего узла с меньшим числом шагов поиска, чем пороговое значение для поиска. В этом примере, устройство кодирования трехмерных данных выполняет поиск соседнего узла и завершает процесс поиска.
[1172] Как указано выше, устройство кодирования трехмерных данных может предоставлять параметр (пороговое значение для поиска) для ограничения числа поисков. Посредством ограничения числа поисков, можно находить соседний узел при поддержании времени обработки для выполнения поиска в пределах определенного времени. Дополнительно, устройство кодирования трехмерных данных может присоединять, к заголовку и т.д. потока битов, информацию, указывающую предельное значение (пороговое значение для поиска) для числа поисков. Альтернативно, число поисков может указываться посредством стандартов и т.д. Соответственно, поскольку устройство декодирования трехмерных данных может определять предельное значение для числа поисков из заголовка или требований стандартов, устройство декодирования трехмерных данных может декодировать поток корректно.
[1173] Далее описывается конкретный пример структуры очереди кодированных узлов. Чтобы идентифицировать окружение текущего узла, каждый элемент очереди кодированных узлов имеет индекс в трехмерном пространстве. Примеры этого индекса включают в себя код Мортона.
[1174] Фиг. 191 является схемой, иллюстрирующей пример индексов, для которых используются коды Мортона. Фиг. 192 является схемой, иллюстрирующей пример очереди, для которой используются коды Мортона. В примере, проиллюстрированном на фиг. 191, текущий узел имеет индекс 3, левый узел имеет индекс 2, и нижний узел имеет индекс 1. Можно определять соседний узел с использованием кодов Мортона в качестве индексов вышеуказанным способом.
[1175] Использование кодов Мортона формирует следующие преимущества. Первое преимущество позволяет ускорять процесс поиска. Здесь, процесс поиска, в котором используются координаты x, y, z, является более сложным, чем процесс нахождения кода Мортона, который представляет собой одно целое число.
[1176] Второе преимущество позволяет уменьшать объем данных, которые должны храниться, посредством использования кодов Мортона. В частности, когда координаты x, y, z используются, требуются три 32-битовых данных. Напротив, узел может идентифицироваться посредством 64-битовых данных, посредством использования кодов Мортона.
[1177] Следует отметить, что любой способ, отличный от кодов Мортона, может использоваться в качестве способа преобразования трехмерной позиции в целое число. Например, может использоваться заполняющая пространство кривая, допускающая преобразование трехмерной позиции в целое число, такая как кривая Гильберта.
[1178] Далее описывается пример конфигурации устройства кодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 193 является блок-схемой устройства 2500 кодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2500 кодирования трехмерных данных включает в себя формирователь 2501 деревьев октантов, модуль 2502 получения информации родительских узлов, модуль 2503 выбора режима кодирования, модуль 2504 поиска, модуль 2505 вычисления геометрической информации, модуль 2506 выбора таблиц кодирования и энтропийный кодер 2507.
[1179] Формирователь 2501 деревьев октантов формирует, например, дерево октантов из введенных трехмерных точек (облака точек) и формирует код заполнения для каждого узла дерева октантов.
[1180] Модуль 2502 получения информации родительских узлов получает информацию окружения соседнего узла из кода заполнения родительского узла относительно текущего узла. Другими словами, модуль 2502 получения информации родительских узлов получает, например, информацию окружения соседних узлов, которые представляют собой, из числа соседних узлов, соседние узлы, принадлежащие родительскому узлу, идентичному родительскому узлу относительно текущего узла, и учитывают половину соседних узлов.
[1181] Модуль 2503 выбора режима кодирования выбирает режим кодирования (режим кодирования). Например, этот режим кодирования включает в себя режим для выполнения одного из процесса поиска и процесса получения информации окружения из кода заполнения родительского узла и режим для выполнения обоих процессов.
[1182] Модуль 2504 поиска получает информацию окружения соседнего узла через процесс поиска, с использованием информации кодированных узлов. Хотя этот процесс поиска требует некоторого времени обработки, процесс поиска позволяет получать информацию окружения всех соседних узлов.
[1183] Модуль 2505 вычисления геометрической информации формирует информацию окружения (информацию заполнения соседнего узла), которая должна использоваться для выбора таблицы кодирования, посредством использования одной из информации окружения, полученной посредством модуля 2502 получения информации родительских узлов, и информации окружения, полученной посредством модуля 2504 поиска или посредством интегрирования обоих.
[1184] Модуль 2506 выбора таблиц кодирования выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования, с использованием информации заполнения соседнего узла, сформированной посредством модуля 2505 вычисления геометрической информации.
[1185] Энтропийный кодер 2507 формирует поток битов посредством энтропийного кодирования кода заполнения текущего узла с использованием выбранной таблицы кодирования. Следует отметить, что энтропийный кодер 2507 может присоединять, к потоку битов, информацию, указывающую выбранную таблицу кодирования.
[1186] Далее описывается пример конфигурации устройства декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 194 является блок-схемой устройства 2510 декодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2510 декодирования трехмерных данных включает в себя формирователь 2511 деревьев октантов, модуль 2512 получения информации родительских узлов, модуль 2513 выбора режима декодирования, модуль 2514 поиска, модуль 2515 вычисления геометрической информации, модуль 2516 выбора таблиц кодирования и энтропийный декодер 2517.
[1187] Формирователь 2511 деревьев октантов формирует дерево октантов пространства (узлов) с использованием информации заголовка и т.д. потока битов. Например, формирователь 2511 деревьев октантов формирует большое пространство (корневой узел) с использованием размера пространства вдоль направлений по оси X, по оси Z и по оси Y, присоединенных к информации заголовка, и формирует дерево октантов посредством формирования восьми небольших пространств A (узлов A0-A7) посредством разделения пространства на два вдоль каждого из направлений по оси X, по оси Z и по оси Y. Помимо этого, узлы A0-A7 задаются в качестве текущего узла в последовательности.
[1188] Модуль 2512 получения информации родительских узлов получает информацию окружения соседнего узла из кода заполнения родительского узла относительно текущего узла. Другими словами, модуль 2512 получения информации родительских узлов получает, например, информацию окружения соседних узлов, которые представляют собой, из числа соседних узлов, соседние узлы, принадлежащие родительскому узлу, идентичному родительскому узлу относительно текущего узла, и учитывают половину соседних узлов.
[1189] Модуль 2513 выбора режима декодирования выбирает режим декодирования. Например, этот режим декодирования соответствует вышеуказанному режиму кодирования и включает в себя режим для выполнения одного из процесса поиска и процесса получения информации окружения из кода заполнения родительского узла и режим для выполнения обоих процессов.
[1190] Модуль 2514 поиска получает информацию окружения соседнего узла через процесс поиска, с использованием информации декодированных узлов. Хотя этот процесс поиска требует некоторого времени обработки, процесс поиска позволяет получать информацию окружения всех соседних узлов.
[1191] Модуль 2515 вычисления геометрической информации формирует информацию окружения (информацию заполнения соседнего узла), которая должна использоваться для выбора таблицы кодирования, посредством использования одной из информации окружения, полученной посредством модуля 2512 получения информации родительских узлов, и информации окружения, полученной посредством модуля 2514 поиска или посредством интегрирования обоих.
[1192] Модуль 2516 выбора таблиц кодирования выбирает таблицу кодирования, которая должна использоваться для энтропийного декодирования, с использованием информации заполнения соседнего узла, сформированной посредством модуля 2515 вычисления геометрической информации.
[1193] Энтропийный декодер 2517 формирует трехмерные точки (облако точек) посредством энтропийного декодирования кода заполнения с использованием выбранной таблицы кодирования. Следует отметить, что энтропийный декодер 2517 может получать информацию выбранной таблицы кодирования из потока битов и энтропийно декодировать код заполнения текущего узла с использованием таблицы кодирования, указываемой посредством информации.
[1194] Каждый бит кода заполнения (8 битов), включенных в поток битов, указывает то, включает или нет соответствующее одно из восьми небольших пространств A (узлов A0-A7) в себя облако точек. Кроме того, устройство декодирования трехмерных данных формирует дерево октантов посредством разделения узла A0 небольшого пространства на восемь небольших пространств B (узлов B0-B7) и вычисляет информацию, указывающую то, включает или нет каждый узел небольших пространств B в себя облако точек, посредством декодирования кода заполнения. Как указано выше, устройство декодирования трехмерных данных декодирует код заполнения каждого узла при формировании дерева октантов посредством разделения большого пространства на небольшие пространства.
[1195] В дальнейшем в этом документе описываются процедуры для процесса кодирования трехмерных данных и процесса декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 195 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных.
[1196] Во-первых, устройство кодирования трехмерных данных задает пространство (текущий узел), включающее в себя часть или все введенное облако трехмерных точек (S2501). Затем, устройство кодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S2502). После этого устройство кодирования трехмерных данных формирует код заполнения текущего узла согласно тому, включает или нет каждый узел в себя облако точек (S2503). После этого, устройство кодирования трехмерных данных вычисляет информацию окружения соседнего узла относительно текущего узла из кода заполнения родительского узла относительно текущего узла (S2504).
[1197] Затем, устройство кодирования трехмерных данных выбирает режим кодирования (S2505). Например, устройство кодирования трехмерных данных выбирает режим кодирования для выполнения процесса поиска. После этого устройство кодирования трехмерных данных получает оставшуюся информацию окружения посредством поиска информации кодированных узлов. Помимо этого, устройство кодирования трехмерных данных формирует информацию окружения, которая должна использоваться для выбора таблицы кодирования, посредством интегрирования информации окружения, вычисленной на этапе S2504, и информации окружения, полученной посредством процесса поиска (S2506).
[1198] После этого, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования, на основе информации окружения, сформированной на этапе S2506 (S2507). Затем, устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S2508). В завершение, устройство кодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и кодирования кода заполнения каждого узла до тех пор, пока каждый узел не может разделяться (S2509). Другими словами, этапы S2502-S2508 рекурсивно повторяются.
[1199] Фиг. 196 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, выполняемого посредством устройства декодирования трехмерных данных.
[1200] Во-первых, устройство декодирования трехмерных данных задает пространство (текущий узел), которое должно декодироваться, с использованием информации заголовка потока битов (S2511). Затем, устройство декодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S2512). После этого устройство декодирования трехмерных данных вычисляет информацию окружения соседнего узла относительно текущего узла из кода заполнения родительского узла относительно текущего узла (S2513).
[1201] После этого, устройство декодирования трехмерных данных выбирает режим декодирования, соответствующий вышеуказанному режиму кодирования (S2514). Например, устройство декодирования трехмерных данных выбирает режим декодирования для выполнения процесса поиска. Затем, устройство декодирования трехмерных данных получает оставшуюся информацию окружения посредством поиска информации декодированных узлов. Помимо этого, устройство декодирования трехмерных данных формирует информацию окружения, которая должна использоваться для выбора таблицы кодирования, посредством интегрирования информации окружения, вычисленной на этапе S2513, и информации окружения, полученной посредством процесса поиска (S2515).
[1202] После этого устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного декодирования, на основе информации окружения, сформированной на этапе S2515 (S2516). После этого, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S2517). В завершение, устройство декодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и декодирования кода заполнения каждого узла до тех пор, пока каждый узел не может разделяться (S2518). Другими словами, этапы S2512-S2517 рекурсивно повторяются.
[1203] Далее описывается режим кодирования (режим декодирования). Режим кодирования включает в себя, по меньшей мере, одно из (1) первого режима для пропуска процесса поиска, (2) второго режима для выполнения процесса поиска и прекращения процесса в вышеуказанном пороговом значении для поиска или (3) третьего режима для выполнения процесса поиска и поиска всех кодированных (декодированных) узлов.
[1204] Другими словами, устройство декодирования трехмерных данных может выбирать, в качестве режима кодирования, то, следует пропускать поиск соседних узлов или выполнять поиск соседнего узла. Кроме того, когда устройство кодирования трехмерных данных выполняет поиск соседнего узла, устройство кодирования трехмерных данных может ограничивать число поисков самое большее предварительно определенным пороговым значением. Кроме того, устройство кодирования трехмерных данных может присоединять информацию, указывающую это пороговое значение, в заголовок потока битов. Альтернативно, пороговое значение может указываться посредством стандартов и т.д. Дополнительно, устройство кодирования трехмерных данных может изменять пороговое значение для каждого узла. Например, число возможных вариантов соседних узлов увеличивается по мере того, как значение слоя дерева октантов увеличивается (углубляется). По этой причине, устройство кодирования трехмерных данных может увеличивать пороговое значение по мере того, как значение слоя дерева октантов увеличивается (углубляется). Допускающий ссылку диапазон может изменяться для каждого слоя, которому принадлежат узлы. Другими словами, диапазон для одного или более допускающих ссылку соседних узлов из числа соседних узлов, пространственно соседних с текущим узлом, может варьироваться согласно слою, которому принадлежит текущий узел в древовидной структуре. Здесь, даже когда значения параметров, указывающие допускающий ссылку диапазон, заданный для заголовка и т.д., являются идентичными, пространство, представленное посредством узла, снижается с более глубоким слоем. Другими словами, диапазон пространства, в котором узлы являются допускающими ссылку, может быть гораздо более узким с более глубоким слоем.
[1205] Кроме того, устройство кодирования трехмерных данных может присоединять информацию, указывающую режим кодирования, к заголовку потока битов. Режим кодирования может указываться посредством стандартов и т.д. Как следствие, поскольку устройство декодирования трехмерных данных может определять режим декодирования (режим кодирования) из декодированного заголовка или требований стандартов, устройство декодирования трехмерных данных может декодировать поток корректно.
[1206] Кроме того, устройство кодирования трехмерных данных может кодировать режим кодирования для каждого узла и изменять режим кодирования для каждого узла. Например, устройство кодирования трехмерных данных выполняет кодирование с использованием всех режимов кодирования однократно и определяет режим кодирования, наиболее подходящий для устройства декодирования трехмерных данных с точки зрения эффективности кодирования и времени обработки. После этого устройство кодирования трехмерных данных может кодировать, для каждого узла, информацию, указывающую определенный режим кодирования. Как результат, устройство декодирования трехмерных данных может декодировать поток битов корректно посредством декодирования режима кодирования, кодированного для каждого узла.
[1207] Кроме того, устройство кодирования трехмерных данных может кодировать режим кодирования для каждого набора предварительно определенных узлов и изменять режим кодирования по основе набора. Следует отметить, что набор узлов, например, представляет собой набор узлов, включенных в идентичный слой дерева октантов.
[1208] Следует отметить, что устройство декодирования трехмерных данных также может определять режим декодирования (режим кодирования) идентично. Другими словами, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных могут оценивать режим кодирования для каждого узла идентично и выбирать то, следует или нет выполнять поиск соседнего узла для каждого узла. Как результат, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных определяют то, требует текущий узел или нет поиск соседних узлов, выполняют поиск соседнего узла при определении того, что текущий узел требует поиска соседних узлов, и пропускают поиск соседних узлов при определении того, что текущий узел не требует поиска соседних узлов. Помимо этого, необязательно передавать информацию, указывающую режим кодирования. Соответственно, можно уменьшать объем обработки при повышении эффективности кодирования.
[1209] Например, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных определяют то, требует или нет текущий узел поиска соседних узлов, например, из кода заполнения родительского узла. Здесь, когда вся информация заполнения трех соседних узлов, вычисленная из кода заполнения родительского узла, равна 1, имеется высокая вероятность того, что другие соседние узлы являются занятыми. По этой причине, в этом случае, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных определяют то, что текущий узел требует поиска соседних узлов.
[1210] Кроме того, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных могут определять то, требует или нет текущий узел поиска соседних узлов, из значения слоя дерева октантов. Например, когда слой имеет небольшое значение (находится близко к корневому узлу), имеется высокая вероятность того, что разделение дерева октантов не выполнено в достаточной степени. По этой причине, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных могут определять то, что соседние узлы с большой вероятностью должны быть занятыми, и определять то, что текущий узел требует поиска соседних узлов. Как указано выше, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных могут выполнять кодирование и декодирование корректно при уменьшении объема кода посредством оценки режима кодирования идентично.
[1211] Кроме того, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных могут оценивать режим кодирования (режим декодирования) для каждого набора предварительно определенных узлов идентично и изменять режим кодирования на основе набора. Как результат, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных определяют то, требует или нет набор узлов поиска соседних узлов, выполняют поиск соседнего узла при определении того, что набор узлов требует поиска соседних узлов, и пропускают поиск соседних узлов при определении того, что набор узлов не требует поиска соседних узлов. Соответственно, можно уменьшать объем обработки при повышении эффективности кодирования.
[1212] Следует отметить, что набор узлов, например, представляет собой набор узлов, включенных в идентичный слой дерева октантов. Поскольку это обеспечивает возможность устройству кодирования трехмерных данных и устройству декодирования трехмерных данных выбирать то, следует или нет выполнять поиск соседнего узла для каждого слоя, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных могут повышать эффективность кодирования при уменьшении времени обработки. Например, когда слой имеет небольшое значение (находится близко к корневому узлу), имеется высокая вероятность того, что разделение дерева октантов не выполнено в достаточной степени. По этой причине, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных могут определять то, что соседние узлы с большой вероятностью должны быть занятыми, и определять то, что текущий узел требует поиска соседних узлов.
[1213] Далее описывается пример синтаксиса информации и т.д., указывающей режим кодирования. Фиг. 197 является схемой, иллюстрирующей пример синтаксиса информации заголовка. Фиг. 198 является схемой, иллюстрирующей пример синтаксиса информации узла.
[1214] Как проиллюстрировано на фиг. 197, информация заголовка включает в себя coding_mode1 и limit_num_of_search; coding_mode1 представляет собой информацию, указывающую то, следует или нет выполнять поиск соседнего узла. Например, значение в 0 указывает то, что поиск соседнего узла не должен выполняться, значение в 1 указывает то, что поиск соседнего узла должен выполняться для всех узлов, и значение 2 указывает то, что поиск соседних узлов должен изменяться для каждого узла.
[1215] Следует отметить, что устройство кодирования трехмерных данных может указывать то, следует или нет выполнять поиск соседнего узла, на основе стандартов либо профиля или уровня и т.д. стандартов без присоединения coding_mode1 к заголовку. Это обеспечивает возможность устройству декодирования трехмерных данных определять то, выполнен или нет поиск соседнего узла, со ссылкой на информацию стандартов и восстанавливать поток битов корректно.
[1216] Limit_num_of_search представляет собой информацию, указывающую соседнее пороговое значение, и указывает, например, предел для числа поисков (пороговое значение для поиска), когда выполняется поиск соседнего узла. Например, значение в 0 указывает отсутствие предела для числа поисков, и значение, по меньшей мере, в 1 указывает предел для числа поисков.
[1217] Limit_num_of_search включается в информацию заголовка, когда значение coding_mode1 равно, по меньшей мере, 1. Следует отметить, что устройство кодирования трехмерных данных не должно обязательно включать limit_num_of_search в заголовок, когда всегда отсутствует потребность в том, чтобы ограничивать поиск. Помимо этого, устройство кодирования трехмерных данных может предоставлять limit_num_of_search для каждого слоя дерева октантов и включать limit_num_of_search в заголовок.
[1218] Дополнительно, значение limit_num_of_search может определяться перед кодированием. Например, значение не задается равным пределу, когда высокопроизводительное устройство выполняет кодирование или декодирование, и значение задается равным пределу, когда низкоэффективное устройство выполняет кодирование или декодирование.
[1219] Как проиллюстрировано на фиг. 198, информация узла включает в себя coding_mode2 и occupancy_code; coding_mode2 включается в информацию узла, когда значение coding_mode1 равно 2; coding_mode2 представляет собой информацию, указывающую то, следует или нет выполнять поиск соседнего узла для каждого узла. Например, значение в 0 указывает то, что поиск соседнего узла не должен выполняться, и значение в 1 указывает то, что поиск соседнего узла должен выполняться.
[1220] Следует отметить, что, когда coding_mode2 равен 1, устройство кодирования трехмерных данных и устройство декодирования трехмерных данных могут задавать предел для числа поисков равным limit_num_of_search, присоединенному к заголовку. Кроме того, устройство кодирования трехмерных данных может кодировать, для каждого узла, информацию, указывающую предел для числа поисков.
[1221] Кроме того, устройство кодирования трехмерных данных не должно обязательно кодировать значение coding_mode2, и устройство декодирования трехмерных данных может оценивать значение coding_mode2. Например, устройство декодирования трехмерных данных оценивает значение coding_mode2 из кода заполнения родительского узла или информации слоя дерева октантов.
[1222] Occupancy_code представляет собой код заполнения текущего узла и представляет собой информацию, указывающую то, являются или нет занятыми дочерние узлы относительно текущего узла. Устройство кодирования трехмерных данных и устройство декодирования трехмерных данных вычисляют информацию заполнения соседнего узла согласно значению coding_mode2 и кодируют или декодируют occupancy_code при изменении таблицы кодирования, на основе значения.
[1223] Кроме того, устройство кодирования трехмерных данных может энтропийно кодировать coding_mode1, limit_num_of_search или coding_mode2, сформированный посредством вышеуказанного способа. Например, устройство кодирования трехмерных данных преобразует в двоичную форму каждое значение и выполняет арифметическое кодирование для значения.
[1224] Хотя структура в виде дерева октантов описывается в качестве примера в настоящем варианте осуществления, настоящее раскрытие не обязательно ограничивается этим. Вышеуказанная процедура может применяться к N-арному дереву, такому как двоичное дерево, дерево квадрантов и дерево гексадекантов или другие древовидные структуры, где N является целым числом, большим или равным 2.
[1225] Далее описываются подробности процесса кодирования трехмерных данных. Фиг. 199 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно настоящему варианту осуществления. Во-первых, устройство кодирования трехмерных данных задает пространство (текущий узел), включающее в себя часть или все введенное облако трехмерных точек (S2521). Затем, устройство кодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S2522). После этого устройство кодирования трехмерных данных формирует код заполнения текущего узла согласно тому, включает или нет каждый узел в себя облако точек (S2523). После этого, устройство кодирования трехмерных данных вычисляет информацию окружения соседнего узла относительно текущего узла из кода заполнения родительского узла относительно текущего узла (S2524).
[1226] Затем, устройство кодирования трехмерных данных определяет то, следует или нет выполнять процесс поиска, посредством проверки режима кодирования (S2525). Например, когда (1) coding_mode1 равен 1 или (2) coding_mode1 равен 2, и coding_mode2 равен 1, устройство кодирования трехмерных данных определяет необходимость выполнять процесс поиска ("Да" на S2525); и в других случаях, устройство кодирования трехмерных данных не выполняет процесса поиска ("Нет" на S2525). Следует отметить, что устройство кодирования трехмерных данных определяет то, следует или нет выполнять поиск соседнего узла для всех узлов (значение coding_mode1), и то, следует или нет выполнять поиск соседнего узла для каждого узла (значение coding_mode2), посредством вышеуказанного способа и т.д.
[1227] Например, устройство кодирования трехмерных данных оценивает то, требует или нет текущий узел поиска соседних узлов (значение coding_mode2), из кода заполнения родительского узла. Здесь, когда вся информация заполнения трех соседних узлов, вычисленная из кода заполнения родительского узла, равна 1, имеется высокая вероятность того, что другие соседние узлы являются занятыми. По этой причине, устройство кодирования трехмерных данных определяет то, что текущий узел требует поиска соседних узлов (значение coding_mode2 равно 1). Помимо этого, когда устройство декодирования трехмерных данных оценивает coding_mode2, устройство кодирования трехмерных данных не должно обязательно кодировать coding_mode2.
[1228] Когда устройство кодирования трехмерных данных выполняет процесс поиска ("Да" на S2525), устройство кодирования трехмерных данных получает оставшуюся информацию окружения посредством поиска информации кодированных узлов. Например, когда значение limit_num_of_search не равно 0 (отсутствие предела для числа поисков), устройство кодирования трехмерных данных выполняет поиск соседнего узла при ограничении числа поисков согласно значению. Помимо этого, устройство кодирования трехмерных данных задает значение limit_num_of_search с использованием вышеуказанного способа и т.д. Дополнительно, устройство кодирования трехмерных данных интегрирует информацию окружения, вычисленную из кода заполнения родительского узла, и информацию окружения, полученную посредством процесса поиска (S2526). После этого устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования, на основе информации окружения, сформированной на этапе S2526 (S2527).
[1229] Напротив, когда устройство кодирования трехмерных данных не выполняет процесса поиска ("Нет" на S2525), устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования, на основе информации окружения, вычисленной из кода заполнения родительского узла на этапе S2524 (S2527).
[1230] После этого, устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S2528). Кроме того, устройство кодирования трехмерных данных кодирует coding_mode1 и limit_num_of_search в качестве информации заголовка. Кроме того, устройство кодирования трехмерных данных кодирует coding_mode2 для каждого узла.
[1231] В завершение, устройство кодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и кодирования кода заполнения каждого узла до тех пор, пока каждый узел не может разделяться (S2529). Другими словами, этапы S2522-S2528 рекурсивно повторяются.
[1232] Далее описываются подробности процесса декодирования трехмерных данных. Фиг. 200 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно настоящему варианту осуществления. Во-первых, устройство декодирования трехмерных данных задает пространство (текущий узел), которое должно декодироваться, с использованием информации заголовка потока битов (S2531). В это время, устройство декодирования трехмерных данных декодирует coding_mode1 и limit_num_of_search информации заголовка.
[1233] Затем, устройство декодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S2532). После этого устройство декодирования трехмерных данных вычисляет информацию окружения соседнего узла относительно текущего узла из кода заполнения родительского узла относительно текущего узла (S2533).
[1234] После этого, устройство декодирования трехмерных данных определяет то, следует или нет выполнять процесс поиска, посредством проверки режима декодирования, соответствующего режиму кодирования (S2534). Например, когда (1) coding_mode1 равен 1 или (2) coding_mode1 равен 2, и coding_mode2 равен 1, устройство декодирования трехмерных данных определяет необходимость выполнять процесс поиска ("Да" на S2534); и в других случаях, устройство декодирования трехмерных данных не выполняет процесса поиска ("Нет" на S2534). Помимо этого, устройство декодирования трехмерных данных декодирует coding_mode2, например, для каждого узла.
[1235] Следует отметить, что устройство декодирования трехмерных данных может определять то, требует или нет текущий узел поиска соседних узлов (значение coding_mode2), с использованием процесса, идентичного процессу в устройстве кодирования трехмерных данных. Например, устройство декодирования трехмерных данных оценивает то, требует или нет текущий узел поиска соседних узлов, из кода заполнения родительского узла. Здесь, когда вся информация заполнения трех соседних узлов, вычисленная из кода заполнения родительского узла, равна 1, имеется высокая вероятность того, что другие соседние узлы являются занятыми. По этой причине, устройство декодирования трехмерных данных определяет то, что текущий узел требует поиска соседних узлов (значение coding_mode2 равно 1). Помимо этого, когда устройство декодирования трехмерных данных оценивает coding_mode2, устройство декодирования трехмерных данных не должно обязательно декодировать coding_mode2.
[1236] Затем, когда устройство декодирования трехмерных данных выполняет процесс поиска ("Да" на S2534), устройство декодирования трехмерных данных получает оставшуюся информацию окружения посредством поиска информации декодированных узлов. Например, когда значение limit_num_of_search не равно 0 (отсутствие предела для числа поисков), устройство декодирования трехмерных данных выполняет поиск соседнего узла при ограничении числа поисков согласно значению. Дополнительно, устройство декодирования трехмерных данных интегрирует информацию окружения, вычисленную из кода заполнения родительского узла, и информацию окружения, полученную посредством процесса поиска (S2535). После этого устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного декодирования, на основе информации окружения, сформированной на этапе S2535 (S2536).
[1237] Напротив, когда устройство декодирования трехмерных данных не выполняет процесса поиска ("Нет" на S2534), устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного декодирования, на основе информации окружения, вычисленной из кода заполнения родительского узла на этапе S2533, и информации окружения, полученной посредством процесса поиска (S2536).
[1238] После этого, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S2537). В завершение, устройство декодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и декодирования кода заполнения каждого узла до тех пор, пока каждый узел не может разделяться (S2538). Другими словами, этапы S2532-S2537 рекурсивно повторяются.
[1239] Следует отметить, что вышеприведенное описание показывает пример, в котором узлы, поиск которых должен выполняться, представляют собой кодированные узлы, узлы, поиск которых должен выполняться, не обязательно ограничены этим. Например, устройство кодирования трехмерных данных может получать информацию соседних узлов всех узлов, принадлежащих идентичному слою, посредством выполнения поиска с использованием способа, описанного в настоящем варианте осуществления, и затем может кодировать код заполнения каждого узла с использованием полученной информации соседних узлов.
[1240] Как указано выше, устройство кодирования трехмерных данных согласно настоящему варианту осуществления выполняет процесс, проиллюстрированный на фиг. 201. Устройство кодирования трехмерных данных кодирует информацию текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, где N является целым числом, большим или равным 2. При кодировании, устройство кодирования трехмерных данных кодирует первую информацию (например, limit_num_of_search), указывающую диапазон для одного или более допускающих ссылку соседних узлов из числа соседних узлов, пространственно соседних с текущим узлом (S2541), и кодирует текущий узел со ссылкой на соседний узел в диапазоне (S2542).
[1241] Вследствие этого, поскольку устройство кодирования трехмерных данных ограничивает допускающие ссылку соседние узлы, устройство кодирования трехмерных данных уменьшает объем обработки.
[1242] Например, при кодировании, устройство кодирования трехмерных данных выбирает таблицу кодирования на основе того, включает или нет соседний узел в пределах диапазона в себя трехмерную точку, и энтропийно кодирует информацию (например, код заполнения) текущего узла с использованием выбранной таблицы кодирования.
[1243] Например, при кодировании, устройство кодирования трехмерных данных выполняет поиск информации одного или более допускающих ссылку соседних узлов из числа соседних узлов, пространственно соседних с текущим узлом, и первая информация указывает диапазон для поиска.
[1244] Например, при поиске, устройство кодирования трехмерных данных выполняет поиск информации узлов в предварительно определенном порядке, и первая информация указывает общее число узлов (например, пороговое значение для поиска), для которых должен выполняться поиск.
[1245] Например, при поиске, индексы кодов Мортона используются.
[1246] Например, при кодировании, устройство кодирования трехмерных данных кодирует вторую информацию (coding_mode1), указывающую то, должен или нет быть ограничен диапазон для одного или более допускающих ссылку соседних узлов, и кодирует первую информацию, когда вторая информация указывает то, что диапазон для одного или более допускающих ссылку соседних узлов должен быть ограничен.
[1247] Например, диапазон для одного или более допускающих ссылку соседних узлов изменяется согласно слою, которому принадлежит текущий узел в N-арной древовидной структуре.
[1248] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[1249] Кроме того, устройство декодирования трехмерных данных согласно настоящему варианту осуществления выполняет процесс, проиллюстрированный на фиг. 202. Устройство декодирования трехмерных данных декодирует информацию текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, где N является целым числом, большим или равным 2. При декодировании, устройство декодирования трехмерных данных декодирует, из потока битов, первую информацию (например, limit_num_of_search), указывающую диапазон для одного или более допускающих ссылку соседних узлов из числа соседних узлов, пространственно соседних с текущим узлом (S2551), и декодирует текущий узел со ссылкой на соседний узел в диапазоне (S2552).
[1250] Вследствие этого, поскольку устройство декодирования трехмерных данных ограничивает допускающие ссылку соседние узлы, устройство декодирования трехмерных данных уменьшает объем обработки.
[1251] Например, при декодировании, устройство декодирования трехмерных данных выбирает таблицу кодирования на основе того, включает или соседний узел в пределах диапазона в себя трехмерную точку, и энтропийно декодирует информацию (например, код заполнения) текущего узла с использованием выбранной таблицы кодирования.
[1252] Например, при декодировании, устройство декодирования трехмерных данных выполняет поиск информации одного или более допускающих ссылку соседних узлов из числа соседних узлов, пространственно соседних с текущим узлом, и первая информация указывает диапазон для поиска.
[1253] Например, при поиске, устройство декодирования трехмерных данных выполняет поиск информации узлов в предварительно определенном порядке, и первая информация указывает общее число узлов (например, пороговое значение для поиска), для которых должен выполняться поиск.
[1254] Например, при поиске, индексы кодов Мортона используются.
[1255] Например, при декодировании, устройство декодирования трехмерных данных декодирует вторую информацию (coding_mode1), указывающую то, должен или нет быть ограничен диапазон для одного или более допускающих ссылку соседних узлов, и декодирует первую информацию, когда вторая информация указывает то, что диапазон для одного или более допускающих ссылку соседних узлов должен быть ограничен.
[1256] Например, диапазон для одного или более допускающих ссылку соседних узлов изменяется согласно слою, которому принадлежит текущий узел в N-арной древовидной структуре.
[1257] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
Вариант 17 осуществления
[1258]
В настоящем варианте осуществления, устройство кодирования трехмерных данных разделяет введенное облако трехмерных точек на два или более субоблаков трехмерных точек и кодирует каждое из субоблаков трехмерных точек таким образом, что субоблака трехмерных точек не имеют взаимосвязи в виде зависимости друг с другом. Соответственно, устройство кодирования трехмерных данных может кодировать субоблака трехмерных точек параллельно. Например, устройство кодирования трехмерных данных разделяет введенное облако трехмерных точек на субоблако A трехмерных точек и субоблако B трехмерных точек и кодирует субоблако A трехмерных точек и субоблако B трехмерных точек параллельно.
[1259] Следует отметить, что, когда, например, устройство кодирования трехмерных данных выполняет кодирование с использованием структуры в виде дерева октантов, устройство кодирования трехмерных данных кодирует, параллельно, восемь дочерних узлов, получающихся в результате разделения дерева октантов, выполняемого в качестве способа разделения. Например, устройство кодирования трехмерных данных кодирует, параллельно, древовидные структуры, каждая из которых имеет соответствующий один из дочерних узлов в качестве корня.
[1260] Следует отметить, что устройство кодирования трехмерных данных не должно обязательно всегда кодировать субоблака трехмерных точек параллельно и может кодировать субоблака трехмерных точек последовательно таким образом, что субоблака трехмерных точек не имеют взаимосвязи в виде зависимости друг с другом. Кроме того, способ настоящего варианта осуществления может применяться не только к дереву октантов, но также и к N-арному дереву, такому как дерево квадрантов или дерево гексадекантов, где N является целым числом, большим или равным 2. Помимо этого, устройство кодирования трехмерных данных может выполнять разделение с использованием информации атрибутов, такой как цвет, степень отражения или нормальный вектор облака точек. Дополнительно, как описано с использованием фиг. 92, фиг. 93 и т.д. в варианте 10 осуществления, устройство кодирования трехмерных данных может выполнять разделение на основе разности в плотности облаков точек.
[1261] Устройство кодирования трехмерных данных также может комбинировать кодированные данные кодированных субоблаков трехмерных точек с потоком битов. В это время, устройство кодирования трехмерных данных может включать в себя, в заголовке и т.д. потока битов, начальную позицию каждых кодированных данных соответствующего одного из кодированных субоблаков трехмерных точек. Например, устройство кодирования трехмерных данных может включать в себя, в заголовке и т.д., адреса (позиции битов или числа байтов и т.д.) от головной части потока битов. Как результат, устройство декодирования трехмерных данных может идентифицировать начальную позицию каждых кодированных данных соответствующего одного из субоблаков трехмерных точек посредством декодирования головной части потока битов. Дополнительно, поскольку устройство декодирования трехмерных данных может декодировать кодированные данные субоблаков трехмерных точек параллельно, устройство декодирования трехмерных данных может уменьшать время обработки.
[1262] Следует отметить, что устройство кодирования трехмерных данных может присоединять, к заголовку потока битов, флаг, указывающий то, что субоблака трехмерных точек кодированы таким образом, что субоблака трехмерных точек не имеют взаимосвязи в виде зависимости друг с другом, или таким образом, что субоблака трехмерных точек кодированы параллельно. Как следствие, устройство декодирования трехмерных данных может определять то, являются или нет кодированные данные облаков трехмерных точек декодируемыми параллельно, посредством декодирования заголовка.
[1263] Здесь, то, что субоблака трехмерных точек не имеют взаимосвязи в виде зависимости друг с другом, означает, например, то, что таблицы кодирования (таблицы вероятностей и т.д., которые должны использоваться для энтропийного кодирования) для кодирования кодов заполнения или информации листа и т.д. для узлов субоблаков трехмерных точек хранятся независимо от субоблаков трехмерных точек. Например, устройство кодирования трехмерных данных использует различную таблицу кодирования для каждого из субоблака A трехмерных точек и субоблака B трехмерных точек таким образом, что субоблако A трехмерных точек и субоблако B трехмерных точек не имеют взаимосвязи в виде зависимости друг с другом. Альтернативно, когда устройство кодирования трехмерных данных обрабатывает субоблако A трехмерных точек и субоблако B трехмерных точек последовательно, устройство кодирования трехмерных данных инициализирует таблицы кодирования после кодирования субоблака A трехмерных точек и перед кодированием субоблака B трехмерных точек таким образом, что субоблако A трехмерных точек и субоблако B трехмерных точек не имеют взаимосвязи в виде зависимости друг с другом. Как указано выше, посредством хранения таблиц кодирования для субоблаков трехмерных точек независимо друг от друга или инициализации таблиц кодирования перед кодированием, устройство кодирования трехмерных данных может кодировать субоблака трехмерных точек таким образом, что субоблака трехмерных точек не имеют взаимосвязи в виде зависимости друг с другом. Помимо этого, посредством хранения таблиц кодирования (таблиц декодирования) для субоблаков трехмерных точек независимо друг от друга или инициализации таблиц кодирования до декодирования субоблаков трехмерных точек, устройство декодирования трехмерных данных может декодировать субоблака трехмерных точек надлежащим образом аналогично.
[1264] Кроме того, то, что субоблака трехмерных точек не имеют взаимосвязи в виде зависимости друг с другом, означает, например, то, что ссылка между субоблаками трехмерных точек запрещается, когда кодируются коды заполнения или информация листа и т.д. для узлов субоблаков трехмерных точек. Например, когда устройство кодирования трехмерных данных кодирует код заполнения текущего узла, который должен кодироваться, устройство кодирования трехмерных данных выполняет кодирование с использованием информации соседнего узла в дереве октантов. В этом случае, когда соседний узел включается в другое субоблако трехмерных точек, устройство кодирования трехмерных данных кодирует текущий узел без ссылки на соседний узел. В частности, устройство кодирования трехмерных данных может выполнять кодирование при условии, что соседний узел не присутствует, или устройство кодирования трехмерных данных может кодировать текущий узел в состоянии, в котором хотя соседний узел присутствует, соседний узел включается в другое субоблако трехмерных точек.
[1265] Аналогично, например, когда устройство декодирования трехмерных данных декодирует коды заполнения или информацию листа и т.д. для узлов субоблаков трехмерных точек, устройство декодирования трехмерных данных запрещает ссылку между субоблаками трехмерных точек. Например, когда устройство декодирования трехмерных данных декодирует код заполнения текущего узла, который должен декодироваться, устройство декодирования трехмерных данных выполняет декодирование с использованием информации соседнего узла в дереве октантов. В этом случае, когда соседний узел включается в другое субоблако трехмерных точек, устройство декодирования трехмерных данных декодирует текущий узел без ссылки на соседний узел. В частности, устройство декодирования трехмерных данных может выполнять декодирование при условии, что соседний узел не присутствует, или устройство декодирования трехмерных данных может декодировать текущий узел в состоянии, в котором хотя соседний узел присутствует, соседний узел включается в другое субоблако трехмерных точек.
[1266] Кроме того, когда устройство кодирования трехмерных данных кодирует фрагменты информации трехмерной позиции и фрагменты информации атрибутов (например, цвет, степень отражения или нормальный вектор) субоблаков трехмерных точек, устройство кодирования трехмерных данных может кодировать один из фрагментов информации трехмерной позиции и фрагментов информации атрибутов таким образом, что один из фрагментов информации трехмерной позиции и фрагментов информации атрибутов не имеют взаимосвязи в виде зависимости друг с другом, и может кодировать другой из фрагментов информации трехмерной позиции и фрагментов информации атрибутов таким образом, что другой из фрагментов информации трехмерной позиции и фрагментов информации атрибутов имеют взаимосвязь в виде зависимости друг с другом. Например, устройство кодирования трехмерных данных может кодировать фрагменты информации трехмерной позиции таким образом, что фрагменты информации трехмерной позиции не имеют взаимосвязи в виде зависимости друг с другом, и может кодировать фрагменты информации атрибутов таким образом, что фрагменты информации атрибутов имеют взаимосвязь в виде зависимости друг с другом. Соответственно, устройство кодирования трехмерных данных сокращает время обработки посредством кодирования фрагментов информации трехмерной позиции параллельно и сокращает объем кода посредством кодирования фрагментов информации атрибутов последовательно. Следует отметить, что устройство кодирования трехмерных данных может присоединять, к заголовку, как информацию, указывающую то, кодированы или нет фрагменты информации трехмерной позиции таким образом, что фрагменты информации трехмерной позиции не имеют взаимосвязи в виде зависимости друг с другом, так и информацию, указывающую то, кодированы или нет фрагменты информации атрибутов таким образом, что фрагменты информации атрибутов не имеют взаимосвязи в виде зависимости друг с другом. Как результат, посредством декодирования заголовка, устройство декодирования трехмерных данных может определять то, являются или нет фрагменты информации трехмерной позиции декодируемыми таким образом, что фрагменты информации трехмерной позиции не имеют взаимосвязи в виде зависимости друг с другом, и то, являются или нет фрагменты информации атрибутов декодируемыми таким образом, что фрагменты информации атрибутов не имеют взаимосвязи в виде зависимости друг с другом. По этой причине, когда отсутствует взаимосвязь в виде зависимости, устройство декодирования трехмерных данных может выполнять параллельное декодирование. Например, когда фрагменты информации трехмерной позиции кодируются таким образом, что фрагменты информации трехмерной позиции не имеют взаимосвязи в виде зависимости друг с другом, и фрагменты информации атрибутов кодируются таким образом, что фрагменты информации атрибутов имеют взаимосвязь в виде зависимости друг с другом, устройство декодирования трехмерных данных сокращает время обработки посредством декодирования фрагментов информации трехмерной позиции параллельно и декодирует фрагменты информации атрибутов последовательно.
[1267] Фиг. 203 является схемой, иллюстрирующей пример древовидной структуры. Следует отметить, что хотя фиг. 203 показывает пример дерева квадрантов, могут использоваться другие древовидные структуры, такие как дерево октантов. Устройство кодирования трехмерных данных разделяет древовидную структуру, показанную на фиг. 203, например, на субоблако A трехмерных точек, показанное на фиг. 204, и субоблако B трехмерных точек, показанное на фиг. 205. Следует отметить, что в этом примере, разделение выполняется в допустимых узлах в слое 1. Другими словами, самое большее четыре субоблака трехмерных точек формируются для дерева квадрантов, и самое большее восемь субоблаков трехмерных точек формируются для дерева октантов. Устройство кодирования трехмерных данных также может выполнять разделение с использованием информации атрибутов или такой информации, как плотность облаков точек.
[1268] Устройство кодирования трехмерных данных выполняет кодирование таким образом, что субоблако A трехмерных точек и субоблако B трехмерных точек не имеют взаимосвязи в виде зависимости друг с другом. Например, устройство кодирования трехмерных данных выбирает, для каждого субоблака трехмерных точек, таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения. Альтернативно, устройство кодирования трехмерных данных инициализирует таблицы кодирования до кодирования каждого из субоблаков трехмерных точек. Альтернативно, когда соседний узел включается в другое субоблако трехмерных точек, устройство кодирования трехмерных данных запрещает ссылку на соседний узел во время вычисления информации окружения узла.
[1269] Фиг. 206 является схемой, иллюстрирующей структурный пример потока битов согласно настоящему варианту осуществления. Как проиллюстрировано на фиг. 206, поток битов включает в себя заголовок, кодированные данные субоблака A трехмерных точек и кодированные данные субоблака B трехмерных точек. Заголовок включает в себя информацию числа облаков точек, информацию взаимосвязи в виде зависимости, информацию A начального адреса и информацию B начального адреса.
[1270] Информация числа облаков точек указывает число субоблаков трехмерных точек, включенных в поток битов. Следует отметить, что код заполнения может указывать, в качестве информации числа облаков точек, число субоблаков трехмерных точек. Например, в примере, показанном на фиг. 203, код заполнения "1010" в слое 0 используется, и число "1", включенное в код заполнения, указывает число субоблаков трехмерных точек.
[1271] Информация взаимосвязи в виде зависимости указывает то, кодированы или нет субоблака трехмерных точек таким образом, что субоблака трехмерных точек не имеют взаимосвязи в виде зависимости друг с другом. Например, устройство декодирования трехмерных данных определяет то, следует или нет декодировать субоблака трехмерных точек параллельно, на основе информации взаимосвязи в виде зависимости.
[1272] Информация A начального адреса указывает начальный адрес кодированных данных субоблака A трехмерных точек. Информация B начального адреса указывает начальный адрес кодированных данных субоблака B трехмерных точек.
[1273] В дальнейшем в этом документе описывается преимущество параллельного кодирования. Можно сокращать время обработки посредством разделения геометрической информации (информации трехмерной позиции) или информации атрибутов в данных дерева октантов облака трехмерных точек (облака точек) и выполнения параллельного кодирования. Можно достигать параллельного кодирования, когда узел является независимым от других узлов в слое родительского узла. Другими словами, имеется потребность в том, чтобы не ссылаться на соседний родительский узел. Имеется потребность в том, чтобы удовлетворять этому условию для всех из дочерних узлов и внучатых узлов.
[1274] Фиг. 207 является схемой, иллюстрирующей пример древовидной структуры. В примере, показанном на фиг. 207, когда кодирование в глубину выполняется, узел A является независимым от узла C в слое 1. Узел C является независимым от узла D в слое 2. Узел A является независимым от узла B в слое 3.
[1275] Устройство кодирования трехмерных данных выбирает способ параллельного кодирования из двух типов способов параллельного кодирования, с использованием независимой информации каждого узла, на основе типа аппаратных средств, пользовательских настроек, алгоритма или адаптируемости данных и т.д.
[1276] Два типа представляют собой полное параллельное кодирование и инкрементное параллельное кодирование.
[1277] Для начала, в дальнейшем описывается полное параллельное кодирование. При параллельной обработке или параллельном программировании, поскольку необходимо обрабатывать много данных одновременно, обработка является очень медленной.
[1278] Число узлов, обрабатываемых параллельно, определяется с использованием числа единиц обработки (PU), включенных в графический процессор (GPU), числа ядер, включенных в CPU, или числа подпроцессов в программной реализации.
[1279] Здесь, число узлов, включенных в дерево октантов, в общем, превышает число доступных PU. Устройство кодирования трехмерных данных определяет то, является или нет число узлов, включенных в слой, оптимальным числом, соответствующим числу доступных PU, с использованием информации, указывающей число кодированных узлов, включенных в слой; и полное параллельное кодирование начинается сразу, когда число узлов, включенных в слой, достигает оптимального числа. Следует отметить, что процесс в ширину или в глубину может использоваться при параллельной обработке.
[1280] Устройство кодирования трехмерных данных может сохранять, в заголовке потока битов, информацию, указывающую узлы (слой), для которых начат процесс параллельного кодирования. Как результат, устройство декодирования трехмерных данных может выполнять процесс параллельного декодирования при необходимости, с использованием информации. Следует отметить, что информация, указывающая узлы, для которых начат процесс параллельного кодирования, может иметь любой формат, и может использоваться, например, кодирование на основе местоположения.
[1281] Кроме того, устройство кодирования трехмерных данных подготавливает таблицу кодирования (таблицу вероятностей) для каждого из узлов (субоблаков трехмерных точек), для которых должно выполняться параллельное кодирование. Эта таблица кодирования инициализируется как начальное значение или значение, отличающееся для каждого узла. Например, значение, отличающееся для каждого узла, является значением на основе кода заполнения родительского узла. Полное параллельное кодирование имеет преимущество необходимости инициализировать GPU только однократно.
[1282] Фиг. 208 является схемой для иллюстрации полного параллельного кодирования и показывает пример древовидной структуры. Фиг. 209 является схемой, пространственно иллюстрирующей субоблака трехмерных точек, которые должны обрабатываться параллельно. Устройство кодирования трехмерных данных начинает параллельную обработку сразу, когда число узлов, коррелированное с числом PU или подпроцессов, достигает оптимального числа.
[1283] В примере, показанном на фиг. 208, в слое 3, число занятых узлов, включенных в слой, равно 9 и превышает оптимальное число. Соответственно, устройство кодирования трехмерных данных разделяет трехмерные точки (узлы) в слоях ниже слоя 3 на субоблака трехмерных точек, каждое из которых имеет соответствующий один из занятых узлов в слое 3 в качестве корня, и обрабатывает субоблака трехмерных точек параллельно. Например, девять субоблаков трехмерных точек формируются в примере, показанном на фиг. 208.
[1284] Устройство кодирования трехмерных данных может кодировать информацию слоя, указывающую слой, в котором начата параллельная обработка. Устройство кодирования трехмерных данных также может кодировать информацию, указывающую число занятых узлов (9 в примере, показанном на фиг. 208), когда начинается параллельная обработка.
[1285] Кроме того, например, устройство кодирования трехмерных данных может выполнять кодирование при запрете субоблакам трехмерных точек ссылаться на друг друга. Кроме того, например, устройство кодирования трехмерных данных инициализирует таблицы кодирования (таблицы вероятностей и т.д.), которые должны использоваться для энтропийного кодирования, до того, как устройство кодирования трехмерных данных кодирует субоблака трехмерных точек.
[1286] Фиг. 210 является схемой, иллюстрирующей структурный пример потока битов согласно настоящему варианту осуществления. Как проиллюстрировано на фиг. 210, поток битов включает в себя заголовок, кодированные данные верхних слоев, подзаголовок, кодированные данные субоблака A трехмерных точек и кодированные данные субоблака B трехмерных точек.
[1287] Заголовок включает в себя информацию размера пространства и информацию параллельного начального слоя. Информация размера пространства указывает первое трехмерное пространство, полученное посредством разделения облака трехмерных точек на дерево октантов. Например, информация размера пространства указывает максимальные координаты (x, y, z) первого трехмерного пространства.
[1288] Информация параллельного начального слоя указывает параллельный начальный слой, который представляет собой слой, в котором может начинаться параллельная обработка. Здесь, информация параллельного начального слоя указывает, например, слой N.
[1289] Кодированные данные верхних слоев представляют собой кодированные данные вплоть до слоя N до того, как начинается параллельная обработка, и представляет собой информацию узла вплоть до слоя N. Например, кодированные данные верхних слоев включают в себя коды заполнения узлов вплоть до слоя N.
[1290] Подзаголовок включает в себя требуемую информацию, чтобы декодировать любой слой после слоя N. Например, подзаголовок указывает начальный адрес и т.д. кодированных данных каждого субоблака трехмерных точек. В примере, показанном на фиг. 210, подзаголовок включает в себя информацию A начального адреса и информацию B начального адреса. Информация A начального адреса указывает начальный адрес кодированных данных субоблака A трехмерных точек. Информация B начального адреса указывает начальный адрес кодированных данных субоблака B трехмерных точек.
[1291] Следует отметить, что устройство кодирования трехмерных данных может сохранять информацию A начального адреса и информацию B начального адреса в заголовке. Как результат, устройство декодирования трехмерных данных может декодировать кодированные данные субоблаков трехмерных точек параллельно перед кодированными данными верхних слоев. В этом случае, подзаголовок может включать в себя информацию, указывающую пространство каждого субоблака трехмерных точек. Эта информация указывает максимальные координаты (x, y, z) пространства субоблака трехмерных точек.
[1292] Фиг. 211 является схемой для иллюстрации процесса параллельного декодирования. Как проиллюстрировано на фиг. 211, устройство декодирования трехмерных данных декодирует кодированные данные субоблака A трехмерных точек и кодированные данные субоблака B трехмерных точек параллельно и формирует декодированные данные субоблака A трехмерных точек и декодированные данные субоблака B трехмерных точек. Затем, устройство декодирования трехмерных данных интегрирует сформированные декодированные данные субоблака A трехмерных точек и сформированные декодированные данные субоблака B трехмерных точек и формирует декодированные данные облака трехмерных точек. Таким образом, устройство декодирования трехмерных данных интегрирует фрагменты информации трехмерной позиции и информации атрибутов (цветовой информации, степени отражения и т.д.), включенной в декодированные данные субоблаков трехмерных точек. Помимо этого, устройство декодирования трехмерных данных может выводить интегрированные данные в качестве одного файла.
[1293] Следует отметить, что устройство декодирования трехмерных данных не должно обязательно всегда декодировать все субоблака трехмерных точек и может декодировать необходимые субоблака трехмерных точек избирательно. Например, когда устройство декодирования трехмерных данных представляет собой мобильное устройство, к примеру, встроенное в транспортное средство устройство, устройство декодирования трехмерных данных может декодировать, из числа субоблаков трехмерных точек, субоблака трехмерных точек в зоне, близкой к текущей позиции, полученной посредством GPS и т.д.
[1294] Кроме того, устройство кодирования трехмерных данных может сохранять, в подзаголовке, информацию, указывающую порядок приоритетов субоблаков трехмерных точек. В этом случае, устройство декодирования трехмерных данных выполняет параллельное декодирование при предпочтительном предоставлении вычислительных ресурсов, таких как CPU, для субоблаков трехмерных точек, имеющих более высокий приоритет, согласно порядку приоритетов, указываемому посредством информации, включенной в подзаголовок. Соответственно, устройство декодирования трехмерных данных может эффективно декодировать субоблака трехмерных точек, включающие в себя зону, важную для устройства декодирования трехмерных данных.
[1295] Фиг. 212 является схемой, принципиально иллюстрирующей процедуру процесса полного параллельного кодирования. Во-первых, устройство кодирования трехмерных данных определяет число доступных PU (S2601). Затем, устройство кодирования трехмерных данных обрабатывает дерево октантов и сохраняет позиции узлов (S2602). После этого устройство кодирования трехмерных данных определяет то, превышает или нет число занятых узлов число PU (S2603).
[1296] Когда число занятых узлов меньше числа PU ("Нет" на S2603), устройство кодирования трехмерных данных выполняет этап S2602 для следующего узла. Когда число занятых узлов превышает число PU ("Да" на S2603), устройство кодирования трехмерных данных задает текущий слой равным параллельному начальному слою, который представляет собой слой, в котором параллельная обработка должна начинаться (S2604).
[1297] После этого, устройство кодирования трехмерных данных инициализирует таблицы кодирования и начинает параллельное кодирование (S2605). После завершения параллельного кодирования, устройство кодирования трехмерных данных восстанавливает дерево октантов, на основе позиций, сохраненных на этапе S2602 (S2606). Следует отметить, что устройство кодирования трехмерных данных не должно обязательно восстанавливать дерево октантов. Например, устройство кодирования трехмерных данных может присоединять, к потоку битов, кодированные данные каждого субоблака трехмерных точек, полученного посредством параллельного кодирования, и завершать процесс.
[1298] Следует отметить, что устройство кодирования трехмерных данных может присоединять, к заголовку потока битов, информацию параллельного начального слоя, указывающую параллельный начальный слой, в котором должно начинаться параллельное кодирование. Как результат, посредством декодирования заголовка, устройство декодирования трехмерных данных может определять то, с какого слоя является возможным параллельное декодирование.
[1299] Следует отметить, что то, с какого слоя должна начинаться параллельная обработка, может быть предварительно определено. Кроме того, информация параллельного начального слоя, указывающая слой, в котором должна начинаться параллельная обработка, не присоединяется к потоку битов, и слой, в котором должна начинаться параллельная обработка, может указываться посредством стандартов и т.д. Например, устройство кодирования трехмерных данных присоединяет флаг, указывающий то, следует или нет выполнять параллельную обработку, к потоку битов. Когда флаг активирован, устройство декодирования трехмерных данных может начинать параллельную обработку с первого слоя; и когда флаг деактивирован, устройство декодирования трехмерных данных может выполнять последовательную обработку.
[1300] Фиг. 213 является схемой, принципиально иллюстрирующей процедуру процесса полного параллельного декодирования. Во-первых, посредством декодирования заголовка, устройство декодирования трехмерных данных получает информацию параллельного начального слоя, указывающую слой N, который является обрабатываемым параллельно (S2611). Затем, устройство декодирования трехмерных данных декодирует код заполнения, разделяет текущий узел на восемь и переходит к обработке подузлов в состоянии заполнения (S2612).
[1301] После этого устройство декодирования трехмерных данных определяет то, достигает или нет текущий слой параллельного начального слоя N (S2613). Когда текущий слой не достигает параллельного начального слоя N ("Нет" на S2613), устройство декодирования трехмерных данных выполняет этап S2612 для следующего узла. Когда текущий слой достигает параллельного начального слоя N ("Да" на S2613), устройство декодирования трехмерных данных декодирует подзаголовок и получает начальные адреса субоблаков трехмерных точек (S2614).
[1302] После этого, устройство декодирования трехмерных данных инициализирует таблицы кодирования и начинает параллельное декодирование субоблаков трехмерных точек (S2615). После завершения параллельного декодирования, устройство декодирования трехмерных данных интегрирует фрагменты информации трехмерной позиции и информации атрибутов декодированных субоблаков трехмерных точек (S2616).
[1303] Например, устройство декодирования трехмерных данных декодирует информацию параллельного начального слоя из заголовка потока битов. Соответственно, устройство декодирования трехмерных данных может определять то, с какого слоя является возможным параллельное декодирование.
[1304] Следует отметить, что информация параллельного начального слоя, указывающая слой, в котором должна начинаться параллельная обработка, не присоединяется к потоку битов, и слой, в котором должна начинаться параллельная обработка, может указываться посредством стандартов и т.д. Например, устройство кодирования трехмерных данных присоединяет флаг, указывающий то, следует или нет выполнять параллельную обработку, к потоку битов. Когда флаг активирован, устройство декодирования трехмерных данных может начинать параллельную обработку с первого слоя; и когда флаг деактивирован, устройство декодирования трехмерных данных может выполнять последовательную обработку.
[1305] Далее описывается инкрементное параллельное кодирование. Фиг. 214 и фиг. 215 являются схемой для иллюстрации инкрементного параллельного кодирования. Фиг. 214 является схемой, иллюстрирующей параллельную обработку в древовидной структуре, и фиг. 215 является схемой, иллюстрирующей изменения на основе временных рядов при параллельной обработке.
[1306] При инкрементном параллельном кодировании, когда имеется доступная PU в случае, если родительский узел разделяется на один или более дочерних узлов, число параллельных процессов последовательно увеличивается. Помимо этого, каждый раз, когда новый узел, требующий дополнительной PU, находится, таблица кодирования задается в качестве предварительно определенной таблицы.
[1307] В примере, показанном на фиг. 214, ядро 1 начинает обработку в вершине (корне). В слое 1 ядро 2 используется для обработки правого узла, и ядро 1 обрабатывает левый узел. В слое 2, ядро 1 продолжает обрабатывать левый узел. В слое 3, ядро 1 обрабатывает узел A, и ядро 4 обрабатывает новый найденный базовый B. Кроме того, ядро 2 продолжает обрабатывать левый узел в слое 2 после обработки правого узла в слое 1 и узла C процессов в слое 3. Кроме того, ядро 3 добавляется и обрабатывает правый узел и узел D в слое 3.
[1308] Следует отметить, что устройство кодирования трехмерных данных может добавлять флаг, указывающий то, необходимо или нет инициализировать таблицу кодирования для энтропийного кодирования в каждом узле. Как результат, устройство декодирования трехмерных данных может определять то, что следующие дочерние узлы относительно узла, для которого флаг указывает необходимость инициализации, являются обрабатываемыми параллельно.
[1309] Фиг. 216 является схемой, принципиально иллюстрирующей процедуру процесса инкрементного параллельного кодирования. Во-первых, устройство кодирования трехмерных данных обрабатывает дерево октантов и сохраняет позиции узлов (S2621). Затем, устройство кодирования трехмерных данных определяет то, включает или нет текущий узел в себя занятые дочерние узлы, которые представляют собой дочерние узлы в состоянии заполнения (S2622). Когда текущий узел включает в себя занятые дочерние узлы ("Да" на S2613), устройство кодирования трехмерных данных определяет то, имеется или нет PU, доступная для параллельного кодирования (S2623).
[1310] Когда текущий узел не включает в себя занятые дочерние узлы ("Нет" на S2613), или отсутствует PU, доступная для параллельного кодирования ("Нет" на S2623), устройство кодирования трехмерных данных продолжает обрабатывать дерево октантов с использованием PU, применяемой в настоящее время (S2624). Например, в начальном состоянии, устройство кодирования трехмерных данных продолжает обработку с использованием одной PU в начальном состоянии. Кроме того, выражение "когда текущий узел не включает в себя занятые дочерние узлы" включает в себя случай, в котором текущий узел не включает в себя занятые узлы, и случай, в котором текущий узел включает в себя один занятый дочерний узел.
[1311] Напротив, когда имеется PU, доступная для параллельного кодирования ("Да" на S2623), устройство кодирования трехмерных данных добавляет новую PU в PU, которые должны использоваться, инициализирует таблицы кодирования и начинает параллельную обработку (S2625).
[1312] Когда обработка всех узлов не завершается ("Нет" на S2626), устройство кодирования трехмерных данных выполняет этап S2621 для следующего узла. Когда обработка всех узлов завершается ("Да" на S2626), устройство кодирования трехмерных данных восстанавливает дерево октантов, на основе позиций, сохраненных на этапе S2602 (S2627). Следует отметить, что устройство кодирования трехмерных данных не должно обязательно восстанавливать дерево октантов. Например, устройство кодирования трехмерных данных может присоединять, к потоку битов, кодированные данные каждого субоблака трехмерных точек, полученного посредством параллельного кодирования, и завершать процесс.
[1313] При таком инкрементном параллельном кодировании, когда текущий узел включает в себя занятые узлы, и имеется доступная PU, параллельная обработка начинается немедленно. Соответственно, поскольку PU может назначаться следующей обработке, когда PU завершает обработку за короткое время, идеальная балансировка нагрузки по обработке является достижимой.
[1314] С другой стороны, каждый раз, когда параллельная обработка запрашивается, инициализация требуется. Дополнительно, поскольку PU не всегда завершают обработку к следующей обработке в порядке обработки сверху вниз или слева направо, механизм для синхронизации всех узлов и дочерних узлов в каждом слое требуется с тем, чтобы записывать данные обратно. Другими словами, поскольку вышеуказанное полное параллельное кодирование не требует такой обработки, полное параллельное кодирование формирует преимущество уменьшения объема обработки.
[1315] Как указано выше, в настоящем варианте осуществления, исходные трехмерные точки разделяются на ветви, обрабатываемые параллельно. В дереве октантов, например, восемь ветвей, обрабатываемых параллельно, формируются для узлов. Помимо этого, задается новый параметр, указывающий то, с какого слоя дерева октантов начинается ветвь, обрабатываемая параллельно.
[1316] Когда выполняется переход к обработке следующей ветви, обрабатываемой параллельно, таблица кодирования для энтропийного кодирования сбрасывается. Альтернативно, различная таблица кодирования используется для каждой из ветвей, обрабатываемых параллельно.
[1317] Например, ссылка на узлы, включенные в различные ветви, обрабатываемые параллельно, к примеру, информация соседних узлов, запрещается.
[1318] Режимы, связанные с параллельной обработкой, задаются. Например, режим 0 представляет собой режим для выполнения непараллельной обработки. Режим 1 представляет собой режим для выполнения параллельной обработки геометрической информации (информации структуры). В этом режиме, относительно информации атрибутов, ссылка на другие ветви, обрабатываемые параллельно, разрешается. Режим 2 представляет собой режим для выполнения параллельной обработки геометрической информации и информации атрибутов. Другими словами, относительно как геометрической информации, так информации атрибутов, ссылка на другие ветви, обрабатываемые параллельно, запрещается.
[1319] Начальный адрес данных каждой из ветвей, обрабатываемых параллельно, кодируется в заголовок, такой как заголовок серии последовательных макроблоков.
[1320] Устройство декодирования трехмерных данных может обрабатывать, параллельно, все ветви, обрабатываемые параллельно, или может обрабатывать, параллельно, часть ветвей, обрабатываемых параллельно.
[1321] Как указано выше, устройство кодирования трехмерных данных согласно настоящему варианту осуществления выполняет процесс, показанный на фиг. 217. Во-первых, устройство кодирования трехмерных данных разделяет трехмерные точки, включенные в трехмерные данные, на субоблака трехмерных точек, включающие в себя первое субоблако трехмерных точек и второе субоблако трехмерных точек (S2631). Затем, устройство кодирования трехмерных данных присоединяет информацию, указывающую пространство каждого из субоблаков трехмерных точек, к подзаголовку субоблака трехмерных точек (S2632). Другими словами, устройство кодирования трехмерных данных присоединяет первую информацию, указывающую пространство первого субоблака трехмерных точек, к заголовку первого субоблака трехмерных точек, и вторую информацию, указывающую пространство второго субоблака трехмерных точек, к заголовку второго субоблака трехмерных точек. После этого устройство кодирования трехмерных данных кодирует первое субоблако трехмерных точек и второе субоблако трехмерных точек таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга (S2633). Иначе говоря, устройство кодирования трехмерных данных кодирует первое субоблако трехмерных точек и второе субоблако трехмерных точек таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек не имеют взаимосвязи в виде зависимости друг с другом. Например, устройство кодирования трехмерных данных кодирует первое субоблако трехмерных точек и второе субоблако трехмерных точек параллельно.
[1322] Следует отметить, что порядок обработки этапов S2632 и S2633 представляет собой пример и может быть изменен на противоположный, и часть или все этапы могут выполняться параллельно.
[1323] Например, при разделении (S2631), устройство кодирования трехмерных данных разделяет N-арную древовидную структуру трехмерных точек на ветви, включающие в себя первую ветвь, соответствующую первому субоблаку трехмерных точек, и вторую ветвь, соответствующую второму субоблаку трехмерных точек, где N является целым числом, большим или равным 2. Другими словами, устройство кодирования трехмерных данных может разделять N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, на первую ветвь и вторую ветвь (S2631), где N является целым числом, большим или равным 2; и может кодировать первую ветвь и вторую ветвь таким образом, что первая ветвь и вторая ветвь являются декодируемыми независимо друг от друга (S2633).
[1324] Например, устройство кодирования трехмерных данных кодирует информацию (информацию параллельного начального слоя), указывающую слой, которому принадлежит корень первой ветви, и слой, которому принадлежит корень второй ветви. Другими словами, устройство кодирования трехмерных данных формирует поток битов, включающий в себя информацию (информацию параллельного начального слоя), указывающую первый слой. Например, слой, которому принадлежит корень первой ветви, является идентичным слою, которому принадлежит корень второй ветви.
[1325] Например, корень первой ветви представляет собой первый узел, включенный в первый слой N-арной древовидной структуры, и корень второй ветви представляет собой второй узел, отличающийся от первого узла и включенный в первый слой. Другими словами, корень первой ветви и корень второй ветви принадлежат идентичному слою.
[1326] Например, устройство кодирования трехмерных данных кодирует информацию (информацию параллельного начального слоя), указывающую первый слой. Другими словами, устройство кодирования трехмерных данных формирует поток битов, включающий в себя информацию (информацию параллельного начального слоя), указывающую первый слой.
[1327] Например, устройство кодирования трехмерных данных энтропийно кодирует каждое из первого субоблака трехмерных точек (первой ветви) и второго субоблака трехмерных точек (второй ветви) с использованием различной таблицы кодирования.
[1328] Например, устройство кодирования трехмерных данных инициализирует таблицу кодирования после энтропийного кодирования первого субоблака трехмерных точек (первой ветви) и до энтропийного кодирования второго субоблака трехмерных точек (второй ветви).
[1329] Например, устройство кодирования трехмерных данных запрещает ссылку на второе субоблако трехмерных точек (вторую ветвь) при кодировании первого субоблака трехмерных точек и запрещает ссылку на первое субоблако трехмерных точек (первую ветвь) при кодировании второго субоблака трехмерных точек (второй ветви).
[1330] Например, устройство кодирования трехмерных данных кодирует фрагменты геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек (первую ветвь), и фрагменты геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек (вторую ветвь) таким образом, что фрагменты геометрической информации первых трехмерных точек и фрагменты геометрической информации вторых трехмерных точек являются декодируемыми независимо друг от друга; кодирует фрагменты информации атрибутов первых трехмерных точек и фрагменты информации атрибутов вторых трехмерных точек таким образом, что фрагменты информации атрибутов первых трехмерных точек и фрагменты информации атрибутов вторых трехмерных точек являются декодируемыми независимо друг от друга. Другими словами, устройство кодирования трехмерных данных кодирует как фрагменты геометрической информации, так и фрагменты информации атрибутов таким образом, что фрагменты геометрической информации не имеют взаимосвязи в виде зависимости друг с другом, и фрагменты информации атрибутов не имеют взаимосвязи в виде зависимости друг с другом.
[1331] Например, устройство кодирования трехмерных данных кодирует один из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек (первую ветвь), и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек (вторую ветвь), и (2) фрагментов информации атрибутов первых трехмерных точек и фрагментов информации атрибутов вторых трехмерных точек таким образом, что один из (1) фрагментов геометрической информации первых трехмерных точек и фрагментов геометрической информации вторых трехмерных точек и (2) фрагментов информации атрибутов первых трехмерных точек и фрагментов информации атрибутов вторых трехмерных точек являются декодируемыми независимо друг от друга; и кодирует другой из (1) фрагментов геометрической информации первых трехмерных точек и фрагментов геометрической информации вторых трехмерных точек и (2) фрагментов информации атрибутов первых трехмерных точек и фрагментов информации атрибутов вторых трехмерных точек таким образом, что другой из (1) фрагментов геометрической информации первых трехмерных точек и фрагментов геометрической информации вторых трехмерных точек и (2) фрагментов информации атрибутов первых трехмерных точек и фрагментов информации атрибутов вторых трехмерных точек имеют взаимосвязь в виде зависимости друг с другом. Другими словами, устройство кодирования трехмерных данных кодирует один из фрагментов геометрической информации и фрагментов информации атрибутов таким образом, что один из фрагментов геометрической информации и фрагментов информации атрибутов не имеют взаимосвязи в виде зависимости друг с другом; и кодирует другой из фрагментов геометрической информации и фрагментов информации атрибутов таким образом, что другой из фрагментов геометрической информации и фрагментов информации атрибутов имеют взаимосвязь в виде зависимости друг с другом. Следует отметить, что выражение "имеют взаимосвязь в виде зависимости друг с другом" означает, например, энтропийное кодирование первого субоблака трехмерных точек (первой ветви) и второго субоблака трехмерных точек (второй ветви) с использованием идентичной таблицы кодирования, неинициализацию таблицы кодирования после того, как первое субоблако трехмерных точек (первая ветвь) энтропийно кодируется, и до того, как второе субоблако трехмерных точек (вторая ветвь) энтропийно кодируется, разрешение ссылки на второе субоблако трехмерных точек (вторую ветвь) при кодировании первого субоблака трехмерных точек (первой ветви) или разрешение ссылки на первое субоблако трехмерных точек (первую ветвь) при кодировании второго субоблака трехмерных точек (второй ветви).
[1332] Например, устройство кодирования трехмерных данных кодирует флаг, указывающий то, кодированы или нет первое субоблако трехмерных точек (первая ветвь) и второе субоблако трехмерных точек (вторая ветвь) таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга. Другими словами, устройство кодирования трехмерных данных формирует поток битов, включающий в себя флаг, указывающий то, кодированы или нет первое субоблако трехмерных точек (первая ветвь) и второе субоблако трехмерных точек (вторая ветвь) таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга.
[1333] Например, первая информация указывает максимальные координаты пространства первого субоблака трехмерных точек, и вторая информация указывает максимальные координаты пространства второго субоблака трехмерных точек.
[1334] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[1335] Устройство декодирования трехмерных данных согласно настоящему варианту осуществления выполняет процесс, показанный на фиг. 218. Во-первых, устройство декодирования трехмерных данных получает первые кодированные данные и вторые кодированные данные, сформированные посредством кодирования первого субоблака трехмерных точек и второго субоблака трехмерных точек таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга, причем первое субоблако трехмерных точек и второе субоблако трехмерных точек включаются в субоблака трехмерных точек, полученные посредством разделения трехмерных точек, включенных в трехмерные данные (S2641). Например, устройство декодирования трехмерных данных получает первые кодированные данные и вторые кодированные данные из потока битов.
[1336] Затем, устройство декодирования трехмерных данных получает информацию, указывающую пространство каждого из субоблаков трехмерных точек из подзаголовка субоблака трехмерных точек, включенного в поток битов (S2642). Другими словами, устройство декодирования трехмерных данных получает первую информацию, указывающую пространство первого субоблака трехмерных точек, из заголовка первого субоблака трехмерных точек, и получает вторую информацию, указывающую пространство второго субоблака трехмерных точек, из заголовка второго субоблака трехмерных точек.
[1337] После этого устройство декодирования трехмерных данных восстанавливает первое субоблако трехмерных точек и второе субоблако трехмерных точек посредством декодирования первых кодированных данных и вторых кодированных данных (S2643). Например, устройство декодирования трехмерных данных декодирует первые кодированные данные и вторые кодированные данные параллельно. Например, устройство декодирования трехмерных данных восстанавливает трехмерные точки с использованием восстановленного первого субоблака трехмерных точек и второго субоблака трехмерных точек, первой информации и второй информации.
[1338] Следует отметить, что порядок обработки этапов S2642 и S2643 представляет собой пример и может быть изменен на противоположный, и часть или все этапы могут выполняться параллельно.
[1339] Например, первые кодированные данные и вторые кодированные данные формируются посредством кодирования первой ветви, соответствующей первому субоблаку трехмерных точек, и второй ветви, соответствующей второму субоблаку трехмерных точек таким образом, что первая ветвь и вторая ветвь являются декодируемыми независимо друг от друга, причем первая ветвь и вторая ветвь включаются в N-арную древовидную структуру трехмерных точек, где N является целым числом, большим или равным 2. Другими словами, устройство декодирования трехмерных данных получает первые кодированные данные и вторые кодированные данные, сформированные посредством кодирования первой ветви и второй ветви, включенной в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, таким образом, что первая ветвь и вторая ветвь являются декодируемыми независимо друг от друга, где N является целым числом, большим или равным 2 (S2641).
[1340] Например, устройство декодирования трехмерных данных декодирует информацию (информацию параллельного начального слоя), указывающую слой, которому принадлежит корень первой ветви, и слой, которому принадлежит корень второй ветви. Другими словами, устройство декодирования трехмерных данных получает информацию (информацию параллельного начального слоя), указывающую первый слой, из потока битов. Например, слой, которому принадлежит корень первой ветви, является идентичным слою, которому принадлежит корень второй ветви.
[1341] Например, корень первой ветви представляет собой первый узел, включенный в первый слой N-арной древовидной структуры, и корень второй ветви представляет собой второй узел, отличающийся от первого узла и включенный в первый слой. Другими словами, корень первой ветви и корень второй ветви принадлежат идентичному слою.
[1342] Например, устройство кодирования трехмерных данных декодирует информацию (информацию параллельного начального слоя), указывающую первый слой. Другими словами, устройство декодирования трехмерных данных получает информацию (информацию параллельного начального слоя), указывающую первый слой, из потока битов.
[1343] Например, устройство декодирования трехмерных данных энтропийно декодирует каждое из первого субоблака трехмерных точек (первой ветви) и второго субоблака трехмерных точек (второй ветви) с использованием различной таблицы кодирования.
[1344] Например, устройство декодирования трехмерных данных инициализирует таблицу кодирования после энтропийного декодирования первого субоблака трехмерных точек (первой ветви) и до энтропийного декодирования второго субоблака трехмерных точек (второй ветви).
[1345] Например, устройство декодирования трехмерных данных не ссылается на второе субоблако трехмерных точек (вторую ветвь) при декодировании первого субоблака трехмерных точек (первой ветви) и не ссылается на первое субоблако трехмерных точек (первую ветвь) при декодировании второго субоблака трехмерных точек (второй ветви).
[1346] Например, первые кодированные данные включают в себя первые кодированные геометрические данные и первые кодированные данные атрибутов, причем первые кодированные геометрические данные формируются посредством кодирования фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек (первую ветвь), причем первые кодированные данные атрибутов формируются посредством кодирования фрагментов информации атрибутов первых трехмерных точек. Вторые кодированные данные включают в себя вторые кодированные геометрические данные и вторые кодированные данные атрибутов, причем вторые кодированные геометрические данные формируются посредством кодирования фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек (вторую ветвь), причем вторые кодированные данные атрибутов формируются посредством кодирования фрагментов информации атрибутов вторых трехмерных точек. Первые кодированные геометрические данные и вторые кодированные геометрические данные формируются таким образом, что первые кодированные геометрические данные и вторые кодированные геометрические данные являются декодируемыми независимо друг от друга, и первые кодированные данные атрибутов и вторые кодированные данные атрибутов формируются таким образом, что первые кодированные данные атрибутов и вторые кодированные данные атрибутов являются декодируемыми независимо друг от друга. Другими словами, устройство кодирования трехмерных данных формирует первые кодированные данные и вторые кодированные данные посредством кодирования как фрагментов геометрической информации, так и фрагментов информации атрибутов таким образом, что фрагменты геометрической информации не имеют взаимосвязи в виде зависимости друг с другом, и фрагменты информации атрибутов не имеют взаимосвязи в виде зависимости друг с другом.
[1347] Например, первые кодированные данные и вторые кодированные данные формируются посредством кодирования одного из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек (первую ветвь), и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек (вторую ветвь), и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек, таким образом, что один из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек, являются декодируемыми независимо друг от друга. Устройство декодирования трехмерных данных восстанавливает, посредством декодирования первых кодированных данных и вторых кодированных данных, один из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек. Устройство декодирования трехмерных данных дополнительно получает третьи кодированные данные и четвертые кодированные данные, сформированные посредством кодирования другого из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек, таким образом, что другой из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек, имеют взаимосвязь в виде зависимости друг с другом. Устройство декодирования трехмерных данных восстанавливает, посредством декодирования третьих кодированных данных и четвертых кодированных данных, другой из (1) фрагментов геометрической информации первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов геометрической информации вторых трехмерных точек, включенных во второе субоблако трехмерных точек, и (2) фрагментов информации атрибутов первых трехмерных точек, включенных в первое субоблако трехмерных точек, и фрагментов информации атрибутов вторых трехмерных точек, включенных во второе субоблако трехмерных точек. Другими словами, устройство кодирования трехмерных данных кодирует один из фрагментов геометрической информации и фрагментов информации атрибутов таким образом, что один из фрагментов геометрической информации и фрагментов информации атрибутов не имеют взаимосвязи в виде зависимости друг с другом; и кодирует другой из фрагментов геометрической информации и фрагментов информации атрибутов таким образом, что другой из фрагментов геометрической информации и фрагментов информации атрибутов имеют взаимосвязь в виде зависимости друг с другом. Например, когда два кодированных данных имеют взаимосвязь в виде зависимости друг с другом, устройство декодирования трехмерных данных энтропийно декодирует два кодированных данных с использованием идентичной таблицы кодирования, не инициализирует таблицу кодирования после энтропийного декодирования одних из двух кодированных данных и до энтропийного декодирования других из двух кодированных данных или ссылается на другие из двух кодированных данных при декодировании одних из двух кодированных данных.
[1348] Например, устройство декодирования трехмерных данных декодирует флаг, указывающий то, кодированы или нет первое субоблако трехмерных точек (первая ветвь) и второе субоблако трехмерных точек (вторая ветвь) таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга. Например, устройство декодирования трехмерных данных получает, из потока битов, флаг, указывающий то, кодированы или нет первое субоблако трехмерных точек (первая ветвь) и второе субоблако трехмерных точек (вторая ветвь) таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга. Например, когда флаг указывает то, что первое субоблако трехмерных точек (первая ветвь) и второе субоблако трехмерных точек (вторая ветвь) кодированы таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга, устройство декодирования трехмерных данных декодирует первые кодированные данные и вторые кодированные данные параллельно; и когда флаг не указывает то, что первое субоблако трехмерных точек (первая ветвь) и второе субоблако трехмерных точек (вторая ветвь) кодированы таким образом, что первое субоблако трехмерных точек и второе субоблако трехмерных точек являются декодируемыми независимо друг от друга, устройство декодирования трехмерных данных декодирует первые кодированные данные и вторые кодированные данные последовательно.
[1349] Например, первая информация указывает максимальные координаты пространства первого субоблака трехмерных точек, и вторая информация указывает максимальные координаты пространства второго субоблака трехмерных точек.
[1350] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[1351] Выше описываются устройство кодирования трехмерных данных, устройство декодирования трехмерных данных и т.п. согласно вариантам осуществления настоящего раскрытия , но настоящее раскрытие не ограничено этими вариантами осуществления.
[1352] Следует отметить, что каждый из процессоров, включенных в устройство кодирования трехмерных данных, устройство декодирования трехмерных данных и т.п. согласно вышеуказанным вариантам осуществления, типично реализуется в качестве большой интегральной (LSI) схемы, которая представляет собой интегральную схему (IC). Они могут принимать форму отдельных микросхем или могут частично или полностью пакетироваться в одну микросхему.
[1353] Такая IC не ограничена LSI и в силу этого может реализовываться как специализированная схема или процессор общего назначения. Альтернативно, может использоваться программируемая пользователем вентильная матрица (FPGA), которая обеспечивает возможность программирования после изготовления LSI, или переконфигурируемый процессор, который обеспечивает возможность переконфигурирования соединения и настройки схемных элементов внутри LSI.
[1354] Кроме того, в вышеописанных вариантах осуществления, структурные компоненты могут реализовываться как специализированные аппаратные средства или могут быть реализованы посредством выполнения программно-реализованной программы, подходящей для таких структурных компонентов. Альтернативно, структурные компоненты могут реализовываться посредством программного исполнительного модуля, такого как CPU или процессор, считывающий и выполняющий программно-реализованную программу, записанную на носителе записи, таком как жесткий диск или полупроводниковое запоминающее устройство.
[1355] Настоящее раскрытие также может реализовываться как способ кодирования трехмерных данных, способ декодирования трехмерных данных и т.п., осуществляемые посредством устройства кодирования трехмерных данных, устройства декодирования трехмерных данных и т.п.
[1356] Кроме того, разделения функциональных блоков, показанных на блок-схемах, представляют собой просто примеры, и в силу этого множество функциональных блоков могут реализовываться как один функциональный блок, или один функциональный блок может разделяться на множество функциональных блоков, или одна или более функций могут перемещаться в другой функциональный блок. Кроме того, функции множества функциональных блоков, имеющих аналогичные функции, могут обрабатываться только посредством аппаратных средств или программного обеспечения параллелизованным или разделенным во времени способом.
[1357] Кроме того, порядок обработки выполнения этапов, показанный на блок-схемах последовательности операций способа, представляет собой просто иллюстрацию для конкретного описания настоящего раскрытия и в силу этого может представлять собой порядок, отличный от показанного порядка. Кроме того, один или более этапов могут выполняться одновременно (параллельно) с другим этапом.
[1358] Выше описываются устройство кодирования трехмерных данных, устройство декодирования трехмерных данных и т.п. согласно одному или более аспектам на основе вариантов осуществления, но настоящее раскрытие не ограничено этими вариантами осуществления. Один или более аспектов в силу этого могут включать в себя формы, достигаемые посредством внесения различных модификаций в вышеуказанные варианты осуществления, которые могут быть задуманы специалистами в данной области техники, а также формы, достигаемые посредством комбинирования структурных компонентов в различных вариантах осуществления, без существенного отступления от сущности настоящего раскрытия.
Промышленная применимость
[1359] Настоящее раскрытие является применимым к устройству кодирования трехмерных данных и к устройству декодирования трехмерных данных.
Ссылки с номерами на чертежах
[1360] 100, 400 - устройство кодирования трехмерных данных
101, 201, 401, 501 - модуль получения
102, 402 - модуль определения областей кодирования
103 - модуль разделения
104, 644 - кодер
111 - трехмерные данные
112, 211, 413, 414, 511, 634 - кодированные трехмерные данные
200, 500 - устройство декодирования трехмерных данных
202 - модуль определения GOS для начала декодирования
203 - модуль определения SPC для декодирования
204, 625 - декодер
212, 512, 513 - декодированные трехмерные данные
403 - SWLD-модуль извлечения
404 - WLD-кодер
405 - SWLD-кодер
411 - входные трехмерные данные
412 - извлеченные трехмерные данные
502 - анализатор заголовков
503 - WLD-декодер
504 - SWLD-декодер
620, 620A - устройство создания трехмерных данных
621, 641 - модуль создания трехмерных данных
622 - модуль определения диапазонов запросов
623 - модуль поиска
624, 642 - приемное устройство
626 - модуль объединения
631, 651 - информация датчиков
632 - первые трехмерные данные
633 - информация диапазона запросов
635 - вторые трехмерные данные
636 - третьи трехмерные данные
640 - устройство передачи трехмерных данных
643 - модуль извлечения
645 - передающее устройство
652 - пятые трехмерные данные
654 - шестые трехмерные данные
700 - устройство обработки трехмерной информации
701 - модуль получения трехмерных карт
702 - модуль получения самообнаруженных данных
703 - модуль проведения оценки анормальных случаев
704 - модуль определения операций преодоления
705 - функциональный контроллер
711 - трехмерная карта
712 - самообнаруженные трехмерные данные
810 - устройство создания трехмерных данных
811 - приемное устройство данных
812, 819 - модуль связи
813 - контроллер приема
814, 821 - преобразователь форматов
815 - датчик
816 - модуль создания трехмерных данных
817 - синтезатор трехмерных данных
818 - устройство хранения трехмерных данных
820 - контроллер передачи
822 - передающее устройство данных
831, 832, 834, 835, 836, 837 - трехмерные данные
833 - информация датчиков
901 - сервер
902, 902A, 902B, 902C - клиентское устройство
1011, 1111 - приемное устройство данных
1012, 1020, 1112, 1120 - модуль связи
1013, 1113 - контроллер приема
1014, 1019, 1114, 1119 - преобразователь форматов
1015 - датчик
1016, 1116 - модуль создания трехмерных данных
1017 - процессор трехмерных изображений
1018, 1118 - устройство хранения трехмерных данных
1021, 1121 - контроллер передачи
1022, 1122 - передающее устройство данных
1031, 1032, 1135 - трехмерная карта
1033, 1037, 1132 - информация датчиков
1034, 1035, 1134 - трехмерные данные
1117 - модуль объединения трехмерных данных
1201 - процессор сжатия/декодирования трехмерных карт
1202 - процессор сжатия/декодирования информации датчиков
1211 - процессор декодирования трехмерных карт
1212 - процессор сжатия информации датчиков
1300 - устройство кодирования трехмерных данных
1301 - модуль разделения
1302 - вычитатель
1303 - преобразователь
1304 - квантователь
1305, 1402 - обратный квантователь
1306, 1403 - обратный преобразователь
1307, 1404 - сумматор
1308, 1405 - запоминающее устройство опорных объемов
1309, 1406 - модуль внутреннего прогнозирования
1310, 1407 - запоминающее устройство опорных пространств
1311, 1408 - модуль взаимного прогнозирования
1312, 1409 - контроллер прогнозирования
1313 - энтропийный кодер
1400 - устройство декодирования трехмерных данных
1401 - энтропийный декодер
1501 - сервер
1502 - клиент
1511 - устройство хранения данных
1512 - контроллер
1513 - кодированная трехмерная карта
1521 - декодер
1522 - приложение
1900 - устройство кодирования трехмерных данных
1901, 1911 - формирователь деревьев октантов
1902, 1912 - модуль вычисления информации подобия
1903, 1913 - модуль выбора таблиц кодирования
1904 - энтропийный кодер
1910 - устройство декодирования трехмерных данных
1914 - энтропийный декодер
2100 - устройство кодирования трехмерных данных
2101, 2111 - формирователь деревьев октантов
2102, 2112 - модуль вычисления геометрической информации
2103, 2113 - модуль выбора таблиц кодирования
2104 - энтропийный кодер
2110 - устройство декодирования трехмерных данных
2114 - энтропийный декодер
2200 - устройство кодирования трехмерных данных
2201, 2211 - формирователь деревьев октантов
2202 - модуль определения режима
2203 - энтропийный кодер
2210 - устройство декодирования трехмерных данных
2212 - декодер информации режима
2213 - энтропийный декодер
2300 - устройство кодирования трехмерных данных
2301, 2311 - формирователь деревьев октантов
2302 - энтропийный кодер
2310 - устройство декодирования трехмерных данных
2312 - энтропийный декодер
2400 - устройство кодирования трехмерных данных
2401 - квантователь
2402, 2411 - формирователь деревьев октантов
2403 - модуль определения объединения
2404 - энтропийный кодер
2410 - устройство декодирования трехмерных данных
2412 - декодер информации объединения
2413 - энтропийный декодер
2414 - обратный квантователь
2500 - устройство кодирования трехмерных данных
2501, 2511 - формирователь деревьев октантов
2502, 2512 - модуль получения информации родительских узлов
2503 - модуль выбора режима кодирования
2504, 2514 - модуль поиска
2505, 2515 - модуль вычисления геометрической информации
2506, 2516 - модуль выбора таблиц кодирования
2507 - энтропийный кодер
2510 - устройство декодирования трехмерных данных
2513 - модуль выбора режима декодирования
2517 - энтропийный декодер